news 2026/4/18 3:47:54

从0开始微调DeepSeek-R1:修改模型自我认知实战教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从0开始微调DeepSeek-R1:修改模型自我认知实战教程

从0开始微调DeepSeek-R1:修改模型自我认知实战教程

1. 前言

在大模型应用落地过程中,模型的自我认知(Self-Identity)定制化是一个关键需求。例如,企业希望部署的AI助手能明确回答“我是由XX公司自主研发的AI模型”,而非默认的开源项目描述。这种能力不仅增强品牌识别度,也提升用户信任感。

本文将围绕DeepSeek-R1-Distill-Qwen-1.5B模型,手把手带你完成一次完整的自我认知微调实践。我们将使用 LLaMA-Factory 工具进行高效微调,并通过 Ollama 实现本地化部署与 API 服务封装。整个流程无需深度学习背景,适合初学者快速上手。

本教程涵盖: - 微调前后的效果对比 - 使用 LLaMA-Factory 进行指令微调(SFT) - 模型导出与格式转换(GGUF) - 多种方式在 Ollama 中部署微调后模型 - 性能优化建议与常见问题排查


2. 准备工作

2.1 环境依赖

确保以下工具已安装并配置好:

工具版本要求安装方式
Python>=3.10官网下载
Conda/Mamba推荐 Mambaconda install mamba -n base -c conda-forge
Git>=2.30apt install git或官网安装
CUDA (GPU可选)>=11.8NVIDIA官网

2.2 下载基础模型

前往 ModelScope 下载预训练模型:

modelscope download --model_id deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5b

或手动访问:https://modelscope.cn/models/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5b

保存路径示例:D:\git-project\model\DeepSeek-R1-Distill-Qwen-1.5B


3. 使用LLaMA-Factory进行微调

3.1 安装LLaMA-Factory

LLaMA-Factory 是一个开源的大模型微调框架,支持多种主流架构和低资源微调技术(如 LoRA)。

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory mamba create -n llama_factory python=3.10 conda activate llama_factory pip install -e ".[torch,metrics]"

启动 Web UI:

nohup python src/webui.py > train_web.log 2>&1 &

访问地址:http://localhost:7860

提示:若远程服务器运行,请使用--server_name 0.0.0.0 --port 7860启动参数开放端口。

3.2 构建自我认知数据集

我们采用内置的身份微调模板文件data/identity.json,其结构如下:

[ { "instruction": "你是谁?", "input": "", "output": "我是{{name}},由{{author}}开发的人工智能语言模型。" }, { "instruction": "介绍一下你自己", "input": "", "output": "{{name}}是由{{author}}独立研发的语言模型,专注于提供专业、安全、高效的对话服务。" } ]
修改变量值:
  • {{name}}替换为你的模型名称,如[Talk-Bot]
  • {{author}}替换为公司名,如zibiao

最终保存为自定义数据集文件,例如:data/custom_identity.json

推荐做法:可在原始 identity.json 基础上增加更多问答对,提高泛化能力。

3.3 配置微调参数

进入 Web 界面后,按以下设置填写:

参数项推荐值
模型路径D:\git-project\model\DeepSeek-R1-Distill-Qwen-1.5B
数据集custom_identity.json(上传或替换原文件)
对话模板deepseek3(必须选择,否则推理异常)
微调方法LoRA(显存不足时首选)
学习率2e-4
学习率调度器cosine(收敛稳定)
批次大小4(根据显存调整)
梯度累积步数8(CPU训练需降低至2~4)
最大序列长度512
训练轮数3
输出目录saves/deepseek-lora-train/
显存不足应对策略:
显存情况建议配置
<8GB GPU使用 LoRA + batch_size=1~2
CPU训练关闭 flash_attention,梯度累积≤4
INT8量化开启quantization_bit=8

点击【开始】按钮,等待训练完成(进度条达100%)。


4. 验证与导出微调模型

4.1 加载检查点验证效果

训练结束后,在 LLaMA-Factory 的【Inference】页面中:

  1. 选择模型路径:saves/deepseek-lora-train/checkpoint-xxx
  2. 输入测试问题:“你是谁?”
  3. 观察输出是否符合预期

✅ 正常输出应类似:

我是[Talk-Bot],由zibiao开发的人工智能语言模型。

如果未生效,请检查: - 是否选择了正确的deepseek3模板 - 数据集中变量是否正确替换 - LoRA 权重是否成功加载

4.2 导出完整模型

进入【Export】页面,执行以下操作:

  • 选择训练好的 LoRA 检查点
  • 设置输出路径:D:\git-project\trained-model\train_DeepSeek-R1-1.5B-Distill
  • 勾选“合并权重”选项(Merge Adapter),生成完整模型
  • 格式选择Hugging Face

导出完成后,目录结构如下:

train_DeepSeek-R1-1.5B-Distill/ ├── config.json ├── pytorch_model.bin ├── tokenizer_config.json ├── special_tokens_map.json └── ...

该模型即可用于后续部署。


5. 使用Ollama部署微调模型

5.1 安装Ollama

Windows 用户可直接下载安装包: 👉 https://ollama.com/download/OllamaSetup.exe

Linux 用户执行:

curl -fsSL https://ollama.com/install.sh | sh

验证安装:

ollama --version

5.2 方式一:从 Safetensors 权重部署(推荐)

创建 Modelfile 文件
FROM D:\git-project\trained-model\train_DeepSeek-R1-1.5B-Distill PARAMETER temperature 0.6 PARAMETER top_p 0.95 TEMPLATE """ {{- if .System }}{{ .System }}{{ end }} {{- range $i, $_ := .Messages }} {{- $last := eq (len (slice $.Messages $i)) 1}} {{- if eq .Role "user" }}<|User|>{{ .Content }} {{- else if eq .Role "assistant" }}<|Assistant|>{{ .Content }}{{- if not $last }}<|end▁of▁sentence|>{{- end }} {{- end }} {{- if and $last (ne .Role "assistant") }}<|Assistant|>{{- end }} {{- end }} """

🔍说明: -TEMPLATE必须与 DeepSeek-R1 官方一致,否则输出混乱 - 可通过ollama show --modelfile deepseek-r1:1.5b获取参考模板

构建模型
ollama create my-tuned-deepseek -f Modelfile
启动并测试
ollama run my-tuned-deepseek >>> 你是谁? <<< 我是[Talk-Bot],由zibiao开发的人工智能语言模型。

5.3 方式二:导入 GGUF 格式模型(跨平台兼容)

适用于无 GPU 设备或边缘部署场景。

转换为 GGUF 格式

先克隆 llama.cpp:

git clone --depth 1 https://github.com/ggerganov/llama.cpp.git cd llama.cpp && pip install -r requirements.txt

执行转换脚本:

python convert_hf_to_gguf.py \ D:\git-project\trained-model\train_DeepSeek-R1-1.5B-Distill \ --outfile D:\git-project\trained-model\model.gguf \ --outtype q8_0

支持量化类型:q4_0,q8_0等,数值越高质量越高但体积越大

创建新 Modelfile
FROM D:\git-project\trained-model\model.gguf PARAMETER temperature 0.6 PARAMETER top_p 0.95 TEMPLATE """ {{- if .System }}{{ .System }}{{ end }} {{- range $i, $_ := .Messages }} {{- $last := eq (len (slice $.Messages $i)) 1}} {{- if eq .Role "user" }}<|User|>{{ .Content }} {{- else if eq .Role "assistant" }}<|Assistant|>{{ .Content }}{{- if not $last }}<|end▁of▁sentence|>{{- end }} {{- end }} {{- if and $last (ne .Role "assistant") }}<|Assistant|>{{- end }} {{- end }} """
构建与运行
ollama create my-tuned-gguf -f Modelfile ollama run my-tuned-gguf

6. API调用与集成

Ollama 兼容 OpenAI API 协议,便于快速接入现有系统。

发送请求示例(Python)

import requests url = "http://localhost:11434/v1/chat/completions" headers = {"Content-Type": "application/json"} data = { "model": "my-tuned-deepseek", "messages": [{"role": "user", "content": "你是谁?"}], "temperature": 0.6, "top_p": 0.95, "stream": False } response = requests.post(url, json=data, headers=headers) print(response.json()["choices"][0]["message"]["content"])

🌐 默认端口:11434
📚 文档:Ollama API Docs


7. 模型量化与性能优化

7.1 为什么要量化?

  • 内存占用减少 40%~75%
  • 推理速度提升 20%~50%
  • 支持在消费级设备运行(如笔记本、树莓派)

7.2 使用 Ollama 量化模型

ollama create my-quantized -f Modelfile --quantize q4_K_M

支持的量化等级:

类型位宽适用场景
Q4_K_M4-bit平衡精度与性能,推荐通用场景
Q5_K_S5-bit高精度任务(如数学推理)
Q8_08-bit接近 FP16 表现,适合服务器部署
Q2_K2-bit极低资源环境,牺牲部分质量

⚠️ 注意:仅支持从 FP16/FP32 原始模型进行首次量化,无法二次量化。


8. 总结

本文详细演示了如何从零开始微调DeepSeek-R1-Distill-Qwen-1.5B模型,实现对其自我认知的完全定制化。核心步骤包括:

  1. 准备环境与模型:下载基础模型并搭建 LLaMA-Factory 微调平台;
  2. 构建身份数据集:通过修改identity.json实现角色定义;
  3. 执行 LoRA 微调:低资源条件下高效训练;
  4. 导出融合模型:生成可用于部署的完整权重;
  5. 多方式部署:支持原生 HuggingFace 和 GGUF 格式;
  6. API 集成与量化:满足生产级性能与兼容性需求。

实践建议

  • 🎯优先使用 LoRA 微调:节省显存且易于迭代
  • 💡避免系统提示注入:遵循官方建议,所有指令放 user prompt
  • 🔒保护商业信息:不要在公开模型中暴露敏感公司信息
  • 📈持续评估效果:多次测试取平均值判断稳定性

通过本次实践,你已经掌握了轻量级大模型私有化定制的核心技能,可进一步扩展至客服机器人、知识库问答、垂直领域专家系统等应用场景。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 4:05:30

Qwen2.5-0.5B保姆级教程:1GB显存跑32K长文的详细步骤

Qwen2.5-0.5B保姆级教程&#xff1a;1GB显存跑32K长文的详细步骤 1. 引言 1.1 背景与目标 在边缘计算和轻量化AI部署日益重要的今天&#xff0c;如何在资源受限设备上运行高性能语言模型成为开发者关注的核心问题。通义千问Qwen2.5-0.5B-Instruct作为阿里Qwen2.5系列中最小的…

作者头像 李华
网站建设 2026/4/17 20:44:39

Open Interpreter性能优化:让Qwen3-4B运行速度提升50%

Open Interpreter性能优化&#xff1a;让Qwen3-4B运行速度提升50% 在本地AI开发场景中&#xff0c;响应延迟和推理吞吐是决定用户体验的关键指标。对于基于大语言模型的代码解释器Open Interpreter而言&#xff0c;即使使用如Qwen3-4B这样的中等规模模型&#xff0c;若未进行合…

作者头像 李华
网站建设 2026/4/18 5:35:20

Sonic数字人银行客服应用:智能应答系统搭建尝试

Sonic数字人银行客服应用&#xff1a;智能应答系统搭建尝试 随着人工智能技术的不断演进&#xff0c;数字人已逐步从概念验证走向实际业务落地。在金融服务领域&#xff0c;客户对响应效率与服务体验的要求日益提升&#xff0c;传统人工客服面临成本高、响应慢、服务时段受限等…

作者头像 李华
网站建设 2026/4/17 21:01:17

YOLOv9源码解读教程:models/detect/yolov9-s.yaml结构详解

YOLOv9源码解读教程&#xff1a;models/detect/yolov9-s.yaml结构详解 1. 教程目标与背景 1.1 学习目标 本文旨在深入解析 YOLOv9 官方模型配置文件 yolov9-s.yaml 的结构设计与模块原理&#xff0c;帮助读者理解其网络架构组成、参数含义及可定制化配置方式。通过本教程&am…

作者头像 李华
网站建设 2026/4/13 11:04:22

开源大模型语音合成一文详解:IndexTTS-2-LLM+RESTful API实战

开源大模型语音合成一文详解&#xff1a;IndexTTS-2-LLMRESTful API实战 1. 技术背景与核心价值 随着大语言模型&#xff08;LLM&#xff09;在自然语言处理领域的持续突破&#xff0c;其能力边界正逐步向多模态任务拓展。语音合成&#xff08;Text-to-Speech, TTS&#xff0…

作者头像 李华
网站建设 2026/4/15 23:25:42

ST-Link仿真器在FreeRTOS调试中的应用实例

深入调试 FreeRTOS&#xff1a;如何用 ST-Link 看清多任务系统的“心跳” 你有没有遇到过这样的场景&#xff1f; 系统跑着跑着突然卡死&#xff0c;串口日志停在某一行&#xff1b; 某个低优先级任务迟迟不执行&#xff0c;但队列明明有数据&#xff1b; 或者 CPU 占用率居…

作者头像 李华