当前位置: 首页 > news >正文

如何利用大模型蒸馏出小模型实现降本


如何让小模型的推理效果在某些领域比 ChatGPT 这样的大模型还要更强?这篇论文提供了一个思路:https://arxiv.org/abs/2212.10071,借助思维链(CoT)逐步解决复杂推理任务的能力,可以使用大模型作为推理教师,针对一批数据集,让大模型给出详尽的解答思路,然后把问题和解题过程交给学生模型进行 Fine-tuning。 这个解决思路也有一个专有名词,叫做“模型蒸馏”,其效果还是非常亮眼的,在保持同样的推理能力,甚至超越大模型的情况下,模型的大小降低到原来的 1/500~1/25。这可以帮助很多特定场景降低成本,例如使用自建的蒸馏小模型替代直接调用 ChatGPT,很多简单场景都适用,如果蒸馏出来的模型足够小,还可以直接在端侧(移动设备或嵌入式系统)部署,在用户本地完成推理,进一步降低服务成本。

最近的研究表明,思维链(Chain-of-Thought,CoT)提示可以引导语言模型逐步解决复杂的推理任务。然而,基于提示的CoT方法依赖于如GPT-3 175B等非常庞大的模型,这在大规模部署上是不可行的。在本文中,我们利用这些大型模型作为推理教师,以实现较小模型的复杂推理并将模型大小要求降低数个数量级。我们提出了Fine-tune-CoT,一种从非常大的教师模型中生成推理样本以微调较小模型的方法。我们在各种公共模型和复杂任务上评估了我们的方法。我们发现Fine-tune-CoT使得较小模型具有显著的推理能力,远远超过基于提示的基线甚至在许多任务中超过教师模型。此外,我们通过利用教师模型生成每个原始样本的多个不同解释的能力来扩展我们的方法。用这样多样化的推理丰富微调数据,可以在各种数据集上实现显著的性能提升,即使对于非常小的模型也是如此。我们进行了消融实验和样本研究,以了解学生模型推理能力的出现。e394a3871abbef80c3d7ca114c2f05b4.jpeg

图1:Fine-tune-CoT利用由教师生成的推理来教授学生。我们通过零-shot思维链推理提示一个非常大的教师模型,如GPT-3 175B,来解决复杂问题。然后,我们使用推理样本来微调一个更小的学生模型。详情请参见图2。

1e791f5b8bfa1228f10094d3cd8d8e49.jpeg

图2:我们提出的Fine-tune-CoT方法的详细概述。步骤1:通过生成多步推理解释(绿色),提示一个非常大的教师模型来解决复杂问题(黄色)。步骤2:根据最终预测的正确性对完成进行过滤(红色)。问题、推理和答案用于构成推理样本,包括提示和多步解决方案。步骤3:策划过的推理样本用于微调一个小型、轻量级的学生以展示推理能力。基于LM的教师的应用实现了多样化的推理——为每个原始样本生成多个不同的解释,以丰富微调数据。这提升了学生模型的性能,而无需额外的人工注释。

实操代码

OpenAI API实验 OpenAI API实验已在oai模块中实现。请参考notebooks/example_oai_finetune_cot.ipynb,了解如何从头到尾运行Fine-tune-CoT。自定义实验(在GPU上) 自定义实验基于PyTorch Lightning实现,代码位于custom模块中。请参考custom_train.pyscripts/custom/*.sh,了解如何使用Fine-tune-CoT对模型(如T5、Flan-T5和GPT-2)进行微调。

开始搭建

pip install -r requirements.txtpython setup.py develop

环境

该代码已在Python<=3.10、PyTorch Lightning<=1.9、PyTorch>=2.0下进行测试。

数据

我们很自豪地分享我们的所有原始实验数据!所有数据都以json或jsonl格式组织,以供您使用&nbsp;:)云存储文件夹链接:https://www.dropbox.com/sh/hwcncpyomx87h20/AACqgVdd-ZzBQ3ncJcKqw0cVa?dl=0https://drive.google.com/drive/folders/1C6kah3WV36N8omlUl-TeU9tsJADZNaJV

文件列表:

ldataset.tar.gz:以统一的json格式编制的12个任务数据集 放置在PROJECT/data/dataset/目录下lcompletion_data.tar.gz:所有教师和学生的完成数据,即所有实验的推理数据,解压后约8GB&nbsp;放置在PROJECT/saved/completion_data/目录下lteacher_completion_data.tar.gz:Zero-shot-CoT(带有多样化推理)在默认教师模型text-davinci-002上使用OpenAI API的完成数据。是completion_data.tar.gz的子集,价值约$1000+,由KAIST的OSI实验室以为您提供。&nbsp;放置在PROJECT/saved/completion_data/目录下lfinetune_data.tar.gz:用于通过微调API微调OpenAI学生的所有数据,以jsonl格式提供。这些数据源自教师完成数据,并可通过我们的代码生成。&nbsp;放置在PROJECT/saved/finetune_data/目录下

生成论文结果

在下载完整的completion_data.tar.gz后,您可以运行notebooks/results.ipynb来生成我们论文中的所有结果表格和图表。该代码将(重新)评估包含在完成数据中的所有原始文本模型输出。

补充资源

基于模板的划分(论文附录&nbsp;E.3)&nbsp;MultiArith和Date Understanding的基于模板的划分保存在/data/splits/*__template.json中。少量提示&nbsp;从Wei 2022中适应的少量提示保存在/data/few_shot_cot_prompts.json中。

数据结构

data.dataset.Dataset

{"metadata": {"dataset_key": "multiarith"},"data": [{"sample_index": 0,"question": "string","answer": "string","rationale": "string?"}]}data.completion.CompletionDataset{"metadata": {"dataset_key": "multiarith","base_model": "curie","finetune_key": "zs_cot_multiarith","train_key": "ft_cot","prediction_template": "ft_cot_token",},"data": {"<sample_index>": [{"sample_index": 0,"completion_index": 0,"question": "string","answer": "string","prompt": "string","completion": "string","finish_reason": "string","reasoning_prompt": "string?","reasoning_completion": "string?","reasoning_finish_reason": "string?",}]}}

数据组织·

<model_key> = B_<base_model>_T_<train_key>

文件组织模式

saved/|–– completion_data/|–– B_<BASE_MODEL>__C_<COMPLETION_KEY>/|-- D_<DATESET_KEY>.json # base model inference|-- F_<FINETUNE_KEY>__D_<DATESET_KEY>.json # default fine-tuned model inference|-- F_<FINETUNE_KEY>__T_<TRAIN_KEY>__D_<DATESET_KEY>.json # custom fine-tuned model inference|–– finetune_data/|–– P_<PLATFORM_KEY>/|–– F_<FINETUNE_KEY>{.*|/}|–– model_metadata/|–– B_<base_model>|–– F_<FINETUNE_KEY>__T_<train_key>.json文件组织示例saved/|–– completion_data/|–– B_text-davinci-002__C_zs_cot/|–– B_text-davinci-002__C_zs_cot_long/|–– B_text-davinci-002__C_fs_cot/|–– B_curie__C_zs_cot/|–– B_curie__C_fs_cot/|–– B_curie__C_zs/|–– B_curie__C_ft_cot/|–– finetune_data/|–– F_zs_cot_multiarith/ # text-davinci-002_zs_cot|–– F_zs_cot_long_multiarith/|–– model_metadata/|–– B_curie/|–– F_zs_cot_multiarith.json

相关文章:

如何利用大模型蒸馏出小模型实现降本

如何让小模型的推理效果在某些领域比 ChatGPT 这样的大模型还要更强&#xff1f;这篇论文提供了一个思路&#xff1a;https://arxiv.org/abs/2212.10071&#xff0c;借助思维链&#xff08;CoT&#xff09;逐步解决复杂推理任务的能力&#xff0c;可以使用大模型作为推理教师&a…...

CentOS 中启动 Jar 包

在 CentOS 中启动一个 Jar 包&#xff0c;可以通过 java 命令来实现。具体步骤如下&#xff1a; 确认 Java 环境已经安装并配置好了。 打开终端或者 SSH 连接到 CentOS 服务器。 执行以下命令启动 Jar 包&#xff1a; 复制插入 java -jar /path/to/your/jar/file.jar复制插…...

法治智能起航 | 拓世法宝AI智慧政务一体机重塑法治格局,开启智能司法新篇章

在科技的巨轮推动下&#xff0c;我们的社会正快速迈向一个以数据和智能为核心的新时代。在这个波澜壮阔的变革中&#xff0c;人工智能&#xff08;AI&#xff09;显得尤为突出&#xff0c;它不仅是科技进步的象征&#xff0c;更是未来发展的助力者。 2023年&#xff0c;最高人…...

【华为云IaaS基础三件套之----计算ECS、网络EIP、存储EVS】

MD[华为云IaaS基础三件套----计算、网络、存储] 华为云IaaS基础三件套之----计算ECS、网络EIP、存储EVS 说明: 这里只是简单从计算/网络/存储&#xff0c;进行介绍&#xff0c;阐明云上对于云下的优势&#xff1b;因ECS是三者综合&#xff0c;故最后说明。 1.网络----弹性公…...

c语言数据结构---广义表

#include<stdio.h> #include<stdlib.h> typedef struct GNode{//广义表 int NodeTag; //标志域union{ char data;struct GNode *sublist;};struct GNode *next; }*PGNode,PG; void CreateGList(PGNode &GL) {char ch;scanf("%c", …...

2023.11.12使用flask对图片进行黑白处理(base64编码方式传输)

2023.11.12使用flask对图片进行黑白处理&#xff08;base64编码方式传输&#xff09; 由前端输入图片并预览&#xff0c;在后端处理图片后返回前端显示&#xff0c;可以作为图片处理的模板。 关键点在于对图片进行base64编码的转化。 使用Base64编码可以更方便地将图片数据嵌入…...

MATLAB中Filter Designer的使用以及XILINX Coefficient(.coe)File的导出

文章目录 Filter Designer的打开滤波器参数设置生成matlab代码生成XILINX Coefficient(.COE) File实际浮点数的导出官方使用教程 Filter Designer的打开 打开Filter Designer&#xff1a; 方法一&#xff1a;命令行中输入Filter Designer&#xff0c;再回车打开。 方法二&…...

js 深度学习(四)

函数 var test function test1(){var a 1,b2console.log(a,b)test1()//递归 } console.log(test.name) //test1 test1() //报错匿名函数表达式 函数自变量 var test function(){->匿名函数var a 1,b2console.log(a,b)test1()//递归 }var test function(a,b){var a 1,b2…...

leetcode刷题日记:121. Best Time to Buy and Sell Stock( 买卖股票的最佳时机)

题目给了我们一组数prices&#xff0c;其中prices[i]表示第i天的股票价格&#xff0c;需要我们求出买卖股票所能获得的最大收益。 我们的第一想法就是从算出每一种买卖股票的情况然后求出里面的最大值&#xff0c;这样我们就能得到最大收益是多少&#xff0c;但是这种情况过于复…...

Mac 本地部署thinkphp8【部署环境以及下载thinkphp】

PHP的安装以及环境变量配置 1 PHP安装&#xff1a;在终端输入brew install php 这里是PHP下载的最新的 如果提示‘brew’找不到&#xff0c;自己搜索安装吧&#xff0c; 不是特别难 2 环境变量配置 终端输入vim ~/.bash_profile 输入export PATH"/usr/local/Cellar/php/8.…...

【汽车电子】CAN总线分析仪使用介绍(PCAN/同星CAN卡)

本篇文章以CAN卡的使用为基本线索&#xff0c;介绍了在汽车电子领域涉及的一些CAN卡使用流程&#xff0c;搭配强大的上位机可以实现诸多功能。文章并没有局限于一种CAN卡&#xff0c;而是针对PCAN和同星的CAN卡分别以常用CAN报文收发以及诊断控制台实现这两种方向进行了CAN卡使…...

C //例 7.13 有一个3*4的矩阵,求所有元素中的最大值。

C程序设计 &#xff08;第四版&#xff09; 谭浩强 例 7.13 例 7.13 有一个3*4的矩阵&#xff0c;求所有元素中的最大值。 IDE工具&#xff1a;VS2010 Note: 使用不同的IDE工具可能有部分差异。 代码块 方法&#xff1a;使用指针、动态分配内存 #include <stdio.h> …...

基于SSM的供电所档案管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…...

excel用RAND函数生成一个大于0小于1的随机数

插入-》函数&#xff1a; 选择RAND函数&#xff1a; 点击“继续”&#xff1a; 点击“确定”&#xff0c;就生成随机数了&#xff1a;...

详解IP安全:IPSec协议簇 | AH协议 | ESP协议 | IKE协议

目录 IP安全概述 IPSec协议簇 IPSec的实现方式 AH&#xff08;Authentication Header&#xff0c;认证头&#xff09; ESP&#xff08;Encapsulating Security Payload&#xff0c;封装安全载荷&#xff09; IKE&#xff08;Internet Key Exchange&#xff0c;因特网密钥…...

mysql使用--数据库的基本操作

在MYSQL中&#xff0c;一些表的集合称为一个数据库。MYSQL服务器管理若干个数据库&#xff0c;每个数据库下都可有若干个表。 1.展示数据库 SHOW DATABASES; 2.创建数据库 如&#xff1a;CREATE DATABASE myname; 更智能语法&#xff0c;可用&#xff1a;CREATE DATABASE IF …...

计算机毕业设计选题推荐-个人记账理财微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...

如何利用IP代理进行海外推广?

在当今数字化的时代&#xff0c;网络营销已经成为企业策略的重要组成部分。而对于进去海外市场的跨境玩家来说&#xff0c;海外的推广推广是重中之重。然而&#xff0c;在开展推广的过程中&#xff0c;我们常常会遇到各种挑战&#xff0c;如地域限制、访问速度慢等。 为了解决…...

使用FFmpeg转封装为hls(m3u8)流

​ 改造ffmpeg/doc/examples/remuxing.c&#xff0c;支持将输入流转封装为hls协议对应的github地址&#xff1a;GitHub - yagerfgcs/FFmpeg at examples/remuxing_support_hls修改点&#xff1a;增加设置hls头 // example:https://www.ffmpeg.org/ffmpeg-all.html#hls-2 // f…...

npm install导致的OOM解决方案

文章目录 问题记录解决方法Linux重启排查方法 如何排查Linux自动重启的原因 问题记录 我在华为云服务器配置npm开发环境的时候&#xff0c; SSH远程连接一直掉线&#xff0c;无奈提了工单&#xff0c;被告知是NPM install导致的OOM问题。无语了&#xff0c;破NPM还有这个问题呢…...

Qwen3-VL:30B开源大模型实践:星图平台提供模型微调+量化+蒸馏全工具链

Qwen3-VL:30B开源大模型实践&#xff1a;星图平台提供模型微调量化蒸馏全工具链 1. 开篇&#xff1a;为什么你需要一个私有化的多模态助手&#xff1f; 想象一下这个场景&#xff1a;你正在和团队讨论一个产品设计图&#xff0c;需要快速分析图片中的UI布局是否合理&#xff…...

PyTorch 2.8镜像一键部署教程:支持Slurm集群调度的HPC环境快速接入

PyTorch 2.8镜像一键部署教程&#xff1a;支持Slurm集群调度的HPC环境快速接入 1. 镜像概述与核心优势 PyTorch 2.8深度学习镜像是一个经过深度优化的高性能计算环境&#xff0c;专为现代AI工作负载设计。这个预配置环境最大的特点是开箱即用&#xff0c;免去了繁琐的环境配置…...

战争鼓点响起:AI生成大片感战斗音乐作品

战争鼓点响起&#xff1a;AI生成大片感战斗音乐作品 1. 从文字到战歌&#xff1a;AI音乐生成初体验 想象一下这样的场景&#xff1a;你正在制作一部史诗级的战斗短片&#xff0c;画面中千军万马奔腾&#xff0c;刀光剑影交错&#xff0c;但总觉得缺少点什么。没错&#xff0c…...

当知识有了‘关系网‘:LightRAG如何让大模型‘秒懂‘你的文档?

想象一下&#xff0c;你有一座藏书万卷的图书馆&#xff0c;但你找书的方式只有一种——记住每本书某个页面的关键词&#xff0c;然后靠"猜"来定位。 这&#xff0c;就是传统RAG系统的尴尬处境。 今天要介绍的这个开源项目LightRAG&#xff0c;被顶会EMNLP 2025接收…...

Rust DLL注入技术深度解析:Rust-for-Malware-Development完整实现指南

Rust DLL注入技术深度解析&#xff1a;Rust-for-Malware-Development完整实现指南 【免费下载链接】Rust-for-Malware-Development Rust for malware Development is a repository for advanced Red Team techniques and offensive malwares & Ransomwares, focused on Rus…...

Python 3.14 JIT编译延迟高达83ms?这不是Bug,是设计——揭秘AST→LLVM IR→Native Code三级缓存失效链

第一章&#xff1a;Python 3.14 JIT编译器性能调优架构设计图Python 3.14 引入的实验性 JIT 编译器&#xff08;代号 “Triton”&#xff09;采用分层编译策略&#xff0c;将热点函数动态划分为解释执行、字节码优化、LLVM IR 生成与本地机器码缓存四个协同层级。其核心设计目标…...

影刀+即刻:碎片化信息自动归类的联动玩法

影刀与即刻联动实现信息自动归类影刀RPA作为自动化工具&#xff0c;与即刻APP的推送功能结合&#xff0c;可高效管理碎片化信息。以下为具体实现方法&#xff1a;创建即刻机器人 在即刻APP中创建自定义机器人&#xff0c;设置关键词触发规则。例如设置"#工作""#…...

期权到期日别慌!手把手教你搞定上交所股票期权的行权与交割(附避坑清单)

期权到期日实战指南&#xff1a;从行权准备到交割避坑全流程解析 手机屏幕上的红色倒计时提醒着期权合约即将到期&#xff0c;作为刚接触期权交易不久的新手&#xff0c;此刻最需要的不再是复杂的概念解释&#xff0c;而是一份能握在手中的应急操作清单。本文将用最直白的语言拆…...

告别SpeedGoat:低成本搭建Simulink Real-Time硬件在环(HIL)平台,基于PC+松下伺服实战

低成本搭建Simulink实时控制平台&#xff1a;基于PC与松下伺服的硬件在环方案 在工业自动化与运动控制领域&#xff0c;实时硬件在环&#xff08;HIL&#xff09;测试是验证算法有效性的关键环节。传统方案如SpeedGoat等专用设备虽性能稳定&#xff0c;但动辄数十万的成本让许多…...

MATLAB实战:如何用三种噪声干扰模拟器提升脉冲雷达抗干扰能力

MATLAB实战&#xff1a;三种噪声干扰模拟器在脉冲雷达抗干扰测试中的应用 雷达系统在现代电子战中扮演着关键角色&#xff0c;而抗干扰能力是评估雷达性能的重要指标。本文将深入探讨如何利用MATLAB构建射频噪声、调幅噪声和调频噪声三种干扰模拟器&#xff0c;通过完整的代码实…...