没有N卡如何进行深度学习?AMD Yes

没有N卡如何进行深度学习?AMDYes

鉴于很多小伙伴们的电脑配置的是AMD显卡,本文将介绍如何使用TensorFlow以及Keras在AMD显卡上训练深度学习模型。

AMD目前正在开发名为ROCm的新高性能计算平台,其目标是创建一个能够与Nvidia(使用CUDA)和AMD GPU进行数据交互的通用GPU计算开源环境。

没有N卡如何进行深度学习?AMDYes

20190814110428.png

本文将在ROCm内核之上使用Docker运行Keras(后端Tensorflow v1.12.0)来训练深度学习模型,分如下几个部分展开:ROCm平台安装;TensorFlow Docker安装。

ROCm平台安装

软硬件要求

目前的ROCm (v2.6)只支持Linux系统,支持的操作系统如下:

  • Ubuntu 16.04.x and 18.04.1 and 18.04.2 (Version 16.04.3 and newer or kernels 4.13-4.15)
  • CentOS 7.4, 7.5, and 7.6 (Using devtoolset-7 runtime support)
  • RHEL 7.4, 7.5, and 7.6 (Using devtoolset-7 runtime support)

同时对GPU和CPU的支持,也有一定的限制,如下所示:

GPU列表

  • GFX8 GPUs
  • “Fiji” chips, such as on the AMD Radeon R9 Fury X and Radeon Instinct MI8
  • “Polaris 10” chips, such as on the AMD Radeon RX 580 and Radeon Instinct MI6
  • “Polaris 11” chips, such as on the AMD Radeon RX 570 and Radeon Pro WX 4100
  • “Polaris 12” chips, such as on the AMD Radeon RX 550 and Radeon RX 540
  • GFX9 GPUs
  • “Vega 10” chips, such as on the AMD Radeon RX Vega 64 and Radeon Instinct MI25
  • “Vega 7nm” chips, such as on the Radeon Instinct MI50, Radeon Instinct MI60 or AMD Radeon VII

CPU列表

  • AMD Ryzen CPUs;
  • The CPUs in AMD Ryzen APUs;
  • AMD Ryzen Threadripper CPUs
  • AMD EPYC CPUs;
  • Intel Xeon E7 v3 or newer CPUs;
  • Intel Xeon E5 v3 or newer CPUs;
  • Intel Xeon E3 v3 or newer CPUs;
  • Intel Core i7 v4, Core i5 v4, Core i3 v4 or newer CPUs (i.e. Haswell family or newer).
  • Some Ivy Bridge-E systems

在本文中,测试的软硬件环境如下

  • 操作系统:OS: Ubuntu 18.04 LTS
  • CPU: Intel Xeon E5–2630L
  • 内存: 2 x 8 GB
  • 主板: MSI X99A Krait Edition
  • GPU: 2 x RX480 8GB + 1 x RX580 4GB
  • 固态: Samsung 850 Evo (256 GB)
  • 硬盘: WDC 1TB

ROCm安装

为了顺利安装,建议从新系统开始。

首先安装ROCm内核以及相关依赖:

CTRL+ALT+T打开终端,输入如下:

sudo apt update
sudo apt dist-upgrade
sudo apt install libnuma-dev
sudo reboot

添加ROCm apt仓库:

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

安装ROCm:

sudo apt update
sudo apt install rocm-dkms

权限设置

ROCm官方文档建议建立video组来通过当前用户访问GPU资源,首先查看系统中存在的组:

groups

然后,添加当前用户进入video组:

sudo usermod -a -G video $LOGNAME

对于以后的新用户想默认加入video组,可以设置如下命令:

echo 'ADD_EXTRA_GROUPS=1' | sudo tee -a /etc/adduser.conf
echo 'EXTRA_GROUPS=video' | sudo tee -a /etc/adduser.conf

然后重启系统:

reboot

安装测试

输入如下命令:

/opt/rocm/bin/rocminfo

输出结果应该如下所示:

=====================
HSA System Attributes
=====================
Runtime Version: 1.1
System Timestamp Freq.: 1000.000000MHz
Sig. Max Wait Duration: 18446744073709551615 (number of timestamp)
Machine Model: LARGE
System Endianness: LITTLE
==========
HSA Agents
==========
*******
Agent 1
*******
 Name: Genuine Intel(R) CPU @ 1.80GHz
......

最后添加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

到这一步,ROCm算是安装完成了,在终端输入rocm-smi可以查看硬件信息和运行状态。

Tensorflow Docker安装

最简单,可信的安装方法是使用AMD提供的Tensorflow镜像。

安装TensorFlow Docker

首先是Docker的安装,可以参考Docker官方文档:https://docs.docker.com/install/linux/docker-ce/ubuntu/,如果要添加非root用户使用Docker,可参考:https://docs.docker.com/install/linux/linux-postinstall/。

接下来是拉取 ROCm Tensorflow 镜像:

docker pull rocm/tensorflow

镜像*载下**好之后,运行TensorFlow容器:

docker run -i -t \
--network=host \
--device=/dev/kfd \
--device=/dev/dri \
--group-add video \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \ /bin/bash

进入Tensorflow-ROCm 虚拟系统后,进入Python,就可以通过import tensorflow查看是否安装成功。

 ~ python
Python 3.7.3 (default, Mar 27 2019, 22:11:17)
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow
>>>

这样基于AMD显卡的TensorFlow就算安装好了,各位还可以在此基础上安装jupyter等方便自己炼丹,可参考:https://towardsdatascience.com/train-neural-networks-using-amd-gpus-and-keras-37189c453878