模型蒸馏通过将大参数量模型(教师模型)的知识迁移到小参数量模型(学生模型),在有效保持模型性能的同时显著降低参数量,从而解决大模型在生产环境中推理成本高、响应速度慢的问题。PAI Model Gallery 基于阿里云自研模型蒸馏框架PAI-EasyDistill提供一键式模型蒸馏功能,无需编码即可完成模型蒸馏全流程。
应用场景
适合使用模型蒸馏的场景:
端侧/边缘部署:将大模型压缩为轻量模型,适配手机、IoT 设备等资源受限环境。
成本优化:当线上业务使用的模型推理成本过高时,可蒸馏出一个更小的模型来降低成本。
推理加速:对于延迟敏感的在线应用,通过蒸馏在保持高精度的同时减少延迟与 GPU 资源消耗,提升服务吞吐量。
领域知识继承:将一个在特定领域(如医疗、法律)表现优异的大模型知识,迁移到一个更具性价比的小模型上,用于该领域的特定任务。
可能不适合或需谨慎评估的场景:
追求100%性能保真:任何性能下降都不可接受的场景。蒸馏始终伴随一定的性能损失。
任务过于简单:对于分类、文本匹配等简单任务,直接训练一个小模型可能比蒸馏更具成本效益。
缺乏高质量种子数据:蒸馏的效果很大程度上依赖于种子数据的质量。如果种子数据与实际业务场景偏差过大,效果可能不佳。
工作原理
PAI Model Gallery当前提供的模型蒸馏功能采用黑盒蒸馏方式,其本质是生成式数据增强,即利用教师模型生成高质量的标注数据,然后使用这些数据对学生模型进行监督微调(Supervised Fine-Tuning, SFT)。
工作流程如下:
蒸馏数据构建:
准备基础数据:使用公共数据集或自定义数据集。
(可选)数据合成:基于PAI-EasyDistill框架提供数据合成/增强能力,可根据教师模型类型扩充或优化数据。对非推理模型可进行指令增广、指令优化,对推理模型可进行思维链缩写、思维链扩写。
教师模型推理:教师模型对数据进行推理生成学生模型训练所需的蒸馏数据。
学生模型训练:使用前面生成的蒸馏数据集,通过监督微调(Supervised Fine-Tuning, SFT)的方式来训练学生模型。
快速开始
本节使用PAI提供的公共数据集和默认配置,快速完成一个模型蒸馏任务。
登录PAI控制台,在左侧导航栏选择。
在模型广场页面,使用筛选功能找到支持蒸馏的模型,如
Qwen3-32B。在支持操作筛选项中选择蒸馏,系统展示所有支持蒸馏的教师模型。

单击模型卡片进入模型详情页,在页面右上角单击蒸馏按钮,进入任务创建页面。如下配置关键参数,其他保持默认。
基础配置:指定一个有权限访问的OSS路径作为模型输出路径,如
oss://mybucket.oss-cn-hangzhou-internal.aliyuncs.com/model-distillation/model。说明请确保为每个蒸馏任务创建独立的输出目录,避免模型文件被覆盖。OSS Bucket需与PAI服务在同一地域。
蒸馏数据构建:
数据集:选择公共数据集,并从下拉列表中选择
Chinese-medical-dialogue-data。蒸馏数据集输出路径:指定一个有权限访问的OSS路径作为,如
oss://mybucket.oss-cn-hangzhou-internal.aliyuncs.com/model-distillation/dist-data。计算资源配置:资源来源选择公共资源,任务资源保持默认推荐的资源规格。
学生模型训练:
学生模型配置:选择公共模型,并在下拉列表中选择一个较小的模型,如
Qwen3-4B。训练方式:保持默认的LoRA微调。
计算资源配置:资源来源选择公共资源,任务资源保持默认推荐的资源规格。
单击蒸馏,然后在弹出的计费提醒中单击确定,页面将自动跳转至任务详情的基础配置页面,可在此跟踪任务状态。
任务执行时间参考:小数据集(100-1000条)约20-40分钟。
使用限制
模型限制:
教师模型必须从 Model Gallery 中选择支持蒸馏的模型。具体列表以控制台为准。
学生模型支持Model Gallery公共模型和自定义模型(自定义模型当前仅支持在Model Gallery中微调后的LLM,并请确保该模型参数量小于教师模型,保证蒸馏任务有意义)。
蒸馏方式: 当前仅支持黑盒蒸馏(基于SFT)。
数据集: 支持公共蒸馏数据集和自定义数据集。数据必须为JSON格式,必须包含
instruction字段(问题列),无需包含output字段(输出列)。[ { "instruction": "中国的首都是哪里?" }, { "instruction": "请解释一下什么是人工智能。" } ]学生模型训练方式:仅支持SFT(监督微调),包括LoRA、QLoRA、全参微调。
配置详解
蒸馏数据构建
数据集配置
数据合成(可选功能)可对原始数据集进行变换,以增强数据的多样性和质量。根据教师模型是否为推理模型选择数据增强策略。
指令数据合成(适用于通用指令模型):
指令增广:对原始指令进行扩展和改写,生成风格更多样的指令。
输入示例: {"instruction": "给我做一份两天的杭州旅游攻略。"} 输出示例: {"instruction": "给我做一份三天的北京旅游攻略。"} {"instruction": "我想去上海玩,给我推荐一下旅游的行程。"}指令优化:优化指令的表述方式,使其更清晰、更易于模型理解。
输入示例: {"instruction": "给我做一份两天的杭州旅游攻略。"} 输出示例: {"instruction": "请为我制定一份为期两天的杭州旅游攻略,内容应包括行程安排、美食推荐、住宿建议、最佳旅游时间等。"}
思维链数据合成(适用于推理模型):
思维链扩写:为原始问答对补充详细的推理步骤(Chain of Thought),增强学生模型的推理能力。
输入示例: {"instruction": "小明有3个苹果,吃了1个,还剩几个苹果", "output": "<think>短思维链</think> <output>小明还剩2个苹果</output>"} 输出示例: {"instruction": "小明有3个苹果,吃了1个,还剩几个苹果", "output": "<think>长思维链</think> <output>小明还剩2个苹果</output>"}思维链缩写:简化冗长的思维链过程,提升推理效率。
输入示例: {"instruction": "小明有3个苹果,吃了1个,还剩几个苹果", "output": "<think>长思维链</think> <output>小明还剩2个苹果</output>"} 输出示例: {"instruction": "小明有3个苹果,吃了1个,还剩几个苹果", "output": "<think>短思维链</think> <output>小明还剩2个苹果</output>"}
首次进行蒸馏时,建议不开启数据合成,以建立基线。在熟悉流程后,可针对性地尝试开启不同合成选项,并评估其对最终效果的影响。
超参数配置
此处的超参数用于控制教师模型在“数据构建”阶段的生成行为。
参数 | 说明 | 调优建议 |
推理参数(应用于教师模型推理) | ||
| 控制生成文本的随机性。值域[0, 2],默认0.8。 | • 调高(如 > 1.0): 输出更多样、更有创意,适用于需要丰富回答风格的场景。 |
| 输入给教师模型的最大Token数(包含 | • 请确保此值大于数据集中最长输入的长度,否则会导致信息丢失。 |
| 教师模型生成新文本(即 | • 此值应大于您期望教师模型生成答案的平均长度,否则答案会被截断。 |
功能控制参数(仅开启指令增广时显示) | ||
| 指令增广时每条数据生成的样本数量,默认值0。 | • 调高(如 > 5):生成更多样化的指令,但会显著增加数据量和计算成本。 |
| 指令增广时使用的上下文样本数量,默认值3。 | • 调高(如 > 5):生成更符合上下文语义的指令,但可能降低多样性并增加计算开销。 |
蒸馏数据确认
选择数据构建完成后,系统如何处理生成的蒸馏数据。
自动确认(推荐):数据构建完成后,系统自动校验数据并通过,直接启动后续的学生模型训练。适用于使用公共数据集或对数据质量有信心的场景。
手动确认:数据构建完成后,需要人工审核数据质量。适用于对数据质量要求极高或首次使用自定义数据集的场景。操作方式如下:
蒸馏数据构建完成后,在蒸馏任务列表中,任务状态会变为等待确认蒸馏数据。
单击操作列的确认蒸馏数据按钮,系统弹出确认对话框。
在对话框中单击点击查看查看蒸馏数据集的详细内容。
确认数据质量符合预期后,单击确认继续执行学生模型训练。
如果数据不符合预期,可以单击取消,任务将停止在当前阶段。
学生模型训练
训练方式
选择对学生模型进行监督微调(SFT)的具体方法。
LoRA(推荐):参数高效微调方法,在保持较好效果的同时,显著降低训练所需的显存。
QLoRA:LoRA的量化版本,进一步降低显存占用,适合在资源更受限的环境下训练。
全参数微调:更新模型的所有参数,理论上效果最好,但需要巨大的计算资源和时间,成本极高。
验证集配置
选择在训练过程中用于评估模型性能的验证数据集。
不配置:训练过程中不进行验证,适用于快速实验或数据量较小的场景。
蒸馏数据自动拆分(推荐):系统自动从生成的蒸馏数据集中按比例划分出训练集和验证集,默认5%验证集。
添加验证数据集:指定一个独立的OSS数据集作为验证集,适用于有标准验证集的场景。
超参数配置
此处的超参数用于控制学生模型的SFT训练过程。
参数 | 说明 | 调优建议 |
| 学习率,控制模型参数更新的步长。默认5e-5。 | • 如果训练损失(Loss)下降缓慢,可尝试适当调大学习率。 |
| 训练轮数,即整个数据集被重复训练的次数。默认1。 | • 对于大数据集,1-3个epoch通常足够。 |
| 每个GPU设备单次训练处理的样本数。默认1。 | • 在显存允许的情况下,适当增大此值可以加速训练并可能稳定训练过程。 |
| 输入给学生模型的最大序列长度(Token数)。默认128。 | • 此值应根据您的数据特征和应用场景设定。较长的文本需要更大的 |
生产实践与高级调优
成本优化策略
资源来源选择:
测试/小任务:使用公共资源,按需付费,灵活方便。
生产/高优任务:使用资源配额,确保资源稳定性和成本可控。
成本敏感/可容错任务:尝试竞价资源,以更低价格获取算力,但需接受任务可能被中断的风险。
从小数据集开始:在进行大规模蒸馏前,务必使用一小部分数据(如100-1000条)完整运行一次流程,以验证配置的正确性,避免因配置错误导致大规模计算资源的浪费。
优化数据集:使用更小但更高质量的种子数据集,可以减少教师模型的推理开销和学生模型的训练时间。
选择QLoRA训练:QLoRA通过在量化模型上训练,显著降低了对显存的需求,使您可以在更低规格(也更便宜)的GPU上进行训练。
合理设置运行时长:为任务设置一个合理的最大运行时长,防止因意外情况导致任务长时间运行,产生不必要的费用。
效果调优指南
数据集质量是关键:蒸馏的上限由教师模型决定,但下限由蒸馏数据集的质量决定。确保用于生成蒸馏数据的原始数据集覆盖业务场景、指令清晰、内容多样。
超参数调优:
如果学生模型训练的loss不下降或发散,应优先降低学习率(
learning_rate)。如果遇到显存不足(OOM)错误,应优先减小批次大小(
per_device_train_batch_size)或序列长度(seq_length)。
监控GPU利用率:在任务监控中关注GPU利用率。如果利用率过低,说明GPU资源未被充分利用,可尝试增大
per_device_train_batch_size以提高效率。
效果评估
蒸馏完成后,必须对学生模型的效果进行评估。
部署模型:在蒸馏任务详情页,单击右上角的部署按钮,将蒸馏产出的学生模型部署为在线推理服务。
对比评测:使用PAI的模型评测功能,在同一份评测集上对比教师模型和学生模型的性能指标(如准确率、BLEU等),量化性能损失。
生产验证:在正式上线前,进行小流量灰度测试,对比蒸馏前后模型在真实业务场景中的推理速度、资源占用和业务效果。
常见问题
Q: 如何选择合适的教师模型和学生模型?
教师模型:选择在您的业务场景中已经验证过、表现优异的大参数量模型。通常,参数量越大,知识越丰富,蒸馏效果的上限也越高。
学生模型:强烈建议选择与教师模型同系列、但参数量更小的模型。例如,从
Qwen-30B蒸馏到Qwen-8B。这能确保模型架构的兼容性,最大化知识迁移的效率。
Q: 蒸馏任务大概需要多长时间?
耗时主要取决于数据集大小、模型规模、训练方式和计算资源。小规模数据集(数千条)和中等模型(7B-14B)的蒸馏任务通常在数十分钟到几小时内完成。
Q: 任务因超时中断,可以恢复吗?
不可以。如果任务因达到设置的最大运行时长而中断,则任务失败且不可恢复。您需要分析任务日志,判断是资源不足导致运行缓慢还是设置时间过短,然后增加最大运行时长或使用更高规格的资源后,重新提交任务。
Q: 蒸馏任务失败,日志显示 CUDA out of memory?
这是典型的GPU显存不足错误。请按以下步骤排查解决:
减小批次大小:在学生模型训练配置中,找到超参数配置,将
per_device_train_batch_size的值减半(例如从2改为1)后重试。切换训练方式:如果减小批次大小无效,返回配置页面,将训练方式 从
LoRA或全参微调切换到QLoRA。QLoRA能极大降低显存占用。升级GPU规格:如果以上方法仍无法解决,说明模型和数据规模确实需要更高规格的硬件。请在计算资源配置中选择一款显存更大的GPU机型。