来自社区的 SD-XL Dreambooth LoRA 微调最佳实践攻略

太长不看版

咱们把 Replicate 在 SDXL Cog 练习器中运用的枢轴微调 (Pivotal Tuning) 技能与 Kohya 练习器中运用的 Prodigy 优化器相结合,再加上一堆其他优化,一同对 SDXL 进行 Dreambooth LoRA 微调,取得了非常好的作用。你能够在 diffusers 上找到 咱们运用的练习脚本,或是直接 在 Colab 上 试着运转一下。

假如你想越过技能讲解直接上手,能够运用这个 Hugging Face Space,经过简单的 UI 界面用咱们精选的超参直接开始练习。当然,你也能够测验干涉这些超参的设置。

概述

运用 Dreambooth LoRA 微调后的 Stable Diffusion XL(SDXL) 模型仅需凭借少数图画即可捕获新概念,一起保存了 SDXL 出图漂亮高质的优势。更难得的是,虽然微调成果令人惊艳,其所需的核算和资源耗费却适当低。你可在 此处 找到许多精彩的 SDXL LoRA 模型。

本文咱们将回忆一些盛行的、能够让你的 LoRA 微调更超卓的实践和技能,并展现怎么运用 diffusers 来运转或练习你自己的 LoRA 模型!

拾遗: LoRA (Low Rank Adaptation,低阶适配) 是一种可用于微调 Stable Diffusion 模型的技能,其可用于对关键的图画/提示穿插注意力层进行微调。其作用与全模型微调适当,但速度更快且所需核算量更小。要了解有关 LoRA 工作原理的更多信息,请参阅咱们之前的文章 – 运用 LoRA 进行 Stable Diffusion 的高效参数微调

目录

  1. 技能/技巧
    1. 枢轴微调
    2. 自适应优化器
    3. 引荐做法 – 文本编码器学习率,自定义描绘文本,数据集重复,最小信噪比 Gamma,练习集创立
  2. 试验与成果
  3. 推理
    1. Diffusers 推理
    2. Automatic1111/ComfyUI 推理

致谢 ❤️:

本文展现的各种技能 (包括算法、练习脚本、试验以及各种探索) 是站在许多前人工作的基础上的,包括: Nataniel RuizDreamboothRinon Gal文本逆化 (textual inversion) Ron Mokady枢轴微调Simo Ryucog-sdxlKohyasd-scripts 以及 The Last Benfast-stable-diffusion。在此,咱们向他们和社区表明最诚挚的谢意!

枢轴微调

枢轴微调 技能奇妙地将 文本逆化 与惯例的分散模型微调相结合。以 Dreambooth 为例,进行惯例 Dreambooth 微调时,你需求挑选一个稀有词元作为触发词,例如“一只 sks 狗” 中的 sks 。可是,由于这些词元原本就来自于词表,所以它们通常有自己的原义,这就有或许会影响你的成果。举个比如,社区之前常常运用 sks 作为触发词,但实际上其原义是一个兵器品牌。

为了处理这个问题,咱们刺进一个新词元到模型的文本编码器中,而非重用词表中现有的词元。然后,咱们优化新刺进词元的嵌入向量来表明新概念,这种想法便是文本逆化,即咱们对嵌入空间中的新词元进行学习来到达学习新概念的意图。一旦咱们获得了新词元及其对应的嵌入向量,咱们就能够用这些词元嵌入向量来练习咱们的 Dreambooth LoRA,以获得一举两得的作用。

练习

运用 diffusers 的新练习脚本,你能够经过设置以下参数来进行文本逆化练习。

--train_text_encoder_ti
--train_text_encoder_ti_frac=0.5
--token_abstraction="TOK"
--num_new_tokens_per_abstraction=2
--adam_weight_decay_text_encoder
  • train_text_encoder_ti 敞开文本逆化练习,用于练习新概念的嵌入向量。
  • train_text_encoder_ti_frac 指定何时中止文本逆化 (即中止文本嵌入向量的更新,仅持续更新 UNet)。半途定轴 (即仅在练习前半部分执行文本逆化) 是 cog sdxl 运用的默许设置,咱们目前的试验也验证了其有用性。咱们鼓舞咱们对此参数进行更多试验。
  • token_abstraction 即概念标识符,咱们在提示文本顶用该词描绘咱们期望练习的概念。该标识符词元会用在实例提示、验证提示或图画描绘文本中。这里咱们挑选 TOK 作为概念标识符,如 “TOK 的相片”即为一个含有概念标识符的实例提示。注意,--token_abstraction 只是一个占位符,因而,在练习之前咱们需求用一个新词元来替代 TOK 并对其进行练习 (举个比如,练习时“一张 TOK 的相片”会变成“一张 <s0><s1> 的相片”,其间 <s0><s1> 便是新词元)。同样地,需求保证这里的 token_abstraction 与实例提示、验证提示和自定义提示 (如有) 中的标识符相一致。
  • num_new_tokens_per_abstraction 表明每个 token_abstraction 对应多少个新词元 – 即需求向模型的文本编码器刺进多少个新词元并对其进行练习。默许设置为 2,咱们鼓舞咱们对不同取值进行试验并共享你们的发现!
  • adam_weight_decay_text_encoder 用于为文本编码器设置与 UNet 不同的权重衰减。

自适应优化器

全世界 LoRA 练习脚本,联合起来!

在练习或微调分散模型 (或与此相关的任何机器学习模型) 时,咱们运用优化器来引导模型依循最佳的收敛路径 – 收敛意味着咱们挑选的丢失函数到达了最小值,咱们以为丢失函数到达最小值即阐明模型已习得咱们想要教给它的内容。当时,深度学习使命的标准 (也是最先进的) 优化器当属 Adam 和 AdamW 优化器。

可是,这两个优化器要求用户设置大量的超参 (如学习率、权重衰减等),以此为收敛铺平道路。这或许会导致咱们需求不断试验各种超参,最终常常由于耗时过长而不得不选用次优超参,从而导致次优成果。即使你最终试到了抱负的学习率,但假如学习率在练习期间坚持为常数,依然或许导致收敛问题。一些超参或许需求频繁的更新以加快收敛,而另一些超参的调整又不能太大以防止振动。真正是“摁了葫芦起了瓢”。为了应对这一应战,咱们引入了有自适应学习率的算法,例如 AdafactorProdigy。这些办法依据每个参数过去的梯度来动态调整学习率,借此来优化算法对查找空间的遍历轨道。

咱们的关注点更多在 Prodigy,由于咱们相信它对 Dreambooth LoRA 练习特别有用!

练习

--optimizer="prodigy"

运用 Prodigy 时,缺省学习率能够设置如下:

--learning_rate=1.0

对分散模型特别是其 LoRA 练习有用的设置还有:

--prodigy_safeguard_warmup=True
--prodigy_use_bias_correction=True
--adam_beta1=0.9
# 注意,以下超参的取值与默许值不同:
--adam_beta2=0.99
--adam_weight_decay=0.01

在运用 Prodigy 进行练习时,你还能够对其他超参进行调整 (如: --prodigy_beta3prodigy_de Coupleprodigy_safeguard_warmup ),本文不会对这些参数进行深入研究,你能够移步 此处 以了解更多信息。

其他好做法

除了枢轴微调以及自适应优化器之外,还有一些能够影响 LoRA 模型质量的其他技巧,一切这些技巧都已在最新的 diffusers 练习脚本中了。

独立设置文本编码器和 UNet 的学习率

社区发现,在优化文本编码器时,为其设置专有的学习率 (与 UNet 学习率独立) 所得模型的生成质量会更好 – 特别地,文本编码器需求 较低 的学习率,由于它一般过拟合 更快

  • 在运用枢轴微调时,为 UNet 和文本编码器设置不同的学习率是已被证明了的 – 此刻,为文本编码器设置更高的学习率更好。
  • 但请注意,当运用 Prodigy (或一般的自适应优化器) 时,咱们一开始能够让一切练习参数的初始学习率相同,让优化器自行调理。很神吧✨!

练习

--train_text_encoder
--learning_rate=1e-4 #unet
--text_encoder_lr=5e-5

--train_text_encoder 启用文本编码器全模型练习 (即文本编码器的权重都参加更新,而不是仅仅优化文本逆化新词元的嵌入 ( --train_text_encoder_ti ))。假如你期望文本编码器的学习率始终与 --learning_rate 一致,可设 --text_encoder_lr=None

自定义描绘文本

虽然经过对一组配有相同实例提示的图画进行练习也能够获得良好的成果,如“一张 的人像相片”或 “ 的风格”等。但对多幅图画运用相同的描绘文本有或许会导致次优成果。详细作用取决于许多要素,包括待学习概念的复杂性、模型原本对该概念的“熟悉程度”,以及练习集捕获新概念的作用怎么。

全世界 LoRA 练习脚本,联合起来!

练习

想要运用自定义描绘文本,首要需求安装 datasets 库,如下:

!pip install datasets

要加载自定义图画描绘文本,咱们需求练习集的目录结构遵循 datasets 库的 ImageFolder 结构,其包括图画及每张图画对应的描绘文本。

  • 办法 1:

从 hub 中挑选一个已包括图画及其对应提示的数据集 – 如 LinoyTsaban/3d_icon。现在要做的便是在练习参数中指定数据集的称号及文本列的称号 (在本例中列名为 “prompt”):

--dataset_name=LinoyTsaban/3d_icon
--caption_column=prompt
  • 办法 2:

你还能够运用自己的图画并为其添加描绘文本。此刻,你能够凭借 这个 Colab Notebook 来用 BLIP 自动为图画生成描绘文本,或者你能够在元数据文件中手动创立描绘文本。后面的事情就和办法 1 一样了,将 --dataset_name 设为文件夹路径, --caption_column 设为描绘文本所对应的列名。

最小信噪比 Gamma 加权

练习分散模型通常会遇到收敛缓慢的问题,部分是由于各时刻步之间的优化方向彼此抵触。Hang 等人 经过引入简单的最小信噪比 Gamma 法来缓解此问题。该办法依据钳位信噪比调整每个时刻步的丢失权重,以有用平衡各时刻步之间的抵触。

  • 做小信噪比加权策略在小数据集上作用或许并不显着; 其对较大的数据集作用会更显着。
  • 不同 gamma 值的作用比较: 你可在 这个 wandb 项目页面 上比较不同的 snr_gamma 值 (5.0、1.0 及 None) 下的练习丢失曲线。

全世界 LoRA 练习脚本,联合起来!

练习

如欲运用最小信噪比 Gamma 法,引荐设置如下:

--snr_gamma=5.0

默许情况下 --snr_gamma=None ,即不启用。启用 --snr_gamma 时,建议取值为 5.0。

图画样本重复次数

此参数指的是数据会集的图画在练习会集重复的次数。其与 epoch 的不同之处在于,图画首要被重复,然后才被打乱。

练习

要启用重复,只需将其设为一个大于 1 的整数:

--repeats

默许情况下, --repeats=1 ,即不重复。

练习集创立

  • 俗话说得好 – “废物进,废物出”,虽然仅需少数图画即可轻松练习一个好的 Dreambooth LoRA,但练习图画的质量对微调模型影响很大。

  • 一般来说,在对特定方针或主题进行微调时,咱们期望保证练习会集包括尽或许多样的关于该方针或主题的图画,且这些图画应尽量与后续运用场景相关。

  • 例如,假如想让模型学到有关下面这个赤色背包的知识: (该图来自 google/dreambooth 数据集)

    全世界 LoRA 练习脚本,联合起来!

  • 我觉得后面用户有或许给一个或人背着包的提示,因而练习会集最好有下面这样的样本:

    全世界 LoRA 练习脚本,联合起来!

这样就能在练习时匹配推理时的运用场景,因而模型推理时就更简单外推至该类场景或者设定。

再举个比如 , 在 人脸 数据上进行练习时,在预备数据集时需求特别注意以下几点:

  1. 应尽或许挑选 高分辨率、高画质 的图画。模糊或低分辨率的图画不利于微调成果。

  2. 在练习特定人物的人脸时,建议练习会集不要呈现其他人的脸,由于咱们不想对方针人脸发生模糊的概念。

  3. 特写相片 关于最终发生实在感的作用很重要,可是一起也应该包括好的全身相片,以提高对不同姿态/构图的泛化能力。

  4. 咱们建议 防止归入离拍照主体较远的相片,由于此类图画中的大多数像素与咱们期望优化的概念无关,模型能够从中学习的东西不多。

  5. 防止重复的布景/服装/姿态 —— 在灯光、姿态、布景和面部表情方面力求 多样性。多样性越大,LoRA 就越灵敏、越通用。

  6. 先验保存丢失 先验保存丢失是一种运用模型自己生成的样原本协助其学习怎么生成更多样化的图画的办法。由于这些图画样本与你提供的图画属于同一类,因而它们能够协助模型保存已习得的有关该类的信息,并习得怎么运用已知的该类的信息来形成新的组合。

    用于正则化的实在图画 VS 模型生成的图画 挑选类图画时,你能够在组成图画 (即由分散模型生成) 和实在图画之间进行挑选。支撑运用实在图画的理由是它们提高了微调模型的实在感。另一方面,有些人也会以为运用模型生成的图画能够更好地保存模型习得的 知识 及审美。

  7. 名人相 – 这主要与用于练习的描绘文本或实例提示有关。当运用“令牌标识符 + 基础模型所知道的与待练习使命类似的公众人物”进行提示时,咱们发现一些事例的微调作用得到了改善。

运用先验保存丢失进行 练习:

--with_prior_preservation
--class_data_dir
--num_class_images
--class_prompt

--with_prior_preservation – 启用先验保存练习
--class_data_dir – 包括类图画的文件夹的路径
--num_class_images – 先验保存丢失所需的最小类图画数。假如 --class_data_dir 中没有满足的图画,则用 --class_prompt 采样出更多的图画。

试验与成果

讲了这么多,该挽起袖子试试了。咱们在不同的使命 (风格化、人脸及特定方针) 上测验了上述技能的不同组合。

为了减小超参查找空间,咱们运用一些盛行装备作为起点,并基于此进行调整以达成作用。

Huggy Dreambooth LoRA

首要,咱们想为 Huggy 微调一个 LoRA 模型,这意味着既要教会模型相应的艺术风格,一起还要教会它特定的角色。在这个比如中,咱们制作了一个高质量的 Huggy 吉祥物数据集 (咱们运用的是 Chunte-Lee 的艺术作品),该数据集包括 31 张图画及其对应的描绘文本。

全世界 LoRA 练习脚本,联合起来!

装备:

--train_batch_size = 1, 2,3, 4
-repeats = 1,2
-learning_rate = 1.0 (Prodigy), 1e-4 (AdamW)
-text_encoder_lr = 1.0 (Prodigy), 3e-4, 5e-5 (AdamW)
-snr_gamma = None, 5.0
-max_train_steps = 1000, 1500, 1800
-text_encoder_training = regular finetuning, pivotal tuning (textual inversion)
  • 文本编码器全模型微调 VS 枢轴微调 – 咱们注意到枢轴微调取得了比文本编码器全模型微调更好的成果,且无需微调文本编码器的权重。

  • 最小信噪比 Gamma 加权

    • 咱们比较了关闭 snr_gamma 训得的 版别 1 以及运用 snr_gamma = 5.0 训得的 版别 2

    这两个版别都运用了以下参数 (但版别 2 多了一个 snr_gamma )

    --pretrained_model_name_or_path="stabilityai/stable-diffusion-xl-base-1.0" 
    --pretrained_vae_model_name_or_path="madebyollin/sdxl-vae-fp16-fix" 
    --dataset_name="./huggy_clean" 
    --instance_prompt="a TOK emoji"
    --validation_prompt="a TOK emoji dressed as Yoda"
    --caption_column="prompt" 
    --mixed_precision="bf16" 
    --resolution=1024 
    --train_batch_size=4 
    --repeats=1
    --report_to="wandb"
    --gradient_accumulation_steps=1 
    --gradient_checkpointing 
    --learning_rate=1e-4 
    --text_encoder_lr=3e-4 
    --optimizer="adamw"
    --train_text_encoder_ti
    --lr_scheduler="constant" 
    --lr_warmup_steps=0 
    --rank=32 
    --max_train_steps=1000 
    --checkpointing_steps=2000 
    --seed="0" 
    

全世界 LoRA 练习脚本,联合起来!

  • AdamW 及 Prodigy 优化器

    • 咱们比较了运用 optimizer=prodigy 练习的 版别 1 及运用 optimizer=adamW 练习的 版别 2。两个版别都运用枢轴微调进行练习。
    • 运用 optimizer=prodigy 进行练习时,咱们将初始学习率设置为 1。而对 adamW,咱们运用了 cog-sdxl 顶用于枢轴微调的默许学习率 ( learning_rate1e-4text_encoder_lr3e-4 ),由于咱们能够运用它们重现出较好的作用。

全世界 LoRA 练习脚本,联合起来!

  • 一切其他练习参数和设置均相同。详细如下:

    --pretrained_model_name_or_path="stabilityai/stable-diffusion-xl-base-1.0" 
    --pretrained_vae_model_name_or_path="madebyollin/sdxl-vae-fp16-fix" 
    --dataset_name="./huggy_clean" 
    --instance_prompt="a TOK emoji"
    --validation_prompt="a TOK emoji dressed as Yoda"
    --output_dir="huggy_v11" 
    --caption_column="prompt" 
    --mixed_precision="bf16" 
    --resolution=1024 
    --train_batch_size=4 
    --repeats=1
    --report_to="wandb"
    --gradient_accumulation_steps=1 
    --gradient_checkpointing 
    --train_text_encoder_ti
    --lr_scheduler="constant" 
    --snr_gamma=5.0 
    --lr_warmup_steps=0 
    --rank=32 
    --max_train_steps=1000 
    --checkpointing_steps=2000 
    --seed="0" 
    

Y2K 网页设计 LoRA

咱们再探讨另一个比如,这次用另一个数据集,该数据集是咱们从互联网上抓取的 27 个 20 世纪 90 时代和 21 世纪初的网页截图 (适当复古):

全世界 LoRA 练习脚本,联合起来!

装备:

rank = 4,16,32
-optimizer = prodigy, adamW
-repeats = 1,2,3
-learning_rate = 1.0 (Prodigy), 1e-4 (AdamW)
-text_encoder_lr = 1.0 (Prodigy), 3e-4, 5e-5 (AdamW)
-snr_gamma = None, 5.0
-train_batch_size = 1, 2, 3, 4
-max_train_steps = 500, 1000, 1500
-text_encoder_training = regular finetuning, pivotal tuning

与前例略有不同,虽然咱们运用的练习图画大致相同 (~30 张),但咱们注意到,关于这种风格的 LoRA,在 Huggy LoRA 作用很好的设置关于网页风格来说体现出了过拟合。如下:

全世界 LoRA 练习脚本,联合起来!

关于 v1,咱们挑选了练习 Huggy LoRA 时的最佳装备作为起点 – 显然过拟合了。因而咱们测验鄙人一个版别中经过调整 --max_train_steps--repeats--train_batch_size 以及 --snr_gamma 来处理这个问题。更详细地说,咱们基于这四个装备迭代了 8 个版别,如下 (一切其余装备坚持不变):

装备 v1 v2 v3 v4 v5 v6 v7 v8
max_train_steps 1500 1500 1500 1000 1000 1000 1000 1000
repeats 1 1 2 2 1 1 2 1
train_batch_size 4 4 4 4 2 1 1 1
instance_data_dir web_y2k 14 images randomly samples from web_y2k web_y2k web_y2k web_y2k web_y2k web_y2k web_y2k
snr_gamma 5.0 5.0 5.0 5.0 5.0 5.0

咱们发现 v4、v5 及 v6 能够到达最佳的折衷作用:

全世界 LoRA 练习脚本,联合起来!

人脸 LoRA

在人脸图画上进行练习时,咱们的方针是让 LoRA 生成尽或许实在且与方针人物类似的图画,一起又能够很好地泛化至练习会集未见过的布景和构图。本例中,咱们聚合了多个 Linoy 脸部数据集 (每个数据集含 6-10 张图画),其间包括一组一起拍照的特写相片、不同场合的相片集 (不同的布景、灯光和服装) 以及全身照。

咱们深知,假如由于照明/分辨率/聚集上的问题导致图画的质量偏低,此刻较少的高质图画比较多的低质图画的微调作用更好 – 少便是多,必须挑选最好的相片来练习模型!

装备:

rank = 4,16,32, 64
optimizer = prodigy, adamW
repeats = 1,2,3,4
learning_rate = 1.0 , 1e-4
text_encoder_lr = 1.0, 3e-4
snr_gamma = None, 5.0
num_class_images = 100, 150
max_train_steps = 75 * num_images, 100 * num_images, 120 * num_images
text_encoder_training = regular finetuning, pivotal tuning
  • 先验保存丢失

    • 与通常的做法相反,咱们发现运用生成的类图画会降低与方针人脸的类似性及生成图画的实在性。
    • 咱们运用从 unsplash 下载的开源图画创立了实在肖像的 数据集。现在,你也能够在咱们创立的新 练习空间 顶用上它!
    • 当运用实在图画数据集时,咱们注意到语言漂移更少 (即模型不会将“女性/男人”一词仅与经过练习的面孔相关联,而是能够生成不同的人) ; 一起在输入含经练习的人脸相关词元的提示词情况下,其生成又能保证实在感及全体质量。
    • 咱们比较了秩设为 4、16、32 和 64 等不同值时的 LoRA。在这些试验中,咱们发现秩为 64 的 LoRA 生成的图画磨皮作用更强,并且皮肤纹理看上去不太实在。
    • 因而,在后面的试验以及 LoRA ease 空间 上,咱们都把秩默许设为 32。
  • 练习步数

    • 虽然仅需很少高质图画 (在咱们的比如中为 6) 就能到达好的练习作用,但咱们仍需求确认模型练习的抱负步数。
    • 基于练习图画数,咱们测验了几种不同的乘数: 6 x75 = 450 步 / 6 x100 = 600 步 / 6 x120 = 720 步。
    • 如下图所示,开始成果表明,运用 120 倍乘数作用较好 (假如数据集满足多样而不会过拟合,练习会集最好不要有类似的相片)

全世界 LoRA 练习脚本,联合起来!

上图显示了运用 3 个训得的 LoRA (除了 --max_train_steps 之外的一切参数都坚持相同) 生成的图画,详细装备如下:

rank = 32
optimizer = prodigy
repeats = 1
learning_rate = 1.0
text_encoder_lr = 1.0
max_train_steps = 75 * num_images, 100 * num_images, 120 * num_images
train_text_encoder_ti
with_prior_preservation_loss
num_class_images = 150

推理

运用上述技能练习的模型的推理应该与任何其他练习器训得的模型的推理办法相同,不同之处在于,当咱们进行枢轴微调时,除了 LoRA 的 *.safetensors 权重之外,还有经过练习的新词元及其文本嵌入模型的 *.safetensors 。为了对这些进行推理,咱们在加载 LoRA 模型的办法上加了 2 个步骤:

  1. 从 Hub 下载经过练习的嵌入模型 (默许文件名为 {model_name}_emb.safetensors )
import torch
from huggingface_hub import hf_hub_download
from diffusers import DiffusionPipeline
from safetensors.torch import load_file
pipe = DiffusionPipeline.from_pretrained(
        "stabilityai/stable-diffusion-xl-base-1.0",
        torch_dtype=torch.float16,
        variant="fp16",
).to("cuda")
# download embeddings
embedding_path = hf_hub_download(repo_id="LinoyTsaban/web_y2k_lora", filename="web_y2k_emb.safetensors", repo_type="model")
  1. 将嵌入模型加载到文本编码器中
# load embeddings to the text encoders
state_dict = load_file(embedding_path)
# notice we load the tokens <s0><s1>, as "TOK" as only a place-holder and training was performed using the new initialized   tokens - <s0><s1>
# load embeddings of text_encoder 1 (CLIP ViT-L/14)
pipe.load_textual_inversion(state_dict["clip_l"], token=["<s0>", "<s1>"], text_encoder=pipe.text_encoder, tokenizer=pipe.  tokenizer)
# load embeddings of text_encoder 2 (CLIP ViT-G/14)
pipe.load_textual_inversion(state_dict["clip_g"], token=["<s0>", "<s1>"], text_encoder=pipe.text_encoder_2, tokenizer=pipe.  tokenizer_2)
  1. 加载你的 LoRA 并输入提示!
# normal LoRA loading
pipe.load_lora_weights("LinoyTsaban/web_y2k_lora", weight_name="pytorch_lora_weights.safetensors")
prompt="a <s0><s1> webpage about an astronaut riding a horse"
images = pipe(
    prompt,
    cross_attention_kwargs={"scale": 0.8},
).images
# your output image
images[0]

全世界 LoRA 练习脚本,联合起来!

Comfy UI / AUTOMATIC1111 推理

最新的脚本完全支撑 Comfy UI 和 AUTOMATIC1111 格局的文本逆化模型加载!

AUTOMATIC1111 /SD.Next

在 AUTOMATIC1111/SD.Next 中,咱们一起加载 LoRA 和文本嵌入模型。

  • LoRA : 除了 diffusers 格局之外,该脚本还将一起生成 WebUI 格局的 LoRA,其文件名为 {your_lora_name}.safetensors 。随后,你能够将其放入 models/Lora 目录中。
  • 嵌入 : diffusers 和 WebUI 的嵌入文件格局相同。你能够直接下载已练习模型的 {lora_name}_emb.safetensors 文件,并将其放入 embeddings 目录中。

然后,你能够输入提示 a y2k_emb webpage about the movie Mean Girls <lora:y2k:0.9> 来运转推理。你能够直接运用 y2k_emb 词元,也能够经过运用 (y2k_emb:1.2) 来添加其权重。

ComfyUI

在 ComfyUI 中,咱们会一起加载 LoRA 和文本嵌入。

  • LoRA : 除了 diffusers 格局之外,该脚本还将练习 ComfyUI 兼容的 LoRA,其文件名为 {your_lora_name}.safetensors 。然后,你能够将其放入 models/Lora 目录中。然后,你需求加载 LoRALoader 节点并将其与你的模型和 CLIP 连接起来,详见 LoRA 加载官方攻略
  • 嵌入 : diffusers 和 WebUI 的嵌入格局相同。你能够直接下载已练习的模型的 {lora_name}_emb.safetensors 文件,并将其放入 models/embeddings 目录中,并在你的提示中以 embedding:y2k_emb 的办法运用它,详见 加载嵌入模型的官方攻略

下一步

更多功用,行将推出! 咱们正在尽力为咱们的练习脚本添加更多高档功用,以允许用户施加更多的控制力,并支撑更灵敏的运用。假如你觉得哪些功用对你有协助,请告诉咱们!

多概念 LoRA Shah 等人在最近的一项 工作 引入了 ZipLoRAs – 一种将多个独立练习的不同风格或主题 LoRA 模型合并起来的办法,以支撑以用户指定的任意风格生成用户指定的任意主题图画。mkshing 实现了此办法的一个开源复现,见 此处,其运用了咱们新改进的 脚本


英文原文: hf.co/blog/sdxl_l…

原文作者: Linoy Tsaban,Apolinrio

译者: Matrix Yao (姚伟峰),英特尔深度学习工程师,工作方向为 transformer-family 模型在各模态数据上的运用及大规模模型的练习推理。