本文是《企业级DeepSeek实战:应用开发与模型训练》的读书笔记,出版于26年3月17日,篇幅不大,10w字出头,评分2分吧(满分5分):技术不够深入,提到很多概念,不过都是浅尝辄止(也没毛病);收获并不多,大部分知识点都是已知的,适合快速浏览。
下面算是记录一些知识盲区吧。
全书概览
作为一本面向工程实践者的技术专著,聚焦于DeepSeek系列模型在企业级场景中的部署、应用开发、微调训练和复现全链路实践。本书区别于市面上大量泛泛而谈的大模型入门书,其核心价值在于:
- 以DeepSeek为主线,而非泛泛讲解GPT/Claude等通用大模型
- 覆盖从部署到训练的全链路,包括SFT、GRPO、数据蒸馏等前沿方法
- 提供可复现的代码示例,每个章节都有完整的工程化落地案例
- 聚焦2024-2025年最新技术演进,特别是DeepSeek-R1推理模型的突破
分为四大板块:
| 板块 | 章节 | 核心内容 |
|---|---|---|
| 基础篇 | Ch1-2 | DeepSeek家族介绍、LLM基础概念 |
| 应用篇 | Ch3-7 | 部署方案、Chat/Agent/RAG/多模态四大应用范式 |
| 开发篇 | Ch8-11 | 软件开发、数据分析、医疗校对、语音客服四个垂直场景 |
| 训练篇 | Ch12-16 | R1原理解析、SFT/GRPO/蒸馏三大训练方法论 |
1.3 为什么选择DeepSeek
DeepSeek在2024-2025年成为全球AI领域最受关注的开源大模型之一,原因包括:
- 开源策略激进:从V2到V3到R1,全部开源权重,推动整个社区的技术迭代
- 推理能力突破:DeepSeek-R1通过纯强化学习实现了接近o1的推理能力
- MoE架构创新:DeepSeek-V3采用混合专家架构,在性能和成本间取得优异平衡
- 中文能力突出:原生支持中文,对国内企业级应用友好
- 生态完善:提供了从API到本地部署的完整工具链
基础篇
DeepSeek概述
DeepSeek模型家族
DeepSeek系列模型经历了多次重要迭代:
| 模型版本 | 发布时间 | 核心特点 | 参数规模 |
|---|---|---|---|
| DeepSeek-V1 | 2024年初 | 首代基座模型 | 67B |
| DeepSeek-V2 | 2024年中 | 引入MLA(Multi-head Latent Attention) | 236B总/21B激活 |
| DeepSeek-V3 | 2024年底 | MoE架构,超长上下文 | 671B总/37B激活 |
| DeepSeek-R1 | 2025年初 | 纯RL训练的推理模型 | 与V3同规模 |
Code Llama ------ Code Llama是Meta推出的代码专用大模型系列,本书将其作为对比参考,说明DeepSeek在代码生成领域的竞争力。
1.2 技术创新点
MLA(Multi-head Latent Attention)是DeepSeek-V2的核心创新:
- 将KV Cache压缩为低维隐式表示
- 显著降低显存占用,支持更长上下文
- 推理速度提升数倍
DeepSeek-MoE是V3的关键架构选择:
- 采用细粒度专家分割(每个专家参数量小)
- 路由机制优化,负载均衡
- 实际推理时只激活部分参数(37B/671B ≈ 5.5%),成本极低
LLM基础知识
本章涵盖了大语言模型的基础概念,为后续章节打基础:
- Transformer架构:Self-Attention、FFN、Layer Norm等核心组件
- 预训练方法:Next Token Prediction的核心思想
- 参数高效微调:LoRA、QLoRA、Prefix Tuning等方法论
- 推理优化:量化(INT8/INT4)、KV Cache、Speculative Decoding
应用篇
DeepSeek部署
大模型的精度是指模型权重在存储和计算时的数值精确程度,通常由浮点数的位数决定。常见的精度类型包括FP32、FP16、FP8、INT8、INT4等,不同精度格式的指数位与尾数位分配存在差异。
精度选择直接影响模型的数值稳定性、计算效率和内存占用:高精度(如FP32)能保持更精确的梯度计算和权重更新,在复杂数学运算中表现稳定,但会显著增加显存消耗(约为FP16的两倍)并降低计算吞吐量;低精度(如FP16/FP8)通过减少数据位宽可提升Tensor Core的利用率,从而显著提高训练速度,同时降低显存占用,但也可能导致训练过程中出现梯度消失、数值溢出等精度损失问题。实际应用中通常采用混合精度训练策略,结合损失缩放技术来平衡效率与稳定性。
量化会带来精度损失,可考虑应采用分组缩放因子和零点校正等方法来减小误差。
分组量化(Grouped Quantization)将权重按组进行量化,每组维护独立的缩放因子(scale)和零点(zero-point),在精度损失和压缩率之间取得平衡。
vLLM使用,可参考vLLM理论及实战入门。
使用nvidia-smi(NVIDIA System Management Interface)命令可实时监控GPU的算力资源占用情况。在终端运行该命令后,会显示GPU编号、名称、温度、功耗、显存使用情况(总量/已用/剩余)、计算单元利用率(GPU-Util)等关键指标。
| 方案 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| DeepSeek官方API | 快速验证、低并发 | 零运维成本 | 有延迟、有费用、数据出境 |
| vLLM本地部署 | 中高并发、数据敏感 | 低延迟、数据可控 | 需要GPU资源 |
| Ollama轻量部署 | 个人开发、原型验证 | 简单易用 | 并发能力有限 |
| TensorRT-LLM | 生产环境极致优化 | 吞吐量最高 | 部署复杂度高 |
参数 ------ vLLM部署时需要关注的参数包括:tensor_parallel_size(张量并行大小)、gpu_memory_utilization(显存利用率)、max_model_len(最大序列长度)、enable_prefix_caching(前缀缓存开关)等。
FramePack ------ 视频帧插值/生成相关技术,用于多模态视频理解场景。
构建Chat应用
典型的Chat应用包含以下组件:
- 前端界面:Streamlit / Gradio / React + Vite
- 后端服务:FastAPI / Flask
- 模型接入层:vLLM OpenAI兼容接口 / LangChain
- 对话管理:历史消息管理、上下文窗口控制
LibreChat:开源可定制应用,可本地部署,支持OpenAI等线上模型服务,也可与使用vLLM、Ollama等工具部署于本地的大模型配合使用。简单理解:类似与Open Web UI,为LLM提供聊天GUI。
Open WebUI:内置RAG推理引擎,能够对用户上传的各种文件进行深入分析和处理,从而为用户提供更加精准和高效的服务。
该项目持续迭代,引入很多新功能,后续需继续深入学习。
Draw.io可导出XML文件,在绘图场景,DS可生成XML文件,与Draw.io集成。
不推荐这种方案,现在LLM绘图最主流方案,是直接输出可在markdown里渲染的Mermaid文本。
构建AI Agent
CAMEL框架:https://github.com/camel-ai/camel
owl:https://github.com/camel-ai/owl
OpenManus:MetaGPT开源
OpenManusWeb:YunQiAI Fork自OpenManus,并增加Web支持,使用户能够通过浏览器直接访问和操作。
https://github.com/YunQiAI/OpenManusWeb
watchdog:Python库,基于通用看门狗机制,用于监控Agent运行状态,防止陷入死循环或资源耗尽。设置超时时间、最大步数限制等安全护栏。
构建RAG应用
嵌入模型nomic-embed-text
RAG基础、衍生、生态、Dify部署、SearXNG等文章,之前都写过,可在个人博客主页搜索。
检索策略进阶:
- 混合检索:向量相似度 + BM25关键词得分加权融合
- 查询扩展:用LLM生成多个查询变体,分别检索后合并
- HyDE(Hypothetical Document Embedding):先生成假设性答案,再用答案去检索
- 父文档检索:按句子索引但返回整段/整篇,避免信息截断
RAG的常见问题与解决方案
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 检索不相关 | Embedding语义偏差 | 混合检索 + 查询改写 |
| 上下文过长 | 检索结果太多 | 重排序截断 + 上下文压缩 |
| 回答不一致 | 多个检索结果矛盾 | 引用标注 + 置信度评估 |
| 更新不及时 | 索引未刷新 | 增量更新 + 变更检测 |
| 安全风险 | 提示注入攻击 | 输入清洗 + 权限控制 |
构建多模态应用
本章讨论了DeepSeek在多模态场景的应用,包括:
- 图像理解(VL/VLM)
- 文档OCR与分析
- 视频内容理解
- 音频处理
开发篇
辅助软件开发应用
Bolt.new ------ 一个AI驱动的全栈Web开发工具,可以通过自然语言描述直接生成完整的前端项目(React/Vue/HTML),支持实时预览和迭代修改。代表了AI辅助编程的前沿方向。
创建 ------ 指使用AI创建项目的流程,包括需求分析、技术选型、脚手架生成、代码编写等环节的自动化。
本章核心观点:DeepSeek在代码生成任务上表现优异,可以用于:
- 代码补全与生成
- 代码审查与重构
- 自动化测试生成
- 技术文档撰写
- Bug定位与修复建议
数据分析应用
Vanna ------ 一个开源的RAG框架,专门用于Text-to-SQL(自然语言转SQL查询)。它允许用户用自然语言提问,自动生成SQL语句并从数据库中获取答案。
训练过程和生产过程 ------ Vanna的工作分为两个阶段:①训练阶段(建立DDL、文档、SQL示例的向量索引);②生产阶段(接收自然语言查询 → 检索相关Schema → 生成SQL → 执行并返回结果)。
运行流程 ------ 典型的Vanna运行流程:用户提问 → LLM理解意图 → 从向量库检索相关表结构 → 生成SQL → 执行 → 格式化返回结果 → 可选的可视化展示。
依赖库 ------ Vanna依赖的核心库包括:向量数据库(Chroma/Faiss)、LLM接口(OpenAI/本地模型)、数据库驱动(SQLAlchemy)、Web框架(Streamlit/Flask)。
SQL较长,且往往附加一些多余信息导致执行失败 ------ 这是Text-to-SQL系统的典型挑战。生成的SQL可能包含注释、解释性文字、或者过于复杂的嵌套子查询。需要后处理清理步骤来提取纯净的SQL语句。
三种数据来源 ------ Vanna的训练数据来自三个维度:①DDL(数据库模式定义);②文档(表/字段的业务含义描述);③SQL示例(历史问答对)。三种数据互补,共同构成Schema理解的完整知识库。
医疗文书校对应用
difflib ------ Python标准库中的差异比较模块,用于比较两个文本序列的差异。在医疗文书校对场景中,可用于比对原始文本和AI修正后的文本,高亮显示修改位置,方便人工审核。
本章展示了DeepSeek在专业领域(医疗)的应用:
- 医疗文书的自动纠错
- 术语规范化
- 格式一致性检查
- 敏感信息脱敏
智能语音客服应用
audio_recorder_streamlit库 ------ Streamlit的音频录制组件库,用于在Web界面中实现录音功能,是构建语音交互应用的前端基础。
Vosk ------ 一个离线语音识别引擎,支持多种语言,不需要网络连接即可运行。适合隐私要求高的企业内部语音应用场景。
pyttsx3 ------ Python文本转语音(TTS)库,支持多种语音引擎,可将文字转换为语音输出。在语音客服系统中用于播报回复内容。
依赖库 ------ 智能语音客服系统的完整依赖链:音频采集(audio_recorder) → 语音识别(Vosk/Whisper) → LLM理解(DeepSeek) → TTS合成(pyttsx3) → 音频播放。
型有 ------ 可能指"模型有效"或特定型号/类型的配置,需结合具体上下文确认。
训练篇
基于技术报告的DeepSeek-R1实现原理解析
12.1 R1的核心突破
DeepSeek-R1的最大贡献在于证明了:通过纯强化学习(RL),无需大量SFT数据,也能训练出具有强大推理能力的模型。
这与OpenAI o1的技术路线形成鲜明对比------o1的具体方法至今未公开。
全过程 ------ R1的训练分为两个主要阶段:①冷启动阶段(用少量高质量CoT数据做SFT warm-start);②强化学习阶段(用RL奖励信号持续优化推理链质量)。
两类奖励策略 ------ R1使用了两种互补的奖励信号:①过程奖励(Process Reward):对推理过程的每一步进行评分;②结果奖励(Outcome Reward):只对最终答案的正确性进行奖励。两者的组合避免了单一奖励信号的偏差。
原理与区别 ------ 过程奖励 vs 结果奖励的本质区别在于:过程奖励提供细粒度的监督信号(每步对错),但需要人工标注或可信模型判断;结果奖励简单直接(答案对即正),但信号稀疏。R1的创新在于设计了规则化的过程奖励(如数学证明的格式检查),避免了对人工标注的依赖。
四个步骤 ------ R1的完整训练流程:Step 1 - SFT冷启动(少量长CoT数据);Step 2 - RL推理训练(强化学习优化);Step 3 - 拒绝采样(Rejection Sampling筛选高质量数据);Step 2-3循环迭代直至收敛。
收集一小部分长思维链数据用于监督微调模型 ------ 这就是R1的"冷启动"策略。只需要几千条高质量的思维链数据(来自其他强模型或人工标注),就能启动RL训练循环。这大幅降低了对大规模SFT数据的依赖。
12.2 R1的技术影响
R1的开源对整个AI社区的深远影响:
- 推动了开源推理模型的发展:后续出现了众多R1-inspired模型
- 证明了RL-only路线的可行性:改变了"SFT为主、RL为辅"的传统认知
- 降低了推理模型训练门槛:中小团队也可以尝试类似路线
DeepSeek微调
微调的基本原理是通过加入下游任务数据,对原有模型的参数进行调整。具体而言,这是一个通过计算损失函数并反向传播来更新部分或全部参数,从而使模型的内部表征空间与特定任务需求对齐。
这段笔记精炼地概括了微调的本质。让我展开解释:
13.1 微调的分类
| 类型 | 更新参数量 | 适用场景 | 代表方法 |
|---|---|---|---|
| 全量微调 | 100% | 任务差异大、资源充足 | Full Fine-tuning |
| 参数高效微调(PEFT) | 0.1%-1% | 大多数场景 | LoRA / Adapter |
| 提示微调 | 0%(只学soft prompt) | 少样本场景 | Prefix Tuning / P-Tuning |
13.2 LoRA(Low-Rank Adaptation)详解
LoRA是目前最流行的PEFT方法:
- 核心思想:权重的更新矩阵可以分解为两个低秩矩阵的乘积
- 数学表达:ΔW = B × A,其中B∈ℝ{d×r},A∈ℝ{r×d},r << d
- 参数量:原始参数量的 r/d 倍(r通常取8-64)
- 优势:训练参数少、显存占用低、可合并回原模型无推理开销
trl(Transformer Reinforcement Learning)------ Hugging Face出品的训练框架,集成了SFT、PPO、DPO等多种训练方法,是微调DeepSeek类模型的首选工具之一。
依赖库 ------ 微调DeepSeek的主要依赖:transformers、peft(含LoRA实现)、trl、accelerate、flash-attn(加速注意力计算)、deepspeed(分布式训练)。
模型合并的原理 ------ LoRA训练完成后,需要将LoRA权重合并回基础模型:W_new = W_base + B × A。合并后的模型可以像普通模型一样推理,无额外开销。注意数据类型转换(BF16/FP16/FP32)和数值稳定性。
"问题-思考过程-答案"这一逻辑结构 ------ 这是R1风格推理的核心格式。微调数据应遵循此结构:先给出问题,然后展示详细的思考/推导过程,最后给出答案。这种格式的数据能教会模型"如何思考"而非仅仅"记住答案"。
aliendao.cn下载的约61MB的medical-o1-reasoning-SFT数据集 ------ 这是一个医学领域的思维链推理数据集,适用于微调医疗垂直领域的推理模型。数据集采用"问题-推理-答案"格式,专门针对医学诊断和治疗决策场景。
基于SFT复现DeepSeek
Open R1 ------ 指的是DeepSeek-R1的开源版本或社区复现版本,可能是基于R1报告的开源实现。
三个最重要过程 ------ SFT复现DeepSeek的三个关键步骤:①数据准备(收集/构造高质量SFT数据集);②训练配置(设置超参数、LoRA配置、学习率调度);③评估验证(在benchmark上测试效果)。
数据并未开源 ------ DeepSeek官方并未公开其完整的训练数据,这是复现工作的最大难点。社区只能通过公开数据集(如ShareGPT、WizardLM等)或自行构造数据来近似。
AI-MO/NuminaMath-1.5 ------ AI-MO(AI Mathematical Olympiad)和NuminaMath是数学推理数据集,用于训练和评估模型的数学能力。NuminaMath-1.5包含150万道竞赛级别数学题及其解答。
flash-attn ------ FlashAttention的高效实现,显著减少注意力计算的显存读写操作,加速训练和推理。对于长序列场景尤其重要,几乎是训练大模型的标配依赖。
max_seq_length ------ 最大序列长度配置,决定了模型能处理的最长输入。DeepSeek-V3支持128K上下文,但在微调时通常根据任务需求设置为4K-32K不等,越长则显存消耗越大。
基于GRPO复现DeepSeek
GRPO(Group Relative Policy Optimization)是DeepSeek提出的强化学习训练算法,是其技术报告中最具原创性的贡献之一。群体相对策略优化。不同于PPO(Proximal Policy Optimization)需要一个额外的价值模型(Critic Model)来估计baseline,GRPO通过组内相对比较来估计奖励的优势值,省去了Critic模型,大幅降低训练复杂度和显存占用。
GRPO vs PPO 对比:
| 维度 | PPO | GRPO |
|---|---|---|
| Baseline估计 | Critic Value Model | 组内采样平均 |
| 额外模型 | 需要(Critic) | 不需要 |
| 显存占用 | 高(Actor+Critic) | 低(仅Actor) |
| 训练稳定性 | 成熟 | 较新,需调参 |
| 适用场景 | 通用RL | 特别适合生成式RL |
11个GRPO算法:报告中提到的11种不同奖励函数。
奖励函数 ------ GRPO的奖励函数设计至关重要。对于推理任务,常见的奖励包括:①格式奖励(输出是否符合要求的格式);②准确率奖励(最终答案是否正确);③过程奖励(推理步骤是否合理)。R1使用了规则化的过程奖励(如LaTeX格式检查、代码执行结果等)。
IOI ------ International Olympiad in Informatics(国际信息学奥林匹克竞赛),常被用作编程/算法推理能力的评测基准。DeepSeek在IOI题目上的表现是其代码推理能力的重要指标。
use_peft和lora_target_modules ------ 使用PEFT库进行LoRA微调时的关键配置项。use_peft=True启用LoRA;lora_target_modules指定对哪些模块应用LoRA(通常是q_proj、k_proj、v_proj、o_proj等attention层的投影矩阵)。
per_device_train_batch_size与num_generations应有整数倍关系 ------ 这是GRPO训练的重要配置约束。batch_size是每次前向传播的样本数,num_generations是每个prompt生成的回答数。为了正确计算组内相对优势,num_generations应该能整除batch_size(或反之),确保每个group内的样本数一致。
基于数据蒸馏复现DeepSeek
包括软标签蒸馏、梯度蒸馏和显著特征映射等。 ------ 数据蒸馏的三种主流方法:
-
软标签蒸馏(Soft Label Distillation):让小模型学习大模型的概率分布输出(softmax logits),而非硬标签。保留了大模型的"不确定性信息",传递更多知识。
-
梯度蒸馏(Gradient Distillation):让小模型模仿大模型的梯度方向,使参数更新趋势一致。计算成本较高但效果好。
-
显著特征映射(Saliency Feature Mapping):让中间层的特征表示对齐,确保小模型学到与大模型相似的内部表征。
distilabel ------ 一个由Argilla开发的数据合成与标注框架,用于大规模生成高质量的训练数据。在蒸馏场景中,可以用大模型(如DeepSeek-V3/R1)批量生成带思维链的高质量数据,再用来训练小模型。
七、核心知识点速查表
部署篇速查
| 场景 | 推荐方案 | 关键命令/配置 |
|---|---|---|
| 快速体验 | Ollama | ollama run deepseek-r1:8b |
| 生产API | vLLM + OpenAI兼容 | vllm serve deepseek-ai/DeepSeek-V3 --tensor-parallel-size 4 |
| 量化部署 | AWQ/GPTQ | 4bit量化,显存需求降低75% |
| 监控 | nvidia-smi | watch -n 1 nvidia-smi |
微调篇速查
| 方法 | 适用任务 | 显存需求(70B模型) | 训练时长参考 |
|---|---|---|---|
| LoRA(r=8) | 通用适配 | ~80GB(4×A100) | 8-24h |
| QLoRA(int4) | 低资源场景 | ~40GB(1×A100) | 12-36h |
| 全量微调 | 领域深度定制 | ~140GB(8×A100) | 48-120h |
| GRPO | 推理能力训练 | ~160GB(8×A100) | 72-200h |
训练框架速查
| 框架 | 优势 | 适用方法 |
|---|---|---|
| trl | HuggingFace生态,SFT/DPO/PPO/GRPO全覆盖 | SFT, DPO, PPO, GRPO |
| transformers + peft | 最灵活,底层控制力最强 | LoRA/QLoRA微调 |
| deepspeed | 分布式训练,大模型必备 | 全量微调 |
| vLLM | 高效推理 + PPO训练 | RLHF推理阶段 |