跳转至

DreamBooth

简介

DreamBooth 是一种定制个性化的 TextToImage 扩散模型的方法。仅需少量训练数据就可以获得极佳的效果。

Dreambooth 基于 Imagen 研发,使用时只需将模型导出为 ckpt,然后就可以被加载到各种 UI 中。

然而,Imagen 的模型和预训练的权重都不可用。所以最初的 Dreambooth 并不适用于稳定扩散。但后面 diffusers 实现了 Dreambooth 这一功能,并且完全适配了 Stable Diffusion。

Diffusers 提供跨多种模态(例如视觉和音频)的预训练扩散模型,作为扩散模型推理和训练的模块化工具箱提供支持。

本节使用的是 Shivam Shirao 的 diffusers 分支版本讲解参数,配置衍生自 ShivamShrirao/diffusers

推荐使用 CCRcmcpe 的针对 Stable Diffusion 的 优化分支, 可以使用 Yaml 文件。

DreamBooth_files

by https://dreambooth.github.io/

选择

Windows 系统的显存至少需要 16GB, Linux 系统要求显存至少为 8GB。

Colab 笔记本来自 社区置顶

准备

AutoDl

如果你选择使用 AutoDl 的镜像,需要把 dreambooth-for- diffusion 文件夹移到 autodl-tmp(数据盘)中,且确保运行路径 (# 前面的那一串)为 dreambooth-for-diffusion,具体操作细节在 知乎教程 中有图文说明。

模型转换

在各个笔记本或镜像中都会有以下类型命令,作用是将 ckpt 模型转换为 diffusers 权重格式来训练。

  • 训练前示例
    python diffusers\scripts\convert_original_stable_diffusion_to_diffusers.py  --checkpoint_path model.ckpt  --original_config_file v1-inference.yaml  --scheduler_type ddim  --dump_path models/diffusers_model
  • 训练后示例

训练完成后,打包转换为 ckpt 即可用于各种 UI 中。

    python diffusers\scripts\convert_diffusers_to_original_stable_diffusion.py  --model_path models/resultModel  --checkpoint_path result.ckpt  --half

数据集

数据集的创建是在 Dreambooth 训练 中获得良好、稳定结果的最重要部分。3

class 和 instance 的质量决定生成的质量。

  • 内容要求

一定要使用高质量的样本,运动模糊或低分辨率等内容会被训练到模型里,影响作品质量。

当为一个特定的风格进行训练时,挑选具有良好一致性的样本。理想情况下,只挑选你要训练的艺术家的图像。避免粉丝艺术或任何具有不同风格的东西,除非你的目标是像风格融合。

对于主题,黑色或白色背景的样本有极大的帮助。

透明的背景也可以,但有时会在主体周围留下白色轮廓,所以目前我不建议使用透明背景。

如果需要使你的 Dreambooth 模型更加多样化,尽量使用不同的环境、灯光、发型、表情、姿势、角度和与主体的距离。

请确保包括有正常背景的图片(例如,对象在一个场景中的图片)。只使用带简单背景的图片,效果会比较差。

避免在你的渲染图中出现手粘在头上的情况,请删除所有手太靠近或接触头部的图片。

如果需要避免渲染图中出现鱼眼镜头效果,可以删除所有自拍图片。

为了避免不自然的过度模糊,确保图像不包含假的重景深或虚化。

  • 调节

一旦你收集了数据集的照片,将所有图片裁剪并调整为 512x512 的正方形(你可以利用 BIRME 在线工具批量裁剪),并删除任何水印、商标、被图片边缘切断的人/肢体,或其他你不希望被训练的内容。以 PNG 格式保存图像,并将所有图像放在 train 文件夹中。

Augmentation

处理图片的方式有许多,常见的有反转,旋转,亮度和裁切。将图片打碎或者对背景/大头等单独裁切,也许有助于提高训练效果。

相关实例请参考 Diffusers ベースの DreamBooth の精度をさらに上げる・ augmentation 編 .

It may be useful to break up the image, or to crop the background/headers etc. separately.

参数

先让我们看一下来自 CCRcmcpe diffusers 版本 的 Yaml 配置文件。

DreamBooth 本身不能训练所谓的画风。而 Native Training 对模型进行微调会带来画风的改变,作为所谓的画风训练方法。

古典思路是:

Native + deepdanbooru->prompt txt - “训练风格”
Dreambooth + class prompt/instance prompt - 训练物体

但还有很多分类,差异如:是否给每张图片配对 Prompt, 是否 启用 prior_preservation loss(PPL), 是否使用 train text encoder (TTL)4

DreamBooth = instance + class with prior preservation loss (其中分给图片单独标签,和使用同一个标签的区别)。

DreamBooth

专业训练特定物体/人物。使用 --with_prior_preservation 来启用 DreamBooth ,只有 DreamBooth 训练会用到 [V] 的概念和 --instance_prompt 相关的参数。

  • Instance Image 你所训练的对象

  • Instance Prompt 默认实现为全局共享一个 prompt, 这对于 few shot 是可能有效的,即 DreamBooth (original paper method)。但当你的训练目标增多之后可以开启 combine_prompt_from_txt 选项,为每个 instance 准备一个 prompt (通常为 txt) 即为 DreamBooth (alternative method). Instance Prompt 之中应该包含一个唯一标识符 [V]. 详细解释见后。4

  • Class/Regularization Image 对应 --class_data_dir,应该为 自动生成 即 auto-generated 的图像,用于检测 AI 的先验知识。不应该放任何非 AI 生成的图像。(如果你确定这么做为什么不去使用 Native Training 呢?)掺杂同风格图在 clas image 已经不再鼓励。每次重新训练不同主题要清空一次。

  • Class Prompt 对应 --class_prompt 参数,由程序自动生成,可以从其他支持 CLIP SKIP 2 的推理前端生成好之后放进 class img 内。程序同样可以从独立的 txt 中读取内容。4

DreamBooth 本身具有十分强烈的 copy and paste 效果,使用 class/regularization 可以适当抑制该效果。4

训练多个物体请读 Multiple Concept 节。

Native Training

Native Training 为原生训练,与 DreamBooth 不同的是,Native Training 会直接使用你的训练集进行训练,不再需要 Class Image.

关闭 prior_preservation 选项以开始以原生方式进行训练,是“训练画风”的推荐方式。

在此训练中没有 Instance/Class Image 之分,所有的图都会被用于训练。但是你需要为每个图准备一个 Instance Prompt, 放在和图片名称一样的文本文件,通常为 txt,例子参考 dataset exp

后续通过启用 --use_txt_as_label 来读取这个与图片同名的 txt 文件作为 label(该选项会无视 instance_prompt 参数传入的内容)。

Native Training 需要 较多 的数据集,但这个量众说纷纭,大约在 [100, 10000] 这个区间,多多益善 (但仍然建议人工挑选)

参数

  • with_prior_preservation

启用 prior_preservation 以开始 DreamBooth 训练,禁用此参数来开启 Native Training。

  • prior_loss_weight

越低则越难过拟合,但是也越难学到东西。43

  • learning_rate

学习率

  • use_txt_as_label

通常在 Native 训练微调模型时使用。读取与图片同名的 txt 文件作为 label。启用该选项会关闭 DreamBooth, 无视 instance_prompt 参数传入的内容而转为从 txt 文件中读取 label。

  • center_crop

脚本自带的裁切图片选项,建议自己裁成正方形的哦。

  • resolution

图片的分辨率(一般为 512),定义此参数会缩放图像。

  • max_train_steps

训练的最大步数,一般是 1000,如果你的数据集比较大,那么可以适当增大该值。

训练步数的选择一般来说是,训练步骤 =(参考图像 x 100)

  • save_model_every_n_steps

每多少步保存一次模型,方便查看中间训练的结果找出最优的模型,也可以用于从检查点恢复上一次的训练结果(colab 笔记本用户注意挂载到云盘中)。

  • lr_scheduler

学习率调节器,可选有 constant, linear, cosine, cosine_with_restarts, cosine_with_hard_restarts

解释 Instance Prompt / Class Prompt

class prompt 会用来生成一类图片,被处理为类似 photo of a person

instance prompt 会被处理为类似 photo of a cute person

训练人物的示例

  • Instance prompt: masterpiece, best quality, sks 1girl, aqua eyes, aqua hair
  • Class prompt: masterpiece, best quality, 1girl, aqua eyes, aqua hair

训练风格的示例

  • Instance prompt: 1girl, by sks
  • Class prompt: 1girl

关于 [V]

训练集类型 Instance prompt 必须包含的 Class prompt 应该描述的
物体/人 [V] 物体的类型和/或特征 characteristics
艺术家风格 by [V] 训练集的共同特点

[V] 只用在 Instance prompt 中,是 CLIP 词汇表中的标记,对模型没有意义。这是由你自己设定的短语,类比方程未知量 x,不是一个叫 [V] 的确切值。

假设你想训练的人物叫做 [N](比如 balabalabala 先生) , 你不应该直接使用 [N](balabalabala 先生) 作为代表特征词。4

推荐使用在 该词汇表 中存在但是没有对应概念或者说对应概念不明显的词 [V](比如 bala)。

非常长的名称很可能被分离为多个标记,会得不到预期效果。标记的分离情况具体可在 NovelAI Tokenizer 验证。

最后代表 [V] 的提示将携带模型学到的新东西,你就可以在生成时使用你设定的 [V] 了。

注:原论文中使用的示例词 sks 和现实中的枪械 SKS 相同,属于不适合被使用的词汇。但是如果你的训练程度足够高的话说不定可以覆写其影响。

TIPS:不要使用默认的 by sks(sks 这个艺术家), 融合模型的时候会发生灾难。

解释 Subject images / Class images

介绍来自 2

Subject images (或者你在笔记本上看到的实例图像)是你想要训练的图像,所以如果你想要自己的外观的模型,你可以取 20 到 40 张自己的图像并输入这些图像。实例名是一个唯一的标识符,它将在提示符中表示受训对象,个人使用 “namelastname”,大多数笔记本使用“sks”,但最好更改它。

你实际上是在告诉 AI 把你介绍到数据库中,为了做到这一点,你选择一个类别,即最适合你所训练的类别,对于人们来说,通常使用 "person", "man"/"woman" 等。

在训练中使用 Class images 是为了 防止物体的特征 “渗透” 到同一 Class 的其他物体中。如果没有 Class images 作为参考点,AI 会将你的脸与 Class 中出现的其他脸合并。你的脸会渗透进模型生成的其他脸中。

DreamBooth 可以在没有 Class images 的情况下开始训练,只需要禁用 --with_prior_preservation 来开启 Native Training.

Native Training

Native Training 为原生训练,与 DreamBooth 不同的是,Native Training 会直接使用你的训练集进行训练,不再需要 Class Image.

关闭 prior_preservation 选项(也就是 --with_prior_preservation 参数)以开始以原生方式进行训练,是训练画风的推荐方式。

在此训练中没有 Instance/Class Image 之分,所有的图像都会被用于训练。但是你需要为每个图准备一个 Instance Prompt, 就像传统的 hypernetwork 一样同文件名称,通常为 txt.

关于这个 Txt

对于数据集中的每张图片([X].png/[X].jpg),再放一个包含相应提示的 [X].txt。然后设置 READ_PROMPT_FROM_TXT--use_txt_as_label )。Both train set and class set supports this.

从 txt [PX] 中读取的提示将被插入到你在训练参数中设置的提示 [P] 中。默认情况下,它的插入方式是 [PX][P]。

在启用 Variable Prompts 和禁用先前保存损失 (PRIOR_PRESERVATION) 的情况下,训练过程实际上等同于标准微调。

Native Training 需要较多的数据集,但这个量众说纷纭,大约在 [100, 10000] 这个区间,多多益善。(建议人工挑选)

标注方法

你可以手动标注或使用 clip 或 deepdanbooru 进行自动标注。

推荐使用 crosstyan/blip_helper 去给你的图像打标。或者使用 DeepDanbooruBLIP

如果你使用 AutoDl 的镜像,你可以使用内置的 label_images.py 进行标注。

从检查点恢复训练

参数的 MODEL_NAME 改成上一次模型的位置。

如果你用到 CLASS_DIR ,因为主题相同,所以不必清空,反之则清空。

Train Text Encoder

对应实例中的 --train_text_encoder,不推荐使用。使用 --train_text_encoder 后,Dreambooth 训练会额外训练文本编码器,会让不同模型之间的 prompt 无法通用。

有玄学说法是在达到训练的某个百分比/epoch/step 之后应该关闭以防止过度玩坏。

  • 一开始写的 instance prompt 要长一些,概括你的训练目标 (但是又不要太长,不要覆盖你常用的词) (像是 girl 我会换成 woman, 1boy 换成 male)
  • text prompt 词数太多了影响分散,效果不明显。
  • instance prompt 不能只填一个 [V](比如 balabala,应该是 a photo of balabala) ,否则那个词也废掉了。
  • 尝试提高学习率

炼出来调用的话看情况加你训练的 instance prompt 的词,看你想要多少味道。

或许训练人物的时候也是效果拔群。

Multiple Concept

对应实例中的 --concept_list 参数,用 DreamBooth 是可以训练多个概念/人物/动作/物体的。但是若训练两个人物则推理时不能使其同时出现,两者的特征会被混合起来。

如果用其他版本的 DreamBooth 训练方法检查 --concept_list 参数,可以读入一个类似的 json 文件。

  • concepts_list.json
# You can also add multiple concepts here. Try tweaking `--max_train_steps` accordingly.

concepts_list = [
    {
        "instance_prompt":      "photo of zwx dog",
        "class_prompt":         "photo of a dog",
        "instance_data_dir":    "/content/data/zwx",
        "class_data_dir":       "/content/data/dog"
    },
#     {
#         "instance_prompt":      "photo of ukj person",
#         "class_prompt":         "photo of a person",
#         "instance_data_dir":    "/content/data/ukj",
#         "class_data_dir":       "/content/data/person"
#     }
]

# `class_data_dir` contains regularization images

Aspect Ratio Bucketing

对应上面参数中的 --use_aspect_ratio_bucket。需要在 Colab 中使用的话,aspect_ratio_bucket 调成 enable: true

Aspect Ratio Bucketing 简称 ARB, 原版训练均只能使用 1:1 的图像,开启 ARB 使得训练非 1:1 的图像成为可能,但并非任意比例尺的图像,不在 bucket 内的图像将会被裁切。

[[ 256 1024], [ 320 1024], [ 384 1024], [ 384  960], [ 384  896], [ 448  832], [ 512  768], [ 512  704], [ 512  512], [ 576  640], [ 640  576], [ 704  512], [ 768  512], [ 832  448], [ 896  384], [ 960  384], [1024  384], [1024  320], [1024  256]]

ARB 与 DreamBooth 一起使用的兼容性不好,仅推荐 Native Training 时使用。

更多内容请查阅 使用 Dreambooth 训练稳定扩散的实验的分析

训练

按照笔记本步骤或说明训练即可,Colab 用户注意挂载磁盘防止断线。

训练完毕要将 diffusers 权重转换为 ckpt 文件才能使用哦!利用类似 diffusers2ckpt.py 的文件即可。

有些脚本提供 --half 参数用来保存 float16 半精度模型,权重文件大小会减半(约 2g),但效果基本一致。

WebUi 用户将训练出的 .ckpt 文件复制到 webui 的 models\Stable-diffusion 目录里,在 webui 的左上角切换模型即可使用。

使用时在 prompt 里输入你之前指定的标志符(例如 ) 来让 ai 在生成图像中加入你期待的东西。

过拟合后,CFG 影响很大,可以试试降低 CFG.

模型的效果要看测试图。

在 Windows 上使用

这里的内容适用于想在 Windows 系统上进行训练的同学。

来自 [^18]

Windows 上的 Dreambooth 可以采用 ShivamShrirao 的优化版本来节省显存,diffusers/examples/dreambooth by ShivamShrirao.

由于相关链接库的原因,用于在 Linux 上的部署方法无法直接在 windows 上使用,由于同样的原因,该优化版本在 colab 上最低 9.9G 的显存需求在 windows 上应该稍高,因此推荐 至少使用显存 12G 的显卡。

编纂者仅在 16G 显存的机器上测试成功,12G 显存的机器理论可行。

Tip

修改或覆盖原始库中的文件时,请备份。

准备环境 GitPythonMiniConda (或 MiniConda )。

以下步骤在 python3.8,windows10 22H2 中操作,其他环境未测试

创建工作目录 ,在目录下构建 python3.8 的 venv 虚拟环境

    python -m venv --system-site-packages venv_dbwin
    venv_dbwin\Scripts\activate
    python.exe -m pip install --upgrade pip

克隆 ShivamShrirao 的优化版本 dreambooth 到工作目录中并安装相关依赖(使用的 构建版本, 后续版本可能无法支持本文方法)

git clone https://github.com/ShivamShrirao/diffusers
cd diffusers
pip install -e .
cd examples\dreambooth
pip install -U -r requirements.txt
pip install OmegaConf
pip install pytorch_lightning
pip install einops
pip install bitsandbytes==0.34

完成后,在 windows 上需要根据 这个 Issue 中的方法实现 bitsandbytes 支持

这个仓库 中的 libbitsandbytes_cuda116.dll 文件手动拷贝到工作目录下的 venv_diffusers\Lib\site-packages\bitsandbytes 中,位于 libbitsandbytes_cuda116.so 的旁边;

然后更改脚本以应用,可以手动修改,为方便也可以下载以下文件替换:

cextension.py - https://pastebin.com/jjgxuh8V 覆盖到 venv_diffusers\Lib\site-packages\bitsandbytes 目录。

main.py - https://pastebin.com/BsEzpdpw 覆盖到 venv_diffusers\Lib\site-packages\bitsandbytes\cuda_setup 目录。

安装 PyTorch 和 Torchvision

pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116

进入 Python 并测试调用

    python
    >>>import bitsandbytes

如果没有报错证明安装成功( Ctrl + Z 并回车退出 python)。

临时指南

设置 accelerate

    accelerate config

    In which compute environment are you running? ([0] This machine, [1] AWS (Amazon SageMaker)): 0
    Which type of machine are you using? ([0] No distributed training, [1] multi-CPU, [2] multi-GPU, [3] TPU [4] MPS): 0
    Do you want to run your training on CPU only (even if a GPU is available)? [yes/NO]:NO
    Do you want to use DeepSpeed? [yes/NO]:NO
    Do you wish to use FP16 or BF16 (mixed precision)? [NO/fp16/bf16]: fp16

按照上面的设置选项,也就是(0,0,NO,NO,fp16)。

修改显存优化

因为无法使用 xformers ,所以使用 此文件 中的优化方法作为代替。

将 attention.py - https://pastebin.com/nmwTrGB9 覆盖到 diffusers\src\diffusers\models 目录。

至此环境配置完成,可以开始训练了。具体使用参数请查阅 ShivamShrirao 的 readme 文件和 notebook 文件。

Info

我使用以下参数训练。

        accelerate launch --num_cpu_threads_per_process 8 diffusers/examples/dreambooth/train_dreambooth.py --pretrained_model_name_or_path=models/diffusers_model --pretrained_vae_name_or_path=models/diffusers_model/vae --output_dir=models --concepts_list="concepts_list.json" --with_prior_preservation --prior_loss_weight=1.0 --seed=1337 --resolution=512 --mixed_precision="fp16" --lr_scheduler="constant" --use_8bit_adam --gradient_accumulation_steps=1 --train_batch_size=1 --max_train_steps=800 --save_interval=10000 --learning_rate=1e-6 --num_class_images=100 --lr_warmup_steps=0 --gradient_checkpointing

image

峰值显存占用正好为 12G,如果您只有一个显卡,显存不高于 12G,而且同时需要用于 Windows 系统显示,请关闭所有占用显存的程序或网页等,减少额外显存消耗再进行训练。

diffusers 不能直接使用 ckpt 文件进行训练,需要先进行转换,示例如下。

    python diffusers\scripts\convert_original_stable_diffusion_to_diffusers.py  --checkpoint_path model.ckpt  --original_config_file v1-inference.yaml  --scheduler_type ddim  --dump_path models/diffusers_model

训练完成同样要进行打包转换为 ckpt, 即可用于 AUTOMATIC1111 的 WebUI 中。

    python diffusers\scripts\convert_diffusers_to_original_stable_diffusion.py  --model_path models/resultModel  --checkpoint_path result.ckpt  --half

这是一个临时的解决方案,期待 Windows 官方适配的到来。

其他 ...

fast-stable-diffusion colabs

DreamBooth_Stable_Diffusion

fast-DreamBooth

Dreambooth Gui

DreamBooth 参数表

usage: argmark [-h] --pretrained_model_name_or_path
               PRETRAINED_MODEL_NAME_OR_PATH [--revision REVISION]
               [--tokenizer_name TOKENIZER_NAME] --instance_data_dir
               INSTANCE_DATA_DIR [--class_data_dir CLASS_DATA_DIR]
               [--instance_prompt INSTANCE_PROMPT]
               [--class_prompt CLASS_PROMPT]
               [--with_prior_preservation]
               [--prior_loss_weight PRIOR_LOSS_WEIGHT]
               [--num_class_images NUM_CLASS_IMAGES]
               [--output_dir OUTPUT_DIR] [--seed SEED]
               [--resolution RESOLUTION] [--center_crop]
               [--use_filename_as_label] [--use_txt_as_label]
               [--train_text_encoder]
               [--train_batch_size TRAIN_BATCH_SIZE]
               [--sample_batch_size SAMPLE_BATCH_SIZE]
               [--num_train_epochs NUM_TRAIN_EPOCHS]
               [--max_train_steps MAX_TRAIN_STEPS]
               [--gradient_accumulation_steps GRADIENT_ACCUMULATION_STEPS]
               [--gradient_checkpointing]
               [--learning_rate LEARNING_RATE] [--scale_lr]
               [--lr_scheduler LR_SCHEDULER]
               [--lr_warmup_steps LR_WARMUP_STEPS] [--use_8bit_adam]
               [--adam_beta1 ADAM_BETA1] [--adam_beta2 ADAM_BETA2]
               [--adam_weight_decay ADAM_WEIGHT_DECAY]
               [--adam_epsilon ADAM_EPSILON]
               [--max_grad_norm MAX_GRAD_NORM] [--push_to_hub]
               [--hub_token HUB_TOKEN] [--hub_model_id HUB_MODEL_ID]
               [--logging_dir LOGGING_DIR]
               [--log_with {tensorboard,wandb}]
               [--mixed_precision {no,fp16,bf16}]
               [--local_rank LOCAL_RANK]
               [--save_model_every_n_steps SAVE_MODEL_EVERY_N_STEPS]
               [--auto_test_model] [--test_prompt TEST_PROMPT]
               [--test_prompts_file TEST_PROMPTS_FILE]
               [--test_negative_prompt TEST_NEGATIVE_PROMPT]
               [--test_seed TEST_SEED]
               [--test_num_per_prompt TEST_NUM_PER_PROMPT]

Arguments

英文说明在英文页面。

short long default help
-h --help 显示此帮助信息并退出
--pretrained_model_name_or_path None 预训练模型的路径或来自 huggingface.co/models 的模型标识符。
--revision None 修订来自 huggingface.co/models 的预训练模型标识。
--tokenizer_name None 预训练的标记器名称或路径,如果与 model_name 不相同的话。
--instance_data_dir None 一个包含实例图像训练数据的文件夹。
--class_data_dir None 一个包含类图像训练数据的文件夹。
--instance_prompt None 带有指定实例的标识符的提示
--class_prompt None 提示指定与提供的实例图像相同类别的图像。
--with_prior_preservation 标记,以增加先前的保存损失。
--prior_loss_weight 1.0 The weight of prior preservation loss.
--num_class_images 100 用于事先保存损失的最小的类图像。如果没有足够的图像,额外的图像将用 class_prompt 进行采样。
--output_dir text-inversion-model 输出目录,模型预测和 checkpoints 将被写入该目录。
--seed None 可重复的培训的种子。
--resolution 512` 输入图像的分辨率,训练/验证数据集中的所有图像将被调整到这个分辨率。
--center_crop 是否在调整图像大小至分辨率前居中裁剪图像?
--use_filename_as_label 使用文件名作为图像标签而不是 instance_prompt,在训练图像差异较大的样式时对正则化很有用
--use_txt_as_label 使用 filename.txt 文件的内容作为图像标签而不是 instance_prompt,在训练图像差异较大的样式时对正则化很有用
--train_text_encoder 是否训练文本编码器
--train_batch_size 4 训练数据加载器的批量大小(每个设备)。
--sample_batch_size 4 采样图像的批量大小(每个设备)。
--num_train_epochs 1 None
--max_train_steps None 要执行的训练步骤总数。 如果提供,则覆盖 num_train_epochs。
--gradient_accumulation_steps 1 执行向后/更新传递之前要累积的更新步数。
--gradient_checkpointing 是否使用梯度检查点来以较慢的反向传递为代价来节省内存。
--learning_rate 5e-06 要使用的初始学习率(在潜在的预热期之后)。
--scale_lr 通过 GPU 数量、梯度累积步长和批量大小来缩放学习率。
--lr_scheduler constant The scheduler type to use. Choose between ["linear", "cosine", "cosine_with_restarts", "polynomial", "constant", "constant_with_warmup"]
--lr_warmup_steps 500 lr 调度程序中预热的步骤数。
--use_8bit_adam 是否使用 bitsandbytes 中的 8 位 Adam。
--adam_beta1 0.9 Adam 优化器的 beta1 参数。
--adam_beta2 0.999 Adam 优化器的 beta2 参数。
--adam_weight_decay 0.01 要使用的权重衰减。
--adam_epsilon 1e-08 Adam 优化器的 Epsilon 值
--max_grad_norm 1.0 最大梯度范数。
--push_to_hub 是否将模型推送到 Hub。
--hub_token None 用于推送到模型中心的令牌。
--hub_model_id None 要与本地 output_dir 保持同步的存储库名称。
--logging_dir logs TensorBoard log directory. Will default to output_dir/runs/ CURRENT_DATETIME_HOSTNAME**.
--log_with tensorboard None
--mixed_precision no 是否使用混合精度。 在 fp16 和 bf16 (bfloat16) 之间选择。 Bf16 需要 PyTorch >= 1.10 和 Nvidia Ampere GPU。
--local_rank -1 对于分布式训练:local_rank
--save_model_every_n_steps None None
--auto_test_model 保存后是否自动测试模型
--test_prompt A photo of a cat 用于测试模型的提示。
--test_prompts_file None 包含用于测试模型的提示的文件。示例:test_prompts.txt,每一行都是一个提示
--test_negative_prompt `` 用于测试模型的否定提示。
--test_seed 42 用于测试模型的种子。
--test_num_per_prompt 1 每个提示生成的图像数量。