Tous les produits
Search
Centre de documentation

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

Dernière mise à jour :Aug 11, 2026

Ce guide explique comment déployer un service d'inférence Qwen1.5-4B-Chat sur Container Service for Kubernetes (ACK) à l'aide du framework Text Generation Inference (TGI) de Hugging Face, en utilisant un GPU A10 comme matériel cible.

Contexte

Qwen1.5-4B-Chat

Qwen1.5-4B-Chat est un grand modèle de langage (LLM) de 4 milliards de paramètres développé par Alibaba Cloud. Basé sur l'architecture Transformer, il a été entraîné sur un vaste ensemble de données comprenant des textes web, des ouvrages spécialisés et du code. Pour plus d'informations, consultez le référentiel GitHub Qwen.

Text Generation Inference (TGI)

TGI est une boîte à outils open source de Hugging Face dédiée au déploiement de LLM en tant que services d'inférence. Elle prend en charge des techniques d'accélération telles que Flash Attention, Paged Attention, le batching continu et le tensor parallelism. Pour en savoir plus, consultez la documentation TGI.

Prérequis

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

Important

TGI ne prend pas en charge les GPU V100 ou T4. Utilisez un GPU A10 ou un GPU disposant d'une architecture plus récente.

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

Téléchargez le modèle Qwen1.5-4B-Chat, transférez-le vers Object Storage Service (OSS), puis créez un volume persistant (PV) et une revendication de volume persistant (PVC) dans le cluster ACK afin que le service d'inférence puisse charger le modèle au moment de l'exécution.

Pour une alternative utilisant File Storage NAS (NAS), consultez la rubrique Monter un volume NAS pré-provisionné de manière statique.

Télécharger les poids du modèle

  1. Installez Git :

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

    # RHEL/CentOS
    yum install git-lfs
    # Debian/Ubuntu
    # apt install git-lfs
  3. Clonez le référentiel Qwen1.5-4B-Chat depuis ModelScope, en ignorant les téléchargements LFS :

    GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/qwen/Qwen1.5-4B-Chat.git
  4. Récupérez les fichiers de poids volumineux du modèle gérés par LFS :

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

Transférer le modèle vers OSS

  1. Connectez-vous à la console OSS et notez le nom de votre bucket OSS. Pour créer un bucket, consultez la rubrique Créer un bucket.

  2. Installez et configurez ossutil. Pour plus d'informations, consultez la rubrique Installer ossutil.

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

    ossutil mkdir oss://<Your-Bucket-Name>/Qwen1.5-4B-Chat
  4. Transférez les fichiers du modèle vers OSS :

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

Configurer un PV et un PVC

Créez un PV et un PVC dans le cluster ACK pour monter le modèle hébergé sur OSS dans le conteneur du service d'inférence. Pour obtenir des instructions détaillées, consultez la rubrique Monter un volume OSS pré-provisionné de manière statique.

Utilisez les paramètres suivants :

Paramètres du PV

Paramètre Valeur
PV type OSS
Volume name llm-model
Access certificate Votre ID AccessKey et votre secret AccessKey pour le bucket OSS
Bucket ID Le nom de votre bucket OSS
OSS path Le chemin d'accès au répertoire du modèle, par exemple /models/Qwen1.5-4B-Chat

Paramètres du PVC

Paramètre Valeur
PVC type OSS
Volume name llm-model
Allocation mode Volumes existants
Existing volumes Sélectionnez le PV que vous avez créé

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

Important

TGI ne prend pas en charge les GPU V100 ou T4. Utilisez un GPU A10 ou un GPU disposant d'une architecture plus récente.

Exécutez la commande Arena suivante pour déployer le service d'inférence :

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"

Le tableau suivant décrit les paramètres :

Paramètre Description
--name Nom du service d'inférence
--version Version du service d'inférence
--gpus Nombre de GPU par réplica
--replicas Nombre de réplicas
--restful-port Port exposé par le service d'inférence
--readiness-probe-action Type de connexion pour les sondes de disponibilité. Valeurs valides : HttpGet, Exec, gRPC, TCPSocket
--readiness-probe-action-option Méthode de connexion pour les sondes de disponibilité
--readiness-probe-option Configuration de la sonde de disponibilité
--data Monte un PVC dans le conteneur. Format : <pvc-name>:<mount-path>. Exécutez arena data list pour répertorier les PVC disponibles
--image Image de conteneur pour le service d'inférence

Le résultat attendu est le suivant :

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

Vérifiez que le service est en cours d'exécution :

arena serve get tgi-qwen-4b-chat

Le résultat attendu est le suivant :

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

Les indications Available: 1 et STATUS: Running confirment que le pod est prêt à traiter les requêtes.

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

  1. Configurez la redirection de port pour accéder au service depuis votre machine locale :

    Important

    La commande kubectl port-forward est destinée uniquement au développement et au débogage. Elle n'est ni fiable, ni sécurisée, ni évolutive pour le trafic de production. Pour la mise en réseau de production dans les clusters ACK, consultez la rubrique Présentation d'Ingress.

    kubectl port-forward svc/tgi-qwen-4b-chat-v1 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 chat completions :

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

    Résultat attendu :

    {"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}}

    Une réponse JSON valide contenant un tableau choices confirme que le modèle est chargé et qu'il génère du texte.

(Facultatif) Étape 4 : Nettoyer les ressources

Si vous n'avez plus besoin des ressources, supprimez-les pour éviter des frais continus.

Supprimez le service d'inférence :

arena serve delete tgi-qwen-4b-chat

Supprimez le PVC et le PV :

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