花了几天时间研究了一下,做个记录,也给有同样需求的人借鉴,少踩点坑。
我的硬件配置:14600KF + RX 7900XTX
其他AMD显卡可以在AMD网上查找支持列表
首先是参考AMD网站上的文章
WSL How to guide - Use ROCm on Radeon GPUs — Use ROCm on Radeon GPUs
里面有安装的详细步骤,但是其中有些信息并不准确
我这次安装成功的ROCm版本是6.3.2,Ubuntu版本是24.04,python版本是3.12.3,Tensorflow版本是2.17.0
以下显卡驱动
Radeon™ Software for Windows Version AMD Software: Adrenalin Edition™ 24.12.1 for WSL2
还有一个HIP SDK不确定是不是必要的,反正我是装了
1. 安装WSL,参考微软网站信息即可
2. 在WSL下安装Ubuntu,同样参考微软网站
3. 安装amdgpu-install
安装命令:
sudo apt update
wget https://repo.radeon.com/amdgpu-install/6.3.2/ubuntu/noble/amdgpu-install_6.3.60302-1_all.deb
sudo apt install ./amdgpu-install_6.3.60302-1_all.deb
'https://repo.radeon.com'这个网址列出了所有版本的ROCm,和各种安装包,查阅以后发现最新的ROCm版本是6.3.3,不过这个版本还没有支持WSL,在'amdgpu/6.3.3/ubuntu/pool/main/'里面缺少hsa-runtime-rocr4wsl-amdgpu,而在6.3.2的路径里有这个库,以后ROCm更新的时候可以去检查这个文件夹来确定是否能安装在WSL中
4. 接下来安装ROCm
amdgpu-install -y --usecase=wsl,rocm --no-dkms
5. 检查安装结果
rocminfo
这两步可参考AMD网站上的说明,安装成功后运行rocminfo会返回Agent 2的部分,包含显卡信息的内容
到此,ROCm就安装好了
接下来是安装TensorFlow
AMD网站上的关于Ubuntu版本,Keras版本这部分信息是不准确的,具体安装过程如下
6. 先安装miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
sudo chmod +x Miniconda3-latest-Linux-x86_64.sh
./Miniconda3-latest-Linux-x86_64.sh
7. 需要增加一个路径,修改~/.bashrc文件(/home/用户名/.bashrc),增加一行
export PATH=$PATH:/home/用户名/miniconda3/bin
此处“用户名”按实际替换,安装路径也是一样
然后运行
source ~/.bashrc
8. 初始化conda
conda init
创建环境
conda create -n rocm python=3.12.3
激活环境
conda activate rocm
9. 在创建的环境里安装TensorFlow ROCm
pip3 install https://repo.radeon.com/rocm/manylinux/rocm-rel-6.3.2/tensorflow_rocm-2.17.0-cp312-cp312-manylinux_2_28_x86_64.whl
这里就完成了TensorFlow的安装
以上部分理论上不应有报错,可能需要时不时关掉WSL并重开
10. 安装VSCode
默认windows已经安装好VSCode了,并安装了WSL Extension,WSL里只需要在终端输入 code . 就能启动安装VS Code Server,完成以后会在windows里打开VSCode,并打开WSL里面的文件夹
11. 安装Jupyter
这时候Extension就会分成Local和WSL,在WSL那部分里安装插件就可以了
最后记录一个import tensorflow as tf的错误和解决方法
如何解决conda使用中`GLIBCXX_3.4.29‘ not found的问题
在~/.bashrc里增加路径
export LD_LIBRARY_PATH="/home/用户名/.conda/envs/rocm/lib"
然后运行 source ~/.bashrc
用户名和环境名按实际替换,conda安装路径也一样
`GLIBCXX_3.4.32‘ not found的问题
更新conda环境中的libstdc++.so.6
conda install -c conda-forge libstdcxx-ng
就这些了,有空补一些截图和更详细的说明
ps: 不要使用AMD网站上的测试代码检验GPU,那段MNIST的训练代码在显卡上跑的比在CPU上还慢。可以使用cifar100的代码跑一下训练。