Los clústeres ACK Auto Mode admiten node pools de Auto Mode. Al combinar esta capacidad con la elasticidad bajo demanda de Knative Serving, usted puede desplegar el modelo de lenguaje grande Qwen3.5-4B como un servicio de inference serverless bajo demanda. Una vez completado el despliegue, no se requiere gestionar manualmente los recursos de GPU. Por lo tanto, esta solución es adecuada para escenarios de inference de modelos sensibles al costo y con baja complejidad operativa.
El flujo de trabajo combina dos mecanismos:
El node pool de Auto Mode gestiona la creación y liberación de nodos GPU.
Knative Serving escala los pods según la concurrencia de solicitudes (
concurrency) o las solicitudes por segundo (rps).
Paso 1: Crear un clúster ACK Auto Mode y un node pool de GPU
1. Crear un clúster
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
-
En la página Clusters, haga clic en Create Kubernetes Cluster. En la página ACK Managed Cluster, habilite Auto Mode.
Al habilitar Auto Mode, la página muestra tres capacidades principales: Fully managed operations (plano de control del clúster totalmente gestionado, actualizaciones automáticas de versión, nodos sin mantenimiento y autorrecuperación automática), Automatic node scaling (escalado elástico bajo demanda, selección automática de tipo de instancia y optimización de costos de recursos) y Highly optimized node OS (un sistema operativo optimizado para contenedores con inicio rápido, sistema de archivos inmutable y mejores prácticas seguras de forma predeterminada).
-
Configure los parámetros y haga clic en Create Kubernetes Cluster.
Consulte Create an ACK Auto Mode cluster .
2. Crear un node pool de GPU
En la página Clústeres de ACK, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, seleccione .
-
En la página Node Pools, haga clic en Create Node Pool y configure el node pool en el cuadro de diálogo Create Node Pool.
A continuación se describen los parámetros clave (consulte Create a node pool para ver todas las opciones):
Configure Managed Node Pool: utilice el modo de gestión inteligente.
Configuraciones relacionadas con la instancia: en Instance Configuration Mode, seleccione Specify Instance Type. Después, elija un tipo de instancia GPU, como V100, A10 o T4.
Node Labels: agregue la etiqueta
ack.aliyun.com/nvidia-driver-version:550.144.03para establecer la versión del controlador NVIDIA en 550.144.03.Container Image Acceleration: habilite esta opción para reducir el tiempo de descarga de la imagen del modelo.
3. Desplegar los componentes de Knative
Consulte Deploy Knative components.
Paso 2: Preparar los archivos del modelo y cargarlos en OSS
Descargue Qwen3.5-4B desde ModelScope a una instancia ECS temporal y cárguelo en OSS con ossutil. Luego, monte la ruta del bucket como un volumen persistente para evitar descargas repetidas cuando se reinicien los pods.
Antes de empezar:
Se creó un OSS bucket.
ossutil está instalado y configurado en la instancia ECS temporal.
1. Descargar los archivos del modelo Qwen3.5-4B
Ejecute los siguientes comandos en la instancia ECS temporal.
-
Instale git.
# You can run 'yum install git' or 'apt install git' to install it. sudo yum install git -
Instale 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 el repositorio Qwen3.5-4B desde ModelScope y omita los archivos LFS.
GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/qwen/Qwen3.5-4B.git -
Acceda al directorio y descargue los archivos gestionados por LFS.
cd Qwen3.5-4B git lfs pull
2. Cargar los archivos del modelo en OSS
-
Cree un directorio para el modelo en su bucket de OSS.
Reemplace
<Your-Bucket-Name>con el nombre de su bucket.ossutil mkdir oss://<Your-Bucket-Name>/models/Qwen3.5-4B -
Cargue los archivos del modelo en OSS.
ossutil cp -r ./Qwen3.5-4B oss://<Your-Bucket-Name>/models/Qwen3.5-4B
3. Configurar un volumen de almacenamiento de OSS
-
Choose an authentication method (RRSA or AccessKey) and prepare the access credentials.
Este tema utiliza la autenticación AccessKey. Para conocer otros métodos, consulte Use an ossfs 2.0 static persistent volume .
-
Guarde el AccessKey como un secreto de Kubernetes para acceder al PV.
Reemplace
<yourAccessKeyID>y<yourAccessKeySecret>con sus credenciales. El namespace del secreto debe coincidir con el namespace de la aplicación.kubectl create -n default secret generic oss-secret --from-literal='akId=<yourAccessKeyID>' --from-literal='akSecret=<yourAccessKeySecret>' -
Cree un PV y un PVC para montar el directorio del modelo de OSS en modo de solo lectura. Este ejemplo uses an ossfs 2.0 static persistent volume.
Paso 3: Desplegar y comprobar el servicio de Knative
1. Crear un servicio de Knative
En la página Clústeres de ACK, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, seleccione .
-
En la pestaña Service Management, haga clic en Create from Template. Establezca Sample Template en Custom y despliegue el servicio de Knative.
Parámetro
Descripción
autoscaling.knative.dev/metricLa métrica de escalado automático. Valores válidos:
-
concurrency(predeterminado): escala según la concurrencia. -
rps: escala según las solicitudes por segundo.
autoscaling.knative.dev/targetEl valor objetivo de la métrica que activa el escalado automático.
autoscaling.knative.dev/minScaleNúmero mínimo de réplicas. Entero ≥ 0. Establézcalo en 0 para habilitar el escalado a cero.
autoscaling.knative.dev/maxScaleNúmero máximo de réplicas. Limita el escalado horizontal.
-
2. Comprobar el despliegue del servicio
-
En la pestaña Service Management, compruebe que el servicio esté listo. Tome nota del nombre de dominio predeterminado y de la dirección de la puerta de enlace de acceso.
Nota: envíe las solicitudes a la puerta de enlace de acceso (formato:
alb-xxx.aliyuncsslb.com) con un encabezado Host configurado con el dominio del servicio (formato:qwen.default.example.com). -
Envíe una solicitud de prueba al servicio de inference.
Reemplace
xx.40.85.xxcon la dirección de su puerta de enlace de acceso yqwen.default.example.comcon su nombre de dominio predeterminado.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 }'Resultado esperado:
{ "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 } }