一、本地化部署 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 + DeepSpeedFSDP(分布式训练)

1 安装依赖

先安装必要的 Python 库:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

pip install transformers datasets accelerate deepspeed bitsandbytes

下载 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 了!

如果对项目管理相关知识感兴趣的,可以关注我的公众号,会不定时分享干货知识!

Logo

中德AI开发者社区由X.Lab发起,旨在促进中德AI技术交流与合作,汇聚开发者及学者,共同探索前沿AI应用与创新。加入我们,共享资源,共创未来!🚀

更多推荐