内容简介:本教程将演示如何在 PowerPC 64 体系结构服务器上通过源代码编译和安装 PyTorch。注意:IBM 提供了正式版的
PyTorch 是一个相对较新的深度学习框架。目前,已开始应用此框架,尤其是在研究人员和数据科学家当中。PyTorch 的优势在于它支持动态计算图,而大多数深度学习框架都基于静态计算图。此外,其强大的 NumPy (就像 GPU 加速张量计算一样)使 Python 开发人员能够轻松地学习和构建 GPU 和 CPU 等的深度学习网络。
学习目标
本教程将演示如何在 PowerPC 64 体系结构服务器上通过源代码编译和安装 PyTorch。
注意:IBM 提供了正式版的 针对 IBM PowerAI 的 Docker 镜像 ,其中预安装了许多常用的深度学习框架。如果 IBM Docker 镜像提供的 PyTorch 版本适合您,那么这可能是在 PowerPC 64 体系结构服务器上启动 PyTorch 环境的最简单方法。
前提条件
本教程将使用具有以下配置的 Power9 服务器:
- 操作系统:Ubuntu 16.04。
- 32 线程 POWER9。
- 128 GB RAM。
- 1 个带 NVLink 的 V100 Tesla GPU。
- NVIDIA CUDA 9.2.148 和驱动程序版本 396.44。
预估时间
- Magma 包编译时间约为 10 分钟。
- PyTorch 安装时间约为 25 分钟。
- 编译和安装的总时间约为 45 分钟。
- 测试时间约为 30 分钟。
步骤
1. 下载并安装 Miniconda(可选)
现在,将通过下载并运行安装程序来安装 Anaconda ,这是 Python 分发版。
cd ~ wget -c https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-ppc64le.sh chmod 744 Miniconda3-latest-Linux-ppc64le.sh ./Miniconda3-latest-Linux-ppc64le.sh
按照显示的指示信息来接受许可证、设置安装路径并将 conda 安装位置添加到 ~/.bashrc 文件内的 PATH 中。我们建议不要将 conda 安装位置添加到 ~/.bashrc 文件内的 PATH 中。
2. 创建虚拟环境(可选)
虽然这是一个可选步骤,但使用虚拟环境有助于将 python 项目隔离在一台服务器上。以下命令将使用 Python 3.6 创建名为 pytorch 的环境。
~/miniconda3/bin/conda create -n pytorch python=3.6 source ~/miniconda3/bin/activate pytorch
3. 验证并启用 CUDA (GPU) 支持
在编译 PyTorch 之前,我们需要启用 CUDA 支持。请参阅 验证 NVIDIA CUDA 工具箱和驱动程序 ,以获取指示信息。
在此示例中,NVIDIA 驱动程序为 396.44 :
$ nvidia-smi Thu Dec 6 17:16:05 2018 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 396.44 Driver Version: 396.44 | |-------------------------------+----------------------+----------------------+
我们在以下命令中使用 nvidia-396。确保使用您的 NVIDIA 驱动程序版本:
export PATH="/usr/lib/nvidia-396/bin/:$PATH" export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
编译 PyTorch 时需要一些 CUDA 开发包。如果您的环境未安装这些开发包,那么可以使用以下命令进行安装。
注意:确保使用您的 CUDA 版本。
# check CUDA version $ cat /usr/local/cuda/version.txt CUDA Version 9.2.148 sudo apt-get update sudo apt-get install cuda-*-dev-9-2
4. 安装 cuDNN 库(可选)
编译 PyTorch 时不需要 NVIDIA cuDNN 库,该库是用于深度神经网络的 GPU 加速的原语库。但是,当运行单元测试时,您会收到一些警告,指示在没有 cuDNN 支持的情况下编译了 PyTorch。
安装 cuDNN 时需要使用正确版本的 libcudnn 库,具体取决于安装的 CUDA 版本。请参阅安装 cuDNN 库,以获取有关安装 cuDNN 的指示信息。
在此示例中,未安装 cuDNN。我们将使用以下命令来安装 cuDNN:
echo "deb http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/ppc64el /" | sudo tee /etc/apt/sources.list.d/cudnn.list curl -L http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/ppc64el/7fa2af80.pub | sudo apt-key add - sudo apt-get update # make sure to use the correct libcudnn version for your environment sudo apt-get install libcudnn7=7.2.1.38-1+cuda9.2 libcudnn7-dev=7.2.1.38-1+cuda9.2
设置环境变量,以便使用 cuDNN 支持编译 PyTorch。
# check for the location of the libcudnn.* file and use it in the command below export CUDNN_LIB_DIR=/usr/lib/powerpc64le-linux-gnu/ # check for the location of the cudnn.h file and use it in the command below export CUDNN_INCLUDE_DIR=/usr/include/
5. 安装 Magma 库(可选)
当前, Magma 被列示为可选依赖项。但是,如果未安装 Magma,许多单元测试会导致运行时错误,因此建议安装 Magma。Magma 库是一个密集的线性代数库,由具有 CUDA 的 PyTorch 使用。根据以下指示信息,将通过 OpenBLAS 为 Magma 编译和安装静态库和动态库。支持不同的配置,如 ACML 和 ATLAS。
检查是否存在最新的 Magma 包并下载其 tar 文件:
注意:在更新本教程时,最新版本为 magma-2.5.0。
cd ~ wget http://icl.utk.edu/projectsfiles/magma/downloads/magma-2.5.0.tar.gz tar xzf magma-2.5.0.tar.gz cd magma-2.5.0
将 gfortran 安装为依赖项:
sudo apt-get update sudo apt-get install gfortran
安装 OpenBLAS
conda install openblas
将 make.inc.openblas
复制到 make.inc
,以便使用 openblas
进行编译:
cp make.inc-examples/make.inc.openblas make.inc
设置必需的环境变量:
export CUDADIR=/usr/local/cuda export OPENBLASDIR= ~ /miniconda3/envs/pytorch export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OPENBLASDIR/lib
最后,从克隆的项目目录构建 Magma:
make
注意:通过添加 -j
选项,可以缩短编译时间。例如, make -j32
(前提是您有一个 32 线程的
Power8 并且想要使用所有线程进行编译):
make -j < number of cpu threads for parallel compiling >
现在,我们可以安装 Magma;如果需要,还可以更改安装前缀。缺省前缀为 /usr/local/magma
。根据需要修改 OPENBLASDIR
和 CUDADIR
:
sudo -E make install prefix=/usr/local/magma
通过检查 /usr/lib/magma/lib
下是否存在 libmagma.a
、 libmagma.so
、 libmagma_sparse.a
和 libmagma_sparse.so
,来确保已正确安装 Magma:
ls -l /usr/local/magma/lib
在编译或使用 PyTorch 时,确保 Magma 库出现在 LD_LIBRARY_PATH
环境变量下:
export LD_LIBRARY_PATH=/usr/local/magma/lib:$LD_LIBRARY_PATH
6. 安装可选的依赖项
安装 Ninja 开发库。Ninja 是可替代 make 的构建系统。需要使用 Ninja,才能运行 PyTorch cpp 扩展单元测试,并且在开发 PyTorch 来动态重建 C++ 代码时也需要使用 Ninja。
# Install Ninja build system sudo apt-get install ninja-build # Update cmake to latest version (Conda has the latest version which is needed by ninja) conda install cmake # Install Ninja python package and prerequisites pip install scikit-build pip install ninja
7. 通过源代码安装 PyTorch
选项 1:使用 conda
注意:本部分中的指示信息基于 https://github.com/pytorch/pytorch#from-source 中的内容
安装依赖项:
export CMAKE_PREFIX_PATH= "$(dirname $(which conda))/../" conda install numpy pyyaml setuptools cmake cffi
注意:mkl 包是适用于 Intel 和 Intel 兼容处理器的数学库,Power 环境不需要该包。
克隆 PyTorch 项目:
cd ~ git clone --recursive https://github.com/pytorch/pytorch ~ /pytorch
(可选)通过修改 MAGMA_HOME、CUDA_BIN_PATH 和 CUDA_HOME 环境变量,可以指定备用 MAGMA 或 CUDA 库位置。
通过源代码安装 PyTorch:
cd ~ /pytorch python setup.py install
选项 2:使用 pip
安装 pip 及其依赖项
pip install certifi cffi numpy setuptools wheel pip pyyaml
注意:在创建虚拟环境时,conda 可能已安装了几个文件,如 certifi、wheel、setuptools 和 pip。
克隆 PyTorch 项目:
cd ~ git clone --recursive https://github.com/pytorch/pytorch ~ /pytorch
(可选)通过修改 MAGMA_HOME、CUDA_BIN_PATH 和 CUDA_HOME 环境变量,可以指定备用 MAGMA 或 CUDA 库位置。
构建 PyTorch wheel:
cd pytorch python setup.py bdist_wheel
将在 dist 目录中创建名为 torch*.whl
的文件。并使用此文件以利用 pip
安装 PyTorch。
注意:编译时间可能大约需要 25 分钟。
使用 pip 安装 PyTorch:
获取 PyTorch 安装的 wheel 文件的确切名称。
pip install dist/ < torch wheel file name > .whl
8. 测试安装
运行 PyTorch 单元测试以确保正确安装了 PyToch:
# Install hypothesis package which is needed by the expecttest test pip install hypothesis cd test python run_test.py
注意:PyTorch 非常活跃,时常进行更新。如果您通过 PyTorch master 进行安装并遇到了单元测试失败,请务必检查问题列表,因为一些新合并的拉取请求可能会影响测试结果。
9. 运行 PyTorch 示例
从 github 克隆 PyTorch Examples 存储库
cd ~ git clone https://github.com/pytorch/examples.git ~ /examples
按照 README.md 中的指示信息运行不同的示例(主存储库下的每个文件夹都是单独的示例)。例如,运行 word_language_model 示例:
cd ~/examples/word_language_model pip install -r requirements.txt python main.py --cuda --epochs 6 # Train a LSTM on PTB with CUDA, reaching perplexity of 117.61 python main.py --cuda --epochs 6 --tied # Train a tied LSTM on PTB with CUDA, reaching perplexity of 110.44 python main.py --cuda --tied # Train a tied LSTM on PTB with CUDA for 40 epochs, reaching perplexity of 87.17 python generate.py # Generate samples from the trained LSTM model.
结束语
在本教程中,我们描述了在具有 NVIDIA GPU 支持的 PowerPC 64 体系结构服务器上通过源代码编译和安装 PyTorch 的步骤。
参考资源
- 相关文章:PyTorch 入门
- Code Pattern: 使用 Watson Studio 和 PyTorch 构建一个手写数字识别器
本文翻译自: Install PyTorch on Power systems (2018-10-10)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Kickstart批量安装系统
- 使用VMware安装Permeate靶场系统实践
- Minio文件系统安装与服务化
- linux系统dig和nslookup的安装
- Yum简单安装MFS分布式文件系统
- Mac系统上安装Tomcat并方便的管理
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。