Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Quickly deploy a large language model inference service in ACK

Última atualização: Jun 27, 2026

Os clusters gerenciados Pro do ACK oferecem um ambiente pronto para executar serviços de inferência de modelos de linguagem grandes (LLM), sem necessidade de hardware GPU local ou configuração complexa de dependências. Este guia aborda dois caminhos de implantação: uma opção rápida para validar um modelo em cerca de 15 minutos e uma opção voltada para produção que pré-carrega arquivos de modelo em armazenamento persistente para reduzir o tempo de inicialização a frio e os custos de largura de banda.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Um cluster gerenciado Pro do ACK executando Kubernetes 1.22 ou posterior

  • Pelo menos um nó acelerado por GPU com 16 GB ou mais de memória de GPU

  • Driver NVIDIA versão 535 ou posterior instalado no pool de nós de GPU (este guia usa 550.144.03, definido pelo rótulo ack.aliyun.com/nvidia-driver-version)

  • O cliente Arena instalado

Escolha um caminho de implantação

Opção 1: Teste rápido

Opção 2: Produção

Tempo de configuração

~15 minutos

Maior (requer upload prévio do modelo)

Armazenamento do modelo

Baixado para o contêiner na inicialização

Pré-carregado no Object Storage Service (OSS)

Inicialização a frio

Lenta — o modelo é baixado novamente a cada reinício do pod

Rápida — o modelo já está no volume montado

Mais indicado para

Validar capacidades de inferência

Cargas de trabalho de produção estáveis e repetíveis

Opção 1: Implantação rápida para testes

Use o Arena para implantar o qwen/Qwen1.5-4B-Chat do ModelScope. O contêiner baixa o modelo durante a inicialização; portanto, o nó de GPU precisa de pelo menos 30 GB de espaço livre em disco.

  1. Execute o comando do Arena para implantar o serviço de inferência:

    arena serve custom \
        --name=modelscope \
        --version=v1 \
        --gpus=1 \
        --replicas=1 \
        --restful-port=8000 \
        --readiness-probe-action="tcpSocket" \
        --readiness-probe-action-option="port: 8000" \
        --readiness-probe-option="initialDelaySeconds: 30" \
        --readiness-probe-option="periodSeconds: 30" \
        --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1 \
        "MODEL_ID=qwen/Qwen1.5-4B-Chat python3 server.py"
    Para obter arquivos de modelo de um repositório do Hugging Face, consulte Obter modelos do Hugging Face .

    A saída a seguir confirma a criação dos recursos do Kubernetes para modelscope-v1:

    service/modelscope-v1 created
    deployment.apps/modelscope-v1-custom-serving created
    INFO[0002] The Job modelscope has been submitted successfully
    INFO[0002] You can run `arena serve get modelscope --type custom-serving -n default` to check the job status
  2. Verifique o status do serviço. O pod permanece em ContainerCreating enquanto baixa o modelo. Dependendo das condições de rede, esse processo leva de 5 a 15 minutos:

    arena serve get modelscope

    Quando o status do pod mostrar Running, o serviço de inferência estará pronto.

Opção 2: Implantação pronta para produção com armazenamento persistente

Pré-carregar arquivos de modelo no OSS evita baixar repetidamente arquivos maiores que 10 GB sempre que um pod reinicia. Essa abordagem reduz o tempo de inicialização a frio, diminui os custos de largura de banda e melhora a estabilidade do serviço.

Etapa 1: Baixe os arquivos do modelo

  1. Instale o Git e o Git Large File Storage (LFS). macOS

    brew install git
    brew install git-lfs

    Windows Baixe e instale o Git no site oficial do Git. O Git Large File Storage vem integrado ao Git for Windows — baixe a versão mais recente. Linux (baseado em Red Hat)

    yum install git
    yum install git-lfs

    Para outras distribuições Linux, consulte o site oficial do Git.

  2. Clone o repositório do modelo Qwen1.5-4B-Chat e obtenha os arquivos grandes:

    GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/qwen/Qwen1.5-4B-Chat.git
    cd Qwen1.5-4B-Chat
    git lfs pull

Etapa 2: Envie os arquivos do modelo para o OSS

  1. Instale e configure o ossutil.

  2. Crie um bucket. Para reduzir a latência de carregamento do modelo, crie o bucket na mesma região do cluster:

    ossutil mb oss://<your-bucket-name>
  3. Crie uma pasta no bucket para os arquivos do modelo:

    ossutil mkdir oss://<your-bucket-name>/Qwen1.5-4B-Chat
  4. Envie os arquivos do modelo:

    ossutil cp -r ./Qwen1.5-4B-Chat oss://<your-bucket-name>/Qwen1.5-4B-Chat

Etapa 3: Configure um volume persistente (PV)

  1. Faça login no console do ACK e clique em no cluster desejado. No painel de navegação à esquerda, escolha Volumes > Persistent Volumes.

  2. Clique em Create. Na caixa de diálogo Create PV, defina os parâmetros a seguir e clique em Create:

    Parâmetro

    Valor

    PV type

    OSS

    Volume name

    llm-model

    Capacity

    20Gi

    Access mode

    ReadOnlyMany

    Access certificate

    Selecione Create Secret

    Optional parameters

    -o umask=022 -o max_stat_cache_size=0 -o allow_other

    Bucket ID

    Clique em Select Bucket e selecione seu bucket

    OSS path

    /Qwen1.5-4B-Chat

    Endpoint

    Selecione Public Endpoint

Etapa 4: Configure uma solicitação de volume persistente (PVC)

  1. No painel de navegação à esquerda, escolha Volumes > Persistent Volume Claims.

  2. Na página Persistent Volume Claims, defina os parâmetros a seguir e clique em Create:

    Parâmetro

    Valor

    PVC type

    OSS

    Name

    llm-model

    Allocation mode

    Selecione Existing Volumes

    Existing volumes

    Selecione o PV llm-model criado na etapa anterior

    Capacity

    20Gi

Etapa 5: Implante o serviço de inferência

Execute o comando do Arena para implantar o serviço. A flag --data monta o PVC com os arquivos de modelo pré-carregados. Como o modelo já está no volume montado, o pod inicia sem precisar baixar nada:

arena serve custom \
    --name=modelscope \
    --version=v1 \
    --gpus=1 \
    --replicas=1 \
    --restful-port=8000 \
    --readiness-probe-action="tcpSocket" \
    --readiness-probe-action-option="port: 8000" \
    --readiness-probe-option="initialDelaySeconds: 30" \
    --readiness-probe-option="periodSeconds: 30" \
    --data=llm-model:/Qwen1.5-4B-Chat \
    --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1 \
    "MODEL_ID=/Qwen1.5-4B-Chat python3 server.py"

A saída a seguir confirma o envio do serviço de inferência:

service/modelscope-v1 created
deployment.apps/modelscope-v1-custom-serving created
INFO[0001] The Job modelscope has been submitted successfully
INFO[0001] You can run `arena serve get modelscope --type custom-serving -n default` to check the job status

Verifique o status do serviço:

arena serve get modelscope

Quando o status do pod mostrar Running, o serviço de inferência estará pronto.

Valide o serviço de inferência

  1. Configure o encaminhamento de porta para o serviço de inferência:

    Importante

    O comando kubectl port-forward destina-se apenas a desenvolvimento e depuração. Ele não é confiável, seguro ou escalável em produção. Para redes de produção, consulte Gerenciamento de Ingress.

    kubectl port-forward svc/modelscope-v1 8000:8000

    Saída esperada:

    Forwarding from 127.0.0.1:8000 -> 8000
    Forwarding from [::1]:8000 -> 8000
  2. Em um novo terminal, envie uma solicitação de teste de inferência:

    curl -X POST http://localhost:8000/generate \
      -H "Content-Type: application/json" \
      -d '{
        "text_input": "What is artificial intelligence? Artificial intelligence is",
        "parameters": {
          "stream": false,
          "temperature": 0.9,
          "seed": 10
        }
      }'

    Uma resposta bem-sucedida contém o texto gerado pelo modelo:

    {"model_name":"/Qwen1.5-4B-Chat","text_output":"What is artificial intelligence? Artificial intelligence is a branch of computer science that studies how to make computers have intelligent behavior."}

(Opcional) Limpeza

Exclua o serviço de inferência e os recursos de armazenamento ao concluir:

# Delete the inference service
arena serve del modelscope

# Delete the PVC and PV (Option 2 only)
kubectl delete pvc llm-model
kubectl delete pv llm-model

Perguntas frequentes

Como obter arquivos de modelo do Hugging Face em vez do ModelScope?

Certifique-se de que o runtime do contêiner consiga acessar o repositório do Hugging Face e defina MODEL_SOURCE=Huggingface no comando do Arena. O nó de GPU precisa de pelo menos 30 GB de espaço livre em disco para acomodar os arquivos baixados:

arena serve custom \
    --name=huggingface \
    --version=v1 \
    --gpus=1 \
    --replicas=1 \
    --restful-port=8000 \
    --readiness-probe-action="tcpSocket" \
    --readiness-probe-action-option="port: 8000" \
    --readiness-probe-option="initialDelaySeconds: 30" \
    --readiness-probe-option="periodSeconds: 30" \
    --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1 \
    "MODEL_ID=Qwen/Qwen1.5-4B-Chat MODEL_SOURCE=Huggingface python3 server.py"

A saída a seguir confirma a criação dos recursos:

service/huggingface-v1 created
deployment.apps/huggingface-v1-custom-serving created
INFO[0003] The Job huggingface has been submitted successfully
INFO[0003] You can run `arena serve get huggingface --type custom-serving -n default` to check the job status

Apêndice: referência de parâmetros de comando

Parâmetro

Descrição

Exemplo

serve custom

Subcomando do Arena. Implanta um serviço de modelo personalizado em vez de um tipo predefinido, como tfserving ou triton.

--name

Nome do serviço. Identificador exclusivo usado para operações subsequentes, como verificação de logs e exclusão do serviço.

modelscope

--version

Versão do serviço. Rótulo de versão para o serviço, útil para gerenciamento de versões e lançamentos graduais.

v1

--gpus

Quantidade de GPUs. Número de GPUs alocadas para cada pod. Obrigatório quando o modelo requer GPUs para inferência.

1

--replicas

Número de réplicas. Quantidade de pods a serem executados. Mais réplicas aumentam o throughput simultâneo e a disponibilidade.

1

--restful-port

Porta da API RESTful. Porta na qual o serviço expõe sua API RESTful para receber solicitações de inferência.

8000

--readiness-probe-action

Tipo de sonda de prontidão. Método de verificação usado pela sonda de prontidão do Kubernetes para determinar se o contêiner está pronto para receber tráfego.

tcpSocket

--readiness-probe-action-option

Opções do tipo de sonda. Parâmetros para o tipo de sonda escolhido. Para tcpSocket, especifica a porta a ser verificada.

port: 8000

--readiness-probe-option

Configurações adicionais da sonda. Parâmetros extras para a sonda de prontidão. Esta flag pode ser repetida. Define o atraso inicial e o intervalo de verificação.

initialDelaySeconds: 30, periodSeconds: 30

--data

Montagem de volume. Monta um PVC em um caminho especificado dentro do contêiner, no formato <pvc-name>:<mount-path>. Usado para montar arquivos de modelo pré-carregados.

llm-model:/Qwen1.5-4B-Chat

--image

Imagem do contêiner. URL completa da imagem do contêiner que define o ambiente de runtime para o serviço.

kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1

[COMMAND]

Comando de inicialização. Comando a ser executado após o início do contêiner. Define a variável de ambiente MODEL_ID e inicia o server.py.

"MODEL_ID=/Qwen1.5-4B-Chat python3 server.py"

Perguntas frequentes

Obter modelos do Hugging Face

  1. Certifique-se de que o ambiente de runtime do contêiner possa acessar o repositório do Hugging Face.

  2. Use o cliente Arena para implantar um serviço personalizado e especifique a imagem do contêiner para implantação usando o parâmetro --image. Para obter mais informações sobre os parâmetros, consulte Referência de parâmetros de comando.

    Este método baixa os arquivos de modelo do Hugging Face para dentro do contêiner. Certifique-se de que seu nó de GPU tenha pelo menos 30 GB de espaço em disco disponível.
    arena serve custom \
        --name=huggingface \
        --version=v1 \
        --gpus=1 \
        --replicas=1 \
        --restful-port=8000 \
        --readiness-probe-action="tcpSocket" \
        --readiness-probe-action-option="port: 8000" \
        --readiness-probe-option="initialDelaySeconds: 30" \
        --readiness-probe-option="periodSeconds: 30" \
        --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1 \
        "MODEL_ID=Qwen/Qwen1.5-4B-Chat MODEL_SOURCE=Huggingface python3 server.py"

    A saída a seguir indica a criação dos recursos do Kubernetes para o serviço de inferência huggingface-v1:

    service/huggingface-v1 created
    deployment.apps/huggingface-v1-custom-serving created
    INFO[0003] The Job huggingface has been submitted successfully 
    INFO[0003] You can run `arena serve get huggingface --type custom-serving -n default` to check the job status 

Próximos passos