在本地或内网私有化部署 Stable Diffusion 3.5 时,最核心的问题是模型文件从哪来、下载后放在哪个目录、启动时如何让服务找到这些文件。本页围绕这个流程,给出一个可直接套用的目录组织方式和启动前校验步骤。
私有化部署 Stable Diffusion 3.5,建议先从官方渠道获取模型权重、配置文件和依赖清单,下载后按权重、配置、输出分离存放;通过环境变量或启动脚本固定模型路径,启动前校验文件存在性与权限;最后用日志中的加载提示和页面请求确认服务可用。边界:硬件和分支差异会导致参数需要结合环境调整。
先明确 Stable Diffusion 3.5 部署需要哪些文件
Stable Diffusion 3.5 的本地部署不是一个单独的可执行文件,而是由模型权重、配置文件、运行依赖和推理脚本组成的完整组件。缺少其中任何一块,启动时都可能出现“找不到模型”或“模型加载失败”。
部署前需要准备的文件,大致可以分成几类:
- 模型权重文件:核心内容,通常是一个或多个 safetensors 或 bin 文件,保存了扩散模型的网络参数。没有这些权重,服务无法生成图片。
- 配置文件:描述模型结构、采样器参数、tokenizer 设置或默认推理参数。一般以 YAML、JSON 或 TOML 格式存在,与权重文件配套。
- 依赖环境:包括 Python 版本、PyTorch、diffusers 等库以及对应的依赖清单。私有化部署需要手动安装这些依赖,不能依赖在线拉取。
- 可选组件:例如单独的 VAE 文件、文本编码器或 tokenizer 文件,如果权重包内已经包含,则不需要单独准备。
下载模型时,建议通过官方渠道获取,并核对文件哈希值。这一步可以避免下载到损坏或篡改的权重,也方便后续定位路径问题。
按用途划分模型目录:权重、配置、输出分开
很多临时部署把权重、配置、输出堆在一个目录里,导致后续升级或排查时难以区分。推荐按用途拆分成独立目录,至少把权重、配置、输出分开。
以下是一个可复用的目录结构示例:
/opt/sd3.5/
├── models/
│ ├── weights/ # 存放模型权重文件,如 *.safetensors
│ ├── config/ # 存放模型配置文件,如 *.yaml / *.json
│ └── tokenizer/ # 如有单独的 tokenizer 或文本编码器,放在这里
├── output/ # 生成的图片输出目录
├── logs/ # 服务运行日志
└── scripts/ # 启动脚本和校验脚本
路径配置时,建议使用绝对路径,避免启动目录不同导致找不到文件。例如在启动脚本中设置:
export SD_MODEL_DIR=/opt/sd3.5/models/weights
export SD_CONFIG_DIR=/opt/sd3.5/models/config
export SD_OUTPUT_DIR=/opt/sd3.5/output
如果使用 diffusers 或自定义推理脚本,通常会在配置文件里写入模型路径。要让环境变量和配置文件统一,最好在启动脚本里从环境变量读取,再传入配置文件。
启动前的环境变量与路径校验
启动时最常见的错误是路径写错或目录权限不足。因此,在真正启动服务前,需要先检查当前生效的模型路径是否真实存在且可读。
环境变量的写法示例:
export SD_MODEL_DIR=/opt/sd3.5/models/weights
export SD_CONFIG_DIR=/opt/sd3.5/models/config
若使用配置文件管理路径,可以写成:
model_path: /opt/sd3.5/models/weights/model.safetensors
config_path: /opt/sd3.5/models/config/model.yaml
检查当前生效路径,可以在启动前用以下命令查看:
echo $SD_MODEL_DIR
python -c "import os; print(os.environ.get('SD_MODEL_DIR'))"
确认目录存在且文件完整:
test -d "$SD_MODEL_DIR" && ls -l "$SD_MODEL_DIR"
test -f "$SD_CONFIG_DIR/model.yaml" && echo "config exists"
如果输出为空或路径不对,先修正环境变量或配置文件,再启动服务。还要确认运行用户对模型目录有读取权限,对输出目录有写入权限。
用日志和页面请求确认部署结果
服务启动成功后,日志中会出现关键状态信息。不同实现的具体文字有差异,但通常会包含以下信息:
- 模型加载完成的提示,例如“Model loaded from ...”并给出实际加载路径。
- 监听地址和端口,例如“Uvicorn running on http://0.0.0.0:7860”。
- 启动完成提示,例如“Application startup complete”。
确认日志中出现了模型路径,且路径与预期一致,说明模型文件已被正确找到。
页面访问验证:在浏览器打开本机服务地址,例如 http://localhost:7860。如果能看到 Web UI 界面且不报错,说明基础服务正常。如果页面显示模型加载失败,则按日志中的路径去检查文件。
接口请求验证:可以用 curl 发送一个最简单的生成请求,确认推理链路可用。通用请求骨架:
curl -s http://localhost:7860/sdapi/v1/txt2img \
-H "Content-Type: application/json" \
-d '{"prompt": "test"}'
返回结果应包含生成的图片数据,或至少返回 HTTP 200 状态码。如果返回 404 或路径错误,说明服务端口或 API 路径配置不匹配,需要结合具体实现调整。