Diffusers框架使用Civitai上的checkpoit和lora模型

发布时间 2023-06-20 16:02:04作者: zhyemmmm

1、实验室有一台带显卡的机器,能访问huggingface但访问不了Civitai,而Civitai上的模型多是webui训练来的也不能直接用到diffusers框架上,于是需要利用Colab把Civitai上的模型转化成diffusers可用再上传到huggingface上,再下载到本地。

2、google colab上新建一个笔记本,再选 修改==》笔记本设置==》硬件加速器把GPU选上,然后点连接

3、安装diffusers环境,复制以下代码在colab后点击运行单元格

!pip install --upgrade diffusers[torch]
!pip install transformers
!pip install omegaconf
!pip install safetensors
!git clone https://github.com/huggingface/diffusers

4、在Civitai上找到想要的模型(checkpoit或者lora),注意看Base Model是不是SD模型,然后对着下载按钮右键==》复制链接地址

 5、在colab上下载Civitai模型,替换下复制的下载链接

!wget -O test_model.safetensors $(curl https://civitai.com/api/download/models/94081)

然后可以看到下载好的模型

 6、在diffusesrs可以看到一些转化的脚本,本次仅用到转化checkpoit和lora的脚本,视Civitai的模型类型而定,如果是lora模型的话需要指定一个基本模型,一般都是sd1.5

#checkpoit
!python ./diffusers/scripts/convert_original_stable_diffusion_to_diffusers.py --checkpoint_path ./test_model.safetensors  --dump_path ./test_model --from_safetensors
#lora
!python ./diffusers/scripts/convert_lora_safetensor_to_diffusers.py --base_model_path runwayml/stable-diffusion-v1-5 --checkpoint_path  ./test_model.safetensors --dump_path ./test_model

7、转化完成

 8、测试

from diffusers import StableDiffusionPipeline
import torch

model_id = "./test_model"
pipe = StableDiffusionPipeline.from_pretrained(model_id,torch_dtype=torch.float16,safety_checker= None)
pipe = pipe.to("cuda")

prompt = "1girl"
negative_prompt = ""
image = pipe(prompt,negative_prompt=negative_prompt).images[0]
image

9、上传到huggingface,先在huggingface上创建一个空模型,然后再复制huggingface的Access Token(头像==》Setting==》Access Token),在colab上登录需要

from huggingface_hub import login
login()

10、把模型上传到刚创建的huggingface仓库,注意对应repo_id

from huggingface_hub import HfApi
api = HfApi()

api.upload_folder(
    folder_path="./test_model",
    repo_id="zhyemmmm/test_model",
    repo_type="model",
)

11、等待上传完成,就可以在huggingface上看到了,再修改一下README.md,就可以把8的model_id改成10的repo_id测试了

12、最后用git-lfs下载到实验机器就可以本地调用civitai上的模型了