Qwen知识蒸馏小试牛刀,在MT-Bench与AlpacaEval 2.0的表现大幅提升

news2024/11/13 15:19:51

Qwen知识蒸馏小试牛刀,在MT-Bench与AlpacaEval 2.0的表现大幅提升

原创 荷风微摆 YeungNLP 2024年07月08日

01

前言

本文主要分享我们在大模型知识蒸馏上的实验尝试,以及所取得的实验效果提升。我们在5月份完成了该实验,但由于各种原因,实验分享🕊️了两个月。由于彼时Qwen2尚未发布,且我们的训练资源有限,所以我们选择将Qwen1.5-32B-Chat-AWQ蒸馏到Qwen1.5-14B中。

在AlpacaEval 2.0和MT-Bench评测集中,我们得到以下两个主要的实验结果:

  1. 使用同一份训练数据,蒸馏得到的模型大幅优于直接SFT的模型。

  2. 蒸馏可弥补数据质量导致的差距,蒸馏得到的模型比官方Qwen1.5-14B-Chat模型有比较明显的提升。

下表是我们蒸馏的14B模型与官方Qwen1.5-14B-Chat在AplacaEval 2.0评测集中的评测结果。

图片

这表明大模型知识蒸馏的有效性,相较于直接SFT,知识蒸馏能够进一步提升模型的性能,可作为大模型压缩和加速推理的有效手段。

近期谷歌开源的Gemma-2-9B也使用了知识蒸馏的方法,业内的许多闭源大模型必然也使用了知识蒸馏这一手段,将千亿大模型蒸馏到更小的模型,在保证性能的前提下,以提升模型的推理速度。

我们蒸馏的模型权重如下,更多实验细节详见下文:

https://hf-mirror.com/YeungNLP/firefly-qwen1.5-en-14b-alpha

训练代码基于Firefly项目:

https://github.com/yangjianxin1/Firefly

02

知识蒸馏简述

生成式大模型在许多任务中都取得了非常优异的表现,并且改变了NLP的范式。但“大”也导致了模型的推理瓶颈,出现模型推理速度慢,显存占用多等问题。在不改变模型结构和权重的前提下,可通过多卡推理、KV Cache、MQA、GQA、MLA、Page Attention等手段来缓解大模型的推理瓶颈。

图片

知识蒸馏也是一种广泛使用的压缩大模型参数规模,提高模型推理速度,降低显存占用的方法。普遍的做法是让学生模型的logits拟合教师模型的logits,也可以进一步蒸馏教师模型的中间层的logits以及attention矩阵等。核心思想是尽可能地丰富学生模型训练时的监督信号,避免仅使用hard label这一单一的训练目标。

图片

知识蒸馏并不属于特别新的技术,在bert时代已经有很多相关的研究和应用落地,一般是将较大的bert蒸馏到一个较小的bert或者textcnn、lstm等轻量级模型结构,使得模型能够在cpu上进行推理。蒸馏后得到的学生模型往往比直接finetune的效果更优,并且能够很大程度地保留教师模型的能力。

知识蒸馏的相关论文:

论文:Distilling the Knowledge in a Neural Network链接:https://arxiv.org/pdf/1503.02531
论文:DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter链接:https://arxiv.org/pdf/1910.01108
论文:Distilling Task-Specific Knowledge from BERT into Simple Neural Networks链接:https://arxiv.org/pdf/1903.12136
论文:Patient Knowledge Distillation for BERT Model Compressio链接:https://arxiv.org/pdf/1908.09355

03

蒸馏Qwen1.5

在本次实验中,我们将Qwen1.5-32B-Chat-AWQ蒸馏到Qwen1.5-14B模型结构中,使用Qwen1.5-14B的模型权重对学生模型进行初始化。我们采用ultrachat-200k作为训练数据,在sft和蒸馏时,均采用QLoRA训练策略。sft时的最大输入长度为2048,distill时的最大输入长度为1024。

在本次实验中,我们对比了不同的训练策略对模型性能的影响,对比实验一共包含四个模型:

  1. Qwen1.5-14B-Chat:Qwen官方开源的chat模型。

  2. ours-sft:对Qwen1.5-14B进行sft。

  3. ours-distill:使用Qwen1.5-14B的权重初始化学生模型Qwen1.5-32B-Chat-AWQ作为教师模型,仅蒸馏最后一层输出的logits

  4. ours-distill-sft:可以认为是ours-sft与ours-distill的结合,训练损失由sft loss与distill loss两部分组成,两者加权求和得到最终的训练loss。

我们在AlpacaEval 2.0和MT-Bench中,使用GPT-4o对上述四个模型进行自动评测。

MT-Bench包含单轮与多轮两类评测任务,评测结果如下表所示,可得出如下结论:

  1. 相较于直接SFT,蒸馏能够带来大幅的性能提升

  2. distill-sft的效果不如直接distill我们猜测这可能不是普适的结论,可能是ultrachat的数据质量不如Qwen官方数据所造成的,若采用Qwen官方所使用的训练数据,distill-sft的训练效果可能会优于直接distill,但这一猜想有待通过实验验证。

  3. 在单轮对话评测中,直接蒸馏的模型优于官方的Qwen1.5-14B-Chat,但在多轮对话评测中,却出现了相反的现象。我们猜测可能是训练数据或者训练的最大输入长度导致的。

图片

图片

AlpacaEval 2.0评测集包含805条评测数据,5类评测任务,我们直接评测两个模型之间的胜负率,没有平局。在所有评测子任务中,我们蒸馏的模型的胜率均高于官方模型,总胜率为52.17%:47.83%

图片

另一个有趣的现象,无论从闭源和开源数据的差异来看,还是从MT-Bench中ours-sft显著弱于Qwen1.5-14B-Chat的表现来分析,我们都可以合理地认为,我们采用的ultrachat-200k的数据质量与Qwen官方的训练数据有比较大的差距,但通过蒸馏的手段,我们可以在一份相对“较弱”的数据上,取得更好的表现。

本实验还有许多待探索的点,包括但不限于,评测学生模型相较于教师模型的性能损失,学生模型的性能与教师模型性能的变化关系,进一步探索蒸馏时的训练目标对学生模型的影响等。

给公众号添加【星标⭐️】不迷路

您的点赞、在看、关注是我坚持的最大动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1907276.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Springboot实战:AI大模型+亮数据代理助力短视频时代

目录 前言1.如何入门亮数据1.1、注册登录1.2、注册账号1.3、登录1.4、购买静态住宅代理1.5、展示购买的代理 2. 使用Springboot、AI大模型构建系统2.1 使用Springboot、AI大模型构建爬虫2.2、在Springboot项目添加工具 3、编写代码,爬取视频素材3.1、代码里使用代理…

I 2U-Net:具有丰富信息交互的双路径 U-Net 用于医学图像分割| 文献速递-基于深度学习的多模态数据分析与生存分析

Title 题目 I 2U-Net: A dual-path U-Net with rich information interaction for medical image segmentation I 2U-Net:具有丰富信息交互的双路径 U-Net 用于医学图像分割 01 文献速递介绍 在计算机视觉领域,医学图像分割是一个主要挑战&#xff…

深入解析:抖音视频标题的Python爬虫提取方法

引言 随着短视频的兴起,抖音已经成为全球最受欢迎的社交媒体平台之一。对于数据分析师、市场研究人员以及内容创作者来说,能够从抖音上抓取数据是一项宝贵的技能。本文将深入解析如何使用Python编写爬虫程序来提取抖音视频的标题。 爬虫基础 在开始编…

家里猫咪浮毛太多怎么办?值得买的猫毛空气净化器推荐

作为一位拥有5年铲屎经验的铲屎官,我知道许多新手铲屎官可能听说过宠物空气净化器,但了解得不多。事实上,宠物空气净化器确实是养猫家庭必备的小家电之一。它的大面积进风口可以有效吸附空气中的微小浮毛和皮屑,专门的除臭技术能有…

使用 Python 处理 Lumerical 导出的 .txt 文件(完结)

使用 Python 处理 Lumerical 导出的 .txt 文件 引言正文以 , 隔开的波长与透射率以 \t 隔开的波长与透射率引言 之前在 添加链接描述 一文中我们已经介绍了如何将 Lumerical 仿真中的 S 参数相关数据导出为 .txt 文件。这里我们来分享如何使用 Python 对这些数据进行处理。 正…

旋转木马案例

旋转木马 如果接口需要的数据格式和原始数据提供的格式有差异 不要去改接口方法 也不要改原始数据 做一层中间件(数据处理函数/方法) <!DOCTYPE html> <html lang"zh-cn"><head><meta charset"UTF-8"><meta name"viewport…

分销密文下单

背景 事情的经过就是今天早上一共下了10个单&#xff0c;然后就下不了单了。 如下图&#xff1a; 来到抖店后台显示什么解密额度已经用完了 所以&#xff0c;今天必须把困扰我很久的分销密文下单解决掉 操作 1688分销下单-逸淘订单 1 先关联商品 2 下单 首页导航栏--1688分…

重塑通信边界,基于ZYNQ7000 FPGA驱动的多频段多协议软件无线电平台

01、产品概述 本平台是基于高性能ZYNQ-7000系列中的XC7Z045处理器构建的多频段多协议软件无线电解决方案&#xff0c;集成了AD9364芯片——一款业界领先的1x1通道RF敏捷收发器&#xff0c;为无线通信应用提供了强大支持。其存储架构包括2路高速4GB DDR3内存、1路32GB EMMC存储以…

可信验证解释

学习目标&#xff1a;可信验证解释 可信验证是一种基于计算机技术和安全机制&#xff0c;用于确保系统、程序或数据的完整性和可信性的方法。以下是关于可信验证的详细解释&#xff1a;一、定义与原理 可信验证指的是利用计算机技术和安全机制&#xff0c;对系统、程序或数据…

MobaXterm工具

MobaXterm 是一个增强型的 Windows 终端。其为 Windows 桌面提供所有重要的远程网络终端工具&#xff08;如 SSH、X11、RDP、VNC、FTP、SFTP、Telnet、Serial、Mosh、WSL 等&#xff09;&#xff0c;和 Unix 命令&#xff08;如 bash、ls、cat、sed、grep、awk、rsync 等&#…

深度学习编码解码结构-以及kreas简单实现

图像分割中的编码解码结构&#xff08;Encoder-Decoder Model&#xff09;是一种广泛应用的网络架构&#xff0c;它有效地结合了特征提取&#xff08;编码&#xff09;和分割结果生成&#xff08;解码&#xff09;两个过程。以下是对图像分割中编码解码结构的详细解析&#xff…

写一个函数,返回参数二进制中 1 的个数

代码要求 输入一个整数n&#xff0c;输出该数32位二进制中为1的个数&#xff08;包括最高位的符号位&#xff09;&#xff0c;其中负数用补码表示 如&#xff1a;输入&#xff1a;15 &#xff08;15的二进制表示&#xff1a;0000 1111&#xff09; 输出&#xff1a;4 代码实…

音频demo:使用fdk-aac将PCM数据编码成aac数据

1、README a. 编译 编译demo 本demo是使用的开源项目fdk-aac将PCM数据编码成aac音频文件。由于提供的.a静态库是在x86_64的机器上编译的&#xff0c;所以默认情况下仅支持该架构的主机上编译运行。 $ make编译fdk-aac&#xff08;可选&#xff09; 如果想要在其他架构的CP…

20240709 每日AI必读资讯

&#x1f9e0;手把手教你如何打造《星际穿越》中的 TARS 机器人复制品&#xff01; - 一位名为 Charles Diaz 的开发者使用树莓派创建了一个完全功能的 TARS 复制品。 - 使用树莓派3B作为主控&#xff0c;配合Adafruit PCA-9685伺服驱动器&#xff0c;通过编写的步态控制程序…

【版面费优惠丨ACM独立出版丨接受全文摘要投稿】2024年生物医药和智能技术国际学术会议(ICBIT 2024,8月23-25)

“2024年生物医药和智能技术国际学术会议&#xff08;ICBIT 2024&#xff09;”拟定于2024年8月23-25日于珠海召开。近年来&#xff0c;智能技术已经逐渐走入生物医药领域&#xff0c;并在与生物医药领域的融合创新中凸显出巨大的发展潜力和社会价值。人工智能技术在生物医药领…

原创作品——教育课程界面设计

教育行业UI界面设计需直观易懂&#xff0c;确保学习者能迅速上手&#xff0c;减少认知负担。布局清晰&#xff0c;导航便捷&#xff0c;功能按钮和图标设计应符合教育场景&#xff0c;直接支持学习目标的达成&#xff0c;促进高效学习体验。 通过丰富的互动元素&#xff08;如拖…

面试题005-Java-JVM(上)

面试题005-Java-JVM(上) 目录 面试题005-Java-JVM(上)题目自测题目答案1. JVM由哪几部分组成&#xff1f;2. 运行时数据区中包含哪些区域&#xff1f;3. 栈和堆中分别存放什么数据&#xff1f;4. 为什么要将永久代 (PermGen) 替换为元空间 (MetaSpace) &#xff1f;5. 堆空间的…

vue详解

目录 ​编辑 常用指令 v-for v-bind v-if & v-show v-if v-show v-on v-model Vue生命周期 ​编辑 Axios Axios使用步骤 Axios-请求方式别名 Vue简单案例 常用指令 指令:HTML标签上带有 v-前缀的特殊属性&#xff0c;不同的指令具有不同的含义&#xff0c;可…

股票数据分析(K线图、均值图、MACD图、RSI图)--股票日数据

数据 数据是上证指数日行情数据&#xff0c;股票代码000002.sz&#xff0c;原始数据shdata示例如下&#xff1a; 读取数据&#xff1a; import numpy as np import pandas as pd import mplfinance as mpf import matplotlib.pyplot as plt from datetime import datetime imp…