[diffusers]仅读取unet | 模型格式转化diffusion_pytorch_model.safetensors转为diffusion_pytorch_model.bin

问题描述

SError: Error no file named config.json found in directory /share/huanggao/zjc/code_mid/model_yw/bk-base-2m/unet.

无法读取unet

下载模型

我们从网上下载的模型

通过
pipe = StableDiffusionPipeline.from_pretrained("nota-ai/bk-sdm-base-2m", torch_dtype=torch.float16)

指令下载的unet是

diffusion_pytorch_model.safetensors格式的

我从网上直接下载的模型路径
/root/.cache/huggingface/hub/models--nota-ai--bk-sdm-base-2m/snapshots/e8b5597155c5b2c77585570b99113f1c77b97338/unet

转移到
/share/huanggao/zjc/code_mid/model_yw/bk-base-2m/unet

文件格式

config.json

diffusion_pytorch_model.safetensors
(这种方法无法直接用
config.json文件会显示找不到)

smallsd路径
~/.cache/huggingface/hub/models--OFA-Sys--small-stable-diffusion-v0/snapshots/38e10e5e71e8fbf717a47a81e7543cd01c1a8140/unet

格式是(diffusers格式)

文件格式

config.json

diffusion_pytorch_model.bin

转化策略(不应该转化)

转化文件路径

python ./scripts/convert_original_stable_diffusion_to_diffusers.py

转化文件
convert_original_stable_diffusion_to_diffusers.py

转化方法

python ./scripts/convert_original_stable_diffusion_to_diffusers.py

--checkpoint_path xxx.safetensors

--dump_path save_dir

--from_safetensors

python ./convert_original_stable_diffusion_to_diffusers.py --checkpoint_path /root/.cache/huggingface/hub/models--nota-ai--bk-sdm-base-2m/snapshots/e8b5597155c5b2c77585570b99113f1c77b97338/unet/diffusion_pytorch_model.safetensors --dump_path /share/huanggao/zjc/code_mid --from_safetensors

转化过程会报错

KeyError: 'time_embed.0.weight'

报错截图

解决办法

1 如果使用整个模型,如下指令

pipe = StableDiffusionPipeline.from_pretrained("nota-ai/bk-sdm-base-2m", torch_dtype=torch.float16)

复制代码
pipe = StableDiffusionPipeline.from_pretrained("nota-ai/bk-sdm-base-2m",  torch_dtype=torch.float16)

2 如果只用其中的Unet

unet_smallsd = NewUNet.from_pretrained(
args.smallsd_model_name_or_path, subfolder="unet", use_safetensors=True, revision=args.non_ema_revision
)

python 复制代码
unet_smallsd = NewUNet.from_pretrained(
        args.smallsd_model_name_or_path, subfolder="unet", use_safetensors=True, revision=args.non_ema_revision
    )  # -> small
    if accelerator.is_main_process:  print("Unet_student already Loaded! >>> ")

其中args.smallsd_model_name_or_path为
export smallsd="nota-ai/bk-sdm-base-2m"

我的理解

当采用了,这个指令来读取模型
unet_smallsd = NewUNet.from_pretrained(
args.smallsd_model_name_or_path, subfolder="unet", use_safetensors=True, revision=args.non_ema_revision
文件会保存到下面路径

~/.cache/huggingface/hub/models--nota-ai--bk-sdm-base-2m/snapshots/e8b5597155c5b2c77585570b99113f1c77b97338

models--nota-ai--bk-sdm-base-2m/
就等同于路径"nota-ai/bk-sdm-base-2m"

相关推荐
IT_陈寒几秒前
为什么我的Vue组件总是莫名其妙更新?
前端·人工智能·后端
aneasystone本尊1 分钟前
学习大模型训练的数据:从互联网到高质量语料
人工智能
鱼宵7 分钟前
LangChain4j RAG 流水线:手写问答全流程,给 AI 开卷考试
大数据·人工智能·机器学习·langchain4j
HIT_Weston8 分钟前
247、【AI】【模型部署】基座模型研究:RoPE 用在前向还是反向——训练、推理与 KV cache
人工智能
m4Rk_11 分钟前
【论文阅读】Agent 记忆机制(97):MCMA——让 Agent 学会如何抽象记忆,实现跨任务经验迁移
论文阅读·人工智能·学习·开源·github
晓德13 分钟前
7、LLM 模型是怎么训练生成的?(4)指令微调
人工智能·学习·算法·信息安全
蝶依斓(湖南)全案整装15 分钟前
整装企业环保健康交付内容写作方法:空气健康、环保材料与检测标准的非空泛表达
大数据·人工智能
丨白色风车丨17 分钟前
Python中JSON与字典/列表的相互转换详解
windows·python·json
梦想不只是梦与想18 分钟前
SQLAlchemy:查询与操作 (三)
数据库·python·sqlalchemy
问天_观心19 分钟前
Mistral-7B QLoRA 实战(二):官方权重转换、4-bit NF4 加载与 Base Model 基线测试
人工智能·深度学习·学习·大模型·transformer