在 Power 系统上安装 PyTorch

栏目: Python · 发布时间: 5年前

内容简介:本教程将演示如何在 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 。根据需要修改 OPENBLASDIRCUDADIR

sudo -E make install prefix=/usr/local/magma

通过检查 /usr/lib/magma/lib 下是否存在 libmagma.alibmagma.solibmagma_sparse.alibmagma_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 的步骤。

参考资源

本文翻译自: Install PyTorch on Power systems (2018-10-10)


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

垃圾收集

垃圾收集

琼斯 / 谢之易 / 人民邮电出版社 / 2004-4-1 / 45.00元

书围绕着动态内存自动回收的话题,介绍了垃圾收集机制,详细分析了各种算法和相关技术。 本书共12章。第1章首先介绍计算机存储器管理的演化和自动内存回收的需求,并引入了本书所使用的术语和记法。第2章介绍了3种“经典”的垃圾收集技术:引用计数(reference counting)、标记-清扫(mark-sweep)和节点复制(copying)。 随后的4章更详细地讨论了上述这些垃圾收集方式......一起来看看 《垃圾收集》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具