すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:EAS で Kohya_ss を使用して LoRA SD モデルをデプロイする

最終更新日:Oct 23, 2025

この 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 バケットは、トレーニングファイル、出力モデルファイル、およびログを保存するために使用されます。 オブジェクトのアップロード方法については、「オブジェクトのアップロード」をご参照ください。

準備

  1. OSS コンソールにログインします。 トレーニング用に作成したバケットのパスに移動します。 バケットは PAI ワークスペースと同じリージョンにある必要があります。 例: oss://kohya-demo/kohya/

  2. バケットパスにプロジェクトフォルダを作成します。 例: KaraDetroit_loar。 このプロジェクトフォルダに次のフォルダを作成します: ImageLogModel。 JSON 構成ファイルがある場合は、このプロジェクトフォルダにアップロードすることもできます。

    image.png

    • Image: トレーニングに使用されるソースファイルを保存します。

    • Model: 出力モデルファイルを保存します。

    • Log: ログを保存します。

    • SS_config.json: 複数のパラメーターを同時に構成するために使用される JSON ファイルです。 このファイルはオプションです。 フォルダパスや出力モデル名など、JSON ファイル内の関連パラメーターを変更できます。 構成の詳細については、「GitHub」をご参照ください。 サンプルファイル SS_config.json がリファレンスとして提供されています。

  3. トレーニングに使用するイメージを Image フォルダにアップロードします。 この例では、100_pic.zip という名前のサンプルファイルを使用します。 ファイルをダウンロードして展開した後、フォルダを OSS にアップロードします。 次の図は結果を示しています:

    image.png

    重要
    • イメージは、.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 サービスのデプロイ

  1. PAI コンソールにログインします。 ページの上部でリージョンを選択します。 次に、目的のワークスペースを選択し、[Elastic Algorithm Service (EAS)] をクリックします。

  2. [Deploy Service] をクリックします。 [Custom Model Deployment] セクションで、[Custom Deployment] をクリックします。

  3. [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
        }]
    }
  4. [OK] をクリックし、フォームの構成を確認してから、[Deploy] をクリックします。 モデルのデプロイメントが完了するまで数分かかります。 Service StatusRunning の場合、サービスはデプロイされています。

LoRA モデルのトレーニング

  1. 表示したいサービスの [Service Type] 列にある [View Web App] をクリックします。

  2. [LoRA (LoRA)] をクリックします。

    image

  3. [Configuration File] をクリックして、構成ファイルのパスを指定します。 SS_config.json ファイルが利用できない場合は、このステップをスキップしてください。

    image

    説明

    構成ファイルのパスは、フォームを使用したパラメーターの構成ステップで指定した [Mount Path]、OSS で作成したフォルダのパス、および SS_config.json ファイルで構成されます。 例: /workspace/KaraDetroit_loar/SS_config.json

  4. [Source Model] タブでパラメーターを構成します。 この例では、Save trained model as パラメーターが [safetensors] に設定されています。これは [checkpoint] よりもセキュリティが優れています。

    image

  5. [Folders] タブでパラメーターを構成します。 出力ファイルの名前と、OSS で作成した ImageLogModel フォルダのパスを使用します。

    image

    パラメーター

    説明

    イメージフォルダ

    トレーニングに使用するイメージのフォルダパス。 パスは、フォームを使用したパラメーターの構成ステップで指定した [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。

  6. [Parameters] タブでパラメーターを構成します。 次の例では、準備ステップの SS_config.json ファイルの内容を使用します。

    パラメーター

    説明

    LoRA タイプ

    LoRA タイプ:

    • LoCON: SD モデルの各レイヤーを調整できます。例: ResBlockTransformer

    • 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 スケジューラ

    学習率スケジューラ。 必要に応じてパラメーターを構成します。 cosinecosine 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: 反復ステップの数。

  7. ページの下部にある トレーニングを開始 をクリックしてトレーニングを開始します。 image

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

    image

    ログに model saved が表示されたら、トレーニングは完了です。

    image.png

  9. トレーニングが完了したら、指定した Model フォルダのディレクトリから LoRA モデルファイルを取得します。 例: my_model.safetensors

    image.png

Stable Diffusion に基づく AI イメージ生成にトレーニング済み LoRA モデルを使用する

LoRA モデルをトレーニングした後、モデルを SD Web アプリケーションのディレクトリにアップロードできます。 これにより、トレーニング済みの LoRA モデルを使用してイメージを生成できます。 SD のデプロイ方法については、「数回のクリックで EAS を使用して AI イメージ生成用の Stable Diffusion をデプロイする」をご参照ください。

次のセクションでは、LoRA モデルを [SD Web Application] にアップロードする方法について説明します。

SD Web アプリケーション (クラスター版)

  1. SD Web アプリケーションイメージを構成します。 -cluster バージョン (stable-diffusion-webui:4.2-cluster-webui など) を選択する必要があります。 サービスが開始されると、マウントされた OSS パスに /data-{User_ID}/models/Lora パスが自動的に作成されます。

  2. 次のパラメーターを [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

  3. LoRA モデルファイルを {OSS path}/data-{User_ID}/models/Lora ディレクトリにアップロードします。 例: oss://bucket-test/data-oss/data-1596******100/models/Lora

    image.png

    説明

    サービスが開始されると、/data-{User_ID}/models/Lora パスが OSS に自動的に作成されます。 サービスが開始された後に LoRA モデルファイルをアップロードする必要があります。

    ページの右上隅、プロフィール写真の横にある {User_ID} を取得できます。

    image.png

SD Web アプリケーション (基本版)

  1. SD Web アプリケーションイメージを構成します。 -cluster 以外のバージョン (stable-diffusion-webui:4.2-standard など) を選択する必要があります。 サービスが開始されると、マウントされた OSS パスに /models/Lora パスが自動的に作成されます。

  2. --data-dir {OSS mount path} パラメーターを [Command To Run] に追加します。 例: --data-dir /code/stable-diffusion-webui/data-oss

  3. LoRA モデルファイルを {OSS path}/models/Lora ディレクトリにアップロードします。 例: oss://bucket-test/data-oss/models/Lora

    image.png

    説明

    サービスが開始されると、/models/Lora パスがマウントされた OSS バケットに自動的に作成されます。 パスを作成する必要はありません。 サービスが開始された後に LoRA モデルファイルをアップロードする必要があります。