BLT - Meta新作!无token的分词方法,全网最权威解析

全称:byte latent transformer

0.写在前面

· FLOPS:注意全大写,是floating point operations per second的缩写,意指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。

· FLOPs:注意s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。

· 之前的大语言模型(如Llama、GPT等)主要基于token-level的处理方式,依赖于固定的词汇表。

1.简介

是一个无token化的架构,和基于token的模型表现相当,但是更优化了推理成本、效率和鲁棒性。

具体的,BLT动态地学习如何将byte分组为一个长度不固定的小片段,比BPE分词更优化了计算内存的分配。即,一个patch能表示越多的byte,就能将更多计算资源分配到transformer中,增加size。

简易的模型架构:

lightweight local encoder(from bytes to patches) + big gobal latent transformer(get patch representations and predict next patch) + lightweight local decoder(from patch repres to bytes)

2.Patching

patch size 决定 latent transformer中的计算成本,所以本文的核心就是介绍patching function。

· entorpy patching:

训练了小的自回归语言模型(详见后面Entropy Model),通过计算下一个byte的熵,得到划分每个patch的边界。在dataloading阶段就执行了这一patch boundary的求解。

3.BLT架构

· big gobal latent transformer,称作G

作用:maps input patch repre into output patch repre.  即,对patch进行上下文的emb优化并做下步预测。

这部分消耗了大部分的FLOPs,因此要选择在合适的时间去调用这个模块。

通过Entropy Model识别高信息量区域,仅在必要时调用全局大模型,低熵区域使用轻量级本地模型。

输入:来自编码器的动态patch序列(每个patch长度可变,平均4-8字节)。

输出:更新后的patch潜在表示,传递给解码器生成具体字节。

· local encoder,lightweight trans-based

作用:高效 maps input bytes into expressive patch repre.    

新增了cross attention和hash-embedding

    · hash n-gram embedding

    可以增强鲁棒性,将每一位bytes repre(Xi)结合之前的bytes信息。通过hash函数,将每个byte的n-gram(n=3~8)信息求和然后映射到一个index数字

,再与原来的位置的emb求和,得到增强后的bytes emb(Ei)。

    · 多头交叉注意力

    初始化查询向量:通过池化聚合patch内的bytes repres,线性投影为一个初始化的patch query。(just 来源于bytes emb)

    仅允许每个patch query关注对应patch内bytes的KV,使用层归一化和残差连接,没使用PE。

    最终生成动态长度的patch表示序列P,输入到全局Latent Transformer进行处理。

    即,Q是patch repre,init from pooling bytes,而这个bytes还经过了hash的上下文增强。KV是byte repre。

    

· local decoder,lightweight trans-based

作用:和encoder相反

初始字节表示来自编码器最后一层的输出。

字节表示作为查询,全局patch表示作为键值。使用多头机制和残差连接。

生成更新后的字节表示。最后一层输出通过线性投影到256维字节空间,使用交叉熵损失进行训练。

4.实验设计

对比BLT和基于token的模型。

· 预训练数据

分为1、用于探索BLT的scaling law。2、用于和Llama3做下游任务的比较。

· Entropy Model

是动态划分字节序列为patch的核心机制。

熵的定义:衡量"预测下一个字节的难度",熵值越高表示预测越不确定,即uncertainty(信息量越大)。

核心逻辑:

    * 高熵区域(如句首、生僻词):划分更细的patch → 调用大模型(Global Transformer)深度计算。

    * 低熵区域(如单词后缀、重复模式):合并为长patch → 轻量处理(Local Models),节省计算量。

实现方式:

    1. 单独训练一个小型字节级LM(100M参数,14层Transformer)预测每个位置的下一个字节分布。独立优化(不参与端到端训练)

    2. 计算熵

    3. 动态分割:通过阈值或相对变化检测熵突增点作为patch边界。

    method1:全局熵阈值,当H(xi)>θg时标记为分块边界。

    method2:近似单调性约束,当H(xi)−H(xi−1)>θr时标记为边界。

· 针对repetitive数据,修正了entropy的计算方式,防止因为熵过于小,而使用非常大的patch。

· FLOPs的计算方式

假设了在最初input byte embedding是O(1)复杂度的查表操作。并估计反向传播参数是正向传播参数的两倍。

最终,FLOPs=两个local+一个global+两个local中的cross attention。

· BPB计算方式

将x的交叉熵损失除以x的字节长度和常数ln2,进行正则化。

· transformer架构

同llama3,swiglu,rope,rmsnorm,self att使用了flash att,cross att使用了Flex att。

5.scaling trends

· BLT的scaling law

主要讲了,BLT和BPE-based的Llama模型在compute optimal regime的表现,即探索FLOPs和model size、data size、parameter size的关系?

最终结论是,FLOPs和patch size成反比。即,ps越大,模型计算量越小,因此可以将省下的计算量用于增大model size和data size,从而使模型表现提升。

· BLT的下游任务表现对比

主要体现了:在相同的硬件条件进行训练(即FLOPs),BLT能通过动态计算ps,更好利用资源。且,byte level的信息更优于token信息。

总结就是:验证了BLT架构的核心优势——通过动态分块节省计算资源,将节省的FLOPs重新分配到更大的模型容量。

6.证明了byte建模具有的强健性

7.消融实验

证明了BLT中所有的超参数和模型架构的选择都是正确的。

8.其他工作

讲述了字符级的RNN和transfomer的模型。

9.未来工作

有一个比较有趣:能否将entropy model 加入到全局中进行训练。

10.总结

· 流程

字节级(编码器,hash+n-gram局部增强)→ Patch语义(根据熵值动态分割,送入全局模型)→ 字节级(解码器)。

· 传统范式

Byte→Tokenizer→Token embeddings→Transformer→Byte

· BLT范式

Byte→encoder→Dynamic Patches→Latent Space→new and predict Patches+→decoder→Byte

· 熵驱动计算:

    * 基于香农信息论,将计算资源分配给高熵(不确定性)区域。以微小的验证损失,换取至多50%的计算量减少。

    * 公式化表达:

· 硬件友好性:

* 通过动态patch减少矩阵计算中的padding浪费。

* 利用FlashAttention加速patch序列的注意力计算。

11.问题

· 既然没有固定词汇表,那么最终CE做分类损失的时候,怎么知道总类数?

· 为什么decoder的 patch CA里面,Q和KV长度不一样。按道理global的输出应该多一个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值