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
。