Style-96

詳細

ファイルをダウンロード

モデル説明

Final-2(更新、元のストーリーについては以下をご覧ください)

「Final」と名前につけると、それが最終版ではないことに気づくはずです :D

@Neural_Lens の素晴らしい指摘のおかげで、再トレーニングと代替マージを実施しました。

まず、学習率(LR)を下げ、エポック数を増やし、最適化手法を古典的なコサインと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イテレーションよりもはるかに優れています。

いくつかのテストの後、以下のエポックを選びました:

そして、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のLRが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を選択しました。この投稿の理由は、私はしばしば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でトレーニングされました。

このモデルで生成された画像

画像が見つかりません。