-
Notifications
You must be signed in to change notification settings - Fork 1k
编译安装
XDL的Docker镜像基于ubuntu16.04进行编译安装。镜像中中包含编译XDL所需要的所有系统环境以及编译安装完成的XDL和测试用例代码。用户也可以直接使用我们提供的Docker镜像进行XDL的二次开发。 (注: 由于HADOOP环境配置因人而异,因此在XDL的Docker镜像中我们没有安装配置HADOOP环境,需要的用户请自行安装配置)
- 宿主机上需要安装docker环境
- 如果需要GPU支持,宿主机上需要安装nvidia-docker
XDL官方镜像的tag及描述如下表:
docker镜像 | 描述 |
---|---|
registry.cn-hangzhou.aliyuncs.com/xdl/xdl:ubuntu-cpu-tf1.12 | ubuntu16.04 + XDL + tensorflow1.12后端(开启avx2+fma指令优化) |
registry.cn-hangzhou.aliyuncs.com/xdl/xdl:ubuntu-cpu-tf1.12-without-avx2-fma | ubuntu16.04 + XDL + tensorflow1.12后端(关闭avx2+fma指令优化) |
registry.cn-hangzhou.aliyuncs.com/xdl/xdl:ubuntu-gpu-tf1.12 | ubuntu16.04 + XDL + tensorflow1.12后端(开启avx2+fma指令优化) + gpu支持(cuda9.0, cudnn7.0) |
registry.cn-hangzhou.aliyuncs.com/xdl/xdl:ubuntu-cpu-mxnet1.3 | ubuntu16.04 + XDL + mxnet1.3后端 |
registry.cn-hangzhou.aliyuncs.com/xdl/xdl:ubuntu-gpu-mxnet1.3 | ubuntu16.04 + XDL + mxnet1.3后端 + gpu支持(cuda9.0, cudnn7.0) |
例如,用户可以执行如下命令将XDL的镜像下载到宿主机上:
sudo docker pull registry.cn-hangzhou.aliyuncs.com/xdl/xdl:ubuntu-cpu-tf1.12
用户可以使用以下命令,来启动一个XDL镜像:
sudo docker run -it registry.cn-hangzhou.aliyuncs.com/xdl/xdl[:tag] [command]
更多docker的用法,可参考docker使用指南。
例如,用户可以使用以下命令,来查看一个CPU版本的XDL镜像:
sudo docker run -it registry.cn-hangzhou.aliyuncs.com/xdl/xdl:ubuntu-cpu-tf1.12 python -c "import xdl; print xdl.__version__"
用户也可以使用以下命令,来查看一个支持GPU的XDL镜像:
sudo nvidia-docker run -it registry.cn-hangzhou.aliyuncs.com/xdl/xdl:ubuntu-gpu-tf1.12 python -c "import xdl; print xdl.__version__"
请注意,上述命令执行后并不能进入docker,只是打印docker环境中安装的xdl版本。请阅读docker使用指南获取如何进入docker的方法,以及如何指定进入目录、如何挂载宿主机上需要使用的目录、如何使用网卡等。
如果用户需要GPU支持,那么我们强烈建议使用支持GPU的XDL镜像。这样,用户只需要在宿主机上安装NVIDIA® GPU drivers。
注意:CUDA9.0要求NVIDIA驱动版本高于384.x。
如果用户需要在宿主机上直接获得GPU支持,那么我们推荐用户对以下的软件版本进行安装:
- NVIDIA® GPU drivers (384.x or higher)
- CUDA® Toolkit 9.0
- cuDNN SDK 7.0
这部分内容将指导用户如何在一个纯净的ubuntu 16.04环境中编译安装XDL。
(1) 下载ubuntu 16.04镜像,并以bash session的形式进入镜像:
sudo docker pull ubuntu:16.04
sudo docker run --net=host -it ubuntu:16.04 /bin/bash
系统更新:
apt-get update && apt-get -y upgrade
(2) 安装系统build工具,例如gcc、cmake、jdk、python等: 目前XDL使用seastar作为底层通信库,seastar只能使用GCC 5.3及以上版本编译。同时XDL需要使用GCC 4.8.5 编译CUDA代码来支持GPU,因此需要安装两个版本GCC; XDL使用cmake作为build工具,版本>2.8.0
apt-get install -y build-essential gcc-4.8 g++-4.8 gcc-5 g++-5 cmake python python-pip openjdk-8-jdk wget && pip install --upgrade pip
主要依赖库包括两部分,a) 安装boost b) 安装seastar依赖库
(a) 安装boost(以1.63为例), 必须设置_GLIBCXX_USE_CXX11_ABI=0,否则可能有链接错误
cd /tmp
wget -O boost_1_63_0.tar.gz https://sourceforge.net/projects/boost/files/boost/1.63.0/boost_1_63_0.tar.gz
tar zxf boost_1_63_0.tar.gz && cd boost_1_63_0
./bootstrap.sh --prefix=/usr/local && ./b2 -j32 variant=release define=_GLIBCXX_USE_CXX11_ABI=0 install
mkdir -p /usr/local/lib64/boost && cp -r /usr/local/lib/libboost* /usr/local/lib64/boost/
(b) 安装其它依赖
apt-get install -y libaio-dev ninja-build ragel libhwloc-dev libnuma-dev libpciaccess-dev libcrypto++-dev libxml2-dev xfslibs-dev libgnutls28-dev liblz4-dev libsctp-dev libprotobuf-dev protobuf-compiler libunwind8-dev systemtap-sdt-dev libjemalloc-dev libtool python3 libjsoncpp-dev
3. 如果是GPU版本,还需安装cuda和cudnn,可以参考Dockerfile,主要步骤如下:
cd /tmp
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/libcudnn7_7.0.5.15-1+cuda9.0_amd64.deb
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/libcudnn7-dev_7.0.5.15-1+cuda9.0_amd64.deb
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/libnccl2_2.1.4-1+cuda9.0_amd64.deb
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/libnccl-dev_2.1.4-1+cuda9.0_amd64.deb
apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
dpkg -i libcudnn7_7.0.5.15-1+cuda9.0_amd64.deb
dpkg -i libcudnn7-dev_7.0.5.15-1+cuda9.0_amd64.deb
dpkg -i libnccl2_2.1.4-1+cuda9.0_amd64.deb
dpkg -i libnccl-dev_2.1.4-1+cuda9.0_amd64.deb
apt-get clean && apt-get update -y && apt-get -y upgrade
apt-get install -y cuda=9.0.176-1 --fix-missing
apt-get install -y libcudnn7-dev
apt-get install -y libnccl-dev
apt-get update -y && apt-get -y upgrade
rm -rf /tmp/*.deb
echo '/usr/local/nvidia/lib64/' >> /etc/ld.so.conf
-
TensorFlow
-
使用Mxnet
cp -r incubator-mxnet/cpp-package `python -c "from __future__ import print_function;import mxnet,os; print(os.path.dirname(mxnet.__file__),end='')"`
cp -r incubator-mxnet/include `python -c "from __future__ import print_function;import mxnet,os; print(os.path.dirname(mxnet.__file__),end='')"`
cp -r incubator-mxnet/3rdparty `python -c "from __future__ import print_function;import mxnet,os; print(os.path.dirname(mxnet.__file__),end='')"`
- 代码准备
git clone --recursive https://github.com/alibaba/x-deeplearning.git
cd x-deeplearning/xdl
mkdir build && cd build
export CC=/usr/bin/gcc-5 && export CXX=/usr/bin/g++-5
- 编译CPU版本
cmake .. -DTF_BACKEND=1
make -j32
# 安装
make install_python_lib
- 编译GPU版本
cmake .. -DUSE_GPU=1 -DTF_BACKEND=1 -DCUDA_PATH=/usr/local/cuda-9.0 -DNVCC_C_COMPILER=/usr/bin/gcc-4.8
make -j32
# 安装
make install_python_lib
- 验证安装
在shell中执行一下命令,如果显示1.0表示安装成功
python -c "import xdl; print xdl.__version__"
- XDL提供基于yarn+docker的分布式调度方案,详情请见:集群部署与分布式提交