CivArchive
    [GUIDE] Use, create, and post LoRA. For beginners to intermediate level Japanese guide/LoRAを使う、作る、投稿する。 初心者~中級者向けの 日本語ガイド - v1.0
    Preview undefined

    LoRAを使い、作り、投稿する。まとめ

    更新中のため記述に誤りがあるかもしれません

    2023/05/29 14:44 更新

    AI素人です
    知識はそんなに深くないので難しい事はあまり書かないです

    download数が増えるとたぬきが喜びます good(💛)が増えるとたぬきのHPが回復します

    rating(☆)が増えるとたぬきのモチベーションが上がります

    日記のようなもの

    無事に住処に帰ってこれました。

    いろいろ書きたいのですが、自分が使っていない拡張などどこから手を付けたらいいのやら?

    そもそもLoRAって何?の説明

    ざっくりとした説明

     stablediffuisonというソフトで使われている学習済モデル(pretraind model 5GBくらい)そのままでは新しい絵が出せないので追加で学習させたい。

     でもデータ全体が変更される学習方法だとすごく大変なのでLoRAっていう限定的な学習方法で現実的なコスト(データ量・計算時間)で出来るようになったよ!

    新しい絵を学習させて、それが使えるようになるという理解。

    https://qiita.com/ps010/items/ea4e8ddeff4de62d1ab1

    Stable Diffusionの特徴は、次の3つです。

    • Stable Diffusionは、最近流行の Diffusion Model(拡散モデル)をベースとしたtext-to-imageの画像生成モデルです

    • VAEでピクセル画像を潜在表現に変換することで、モデルの軽量化に成功しました

    • U-Netを用いた画像生成の条件づけにText EncoderのCLIPを使用します

    https://dosuex.com/entry/2023/03/30/115101

    LLMの課題

    近年、LLM(大規模言語モデル)が多くの自然言語処理タスクで顕著な成果を上げています。一般的に、これらのモデルは非常に多くのパラメータを持っており、特定のドメインやタスクへの適応を行う際には、大量のデータと計算リソースが必要となることが課題となっています。また、モデルのサイズが大きくなることで、デバイスのメモリや計算能力が制約される環境での使用が困難になる場合もあります。

    LoRAの目的

    LoRA(Low-Rank Adaptation)は、この課題に取り組むためにMicrosoftによって開発されました。LoRAの目標は、LLMのパラメータを低ランク行列で近似することにより、適応の際に必要な計算量とメモリ使用量を大幅に削減し、タスクやドメイン固有のデータで迅速かつ効率的にモデルを微調整することができるようにすることです。これにより、LLMをより実用的で効果的なツールに進化させることが期待されています。

    元々LLMの学習コストを下げる為に考えられた方法をstablediffusionに応用したという感じ?

    ------------------------------------------------------------------------------------------------------

    閑話休題

    学習する為のPCの推奨

     OS Win11

     CPU 最近のならなんでもよい

     RAM 32GBくらいあれば動くはず

     SSD 読み書きが早くなります

     GPU GeforceRTX VRAM8GBが最低ライン、6GBは設定を突き詰めれば?、12GB以上あると安心?

     Webブラウザ firefoxとchromeとEdgeの最新バージョン

    前提となる環境/ソフトウェアの導入 Win11/Geforce

    Geforce Experience導入(共通)

    https://www.nvidia.com/ja-jp/geforce/geforce-experience/

    webui automatic1111導入(windowsローカル編)

      git

       https://gitforwindows.org/

       ダウンロードして実行してインストール

       設定は弄らずにそのままでいけた筈

       インストール後

       パワーシェルで

       git

       インストールされているのを確認

      python

       https://www.python.org/

       python3.10.6をインストール

       https://www.python.org/downloads/windows/

       最近のWin11機であれば64bitだと思います。32bitで動かしているのは知らないです。

       anaconda3やminicondaはインストールしない想定で書いています。

       Windowsストアからもアプリ版のpythonが入れられるようですが確認していません。

       解説サイトでも扱いが無いのであまりおすすめ出来ないです。

       インストール後、Windowsの検索からpowershellを検索し実行

       パワーシェルで

        python -V

       を実行、バージョンが表示されていればインストールされています。

       インストールしてもpythonが見つからない場合はパスの設定がおかしいです。

       この場合はPython 3.10.10が入っていますが特に問題無く動いています。

       バージョンがだいたいあっていればだいたい動くし動かない事もある

       webuiでもsd-scriptでも3.10.6バージョンが安定しているようです。

    PyTorch のインストール(Windows 上)※1引用

    コマンドプロンプトとパワーシェルは別環境なので、パワーシェルに読み替えて下さい。

    1. Windows で,コマンドプロンプト管理者として実行

      コマンドプロンプトを管理者として実行:

    2. PyTorch のページを確認

      PyTorch のページ: https://pytorch.org/index.html

    3. 次のようなコマンドを実行(実行するコマンドは,PyTorch のページの表示されるコマンドを使う).

      次のコマンドは, PyTorch 2.0 (NVIDIA CUDA 11.8 用) をインストールする.

      事前に NVIDIA CUDA のバージョンを確認しておくこと(ここでは,NVIDIA CUDA ツールキット 11.8 が前もってインストール済みであるとする).

      https://developer.nvidia.com/cuda-11-8-0-download-archive

      Windows x86_64 11 exe(local)を選択、赤矢印にダウンロードリンクが出るので落とす

      そして実行する

      一行ずつ実行していってね!

      pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118


      python -c "import torch; print(torch.__version__, torch.cuda.is_available())"

      pip installするとだーっと進捗が表示されて終わったらpython -cでtorchがインストールされているのか確認します
      torchのバージョン1.13とか1.12とか2.0が表示されたら入っていると思います

    Automatic Installation on Windows

    エクスプローラーで導入したい場所のフォルダを右クリックして

    ターミナルで開く を実行

    1. git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

    2. webui-user.bat をエクスプローラーから実行

     1.をパワーシェルにコピペして実行

     処理が終わるとフォルダにwebui-user.batが作られているので実行する

     webブラウザから http://127.0.0.1:7860 を開く(http://localhost:7860 でもokな筈)

    (設定で自動でブラウザで開くようにも出来ます。)

     

     導入以降はwebui-user.batを実行するようになります。

    web-user.batの中身

    @echo off
    
    set PYTHON=
    set GIT=
    set VENV_DIR=
    set COMMANDLINE_ARGS=
    
    call webui.bat

    VRAM4GB以下向けオプション

      VRAM消費量を低減する代わりに速度が犠牲になるとのこと。

        set COMMANDLINE_ARGS=--medvram

      ↑で out of memory が出た場合

        set COMMANDLINE_ARGS=--medvram --opt-split-attention

      ↑でもまだ out of memory が出た場合

        set COMMANDLINE_ARGS=--lowvram --always-batch-cond-uncond --opt-split-attention

    その他のオプション

    --xformers (高速化/VRAM消費減)

     torch2.0なら無くても良い 環境による

    --opt-channelslast (高速化)

    1111のWikiによると、Tensor Coreを搭載したNVIDIA製GPU(GTX16以上)で高速化が期待できるとのこと。

    --no-half-vae (画像真っ黒対策)

    真っ黒になった時に

    --ckpt-dir(モデルの保存先を指定する。)

     保存先を変えたい時に

    --autolaunch (自動的にブラウザを立ち上げる)

     いちいちWebブラウザにアドレスを入れるのが面倒な時に

    --opt-sdp-no-mem-attention または --opt-sdp-attention

    (Torch2限定
    xformersと同じく20%前後高速化し、出力にわずかな揺らぎが生じる。VRAM消費が多くなる可能性がある。
    AMD Radeon,Intel Arcでも使える。)

    --device-id 0 (複数枚GPUが刺さっている場合に指定する、0から始まる。デフォルトでは0を使う。)

     set PYTORCH_CUDA_ALLOC_CONF=garbage_collection_threshold:0.6,max_split_size_mb:24

    PytorchでCUDAがメモリを使う時の設定

     閾値6割メモリが使われたら 24MB単位でGarbageCollectionするよ(メモリ上の使われていないデータを掃除、消費メモリが減る。のでCUDAがOutOfMemoryを表示して落ちなくなる・・・という願い。)

    拡張機能によっては相性が悪かったりするのでreadmeをよく読んで使って下さい!

    初期設定で起動すると自動でckptをダウンロードするのでしばらく時間が掛かります

    sd-script導入

     パワーシェルでコマンドが実行出来るように権限を設定

    • 管理者権限でパワーシェルを開く

    • Set-ExecutionPolicy Unrestricted と入力しAを打つ

    • パワーシェルを閉じる

    powershellをスタートメニューから検索して右クリックして管理者として実行をクリックしてください

    パワーシェルを開いて以下を一行ずつ実行

    git clone https://github.com/kohya-ss/sd-scripts.git
    cd sd-scripts
    
    python -m venv venv
    .\venv\Scripts\activate
    
    pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
    pip install --upgrade -r requirements.txt
    pip install -U -I --no-deps https://github.com/C43H66N12O12S2/stable-diffusion-webui/releases/download/f/xformers-0.0.14.dev0-cp310-cp310-win_amd64.whl
    
    cp .\bitsandbytes_windows\*.dll .\venv\Lib\site-packages\bitsandbytes\
    cp .\bitsandbytes_windows\cextension.py .\venv\Lib\site-packages\bitsandbytes\cextension.py
    cp .\bitsandbytes_windows\main.py .\venv\Lib\site-packages\bitsandbytes\cuda_setup\main.py
    
    accelerate config

    LoRA_Easy_Training_Scripts 導入

    v5以前の場合

    https://github.com/derrian-distro/LoRA_Easy_Training_Scripts/releases

    .batをダウンロードして配置したいフォルダで実行する

    v6の場合

     Release installers v6 · derrian-distro/LoRA_Easy_Training_Scripts (github.com)

     installer.pyを導入したいフォルダに配置して

     ターミナルを開いてパワーシェルで

     python installer.py を打ち込み実行

     途中色々ダウンロードされるので待ちます

     Do you want to install the optional cudnn1.8 for faster training on high end 30X0 and 40X0 cards? [Y,N]?

     と聞かれるので30x0/40x0シリーズのグラボを使っている場合はYを入力、それ以外のグラボはNを入力してください

     sd-scriptが入りますが設定が終わっていないので

     パワーシェルで一行ずつ実行してください

     cd sd-scripts

     venv\Scripts\activate

     accelerate config

     

    共通

    accelerate configで次のように答えて下さい

    - This machine
    - No distributed training
    - NO
    - NO
    - NO
    - all
    - fp16 (数字キーの1を押してリターンで選びます、矢印キーで操作しようとするとエラーで落ちます)

    webui簡単インストーラー版

     https://github.com/AUTOMATIC1111/stable-diffusion-webui/releases/tag/v1.0.0-pre

     The webui.zip is a binary distribution for people who can't install python and git.

     Everything is included - just double click run.bat to launch.

     No requirements apart from Windows 10. NVIDIA only.

     After running once, should be possible to copy the installation to another computer and launch there offline.

     webui.zip は、python と git をインストールできない人向けの環境です。

    すべてが含まれています - run.bat をダブルクリックして起動するだけです。

     Windows 10 以外の要件はありません。

     NVIDIA のみ。

    一度実行した後、インストールを別のコンピューターにコピーして、オフラインで起動できるはずです。

     

     使っていないので解説出来ませんが、お手軽そうですね。

     Win10の環境が無いので検証できませんので他の方の記事を参考にして下さい。

    LoRA ファイルについて

    階層見本

    stable-diffusion-webui
     ┗models   
       ┗lora  この中に使用したい学習データを保管します。

    LoRAで使用可能なデータは「.safetensors」「.ckpt」の拡張子です。
    識別子を使用する場合、プロンプトに識別子を記述することを忘れないようにしましょう。

    • 例:キャラクターを「shs」、クラスを「1girl」として学習させたLoRAファイル「lora_chara1.safetensors」の場合、「 <lora:lora_chara1:1> shs」というように記述します。
      識別子の有無や使用する文字は学習データごとに異なるので、必要に応じて適用してください。

    CIVITAIではpnginfoのLoRAファイル名とダウンロードされるLoRAファイル名が異なるので

    自分で書き換える作業が必要になるかと思います。

    ファイル名書き換えるか、プロンプトの方を書き換えるかです。

    kohysa sd-scriptでの学習方式まとめ

     1.DreamBooth、class+identifier方式(正則化画像使用可)

      フォルダ名にclass+identifier

      繰り返し数を10にしたい場合は

       10_class_identifier とする

      classは概念?dogとか1girlとか

      identifierは使うときに呼び出すトリガーワードみたいなもの

      正則化画像を用意する

       無くても学習できる

      --train_data_dir= 学習用画像のフォルダ

      --reg_data_dir=  正則化画像のフォルダ

     2.DreamBooth、キャプション方式(正則化画像使用可)

      学習用画像のフォルダに、

      画像と同じファイル名で、拡張子 .caption(設定で変えられます)のファイルを置く

      それぞれのファイルは1行のみ。エンコーディングは UTF-8

      notepadでUTF-8を指定して保存すれば良い。

      --train_data_dir= 学習用画像のフォルダ

      --reg_data_dir=  正則化画像のフォルダ

      50枚画像があると50個書かなければならないのでwebuiでタグを付けるのがいいと思う

      (やった事が無いのでわかりません、すいません。)

     3.fine tuning方式(正則化画像使用不可)

      教師画像と.jsonファイルを使う(wd1.4taggerで.txtファイルを作って.jsonファイルにコンバートする)

      この下に書いてあるやり方。

      --train_data_dir= 学習用画像のフォルダ

       --in_json= .jsonファイルを指定する 

    3.の作り方で説明をしていると思ってください

    あとパスはc:/にしてありますが、各々の環境に読み替えてね!

    学習用データセットの準備

    画像を用意する

     1.自分で描く

     2.インターネットから拾って来る

      a.gallery-dlというソフトを使うと色々な投稿サイトから画像を拾って来る事が出来るようです

      https://gigazine.net/news/20201205-gallery-dl/

      pip install gallery-dl

      gallery-dl URL

      URLを指定するとカレントディレクトリ下にgallery-dlフォルダを作ってその下に

       1.twtitter

       2.danbooru

       3.pixiv

      等のフォルダの下に検索ワード名のフォルダを作り、画像が保存されるようです。

      大量の画像がHITする場合は全てDLされるまで終了出来ないようですので注意して下さい

       b.youtube-dlというソフトを使うとyoutubeから動画を拾って来るようです

       https://gigazine.net/news/20220101-yt-dlp/

     

       ffmpegというソフトを使うと動画から連番静止画ファイルを作れるようです

       ffmpeg -i input.mp4 -vcodec png -r 10 image_%04d.png

       オプション 値 機能

       -i input.mp4 入力ファイルを指定する

       -vcodec png コーデックを指定する

       -r 10 静止画にするフレームレート(1秒間に何枚か)を指定する

       image_%04d.png 出力ファイル名を指定する。

       %04dでゼロフィル4桁の連番画像が出力される

     (画像が少なければ反転・切り取りなどを駆使)極論すれば一枚あればどうにか出来るらしい?

     ファイルをフォルダに配置する。(正則化画像は説明がめんどくさいのでいつか書く)

     targetが学習させたいものの名称だと思って下さいね

    ファインチューン向けメタデータの作成方法

    (jsonファイルを読み込んで学習させる場合)

     kyousi(フォルダ)

      target(フォルダ)

        target000.jpg(画像ファイル)

        target001.jpg(画像ファイル)

    webui automatic1111の拡張機能のwd1.4taggerでタグ付けバッチ処理をする

    (他の使った事無いのでベストかどうかは分からない)

     バッチ処理の入力フォルダの画像を読み込んで、出力フォルダに画像枚数だけ.txtファイルを書きだす。

    ディレクトリ一括処理 タブを選んで

     入力ディレクトリにtargetを指定

     出力ディレクトリにtargetを指定

     重複するタグを削除(としあき製のタグクリーナーを使う場合は✅要らない)

     JSONで保存(としあき製のタグクリーナーを使う場合は✅要らない)

     インタロゲーターを指定できますがデフォルトのを使用しているので違いは良く分かりません

     インタロゲートのボタンを押すとバッチ処理が始まり、CMD窓(webui-user.batを実行すると開く窓)に進捗が表示され全て終了すると all done :) が表示されます。

    Dataset Tag Editorでは

    Wd1.4 taggerで作った.txtファイルや.jsonファイルを指定してタグを編集出来るようです。

     ファインチューン用jsonファイル作成バッチ

    wikiで書かれている作成バッチのテキストをnotepadにコピペしてmake_json.batとか適当に名前を付けて保存

    taggerで作られた.txtファイルを.jsonファイルにする。

    rem ----ここから自分の環境に合わせて書き換える----------------------------------

    rem sd-scriptsの場所

    set sd_path="C:\LoRA_Easy_Training_Scripts\sd_scripts"

    rem 学習画像フォルダ

    set image_path="C:\train\kyousi\"

    rem ----書き換えここまで--------------------------------------------------------

    .batをnotepadで開いてフォルダの場所だけ書き換えます。

    そして.batを実行

    メタデータにキャプションがありませんと表示されますが気にしません(メタデータとかキャプションについてはよくわかりません)

    merge_clearn.jsonの内容を編集します

     .jsonファイルの内容を見てトリガーワード(にしたいタグ)があったらそのまま、無ければ一番最初の位置に追加する(--keep_tokens=1と--shuffle_captionを指定する為)。

    "C:\\Users\\watah\\Downloads\\kyousi\\siranami ramune\\100741149_p0.jpg": {

    "tags": "siranami ramune,1girl, virtual youtuber, solo, v, fang, multicolored hair, blue jacket, blue hair, choker, hair behind ear, smile, crop top, bangs, streaked hair, hair ornament, jewelry, looking at viewer, earrings"

    },

    サンプルです。

    .jsonファイルは上のような3行1セットな書き方をされています。画像ファイルの数だけセットがあると思って下さい。

    ”画像ファイルのパス”:{

    ”tags”:”token1,token2,,,,,,(略)”

    },

    token1でトリガーワードにしたいタグ(ややこしいですね)を入れます。

    私はテキストエディアの置換で全部書き換えています。

    置換元 -> 置換先

    "tags": " -> "tags": "トリガーワード,

    --shuffle_caption

    これは各タグをシャッフルしてタグの重みを分散させる効果があるのだとか。

    --keep_tokens=1

    1番目のタグまでを保持(この場合は1番目にあるtoken1)にします。

    トリガーワードを1つで強く効かせたいのでこのような設定をしています。

    理論的な解説は他の方におまかせします。

     sd-scriptで学習を実行。

      venvの仮想環境に入ってコマンド直打ち、もしくはtoml設定ファイルを使用する。

        sd-scriptのフォルダを右クリックしてターミナルを開く

        venv/Scripts/activateと入力してvenv(仮想環境)に入る

        コマンドをコピペして実行

    (改行を入れない、使いまわししてる設定は見やすくするために改行を入れています。また設定値は適宜変更して下さい。)

    コピペして実行すると流れてくるのはこんな感じ

    画像枚数 x 繰り返し回数 x 総epoch / バッチサイズ = 総ステップ数

    経過時間 残り時間 処理速度 it/s loss

    lossはよくわかりません監視しても意味が無いというのを見かけましたが諸説あると思います。

    学習ログの保存

    logging_dirオプションにログ保存先フォルダを指定してください。TensorBoard形式のログが保存されます。

    たとえば--logging_dir=logsと指定すると、作業フォルダにlogsフォルダが作成され、その中の日時フォルダにログが保存されます。
    また--log_prefixオプションを指定すると、日時の前に指定した文字列が追加されます。「--logging_dir=logs --log_prefix=fine_tune_style1」などとして識別用にお使いください。

    TensorBoardでログを確認するには、別のコマンドプロンプトを開き、作業フォルダで以下のように入力します(tensorboardはDiffusersのインストール時にあわせてインストールされると思いますが、もし入っていないならpip install tensorboardで入れてください)。

    tensorboard --logdir=logs

    (tensorboardは環境整備時にあわせてインストールされると思いますが、もし入っていないなら pip install tensorboard で入れてください。)

    その後ブラウザを開き、http://localhost:6006/ へアクセスすると表示されます。

     (LoRAの場合)ステップ数4000-6000くらいになるようにepochとrepeatを適当に弄る。

     特に根拠はありません。最適な数値は自分で模索しましょう。

     私の環境では所要時間一時間弱。だいたい 1.80it/sくらいの速度。

     出来上がったLoRAをwebuiのLoRAフォルダに入れてwebuiを立ち上げる。

     lokrは4000ステップくらいで回してますけどベストかどうかはよくわからないです・・・・誰か教えて

    出来たLoRAの設置場所

     インストール先で変わってくると思いますが多分ここら辺

     C:\stable-diffusion-webui\models\Lora

     にLoRA(拡張子.safetensorファイル)を設置してください

    webuiの使い方

     

    webui-user.batを選んでダブルクリック

    何事も無ければRunnning on local URL: http://127.0.0.1:7860 と最後に表示されます

    webuiは拡張機能により日本語化されています

    設定値をマニュアルで弄る方法もあります

    ☠加筆修正中☠

    日本語化拡張適用済

    ・サンプリング方法

     サンプリングアルゴリズム

     個人的にはDPM++ 2Mが早くて良い感じに描いてくれる気がする、諸説ある。

    ・サンプリングステップ数

     20-50の間くらいで、大きい数字入れてもクオリティが比例して上がるわけではないし時間が掛かる。諸説ある。

    ・高解像度補助(hires.fix)

     高解像度にする時に画像が崩れるのを防ぐ

    ・アップスケーラー

     拡大するアルゴリズム

     アニメ系はR-ESRGAN 4x+ Anime6Bがいいらしい。諸説ある。

    ・アップスケール比率

     拡大倍率

    ・高解像度でのステップ数

     高解像度でどのくらいステップ数を使って再描画するか

     迷ったらサンプリングステップ数と同じにしたらどうかな

    ・ノイズ除去強度

     

    ・バッチ回数

     合計何枚の絵を一度に作るのか

    ・バッチサイズ

     一度に作る画像の数 VRAM少ないなら1でいい、多いなら4とか?

    ・幅

     作りたい画像の横のサイズ

    ・高さ

     作りたい画像の縦のサイズ

    ・CFGスケール

     高いほどpromptの内容に忠実に従うような動きをする

    ・シード

     同じseed値を使うと同じ画像が作成される

     気が付かずに何枚も似たような絵が出てきてようやく気が付く

     -1でランダム

     png内部の情報をsend2でtxt2imgで開いた時は固定値になるので気を付けようね!(絵を再現する為)

    ・ポジティブプロンプト

     こうやって欲しいという指示を,で区切って指定する

    ・ネガティブプロンプト

     こういうのは嫌という指示を,で区切って指定する

    ・生成

     絵を生成するよ

    作ったLoRAをテストする方法 英語ガイドをそのまま翻訳

    Lora の最適な使用方法を見つけるための簡単なワークフローは次のとおりです。
    
    最終的な Lora を 0.7 または 1 のウェイトでプロンプトに入れ、ガイドのタグ付け部分で見た最も一般的なタグのいくつかを含めます。
    うまくいけば、トレーニングしようとしたものと同様の明確な効果が見られるはずです。満足するか、それ以上良くならないように見えるまで、プロンプトを調整します。
    
    X/Y/Z プロットを使用して、異なるエポックを比較します。
    これは webui の組み込み機能です。生成パラメーターの一番下に移動し、スクリプトを選択します。
    プロンプトに最初のエポックの Lora を入力し (「<lora:projectname-01:0.7>」など)、スクリプトの X 値に「-01、-02、-03」などのように書き込みます。
    X 値は「Prompt S/R」モードです。
    これらはプロンプトで置換を実行し、異なる数のロラを通過させて、それらの品質を比較できるようにします。
    時間を節約したい場合は、最初に 2 エポックごとまたは 5 エポックごとに比較できます。より公平に比較​​するには、理想的には画像のバッチを実行する必要があります。
    
    お気に入りのエポックを見つけたら、最適なウェイトを見つけてみてください。 
    X/Y/Z プロットをもう一度実行します。
    今度は X 値を "0.5>, 0.6>, 0.7>, 0.8>, 0.9>, 1>" のようにします。
    プロンプトのごく一部を置き換えて、さまざまなローラの重みを調べます。
    繰り返しますが、バッチで比較することをお勧めします。
    画像を歪ませることなく、最高のディテールが得られるウェイトを探しています。
    必要に応じて、ステップ 2 と 3 を X/Y として一緒に実行できます。時間はかかりますが、より徹底的になります。
    
    気に入った結果が見つかった場合は、おめでとうございます。さまざまな状況、角度、服装などをテストし続けて、あなたの Lora が創造性を発揮し、トレーニング データにないことを実行できるかどうかを確認してください。

    こうすると

    プロンプトで-1の部分を置き換えて絵を生成していく

    hogehoge,<lora:hogehoge-1:1.0>

    hogehoge,<lora:hogehoge-2:1.0>

    hogehoge,<lora:hogehoge-3:1.0>

    hogehoge,<lora:hogehoge-4:1.0>

    hogehoge,<lora:hogehoge-5:1.0>

    hogehoge,<lora:hogehoge-6:1.0>

    epochごとに同じプロンプトで表示させてどれがいいのかを調べられる

    また重み1.0を0.9,0.8,0.7,0.6,0.5のように書き換えていってどの重み付けがいいのかも調べられる

     プロンプトを調整する。

      この辺りはCIVITAIで投稿されている画像から知恵を拝借するといいかも

     複数枚絵を生成して出来栄えが良い物を選別する。

      バッチ数を8枚くらいにしてしばし待つ

     どうしても結果が芳しくない場合はLoRAのepochの小さいものを使うか、

     さらにLoRAに学習を続ける。

    sd-scriptで学習する時に --save_every_n_epochs=1 とすると1epochごとにセーブされるます

    通常last.safetensorから試しますが過学習かな?となった時に小さい数値のepochで試していくというやり方をしています

     コピペ直打ちする時に--network_weights="hogehoge.safetensor"で指定するとLoRAファイルにさらに学習させられます。

     学習が足りないかな?というときに

    waifu diffusion1.5beta2-aesthetic導入メモ

    https://huggingface.co/waifu-diffusion/wd-1-5-beta/blob/main/checkpoints/wd15-beta1-fp16.safetensors

    https://huggingface.co/waifu-diffusion/wd-1-5-beta/blob/main/checkpoints/wd15-beta1-fp16.yaml

    https://huggingface.co/waifu-diffusion/wd-1-5-beta/blob/main/checkpoints/wd15-beta1-fp32.safetensors

    https://huggingface.co/waifu-diffusion/wd-1-5-beta/blob/main/checkpoints/wd15-beta1-fp32.yaml

    https://huggingface.co/waifu-diffusion/wd-1-5-beta/blob/main/embeddings/wdbadprompt.pt

    https://huggingface.co/waifu-diffusion/wd-1-5-beta/blob/main/embeddings/wdgoodprompt.bin

    stable-diffusion-webui
    |-- embeddings
    |   |-- wdbadprompt.pt
    |   `-- wdgoodprompt.bin
    |-- models
    |   `-- Stable-diffusion
    |       |-- wd-1-5-beta2-aesthetic-fp16.safetensors
    |       `-- wd-1-5-beta2-aesthetic-fp16.yaml
    `-- 〜省略〜
    

    ファイルの設置はこれで良い筈

    そして満足いく結果が得られたらいよいよCIVITAIに投稿です!

    CIVITAIに投稿する

    たしか登録しないと投稿出来なかった筈

    • discoad

    • reddit

    • google

    • github

     アカウント連携で登録できたと思います

     四つの内どれかのアカウントあればそのアカウントで認証出来ます

     無くても新規登録は出来た筈

    登録終わってloginしていると想定して話を進めます

    さっそくモデルを投稿していきたいと思います(80回目)

    なまえ

     公開する時に表示されるなまえ

    ファイルタイプ

     LoRAとかLyCORIS(Locon/LoHA)とか選べます

    付与するタグ

     +を押して付けたい単語を入力します

     無ければ新規に作って登録します

    モデル説明

     モデルがどういうものかを説明すればいいと思います

    商業利用

     下の方に説明があります スクロールして読んでください

    現実に実在する人物か?

     実在する人物は肖像権の関係があります

    Is intended to produce mature themes only

     多分だけど成人した人物のみを扱いますとかそんな感じだと思う。

     FBIに通報されるようなデータを作らないでね

    CIVITAIでの投稿時に注意すべき個人的ポイント

    左のを意訳

    このモデルを使う時にユーザー許可する内容

     私の名前(この場合watahanを)を表記しなくていいです

     このモデルのマージを共有してください

     マージには異なる許可を使用する

    右のを意訳

    商業利用

     全部禁止

     生成した絵を販売する

     AI絵生成サービスで使用する

     このモデルまたはマージしたものを販売する 

    二次創作は二次創作ガイドラインがある場合、規約に従ってください。

    モデルのタイトルにUnOfficialと必ず入れているのは公式だと誤認させない為です。

    バージョン

     好きなように付けて下さい

    アーリーアクセス

     早期アクセスよくわからないけど公開するまでの日数が設定出来るぽい

    ベースモデル

     SDのどのバージョン系列かを選ぶ

     分からない場合はotherにする

    トリガーワード

     LoRAを使う時に使うトリガーワードを書いてください

     無いとDLした人が使う時に困ります

    学習時のepoch

     学習させたときのepoch数を入力

    学習時の総ステップ数

     学習させたときの総ステップ数を入力

    ckpt pt safetensor bin zipなどの拡張子のファイルがアップロードできます

    クリックして開くかドロップする

      

    アップロードするファイル名

     ローカルのファイル名が表示されます 違うファイルを選んだときはゴミ箱アイコンで削除出来ます

    ファイルタイプ

     選んでください

    アップロードを始める

     実際にファイルをアップロードします

    投稿する画像ファイルをここから開くかドロップしてね

    投稿するタグは必ず一つは設定しないと公開できないので+Tagで追加してください

    既存に無ければ新規にタグを作ります

    最後にpublish押して公開されます

    これでCIVITAIのみんなにあなたの作ったLoRAファイルが公開されましたね

    pnginfoは編集しないでそのまま載せてるのでLoRAファイル名を弄るだけで再現出来る筈(CIVITAIがファイル名を変更している為)。

    ToME入れてるので背景のディテールが違う?xformersとかでも微妙に違って来るらしいがよくわかりません

    VAEファイルを入れるとまた変わってくると思います よく使われるのにEasyNegativeとかあります

    https://github.com/kohya-ss/sd-scripts/blob/main/train_README-ja.md

    LoRA以外にも追加学習について書かれています。一読しましょう。

    LoRAとかの拡張とかのメモ

    https://scrapbox.io/work4ai/LoCon

    LoRAは緑の部分しか学習していないが、LoConは黄色の部分を学習できるので、合わせてほぼすべてのレイヤーをカバーできる

    上の図はConv2d-3x3拡張とはまた別なのだろうか?

    https://scrapbox.io/work4ai/LyCORIS

    左の図が2R個のランク1行列(縦ベクトルと横ベクトルの積)の総和になるのに対し、右の図はRの2乗個のランク1行列の総和になるので同じパラメータ数でランクを大きくできるらしい。

    [(IA)^3]

    This algo produce very tiny file(about 200~300KB)

    実装 : [. https://github.com/tripplyons/sd-ia3]

    >[LoRA]との大きな違いは、(IA)^3はパラメータの使用量がかなり少ないことです。一般的には、高速化・小型化される可能性が高いが、表現力は劣る。

    lokr

     LyCORIS/Kronecker.md at b0d125cf573c99908c32c71a262ea8711f95b7f1 · KohakuBlueleaf/LyCORIS (github.com)

     クロッカー積を使うのでLoHAみたいに効率が良いらしい

    Dylora

     https://github.com/kohya-ss/sd-scripts/blob/main/train_network_README-ja.md#dylora

     同時にrankを学習していいのを選べるらしい・・・(ざっくりした理解)

     学習後のLoRAは互換性があるとの事

     詳しくはreadmeを読んだ方がいいです

      --network_module=networks.lora を  --network_module=networks.dylora

     network_dimconv_dimの数値を合わせる

    --network_dim=32

    --network_args "conv_dim=32" "conv_alpha=16" "unit=8"

     --network_args "conv_dim=32" "conv_alpha=16" "unit=4"

     dimの数値を区切る数値をunitで指定する

     学習後にrankごとに抽出する

      python networks\extract_lora_from_dylora.py --model "C:\train\outputs\hogehoge.safetensors" --save_to "C:\train\outputs\dylora-model-split.safetensors" --unit 4

    loading Model...

    Splitting Model...

    Max rank: 32

    Splitting rank 4

    Splitting rank 8

    Splitting rank 12

    Splitting rank 16

    Splitting rank 20

    Splitting rank 24

    Splitting rank 28

    saving model to: C:\train\outputs\dylora-model-split-0004.safetensors

    saving model to: C:\train\outputs\dylora-model-split-0008.safetensors

    saving model to: C:\train\outputs\dylora-model-split-0012.safetensors

    saving model to: C:\train\outputs\dylora-model-split-0016.safetensors

    saving model to: C:\train\outputs\dylora-model-split-0020.safetensors

    saving model to: C:\train\outputs\dylora-model-split-0024.safetensors

    saving model to: C:\train\outputs\dylora-model-split-0028.safetensors

    なんか沢山出てくるのでLoRAフォルダに入れて、xyz plotでまとめて同じプロンプトでどういう絵が生成されるのかを比較する

     

    kohya LoRAとLyCORIS LoRAの簡単まとめ

    kohya LoRAの名称について

    1. LoRA-LierLa : (LoRA for Li n e a r La yers、リエラと読みます)

      Linear 層およびカーネルサイズ 1x1 の Conv2d 層に適用されるLoRA

    2. LoRA-C3Lier : (LoRA for C olutional layers with 3 x3 Kernel and Li n e a r layers、セリアと読みます)

      1.に加え、カーネルサイズ 3x3 の Conv2d 層に適用されるLoRA

    LoRA-LierLa はWeb UI向け拡張、またはAUTOMATIC1111氏のWeb UIのLoRA機能(最初から内蔵されてるやつ)で使用することができます。

      LoRA-C3Liarを使いWeb UIで生成するには拡張を使用してください。

    LyCORIS LoRAの名称について

     Conventional LoRA(locon)kohyaさんのloconを拡張

    • LoCon から Conv レイヤーの実装をした

    • 設定

      • dim <= 64

      • alpha = 1 以下, 0.3とか

      LoRA with Hadamard Product representation (LoHa)

     警告: LoHa で dim>64 を使用することは想定されていません。これは、SD のほとんどすべてのレイヤーで sqrt(original_dim) を超えています。

    不安定な損失を引き起こすか、単に NaN になる可能性があります。

    高いdimのLoHaを使用したい場合は、低いlrを使用してください

    再度の警告: パラメータ効率の良いアルゴリズムをパラメータ効率の悪い方法で使用するのは得策ではありません

      (IA)^3

       参照: 少数ショットのパラメーター効率的な微調整は、コンテキスト内学習よりも優れている。

       algo=ia3 を設定できます。

       このアルゴリズムには、より高い lr (約 5e-3~1e-2) が必要です。

       このアルゴリズムはスタイルの学習には適していますが、移行するのは困難です (トレーニングしたモデルでのみ妥当な結果を得ることができます)。

       このアルゴリズムは非常に小さなファイル (約 200 ~ 300 KB) を生成します。

       LoKR

       基本的には LoHA と同じ考え方ですが、クロネッカー積を使用します

       このアルゴはlrを調整する必要がある場合があります

        このアルゴは性格もスタイルも学習できますが、サイズが小さい(オートファクター、フルランク、2.5MB)ため、転送も大変です。

        このアルゴリズムは比較的小さいファイルを生成します (自動係数: 900~2500KB)

        より小さい係数を使用すると、より大きなファイルが生成されます。2.5MB のフル ランクが十分ではないと思われる場合は、調整できます。

    LoCon拡張とLyCORIS拡張 メモ

    a1111-sd-webui-locon:[lora]フォルダにある Lycoris (Locon)ファイルを判別、処理する。

    <lora:MODEL:WEIGHT>

    a1111-sd-webui-lycoris:[Lycoris]フォルダにある Lycoris (Locon)ファイルを処理する。プロンプトから重みづけ指定が可能。

    <lyco:MODEL:TE_WEIGHT:UNET_WEIGHT>

    Model名とTextEncoderのweightとu-netのweightを設定してやらないといけないのですね

    予定

     LoRAのリサイズ、階層別マージも時間があればやりたい。

    メモ 使いまわし設定の一部を変更してLyCORISを使う

    (この設定値は二次元キャラのLoRAを作るのが前提なので実写系はもっと数値が高いと思います。)

    LoCon使う時

     --network_module lycoris.kohya

      --network_dim=16

     --network_alpha=8

      --network_args "conv_dim=8" "conv_alpha=1" "dropout=0.05" "algo=lora"

    LoHA使う時

     --network_module lycoris.kohya

      --network_dim=8

     --network_alpha=4

      --network_args "conv_dim=4" "conv_alpha=1" "dropout=0.05" "algo=loha"

    ia3使う時(検証してない)

     --network_module = lycoris.kohya

     --network_dim = 32

     --network_alpha=16

     --network_args = "conv_rank=32", "conv_alpha=4", "algo=ia3"

     --learning_rate = 1e-3

    lokr使う時

     --network_module lycoris.kohya

      --network_dim=8

     --network_alpha=4

     --network_args = "conv_rank=4", "conv_alpha=1", "algo=lokr",”decompose_both=True”,”factor=-1”

     --unet_lr=3.0e-4

     --text_encoder_lr=1.5e-4

    消費メモリの削減

    --gradient_checkpointingオプションを付けると学習速度が遅くなる代わりに消費メモリが減る。

    消費メモリが減った分バッチサイズを増やせば全体の学習時間は速くなる。

    公式のドキュメントにはオンオフは学習の精度には影響しないとあるため、

    VRAMが少ない環境では学習速度の改善には--gradient_checkpointingオプションを追加してバッチサイズを増やすのが有効。

    参考

    VRAM8G、LoHa、512 x 512の場合、バッチサイズ15まで動作できることを確認。

    VRAM8G、LoHa、768 x 768の場合、バッチサイズ5まで動作できることを確認。

    SD2.0以降を学習時のベースモデルに使う場合

    --v2

    --v_parameterization

    --resolution=768,768

    768サイズで学習させているベースモデルなので

    追加学習時に解像度を768設定してみます

    新しい投稿からlokrに切り替えてみました。

     1.13it/s --optimizer_type lion

     1.33it/s --use_8bit_adamW

    どうも学習が上手く行かないのでLoRAに戻してみます、lokrはちょっとピーキーな感じがする・・・。

    optimizerにlion使うには

     sd-scriptフォルダを右クリックでターミナルで開くを選び

     venv/Scripts/activate

     pip install lion-pytorch

    で導入しておきます

    https://github.com/lucidrains/lion-pytorch

    --optimizer_type lion

    tomlファイル使うと楽になるらしいです

    • --config_file.toml ファイルを指定してください。ファイルは key=value 形式の行で指定し、key はコマンドラインオプションと同じです。詳細は #241 をご覧ください。

    • ファイル内のサブセクションはすべて無視されます。

    • 省略した引数はコマンドライン引数のデフォルト値になります。

    • コマンドライン引数で .toml の設定を上書きできます。

    • --output_config オプションを指定すると、現在のコマンドライン引数を--config_file オプションで指定した .toml ファイルに出力します。ひな形としてご利用ください。 

    参考にした情報

     ふたば may AIに絵を描いてもらって適当に貼って適当に雑談するスレ 不定期

     としあきwiki 上のスレのまとめ

     なんJ なんか便利なAI部 5ch

     /vtai/ - VTuber AI-generated Art 4ch

     くろくまそふと

     経済的生活日誌

     Gigazine

     原神LoRA作成メモ・検証

     AIものづくり研究会@ディスコード

     [Guide] Make your own Loras, easy and free@CIVITAI

     https://rentry.org/59xed3

     githubのreadme sd-scriptとLyCorisとautomatic1111辺り 細かい設定や変更点・バグなどがあるので検索だけでは分からない事があります

    使いまわししてる設定(LoRA)

     --max_train_epochs --dataset_repeats --train_data_dirだけ変えています。

    accelerate launch --num_cpu_threads_per_process 16 train_network.py

    --pretrained_model_name_or_path=C:\stable-diffusion-webui\models\Stable-diffusion\hogehoge.safetensors

    --train_data_dir=C:\train\kyousi\

    --output_dir=C:\train\outputs

    --reg_data_dir=C:\train\seisoku

    --resolution=512,512

    --save_every_n_epochs=1

    --save_model_as=safetensors

    --clip_skip=2

    --seed=42

    --network_module=networks.lora

    --caption_extension=.txt

    --mixed_precision=fp16

    --xformers

    --color_aug

    --min_bucket_reso=320

    --max_bucket_reso=512

    --train_batch_size=1

    --max_train_epochs=15

    --network_dim=32

    --network_alpha=16

    --learning_rate=1e-4

    --use_8bit_adam

    --lr_scheduler=cosine_with_restarts

    --lr_scheduler_num_cycles=4

    --shuffle_caption

    --keep_tokens=1

    --caption_dropout_rate=0.05

    --lr_warmup_steps=1000

    --enable_bucket

    --bucket_no_upscale

    --in_json="C:\train\marge_clean.json"

    --dataset_repeats=5

    --min_snr_gamma=5

    使いまわししている設定(Dylora)

    accelerate launch --num_cpu_threads_per_process 16 train_network.py

    --pretrained_model_name_or_path=C:\stable-diffusion-webui\models\Stable-diffusion\hogehoge.safetensors

    --train_data_dir=C:\train\kyousi\

    --output_dir=C:\train\outputs

    --reg_data_dir=C:\train\seisoku

    --resolution=512,512

    --save_every_n_epochs=1

    --save_model_as=safetensors

    --clip_skip=2

    --seed=42

    --network_module=networks.dylora

    --caption_extension=.txt

    --mixed_precision=fp16

    --xformers

    --color_aug

    --min_bucket_reso=320

    --max_bucket_reso=512

    --gradient_checkpointing

    --train_batch_size=15

    --max_train_epochs=15

    --network_dim=32

    --network_alpha=16

    --network_args "conv_dim=32" "conv_alpha=16" "unit=8"

    --learning_rate=1e-4

    --use_8bit_adam

    --lr_scheduler=cosine_with_restarts

    --lr_scheduler_num_cycles=4

    --shuffle_caption

    --keep_tokens=1

    --caption_dropout_rate=0.05

    --lr_warmup_steps=1000

    --enable_bucket

    --bucket_no_upscale

    --in_json="C:\train\marge_clean.json"

    --dataset_repeats=2

    --min_snr_gamma=5

    使いまわししている設定(LoHA)

    accelerate launch --num_cpu_threads_per_process 16 train_network.py

    --pretrained_model_name_or_path=C:\stable-diffusion-webui\models\Stable-diffusion\hogehoge.safetensors

    --train_data_dir=C:\kyousi\

    --output_dir=C:\train\outputs

    --reg_data_dir=C:\train\seisoku

    --resolution=512,512

    --save_every_n_epochs=5

    --save_model_as=safetensors

    --clip_skip=2

    --seed=42

    --network_module lycoris.kohya

    --network_args "conv_dim=4" "conv_alpha=1" "dropout=0.05" "algo=loha"

    --caption_extension=.txt

    --mixed_precision=fp16

    --xformers

    --color_aug

    --min_bucket_reso=320

    --max_bucket_reso=512

    --gradient_checkpointing

    --train_batch_size=15

    --max_train_epochs=15

    --network_dim=8

    --network_alpha=4

    --learning_rate=1e-4

    --use_8bit_adam

    --lr_scheduler=cosine_with_restarts

    --lr_scheduler_num_cycles=4

    --shuffle_caption

    --keep_tokens=1

    --caption_dropout_rate=0.05

    --lr_warmup_steps=100

    --enable_bucket

    --bucket_no_upscale

    --in_json="C:\train\marge_clean.json"

    --dataset_repeats=2

    --min_snr_gamma=5

    --logging_dir=logs

    学習時のベースモデルはAOM2を使っています

    いわゆる1.4系?ですけど使用モデルをotherにしています

    絵を生成する時は

     1.AOM2

     2.AOM3

     3.Counterfeit-V2.5

     4.Defmix-v2.0

     5.hassakuHentai

     6.SukiAniMix

     7.QuinceMix

     8.yabalMix

     9.breakdo

    10.Counterfeit-V3

    辺りの相性は良さそうです

    個人の好みの話になってくると思いますので好きなモデルでお試しください

    XYZ plotでモデルを一通り試すといいかもしれません

    ※1引用元

    https://www.kkaneko.jp/ai/win/stablediffusion.html より引用致しました

    使用マシン 

         OS Win11

         CPU Ryzen9 5950x

         RAM DDR4 128GB

         GPU 3060 VRAM 12GB/4070 VRAM 12GB

         ストレージ HDD何台かとNVMeを二台

    Colabでの学習(調べ終わってないのでその内ちゃんと書きます)

    webui automatic1111の日本語化拡張レポジトリの方が書いた大変分かり易いcolabの解説記事があったので

    紹介します。

    Linaqruf/kohya-trainer | GenerativeAI Wiki (katsuyuki-karasawa.github.io)

    ----------------------------------------

    そして

    「オレはようやくのぼりはじめたばかりだからな、このはてしなく遠いAI絵坂をよ…」

    ----------------------------------------

    著作権とかの話

    【AI】生成AIを利用する場合に気を付けなければならない著作権の知識|福岡真之介|note

    ①LLM作成段階

    ②ファインチューニング段階

    ③プロンプト入力段階

    ④アウトプット段階

    ①合法

    ②合法

    ③プロンプトの内容によっては「著作権者の利益を不当に害する場合」にあたる場合もある。

    ④著作権侵害は、アウトプットが、他人の著作物に依拠し、他人の著作物と類似性がある場合に成立します。

    このように生成AIを利用するにあたっては、著作権や商標権に注意する必要があります。日本では、機械学習のための著作物の利用が比較的自由であるといえますが、全く自由というわけではなく、「著作権者を不当に害する場合」などは著作権侵害になることは注意が必要です。

    もっとも、「著作権者を不当に害する場合」が曖昧なので、今後はガイドラインなどが作成され、明確化されることが望ましいといえます。

    本来は裁判例の蓄積を待つべきですが、裁判例が蓄積するには10年単位の時間がかかるので、AIの技術進歩の速さを考えるとあまりにも長すぎるといえるでしょう。

    ----------------------------------------

    大阪大学の 生成AI(GenerativeAI)の倫理的・法的・社会的課題(ELSI)の論点の概観

    https://elsi.osaka-u.ac.jp/system/wp-content/uploads/2023/04/ELSI_NOTE_26_2023_230410.pdf

    大変分かりやすくまとまっていると思います

    Description

    加筆修正しました。

    出来るだけ現状に即した内容にしたつもりですが、

    研究・開発途上なので常に最新というのは難しいと思います。

    webui automatic1111の開発者様、LyCorisの開発者様、sd-scriptの開発者様にはいつもお世話になっております。他にも参考情報としたサイト様など数え上げたらきりがありません。感謝感謝。

    毎日記録が更新し続けるAI界隈では常に知識にアップデートが必要です。

    ガイドは基本的にオンライン上で読んで頂いて不明な所とかは参考情報で紹介しているサイトに飛んで情報を漁るのが効率が良いと思います。

    不明な点があればコメントで質問して頂ければ分かる範囲で答えます。

    自分用にまとめたのを公開しているので色々と足りない所があるかと思いますが、LoRA作りの一助となれば幸いです。(^^)

    Other
    Other

    Details

    Downloads
    775
    Platform
    CivitAI
    Platform Status
    Deleted
    Created
    4/6/2023
    Updated
    8/9/2025
    Deleted
    8/7/2025

    Files

    GUIDEUseCreateAndPostLoraForBeginnersToIntermediate_v10.zip