AIACC-Training支援基於主流人工智慧(包括PyTorch、TensorFlow、MXNet、Caffe等)搭建的模型進行分布式訓練。在介面層面上,目前AIACC-Training相容了PyTorch DDP以及Horovod的API,對於原生使用上述分布式訓練方法的訓練代碼,可以做到無感的效能加速。本文為您介紹安裝AIACC-Training 1.5.0的多種方式。
前提條件
已建立阿里雲GPU執行個體,且GPU執行個體需滿足以下要求:
作業系統為Alibaba Cloud Linux、CentOS 7.x或Ubuntu 16.04以上版本。
已安裝NVIDIA Driver和CUDA 10.0或以上版本。
背景資訊
本文以安裝AIACC-Training 1.5.0版本為例,您可以根據自身業務情境選擇以下任一方式安裝AIACC-Training。
情境說明 | 安裝方式 |
如果已經布置了深度學習的AI訓練環境,則您可以通過自動或手動方式安裝AIACC-Training。 | |
如果需要使用Conda環境,則您可以通過一鍵建立包含AIACC-Training的Conda環境的方式來安裝AIACC-Training。 | |
如果需要使用Docker環境,則您可以通過下載已配備了AIACC-Training的Docker鏡像的方式安裝AIACC-Training。 |
在ECS管理主控台建立GPU執行個體時,如果控制台頁面存在AIACC訓練加速選項,且您已選中該選項,則GPU執行個體建立完成後,會同步自動安裝AIACC-Training 1.3.3版本。推薦您選用上述列表中的三種安裝方式之一來安裝AIACC-Training 1.5.0版本。
支援的架構列表
AIACC-Training提供了對應不同深度學習架構版本的軟體包,目前支援的架構版本如下:
CUDA版本 | 架構類型 | 架構版本 |
10.0 | PyTorch | 1.2.0、1.3.0 |
TensorFlow | 1.14.0、1.15.0、2.0.0 | |
MXNet | 1.4.1、1.5.0、1.7.0 | |
10.1 | PyTorch | 1.6.0、1.5.1、1.4.0 |
TensorFlow | 2.1.0、2.2.0、2.3.0 | |
MXNet | 1.4.1、1.5.0、1.6.0、1.7.0、1.9.0 | |
10.2 | PyTorch | 1.5.1、1.6.0、1.8.0、1.8.2、1.9.0、1.10.0 |
MXNet | 1.9.0 | |
11.0 | PyTorch | 1.7.0、1.7.1 |
TensorFlow | 2.4.0 | |
MXNet | 1.9.0 |
方式一:在已有的AI軟體環境中安裝AIACC-Training
如果您已經布置了深度學習的AI訓練環境,則可以通過自動或手動方式安裝AIACC-Training。安裝前您的環境需滿足以下條件:
已安裝Python 3以及對應的pip工具。
已安裝深度學習架構PyTorch、TensorFlow或MXNet。
重新安裝了深度學習架構之後,也需要再次安裝AIACC-Training。
(推薦)自動安裝方式
AIACC-Training提供了對應架構版本的Python軟體包,您可以執行以下命令,通過一鍵指令碼自動安裝。
wget https://ali-perseus-release.oss-cn-huhehaote.aliyuncs.com/install_AIACC-Training.sh && bash install_AIACC-Training.sh指令碼預設使用python3作為Python的命令,如果您需要使用其他Python命令,可在指令碼的最後添加。例如使用python作為Python的命令,請執行命令wget https://ali-perseus-release.oss-cn-huhehaote.aliyuncs.com/install_AIACC-Training.sh && bash install_AIACC-Training.sh python進行一鍵安裝。
手動安裝方式
您可以執行以下命令,使用pip手動安裝最新的AIACC-Training軟體包。
如果您使用的是PyTorch,請使用以下命令安裝AIACC-Training。
pip install --force-reinstall https://ali-perseus-release.oss-cn-huhehaote.aliyuncs.com/cuda${cuda_version}/perseus_torch-1.5.0%2B${framework_version}-cp${python_version}-cp${python_version}m-linux_x86_64.whl --trusted-host mirrors.aliyun.com -i http://mirrors.aliyun.com/pypi/simple/部分參數說明如下:
${cuda_version}為CUDA的版本,需要去除版本號碼中的半形句號(.),例如CUDA 11.0對應cuda_version=110。${framework_version}為架構版本號碼,例如PyTorch 1.7.1對應framework_version=1.7.1。${python_version}為Python的版本號碼,需要去除版本號碼中的半形句號(.),例如Python 3.6對應python_version=36。
對於Python 3.8或以上版本的whl包,請使用如下的下載地址模板:
https://ali-perseus-release.oss-cn-huhehaote.aliyuncs.com/cuda${cuda_version}/perseus_${framework}-1.5.0%2B${framework_version}-cp${python_version}-cp${python_version}-linux_x86_64.whl以PyTorch 1.7.1、CUDA 11.0、Python 3.6版本為例,安裝命令如下:
cuda_version=110 # 注意:此處不帶“.”號 framework=torch framework_version=1.7.1 python_version=36 pip install --force-reinstall https://ali-perseus-release.oss-cn-huhehaote.aliyuncs.com/cuda${cuda_version}/perseus_${framework}-1.5.0%2B${framework_version}-cp${python_version}-cp${python_version}m-linux_x86_64.whl --trusted-host mirrors.aliyun.com -i http://mirrors.aliyun.com/pypi/simple/如果您使用TensorFlow或MXNet,請使用以下命令安裝AIACC-Training。
pip install --force-reinstall https://ali-perseus-release.oss-cn-huhehaote.aliyuncs.com/cuda${cuda_version}/perseus_${framework}-1.5.0%2B${framework_version}-py2.py3-none-manylinux1_x86_64.whl --trusted-host mirrors.aliyun.com -i http://mirrors.aliyun.com/pypi/simple/以TensorFlow 1.15.0、CUDA 10.0、Python 3.6版本為例,安裝命令如下:
cuda_version=100 # 注意:此處不帶“.”號 framework=tensorflow framework_version=1.15.0 pip install --force-reinstall https://ali-perseus-release.oss-cn-huhehaote.aliyuncs.com/cuda${cuda_version}/perseus_${framework}-1.5.0%2B${framework_version}-py2.py3-none-manylinux1_x86_64.whl --trusted-host mirrors.aliyun.com -i http://mirrors.aliyun.com/pypi/simple/
方式二:安裝包含了AIACC-Training的Conda環境
Conda是一款開源跨平台的軟體包及環境管理系統。您可以一鍵建立包含AIACC-Training的Conda環境,該環境已安裝CUDA Toolkit、Python 3、深度學習架構以及最新的AIACC-Training軟體等,方便您快速搭建和管理不同的深度學習架構和版本,並通過AIACC-Training顯著提升訓練效能。
前往Conda官網,下載並安裝最新版本的Miniconda。
根據需要的架構版本和環境資訊,執行如下命令,一鍵建立相應的Conda環境。
conda env create -f https://ali-perseus-release.oss-cn-huhehaote.aliyuncs.com/conda/latest/${framework}_${framework_version}_cu${cuda_version}_py${python_version}.yaml以PyTorch 1.7.1、CUDA 11.0、Python 3.6為例,一鍵建立Conda環境的命令如下:
cuda_version=11.0 framework=torch framework_version=1.7.1 python_version=36 conda env create -f https://ali-perseus-release.oss-cn-huhehaote.aliyuncs.com/conda/latest/${framework}_${framework_version}_cu${cuda_version}_py${python_version}.yaml部分參數說明如下:
${cuda_version}:需為帶半形句號(.)的CUDA版本號碼,此版本必須小於或等於GPU已安裝的CUDA版本。${framework}:為深度學習架構類型,tensorflow/mxnet/torch分別對應TensorFlow/MXNet/PyTorch架構。${framework_version}為架構版本號碼,例如PyTorch 1.7.1對應framework_version=1.7.1。${python_version}為Python的版本號碼,需要去除版本號碼中的半形句號(.),例如Python 3.6對應python_version=36。
重要若提示找不到該Conda環境的URL,則表示暫不支援該架構版本。更多資訊,請參見支援的架構列表。
方式三:安裝配有AIACC-Training的Docker鏡像
您可以下載已安裝了AIACC-Training的Docker鏡像,該鏡像內已安裝CUDA、Python 3、深度學習架構和最新的AIACC-Training軟體等,能夠協助您快速部署深度學習環境,管理不同的CUDA環境,並通過AIACC-Training顯著提升訓練效能。
安裝前您的環境需滿足以下條件:
已安裝Docker。如果您使用的作業系統為Alibaba Cloud Linux 2,可以參考安裝Docker並使用(Linux)進行安裝。
已安裝NVIDIA Container Toolkit。具體操作,請參見NVIDIA Container Toolkit。
根據需要的架構版本和環境資訊,執行以下命令,下載對應的Docker鏡像。
docker pull registry.cn-beijing.aliyuncs.com/cto_office/perseus-training:${os_type}-cu${cuda_version}-${framework}${framework_version}-py${python_version}-latest部分參數說明如下:
簡稱 | 說明 | 樣本值 |
| Docker鏡像的作業系統類型。 說明 Docker內的作業系統類型與GPU執行個體的作業系統類型無關。 | centos7 |
| CUDA的版本號碼。 說明 版本號碼需帶半形句號(.),此版本可小於或等於GPU已安裝的CUDA版本。 | 11.0 |
| 深度學習架構類型的縮寫。tf/mx/pt分別對應TensorFlow/MXNet/PyTorch架構。 | tf |
| 深度學習架構對應的版本號碼,格式為xx.xx.xx。 | 2.4.0 |
| Python版本號碼。 說明 版本號碼不帶半形句號(.),例如36/37/38分別對應Python 3.6/Python 3.7/Python 3.8版本。 | 36 |
以CentOS 7、CUDA 11.0、TensorFlow 2.4.0的鏡像為例,一鍵安裝命令如下:
os_type=centos7
cuda_version=11.0
framework=tf
framework_version=2.4.0
python_version=36
docker pull registry.cn-beijing.aliyuncs.com/cto_office/perseus-training:${os_type}-cu${cuda_version}-${framework}${framework_version}-py${python_version}-latest關於如何使用Docker進行分布式訓練,具體操作,請參見Horovod in Docker。
如果提示找不到該Docker鏡像,則表示暫不支援該架構版本。更多資訊,請參見支援的架構列表。
如果使用容器進行分布式訓練,執行
docker run命令啟動需要增大shm的分配,參數為--shm-size=1g --ulimit memlock=-1。