Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:Use TGI to deploy Qwen inference services in ACK

Última actualización: Sep 17, 2026

Esta guía explica cómo desplegar un servicio de inference de Qwen1.5-4B-Chat en Container Service for Kubernetes (ACK). Para ello se utiliza el framework Text Generation Inference (TGI) de Hugging Face y una GPU A10 como hardware de destino.

Contexto

Qwen1.5-4B-Chat

Qwen1.5-4B-Chat es un LLM basado en Transformer con 4 mil millones de parámetros, desarrollado por Alibaba Cloud. Se entrenó con texto web, libros especializados y código. Consulte el repositorio de Qwen en GitHub.

Text Generation Inference (TGI)

TGI es un conjunto de herramientas de código abierto de Hugging Face que permite ofrecer LLM como servicios de inference. Admite técnicas de aceleración de inference como Flash Attention, Paged Attention, procesamiento continuo por lotes y paralelismo de tensores. Para obtener más información, consulte la documentación de TGI.

Requisitos previos

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

Paso 1: Preparar los datos del modelo

Descargue el modelo Qwen1.5-4B-Chat y cárguelo en Object Storage Service (OSS). Después, cree un volumen persistente (PV) y una solicitud de volumen persistente (PVC) en el clúster de ACK para que el servicio de inference cargue el modelo durante la ejecución.

Si prefiere usar File Storage NAS (NAS), consulte Mount a statically provisioned NAS volume.

Descargar los pesos del modelo

  1. Instale Git:

    # RHEL/CentOS
    yum install git
    # Debian/Ubuntu
    # apt install git
  2. Instale Git Large File Storage (LFS):

    # RHEL/CentOS
    yum install git-lfs
    # Debian/Ubuntu
    # apt install git-lfs
  3. Clone el repositorio de Qwen1.5-4B-Chat desde ModelScope y omita las descargas de LFS:

    GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/qwen/Qwen1.5-4B-Chat.git
  4. Descargue los archivos grandes de pesos del modelo administrados por LFS:

    cd Qwen1.5-4B-Chat
    git lfs pull

Cargar el modelo en OSS

  1. Inicie sesión en la consola de OSS y anote el nombre de su bucket de OSS. Para crear un bucket, consulte Create a bucket.

  2. Instale y configure ossutil. Para obtener más información, consulte Install ossutil.

  3. Cree un directorio para el modelo en OSS:

    ossutil mkdir oss://<Your-Bucket-Name>/Qwen1.5-4B-Chat
  4. Cargue los archivos del modelo en OSS:

    ossutil cp -r ./Qwen1.5-4B-Chat oss://<Your-Bucket-Name>/Qwen1.5-4B-Chat

Configurar un PV y una PVC

Cree un PV y una PVC en el clúster de ACK para montar el modelo alojado en OSS dentro del contenedor del servicio de inference. Para ver las instrucciones detalladas, consulte Mount a statically provisioned OSS volume.

Utilice la siguiente configuración:

Parámetros del PV

Parameter

Value

PV type

OSS

Volume name

llm-model

Access certificate

Su AccessKey ID y AccessKey secret del bucket de OSS

Bucket ID

El nombre de su bucket de OSS

OSS path

La ruta al directorio del modelo; por ejemplo, /models/Qwen1.5-4B-Chat

Parámetros de la PVC

Parameter

Value

PVC type

OSS

Volume name

llm-model

Allocation mode

Existing volumes

Existing volumes

Seleccione el PV que creó

Paso 2: Desplegar el servicio de inference

Importante

TGI no es compatible con las GPU V100 ni T4. Utilice una GPU A10 o una con arquitectura más reciente.

Ejecute el siguiente comando de Arena para desplegar el servicio de inference:

arena serve custom \
    --name=tgi-qwen-4b-chat \
    --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=ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/text-generation-inference:2.0.2-ubuntu22.04 \
    --data=llm-model:/model/Qwen1.5-4B-Chat \
    "text-generation-launcher --model-id /model/Qwen1.5-4B-Chat --num-shard 1 -p 8000"

A continuación se describen los parámetros:

Parameter

Description

--name

Nombre del servicio de inference

--version

Versión del servicio de inference

--gpus

Cantidad de GPU por réplica

--replicas

Cantidad de réplicas

--restful-port

Puerto expuesto por el servicio de inference

--readiness-probe-action

Tipo de conexión para las pruebas de disponibilidad. Valores válidos: HttpGet, Exec, gRPC, TCPSocket

--readiness-probe-action-option

Método de conexión para las pruebas de disponibilidad

--readiness-probe-option

Configuración de la prueba de disponibilidad

--data

Monta una PVC en el contenedor. Formato: <pvc-name>:<mount-path>. Ejecute arena data list para listar las PVC disponibles

--image

Imagen de contenedor para el servicio de inference

El resultado esperado es el siguiente:

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

Compruebe que el servicio se esté ejecutando:

arena serve get tgi-qwen-4b-chat

El resultado esperado es el siguiente:

Name:       tgi-qwen-4b-chat
Namespace:  default
Type:       Custom
Version:    v1
Desired:    1
Available:  1
Age:        3m
Address:    172.16.XX.XX
Port:       RESTFUL:8000
GPU:        1

Instances:
  NAME                                                 STATUS   AGE  READY  RESTARTS  GPU  NODE
  ----                                                 ------   ---  -----  --------  ---  ----
  tgi-qwen-4b-chat-v1-custom-serving-67b58c9865-m89lq  Running  3m   1/1    0         1    cn-beijing.192.168.XX.XX

Los valores Available: 1 y STATUS: Running confirman que el pod está listo para atender solicitudes.

Paso 3: Comprobar el servicio de inference

  1. Configure el reenvío de puertos para acceder al servicio desde su computadora local:

    Importante

    El comando kubectl port-forward sirve únicamente para desarrollo y depuración. No ofrece la confiabilidad, seguridad ni escalabilidad necesarias para el tráfico de producción. Para configurar redes de producción en clústeres de ACK, consulte Ingress overview.

    kubectl port-forward svc/tgi-qwen-4b-chat-v1 8000:8000

    Resultado esperado:

    Forwarding from 127.0.0.1:8000 -> 8000
    Forwarding from [::1]:8000 -> 8000
  2. Envíe una solicitud de prueba al endpoint de finalización de chat:

    curl http://localhost:8000/v1/chat/completions \
      -H "Content-Type: application/json" \
      -d '{"model": "/model/Qwen1.5-4B-Chat/", "messages": [{"role": "user", "content": "Test"}], "max_tokens": 10, "temperature": 0.7, "top_p": 0.9, "seed": 10}'

    Resultado esperado:

    {"id":"","object":"text_completion","created":1716274541,"model":"/model/Qwen1.5-4B-Chat","system_fingerprint":"2.0.2-sha-6073ece","choices":[{"index":0,"message":{"role":"assistant","content":"OK. What test do you want me to run?"},"logprobs":null,"finish_reason":"length"}],"usage":{"prompt_tokens":21,"completion_tokens":10,"total_tokens":31}}

    Una respuesta JSON válida con un arreglo choices confirma que el modelo se cargó correctamente y genera texto.

(Opcional) Paso 4: Limpiar recursos

Si ya no necesita los recursos, elimínelos para evitar cargos adicionales.

Elimine el servicio de inference:

arena serve delete tgi-qwen-4b-chat

Elimine la PVC y el PV:

kubectl delete pvc llm-model
kubectl delete pv llm-model