Hugging Face 的语言模型训练工具支持了亚马逊专用训练芯片,并减少了异步强化学习中重复输入的冗余计算。希望拓展训练环境的开发者,以及从同一问题生成多个回答进行训练的团队,可分别关注这些变化。
1. 在 Trainium 上使用现有训练代码
2026年10月15日发布的 TRL v1.16.0 新增了 AWS Trainium 支持及使用指南。根据发行说明,此版本基于上一版本的统一语言模型输出层,补齐了剩余的支持缺口。
使用指南说明,安装 torch-neuronx 后,在同一环境中安装 TRL,即可运行现有训练器代码,无需修改。以下是文档中监督微调的快速入门代码,即让模型学习示例回答的训练方式。
from datasets import load_dataset
from trl import SFTTrainer
trainer = SFTTrainer(
model="Qwen/Qwen3-0.6B",
train_dataset=load_dataset("trl-lib/Capybara", split="train"),
)
trainer.train()2. 对齐长度以减少重新编译
Neuron 每遇到不同的输入形状就会编译计算图,每次约需 1 分钟。本版本将 pad_to_multiple_of 的默认值改为自动选择。在 Neuron 上,将输入长度填充至 128 的倍数,以减少不同形状;在 GPU 上则保持原有行为。
在 Trainium2 上使用 1 个 Neuron 核心、批次大小为 4,对 Qwen3-0.6B 进行监督微调时,20 步在默认设置下耗时 130 秒,关闭长度对齐后耗时 260 秒。这只是该示例的对比,并不保证其他模型的训练速度。
模型编译是可选项。使用 torch_compile=True 时,必须关闭 Dynamo 的自动动态形状功能。在文档中相同模型、批次大小和核心数的条件下,首次编译约需 2 分钟,之后每步耗时从不编译时的 1.71 秒降至 1.15 秒。
3. 相同前缀只计算一次
AsyncGRPO 的树注意力将小批次的输入组织成前缀树。它把从同一问题分出的回答像树枝一样连接起来,让共享的前缀只计算一次,而不是为每个回答重复计算。
内部会将没有分叉的部分合并为区段,每个区段收集并访问与自身相连路径上的键和值。注意力之外的层对每个唯一词元只执行一次,仅键和值会在共享路径上重复。
发行说明中的 Qwen3-1.7B 测量合计了每个生成结果 32K 词元的前向与反向计算。在共享提示词、打包率为 3.37 的条件下,传统序列打包耗时 8179ms,树打包耗时 2755ms,给出的加速倍数为 2.97 倍。峰值内存从 35.2GiB 降至 13.6GiB。未提供测量硬件。
没有单独的打包选择选项。如果不存在共享部分,其形式就与传统序列打包相同,发行说明称此时额外开销约为 1%。
4. 在线生成需检查缓存和数据类型
在此环境中,训练期间生成回答的在线训练器无法使用 vLLM,因此通过 Transformers 生成。默认动态缓存会随每个词元改变输入形状,因此文档建议使用在生成过程中固定形状的静态缓存。
目前静态缓存要求使用 bf16 模型。默认 fp32 模型中已报告键和值的数据类型不一致的问题。生成前也会对齐提示词长度,但出现新的缓存大小时仍需重新编译。
数据并行运行也需要检查核心配置。包含 1 颗 Trainium2 芯片的 trn2.3xlarge 默认将 8 个物理核心组合为 4 个逻辑核心。文档说明,在此配置下通过 Accelerate 启动 4 个进程进行监督微调,比单个核心快 3.6 倍。仅选用部分核心时,必须遵循文档允许的组合。
5. 分别考察节省的计算量与准备开销
这两项变化降低的是不同开销。树式处理减少共享输入的重复运算和内存占用,而 Trainium 的长度对齐以处理额外填充词元为代价,减少需要重新编译的形状。选择模型编译则是承受启动等待时间,以缩短后续重复运行的时间。
树注意力的性能测量与 Trainium 使用示例是分别提供的。由于未提供两项功能结合后的性能数据,不应将各自的提升幅度相加解读。
本次更新拓展了训练硬件选择并提高了共享输入处理效率,但决定是否引入时,应分别评估输入共享程度和编译准备开销。
