Support : OFT merge to base model#1580
Conversation
|
LoRAの部分は変わっていませんが、 |
|
有用なpull requestをいただき、ありがとうございます。コメントした件についてご確認いただければ幸いです。 |
|
間違えてクローズしてしまいました。再オープンします。 |
Pull requestに不慣れで、コメントがどこにあるか見つけることができませんでした。 |
私も不慣れでレビューが送信されていませんでした。大変失礼いたしました。 |
|
修正終わりました。 |
|
手元でOFTをマージして試しているのですが、どうも思ったような結果が得られません。元の |
|
ありがとうございます。諸々動作確認等が取れましたのでマージいたしました。時間がかかり申し訳ありませんでした。 |
|
what is OFT i used translate but not much info |
|
Please see HF's doc: https://huggingface.co/docs/peft/package_reference/oft |
I read it and It looks like fine tuning / training method do we have it? I see pull request is about merge |
|
OFT trains additional modules, just like LoRA, but it is a completely different algorithm. It hasn't been studied in the community, so we don't yet know what effects it has. There is a bug in the current OFT implementation in sd-scripts, which I will fix soon. |
awesome i would like to test it. does it train all layers? or optimized like LoRA? |
|
Now the bug is fixed. OFT doesn't support FLUX.1 yet. I will work on it tomorrow. However, even if we were able to train it, we wouldn't have an inference environment😅
It trains some layers (Linear and Conv2d if specified) like LoRA. See 'COFT with kohya-ss networks.oft' on #983 . I will add a further document later. |
* Support : OFT merge to base model * Fix typo * Fix typo_2 * Delete unused parameter 'eye'
既存のsdxl_merge_lora.pyに対して、
OFTをベースモデルへマージできるように機能追加しました。
Additional Changes
1.OFT学習結果のベースモデルへのマージ対応
複数のOFTのマージは非対応。
2.並列処理による高速化
import concurrent.futuresを用いることで、並列処理化。
OFTはLoRAと比べて、CPUでのマージが長いので並列処理を追加しました(※1)
3. CUDA対応
torch.device('cuda' ・・・行の追加により、CUDAでマージ処理できます(※2)
No.2,3はOFTのみ対応しています。LoRAには非対応です。
理由は、校閲が難しくならないよう情報を小出しにしただけです。変更自体は簡単です(数行書き換えるだけ?)
補足
・ 設計当初、sdxl_merge_lora.pyと独立したスクリプトとして作成を検討しましたが、
OFTは従来sdxl向けの学習方式なので同じ用途ですし、また共有できるライブラリが多いので、
統合する方が使いまわしやすいと考えました。
皆様のご意見を踏まえて対応します。
・ FLUX.1の期待が高まる現在、今さらOFTのマージの提案ではありますが、
VRAM10GB~16GBクラスにおいて、実用面を考慮すると、SDXLとOFTは最高クラスの組み合わせです(※3)。OFT普及のためにぜひ承認をお願いします。
動作確認結果
Lora @ extension for Stable Diffusion web UI と同等画風で、ほぼ同じ構図が出ることを確認済み。
※1:CPU利用の場合、私の環境ではCPU占有率が上がらず1hr以上かかりましたが、並列化によってマージ時間を25%に短縮できました。
※2:変数Rを適用する処理が30min→1secに短縮されました。
※3:VRAM14GB以下だとSDXL Fine tuning は利用困難。LoConや学習層削減するとクオリティ低下が顕著です。
一方、OFTは直行性を考慮した計算効率の高さゆえに、Fine tuningと同等の忠実さ、LoConと同程度のVRAMコストというメリットがあります。
しかしながら、ベースモデルにマージする手段がないため、繰り返しの学習が難しいです。OFTのマージが重要だと判断しました。