一次预测多个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编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

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

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