Stage1st

 找回密码
 立即注册
搜索
查看: 8577|回复: 16
打印 上一主题 下一主题

[科技] A卡用户本地部署stable-diffusion的教程

[复制链接]
     
跳转到指定楼层
楼主
发表于 2022-11-20 16:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Glaceon丶 于 2022-11-20 17:12 编辑

之所以写这个帖子,是因为看到目前stable-diffusion相关教程主要面对N卡和Windows平台,而由于众所周知的原因面对A卡的教程则少之又少。
再加上之前看到 https://bbs.saraba1st.com/2b/thread-2098669-1-1.html 这个帖子里面一众AMD用户的期望……更是对自己折腾这一个多月以来的总结。
昨天成功跑通了,特把教程整理出来供想折腾的人参考。


0.硬件需求
一台装有A卡的电脑

一个≥128G的空白U盘
流畅的国际互联网访问

1.Linux系统的安装
和NV的CUDA类似,ROCm是AMD发布的一个用于加速GPU计算的软件平台。而该平台从面世至今仅支持Linux系统,因此本文的一切操作都将在Linux系统下进行。
关于Linux系统的安装,建议选择较为常见的Ubuntu系列,楼主使用的是Ubuntu 20.04 LTS。对于绝大部分以Windows为主系统的用户,可以将Linux安装在U盘中,用U盘开机进入系统。U盘安装Linux的安装方法在网上随处可见,本文不再赘述。
值得一提的是为了防止grub覆盖原有Windows引导程序,可以借助虚拟机来安装系统。详见这里
因为后续需要存放模型,甚至编译软件包所需源码,建议U盘≥128G且不要分区
(注:虚拟机和WSL都不行,需要一个独立的、能访问实体机显卡的Linux环境)
2.ROCm的配置
2.1 查看显卡型号
由于AMD每更新一次ROCm就抛弃一批老型号显卡支持的不做人行为,安装前确认自己的显卡是否能支持就变成了一件很重要的事。

上表包括了大部分常见的A卡型号,以世代分类。 不在表中的可以去这里输入自己显卡的型号,找到Graphics/Compute这一列会有说明。

2.2 ROCm环境的准备
2.2.1 软件包安装
文中使用Ubuntu安装后系统自带的amdgpu显卡驱动,没有额外安装显卡驱动。
主要参照了AMD官网的说明进行安装,未尽细节请移步查看。

首先添加安装器:

  1. sudo apt-get update
  2. wget https://repo.radeon.com/amdgpu-install/5.3/ubuntu/focal/amdgpu-install_5.3.50300-1_all.deb
  3. sudo apt-get install ./amdgpu-install_5.3.50300-1_all.deb
复制代码

执行安装操作:

  1. sudo amdgpu-install --usecase=hiplibsdk,rocm --no-dkms
复制代码

如有另外安装显卡驱动的需求,就删去后面的 --no-dkms
…漫长的等待…(大概需要一个小时左右,和网络状况关系很大)
如果顺利的话基本不会出现报错,本着warnings不用管的原则直接进入下一步即可。
真报错了原因一般是Linux内核版本不一致造成部分编译不通过,可以查看AMD的官方文档来确定所需的Linux内核版本。
查看系统内核版本:终端输入 uname -r
以楼主安装的ROCm5.3.0为例,对应的内核版本是5.15.0-46-generic,实际系统中是5.15.0-50-generic,安装时未出现报错。

2.2.2 后续配置


添加用户组:

  1. sudo usermod -a -G video $LOGNAME
  2. sudo usermod -a -G render $LOGNAME
复制代码


配置环境变量:

  1. echo 'export PATH=$PATH:/opt/rocm-5.3.0/bin:/opt/rocm-5.3.0/opencl/bin'
  2. export LD_LIBRARY_PATH=/opt/rocm-5.3.0/lib;/opt/rocm-5.3.0/lib64
复制代码


安装完成后重启:

  1. sudo reboot
复制代码


2.2.3 测试
打开终端输入rocminfo或rocm-smi,会出现当前设备信息和状态。
设备信息里出现GPU,且能正常显示显卡状态,即代表ROCm环境安装成功。



2.3 运行库的补充及pytorch的安装
安装完成后仍需补充一些额外的运行库以免报错,测试时按照提示缺什么补什么即可,一般情况下需要补的有这些:

  1. sudo apt install git python3 python3-pip python3-venv rocm-libs miopen-hip rccl libtinfo5 libopenmpi3 libopenblas-dev
复制代码

pytorch安装,直接去官网下最新的就行

  1. pip3 install torch torchvision --extra-index-url https://download.pytorch.org/whl/rocm5.2/
复制代码


2.4 环境配置综合测试
这里使用 https://github.com/xuhuisheng/rocm-build 提供的检查程序,可以clone或直接下载下来。

找到里面的check文件夹,终端下运行check.sh和另外3个py:

  1. sh check.sh

  2. python test-pytorch-device.py

  3. python test-pytorch-fc.py

  4. python test-pytorch-rocblas.py
复制代码


运行不报错即可认为ROCm、pytorch环境配置正确。





2.5 对部分特殊显卡型号(gfx803、gfx1010等)的配置
2.5.1 gfx803“懒人包”
由于AMD在最新的ROCm中已放弃对gfx803等型号较老显卡支持,需要使用github大神的魔改版本方能正常使用。到这里 https://github.com/xuhuisheng/rocm-gfx803 下载2个deb替换安装对应的官方包。

  1. sudo dpkg -i hsa-rocr_1.7.0.50300-63.20.04_amd64.deb
  2. sudo dpkg -i rocblas_2.45.0.50300-63.20.04_amd64.deb
复制代码


pytorch等则使用里面的3个whl软件包替换安装。

  1. pip3 install torch-1.11.0a0+git503a092-cp38-cp38-linux_x86_64.whl
  2. pip3 install torchvision-0.12.0a0+2662797-cp38-cp38-linux_x86_64.whl
  3. pip3 install tensorflow_rocm-2.8.0-cp38-cp38-linux_x86_64.whl
复制代码


按照2.4中的方法测试运行环境,运行不报错即可认为环境配置正确。
楼主曾按这个方法在R9 nano上成功跑起了webUI,但可能因为显存不够或者卡本身体质不行的原因,没有成功生成一张图片 但目前b站已有588用户成功跑通的案例

2.5.2 ROCm安装包的编译(gfx1010,RX5700等)
如果上述办法仍不能解决问题,可能需要针对特定显卡型号进行ROCm编译。
该操作仅面对进阶用户,而且就算编译了也不一定能解决问题,放上来仅供折腾参考。为节省正文篇幅我把这部分内容放到>>2L。

3 stable-diffusion的本地部署
clone下来,参照官方文档说明部署即可。
因为已经在步骤2.3中安装了pytorch,此处可不用安装。
  1. git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
  2. cd stable-diffusion-webui
  3. python -m venv venv
  4. source ./venv/bin/activate
  5. python -m pip install --upgrade pip wheel

  6. python launch.py --precision full --no-half
复制代码



首次运行时会安装依赖包,所以依旧是漫长的等待…
模型文件需放置在 stable-diffusion-webui/models/(使用的模型名称)/ 下。如使用stable-diffusion,则在stable-diffusion-webui/models/Stable-diffusion/  文件夹下放置sd-v1-4.ckpt

跑完出现类似下图的内容即代表部署成功,浏览器中输入127.0.0.1:7860可打开webUI。

4 stable-diffusion的运行,及常用参数
后续运行只需要输入:

  1. source ./venv/bin/activate
  2. python webui.py --precision full --no-half
复制代码


浏览器中输入 127.0.0.1:7860 即可打开webUI。

常用参数:

--precision full 和 --no-half:强制双精度浮点运算(据说在N卡上可以减少绿屏bug出现的几率,A卡上不知道有啥用)

--medvram 和 --lowvram:降低显存占用量,视自己显卡水平加不加。

--opt-split-attention-v1:性能优化,进一步降低显存占用量。

至于具体能降低多少,楼主之前在只有4G显存的R9 nano上运行时使用了--medvram和--opt-split-attention-v1,显存占用大概25%的样子。

--disable-safe-unpickle:加载模型前有一步unpickle(原理不明,类似于哈希校验)的过程,部分用户在这里可能报错中止,加上这个参数跳过这一步可继续运行。

详细参数表见AUTOMATIC1111的文档说明

最终,楼主在一台安装了Radeon VII显卡的电脑上成功运行并生成了图片,而且速度看起来还不错的样子。
txt2img:9~10s(但是可以看到图中这里是跑了两次20步运算?)
img2img:4~5s
  

特别鸣谢xuhuisheng大神提供的参考资料和技术支持,如果大家按我的教程跑起来了别忘了去给他点点star



评分

参与人数 10战斗力 +13 收起 理由
Chromium + 1 好评加鹅
kruskal + 1 欢乐多
albertfu + 3 好评加鹅
ssIms + 1 好评加鹅
xqer1107 + 2 好评加鹅
boomerangkid + 1 好评加鹅
0WHan0 + 1
赞卡机 + 1
不能放过孩子 + 1 好评加鹅
nicovan + 1 好评加鹅

查看全部评分

回复

使用道具 举报

     
2#
 楼主| 发表于 2022-11-20 16:52 | 只看该作者
本帖最后由 Glaceon丶 于 2022-11-20 17:52 编辑

2.5.2 ROCm安装包的编译(gfx1010,RX5700等)

该部分内容主要面对 按照主楼中方法仍然无法运行,且仍有意愿继续尝试的用户。

温馨提示①:默认读到这里的用户已经对Linux系统、软件包生成方式、ROCm组件的构成等有了一定的了解,因此对于此处的说明可能不会特别详细。
温馨提示②:编译过程是一个耗费大量时间、CPU和内存的过程,建议内存≥32GB,硬盘可用空间≥40GB。(楼主就在编译某个模块的时候爆内存了……场面一度十分尴尬)
温馨提示③:即使这样由于个体差异(显卡型号,系统版本等原因)仍有可能无法解决问题,该指南仅供折腾参考,请仅在你清楚知道你要干什么的情况下进行。


正片开始:
首先使用repo下载项目源码:
①安装repo(ubuntu-20.04下需要手工安装repo。问就是repo团队对python3的支持太慢)

  1. mkdir -p ~/bin/
  2. curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
  3. chmod a+x ~/bin/repo
  4. export PATH=~/bin:$PATH
复制代码
②使用repo同步项目源代码(大约6.8G):
  1. mkdir -p ~/ROCm/
  2. cd ~/ROCm/
  3. repo init -u https://github.com/RadeonOpenCompute/ROCm.git -b roc-5.3.x
  4. repo sync
复制代码
③cmake的安装:
从ROCm-5.3开始,编译rocBLAS需要cmake-3.18.6。ubuntu-20.04默认的cmake版本是cmake-3.16.3。 需要下载https://cmake.org/files/v3.18/cmake-3.18.6-Linux-x86_64.tar.gz,解压到某个目录, 再执行source env.sh将这个cmake加入PATH环境变量。 如果想要使用其他路径,可以修改env.sh。

下载编译脚本:

git clone https://github.com/xuhuisheng/rocm-build/

按照自己放置文件的路径修改env.sh,执行 source env.sh 设置环境变量。
执行 bash install-dependency.sh 安装依赖。

然后按照序号顺序执行脚本即可。
(期间可能经历多次风扇起飞、内存100%、鼠标卡死等现象,敬请坐和放宽,如果是需要耗费时间比较长的组件 执行的时候会有SLOW的提示,看到它的时候说明可以去先干点别的了……比如来一盘紧张刺激的osu
楼主当时尝试为gfx803编译安装包,全过程耗时约一个下午。

大佬还贴心地提供了中文说明,他真的我哭死https://github.com/xuhuisheng/rocm-build/blob/master/README_zh_CN.md

一些额外补充文档:

gfx803 - ROCm-4.0起不再支持gfx803显卡,我只有一块RX580R9nano,要研究怎么让gfx803苟延残喘。navi10 - 构建navi10的试验脚本。
navi14 - 构建navi14的试验脚本。
check - 检查ROCm能否正常运行的一些代码。
ubuntu2204 - ubuntu-22.04补丁。


回复

使用道具 举报

     
3#
 楼主| 发表于 2022-11-20 16:53 | 只看该作者
常见问题FAQ
本楼用于整理大家遇到的问题和解决办法
回复

使用道具 举报

     
4#
发表于 2022-11-20 18:14 来自手机 | 只看该作者
哦用u盘是个好主意来自: iPhone客户端
回复

使用道具 举报

     
5#
发表于 2022-11-20 18:15 来自手机 | 只看该作者
我的fury nano看来用不了,等之后有空了拿Vega64试试
回复

使用道具 举报

     
6#
 楼主| 发表于 2022-11-20 19:02 | 只看该作者
0WHan0 发表于 2022-11-20 18:15
我的fury nano看来用不了,等之后有空了拿Vega64试试

我上一张卡也是R9 nano,最后的结果是能运行起UI但是出不了图 一点generate就报错甚至直接掉驱动重启

抓到一次报错大概长这个样子 不知道是显存不够还是其他原因
回复

使用道具 举报

     
7#
发表于 2022-11-20 19:28 | 只看该作者
农企员工表示很感激楼主。
回复

使用道具 举报

     
8#
发表于 2022-11-20 19:45 来自手机 | 只看该作者
写的很详细了,步骤也是没问题的。只是在安装过程中发现amd实在太草台了。比如5.2版驱动安装不上的原因居然是驱动里把jammy拼错成了jimmy。这么可笑的bug修了三个礼拜到5.3版才解决。所以amd这套ai方案随便玩玩可以,真想用来干活还要三思。
回复

使用道具 举报

     
9#
 楼主| 发表于 2022-11-20 19:50 | 只看该作者
philip_zhou 发表于 2022-11-20 19:28
农企员工表示很感激楼主。

哈哈哈哈更要感谢我主楼里提到那位大佬
要不你们把他给招安了吧,我们A卡用户在AI领域能不能真正支棱起来,最终还是要靠你们的支持
回复

使用道具 举报

10#
发表于 2022-11-20 20:35 来自手机 | 只看该作者
Glaceon丶 发表于 2022-11-20 19:02
我上一张卡也是R9 nano,最后的结果是能运行起UI但是出不了图 一点generate就报错甚至直接掉驱动重启[f:0 ...

估计就是显存太小跑不起来,毕竟只有4GB
回复

使用道具 举报

     
11#
发表于 2022-11-20 20:36 来自手机 | 只看该作者
顶一下。之前自己从零开始东拼西凑的跟着教程装了个archlinux能稳定出图了,ubantu应该更省事吧
回复

使用道具 举报

     
12#
发表于 2023-1-11 19:29 来自手机 | 只看该作者
想问下,68xt在出图速度上能够碾压3060吗,我有笔记本3060,最近在思考要不要给主力机装个双系统玩ai画图,但是如果出图速度没有太大差距我就懒得折腾了……

—— 来自 Xiaomi 22041211AC, Android 13上的 S1Next-鹅版 v2.5.4
回复

使用道具 举报

     
13#
发表于 2023-1-11 19:38 | 只看该作者
cyp909 发表于 2023-1-11 19:29
想问下,68xt在出图速度上能够碾压3060吗,我有笔记本3060,最近在思考要不要给主力机装个双系统玩ai画图, ...

别想了,就算出图平均速度快一些,a卡起步那一下就会卡出图时间长了还有各种莫名其妙的报错,黑屏,甚至系统重启。有n卡就没必要浪费时间去折腾a卡。
回复

使用道具 举报

     
14#
发表于 2023-2-19 19:26 | 只看该作者
花800块把换下来的6600xt租了个台式试着跑了一下rocm,感谢楼主教程。不过我这边速度感觉挺慢的,可能是因为我下的模型原因,几分钟一张图
回复

使用道具 举报

     
15#
 楼主| 发表于 2023-4-14 18:15 | 只看该作者
【AMD ROCm 开放式软件平台新进展:即将登陆 Windows 系统,支持消费级显卡 】https://www.ithome.com/0/686/513.htm

最新消息win版也要来了,好耶

论坛助手,iPhone
回复

使用道具 举报

     
16#
发表于 2023-4-14 18:16 来自手机 | 只看该作者
A卡不能训练。。。。

—— 来自 Xiaomi 2211133C, Android 13上的 S1Next-鹅版 v2.5.2-play
回复

使用道具 举报

     
17#
发表于 2024-4-17 22:20 | 只看该作者
按照lz的方法是了一下,arch系里很多软件包跟debian上不一样。
按照AUTOMATIC1111大佬的Install on Amd and Arch linux的方法,运行webui.sh失败。
主楼提到的使用rocm-build里的check.sh,我这里只显示到hip之后就是报错了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|stage1st 沪ICP备13020230号-1 沪公网安备 31010702007642号

GMT+8, 2024-5-1 14:46 , Processed in 0.058540 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表