因为我的电脑是 MacOS, 在本地搭了个 Stable Diffusion Web UI Forge 后, 发现用 mps 设备来跑生成, 一个迭代要 70s 到 100s , 就算用 schnell 的(只需要固定四个迭代), 生成一张图都要五六分钟.
目前 huggingface 上的量化模型大多数是 Float8_e4m3fn , mps 又不支持, 所以只能够另寻他法.
一、租GPU
之前看别人租用云GPU, 用的是 AutoDL 这个平台, 看了下价格感觉还挺便宜, 就用来试试了.
我选了个显存较大的示例(vGPU-32GB), 价格还比 4090 便宜一些, 选了这个镜像:
看介绍它支持无卡模式, 也就是只使用 CPU 的模式, 用来做环境配置, 一小时一毛钱, 在实例初始化(初始化实例是收费的,所以需要先充值)完成后, 我就关机改用无卡模式了.
无卡模式开机后, 复制右边的 SSH登录 里的 ssh命令 到终端(Terminal)里, 回车, 第一次登录 ssh 可能需要输入 yes
+ 回车来继续.
然后提示输入密码, 复制 密码 黏贴到终端中(黏贴的密码不可见), 再次回车, 就在终端中通过 ssh 连接到远程服务器了.
二、配置缓存目录的数据盘软链接
AutoDL 中, root 用户的家目录位于系统盘, huggingface-cli 下载的模型默认会存到用户家目录的 .cache 目录中, 模型较大容易把系统盘占满, 所以我把系统盘的 .cache 目录移到数据盘(autodl-tmp), 然后用一个软链接指向数据盘中的 .cache
移动:
mv /root/.cache /root/autodl-tmp/
软链接:
ln -s /root/autodl-tmp/.cache /root/.cache
执行这两步之后, 运行 ls /root -al |grep .cache
, 应该能够看到 类似 .cache -> /root/autodl-tmp/.cache
的输出
三、初始化虚拟环境
我选的镜像默认提供了 conda , 用来配置 python 的环境还不错, 运行一下命令先生成两个虚拟环境:
初始化 conda :
conda init --all
创建一个专门用来下载 huggingface 模型的环境:
conda create -n hub python=3.10
创建一个专门用来配置 webui-forge 的环境:
conda create -n forge python=3.10
两个环境创建都是一路回车即可.
四、生成 Access Token
在自己的电脑访问 huggingface , 创建一个 Access Token , 后续下载模型可能会用到.
- 前往 huggingface 中, 注册并登录, 然后点击右上角的头像, 在弹窗中选择 Access Token 选项:
-
然后填写一个好记的 token 名, 并把读写权限给勾上, 然后点击末尾的 Create token 按钮:
-
最后把生成的 Access Token 保存起来, 后面要用于登录.
五、下载模型
配置镜像
huggingface 我们无法直连, 但是好在国内有镜像, 执行以下两步将镜像连接作为环境变量添加到配置文件
添加到配置文件:
echo 'export HF_ENDPOINT=https://hf-mirror.com' >> ~/.bashrc
应用配置文件:
source ~/.bashrc
※ 如果你使用 zsh 作为默认的 shell , 那么你应该运行这两条命令而不是上面那两条, 不理解这个操作的话, 就无视下面的命令
添加到配置文件:
echo 'export HF_ENDPOINT=https://hf-mirror.com' >> ~/.zshrc
应用配置文件:
source ~/.zshrc
开始下载
切换到专门用来下载模型的虚拟环境:
conda activate hub
更新 pip :
pip install --upgrade pip
安装 huggingface_hub:
pip install huggingface_hub
使用 Access Token 登录 huggingface :
huggingface-cli login
※ 然后huggingface-cli会提示你输入 token ,Enter your token (input will not be visible):
把刚刚生成的 token 黏贴进去回车即可下载 clip 模型:
huggingface-cli download comfyanonymous/flux_text_encoders clip_l.safetensors
下载 text_encoder 模型:
huggingface-cli download comfyanonymous/flux_text_encoders t5xxl_fp8_e4m3fn.safetensors
下载 Comfy 量化过的 flux.1 dev 模型:
huggingface-cli download Comfy-Org/flux1-dev flux1-dev-fp8.safetensors
下载 flux.1 dev 的 vae 模型:
huggingface-cli download black-forest-labs/FLUX.1-dev ae.safetensors
四个模型要下载半天, 不过是无卡模式所以不用担心费用~
六、配置 Stable Diffusion WebUI Forge
WebUI Forge 是 lllyasviel 大佬发布的用来跑图片生成模型的套件, 部署在服务端后, 就可以在浏览器用网页生成图片了, 因为我要用到他的另一个生成透明图层的扩展Layer Diffuse , 跟 WebUI Forge 兼容, 所以选择了 Forge 版本.
以下是安装步骤:
切换到专门用于启动 WebUI Forge 的虚拟环境:
conda activate forge
同样更新一下 pip :
pip install --upgrade pip
克隆仓库:
cd ~ && git clone https://github.com/lllyasviel/stable-diffusion-webui-forge.git
※ 可能因为网络问题克隆失败, 多试几次.克隆成功后, 进入到项目目录:
cd ~/stable-diffusion-webui-forge
因为 AutoDL 默认就是 root 用户, 而 WebUI Forge 的初始化脚本禁止使用 root 用户初始化, 所以要添加一个
-f
的选项来允许 root 用户运行:./webui.sh -f
-
首次运行需要配置很多东西, 慢慢等待, 因为当前处于无卡模式, 所以到最后会报错结束, 先忽略它.
RuntimeError: Your device does not support the current version of Torch/CUDA! Consider download another version: https://github.com/lllyasviel/stable-diffusion-webui-forge/releases/tag/latest
七、将模型软链接到 WebUI Forge 的指定位置
因为 AutoDL 默认给的实例磁盘空间有限, 同一个模型存放两次可能不够用, 这里用软链接的方式把模型放置到指定位置, 节省空间:
clip 模型:
ln -s /root/.cache/huggingface/hub/models--comfyanonymous--flux_text_encoders/snapshots/6af2a98e3f615bdfa612fbd85da93d1ed5f69ef5/clip_l.safetensors ~/stable-diffusion-webui-forge/models/text_encoder/clip_l.safetensors
text_encoder 模型:
ln -s /root/.cache/huggingface/hub/models--comfyanonymous--flux_text_encoders/snapshots/6af2a98e3f615bdfa612fbd85da93d1ed5f69ef5/t5xxl_fp8_e4m3fn.safetensors /root/stable-diffusion-webui-forge/models/text_encoder/t5xxl_fp8_e4m3fn.safetensors
量化的 flux.1 dev 模型
ln -s /root/.cache/huggingface/hub/models--Comfy-Org--flux1-dev/snapshots/f062db3fdcd6a91b73f99236a7dc9cac9f339964/flux1-dev-fp8.safetensors /root/stable-diffusion-webui-forge/models/Stable-diffusion/flux1-dev-fp8.safetensors
vae 模型:
ln -s /root/.cache/huggingface/hub/models--black-forest-labs--FLUX.1-dev/snapshots/0ef5fff789c832c5c7f4e127f94c8b54bbcced44/ae.safetensors ~/stable-diffusion-webui-forge/models/VAE/ae.safetensors
八、进入 WebUI Forge
配置完成后, 关机退出无卡模式, 重新使用有卡模式启动(如果GPU不足, 可能需要等待), 并且使用 ssh 登录.
启动后, 只需要以下两条命令既可启动 WebUI Forge :
进入虚拟环境:
conda activate forge
启动服务:
cd ~/stable-diffusion-webui-forge && ./webui.sh -f
启动后, 会提示你需要访问 Running on local URL: http://127.0.0.1:7861 来访问 WebUI , 但是这个地址是相对于服务器而言, 我们要访问的话需要通过 AutoDL 提供的 ssh 端口转发功能.
返回 AutoDL 的实例管理界面, 找到运行中的实例, 点击 自定义服务 :
在弹出的弹窗选择 Linux/Mac , 复制复制 ssh 端口转发的命令:
因为 WebUI Forge 启动的端口是 7860 , 所以要把 命令中的第二个 6006 改为 7860 , 以图片中的命令为例, 更改之后的命令是:
ssh -CNg -L 6006:127.0.0.1:7860 root@connect.westb.seetacloud.com -p 29567
然后打开一个新的终端界面(记住是在新的终端, 而不是已经登录了 AutoDL 的终端), 黏贴上面的命令, 回车, 再输入密码.
这个新的界面就不要管他了, 它会负责把你电脑本地的 6006 端口对接到 AutoDL 实例的 7860 端口.
此时你就可以在你自己电脑的浏览器访问: http://127.0.0.1:6006 来访问 WebUI Forge 了.
使用时, 按照这个配置来使用 flux.1 dev :