目前,AMD 的深度學習加速解決方案已經官方支援 TensorFlow 和 Caffe 兩種框架。
AMD 提供了一個預構建的 whl 包,使安裝變得像 Linux 通用 TensorFlow 的安裝那樣簡單。AMD 已經發布了安裝說明以及一個預構建的 Docker 映像。
除了支援 TensorFlow 1.8,AMD 目前還在致力於對 TensorFlow 主儲存庫進行所有針對 ROCm 的強化。其中一些補丁已經在上游合併,另外幾個正在積極審查中。在全面更新增強功能時,AMD 還將釋出和維護未來支援 ROCm 的 TensorFlow 版本,如 v1.10 版。
AMD 相信深度學習的優化、可便攜性以及可擴充套件性的未來在於特定領域編譯器的基礎之上。其開發者受到 XLA 早期結果的啟發,正在朝著為 AMD GPU 開放和優化 XLA 的方向發展。
有關 AMD 深度學習加速的更多內容可參照:www.amd.com/deeplearning
2017 年,AMD 釋出了 ROCm 平臺,開始為開發者提供深度學習支援。同時,這家公司也開源了高效能機器學習庫 MIOpen。
準備能執行 ROCm 和 docker 的機器
以下教程假定了使用全新的機器來準備 ROCm+Docker 環境;除了典型的庫存包(stock package)更新以外,不需要安裝額外的軟體。
最新的公開 docker.re 釋出,18.02 版本已知在 docker 映象下與非根賬戶共同使用時存在缺陷。請使用以下 deb 包更新 docker 包到 18.04 版本。
安裝包:https://download.docker.com/linux/ubuntu/dists/xenial/pool/nightly/amd64/docker-ce_18.04.0~ce~dev~git20180315.170650.0.8fabfd2-0~ubuntu_amd64.deb
首先推薦安裝 ROCm 核心,ROCm KFD 按 DKMS 模組的方式分佈,適用於 ROCm1.7.0 後的版本。AMD 推薦儘量升級到最新的通用核心。更新的核心通常能夠更好地支援 AMD 硬體,並且庫存視訊解析度和硬體加速效能也通常會得到改善。同時,ROCm 已經官方支援了 Ubuntu 和 Fedora Linux 分佈。以下的 asciicast 展示了在 Ubuntu16.04 上更新核心。更多的細節可以在 Radeon Open Computer 網站上找到。
在 Ubuntu 上安裝 ROCK 核心:https://github.com/RadeonOpenCompute/ROCm#debian-repository---apt-get
第1步:安裝 ROCm 核心
你需要鍵入(或複製)如下命令:
# OPTIONAL, upgrade your base kernel to 4.13.0-32-generic, reboot required
sudo apt update && sudo apt install linux-headers-4.13.0-32-generic linux-image-4.13.0-32-generic linux-image-extra-4.13.0-32-generic linux-signed-image-4.13.0-32-generic
sudo reboot
# Install the ROCm rock-dkms kernel modules, reboot required
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
sudo apt-get update && sudo apt-get install rock-dkms
sudo update-initramfs -u
sudo reboot
# Add user to the video group
sudo adduser $LOGNAME video
確保在安裝 ROCm 核心包後重啟計算機,以強制新核心在重啟時載入。你可以通過在提示符下鍵入以下命令來驗證是否載入了 ROCm 核心:
lsmod | grep kfd
在螢幕上打出的內容應該如下:
amdkfd 270336 4
amd_iommu_v2 20480 1 amdkfd
amdkcl 24576 3 amdttm,amdgpu,amdkfd
第 2 步:安裝 docker
確認過新核正在執行之後,下一步就是安裝 docker 引擎。可以在 docker 的網站上找到安裝 docker 的手冊,但可能最簡單的方法時使用 docker 自己的 bash 指令碼。如果允許在你的機器上執行從網際網路下載的 bash 指令碼,開啟一個 bash 提示符並執行以下命令列:
curl -sSL https://get.docker.com/ | sh
用上面的指令碼檢視 Linux 發行版和安裝的核心,並正確安裝 docker。指令碼將在 ROCm 平臺上輸出一條警告訊息,表明它不能識別 ROCm 核心;這個是正常的,可以忽略。指令碼可在無法識別核心的情況下進行正確的 docker 安裝。
第 3 步:驗證/更改 docker 裝置儲存驅動程式
sudo docker info
docker 裝置儲存驅動程式管理 docker 如何訪問影象和容器。docker 官網上可以找到很多關於儲存驅動程式架構的文件和詳細描述。通過在命令提示符下發出 sudo docker info 命令並查詢「Storage Driver:」輸出,可以檢查哪個儲存驅動程式正被 docker 使用。我們很難預測安裝時儲存驅動程式 docker 會選擇什麼作為預設值,預設值會隨著時間的推移而變化,但在經驗中,我們發現尺寸較大的影象會遇到 devicemapper 儲存驅動程式問題。它對影象和容器的最大尺寸施加了限制。如果你在「大資料」領域工作,如在深度神經網路的應用中,devicemapper 限制了 10GB 的預設值。如果遇到此限制,有兩個選項可用:
1. 切換到其他儲存驅動
AMD 推薦使用「overlay2」,它的環境依賴與 ROCm 核心相符,所以可以適用。
overlay2 可提供無限制的影象尺寸
如果不能使用「overlay2」,你可以在啟動服務時間的時候通過 storage-driver=<name>選項選擇儲存驅動
2. 如果你必須使用「devicemapper」,請在服務啟動時傳遞「devicemapper」配置變數——dm.basesize,以增加潛在影象的最大值。
在建立和使用「devicemapper」影象後切換到「overlay2」儲存驅動程式的缺點是需要重新建立現有影象。因此,AMD 建議在進行重要工作前驗證是否使用「overlay2」儲存驅動程式設定了 docker。
第 4 步 A:使用 docker CLI 構建 ROCm 容器
clone 並構建容器
git clone https://github.com/RadeonOpenCompute/ROCm-dockercd ROCm-docker
sudo docker build -t rocm/rocm-terminal rocm-terminal
sudo docker run -it --device=/dev/kfd --device=/dev/dri --group-add video rocm/rocm-terminal
(可選)第 4 步 B:使用 docker-compose 構建 ROCm 容器
使用 docker-compose clone 和構建容器:
git clone https://github.com/RadeonOpenCompute/ROCm-dockercd ROCm-docker
sudo docker-compose run --rm rocm
第 5 步:驗證 ROCm-docker 容器是否成功構建
驗證基於工作容器的 ROCm 軟體堆疊
在第 2 步和第 3 步之後,應該有一個對正在執行的 docker 容器的 bash 登入提示
hcc --version應該顯示 AMD 異構編譯器的版本資訊
執行示例應用程式
cd /opt/rocm/hsa/sample
sudo make
./vector-copy
顯示成功建立 GPU 裝置、核心編譯和成功關閉的文字應該列印至 stdout
參考內容:
https://medium.com/tensorflow/amd-rocm-gpu-support-for-tensorflow-33c78cc6a6cf
https://github.com/RadeonOpenCompute/ROCm-docker