Os clusters do ACK Auto Mode suportam pools de nós do Auto Mode. Com a elasticidade sob demanda do Knative Serving, implante o modelo de linguagem de grande porte Qwen3.5-4B como um service de inferência serverless sob demanda. Após a implantação, não é preciso gerenciar recursos de GPU manualmente, o que torna essa solução ideal para cenários de inferência de modelos sensíveis a custos e com baixa complexidade operacional.
O fluxo de trabalho combina dois mecanismos:
O pool de nós do Auto Mode gerencia a criação e a liberação de nós de GPU.
O Knative Serving dimensiona os pods com base na concorrência de requisições (
concurrency) ou em requisições por segundo (rps).
Etapa 1: Crie um cluster do ACK Auto Mode e um pool de nós de GPU
1. Crie um cluster
Acesse o ACK console. No painel de navegação à esquerda, clique em Clusters.
-
Na página Clusters, clique em Create Kubernetes Cluster. Na página ACK Managed Cluster, ative o Auto Mode.
Após ativar o Auto Mode, a página exibe três recursos principais: Operações totalmente gerenciadas (plano de controle do cluster totalmente gerenciado, atualizações automáticas de versão, nós sem necessidade de manutenção e autorrecuperação), Dimensionamento automático de nós (dimensionamento elástico sob demanda, seleção automática do tipo de instância e otimização dos custos de recursos) e Sistema operacional de nó altamente otimizado (um sistema operacional otimizado para contêineres com inicialização rápida, sistema de arquivos imutável e práticas recomendadas de segurança por padrão).
-
Configure as definições e clique em Create Kubernetes Cluster.
Consulte Create an ACK Auto Mode cluster .
2. Crie um pool de nós de GPU
Na página ACK Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
-
Na página Node Pools, clique em Create Node Pool e configure o pool de nós na caixa de diálogo Create Node Pool.
Parâmetros principais (consulte Create a node pool para ver todas as opções):
Configure Managed Node Pool: Use o modo de gerenciamento inteligente.
Configurações relacionadas à instância: Em Instance Configuration Mode, selecione Specify Instance Type. Em seguida, escolha um tipo de instância de GPU, como V100, A10 ou T4.
Node Labels: Adicione o rótulo
ack.aliyun.com/nvidia-driver-version:550.144.03para definir a versão do driver NVIDIA como 550.144.03.Container Image Acceleration: Ative para reduzir o tempo de pull da imagem do modelo.
3. Implante os componentes do Knative
Consulte Deploy Knative components.
Etapa 2: Prepare os arquivos do modelo e envie-os para o OSS
Baixe o Qwen3.5-4B do ModelScope para uma instância ECS temporária, envie-o para o OSS com o ossutil e monte o caminho do bucket como um volume persistente. Isso evita downloads repetidos nas reinicializações dos pods.
Antes de começar:
Um OSS bucket criado.
O ossutil instalado e configurado na instância ECS temporária.
1. Baixe os arquivos do modelo Qwen3.5-4B
Execute os seguintes comandos na instância ECS temporária.
-
Instale o Git.
# You can run 'yum install git' or 'apt install git' to install it. sudo yum install git -
Instale o Git LFS (Large File Storage).
# You can run 'yum install git-lfs' or 'apt install git-lfs' to install it. sudo yum install git-lfs -
Clone o repositório do Qwen3.5-4B do ModelScope, ignorando os arquivos LFS.
GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/qwen/Qwen3.5-4B.git -
Acesse o diretório e baixe os arquivos gerenciados pelo LFS.
cd Qwen3.5-4B git lfs pull
2. Envie os arquivos do modelo para o OSS
-
Crie um diretório de modelo no seu bucket do OSS.
Substitua
<Your-Bucket-Name>pelo nome do seu bucket.ossutil mkdir oss://<Your-Bucket-Name>/models/Qwen3.5-4B -
Envie os arquivos do modelo para o OSS.
ossutil cp -r ./Qwen3.5-4B oss://<Your-Bucket-Name>/models/Qwen3.5-4B
3. Configure um volume de armazenamento do OSS
-
Choose an authentication method (RRSA or AccessKey) and prepare the access credentials.
Este tópico usa autenticação por AccessKey. Para outros métodos, consulte Use an ossfs 2.0 static persistent volume .
-
Armazene o AccessKey como um secret do Kubernetes para acesso ao PV.
Substitua
<yourAccessKeyID>e<yourAccessKeySecret>pelas suas credenciais. O namespace do secret deve corresponder ao namespace da aplicação.kubectl create -n default secret generic oss-secret --from-literal='akId=<yourAccessKeyID>' --from-literal='akSecret=<yourAccessKeySecret>' -
Crie um PV e um PVC para montar o diretório do modelo do OSS no modo de somente leitura. Este exemplo uses an ossfs 2.0 static persistent volume.
Etapa 3: Implante e verifique o service do Knative
1. Crie um service do Knative
Na página ACK Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
-
Na aba Service Management, clique em Create from Template. Defina Sample Template como Custom e implante o service do Knative.
Parâmetro
Descrição
autoscaling.knative.dev/metricA métrica de dimensionamento automático. Valores válidos:
-
concurrency(padrão): Dimensiona por concorrência. -
rps: Dimensiona por requisições por segundo.
autoscaling.knative.dev/targetO valor da métrica de destino que aciona o dimensionamento automático.
autoscaling.knative.dev/minScaleRéplicas mínimas. Inteiro ≥ 0. Defina como 0 para ativar o dimensionamento para zero.
autoscaling.knative.dev/maxScaleRéplicas máximas. Limita o scale-out.
-
2. Verifique a implantação do service
-
Na aba Service Management, verifique se o service está pronto. Anote o nome de domínio padrão e o endereço do gateway de acesso.
Nota: Envie requisições para o gateway de acesso (formato:
alb-xxx.aliyuncsslb.com) com um cabeçalho Host definido para o domínio do service (formato:qwen.default.example.com). -
Envie uma requisição de teste para o service de inferência.
Substitua
xx.40.85.xxpelo endereço do seu gateway de acesso eqwen.default.example.compelo seu nome de domínio padrão.curl http://xx.40.85.xx:80/v1/chat/completions \ -H "Host: qwen.default.example.com" \ -H "Content-Type: application/json" \ -d '{ "model": "Qwen3.5-4B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Tell me about Hangzhou" } ] } ], "max_tokens": 200 }'Saída esperada:
{ "id": "chatcmpl-20dfb4c8-d1ab-48bc-9f1a-78b84c6c8adf", "object": "chat.completion", "created": 1772602897, "model": "Qwen3.5-4B", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "Hangzhou, abbreviated as 'Hang', is a sub-provincial city located in Zhejiang Province, China..." }, "finish_reason": "length" } ], "usage": { "prompt_tokens": 14, "completion_tokens": 200, "total_tokens": 214 } }