首页 > 其他分享 >辅助式文本生成 - 文本生成新范式

辅助式文本生成 - 文本生成新范式

时间:2024-04-26 11:00:23浏览次数:20  
标签:范式 target 模型 生成 draft model 文本

辅助式文本生成 - 文本生成新范式

 

引言

LLM 要跨越从早期采用者到大众市场的鸿沟,其必要条件是价格大众化,也就是降低每词元的价格。

cross the chasm
这种降低最好是“免费”的降低,而不是“讨价还价”的降低。拿电价打比方,这种降低最好是直接的电费降低,而不是使用“省电小妙招”带来的降低,这样才能真正做到大众化。在这种语境下,prompt 压缩、模型量化这类优化就是“讨价还价”型优化,它们要么需要用户具备某些专家性的知识、要么需要用户放弃一些生成质量的一致性要求,总之是需要用户付出一些成本。

模型量化不是“免费”的降价
BLOOM-176B 为例,对提示 Once upon a time, there existed a little girl, who liked to have adventures. She wanted to go to places and meet new people and have fun.
原始 BF16 模型的生成为:She wanted to see the world, and she wanted to be a part of it. She wanted to make a difference, and she wanted to make the world
直接量化后的 INT8 模型生成为:She wanted to learn new things. She wanted to do things she had never done before. She wanted to do things she had never done before. She wanted to
INT8 量化模型结巴了!

辅助式文本生成带来了这种可能性,不需要“头秃”去做 prompt 压缩,也不需要小心翼翼地对模型进行量化以使质量损失控制在可接受的范围内,它通过引入一个“起草 + 审阅”的新范式,引入了一个无损的模型加速范式。其原理如下图所示:

Alt text
假设要对 BLOOM-176B 模型进行加速,在辅助式文本生成的范式中,我们把它叫做 target generator(蓝色框)。我们给它配一个小弟,就叫它 draft generator(黄色框),顾名思义,就是负责给它起草回答的。这样,班子就搭起来了,工作模式就变成了:小弟负责起草,大哥负责审阅。这种范式的好处很直白:

  • 速度快。我们知道,目前的 LLM 几乎全部都是 decoder-only 架构的,其本质是自回归模型,也就是输出需要一个字一个字地生成,这也是 LLM 生成很难加速的本质原因,因为有 step-wise dependency。辅助式文本生成将 step-wise dependency 乾坤大挪移给了开销小的 draft model,而 target model 只需要负责验证的部分,而验证是一个典型的 CLM(Causal Language Modeling) 工作负载,一把头就可以全部验证完。举个实际的例子: 用 LLaMA-2-13B 在 A100 GPU 上生成 128 个词元的时间所花的时间是对同样长度的序列做 CLM 前向所花时间的约 100 倍。因此可以想见,step-wise dependency 的转移,释放了速度的潜能。

  • 生成一致。因为最终输出结果是由 target model 审定的,在使用“精确匹配”的审定策略时,可以做到输出一致,无需生成质量的任何折衷。

完美切中我们的诉求。
我们以上图为例,我们过一遍辅助式生成范式的工作流程:

  • 第一步:由 draft model 为提示 "The orange cat" 生成 K 个补全词。本例中, K 为 3,draft model 生成了 3 个补全词 ate the fish

  • 第二步:将 The orange cat ate the fish 送给 target model 执行前向 logit 计算。target model 算得第 2 个补全词 the 的 logit 并非最大,而是 my 最大,因此拒绝了 draft model 生成的第 2 个词及其之后的词,也即其接受了 的补全词,最终本轮的输出补全词为 ate my,词数为 2。

  • 第三步: 确定是否满足结束条件,如满足结束生成;如不满足,提示变成 "The orange cat ate my" 返回第一步,继续生成。

在上述流程中:K 为草稿窗口,即每次打草稿生成多少个词,也叫 look ahead window; 为接受率,我们用 表示;最终经 target model 审定后输出的词数为 ,我们叫它压缩率(compression ratio)

由此,我们可以得到一个辅助式文本生成的经验加速公式:

其中 draft model 的每词元延迟,target model 的每词元延迟。
可以看到,想要获得好的加速需要提高接受率 、降低 ,这两者有时是正相关的,因此需要折衷。

What-If 分析

相关文章

  • 为 IIncrementalGenerator 增量 Source Generator 源代码生成项目添加单元测试
    本文属于IIncrementalGenerator增量SourceGenerator源代码生成入门系列博客,本文将和大家介绍如何为源代码生成项目添加单元测试添加单元测试的作用不仅可以用来实现通用的单元测试提高质量的功能,还能用来辅助调试IIncrementalGenerator增量SourceGenerator源代码生成项......
  • 使用 ForAttributeWithMetadataName 提高 IIncrementalGenerator 增量 Source Generat
    本文将告诉大家如何使用ForAttributeWithMetadataName方法用来提高IIncrementalGenerator增量SourceGenerator源代码生成的开发效率以及提高源代码生成器的运行效率这是一个在2022的6月15才合入的新功能。原因是Roslyn团队发现了大量的源代码生成器和分析器项目都......
  • 【vue3入门】-【2】文本插值
    文本插值最基本的数据绑定形式是文本插值,它使用的是”Mustache“语法(即双大括号)<script>exportdefault{data(){return{msg:"神奇的语法"}}}//以上为文本插值的固定使用格式</script><template><h3>模版语法</h3><p>{{msg}}</p></templ......
  • 36.mybatis-plus代码自动生成器
    很重要的功能:参考官网:https://baomidou.com/pages/779a6e/#快速入门mybatis-plus自动帮你生成pojocontroller.....东西没啥废话上代码这个依赖: <dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifa......
  • vim查看linux文件目录,05Linux.浏览目录和文件,VIM文本编辑器
    vim查看linux文件目录,05Linux.浏览目录和文件,VIM文本编辑器一、浏览目录和文件查看目录、查看文件属性1)查看根目录/下有哪些文档或子目录,观察颜色有什么规律ls/2)以长格式显示结果,对比/bin、/usr/bin/目录详细属性ls-ld/bin/usr/bin/【-d只显示目录本身】3)......
  • linu管理文本文件
    vi\vim编辑器的三种工作模式命令模式(Commandmode):按键编辑器都理解为命令,以命令驱动执行不同的功能。此模型下,不能自由进行文本编辑。输入模式(Insertmode):也就是所谓的编辑模式、插入模式。此模式下,可以对文件内容进行自由编辑。底线命令模式(Lastlinemode):以:开始,通常用于文件......
  • 生成函数
    生成函数我们可以把生成函数看作是代数对象,其形式上的处理使得人们可以通过代数手段计算一个计数问题。通常我们默认级数是收敛的。(主要原因在于代数手段往往是需要保证收敛的)本文章不涉及多项式题目(交给考拉)普通生成函数的定义为:\[\displaystyle\sum_{n}a_nx^n\]常见的......
  • Unity性能优化——字符串和文本
    字符串和文本字符串和文本的处理不当是Unity项目中性能问题的常见原因。在C#中,所有字符串均不可变。对字符串的任何操作均会导致分配一个完整的新字符串。这种操作的代价相对比较高,而且在大型字符串上、大型数据集上或紧凑循环中执行时,接连不断的重复的字符串可能发展成性能......
  • vscode 配置c/c++环境,无法生成 *.exe文件
    ​【问题】:    使用vscode配置c/c++环境时,提示无法构建失败。 【解决方案】:    1.当前结合网上找的资料已经检查过,tasks.json和launch.json文件,并无配置错误。    2.F5调试时,终端输出错误调试信息如下:启动调试任务时,执行了2条命令。1)cmd/c......
  • 视频生成SORA随想
    读了有关OpenAI发布'SORA'的文章,对这一创新模型所展示的人工智能进步感到非常印象深刻。从文本提示生成复杂的视频序列具有真实感和深度,令人惊叹。看到人工智能技术的发展不仅能理解复杂的提示,还能将其转化为视觉上令人愉悦的叙述,真的非常迷人。回顾摄影的历史,大约100年前,由于设......