大模型蒸馏技术详解:从8B到4B模型的高效优化指南!
本文详细介绍了大模型蒸馏技术,通过将8B教师模型的知识转移到4B学生模型,实现模型优化。文章以WikiText-103-v1数据集为例,展示了完整工作流程:数据集准备、教师模型微调、深度剪枝和宽度剪枝两种剪枝方法,以及知识蒸馏过程。结果表明,剪枝和蒸馏技术能在保持模型性能的同时,显著减少模型大小和计算复杂度,为资源受限环境中的AI应用提供了高效解决方案。
简介
本文详细介绍了大模型蒸馏技术,通过将8B教师模型的知识转移到4B学生模型,实现模型优化。文章以WikiText-103-v1数据集为例,展示了完整工作流程:数据集准备、教师模型微调、深度剪枝和宽度剪枝两种剪枝方法,以及知识蒸馏过程。结果表明,剪枝和蒸馏技术能在保持模型性能的同时,显著减少模型大小和计算复杂度,为资源受限环境中的AI应用提供了高效解决方案。
模型蒸馏(Model Distillation)是一种将大型、复杂模型(通常称为“教师模型”)的知识转移到小型、简单模型(通常称为“学生模型”)的技术。其核心思想是通过模仿教师模型的输出,使学生模型在保持较高性能的同时,显著减少模型的大小和计算复杂度。
模型剪枝和知识蒸馏是功能强大且经济高效的策略:
- 剪枝:丢弃图层 (深度剪枝) 或丢弃神经元、注意力头和嵌入通道 (宽度剪枝)。
- 知识蒸馏: 将知识从大型教师模型转移到较小的学生模型,目标是创建更高效、更小、运行速度更快且资源密集型更低的模型。
本文重点介绍如何创建一个简单的工作流,用于准备数据集,针对 WikiText-103-v1数据集对教师进行微调,然后对模型进行剪枝和蒸馏以创建4B模型。WikiText-103-v1数据集包含从维基百科上一系列经过验证的“良好”和“精选”文章中提取的逾100M个令牌。它已在Hugging Face上公开发布。
在本文中,您将定义涉及以下高级步骤的剪枝和蒸馏工作流 (图 1)。准备工作:
- 下载数据集并转换为 JSONL。
- 通过对数据集进行标记化预处理。
- 在数据集上微调教师模型。
- 深度剪枝微调的教师模型。深度剪枝模型是学生网络的起点。
- Width-prune 经过微调的教师模型。宽度剪枝模型是学生网络的起点。
- 通过将 8B 模型用作教师,将 4B 剪枝模型用作学生,将知识从教师提炼给学生。
准备显卡
假设不限算力,以及一个支持 Docker 的环境。
安装 NeMo 框架,下载 Meta-Llama-3.1-8B Instruct 模型,并获取 Hugging Face 访问令牌的访问权限。
下载数据集
下载 WikiText-103-v1 数据集,并使用以下代码或运行 introduction notebook ,将训练、测试和验证拆分转换为 JSONL 文件;
准备数据集
剪枝和蒸馏脚本需要通过使用 meta-llama/Meta-Llama-3.1-8B 标记器模型对数据文件进行标记化来预处理数据文件,从而将数据转换为内存映射格式。这可以通过 NeMo 框架中的预处理脚本 preprocess_data_for_megatron.py 完成。
在 train split 中运行以下脚本,以准备用于剪枝和蒸馏的数据集:
在数据集上微调教师模型
使用准备好的数据集,对未剪枝的教师模型执行微调过程。本节展示了脚本的用法,而非性能,因此运行微调设置时,将 GLOBAL_BATCH_SIZE 设置为 128,将 STEPS 设置为 30,以确保缩短训练时间。
运行 megatron_gpt_pretraining.py 脚本,以修正用于训练模型的原始数据集的分布偏移。在不修正分布偏移的情况下,教师会在提取数据集时提供次优指导。
剪枝经过微调的教师模型以创建学生模型
您可以使用两种方法来剪枝经过微调的教师模型:depth-pruning 和 width-pruning。
对经过微调的教师模型进行深度剪枝,以创建一个学生模型
在第一种方法中,您可以对模型进行深度剪枝。要从 8B 到 4B 模型,请剪枝最后 16 层 (第 16 至 31 层)。运行megatron_gpt_drop_layers.py脚本以深度微调经过调优的教师模型 :
Width-prune 经过微调的教师模型,以创建一个学生模型
在第二种方法中,您可以调整模型的宽度。要从 8B 模型升级到 4B 模型,请通过减少 MLP 中间维度和隐藏大小以及重新训练注意力头数和层数来剪枝模型。
运行 megatron_gpt_prune.py 脚本,以调整经过微调的教师模型的宽度:
蒸馏知识从教师转化为学生模型
蒸馏过程将微调模型 (8B) 用作教师模型,将剪枝模型用作学生模型 (4B),将蒸馏用作较小的 4B 模型。目前 NeMo 中只提供 logit 损失函数。
蒸馏知识,从经过微调的教师到宽度剪枝的学生模型
运行 megatron_gpt_distillation.py 脚本 ,将蒸馏知识从教师传递到宽度剪枝的学生模型。在运行脚本之前,更改学生模型 (STUDENT) 和蒸馏模型的保存目录 (FINAL_MODEL_PATH)。
运行经宽度剪枝的提炼学生 notebook 会生成提炼模型 width_pruned_distilled_4b_model.nemo。
显示验证损失
运行以下代码命令或执行 结果 notebook 以可视化验证损失。在运行代码示例之前,请修改检查点的路径:
Depth-pruned 验证损失超过 30 步
超过30步的宽度剪枝验证损失****
深度剪枝验证损失超过880步(使用GBS=2048时)
宽度剪枝验证损失超过880步(使用GBS=2048时)
剪枝和蒸馏代表了语言模型优化领域的重大进步。能够在资源受限的环境中创建更小、更高效的模型 (如 Llama-3.1-Minitron-4B),同时保持性能且不牺牲大量准确性,这是 AI 行业的游戏规则变革。
Mistral-NeMo-Minitron-8B 模型 是使用这种方法开发的,在各种基准测试中表现优于 Llama-3.1-8B 模型。
AI大模型从0到精通全套学习大礼包
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
只要你是真心想学AI大模型,我这份资料就可以无偿共享给你学习。大模型行业确实也需要更多的有志之士加入进来,我也真心希望帮助大家学好这门技术,如果日后有什么学习上的问题,欢迎找我交流,有技术上面的问题,我是很愿意去帮助大家的!
如果你也想通过学大模型技术去帮助就业和转行,可以扫描下方链接👇👇
大模型重磅福利:入门进阶全套104G学习资源包免费分享!
01.从入门到精通的全套视频教程
包含提示词工程、RAG、Agent等技术点
02.AI大模型学习路线图(还有视频解说)
全过程AI大模型学习路线
03.学习电子书籍和技术文档
市面上的大模型书籍确实太多了,这些是我精选出来的
04.大模型面试题目详解
05.这些资料真的有用吗?
这份资料由我和鲁为民博士共同整理,鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位,在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利,同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。
所有的视频由智泊AI老师录制,且资料与智泊AI共享,相互补充。这份学习大礼包应该算是现在最全面的大模型学习资料了。
资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。
智泊AI始终秉持着“让每个人平等享受到优质教育资源”的育人理念,通过动态追踪大模型开发、数据标注伦理等前沿技术趋势,构建起"前沿课程+智能实训+精准就业"的高效培养体系。
课堂上不光教理论,还带着学员做了十多个真实项目。学员要亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事!
如果说你是以下人群中的其中一类,都可以来智泊AI学习人工智能,找到高薪工作,一次小小的“投资”换来的是终身受益!
应届毕业生:无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。
零基础转型:非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界。
业务赋能 突破瓶颈:传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
更多推荐
所有评论(0)