从教师模型到边缘设备:模型蒸馏的数据准备工作流
当目标是计算受限的边缘设备时,准备训练数据的逐步工作流。从定义硬件约束到验证端侧性能。
你手上有企业数据,也有一台目标设备:一部带 NPU 的手机、一台带神经引擎的笔记本,或者工厂车间里的一台边缘设备。你需要一个小模型,在这台设备上把一件具体的任务做好。
从企业数据到部署上线的边缘模型,中间有十二个步骤。大 多数指南会跳过步骤 4 到 8,也就是数据准备的那一段,而这正是大多数边缘 AI 项目表现不佳的原因。
下面是完整的工作流。
步骤 1:定义目标约束
在你动第一份文档之前,先用具体的数字把部署目标定下来。
硬件规格:
- 设备:Snapdragon 8 Gen 3(Hexagon NPU)、Apple A17 Pro(ANE)、Intel Core Ultra(NPU)、NVIDIA Jetson Orin,或其他特定的边缘硬件
- 留给模型的可用内存:2GB、4GB、8GB、16GB
- 算力预算:可用于推理的 TOPS(每秒万亿次运算)
模型大小预算:
- 0.5B 参数:Q4 下约 300MB,适合移动端 NPU
- 1B 参数:Q4 下约 600MB,适合内存不低于 6GB 的平板和手机
- 3B 参数:Q4 下约 1.8GB,适合笔记本和高端平板
- 8B 参数:Q4 下约 4.5GB,适合配有独立神经引擎的笔记本
生产参数:
- 上下文窗口:512、1024 或 2048 个 token(影响内存占用和延迟)
- 延迟预算:每次推理 20ms、50ms、100ms 或 200ms
- 输出格式:分类标签、JSON 对象、短文本、结构化抽取
- 吞吐量:设备必须承受的每秒查询数
先把这些写下来再往下走。后续的每一个决定都建立在它们之上。
步骤 2:选择教师模型
教师模型决定了你的质量上限,学生模型要学的那批合成训练数据由它生成。
学生模型小于 1B 时: 用 70B 以上的教师模型。教师和学生之间的质量差距很大(参数量相差 140 倍),所以需要尽可能强的教师模型,把知识迁移的效果拉满。
学生模型在 3B 到 8B 时: 30B 到 70B 的教师模型就够用。差距缩小之后,稍小一些的教师模型同样能产出有效的训练数据。
选教师模型时要考虑的几点:
- 条件允许的话,教师模型本身先在你的领域上微调过。一个通用 70B 模型生成的合成医疗数据,可用性比不上在临床文本上微调过的 70B 模型。
- 数据生成 阶段教师模型跑在云端 GPU 上,尺寸不受目标设备的限制。
- 如果对教师模型做领域微调不可行,就在合成生成时用 RAG 挂上你的企业文档。
步骤 3:生成合成训练数据
用教师模型生成领域相关的训练样本,同时给生成过程加上约束。
面向 1B 以下目标的生成参数:
- 最大输出长度:与学生模型的生产上下文窗口一致(例如 512 个 token)
- 温度:0.3 到 0.5(一致性优先于多样性)
- 推理深度:限制在 2 到 3 步的链条内
- 输出格式:每一条样本都与生产格式完全一致
面向 3B 到 8B 目标的生成参数:
- 最大输出长度:与学生模型的生产上下文窗口一致(例如 2048 个 token)
- 温度:0.5 到 0.7(中等多样性)
- 推理深度:3 到 5 步的链条
- 输出格式:与生产环境的要求保持一致
生成量要比你预计会用到的多 5 到 10 倍。对 1B 以下的目标,过滤(步骤 5 到 7)会 删掉 60% 到 80% 的生成样本。
步骤 4:摄取企业文档
合成数据生成需要领域知识作为依据,教师模型必须能引用到你的企业知识。
把 PDF、Word 文件、扫描件、数据库导出、对话日志这些原始企业文档,摄取成教师模型可以引用的结构化格式。
几个要点:
- 解析时保留文档结构(标题、表格、列表),而不只是抽取纯文本
- 建筑行业:工程量清单(BOQ)、技术图纸、规范文件
- 医疗行业:临床记录、出院小结、化验报告
- 法律行业:合同、诉状、备忘录
- 金融行业:财务报表、交易记录、监管申报文件
这一步必须在本地完成。企业文档里含有敏感数据,不能送去云端的解析服务。
步骤 5:清理和过滤
面向蒸馏的数据准备,和常规微调的数据准备差别最大的就是这一步。
长度过滤: 剔除落在目标上下文窗口 10% 到 90% 分位之外的样本。以 512 token 的生产上下文为例:丢掉短于 30 个 token 或长于 450 个 token 的样本。
复杂度评分: 用一个与学生模型体量相近的模型(拿得到学生模型本身更好)把每条样本跑一遍,测困惑度。丢掉 75% 分位以上的样本,它们超出了学生模型的学习能力。
领域相关性评分: 用嵌入相似度对照一组 50 到 100 条精选的黄金标准样本打分,余弦相似度低于 0.7 的丢掉。
去重: 用 MinHash,相似度阈值取 0.85,每个聚类里只保留质量最高的那一条。
格式校验: 每条样本都必须严格符合生产环境的输出格式。一条格式错误的 JSON 样本,就可能让 1B 以下的模型多出 3% 到 5% 的失败率。
预期结果: 10 万条生成样本经过过滤,1B 以下目标剩 2 万到 4 万条,3B 到 8B 目标剩 5 万到 7 万条。
步骤 6:领域专家标注
自动 过滤解决的是分布层面的问题。事实性错误、领域内的细节偏差,以及只有专业人士才察觉得到的质量问题,得靠人来抓。
医生、律师、工程师、分析师这样的领域专家,抽查过滤后的数据集,从几个角度给出质量标注:
- 放在这个领域里,内容是否事实正确?
- 详略程度是否匹配生产任务的需要?
- 这条回答放进生产环境能不能接受?
对 1B 以下的目标,从过滤后的集合里取至少 2000 条样本做 100% 的专家复核,并把这批经专家复核的样本用作验证集。
这一步需要一个领域专家能直接上手的工具,而不是 Python notebook 或命令行界面。
步骤 7:增强
过滤和专家复核之后,再对数据集做增强,把缺口补上。
针对性增强: 分析过滤后的数据集,找出样本不足的类别、边缘情况和失败模式,专门针对这些缺口再生成一批合成样本。
改写生成: 对每条经专家复核的样本,生成 2 到 3 个改写变体。这样能在不改变底层分布的前提下提高训练数据的多样性。
难度校准: 在学生模型的能力范围内生成不同难度的样本。简单样本(占训练数据的 80%)打好稳定的基线表现,困难样本(占 20%)把能力边界往外推。
步骤 8:导出
把最终数据集导出成微调框架需要的 JSONL 格式,并附上元数据:
- 目标模型的大小和架构
- 目标上下文窗口
- 目标量化等级
- 已应用的过滤阈值
- 专家复核的覆盖比例
有了这些元数据,后续迭代时才谈得上复现和排查。
步骤 9:微调学生模型
用云端 GPU 在准备好的数据集上训练学生模型。这里走的是标准微调流程:视模型大小和数据集规模,选 LoRA 或全参数微调。
1B 以下的模型:rank 取 16 到 32 的 LoRA 通常表现不错;模型本身小,全参数微调也做得起。
3B 到 8B 的模型:rank 取 32 到 64 的 LoRA 更实际,全参数微调要占用更多 GPU 显存和时间。
步骤 10:为目标硬件量化
把微调好的模型转换到目标精度:
- Q4(4 比特):体积最小、推理最快,精度上略有让步
- Q5(5 比特):居中的折中方案
- Q8(8 比特):量化格式中精度最高,体积也更大
高通设备用 Qualcomm AI Hub 做量化和编译优化;Apple 设备用 Core ML 工具链;通用场景用 ONNX Runtime 或 llama.cpp 的量化。
步骤 11:在目标硬件上验证
部署到真实的目标设备上,用真机测量,模拟器和云端仿真都不作数。要测的指标:
- 在留出测试集上的任务准确率
- 推理延迟(p50、p95、p99)
- 内存占用
- 电量影响(移动端部署)
- 输出格式的合规率
验收标准: 如果留出测试集上的准确率与教师模型相差在 5 个百分点以内,且延迟落在预算之内,就可以继续往下走。达不到就回到步骤 5。
步骤 12:迭代
端侧验证会暴露出云端基准测试看不到的失败模式。表现低于阈值时:
- 分析端侧测试中的失败案例
- 给失败分类:是数据分布问题?复杂度问题?还是缺少边缘情况?
- 回到步骤 5(换一套过滤方式)或步骤 7(针对失败模式做增强)
- 重新训练、重新量化、重新验证
3B 到 8B 的目标一般需要 2 到 3 轮迭代,1B 以下的目标需要 3 到 5 轮。
Ertas 的定位
Ertas Data Suite 把步骤 4 到 8 完整地放在本地完成。Ingest 模块解析企业文档,Clean 提供面向蒸馏的过滤,Label 让领域专家不写 Python 也能参与复核,Augment 生成有针对性的合成数据,Export 产出带完整元数据和审计轨迹的 JSONL。
步骤 1 到 3 以及 9 到 12 在 Ertas 之 外进行:目标定义、教师模型生成、微调、量化和部署,都走你现有的 ML 基础设施。Ertas 提供的是从原始企业数据到训练流水线之间的那一层数据准备能力。
预约探索通话,结合你具体的硬件目标和数据类型走一遍这套工作流。
Turn unstructured data into AI-ready datasets — without it leaving the building.
On-premise data preparation with full audit trail. No data egress. No fragmented toolchains. EU AI Act Article 30 compliance built in.
Keep reading
为什么你的微调数据集不适用于端侧 AI——以及如何修复
大多数微调数据集是为大型云模型构建的。当蒸馏到 0.5B-1B 模型用于移动 NPU 时,数据分布会崩溃。以下是原因以及如何构建真正适用于端侧部署的数据集。
用于小模型蒸馏的合成数据
如何为低于 1B 参数的端侧模型生成和过滤合成训练数据:教师模型选择、复杂度评分、去重和格式规则。
当你的模型只有 10 亿参数时,数据分布更加重要
700 亿参数的模型可以靠蛮力处理嘈杂数据。5 亿参数的模型则不行。以下是小语言模型对数据分布问题指数级更敏感的原因,以及如何通过针对性过滤和质量评分来解决。