当前位置: 首页 > 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还有这个问题呢…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改&#xff0c;实现简单cat命令 输出信息到显示器&#xff0c;你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...

spring Security对RBAC及其ABAC的支持使用

RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型&#xff0c;它将权限分配给角色&#xff0c;再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...