今天来给大家做一个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,因为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 就说明部署成功了。
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软件本体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.youtube.com/watch?v=FLOtfHvX8NE
我试过重新启动apache,缓存的页面仍然出现,所以一定有一个文件夹在某个地方。我没有“公共(public)/缓存”,那么我还应该查看哪些其他地方?是否有一个URL标志也可以触发此效果? 最佳答案 您需要触摸一个文件才能清除phusion,例如:touch/webapps/mycook/tmp/restart.txt参见docs 关于ruby-如何在Ubuntu中清除RubyPhusionPassenger的缓存?,我们在StackOverflow上找到一个类似的问题:
电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。 准备工作: 1、U盘一个(尽量使用8G以上的U盘)。 2、一台正常联网可使用的电脑。 3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。 4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。 U盘启动盘制作步骤: 注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主
需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc
因为我现在正在做一些时间测量,我想知道是否可以在不使用Benchmark类或命令行实用程序time的情况下测量用户时间或系统时间。使用Time类只显示挂钟时间,而不显示系统和用户时间,但是我正在寻找具有相同灵active的解决方案,例如time=TimeUtility.now#somecodeuser,system,real=TimeUtility.now-time原因是我有点不喜欢Benchmark,因为它不能只返回数字(编辑:我错了-它可以。请参阅下面的答案。)。当然,我可以解析输出,但感觉不对。*NIX系统的time实用程序也应该可以解决我的问题,但我想知道是否已经在Ruby中实
在Ruby中,以毫秒为单位获取自纪元(1970)以来的当前系统时间的正确方法是什么?我试过了Time.now.to_i,好像不是我想要的结果。我需要结果显示毫秒并且使用long类型,而不是float或double。 最佳答案 (Time.now.to_f*1000).to_iTime.now.to_f显示包含十进制数字的时间。要获得毫秒数,只需将时间乘以1000。 关于ruby-以毫秒为单位获取当前系统时间,我们在StackOverflow上找到一个类似的问题:
我正在运行Ubuntu11.10并像这样安装Ruby1.9:$sudoapt-getinstallruby1.9rubygems一切都运行良好,但ri似乎有空文档。ri告诉我文档是空的,我必须安装它们。我执行此操作是因为我读到它会有所帮助:$rdoc--all--ri现在,当我尝试打开任何文档时:$riArrayNothingknownaboutArray我搜索的其他所有内容都是一样的。 最佳答案 这个呢?apt-getinstallri1.8编辑或者试试这个:(非rvm)geminstallrdocrdoc-datardoc-da
我试图在Ubuntu14.04中使用Curl安装RVM。我运行了以下命令:\curl-sSLhttps://get.rvm.io|bash-sstable出现如下错误:curl:(7)Failedtoconnecttoget.rvm.ioport80:Networkisunreachable非常感谢解决此问题的任何帮助。谢谢 最佳答案 在执行curl之前尝试这个:echoipv4>>~/.curlrc 关于ruby-在Ubuntu14.04中使用Curl安装RVM时出错,我们在Stack