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>