DistilQwen2.5发布:通义千问蒸馏小模型再升级

发布于:2025-02-26 ⋅ 阅读:(16) ⋅ 点赞:(0)

01

引言

因高计算成本和复杂性,在例如移动设备和边缘计算场景等资源有限的环境中,限制了大语言模型的普及。如何在保留模型性能的同时提高计算效率并降低部署成本,已成为研究和工业界必须面对的关键挑战。

在此背景下,我们正式推出基于 Qwen2.5 的轻量化大模型系列 DistilQwen2.5。该模型通过创新的双层蒸馏框架实现突破,基于数据优化策略重构指令数据集强化模型理解能力,并且采用参数融合技术实现细粒度知识迁移。实验表明,DistilQwen2.5 在多项基准测试中性能超越原模型,同时显著降低计算资源消耗。

DistilQwen2.5 蒸馏模型的 Checkpoint 已在 HuggingFace 及 ModelScope 全面开源。本文将介绍 DistilQwen2.5 的蒸馏算法、效果评测,以及 DistilQwen2.5 模型在阿里云人工智能平台 PAI 上的使用方法,并提供在各开源社区的下载使用教程。

02

DistilQwen2.5中的知识蒸馏技术

本节中,主要描述 DistilQwen2.5 模型训练中使用的黑盒化和白盒化的知识蒸馏技术。其中,DistilQwen2.5 模型蒸馏的算法框架如下图所示。

**

指令数据搜集层

**

DistilQwen2.5 模型蒸馏算法的首要步骤是指令数据收集层,旨在搜集大量高质量指令数据,以供后续教师模型使用。为了确保数据的多样性和高效性,整合了多个来源的数据集,包括开源数据集 Magpie、Openhermes 和 Mammoth 2 等。此外,还引入了大量私有合成数据集,以丰富指令样本的多样性。为有效整合数据源,确保指令语言主要涵盖中英文,同时对指令进行了难度打分和任务相关的重新抽样。

首先,在许多应用场景中,模型需要能够跨语言工作。为应对中文数据相对不足的挑战,利用 Qwen-max 进行了数据扩展。通过设计特定的 Prompt,让 Qwen-max 生成了内容不同但任务类型相同的中英文指令,从而平衡了中英文数据的比例。

其次,任务多样性是实现模型全面能力的关键环节。借鉴 WizardLM 中对大语言模型能力的评估维度,在 DistilQwen2 模型蒸馏中继续使用之前的方法,定义了33种任务类型,涵盖广泛的应用场景。我们创建了一个包含3万条任务的分类数据集,并基于 Deberta v3 训练了任务分类器。该分类器在测试集上的准确性与 ChatGPT 相当,使得指令数据标注具备高度的可靠性和准确性。通过如此精细的任务标签,能够更好地控制数据集中不同任务类型的分布,确保模型在训练过程中获得全面和深入的能力。

此外,在评估指令数据的难易程度时,采用了 LLM-as-a-Judge 的范式。利用教师模型对指令执行的准确性、相关性、帮助性和详细程度进行评分,这为模型提供了一种客观的指令难度评估机制。具体而言,我们引入了一种名为模型拟合难度分数(MFD Score)的指标来衡量每条指令在蒸馏训练中的价值。MFD 分数是根据学生模型得分与教师模型得分之间的差值计算得出的。如果某条指令的 MFD 分数较高,则说明该指令对蒸馏训练更具价值,而低难度的指令则可以从训练集中移除。

**

指令遵循优化层(黑盒化蒸馏)

**

黑盒化蒸馏主要依赖于教师模型的输出,而非其内部表征。我们选择采用黑盒化蒸馏算法的原因有两个:首先,这种算法的训练速度比白盒化蒸馏更快,有助于节省训练时间和计算资源;其次,黑盒化蒸馏适用于开源和闭源的大型模型。在指令遵循优化层中,我们并不直接通过蒸馏微调的方法来优化学生模型,而是利用教师大模型,首先引入一种 Multi-Agent 模式,以对指令数据进行大幅度提升和优化。

  • 指令扩展:在这一过程中,教师大模型充当指令扩展的 Agent,生成与输入指令相似的新指令。在扩展指令时,我们要求该 Agent 始终保持原始任务的自然语言处理类别不变,以避免产生不必要的幻觉。例如,当输入的指令为“简要概述牛顿第一运动定律”时,输出可以是“解释开普勒第三定律的含义”,而不是“介绍爱因斯坦的生平”。

  • 指令选择:指令选择 Agent 的目标是筛选出对模型训练具有高度价值的指令,筛选标准包括信息量、实用性和泛化潜力等。这一过程不仅保证了增强数据集的质量,也有效过滤了对模型蒸馏训练帮助不大的指令数据。

  • 指令改写:在经过指令扩展和选择后,指令改写 Agent 进一步提升数据的质量和多样性,同时保持指令意图不变。例如,将“提供气候变化经济影响的总结”改写为“解释气候变化如何影响经济”。此外,对于复杂任务如逻辑推理、数学问题和编程等,我们鼓励生成链式思维(Chain-of-Thought, CoT)输出,以进一步提升小模型的推理能力和解决问题的逻辑性。

黑盒化蒸馏过程遵循监督学习范式,以增强的指令响应对作为训练样本。学生模型能够在有限的参数量下,充分吸收和理解来自大模型的知识。这种方法不仅增强了学生模型解决任务的能力,也使其能够在多任务环境中取得更好的效果。

**

知识融合优化层(白盒化蒸馏)

**

黑盒化知识蒸馏仅依赖教师模型输出的概率最高的 token,而白盒化知识蒸馏则更关注教师模型输出 logits 的分布,从而为学生模型提供更丰富的信息。通过模仿教师模型的 logits 分布,白盒化蒸馏可以更有效地传递知识,进一步提升学生模型的性能。

假设学生模型的参数为 ,其输出的概率函数为 。教师模型概率函数 和学生模型的概率函数 之间的 logits 差异定义如下:

其中 和 分别表示输入和输出序列, 是序列长度。函数 可以是任何散度函数,例如正向 Kullback-Leibler 散度、反向 Kullback-Leibler 散度等。在模型蒸馏训练过程中,我们最小化这一散度损失,旨在最小化学生和教师 token 序列之间的差异,定义如下所示:

传统的白盒化蒸馏算法对于工业大规模数据的蒸馏场景是不可行的,原因有三个:

  1. GPU 内存消耗过高: 如果在训练学生模型的同时进行教师模型的前向传播,所需的计算资源将显著增加。对于拥有32B或者72B参数的巨型教师模型,GPU 内存甚至可能无法承受。这种情况严重限制了模型的训练效率。

  2. 长时间的存储和读取: 对于离线生成的教师模型 logits,其存储和读取通常需要占用大量的时间。尤其是当数据集非常庞大时,磁盘空间的消耗也变得难以忽视。这种高昂的存储和读取开销成为了系统瓶颈。

  3. 词汇表不匹配问题: 教师模型和学生模型通常使用不同的词汇表,导致它们的 logits 张量无法直接匹配。这种不匹配阻碍了知识的准确传递,降低了蒸馏过程的有效性。

我们在教师模型的输出中观察到,前10个 token 的概率之和几乎为1,这表明教师模型的所有知识几乎都包含在前10个 token 中。因此只保存教师模型每个序列位置中概率最大的10个 token 的概率。由此我们构建了一个对于大模型和大数据量下可扩展的白盒化知识蒸馏系统,支持以下功能:

  • 我们首先进行 token 对齐操作,以解决由于词汇表不匹配带来的 logits 张量不匹配问题。通过建立词汇映射关系,使教师模型的 logits 能够正确映射到学生模型的词汇表上,确保信息传递的准确性。

  • 离线执行分布式计算过程,生成教师模型的前 个概率的 logits,其中默认 ,并可根据定制场景进行调整。

  • 实现 的变体,其中仅计算前 个元素的散度以进行最小化。

设 和 分别表示教师模型的前 个logits和学生模型中词汇表匹配的相应logits。计算 时使用概率计算如下所示:

其中 是温度超参数。通过这种方式,不仅加速了logits的生成速度,还提高了存储和读取logits的速度,缓解了存储压力。

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈

03

DistilQwen2.5模型效果评测

在本节中,从多个角度评测 DistilQwen2.5 蒸馏小模型的实际效果;同时,我们对使用不同规模的教师大模型进行模型融合训练的效果进行评测。

**

模型综合能力评测

**

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

在这里插入图片描述

**

模型细粒度能力评测

**

我们进一步使用 MT-bench 基准测试对 DistilQwen2.5 模型的各项细粒度能力进行评测,例如文本生成、代码生成、数学问题、角色扮演等,每个任务都旨在从不同的角度测试模型的能力。通过对 DistilQwen2.5 模型模型在 MT-bench 基准测试中的表现进行分析,我们可以准确量化 DistilQwen2.5 模型在各个方面的细粒度能力,并将其与原始模型进行比较。从实验结果可以看出,在绝大部分细粒度能力层面,DistilQwen2.5 模型比原始 Qwen2.5 模型有明显的提升。下图给出0.5B和1.5B模型在各个细粒度能力的对比。
在这里插入图片描述

**

与其他模型能力对比

**

为了横向比较同期发布的不同参数规模的模型效果,下表展示了这些模型在 AlpacaEval 2.0 的评测结果,对于每个参数量级,从低到高进行排序。我们重点对比了 Qwen2、Qwen2.5 以及先前发布的 DistilQwen2 模型。对于英文模型,我们也横向对比 Llama、Phi3、Mistral 等系列模型。模型效果排序如下所示。可以看出,DistilQwen2.5 系列模型对比其他各类模型,具有很高的性价比,其效果接近了参数量接近或大于其参数量两倍的模型。

**

模型融合实验评测

**

经过对大模型 logtis 生成速度的优化,我们对 logits 的推理速度提升了至少4倍,节省存储空间为原本的1/1000。使用5万条数据时,时间具体耗时如下:

模型

优化前

优化后

提升

Qwen2.5-14B-Instruct

76.8h

16h

4.8倍

Qwen2.5-32B-Instruct

85.4h

18.2h

4.7倍

Qwen2.5-72B-Instruct

90.2h

22.5h

4倍

针对不同训练数据量级(1K/10K/100K/200K)下和不同教师模型(7B/14B/32B/72B)大小的蒸馏效果,我们也进行了探索,效果如下图所示,从中可以得到一些关于蒸馏数据量和教师模型参数量大小的结论:

  1. 数据量和模型大小都存在边际效应,随着数据量的成倍提升,效果提升减缓;随着模型规模的上升(32B/72B)并没有对比14b模型带来更明显的提升。这表明,学生模型和教师模型在参数量差距过大的情况下,对教师模型的学习能力有限。

  2. 在小数据量(~1K)或充分数据量(>200K)的情况下,提升教师模型规模带来的效果提升不明显。在10K-100K条数据量下,不同规模的教师模型提升较为明显。这可能是由于在小数据的场景下,学生模型对教师模型的能力还没有充分学习;而在大数据场景下随着数据量大饱和,学生模型已经能从数据中学习到充分的知识。
    在这里插入图片描述

在这里插入图片描述

**

模型输出案例

**

对于同一指令,我们对比了 DistilQwen2.5-7B-Instruct 和 GPT-4o、DeepSeek-V3、Qwen2.5-Max、Qwen2-7B-Instruct 回复对比结果,特别是知识性和逻辑推理类问题。从输出结果可以看出,DistilQwen2.5-7B-Instruct 的输出在一些场景上具有更好的事实正确性和逻辑推理能力。

示例一:知识性问题

输入指令

汉字的基本构成单位是什么?

GPT-4o回复

汉字的基本构成单位是部首和笔画。部首是用来归类和表示字义的关键组成部分,而笔画则是构成汉字的最小书写单位。每个汉字都是由若干笔画按照特定的顺序和结构组合而成,许多汉字还会包含一个或多个部首以帮助识别和记忆。

DeepSeek-V3回复

汉字的基本构成单位是**笔画**。笔画是书写汉字时,笔在纸上不间断地一次写成的线条。常见的笔画包括横、竖、撇、捺、点、折等。这些基本笔画通过不同的组合和变化,构成了复杂的汉字。

Qwen2.5-Max回复

汉字的基本构成单位是笔画。笔画是书写汉字时从落笔到提笔所形成的连续线条,是构成汉字的最小单位。根据形状和书写方式的不同,汉字的笔画可以分为基本笔画和复合笔画。

Qwen2.5-7B-Instruct回复

汉字的基本构成单位是偏旁和部首。

DistilQwen2.5-7B-Instruct回复

汉字的基本构成单位是笔画。笔画是构成汉字的最小单位,指的是在书写过程中,笔锋移动所形成的线条。这些线条可以是点、横、竖、撇、捺、提等基本形态。通过不同笔画的组合与搭配,汉字能够形成各种复杂的形状和结构,从而表达出丰富的意义。

示例二:知识性问题

输入指令

请解释成语“逢人说项”中的“项”字的意思。

GPT-4o 回复

成语“逢人说项”中的“项”,是指唐代诗人项斯。这个成语源自于项斯的朋友李翱,因项斯为人谦虚、才情出众,所以李翱总是向他人称赞项斯的才华和品德。“逢人说项”因此用来形容到处称赞或推荐某人。

DeepSeek-V3回复

成语“逢人说项”中的“项”字,指的是唐代诗人项斯。这个成语源自于项斯的故事,项斯是唐朝的一位诗人,他的诗才得到了当时的著名诗人杨敬之的赏识。杨敬之非常推崇项斯的诗作,以至于他遇到人就会称赞项斯的才华。因此,“逢人说项”这个成语用来形容对某人或某事物非常推崇,见到人就会夸奖或推荐。

Qwen2.5-Max回复

成语“逢人说项”中的“项”字,指的是一个人的名字,具体来说是指唐代一位名叫**项斯**的诗人。

根据历史典故,唐代有一位诗人项斯,起初并不出名。他曾经将自己的诗作呈送给当时的名士杨敬之,希望得到赏识。杨敬之非常欣赏项斯的才华,并写了一首诗赞扬他,其中有两句:“平生不解藏人善,到处逢人说项斯。”意思是杨敬之不吝啬对他人优点的赞美,走到哪里都会向别人推荐和称赞项斯的才华。后来,项斯因此声名鹊起。

因此,“逢人说项”这个成语中的“项”,特指项斯这个人。而整个成语的意思是比喻某人到处宣扬或推荐另一个人的优点或长处,通常带有褒义,表示对他人的认可和支持。

Qwen2.5-7B-Instruct输出回复

成语“逢人说项”中的“项”并不是指人名或者具体的某个人,而是来源于历史故事中的主要人物——西汉时期的项橐。这个成语用来形容一个人喜欢到处为某件事或某个人说好话,不加选择地向任何人诉说。这里的“说项”实际上是指为某人或某事进行说情、辩护或推荐。因此,“逢人说项”字面上的意思是遇到人就为项橐说好话,但实际上是指遇到人就为某事或某人说好话。

DistilQwen2.5-7B-Instruct输出回复

成语“逢人说项”中的“项”字指的是“项斯”,这是一个典故的来源。该成语用来形容一个人非常热衷于向别人推荐或赞扬某个人或事物。典故出自唐代诗人杨敬之对项斯的推崇,杨敬之多次在诗文中赞扬项斯的才华,以至于人们一提到项斯的名字,就会想到杨敬之的赞誉。因此,“逢人说项”就演变为了现在的成语,用来形容那种不厌其烦地向他人推荐或赞扬某人或某事的行为。

示例三:逻辑推理类问题

输入指令

电源36伏发光二极管一个需要串多大电阻?

GPT-4o回复

计算串联电阻需要知道发光二极管(LED)的正向电压(通常在2V到3.6V之间)和正向电流(通常在10mA到20mA之间)。假设LED的正向电压为3V,电流为20mA,计算方法如下:

1. 计算电阻两端的电压:

  电阻电压 \( V_R = V_{\text{电源}} - V_{\text{LED}} = 36V - 3V = 33V \)

2. 计算电阻值:

  \( R = \frac{V_R}{I} = \frac{33V}{0.02A} = 1650\Omega \)

因此,需要串联一个1650欧姆的电阻。

如果使用不同的LED,请根据具体参数进行调整。

DeepSeek-V3回复

要计算36V电源下发光二极管(LED)所需的串联电阻,步骤如下:

  1. 确定LED的额定电压(Vf)和额定电流(If):

    • 假设Vf = 2V,If = 20mA(0.02A)。

  1. 计算电阻值(R):
    [R = \frac{V_{电源} - V_f}{I_f} = \frac{36V - 2V}{0.02A} = \frac{34V}{0.02A} = 1700\Omega]

  2. 选择标准电阻:

    • 最接近的标准电阻为1.8kΩ。

  1. 计算电阻功率(P):
    [P = I_f2 \times R = (0.02A)2 \times 1800\Omega = 0.72W]

    • 选择1W或更高功率的电阻。

最终答案:
在36V电源下,LED需要串联一个1.8kΩ、1W的电阻。

Qwen2.5-Max回复

要计算发光二极管(LED)需要串联的电阻值,我们需要知道以下几个参数:

  1. 电源电压 (V_supply):36伏。

  2. LED的正向电压 (V_f):通常在LED的技术规格中给出,常见的值为2V到4V(具体取决于LED的颜色和类型)。

  3. LED的工作电流 (I_LED):通常在LED的技术规格中给出,常见的值为20mA(0.02A),但也可以是其他值。

计算公式

根据欧姆定律,串联电阻的阻值 ( R ) 可以通过以下公式计算:
[R = \frac{V_{supply} - V_f}{I_{LED}}]

示例计算

假设:

  • LED的正向电压 ( V_f = 3V )

  • LED的工作电流 ( I_{LED} = 20mA = 0.02A )

代入公式:
[R = \frac{36V - 3V}{0.02A} = \frac{33V}{0.02A} = 1650 , \Omega]

因此,需要一个 1650欧姆 的电阻。

实际选择

在实际应用中,通常选择标准电阻值。最接近1650欧姆的标准电阻值是 1.6kΩ 或 1.8kΩ。如果选择较大的电阻值(如1.8kΩ),LED的亮度会稍微降低,但更安全。

功率计算

为了确保电阻不会过热,还需要计算电阻的功率。电阻的功率 ( P ) 可以通过以下公式计算:
[P = I^2 \cdot R]
代入数据:
[P = (0.02A)^2 \cdot 1650 , \Omega = 0.0004 \cdot 1650 = 0.66W]

因此,选择一个 1W 的电阻是比较安全的。

总结:对于36V电源、正向电压3V、工作电流20mA的LED,需要串联一个 1.6kΩ 到 1.8kΩ 的电阻,并选择额定功率至少为 1W 的电阻。

Qwen2.5-7B-Instruct输出回复

要确定发光二极管需要串联多大的电阻,我们需要知道发光二极管的额定电压和额定电流,以及供电电源的电压。通常,发光二极管的额定电压(Vf)大约在2V到3V之间,具体取决于二极管的类型。假设我们使用的是常见的红色发光二极管,其额定电压约为2V。\n\n给定的电源电压是36V,而发光二极管的额定电压是2V,这意味着我们需要通过电阻来降低电源电压,使其适应发光二极管的电压需求。电阻两端的电压(Vr)可以通过以下公式计算:\n\n\\[ Vr = V_{电源} - Vf \\]\n\n\\[ Vr = 36V - 2V = 34V \\]\n\n接下来,我们需要确定通过二极管的电流(I)。这个电流通常由二极管的数据手册给出,或者根据应用需求设定。假设我们希望通过二极管的电流为20mA(0.02A),我们可以使用欧姆定律来计算所需的电阻值(R):\n\n\\[ R = \\frac{Vr}{I} \\]\n\n\\[ R = \\frac{34V}{0.02A} = 1700\\Omega \\]\n\n因此,为了将36V的电源电压降低到适合发光二极管的2V,并且让通过二极管的电流为20mA,我们需要串联一个大约1700欧姆的电阻。\n\n请注意,实际选择电阻时,应选择标准电阻值,如1.5kΩ或1.8kΩ,以确保安全和性能。

DistilQwen2.5-7B-Instruct输出回复

为了确保发光二极管(LED)安全且正常工作,我们需要计算串联电阻的阻值。计算公式为:

\[ R = \frac{V_{电源} - V_{LED}}{I_{LED}} \]

其中,\( V_{电源} \) 是电源电压,\( V_{LED} \) 是LED的额定电压,\( I_{LED} \) 是LED的额定电流。

假设LED的额定电压为3V,额定电流为20mA(0.02A),并且电源电压为36V,我们可以进行如下计算:

\[ R = \frac{36V - 3V}{0.02A} = \frac{33V}{0.02A} = 1650 \Omega \]

因此,需要串联一个1650欧姆的电阻。确保所选电阻的功率足够大以防止过热。

04

模型下载和使用

**

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

**

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

KeyError: 'qwen2'

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


from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "alibaba-pai/DistilQwen2.5-7B-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.5 在开源社区的下载


我们在 HuggingFace 和 ModelScope 上开源了我们蒸馏后的模型,分别为

alibaba-pai/DistilQwen2.5-0.5B-Instruct**:**https://x.sm.cn/BDSv4c7

**alibaba-pai/DistilQwen2.5-1.5B-Instruct:**https://x.sm.cn/FqGPHir

**alibaba-pai/DistilQwen2.5-3B-Instruct:**https://x.sm.cn/811O0h6

alibaba-pai/DistilQwen2.5-7B-Instruct**:**https://x.sm.cn/BG8f5YB

以 HuggingFace 为例,用户可以使用如下代码下载这两个模型:


from huggingface_hub import snapshot_download

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

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

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

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

05

数据集下载和使用

为了支持社区开发者在微调 DistilQwen2.5 模型时避免“灾难性遗忘”(catastrophic forgetting)现象,我们开源了部分用于模型训练的数据集。这一数据集旨在为模型微调提供坚实的基础,有助于提升模型在新任务上的适应性的同时,保持在之前任务上的性能。此外,在微调其他类似大语言模型时,也可以利用这一数据集进行指令遵循能力的增强。以下是关于数据集的信息和下载使用说明。

**

数据格式等相关信息

**

该部分数据包含了数学、代码、知识问答、指令遵循、创意生成等内容,总数据量为100K。用户可以在用自己的数据对模型微调时加入 DistilQwen_100K,或者其子集,从而使其在下游任务表现良好的同时不至于丧失其通用能力,保证模型的泛化性。数据格式为 JSON 格式,示例数据如下:


[
    {
        "instruction": "The ratio of the number of molar teeth in the human upper jaw at the age of 6 is 2:1 compared to number of incisors teeth. There are total 8 incisors in the human mouth. What is the number of molar teeth in the human upper jaw for this age group?",
        "output": "## Step 1: Determine the total number of incisors in the upper jaw.\nSince there are a total of 8 incisors in the human mouth and the incisors are evenly distributed between the upper and lower jaw, we divide the total number of incisors by 2 to find the number in the upper jaw. So, 8 incisors / 2 = 4 incisors in the upper jaw.\n\n## Step 2: Use the given ratio to find the number of molar teeth in the upper jaw.\nThe ratio of molar teeth to incisors in the upper jaw at the age of 6 is given as 2:1. This means for every 1 incisor, there are 2 molar teeth. Since we determined there are 4 incisors in the upper jaw, we multiply this number by 2 to find the number of molar teeth. So, 4 incisors * 2 = 8 molar teeth.\n\nThe final answer is: $\\boxed{8}$"
    },
    {
        "instruction": "This is the text of a lecture I am giving tomorrow. Can you go over it and make recommendations to improve clarity and flow?",
        "output": "I'd be happy to help you review your lecture text and provide suggestions for improvement. Please go ahead and share the text with me, and I'll get started.\n\nAdditionally, it would be helpful to know a bit more about the context of your lecture. Could you tell me:\n\n* What is the topic of your lecture?\n* Who is your audience (e.g. students, professionals, general public)?\n* What is the purpose of the lecture (e.g. to inform, to persuade, to educate)?\n* How long is the lecture supposed to be?\n\nThis information will help me provide more targeted and relevant feedback."
    }
]

**

数据集在开源社区的下载

**

该数据集已上传至 ModelScope,用户可以使用 ModelScope 提供的脚本和命令行工具自行下载使用该数据集。


#验证SDK token
from modelscope.hub.api import HubApi
api = HubApi()
api.login('your_token_id')

#数据集下载
from modelscope.msdatasets import MsDataset
ds =  MsDataset.load('PAI/DistilQwen_100k')

06

小结与未来工作

在当前人工智能领域的快速发展中,大语言模型(LLMs)凭借其出色的自然语言理解和生成能力,已在多个应用场景中得到广泛应用。然而,随着这些应用的扩展,其高计算成本和复杂性在资源有限的环境下的接受度逐渐降低,成为行业普及的一大瓶颈。为了解决这一问题,我们提出了 DistilQwen2.5 轻量化模型系列,依托 Qwen2.5 大模型,通过一系列创新的知识蒸馏技术,使得模型在保留原有优越性能的同时显著降低了计算资源需求。为了进一步促进技术的推广与应用,我们将 DistilQwen2.5 模型的 Checkpoint 以及部分训练数据集开源至 HuggingFace 和 ModelScope 等社区,力图为开发者和企业提供更为便捷的操作环境,助力他们在实际项目中迅速实现技术落地。在未来,我们将继续致力于优化并发布 DistilQwen 系列模型,并且针对特定领域(如深度推理等)进行模型的定制化优化,使得 DistilQwen 系列模型在多样化需求下展现出更强的专业能力。

参考资料

相关发表论文

  1. Yuanhao Yue, Chengyu Wang, Jun Huang, Peng Wang. Building a Family of Data Augmentation Models for Low-cost LLM Fine-tuning on the Cloud. COLING 2025

  2. Yuanhao Yue, Chengyu Wang, Jun Huang, Peng Wang. Distilling Instruction-following Abilities of Large Language Models with Task-aware Curriculum Planning. EMNLP 2024

技术文章

  1. DistilQwen2:通义千问大模型的知识蒸馏实践:https://x.sm.cn/It1BmKO

  2. DistilQwen2蒸馏小模型的训练、评测、压缩与部署实践:https://x.sm.cn/1gz2R0I

  3. 大语言模型数据增强与模型蒸馏解决方案:https://x.sm.cn/8sGveYS

如何学习AI大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

想正式转到一些新兴的 AI 行业,不仅需要系统的学习AI大模型。同时也要跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

那么针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈

学习路线

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓


网站公告

今日签到

点亮在社区的每一天
去签到