文章首发于 个人博客
文章目录
-
- Introduction
- ZheTeng Conditions
-
- GPU 列表
- CPU 列表
- 关于 ROCm
- Install on Ubuntu
-
- 系统准备
- 安装 ROCm
- Deep Learning on ROCm
-
- Tensorflow
- PyTorch
- Conclusion
Introduction
鉴于 NVIDIA 的价格和自己的预算, 因此上了 AMD 的船,自此主机组装完成。
AMD 的 CPU 加 AMD 的 GPU, AMD, YES !
装机完成之后,首要问题就是如何在 AMD 的显卡上进行深度学习炼丹?
经过一番配置(折腾),顺利实现上一目标,以下为个人在 Ubuntu 上的折腾指南。
ZheTeng Conditions
由于要使用AMD 的 ROCm 平台, 其对硬件有一定的要求,请确定是否如何下面的条件,如果符合,则可以参考以下的步骤进行配置。
GPU 列表
更详细的支持的 GPU 列表。
CPU 列表
更详细的说明链接。
关于 ROCm
ROCm的英文全称Radeon Open Compute platform, 目标是建立可替代 CUDA 的生态。ROCm 和CUDA 最大的区别在于其开放性,ROCm希望能在各种不同的硬件上运行,同时 ROCm 完全开源。
更多关于 ROCm 介绍可以参考这篇文章,这里不是重点,不再细说。
Install on Ubuntu
了解了以上内容,下面开始安装 ROCm。
系统准备
推荐Ubuntu 16.04 或 18.04, 笔者是 18.04
确保系统在最新状态,安装libnuma,再重启:
sudo apt update
sudo apt dist-upgrade
sudo apt install libnuma-dev
sudo reboot
安装 ROCm
- 如果你的系统已经安装了官方驱动,那么需要运行以下命令删除系统中已有的的AMD GPU 驱动,并重新启动。
sudo amdgpu-pro-uninstall
sudo apt autoremove -y
sudo reboot
- 添加 APT源 Add the ROCm apt repository
使用如下命令:
wget -qO - http://repo.radeon.com/rocm/apt/debian/rocm.gpg.key | sudo apt-key add -echo 'deb [arch=amd64] http://repo.radeon.com/rocm/apt/debian/ xenial main' | sudo tee /etc/apt/sources.list.d/rocm.list
- Install ROCm by apt
使用 apt 安装 rocm 包
sudo apt update
sudo apt install rocm-dkms
以上过程会非常慢,如果你有科学上网的方法,推荐使用之。我在路由端配置了相关加速,正常情况下大概十分钟完成。
- Set user permissions
设置用户 GPU 使用权限,将当前用户加入到权限组:
sudo usermod -a -G video $LOGNAME
为系统以后的用户都添加权限:
echo 'ADD_EXTRA_GROUPS=1' | sudo tee -a /etc/adduser.conf
echo 'EXTRA_GROUPS=video' | sudo tee -a /etc/adduser.conf
- 测试
重启系统之后,运行以下命令验证 ROCm 安装是否成功,如果看到你的 GPU 在下面的命令中都有显示,则表示已经安装成功。
/opt/rocm/bin/rocminfo
/opt/rocm/opencl/bin/x86_64/clinfo
- 环境变量
将 ROCm 添加到环境变量:
echo 'export PATH=$PATH:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin/x86_64' | sudo tee -a /etc/profile.d/rocm.sh
- 监控(optional)
AMD 没有 NVIDIA 类似nvidia-smi
的命令,只能使用第三方,这里推荐 radeontop,可以直接使用 apt 安装。
sudo apt-get install radeontop
sudo radeontop
如果你的结果全是0, 那么你最好自己编译安装,这里或许比较折腾,因为需要的环境较多。
显示示例:
Deep Learning on ROCm
当前支持的框架如下:
TensorFlow: TensorFlow for ROCm – latest supported version 1.13
MIOpen: Open-source deep learning library for AMD GPUs – latest supported version 1.7.1
PyTorch: PyTorch for ROCm – latest supported version 1.0
Python 环境管理推荐使用 Anaconda 。
Tensorflow
Tensorflow 支持较为完善,直接使用 apt 安装即可。具体方法如下:
- 安装相关包
sudo apt update
sudo apt install rocm-libs miopen-hip cxlactivitylogger
- apt 安装
sudo apt install wget python3-pip
# Pip3 install the whl package from PyPI
pip3 install --user tensorflow-rocm
PyTorch
- 安装依赖包
- rocrand, hiprand, rocblas, miopen, miopengemm, rocfft, rocsparse, rocm-cmake, rocm-dev, rocm-device-libs,rocm-libs, hcc, hip_base,hip_hcc, hip-thrust
- Clone PyTorch repository
git clone https://github.com/ROCmSoftwarePlatform/pytorch.git
cd pytorch
git submodule update --init --recursive
通过设置环境变量,指明编译针对的GPU类型,设置为:export PYTORCH_ROCM_ARCH=gfx×××
- ‘Hipify’ PyTorch source. 将PyTorch中的CUDA函数 build 为ROCm中的hip函数
python tools/amd_build/build_amd.py
- 编译安装
export USE_NINJA=1 # 可选
USE_ROCM=1 USE_LMDB=1 BUILD_CAFFE2_OPS=0 BUILD_TEST=0 USE_OPENCV=1 MAX_JOBS=N python setup.py install
MAX_JOBS=N 中的 N 小于你的内存除以4.
- torchvision
git clone https://github.com/pytorch/vision
cd vision
python setup.py install
cd ..
- 测试
PYTORCH_TEST_WITH_ROCM=1 python test/run_test.py --verbose
Conclusion
AMD, YES!