stable-diffusion-webui 加载模型文件

背景

stable-diffusion-webui 安装完毕后,默认的模型生成的效果图并不理想,可以根据具体需求加载指定的模型文件。国内 modelscope 下载速度较快,以该站为例进行介绍
在这里插入图片描述

操作步骤

  1. 找到指定的模型文件
    https://modelscope.cn/models 中查找文本生成图片标签的模型,根据自己喜好点进模型详情页,初次使用,我们可以挑选一些模型文件较小的文件用于测试
    在这里插入图片描述
  2. 找到模型文件的下载地址
    找到模型文件列表中的.safetensors文件,例如:flux1-dev.safetensors,右键单击下载按钮,复制链接地址。
  3. 下载该模型文件
    进入服务器路径/stable-diffusion-webui-docker/data/models/Stable-diffusion下,wget https://modelscope.cn/models/black-forest-labs/FLUX.1-dev/resolve/master/flux1-dev.safetensors 即可
  4. 重启 stable-diffusion-webui
    在左上角的模型下拉列表框中选中切换即可

下载 Lora 模型

modelscope 上模型标签有 LoRA 的都是支持 Lora 的模型,进入模型详情页,通过上一节的方法找到 Lora 模型的下载链接,进入服务器路径/stable-diffusion-webui-docker/data/models/Lora下,wget 下载即可。webui页面上,单击 Lora 页签,单击刷新
在这里插入图片描述
使用时,单击模型即可
在这里插入图片描述

运行时报错

Expected all tensors to be on the same device, but found at least two devices

auto-1  |       File "/stable-diffusion-webui/modules/sd_hijack.py", line 348, in forward
auto-1  |         inputs_embeds = self.wrapped(input_ids)
auto-1  |       File "/opt/conda/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1532, in _wrapped_call_impl
auto-1  |         return self._call_impl(*args, **kwargs)
auto-1  |       File "/opt/conda/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1541, in _call_impl
auto-1  |         return forward_call(*args, **kwargs)
auto-1  |       File "/opt/conda/lib/python3.10/site-packages/torch/nn/modules/sparse.py", line 163, in forward
auto-1  |         return F.embedding(
auto-1  |       File "/opt/conda/lib/python3.10/site-packages/torch/nn/functional.py", line 2264, in embedding
auto-1  |         return torch.embedding(weight, input, padding_idx, scale_grad_by_freq, sparse)
auto-1  |     RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:0! (when checking argument for argument index in method wrapper_CUDA__index_select)

参考 https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/16263 解决,我的解决方案是修改 /stable-diffusion-webui-docker/docker-compose.yml,指定 --device-id=0,如下:

services:
  download:
    build: ./services/download/
    profiles: ["download"]
    volumes:
      - *v1

  auto: &automatic
    <<: *base_service
    profiles: ["auto"]
    build: ./services/AUTOMATIC1111
    image: sd-auto:78
    environment:
      - CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api --device-id 0

safetensors_rust.SafetensorError: Error while deserializing header: MetadataIncompleteBuffer

auto-1  |   warnings.warn(
auto-1  | creating model quickly: SafetensorError
auto-1  | Traceback (most recent call last):
auto-1  |   File "/opt/conda/lib/python3.10/threading.py", line 973, in _bootstrap
auto-1  |     self._bootstrap_inner()
auto-1  |   File "/opt/conda/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
auto-1  |     self.run()
auto-1  |   File "/opt/conda/lib/python3.10/threading.py", line 953, in run
auto-1  |     self._target(*self._args, **self._kwargs)
auto-1  |   File "/stable-diffusion-webui/modules/initialize.py", line 149, in load_model
auto-1  |     shared.sd_model  # noqa: B018
auto-1  |   File "/stable-diffusion-webui/modules/shared_items.py", line 175, in sd_model
auto-1  |     return modules.sd_models.model_data.get_sd_model()
auto-1  |   File "/stable-diffusion-webui/modules/sd_models.py", line 620, in get_sd_model
auto-1  |     load_model()
auto-1  |   File "/stable-diffusion-webui/modules/sd_models.py", line 723, in load_model
auto-1  |     sd_model = instantiate_from_config(sd_config.model)
auto-1  |   File "/stable-diffusion-webui/repositories/stable-diffusion-stability-ai/ldm/util.py", line 89, in instantiate_from_config
auto-1  |     return get_obj_from_str(config["target"])(**config.get("params", dict()))
auto-1  |   File "/stable-diffusion-webui/repositories/stable-diffusion-stability-ai/ldm/models/diffusion/ddpm.py", line 563, in __init__
auto-1  |     self.instantiate_cond_stage(cond_stage_config)
auto-1  |   File "/stable-diffusion-webui/repositories/stable-diffusion-stability-ai/ldm/models/diffusion/ddpm.py", line 630, in instantiate_cond_stage
auto-1  |     model = instantiate_from_config(config)
auto-1  |   File "/stable-diffusion-webui/repositories/stable-diffusion-stability-ai/ldm/util.py", line 89, in instantiate_from_config
auto-1  |     return get_obj_from_str(config["target"])(**config.get("params", dict()))
auto-1  |   File "/stable-diffusion-webui/repositories/stable-diffusion-stability-ai/ldm/modules/encoders/modules.py", line 104, in __init__
auto-1  |     self.transformer = CLIPTextModel.from_pretrained(version)
auto-1  |   File "/opt/conda/lib/python3.10/site-packages/transformers/modeling_utils.py", line 2604, in from_pretrained
auto-1  |     state_dict = load_state_dict(resolved_archive_file)
auto-1  |   File "/opt/conda/lib/python3.10/site-packages/transformers/modeling_utils.py", line 450, in load_state_dict
auto-1  |     with safe_open(checkpoint_file, framework="pt") as f:
auto-1  | safetensors_rust.SafetensorError: Error while deserializing header: MetadataIncompleteBuffer

参考
https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/14267
https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/15568
大概有两种原因,要么是 safetensors 模型文件损坏,要么是文件 SHA 值校验不正确,有个暴力优化的办法是,直接删除 /stable-diffusion-webui-docker/data/.cache 隐藏目录,然后重启

### Stable Diffusion WebUI 下载的模型存放路径 在使用 Stable Diffusion WebUI 时,不同类型的模型文件需要存放在特定的目录下以便程序能够正常加载和运行。以下是各类模型的标准存放位置: #### 底模(Base Model) 底模通常指的是基础的稳定扩散模型文件,其标准存放路径为: ```plaintext /root/stable-diffusion-webui/models/Stable-diffusion/ ``` 此路径也适用于 checkpoints 文件[^2]。 #### LoRA 模型 LoRA 是一种轻量级参数调整方法,对应的模型文件应放置于以下路径: ```plaintext /root/stable-diffusion-webui/models/Lora/ ``` 完成文件拷贝后需重启 WebUI 才能生效。 #### ControlNet 插件模型 用于增强图像控制能力的插件模型,其存放路径如下: ```plaintext /root/stable-diffusion-webui/models/ControlNet/ ``` 同样,在更新该目录下的内容之后需要重新启动 WebUI。 #### Embeddings 文件 Embeddings 主要用于自定义词嵌入向量扩展功能,它们应当被保存到这个地址: ```plaintext /root/stable-diffusion-webui/embeddings/ ``` 修改完成后记得刷新服务界面以应用更改。 #### HyperNetworks 超网络结构 如果涉及超网络训练或者部署,则对应的数据集或预训练权重位于此处: ```plaintext /root/stable-diffusion-webui/models/hypernetworks/ ``` 操作结束后依旧建议执行一次完整的重启流程来同步最新状态至前端显示列表里去。 #### VAE 编码器解码器组件 变分自动编码器 (Variational Autoencoder, VAE) 的专属模块可以找到这里: ```plaintext /root/stable-diffusion-webui/models/VAE/ ``` 每当新增加任何有关联性的资源包进来以后都得遵循惯例再次初始化整个应用程序实例从而让改动立即反映出来给用户端可见范围之内。 对于 Python 环境管理方面如果有特殊需求比如指定某些库的确切版本号可以通过卸载当前默认安装好的依赖项再手动指明目标标签来进行替换处理例如针对 Pydantic 这样的第三方开源项目就可以按照下面方式操作[^3]: ```bash pip uninstall pydantic -y && pip install pydantic==1.x.y ``` 以上就是关于 **Stable Diffusion WebUI** 各类重要组成部分的具体安放地点说明以及相关维护技巧分享希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值