引言
虽然我把arch linux
装在了移动硬盘里,使得我可以同时在我的轻薄本和游戏本之间运行同一个系统,并拥有一个系统级同步的开发环境,但由于我之前将stable-diffusion-webui
部署在了游戏本的win11上,这就导致我无法在带着轻薄本出门时使用stable-diffusion-webui
来生成一些简单的demo
。我的生图需求并不高,不需要生成复杂的模型和图片,所以没必要等着回去用游戏本或者用在线模型来满足这个需求。其次,我的游戏本和轻薄本都是win11与移动硬盘上的linux组成的双系统,这次我选择将其迁移到我的arch-linux
中,方便在两台电脑都跑通stable-diffusion-webui
。
折腾记录
第一个要解决的问题肯定是python
版本问题,因为arch默认使用最新的python
,
stable-diffusion-webui
文档(截至博客发布前)里推荐使用 python 3.10.6
, 所以我选择pyenv
来管理多版本python
, 使用以下命令安装pyenv
和python 3.10.6
sudo pacman -S pyenv
pyenv install 3.10.6
最新版的
python
我尝试了会报依赖错误,我是报了类似这个帖子的错误ERROR: Failed building wheel for tokenizers
手动装torch也报错
pip install torch==2.1.2 torchvision==0.16.2 --extra-index-url https://download.pytorch.org/whl/cu121
ERROR: Could not find a version that satisfies the requirement torch==2.1.2 (from versions: 2.2.0, 2.2.0+cu121, 2.2.1, 2.2.1+cu121, 2.2.2, 2.2.2+cu121, 2.3.0, 2.3.0+cu121, 2.3.1, 2.3.1+cu121)
Github
上截至博客发布前也有相关issues
:系统级
python
降级是不可能的,我也懒得折腾,所以还是用pyenv
搞一个文档推荐的python
环境来解决这个问题
克隆仓库,并修改python
为指定版本
git clone https://github.com/openvinotoolkit/stable-diffusion-webui.git
cd stable-diffusion-webui
alias python=/home/styunlen/.pyenv/versions/3.10.6/bin/python
alias python3=/home/styunlen/.pyenv/versions/3.10.6/bin/python
python -m venv venv
source venv/bin/activate
webui.sh
中的python
路径也可以手动改为以下内容
# python3 executable
# if [[ -z "${python_cmd}" ]]
# then
# python_cmd="python3"
# fi
python_cmd="/home/$USER/.pyenv/versions/3.10.6/bin/python"
接下来requirements.txt
中的依赖可以使用pip
安装也可以直接运行./webui.sh
来自动安装
export PYTORCH_TRACING_MODE=TORCHFX
export COMMANDLINE_ARGS="--skip-torch-cuda-test --precision full --no-half"
./webui.sh
# 或 pip install -r requirements.txt 后运行webui.sh
模型下载太慢的话可以用下载器下载,然后复制到当前目录就行了
512X512一分钟,虽然很慢,将就用用吧。
保存一下启动脚本,方便启动
cat << EOF > start.sh
export PYTORCH_TRACING_MODE=TORCHFX
export COMMANDLINE_ARGS="--skip-torch-cuda-test --precision full --no-half"
./webui.sh
EOF
参考文档
Installation on Intel Silicon · openvinotoolkit/stable-diffusion-webui Wiki · GitHub
Install and Run on AMD GPUs · AUTOMATIC1111/stable-diffusion-webui Wiki · GitHub