
Deepseek本地化部署及训练
利用Ollama本地化部署deepseek,并对大模型进行训练后部署
一、本地化部署 DeepSeek(Ollama)
Ollama 提供了便捷的 LLM 本地运行环境,支持 DeepSeek 这样的模型。
1. 安装 Ollama
如果还未安装 Ollama,可以用以下命令安装:
curl -fsSL https://ollama.com/install.sh | sh
然后验证是否安装成功:
ollama list
2. 拉取 DeepSeek 模型
目前 Ollama 可能还未正式支持 DeepSeek,你可以手动拉取:
ollama pull deepseek/deepseek-llm-7b
或者自定义 Modelfile:
FROM deepseek/deepseek-llm-7b
然后运行:
ollama run deepseek-llm-7b
如已经支持则直接运行相应的模型:
二、定制化训练(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
(分布式训练)
1 安装依赖
先安装必要的 Python 库:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install transformers datasets accelerate deepspeed bitsandbytes
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")
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")
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)