在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

谷歌开源 AI 微调方法: Distilling Step-by-Step

  • 2023-11-08
    北京
  • 本文字数:1379 字

    阅读完需:约 5 分钟

大小:681.48K时长:03:52
谷歌开源 AI 微调方法: Distilling Step-by-Step

华盛顿大学和谷歌研究中心的一个团队最近开源了 Distilling Step-by-Step(逐步蒸馏),一种用于微调规模较小的语言模型的技术。与标准微调相比,逐步蒸馏需要的训练数据更少,并且生成的模型更小,但模型性能却优于参数规模是它 700 倍的小样本提示大型语言模型 (LLM)。

 

虽然 LLM 一般可以在提示较少的情况下在多种任务上有良好的表现,但由于其内存和算力要求过高,模型的托管是比较有挑战的。规模较小的模型在微调后也可以有良好的表现,但这需要工程师手动创建针对具体任务优化的数据集。逐步蒸馏的关键思想是使用 LLM 自动生成一个小型微调数据集,其中的数据有一个输入和一个输出标签,以及选择这个输出标签的“理由”。微调过程会训练这个小模型来预测输出标签并生成对应的理由。在 NLP 基准上评估时,小型微调模型的性能优于 540B PaLM 模型,同时仅需要这个基准测试的全部微调数据的 80%。据谷歌称:


我们展示了,逐步蒸馏既减少了构建针对特定任务的较小模型所需的训练数据集规模,也减少了实现甚至超越小样本提示 LLM 的性能水平所需的模型大小。总的来说,逐步蒸馏提出了一种可以高效利用资源的范例,可以解决模型大小和所需训练数据之间的权衡问题。


研究表明,增加 LLM 中的参数规模可以提高其性能,目前最先进的模型(例如 PaLM)拥有数百亿个参数。然而,这些大型模型价格昂贵,且难以用于推理,因为它们需要多个并行连接的 GPU 才能把这么多参数保存在内存里。最近的研究开发出了规模稍小的模型(例如 Meta 的 Llama 2),其性能表现差不多,但参数少了一个数量级;然而,这些小一些的模型还是很庞大,需求的算力也很高。

 

要做出在特定任务上表现良好的小模型的一种方法,是使用针对具体任务收集的数据集来微调小规模语言模型。虽然这个数据集可能相对较小(大约有数千个示例),但其数据收集起来可能还是费时费钱。另一种选择是知识蒸馏,也就是使用大型模型作为较小模型的老师。 InfoQ 最近报道了谷歌开发的一项技术,使用 PaLM LLM 来创建训练数据集,最后生成的微调模型的性能可与规模大 10 倍的 LLM 相媲美。

 

逐步蒸馏确实需要微调数据集,但它减少了创建高性能模型所需的数据量。源数据集通过思维链提示输入 PaLM LLM,要求模型给出其答案的理由。输出结果是修正后的微调数据集,其中包含原始输入和答案以及理由。这个较小的目标模型经过微调来执行两项任务:回答原始问题并生成理由。

 

谷歌使用四个 NLP 基准测试评估了他们的技术,每个基准都包含一个微调数据集。他们使用逐步蒸馏来修正这些数据集,并使用了参数不到 1B 的微调 T5 模型。他们发现,这些模型在仅使用数据集的一小部分数据的情况下,性能就比基线微调模型要好;在某些情况下只要 12.5% 的数据就有这样的表现。他们还发现,他们的 770M 参数模型在 ANLI 基准测试中的性能优于大它 700 倍的 540B 参数 PaLM,同时只需要 80% 的微调数据集数据。

 

在 X(以前的 Twitter)上关于这项工作的讨论中,人工智能企业家 Otto von Zastrow 写道:


这些结果非常厉害。我会把这种办法叫做合成数据生成,而不是蒸馏,我真的很好奇,如果你根据每个示例问题的合成理由来训练原始的 LLM 会发生什么事情。


逐步蒸馏的源代码和训练数据集可在 GitHub 上获取。 Google Cloud 的 Vertex AI 平台还提供该算法的非公开预览。

 

原文链接

https://www.infoq.com/news/2023/10/google-distillation/

2023-11-08 08:004176

评论

发布
暂无评论
发现更多内容

C++中glog源码剖析以及如何设计一个高效 log模块

泰伦卢

c++ 编程语言

爬虫(108)Python 3.8的超酷新功能(接近一万字,请耐心享用,而且建议收藏)

志学Python

python 爬虫 python3.x python升级

我愿沉迷于学习,无法自拔(二)

孙瑜

深度思考 个人成长

每天打卡python面试题 - 在一行中捕获多个异常(块除外)

志学Python

Python 面试 python 爬虫 python3.7

Flutter引擎源码解读-Flutter是如何在iOS上运行起来的

Geek_70xtik

flutter ios 移动应用 跨平台 dart

周报 01|多点分享,少点创作

强劲九

学习 读书

kettle(Pentaho Data Integration) 使用"最佳"实践

稻草鸟人

Java kettle

周日福利来了

志学Python

Python 福利 python教程 python视频教程

初步了解MyBatis

Java收录阁

mybatis

爬虫(107)Python 3.7的超酷新功能(接近一万字,请耐心享用,而且建议收藏)

志学Python

Python 最佳实践 python 爬虫 python3.7 python升级

目标:2020年学会写文章

wiflish

Kafka系列第1篇:Kafka是什么?它能干什么?

z小赵

大数据 kafka 推荐 实时计算

​成功的人,都是 “狠角色”

非著名程序员

程序员 提升认知 成功学 自律

Kafka系列第2篇:安装测试

z小赵

大数据 kafka 推荐 实时计算

游戏夜读 | 2020周记(4.3-4.10)

game1night

Windows Terminal添加右键菜单

simon

Windows Terminal 右键菜单 终端 开发者工具 命令行

GroupBy 用法的三重境界,面试终结者

Hyun

数据库 sql 大数据 性能优化 数据分析

太极宗师与华晨宇

伯薇

水平思考力 电视剧 综艺节目 歌手

3NF建模&维度建模

常海峰

Go语言获取程序各类资源的绝对路径的方法

良少

Python 路径 动态 绿色 Go 语言

用行动解决情绪,情绪永远是累赘

熊斌

情绪控制 团队协作

如何写排版优雅简洁的文章?

池建强

写作 排版

Hive 中的 GroupBy, Distinct 和 Join

tkanng

sql 大数据 hadoop hive

运维常见问题及排查思路

编程随想曲

运维

每日一道python面试题 - Python的函数参数传递

志学Python

Python 面试 爬虫 python 爬虫 python3.x

如何优雅的接收正在运行古董代码?

冰临深渊

项目管理 架构

关于5G RCS的产品猜想

机器鸟

什么是 MQ ?

itfinally

系统设计 MQ

这里有一个慢 SQL 查询等你来优化

程序猿石头

MySQL 数据库 性能优化 后端

高仿瑞幸小程序 01 初建项目,引入Vant Weapp

曾伟@喵先森

小程序 微信小程序 大前端 vant

MyBatis核心功能介绍

Java收录阁

mybatis

谷歌开源 AI 微调方法: Distilling Step-by-Step_生成式 AI_Anthony Alford_InfoQ精选文章