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

Container Service for Kubernetes:Knative を使用したプロダクショングレードの Stable Diffusion サービスのデプロイ

最終更新日:Jun 21, 2026

Knative を使用して Container Service for Kubernetes (ACK) クラスターに Stable Diffusion をデプロイすると、Knative はスループットに基づいて単一の Pod が処理できる同時リクエストの数を正確に制御できます。これにより、サービスの安定性が確保されます。また、Knative はトラフィックがない場合に Pod をゼロに自動でスケールダウンできるため、GPU リソースのコストを削減します。

前提条件

  • GPU ノードを含む ACK クラスターを作成済みであること。クラスターは Kubernetes 1.24 以降を実行している必要があります。詳細については、「ACK マネージドクラスターの作成」をご参照ください。

    次のインスタンスタイプを推奨します: ecs.gn5-c4g1.xlarge、ecs.gn5i-c8g1.2xlarge、または ecs.gn5-c8g1.2xlarge。

  • クラスターに Knative をデプロイ済みであること。詳細については、「Knative コンポーネントのデプロイと管理」をご参照ください。

仕組み

重要

サードパーティの Stable Diffusion モデルのユーザー契約、利用規約、および適用される法令を遵守する必要があります。Alibaba Cloud は、Stable Diffusion モデルの合法性、セキュリティ、または正確性を保証せず、その使用から生じるいかなる損害についても責任を負いません。

Stable Diffusion は、ターゲットシーンと画像を迅速かつ正確に生成します。しかし、本番環境では通常、次の要件があります。

  • 単一の Pod のスループットには限りがあり、複数の同時リクエストを処理すると Pod に過負荷がかかる可能性があります。そのため、Pod ごとの同時リクエスト数を正確に制御する必要があります。

  • GPU リソースは高価です。GPU リソースをオンデマンドで割り当て、オフピーク時には速やかに解放する必要があります。

ACK Knative は、同時リクエスト数に基づく正確なスケジューリングをサポートし、オートスケーリングを実装してプロダクショングレードの Stable Diffusion サービスを構築します。次の図は、このプロセスを示しています。

image

ステップ 1: Stable Diffusion サービスのデプロイ

重要

Stable Diffusion サービスが GPU ノードにデプロイされていることを確認する必要があります。そうでない場合、サービスは機能しません。

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[アプリケーション] > [ネイティブ] を選択します。

  3. Stable Diffusion サービスをデプロイします。

    ACK Knative では、人気のあるアプリケーションテンプレートを提供しています。アプリケーションテンプレートを使用して迅速にデプロイするか、YAML を使用してサービスをデプロイできます。

    アプリケーションテンプレート

    人気アプリケーション タブをクリックし、Stable Diffusion サービスカード上の 人気アプリケーション をクリックします。

    デプロイが完了したら、サービス管理 タブをクリックして、サービスリストでデプロイの進捗状況を確認します。ステータス成功 と表示されたら、サービスはデプロイされています。

    YAML

    サービス管理 タブをクリックし、[名前空間] ドロップダウンリストから 名前空間 を選択し、テンプレートで作成 をクリックします。次の YAML サンプルをテンプレートに貼り付け、作成する をクリックして stable-diffusion という名前のサービスを作成します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: stable-diffusion
      annotations:
        serving.knative.dev.alibabacloud/affinity: "cookie"
        serving.knative.dev.alibabacloud/cookie-name: "sd"
        serving.knative.dev.alibabacloud/cookie-timeout: "1800"
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/class: kpa.autoscaling.knative.dev
            autoscaling.knative.dev/maxScale: '10'
            autoscaling.knative.dev/targetUtilizationPercentage: "100"
            k8s.aliyun.com/eci-use-specs: ecs.gn5-c4g1.xlarge,ecs.gn5i-c8g1.2xlarge,ecs.gn5-c8g1.2xlarge  
        spec:
          containerConcurrency: 1
          containers:
          - args:
            - --listen
            - --skip-torch-cuda-test
            - --api
            command:
            - python3
            - launch.py
            image: yunqi-registry.cn-shanghai.cr.aliyuncs.com/lab/stable-diffusion@sha256:62b3228f4b02d9e89e221abe6f1731498a894b042925ab8d4326a571b3e992bc
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 7860
              name: http1
              protocol: TCP
            name: stable-diffusion
            readinessProbe:
              tcpSocket:
                port: 7860
              initialDelaySeconds: 5
              periodSeconds: 1
              failureThreshold: 3

    [サービス] ページでは、「stable-diffusion」サービスのデフォルトドメイン名は stable-diffusion.default.example.com です。

ステップ 2:サービスへのアクセス

  1. サービス管理 タブで、サービスの ゲートウェイデフォルトドメイン を取得します。

    説明

    ゲートウェイタイプが ALB ゲートウェイの場合、curl コマンドを使用してサービスアドレスにアクセスできます。形式は次のとおりです:

    curl -H "Host: stable-diffusion.default.example.com" http://alb-XXX.cn-hangzhou.alb.aliyuncsslb.com # プレースホルダーをお使いの ALB ゲートウェイアドレスに置き換えてください。

    サービスのドメイン名を直接使用してアクセスするには、「ALB インスタンスの CNAME レコードを設定する」をご参照ください。

  2. 例:

    47.xx.xxx.xx stable-diffusion.default.example.com # プレースホルダーをゲートウェイの IP アドレスに置き換えてください。
  3. ホストマッピングを設定した後、サービス管理 タブで、「stable-diffusion」サービスのデフォルトドメイン名をクリックします。

    これで、ドメイン名を直接使用して Stable Diffusion にアクセスできます。

    アクセスに成功すると、ブラウザに Stable Diffusion Web UI の [txt2img] ページが表示され、アドレスバーには Knative サービスのドメイン名が表示されます。ポジティブプロンプトの入力ボックスに cat などのテキストを入力し、[生成] をクリックします。対応する AI 画像が生成された場合、Knative によってデプロイされた Stable Diffusion 推論サービスは正常に実行されています。

ステップ 3:リクエストベースのオートスケーリングの検証

  1. Hey 負荷テストツールを使用してストレステストを実行します。

    説明

    Hey 負荷テストツールの詳細については、「Hey」をご参照ください。

    hey -n 50 -c 5 -t 180 -m POST -H "Content-Type: application/json" -d '{"prompt": "pretty dog"}' http://stable-diffusion.default.example.com/sdapi/v1/txt2img

    このコマンドは、同時実行数 5、タイムアウト 180 秒で、50 件のリクエストを送信します。

    期待される出力:

    Summary:
      Total:    252.1749 secs
      Slowest:    62.4155 secs
      Fastest:    9.9399 secs
      Average:    23.9748 secs
      Requests/sec:    0.1983
    Response time histogram:
      9.940 [1]    |■■
      15.187 [17]    |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
      20.435 [9]    |■■■■■■■■■■■■■■■■■■■■■
      25.683 [11]    |■■■■■■■■■■■■■■■■■■■■■■■■■■
      30.930 [1]    |■■
      36.178 [1]    |■■
      41.425 [3]    |■■■■■■■
      46.673 [1]    |■■
      51.920 [2]    |■■■■■
      57.168 [1]    |■■
      62.415 [3]    |■■■■■■■
    Latency distribution:
      10% in 10.4695 secs
      25% in 14.8245 secs
      50% in 20.0772 secs
      75% in 30.5207 secs
      90% in 50.7006 secs
      95% in 61.5010 secs
      0% in 0.0000 secs
    Details (average, fastest, slowest):
      DNS+dialup:    0.0424 secs, 9.9399 secs, 62.4155 secs
      DNS-lookup:    0.0385 secs, 0.0000 secs, 0.3855 secs
      req write:    0.0000 secs, 0.0000 secs, 0.0004 secs
      resp wait:    23.8850 secs, 9.9089 secs, 62.3562 secs
      resp read:    0.0471 secs, 0.0166 secs, 0.1834 secs
    Status code distribution:
      [200]    50 responses

    出力は、50 件のリクエストが送信され、成功率が 100% であることを示しています。

  2. 次のコマンドを実行して、Pod のオートスケーリングをリアルタイムで監視します。

    watch -n 1 'kubectl get po'

    ストレステスト中、Pod 数は自動的に 5 にスケールアウトし、すべての Pod のステータスは Running になります。

    単一 Pod の最大同時実行数が 1 (containerConcurrency: 1) に設定されているため、Stable Diffusion サービスはストレステスト中に自動的に 5 つの Pod にスケールアウトします。

ステップ 4:サービスモニタリングデータの表示

Knative は、標準提供の可観測性を提供します。Knative ページで、モニタリングダッシュボード タブをクリックして、Stable Diffusion サービスのモニタリングデータを表示します。Knative モニタリングダッシュボードの有効化と使用方法の詳細については、「Knative モニタリングダッシュボードの表示」をご参照ください。

関連ドキュメント

Knative を使用した AI モデル推論サービスのデプロイに関する設定の推奨事項については、「Knative での AI モデル推論サービスのデプロイに関するベストプラクティス」をご参照ください。