Cartesia Research 报告改进版 H-Nets 的规模化与多模态实验结果
Scaling Hierarchical Networks
Cartesia Research 报告 H-Nets 在字节级语言、DNA 与图像上的训练结果与算力效率。
文章以匹配数据和算力的方式比较 BPE Transformer 与 H-Nets,并说明不同压缩策略下对齐口径的难点,为解读效率结果提供清晰边界。
自 Richard Sutton 于 2019 年发表影响深远的文章以来,“苦涩的教训”这一概念一直指引着 AI 现代发展的大部分进程。这一理念主张采用通用方法,利用计算能力并随规模扩展而学习,同时尽可能不受人工设计先验的影响。我们的理解是,从根本上说,智能就是从原始数据中学习:自主发现模式、构建抽象,并从杂乱的低层输入中形成意义;理想情况下,应做到端到端,并以尽可能高的数据效率进行学习。随着 AI 进入科学、机器人学和生物学等复杂领域——在这些领域,数据十分稀缺,而且人类往往难以理解,更不用说对其进行工程化处理——将这一理念内化,以开发更通用的学习算法,比以往任何时候都更加重要。
语言模型也许是当今 AI 最成功的成果,而且在很大程度上践行着“苦涩的教训”。它们的能力在很大程度上归功于对少数简单算法的规模扩展,例如 Transformer 架构、下一词元预测、强化学习和测试时计算。然而,它们仍依赖分词器等手工设计的编码步骤,严重阻碍了其从底层数据进行端到端学习的能力。为了进一步释放规模扩展带来的跃升,我们认为,开发字节级语言模型是推动 AI 进展的基础——不仅是为了改进独立的 LLM,也是检验通用学习方法的试金石。如果我们连从字符和字节中把语言学好都做不到,又凭什么在下一个前沿领域取得进展?
2025 年,我们提出了分层网络(H-Nets)这一概念,它不仅处理了语言模型中的词元化问题,还朝着更加通用的架构迈出了一步,使其能够从不同模态的原始数据中学习。此后,我们显著改进了 H-Nets 的技术,并很高兴与大家分享它们的能力。在这组两篇文章中,我们将深入介绍新的研究成果,并讨论其影响。
在这篇两部分系列文章的第一篇中,我们将探索 H-Nets 的规模扩展定律及其定性行为。
- 我们为经过词元化的 Transformer 建立了一套标准规模扩展阶梯,并表明,经过精心控制的 1 阶段 H-Nets 能带来显著的计算效率提升(最高达 3-5x),而且完全依靠学习式词元化。
- 我们展示了将一种更灵活的 2 阶段 H-Net 扩展规模后的实证结果,其中它胜过了一个相匹配的开源模型,并实现了极高的效率提升(计算量和数据量均减少 10x)。
- 我们分析了 H-Nets 学到的模式,发现它们展现出语言模型中此前未见的丰富多样的新行为,例如上下文内词元化。
- 我们讨论 H-Nets 如何超越语言建模,并介绍生物学和视觉领域正在进行的研究成果,展现其作为跨模态通用架构。
在下一篇帖子中,我们将更深入地探索更大范围的模型,以更好地理解 H-Nets 为什么在语言建模方面能够高效得多。
总的来说,我们的结果证明,H-Nets 是一种真正契合“苦涩的教训”的基础架构:它直接从原始数据中学习含义,并显著提高效率和可扩展性。这一研究议程为推动 AI 从所有数据中学习的方式取得进展带来了重大机遇,我们无比兴奋地推动前沿发展!
分层网络(H-Nets)
去年,我们介绍了分层网络(论文、博客),这是一种对数据中的多个抽象层级进行建模的新型端到端架构,并在语言建模及其他领域展现出潜力。简而言之:
这一术语的灵感来自认知心理学中已有的分块概念,而分块是人类智能的重要组成部分。我们认为,它也是人工智能前沿所必需的。
在语言建模的语境下,其思路是构建新的学习基元,使模型能够将低层数据递归分块为更高层次的含义:将字符变为词语,将词语变为短语,再将短语变为概念。
在本文的语境下,大多数时候可以将分层网络理解为对词元化的替代。H-Nets 不会先把数据从字节预处理为词元(固定大小的字节块),而是直接在模型内部动态执行分块。此外,H-Nets 的标志性特征是以分层方式端到端执行这种分块。相比之下,标准的词元化语言模型,甚至包括我们将在第二篇帖子中看到的其他一些替代方案,都采用多阶段训练,而分块/词元化数据的过程完全在离线环境中完成。
详解:词元化与 BPE
语言模型并不直接读取文本,而是以固定词表中的词元序列作为输入。一种自然的词表由 256 个字节值构成,每个 UTF-8 字节对应一个词元。然而,对于标准语言模型而言,处理字节级序列既漫长又昂贵。词元化旨在通过将字节序列压缩为频繁出现的块来缓解这一问题。最常见的方法字节对编码(BPE)从这 256 个字节出发,在固定的训练语料上反复合并出现频率最高的相邻词元对,直到词表达到设定规模(例如 Llama-3 为 128k)。在我们的数据混合集上,每个 BPE 词元涵盖约 4.57 个字节,使序列远短于字节级序列。然而,这种压缩是固定的,而词元化仍属于语言模型流水线最后几个由人工设计而非学习得到的环节之一。
我们将在本系列文章中看到,即便仅仅是在替代词元化这一更窄的语境下,H-Nets 的端到端特性也能带来实实在在的性能提升。除了词元化之外,H-Nets 作为一种基础架构还具有广泛用途:
- H-Nets 可以递归嵌套,从而构建多个抽象层级。本文的主要结果是一个规模更大的两阶段分层网络,并与开源基线进行了对比。
- H-Nets 可以处理任何类型的数据,不仅仅是字节,也不只是离散数据。相比之下,对连续数据进行词元化是一项严峻挑战。在本文的最后一部分,我们将预览未来将 H-Nets 应用于文本之外的一些研究。
H-Net 架构
两阶段字节 H-Net
解码器
反分块
解码器
解块
主网络
分块
编码器
分块
编码器
图 1 展示了一个 2 阶段 H-Net,并界定了模型的主要组件:编码器、主网络和解码器。我们有时将编码器/解码器统称为外层网络,将主模型称为内层网络。
在本文中,我们展示的是大幅改进版 H-Net 的结果,并计划发布这一版本。我们会在本文后文中进一步说明它与早期架构的差异。
第 1 部分:BPE 与 H-Net 扩展阶梯
与许多架构论文一样,最初的分层网络论文侧重于调整具有特定固定规模和特定数据跨度的语言模型(例如,在 FineWeb-Edu 上用 100B token 训练 ~1.3B 参数模型一直非常常见)。尽管这些结果看起来很有前景,但缺失的一环是缺乏计算最优缩放定律,而它如今已成为衡量预训练创新的标准方式。例如,Kimi 在Kimi Delta Attention (KDA) 和 注意力残差 上的热门创新分别测得了 1.16x 和 1.25x 的计算量倍数。
为了验证改进版 H-Net 架构带来的收益,我们首先着手构建现代 LLM 扩展阶梯,随后用经过严格控制的分层网络替换其分词组件。
- 我们建立了一套训练数据混合方案,在同等条件下比较字节级和 BPE 的缩放定律,仔细确保处理过程一致,甚至为基线重新训练了 BPE 分词器。
- 我们按照标准做法,为基线 BPE Transformer 语言模型建立了扩展阶梯,复现了文献中的结果。
- 随后,我们将扩展阶梯的每一级转换为字节级 H-Net,作为即插即用的替代方案,同时复用 BPE 骨干架构和超参数。
这一训练方案在验证损失上直接取得了更优结果(1.3x),在代码等子领域上的增益进一步提升(2x),同时也改善了分布外表现(评估集上 2x,域外代码上最高 5x)。
数据受控比较
由于字节级模型和 BPE 模型以不同粒度处理相同数据,因此需要格外谨慎,以保持方法设计的受控性。
数据混合:我们的训练数据集由 70% 英语、20% 代码、5% 数学和 5% 多语言数据组成,按字节数计算。
数据处理:每个样本均同时按字节和 BPE token 两种形式处理,并在相同边界处切分;因此,经过字节级处理和 BPE 处理的数据集都包含完全相同的文本,且文档边界相互对齐。
指标:我们采用标准的每字节比特数(bpb)指标来衡量下一词元预测损失,该指标可在不同分词器之间进行归一化比较。
基于语料库训练的 BPE 分词器:LLM 通常使用现成的 BPE 分词器;H-Nets 的优势在于,它们直接在训练分布上学习分块方式。为格外谨慎,我们还在该语料库上训练了一个 BPE 分词器。下面的 BPE 缩放定律使用了这一分词器,最终在验证损失和下游评估两方面均带来了约 1.1x 的算力增益(因此,与标准现成分词器相比,H-Net 将拥有更高的算力乘数!)
BPE 分词器的词表大小为 128k,与我们所基于的 Llama-3 分词器一致。语料库内分词器对数据集的压缩程度略高,将平均 BPE 词元长度从 4.45(Llama-3 分词器)提高到 4.57。按语料库内 BPE 分词器的词元数计,训练数据集由 64.7% 英语、23.7% 代码、6.1% 数学和 5.5% 多语言内容组成。
每个 BPE 词元的字节数
来源每个 BPE 词元的 UTF-8 字节数
目标混合 4.57
构建稳健的 BPE 基线
对于基线,我们为标准 BPE Transformer 拟合了一条经过充分调优的缩放定律。为此,我们构建了一个缩放阶梯,遵循诸如 Kimi 和 MAI 等现代缩放方案,并通过层数 L 完整定义一系列模型。我们将隐藏维度 D 设为 128 的倍数,使宽深比 D/L 约为 75。对于所有模型,我们采用多头注意力,注意力头数等于层数,并使用固定为 128 的头维度。对于 MLP,我们使用 SwiGLU 层,其中中间维度设为 3.6D,同样取最接近的 128 的倍数。1
| 模型 | 总参数量 | 主干参数量 | 层数 | 隐藏维度 | 注意力头数 | 头维度 | FFN 维度 |
|---|---|---|---|---|---|---|---|
| L08 | 221M | 56.4M | 8 | 640 | 8 | 128 | 2304 |
| L12 | 399M | 169M | 12 | 896 | 12 | 128 | 3200 |
| L16 | 673M | 378M | 16 | 1152 | 16 | 128 | 4096 |
| L20 | 1.22B | 822M | 20 | 1536 | 20 | 128 | 5504 |
| L24 | 1.81B | 1.35B | 24 | 1792 | 24 | 128 | 6400 |
| L28 | 2.62B | 2.10M | 28 | 2048 | 28 | 128 | 7424 |
随后,我们采用标准的等 FLOP 扫描方法拟合了算力最优的缩放定律。
- 所有运行均使用 Muon 优化器和 WSD 学习率调度,其中预热和衰减均采用固定比例。
- 我们在选定的若干档位上调整了批大小和学习率,并拟合了超参数缩放定律,以外推到更大的档位。
- 我们仔细计算了所有模型的 FLOPs,其中包括所有序列混合层和 LM 头。对于 softmax 注意力,我们也只计算因果 FLOPs,因为受二次复杂度影响,重复计算非因果 FLOPs 会对处理更长序列的字节级模型造成不利影响。
等效的 H-Net 缩放阶梯
由于在字节上运行的 H-Net 与标准词元化模型差异巨大,直接比较它们绝非易事。其中涉及诸多可变因素:分块阶段的数量、各阶段的压缩率、每个阶段的架构配置(外层还是内层网络),以及各组件的超参数。
我们决定研究一个更窄的场景:如果仅将语言模型中的分词部分替换掉,H-Net 与 BPE 模型相比表现如何?
为此,我们将 BPE 阶梯的每一档转换为 字节级 1 阶段 H-Net。1 阶段 H-Net 可视为一种带有学习型分词的标准语言模型:内层网络在块(其作用类似于词元)上运行,外层网络则承担动态分词的职责,将字节编码为块并再解码回来。每一档都经过了非常细致的匹配:
- H-Net 的内层网络采用完全相同的 Transformer 架构。
- H-Net 的外层网络(编码器和解码器)在 FLOP 和参数量上与分词层(嵌入层和“反嵌入层”或投影头)相匹配。
- 通过使用强辅助损失,将 H-Net 的压缩率与 BPE 压缩率(4.57)相匹配。
- BPE Transformer 的超参数(批大小和学习率)直接迁移。
将 BPE 阶梯的一档转换为 H-Net
阶梯中的一档
BPE 阶梯中的一档及其对应的 H-Net
两个模型都以字节读取完全相同的文本。各自都有一个主骨干网络,以约 4.5 字节的单位运行,且两个骨干网络采用相同架构。分词语言模型的分词器和嵌入层(有参数量,几乎没有 FLOPs)以及投影头(有参数量和 FLOPs)用括号括在一起,H-Net 的编码器与分块器、解码器与解块器也同样分别括在一起。两者的外层网络在总参数量和 FLOPs 上相匹配。
计算量倍数:验证、下游任务
计算最优缩放定律
字节级 H-Net 与 BPE Transformer 对比
1.28
×
验证 BPB
BPE 和 H-Net 的验证 BPB 与计算量对比;要达到相同的损失,BPE 所需的计算量是 H-Net 的 1.28×。
1.83
×
Paloma 平均值
Paloma 平均值与 BPE 和 H-Net 的计算量对比;要达到相同的损失,BPE 所需的计算量是 H-Net 的 1.83×。
2.06
×
OLMES 平均值
OLMES 平均值与 BPE 和 H-Net 的计算量对比;要达到相同的损失,BPE 所需的计算量是 H-Net 的 2.06×。
字节级 H-NetBPE Transformer
在所有模型规模下,H-Net 运行的损失都低于对应档位的 BPE Transformer——“动态分词”这一解释开箱即胜过了静态分词器!
为两条阶梯分别拟合计算量与损失之间的幂律后,我们便可比较两种架构的计算效率;衡量标准是 H-Net 达到与 BPE 阶梯相同的损失所需计算量能少多少(图 4)。
域内:H-Net 的计算效率是 BPE Transformer 的 1.28 倍。
评测:我们考察了标准的下游评测套件,例如 Paloma 和 OLMES,每个套件都由数十个数据集和任务混合构成,覆盖多种人类语言和领域(代码、数学等)。对于每个套件,我们以模型赋予正确答案的每字节比特数来衡量模型的“软准确率”。将计算量到 bpb 的缩放定律重新拟合至每个评测套件后,我们发现 H-Nets 与 BPE Transformers 之间的差距进一步扩大至约 2x。
在本系列第二篇文章中,我们更深入地分析了一系列语言模型的分布外行为,为“更灵活且具有语义的分块能够带来更强的下游迁移能力”这一假设提供支持。
代码上的计算量倍数
有意思的是,H-Nets 在代码上的表现尤其出色。将同样的定律拟合到其训练过的每一种编程语言后,H-Net 的计算量倍数在全部 15 种语言中均有所上升:从 Markdown 的 1.49x 到 Go 的 2.40x,中位数为 2.04x(图 5)。
在训练混合数据之外的语言上,收益还要更大。对于未包含在数据混合中的 10 种 Stack v2 语言,包括 OCaml、Prolog、Lean 和 Fortran,H-Net 的计算量倍数中位数升至 3.10x,其中从 Haskell 的 2.19x 到 Prolog 的 5.37x。
(为什么这一点很重要?LLMs 经常被要求处理其可能并未见过多少数据的代码,并且越来越多地被用于创造新语言或对新语言进行推理,例如 DSL、内核编程语言和硬件抽象层。因此,分布外代码表现可能确实对前沿模型具有相当重要的意义。)
代码上的计算效率收益
Markdown 上 BPE 与 H-Net 的计算量对比;在损失相同的情况下,BPE 所需的计算量是 H-Net 的 1.49×。
1 / 15
Byte H-NetBPE Transformer
直觉上,我们推测这些现象是由几个原因造成的:
- 总体而言,H-Nets 在新分布上的表现更好,因为它们学会了如何从底层数据中创建语义概念,而这些概念具有更好的泛化能力。这一优势体现为差距从分布内(1.28x)扩大到下游评测(2.06x),以及从领域内编程语言(中位数 2.04x)扩大到领域外编程语言(中位数 3.10x)。第二篇文章将更详细地讨论分布外迁移。
- 对于难以分词的数据,H-Nets 的表现更好;所谓难以分词,是指缺少由可复用模式构成的小词表。这一点在代码中尤其明显,因为代码非常动态,包含多种空白字符和符号、语法结构以及变量名(即便仅使用拉丁字符,本质上也相当于拥有无限词表!)。预定义词元较难涵盖全部语义。
- 在第 3 部分中,我们展示了 H-Nets 如何在推理时即时学习语义,例如能够将代码中的变量名作为单个词元来学习;我们推测,这是使其在代码任务上表现出色的某一种特定机制。
最后,我们发现一个有趣的现象:H-Net 在代码上的性能提升并非源于投入了更多计算资源。
按数据源划分的压缩率
各数据源上 H-Net 相对于 BPE 的压缩率
棒棒糖图:26 个数据源中,H-Net 每个分块的字节数除以 BPE 每个 token 的字节数,按 H-Net 压缩率从高到低排序。最高:stack-v2-sql 1.40、stack-v2-go 1.26、stack-v2-typescript 1.21。最低:fineweb2-hq-chinese 0.43、fineweb2-hq-arabic 0.64、fineweb2-hq-russian 0.65。
H-Net 压缩更多H-Net 压缩更少
图 6支持我们的论点:语言建模能力不仅取决于计算资源和参数,还取决于从数据中学习正确的含义。H-Net 通过从原始字节中寻找语义分块,在难以 token 化的领域中以更少的计算资源取得了好得多的表现。
H-Net 阶梯的局限性
按照我们的方式控制 H-Net,使其与采用 BPE 分词的模型相匹配,实际上会带来非常严重的限制。分层网络具有极高的灵活性:
- 与 BPE 单一的静态阶段相比,它们可以包含多个分块阶段。
- 压缩率可以自由调节;将其设定为 BPE 所定义的比例,实际上违背了 H-Net 的理念,因为理想情况下,H-Net 应该找到数据的自然压缩率(大致由数据的信息量和语义决定)。
- 每个网络的超参数都应可调节;事实上,我们发现将其设为与 BPE 模型相同并非最优。
尤其重要的是,我们仅通过更改 BPE Transformer 的分词部分而定义的 H-Net 阶梯根本不是一种最优的 H-Net 架构。事实上,可以认为它对 BPE Transformer 基线非常有利。当我们移除这些限制时会发生什么?
第 2 部分:训练更大的 H-Net
数据效率与 SmolLM3 的对比
按训练 token 数计算的平均得分。SmolLM3-3B 在 11.04T 后最终达到 63.8%;Byte H-Net 在 0.99T 后最终达到 63.7%。
Byte H-NetSmolLM3-3B (BPE Transformer)
我们的目标是将 H-Net 扩展到比扩展阶梯和早期版本更大的规模(第一篇论文最多将模型扩展到相当于 1.3B 参数的规模,并训练了 100B token)。作为基线,我们选择了SmolLM3,这是 Hugging Face 发布的一款 3B Transformer LLM,其训练方案有完整文档记录。由于 SmolLM3 团队发布了模型架构、训练数据混合方案以及训练全程中的多个检查点,因此我们能够复现该训练方案,并在整个训练过程中比较这些模型——甚至比较到了超出我们训练范围的阶段!
数据:SmolLM3 的预训练分为三个阶段,分别使用 8T/2T/1T tokens,并采用 Llama-3 tokenizer,总计 11.1T tokens。由于我们的目标训练时长短得多,因此只使用了第 1 阶段的数据混合。我们尽力复现了基于相同公开来源构建的版本。控制数据变量并不简单;大多数训练配方会以比例形式报告数据混合(例如,SmolLM3 的 73.2 / 12.1 / 12.0 / 2.7 分别对应英语网页/多语言/代码/数学),但这通常是以 tokens 为单位。为了恰当地控制数据,我们决定匹配底层的 字节级混合(正如我们对 缩放阶梯 所做的那样),最终得到 76.5 / 10.9 / 10.3 / 2.2。
优化:我们未对 H-Net 进行额外调优,而是使其与基线设置完全一致:AdamW (0.9, 0.95)、权重衰减 0.1、裁剪 1.0、峰值 LR 2e-4,以及相同的 WSD 调度,预热长度为 5B token-equivalents。我们在训练最后 15% 期间进行降温;与基线的一个区别是,SmolLM3 的降温阶段出现在第 3 个预训练阶段(10T tokens 之后),且使用了不同的数据混合。
架构:我们在字节之上构建了一个两阶段分层网络。
- 最外层(字节级)阶段在编码器中使用四层 Mamba-2,在解码器中也使用四层。
- 下一阶段在两侧各增加一个滑动窗口注意力块和另外四层 Mamba-2。
- 主网络是一个 40 层 Transformer,每层结构与 SmolLM3 相同,每层均采用全局注意力。
- 压缩比根据此前的工作设定(目标是在两个外层编码器阶段分别达到 4x 和 2x)。
FLOPs 花在了哪里?
与缩放阶梯不同,我们更注重契合分层网络的设计理念:让模型能够在多个阶段进行动态分块,理想情况下遵循数据的语义。这使得让所有维度都与基线匹配变得不可能,因为参数和算力的使用方式差异很大。我们的目标是控制 FLOPs/byte,使训练的每个小批量都使用相同的底层数据,并耗费与基线相同的计算量。
- 压缩比的设置使主网络大约每 8 个字节对应一个位置(最终训练得到的模型达到约 7.6×)。相比 Llama-3 每个 token 约 4.5 个字节,这意味着处理相同文本时使用的 token 比 SmolLM3 少约 40%。
- 这种节省是以 outer encoder/decoder 阶段为代价的;这些阶段占 H-Net FLOPs 的约 43%(相比之下,在 tokenized Transformer 中,嵌入层和 LM head 占 8%)。
- 所得模型在 FLOPs/byte 指标上的计算量匹配误差不超过 2%。
H-Net 的总参数量最终为 3.67B,而基线为 3.08B。差异主要来自编码器和解码器,以及主阶段额外增加的四层;字节嵌入的规模很小。
各组件的参数量和 FLOPs
H-Net 与 SmolLM3 对比
H-Net:参数数量为 3.67 billion,每字节 4.44 GFLOPs。阶段 0 占参数的 6% 和 FLOPs 的 31%。阶段 1 占参数的 9% 和 FLOPs 的 12%。主阶段占参数的 85% 和 FLOPs 的 57%。
SmolLM3:参数数量为 3.08 billion,每字节 4.36 GFLOPs。嵌入层 + LM head 占参数的 9% 和 FLOPs 的 8%。主模型占参数的 91% 和 FLOPs 的 92%。
结果
我们使用基准测试以及与官方 SmolLM3 结果 相同的评测套件进行评估,该套件包含他们的一组“推理 & 常识”和“知识 & 理解”评测。
图 7展示了两个模型在训练过程中的基准测试得分。H-Net 在 ~1T 个 token 后便达到 SmolLM3 的最终平均得分,而后者需要 ~11T 个 token。由于两个模型按字节计算量进行了匹配,因此训练 FLOPs 的节省量与此成正比。
讨论:数据控制
尽管我们努力公平地控制数据和计算量,但事后看来,我们仍不清楚恰当的方法应当是什么。例如,来看英语与代码:SmolLM3 的 token 混合 73.2% / 12.0% 在字节级别分别变成 76.5% / 10.3%,原因是分词器对英语的压缩程度更高(见 图 8b),而这本身是 BPE 分词产生的结果(它会投入更多精力压缩出现频率更高的数据,因此与任意的数据分布绑定)。
另一方面,H-Net 的理念是依据对可压缩性和语义的“内在”理解来压缩数据。例如,我们发现 H-Net 对代码的压缩程度高得多,因为代码天然具有可压缩性;我们将 H-Net 在代码方面的改进很大程度上归因于这种更好地理解数据的能力。但与此同时,这意味着相对于 BPE 基线,H-Net 在代码上花费的计算量更少(因为同一份代码数据会被转换成少得多的块并送入主网络)!那么,更好的控制方式是否是让模型针对每个来源花费相近的计算量呢?
简而言之,BPE 模型和 H-Net 可以以相反的方式压缩各个子领域——例如,BPE 对代码的压缩程度低于英语,而 H-Net 对代码的压缩程度更高——因此无法同时在数据和计算量层面进行匹配,而正确比较模型的方式十分微妙。这些都是开放的研究问题!
各来源的压缩率与计算量
排序方式
在最终检查点时,H-Net 与 SmolLM3 在 38 个来源上的每字节压缩率与训练计算量对比(相对值)
H-Net 压缩得更多或花费更少H-Net 花费更多与 SmolLM3 相同
将鼠标悬停在某个来源上可查看其数值。
第 3 部分:习得行为的定性分析
训练动态
我们展示 H-Net 从训练开始时如何学习,持续更新其对某段特定留出文本(原始 H-Net 论文的摘要!)的表示。
训练过程中的分块
留出文本
步骤 71,856 · 671.0B 字节
H-NetH-Net 摘要 · 208 个块 · 每个 8.4 字节
此文本中的块阶段 0阶段 1
可视化 H-Net 的动态 token
我们展示 H-Net 针对其数据混合中每个来源的若干示例(模型未在这些示例上训练)的块。我们还展示了包括三种 BPE 分词器在内的各种基线:
- Llama-3 分词器(SmolLM3 使用的分词器)
- 一种直接在 SmolLM3 训练语料上训练的新 BPE 分词器,用以展示 BPE 在完全同分布的情况下会学到什么(语料库)
- 一种语料库内的 BPE 分词器,不进行预分词(语料库 (NP)),我们将在下一篇文章中进一步讨论
我们还提供最初发布的 H-Net(记为 LH-Net)的分块结果,以展示我们的内部版本带来的定性改进。
语言
H-Net
比较对象:
图 10a展示了人类语言中的示例。
- H-Net 为自然语言呈现出连贯且语义有意义的边界,包括以空格作为分隔符的拉丁语系/日耳曼语族语言,以及带有或不带有显式分隔符的多字节字符语言(例如 CJK、印地语)。
- H-Net merges multiple words into a single chunk that can be naturally grouped together. For example, “a foot”, “quite a few”.
- 有趣的是,不进行预分词的 BPE 分词器所生成的词元也经常包含多个单词。然而,它们会出现许多奇怪的边界,例如
beat a bear被拆分为beat abear。
- 有趣的是,不进行预分词的 BPE 分词器所生成的词元也经常包含多个单词。然而,它们会出现许多奇怪的边界,例如
- H-Net 的边界并非基于模式,而是基于上下文。例如,在英语中,“a”经常与后面的名词合并,而
a在意大利语中较少与其他词组合,因为它具有不同的含义。 - 对于所有语言,H-Net 的压缩率都远高于 BPE 分词器。在某些需要许多字节才能形成一个字符的语言(如印地语)中,这种优势更为明显。
代码
H-Net
比较对象:
图 10b展示了编程语言中的示例。
- H-Net 在编程语言中的边界也具有一些有趣的特性,这些特性源于其基于上下文的性质。例如,BPE 分词器严格将换行符用作边界,而 H-Net 接受包含多个 {空格/制表符/换行符} 的分块(示例:
__init__(\n self,)。 - 总体而言,H-Net 对代码的压缩程度远高于 BPE(另见图 8b的讨论)。
- H-Net 可以从上下文分词中受益,从而识别诸如新变量/函数名称这类反复出现的模式。
附注:这与原始 H-Net 相比如何?
自从我们于 2025 年提出分层网络这一概念以来,我们对核心架构和学习机制进行了许多重大改进。我们计划随着时间推移向社区发布其中一些架构。这里讨论若干具体的定性改进领域。
就本次比较而言,我们将较早的模型称为 LH-Net,其中 L 可以理解为“懒惰”或“前瞻”。简而言之,这个原始模型只在看到下一个分块的开头后才划定分块边界。2 这使 LH-Net 在创建分块时能够利用更多上下文,但事实证明,这也会对其执行下一词元(字节)预测以及为多个层级结构建模的能力产生负面影响。
LH-Net 与我们当前的内部 H-Net 之间的定性差异,在考察包含多个阶段的递归分层网络时尤其明显。
- In English, consider the first example.
- H-Net 的第 0 阶段分块通常比 LH-Net 的更有意义。例如,当这些分块出现在英语单词中间时,它们通常与具有语言学意义的词干更加吻合。
- H-Net 示例:
trackers→trackers,wondered→wondered,nearby→nearby - LH-Net 示例:
rhino→rhino,from the fact→from thefact,mass→mass,Over→Over,ethical→ethical
- 在字符以多个字节表示的书写系统中,例如 CJK(中文、日文、韩文),多阶段 LH-Net 即使经过两个分块阶段,也无法正确切分字符。
新的涌现行为:上下文内分词
上下文内分词
H-Net 的分词不仅会随着训练推进而改变,也可能在推理期间进一步演化,我们称之为 上下文内分词。我们此前讨论过若干简单案例,说明 H-Net 的边界由上下文决定,而不是由模式决定。在 图 11 中,我们重点展示了上下文内分词的四个有趣示例:
- 新概念:当 H-Net 遇到陌生单词或新概念时,它往往会把这个词拆分为多个分块(类似于 BPE 读取陌生字符串时的做法)。随着它多次遇到同一个单词,它会逐步学会将该词归并为更少的分块。
- 重复格式:如果存在重复出现的短语,我们很容易预判接下来会出现什么。类似地,在这种情况下,H-Net 会学会进一步压缩输入,通过划出非常大的分块来节省计算资源。
- 反复出现的母题:如图所示,H-Net 会学会发现输入中的隐含模式。在字母块示例中,反复出现的块——
LURD、WHYV和FYB——会被归组在一起。数字块示例则是一个有趣的案例,展示了 H-Net 如何发现数据背后的重复母题(2526、3987和3526)。第 0 阶段与第 1 阶段的行为也很值得观察。
H-Net
对比:
域外编程语言
最后,我们以可视化方式展示 H-Net 如何处理其从未见过的编程语言。我们此前发现,相较于基线,H-Net 阶梯在域外编程语言方面尤其有效。图 12 展示了来自这 10 种编程语言的示例。
H-Net
对比:
第 4 部分:从词元到原子:超越语言的分层网络
本文迄今聚焦于分层网络在字节级语言建模中的应用能力,这体现了在语言语境中从原始数据学习的理想。
我们认为,H-Nets 的效用远不止于语言:将低层数据分块为更高层模式的核心概念是智能的基础,并且可以应用于任何领域。
音频是 Cartesia 的核心重点之一。在这一领域,模型无法自主将原始音频抽象为音素和单词,这成为迈向多模态语音到语音模型的一大瓶颈(事实上,多年前促使我们开始研究 H-Nets 的动因之一也正是这一点!)。
更广泛地说,字节未必是所有领域的通用编码。大多数领域都有“基本构建单元”的概念,例如语言中的字符或字节、图像和视频中的像素、音频中的波形、生物学中的核苷酸等等。我们开始将不同模态视为由各种基础原子构成,并将所谓的原子模型视为构建面向多模态的强大基础模型时真正贯彻“苦涩教训”的方式。我们重点介绍其他一些领域的例子。
生物学(DNA)
DNA 是生物学中最低层的编程语言。其自然的抽象层级,以及由此决定的自然基本单元,会因具体语境而发生巨大变化。因此,我们假设 H-Net 的动态分词在 DNA 领域会比静态分词方案显著更有效。
DNA 缩放阶梯
我们比较 H-Net 与 Transformer 在 DNA 序列自回归建模方面的表现。两种模型都以核苷酸分辨率作为输入(因此词表大小为 4,外加一些特殊 token ID)。H-Net 的目标压缩比为 6×:其主网络大约每六个核苷酸对应一个分块。
我们采用与第 1 部分类似的方法,拟合计算最优缩放阶梯。在全部三组数据上,H-Net 都带来了 6–7× 的计算效率提升。
详情:DNA 数据集
- 训练数据。 来自 OpenGenome 的 GTDB 原核生物基因组集合(第 1 阶段),约 274 billion 个核苷酸。我们将每个 contig 切分为不超过 8,192 个核苷酸的片段,然后混合这些片段。
- 验证集。 我们从训练中留出的 8,192 个片段(约 56 million 个核苷酸)。这些基因组的其他片段包含在训练数据中。
gtdb_valid_small和gtdb_test。 OpenGenome 的两个官方留出集:5 个 contig(26 thousand 个核苷酸)和 50 个 contig(374 thousand 个核苷酸)。所有这些 contig 均来自同一个基因组。我们不使用这些 contig 进行训练,但该基因组的其他 contig 包含在训练数据中。
DNA 上的计算最优缩放
H-Net 与 Transformer
5.95
×
验证 BPB
Transformer 和 H-Net 的验证 BPB 与计算量的关系;要达到相同的损失,Transformer 所需的计算量是 H-Net 的 5.95×。
5.83
×
gtdb_valid_small
gtdb_valid_small 与 Transformer 和 H-Net 计算量的关系;要达到相同的损失,Transformer 所需的计算量是 H-Net 的 5.83×。
7.06
×
gtdb_test
gtdb_test 与 Transformer 和 H-Net 计算量的关系;要达到相同的损失,Transformer 所需的计算量是 H-Net 的 7.06×。
H-NetTransformer
DNA 中的定性分析:生物学中依赖上下文的原子
H-Net 仅在原核生物(细菌和古菌)基因组的下一字母预测任务上进行了训练,因此,H-Net 的词元切分在人类基因组中遵循生物学天然结构的特性纯属涌现行为。下面展示其中一些示例:
第 1 张(共 5 张)
H-Net 分块人类 6 号染色体,组蛋白基因 H2BC17 · 训练中从未见过
每个条带一个分块密码子的第 1 个字母密码子的第 2 个字母密码子的第 3 个字母起始 / 终止密码子启动子发夹结构RNA 末端
680 个字母中有 86 个分块 · 每个分块 7.9 个字母
生物学/DNA 快速入门
DNA 与基因。DNA 是由四个字母组成的字符串:A、C、G 和 T。基因是负责产生 RNA 序列的一段 DNA,该 RNA 序列通常会被翻译成蛋白质。只有其编码区才真正编码出蛋白质,而周围的 DNA 所受约束要少得多,信息也更加稀疏:其前方是启动子区域,其后方是终止 RNA 的信号。它们控制蛋白质何时以及如何被制造,而不决定蛋白质是什么。此外,在人类基因中,内含子——位于编码区中间的非编码区域——会被剪接去除,同样不会对蛋白质序列作出贡献。
密码子与阅读框。编码区从起始密码子(通常是 ATG)到终止密码子(TAA、TAG 或 TGA),每次读取三个字母。每个三字母密码子指定蛋白质序列中的一种氨基酸。阅读的起点决定阅读框:向后偏移一个字母,下游的每个密码子都会改变。
一些值得注意的学习行为:
- Inside a gene, the H-Net router settles on a different atomic unit depending on what it is reading; we see biologically aligned treatments of:
- 编码区与非编码 区域
- 外显子与内含子
- 稳健性:H-Net 学到的密码子 网格并非固定不变;当两个编码区域重叠且第二个区域发生偏移时, H-Net 的边界会迅速适应
- 在转运 RNA(tRNA)基因中, 天然单位缩小为单个字母。H-Net 的边界会学会遵循 这一新的天然单位
- DNA 中的大段重复区域 通常信息稀疏,因此在重复序列中,天然生物学单位 会扩展为整个重复序列
有趣的是,正如人们 可能预料的那样,许多这些符合生物学规律的行为直到训练后期才被学会, 这一点可从学习轨迹动画中看出。这些行为的较晚出现凸显了 DNA 领域中“词元化任务”的 非平凡性,并支持以下观点:在多模态领域中,手工设计的词元化 方案将比在语言领域中更加困难且效果更差。
视觉
层级网络天然适用于一维序列数据,在这类数据中进行分块和分段都很直观。然而,将它们扩展到更高维的模态却带来了重大的技术挑战——同时也带来了巨大的机遇,因为视觉是天然适合采用层级结构的领域。在持续进行的研究中,我们开发了将 H-Nets 应用于图像和视频等 N 维数据的新技术。集成到像素空间扩散模型后,H-Nets 不仅提升了生成质量,还能直接从原始数据中发现无监督的语义概念——与我们在语言方面观察到的涌现行为相呼应。
更具体地说,我们以标准的像素空间流匹配基线 JiT 为起点,将其骨干网络替换为多维 H-Net。与一维 H-Nets 一样,该模型会同时学习在哪里分块以及压缩多少。这使它能够沿三个维度动态重新分配计算资源:空间(相较于简单区域,更关注细节丰富的区域)、整合时间(根据去噪步骤调整投入的计算量)以及样本(为复杂图像分配更多算力)。因此,该模型会合并同质或低信息量区域,专注于显著细节,并且在完全无需监督的情况下发现图像的语义分割。最后还有一个有趣的区别:现有的词元合并方法依赖相邻图块之间的相似性,而我们的二维 H-Net 并不强制进行局部分组。因此,该模型常常看起来能够从平面的二维投影中推断出底层的三维结构。例如,即使互不相连的背景区域在图像中被遮挡的前景物体隔开,它通常也会将这些区域归为一个连贯的分块。
图像上的已学习分块
留出图像
红脚鹬,被划分为 177 个已学习的分块
红脚鹬
177 个分块
下一篇:第二部分
在下一篇文章中,我们会更详细地探讨计算效率方面的结果。我们研究了损失到损失的扩展规律,并发现了经验证据,表明 H-Net 性能提升确实源于其端到端从原始字节中学习的能力。
引用
请按以下格式引用这项工作:
Cartesia Research, "From Tokens to Bytes: Scaling Hierarchical Networks", Cartesia Blog, October 2026.或使用 BibTeX 引用:
@article{cartesia2026hnet,
author = {{Cartesia Research}},
title = {From Tokens to Bytes: Scaling Hierarchical Networks},
journal = {Cartesia Blog},
year = {2026},
month = {October},
note = {https://www.cartesia.ai/blog/from-tokens-to-bytes-part-1}
}脚注
来源:Hacker News · cartesia.ai