一次预测多个token,Meta新模型推理加速3倍,编程任务提高17% | 最新快讯

本文主要是介绍一次预测多个token,Meta新模型推理加速3倍,编程任务提高17% | 最新快讯,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

量子位公众号 QbitAI

  “预测下一个 token”被认为是大模型的基本范式,一次预测多个 tokens 又会怎样?

  Meta AI 法国团队推出“基于多 token 预测的更快&更好大模型”。

  多 token 预测模型,在编程类任务上表现尤其突出。

  与单 token 预测相比,13B 参数模型在 HumanEval 上多解决了 12% 的问题,在 MBPP 上多解决了 17%。

  小型算法推理任务上,多 token 预测也在分布外泛化方面带来了令人印象深刻的收益。

  不过在自然语言任务上,多 token 预测方法并不能显著提高 7B 模型在数学选择题上的表现了。

  另外一个好处是,即使 batch size 较大,使用4-token 预测训练的模型,推理速度也可提高 3 倍。

  多 token 预测更适合编程

  具体来说,团队设计了一种新的多 token 预测架构,通过n个独立的输出头并行预测n个未来 token。

  使用大量文本数据进行模型训练,包括代码和自然语言数据集。

  再通过实验比较多 token 预测和单 token 预测在多个下游任务上的性能。

  为啥多 token 预测在编程任务和小型算法推理任务上提升更明显?

  团队猜测可能有两个原因:

  第一,编程语言的逻辑结构更严谨,知识的内在联系更紧密。一个关键节点可能影响到后续整个代码块的走向。多 Token 预测能更好捕捉这种长距离依赖。

  第二,相比自然语言,编程语言的词汇量更小。因此即便每次预测多个 Token,难度也没那么大。反而能迫使模型从局部细节中抽身,着眼全局优化。

  除了在 token 层面的实验,团队还在更细粒度的字节级模型上做了尝试。

  他们发现,用 8 字节预测替代下一个字节预测后,模型在 MBPP 上的 Pass@1 指标暴增 67%,在 HumanEval 上也提升了 20%。

  而且推理速度还能再快 6 倍,简直不要太香。

  对于背后原理,团队认为多 token 预测缓解了训练时 Teacher Forcing 和推理时自回归生成之间的分布差异。

  也就是说,在训练的时候,模型看到的都是标准答案,生成的时候却得靠自己。好比人类在家做练习册时有答案,考试时却啥也没有,就会不适应。

  而多 token 预测相当于训练时就逼着模型多想几步,这样到了考场上,才能应对自如。

  从信息论的角度,团队还给出了一个更精确的论证。

  传统的下一个 Token 预测,目标是最小化当前位置的信息熵。而2-Token 预测实际上最小化的是当前和下一位置的信息熵之和。

  数学推导表明,后者其实隐含了更大的互信息权重,也就是更看重当前 Token 和未来 Token 的相关性。这就是为什么多 Token 预测更”有远见”。

  不过在这篇论文中,还有几个未解决的问题。

  比如没有探讨如何自动选择最佳的预测 token 数量n,作者提出,未来可以研究使用损失权重调整或动态调整n来解决最佳n的选择问题。

  此外最佳的词表大小也可能与单 token 预测时不同。

  总之,看过这篇论文之后,大家都更期待 Llama-4 了。

  论文地址:

  https://arxiv.org/abs/2404.19737

来自: 网易科技

这篇关于一次预测多个token,Meta新模型推理加速3倍,编程任务提高17% | 最新快讯的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/961789

相关文章

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

Java中Switch Case多个条件处理方法举例

《Java中SwitchCase多个条件处理方法举例》Java中switch语句用于根据变量值执行不同代码块,适用于多个条件的处理,:本文主要介绍Java中SwitchCase多个条件处理的相... 目录前言基本语法处理多个条件示例1:合并相同代码的多个case示例2:通过字符串合并多个case进阶用法使用

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

SpringQuartz定时任务核心组件JobDetail与Trigger配置

《SpringQuartz定时任务核心组件JobDetail与Trigger配置》Spring框架与Quartz调度器的集成提供了强大而灵活的定时任务解决方案,本文主要介绍了SpringQuartz定... 目录引言一、Spring Quartz基础架构1.1 核心组件概述1.2 Spring集成优势二、J

Redis实现延迟任务的三种方法详解

《Redis实现延迟任务的三种方法详解》延迟任务(DelayedTask)是指在未来的某个时间点,执行相应的任务,本文为大家整理了三种常见的实现方法,感兴趣的小伙伴可以参考一下... 目录1.前言2.Redis如何实现延迟任务3.代码实现3.1. 过期键通知事件实现3.2. 使用ZSet实现延迟任务3.3

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA