Alibaba Cloud AI Containers(简称AC2)提供了一系列的AI容器镜像,与阿里云基础设施(ECS、ACK等)深度集成优化,极大地节省了AI应用环境部署的成本。本文介绍了在ECS上如何正确配置实例运行环境,并运行AC2容器进行PyTorch训练。
选购并连接ECS实例
在ECS上使用AC2,需要首先选购一台ECS实例,并连接。更多信息,请参见通过控制台使用ECS实例(快捷版)。
在选购实例时,阿里云提供了丰富的镜像资源,推荐使用「Alibaba Cloud Linux 3.2104 LTS 64位」镜像,拥有最完整的服务保障。
设置ECS实例
安装Docker
使用AC2需要首先设置Docker运行环境。Docker的安装视不同的操作系统步骤略有不同,具体操作,参见安装并使用Docker和Docker Compose。下面以Alibaba Cloud Linux 3为例,设置Docker运行环境。
使用以下命令添加docker-ce软件源,并安装软件源兼容插件。
sudo dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo dnf install -y --repo alinux3-plus dnf-plugin-releasever-adapter使用以下命令安装Docker-CE。
sudo dnf install -y docker-ce安装完毕后,通过以下命令查看Docker版本号,检查是否安装成功。
docker -v执行以下命令,启动Docker服务,并设置开机自启动。
sudo systemctl start docker # 启动Docker服务 sudo systemctl enable docker # 设置Docker服务开机自启使用以下命令检查Docker服务运行情况。
systemctl status docker命令回显如下图所示,表示Docker已正常启动。

安装NVIDIA Container Toolkit(GPU实例)
对于GPU实例,需要安装NVIDIA Container Toolkit来支持GPU容器,Alibaba Cloud Linux 3中已经提供了对NVIDIA Container Toolkit的支持,可以通过以下命令设置GPU实例。
添加 NVIDIA CUDA 源并使能安装驱动。驱动版本可以通过使能不同模块流来切换,例如指定版本 570-open 或者使用最新版本 open-dkms。所有可用的版本可以通过
dnf module list nvidia-driver查看。不同实例推荐的驱动版本参见:创建GPU实例时自动安装或加载Tesla驱动。sudo dnf config-manager --add-repo=https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo sudo dnf module enable nvidia-driver:570-open sudo dnf install nvidia-driver-cuda kmod-nvidia-open-dkms如需卸载/切换驱动版本,使用以下命令移除已安装的驱动并重置模块配置。
dnf module remove --all nvidia-driver dnf module reset nvidia-driver使用以下命令安装NVIDIA Container Toolkit。
sudo dnf install -y nvidia-container-toolkit重启Docker守护进程,添加GPU暴露能力。
sudo systemctl restart docker重启服务后,Docker就具备了GPU透传能力,后续创建容器时,需要添加
--gpus <gpu-request>参数,指定需要透传的GPU。
ECS实例设置成功后,便可以拉取AC2镜像进行后续开发部署工作。更多信息,请参见Alibaba Cloud AI Containers镜像列表。
使用AC2训练
AC2中提供了多种训练框架的镜像,镜像中集成了不同的AI运行框架,包括PyTorch、TensorFlow等,同时按照不同的运行平台,内置了经过验证的NVIDIA驱动、CUDA等运行驱动以及加速库。为开发者节省了大量的环境部署时间。
PyTorch 框架镜像
运行PyTorch CPU镜像训练模型
运行CPU的容器镜像。
<ac2-pytorch-cpu-image>需替换为PyTorch CPU镜像地址。sudo docker run -it --rm <ac2-pytorch-cpu-image>下载示例代码。
git clone https://github.com/pytorch/examples.git下载PyTorch示例代码,并使用
--no-cuda参数指定在CPU上进行训练。python3 examples/mnist/main.py --no-cuda
运行PyTorch GPU镜像训练模型
运行GPU的容器镜像,使用
--gpus all参数允许容器使用所有GPU。<ac2-pytorch-gpu-image>为PyTorch GPU镜像地址,请根据实际情况进行替换。
sudo docker run -it --rm --gpus all <ac2-pytorch-gpu-image>下载示例代码。
git clone https://github.com/pytorch/examples.git下载PyTorch示例代码,默认使用GPU进行训练。
python3 examples/mnist/main.py
清理运行环境
完成训练任务后,可以通过以下流程清理当前运行的容器环境。
执行以下命令,查看系统中所有已经创建的容器。
sudo docker ps -a容器ID(CONTAINER ID)、镜像(IMAGE)、状态(STATUS)、容器名(NAMES)等信息如下图所示。

如需移除容器,执行以下命令。移除前请确保容器已经停止。
<CONTAINER ID>需替换为要移除的容器ID。sudo docker stop <CONTAINER ID> # 停止容器 sudo docker rm <CONTAINER ID> # 移除容器执行以下命令,列出已下载的镜像。
sudo docker images镜像仓库(REPOSITORY)、镜像标签(TAG)、镜像ID(IMAGE ID)等信息如下图所示。

执行以下命令,删除指定的镜像文件。
<IMAGE ID>需替换为要删除的镜像ID。sudo docker rmi <IMAGE ID>