Loading... ## Stable Diffusion WebUI Forge Forge一个基于 Stable Diffusion WebUI(基于 Gradio)之上的平台,旨在让开发更加便捷,优化资源管理,加速推理过程,并探索实验性功能。 “Forge”这个名字的灵感来自《Minecraft Forge》。该项目的目标是成为 SD WebUI 的 Forge。 Forge 当前基于 SD-WebUI 1.10.1 版本的这个提交(commit)。由于原版 SD-WebUI 目前更新较少,Forge 每 90 天或在有重要修复时与原版 WebUI 同步。 项目原地址: [#Stable Diffusion WebUI Forge - Github](https://github.com/lllyasviel/stable-diffusion-webui-forge) --- ## 一、项目环境: 在以下环境中搭建该项目: | 项目环境 | 具体信息 | | --------------- | ------------------------------- | | 操作系统 | Ubuntu 20.04.6 LTS | | Docker 环境 | 已集成的 Conda | | CPU | AMD EPYC 7542 32-Core Processor | | 核心数 | 64 Core / 32MB L3 Cache | | 内存 (RAM) | 2048G | | 显卡 | 8 x A800 (80G) | | Python 默认版本 | 3.11 | ## 二、用户与权限设立 我们将创建一个名为 `epors` 的用户账户,并为其创建一个名为 `sdgroup` 的用户组。同时,我们将把该用户和用户组添加到 `sudo` 权限中,以便能够执行需要管理员权限的操作。 ### 创建用户组 首先,使用以下命令创建一个名为 `sdgroup` 的用户组: ```bash sudo groupadd sdgroup ``` ### 创建用户 接下来,使用以下命令创建名为 `epors` 的用户,并将其添加到 `sdgroup` 用户组中: ```bash sudo useradd -m -G sdgroup epors ``` * `-m` 选项用于创建用户的主目录。 * `-G` 选项用于将用户添加到指定的用户组。 ### 设置用户密码 ```bash sudo passwd epors ``` 根据提示输入并确认新密码。 ### 添加用户sudo权限 最后,将 `epors` 用户添加到 `sudo` 权限中,以便能够执行具有管理员权限的命令: ```bash sudo usermod -aG sudo epors ``` ## 三、获取 Stable Diffusion Forge 在本章节中,我们将从 GitHub 上克隆 Stable Diffusion Forge 项目到本地,并设置开发环境。 ### 切换用户和进入个人文件夹 首先,切换到 `epors` 用户并进入该用户的个人文件夹: ```bash su - epors cd ~/ ``` ### 克隆项目 接下来,使用以下命令克隆 Stable Diffusion Forge 项目: ```bash git clone https://github.com/lllyasviel/stable-diffusion-webui-forge.git ``` ### 进入项目目录 克隆完成后,进入项目目录: ```bash cd stable-diffusion-webui-forge ``` ## 四、创建虚拟环境 ### Conda: 如果你和我一样使用的是 Conda 环境,请使用以下命令创建名为 `forge` 的虚拟环境,并激活它: ```bash conda create -n forge python=3.10 conda activate forge ``` ### Python: 如果你不是使用 Conda,可以使用以下命令创建虚拟环境: **确保你的Python为3.10版本** ```bash python -m venv venv source venv/bin/activate ``` ### 安装依赖 然后,通过以下命令安装项目所需的依赖: ```bash pip install -r requirements_versions.txt ``` ## 五、启动项目 如果你有基础大模型`.checkpoint`文件,启动项目之前强烈建议将基础模型放入指定文件夹内,避免启动时下载模型花费时间。 **models目录详解作用** ```bash models/ ├── Codeformer # 用于图像修复的 Codeformer 模型 ├── ControlNetPreprocessor # 用于控制网络的预处理器 ├── GFPGAN # 用于图像修复的 GFPGAN 模型 ├── Stable-diffusion # 存放稳定扩散模型文件 ├── VAE-approx # 近似变分自编码器(VAE)模型 ├── deepbooru # Deepbooru 标签生成器相关文件 ├── hypernetworks # 存放超网络模型 ├── svd # 奇异值分解(SVD)相关文件 ├── z123 # 其他未分类文件或模型 ├── ControlNet # 存放控制网络模型 ├── ESRGAN # 超分辨率图像生成的 ESRGAN 模型 ├── Lora # 存放 Lora 网络文件 └── VAE # 存放变分自编码器(VAE)模型 ``` * 大模型一般放在 `Stable-diffusion` * LORA项目文件放在 `Lora` * VAE文件放在 `VAE` 最后,使用以下命令启动项目,并等待 Forge 自动配置: **一般来说可以直接尝试启动** ```bash python launch.py --listen --port 29090 ``` 至此,你可以通过浏览器访问`http://localhost:29090` 来运行 Stable Diffusion Forge。 ### 个人参数与GPU选择: 假设你和我的环境一样拥有许多GPU,但是只需要用指定的某个GPU运行,可以在运行前输入一段环境变量设置: **选择第0号GPU** ```bash export CUDA_VISIBLE_DEVICES=0 ``` 这样启动时会以`nvidia-smi`的第`0`号GPU运行 ### 或者编写启动脚本 `start.sh` ```bash #!/bin/bash #用于激活Conda环境 eval "$(conda shell.bash hook)" conda activate forge #用于激活python环境 #source venv/bin/activate #引入libtcmalloc解决内存泄漏(需提前安装) #export LD_PRELOAD="“/usr/lib64/libtcmalloc.so4" #指定GPU块运行(这里为0块GPU) #export CUDA_VISIBLE_DEVICES=0 #运行 python launch.py --listen --port 29090 --api --xformers --enable-insecure-extension-access ``` ## 六、其它启动参数: ### 配置类参数: | 参数名 | 作用 | |----------------------------------------------------|--------------------------------------------------| | `-h, --help` | 显示帮助信息并退出 | | `--exit` | 安装后立即终止 | | `--data-dir` | 指定存储所有用户数据的基本路径,默认为"./" | | `--config` | 用于构建模型的配置文件路径,默认为 "configs/stable-diffusion/v1-inference.yaml" | | `--ckpt` | 稳定扩散模型的检查点路径;如果指定,该检查点将被添加到检查点列表并加载 | | `--ckpt-dir` | 稳定扩散检查点的目录路径 | | `--no-download-sd-model` | 即使没有找到模型,也不下载 SD1.5 模型 | | `--vae-dir` | 变分自编码器模型的路径 | | `--gfpgan-dir` | GFPGAN 目录 | | `--gfpgan-model` | GFPGAN 模型文件名 | | `--codeformer-models-path` | Codeformer 模型文件的目录路径 | | `--gfpgan-models-path` | GFPGAN 模型文件的目录路径 | | `--esrgan-models-path` | ESRGAN 模型文件的目录路径 | | `--bsrgan-models-path` | BSRGAN 模型文件的目录路径 | | `--realesrgan-models-path` | RealESRGAN 模型文件的目录路径 | | `--scunet-models-path` | ScuNET 模型文件的目录路径 | | `--swinir-models-path` | SwinIR 和 SwinIR v2 模型文件的目录路径 | | `--ldsr-models-path` | LDSR 模型文件的目录路径 | | `--lora-dir` | Lora 网络的目录路径 | | `--clip-models-path` | CLIP 模型文件的目录路径 | | `--embeddings-dir` | 用于文本逆向的嵌入目录,默认为 "embeddings" | | `--textual-inversion-templates-dir` | 文本逆向模板的目录 | | `--hypernetwork-dir` | 超网络目录 | | `--localizations-dir` | 本地化目录 | | `--styles-file` | 用于样式的文件名,默认为 "styles.csv" | | `--ui-config-file` | 用于 UI 配置的文件名,默认为 "ui-config.json" | | `--no-progressbar-hiding` | 不隐藏 Gradio UI 中的进度条(默认隐藏) | | `--max-batch-count` | UI 的最大批次计数值,默认为 16 | | `--ui-settings-file` | 用于 UI 设置的文件名,默认为 "config.json" | | `--allow-code` | 允许从 Web UI 执行自定义脚本 | | `--share` | 使用 Gradio 的 share=True,使 UI 可通过其网站访问 | | `--listen` | 使用 0.0.0.0 作为服务器名称启动 Gradio | | `--port` | 使用给定的服务器端口启动 Gradio | | `--hide-ui-dir-config` | 从 Web UI 中隐藏目录配置 | | `--freeze-settings` | 禁用编辑设置 | | `--enable-insecure-extension-access` | 无论其他选项如何,都启用扩展选项卡 | | `--gradio-debug` | 使用 --debug 选项启动 Gradio | | `--gradio-auth` | 设置 Gradio 身份验证,如 "username:password" | | `--gradio-auth-path` | 设置 Gradio 身份验证文件路径 | | `--disable-console-progressbars` | 不在控制台输出进度条 | | `--enable-console-prompts` | 在生成时在控制台打印提示 | | `--api` | 使用 API 启动 Web UI | | `--api-auth` | 设置 API 身份验证,如 "username:password" | | `--api-log` | 启用所有 API 请求的日志记录 | | `--nowebui` | 仅启动 API,不启动 UI | | `--ui-debug-mode` | 不加载模型以快速启动 UI | | `--device-id` | 选择要使用的默认 CUDA 设备 | | `--administrator` | 管理员权限 | | `--cors-allow-origins` | 以逗号分隔的列表形式允许的 CORS 来源 | | `--cors-allow-origins-regex` | 以单个正则表达式的形式允许的 CORS 来源 | | `--tls-keyfile` | 部分启用 TLS,需要 --tls-certfile 才能完全生效 | | `--tls-certfile` | 部分启用 TLS,需要 --tls-keyfile 才能完全生效 | | `--server-name` | 设置服务器主机名 | | `--gradio-queue` | 使用 Gradio 队列;实验性选项 | | `--skip-version-check` | 不检查 torch 和 xformers 的版本 | | `--no-hashing` | 禁用检查点的 sha256 哈希,以提高加载性能 | ### 性能类参数: | 参数名 | 作用 | |----------------------------------------------------|--------------------------------------------------| | `--xformers` | 启用 xformers 以加速跨注意层 | | `--reinstall-xformers` | 强制重新安装 xformers,升级后使用,但升级后请移除,否则将一直重装 xformers | | `--force-enable-xformers` | 强制启用 xformers 的跨注意层;如果运行失败,请勿提交错误报告 | | `--opt-split-attention` | 强制启用 Doggettx 的跨注意层优化 | | `--opt-split-attention-invokeai` | 强制启用 InvokeAI 的跨注意层优化 | | `--opt-split-attention-v1` | 启用旧版本的分割注意力优化,该版本不会消耗所有可用的显存 | | `--opt-sub-quad-attention` | 启用内存高效的子二次交叉注意力层优化 | | `--sub-quad-q-chunk-size` | 子二次交叉注意力层优化使用的查询块大小 | | `--sub-quad-kv-chunk-size` | 子二次交叉注意力层优化使用的 kv 块大小 | | `--sub-quad-chunk-threshold` | 子二次交叉注意力层优化使用的显存使用率阈值 | | `--opt-channelslast` | 为 4D 张量启用备选布局,仅在具有 Tensor 核心的 Nvidia 显卡(16xx 及更高版本)上可能导致更快的推理 | | `--disable-opt-split-attention` | 强制禁用跨注意层优化 | | `--disable-nan-check` | 不检查生成的图像/潜在空间是否包含 nan 值 | | `--use-cpu` | 对指定模块使用 CPU 作为 torch 设备 | | `--no-half` | 不将模型切换为 16 位浮点数 | | `--precision` | 以此精度进行评估 | | `--no-half-vae` | 不将 VAE 模型切换为 16 位浮点数 | | `--upcast-sampling` | 向上采样。与 --no-half 无效 | | `--medvram` | 启用稳定扩散模型优化,牺牲一点速度以减少显存使用 | | `--lowvram` | 启用稳定扩散模型优化,牺牲大量速度以极低的显存使用 | | `--lowram` | 将稳定扩散检查点权重加载到显存而非 RAM | | `--always-batch-cond-uncond` | 禁用使用 --medvram 或 --lowvram 时为节省内存而启用的条件/无条件批处理 | | `--all-in-fp16` | 始终使用FP16运算,获得最佳生成速度,略微降低图像质量(几乎忽略不计),但可能导致生成黑屏(不兼容),可考虑移除此项目 | ### 通用类参数 | 参数名 | 作用 | |----------------------------------------------------|--------------------------------------------------| | `--autolaunch` | 在启动时使用系统的默认浏览器打开 WebUI URL | | `--theme` | 在 WebUI 中使用指定的主题(“light”或“dark”) | | `--use-textbox-seed` | 在 UI 中使用文本框输入种子(没有上/下箭头,但可以输入长种子) | | `--disable-safe-unpickle` | 禁用对 PyTorch 模型的恶意代码检查 | | `--ngrok` | 用于 ngrok 的自动令牌,是 gradio --share 的替代方案 | | `--ngrok-region` | ngrok 应该在其中启动的区域 | 最后修改:2025 年 10 月 09 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 1 喜欢就请我喝一杯奶茶吧~