Trainium 不再要求改写模型:TorchNeuron 让 PyTorch 代码只改一行设备名就跑起来
核心概要
AWS 发布 TorchNeuron,一个面向 Trainium 芯片的原生 PyTorch 后端,模型代码、库和工具无需为 Neuron 单独适配即可运行。此前在 Trainium 上使用 Hugging Face 模型需要 Neuron 专用软件与配置,现在只需把设备指向 neuron。它基于 PyTorch 的 PrivateUse1 扩展点注册设备,支持 eager、torch.compile 与自定义 NKI 算子,覆盖 Trainium2 和 Trainium3,10 月 20 日以 Apache 2.0 公开 Beta 发布。
深度剖析
Trainium 现在作为标准 PyTorch 设备出现,模型代码、训练与推理库以及调试工具可以按原样运行,而不必为这块芯片另写一套适配层。 此前要利用 Trainium,需要用 Neuron 专用软件和配置改造 Hugging Face 模型;PyTorch 过去几年把 API 做成与加速器无关,并开放了注册自定义硬件的扩展点。 设备切换只需在模型上调用 .to('neuron'),按 torch.accelerator 编写的代码可原样运行;编译模型则通过 torch.compiler.set_default_backend("neuron") 一次性指定后端。
后端把 Trainium 注册进 PyTorch 的设备枚举,使 torch.nn、torch.tensor、torch.autocast、torch.distributed 和 torch.profiler 等标准接口直接作用于 neuron 设备。 注册走的是 PyTorch 官方的 PrivateUse1 自定义硬件扩展点,而不是另建一套并行 API。 两种执行模式都原生可用:eager 逐算子执行,适合研究与调试;torch.compile 把模型捕获成图,经 Torch-MLIR 降到 StableHLO,再由 Neuron 编译器生成在硬件上执行的 NEFF 文件。
性能工程师沿用同一个 torch.profiler,就能把框架层、运行时和芯片上的事件串起来,并跳回对应的源码行定位瓶颈。 profiler 通过 NeuronConfig 控制 Neuron 专有的数据采集,采集结果可在 Neuron Explorer 中查看。 Neuron Explorer 同时输出 Parquet 格式的逐算子、逐引擎指标,可直接查询或交给智能体做自动瓶颈分析。
启示与展望
这则发布面向使用 PyTorch 做训练与推理的研究人员和工程师,覆盖 Trainium2 与 Trainium3,10 月 20 日起以 Apache 2.0 公开 Beta 形式在 GitHub 提供,并可通过 pip 安装。支持范围包括 eager 执行、torch.compile、NKI 自定义算子、DDP、FSDP2、张量并行与流水线并行等标准分布式接口,以及 vLLM 与 vLLM Omni 推理插件。
首个版本明确不支持若干特性,包括稀疏张量与稀疏算子、NestedTensor、前向模式自动求导、原生多头注意力中的任意注意力掩码、逐通道量化以及动态与符号形状。约 15.4 万项上游测试结果中约 6.9 万项被跳过,其中约 2.2 万项因算子尚无原生 Neuron 实现,官方表示计划在后续版本中逐步补齐。TorchAO 与 FP8 目前处于私有 Beta。
