写点什么

谷歌开源 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:003714

评论

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

【C语言深度剖析】重点详解函数的形参和实参、传值和传址

Albert Edison

开发语言 传值 C语音 9月月更 传址

全球新兴市场移动应用报告

易观分析

移动应用

支撑全产业AI,需要怎样的算力服务?

脑极体

「趣学前端」今日祝福不限量,批量导入在路上

叶一一

前端 设计思维 9月月更

哈希索引

急需上岸的小谢

9月月更

这个中秋,国潮元宇宙的A新玩法是……?

文心大模型

库调多了,都忘了最基础的概念 《锁与线程2终结篇》

知识浅谈

线程 9月月更

云渲染为设计行业带来哪些福利?

3DCAT实时渲染

C++学习------cmath头文件的源码学习02

桑榆

c++ 9月月更

Python 教程之变量(1)—— 变量、表达式、条件和函数

海拥(haiyong.site)

Python 9月月更

社招前端二面常见面试题

coder2028

JavaScript 前端

LeetCode-316. 去除重复字母&&1081.不同字符的最小子序列(Java实现)

bug菌

9月日更 Leet Code 9月月更

为什么低代码和专业代码走向融合才能破解低代码困境?

牛刀专业低代码

低代码 低代码平台

当代用电行为大赏:有人心疼电费,有人靠屋顶光伏“理财”

脑极体

Ansible如何使用lookup插件模板化外部数据

山河已无恙

ansible 9月月更

学人工智能难吗?怎么用它赚到钱?

felix

人工智能 赚钱 副业赚钱 算法

Python 教程之数据分析(7)—— Jupyter Notebook 入门

海拥(haiyong.site)

Python 9月月更

Nodejs安装及环境配置

nodejs NVM 9月月更

redis数据类型以及它们的底层实现数据结构

想要飞的猪

LeetCode-448. 找到所有数组中消失的数字(Java)

bug菌

9月日更 Leet Code 9月月更

ERP是什么?

优秀

ERP

数据治理(十二):Ranger2.1.0源码编译

Lansonli

数据治理 9月月更

「工作小记」多个页面的相似操作公共化设计方案

叶一一

前端 设计思维 9月月更

2022-09-09:给定一个正整数 n,返回 连续正整数满足所有数字之和为 n 的组数 。 示例 1: 输入: n = 5 输出: 2 解释: 5 = 2 + 3,共有两组连续整数([5],[2,

福大大架构师每日一题

算法 rust 福大大

Java进阶(十三)servlet监听器

No Silver Bullet

Java Servlet 9月月更

【JS】防抖与节流---在定义时返回的是回调函数

Sam9029

JavaScript 前端 防抖节流 9月月更

【JS】两种实现-懒加载的方式-附无限滚动案例

Sam9029

JavaScript 前端 懒加载 9月月更

Java进阶(十)tomcat中context配置

No Silver Bullet

tomcat Context 9月月更

Web & Electron 平台即时通讯产品的技术选型

融云 RongCloud

Web Electron 即时通讯

2022 WAIC 闭幕,融云提供分论坛元宇宙直播技术支持

融云 RongCloud

直播 元宇宙

使用 Angular Transfer State 的一个具体例子

汪子熙

typescript 前端开发 angular Web Component 9月月更

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