DistilQwen2:通义千问大模型的知识蒸馏实践

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: DistilQwen2 是基于 Qwen2大模型,通过知识蒸馏进行指令遵循效果增强的、参数较小的语言模型。本文将介绍DistilQwen2 的技术原理、效果评测,以及DistilQwen2 在阿里云人工智能平台 PAI 上的使用方法,和在各开源社区的下载使用教程。

作者:岳元浩(顾城)、汪诚愚(熊兮)、严俊冰(玖烛)、黄俊(临在)

1.背景

在人工智能快速发展的今天,大语言模型已经成为了人工智能的研究热点。其中,通义千问(Qwen)大模型系列凭借其强大的语言理解和生成能力,吸引了开源社区越来越多的关注。随着这些模型的应用场景不断扩大,如何提高它们的运算效率,降低部署成本,成为了一项重要的课题。知识蒸馏作为一种有效的模型压缩技术,通过将大型模型的知识转移到较小的模型中,实现了在确保性能的前提下,显著降低了所需的计算资源和推理时长,从而使得模型在实际应用中变得更加灵活和高效。

为应对这一难题,我们提出了 DistilQwen2,DistilQwen2 是基于 Qwen2大模型,通过知识蒸馏进行指令遵循效果增强的、参数较小的语言模型。通过对 Qwen 大模型的深度剖析,指令数据的增强和优化,以及多种知识蒸馏算法的探索,我们将大语言模型的复杂知识以更简洁的形式传递给轻量级模型,实现了指令遵循效果的提升。此外,随着应用需求的多样化,轻量级模型在移动设备、边缘计算等资源受限的环境中显得尤为重要。DistilQwen2 的研究旨在为开发更智能、更高效的自然语言处理应用提供技术支持,赋能更多开发者和企业通过技术创新实现商业价值。为了便于开发者和企业在实际应用中使用 DistilQwen2 蒸馏模型,我们在 HuggingFace 和 ModelScope 开源社区中将这一模型的 Checkpoint 进行开源。本文将介绍DistilQwen2 的技术原理、效果评测,以及DistilQwen2 在阿里云人工智能平台 PAI 上的使用方法,和在各开源社区的下载使用教程。

2. 大模型知识蒸馏技术

本节中,我们主要描述 DistilQwen2 模型训练中使用的全流程知识蒸馏技术。其中,DistilQwen2 模型蒸馏的算法框架如下图所示。
image.png

原始数据搜集

为了进行大模型蒸馏训练,我们搜集了 Magpie、Openhermes、Mammoth 2 等知名开源数据集,以及私有的合成数据集初始化来我们的蒸馏过程。指令数据以中英文为主,并且进行了难度打分和任务相关的重采样,实现指令数据的多样性。
在难度打分方面,我们使用 LLM-as-a-Judge 范式使用教师模型,从模型回答的准确性、相关性、帮助性、详细程度给出评分。我们使用学生模型的分数减去教师模型回答分数,获得分数差,我们命名为模型拟合难度分数(MFD Score)。模型拟合难度分数越高,该指令对于蒸馏训练的价值越大。因此,拟合难度过低的指令数据可以在训练集中删除。在我们的实践中,英文教师模型采用了 GPT4,中文教师模型采用了 Qwen-max。参考的打分模板如下所示:
image.png

在数据多样性方面,我们考虑了三种多样性,分别为任务多样性、长度多样性和语种多样性:

  • 任务多样性:我们参考 WizardLM 中对 LLM 的能力评估维度,定义了33种任务类型,收集标注了一个3万条的任务分类数据集,基于 Deberta v3 训练了一个任务分类器,该任务分类器与 ChatGPT 在测试集上分类结果相同的概率为86%,人类评估的任务分类准确率为93%。我们使用专有的任务分类器给数据打上显式的任务类型标签。
    image.png

  • 语种多样性:很多场景我们需要训练模型在多个语言上的能力,例如中文和英文,但是我们缺少分布足够广泛中文数据,我们使用 Qwen-max 做数据语种扩展,例如我们使用 Prompt 让 Qwen-max 生成和相同任务类型但内容不同,语言不同,包含更多中国常识的数据,直到两种语言数据量大致相等。

指令数据优化

在指令数据优化上,我们首先使用 Prompt 模板让教师模型扩展数据。在实际应用中,比如扩展中文数据、生成多轮对话数据,需要修改相应的 Prompt 要求。参考扩展模板如下:
image.png

对于多轮对话数据的构造,我们要求教师模型严格基于上一轮包含的回答信息进行追问。实验发现这一类数据格式还会有利于 IFEval 评测能力的提升。
蒸馏教师大模型需要获得教师模型的回答。教师模型合成回答的格式、风格、长度影响学生模型学到的风格,以及学生模型收敛泛化速度。在获得教师模型的回答时,我们采用了如下三种策略:

  • 任务格式优化:在标注教师模型的回答时,我们根据任务特点,优化不同任务教师模型回答风格。例如,推理任务要分步推理,代码类任务要有详细注释和解释,写作类任务要详细等。

  • 教师模型标注回复精简:我们在使用教师模型标注数据集回答时,会要求教师模型标注的回答要 “精确但是完整”,这样风格的回答可以让小模型学到风格更精简的回答,减少输出难度和幻觉比例,同时保留了回答的完整性。

  • 模型自我蒸馏:我们额外使用了自蒸馏方法。由于这一步骤需要模型改写能力和学生模型能力差异较小,我们额外使用 Qwen2-7B-Instruct 改写教师模型标注的回答,缩短教师模型和学生模型输出的分布差异,以此能有效减少分布差异带来的灾难性遗忘问题。此外,必须注意的是,数据集中的问答对不能有一些固定的模版文本,不能让模型学到一些固定的规律模板文本。
    当优化上述指令数据后,我们进一步使用大模型进行质量的校验,以排除数据质量较低的指令数据,保证蒸馏数据源的精度。

模型蒸馏训练

获得高质量指令数据后,我们采用两种方式训练学生模型。第一种方式即 SFT(Supervised Fine-Tuning),即直接微调学生模型的参数。然而,对于一些较难的指令任务,直接进行SFT训练很难获得效果比较好的学生模型,我们进一步使用 DPO(Direct Preference Optimization)进行更细粒度的继续微调。

image.png

3.效果评测

在本节中,我们从多个角度评测 DistilQwen2 蒸馏小模型的实际效果,验证大模型知识蒸馏技术的有效性。

指令遵循能力评测

我们在多个权威指令遵循评测基准上测试了 DistilQwen2 蒸馏小模型的能力。其中,AlpacaEval 2.0 是权威的指令遵循评测基准,使用 GPT4 作为裁判员评估回复生成质量。特别地,AlpacaEval 2.0 引入了长度控制的胜率(Length-controlled Win Rates),避免 GPT4 偏向于更长的回复,从而减小评估偏差。MT-Bench 是另一个评测基准,它包含了来自8个类别的80个任务,同样使用 GPT4 作为评判标准,具有两种不同模式:多轮对话和单轮对话。IFEval专注于使用“可验证的指令”进行模型效果的评估,从而使结果更加客观,例如“写一篇超过400个单词的短文”、“模型输出必须严格符合 JSON 格式”,根据使用的 Prompt 不同,包括instruction-loose和strict-prompt两种评估模式。DistilQwen2 在1.5B和7B两个参数量级的模型和原始 Qwen2 模型的效果对比如下表所示,可以看出本文描述的知识大模型蒸馏算法能进一步提升现有大语言模型的指令遵循能力,在多个评测基准上取得明显的、一致性的效果提升。
image.png

为了横向比较同期发布的不同参数规模的模型效果,下表展示了这些模型在 AlpacaEval 2.0 的评测结果,从低到高进行排序。特别地,由于 Qwen2 系列模型不包括 4B 和 14B 规模的模型,我们将 Qwen1.5 系列模型纳入排序。对于英文模型,我们也横向对比 Llama3 系列模型。模型效果排序如下所示。可以看出,DistilQwen2 系列模型具有很高的性价比,在指令遵循能力方面,甚至超过了参数量接近或大于其参数量两倍的模型。例如 DistilQwen2-1.5B-Instruct 和 DistilQwen2-7B-Instruct 效果分别明显超越了参数量为其两倍或以上的 Qwen1.5-4B-Chat 和 Qwen1.5-14B-Chat,并且这些提升在小模型上更加明显。DistilQwen2-7B-Instruct 在指令遵循能力上也大幅超越 Llama3 系列 8B 参数模型,包括 Llama3-8B-Instruct 和 Llama3.1-8B-Instruct。
image.png

模型通用能力评测

为了评测 DistilQwen2 蒸馏小模型的通用能力在蒸馏过程中是否存在灾难性遗忘,我们进一步评测了模型的通用能力。其中,MMLU、CEval、CMMLU 是权威的中英文模型知识评测数据集,为选择题格式;GSM8K、HumanEval、MBPP 评测模型推理推理能力,分别评测模型解答数学问题和编程问题的能力。DistilQwen2 系列模型和原始 QWen2 模型的评测效果对比如下所示。从实验结果可以看出,DistilQwen2 蒸馏小模型在所有评测任务中取得了与 QWen2 模型相似甚至更高的效果,说明这一模型在最大程度上提升了指令遵循的能力,同时在 NLP 基础任务上保持了较好的性能。
image.png

模型输出案例

以下给出数个不同模型输出比较,对于同一指令,我们对比了 DistilQwen2-7B-Instruct 和 GPT-4o、Qwen2-7B-Instruct 回复结果,特别是知识性和逻辑推理类问题。从输出结果可以看出,DistilQwen2-7B-Instruct 的输出具有良好的事实正确性和逻辑推理能力,对于某些问题,其输出比原始的 Qwen2-7B-Instruct 模型更优。
image.png

image.png

image.png

4.模型下载和使用

DistilQwen2 在阿里云人工智能平台 PAI 上的实践

以下 HuggingFace transformers 库为例,简要介绍如何在 PAI-DSW 上使用 DistilQwen2 模型。首先需要保证 PAI-DSW 镜像内 transformers 版本大于等于4.37.0,否则会在加载模型时报错:

KeyError: 'qwen2'

以 DistilQwen2-1.5B-Instruct 为例,我们可以使用如下代码调用模型:

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "alibaba-pai/DistilQwen2-1.5B-Instruct"

model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

prompt = "请给我简单介绍一下杭州西湖。"
messages = [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)

generated_ids = model.generate(
    **model_inputs,
    max_new_tokens=512
)
generated_ids = [
    output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]

response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(response)

DistilQwen2 在开源社区的下载

我们在 HuggingFace 和 ModelScope 上开源了我们蒸馏后的模型,分别为 alibaba-pai/DistilQwen2-7B-Instruct 和 alibaba-pai/DistilQwen2-1.5B-Instruct。以 HuggingFace 为例,用户可以使用如下代码下载这两个模型:

from huggingface_hub import snapshot_download

model_name = "alibaba-pai/DistilQwen2-1.5B-Instruct"
snapshot_download(repo_id=model_name, cache_dir="./DistilQwen2-1.5B/")

model_name = "alibaba-pai/DistilQwen2-7B-Instruct"
snapshot_download(repo_id=model_name, cache_dir="./DistilQwen2-7B/")

此外,我们在先前的工作中开源了用于指令增强和扩写的专用模型,用户可以参考这些模型的使用方式进行数据层面的大模型知识蒸馏:
image.png

5. 小结与未来工作

随着人工智能领域的不断进步,特别是大语言模型的迅猛发展,如何优化这些模型的运算效率和降低其部署成本正成为研究的前沿课题。DistilQwen2 作为基于 Qwen2 大模型的轻量级语言模型,通过知识蒸馏技术,不仅成功地实现了性能与资源消耗的有效平衡,还显著提升了指令遵循效果。这一创新为在移动设备和边缘计算等资源有限的环境中应用大语言模型奠定了基础,使得AI技术更加灵活且易于推广。在未来的工作中,我们计划进一步完善 DistilQwen2 的功能,探索更多适用于不同应用场景的知识蒸馏算法。同时,针对不断变化的市场需求,我们将集中精力于优化模型的微调策略,以提升其在特定任务中的表现。此外,我们将持续更新 DistilQwen2 在阿里云人工智能平台 PAI 上的最佳实践案例,并将继续加强与开源社区的合作,通过提供更多的工具和资源,促进开发者和企业在自然语言处理应用上的创新和实践。

参考文献

  1. Yuanhao Yue, Chengyu Wang, Jun Huang, Peng Wang. Distilling Instruction-following Abilities of Large Language Models with Task-aware Curriculum Planning. EMNLP 2024
  2. Cheng-Yu Hsieh, Chun-Liang Li, Chih-Kuan Yeh, Hootan Nakhost, Yasuhisa Fujii, Alex Ratner, Ranjay Krishna, Chen-Yu Lee, Tomas Pfister. Distilling Step-by-Step! Outperforming Larger Language Models with Less Training Data and Smaller Model Sizes. ACL 2023
  3. Yixing Li, Yuxian Gu, Li Dong, Dequan Wang, Yu Cheng, Furu Wei. Direct Preference Knowledge Distillation for Large Language Models. arXiv

    开源地址

alibaba-pai/DistilQwen2-7B-Instruct:

alibaba-pai/DistilQwen2-1.5B-Instruct:

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
1月前
|
存储 人工智能 运维
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
194 48
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
|
1月前
|
编解码 Cloud Native 算法
通义万相:视觉生成大模型再进化
通义万相是阿里云推出的视觉生成大模型,涵盖图像和视频生成。其2.0版本在文生图和文生视频方面进行了重大升级,采用Diffusion Transformer架构,提升了模型的灵活性和可控性。通过高质量美学标准和多语言支持,大幅增强了画面表现力。此外,视频生成方面引入高压缩比VAE、1080P长视频生成及多样化艺术风格支持,实现了更丰富的创意表达。未来,通义万相将继续探索视觉领域的规模化和泛化,打造更加通用的视觉生成大模型。
|
1月前
|
人工智能 自然语言处理 API
用AI Agent做一个法律咨询助手,罗老看了都直呼内行 feat.通义千问大模型&阿里云百炼平台
本视频介绍如何使用通义千问大模型和阿里云百炼平台创建一个法律咨询助手AI Agent。通过简单配置,无需编写代码或训练模型,即可快速实现智能问答功能。演示包括创建应用、配置知识库、上传民法典文档、构建知识索引等步骤。最终,用户可以通过API调用集成此AI Agent到现有系统中,提供专业的法律咨询服务。整个过程简便高效,适合快速搭建专业领域的小助手。
220 22
|
2月前
|
关系型数据库 机器人 OLAP
智答引领|AnalyticDB与通义千问大模型联手打造社区问答新体验
PolarDB开源社区推出基于云原生数据仓库AnalyticDB和通义千问大模型的“PolarDB知识问答助手”,实现一站式全链路RAG能力,大幅提升查询效率和问答准确率。该系统整合静态和动态知识库,提供高效的数据检索与查询服务,支持多种场景下的精准回答,并持续优化用户体验。欢迎加入钉群体验并提出宝贵意见。
智答引领|AnalyticDB与通义千问大模型联手打造社区问答新体验
|
2月前
|
开发框架 自然语言处理 JavaScript
千问开源P-MMEval数据集,面向大模型的多语言平行评测集
近期,通义千问团队联合魔搭社区开源的多语言基准测试集 P-MMEval,涵盖了高效的基础和专项能力数据集。
千问开源P-MMEval数据集,面向大模型的多语言平行评测集
|
2月前
|
机器学习/深度学习 人工智能 安全
通义视觉推理大模型QVQ-72B-preview重磅上线
Qwen团队推出了新成员QVQ-72B-preview,这是一个专注于提升视觉推理能力的实验性研究模型。提升了视觉表示的效率和准确性。它在多模态评测集如MMMU、MathVista和MathVision上表现出色,尤其在数学推理任务中取得了显著进步。尽管如此,该模型仍存在一些局限性,仍在学习和完善中。
|
1月前
|
人工智能 自然语言处理 安全
千行百业,“义”不容辞:通义技术创新与商业实践
千行百业,“义”不容辞:通义技术创新与商业实践。本次分享分为两部分,首先介绍大模型的快速迭代与普及,探讨通义千问在精度和复杂任务执行上的突破;其次聚焦企业级落地,解决安全性、部署路径及模型调优三大问题。通过多模态理解(视觉、语音)和更强的生成控制力,携手伙伴服务各行业,推动技术向生产力转化,并关注公益应用,助力社会进步。
|
2月前
|
Java 测试技术 开发者
通义灵码助力高效开发——我的实践心得
作为一名Java开发工程师,我一直在寻找提高开发效率的方法。最近,我尝试了通义灵码的个人版新功能,并取得了显著的效果。本文将分享我的实践场景、效果和心得。
64 1
|
30天前
|
人工智能 自然语言处理 BI
蓝凌aiKM,双能驱动场景变革:蓝凌知识管理平台和通义千问共建实践
蓝凌aiKM通过双能驱动场景变革,结合蓝凌知识管理平台与通义千问大模型,助力企业构建智能“大脑”。aiKM不仅提升知识管理效率,还赋能业务场景,如新人培训、营销支持和流程优化。蓝博士产品整合专属内容与大模型能力,提供智能搜索、问答及推荐服务,帮助企业高效利用私域知识资产,推动数字化转型。蓝凌在AI时代致力于激活企业新生产力,打造知识护城河,成为核心竞争力。
|
2月前
|
大数据 开发者
通义灵码创新实践征集赛获奖名单公布!
通义灵码创新实践征集赛得到了众多开发者的支持和喜爱,现公布活动获奖名单,快来看看吧!
218 5