在ECS上如何使用AC2镜像

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-os-recommendation.png

设置ECS实例

安装Docker

使用AC2需要首先设置Docker运行环境。Docker的安装视不同的操作系统步骤略有不同,具体操作,参见安装Docker并使用(Linux)。下面以Alibaba Cloud Linux 3为例,设置Docker运行环境。

  1. 使用以下命令添加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
  2. 使用以下命令安装Docker-CE。

    sudo dnf install -y docker-ce
  3. 安装完毕后,通过以下命令查看Docker版本号,检查是否安装成功。

    docker -v
  4. 执行以下命令,启动Docker服务,并设置开机自启动。

    sudo systemctl start docker  # 启动Docker服务
    sudo systemctl enable docker # 设置Docker服务开机自启
  5. 使用以下命令检查Docker服务运行情况。

    systemctl status docker

    命令回显如下图所示,表示Docker已正常启动。

    docker-started-systemctl-status.png

安装NVIDIA Container Toolkit(GPU实例)

对于GPU实例,需要安装NVIDIA Container Toolkit来支持GPU容器,Alibaba Cloud Linux 3中已经提供了对NVIDIA Container Toolkit的支持,可以通过以下命令设置GPU实例。

  1. 安装NVIDIA驱动以及CUDA组件。

    sudo dnf install -y anolis-epao-release
    sudo dnf install -y kernel-devel-$(uname -r) nvidia-driver{,-cuda}
  2. 使用以下命令安装NVIDIA Container Toolkit。

    sudo dnf install -y nvidia-container-toolkit
  3. 重启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镜像训练模型

  1. 运行CPU的容器镜像。

    <ac2-pytorch-cpu-image>为PyTorch CPU镜像地址,请根据实际情况进行替换。

    sudo docker run -it --rm <ac2-pytorch-cpu-image>
  2. 下载示例代码。

    git clone https://github.com/pytorch/examples.git
  3. 下载PyTorch示例代码,并使用--no-cuda参数指定在CPU上进行训练。

    python3 examples/mnist/main.py --no-cuda

运行PyTorch GPU镜像训练模型

  1. 运行GPU的容器镜像,使用--gpus all参数允许容器使用所有GPU。

    <ac2-pytorch-gpu-image>为PyTorch GPU镜像地址,请根据实际情况进行替换。

    sudo docker run -it --rm --gpus all <ac2-pytorch-gpu-image>
  2. 下载示例代码。

    git clone https://github.com/pytorch/examples.git
  3. 下载PyTorch示例代码,默认使用GPU进行训练。

    python3 examples/mnist/main.py

清理运行环境

完成训练任务后,可以通过以下流程清理当前运行的容器环境。

  1. 使用以下命令查看系统中所有已经创建的容器。

    sudo docker ps -a

    执行命令回显容器ID(CONTAINER ID)、镜像(IMAGE)、状态(STATUS)、容器名(NAMES)等信息如下图所示。

    docker-ps-output.png

  2. 如需移除容器,执行以下命令。移除前请确保容器已经停止。

    以下命令中<CONTAINER ID>为容器ID,请根据实际情况进行替换。

    sudo docker stop <CONTAINER ID> # 停止容器
    sudo docker rm <CONTAINER ID>   # 移除容器
  3. 使用以下命令列出已下载的镜像。

    sudo docker images

    执行命令回显镜像仓库(REPOSITORY)、镜像标签(TAG)、镜像ID(IMAGE ID)等信息如下图所示。

    docker-images-output.png

  4. 使用以下命令删除指定的镜像文件。

    命令中<IMAGE ID>为镜像ID,请根据实际情况进行替换。

    sudo docker rmi <IMAGE ID>