この記事のポイント
- LoRA技術の基本概念と効率的なモデルファインチューニングのメカニズムを解説
- LoRAの導入方法と具体的な活用事例を詳細に紹介
- Stable Diffusion WebUIでのLoRA使用手順を具体的に解説
- LoRAについて学ぶための有用なリソースを紹介
監修者プロフィール
坂本 将磨
Microsoft AIパートナー、LinkX Japan代表。東京工業大学大学院で技術経営修士取得、研究領域:自然言語処理、金融工学。NHK放送技術研究所でAI、ブロックチェーン研究に従事。学会発表、国際ジャーナル投稿、経営情報学会全国研究発表大会にて優秀賞受賞。シンガポールでのIT、Web3事業の創業と経営を経て、LinkX Japan株式会社を創業。
AI技術の中でも注目を集める「LoRA(Low-Rank Adaptation)」についてご存じでしょうか。
この革新的な技術は、大規模な言語モデルを効率的に調整し、特定のタスクや領域に適応させることを可能にします。
本記事では、LoRAによるAIモデルの効率的なチューニングのメカニズムとメリットを詳しく説明し、Stable Diffusion WebUIを用いた具体的な導入方法を紹介します。
さらに、AIと著作権の関係やLoRAの商用利用時の注意点、学習に役立つリソースなど、実践に直結する情報も提供しています。
初心者から上級者まで、幅広い読者がLoRAの可能性を理解し、実際に適用するための知識を深められる内容となっています。
この記事が、LoRA技術の理解を深め、効果的な活用を目指す皆様の一助となれば幸いです。
LoRA(Low-Rank Adaptation)とは?
LoRAとは
LoRA(Low-Rank Adaptation)は、特に画像生成AIの分野で注目されている技術で、大規模な言語モデル(LLM)をより効率的に調整するための手法です。
この技術により、モデル全体を再トレーニングせずに、特定のスタイルやタスクに対応した画像生成が可能になります。
低ランク行列を使ってモデルの効率性を向上させる仕組み
LoRAでは、モデルの重み行列(パラメータ行列)に対して、低ランク行列を使用します。具体的には、次のようなアプローチを取ります。
-
重み行列の分解
元の重み行列Wを、2つの低ランク行列AとBの積として表現します。つまりのW=A*Bにします。
この分解により、元の行列よりもはるかに少ないパラメータで同等の情報を表現できるようになります。
-
低ランク行列の学習
元のモデルの重み行列は固定したまま、低ランク行列AとBだけを学習します。
このようにして、更新するパラメータの数が大幅に減少し、計算負荷とメモリ使用量が削減されます。
LoRAのメリット
LoRA(Low-Rank Adaptation)を一般的に用いる際のメリットは以下の通りです。
- コスト効率の向上
LoRAは、少ないデータと計算リソースで効果的なファインチューニングを行えるため、特に個人開発者やスタートアップにとって、大規模なAIモデルを運用するコストを大幅に削減できます。
- メモリ効率の向上
モデル全体をファインチューニングする代わりに、少ないパラメータで適応が可能なため、メモリ使用量が大幅に削減され、軽量なデバイスでも動作が可能です。
- 高速なトレーニング
学習するパラメータ数が少ないため、トレーニング時間が短縮され、迅速なプロトタイプ作成と実験が可能になります。
- 柔軟な適応
様々なタスクやドメインに迅速に適応可能で、カスタムタスクに対する精度向上が期待できます。これにより、異なるタスク間でのモデルの切り替えも容易になります。
- モデルの再利用性の向上
既存の大規模なモデルをベースにして、追加トレーニングのみで適応可能です。これにより、モデルの再利用性が向上し、コスト効率が高まります。
これらのメリットにより、LoRAはAIモデルの運用を効率化し、さまざまなビジネスニーズに対応するための強力なツールとなっています。
LoRA(Low-Rank Adaptation)とファインチューニングの違い
LoRA(Low-Rank Adaptation)とファインチューニングの主な違いは、モデルのパラメータの更新方法と効率性にあります。
項目 | LoRA | ファインチューニング |
---|---|---|
パラメータ更新 | 約0.1%〜1%のパラメータのみ更新 (例: 100K〜1Mパラメータ) |
全パラメータを更新 (例: 100M〜1Bパラメータ) |
計算コスト | 1〜2時間程度で完了 (例: 1枚のRTX 2080 Ti GPU使用) |
数時間〜数日 (例: 8枚のV100 GPUで数時間〜数日) |
メモリ使用量 | 数百MB〜数GB (例: 約1〜5GB) |
数十GB〜数百GB (例: 約50〜350GB) |
タスク切り替え | 数分〜数時間で可能 (LoRA層を切り替えるだけ) |
再トレーニングに数時間〜数日 |
適応環境 | ローカルPCや小規模サーバーでも運用可能 (8〜16GB RAM) |
高性能サーバーやクラウド環境が必要 (32GB以上のRAMが推奨) |
LoRAの特徴
LoRAは、少ないリソースで効率的にモデルを調整できるため、特にリソースが限られた環境での大規模モデルの運用において有利です🙆♂️
LoRAの特徴
-
低ランク行列の使用
LoRAは、モデルの重み行列に低ランクの行列を追加し、元の重みを固定したまま、追加した行列のみを学習します。これにより、学習するパラメータ数が大幅に削減されます. -
効率的な学習
LoRAは少ないパラメータで学習するため、計算コストとメモリ使用量が低く抑えられます。これにより、限られたリソースでも大規模モデルのファインチューニングが可能です. -
タスクの切り替えが容易
LoRAでは、ベースモデルを変更せずにLoRA層を差し替えるだけでタスクを切り替えることができます。これにより、異なるタスク間でのスムーズな切り替えが可能です.
ファインチューニングの特徴
ファインチューニングは、特定のタスクに対してモデルを最適化するために適していますが、リソースの消費が大きいという課題があります🙆
ファインチューニングの特徴
-
全パラメータの更新
従来のファインチューニングでは、モデルの全てのパラメータを更新します。これにより、モデルが特定のタスクに最適化されますが、計算コストやメモリ使用量が高くなります. -
高い計算コスト
全パラメータを学習するため、LoRAと比較して計算資源が多く必要となります。特に大規模モデルでは、このコストが大きな負担となることがあります. -
タスク特化型
ファインチューニングは特定のタスクに対してモデルを最適化するため、他のタスクに転用する際には再度ファインチューニングが必要になります。
LoRAの活用方法
1. Flux1.とLoRAの掛け合わせ①
FLUX.1は、Stable Diffusionの開発者たちが設立したBlack Forest Labsが発表した最新の画像生成AIモデルです。特に、リアル性やプロンプトの忠実性において優れており、オープンソースであるため自由度が高い点が特徴です。
Xプレミアム以上のユーザーが対象になりますがX上からGrokにアクセスし、FLUX.1の画像生成を使用することも可能です🙆♀️。
تجربة الذكاء الاصطناعي flux.1 + loRA الجديد على لاعبين الهلال pic.twitter.com/jAnbJ87jbQ
— ماجد (@majed_9_4) August 18, 2024
【関連記事】
Grokとは?最新版Grok2や、画像生成機能の使い方をわかりやすく解説 | AI総合研究所
xAIが開発したaiモデル「Grok」を詳説。主な特徴や最新版Grok-2の特徴、画像生成機能など多角的に解説。他AIとの比較や使用例も紹介し、Grokの可能性を探ります。
https://www.ai-souken.com/article/what-is-grok-flux
2. Flux1.とLoRAの掛け合わせ②
イラストと実写の組み合わせも可能です。
こんな感じで生成できる pic.twitter.com/mBtkvStjYC
— さとり (@satori_sz9) August 18, 2024
2.Flux1.とLoRAの掛け合わせ③
まるで様々な土地へ足を運んだかのような画像を投稿しています。
We’ve officially crossed the chasm on AI photos.
— Justine Moore (@venturetwins) August 17, 2024
These would easily fool my friends & family members.
Generated in minutes on @replicate’s LoRA trainer for Flux (@bfl_ml). pic.twitter.com/7zOjQvlac4
4.医療画像診断
LoRAは、医療画像診断において、従来のファインチューニング手法に代わる効率的なアプローチとして注目されています。
MeLo(Medical image Low-rank adaptation)という手法では、計算コストとメモリ使用量を抑えつつ、複数の診断タスクにおいて競争力のある結果を達成してます。
例えば、胸部X線や乳房撮影、血液細胞識別といった異なる医療画像診断タスクにおいて、従来のファインチューニングと同等以上の性能を発揮し、わずか0.17%のパラメータで実現しました。
GPUメモリの使用量を削減し、迅速なタスク切り替えを可能にするため、実際の医療現場での導入や維持が容易になる点に注目が集まっています。
MeLoは元のモデルに対して大幅な変更を加えずに、少量の追加パラメータで簡単に異なる医療診断タスクに適応させることができる 参考:MELO: LOW-RANK ADAPTATION IS BETTER THAN FINE-TUNING FOR MEDICAL IMAGE DIAGNOSIS
5.水彩画に特化
パブドメ画像オンリーでトレーニングした水彩特化のStableDiffusionカスタムLora公開しました。
— 深津 貴之 / THE GUILD (@fladdict) April 2, 2023
このお祖母ちゃんとか、かなりお気に入り。https://t.co/fvYO0pocP4 pic.twitter.com/fDOwAePJNA
画像生成AIにおけるLoRAの役割
LoRAを画像生成AIに導入することには、以下の利点があります。
- 低コストでのファインチューニング
LoRAは、少ないデータと計算リソースで効果的にファインチューニングを行うことができるため、個人開発者やスタートアップでも大規模モデルを扱いやすくなります。
- 画像生成のクオリティ向上
LoRAを使用することで、ユーザーの好みに合わせたイラストや写真の生成が可能になり、画像生成のクオリティが向上します。
- 同一人物の画像生成
LoRAは、同一人物の画像を続けて生成することができ、キャラクターの一貫性を保つことが可能です。これにより、企業のブランディングやマーケティングに役立ちます.
- 特定のスタイルへの適応
LoRAを利用することで、特定のアーティスティックスタイルやシナリオに特化した画像生成が可能になり、クリエイティブなプロジェクトがスピードアップします.
- 計算資源の節約
LoRAは、GPUメモリーの使用量を減らし、計算コストを抑えることができます。
これにより、学習済みモデルのパラメーターを効率的に保存できるため、データ容量も削減されます。
これらのメリットにより、LoRAは画像生成AIの効率的なファインチューニングを可能にし、多様なビジュアルコンテンツの生産を支援します。
LoRA導入方法
LoRA導入方法は大きく5つあります。
指標 | 1.ローカル環境でおこなう | 2.Google Colabを使用する | 3.クラウド (AWS, Azure, etc.)を使用する | 4.Hugging Face Spacesを使用する | 5.Kaggle Notebooksを使用する |
---|---|---|---|---|---|
初期設定の難易度 | 高: ハードウェア設定や依存関係のインストールが必要 | 低: 簡単に設定可能 | 中: クラウド設定やコスト管理が必要 | 低: ノーコードで簡単にデプロイ可能 | 低: 事前設定された環境が利用可能 |
コスト | 既存のハードウェアを使用 | ¥1,179~/月 (Colab Pro) | 使った分だけ料金が発生 | 無料 (制限あり) | 無料 (制限あり) |
リソースのパワー | ハードウェアに依存 | 中程度: 高性能なGPUが利用可能 | 高: 必要なリソースに応じてスケール可能 | 低: 制限されたリソースを使用 | 中程度: 無料でGPUを利用可能 |
継続性 | 高 | 低: セッション時間制限や切断のリスクあり | 高: 常時利用可能 | 低: 無料枠でリソースが限られる | 低: セッションごとの制限あり |
学習パラメータの管理 | 高: 自分で完全に制御可能 | 中: セッションごとにリセットのリスクあり | 高: 完全にカスタマイズ可能 | 低: 既定の設定で動作 | 低: 自動設定に依存 |
この記事では、LoRAをローカル環境に導入する手順を説明します。
【使用したPC】
MacBook Air
チップ:Apple M2
OS:Sonoma14.6.1
下準備編
LoRAをローカル環境に導入する下準備
1.Homebrewのインストール
- まず、ターミナルを開き、以下のコードを貼り付けてHomebrewをインストールします。ターミナルはFinderの「ユーティリティ」フォルダ内にあります。
このコードをターミナルに貼り付けます
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
パスワードを求められた場合は、Macのロック解除に使用するパスワードを入力します(入力中の文字は表示されませんが、正常に入力されています)。
- 次に、以下のコマンドを実行してパスを設定します。
export PATH="$PATH:/opt/homebrew/bin/"
- インストールが完了したかどうかを確認するには、以下のコマンドをターミナルに入力します。
brew --version
- 「Homebrew 4.3.1」 のようにバージョンが表示されれば、インストール成功です🍺
2.Stable Diffusion Web UI(AUTOMATIC1111)のインストール
- 以下のコマンドで必要なライブラリをインストールします。
brew install cmake protobuf rust python@3.10 git wget
- Stable Diffusion Web UIのリポジトリをローカルPCにクローンします。
以下のコードをターミナルで実行してください。
GithubからStableDiffusionをクローン
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
- Stable Diffusion WebUI がインストールされているディレクトリに移動します。
cd ~/stable-diffusion-webui
- WebUI を起動するためのコマンドを実行します。
./webui.sh
-
ターミナルに表示された URL(通常は http://127.0.0.1:7860 のような形)をブラウザに入力してアクセスします。
これで、Stable Diffusion WebUI を利用できます。
-
動作確認
例として「tx2img」に「a dog, wearing a hat」(帽子を被った犬)入力しました。
「Generate」をクリックし、右下に画像が出力されることを確認します。
Stable Diffusion Web UIでの画像生成を確認
これでWeb UIのセットアップは完了です。
3.Kohya's GUIのインストール
下準備
Kohya_ss GUIを実行するには、Python 3.10.9以上、3.11.0未満のバージョンが必要です。
ターミナルで「python --version」と入力すると、バージョン確認が可能です。必要に応じて再インストールしてください。
仮想環境の有効化
python -m venv venv
source venv/bin/activate
インストール手順
Kohya_ss GUIをインストールします。
git clone https://github.com/bmaltais/kohya_ss.git
セットアップを開始するには、次のコマンドを実行します。
```bash
./setup.sh
以下のコマンドでkohya_ssに必要なモジュールを一括インストールします。
pip install -U -r requirements.txt
その後、以下のコマンドでKohya'sGUIが立ち上がるか確認します。
./gui.sh
リンクをクリック
LoRAの作成方法
これで、Kohya's GUIでLoRAを実行する準備が整いました。次にLoRA学習用のデータを用意する方法を説明します。
手順は大きく分けてこの2ステップです。頑張っていきましょう🔥
Stable Diffusionで学習用データを用意する
- 学習用画像の用意
まず、Kohyaの中に「outputs」・「training」・「training_archive」というフォルダーを作っておきます。
そして、「training」フォルダーの中に、さらにフォルダーを作ります。
以下が最終的なディレクトリ構成になります。
Kohya/
├── outputs/
├── training/
│ └── 20_robot/
│ ├── robot_1.png
│ ├── robot_1.txt
│ ├── robot_2.png
│ ├── robot_2.txt
│ ├── robot_3.png
│ ├── robot_3.txt
│ ├── robot_4.png
│ └── robot_4.txt
└── training_archive/
今回は、20_robotというフォルダーを作り、その中に学習させる画像を格納していきます。
処理限度を考慮し、20~30枚くらいが目安です。
画像のサイズ・縦横比はバラバラで問題ありませんが、連番のファイル名に変更しておきます。
これは、LoRAがトレーニング画像を読み込めるようにするために必要です。
- 拡張機能の使用
Stable Diffusion Web UIは拡張機能を入れることで様々な機能を付与することができます。
今回はTaggerとDataset Tag Editorを使用します。
【Tagger】
- Taggerは、画像から自動的にプロンプトを生成してくれるツールです。
- 画像に適切なタグ付けを行う手間が省け、LoRAの学習に必要なテキストデータを素早く準備できます
【Dataset Tag Editor】
- Dataset Tag Editorは、Taggerで生成されたプロンプトを手動で編集するためのツールです。
- 自動生成プロンプトの不要なタグを削除・追加したりすることができます。
自動生成されたプロンプトがほぼ正確で、特に修正の必要がない場合は、Taggerのみの使用でも問題ありません。
ただ、合わせて使用することで、微調整(特定のタグを削除・追加)により、高品質なデータセットが作成できるのでおすすめです🙆♂️
GitのURLはここ
「URL for extension’s git repository」にGitのURLを入力し、「Install」を押します。
ここにURLを入力
あとは「Installed」タブに戻り、反映されているのを確認してから「Apply and restart UI」をクリックします。
それぞれTaggerとDataset Tag Editorに対して行います。
Apply and restart UIをクリックして完了
【Taggerの使い方】
TaggerをStable Diffusioinにインストール出来たら、先ほど学習画像を格納したフォルダーのパスをコピーし、Batch from directory内で「Input directory」と「Output directory」に入力します。
画面下部の「Additional tags (comma split)」には「training」フォルダ内に作成した「[学習の繰り返し回数]_[トリガープロンプト]」の「トリガープロンプト」を入力します。
Taggerの設定を行う
Interrogateをクリックしてしばらく待ちます。これでTaggerの工程は完了です。
【Dataset Tag Editorの使い方】
まずは、画像を読み込むため、「Dataset directory」にTaggerの時と同じく学習画像を格納したフォルダーを入れて、「Load」をクリックします。
- 「Batch Edit Captions > Remove」で、学習したいプロンプトを選択します。
- 「Remove selected tags」 をクリックして、選択したタグを削除します。
学習してほしいタグにチェックをつけて、Remove selected tagsをクリック
KohyaでLoRAを作成する
- Kohyaの最上部のメニュータブで「LoRA > Training」を選択します。
※Dreamboothのタブと間違えないように気を付けます。
LoRAタブを開きます
- Accelerate launch設定
デフォルトはfp16になっているので注意
ここでは「MixedPrecision」を「no」に設定します。
これはAppleのMetal Performance Shaders(MPS)デバイス上で発生する互換性の問題を回避するためです。
設定項目 | 説明 |
---|---|
Mixed precision | 精度を保ちながらメモリ使用量を削減し、トレーニング速度を向上。Macでは「no」に設定推奨。 |
Number of processes | 同時実行するプロセス数。増やすと並列処理が可能だが、CPU負荷増加の可能性あり。 |
Number of machines | トレーニングに使用するマシンの数。分散学習に利用。 |
Number of CPU threads per core | 各プロセスに割り当てるCPUスレッド数。増やすと効率向上も、オーバーヘッドの可能性あり。 |
Dynamo backend | Dynamo JITコンパイラを使用するかどうか。使用時の互換性に注意。 |
Dynamo mode | Dynamoの最適化モード。「fullgraph」は全体のグラフ最適化だが、メモリ使用量が増加する可能性あり。 |
- Models設定
Models設定
⭐️が付いているモデルはMac環境でも問題なく動作することが期待されます。
その他のモデルはリソース消費が大きいため、Macでは動作が重くなる可能性があります。
用途や必要な画像の品質に応じて使い分けてください。
用途 | モデル | GPU推奨度 | ローカルでの使用 |
---|---|---|---|
高品質な画像生成・修正 | stabilityai/stable-diffusion-xl-base-1.0 stabilityai/stable-diffusion-xl-refiner-1.0 |
高(RTX 3090以上) | 可能だがリソース消費大 |
512x512サイズの画像生成 ⭐️ | stabilityai/stable-diffusion-2-1-base/blob/main/v2-1_512-ema-pruned | 中(RTX 3060以上) | ○ |
一般的な用途 ⭐️ | stabilityai/stable-diffusion-2-1-base stabilityai/stable-diffusion-2-base stabilityai/stable-diffusion-2 |
中(RTX 3060以上) | ○ |
768x768サイズの高解像度画像生成 | stabilityai/stable-diffusion-2-1/blob/main/v2-1_768-ema-pruned | 高(RTX 3090以上) | 可能だがリソース消費大 |
多用途・高品質な画像生成 | stabilityai/stable-diffusion-2-1 | 高(RTX 3090以上) | 可能だがリソース消費が大きい |
軽量で高速な画像生成 ⭐️ | runwayml/stable-diffusion-v1-5 | 低(GTX 1650以上) | ◎ |
設定項目 | 説明 | 注意点 |
---|---|---|
Pretrained model name or path | 使用する事前学習済みモデルの名前またはパスを指定します。 | Mac環境でも互換性のあるモデルをおすすめします(⭐️付き) |
Image folder | トレーニングに使用する画像フォルダーのパスを指定します。 | パスが正しいことを確認。日本語や特殊文字を含まないように注意。 |
Trained Model output name | トレーニング後のモデルの出力名を指定します。 | 特に注意点はありませんが、識別しやすい名前を推奨。 |
Dataset config file (Optional) | データセットの設定ファイル(.toml)を指定します。 | 通常オプションです。設定が必要な場合のみ指定。 |
Save trained model as | トレーニング後のモデルを保存する形式を選択します。 | Macユーザーには「safetensors」の使用を推奨。互換性問題を回避しやすい。 |
Save precision | モデルを保存する際の精度を指定します。 | Macユーザーは「float」を選択。「fp16」や「bf16」はMPSで問題が発生する可能性あり。 |
ここで特に注意が必要なのが「Image folder (containing training images subfolders) 」の設定です。
Image folder の設定では、必ず複数の画像サブフォルダが含まれる親フォルダを選択してください。
例えば、次のようなフォルダ構成があるとします。
/training
├── /class1
├── /class2
└── /class3
class1,2,3にトレーニング用の画像がそれぞれ含まれている場合も、Imagefolderには/training
を設定します。
親フォルダを指定することで、Kohya's GUIはその中に含まれるすべてのサブフォルダとその中の画像を自動的に認識し、トレーニングに使用します。
これにより、複数のクラスやカテゴリにわたるデータセットを一度に処理することができます。
- Folders・Dataset Preparation設定
Folders・Dataset Preparation設定
設定項目 | 説明 | 注意点 |
---|---|---|
Output directory for trained model | トレーニング後のモデルが保存されるディレクトリを指定します。 | 事前に作成した 「training」フォルダー内の「[学習の繰り返し回数]_[トリガープロンプト]」を設定します。(例:/Users/ユーザー名/kohya_ss/kohya_ss/outputs/20_robot) |
Training images | トレーニング画像が含まれているディレクトリを指定します。 | 親フォルダを指定し、その中に複数のサブフォルダが含まれていることを確認。パスにスペースや特殊文字がないことを確認してください。 |
Regularisation images (Optional) | 正則化画像を保存するディレクトリを指定します。オプションです。 | 正則化画像(何もない画像を混ぜることで過学習を防ぐ)が必要な場合にのみ指定。通常は空欄のままでOK |
Destination training directory | トレーニングデータや正則化フォルダが保存される最終的なディレクトリを指定します。 | 出力ディレクトリが正しいことを確認し、ファイル名やパスに特殊文字を含まないように注意。 |
今回は、Repeat(学習の繰り返し数)は最初に設定した20_robot
の20
を指定しています。
- Parameters設定
いよいよパラメーターの設定です。
以下は一例ですが、下の表を参考に調整を行って下さい。
Parameters設定1
Parameters設定2
設定項目 | 説明 | 推奨設定 |
---|---|---|
LoRA type | LoRA(Low-Rank Adaptation)モデルのタイプを指定します。 | 「Standard」を使用するのが一般的です。 |
Train batch size | 一度に処理されるデータの数を指定します。 | バッチサイズを小さめ(例えば2〜4)に設定し、システムが安定して動作することを確認してください |
Epoch | データセット全体を何回繰り返して学習するかを指定します。 | 2回程度から始め、結果を見て調整します。(2~10) |
Seed | 学習の乱数シードを設定します。固定することで再現性が得られます。 | 1234はデフォルトで、0にしてランダムにすることも可能です。 |
Cache latents | 学習中に生成された潜在ベクトルのメモリ使用量を削減します。 | まずはCache Latentsを有効にして試し、メモリ不足や動作の不安定さが発生する場合は無効にすることを検討してください。 |
LR Scheduler | 学習率のスケジューリング方法を指定します。 | 「cosine」が推奨されます。 (学習率を自然なカーブで減少させることで、モデルがより安定して最適化されるため) |
Optimizer | 学習に使用する最適化アルゴリズムを指定します。 | 「AdamW」など標準的なものを選択します。 |
Learning rate | 学習率を指定します。学習率が高すぎると発散しやすく、低すぎると学習が遅くなります。 | 0.0001のような初期値から始め、徐々に調整します。 |
LR warmup (% of total steps) | 学習初期において、徐々に学習率を上げるウォームアップステップを指定します。 | 通常は0で、特別な理由がある場合に設定します。 |
Max resolution | トレーニング画像の最大解像度を指定します。 | 解像度を「512x512」や「640x640」に設定し、高すぎない解像度でトレーニングを行うようにします。650以上に設定する際は、メモリ負荷に注意が必要です。 |
Enable buckets | 異なるサイズの画像を効果的に処理するバケット機能を有効にします。 | 有効にした状態で試し、動作に問題がないか確認してください。不安定な場合は、固定解像度でのトレーニングを検討します。 |
StableDiffusionでLoRAを使用するステップ
次はStableDiffusionで自作の画像を作成する手順を解説していきます。
ステップ1: 必要なファイルの準備
1.VAEファイル(vae.safetensors)
VAEファイルをStable Diffusionの「models/VAE」フォルダに移動します。
VAE(Variational Autoencoder)は、生成される画像のクオリティや色合いを調整するために使用されます。
より鮮明で自然な色合いを持つ画像が生成されるため、おすすめです。
今回はvae-ft-mse-840000-ema-prunedを利用しています。
2.EasyNegativeファイル(「easynegative.safetensors」)
EasyNegativeファイルを「models/embeddings」フォルダに移動します。
EasyNegativeファイルはTextual Inversionの技術を利用して、ネガティブプロンプト(生成したくない特徴を抑制するためのプロンプト)として機能します。
EasyNegativeを使用することで、画像生成時に避けたい要素(例: 低画質、フレームアウト、指の本数の間違い等)を減少させることができます。
3.ベースモデル(例:「beautifulRealistic_v7.safetensors」)
ベースモデルを「models/Stable-diffusion」フォルダに移動します。
今回はCivitaiから美しいリアルなアジア系の人物が反映されるbeautifulRealistic_v7.safetensorsを利用しています。
4.LoRAファイル(「robot_lora.safetensors」など)
Kohya's GUIで作成したLoRAファイルをStable Diffusionの「models/Lora」フォルダに移動します。
ステップ2: Stable Diffusion WebUIの起動
- WebUIを開く
Stable Diffusion WebUIを起動し、ブラウザでアクセスします。
./ webui.sh
- ベースモデルの選択
- WebUIの「Checkpoints」タブから、使用したいベースモデル(例: 「beautifulRealistic_v7.safetensors」)を選択します。
ベースモデルの選択
ステップ3: VAEの設定
VAEの設定
VAEの選択
- 「Settings」 または 「Extensions」 タブに移動し、「vae.safetensors」をVAE設定セクションで選択します。
- 設定を保存し、必要に応じてWebUIを再起動します。
ステップ4: EasyNegativeの適用
EasyNegativeの適用
Textual Inversionの設定
- 「txt2img」 または 「img2img」タブに移動し、「Textual Inversion」タブをクリックして、「easynegative」を選択します。
- これにより、ネガティブプロンプトとしてEasyNegativeが適用されます。
ステップ5: LoRAの適用
- LoRAの選択
- 「txt2img」 または 「img2img」 タブで、プロンプトにLoRAを適用するために 「lora:robot_lora:1」のような形式でLoRAを指定します。「robot_lora」は使用するLoRAのファイル名に対応します。
LoRAの選択
-
プロンプトの入力
- プロンプトを入力し、LoRAが適用された状態で画像生成を行います。
例:
<lora:robot_lora:1> A beautiful woman with a stunning, realistic face, combined with advanced, sleek white armor that reflects the intricate design learned by the LoRA.
ステップ6: 生成設定の調整
- Sampling MethodやStepsの設定
- 「Sampling Method」 や 「Sampling Steps」 を設定します。
初期設定としては 「DPM++ 2M」や 「20~50ステップ」がおすすめです。
- 「Sampling Method」 や 「Sampling Steps」 を設定します。
- CFG Scaleの設定
- 「CFG Scale」を7~10に設定し、プロンプトに対する忠実度を調整します。
- 「CFG Scale」を7~10に設定し、プロンプトに対する忠実度を調整します。
- 解像度の設定
- 画像サイズ(Width/Height)を設定します。通常は512x512から始め、必要に応じて768x768や1024x1024に設定します。
ステップ7: 画像の生成
「Generate」ボタンをクリックして、画像生成を開始します。
生成された画像を確認し、結果に応じてプロンプトや設定を微調整します。
プトや設定を微調整し、再度生成を行って最適な結果を得ます。
LoRA学習で生成した画像
LoRAと著作権の関係
LoRAと著作権の関係については、AI開発・学習段階と生成・利用段階に分けて検討される必要があります。
日本の著作権法は、著作物の保護と公正な利用をバランスよく保つことを目的としており、AIの利用についてもこのバランスが求められます。
1.AI開発・学習段階(著作権法第30条の4)
著作物に表現された思想又は感情の享受を目的としない利用
第三十条の四
著作物は、次に掲げる場合その他の当該著作物に表現された思想又は感情を自ら享受し又は他人に享受させることを目的としない場合には、その必要と認められる限度において、いずれの方法によるかを問わず、利用することができる。ただし、当該著作物の種類及び用途並びに当該利用の態様に照らし著作権者の利益を不当に害することとなる場合は、この限りでない。
一 著作物の録音、録画その他の利用に係る技術の開発又は実用化のための試験の用に供する場合
二 情報解析(多数の著作物その他の大量の情報から、当該情報を構成する言語、音、影像その他の要素に係る情報を抽出し、比較、分類その他の解析を行うことをいう。第四十七条の五第一項第二号において同じ。)の用に供する場合
三 前二号に掲げる場合のほか、著作物の表現についての人の知覚による認識を伴うことなく当該著作物を電子計算機による情報処理の過程における利用その他の利用(プログラムの著作物にあつては、当該著作物の電子計算機における実行を除く。)に供する場合
開発・学習段階のLoRAと著作権の関係
- 非享受目的
著作物を学習データとして利用する場合、利用者がその著作物から直接的な知的・精神的満足を得ることを目的としない場合、許可なく利用が可能です。 - 享受目的の併存
ただし、AIに特定の著作物の特徴を真似させるような学習を行う場合は、非享受目的には該当せず、著作権者の許可が必要です。 - 著作権者に不利益を与える場合
著作物の利用が著作権者に経済的なダメージを与える場合も、このルールは使えません。
【補足】享受目的とは
「享受目的」になる具体例としては、以下のような場合が考えられます。
-
特定の作品を忠実に再現するための学習
例えば、有名なキャラクターや商標化されたデザインを学習させて、そのキャラクターやデザインに酷似した画像を生成する場合。
この場合、オリジナル作品の特徴を意図的に模倣するため、享受目的があると判断される可能性が高いです。
-
商業利用を前提としたAI生成
企業がAIを利用して、特定のアーティストやブランドのデザインを元にした商品を製作・販売する場合。
ここでは、そのデザインの商業的価値を享受しようとしているため、著作権侵害として扱われるリスクが高くなります。
-
教育やリサーチの範囲を超えた利用
教育目的やリサーチ目的で著作物を利用する場合でも、その成果を販売するなどの商業的利用に転じた場合、享受目的とされる可能性があります。
教育や研究のための利用は限定的に認められることが多いですが、それを超える場合には注意が必要です。
これらのケースでは、著作物の「思想や感情を享受」する目的があるとみなされ、許可なしに使用すると著作権侵害と判断されるリスクが高くなるので、気をつけましょう。
2.生成・利用段階
生成・利用段階のLoRAと著作権の関係
-
著作物性の問題
AIが生成したコンテンツが著作物と認められるかは、指示の具体性や人間が関与している度合いによって判断されます。
単にAIが生成しただけのものは著作物とは見なされない可能性がありますが、人間がAIを使って創造的な仕事をした場合は、著作物として認められることがあります。
-
著作権侵害のリスク: AIが生成したものが既存の著作物に類似し、それを元にしていると判断される場合は、著作権侵害になります。
特に、AIが既存の著作物を模倣したような場合は、侵害のリスクが高まります。
現在の法解釈ではまだ不明確な点が多く、今後の裁判での判断や、ルールの整備が求められます。
また、著作権者やAI開発者、利用者間の適切なコミュニケーションとガイドラインの整備が求められています。
生成AIと著作権の問題は、法的な側面だけでなく、関係者間の共通理解を深めることも重要です。
【関連記事】
AIで生成した作品の著作権はどうなる?注意点や実際の事例を徹底解説 | AI総合研究所
AI生成コンテンツの商用利用に関する概要と法的見解を解説し、適切な利用のための指針を提供します。
https://www.ai-souken.com/article/ai-generated-copyright-explanation
LoRAを商用利用する際の注意点
LoRA技術を商用利用する際の注意点も押さえておきましょう。5点それぞれ解説していきます。
-
学習データの著作権チェック
学習データに使用する著作物が適切に許可を得ているか、または著作権法第30条の4に該当するかを確認することが必要です。
無許可で著作物を使用すると、著作権侵害のリスクが高まります。
-
類似性のリスク管理
AIが生成するコンテンツが既存の著作物とどれだけ類似しているかを慎重に管理する必要があります。
類似性が高い場合は依拠性が認められ、著作権侵害と判断される可能性があるため、事前にリスク評価を行いましょう。
-
技術的な制限の実装
商用利用に際して、著作権侵害を防ぐための技術的な制限をAIに実装することが推奨されます。
例えば、特定のプロンプト入力を制限したり、著作物に似た生成物を出力しないような制御を加えることが重要です。
-
ガイドラインと法律の遵守
最新のガイドラインや関連する法律を常に確認し、それらを遵守することが必要です。
AI技術に関する法規制やガイドラインは進化しているため、継続的な情報収集が不可欠です。
-
商用利用に関する契約の明確化
LoRA技術を利用する際の契約において、著作権に関する責任の所在を明確にしておくことが重要です。
AIが生成したコンテンツに関する著作権の取り扱いや、万が一の著作権侵害時の対応について契約でしっかりと定義することが求められます。
これらの点を十分に理解し、適切な対策を講じることが、LoRA技術を商用利用する際の成功と法的リスクの回避につながります。
参考文献:
AIと著作権に関する考え方について(文化審議会著作権分科会法制度小委員会)
文化審議会 著作権分科会 法制度小委員会「AIと著作権に関する考え方について」【概要資料】
LoRAについて学ぶためのリソース紹介
最後に、LoRA(Low-Rank Adaptation)について学ぶためのリソースを紹介します。
XなどのSNSで最新情報にキャッチアップしつつ、これらのサイトを活用することでLoRAに関する理解をより深めることができます📚
-
GitHub
GitHubのLoRAリポジトリでは、LoRaとLoRaWANに関連するリソースがまとめて提供されています。
LoRa技術に関するライブラリ・チュートリアル・など様々な情報を手に入れることができます。
-
Hugging Face
Hugging Faceでは、PEFT(Parameter-Efficient Fine-Tuning)を提供しています。
このライブラリは、モデルの特定の部分(例自己注意メカニズムの線形層など)を変更することで、さまざまなタスクにLoRAを使えるようにするものです。これにより、少ない手間でモデルの変更が可能になります。
-
Civitai
Civitaiは、Stable DiffusionなどのAIモデルにLoRAを使って改善する方法についての記事やチュートリアルを提供しています。
LoRAを実際のプロジェクトでどう活用するかを学ぶのに役立ちます。
-
Kohya's GitHub
今回使用したKohya_ssのGitHubリポジトリには、LoRAに関するドキュメントが多数掲載されています。
Kohyaツールを使用してLoRAを実装する方法が説明されています。日本語ファイルもあるのでおすすめです。
まとめ
ここまでお読みいただき有難うございました。
この記事ではLoRAの基礎から応用まで、さまざまな側面を紹介してきましたが、いかがでしたでしょうか?LoRAは、画像生成AIや他の機械学習モデルの効率的なチューニングを実現する強力な技術です。ぜひこの記事を参考に、LoRAを実際に動かしてみて下さい🙌
さらに深く学びたい方は、紹介したリソースを活用して知識を広げたり、情報発信をしていくのがおすすめです。
この記事がLoRA技術に興味がある方の参考になれば幸いです。