AMD R5 5600G 训练ai 踩坑

前几天,处于某种原因,申请了一台新机器,配置的CPU是“AMD Ryzen 5 5600G with Radeon Graphics”, 配置了32G的内存,最大可以给集显分配16G的显存。随便跑下stable-diffusion,结果发现很悲剧。

  1. stable-diffusion 加载模型卡住了 根据成功的经验(https://qiita.com/asfdrwe/items/1ca2d07777415f399a3b)。 别人用的是fedora,我用的是ubuntu 22.04, 按照提示,需要配置下面的变量

    export HSA_OVERRIDE_GFX_VERSION=9.0.0
    export DEVICE=hip
    

    然后我的加载模型后(1.5.1版本)就卡住了, 1.6.0版本没有显示加载模型参数的提示。 切换各个pytorch版本都不行,设置HSA_OVERRIDE_GFX_VERSION就各种报错,不是内存非法, 就是驱动错误,除非 重启,否则貌似无法从错误中恢复了。 然后各种搜索,各种尝试,无果,我大概把网上能找到关于5600G进行ai训练的文章翻遍了。

  2. 跑我之前随便写的一个pytorch训练程序 stable-diffusion 实在太多代码了,就跑下我之前写的一个训练程序看看,然后一个一个输出, 最后发现Model.to(device)卡住了。我的这个训练程序,卡住之后,只能将进程kill掉,否则Ctrl-C都无法 退出。使用strace跟踪,发现卡在了“ioctl(3, AMDKFD_IOC_MAP_MEMORY_TO_GPU, 0x7ffc43808df0) = 0”, 但我不知道如何解决。 各种尝试中,最常见的错误:

    Memory access fault by GPU node-1 (Agent handle: 0x79de240) on address (nil). Reason: Page not present or supervisor privilege.
    Aborted (core dumped)
    "hipErrorNoBinaryForGpu: Unable to find code object for all current devices!"
    Aborted (core dumped)
    Segmentation fault (core dumped)
    

    包括github(https://github.com/pytorch/pytorch/issues/103973)中提到的关于atomics的支持(这个我也不知道是什么,但根据提示,我的不支持,一个15,一个13) amd 驱动安装的各种程序也被我研究了一遍,没发现特殊的东西

  3. 曙光 瞎转悠的时候,看到github(https://github.com/RadeonOpenCompute/ROCm/issues/2418) 中提到将内存中的数据往GPU中转移的时候卡住了,这不就是我第二步的疑惑么。 他的是hipMemcpy, 不过,里面提到了使用AMD_LOG_LEVEL=5 这个变量可以查看hip的调用日志。于是,赶紧试了下,发现果然卡在了这个函数中。 然后根据提示,在grub的启动中,加入下面的参数:

    amdgpu.ppfeaturemask=0xffff3fff amdgpu.runpm=0x0
    

    这个我之前其实看到过,不过他们的都是独立显卡,我的是个集成显卡,感觉不适用。最后么,还是加入试下。 我目前的启动参数如下:

       #cat /proc/cmdline
    BOOT_IMAGE=/vmlinuz-5.15.0-83-generic root=UUID=37873ac3-14da-4fd0-acb8-9a2a111b113a ro acpi_enforce_resources=lax idle=nomwait amdgpu.ppfeaturemask=0xffff3fff amdgpu.runpm=0x0
    

    重启之后,果然可以了。 不过从我自己的程序来看,amd gpu的运算的loss和val loss相比nvidia,差距好大。 然后再到stable-diffusion中试了了,模型加载成功了。 但是,画出来的都是黑的(1.6.0)。。。。而这个问题,我看到有人反应过。这貌似是pytorch的一个bug(https://github.com/RadeonOpenCompute/ROCm/issues/2314) 或者就是rocm的,他们俩总有一个是坏人。 最后,使用rocm 5.2的版本:

    pip install torch==1.13.1+rocm5.2 torchvision==0.14.1+rocm5.2 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/rocm5.2
    

    从某种意义上说,这款CPU可能不能给你满意的训练速度,但得益于可以设置最够大的显存,让很多ai的训练至少得以运行。

发布日期:
分类:技术

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据