跳到主要内容

AWS Neuron Stack

AWS Neuron 是用于在 AWS 设计的 AI 加速器(Trainium、Inferentia)上执行训练·推理工作负载的软件栈。类似于 NVIDIA 的 CUDA + GPU Operator 组合在 NVIDIA GPU 上发挥的作用,Neuron SDK + Neuron Device Plugin 在 EKS 上将 Trainium/Inferentia 芯片抽象为 Kubernetes 资源。

本文档涵盖在 EKS 上运行 Trainium2/Inferentia2 实例所需的 Neuron 软件栈、Device Plugin、Karpenter 配置、推理框架选择标准。关于 NVIDIA GPU 栈请参阅 NVIDIA GPU 栈,关于节点类型选择请参阅 EKS GPU 节点策略

层次作用核心组件
基础设施自动化Neuron 驱动、运行时、Device Pluginaws-neuron-dkms, neuron-device-plugin
编译器模型 → NEFF(Neuron Executable)编译neuronx-cc (Neuron Compiler)
运行时NeuronCore 执行、内存管理aws-neuron-runtime, neuronx-collectives
推理框架大规模 LLM 服务NxD Inference, vLLM Neuron backend, TGI Neuron
观测NeuronCore 指标、性能分析neuron-monitor, neuron-top, neuron-ls

1. 为什么选择 Neuron

1.1 选择 Neuron 的三个理由

1) 成本效益(Per-Token TCO)

根据 AWS 官方资料,Trainium2/Inferentia2 相比同等性能 GPU 的每 token 成本更低。特别是在以下条件下效果显著。

  • 长期(> 3 个月)持续的稳定推理流量
  • 基于 FP8/INT8/BF16 的标准 Transformer 系列模型
  • 可应用 AWS Reserved/Savings Plan 的工作负载

2) Capacity 可用性

在 NVIDIA H100/H200/B200 供应紧张的时期,Trainium2 相对容易获得。特别是在美国/亚洲特定地区 p5/p5en 库存不足时,Neuron 成为实际替代方案。

3) 与 Bedrock 的连续性

Bedrock 服务的部分 FM(Claude、Llama、Titan 等)内部在 Neuron 栈上运行。在 Bedrock → Self-hosted 迁移路径中选择 Neuron,可以重用编译的工件和运营模式。

1.2 适合/不适合的工作负载

分类工作负载
适合标准 Llama/Mistral/Qwen 系列推理、大规模长期运营、基于 FP8/BF16 的服务、Bedrock 风格治理
需注意新架构首次发布模型(支持延迟)、依赖自定义 CUDA 内核的工作负载、部分 AWQ/GPTQ 量化格式
不适合研究·实验环境中频繁更改模型结构的情况、与 CUDA 专用库(Triton inference server custom kernels)强耦合的代码
Neuron vs NVIDIA 决策原则
  • 模型生态系统最新性是核心 → NVIDIA GPU (H100/H200/B200)
  • 长期运营 TCO / Capacity 是核心 → Trainium2 / Inferentia2
  • 与 Bedrock 混合运营 → 优先考虑 Neuron

2. 实例阵容

基于 AWS 官方产品页面和 EC2 用户指南的 2026-04 时点 Neuron 实例阵容。实际区域可用性需在 AWS 控制台确认。

2.1 推理专用实例(Inferentia2)

实例芯片数NeuronCore总加速器内存vCPU内存网络
inf2.xlarge1× Inferentia2232 GB416 GB最高 15 Gbps
inf2.8xlarge1× Inferentia2232 GB32128 GB最高 25 Gbps
inf2.24xlarge6× Inferentia212192 GB96384 GB50 Gbps
inf2.48xlarge12× Inferentia224384 GB192768 GB100 Gbps

2.2 训练·推理兼用实例(Trainium1/Trainium2)

实例芯片数NeuronCore总加速器内存vCPU内存网络
trn1.2xlarge1× Trainium1232 GB832 GB最高 12.5 Gbps
trn1.32xlarge16× Trainium132512 GB128512 GB800 Gbps EFA
trn1n.32xlarge16× Trainium132512 GB128512 GB1,600 Gbps EFA
trn2.48xlarge16× Trainium21281.5 TB (HBM3)1922 TiB3.2 Tbps EFA v3
trn2 Ultra (trn2u.48xlarge, preview/limited availability)64× Trainium2 (4×trn2 NeuronLink)5126 TB (HBM3)--12.8 Tbps
版本·数值注意
  • NeuronCore 数量和内存容量基于 AWS 官方资料,可能因 SDK 版本不同报告单位有所变化。部署前请使用 neuron-ls 确认实际设备。
  • trn2 Ultra(trn2u) 根据 AWS 官方公告是"通过 NeuronLink 连接 4 个 trn2 的 ultraserver"。截至 2026-04 时点可能处于 preview 或有限可用性,一般可用性·区域范围·Spot 支持需向 AWS 客户团队或官方文档确认。
  • inf1(第一代 Inferentia)不在本文档涵盖范围。新部署请使用 Inferentia2/Trainium2。

3. Neuron SDK 2.x 栈架构

3.1 层次结构

3.2 核心组件

组件说明部署形态
aws-neuron-dkmsLinux 内核模块。创建 /dev/neuron* 设备节点AMI 预安装或 DKMS 包
aws-neuron-runtime (libnrt)NeuronCore 执行、内存管理、调度包含在容器镜像中
aws-neuronx-collectives分布式训练·推理用 collectives(AllReduce、AllGather 等)包含在容器镜像中
neuronx-cc图编译器。将 PyTorch/JAX 模型转换为 NEFF在开发·构建阶段使用
torch-neuronxPyTorch 2.x 前端。torch.compile(backend="neuronx")pip 包
neuron-device-pluginKubernetes Device Plugin。注册 aws.amazon.com/neuron* 资源DaemonSet
neuron-monitor / neuron-top / neuron-ls观测和性能分析工具容器镜像/CLI
Neuron SDK 2.x(2026-04 时点最新稳定版本)

Neuron SDK 在 2.x 发布系列中定期更新。2026-04 时点最新稳定版本的主要特性:

  • Trainium2 (trn2) + trn2 Ultra(NeuronLink) 正式支持
  • NxD Inference 的 LLM 库(Llama 3/4、DBRX、Mistral 系列 pre-compiled checkpoint)
  • vLLM Neuron backend 正式支持(continuous batching、类 PagedAttention 结构)
  • PyTorch 2.5+ / JAX 兼容
  • FP8 (E4M3/E5M2) 推理路径

准确的小版本号请查看 AWS Neuron SDK Release Notes

3.3 编译模型和 NEFF

Neuron 是预编译(Ahead-of-Time)模型。不会在 PyTorch eager 模式下直接执行,需要 neuronx-cc 将运算图转换为 NeuronCore 硬件指令(NEFF, Neuron Executable File Format)后才能执行。

PyTorch / JAX 模型
↓ torch-neuronx trace/compile
Neuron IR (HLO)
↓ neuronx-cc
NEFF (Neuron Executable) — 首次编译 5-30 分钟,之后缓存复用
↓ aws-neuron-runtime
Trainium / Inferentia 硬件执行

运营方面的含义:

  • 首次 Pod 启动时 NEFF 编译可能需要 20-30 分钟以上 → 预编译后缓存到 S3/ECR
  • 模型权重更改时需要重新编译 → 在 CI 流水线中一起管理 NEFF 工件
  • NxD Inference 为官方模型提供 pre-compiled checkpoint,缩短初始启动时间

4. EKS 集成

4.1 Neuron Device Plugin 部署

Neuron Device Plugin 将节点的 /dev/neuron* 设备注册为 Kubernetes 扩展资源。使用 AWS 官方 YAML/Helm chart。

# 官方 YAML 部署示例
kubectl apply -f https://raw.githubusercontent.com/aws-neuron/aws-neuron-sdk/master/src/k8/k8s-neuron-device-plugin.yml
kubectl apply -f https://raw.githubusercontent.com/aws-neuron/aws-neuron-sdk/master/src/k8/k8s-neuron-device-plugin-rbac.yml

部署后节点资源中会显示以下内容。

kubectl describe node <trn2-node> | grep aws.amazon.com
# Allocatable:
# aws.amazon.com/neuron: 16 # trn2.48xlarge: Trainium2 芯片数
# aws.amazon.com/neuroncore: 128 # 总 NeuronCore 数
# aws.amazon.com/neurondevice: 16 # 设备文件数

4.2 资源请求模式

在 Pod 规范中请求 Neuron 资源时,从三种单位中选择一种。

资源含义使用时机
aws.amazon.com/neuronNeuron 芯片单位(trn2 的 Trainium2 芯片)芯片单位分配明确的情况
aws.amazon.com/neuroncoreNeuronCore 单位(trn2 每芯片 8 个)精细的核心单位调度
aws.amazon.com/neurondevice/dev/neuron* 设备文件单位遗留/特定工具兼容
# 示例:使用整个 trn2.48xlarge(16 个芯片 = 128 个 NeuronCore)
apiVersion: v1
kind: Pod
metadata:
name: llama3-70b-neuron
spec:
nodeSelector:
node.kubernetes.io/instance-type: trn2.48xlarge
tolerations:
- key: aws.amazon.com/neuron
operator: Exists
effect: NoSchedule
containers:
- name: server
image: public.ecr.aws/neuron/pytorch-inference-neuronx:2.x
resources:
limits:
aws.amazon.com/neuron: "16"
requests:
aws.amazon.com/neuron: "16"
# 示例:仅使用 4 个 NeuronCore(inf2.xlarge 2 个 + 一半 NeuronCore)
resources:
limits:
aws.amazon.com/neuroncore: "4"

4.3 节点 Taint / Toleration 模式

建议使用与 NVIDIA GPU 节点相同的模式。

# 在节点上应用 taint(在 Karpenter NodePool 中设置)
taints:
- key: aws.amazon.com/neuron
effect: NoSchedule
# 在 Pod 中声明 toleration
tolerations:
- key: aws.amazon.com/neuron
operator: Exists
effect: NoSchedule

4.4 AMI 选择

AMINeuron 驱动推荐用途
EKS Optimized AMI (Neuron)预安装生产标准 — --ami-type AL2023_x86_64_NEURON 或等效
Deep Learning AMI (Neuron)预安装 + Neuron SDK tools开发/调试节点
通用 AL2023手动安装(DKMS)不推荐

在 EKS 托管节点组中使用 Neuron 优化 AMI 时,nodeadm 会自动配置 Neuron 驱动。


5. Karpenter NodePool 示例

5.1 trn2 训练/大型推理 NodePool

apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
name: neuron-trn2
spec:
template:
metadata:
labels:
accelerator: neuron
accelerator-family: trainium2
spec:
requirements:
- key: karpenter.k8s.aws/instance-family
operator: In
values: ["trn2"]
- key: karpenter.sh/capacity-type
operator: In
values: ["spot", "on-demand"]
- key: topology.kubernetes.io/zone
operator: In
values: ["us-east-2a", "us-east-2b", "us-east-2c"]
taints:
- key: aws.amazon.com/neuron
effect: NoSchedule
nodeClassRef:
group: karpenter.k8s.aws
kind: EC2NodeClass
name: neuron-nodeclass
disruption:
consolidationPolicy: WhenEmpty
consolidateAfter: 10m
limits:
aws.amazon.com/neuron: "64"

5.2 inf2 低成本推理 NodePool

apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
name: neuron-inf2
spec:
template:
metadata:
labels:
accelerator: neuron
accelerator-family: inferentia2
spec:
requirements:
- key: karpenter.k8s.aws/instance-family
operator: In
values: ["inf2"]
- key: karpenter.sh/capacity-type
operator: In
values: ["spot", "on-demand"]
taints:
- key: aws.amazon.com/neuron
effect: NoSchedule
nodeClassRef:
group: karpenter.k8s.aws
kind: EC2NodeClass
name: neuron-nodeclass
limits:
aws.amazon.com/neuron: "48"

5.3 EC2NodeClass(Neuron AMI)

apiVersion: karpenter.k8s.aws/v1
kind: EC2NodeClass
metadata:
name: neuron-nodeclass
spec:
amiSelectorTerms:
- alias: al2023@latest # 使用 Neuron 优化 AMI variant 时建议明确指定 id
role: KarpenterNodeRole-eks-genai
subnetSelectorTerms:
- tags:
karpenter.sh/discovery: eks-genai
subnet-type: private
securityGroupSelectorTerms:
- tags:
karpenter.sh/discovery: eks-genai
blockDeviceMappings:
- deviceName: /dev/xvda
ebs:
volumeSize: 500Gi # NEFF 缓存 + 模型权重空间
volumeType: gp3
iops: 16000
throughput: 1000
encrypted: true
metadataOptions:
httpTokens: required
AMI 选择注意事项

Karpenter EC2NodeClass 的 amiSelectorTerms 中的 al2023 alias 指的是标准 AL2023 AMI。要使用预装 Neuron 驱动的 variant,请指定 AWS 发布的 Neuron optimized AMI 的 SSM parameter 或明确的 AMI ID。虽然也可以通过 UserData 安装 Neuron DKMS,但不推荐这种方式。


6. 推理框架

在 Neuron 上服务 LLM 的主要框架有三种。

6.1 NxD Inference(Neuron Distributed Inference)

AWS 官方维护的大规模 LLM 推理库。基于 PyTorch,为 Llama 系列和主要开源模型提供 Tensor/Pipeline Parallelism、Continuous Batching、类 PagedAttention 内存管理、Speculative Decoding。

特性:

  • Llama 3/4、DBRX、Mistral、Mixtral 等官方提供 pre-compiled checkpoint
  • NeuronCore 单位的 TP/PP 配置 API
  • 与 Bedrock 内部服务路径相似的优化配置
  • Apache 2.0 / AWS 官方支持

6.2 vLLM Neuron backend

vLLM 的 Neuron 后端从 2024 年开始实验性引入,2025~2026 时点功能 parity 快速改善。截至 2026-04,主要 LLM(Llama 3/4、Qwen、Mistral)可实现 continuous batching 和 OpenAI 兼容 API 服务。

特性:

  • vllm --device neuron --tensor-parallel-size N 形式与现有 vLLM 部署脚本兼容
  • PagedAttention 本身是 CUDA 实现,但 Neuron backend 提供等效的块单位 KV 管理
  • 最新 vLLM 功能(speculative decoding、chunked prefill、prefix caching)的 Neuron parity 因功能而异,必须确认发布说明

6.3 TGI(Text Generation Inference)Neuron fork

HuggingFace 维护的 TGI 的 optimum-neuron 基础 fork。通过 optimum[neuronx] 简单地将 HuggingFace 模型编译·服务到 Neuron。

特性:

  • 与基于 HuggingFace Hub 的工作流紧密集成
  • TGI 本身从 2025 年进入维护模式 → 新功能相比 vLLM 较慢
  • 与 SageMaker 的 HuggingFace LLM DLC 兼容

6.4 框架比较

项目NxD InferencevLLM Neuron backendTGI Neuron fork
维护主体AWS 官方vLLM 社区 + AWS 贡献HuggingFace + AWS 贡献
模型覆盖范围AWS 选定的官方模型(Llama/Mistral/DBRX 等)vLLM 支持模型中已移植到 Neuron 的HuggingFace 模型中 optimum-neuron 支持的
pre-compiled checkpoint提供部分部分
OpenAI 兼容 API支持支持支持
Continuous Batching支持支持支持
Speculative Decoding支持(按模型)部分支持有限
Prefix Caching按模型有限有限
更新速度AWS 发布周期vLLM 发布周期(快)慢(维护模式)
推荐用途AWS 官方模型大规模生产多样模型·功能最新功能利用HuggingFace 生态连续性
框架选择指南
  • Llama 系列大规模生产 → NxD Inference(pre-compiled checkpoint 优势)
  • 多样模型、利用最新 vLLM 功能 → vLLM Neuron backend
  • 基于 HuggingFace Hub 的现有流水线 → TGI Neuron fork
  • 新项目建议在 NxD Inference 或 vLLM Neuron 中选择一种

7. 支持模型矩阵

基于 AWS Neuron 官方 Model Zoo 和 NxD Inference 支持矩阵。最新支持范围请查看 AWS Neuron Samples GitHubNxD Inference 文档

7.1 主要官方支持模型(2026-04 时点)

模型大小推荐实例Pre-compiled备注
Llama 3.1 8B / 70B8B / 70Binf2.48xlarge / trn2.48xlargeNxD 官方
Llama 3.3 70B70Btrn2.48xlargeNxD 官方
Llama 4 (Scout/Maverick)17B-400Btrn2.48xlarge / trn2 Ultra按发布确认NxD 支持扩展中
Mistral 7B / Mixtral 8x7B7B / 47Binf2.48xlargeNxD/vLLM 支持
Mixtral 8x22B141Btrn2.48xlarge部分MoE,需要 EP
Qwen3 系列4B-32Binf2 / trn2部分建议通过 vLLM Neuron backend
DBRX 132B132Btrn2.48xlargeNxD 官方(MoE)
DeepSeek V3671B MoEtrn2 Ultra有限需确认编译·内存限制
未来支持模型

DeepSeek V3、Llama 4 Maverick、GLM-5 等最新大型 MoE 模型的 Neuron 支持将逐步添加。部署前务必确认该时点的 NxD Inference 支持矩阵和 Release Notes。本文档中的表格仅供参考,不保证具体版本的支持情况。

7.2 量化支持

格式Neuron 支持
BF16默认
FP16支持
FP8 (E4M3, E5M2)Trainium2 支持,Inferentia2 有限
INT8 (weights)支持(按模型)
AWQ有限(需按模型·版本确认)
GPTQ有限
GGUF不支持

8. 可观测性

8.1 Neuron 专用工具

工具作用使用时机
neuron-ls列出节点的 Neuron 设备初始诊断
neuron-top实时 NeuronCore 使用率、内存、功耗实时监控
neuron-monitorJSON 格式指标流Prometheus exporter 输入
neuron-profileNEFF 执行性能分析性能优化

8.2 Prometheus / CloudWatch 集成

采集链:

  • neuron-monitor 以 JSON 流输出 NeuronCore 使用率、HBM 使用量、设备温度、执行延迟等
  • OSS 社区的 neuron-monitor-prometheus exporter 将其转换为 Prometheus 格式
  • 在 AMP(Amazon Managed Prometheus)中通过 remote-write 采集,在 AMG(Amazon Managed Grafana)中仪表板化
  • CloudWatch Container Insights 的 Neuron 指标也可一起使用

详细 AMP/AMG 配置请参阅监控·Observability 设置

8.3 主要指标

指标说明用途
neuron_core_utilizationNeuronCore 使用率(%)HPA/KEDA 触发器
neuron_device_memory_usedHBM 使用量(MB)OOM 防止、容量规划
neuron_execution_latency推理请求处理延迟SLO 监控
neuron_hardware_ecc_eventsECC 错误数硬件健康检查
neuron_power_watts每芯片功耗(W)散热·成本管理

9. 限制和注意事项

9.1 功能限制

类别限制
自定义内核CUDA 专用内核(FlashAttention custom impl 等)需要直接移植到 Neuron
量化部分 AWQ/GPTQ 变种、GGUF 不支持
编译时间新模型首次编译 20-30 分钟以上 → NEFF 缓存必需
调试相比 nvidia-smi,GPU 遥测工具生态较窄
开源生态缺少类似 NVIDIA GPU Operator / DCGM 的"统一编排器" — 需组合 Neuron Device Plugin + 单独 exporter

9.2 运营注意事项

生产部署前检查清单
  • 确认目标模型在 NxD Inference 或 vLLM Neuron backend 当前版本中是否支持
  • CI 阶段预编译模型 NEFF 并作为工件管理到 S3/ECR
  • 考虑首次 Pod 启动延迟,设置 readinessProbe / startupProbe(initialDelaySeconds 足够大)
  • 验证 HPA/KEDA 触发器指标中 neuron_core_utilization 是否正常采集
  • 确认各区域 Trainium2 容量并制定 Spot 中断策略
  • 与 Bedrock 混合运营时明确模型版本同步策略

9.3 Neuron 应避免的工作负载

  • 每周更改模型结构的 R&D 实验 — 编译成本反复发生
  • 已深度耦合 Triton Inference Server + 自定义 Python backend 的现有栈
  • 非常小的请求(<10 tokens/sec)的罕见调用 — 预热·编译开销相对较大

10. 相关文档

参考资料