在 Amazon Linux 2023 上部署 GPU 容器环境:快速入门指南

在 Amazon Linux 2023 上部署 GPU 容器环境:快速入门指南

💡 原文中文,约14200字,阅读约需34分钟。
📝

内容提要

本文介绍在Amazon Linux 2023上搭建GPU容器环境的完整流程,包括安装NVIDIA驱动、Docker及NVIDIA Container Toolkit,并涵盖验证方法、最佳实践(如数据目录迁移、资源限制)和常见故障排除,帮助用户快速部署GPU容器用于深度学习等任务。

🔎

延伸解读

驱动模块流选择要点

安装NVIDIA驱动时,需根据GPU架构选择模块流:Turing及更新架构(如G4dn、G5)使用open-dkms,而Volta及更早(如P3)必须使用latest-dkms。选错可能导致驱动无法加载。建议优先使用DKMS模块流,以便内核更新后自动重新编译驱动,减少手动维护。

离线安装与网络依赖

若实例无法访问互联网,安装驱动和NVIDIA Container Toolkit需提前在有网络的机器上下载RPM包并传输。同时,AL2023系统仓库托管于S3,需配置S3网关终端节点。注意接口终端节点需启用IPv6双栈,否则流量路由可能失败。

容器资源限制实践

多容器场景下,建议通过--gpus、--cpus、--memory等参数限制资源,避免单个容器独占。--cpus为硬限制,--cpu-shares为软限制,可组合使用。日志滚动配置仅对新容器生效,已运行容器需重建。

安全组配置建议

Docker端口映射不等于外部可访问,还需安全组放行。生产环境应遵循最小权限原则,仅开放必要端口并限制来源。推荐通过ELB暴露服务,EC2实例仅接受来自ELB的流量,避免直接暴露应用端口。

Q&A

在 Amazon Linux 2023 上部署 GPU 容器环境需要安装哪些核心组件?

需要依次安装 NVIDIA GPU 驱动、Docker 和 NVIDIA Container Toolkit。NVIDIA 驱动负责管理 GPU 设备,Docker 提供容器运行时,NVIDIA Container Toolkit 通过 OCI 运行时钩子将 GPU 设备和驱动库注入容器。

如何为 Amazon Linux 2023 实例安装 NVIDIA GPU 驱动?

推荐使用网络仓库安装:先添加 NVIDIA CUDA 仓库,然后启用驱动模块流(如 open-dkms),最后安装 nvidia-open 包并重启。对于离线环境,可下载本地安装包(如 CUDA 本地 RPM)后安装。

NVIDIA Container Toolkit 的作用是什么?如何安装和配置?

NVIDIA Container Toolkit 是连接 Docker 与 GPU 驱动的中间层,通过 OCI 运行时钩子将 GPU 设备和驱动库注入容器。安装时先添加其仓库,然后使用 dnf 安装 nvidia-container-toolkit,最后运行 nvidia-ctk runtime configure --runtime=docker 并重启 Docker。

如何验证 GPU 容器环境是否正常工作?

可以使用 AWS Deep Learning Containers 镜像运行容器,在容器内执行 nvidia-smi 或 nvidia-smi -L 验证 GPU 可见性,也可以运行 PyTorch 检查 CUDA 是否可用。

在 Amazon Linux 2023 上部署 GPU 容器有哪些最佳实践?

最佳实践包括:将 Docker 数据目录迁移到独立的 EBS 卷并配置日志滚动;使用 --gpus、--memory、--cpus 等参数限制容器资源;使用 DKMS 模块流安装驱动以便内核更新后自动重编译;配置安全组最小入站规则,避免开放不必要的端口。

docker run --gpus all 报错 unknown flag: --gpus 如何解决?

该错误通常是因为 NVIDIA Container Toolkit 未正确安装或 Docker 运行时未配置。解决方法是确认 nvidia-container-toolkit 已安装(运行 nvidia-ctk --version),然后重新配置运行时并重启 Docker:sudo nvidia-ctk runtime configure --runtime=docker && sudo systemctl restart docker。

在 Amazon Linux 2023 上安装 NVIDIA 驱动时,如何选择 open-dkms 和 latest-dkms 模块流?

open-dkms 是开源内核模块,支持 Turing 及更新架构(如 G4dn、G5);latest-dkms 是专有内核模块,支持 Maxwell、Pascal、Volta 架构(如 G3、P3)。Volta 及更早的 GPU 必须使用 latest-dkms。

如何将 Docker 数据目录迁移到独立的 EBS 卷?

首先创建并挂载 EBS 卷,格式化并挂载到 /data/docker,然后停止 Docker,使用 rsync 迁移 /var/lib/docker 到新目录,最后在 /etc/docker/daemon.json 中设置 data-root 为 /data/docker 并重启 Docker。

🏷️

标签

➡️

继续阅读