この Topic では、Platform for AI (PAI) の Elastic Algorithm Service (EAS) でオープンソースの Kohya_ss をデプロイし、Kohya_ss を使用して Low-Rank Adaptation (LoRA) モデルをトレーニングする方法について説明します。AI ペインティングのシナリオでは、トレーニング済みの LoRA モデルを Stable Diffusion (SD) サービスに補助モデルとして適用し、SD ペインティングのパフォーマンスを向上させることができます。
前提条件
EAS が有効化され、デフォルトのワークスペースが作成されていること。 詳細については、「PAI をアクティブ化し、デフォルトのワークスペースを作成する」をご参照ください。
RAM ユーザーを使用してモデルをデプロイする場合、その RAM ユーザーが EAS に対する管理権限を持っていることを確認してください。 詳細については、「EAS の使用に必要な権限を付与する」をご参照ください。
PAI ワークスペースが存在するリージョンに Object Storage Service (OSS) バケットが作成されていること。 OSS バケットは、トレーニングファイル、出力モデルファイル、およびログを保存するために使用されます。 オブジェクトのアップロード方法については、「オブジェクトのアップロード」をご参照ください。
準備
OSS コンソールにログインします。 トレーニング用に作成したバケットのパスに移動します。 バケットは PAI ワークスペースと同じリージョンにある必要があります。 例:
oss://kohya-demo/kohya/。バケットパスにプロジェクトフォルダを作成します。 例:
KaraDetroit_loar。 このプロジェクトフォルダに次のフォルダを作成します:Image、Log、Model。 JSON 構成ファイルがある場合は、このプロジェクトフォルダにアップロードすることもできます。
Image: トレーニングに使用されるソースファイルを保存します。
Model: 出力モデルファイルを保存します。
Log: ログを保存します。
SS_config.json: 複数のパラメーターを同時に構成するために使用される JSON ファイルです。 このファイルはオプションです。 フォルダパスや出力モデル名など、JSON ファイル内の関連パラメーターを変更できます。 構成の詳細については、「GitHub」をご参照ください。 サンプルファイル SS_config.json がリファレンスとして提供されています。
トレーニングに使用するイメージを
Imageフォルダにアップロードします。 この例では、100_pic.zip という名前のサンプルファイルを使用します。 ファイルをダウンロードして展開した後、フォルダを OSS にアップロードします。 次の図は結果を示しています:
重要イメージは、
.png、.jpg、.jpeg、.webp、または.bmpのいずれかのフォーマットである必要があります。各イメージには、同じ名前の説明ファイルが必要です。 説明ファイルは
.txtフォーマットにすることができます。 説明はファイルの最初の行にある必要があります。 複数の説明はコンマ (,) で区切ります。パッケージ化されたフォルダの名前は、number_name フォーマットである必要があります。 例: 100_pic。 名前は、OSS のファイル名の要件を満たす文字列である必要があります。 数値は、各イメージのトレーニングセッション数を示します。 値は 100 以上である必要があります。 トレーニングセッションの合計数は 1500 を超える必要があります。
たとえば、フォルダに 10 個のイメージが含まれている場合、各イメージは
1500/10=150回トレーニングする必要があります。 Number パラメーターの値は 150 です。たとえば、フォルダに 20 個のイメージが含まれている場合、各イメージは
1500/20=75(<100)回トレーニングする必要があります。 この場合、計算値が 75 で 100 未満であるため、Number パラメーターの値は 100 に増やされます。
Kohya_ss サービスのデプロイ
PAI コンソールにログインします。 ページの上部でリージョンを選択します。 次に、目的のワークスペースを選択し、[Elastic Algorithm Service (EAS)] をクリックします。
[Deploy Service] をクリックします。 [Custom Model Deployment] セクションで、[Custom Deployment] をクリックします。
[Create Service] ページで、フォームまたは JSON スクリプトを使用してパラメーターを構成します。
フォームを使用したパラメーターの構成
パラメーター
説明
基本情報
サービス名
サービスの名前。 この例では、kohya_ss_demo という名前を使用します。
環境情報
デプロイメント方法
[Deploy Web App By Using Image] を選択し、[Enable Web App] を有効にします。
イメージ構成
[Official Images] リストから [Kohya_ss] > [kohya_ss:2.2] を選択します。
説明モデルサービスをデプロイするときに、イメージの最新バージョンを選択できます。
ストレージ構成
Mount OSS Path を選択し、次のパラメーターを構成します:
Uri: ワークスペースと同じリージョンにある OSS パスを選択します。 この例では、パス
oss://kohya-demo/kohya/を使用します。Mount Path: カスタムマウントパスを使用できます。 この例では、パス
/workspaceを使用します。重要[Enable Read-only Mode] をオフにしてください。 そうしないと、モデルファイルを OSS にエクスポートできません。
実行するコマンド
イメージを選択すると、システムは実行するコマンドを自動的に構成します。 例:
python -u kohya_gui.py --listen=0.0.0.0 --server_port=8000 --headless。--listen: プログラムを、指定されたオンプレミスの IP アドレスに関連付けて、外部リクエストを受信および処理します。--server_port: リッスンするポート番号。
リソース情報
リソースタイプ
[Public Resource] を選択します。
デプロイメントリソース
費用対効果の観点から、GPU > ml.gu7i.c16m60.1-gu30 インスタンスタイプを使用することをお勧めします。 この例では、ml.gu7i.c8m30.1-gu30 インスタンスタイプを使用します。
JSON スクリプトを使用したパラメーターの構成
[Service Configuration] セクションの [Edit] をクリックし、JSON スクリプトを構成します。
サンプル JSON ファイル:
重要4 行目の "name" の値と 18 行目の "oss" の値を実際の値に置き換えてください。
{ "metadata": { "name": "kohya_ss_demo", "instance": 1, "enable_webservice": true }, "cloud": { "computing": { "instance_type": "ecs.gn6e-c12g1.12xlarge", "instances": null } }, "storage": [ { "oss": { "path": "oss://kohya-demo/kohya/", "readOnly": false }, "properties": { "resource_type": "model" }, "mount_path": "/workspace" }], "containers": [ { "image": "eas-registry-vpc.cn-hangzhou.cr.aliyuncs.com/pai-eas/kohya_ss:1.2", "script": "python -u kohya_gui.py --listen=0.0.0.0 --server_port=8000 --headless", "port": 8000 }] }[OK] をクリックし、フォームの構成を確認してから、[Deploy] をクリックします。 モデルのデプロイメントが完了するまで数分かかります。 Service Status が Running の場合、サービスはデプロイされています。
LoRA モデルのトレーニング
表示したいサービスの [Service Type] 列にある [View Web App] をクリックします。
[LoRA (LoRA)] をクリックします。

[Configuration File] をクリックして、構成ファイルのパスを指定します。
SS_config.jsonファイルが利用できない場合は、このステップをスキップしてください。
説明構成ファイルのパスは、フォームを使用したパラメーターの構成ステップで指定した [Mount Path]、OSS で作成したフォルダのパス、および SS_config.json ファイルで構成されます。 例:
/workspace/KaraDetroit_loar/SS_config.json。[Source Model] タブでパラメーターを構成します。 この例では、Save trained model as パラメーターが [safetensors] に設定されています。これは [checkpoint] よりもセキュリティが優れています。

[Folders] タブでパラメーターを構成します。 出力ファイルの名前と、OSS で作成した
Image、Log、Modelフォルダのパスを使用します。
パラメーター
説明
イメージフォルダ
トレーニングに使用するイメージのフォルダパス。 パスは、フォームを使用したパラメーターの構成ステップで指定した [Mount Path] と、OSS で作成した
Imageフォルダのパスで構成されます。 例:/workspace/KaraDetroit_loar/Image。ログフォルダ
出力ログのフォルダパス。 パスは、フォームを使用したパラメーターの構成ステップで指定した [Mount Path] と、OSS で作成した
Logフォルダのパスで構成されます。 例:/workspace/KaraDetroit_loar/Log。出力フォルダ
出力モデルのフォルダパス。 パスは、フォームを使用したパラメーターの構成ステップで指定した [Mount Path] と、OSS で作成した
Modelフォルダのパスで構成されます。 例:/workspace/KaraDetroit_loar/Model。モデル出力名
出力モデルの名前。 例: my_model。
[Parameters] タブでパラメーターを構成します。 次の例では、準備ステップの
SS_config.jsonファイルの内容を使用します。パラメーター
説明
LoRA タイプ
LoRA タイプ:
LoCON: SD モデルの各レイヤーを調整できます。例:Res、Block、Transformer。LoHA: モデルはメモリを増やす必要なく、より多くの情報を処理できます。
LoRA ネットワークの重み
オプション。 LoRA ネットワークの重み。 以前のトレーニング結果に基づいてトレーニングを再開する場合は、最新のトレーニング済み LoRA を選択します。
トレーニングバッチサイズ
トレーニングバッチのサイズ。 値が大きいほど、より高いビデオメモリが必要になります。
エポック
トレーニングエポックの数。 1 エポックですべてのデータが 1 回トレーニングされます。 必要に応じてパラメーターを構成します。 ほとんどの場合:
Kohya でのトレーニングセッションの合計数 = トレーニングに使用されるイメージの数 × 繰り返しの数 × トレーニングエポックの数 / トレーニングバッチの数。Web UI でのトレーニングセッションの合計数 = トレーニングに使用されるイメージの数 × 繰り返しの数。
同じディレクトリ内のイメージを使用する場合、トレーニングセッションの合計数は 2 倍になり、モデルが保存される回数は Kohya で半分になります。
N エポックごとに保存
トレーニング結果は N トレーニングエポックごとに保存されます。 値を 2 に設定すると、トレーニングの 2 エポックごとにトレーニング結果が保存されます。
キャプション拡張子
オプション。 キャプションファイルのファイル名拡張子。 例: .txt。
混合精度
混合精度トレーニングの精度。 GPU のパフォーマンスに基づいてパラメーターを構成します。 有効な値: no、fp16、および bf16。 使用する GPU のメモリが 30 GB を超える場合は、値を bf16 に設定することをお勧めします。
保存精度
ストレージの精度は上記と同じです。
コアあたりの CPU スレッド数
vCPU あたりのスレッド数。 購入したインスタンスとビジネス要件に基づいてパラメーターを構成します。
学習率
学習率。 デフォルト値: 0.0001。
LR スケジューラ
学習率スケジューラ。 必要に応じてパラメーターを構成します。
cosineやcosine with restartなどの関数を選択できます。LR ウォームアップ (% Of Steps)
学習率のウォームアップステップ。 必要に応じてパラメーターを構成します。 デフォルト値は 10 です。 ウォームアップが不要な場合は、値を 0 に設定できます。
オプティマイザー
オプティマイザー。 必要に応じてパラメーターを構成します。 デフォルト値は
AdamW8bitです。 値DAdaptationは、自動最適化が有効になっていることを示します。最大解像度
最大解像度。 イメージの要件に基づいてパラメーターを構成します。
ネットワークランク (次元)
モデルの複雑さ。 ほとんどの場合、値を 128 に設定できます。
ネットワークアルファ
ほとんどの場合、このパラメーターの値は [Network Rank (Dimension)] パラメーターの値以下です。 Network Rank を 128 に、Network Alpha を 64 に設定することをお勧めします。
畳み込みランク (次元)
& 畳み込みアルファ
畳み込み。LoRA によってモデルがどの程度ファインチューニングされるかを示します。 [LoRA Type] に基づいてパラメーターを構成します。
Kohya の公式ガイドに基づくと:
LoCon:dim <= 64およびalpha = 1(またはそれ以下) に設定します。LoHA:dim <= 32およびalpha = 1に設定します。
clip skip
CLIP モデルが使用される回数。 有効な値: 1 から 12。 値が小さいほど、生成されたイメージがイメージまたは入力イメージに近くなります。
リアリズム: 1 に設定します。
アニメ、コミック、ゲーム (ACG): 2 に設定します。
N エポックごとにサンプリング
サンプルは N エポックごとに保存されます。
サンプルプロンプト
サンプルプロンプト。 有効なパラメーター:
--n: プロンプトまたはネガティブプロンプト。--w: イメージの幅。--h: イメージの高さ。--d: イメージのシード。--l: Classifier Free Guidance (CFG) スケール。イメージ生成とプロンプトの関連性を示します。--s: 反復ステップの数。
ページの下部にある トレーニングを開始 をクリックしてトレーニングを開始します。

[Elastic Algorithm Service (EAS)] ページで、サービスリストの対応する [Service Name] をクリックします。 [Service Logs] をクリックして、トレーニングの進行状況をリアルタイムで表示します。

ログに
model savedが表示されたら、トレーニングは完了です。
トレーニングが完了したら、指定した
Modelフォルダのディレクトリから LoRA モデルファイルを取得します。 例:my_model.safetensors。
Stable Diffusion に基づく AI イメージ生成にトレーニング済み LoRA モデルを使用する
LoRA モデルをトレーニングした後、モデルを SD Web アプリケーションのディレクトリにアップロードできます。 これにより、トレーニング済みの LoRA モデルを使用してイメージを生成できます。 SD のデプロイ方法については、「数回のクリックで EAS を使用して AI イメージ生成用の Stable Diffusion をデプロイする」をご参照ください。
次のセクションでは、LoRA モデルを [SD Web Application] にアップロードする方法について説明します。
SD Web アプリケーション (クラスター版)
SD Web アプリケーションイメージを構成します。 -cluster バージョン (stable-diffusion-webui:4.2-cluster-webui など) を選択する必要があります。 サービスが開始されると、マウントされた OSS パスに
/data-{User_ID}/models/Loraパスが自動的に作成されます。次のパラメーターを [Command To Run] に追加します:
--lora-dir: オプション。--lora-dirパラメーターを指定しない場合、ユーザーのモデルファイルは分離されます。{OSS path}/data-{User_ID}/models/Loraディレクトリ内のモデルファイルのみがロードされます。--lora-dirパラメーターを指定すると、指定されたディレクトリと{OSS path}/data-{User_ID}/models/Loraディレクトリ内のファイルがロードされます。 例:--lora-dir /code/stable-diffusion-webui/data-oss/models/Lora。
--data-dir {OSS mount path}。 例:--data-dir /code/stable-diffusion-webui/data-oss。
LoRA モデルファイルを
{OSS path}/data-{User_ID}/models/Loraディレクトリにアップロードします。 例:oss://bucket-test/data-oss/data-1596******100/models/Lora。
説明サービスが開始されると、
/data-{User_ID}/models/Loraパスが OSS に自動的に作成されます。 サービスが開始された後に LoRA モデルファイルをアップロードする必要があります。ページの右上隅、プロフィール写真の横にある
{User_ID}を取得できます。
SD Web アプリケーション (基本版)
SD Web アプリケーションイメージを構成します。
-cluster以外のバージョン (stable-diffusion-webui:4.2-standard など) を選択する必要があります。 サービスが開始されると、マウントされた OSS パスに/models/Loraパスが自動的に作成されます。--data-dir {OSS mount path}パラメーターを [Command To Run] に追加します。 例:--data-dir /code/stable-diffusion-webui/data-oss。LoRA モデルファイルを
{OSS path}/models/Loraディレクトリにアップロードします。 例:oss://bucket-test/data-oss/models/Lora。
説明サービスが開始されると、
/models/Loraパスがマウントされた OSS バケットに自動的に作成されます。 パスを作成する必要はありません。 サービスが開始された後に LoRA モデルファイルをアップロードする必要があります。