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

Container Service for Kubernetes:Knative に基づく本番環境での Stable Diffusion サービスのデプロイ

最終更新日:Mar 01, 2026

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

前提条件

  • Kubernetes 1.24 以降を実行する ACK クラスターが作成されており、そのクラスターに GPU 高速化ノードが含まれていること。詳細については、「ACK マネージドクラスターの作成」をご参照ください。

    インスタンスタイプは ecs.gn5-c4g1.xlargeecs.gn5i-c8g1.2xlarge、または ecs.gn5-c8g1.2xlarge を選択することを推奨します。

  • クラスターに Knative がデプロイされていること。詳細については、「Knative のデプロイと管理」をご参照ください。

操作手順

重要

サードパーティモデルである Stable Diffusion のユーザー同意書、利用規約、および関連する法律法規を遵守する必要があります。Alibaba Cloud は、Stable Diffusion の合法性、安全性、または正確性を保証しません。Alibaba Cloud は、Stable Diffusion の使用によって生じたいかなる損害についても責任を負いません。

Stable Diffusion は、ターゲットシーンや画像を迅速かつ正確に生成できます。しかし、本番環境で Stable Diffusion をデプロイするには、いくつかの課題があります:

  • スループットの制限:単一の Pod が処理できるリクエスト数には限りがあります。1つの Pod にあまりにも多くの同時リクエストを転送すると、サーバーが過負荷になる可能性があります。

  • コスト管理:GPU リソースは高価です。コストを効果的に管理するためには、オンデマンドでプロビジョニングし、トラフィックが少ない期間には迅速に解放する必要があります。

ACK Knative は、同時実行数ベースのオートスケーリングを提供することで、これらの課題に対処します。各 Pod に送信される同時リクエスト数を正確に管理することで、レプリカ数を自動的にスケールアップまたはスケールダウンさせることができ、本番環境レベルでコスト効率の高い Stable Diffusion サービスを構築できます。

image

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

重要

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

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

  2. クラスター ページで、対象のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[アプリケーション] > [Knative] を選択します。

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

    ACK Knative は、一般的に使用されるアプリケーションテンプレートを提供します。アプリケーションテンプレートまたは YAML ファイルを使用して、Stable Diffusion サービスを迅速にデプロイできます。

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

    [人気のあるアプリ] タブをクリックし、stable-diffusion カードの [クイックデプロイ] をクリックします。

    image

    デプロイ後、[サービス] をクリックしてサービスリストでデプロイステータスを表示します。[ステータス][作成済み] になっていれば、サービスはデプロイされています。

    YAML

    [サービス] タブで、[名前空間] ドロップダウンリストから [default] を選択し、[テンプレートから作成] をクリックします。次の 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

    サービスが以下のステータスであれば、デプロイは成功です。

    image

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

  1. [サービス] タブで、サービスの [ゲートウェイ IP アドレス][デフォルトドメイン名] を記録します。

    説明

    ALB Ingress を使用する場合、次の curl コマンド形式でサービスにアクセスできます:

    curl -H "Host: stable-diffusion.default.example.com" http:alb-XXX.cn-hangzhou.alb.aliyuncsslb.com # ご利用の ALB Ingress の実際のアドレスに置き換えてください。

    直接アクセスするには、ALB インスタンスの CNAME レコードを設定します。

  2. ローカルの hosts ファイルにエントリを追加して、サービスのゲートウェイアドレスをアクセスしたいドメインにマッピングします。次のサンプルコードは一例です:

    47.xx.xxx.xx stable-diffusion.default.example.com # ご利用の実際のゲートウェイ IP アドレスに置き換えてください。
  3. hosts ファイルを変更した後、[サービス] タブに移動し、stable-diffusion サービスのデフォルトドメイン名をクリックしてサービスにアクセスします。

    次のページが表示されれば、設定は成功です。

    image.png

ステップ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つの同時リクエストを含む50のリクエストを送信し、タイムアウト期間を 180 秒に設定します。

    期待される出力:

    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件すべてのリクエストが正常に処理されたことを示しています。

  2. 次のコマンドを実行して Pod をクエリします:

    watch -n 1 'kubectl get po'

    image.png

    出力は、Stable Diffusion サービス用に5つの Pod が作成されたことを示しています。これは、サービスに containerConcurrency: 1 が設定されており、1つの Pod が最大で1つのリクエストを同時に処理できることを示しているためです。

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

Knative は、すぐに使える可観測性機能を提供します。[Knative] ページの [モニタリングダッシュボード] で Stable Diffusion サービスのモニタリングデータを表示できます。Knative ダッシュボードを有効にして使用するには、「Knative モニタリングダッシュボードの表示」をご参照ください。

関連ドキュメント

Knative で AI 推論サービスをデプロイするには、「Knative で AI 推論サービスをデプロイするためのベストプラクティス」をご参照ください。