AMD的GPU現在可以加速TensorFlow深度學習了

機器之心發表於2018-08-29

目前,AMD 的深度學習加速解決方案已經官方支援 TensorFlow 和 Caffe 兩種框架。

AMD的GPU現在可以加速TensorFlow深度學習了

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

AMD的GPU現在可以加速TensorFlow深度學習了

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 容器

AMD的GPU現在可以加速TensorFlow深度學習了

  • 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 容器

AMD的GPU現在可以加速TensorFlow深度學習了

  • 使用 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

相關文章