Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Deploy a production-grade Stable Diffusion service with Knative

Última atualização: Jun 27, 2026

Ao implantar o Stable Diffusion em um cluster ACK com o Knative, você controla com precisão o número de requisições simultâneas que um único pod processa, com base no throughput dele. Isso garante a estabilidade do serviço. O Knative também reduz automaticamente os pods para zero quando não há tráfego, diminuindo os custos de recursos de GPU.

Pré-requisitos

  • Você criou um cluster ACK que inclui nós de GPU. Seu cluster deve executar o Kubernetes 1.24 ou posterior. Para mais informações, consulte Criar um cluster gerenciado ACK.

    Recomendamos os seguintes tipos de instância: ecs.gn5-c4g1.xlarge, ecs.gn5i-c8g1.2xlarge ou ecs.gn5-c8g1.2xlarge.

  • Você implantou o Knative no cluster. Para mais informações, consulte Implantar e gerenciar componentes do Knative.

Como funciona

Importante

Cumpra os acordos de usuário, as especificações de uso e as leis e regulamentos aplicáveis do modelo Stable Diffusion de terceiros. A Alibaba Cloud não garante a legalidade, segurança ou precisão do modelo Stable Diffusion e não assume responsabilidade por quaisquer danos decorrentes de seu uso.

O Stable Diffusion gera cenas e imagens alvo de forma rápida e precisa. No entanto, ambientes de produção geralmente apresentam os seguintes requisitos:

  • Um único pod tem throughput limitado, e lidar com múltiplas requisições simultâneas pode sobrecarregá-lo. Portanto, controle com precisão o número de requisições simultâneas por pod.

  • Recursos de GPU são caros. Aloque recursos de GPU sob demanda e libere-os prontamente durante horários de baixa atividade.

ACK Knative oferece suporte a agendamento preciso com base no número de requisições simultâneas e implementa dimensionamento automático para criar um serviço Stable Diffusion de nível de produção. A figura a seguir ilustra esse processo.

Etapa 1: Implantar o serviço Stable Diffusion

Importante

Garanta que o serviço Stable Diffusion esteja implantado em nós de GPU. Caso contrário, o serviço não funcionará.

  1. Faça login no console ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Applications > Knative.

  3. Implante o serviço Stable Diffusion.

    O ACK Knative fornece modelos de aplicativos populares. Use um modelo de aplicativo para implantar rapidamente ou implante o serviço usando YAML.

    Modelo de aplicativo

    Clique na aba Popular Apps e clique em Deploy no cartão do serviço Stable Diffusion.

    Após a conclusão da implantação, clique na aba Services para visualizar o progresso da implantação na lista de serviços. O serviço estará implantado quando o Status exibir Success.

    YAML

    Clique na aba Services, selecione default na lista suspensa Namespace e clique em Create from Template. Cole o seguinte exemplo de YAML no modelo e clique em Create para criar um serviço chamado 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

    Na página Services, o nome de domínio padrão do serviço stable-diffusion é stable-diffusion.default.example.com.

Etapa 2: Acessar o serviço

  1. Na aba Services, obtenha o Gateway e o Default Domain do serviço.

    Nota

    Se o tipo de gateway for ALB Gateway, use o comando curl para acessar o endereço do serviço. O formato é o seguinte:

    curl -H "Host: stable-diffusion.default.example.com" http://alb-XXX.cn-hangzhou.alb.aliyuncsslb.com # Replace the placeholder with your ALB Gateway address.

    Para acessar o serviço diretamente pelo nome de domínio, configure um registro CNAME para a instância ALB.

  2. Por exemplo:

    47.xx.xxx.xx stable-diffusion.default.example.com # Replace the placeholder with the gateway IP address.
  3. Após configurar o mapeamento de host, na aba Services, clique no nome de domínio padrão do serviço stable-diffusion.

    Agora você pode acessar o Stable Diffusion diretamente usando seu nome de domínio.

    Se o acesso for bem-sucedido, seu navegador exibirá a página txt2img da interface web do Stable Diffusion, e a barra de endereços mostrará o nome de domínio do serviço Knative. Na caixa de entrada de prompt positivo, insira texto, como cat, e clique em Generate. Se a imagem de IA correspondente for gerada, o serviço de inferência do Stable Diffusion implantado pelo Knative está funcionando corretamente.

Etapa 3: Verificar o dimensionamento automático baseado em requisições

  1. Use a ferramenta de teste de carga Hey para executar um teste de estresse.

    Nota

    Para mais informações sobre a ferramenta de teste de carga Hey, consulte 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

    Este comando envia 50 requisições com nível de simultaneidade de 5 e tempo limite de 180 segundos.

    Saída esperada:

    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

    A saída mostra que 50 requisições foram enviadas e a taxa de sucesso é de 100%.

  2. Execute o seguinte comando para observar o dimensionamento automático de pods em tempo real:

    watch -n 1 'kubectl get po'

    Durante o teste de estresse, a contagem de pods escala automaticamente para cinco, e o status de todos os pods é Running.

    Como a simultaneidade máxima para um único pod está definida como 1 (containerConcurrency: 1), o serviço Stable Diffusion escala horizontalmente automaticamente para 5 pods durante o teste de estresse.

Etapa 4: Visualizar dados de monitoramento do serviço

O Knative oferece observabilidade pronta para uso. Na página Knative, clique na aba Monitoring Dashboards para visualizar dados de monitoramento do serviço Stable Diffusion. Para mais informações sobre como habilitar e usar o Painel de Monitoramento do Knative, consulte Visualizar o Painel de Monitoramento do Knative.

Documentação relacionada

Para sugestões de configuração sobre a implantação de serviços de inferência de modelos de IA com o Knative, consulte Melhores práticas para implantar serviços de inferência de modelos de IA no Knative.