微调stable diffusion
一. 代码参考
不在stable diffusion官方仓库中修改,而是到huggingface 中找到微调的文件微调stable diffusion, 在其上面进行修改,
二. 出现的问题:
- huggingface模型下载不下来
一些尝试
- 安装clash 使服务器能够连接外网,依旧不能连接
- 打算从huggingface上下载到本地,手动创建目录太难 使用git lfs,但依旧很麻烦,同时需要注意的是目录下有多个模型 不需要都下载,只需要下载自己想要的就行
- 从镜像网址安装 huggingface 镜像网站,
要看下面的教程
,而不是直接自己搜然后下载到本地上传啥的
具体步骤:
安装依赖:
设置环境变量这句话,写入pip install -u huggingface_hub
~/.bashrc
对于from-pretrained的在命令行里面加上需要的自己的huggingface的token就行export hf_endpoint=https://hf-mirror.com
可以添加huggingface-cli download --token hf_*** --resume-download meta-llama/llama-2-7b-hf --local-dir llama-2-7b-hf
--local-dir-use-symlinks false
参数禁用文件软链接,这样下载路径下所见即所得,要不然下载文件夹里的文件是符号链接,真正的文件在root/.cache/..
中
一些错误
好不容易下载模型下来后。发现有警告一些模型没有参数之后就突然killed
了
原因:不是模型不匹配的原因,而是使用autodl的时候设置无卡模式,没有卡来训练就被killed
了
2. 想要加入配置文件调试
背景:微调stable diffusion的程序一般需要设置很多参数,为了更好地了解程序文件每一步干什么,才能方便修改,所以需要使用配置文件调试,但是不想每一个参数手动写入,就可以vpdb,自动生成调试文件。
安装vpdb库
pip install vpdb
使用vpdb
vpdb python main.py --dataset cifar10 --imgsize 32 --epoch 100000
之后vscode的调试文件就自动生成调试文件了
- 微调stable diffusion unet根本无法更新
self.unet,optimizer, self.train_dataloader, lr_scheduler = accelerator.prepare(
self.unet,optimizer, self.train_dataloader, lr_scheduler
)
胡乱解决:结果把prepare里的unet去掉self
就可以了, 但是会产生一个问题:两个客户端的unet的是共享同一个地址的,不符合联邦学习
找到原因:因为optimizer是关联着unet的而不是self.unet,所以跑才会不更新,感谢同门
三. 一些有用的知识
- .sh 的使用
设置可见的cuda环境 要在前面加export
export cuda_visible_devices=5,6,7,8
运行时最好使用bash test.sh 而不是使用sh 后者容易出现语法错误
- accelerate的config
accelerate config --config_file config.yaml # this will create a config file on your server to `config.yaml`
accelerate launch --config_file config.yaml ./cv_example.py --data_dir path_to_data # this will run the script on your server
注意:要修改accelerate的config不能直接修改该文件,而是要使用第一条命令再配置一次
发表评论