All Products
Search
Document Center

Container Service for Kubernetes:Menyebarkan Layanan Stable Diffusion di lingkungan produksi berbasis Knative

Last Updated:Dec 20, 2025

Saat menyebarkan Layanan Stable Diffusion berbasis Knative di kluster Container Service for Kubernetes (ACK), solusi Knative memungkinkan Anda mengontrol secara akurat jumlah maksimum permintaan konkuren yang dapat diproses oleh satu Pod berdasarkan throughput-nya, sehingga menjamin stabilitas layanan. Knative juga dapat secara otomatis menskalakan jumlah Pod hingga nol saat tidak ada traffic, sehingga mengurangi biaya penggunaan sumber daya GPU.

Prasyarat

  • Kluster ACK yang menjalankan Kubernetes 1.24 atau versi lebih baru telah dibuat, dan kluster tersebut berisi node yang dipercepat GPU. Untuk informasi selengkapnya, lihat Create an ACK managed cluster.

    Kami merekomendasikan Anda memilih ecs.gn5-c4g1.xlarge, ecs.gn5i-c8g1.2xlarge, atau ecs.gn5-c8g1.2xlarge.

  • Knative telah diterapkan di kluster tersebut. Untuk informasi selengkapnya, lihat Deploy and manage Knative.

Prosedur

Penting

Anda harus mematuhi perjanjian pengguna, spesifikasi penggunaan, serta peraturan dan undang-undang terkait dari model pihak ketiga Stable Diffusion. Alibaba Cloud tidak menjamin legalitas, keamanan, atau akurasi Stable Diffusion. Alibaba Cloud tidak bertanggung jawab atas kerugian apa pun yang timbul akibat penggunaan Stable Diffusion.

Stable Diffusion dapat menghasilkan adegan dan citra target secara cepat dan akurat. Namun, penerapannya di lingkungan produksi menghadirkan beberapa tantangan:

  • Throughput terbatas: Satu Pod hanya dapat menangani jumlah permintaan terbatas. Meneruskan terlalu banyak permintaan konkuren ke satu Pod dapat membebani server.

  • Pengelolaan biaya: Sumber daya GPU mahal. Untuk mengelola biaya secara efektif, sumber daya tersebut harus disediakan sesuai permintaan dan segera dilepas selama periode traffic rendah.

ACK Knative mengatasi tantangan-tantangan tersebut dengan menyediakan autoscaling berbasis konkurensi. Dengan mengelola secara tepat jumlah permintaan konkuren yang dikirim ke setiap Pod, sistem ini dapat secara otomatis menskalakan jumlah replika naik atau turun, sehingga memungkinkan Anda membangun Layanan Stable Diffusion yang siap produksi dan hemat biaya.

image

Langkah 1: Menyebarkan Layanan Stable Diffusion

Penting

Anda harus memastikan bahwa Layanan Stable Diffusion diterapkan dengan benar pada node yang dipercepat GPU. Jika tidak, layanan tersebut tidak dapat digunakan.

  1. Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.

  2. Pada halaman Clusters, temukan kluster yang diinginkan lalu klik namanya. Di panel navigasi kiri, pilih Applications > Knative.

  3. Sebarkan Layanan Stable Diffusion.

    ACK Knative menyediakan templat aplikasi yang umum digunakan. Anda dapat dengan cepat menyebarkan Layanan Stable Diffusion menggunakan templat aplikasi atau file YAML.

    Templat aplikasi

    Klik tab Popular Apps lalu klik Quick Deployment pada kartu stable-diffusion.

    image

    Setelah penerapan selesai, klik Services untuk melihat status penerapan di daftar layanan. Jika Status bernilai Created, berarti layanan telah berhasil diterapkan.

    YAML

    Pada tab Services, pilih default dari daftar drop-down Namespace lalu klik Create from Template. Salin templat YAML berikut ke editor kode lalu klik Create untuk membuat layanan bernama 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

    Layanan dianggap berhasil diterapkan jika memiliki status berikut.

    image

Langkah 2: Mengakses Layanan Stable Diffusion

  1. Pada tab Services, catat gateway IP address dan default domain name layanan tersebut.

    Catatan

    Jika Anda menggunakan ALB Ingress, Anda dapat mengakses layanan tersebut menggunakan format perintah curl berikut:

    curl -H "Host: stable-diffusion.default.example.com" http:alb-XXX.cn-hangzhou.alb.aliyuncsslb.com # Ganti dengan alamat aktual ALB Ingress Anda.

    Untuk akses langsung, konfigurasikan Rekaman CNAME untuk instans ALB.

  2. Petakan alamat gateway layanan ke domain yang ingin Anda akses dengan menambahkan entri ke file hosts lokal Anda. Contoh kode berikut merupakan ilustrasi:

    47.xx.xxx.xx stable-diffusion.default.example.com # Ganti dengan alamat IP gateway aktual Anda.
  3. Setelah mengubah file hosts, buka tab Services, lalu klik nama domain default layanan stable-diffusion untuk mengakses layanan tersebut.

    Jika halaman berikut muncul, konfigurasi telah berhasil.

    image.png

Langkah 3: Mengaktifkan auto scaling berdasarkan permintaan

  1. Gunakan tool uji beban hey untuk melakukan uji stres.

    Catatan

    Untuk informasi selengkapnya tentang tool hey yang digunakan untuk uji stres, lihat 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

    Kirim 50 permintaan dengan 5 permintaan konkuren dalam setiap batch dan atur periode timeout menjadi 180 detik.

    Output yang diharapkan:

    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

    Output tersebut menunjukkan bahwa semua 50 permintaan berhasil diproses.

  2. Jalankan perintah berikut untuk menanyakan Pod:

    watch -n 1 'kubectl get po'

    image.png

    Output tersebut menunjukkan bahwa 5 Pod dibuat untuk Layanan Stable Diffusion. Hal ini karena konfigurasi containerConcurrency: 1 pada layanan, yang menunjukkan bahwa satu Pod dapat memproses paling banyak 1 permintaan secara konkuren.

Langkah 4: Melihat data pemantauan Layanan Stable Diffusion

Knative menyediakan fitur observabilitas siap pakai. Anda dapat melihat data pemantauan Layanan Stable Diffusion pada Monitoring Dashboards di halaman Knative. Untuk mengaktifkan dan menggunakan dasbor Knative, lihat View the Knative monitoring dashboard.

Referensi

Untuk menyebarkan layanan inferensi AI di Knative, lihat Best practices for deploying AI inference services in Knative.