在AutoDL中搭建WebUI, 使用flux1.dev

因为我的电脑是 MacOS, 在本地搭了个 Stable Diffusion Web UI Forge 后, 发现用 mps 设备来跑生成, 一个迭代要 70s 到 100s , 就算用 schnell 的(只需要固定四个迭代), 生成一张图都要五六分钟.

目前 huggingface 上的量化模型大多数是 Float8_e4m3fn , mps 又不支持, 所以只能够另寻他法.

一、租GPU

之前看别人租用云GPU, 用的是 AutoDL 这个平台, 看了下价格感觉还挺便宜, 就用来试试了.

我选了个显存较大的示例(vGPU-32GB), 价格还比 4090 便宜一些, 选了这个镜像:

image.png

看介绍它支持无卡模式, 也就是只使用 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 , 后续下载模型可能会用到.

  1. 前往 huggingface 中, 注册并登录, 然后点击右上角的头像, 在弹窗中选择 Access Token 选项:
image.png
  1. 然后填写一个好记的 token 名, 并把读写权限给勾上, 然后点击末尾的 Create token 按钮:


    image.png
  2. 最后把生成的 Access Token 保存起来, 后面要用于登录.


    image.png

五、下载模型

配置镜像

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 版本.

以下是安装步骤:

  1. 切换到专门用于启动 WebUI Forge 的虚拟环境: conda activate forge

  2. 同样更新一下 pip : pip install --upgrade pip

  3. 克隆仓库: cd ~ && git clone https://github.com/lllyasviel/stable-diffusion-webui-forge.git
    ※ 可能因为网络问题克隆失败, 多试几次.

  4. 克隆成功后, 进入到项目目录: cd ~/stable-diffusion-webui-forge

  5. 因为 AutoDL 默认就是 root 用户, 而 WebUI Forge 的初始化脚本禁止使用 root 用户初始化, 所以要添加一个 -f 的选项来允许 root 用户运行: ./webui.sh -f

  6. 首次运行需要配置很多东西, 慢慢等待, 因为当前处于无卡模式, 所以到最后会报错结束, 先忽略它.

    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 默认给的实例磁盘空间有限, 同一个模型存放两次可能不够用, 这里用软链接的方式把模型放置到指定位置, 节省空间:

  1. 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

  2. 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

  3. 量化的 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

  4. 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 :

  1. 进入虚拟环境: conda activate forge

  2. 启动服务: cd ~/stable-diffusion-webui-forge && ./webui.sh -f

启动后, 会提示你需要访问 Running on local URL: http://127.0.0.1:7861 来访问 WebUI , 但是这个地址是相对于服务器而言, 我们要访问的话需要通过 AutoDL 提供的 ssh 端口转发功能.

返回 AutoDL 的实例管理界面, 找到运行中的实例, 点击 自定义服务 :

image.png

在弹出的弹窗选择 Linux/Mac , 复制复制 ssh 端口转发的命令:

image.png

因为 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 :


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容