300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > AMD的GPU拿来跑深度学习 Rocm3.0Pytorch@Ubuntu16 编译记录

AMD的GPU拿来跑深度学习 Rocm3.0Pytorch@Ubuntu16 编译记录

时间:2020-06-21 13:31:36

相关推荐

AMD的GPU拿来跑深度学习 Rocm3.0Pytorch@Ubuntu16 编译记录

折腾了一周了吧,终于是在自己的电脑上编译完成,并且可以跑通Pytorch训练代码了。我也是小白一个,如果有专业词汇使用不当,还请见谅。

编译过程参考了官方编译文档, JC大神的博文以及github里面的一些Issue集合而成。向他们表示诚挚的感谢。

简单介绍一下硬件:

CPU :I5 9400F

GPU:AMD Radeon VII

内存:64G

软件环境:

Ubuntu 16.04 LTS

Anaconda3 (python=3.6)

Rocm 3.0

编译过程:

安装rocm,按照官方的文档安装即可配置编译需要的环境,确保所需的包是安装了的。

sudo apt updatesudo apt install rock-dkms rocm-dev rocm-libs miopen-hip miopengemm hipsparse rccl rocthrust hipcub roctracer-devsudo apt install git python-pip libopenblas-dev cmake libnuma-dev autoconf build-essential ca-certificates curl libgoogle-glog-dev libhiredis-dev libiomp-dev libleveldb-dev liblmdb-dev libopencv-dev libpthread-stubs0-dev libsnappy-dev sudo vim libprotobuf-dev protobuf-compilerpip install enum34 numpy pyyaml setuptools typing cffi future hypothesis1234

clone Pytorch源码

cd ~git clone /pytorch/pytorch.git or git clone /ROCmSoftwarePlatform/pytorch.gitcd pytorchgit submodule update --init --recursive1234

参考这个Issue的指示,修改对应的文件

遵循官方指示:

sed -i 's/find_dependency(hip)/find_dependency(HIP)/g' /opt/rocm/rocsparse/lib/cmake/rocsparse/rocsparse-config.cmakesed -i 's/find_dependency(hip)/find_dependency(HIP)/g' /opt/rocm/rocfft/lib/cmake/rocfft/rocfft-config.cmakesed -i 's/find_dependency(hip)/find_dependency(HIP)/g' /opt/rocm/miopen/lib/cmake/miopen/miopen-config.cmakesed -i 's/find_dependency(hip)/find_dependency(HIP)/g' /opt/rocm/rocblas/lib/cmake/rocblas/rocblas-config.cmake1234

另外建议加入以下两行,是我在编译失败过程中新加的

sed -i 's/find_dependency(hip)/find_dependency(HIP)/g' /opt/rocm/hipsparse/lib/cmake/hipsparse/hipsparse-config.cmakesed -i 's/find_dependency(hip)/find_dependency(HIP)/g' /opt/rocm/rccl/lib/cmake/rccl/rccl-config.cmake12

然后在pytorch/cmake/External/rccl.cmake 里添加set(RCCL_DIR"/opt/rocm/rccl/lib/cmake/rccl")

删除conda环境中的ld(可选,仅针对使用anaconda)。

cd ~/anaconda3/envs/$YOUR_ENV_NAME$/compiler_compatmv ld ld-tmpcd123

Hipify CUDA的函数

注意,如果这里报错的话一定不要忽略,找到错误的根源进行修改或者直接删除了重新clone。这个过程很快,会有部分skipped 和 ok,只要不是报错都没问题。

cd pytorchpython tools/amd_build/build_amd.py12

配置你的GPU类型。目前ROCm支持gfx803, gfx900和gfx906这三种GPU。官方的安装指南里面包含了这一步,如果不能确定,可以通过以下命令获取/opt/rocm/bin/rocm_agent_enumerator。通过设置环境变量,指明编译针对的GPU类型,我的设置为:

export PYTORCH_ROCM_ARCH=gfx906

而且,参考了官方的docker安装指南以后,我又加了

export HCC_AMDGPU_TARGET=gfx906

不知道是否是必要的开始编译Pytorch,其中官方说明注明,MAX_JOBS = n时,占用的内存约为4nGB,也就是说16G内存的话可以考虑设为4,内存够大可以设置得大一点。

USE_ROCM=1 USE_LMDB=1 USE_OPENCV=1 MAX_JOBS=4 python setup.py install --user1

编译完成Pytorch之后(如果成功的话),编译torchvision,

git clone /pytorch/visioncd visionpython setup.py installcd ..1234

全部编译完成后进行测试

PYTORCH_TEST_WITH_ROCM=1 python test/run_test.py --verbose1

其他

如果按照上面的步骤操作完仍然不能跑通你的代码(至少python -c "import torch"不报错),那么你可以尝试一下几点:

第三步git源码的部分换一个源进行clone。仔细注意第3.5步issue里面的比较官方的回复(即apply that patch)按照报的错仔细去查找,如果在configuration阶段报错关于RCCL的,可以尝试加

sed -i 's/find_dependency(hip)/find_dependency(HIP)/g' /opt/rocm/rccl/lib/cmake/rccl/rccl-config.cmakeexport LIBRARY_PATH="/opt/rocm/rccl/lib/"12

如果以上你都检查过还是报错,那么建议拷贝错误的地方去谷歌上搜索一下,百度上是搜不到什么干货的,我也是多次google到对我很有价值的信息。如果你ROCM或者什么其他相关的包下载的很慢(或者经常遇到异常EOF),去挂个代理吧,相关的方法可以在网上查,或者在最开始提到的JC大神的博客中学习。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。