AMD显卡Ubuntu20.4系统下部署stable diffusion

news/2024/12/29 15:27:55/

今天来给大家做一个AMD显卡使用stable diffusion的小白(硬核)教程。最近这段时间AI特别火,很多小伙伴看到各种大佬用AI画的老婆非常精美(色情),弄的人心痒痒,自己也想画一个心仪的老婆(画作)。

太露骨的图片不能放,你们懂得!!

但是很多小伙伴用的是AMD的独立显卡,而自从矿潮以来,显卡价格就居高不下,特别是英伟达的显卡,虽然它用AI作图有优势,但是贵的吓人,从哥布林洞窟里解救出来的RTX3070也还要2000多,简直离谱。本教程呢适用于只有一张amd的显卡,不想换英伟达显卡(穷),又想玩stable diffusion的小伙伴。

那么今天呢我用的是ubuntu 20.4.5桌面版系统部署stable diffusion的教程,保证你能顺利跑起stable diffusion,因为我是从一个完全不懂linux系统的小白找教程一步一步部署下来的,你也能行!

要部署stable diffusion的话需要满足下面三个条件:

第一,要有一个128G以上的硬盘空间,用于安装ubuntu系统。

第二,最好要有一个科学上网的环境。

第三,要有成功部署的决心,遇到什么问题呢就解决什么问题,不要随便放弃,跟着我一步一步来。

本次的部署环境呢,是AMD的独立显卡RX6600。下图呢是支持AMD显卡部署stable diffusion的型号,从470到580、vega56、64、duo、五千以及六千系列,几乎涵盖了主流的AMD显卡型号。

首先,我们需要安装Ubuntu20.4.5桌面版系统的安装我就不详细讲了,很基础,大概十分钟就能装好。为什么需要大家安装新系统呢,因为已有的ubuntu系统会因为我们装的一些软件会产生奇奇怪怪的问题。

本次部署呢,分为以下三个部分:

第一,python3.10.6的安装。

第二,安装ROCM与pytorch

第三,安装stable-diffusion

第一部分:安装python3.10.6

我们进入系统以后呢,需要安装python3.10.6,因为ubuntu20.4.5呢自带的是python3.8.10。本次安装的stable diffusion需要跑在python3.10.6环境下,当然更高版本的也能跑,只是我没试过。

1.安装依赖 如果出现选择,输入Y。

sudo -i

sudo apt-get update

sudo apt-get upgrade

sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev

2.从官网下载源文件

wget https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tgz

3.解压缩Python3.10文件

①先通过find命令找到Python-3.10.6.tgz的下载在哪里了:

find / -name Python-3.10.6.tgz

②接着转换路径至home:

cd /home/

③将python3.10从/root/Python-3.10.6.tgz(第①步找到的路径,红色的是我的路径)的文件复制到home文件夹下:

cp /root/Python-3.10.6.tgz /home/

④然后将文件解压至home文件夹下:tar -zvxf Python-3.10.6.tgz

tar -zvxf Python-3.10.6.tgz

4.开始安装python3.10.6

cd Python-3.10.6/

./configure --enable-optimizations

5.编译:make(没有安装make命令的安装一下)

make

6.安装sudo make install

sudo make install

这样python3.10就安装完成了。

最后,我们需要更新一下python让python默认指向为python3.10

1.更新python默认指向有以下两个方法:

(下面这两个方法是或的关系,不是且的关系!当然,你也可以都做一遍。)

①建立软连接

首先,删除原有链接

rm /usr/bin/python

其次,找到python3的安装路径(我的是在/usr/local/bin/python3)

which python3

然后,找到的路径建立新链接

ln -s /usr/local/bin/python3 /usr/bin/python

这样输入python就可以了。

②设置python的环境变量(需要搜索vim编辑器的用法)

首先,编辑.bashrc文件

vim ~/.bashrc

在这里写入自己刚刚安装python3.10的路径:

alias python='/usr/local/bin/python3'

然后:

source ~/.bashrc

python

这样就可以了!

2.更新pip默认指向

pip指向pip3也是如上的两个办法。

这里只展示方法①(如果新装的系统就直接用我的命令):

which pip3

ln -s /usr/local/bin/pip3 /usr/bin/pip

pip

到这里,小伙伴们可以愉快的使用python3.10了!

我们回到主界面,输入 python -V 返回python 3.10.6 就说明部署成功了。

第二部分:安装ROCM与pytorch

1.ROCM的简介

ROCM和NVDIA的CUDA类似,ROCM是AMD发布的一个用于加速GPU计算的软件平台。而该平台从面世至今仅支持Linux系统,因此本文的一切操作都将在Linux系统下进行。

2.ROCm的配置

2.1 查看显卡型号

由于AMD每更新一次ROCm就抛弃一批老型号显卡支持的不做人行为,安装前确认自己的显卡是否能支持就变成了一件很重要的事。

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

2.2 ROCm环境的准备

2.2.1 软件包安装

首先安装AMD显卡驱动:

sudo apt-get update

wget https://repo.radeon.com/amdgpu-install/5.3/ubuntu/focal/amdgpu-install_5.3.50300-1_all.deb

sudo apt-get install ./amdgpu-install_5.3.50300-1_all.deb

执行安装操作:

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 后续配置

添加用户组:

sudo usermod -a -G video $LOGNAME

sudo usermod -a -G render $LOGNAME

配置环境变量:

echo 'export PATH=$PATH:/opt/rocm-5.3.0/bin:/opt/rocm-5.3.0/opencl/bin'

export LD_LIBRARY_PATH=/opt/rocm-5.3.0/lib:/opt/rocm-5.3.0/lib64

安装完成后重启:

sudo reboot

2.2.3 测试

打开终端输入rocminfo或rocm-smi,会出现当前设备信息和状态。

设备信息里出现GPU,且能正常显示显卡状态,即代表ROCM环境安装成功。

3 .运行库的补充及pytorch的安装

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

sudo apt install git python3 python3-pip python3-venv rocm-libs miopen-hip rccl libtinfo5 libopenmpi3 libopenblas-dev

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

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.4.2

4 .环境配置综合测试(本条可以不做!!!已经试过出错好像也没问题

这里使用 https://github.com/xuhuisheng/rocm-build 提供的检查程序,可以clone或直接下载下来。

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

sh check.sh

python test-pytorch-device.py

python test-pytorch-fc.py

python test-pytorch-rocblas.py

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

第三部分:stable-diffusion的本地部署

把stable diffusion软件本体clone下来,参照官方文档说明部署即可。

因为已经在之前的步骤中安装了pytorch,此处可不用安装。

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui

cd stable-diffusion-webui

python -m venv venv

source ./venv/bin/activate

python -m pip install --upgrade pip wheel

python launch.py --precision full --no-half

可能发生的错误:

错误1:torch unable to use gpu....

解决办法:

#打开launch.py找到这句代码

安装vim编辑器(已经安装过的可以不用管)

apt-get install vim

进入软件目录

cd /root/stable-diffusion-webui

编辑launch.py

vim launch.py

按“i”修改文件:

commandline_args = os.environ.get('COMMANDLINE_ARGS', "")

#改成

commandline_args = os.environ.get('COMMANDLINE_ARGS', "--skip-torch-cuda-test")

按ESC然后输入 :wq回车保存

错误2:No module named ‘_lzma‘

解决办法:

打开python3

cd /usr/local/lib/python3.10

安装

apt-get install liblzma-dev -y

pip3 install backports.lzma

环境中修改lzma.py位置依自己的环境路径而定,新装系统和我的路径是一样的不用改

然后

cd /usr/local/lib/python3.10

编辑

vim lzma.py

按“i”修改文件,如下的部分:

from _lzma import *

from _lzma import _encode_filter_properties, _decode_filter_properties

修改成如下:

try:

from _lzma import *

from _lzma import _encode_filter_properties, _decode_filter_properties

except ImportError:

from backports.lzma import *

from backports.lzma import _encode_filter_properties, _decode_filter_properties

按ESC然后输入 :wq回车保存

错误3:No module named 'backports'

pip3 install backports.lzma

apt-get update

apt-get upgrade

重新启动一下 stable diffusion

cd stable-diffusion-webui

source ./venv/bin/activate

python launch.py --precision full --no-half

cd /usr/local/lib/python3.10

cd ..

python

import lzma

然后就可以退出了

首次运行时会安装依赖包,所以依旧是漫长的等待…

模型文件需放置在stable-diffusion-webui/models/Stable-diffusion/ 文件夹下。可以提前放置,不放也可以,只是第一次回下载默认模型包有点慢。

跑完出现127.0.0.1:7860即代表部署成功,浏览器中输入127.0.0.1:7860可打开webUI。

stable-diffusion的运行,及常用参数

后续运行只需要输入:

cd /root/stable-diffusion-webui

HSA_OVERRIDE_GFX_VERSION=10.3.0 python launch.py --precision full --no-half

如果第一次运行显卡不工作,是CPU在跑图,则需要重启下电脑。然后取得root权限再运行,即:

sudo -i

输入密码就可以了

浏览器中输入 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的文档说明。

视频教程地址:

https://www.bilibili.com/video/BV1gs4y1H7Uq/?spm_id_from=333.999.0.0&vd_source=798c720594d31bfcbf5d2a56af4707f4

https://www.youtube.com/watch?v=FLOtfHvX8NE


http://www.ppmy.cn/news/223422.html

相关文章

Intel HAXM is required to run this AVD.HAXM is not installed.

问题: 在使用Android Studio打开AVD模拟器时,无法打开模拟器并提示出现错误: Intel HAXM is required to run this AVD.HAXM is not installed. Install Intel HAXM for better emulation performance.运行环境: 电脑&#xff…

ThinkPad T14 Gen1 AMD 版本 Linux 安装核显驱动

本次Ubuntu18.04系统下AMD核显驱动安装,主要参考知乎大神虎皮XXL和张大妈社区的soulteary,成功实现: 显示亮度调节HDMI显示器外接 由于大神介绍的较为详细,为了去除繁文缛节,下次装系统少走弯路,特此在大神…

TongWeb8适配JakartaEE应用

历史: 2017年 Oracle将Java EE(Java SE还自己保留)交给开源组织,Eclipse基金会接手。但Oracle不允许开源组织使用Java名号,所以Jakarta EE名称于2018.02.26应运而生。 版本 发布日期 焦点说明 Java EE 8 2017.08 …

Oracle和Linux运维笔记

一、记录Oracle常用SQL语句 1.for循环插入数据,该写法需要优化,插入1亿多条数据需要7个小时左右 declarebeginFOR a IN (SELECT DISTINCT day_id FROM 表名b ORDER BY DAY_ID) LOOPINSERT INTO 表名a a SELECT * FROM 表名b b WHERE b.day_id a.day_id…

【2460. 对数组执行操作】

来源:力扣(LeetCode) 描述: 给你一个下标从 0 开始的数组 nums ,数组大小为 n ,且由 非负 整数组成。 你需要对数组执行 n - 1 步操作,其中第 i 步操作(从 0 开始计数&#xff09…

LeetCode 2465. Number of Distinct Averages【哈希表,双指针,排序】简单

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

LNMP服务搭建

这里写目录标题 什么是LNMP架构【安装 Nginx 服务】【安装 MySQL 服务】 什么是LNMP架构 LNMP代表的就是:Linux系统下NginxMySQLPHP这种网站服务器架构Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、…

Cherry STREAM KEYBOARD 剪刀脚键盘拆卸

Cherry STREAM KEYBOARD 剪刀脚键盘拆卸: 使用手指或者是牙签等细小物体从键帽的左下角或者右下角插入轻轻撬起(慢),假如不好撬的话就多试一试四个角,一般是两个卡扣(左下角右下角各一个)&#…