在 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)


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

查看所有标签

猜你喜欢:

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

浅薄

浅薄

[美]尼古拉斯·卡尔 / 刘纯毅 / 中信出版社 / 2015-11 / 49.00 元

互联网时代的飞速发展带来了各行各业效率的提升和生活的便利,但卡尔指出,当我们每天在翻看手机上的社交平台,阅读那些看似有趣和有深度的文章时,在我们尽情享受互联网慷慨施舍的过程中,我们正在渐渐丧失深度阅读和深度思考的能力。 互联网鼓励我们蜻蜓点水般地从多种信息来源中广泛采集碎片化的信息,其伦理规范就是工业主义,这是一套速度至上、效率至上的伦理,也是一套产量最优化、消费最优化的伦理——如此说来,互......一起来看看 《浅薄》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具