Todos los productos
Search
Centro de documentos

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

Última actualización: Sep 04, 2026

Los clústeres administrados Pro de ACK proporcionan un entorno listo para usar donde puede ejecutar servicios de inference de modelos de lenguaje grande (LLM) sin necesidad de hardware GPU local ni configuraciones complejas de dependencias. Esta guía presenta dos rutas de despliegue: una opción rápida para validar un modelo en aproximadamente 15 minutos y una opción orientada a producción que precarga los archivos del modelo en almacenamiento persistente para reducir los tiempos de arranque en frío y los costos de ancho de banda.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • Un clúster administrado Pro de ACK que ejecute Kubernetes 1.22 o posterior

  • Como mínimo un nodo acelerado por GPU con 16 GB o más de memoria GPU

  • El controlador NVIDIA versión 535 o posterior instalado en el node pool de GPU (esta guía utiliza 550.144.03, configurado mediante la etiqueta ack.aliyun.com/nvidia-driver-version)

  • Arena client instalado

Selección de la ruta de despliegue

Opción 1: Prueba rápida

Opción 2: Producción

Tiempo de configuración

~15 minutos

Mayor (se requiere cargar previamente el modelo)

Almacenamiento del modelo

Se descarga en el contenedor durante el inicio

Precargado en Object Storage Service (OSS)

Arranque en frío

Lento: el modelo se vuelve a descargar cada vez que se reinicia el pod

Rápido: el modelo ya se encuentra en el volumen montado

Recomendado para

Validar capacidades de inference

Cargas de trabajo de producción estables y repetibles

Opción 1: Despliegue rápido para pruebas

Utilice Arena para desplegar qwen/Qwen1.5-4B-Chat desde ModelScope. El contenedor descarga el modelo al iniciarse, por lo que el nodo GPU necesita como mínimo 30 GB de espacio libre en disco.

  1. Ejecute el comando de Arena para desplegar el servicio de inference:

    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 obtener archivos de modelo desde un repositorio de Hugging Face, consulte Pull models from Hugging Face .

    La siguiente salida confirma que se crearon los recursos de 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. Compruebe el estado del servicio. El pod permanece en estado ContainerCreating mientras se descarga el modelo. Según las condiciones de la red, este proceso puede tardar entre 5 y 15 minutos:

    arena serve get modelscope

    Cuando el estado del pod muestre Running, el servicio de inference estará listo.

Opción 2: Despliegue listo para producción con almacenamiento persistente

Precargar los archivos del modelo en OSS evita volver a descargar archivos mayores a 10 GB cada vez que se reinicia un pod. Esto reduce los tiempos de arranque en frío, disminuye los costos de ancho de banda y mejora la estabilidad del servicio.

Paso 1: Descargar los archivos del modelo

  1. Instale Git y Git Large File Storage (LFS). macOS

    brew install git
    brew install git-lfs

    Windows Descargue e instale Git desde el sitio web oficial de Git. Git Large File Storage viene incluido con Git for Windows; descargue la versión más reciente. Linux (basado en Red Hat)

    yum install git
    yum install git-lfs

    Para otras distribuciones de Linux, consulte el sitio web oficial de Git.

  2. Clone el repositorio del modelo Qwen1.5-4B-Chat y obtenga los archivos 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

Paso 2: Cargar los archivos del modelo en OSS

  1. Install and configure ossutil.

  2. Cree un bucket. Para reducir la latencia de obtención del modelo, cree el bucket en la misma región que su clúster:

    ossutil mb oss://<your-bucket-name>
  3. Cree una carpeta en el bucket para los archivos del modelo:

    ossutil mkdir oss://<your-bucket-name>/Qwen1.5-4B-Chat
  4. Cargue los archivos del modelo:

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

Paso 3: Configurar un volumen persistente (PV)

  1. Inicie sesión en la consola de ACK y haga clic en el clúster de destino. En el panel de navegación izquierdo, seleccione Volumes > Persistent Volumes.

  2. Haga clic en Create. En el cuadro de diálogo Create PV, configure los siguientes parámetros y haga clic en Create:

    Parámetro

    Valor

    PV type

    OSS

    Volume name

    llm-model

    Capacity

    20Gi

    Access mode

    ReadOnlyMany

    Access certificate

    Seleccione Create Secret

    Optional parameters

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

    Bucket ID

    Haga clic en Select Bucket y seleccione su bucket

    OSS path

    /Qwen1.5-4B-Chat

    Endpoint

    Seleccione Public Endpoint

Paso 4: Configurar una solicitud de volumen persistente (PVC)

  1. En el panel de navegación izquierdo, seleccione Volumes > Persistent Volume Claims.

  2. En la página Persistent Volume Claims, configure los siguientes parámetros y haga clic en Create:

    Parámetro

    Valor

    PVC type

    OSS

    Name

    llm-model

    Allocation mode

    Seleccione Existing Volumes

    Existing volumes

    Seleccione el PV llm-model creado en el paso anterior

    Capacity

    20Gi

Paso 5: Desplegar el servicio de inference

Ejecute el comando de Arena para desplegar el servicio. La bandera --data monta la PVC que contiene los archivos del modelo precargados. Dado que el modelo ya se encuentra en el volumen montado, el pod se inicia sin descargar 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"

La siguiente salida confirma que se envió el servicio de inference:

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

Compruebe el estado del servicio:

arena serve get modelscope

Cuando el estado del pod muestre Running, el servicio de inference estará listo.

Validación del servicio de inference

  1. Configure el reenvío de puertos hacia el servicio de inference:

    Importante

    kubectl port-forward está diseñado únicamente para desarrollo y depuración. No es confiable, seguro ni escalable en producción. Para redes en producción, consulte Gestión de Ingress.

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

    Salida esperada:

    Forwarding from 127.0.0.1:8000 -> 8000
    Forwarding from [::1]:8000 -> 8000
  2. En una nueva terminal, envíe una solicitud de inference de prueba:

    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
        }
      }'

    Una respuesta correcta contiene el texto generado por el 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) Limpieza

Elimine el servicio de inference y los recursos de almacenamiento cuando haya terminado:

# 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

Preguntas frecuentes

¿Cómo puedo obtener archivos de modelo desde Hugging Face en lugar de ModelScope?

Asegúrese de que el entorno de ejecución del contenedor pueda acceder al repositorio de Hugging Face y luego establezca MODEL_SOURCE=Huggingface en el comando de Arena. El nodo GPU necesita como mínimo 30 GB de espacio libre en disco para alojar los archivos descargados:

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"

La siguiente salida confirma que se crearon los 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: referencia de parámetros de comandos

Parámetro

Descripción

Ejemplo

serve custom

Subcomando de Arena. Despliega un servicio de modelo personalizado en lugar de un tipo predefinido como tfserving o triton.

—

--name

Nombre del servicio. Identificador único utilizado para operaciones posteriores, como consultar registros y eliminar el servicio.

modelscope

--version

Versión del servicio. Etiqueta de versión para el servicio, útil para la gestión de versiones y lanzamientos graduales.

v1

--gpus

Cantidad de GPU. Número de GPU asignadas a cada pod. Obligatorio cuando el modelo requiere GPU para realizar inference.

1

--replicas

Cantidad de réplicas. Número de pods que se ejecutarán. Más réplicas aumentan el rendimiento concurrente y la disponibilidad.

1

--restful-port

Puerto de API RESTful. Puerto en el que el servicio expone su API RESTful para recibir solicitudes de inference.

8000

--readiness-probe-action

Tipo de sondeo de preparación. Método de verificación que utiliza el sondeo de preparación de Kubernetes para determinar si el contenedor está listo para recibir tráfico.

tcpSocket

--readiness-probe-action-option

Opciones del tipo de sondeo. Parámetros para el tipo de sondeo elegido. Para tcpSocket, especifica el puerto que se debe comprobar.

port: 8000

--readiness-probe-option

Configuración adicional del sondeo. Parámetros adicionales para el sondeo de preparación. Esta bandera se puede repetir. Establece el retraso inicial y el intervalo de verificación.

initialDelaySeconds: 30, periodSeconds: 30

--data

Montaje de volumen. Monta una PVC en una ruta específica dentro del contenedor, con el formato <pvc-name>:<mount-path>. Se utiliza para montar archivos de modelo precargados.

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

--image

Imagen de contenedor. URL completa de la imagen de contenedor que define el entorno de ejecución del servicio.

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

[COMMAND]

Comando de inicio. Comando que se ejecuta después de que se inicia el contenedor. Establece la variable de entorno MODEL_ID e inicia server.py.

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

Preguntas frecuentes

Obtener modelos desde Hugging Face

  1. Asegúrese de que el entorno de ejecución del contenedor pueda acceder al repositorio de Hugging Face.

  2. Utilice el cliente Arena para desplegar un servicio personalizado y especifique la imagen de contenedor para el despliegue mediante el parámetro --image. Para obtener más información sobre los parámetros, consulte Command parameter reference.

    Este método descarga los archivos del modelo de Hugging Face en el contenedor. Asegúrese de que su nodo GPU tenga como mínimo 30 GB de espacio disponible en disco.
    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"

    La siguiente salida indica que se han creado los recursos de Kubernetes para el servicio de inference 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 

Pasos siguientes