文章首發於 個人博客
文章目錄
Introduction
鑑於 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 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
結果如下:
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 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 型號
如下:
.
通過設置環境變量,指明編譯針對的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!