DataLearner 标志DataLearnerAI
最新AI资讯
大模型排行榜
大模型评测基准
大模型列表
大模型对比
资源中心
工具
语言中文
DataLearner 标志DataLearner AI

专注大模型评测、数据资源与实践教学的知识平台,持续更新可落地的 AI 能力图谱。

产品

  • 评测榜单
  • 模型对比
  • 数据资源

资源

  • 部署教程
  • 原创内容
  • 工具导航

关于

  • 关于我们
  • 隐私政策
  • 数据收集方法
  • 联系我们

© 2026 DataLearner AI. DataLearner 持续整合行业数据与案例,为科研、企业与开发者提供可靠的大模型情报与实践指南。

隐私政策服务条款
  1. 首页/
  2. 博客列表/
  3. 博客详情

解决大语言模型的长输入限制:MetaAI发布MegaByte最高支持几百万上下文输入!

2023/10/09 22:43:09
3,962 阅读
long-contextMegaByte长上下文长输入

尽管OpenAI的ChatGPT很火爆,但是这类大语言模型有一个非常严重的问题就是对输入的内容长度有着很大的限制。例如,ChatGPT-3.5的输入限制是4096个tokens。MetaAI在前几天提交了一个论文,提出了MegaByte方法,几乎可以让模型接受任意长度的限制!

本文将简单介绍这个方法!论文名称:《MEGABYTE: Predicting Million-byte Sequences with Multiscale Transformers》。

  • transformer模型的输入限制问题
  • MetaByte核心思想简介
  • MetaByte的测试结果
  • MetaByte的总结

transformer模型的输入限制问题

尽管目前的大语言模型在较短序列(几千个tokens以内)的应用场景下有着惊人的效果,但是数百万序列的输入依然是一种刚需,包括音乐、图片、视频、小说、代码等,它们的输入长度通常都是远远超过当前大语言模型的输入限制。主要原因是自注意力机制的“成本”随着输入成二次方增长,以及每个位置都需要计算大型的前馈网络。

借用Raimi Karim博客里面的示意图如下:

可以看到,在自注意力计算中,输入序列的每一个位置都要与其它位置计算得分,因此,对于输入为$n$的transformer模型来说,它的计算复杂度是$\mathcal{O}(n^2)$。尽管之前也有很多方法提出了一些很有效率的注意力机制,但是长序列建模最大的问题其实是每个位置都要计算巨大的前馈网络。这是其中最费时间的!

而本次MetaAI提出的这个方法,计算复杂度只有$\mathcal{O}(n^{4/3})$。其未来的应用前景巨大!

MetaByte核心思想简介

为了解决当前transformer模型对输入的限制,MetaAI提出的MetaByte引入了一个概念,称为patch,将模型的输入序列分割成固定大小的patches,这是一个类似于token的概念,但是显然比token覆盖的范围要宽。然后通过一个全局的模块,建立一个大的自回归transformer,把输入和输出从tokens变成patches。同时,引入了一个本地的模块,用于每个patch内部的字节的预测,其输入是从全局模块来的上下文patches表示结果,输出是预测下一个patch,这是一个小的自回归模型。

上述思想可以用下图表示:

可以看到,MetaByte的输入就是patch,然后对每一个patch做embedding,将patch的embedding结果输入到全局模块(一个自回归transformer网络),它的输出继续作为本地模块的输入,即用一个个小的自回归transformer继续向前计算,得到结果。

这个方法与当前transformer模型还有一个最重要的区别是不需要做tokenization!这是一个非常重要的特性。tokenization是当前大语言模型的一种通用做法,尽管tokens相比较单词具有更好的一致性,处理起来更加容易。但是,Tokenization意味着LLMs实际上不是完全的端到端。还有一个完全不同的阶段,有自己的训练和推理,并且需要额外的库。它使得引入其他模态变得复杂。

Tokenization还具有许多微妙的问题,以如下的图为例,GPT-3模型能力很强,但是在简单的单词反转问题上却出错了。

原因大概就是GPT-3看单词是以token的视角来的,alphabet在GPT-3看来是 alph和abet。该案例来自:https://twitter.com/npew/status/1525900849888866307

总结一下,MetaByte相比现有的transformer模型的差异为:

  1. 大多数优化长序列输入的模型都是关注减少自注意力机制的二次方成本上,而MetaByte将长序列分解为两个较短的序列,并通过优化patch大小将自注意力成本降至O(n^{4/3}),这仍然适用于长序列。
  2. 在GPT-3这样大小的模型上,98%的计算都是在做基于位置的前馈网络,而MetaByte计算的是基于patch的前馈网络。Patch的大小如果是P,那么它的计算效率就是同等规模模型的P倍。
  3. Transformers在生成过程中必须按照顺序生成。而MetaByte可以针对patches做并行的生成。例如,15亿参数的MetaByte生成速度比3.5亿参数规模的transformer模型还要快40%!

MetaByte的测试结果

MetaAI在论文中放出了很多测试结果。我们挑选几个具有代表性的结果给大家展示一下:

首先是训练的计算量对比:

在不同规模的模型上,随着输入序列的增加,MetaByte的计算量几乎不变,增长远低于同等规模的transformer模型和线性transformer。

还有一个是ImageNet的bpb测试。

MetaByte的总结

MetaAI这项工作引起了很多人的注意。个人觉得MetaByte的最大的价值有2个:一个是将大语言模型的上下文限制能力大大拓展,按照论文的描述,可以支持到数百万的字节输入,这几乎是目前常规大语言模型的几百倍,也远超过前几天ClaudeAI-100k和GPT-4-32k,几乎可以解决当下大部分输入限制问题。而另一个最大的优点是没有tokenization,几乎可以完成一个端到端的transformer模型。

这个模型应该很快就会有开源实现跟进,到时候我们应该就可以看到它真正的威力。

不过,开源速度就是快,已经有老兄基于PyTorch实现了这个算法了:https://github.com/lucidrains/MEGABYTE-pytorch。难怪谷歌前段时间泄露的文件说谷歌和OpenAI最终可能都打不过开源,这速度真的是厉害!

DataLearner 官方微信

欢迎关注 DataLearner 官方微信,获得最新 AI 技术推送

DataLearner 官方微信二维码
返回博客列表

相关博客

  • 全球首个200万上下文商业产品开始内测!月之暗面Kimi助手开启最长上下文模型内测邀请。
  • 智谱AI发布国产最强大模型GLM4,理解评测与数学能力仅次于Gemini Ultra和GPT-4,编程能力超过Gemini-pro,还有对标GPTs商店的GLMs
  • 国产全球最长上下文大语言模型开源:XVERSE-13B-256K,一次支持25万字输入,免费商用授权~
  • 如何提高大模型在超长上下文的表现?Claude实验表明加一句prompt立即提升效果~
  • GPT-4-Turbo的128K长度上下文性能如何?超过73K Tokens的数据支持依然不太好!
  • 李开复创业公司零一万物开源迄今为止最长上下文大模型:Yi-6B和Yi-34B,支持200K超长上下文
  • 让大模型支持更长的上下文的方法哪个更好?训练支持更长上下文的模型还是基于检索增强?
  • 大模型如何使用长上下文信息?斯坦福大学最新论文证明,你需要将重要的信息放在输入的开始或者结尾处!

热门博客

  • 1Dirichlet Distribution(狄利克雷分布)与Dirichlet Process(狄利克雷过程)
  • 2回归模型中的交互项简介(Interactions in Regression)
  • 3贝塔分布(Beta Distribution)简介及其应用
  • 4矩母函数简介(Moment-generating function)
  • 5普通最小二乘法(Ordinary Least Squares,OLS)的详细推导过程
  • 6使用R语言进行K-means聚类并分析结果
  • 7深度学习技巧之Early Stopping(早停法)
  • 8手把手教你本地部署清华大学的ChatGLM-6B模型——Windows+6GB显卡本地部署