Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Deploy Qwen inference services with Triton and vLLM on ACK

Dernière mise à jour :Aug 11, 2026

Déployez Qwen1.5-4B-Chat en tant que service d'inférence sur ACK à l'aide de Triton et vLLM sur des GPU T4 ou A10.

Contexte

Qwen1.5-4B-Chat

Qwen1.5-4B-Chat est un grand modèle de langage (LLM) basé sur l'architecture Transformer, comptant 4 milliards de paramètres et développé par Alibaba Cloud. Il a été entraîné sur du texte web, des ouvrages spécialisés et du code. Consultez le dépôt GitHub Qwen.

Triton Inference Server

Triton Inference Server est un framework d'inférence open source développé par NVIDIA. Il prend en charge plusieurs backends, notamment TensorRT, TensorFlow, PyTorch, ONNX et vLLM.

Fonctionnalités principales :

  • Prise en charge de multiples frameworks d'apprentissage automatique et d'apprentissage profond

  • Exécution simultanée de modèles

  • Mise en lots continue (continuous batching)

  • Métriques intégrées : utilisation du GPU, latence et débit

Consultez le dépôt GitHub Triton Inference Server.

vLLM

vLLM est un framework d'inférence haute performance qui prend en charge la plupart des LLM populaires, y compris Qwen. Il utilise PagedAttention, la mise en lots continue et la quantification pour améliorer le débit d'inférence. Consultez le dépôt GitHub vLLM.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un cluster ACK Pro avec des nœuds accélérés par GPU (Kubernetes 1.22 ou version ultérieure, ≥16 Go de mémoire GPU par nœud).

  • La version 525 du pilote GPU installée sur les nœuds GPU. Ajoutez le libellé ack.aliyun.com/nvidia-driver-version:525.105.17 pour fixer la version du pilote.

  • La dernière version du client Arena installée.

Étape 1 : Préparer les données du modèle

Téléchargez Qwen1.5-4B-Chat, importez-le vers Object Storage Service (OSS), puis créez des volumes persistants (PV) et des revendications de volume persistant (PVC) dans votre cluster.

Pour connaître les autres modèles pris en charge par vLLM, consultez Modèles pris en charge. Pour utiliser NAS au lieu d'OSS, reportez-vous à Monter un volume NAS provisionné statiquement.

Télécharger le modèle

  1. Installez Git :

       # Use yum install git or apt install git
       yum install git
  2. Installez Git LFS :

       # Use yum install git-lfs or apt install git-lfs
       yum install git-lfs
  3. Clonez Qwen1.5-4B-Chat depuis ModelScope :

       GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/qwen/Qwen1.5-4B-Chat.git
  4. Accédez au répertoire et récupérez les fichiers volumineux :

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

Importer le modèle vers OSS

  1. Connectez-vous à la console OSS et notez le nom de votre bucket. Créez un bucket si nécessaire.

  2. Installez et configurez ossutil.

  3. Créez un répertoire dans OSS et importez le modèle :

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

Créer des PV et des PVC

Créez un PV et un PVC pour monter les données du modèle OSS dans le cluster.

Paramètres du PV

Paramètre

Valeur

PV Type

OSS

Volume Name

llm-model

Access Certificate

ID AccessKey et secret AccessKey pour l'accès au bucket OSS.

Bucket ID

Nom de votre bucket OSS.

OSS Path

Chemin du modèle, par exemple /models/Qwen1.5-4B-Chat.

Paramètres du PVC

Paramètre

Valeur

PVC Type

OSS

Name

llm-model

Allocation Mode

Existing Volumes

Existing Volumes

Sélectionnez le PV que vous avez créé

Étape 2 : Configurer Triton avec vLLM

Créez deux fichiers de configuration : config.pbtxt pour le backend Triton, et model.json pour les paramètres du moteur vLLM.

Créer la configuration du backend

Créez un répertoire de travail et le fichier config.pbtxt :

mkdir triton-vllm

cat << EOF > triton-vllm/config.pbtxt
backend: "vllm"

# The usage of device is deferred to the vLLM engine
instance_group [
  {
    count: 1
    kind: KIND_MODEL
  }
]

version_policy: { all { }}
EOF

Créer la configuration du modèle

model.json définit les paramètres du moteur vLLM. Choisissez la configuration adaptée à votre type de GPU.

Important

vLLM alloue agressivement la mémoire GPU au démarrage. gpu_memory_utilization contrôle cette allocation : la valeur 0.95 réserve 95 % de la mémoire GPU. Réduisez cette valeur si d'autres charges de travail partagent le GPU afin d'éviter les erreurs de mémoire insuffisante.

GPU A10 (production)

Les GPU A10 offrent un débit plus élevé et prennent en charge la précision bfloat16. Utilisez des GPU A10 pour les charges de travail de production.

cat << EOF > triton-vllm/model.json
{
    "model":"/model/Qwen1.5-4B-Chat",
    "disable_log_requests": "true",
    "gpu_memory_utilization": 0.95,
    "trust_remote_code": "true",
    "max_model_len": 16384
}
EOF

GPU T4 (test)

Les GPU T4 sont largement disponibles et économiques, mais ne prennent pas en charge bf16. Définissez dtype sur half (FP16) et réduisez max_model_len pour respecter la limite de mémoire de 16 Go.

cat << EOF > triton-vllm/model.json
{
    "model":"/model/Qwen1.5-4B-Chat",
    "disable_log_requests": "true",
    "gpu_memory_utilization": 0.95,
    "trust_remote_code": "true",
    "dtype": "half",
    "max_model_len": 8192
}
EOF

Paramètres clés

Paramètre

Description

max_model_len

Longueur maximale de la séquence de tokens. Des valeurs plus élevées améliorent la qualité de la conversation, mais consomment davantage de mémoire GPU.

dtype

Précision du modèle. Définissez cette valeur sur half (FP16) pour les GPU ne prenant pas en charge bf16, tels que les T4.

gpu_memory_utilization

Fraction de la mémoire GPU allouée au modèle. Valeur par défaut : 0,9.

Consultez les Arguments du moteur de vLLM pour l'ensemble des paramètres, ainsi que Déploiement d'un modèle vLLM dans Triton pour des exemples.

Étape 3 : Déployer le service d'inférence

Utilisez Arena pour déployer le service d'inférence Qwen1.5-4B-Chat avec Triton et vLLM.

  1. Exportez les chemins des fichiers de configuration en tant que variables d'environnement :

       export triton_config_file="triton-vllm/config.pbtxt"
       export model_config_file="triton-vllm/model.json"
  2. Déployez le service d'inférence :

    Paramètres

    Paramètre

    Description

    --name

    Nom du service d'inférence.

    --version

    Version du service d'inférence.

    --image

    Image du serveur Triton.

    --gpus

    Nombre de GPU par réplica.

    --cpu

    Cœurs CPU par réplica.

    --memory

    Mémoire par réplica.

    --data

    Montage du PVC au format <pvc-name>:<mount-path>. Exécutez arena data list pour répertorier les PVC disponibles.

    --config-file

    Montage du fichier local au format <local-path>:<container-path>.

    --model-repository

    Répertoire du dépôt de modèles Triton. Chaque sous-répertoire représente un modèle avec ses fichiers de configuration.

    --http-port

    Port HTTP Triton.

    --grpc-port

    Port gRPC Triton.

    --allow-metrics

    Expose les métriques d'inférence (utilisation du GPU, latence, débit).

       arena serve triton \
           --name=triton-vllm \
           --version=v1 \
           --image=ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/tritonserver:24.04-vllm-python-py3-ubuntu22.04 \
           --gpus=1 \
           --cpu=6 \
           --memory=30Gi \
           --data="llm-model:/model/Qwen1.5-4B-Chat" \
           --model-repository /triton-config \
           --config-file="$model_config_file:/triton-config/qwen-4b/1/model.json" \
           --config-file="$triton_config_file:/triton-config/qwen-4b/config.pbtxt" \
           --http-port=8000 \
           --grpc-port=9000 \
           --allow-metrics=true

    Résultat attendu :

       configmap/triton-vllm-v1-4bd5884e6b5b6a3 created
       configmap/triton-vllm-v1-7815124a8204002 created
       service/triton-vllm-v1-tritoninferenceserver created
       deployment.apps/triton-vllm-v1-tritoninferenceserver created
       INFO[0007] The Job triton-vllm has been submitted successfully
       INFO[0007] You can run `arena serve get triton-vllm --type triton-serving -n default` to check the job status
  3. Vérifiez que le service est en cours d'exécution. Attendez que la colonne Available affiche 1.

       arena serve get triton-vllm

    Résultat attendu :

       Name:       triton-vllm
       Namespace:  default
       Type:       Triton
       Version:    v1
       Desired:    1
       Available:  1
       Age:        3m
       Address:    172.16.XX.XX
       Port:       RESTFUL:8000,GRPC:9000
       GPU:        1
    
       Instances:
         NAME                                                  STATUS   AGE  READY  RESTARTS  GPU  NODE
         ----                                                  ------   ---  -----  --------  ---  ----
         triton-vllm-v1-tritoninferenceserver-b69cb7759-gkwz6  Running  3m   1/1    0         1    cn-beijing.172.16.XX.XX

Étape 4 : Vérifier le service d'inférence

Redirection de port (développement uniquement)

Important

La commande kubectl port-forward est destinée exclusivement au développement et au débogage. Elle n'est ni fiable, ni sécurisée, ni évolutive pour la production. Pour la mise en réseau en production, consultez la présentation d'Ingress.

  1. Configurez la redirection de port :

       kubectl port-forward svc/triton-vllm-v1-tritoninferenceserver 8000:8000

    Résultat attendu :

       Forwarding from 127.0.0.1:8000 -> 8000
       Forwarding from [::1]:8000 -> 8000
  2. Envoyez une requête de test au point de terminaison generate. Remplacez qwen-4b par le nom de votre modèle s'il diffère.

       curl -X POST localhost:8000/v2/models/qwen-4b/generate \
         -d '{"text_input": "What is AI? AI is", "parameters": {"stream": false, "temperature": 0}}'

    Résultat attendu :

       {"model_name":"qwen-4b","model_version":"1","text_output":"What is AI? AI is a branch of computer science that studies how to make computers intelligent. Purpose of AI"}

(Facultatif) Nettoyer les ressources

Supprimez le service d'inférence et les ressources de stockage lorsque vous n'en avez plus besoin :

# Delete the inference service
arena serve del triton-vllm

# Delete the PVC and PV
kubectl delete pvc llm-model
kubectl delete pv llm-model