目录

TensorFlow on Navi10折腾记

TL,DR: export HSA_OVERRIDE_GFX_VERSION=10.3.0


17年夏天机缘巧合之下接触了ANN。那时TensorFlow 1.x刚推出不久,而当时电脑上的950M显卡支持CUDA。我靠着入门级编程水平稍微折腾后成功安装。不过只是勉为其难地运行,毕竟性能弱、显存小 (2G)、散热也不理想。

那几年深度学习的浪潮席卷了学界和业界,各类模型层出不穷。然而热闹是他们的,我只是浅尝辄止。19年底组装电脑时计划是玩游戏而非跑计算,于是显卡选择了AMD的5700XT(代号Navi10)而非NVIDIA的2060 / 2060SUPER / 2070。

然而人的命运就不可以预料。在这全民AI的年代,谁能置身事外?虽然不太复杂的模型也可以在CPU上运行,但既然已有不错的GPU,何不利用起来?然而,AMD的GPU计算平台ROCm发展缓慢,官方支持的显卡型号非常有限。5700系列显卡上市已经三年,Github上的这个issue[1]也挂了三年。

22年初推出的ROCm v5支持了6800系列(Navi 21)。其架构比Navi 10更新但接近,所以对后者的支持或许不远了。果然神通广大的开源社群找到了办法。

上个月,有高人自行编译了可在Navi 10上运行的ROCm[2],不过过程费时费力。后来得知[3],无需自行编译,只需设置环境变量 HSA_OVERRIDE_GFX_VERSION=10.3.0 假装显卡是Navi 21,就可以成功运行。此前有人将这一方法用于6600XT / 6700S (Navi 23)[4][5],但没想到对Navi 10也有效。闻此喜讯,果断开搞。

  1. 安装系统
    ROCm只支持Linux,于是先安装Ubuntu。顺便体验下新的22.04。安装过程跟着教程[6]走即可,要先在现有的Win10系统上给磁盘分配空余空间。

    进入系统之后才意识到要给USB无线网卡安装驱动。好在可以先通过手机的USB tethering上网。然而网卡厂商提供的驱动太旧,网上的开源驱动一开始好用后来就连不上了。只好将就用着慢速的USB tethering。另外还遇到了无线键鼠卡顿的问题。

  2. 安装ROCm
    大致参照官方v5.2安装指南[7]。由于Ubuntu 22.04尚未得到官方支持,需自行解决dependency版本问题[8]

  3. pip install tensorflow-rocm
    pytorch的话似乎要自行编译

  4. 设置环境变量HSA_OVERRIDE_GFX_VERSION=10.3.0

  5. Let the tensors flow

简单跑了几个benchmark,似乎没什么问题。不过,我的浅度学习模型在CPU和GPU上运行似乎区别不大。所以折腾的结果目前还享受不到,就当从折腾的过程中学习了。

顺便一提,微软开发的基于DirectX 12的DirectML可提供GPU加速,但据说效果一般。我试了一下tensorflow-directml-plugin,不仅没有加速,反而明显减速……

再顺便一提,目前显卡的价格总算基本恢复正常了。前两年的情况简直疯狂,二手卡的价格一度达到我当时购买价的两倍。如果当时卖掉,现在买个N卡就不用这么折腾了。



  1. [Any update on 5700 Xt support? · Issue #887 · RadeonOpenCompute/ROCm](https://github.com/RadeonOpenCompute/ROCm/issues/887) ↩︎

  2. rocm-build/navi10 at master · xuhuisheng/rocm-build ↩︎

  3. [Releases? · Issue #1 · xuhuisheng/rocm-gfx1010](https://github.com/xuhuisheng/rocm-gfx1010/issues/1) ↩︎

  4. Here's something you don't see every day: PyTorch running on top of ROCm on a 6800M (6700XT) laptop! Took a ton of minor config tweaks and a few patches but it actually functionally works. HUGE! : Amd ↩︎

  5. [Does ROCm support the RX 6700S (laptop GPU) · Issue #1756 · RadeonOpenCompute/ROCm](https://github.com/RadeonOpenCompute/ROCm/issues/1756) ↩︎

  6. Beginners Guide To Install Windows 10 With Ubuntu in Dual Boot ↩︎

  7. Overview of ROCm Installation Methods
    ↩︎

  8. [ROCm fails to install from APT repository in 22.04 · Issue #1713 · RadeonOpenCompute/ROCm](https://github.com/RadeonOpenCompute/ROCm/issues/1713#issuecomment-1193332549) ↩︎