Os clusters do Container Service for Kubernetes (ACK) Auto Mode são otimizados para elasticidade de GPU e gerenciam automaticamente o dimensionamento e as operações básicas dos nós de GPU. Este tópico usa o modelo Qwen3.5-2B como exemplo para demonstrar como implantar rapidamente um serviço de inferência de modelo grande com computação GPU em um cluster ACK Auto Mode.
Pré-requisitos
Você já criou um cluster ACK Auto Mode.
-
Você criou um pool de nós de GPU elegível no modo de hospedagem inteligente.
Etapa 1: Preparar arquivos de modelo e montar o OSS
Nesta etapa, use uma instância ECS temporária para baixar os arquivos do modelo Qwen3.5-2B do ModelScope e enviá-los a um bucket do OSS. Em seguida, configure um PersistentVolume (PV) e um PersistentVolumeClaim (PVC) para o cluster. A montagem do modelo no contêiner de inferência como volume evita downloads repetidos sempre que o contêiner for iniciado.
Verifique se os seguintes pré-requisitos foram atendidos:
Você já criou um bucket do OSS.
Você instalou e configurou o ossutil na instância ECS temporária.
1. Baixar o modelo Qwen3.5-2B
Execute as etapas a seguir na instância ECS temporária para baixar os arquivos do modelo do ModelScope.
-
Instale o Git.
# You can run yum install git or apt install git to install it. sudo yum install git -
Instale a extensão Git Large File Storage (LFS).
# You can run yum install git-lfs or apt install git-lfs to install it. sudo yum install git-lfs -
Inicialize o Git LFS e clone o repositório Qwen3.5-2B do ModelScope. Esse comando ignora os arquivos grandes do LFS para evitar downloads duplicados.
git lfs install GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/Qwen/Qwen3.5-2B.git -
Acesse o diretório do repositório e baixe os arquivos de modelo grande gerenciados pelo LFS.
cd Qwen3.5-2B/ git lfs pull
2. Enviar os arquivos do modelo para o OSS
-
Crie um diretório no bucket do OSS para armazenar o modelo.
Substitua
<Your-Bucket-Name>pelo nome real do seu bucket.ossutil mkdir oss://<Your-Bucket-Name>/models/Qwen3.5-2B -
Envie os arquivos locais do modelo para o OSS.
ossutil cp -r ./Qwen3.5-2B oss://<Your-Bucket-Name>/models/Qwen3.5-2B
3. Configurar um volume do OSS
Crie um PV e um PVC para permitir que os pods montem o diretório do modelo no OSS como um volume somente leitura. Para mais informações, consulte Usar um volume estático com ossfs 2.0.
-
Selecione um método de autenticação (RRSA ou AccessKey) e prepare as credenciais de acesso para garantir que o cluster acesse com segurança os recursos do bucket do OSS.
Este exemplo utiliza autenticação por AccessKey. Os dois métodos apresentam pequenas diferenças. Para mais detalhes, consulte Usar um volume estático com ossfs 2.0 .
-
Armazene seu AccessKey como um Secret para o PV.
Substitua
<yourAccessKeyID>e<yourAccessKeySecret>pelas suas credenciais reais. 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 no OSS como um volume somente leitura. O exemplo a seguir usa um volume estático com ossfs 2.0.
Etapa 2: Implantar e verificar o serviço de inferência
1. Criar Deployment e Service
Use o framework vLLM para implantar o modelo Qwen3.5-2B como um Deployment e exponha-o como um Service do tipo LoadBalancer.
Na página ACK Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
-
Clique em Create from YAML e envie o conteúdo YAML a seguir.
Após o envio do YAML, caso o cluster não tenha recursos de GPU suficientes, o pod entrará no estado
Pending. O ACK Auto Mode aciona automaticamente o dimensionamento de nós de GPU, cria novos nós e agenda o pod em um novo nó assim que ele for inicializado. Nenhuma intervenção manual é necessária. Quando o pod entrar no estadoRunning, o serviço de modelo estará implantado.Após concluir a implantação, visualize o status da aplicação na página Deployments.
2. Verificar o serviço de inferência
-
Obtenha o endereço IP público exposto pelo Service.
export EXTERNAL_IP=$(kubectl get svc qwen-2b -o jsonpath='{.status.loadBalancer.ingress[0].ip}') echo ${EXTERNAL_IP} -
Envie uma solicitação de inferência para verificar se o serviço está disponível.
Substitua
8.XX.XX.89pelo seu endereço IP público.curl http://8.XX.XX.89:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "Qwen3.5-2B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Kubernetes" } ] } ], "max_tokens": 200 }'Saída esperada:
{"id":"chatcmpl-98f158cdbbb38087","object":"chat.completion","created":1775043962,"model":"Qwen3.5-2B","choices":[{"index":0,"message":{"role":"assistant","content":"**Kubernetes** is an open-source container orchestration platform that automates deployment, scaling, management, and repair of containerized applications..."},"finish_reason":"length"}],"usage":{"prompt_tokens":14,"total_tokens":214,"completion_tokens":200}}