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

Platform For AI:AI Art - SDWebUI デプロイメント

最終更新日:Feb 28, 2026

Stable Diffusion (SD) は、高品質、高解像度の画像を高い安定性と制御性で生成する、強力な画像生成モデルです。オープンソースの Stable Diffusion WebUI プロジェクトは、このモデルを Gradio で構築されたビジュアルインターフェイスでラップし、ユーザーに豊富な画像生成ツールを提供します。Elastic Algorithm Service (EAS) は、シナリオベースのデプロイを可能にし、いくつかのパラメーターを設定するだけで、ワンクリックで Stable Diffusion WebUI サービスをデプロイできます。

特徴と利点

PAI-EAS は、セルフビルドのサービスに比べて次の利点があります:

  • ワンクリックデプロイ:事前設定済みのイメージにすべての依存関係が含まれています。

  • GPU Auto Scaling:必要に応じて GPU リソースを動的に調整します。

  • エンタープライズグレードの機能:マルチユーザーの隔離、GPU 共有、コスト配分。

  • 統合されたファイル管理:FileBrowser 拡張機能により、モデルのアップロードが簡素化されます。

バージョンの選択

バージョン

シナリオ

呼び出しメソッド

課金

Standard Edition

個人でのテスト、プロトタイプ開発

WebUI、API 呼び出し (同期)

課金はデプロイメント設定に基づきます。詳細については、「EAS 課金の概要」をご参照ください。

API edition

本番環境 API、高い同時実行性シナリオ

API 呼び出し (同期 & 非同期)

Clustered WebUI

チームコラボレーション、デザインチーム

WebUI

Serverless Edition

説明

中国 (上海) および中国 (杭州) リージョンでのみサポートされています。

弾力的な負荷、コスト最適化

WebUI

サービスのデプロイは無料です。課金は画像生成の時間にのみ基づきます。

クイックスタート:シナリオベースの方法を使用した AI Art のデプロイ

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

  2. Elastic Algorithm Service (EAS) ページで、Deploy Service をクリックします。Scenario-based Model Deployment エリアで、AI Painting - SD Web UI Deployment をクリックします。

  3. 次の主要なパラメーターを設定します:

    • Version:Standard Edition を選択します。

    • Model Settings:モデルファイルと推論で生成された画像を保存します。OSS を選択し、バケットパスを選択します。

    • Instance TypeGPU タイプを選択します。推奨されるインスタンスタイプは ml.gu7i.c16m60.1-gu30 (コストパフォーマンスが最も高い) です。

  4. パラメーターを設定した後、Deploy をクリックします。サービスステータスが Running に変わるまで 5〜10 分待ちます。

サービスの呼び出し

WebUI を使用した呼び出し

Standard Edition、Clustered WebUI、および Serverless Edition サービスは、次のように WebUI を使用して呼び出すことができます:

  1. モデルの推論を検証します。

    Stable Diffusion WebUI ページの [Text-to-Image] タブで、「cute dog」などのポジティブプロンプトを入力します。次に、[生成] をクリックして AI Art の生成を完了します。結果は次のようになります:

    image

同期 API を使用した呼び出し

Standard Edition および API edition サービスをデプロイした後、次のように同期 API リクエストを送信できます。

クエリの呼び出し情報

  1. サービスがデプロイされた後、サービス名をクリックして Overview ページに移動します。

  2. Basic Information エリアで、View Endpoint Information をクリックします。

  3. Invocation Information ページで、パブリックサービスエンドポイントとトークンを取得します。

呼び出し例

画像をローカルに保存

import requests
import base64
from PIL import Image
import io

# 注意 !!!!:サービス URL の末尾のスラッシュ (/) を削除してください。
SERVICE_URL = "<service_url>"
TOKEN = "<Token>"

def generate_image(prompt: str) -> Image.Image:
    """テキストプロンプトから画像を生成します。"""
    payload = {
        "prompt": prompt,
        "negative_prompt": "blurry, low quality, deformed",
        "steps": 25,
        "width": 512,
        "height": 512,
        "cfg_scale": 7.5,
    }
    
    response = requests.post(
        f"{SERVICE_URL}/sdapi/v1/txt2img",
        json=payload,
        headers={"Authorization": TOKEN}
    )
    response.raise_for_status()
    
    # 最初の画像をデコードします
    img_data = response.json()["images"][0]
    return Image.open(io.BytesIO(base64.b64decode(img_data)))

# 生成して保存
image = generate_image("a serene mountain landscape at sunset")
image.save("output.png")

画像を OSS に保存

import requests

# 注意 !!!!:サービス URL の末尾のスラッシュ (/) を削除してください。
SERVICE_URL = "<service_url>"
TOKEN = "<Token>"

payload = {
    "prompt": "professional portrait photography",
    "steps": 30,
    "alwayson_scripts": {
        "sd_model_checkpoint": "v1-5-pruned-emaonly.safetensors",
        "save_dir": "/code/stable-diffusion-webui/data/outputs"
    }
}

response = requests.post(
    f"{SERVICE_URL}/sdapi/v1/txt2img",
    json=payload,
    headers={"Authorization": TOKEN}
)

# 保存された画像のパスを取得します
data = response.json()

# これは、EAS サービスとしてデプロイする際にマウントされた OSS フォルダの mount_path に対応します。
mount_path = "/code/stable-diffusion-webui/data"

# これは、EAS サービスとしてデプロイする際に選択された OSS バケット URL に対応します。
oss_url = "oss://examplebucket/data-oss"

for idx, img_path in enumerate(data['parameters']['image_url'].split(',')):
    # 生成された画像の実際の OSS パスを取得します。
    img_oss_path = img_path.replace(mount_path, oss_url)
    print(img_oss_path)

さらに、リクエストデータで LoRA および ControlNet データ形式を使用して、特定の機能を実現します。

リクエストデータでの LoRA モデルの設定

サービスリクエストを送信する際、リクエストボディに直接 <lora:yaeMikoRealistic_Genshin:1000> を追加して LoRA を含めます。詳細については、「LoRA」をご参照ください。

リクエストボディの設定例は次のとおりです:

{
  "prompt":"girls <lora:yaeMikoRealistic_Genshin:1>",
  "steps":20,
  "save_images":true
}

リクエストデータでの ControlNet データ形式の使用

API リクエストデータで ControlNet データ形式を使用すると、水平または垂直方向の維持など、一般的な画像変換が簡素化されます。具体的な設定方法については、「ControlNet データ形式を使用した txt2img」をご参照ください。

非同期 API を使用した呼び出し

API edition サービスをデプロイした後、非同期 API リクエストを送信できます。クライアントは同期的に結果を待つのではなく、リクエストの計算が完了した後にサーバーが結果をプッシュするのをサブスクライブして待ちます。次の手順を実行します:

クエリ呼び出し情報

  1. サービスがデプロイされた後、サービス名をクリックして Overview ページに移動します。

  2. Basic Information エリアで、View Endpoint Information をクリックします。

  3. Invocation Information ページで、Asynchronous Invocation タブに切り替えて、パブリックネットワーク入力エンドポイントとトークンを取得します。

リクエストの送信

クライアントは非同期 API を介してサーバーにリクエストを送信します。

import requests


SERVICE_URL = "<Public service URL>"
TOKEN = "<Token>"

response = requests.post(
    f"{SERVICE_URL}/sdapi/v1/txt2img?task_id=job_001",
    json={
        "prompt": "futuristic city skyline",
        "steps": 30,
        "alwayson_scripts": {
            "save_dir": "/code/stable-diffusion-webui/data/outputs"
        }
    },
    headers={"Authorization": TOKEN}
)
print(f"Job enqueued: {response.json()}")
重要
  • 非同期キューには、入力リクエストと出力結果の両方にサイズ制限があり、通常は 8 KB を超えません。したがって、リクエストを送信する際には、次の 2 つの条件を満たす必要があります:

    • リクエストデータに画像が含まれる場合は、URL を使用して画像情報を渡します。Stable Diffusion WebUI は、この画像データを内部で自動的にダウンロードして解析します。

    • 返される結果に元の画像データが含まれないようにするには、save_dir を使用して生成された画像の保存パスを指定します。詳細については、「API 操作でサポートされる追加パラメーター」をご参照ください。

サブスクリプション結果

クライアントはサブスクリプション方式を使用します。サーバーがリクエストの処理を完了すると、結果を自動的にクライアントにプッシュし、効率的な非同期通信を可能にします。

from eas_prediction import QueueClient

# サービス URL の形式を例に合わせて調整します:112231234124214.cn-hangzhou.pai-eas.aliyuncs.com
SERVICE_URL = "<service_url>"
TOKEN = "<Token>"
# サービス作成時に設定したサービス名。
SERVICE_NAME = "<service_name>"

sink = QueueClient(SERVICE_URL, SERVICE_NAME + '/sink')
sink.set_token(TOKEN)
sink.init()

for result in sink.watch(0, 5, auto_commit=True).run():
    print(f"Task {result.tags.get('task_id')} completed")
    print(f"Image URL: {result.data}")

EAS は、ネイティブの Stable Diffusion WebUI API に基づく新機能をサポートしています。リクエストデータにオプションパラメーターを追加して、より豊富な機能やカスタマイズされたニーズに対応します。詳細については、「API 操作でサポートされる追加パラメーター」をご参照ください。

高度なデプロイオプション

カスタムデプロイ

Standard Edition、API edition、および Clustered WebUI サービスを次のようにデプロイします:

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

  2. [サービスのデプロイ] をクリックします。[カスタムモデルデプロイ] セクションで、[カスタムデプロイ] をクリックします。

  3. Custom Deployment ページで、次の主要なパラメーターを設定します。

    パラメーター

    説明

    Environment Information

    Deployment Method

    • Standard Edition および Clustered WebUI サービスをデプロイする場合は、Image-based Deployment を選択し、Enable Web App を有効にします。

    • APIエディションサービスをデプロイする際は、Image-based Deployment を選択し、Asynchronous Services を有効化します。

    Image Configuration

    Alibaba Cloud Image リストで、stable-diffusion-webui を選択します。最も高いイメージバージョンを選択します。これには以下が含まれます:

    • x.x-standard:Standard Edition を示します。

    • x.x-api:API edition を示します。

    • x.x-cluster-webui:Clustered WebUI を示します。

    説明
    • バージョンは頻繁に更新されるため、デプロイ時には最も高いイメージバージョンを選択してください。

    • 複数のユーザーが単一の Stable Diffusion WebUI を使用して同時に画像を生成する必要がある場合は、x.x-cluster-webui バージョンを選択してください。

    • 各バージョンの使用シナリオの詳細については、「バージョンの選択」をご参照ください。

    Storage Mount

    モデルファイルと推論で生成された画像を保存します。

    重要

    API edition と Clustered WebUI はストレージマウントを設定する必要があります。

    次のタイプがサポートされています:

    • OSS

      • Uri:既存の OSS バケットパスへの OSS パスを設定します。

      • Mount Path/code/stable-diffusion-webui/data として設定します。

    • NAS

      • File System:既存の NAS ファイルシステムを選択します。

      • Mount Target:既存のマウントポイントを選択します。

      • File System Path/ として設定します。

      • Mount Path/code/stable-diffusion-webui/data として設定します。

    • PAI Model

      • PAI Model:PAI モデルとモデルバージョンを選択します。

      • Mount Path/code/stable-diffusion-webui/data として設定します。

    このトピックでは、OSS マウントを例として使用します。

    Command to Run

    上記の設定を完了すると、システムは対応する実行コマンドを自動的に生成します。

    • ストレージマウントを実行した後、実行コマンドに --data-dir パラメーターを追加して、データをサービスインスタンスの指定されたパスにマウントします。パスはマウントパスと一致している必要があります。例:--data-dir /code/stable-diffusion-webui/data

    • (オプション) 実行コマンドに --blade または --xformers パラメーターを追加して、推論アクセラレーションを有効にし、画像生成速度を向上させます。その他のパラメーター設定手順については、「サービス起動時にサポートされるパラメーター」をご参照ください。

    Resource Information

    Deployment

    GPU タイプを選択します。推奨される Resource Typeml.gu7i.c16m60.1-gu30 (コストパフォーマンスが最も高い) です。

    Service Access

    VPC

    [ストレージマウント] が NAS に設定されている場合、システムは NAS に接続されている VPC を自動的に照合します。追加の変更は必要ありません。

    vSwitch

    Security Group Name

  4. パラメーターを設定した後、Deploy をクリックします。

JSON スタンドアロンデプロイ

JSON スタンドアロンデプロイを使用して Stable Diffusion WebUI サービスをデプロイします。次の例では、Standard Edition と API edition を使用します。次の手順を実行します:

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

  2. Elastic Algorithm Service (EAS) ページで、Deploy Service をクリックします。Custom Model Deployment エリアで、JSON Deployment をクリックします。

  3. JSON Deployment ページのエディターで、次の JSON コンテンツを設定します。

    Standard Edition サービスのデプロイ

    {
        "metadata": {
            "instance": 1,
            "name": "sd_v32",
            "enable_webservice": true
        },
        "containers": [
            {
                "image": "eas-registry-vpc.<region>.cr.aliyuncs.com/pai-eas/stable-diffusion-webui:4.2",
                "script": "./webui.sh --listen --port 8000 --skip-version-check --no-hashing --no-download-sd-model --skip-prepare-environment --api --filebrowser --data-dir=/code/stable-diffusion-webui/data",
                "port": 8000
            }
        ],
        "cloud": {
            "computing": {
                "instance_type": "ml.gu7i.c16m60.1-gu30",
                "instances": null
            },
            "networking": {
                "vpc_id": "vpc-t4nmd6nebhlwwexk2****",
                "vswitch_id": "vsw-t4nfue2s10q2i0ae3****",
                "security_group_id": "sg-t4n85ksesuiq3wez****"
            }
        },
        "storage": [
            {
                "oss": {
                    "path": "oss://examplebucket/data-oss",
                    "readOnly": false
                },
                "properties": {
                    "resource_type": "model"
                },
                "mount_path": "/code/stable-diffusion-webui/data"
            },
            {
                "nfs": {
                    "path": "/",
                    "server": "726434****-aws0.ap-southeast-1.nas.aliyuncs.com"
                },
                "properties": {
                    "resource_type": "model"
                },
                "mount_path": "/code/stable-diffusion-webui/data"
            }
        ]
    } 

    主要なパラメーターの説明は次のとおりです:

    パラメーター

    必須

    説明

    metadata.name

    はい

    カスタムモデルサービス名。リージョン内で一意である必要があります。

    containers.image

    はい

    <region> を現在のリージョン ID に置き換えます。たとえば、中国 (上海) は cn-shanghai です。リージョン ID のクエリ方法については、「リージョンとゾーン」をご参照ください。

    storage

    いいえ

    次の 2 つのマウント方法がサポートされています。いずれかを選択してください:

    • OSS:OSS を使用すると、データのアップロードとダウンロードがより便利になります。生成された画像のパブリックネットワークアクセス URL を生成できますが、モデルの切り替えや画像の保存は NAS よりも遅くなります。storage.oss.path を既存の OSS バケットパスに設定します。

    • NAS:NAS マウントを使用すると、モデルの切り替えや画像の保存が高速になります。storage.nfs.server を既存の NAS ファイルシステムに設定します。

    このトピックでは、OSS マウントを例として使用します。

    cloud.networking

    いいえ

    `storage` が NAS マウントを使用する場合、VPC (仮想プライベートクラウド) を設定します。これには `vpc_id` (VPC ID)、`vswitch_id` (vSwitch ID)、および `security_group_id` (セキュリティグループ ID) が含まれます。設定された VPC は、汎用 NAS ファイルシステムと一致している必要があります。

    API Edition サービスのデプロイ

    {
        "metadata": {
            "name": "sd_async",
            "instance": 1,
            "rpc.worker_threads": 1,
            "type": "Async"
        },
        "cloud": {
            "computing": {
                "instance_type": "ml.gu7i.c16m60.1-gu30",
                "instances": null
            },
            "networking": {
                "vpc_id": "vpc-bp1t2wukzskw9139n****",
                "vswitch_id": "vsw-bp12utkudylvp4c70****",
                "security_group_id": "sg-bp11nqxfd0iq6v5g****"
            }
        },
        "queue": {
            "cpu": 1,
            "max_delivery": 1,
            "memory": 4000,
            "resource": ""
        },
        "storage": [
            {
                "oss": {
                    "path": "oss://examplebucket/aohai-singapore/",
                    "readOnly": false
                },
                "properties": {
                    "resource_type": "model"
                },
                "mount_path": "/code/stable-diffusion-webui/data"
            },
            {
                "nfs": {
                    "path": "/",
                    "server": "0c9624****-fgh60.cn-hangzhou.nas.aliyuncs.com"
                },
                "properties": {
                    "resource_type": "model"
                },
                "mount_path": "/code/stable-diffusion-webui/data"
            }
        ],
        "containers": [
            {
                "image": "eas-registry-vpc.<region>.cr.aliyuncs.com/pai-eas/stable-diffusion-webui:4.2",
                "script": "./webui.sh --listen --port 8000 --skip-version-check --no-hashing --no-download-sd-model --skip-prepare-environment --api-log --time-log --nowebui --data-dir=/code/stable-diffusion-webui/data",
                "port": 8000
            }
        ]
    } 

    Standard Edition サービスの設定と比較して、API edition サービスの設定変更点は次のとおりです。その他のパラメーター設定は、Standard Edition サービスと同じです。

    パラメーター

    説明

    次のパラメーターを削除します:

    metadata.enable_webservice

    このパラメーターを削除して、Web サーバーを無効にします。

    containers.script

    containers.script に設定されている --filebrowser を削除して、サービスの起動を高速化します。

    次のパラメーターを追加します:

    metadata.type

    `Async` に設定して、非同期サービスを有効にします。

    metadata.rpc.worker_threads

    `1` に設定します。単一のインスタンスでは、1 つのリクエストのみを同時に処理できます。

    queue.max_delivery

    `1` に設定します。メッセージ処理エラー後の再試行は許可されません。

    containers.script

    containers.script 設定に --nowebui (起動を高速化するため) と --time-log (API 応答時間を記録するため) を追加します。

    その他のパラメーター設定手順については、「Standard Edition サービスのデプロイ」をご参照ください。

  4. Deploy をクリックします。

機能拡張のためのプラグインのインストール

Stable Diffusion WebUI のプラグインを設定して、より多様な機能を実現します。PAI は、プロンプトの拡張と美化を試すために使用される、PAI 開発の BeautifulPrompt プラグインなど、豊富なプラグインをプリインストールしています。このセクションでは、BeautifulPrompt プラグインを例に、プラグインのインストールと使用方法を紹介します。

プラグインのインストール

WebUI ページの [拡張機能] タブでプラグインを表示およびインストールするには、次の手順を実行します:

  1. WebUI ページの [拡張機能] タブで、[BeautifulPrompt] が選択されているかどうかを確認します。選択されていない場合は、プラグインを選択し、[変更を適用して UI を再読み込み] をクリックして BeautifulPrompt プラグインを再読み込みします。image

    プラグインをインストールすると、WebUI ページが自動的に再起動します。再読み込み後、推論を検証します。

プラグインを使用した推論の検証

  1. [BeautifulPrompt] タブに切り替えます。テキストボックスに簡単なプロンプトを入力します。次に、[生成] をクリックして、より詳細なプロンプトを作成します。image

    PAI は複数のプロンプト生成モデルを提供します。各モデルはわずかに異なるプロンプトを生成します。これらには以下が含まれます:

    • pai-bloom-1b1-text2prompt-sd-v2:複雑なシナリオのプロンプト生成に優れています。

    • pai-bloom-1b1-text2prompt-sd:単一のオブジェクトを説明するプロンプトを生成します。

    必要に応じて適切なモデルを選択してプロンプトを生成します。image

  2. 使用するプロンプトを選択します。プロンプトの右側にある [to txt2img] をクリックします。

    ページは自動的に [Text-to-Image] タブにリダイレクトされ、プロンプトエリアが自動入力されます。image

  3. [生成] をクリックして、WebUI ページの右側に画像を生成します。image

    BeautifulPrompt プラグインを使用しない場合と比較して、使用すると生成される画像の美的品質が向上し、より多くの詳細を追加するのに役立ちます。次の表は、他のシナリオで BeautifulPrompt プラグインを使用した効果を比較したものです:

    入力プロンプト

    BeautifulPrompt なしの効果

    BeautifulPrompt ありの効果

    a cat

    image.png

    image.png

    a giant tiger

    image.png

    image.png

よくある質問

Q:モデルと出力ディレクトリをマウントする方法は?

サービスがデプロイされると、マウントされた OSS または NAS ストレージスペースに、システムが自動的に次のディレクトリ構造を作成します:image

これには以下が含まれます:

  • models:このディレクトリにはモデルファイルが保存されます。

  • 推論リクエストを開始すると、API コードで事前に設定された設定に従って、システムは自動的に結果ファイルをこのディレクトリに出力します。

オープンソースコミュニティからダウンロードしたモデルや、ご自身でトレーニングした LoRA および Stable Diffusion モデルを上記の指定されたディレクトリに保存して、新しいモデルをロードして使用します。次の手順を実行します:

  1. マウントされたストレージの models ディレクトリの下の対応するサブディレクトリにモデルファイルをアップロードします。詳細については、「ステップ 2:ファイルのアップロード」をご参照ください。

  2. Elastic Algorithm Service (EAS) ページで、対象のサービスの Actions 列で image>Restart Service をクリックします。サービスが正常に再起動されると、変更が有効になります。

  3. Stable Diffusion WebUI ページで、モデルを切り替えてモデルの推論を検証します。

    image

Q:設定を変更しない場合、ダウンロードしたプラグインやアップロードしたファイルはインスタンスに保存されますか?

ストレージマウントがない場合、ファイルのライフサイクルはサービスと一致します。サービスが停止、再起動、または削除されると、すべてのファイルが削除されます。したがって、OSS や NAS などの外部ストレージをマウントして、これらのファイルを保存してください。

Q:サービスが長時間スタックしたままの場合はどうすればよいですか?

  • まず、Stable Diffusion WebUI インターフェイスを再度開くか、EAS サービスを再起動して問題を解決してみてください:

    • 対象のサービスをクリックして Overview ページに移動します。右上隅にある Web applications をクリックして Stable Diffusion WebUI を再度開きます。

    • 対象サービスの Actions 列で、image > Restart Service をクリックし、EAS サービスを再起動します。

  • 再起動しても長時間問題が解決しない場合は、サービスがパブリックネットワークからモデルやプラグインをダウンロードする必要があるためと考えられます。EAS はデフォルトでパブリックネットワークアクセスを有効にしていません。イメージはオフラインで起動でき、マウントされたモデルはネットワークを必要としません。ただし、一部のプラグインはインターネットからコンテンツをダウンロードすることに依存しています。この場合、ログからモデルまたはプラグインのダウンロードパスを見つけます。モデルを手動でダウンロードし、マウントするために OSS にアップロードします。詳細については、「Q:モデルと出力ディレクトリをマウントする方法は?」をご参照ください。それでもパブリックネットワーク接続が必要な場合は、「EAS でパブリックまたは内部ネットワークリソースにアクセスする」を参照してパブリックネットワークアクセスを設定してください。

Q:WebUI ページのデフォルト言語を英語に切り替える方法は?

  1. Stable Diffusion WebUI ページで、Settings をクリックします。

  2. 左側のナビゲーションウィンドウで、[ユーザーインターフェイス] をクリックします。右側の [ローカライズ] エリアで、[None] を選択します。

  3. Stable Diffusion WebUI ページの上部で、[設定を保存] をクリックします。保存後、[UI を再読み込み] をクリックします。

    WebUI ページを更新して英語に切り替えます。

Q:ファイルシステムを管理する方法は?

Standard Edition および Clustered WebUI サービスをデプロイすると、システムはデフォルトで実行コマンドに --filebrowser パラメーターを自動的に追加します。次のように WebUI インターフェイスを通じて直接ファイルシステムを管理します:

  1. Stable Diffusion WebUI ページで、[FileBrowser] タブをクリックします。ファイルシステムを直接表示するか、アップロードおよびダウンロード操作を実行します。

    image

Q:エラー:No such file or directory: 'data-oss/data-********.png'

  1. デプロイバージョンを確認します。API edition (イメージ x.x-api) または Clustered WebUI (イメージ x.x-cluster-webui) の場合、モデル設定が必要です。

  2. マウントパスを確認します。実行コマンドに --data-dir パラメーターがあるかどうか、およびそのパスが OSS マウントパスと一致しているかどうかを確認します。

    image

Q:WebUI ページにアクセスできません。

サービスデプロイバージョンを確認してください。API edition は WebUI の使用をサポートしていません。カスタムデプロイを使用している場合、x.x-api イメージは API edition 用です。

付録

サービス起動時にサポートされるパラメーター

  • 共通パラメーター

    共通パラメーター

    機能説明

    使用推奨

    --blade

    PAI-blade アクセラレーションを有効にして、画像生成速度を向上させます。

    有効にしてください。

    --filebrowser

    モデルや画像をアップロードおよびダウンロードできるプラグインです。

    デフォルトで有効です。

    --data-dir /code/stable-diffusion-webui/data-oss

    永続ストレージマウントに使用されるパスです。

    永続ストレージをマウントする際に使用します。デフォルトの開始パスは /code/stable-diffusion-webui/ です。相対パスも使用できます。

    --api

    WebUI API 呼び出しモードです。

    デフォルトで有効です。

    --enable-nsfw-censor

    デフォルトでは無効です。セキュリティおよびコンプライアンス要件がある場合は、ポルノ検出機能を有効にしてください。

    必要に応じて調整してください。

    --always-hide-tabs

    特定のタブを非表示に指定します。

    必要に応じて調整してください。

    --min-ram-reserved 40 --sd-dynamic-cache

    Stable Diffusion の大規模モデルをメモリにキャッシュできます。

    なし。

  • Clustered Edition パラメーター

    説明

    ckpt および ControlNet の大規模モデルは、パブリックフォルダとカスタムファイルからファイルを自動的にロードします。

    Clustered Edition パラメーター

    機能説明

    使用推奨

    --lora-dir

    パブリック LoRA モデルディレクトリを指定します。例:--lora-dir /code/stable-diffusion-webui/data-oss/models/Lora

    デフォルトでは設定されていません。すべてのユーザーの LoRA ディレクトリは隔離されており、ユーザーフォルダ内の LoRA モデルのみがロードされます。特定のディレクトリが指定されると、すべてのユーザーはパブリックディレクトリとユーザーフォルダの両方から LoRA モデルを同時にロードします。

    --vae-dir

    パブリック VAE モデルディレクトリを指定します。例:--vae-dir /code/stable-diffusion-webui/data-oss/models/VAE

    デフォルトでは設定されていません。すべてのユーザーの VAE ディレクトリは隔離されており、ユーザーフォルダ内の VAE モデルのみがロードされます。特定のディレクトリが指定されると、すべてのユーザーはそのパブリックディレクトリからのみ VAE モデルをロードします。

    --gfpgan-dir

    パブリック GFPGAN モデルディレクトリを指定します。例:--gfpgan-dir /code/stable-diffusion-webui/data-oss/models/GFPGAN

    デフォルトでは設定されていません。すべてのユーザーの GFPGAN ディレクトリは隔離されており、ユーザーフォルダ内の GFPGAN モデルのみがロードされます。特定のディレクトリが指定されると、すべてのユーザーはそのパブリックディレクトリからのみ GFPGAN モデルをロードします。

    --embeddings-dir

    パブリック embeddings モデルディレクトリを指定します。例:--embeddings-dir /code/stable-diffusion-webui/data-oss/embeddings

    デフォルトでは設定されていません。すべてのユーザーの embeddings ディレクトリは隔離されており、ユーザーフォルダ内の embeddings モデルのみがロードされます。特定のディレクトリが指定されると、すべてのユーザーはそのパブリックディレクトリからのみ embeddings モデルをロードします。

    --hypernetwork-dir

    パブリック hypernetwork モデルディレクトリを指定します。例:--hypernetwork-dir /code/stable-diffusion-webui/data-oss/models/hypernetworks

    デフォルトでは設定されていません。すべてのユーザーの hypernetwork ディレクトリは隔離されており、ユーザーフォルダ内の hypernetwork モデルのみがロードされます。特定のディレクトリが指定されると、すべてのユーザーはそのパブリックディレクトリからのみ hypernetwork モデルをロードします。

    --root-extensions

    プラグインディレクトリは共有ディレクトリを使用します。このパラメーターを使用すると、すべてのユーザーがまったく同じプラグインを表示します。

    プラグインのインストールや管理を一元化する場合にこのパラメーターを使用します。

API 操作でサポートされる追加パラメーター

EAS は、ネイティブの Stable Diffusion WebUI API に基づく新機能をサポートしています。必須パラメーターに加えて、API 操作にオプションパラメーターを追加して、より豊富な機能やカスタマイズされたニーズに対応します:

  • Stable Diffusion モデル、VAE モデル、および保存ディレクトリを指定します。

  • URL 経由での入力パラメーターをサポートし、対応するステータスコードを返します。

  • URL 経由で生成された画像および ControlNet 対応の画像にアクセスします。

具体的な使用例は次のとおりです:

txt2img リクエストとレスポンスの例

リクエストデータの形式例は次のとおりです:

{
      "alwayson_scripts": {
          "sd_model_checkpoint": "deliberate_v2.safetensors",  
          "save_dir": "/code/stable-diffusion-webui/data-oss/outputs",
          "sd_vae": "Automatic"
      },
      "steps": 20,
      "prompt": "girls",          
      "batch_size": 1,                                            
      "n_iter": 2,                                                 
      "width": 576, 
      "height": 576,
      "negative_prompt": "ugly, out of frame"
  }

主要なパラメーターの説明は次のとおりです:

  • sd_model_checkpoint:Stable Diffusion モデルパラメーターを指定し、大規模モデルへの自動切り替えを有効にします。

  • sd_vae:VAE モデルを指定します。

  • save_dir:生成された画像の保存パスを指定します。

同期 API リクエストの例は次のとおりです:

# 同期 API を呼び出してモデルの効果を検証します。

curl --location --request POST '<service_url>/sdapi/v1/txt2img' \
--header 'Authorization: <token>' \
--header 'Content-Type: application/json' \
--data-raw '{
      "alwayson_scripts": {
          "sd_model_checkpoint": "deliberate_v2.safetensors",
          "save_dir": "/code/stable-diffusion-webui/data-oss/outputs",
          "sd_vae": "Automatic"
      },
      "prompt": "girls",          
      "batch_size": 1,                                            
      "n_iter": 2,                                                 
      "width": 576, 
      "height": 576,
      "negative_prompt": "ugly, out of frame"
  }'

レスポンスデータの形式例は次のとおりです:

{
  "images": [],
  "parameters": {
    "id_task": "14837",
    "status": 0,
    "image_url": "/code/stable-diffusion-webui/data-oss/outputs/txt2img-grids/2023-07-24/grid-29a67c1c-099a-4d00-8ff3-1ebe6e64931a.png,/code/stable-diffusion-webui/data-oss/outputs/txt2img-images/2023-07-24/74626268-6c81-45ff-90b7-faba579dc309-1146644551.png,/code/stable-diffusion-webui/data-oss/outputs/txt2img-images/2023-07-24/6a233060-e197-4169-86ab-1c18adf04e3f-1146644552.png",
    "seed": "1146644551,1146644552",
    "error_msg": "",
    "total_time": 32.22393465042114
  },
  "info": ""
}

非同期 API リクエストの例は次のとおりです:

# データを非同期キューに直接送信します。
curl --location --request POST '<service_url>/sdapi/v1/txt2img' \
--header 'Authorization: <token>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "alwayson_scripts": {
        "sd_model_checkpoint": "deliberate_v2.safetensors",
        "id_task": "14837",
        "uid": "123",
        "save_dir": "tmp/outputs"
    },
    "prompt": "girls",
    "batch_size": 1,
    "n_iter": 2,
    "width": 576,
    "height": 576,
    "negative_prompt": "ugly, out of frame"
}'

img2img リクエストデータ形式の例

リクエストデータの形式例は次のとおりです:

{
    "alwayson_scripts": {
        "image_link":"https://eas-cache-cn-hangzhou.oss-cn-hangzhou-internal.aliyuncs.com/stable-diffusion-cache/tests/boy.png",
        "sd_model_checkpoint": "deliberate_v2.safetensors",
        "sd_vae": "Automatic",
        "save_dir": "/code/stable-diffusion-webui/data-oss/outputs"
    },
    "prompt": "girl",
    "batch_size": 1,                                            
    "n_iter": 2,                                                 
    "width": 576, 
    "height": 576,
    "negative_prompt": "ugly, out of frame",
    "steps": 20, # サンプリングステップ
    "seed": 111,   
    "subseed": 111, # バリエーションシード
    "subseed_strength": 0, # バリエーション強度
    "seed_resize_from_h": 0, # 高さからシードをリサイズ
    "seed_resize_from_w": 0, # 幅からシードをリサイズ
    "seed_enable_extras": false, # エクストラ
    "sampler_name": "DDIM", # サンプリングメソッド
    "cfg_scale": 7.5, # CFG スケール
    "restore_faces": true, # 顔の復元
    "tiling": false, # タイリング
    "init_images": [], # image base64 str, デフォルトは None
    "mask_blur": 4, # マスクのぼかし
    "resize_mode": 1, # 0 リサイズのみ, 1 切り取りとリサイズ, 2 リサイズと塗りつぶし, 3 リサイズのみ
    "denoising_strength": 0.75, # ノイズ除去強度
    "inpainting_mask_invert": 0, #int, ['Inpaint masked', 'Inpaint not masked'] のインデックス, マスクモード
    "inpainting_fill": 0, #['fill', 'original', 'latent noise', 'latent nothing'] のインデックス, マスクされたコンテンツ
    "inpaint_full_res": 0, # ["Whole picture", "Only masked"] のインデックス, Inpaint エリア
    "inpaint_full_res_padding": 32, #minimum=0, maximum=256, step=4, value=32, マスクされた部分のみのパディング (ピクセル単位)
    #"image_cfg_scale": 1, # スケールによるリサイズ
    #"script_name": "Outpainting mk2", # 使用するスクリプト名。使用しない場合はこのフィールドを追加しないでください。
    #"script_args": ["Outpainting", 128, 8, ["left", "right", "up", "down"], 1, 0.05]  # スクリプトに対応するパラメーター。ここでは、固定フィールド、ピクセル、mask_blur、方向、noise_q、color_variation に対応します。
}

レスポンスデータの形式例は次のとおりです:

{
    "images":[],
    "parameters":{
        "id_task":"14837",
        "status":0,
        "image_url":"/data/api_test/img2img-grids/2023-06-05/grid-0000.png,/data/api_test/img2img-images/2023-06-05/00000-1003.png,/data/api_test/img2img-images/2023-06-05/00001-1004.png",
        "seed":"1003,1004",
        "error_msg":""
    },
    "info":""
}

ControlNet データ形式を使用した txt2img

リクエストデータの形式は次のとおりです:

{
    "alwayson_scripts": {
        "sd_model_checkpoint": "deliberate_v2.safetensors", # モデル名、必須
        "save_dir": "/code/stable-diffusion-webui/data-oss/outputs",
        "controlnet":{
            "args":[
                {
                    "image_link": "https://pai-aigc-dataset.oss-cn-hangzhou.aliyuncs.com/pixabay_images/00008b87bf3ff6742b8cf81c358b9dbc.jpg",
                    "enabled": true, 
                    "module": "canny", 
                    "model": "control_v11p_sd15_canny", 
                    "weight": 1, 
                    "resize_mode": "Crop and Resize", 
                    "low_vram": false, 
                    "processor_res": 512, 
                    "threshold_a": 100, 
                    "threshold_b": 200, 
                    "guidance_start": 0, 
                    "guidance_end": 1, 
                    "pixel_perfect": true, 
                    "control_mode": "Balanced", 
                    "input_mode": "simple", 
                    "batch_images": "", 
                    "output_dir": "", 
                    "loopback": false
                }
            ]
        }
    },
    # 主要パラメーター
    "prompt": "girls",          
    "batch_size": 1,                                            
    "n_iter": 2,                                                 
    "width": 576, 
    "height": 576,
    "negative_prompt": "ugly, out of frame"
}

レスポンスデータの形式例は次のとおりです:

{
    "images":[],
    "parameters":{
        "id_task":"14837",
        "status":0,
        "image_url":"/data/api_test/txt2img-grids/2023-06-05/grid-0007.png,/data/api_test/txt2img-images/2023-06-05/00014-1003.png,/data/api_test/txt2img-images/2023-06-05/00015-1004.png",
        "seed":"1003,1004",
        "error_msg":"",
        "image_mask_url":"/data/api_test/controlnet_mask/2023-06-05/00000.png,/data/api_test/controlnet_mask/2023-06-05/00001.png"
    },
    "info":""
}

リファレンス