文章首发于 个人博客
文章目录
IntroductionZheTeng ConditionsGPU 列表CPU 列表关于 ROCmInstall on Ubuntu系统准备安装 ROCmDeep Learning on ROCmTensorflowPyTorchConclusionIntroduction
鉴于 NVIDIA 的价格和自己的预算, 因此上了 AMD 的船,自此主机组装完成。
AMD 的 CPU 加 AMD 的 GPU, AMD, YES !
装机完成之后,首要问题就是如何在 AMD 的显卡上进行深度学习炼丹?
经过一番配置(折腾),顺利实现上一目标,以下为个人在 Ubuntu 上的折腾指南。
ZheTeng Conditions
由于要使用AMD 的 ROCm 平台, 其对硬件有一定的要求,请确定是否如何下面的条件,如果符合,则可以参考以下的步骤进行配置。
GPU 列表
以下的型号的 GPU 符合条件:
更详细的支持的 GPU 列表。
CPU 列表
以下型号的 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 updatesudo apt dist-upgradesudo apt install libnuma-devsudo reboot
安装 ROCm
如果你的系统已经安装了官方驱动,那么需要运行以下命令删除系统中已有的的AMD GPU 驱动,并重新启动。sudo amdgpu-pro-uninstallsudo apt autoremove -ysudo reboot
添加 APT源 Add the ROCm apt repository
使用如下命令:
wget -qO - /rocm/apt/debian/rocm.gpg.key | sudo apt-key add -echo 'deb [arch=amd64] /rocm/apt/debian/ xenial main' | sudo tee /etc/apt/sources.list.d/rocm.list
Install ROCm by apt
使用 apt 安装 rocm 包
sudo apt updatesudo apt install rocm-dkms
以上过程会非常慢,如果你有科学上网的方法,推荐使用之。我在路由端配置了相关加速,正常情况下大概十分钟完成。
Set user permissions
设置用户 GPU 使用权限,将当前用户加入到权限组:
sudo usermod -a -G video $LOGNAME
为系统以后的用户都添加权限:
echo 'ADD_EXTRA_GROUPS=1' | sudo tee -a /etc/adduser.confecho 'EXTRA_GROUPS=video' | sudo tee -a /etc/adduser.conf
测试
重启系统之后,运行以下命令验证 ROCm 安装是否成功,如果看到你的 GPU 在下面的命令中都有显示,则表示已经安装成功。
/opt/rocm/bin/rocminfo /opt/rocm/opencl/bin/x86_64/clinfo
结果如下:
rocminfo 命令:
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 radeontopsudo 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 updatesudo apt install rocm-libs miopen-hip cxlactivitylogger
apt 安装
sudo apt install wget python3-pip# Pip3 install the whl package from PyPIpip3 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 repositorygit clone /ROCmSoftwarePlatform/pytorch.gitcd pytorchgit submodule update --init --recursive
指定 GPU 型号
如下:
.
通过设置环境变量,指明编译针对的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 /pytorch/visioncd visionpython setup.py installcd ..
测试
PYTORCH_TEST_WITH_ROCM=1 python test/run_test.py --verbose
我的测试有一定的问题:
Conclusion
AMD, YES!