

 **帮助改进此页面** 

要帮助改进本用户指南，请选择位于每个页面右侧窗格中的**在 GitHub 上编辑此页面**链接。

# 为 GPU 实例使用 EKS 优化版加速 AMI
<a name="ml-eks-optimized-ami"></a>

Amazon EKS 支持适用于 GPU 实例的 EKS 优化版 Amazon Linux 和 Bottlerocket AMI。EKS 优化版加速 AMI 通过为加速的 Kubernetes 堆栈提供预先构建、经过验证的操作系统映像，简化了 EKS 集群中人工智能和机器学习工作负载的运行。除了标准 EKS 优化版 AMI 中包含的 Kubernetes 核心组件外，EKS 优化版加速 AMI 还包括运行 NVIDIA GPU `G` 和 `P` EC2 实例以及 EKS 集群中的 AWS GPU [Inferentia](https://aws.amazon.com/machine-learning/inferentia/) 和 [Trainium](https://aws.amazon.com/machine-learning/trainium/) EC2 实例所需的内核模块和驱动程序。

下表显示了每个 EKS 优化版加速 AMI 变体支持的 GPU 实例类型。有关 AMI 变体的最新更新，请在 GitHub 上查看 EKS 优化版 [AL2023 版本](https://github.com/awslabs/amazon-eks-ami/releases)和 [Bottlerocket 版本](https://github.com/bottlerocket-os/bottlerocket/blob/develop/CHANGELOG.md)。


| EKS AMI 变体 | EC2 实例类型 | 
| --- | --- | 
|  AL2023 x86\$164 NVIDIA  |  p6-b300、p6-b200、p5、p5e、p5en、p4d、p4de、p3、p3dn、g7e、gr6、g6、g6e、g6f、gr6f、g5、g4dn  | 
|  AL2023 ARM NVIDIA  |  p6e-gb200、p6e-gb300、g5g  | 
|  AL2023 x86\$164 Neuron  |  inf1、inf2、trn1、trn2  | 
|  Bottlerocket x86\$164 aws-k8s-nvidia  |  p6-b300、p6-b200、p5、p5e、p5en、p4d、p4de、p3、p3dn、g7e、gr6、g6、g6e、g6f、gr6f、g5、g4dn  | 
|  Bottlerocket aarch64/arm64 aws-k8s-nvidia  |  G5g  | 
|  Bottlerocket x86\$164 aws-k8s  |  inf1、inf2、trn1、trn2  | 

## EKS 优化版 NVIDIA AMI
<a name="eks-amis-nvidia"></a>

使用 Amazon EKS 优化版 NVIDIA AMI，即表明您同意 [NVIDIA 云最终用户许可协议（EULA）](https://s3.amazonaws.com/EULA/NVidiaEULAforAWS.pdf)。

要查找最新的 EKS 优化版 NVIDIA AMI，请参阅[检索建议的 Amazon Linux AMI ID](retrieve-ami-id.md)和[检索建议的 Bottlerocket AMI ID](retrieve-ami-id-bottlerocket.md)。

将 Amazon Elastic Fabric Adaptor（EFA）与 EKS 优化版 AL2023 或 Bottlerocket NVIDIA AMI 搭配使用时，必须单独安装 EFA 设备插件。有关更多信息，请参阅 [使用 Elastic Fabric Adapter 在 Amazon EKS 上运行机器学习训练](node-efa.md)。

## EKS AL2023 NVIDIA AMI
<a name="eks-amis-nvidia-al2023"></a>

将 [NVIDIA GPU 操作器](https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/overview.html)与 EKS 优化版 AL2023 NVIDIA AMI 搭配使用时，必须禁用驱动程序和工具包的操作器安装功能，因为这些驱动程序和工具包已包含在 EKS AMI 中。EKS 优化版 AL2023 NVIDIA AMI 不包括 NVIDIA Kubernetes 设备插件或 NVIDIA DRA 驱动程序，这些插件和驱动程序必须单独安装。有关更多信息，请参阅 [在 Amazon EKS 上管理 NVIDIA GPU 设备](device-management-nvidia.md)。

除标准 EKS AMI 组件外，EKS 优化版 AL2023 NVIDIA 还包含下列组件。
+ NVIDIA 驱动程序
+ NVIDIA CUDA 用户模式驱动程序
+ Nvidia 容器工具包
+ NVIDIA Fabric Manager
+ NVIDIA 持久化守护进程
+ NVIDIA IMEX 驱动程序
+ NVIDIA NVLink Subnet Manager
+ 最小 EFA（内核模块和 rdma-core）

有关 NVIDIA CUDA 用户模式驱动程序和应用程序容器中使用的 CUDA 运行时/库的详细信息，请参阅 [NVIDIA 文档](https://docs.nvidia.com/deploy/cuda-compatibility/why-cuda-compatibility.html#why-cuda-compatibility)。`nvidia-smi` 显示的 CUDA 版本是安装在主机上的 NVIDIA CUDA 用户模式驱动程序的版本，该驱动程序必须与应用程序容器中使用的 CUDA 运行时/库兼容。

EKS 优化版 AL2023 NVIDIA AMI 支持适用于 Kubernetes 版本 1.33 及更高版本的内核 6.12，以及适用于所有 Kubernetes 版本的 NVIDIA 驱动程序 580 版。需要 NVIDIA 580 驱动程序才能使用 CUDA 13\$1。

有关 AMI 中包含的组件版本的详细信息，请参阅 GitHub 上的 EKS 优化版 [AL2023 版本](https://github.com/awslabs/amazon-eks-ami/releases)。有关 EKS AMI 如何配置 NVIDIA 依赖项的详细信息，请参阅 EKS AL2023 NVIDIA AMI [安装脚本](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2023/provisioners/install-nvidia-driver.sh)和[内核加载脚本](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2023/runtime/gpu/nvidia-kmod-load.sh)。您可以使用 `dnf list installed` 命令在正在运行的 EC2 实例上找到已安装的软件包及其版本的列表。

以 EKS 优化版 AMI 为基础构建自定义 AMI 时，不建议且不提供技术支持运行操作系统升级（即 `dnf upgrade`），亦不建议升级 EKS 优化版 AMI 中预装的任何 Kubernetes 或 GPU 相关软件包，因为此类操作可能破坏组件间的兼容性。若仍选择对 EKS 优化版 AMI 中的操作系统或软件包执行升级操作，建议先在开发或预发布环境中开展全面测试，再部署至生产环境。

针对 GPU 实例构建自定义 AMI 时，建议为计划运行的各代实例类型及实例系列分别构建独立的自定义 AMI。EKS 优化版加速型 AMI 会在运行时阶段，根据底层实例的代次与系列选择性安装驱动程序及软件包。有关[安装](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2023/provisioners/install-nvidia-driver.sh)及[运行时](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2023/runtime/gpu/nvidia-kmod-load.sh)的详细信息，请参阅 EKS AMI 脚本。

## EKS Bottlerocket NVIDIA AMI
<a name="eks-amis-nvidia-bottlerocket"></a>

将 [NVIDIA GPU 操作器](https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/overview.html)与 EKS 优化版 Bottlerocket NVIDIA AMI 搭配使用时，必须禁用驱动程序、工具包和设备插件的操作器安装功能，因为这些驱动程序、工具包和设备插件已包含在 EKS AMI 中。

除标准 EKS AMI 组件外，EKS 优化型 Bottlerocket NVIDIA AMI 还包含下列组件。所有 Bottlerocket 变体中都安装了 EFA（内核模块和 rdma-core）的最少依赖项。
+ NVIDIA Kubernetes 设备插件
+ NVIDIA 驱动程序
+ NVIDIA CUDA 用户模式驱动程序
+ Nvidia 容器工具包
+ NVIDIA Fabric Manager
+ NVIDIA 持久化守护进程
+ NVIDIA IMEX 驱动程序
+ NVIDIA NVLink Subnet Manager
+ NVIDIA MIG Manager

有关 NVIDIA CUDA 用户模式驱动程序和应用程序容器中使用的 CUDA 运行时/库的详细信息，请参阅 [NVIDIA 文档](https://docs.nvidia.com/deploy/cuda-compatibility/why-cuda-compatibility.html#why-cuda-compatibility)。显示的 CUDA 版本`nvidia-smi`是安装在主机上的 NVIDIA CUDA 用户模式驱动程序的版本，该驱动程序必须与应用程序容器中使用的 CUDA 运行时/库兼容。

有关已安装软件包及其版本的详细信息，请参阅 [Bottlerocket 文档](https://bottlerocket.dev/en/)中的 Bottlerocket 版本信息。EKS 优化版 Bottlerocket NVIDIA AMI 支持适用于 Kubernetes 版本 1.33 及更高版本的内核 6.12，以及适用于 Kubernetes 版本 1.34 及更高版本的 NVIDIA 驱动程序 580 版。需要 NVIDIA 580 驱动程序才能使用 CUDA 13\$1。

## EKS 优化版 Neuron AMI
<a name="eks-amis-neuron"></a>

有关如何将 Neuron 与 Amazon EKS 搭配使用来运行训练和推理工作负载的详细信息，请参阅以下参考资料：
+  AWS Neuron 文档中的 [容器 – Kubernetes – 入门](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/containers/kubernetes-getting-started.html)
+  GitHub 上 AWS Neuron EKS 示例中的[训练示例](https://github.com/aws-neuron/aws-neuron-eks-samples/blob/master/README.md#training)
+  [使用 Inferentia 在 Amazon EKS 上部署机器学习推理工作负载](inferentia-support.md) 

要查找最新的 EKS 优化版 Neuron AMI，请参阅[检索建议的 Amazon Linux AMI ID](retrieve-ami-id.md)和[检索建议的 Bottlerocket AMI ID](retrieve-ami-id-bottlerocket.md)。

将 Amazon Elastic Fabric Adaptor（EFA）与 EKS 优化版 AL2023 或 Bottlerocket Neuron AMI 搭配使用时，必须单独安装 EFA 设备插件。有关更多信息，请参阅 [使用 Elastic Fabric Adapter 在 Amazon EKS 上运行机器学习训练](node-efa.md)。

## EKS AL2023 Neuron AMI
<a name="eks-amis-neuron-al2023"></a>

EKS 优化型 AL2023 Neuron AMI 不包括 Neuron DRA 驱动程序、Neuron Kubernetes 设备插件或 [Neuron Kubernetes 调度器扩展程序](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/containers/tutorials/k8s-neuron-scheduler.html)，它们必须单独安装。有关更多信息，请参阅 [在 Amazon EKS 上管理 Neuron 设备](device-management-neuron.md)。

除标准 EKS AMI 组件外，EKS 优化版 AL2023 Neuron AMI 还包含下列组件。
+ Neuron 驱动程序 (aws-neuronx-dkms)
+ Neuronx 工具 (aws-neuronx-tools)
+ 最小 EFA（内核模块和 rdma-core）

有关 EKS AMI 如何配置 Neuron 依赖项的详细信息，请参阅 EKS AL2023 Neuron AMI [安装脚本](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2023/provisioners/install-neuron-driver.sh)。在 GitHub 上查看 EKS 优化版 [AL2023 版本](https://github.com/awslabs/amazon-eks-ami/releases) 以及 AMI 中包含的组件版本。您可以使用 `dnf list installed` 命令在正在运行的 EC2 实例上找到已安装的软件包及其版本的列表。

## EKS Bottlerocket Neuron AMI
<a name="eks-amis-neuron-bottlerocket"></a>

标准 Bottlerocket 变体 (aws-k8s) 包括在 AWS Inferentia 或 Trainium EC2 实例上运行时会自动检测和加载的 Neuron 依赖项。

EKS 优化型 Bottlerocket AMI 不包括 Neuron DRA 驱动程序、Neuron Kubernetes 设备插件或 [Neuron Kubernetes 调度器扩展程序](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/containers/tutorials/k8s-neuron-scheduler.html)，它们必须单独安装。有关更多信息，请参阅 [在 Amazon EKS 上管理 Neuron 设备](device-management-neuron.md)。

除标准 EKS AMI 组件外，EKS 优化版 Bottlerocket Neuron AMI 还包含下列组件。
+ Neuron 驱动程序 (aws-neuronx-dkms)
+ 最小 EFA（内核模块和 rdma-core）

在 Neuron 实例中使用 EKS 优化版 Bottlerocket AMI 时，必须在 Bottlerocket 用户数据中配置以下内容。此设置允许容器根据工作负载规范中提供的 `runAsUser` 和 `runAsGroup` 值，获得已挂载 Neuron 设备的所有权。有关 Bottlerocket 中 Neuron 支持的更多信息，请参阅 GitHub 上的 [EKS 快速入门自述文件](https://github.com/bottlerocket-os/bottlerocket/blob/develop/QUICKSTART-EKS.md#neuron-support)。

```
[settings]
[settings.kubernetes]
device-ownership-from-security-context = true
```

有关 EKS 优化版 Bottlerocket AMI 中包含的 Neuron 驱动程序版本的信息，请参阅 [Bottlerocket 内核套件更改日志](https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/CHANGELOG.md)。