Diffusers框架使用Civitai上的checkpoit和lora模型
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上的模型了