Style-96
详情
下载文件
关于此版本
模型描述
最终版-2(更新,原始故事见下文)
当你在名称中写上“final”时,你就知道这从来不是最后一个版本了 :D
多亏了 @Neural_Lens 的精彩建议,我重新进行了一次训练和一次替代合并。
首先,我降低了学习率(LR),增加了训练轮数(Epoch),并重新切换回经典的余弦调度和 Prodigy 优化器。我还降低了维度(16),但选择了更低的 alpha(4),以增强对值变化的影响。
{
"engine": "kohya",
"unetLR": 0.0001,
"clipSkip": 2,
"loraType": "lora",
"keepTokens": 0,
"networkDim": 16,
"numRepeats": 2,
"resolution": 1024,
"lrScheduler": "cosine",
"minSnrGamma": 0,
"noiseOffset": 0.03,
"targetSteps": 2400,
"enableBucket": true,
"networkAlpha": 4,
"optimizerType": "Prodigy",
"textEncoderLR": 0,
"maxTrainEpochs": 20,
"shuffleCaption": true,
"trainBatchSize": 4,
"flipAugmentation": false,
"lrSchedulerNumCycles": 1
}
此外,我在训练中使用了 Neural Lens Core ,它感觉像是训练用的完美 Illustrious 模型,远优于基础版 Illustrious V0.1 或任意的 WAI 迭代版本。
经过一些测试后,我选择了几个表现良好的 Epoch:

然后进行了一次新的合并,以测试 TIES 和 DARE 是否有效:
from safetensors.torch import save_file
import sd_mecha as sdm
sdm.set_log_level()
base = sdm.model("test3-000010.safetensors")
models = [
sdm.model("test3-000012.safetensors"),
sdm.model("test3-000018.safetensors"),
sdm.model("test3-000019.safetensors"),
]
recipe_dare = sdm.ties_with_dare(base,*models,probability=0.6,seed=42,alpha=0.5)
test = sdm.merge(recipe_dare,output_device="cpu")
for k in [ k for k in test.keys() if "lora_te" in k ]:
del(test[k])
save_file(test,"test3-dare.safetensors")
在合并时,我发现使用 Prodigy 优化器并未遵循我设置的 TE 学习率为 0,因此我手动移除了 TE 层。
无论如何,这种方法效果不同,也很不错;如果你在两者之间犹豫,直接把它们叠加在一起就行 :D
首次也是最后一次
所以,快速测试一下。目标是复现一种特定风格,尤其是眼睛和嘴唇。在找到一组合适的 LoRA 组合后,我生成了大量随机的 1girl 图像(60 张),进行了自动打标,然后开始了一次快速训练,消耗一些“蓝调”算力。
训练参数:
{
"engine": "kohya",
"unetLR": 0.0005,
"clipSkip": 2,
"loraType": "lora",
"keepTokens": 0,
"networkDim": 32,
"numRepeats": 2,
"resolution": 1024,
"lrScheduler": "cosine_with_restarts",
"minSnrGamma": 0,
"noiseOffset": 0.03,
"targetSteps": 1440,
"enableBucket": true,
"networkAlpha": 32,
"optimizerType": "Adafactor",
"textEncoderLR": 0,
"maxTrainEpochs": 12,
"shuffleCaption": false,
"trainBatchSize": 1,
"flipAugmentation": false,
"lrSchedulerNumCycles": 3
}
没什么特别的(PS:我知道这些参数不是最优的,当时我也在做实验 :D)
我选出了看起来效果不错的第 7 和第 9 轮 Epoch,而我发布这个的原因是:我经常合并 LoRA 的多个训练轮次。
我知道这并不常见,我通常手动操作,但这次我尝试了一种可复现的技术:
>>> import sd_mecha as sdm
>>> sdm.set_log_level()
>>> a = sdm.model("test-000007.safetensors")
>>> b = sdm.model("test-000009.safetensors")
>>> c = sdm.slerp(a,b)
>>> sdm.merge(c,output="test-slerp.safetensors")
总之,就这些啦。:D
基础灵感来源(源 LoRA):https://civitai.com/images/109655271
该模型基于 PrefectIllustrious V3 训练。








