Tokenizer不存在了?Meta开源BLT算法!

发布于 2024-12-18 10:52
浏览
0收藏

Tokenizer不存在了?Meta开源BLT算法!-AI.x社区

分词化/tokenize 化,是模型理解自然语言的最小单元。但是一些问题,如多语言、错别字、计算开销等问题,基于Byte的分词更为流行。

Meta的这个工作开源Byte Latent Transformer(BLT)的方法。

BLT 的核心思想:

  • 直接处理原始字节:与传统的基于词元的模型不同,BLT 直接使用构成文本的最小数字单位-字节进行处理。这从根本上消除了对分词的需求,避免了分词可能带来的误差和局限性。
  • 动态 patching:这是 BLT 的关键创新。它根据文本的复杂度将字节组合成不同长度的“patch”(可以理解为小块)。对于简单的字节序列,BLT 会使用较大的 patch,从而节省计算资源;而对于复杂的区域,则使用较小的 patch,以提高精度。这种动态调整的方式使得 BLT 能够更有效地利用计算资源。

Tokenizer不存在了?Meta开源BLT算法!-AI.x社区

Patching(分块): 是BLT的核心,将原始字节分成更小的“块”进行处理,优化计算效率和上下文相关性。它比传统的分词更灵活。

几种常见分块方法:

  1. 固定步长分块:按固定大小分割字节,简单易用,但对复杂数据效果不佳。
  2. 空格分块:以空格为界分割,适合自然语言,但不适用于不使用空格的语言。
  3. 基于熵的分块:根据字节的不可预测性分割,更智能,能更好地处理复杂和噪声数据。
  4. BPE分词器和增量分块:类似BPE分词,但无需固定词汇表,更灵活。

BLT整体架构,先使用Local Encoder 对字节转换成patch,然后使用Latent Transformer进行语义层面的编码学习,最后使用Local Decoder解码出字节

Tokenizer不存在了?Meta开源BLT算法!-AI.x社区

Local Encoder,负责将原始字节数据动态分组为块:

Tokenizer不存在了?Meta开源BLT算法!-AI.x社区

  • 基于熵的分组:根据数据复杂程度(熵值高低)分配计算资源,高熵区域分配更多资源。
  • 哈希n-gram嵌入:将字节序列(n-gram)哈希成特征,捕捉字符级模式,尤其适用于噪声或多语言数据。
  • 交叉注意力层:汇集字节信息到块表示,捕捉局部和全局上下文。

Latent Transformer,全局处理块表示,并根据每个块的复杂度动态调整计算量:

  • 自适应计算分配:不同于传统Transformer平等对待所有token,潜在Transformer将计算力集中在复杂数据区域,例如化学公式或多语言短语比填充词需要更多计算。
  • 全局上下文感知:使用块因果注意力机制处理块,同时保持序列的整体上下文,确保高信息密度的块对下游任务做出有意义的贡献。

Local Decoder 将经过Latent Transformer处理的块转换回字节序列:

  • 字节级解码:保留BLT的字节级粒度,高保真地重建文本,适用于拼写校正或低资源语言处理等需要精度的任务。
  • 交叉注意力优化:类似于编码器,解码器使用交叉注意力层优化输出,确保生成文本的连贯性和准确性。

在与 LLaMA 3 等领先模型进行评估时,BLT 在效率和准确性方面都表现出非常好的性能,MMLU,HellaSwag,Noisy and Real-World Inputs等相比llama3都获得了更好的结果。

Tokenizer不存在了?Meta开源BLT算法!-AI.x社区

通过摒弃分词并采用基于字节的建模方法,BLT 解决了目前长期存在的一些问题:

  • 提供了跨语言和文字的一致性表现。
  • 确保了在处理真实世界中混乱、嘈杂的数据时的鲁棒性。
  • 显著降低计算成本,使得更大规模、更复杂的 NLP 应用成为可能。

本文转载自 NLP前沿​,作者: NLP前沿




已于2024-12-18 10:54:01修改
收藏
回复
举报
回复
相关推荐