字节熵动态切patch:BLT如何告别分词器

Byte Latent Transformer分词器字节熵
于 2026-08-29 03:53:45 修改
·本内容遵循CC 4.0 BY-SA版权协议

字节熵动态切 patch,先要从一个老朋友说起:分词器。

如果你最近在准备大模型相关的面试,或者只是长期做 NLP 工程,肯定对这样一套流程很熟悉:先收集语料,训练 BPE 词表,设置 vocab_size,然后做 tokenize,再 padding,再去查 embedding。这套流程几乎是所有 Transformer 语言模型的标准预处理方式,以至于很少有人再去质疑它的存在是否合理。

但 Byte Latent Transformer 的思路刚好相反。它不是想在“更好的分词器”上继续打磨,而是直接把“分词”这件事从模型里拿掉,用字节流作为输入,再靠字节熵动态地把连续字节切成一个个 patch。听起来很激进,却恰好戳中了很多在线上环境里被分词器坑过的工程师的痛点。

这篇长文我会先把分词器的旧账翻出来,再把 BLT 的动态 patch 机制拆开看,最后落到面试和实际落地上:哪些是真有价值的变化,哪些是宣传里容易夸大的部分,以及你真正要理解到什么程度,才能在面试里把这个问题讲透。

1. 先搞清楚一个问题:分词器到底是帮了忙,还是添了乱

在讨论 Byte Latent Transformer 之前,还是要先回答一个基础问题:为什么过去几乎所有模型都用分词器?

直接原因很简单:Transformer 的自注意力复杂度是 O(n²),而 n 是以 token 为单位的序列长度。如果你把每个字符都当成一个 token,一篇 100 万字的文档就会变成几百万个 token,这会让训练和推理的算力消耗接近不可接受。分词器的作用是用一种“看起来合理”的方式,把连续字符压缩成更少的 token,从而让模型在有限的计算预算内处理更多文本。

这本质上是一种压缩方案。BPE、WordPiece、SentencePiece 都是通过统计语料里字符子串的共现频率,找到出现频率高的片段,把它们合并成词表中的一个单元。这样做的结果就是,“unbelievable” 可能被切开,也可能是一个 token,完全取决于它在语料里出现的次数。

问题也由此而来。

1.1 分词器积累下来的四笔旧账

第一笔旧账是词表依赖。任何分词器都有一个固定的词汇表,这个词汇表是训练语料统计的产物。当模型上线后遇到一个新词、一个罕见的专有名词、一段代码里的变量名、或者一个用户自己造的缩写,分词结果经常不稳定。你没法保证相同的语义在训练和推理时被切成相同的子词。

第二笔旧账是多语言和跨模态适配成本高。中文、英文、日文、代码、数学公式的字符分布差异很大。单一词表很难同时平衡多种语言和多种符号系统的压缩率。为了让一个小语种也能被覆盖,通常要加大词表,但词表加大之后,embedding 层和输出层的参数会膨胀,训练时间也跟着涨。

第三笔旧账是实际工程里的坑。比如大小写、全角半角、Unicode 组合字符、emoji 这些输入变化,分词器都可能把一个语义完整的片段切开,或者把不应该合并的字符合并。更麻烦的是,一旦训练好的模型已经绑定了某套 BPE 词表,后续如果你要更新词表,或者从一个模型换到另一个模型的 checkpooint,token id 的对应关系就全变了,这会直接影响 embedding 和下游任务的兼容性。

第四笔旧账是逻辑不对齐。很多人在做检索、意图识别、序列标注时,需要把模型输出结果映射回原始字符串。分词器带来的 offset 映射、piece 还原、空格处理,每一步都可能出现边界错位。你应该遇到过类似问题:模型给了一个 token 级别的标注,你把它还原成原始文本后,发现字符被对不齐了,最后只能靠额外规则修复。

这些问题的根源都来自同一个设计决定:我们必须预先在文本上做一次静态切分,之后无论上下文如何、无论这个片段是否可预测,都沿用它。

1.2 为什么“去掉分词器”不是一件容易的事

直接去掉分词器,把每个字节当成 token,在理论上很干净,但算力上很难接受。一个英文单词平均 5 到 6 个字符,直接按字节做注意力,序列长度会膨胀好几倍。这就是为什么“去掉分词器”过去一直停留在口号层面,而不是主流模型的选择。

Byte Latent Transformer 的关键在于它没有真的把所有字节都丢进 Transformer 的注意力层。它在字节流之上切出一个一个 patch,让 Transformer 在 patch 级别上做自注意力,这样就同时拿到了两个好处:输入层是干净的字节流,没有固定词表;计算层又有压缩后的 patch,不会让序列长度膨胀到不可接受。

这里面的核心问题就变成了:patch 应该怎么切?

如果按固定长度切,比如每 4 个字节一个 patch,逻辑上很简单,但它完全没有利用文本的可预测性。可预测的内容和不可预测的内容被同样对待,该多花算力的地方没多花,该省的地方也没省。

BLT 的选择是靠字节熵来切。这就是整篇文章要拆开的重点。你可以在面试时把这个判断讲出来:BLT 不是简单地把分词器替换成“字节 + 固定长度 patch”,而是把分词器的一次性静态切分,替换成了一套动态的、由信息不确定性驱动的补丁切分机制。

2. BLT 的整体结构:三段式设计

先看 Byte Latent Transformer 的宏观结构。它没有采用传统的“文本 -> 分词器 -> embedding -> Transformer”流程,而是分成了三个阶段:

  • 字节编码器:接收原始字节流,做局部上下文编码,然后按动态边界把一个或多个字节打包成一个 patch 表示。
  • 潜在 Transformer:在 patch 序列上做标准的自注意力建模。这一层是真正的主力网络,负责全局语义建模。
  • 字节解码器:把模型输出的 patch 表示还原回字节序列,逐个字节预测下一个字节的概率。

你可以把这三个阶段理解成一套“先压缩、再建模、再展开”的流水线。

2.1 字节编码器不是简单的 Embedding 层

如果你只是把每个字节查一个 embedding,然后拼起来算一个 patch,那它和“字节级 tokenizer”也没什么区别。BLT 里的字节编码器会先在一个局部窗口内对原始字节做卷积或浅层注意力,让单个字节看到附近的上下文,再把这些局部编码聚合成 patch 向量。

这样做有一个直接好处:patch 向量不是“某几个字节的简单拼接”,而是已经包含了局部上下文信息的表示。比如英文里常见的 “ing” 这组字节,单独看每个字符没有太多信息,但放进局部窗口后,模型很容易判断这是一个稳定的词缀,编码器就能在低熵区域把它打包成一个紧凑表示。

编码器的输出是一个 patch 向量序列,后面跟着的潜在 Transformer 只需要处理 patch 级别的序列,长度远远小于原始字节数。这也是 BLT 能在算力上站住脚的原因。

2.2 潜在 Transformer 在哪个空间里建模

潜在 Transformer 的作用区域不是原始字节,也不是传统 token,而是“动态 patch”构成的潜在空间。它看到的是经过编码器压缩后的 patch 序列,每个 patch 可能对应 1 个字节,也可能对应几十个字节,完全取决于切分边界怎么定。

这带来的一个隐性变化是:模型不再需要关心词表里是否包含某个词。只要有字符,就能编码;只要有字节,就可以建模。跨语言、跨符号系统、跨代码语法,都只是字节流问题,而不是词表覆盖问题。

同时,潜在 Transformer 仍然可以选择性地投入计算量。高熵 patch 通常更短、更频繁,所以即便输入中有一大段难处理的内容,模型也会自然地给它们分配更多的注意力位置;而低熵的长 patch 则可以让注意力计算变得稀疏。这就是 BLT 经常被提到的“动态分配计算”的含义。

2.3 字节解码器如何恢复原始文本

解码端的任务是预测下一个字节。它从潜在 Transformer 拿到的 patch 表示出发,通过一个轻量级解码器逐步还原字节。

这里有一个容易被忽略的设计点:解码器并不是一次性输出整个 patch 的所有字节,而是逐个字节生成。这种生成方式比直接生成一个词表内的 token 更接近“生成文本”本身的气质,因为它要逐字节地决定下一个字符是什么。代价是解码步数会变多,一个常见的英文单词可能要 5 到 6 步才能生成完,而传统词表模型可能一步就结束了。

所以,BLT 并非没有代价。它换来的是词表无关的灵活性,但推理时生成的字节序列更长,这对服务端的延迟和吞吐会提出新的要求。很多只看原理的人容易忽略这一点,但真到落地评估时,这往往是决定线路上不上线的一个关键变量。

3. 字节熵如何决定 patch 边界:从一次切分到动态切分

现在把焦点放在最核心的机制:字节熵。

如果你准备面试,这个概念不能只是记住“熵高就切分”一句话。面试官通常会顺着追问:什么是这里的熵?怎么算?阈值怎么定?为什么熵高就要切?下面我把这条链路完整拆开。

3.1 用预测不确定性来理解熵

在 BLT 的实现里,熵指的是“下一个字节的不确定性”。对于一个正在扫描字节流的模型来说,如果它已经看到前面几个字节,并且能很自信地预测出下一个字节是什么,那这个位置的熵就低;反之,如果它完全猜不出来下一个字节会是什么,熵就高。

举几个直观例子:

  • 英文里 “th” 后面大概率跟着 e、a、i、o 等字母,虽然有一定不确定性,但整体分布相对集中,熵中等偏低。
  • 一段随机生成的字符串或者一个 UUID,每个字符的出现几乎不可预测,熵很高。
  • 一段代码里刚出现 “def “,下一个字符有极大概率是函数名首字符,但函数名首字符本身可以是任意字母,熵可能也不低。

所以,熵不是由词或者句子的语义直接决定的,而是由当前字符序列的可预测性决定的。可预测性越弱,熵越高。

3.2 高熵位置就是需要更多计算的位置

BLT 的设计直觉是:在模型不确定的地方,我们应该给它更多条件信息,而不是让它用一个粗粒度的 patch 一笔带过。

具体在切分上,就是当字节熵上升并超过某个阈值时,当前这个字节就结束在当前 patch 里,把新字节作为下一个 patch 的起点。这样,高熵区域会被切得更细,patch 更短,潜在 Transformer 对这里的表示的关注密度更高;而低熵区域,比如连续可预测的常见词缀、空格、标点模式,会被合并成一个比较长的 patch,注意力位置相应减少,计算也省下来。

这种“越不确定越细分”的思路,和传统词表模型很不一样。传统词表模型是根据语料频率来切分,频率高的字符串被合在一起。频率高不代表可预测,也不代表模型需要给这个位置更多关注。BLT 的切分逻辑更贴近信息论里的编码原则:对难以预测的信息,保留更多独立表示;对容易预测的信息,用更少的单位去覆盖。

3.3 patch 长度是动态的,而不是固定的

这里有另一个面试高频追问:为什么不用固定长度 patch?

固定长度 patch 的最大问题是“切得不管不顾”。它不在意边界是不是落在语义或者可预测性的分界上。连续 8 个字节的前 4 个很容易预测、后 4 个很难预测,用固定长度切,要么让难的部分被压缩得过狠,要么让容易的部分白白占用注意力位置。

动态熵切法没有统一的 patch 长度。极端情况下,一个 patch 可能只包含一个字节,也可以包含几十个字节。patch 长度分布本身就是输入内容的属性,而不是模型超参数。

不过需要注意,实际训练时通常会限制 patch 的最大长度,否则一个超长且低熵的 patch 会让潜在 Transformer 对这个 patch 内部的局部信息一无所知。边界不能无限放宽,这是工程细节,后面会单独说。

3.4 熵估计器本身也是一个可学习组件

既然要用熵来切分,模型就必须在扫描字节流时实时估计出每个位置的熵。这不是一个简单的统计量,而是需要一个轻量模型来做预测。BLT 的作者实现里包含一个熵估计器,它会在字节流经过的时候预估下一个字节的分布,然后把分布的不确定性作为切分依据。

一个直接的问题是:熵估计器本身不完美怎么办?

这是真实存在的限制。如果熵估计器过拟合了训练语料,在推理时遇到分布偏移,它的熵估计可能不准确,patch 边界就不再合理。好在熵估计器通常是一个结构很轻的模块,它对整体模型的参数量影响不大,但要真正进入生产环境,还是需要对它的鲁棒性做单独评估。

你可以在面试里这样说:BLT 的熵不是来自人工规则,也不是来自词频统计,而是由一个轻量模型在线预测下一个字节的分布后计算得到的。这个熵估计器有自身的误差,也会受训练数据和推理分布差异的影响,这是使用动态切分方案时需要接受的代价和风险。

4. 动态 patch 带来的效率变化:算得更明智,而不是算得更少

很多人一看到 BLT 就会问:它不是只靠字节计算吗?字节序列比 token 序列长那么多,为什么训练速度还能和相同参数的 token 级模型打平甚至更好?

答案就在动态 patch 的压缩效应里。

4.1 低熵区域负责压缩,高熵区域负责精度

传统 BPE 词表会把高频片段固定成 token,无论上下文怎么变,这个 token 都只有一个固定表示。BLT 并没有一张固定的词表,但它通过熵切分,在效果上做了一件类似“软压缩”的事情:凡是模型能轻松预测的字节,都会被合并到较长的 patch 里;凡是模型预测不了的字节,就单独留下来精细处理。

于是,同一段文本里,英文常见句式、重复性结构、代码模板这类可预测内容会被压成长 patch,真正繁琐的长尾字符、罕见命名、切换频繁的符号会被切成更小的 patch。从平均意义上看,patch 数量比原始字节数少很多,有可能接近甚至优于传统 token 级别的长度。

这也是它和“直接按字节跑 Transformer”的本质区别。按字节跑,序列长度是固定的、不可压缩的;按动态 patch 跑,序列长度会根据内容自动变化,信息冗余越多,压缩越狠。

4.2 注意力计算和 patch 数量之间的关系

潜在 Transformer 的复杂度仍然由 patch 序列长度决定。当一个 patch 合并了大量低熵字节时,潜在 Transformer 需要处理的序列位置就少了一个。所以,决定模型整体计算量的不是字符数,而是“有效 patch 数”。

从这个角度理解 BLT,它的路线不是“用更多的算力换取词表自由”,而是“通过信息熵找出哪些字节值得独立建模,哪些字节可以合并表示”。它不是省了算力,而是把算力从低信息区域搬到了高信息区域。

4.3 推理成本要分两个视角看

先说训练视角。训练 BLT 时,同一个 batch 内不同样本的 patch 长度不同,动态形状会给框架带来额外复杂度,pad 和 mask 策略也比固定 token 序列更繁琐。这里需要工程上的适配,不能直接套用传统语言模型的训练脚本。

再说推理视角。虽然潜在 Transformer 的 patch 数量可能不多,但字节解码器必须逐个字节生成输出。这意味着生成一个单词所需解码步数,可能会明显大于词表模型中生成一个 token 所需的步数。如果你把延迟换算成“首字节时间”和“每秒生成字节数”,就会发现 BLT 在纯生成吞吐上不一定占优。

所以,把 BLT 评价为“更快”并不准确。更准确的说法是:它把计算重新分配了,在编码端压缩了常见结构,在解码端增加了生成粒度,整体能否赚钱取决于任务类型、文本冗余度和实时性要求。

5. 落地和面试里都容易踩的坑:看清 BLT 的边界

到了工程落地和面试问答部分,就不能只谈架构有多优雅了。很多人在讲 BLT 时把“去掉分词器”当成万能解药,但在真实系统里,去掉分词器的收益未必覆盖成本。下面几个边界特别值得留意。

5.1 输入格式的编码问题没有真正消失,只是被前移了

BLT 去掉了 tokenizer,但没有去掉“把文本变成字节”的过程。不同编码方式、不同 Unicode 组合字符、不同语言在 UTF-8 下的字节分布差异,仍然会影响熵估计和 patch 切分。

举个例子。中文在 UTF-8 下通常一个汉字占 3 个字节,英文一个字符占 1 个字节。不同字符集的局部可预测性差异非常大,熵估计器如果是在中英文混合语料上训练的,它学到的切分策略对整个语料都适用;但如果上线语料变成某一类特殊代码、日志或小众语言文本,熵分布会明显偏移,patch 边界质量也可能下降。

所以在做线上评估时,不能只看平均性能。要分别统计代码、长文本、多语言、噪声文本上的延迟和生成质量,确认 BLT 的熵估计器在目标场景里没有失效。

5.2 动态 patch 给批处理和缓存带来额外复杂度

传统 token 可以相对稳定地被缓存、分批、做 KV cache。动态 patch 的边界不固定,每次输入变化都可能影响整个字节流的切分情况。批量推理时,不同样本的 patch 数量差异一大,padding 的浪费就增加了,GPU 利用率未必能跑满。

KV cache 也有变化:长度不再是 token 级别的整数关系,而是动态变化的 patch 边界。服务端在做显存预估和超时控制时,需要重新设计上限策略,否则高负载下容易出现因 patch 长度突增导致的调度问题。

这些不是架构层面的障碍,但确实是工程层面必须处理的成本。如果只是读论文,很容易忽略掉。

5.3 对模型规模和任务类型有适用边界

BLT 的理论优势在长文本、多语言、代码、噪声文本这些场景里体现得更明显,因为这些场景对词表覆盖和 OOV 问题最敏感。如果任务本身就是比较规范的英文新闻摘要,传统 BPE 词表已经覆盖得很好,BLT 的动态 patch 优势就不那么突出,却要额外承担字节解码的延迟成本。

另外,小模型场景下,字节解码器和熵估计器带来的额外参数开销会占据不少比例。是否值得,需要结合具体任务看。

我建议这样判断:如果你经常处理多语言、长尾词、代码片段、用户生成文本,或者你被分词器的边界映射问题折磨过,BLT 是一个值得认真评估的方向。如果你的应用场景是相对封闭的领域文本,词表也不大,传统 token 方案可能仍然是成本更低的选项。

5.4 真正的理解,要看你能不能解释清“为什么熵高要切”

面试官如果问 BLT,一般不会只停留在“它用字节、没有分词器”这个表面。真正的追问通常是:熵高为什么要切?如果我反过来,熵越低越切,会怎样?

要回答这个问题,关键不是背结论,而是理解 patch 的语义角色。在 BLT 里,patch 是潜在 Transformer 的一个注意力单元。一个 patch 的表示,需要在后续解码时还原成多个字节。如果 patch 里包含了大量模型难以预测的字节,那么这部分信息很难被压缩到一个向量里而不丢失;所以高熵区域必须被切得更短,让每个 patch 承载的信息尽量可还原。

反过来,如果一个 patch 内部的字节都很可预测,模型只需要很少的信息量就能还原它们,那把它们合并起来就是高效率的。

你可以用自己的话来表达这个逻辑:熵高的地方信息密度高,压缩容易出错,所以要给独立空间;熵低的地方信息冗余多,浪费注意力反而不划算,该合并就合并。

这个回答不需要介绍太多实现细节,但能体现你对模型压缩与信息不确定性之间关系的理解。面试官听到这种回答,通常会愿意继续深入。

6. 面试准备路径:从概念记忆到真正能进技术讨论

如果你正在准备大模型相关的面试,看到 BLT 这类题目时,最怕的不是不知道,而是停留在知道名字的层面。下面给你一条可以按顺序准备的学习路径。

6.1 第一层:能讲清 BLT 和分词器的差异

至少要把这几个点说清楚:

  • 传统分词器用静态词表和频率统计切分文本,BLT 在字节流上动态切分。
  • BLT 有字节编码器、潜在 Transformer、字节解码器三层结构。
  • 切分依据是字节熵,即下一个字节预测的不确定性,而不是固定的子词边界。
  • 熵高的区域 patch 更短,注意力位置更多;熵低的区域 patch 更长,序列更短。
  • 这带来了词表无关、跨语言灵活、动态计算分配等优势,但同时有解码变慢、批处理和 KV cache 更复杂的代价。

这是最基础的一层。如果你连这些都说不出,面试很难继续往下聊。

6.2 第二层:能和 BPE、SentencePiece 做横向对比

面试官很可能会问:既然 BPE 已经很成熟,为什么还需要 BLT?

你可以从“压缩逻辑”切入:BPE 的压缩逻辑是频率优先,经常共现的字符片段被合成一个 token;BLT 的压缩逻辑是不确定性优先,模型能预测的字节被合并,预测不了的被独立出来。频率高不代表不确定性低。BPE 在传统语料上工作得很好,但它的词表一旦固定,就失去了对长尾输入和分布偏移的适应能力;BLT 没有词表,等于把每次切分都变成了输入相关的动态决策。

这样比较,比单纯说“BPE 有 OOV”要更有层次感,也能让面试官看到你不是在背描述,而是真的理解两套设计背后的目标差异。

6.3 第三层:能推导出 BLT 的效率和延迟问题

这一层是真正拉开差距的地方。你可以在回答中提到:

“BLT 在训练阶段通过动态 patch 缩短了潜在 Transformer 的序列长度,所以主网络的计算效率没有被拉垮。但在推理阶段,字节解码器逐字节生成,会让输出延迟上升。如果产品对首字延迟和吞吐特别敏感,就需要做工程上的量化和优化,不能认为 BLT 在所有场景下都会更快。”

这个点在很多资料里不会强调,但恰恰是真实系统里最影响决策的因素。

6.4 第四层:能提出自己的判断和边界

面试最后,如果能给出一个相对成熟的判断,会很加分。比如:

“我会在代码生成、多语言翻译、长尾文本理解这类任务上优先尝试 BLT,因为传统分词器在跨语言和代码混合场景里最容易出问题。但如果是短文本分类、关键词识别这种对生成效率要求很高的任务,我会更谨慎,先用小模型验证公平对比,再考虑上线。”

这不一定是最正确的结论,但它表明你在用工程逻辑做决策,而不是在复述论文结论。

结语:分词器不会一夜消失,但“动态切分”的方向很明确

Byte Latent Transformer 不是第一个提出去掉分词器的模型,但它把“去掉分词器”做成了一套相对完整的方案:字节流输入、熵驱动切分、三层结构建模。它的价值不只是换了一种预处理方式,而是把“切分”从静态词表里解放出来,变成了一种由输入不确定性驱动的动态过程。

当然,分词器也不会立刻消失。BPE 和 SentencePiece 在工程上极其成熟,生态工具链完整,性能也稳定。BLT 要进入主流生产,还要解决解码延迟、批处理适配、熵估计器鲁棒性等一系列工程问题。

但如果你在准备面试,或者在做下一阶段的技术选型,这个方向值得投入时间理解。它不仅关乎一个模型,更关乎一个更底层的问题:当模型的输入不再依赖人工设计的词表时,我们如何用信息本身来决定计算资源的分配。

你可以从一个小实验开始:找一段混合了代码、中文、英文和数字的文本,尝试自己标注哪些地方“下一个字符难猜”,然后想想如果让模型自己决定在哪里切开,它应该怎么切。想明白这个过程,你就已经抓住了 Byte Latent Transformer 的核心。

SM2258XT FTL元数据布局逆向图谱LBA→PBA映射表定位+WL日志区解析+GC阈值动态监测(含3种内存dump快速锚定法)
SW_孙维
小米MiFlash工具链ARM64级逆向报告精准Patch oem-unlock校验逻辑(含.o文件重链接方案+SHA256硬编码绕过补丁,成功率98.7%)
SW_孙维
信创麒麟V10+鲲鹏920海康SDK适配攻坚实录(含jni_md.h重定向移植、SM4国密加解密桥接层、arm64-v8a ABI符号重绑定patch、等保2.0密码应用合规检测报告)
SW_孙维
四通SP-1600主板启动流程深度逆向(含Boot ROM校验绕过+固件热补丁注入)基于JTAG+IDA Pro的12小时完整复现记录
SW_孙维
WiFi 7网络命名规范暗藏雷区ESSID含ZWJ序列_控制字符_超32字节导致scan结果过滤丢失——Android_iOS_Windows三端兼容性测试矩阵(失败率最高达76%)
SW_孙维
从.dmg到恢复分区的全链路逆向深度解析Monterey镜像6层APFS快照结构、Delta补丁映射表及BaseSystem.dmg动态加载时序(含反编译符号表)
SW_孙维
为什么92%的信创项目在龙芯3A6000上性能暴跌40%以上?——独家披露微架构级兼容性断层图谱(含11个JVM_Python_C++典型误编译陷阱与5行修复patch
SW_孙维
GRUB高分屏适配工程规范(1920×1080无撕裂)字体渲染引擎替换方案、背景图内存映射优化、GRUB_GFXMODE动态分辨率探测脚本(已通过Y7000P 2023 BIOS验证)
SW_孙维
【T113 OTA固件升级军工级协议】差分升级(bsdiff压缩率83.6%)、断点续传(SHA-256块校验)、ECDSA签名验签、双Bank安全回滚(实测回滚耗时<412ms)
SW_孙维
差异备份工业级实现基于SGI映像块级哈希比对的增量更新方案(Delta体积压缩率高达91.4%,日均节省2.3TB带宽)
SW_孙维
Transformers 中的 Byte Latent Transformer(BLT)完全指南:熵驱动动态分块的字节级大模型架构
Byte Latent Transformer(BLT)是一种放弃固定词表、直接处理UTF-8字节的大型语言模型架构。其核心是驱动的动态Patch分块机制Patcher模型逐字节预测值,据此自适应切分输入为可变长Patch,实现高区精细建模与低区高效压缩。架构采用双模型设计(Patcher+Main Transformer),包含Local Encoder/Global Transformer/Local Decoder/Patcher四组件,并引入哈希增强嵌入与字节级因果建模。已在Hugging Face Transformers中完整集成,支持加载、推理与配置定制。
巫清焘
459
Byte Latent Transformer:字节熵动态切Patch,彻底告别分词器
Byte Latent Transformer(BLT)摒弃传统固定词表分词器,采用字节级输入与字节熵估计实现动态Patch切分。其核心是通过轻量估计器评估局部不确定性,按累积阈值划分可变长字节片段,使计算资源按信息密度分配。架构包含字节局部编码器、估计器、动态Patch化、全局潜在Transformer及局部解码器。该方法缓解OOV、跨语言不均衡与序列冗余问题,但带来ragged batch、KV cache管理与生态兼容性等工程挑战。
weixin_34342207
308
Byte Latent Transformer字节熵动态切Patch,彻底扔掉分词器的新范式
Byte Latent Transformer(BLT)是一种Tokenizer-free语言模型新范式,摒弃传统分词器,直接以原始字节为输入,利用轻量模型实时预测字节熵,依据值高低与最大长度约束动态切分变长Patch。其架构包含局部编码器、潜空间Transformer和局部解码器三层,实现字节级保真与Patch级高效计算的协同。该方法显著降低序列长度,提升多语言与长文本建模效率,同时缓解OOV、词表耦合及跨领域适配问题。
roueou
215
Byte Latent Transformer抛弃分词器字节级大模型新范式
本文系统解析Byte Latent Transformer(BLT)——一种抛弃传统Tokenizer、直接建模原始字节流的大模型新范式。其核心是利用字节熵动态切分变长patch,通过局部编码器、全局潜在Transformer和局部解码器实现端到端字节级建模。相比token模型,BLT规避了词表覆盖、多语言失衡、错误传播与安全鲁棒性等固有问题,在计算效率、长尾内容建模和含噪文本处理上表现更优。文中还涵盖Python模拟实现、性能分析及工程落地挑战。
何欣颜
289
Byte Latent Transformer字节熵动态切分,彻底摆脱分词器
Byte Latent Transformer(BLT)摒弃传统固定词表分词器,以原始字节为输入,通过Local Encoder预测字节级概率分布并计算字节熵,依据累计阈值动态划分patch;Latent Transformer在patch序列上建模,Local Decoder还原为字节输出。该设计解决跨语言不公平、噪声脆弱性、词表攻击面与膨胀开销四大瓶颈,在保持字节级鲁棒性的同时提升计算效率。
CarrieYung
237
Byte Latent Transformer:字节熵驱动的去分词器大模型架构解析
Byte Latent Transformer(BLT)是一种去分词器的大模型架构,摒弃传统静态词表,直接以UTF-8字节流为输入,通过轻量级局部编码器估计字节熵,并据此动态切分patch,再送入主Transformer建模。其核心创新在于用信息熵驱动的可学习切分机制替代固定分词逻辑,显著提升多语言鲁棒性、OOV处理能力与语义压缩合理性,同时缓解序列长度失配问题。
程序员必修课
297
SH9分词器Tokenizer的终局无token化技术与大语言模型的架构重构(世毫九实验室原创研究)
回顾Tokenizer的发展历程,从2013年Word2Vec和GloVe的词级分词,到2015年BPE算法的引入,再到2018年WordPiece和SentencePiece的兴起,直至2021年ByT5等字节级模型的出现,这一技术演进的轨迹清晰地反映了一个根本性矛盾离散化处理与连续语言本质之间的冲突。相比之下,字节级模型通过直接操作原始UTF-8数据,具备与生俱来的通用性与鲁棒性,能够处理任意语言的任意文本,且无未登录词(OOV)问题,对文本表面的细微变体也不敏感,但代价是序列长度显著增加。
世毫九实验室
715