近日,AMD 宣布推出适用于 ROCm GPU 的 TensorFlow v1.8 接口,其中包括 Radeon Instinct MI25。AMD 称,这是该公司在实现深度学习加速上的重要里程碑。ROCm 即 Radeon Open Ecosystem,是 AMD 在 Linux 上的开源 GPU 计算基础环境。这次的 TensorFlow 实现使用了 MIOpen——一个适用于深度学习的优化 GPU 例程库。
目前,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深度学习加速的更多内容可参照:/deeplearning
年,AMD 发布了 ROCm 平台,开始为开发者提供深度学习支持。同时,这家公司也开源了高性能机器学习库 MIOpen。
准备能运行 ROCm 和 docker 的机器
以下教程假定了使用全新的机器来准备 ROCm+Docker 环境;除了典型的库存包(stock package)更新以外,不需要安装额外的软件。
最新的公开 docker.re 发布,18.02 版本已知在 docker 镜像下与非根账户共同使用时存在缺陷。请使用以下 deb 包更新 docker 包到 18.04 版本。
安装包:/linux/ubuntu/dists/xenial/pool/nightly/amd64/docker-ce_18.04.0~ce~dev~git0315.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 内核:/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 - /rocm/apt/debian/rocm.gpg.key | sudo apt-key add -echo deb [arch=amd64] /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 / | 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=选项选择存储驱动
2. 如果你必须使用「devicemapper」,请在服务启动时传递「devicemapper」配置变量——dm.basesize,以增加潜在图像的最大值。
在创建和使用「devicemapper」图像后切换到「overlay2」存储驱动程序的缺点是需要重新创建现有图像。因此,AMD 建议在进行重要工作前验证是否使用「overlay2」存储驱动程序设置了 docker。
第 4 步 A:使用 docker CLI 构建 ROCm 容器
clone 并构建容器
git clone /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 /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
参考内容:
/tensorflow/amd-rocm-gpu-support-for-tensorflow-33c78cc6a6cf
/RadeonOpenCompute/ROCm-docker
相关数据
深度神经网络 技术
Deep neural network
深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。
机器学习 技术
Machine Learning
机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。