新同事入门 · 从数据到生产服务
一个大模型,究竟怎样从“会说话”变成“能工作”?
模型文件只是原料。要让它进入真实业务,还要经过训练、微调、评测、量化、部署和持续运营。这份教程用一条完整旅程,把关键概念串起来。
阅读导航
先看全局,再逐层深入
不需要先掌握复杂数学。阅读时始终追问三个问题:它解决什么问题?付出什么代价?怎样证明它真的有效?
大模型从数据到服务的完整旅程
先建立地图。后面的每个术语,都可以在这条流水线上找到自己的位置。
把模型想象成一名新员工
预训练像完成长期通识教育,让模型学会语言、知识和基本推理;微调像岗位培训,让它熟悉公司的任务、语气和输出格式;评测像考试;量化像把厚重的资料压缩进更小的行李箱;部署则是安排工位、工具、排班和服务窗口。
任何一环做得不好,最终体验都会受影响。模型能力强,但部署资源不足,用户仍然会觉得慢;部署很快,但数据和任务没有对齐,模型仍然会答非所问。
核心认识:我们交付的不是一个模型文件,而是一套持续运行的 AI 系统。
预训练:模型如何获得基础能力
预训练不是把资料逐字存进数据库,而是让模型从海量样本中学习语言和世界规律。
它在学习什么
最常见的目标可以简单理解为“根据前文预测下一个 Token”。重复数万亿次后,模型逐渐学到词语关系、语法、事实模式、代码结构和部分推理能力。参数是这些规律的压缩表示,不是可以逐条查询的百科目录。
为什么训练昂贵
训练要保存权重、激活值、梯度和优化器状态,还要对大量数据反复计算。模型越大、序列越长、批次越大,对算力、显存、网络和数据吞吐的要求越高。
数据质量为什么比数量更重要
低质量、重复、冲突或带有隐私的数据会直接影响模型行为。数据治理至少包括去重、清洗、质量分类、版权与隐私检查、领域配比和污染检测。
MoE:为什么模型很大,每次只用一部分
混合专家模型把一部分网络拆成多个“专家”,再由路由器为每个 Token 选择少量专家参与计算。
一家拥有很多专家的咨询公司
假设公司有 256 位专家。遇到法律问题,不需要 256 人全部参加,而是由前台把问题分给最合适的几位。MoE 中的 Router 就是前台,Expert 是不同专家。这样可以扩大总参数容量,同时控制每个 Token 的实际计算量。
总参数与激活参数
总参数决定模型需要存放多少权重,激活参数更接近一次前向计算实际使用的规模。因此,“284B 总参数、13B 激活参数”不等于只需要存储 13B,完整权重仍要放在设备或多机系统中。
MoE 的代价
路由可能出现专家冷热不均,需要负载均衡训练;跨设备调用专家会增加通信;并发和批处理不足时,理论计算优势不一定完全转化为用户速度。
动手理解 MoE:谁来回答这个问题?
点击不同问题,观察 Router 如何把 Token 分给不同专家。你看到的是教学演示,不是某个真实模型的内部权重。
专家路由实验室
问题:请帮我审查一段 Python 代码
观察重点:总参数可以很大,但每个 Token 只激活少数专家;权重仍需要完整存储。
后训练:把“会续写”变成“会办事”
预训练赋予模型广泛能力,后训练负责教它遵循指令、偏好更好的回答、拒绝危险请求,并适应具体业务。
后训练不是一种算法,而是一组阶段
| 阶段 | 训练信号 | 目标 |
|---|---|---|
| SFT 监督微调 | 问题与标准答案 | 学会指令、格式、语气和任务流程 |
| 偏好优化 DPO | 同一问题的优选与劣选答案 | 更倾向于人类偏好的回答 |
| 强化学习 RL | 奖励函数或可验证结果 | 提升推理、规划或特定目标表现 |
| 安全对齐 | 风险样本与边界规则 | 降低有害输出和越权行为 |
为什么先 SFT,再做偏好训练
SFT 先给模型一套可模仿的范例,让它知道“合格答案长什么样”;DPO 或强化学习再帮助模型在多个可行答案中做更好的选择。只有偏好、没有基本能力,就像只给员工绩效标准,却没有教工作流程。
后训练也可能让模型退步
数据过窄会造成过拟合,学习率过高可能导致灾难性遗忘,安全训练过强可能导致过度拒答。因此每次训练都要同时检查目标能力、通用能力、安全性和格式遵循。
模型适配:提示词、RAG 与微调如何选择
企业落地的第一道选择题不是“用哪种微调”,而是“这个问题是否真的需要改参数”。
四种方案解决四类问题
| 方案 | 适合解决 | 不擅长解决 |
|---|---|---|
| 提示词 | 临时任务、角色、格式和步骤说明 | 稳定注入大量私有知识 |
| RAG | 知识经常更新、需要来源引用 | 根本改变模型的表达习惯 |
| LoRA / SFT | 固定任务、语气、格式和工具行为 | 实时更新事实知识 |
| 继续预训练 | 大量领域语料带来的底层能力迁移 | 低成本快速试验 |
LoRA 为什么流行
全参数微调会更新整个模型,成本高且容易影响原能力。LoRA 只训练少量新增参数,可以把它理解为给已有大脑加一本岗位手册。QLoRA 进一步以量化底座降低训练显存。
微调真正难的是数据
一条高质量样本要说明输入是什么、期望输出是什么、边界在哪里。重复模板、错误答案和互相冲突的规则,会让模型学到错误习惯。训练集、验证集和测试集必须分开,防止模型“提前见过考题”。
百炼实践:从数据集到可调用模型
阿里云百炼把数据准备、模型调优、评测和部署放在同一条工作流中。下面以文本模型为例说明配置逻辑,具体可用模型与参数以控制台当期页面为准。
第一步:先选对训练方式
| 百炼方式 | 数据形式 | 适用目标 |
|---|---|---|
| SFT 高效训练 | ChatML 对话,问题 + 标准答案 | 任务、格式、语气与工具行为 |
| CPT 继续预训练 | 领域纯文本 JSONL | 补充大规模领域语言和知识模式 |
| DPO 偏好训练 | 问题 + chosen + rejected | 让模型偏向更优回答 |
第二步:在控制台完成配置
开通百炼并确认地域;RAM 子账号授予训练、部署和数据访问权限。训练集与验证集分开,上传到数据管理或按控制台要求关联 OSS。
选择基础模型和 SFT、CPT 或 DPO。新手先用支持的较小模型和高效训练完成小规模验证。
填写 Epoch、Batch Size、Learning Rate、最大序列长度和验证集比例。从平台默认值或官方推荐值起步,一次只调整少量变量。
查看训练/验证 Loss、任务状态和异常日志。训练 Loss 继续下降但验证集变差,往往意味着过拟合。
用独立业务集对比基础模型和调优模型;通过后创建部署实例,记录模型 ID、地域、并发和计费,再使用 DashScope API 调用。
一套稳妥的入门配置思路
先准备 100–500 条人工复核的代表性样本做小实验;Epoch 从 1–3 开始;学习率采用平台对当前模型的推荐值;保留约 10% 验证数据。它不是固定答案,目标是先建立可重复基线,再依据验证集调整。
预训练看得见:从原始数据到基础能力
训练不是“上传文件就记住”,而是经过清洗、切分、批次学习和验证,逐步形成语言规律。
第 1 步:原始数据
原始网页、书籍、代码和对话混在一起,先要处理重复、乱码、隐私和版权边界。
学习路径:原始数据 → 清洗去重 → Token 批次 → 预测训练 → 验证泛化
三种“缓存”不是一回事
都叫缓存,但保存的东西、服务的对象和有效期不同。把它们分开,才能知道优化到底改哪里。
保存一次请求的中间结果
模型已经读过的上下文,会转换成 Key / Value 并暂存在显存里,后续生成 Token 时复用。
服务对象:当前请求生命周期:请求结束通常释放复用多个请求的共同前缀
系统提示词、固定文档前言或相同历史对话,可以在不同请求之间共享已经完成的 Prefill 结果。
服务对象:共享前缀的多个请求生命周期:按容量和命中率淘汰保存模型文件和运行产物
下载后的权重、Tokenizer、编译内核和容器层可以放在磁盘或对象存储,避免每次重新下载或编译。
服务对象:启动和发布流程生命周期:版本更新或空间回收| 问题 | KV Cache | Prefix Cache | Model Cache |
|---|---|---|---|
| 解决什么慢 | 减少历史上下文重算 | 减少共同前缀 Prefill | 减少启动下载和编译 |
| 主要占用 | GPU 显存 | GPU 显存 / 专用缓存池 | 磁盘、对象存储 |
| 典型收益 | 同一会话持续生成 | 大量相同系统提示词请求 | 扩容、重启、版本发布 |
前缀缓存通常是 KV Cache 的“跨请求复用策略”;模型缓存保存的是文件和编译结果,不参与一次请求的 Token 计算。
推理:模型如何变成一个在线服务
用户点下发送后,系统要经历排队、读题、逐字生成和流式返回。体验差异就藏在这些阶段里。
一次请求分为两段
Prefill 是完整读取问题和历史对话,像考生先审题;Decode 是逐个生成新 Token,像开始一字一句写答案。首个字迟迟不出现,要重点检查排队和 Prefill;开始输出后很慢,要重点检查 Decode、显存带宽和调度。
KV Cache 是当前对话的草稿纸
系统会保存已经计算过的中间结果,避免每生成一个 Token 都重算全部历史。这能加速生成,却会消耗显存。上下文越长、并发越高,需要的“草稿纸”越多。
为什么上下文窗口不能只看宣传数字
模型理论上支持很长的上下文,不代表当前硬件能够在目标并发下稳定承载。长文本会增加 Prefill 时间和 KV Cache,占住服务槽位,让后续请求排队。
推理播放:为什么首字和后续速度不同?
按下播放,观察一次回答如何先读题,再逐字生成。暂停后可以回看每一步在消耗什么资源。
一次请求的内部时钟
Prefill:一次读完输入;Decode:逐个生成输出;KV Cache:保存已经算过的上下文。
量化滑块:空间省了多少,风险在哪里?
拖动精度,直观看权重占用和“参考损失区间”。区间来自公开基准研究,不是任何具体项目的承诺。
FP16 / BF16
高精度基线,空间占用最大,适合训练和效果对照。
权重占用:100% 基线
参考:FP8 在相关研究中基本无损;调优良好的 INT8 平均约 1%–3%;W4A16 在该研究中与 INT8 接近。实际结果取决于模型、任务和评测集。
为什么特别强调 NVFP4
NVFP4 不是“所有设备都适用的 INT4 另一个名字”,它的优势来自低比特表示与特定 NVIDIA 硬件、内核和软件栈的协同。
为什么不是“位数越低越好”
精度越低,表示范围和细节越有限;激活值、异常值和 KV Cache 也可能成为新瓶颈。NVFP4 的价值是硬件、框架、校准方法和模型格式一起配合,而不是只把文件换成一个更小的后缀。
如何做一个公平比较
固定模型版本、输入输出长度、并发、上下文和采样参数;分别测显存、TTFT、TPOT、吞吐、能耗和业务准确率。把 NVFP4 放在不支持它的旧 GPU 上,比较结果没有意义。
适合 NVFP4 的问题:在支持硬件上,能否以可接受的业务精度换来更高的模型容量、吞吐和能效?
量化:用精度换空间
量化的目标是用更少比特表示权重或激活,让模型更容易装下、更节省带宽,但它不是免费的加速按钮。
先建立直觉
FP16 像保存高清原图,INT8 像适度压缩,INT4 或 NVFP4 像更强压缩。文件和显存占用下降了,细节也可能发生变化。模型不同、任务不同,对压缩的敏感度不同。
| 方式 | 主要特点 | 常见场景 |
|---|---|---|
| FP16 / BF16 | 精度较高、占用较大 | 训练、效果基线、资源充足的推理 |
| INT8 | 压缩适中,通常较稳妥 | 追求效果与容量平衡 |
| INT4 / GPTQ / AWQ | 压缩明显,需要校准与评测 | 显存有限、本地部署 |
| NVFP4 | 面向特定硬件优化的低精度格式 | 匹配支持的 NVIDIA 硬件与软件栈 |
精度通常会损失多少
不存在适用于所有模型的固定比例。Red Hat AI 等机构对 Llama 3.1 系列进行超过 50 万次评测的研究显示:FP8 W8A8 在其测试范围内基本无损;调优良好的 INT8 W8A8 平均每项任务约下降 1%–3%;W4A16 INT4 在该研究中与 INT8 接近。这个区间不能当作项目承诺值,小模型、长上下文、代码、数学和工具调用可能更敏感。
量化后必须重新考试
至少重测领域问答、代码、数学、长文本、Tool-call、结构化输出和安全边界。某些任务平均分变化不大,但关键业务样本可能显著退化。
部署:一台机器不够时怎么办
多卡和多机可以解决容量或吞吐问题,也会引入通信、同步、版本和故障复杂度。
两种常见分工方式
Tensor Parallelism(TP)像几个人一起切同一盘菜:同一层计算被拆到多个设备,需要频繁同步。Pipeline Parallelism(PP)像洗菜、切菜、炒菜的流水线:不同设备负责不同模型层,请求依次通过。
三台机器不是三倍速度
如果三台设备共同承载一份模型,任何请求都需要三台协作。增加设备首先让模型“装得下”,不一定让单个请求线性加速;每次跨机通信还会带来等待。
DeepSeek V4 Flash 案例怎么理解
当前项目用三台 DGX Spark 组成一个流水线实例,模型层分段运行。这个方案的核心价值是让超大模型在本地可用,而不是替代高并发云服务。8K 受控输入线代表已验证边界,不等于模型理论上下文上限。
开源的真相:开放权重不等于完全开源
“可以下载”只回答了能否拿到模型,不能回答是否可审计、可复现或可自由商用。
把开放程度拆成七层
是否能下载参数并在本地推理、微调。
推理、训练和数据处理代码开放到什么程度。
是否允许商用、再分发、修改、托管 API,是否附带规模或品牌条款。
数据来源、清洗方法、训练阶段和关键超参数是否公开。
第三方能否重建关键过程、追溯来源并检查风险。
不要只问“它开不开源”,要问“开放了哪一层,我获得什么权利,又承担什么义务”。
三个模型样本怎么比较
| 模型样本 | 公开权重 | 许可证 / 商用 | 训练数据与端到端复现 |
|---|---|---|---|
| DeepSeek-R1 | 是 | MIT(以具体版本为准) | 未完整公开 |
| Kimi K2.5 | 是 | 存在条件条款,需读当前许可 | 未完整公开 |
| Qwen3 | 是 | 多版本采用 Apache 2.0 | 未完整公开 |
这张表是结构化判断,不是法律意见;版本变化时必须回到官方仓库和许可证核验。
开放不等于免费
模型权重不收费,本地运行仍然需要 GPU、网络、电力、机房、工程和运维投入。许可证宽松,也不自动消除训练数据版权、输出责任、隐私和行业合规风险。
评测与上线:能回答不等于能生产
接口返回成功只证明功能通了。生产系统还要同时证明效果、性能、稳定性、安全和成本可接受。
性能不能只看一个数字
| 指标 | 回答的问题 |
|---|---|
| TTFT | 用户多久看到第一个字? |
| TPOT / Token/s | 答案开始后,输出是否流畅? |
| 吞吐 | 单位时间能处理多少请求或 Token? |
| P95 / P99 | 最慢的一批用户要等多久? |
| 成功率 | 长文本、高并发、Tool-call 是否稳定完成? |
用矩阵测试真实业务
把输入长度、输出长度、并发数、任务类型和量化版本组合起来测试。短问答、长文档、代码、工具调用和结构化输出不能互相代替。历史配置的成绩也不能直接外推到新版本。
从试点到生产的三道门
限制用户、并发和输入长度,建立效果与性能基线。
加入认证、权限、限流、监控、告警、审计、版本锁定和回滚。
根据真实排队、利用率和停机损失决定是否增加完整副本。
新同事学习检查表
能用自己的话回答下面的问题,才算真正建立了大模型工程的基础认知。
训练与微调
- 预训练、微调和推理有什么区别?
- 什么问题更适合 RAG?
- 为什么微调前先检查数据?
推理与显存
- Prefill 与 Decode 分别做什么?
- KV Cache 为什么随并发增长?
- 模型文件大小为何不等于显存需求?
量化与部署
- 量化节省了什么、可能损失什么?
- TP 与 PP 有什么直观区别?
- 为什么三台机器不一定三倍快?
开源与治理
- 开放权重与完全开源有何区别?
- 商用前为什么必须读许可证?
- 训练数据不公开会带来什么限制?
评测与生产
- TTFT 与 Token/s 分别影响什么?
- 为什么要看 P95 / P99?
- 接口返回 200 为什么仍不够?
项目判断
- 业务需要微调、RAG 还是提示词?
- 扩容是拆分模型还是复制实例?
- 上线前缺少的证据是什么?
用一个问题检验全篇
- 选择一个部门真实场景,说明它需要哪些知识、怎样适配模型。
- 估算模型权重之外还需要哪些运行空间。
- 列出至少三个性能指标和三个上线风险。
- 说明所选模型开放了什么,以及商用前还需要核对什么。
延伸学习与资料核验
视频适合建立直觉,官方文档负责提供事实依据。观看任何实测内容时,都要记录模型版本、硬件、精度、输入输出长度和并发条件。
适合继续检索的视频主题
B 站 / 抖音关键词:KV Cache 显存计算、Prefill Decode、PagedAttention、GPTQ AWQ 量化、vLLM 多卡部署、大模型并发压测。
优秀讲解的共同结构值得学习:先提出一个反直觉问题,再用生活类比建立画面,随后展示机制图和计算,最后用实测纠正误区。本教程也按这套逻辑组织。
官方依据
ZAKER:大模型的“开源”,到底开了什么?
OSI Open Source AI Definition
量化准确率与性能权衡研究
DeepSeek 官方仓库与许可证
Qwen 官方仓库与模型说明
Llama 官方许可证