AMD 顯卡/GPU 深度學習折騰指南

文章首發於 個人博客

Introduction

鑑於 NVIDIA 的價格和自己的預算, 因此上了 AMD 的船,自此主機組裝完成。

AMD 的 CPU 加 AMD 的 GPU, AMD, YES !

裝機完成之後,首要問題就是如何在 AMD 的顯卡上進行深度學習煉丹?

經過一番配置(折騰),順利實現上一目標,以下爲個人在 Ubuntu 上的折騰指南。

ZheTeng Conditions

由於要使用AMD 的 ROCm 平臺, 其對硬件有一定的要求,請確定是否如何下面的條件,如果符合,則可以參考以下的步驟進行配置。

GPU 列表

以下的型號的 GPU 符合條件:
20190731150421.png

更詳細的支持的 GPU 列表

CPU 列表

以下型號的 CPU 在支持之列:
20190731150920.png

更詳細的說明鏈接

關於 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

  1. 如果你的系統已經安裝了官方驅動,那麼需要運行以下命令刪除系統中已有的的AMD GPU 驅動,並重新啓動。
sudo amdgpu-pro-uninstall
sudo apt autoremove -y
sudo reboot
  1. 添加 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
  1. Install ROCm by apt
    使用 apt 安裝 rocm 包
sudo apt update
sudo apt install rocm-dkms

以上過程會非常慢,如果你有科學上網的方法,推薦使用之。我在路由端配置了相關加速,正常情況下大概十分鐘完成。

  1. 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
  1. 測試
    重啓系統之後,運行以下命令驗證 ROCm 安裝是否成功,如果看到你的 GPU 在下面的命令中都有顯示,則表示已經安裝成功。
/opt/rocm/bin/rocminfo 
/opt/rocm/opencl/bin/x86_64/clinfo 

結果如下:
rocminfo 命令:
命令一.png

clinfo 命令:
shell 2.png

  1. 環境變量
    將 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
  1. 監控(optional)
    AMD 沒有 NVIDIA 類似 nvidia-smi 的命令,只能使用第三方,這裏推薦 radeontop,可以直接使用 apt 安裝。
sudo apt-get install radeontop
sudo radeontop

如果你的結果全是0, 那麼你最好自己編譯安裝,這裏或許比較折騰,因爲需要的環境較多。
顯示示例:
20190731160110.png

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 安裝即可。具體方法如下:

  1. 安裝相關包
sudo apt update
sudo apt install rocm-libs miopen-hip cxlactivitylogger
  1. apt 安裝
sudo apt install wget python3-pip
# Pip3 install the whl package from PyPI
pip3 install --user tensorflow-rocm

PyTorch

  1. 安裝依賴包
  • rocrand, hiprand, rocblas, miopen, miopengemm, rocfft, rocsparse, rocm-cmake, rocm-dev, rocm-device-libs,rocm-libs, hcc, hip_base,hip_hcc, hip-thrust
  1. Clone PyTorch repository
git clone https://github.com/ROCmSoftwarePlatform/pytorch.git
cd pytorch
git submodule update --init --recursive
  1. 指定 GPU 型號
    如下:
    20190731163709.png.

通過設置環境變量,指明編譯針對的GPU類型,設置爲:export PYTORCH_ROCM_ARCH=gfx×××

  1. ‘Hipify’ PyTorch source. 將PyTorch中的CUDA函數 build 爲ROCm中的hip函數
python tools/amd_build/build_amd.py
  1. 編譯安裝
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.

  1. torchvision
git clone https://github.com/pytorch/vision
cd vision
python setup.py install
cd ..
  1. 測試
PYTORCH_TEST_WITH_ROCM=1 python test/run_test.py --verbose

我的測試有一定的問題:
測試結果

Conclusion

AMD, YES!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章