
DeepSeek 本地部署及接口调用
通过代码调用 Ollama 提供的 API 接口,实现模型的能力。如果需要,可以安装一个简易界面来使用模型。在 PyCharm 中运行输出。
1、下载并安装 Ollama
3、运行模型
ollama run deepseek-r1:8b
其它有用命令:
- 启动 Ollama 服务:
-
ollama serve
- 查看当前模型列表:
-
ollama list
如运行模型成功后可以提问:
回答如下:
<think>
好的,现在我需要帮助用户理解DeepSeek的V3和R1模型之间的区别。用户之前问过公司推出的大模型,但现在更具体地询问了V3和
R1的不同。
首先,我应该明确这两个模型各自的定位。V3可能是一个通用的大模型,而R1可能专注于特定的领域,比如知识检索或对话应用。这
有助于用户理解它们在不同的应用场景中的用途。
接下来,功能特点方面,我需要列出关键区别,如模型架构、训练目标、性能优化等。V3可能在通用性上更强,而R1则针对高效率和
准确率进行了优化。
用户可能的需求是评估这两个模型是否适合他们的项目,或者了解它们之间的优劣比较。我应该以简明扼要的方式呈现信息,帮助用
户快速做出决策。
最后,总结部分需要简洁明了地指出V3和R1各自适用的场景,这样用户可以根据自己的需求选择最合适的模型。
</think>
4、使用 allama_gui
如果需要,可以安装一个简易界面来使用模型
- 安装:
python -m pip install ollama_gui
- 运行:
-
python -m ollama_gui
5、API 接口调用
通过代码调用 Ollama 提供的 API 接口,实现模型的能力
常用接口如下:
如:使用 api/chat 接口
import requests
# Ollama中提供的chat功能的API地址
url = 'http://127.0.0.1:11434/api/chat'
# 要发送的数据
data = {
"model": "deepseek-r1:8b",
"messages": [{
"role": "user",
"content": "北京的面积是多少?"}],
"stream": False
}
# 发送POST请求
response = requests.post(url, json=data)
# 打印模型的输出文本
print(response.json()["message"]["content"])
在 PyCharm 中运行输出
二、定制化训练(Fine-tuning)
由于 Ollama 目前不支持直接在 Ollama 内训练模型,你需要使用 LoRA/QLoRA 或 全量微调,然后再将训练后的模型打包进 Ollama。
1. 训练方式
Ollama 主要支持的是 基于 Hugging Face Transformers 训练后,再打包到 Ollama,你可以选择:
LoRA/QLoRA(轻量微调):适用于本地训练,显存占用少。
全量微调(Full Fine-tuning):适用于大显存 GPU 服务器。
(1)LoRA 训练(推荐)
安装依赖:
pip install peft transformers accelerate bitsandbytes
训练代码
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments, Trainer
from peft import get_peft_model, LoraConfig, TaskType
# 加载模型
model_path = "deepseek/deepseek-llm-7b"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(model_path, device_map="auto")
# 配置 LoRA
config = LoraConfig(
task_type=TaskType.CAUSAL_LM,
r=8,
lora_alpha=32,
lora_dropout=0.1
)
model = get_peft_model(model, config)
model.print_trainable_parameters()
# 训练数据
train_data = [
{"input": "你好,你叫什么名字?", "output": "我是DeepSeek模型。"},
{"input": "1+1等于多少?", "output": "1+1=2。"}
]
# 数据格式化
train_encodings = tokenizer([d["input"] for d in train_data], padding=True, truncation=True, return_tensors="pt")
labels = tokenizer([d["output"] for d in train_data], padding=True, truncation=True, return_tensors="pt")["input_ids"]
training_args = TrainingArguments(
output_dir="./results",
per_device_train_batch_size=2,
num_train_epochs=1,
save_strategy="epoch"
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_encodings
)
trainer.train()
model.save_pretrained("fine_tuned_model")
tokenizer.save_pretrained("fine_tuned_model")
这样,你的 LoRA 微调模型 就准备好了。
(2)全量微调(Full Fine-tuning)
全量微调会调整 所有模型参数,需要 大量 GPU 计算资源,建议:
GPU:A100 (80GB) 或多个 3090 (24GB)
CUDA & cuDNN:CUDA 11.8+
框架:Hugging Face transformers + DeepSpeed 或 FSDP(分布式训练)
2.1 安装依赖
先安装必要的 Python 库:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install transformers datasets accelerate deepspeed bitsandbytes
2.2 下载 DeepSeek 模型
Ollama 目前不支持直接训练,你需要 先用 Hugging Face 下载模型:
git clone https://huggingface.co/deepseek-ai/deepseek-llm-7b
或者:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_path = "deepseek-ai/deepseek-llm-7b"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(model_path, device_map="auto")
2.3 准备训练数据
训练数据应采用 指令微调格式(如 Alpaca):
[
{
"instruction": "介绍一下 Python 的优点。",
"input": "",
"output": "Python 具有易学、社区活跃、库丰富等优点。"
},
{
"instruction": "计算 10 的平方根。",
"input": "",
"output": "10 的平方根是 3.162277。"
}
]
存储为 train.json
,然后加载:
from datasets import load_dataset
dataset = load_dataset("json", data_files="train.json")
2.4训练配置
创建 train.py
:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments, Trainer
from datasets import load_dataset
# 1. 加载模型和 Tokenizer
model_name = "deepseek-ai/deepseek-llm-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model=AutoModelForCausalLM.from_pretrained(model_name,torch_dtype=torch.float16,device_map="auto")
# 2. 加载数据集
dataset = load_dataset("json", data_files="train.json")["train"]
# 3. 训练参数
training_args = TrainingArguments(
output_dir="./fine_tuned_model",
per_device_train_batch_size=2,
per_device_eval_batch_size=2,
num_train_epochs=3,
save_strategy="epoch",
logging_dir="./logs",
report_to="none",
fp16=True,
optim="adamw_torch",
evaluation_strategy="epoch",
save_total_limit=2
)
# 4. 定义 Trainer
trainer = Trainer(
model=model,
args=training_args,
train_dataset=dataset,
tokenizer=tokenizer
)
# 5. 训练模型
trainer.train()
# 6. 保存训练后的模型
model.save_pretrained("fine_tuned_model")
tokenizer.save_pretrained("fine_tuned_model")
运行:
python train.py
三、重新部署到 Ollama
Ollama 支持自定义模型,你可以用 Modelfile 来创建一个新的模型:
1. 创建 Ollama 模型文件
在你的工作目录下创建 Modelfile:
FROM deepseek/deepseek-llm-7b
# 加载 Fine-tuned 模型
PARAMETERS_FILE ./fine_tuned_model/pytorch_model.bin
TOKENIZER ./fine_tuned_model/tokenizer.json
2. 编译并添加到 Ollama
运行:
ollama create deepseek-custom -f Modelfile
3. 运行定制模型
ollama run deepseek-custom
总结
1.本地 Ollama 部署 DeepSeek
ollama pull deepseek/deepseek-llm-7b
或使用 Modelfile 来手动加载 DeepSeek 模型。
2.定制化训练
选择 LoRA/QLoRA(推荐)或者 全量微调。
使用 transformers + peft 进行训练。
3.重新部署
训练完成后,把模型打包进 Ollama:
创建 Modelfile
ollama create deepseek-custom -f Modelfile
运行 ollama run deepseek-custom
这样,你就可以在 Ollama 里运行自己的 Fine-tuned DeepSeek 了!
更多推荐
所有评论(0)