TorchNeuron:面向 AWS Trainium 上 Hugging Face 模型的原生 PyTorch 后端
TorchNeuron 为 AWS Trainium 提供了原生 PyTorch 后端,通过将 eager 执行和 torch.compile 等标准 PyTorch 功能直接集成到框架中,极大地简化了在 Trainium 上运行和共享 Hugging Face 模型的过程。
TorchNeuron 概述
TorchNeuron 是一个 PyTorch 插件,专门为 AWS Trainium 芯片引入了新的后端。该后端支持 eager 模式、torch.compile 以及原生分布式 API,包括 FSDP 和 TP(张量并行)。
截至 2026 年 10 月 20 日,TorchNeuron 作为公开测试版提供,可通过 pip install torch-neuronx 安装。
技术转变:原生 PyTorch 集成
与之前的方法相比,TorchNeuron 从根本上改变了 Hugging Face 库与 AWS Trainium 的交互方式。此前,Hugging Face 的体验依赖于 optimum-neuron,它使用了基于 PyTorch XLA 的 torch-neuronx。这种较旧的方法要求开发者像编译器一样思考,管理惰性张量、强制静态形状,并在每次图断裂时重新编译。
TorchNeuron 通过直接集成到 PyTorch 中消除了这种复杂性。它将 neuron 作为原生设备暴露出来,支持标准 PyTorch 原语,如 eager 执行、torch.compile,以及 DTensor 和 FSDP2 等原生分布式原语。因此,Hugging Face 库——包括 Transformers、Diffusers、Accelerate、PEFT 和 TRL——可以使用与其他加速器上相同的类和脚本在 Trainium 上运行,使硬件感觉就像标准的 PyTorch 设备。
Transformers:LLM 推理与训练
推理能力
使用 TorchNeuron,Transformers 现在原生支持多种模型的文本生成。借助这个新后端,前 100 个最常用的文本生成模型架构中有 89% 可以开箱即用地支持,相比 Optimum Neuron v0.4.5 支持的 46% 有显著提升。用户通过在代码中传递 device_map=neuron 参数来启用 Neuron 设备。为了获得最佳性能,强烈建议使用静态缓存进行生成,以避免频繁重新编译。
训练能力
在 Trainium 上的训练现在使用标准的 Hugging Face 库(Transformers、Accelerate、PEFT、TRL),无需专用的训练器或 Neuron 特定的模型代码。标准的 TRL 微调脚本可以在 Trainium 实例上运行,只需最少的 Neuron 特定配置。
在 Trainium 上训练的关键注意事项包括:
- 静态形状: 脚本必须在
torch.compile中禁用自动动态形状,并使用包装填充来生成最多 2048 个 token 的序列。Neuron 上的批次被填充为 128 的倍数,这限制了输入形状的数量。编译后的图会在后续具有相同形状的步骤中重复使用。 torch.compile: 启用训练需要传递--torch_compile true。在 Trainium 实例上,torch.compile会自动检测设备并选择 Neuron 后端。- 异步加载: Transformers 中内置的异步权重加载在 Neuron 上不受支持,必须使用
HF_DEACTIVATE_ASYNC_LOAD=1禁用。
并行性通过 DistributedConfig 原生管理,在 model_init_kwargs 中指定张量并行(TP)和 FSDP 大小。Trainer 无需 --fsdp 标志或 Accelerate FSDP 配置即可处理这种分布。
Diffusers:图像生成流水线
Diffusers 库中的许多流水线与 TorchNeuron 兼容,支持 eager 和编译模式。特定模型,包括 FLUX.1-dev、FLUX.2、Qwen-Image、Qwen-Image-2.1 和 H3,与张量并行(TP)兼容,以最大化 Neuron 设备的使用。
张量并行可以通过使用引用为 Neuron 后端配置的 DeviceMesh 的 TensorParallelConfig 初始化 transformer 来实现。这允许分布式图像生成,其中文本编码器可以保留在 CPU 上,而 transformer 在 Neuron 设备上运行。
Kernels:自定义操作与加速
用户可以通过 Neuron kernels 利用自定义操作,这些内核在 Hugging Face Hub 上越来越可用。Neuron kernels 可以使用 Neuron Kernel Interface (NKI) 编写,提供更底层的控制来优化特定操作。例如,一个针对视觉 transformer 的特定内核已在 Trainium 上展示了高达 2.4 倍的加速。
优势总结
TorchNeuron 通过用原生 PyTorch 集成取代复杂的基于编译器的工作流,简化了 AWS Trainium 上的整个机器学习生命周期。这使得研究人员和开发者可以使用标准的 Hugging Face 代码库进行训练和推理,同时获得专用硬件加速的访问权限。