Tous les produits
Search
Centre de documentation

Container Compute Service:Déployez un service d'inférence pour un modèle DeepSeek distillé en exploitant la puissance de calcul GPU d'ACS

Dernière mise à jour :Aug 28, 2026

Container Compute Service (ACS) vous permet d'exécuter l'inférence de grands modèles de langage (LLM) accélérée par GPU sans gérer le matériel sous-jacent ni les nœuds GPU. Toutes les configurations sont opérationnelles dès le déploiement et la facturation s'effectue au paiement à l'utilisation. ACS est idéal pour les tâches d'inférence de LLM et contribue à réduire les coûts associés. Cette rubrique vous guide pas à pas dans le déploiement d'un service d'inférence prêt pour la production basé sur un modèle DeepSeek distillé sur ACS, en utilisant le framework vLLM.

Contexte

DeepSeek-R1

DeepSeek-R1 est le premier modèle de raisonnement développé par DeepSeek. Il a été entraîné via un apprentissage par renforcement à grande échelle afin d'améliorer les capacités de raisonnement des LLM. Il surpasse d'autres modèles propriétaires dans les domaines du raisonnement mathématique et de la programmation compétitive, et ses performances égalent ou dépassent celles de la série OpenAI o1 sur certaines tâches. DeepSeek-R1 obtient également d'excellents résultats pour les tâches nécessitant de vastes connaissances, telles que la rédaction et les questions-réponses.

DeepSeek intègre également ses capacités de raisonnement dans des modèles plus compacts basés sur les architectures Qwen et Llama. Le modèle distillé de 14 milliards de paramètres (14B) surpasse le modèle open source QwQ-32B, tandis que les versions distillées de 32B et 70B établissent de nouveaux records de référence. Pour en savoir plus, consultez le dépôt GitHub DeepSeek AI.

vLLM

vLLM est un framework d'inférence haute performance pour les LLM, compatible avec la plupart des grands modèles de langage largement utilisés, y compris la série Qwen. Il exploite les technologies PagedAttention, le batching continu et la quantification des modèles pour maximiser le débit d'inférence. Pour plus d'informations, consultez le dépôt GitHub vLLM.

Arena

Arena est un client léger dédié à la gestion des tâches de machine learning sur Kubernetes. Il couvre l'intégralité du cycle de vie du ML, de la préparation des données au développement de modèles, en passant par l'entraînement et la prédiction, ce qui améliore la productivité des data scientists. Arena s'intègre profondément aux services d'infrastructure d'Alibaba Cloud, notamment le partage de GPU et Cloud Parallel File Storage (CPFS), et peut exécuter des frameworks de deep learning optimisés pour Alibaba Cloud afin de maximiser les performances et les avantages économiques offerts par les dispositifs hétérogènes d'Alibaba Cloud. Pour plus d'informations, consultez le dépôt GitHub Arena.

Prérequis

Avant de commencer, assurez-vous d'avoir :

  • Attribué le rôle système par défaut au compte de service (obligatoire lors de la première utilisation d'Alibaba Cloud) afin qu'ACS puisse appeler les services dépendants tels que Elastic Compute Service (ECS), Object Storage Service (OSS), Apsara File Storage NAS, Cloud Parallel File Storage (CPFS) et Server Load Balancer (SLB), créer des clusters et enregistrer les journaux. ACS ne peut utiliser ces fonctionnalités qu'après l'attribution correcte de ce rôle. Pour plus de détails, consultez la rubrique Prise en main de Container Compute Service.

  • Un cluster ACS déployé dans une région et une zone disposant de ressources GPU. Consultez la documentation Créer un cluster ACS.

  • Connecté kubectl à un cluster Kubernetes.

  • Le client Arena installé. Consultez la rubrique Configurer le client Arena.

Choisissez une spécification d'instance GPU

Lors de l'inférence, la mémoire GPU est principalement consommée par les poids du modèle, le cache KV et les tampons d'exécution. Utilisez la formule suivante pour estimer la mémoire GPU minimale requise :

GPU memory = number of model parameters × bytes per parameter

Pour un modèle 7B en FP16 : 7 × 10⁹ × 2 bytes ≈ 13.04 GiB. Comme vous devez également prendre en compte la taille du cache KV nécessaire durant le calcul, l'utilisation du GPU et la mémoire tampon qui leur est réservée, la spécification recommandée pour le modèle 7B est 1 GPU avec 24 GiB de mémoire, 8 vCPU et 32 GiB de RAM.

Le tableau ci-dessous répertorie les spécifications suggérées pour chaque modèle DeepSeek distillé pris en charge. Pour la liste complète des modèles GPU et des spécifications disponibles dans ACS, consultez la rubrique Modèles et spécifications GPU. Pour les détails sur la facturation, consultez la rubrique Aperçu de la facturation.

Model

Size

Model size (GB)

Specification recommended

vCPUs

RAM

GPU memory

DeepSeek-R1-Distill-Qwen-1,5B

1.5B

3.55 GB

4 or 6

30 GiB

24 GiB

DeepSeek-R1-Distill-Qwen-7B

7B

15.23 GB

6 or 8

32 GiB

24 GiB

DeepSeek-R1-Distill-Llama-8B

8B

16.06 GB

6 or 8

32 GiB

24 GiB

DeepSeek-R1-Distill-Qwen-14B

14B

29.54 GB

8+

64 GiB

48 GiB

DeepSeek-R1-Distill-Qwen-32B

32B

74.32 GB

8+

128 GiB

96 GiB

DeepSeek-R1-Distill-Llama-70B

70B

140.56 GB

12+

128 GiB

192 GiB

Remarque

Procédure

Étape 1 : Préparez les fichiers du modèle

Remarque

Le téléchargement et le téléversement du modèle prennent généralement entre 1 et 2 heures. Pour gagner du temps, soumettez un ticket afin que les fichiers du modèle soient copiés directement dans votre bucket OSS.

  1. Téléchargez le modèle DeepSeek-R1-Distill-Qwen-7B depuis ModelScope en utilisant git-lfs.

    Remarque

    Vérifiez si git-lfs est installé. Sinon, installez-le en exécutant yum install git-lfs ou apt-get install git-lfs. Consultez la documentation Install Git Large File Storage.

    git lfs install
    GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B.git
    cd DeepSeek-R1-Distill-Qwen-7B/
    git lfs pull
  2. Créez un répertoire OSS et téléversez les fichiers du modèle.

    Remarque

    Pour installer ossutil, consultez la rubrique Installer ossutil.

    ossutil mkdir oss://<your-bucket-name>/models/DeepSeek-R1-Distill-Qwen-7B
    ossutil cp -r ./DeepSeek-R1-Distill-Qwen-7B oss://<your-bucket-name>/models/DeepSeek-R1-Distill-Qwen-7B
  3. Créez un PV et un PVC. Configurez un volume persistant (PV) nommé llm-model et une revendication de volume persistant (PVC) pour le cluster cible. Pour une procédure détaillée, consultez la rubrique Utiliser un volume statique OSS.

    Utilisez les paramètres suivants lors de la création du PV :

    Parameter

    Value

    PV type

    OSS

    Volume name

    llm-model

    Access certificate

    L'ID AccessKey et le secret AccessKey de votre bucket OSS

    Bucket ID

    Le bucket OSS créé à l'étape précédente

    OSS path

    /models/DeepSeek-R1-Distill-Qwen-7B

    Utilisez les paramètres suivants lors de la création du PVC :

    Parameter

    Value

    PVC type

    OSS

    Name

    llm-model

    Allocation mode

    Existing volumes

    Existing volumes

    Sélectionnez le PV créé précédemment

    Exemple YAML :

    apiVersion: v1
    kind: Secret
    metadata:
      name: oss-secret
    stringData:
      akId: <your-oss-ak>       # AccessKey ID for the OSS bucket
      akSecret: <your-oss-sk>   # AccessKey secret for the OSS bucket
    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: llm-model
      labels:
        alicloud-pvname: llm-model
    spec:
      capacity:
        storage: 30Gi
      accessModes:
        - ReadOnlyMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ossplugin.csi.alibabacloud.com
        volumeHandle: llm-model
        nodePublishSecretRef:
          name: oss-secret
          namespace: default
        volumeAttributes:
          bucket: <your-bucket-name>       # Name of the OSS bucket
          url: <your-bucket-endpoint>      # Endpoint, for example, oss-cn-hangzhou-internal.aliyuncs.com
          otherOpts: "-o umask=022 -o max_stat_cache_size=0 -o allow_other"
          path: <your-model-path>          # Model path, for example, /models/DeepSeek-R1-Distill-Qwen-7B/
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: llm-model
    spec:
      accessModes:
        - ReadOnlyMany
      resources:
        requests:
          storage: 30Gi
      selector:
        matchLabels:
          alicloud-pvname: llm-model

Étape 2 : Déployez le modèle

  1. Exécutez la commande suivante pour déployer le service d'inférence vLLM. Le service expose une API HTTP compatible avec OpenAI.

    L'option --data monte le PVC du modèle vers /model/DeepSeek-R1-Distill-Qwen-7B à l'intérieur du conteneur. L'option --max-model-len définit la longueur maximale du contexte en tokens ; son augmentation peut améliorer la qualité des conversations du modèle, mais risque de consommer davantage de mémoire GPU.

    Remarque
    • Remplacez <example-model> dans --label=alibabacloud.com/gpu-model-series=<example-model> par la série de modèles GPU réellement prise en charge par votre cluster ACS. Soumettez un ticket pour obtenir la liste des séries de modèles GPU disponibles.

    • egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/{image:tag} est une adresse de registre public. Pour réduire le temps de tirage d'image, nous recommandons d'utiliser le VPC pour accélérer le tirage des images de conteneurs IA.

    arena serve custom \
    --name=deepseek-r1 \
    --version=v1 \
    --gpus=1 \
    --cpu=8 \
    --memory=32Gi \
    --replicas=1 \
    --label=alibabacloud.com/compute-class=gpu \
    --label=alibabacloud.com/gpu-model-series=<example-model> \
    --restful-port=8000 \
    --readiness-probe-action="tcpSocket" \
    --readiness-probe-action-option="port: 8000" \
    --readiness-probe-option="initialDelaySeconds: 30" \
    --readiness-probe-option="periodSeconds: 30" \
    --image=egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/inference-nv-pytorch:25.02-vllm0.7.2-sglang0.4.3.post2-pytorch2.5-cuda12.4-20250305-serverless \
    --data=llm-model:/models/DeepSeek-R1-Distill-Qwen-7B \
    "vllm serve /models/DeepSeek-R1-Distill-Qwen-7B --port 8000 --trust-remote-code --served-model-name deepseek-r1 --max-model-len 32768 --gpu-memory-utilization 0.95 --enforce-eager"

    Le résultat attendu est le suivant :

    service/deepseek-r1-v1 created
    deployment.apps/deepseek-r1-v1-custom-serving created
    INFO[0004] The Job deepseek-r1 has been submitted successfully
    INFO[0004] You can run `arena serve get deepseek-r1 --type custom-serving -n default` to check the job status

    Le tableau suivant décrit les paramètres clés.

    Parameter

    Description

    --name

    Nom du service d'inférence

    --version

    Version du service d'inférence

    --gpus

    Nombre de GPU par réplica

    --cpu

    Nombre de vCPU par réplica

    --memory

    Quantité de mémoire par réplica

    --replicas

    Nombre de réplicas

    --label

    Libellés qui spécifient la puissance de calcul GPU d'ACS. Définissez alibabacloud.com/compute-class=gpu et alibabacloud.com/gpu-model-series=<example-model>

    --restful-port

    Port exposé par le service d'inférence

    --readiness-probe-action

    Type de connexion pour les sondes de readiness. Valeurs valides : httpGet, exec, grpc, tcpSocket

    --readiness-probe-action-option

    Méthode de connexion pour les sondes de readiness

    --readiness-probe-option

    Configuration de la sonde de readiness

    --image

    Image de conteneur pour le service d'inférence

    --data

    Monte un PVC dans le conteneur. Format : <pvc-name>:<mount-path>. Exécutez arena data list pour lister les PVC disponibles

  2. Pour vérifier l'état du déploiement, exécutez :

    arena serve get deepseek-r1

    Résultat attendu :

    Name:       deepseek-r1
    Namespace:  default
    Type:       Custom
    Version:    v1
    Desired:    1
    Available:  1
    Age:        6h
    Address:    10.0.78.27
    Port:       RESTFUL:8000
    GPU:        1
    
    Instances:
      NAME                                            STATUS   AGE  READY  RESTARTS  GPU  NODE
      ----                                            ------   ---  -----  --------  ---  ----
      deepseek-r1-v1-custom-serving-54d579d994-dqwxz  Running  1h   1/1    0         1    virtual-kubelet-cn-hangzhou-b

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

  1. Utilisez kubectl port-forward pour configurer la redirection de port depuis votre machine locale vers le service d'inférence.

    Remarque

    La redirection de port établie par kubectl port-forward n'offre pas la fiabilité, la sécurité ou l'évolutivité requises pour un environnement de production. Elle est donc destinée uniquement au développement et au débogage, et ne convient pas aux environnements de production. Pour plus d'informations sur les solutions de réseau adaptées à la production dans les clusters Kubernetes, consultez la rubrique Gestion Ingress.

    kubectl port-forward svc/deepseek-r1-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 vers le point de terminaison de complétion de chat compatible avec OpenAI.

    curl http://localhost:8000/v1/chat/completions \
      -H "Content-Type: application/json" \
      -d '{
        "model": "deepseek-r1",
        "messages": [
          {
            "role": "user",
            "content": "Write a letter to my daughter from the future 2035 and tell her to study science and technology well, be the master of science and technology, and promote the development of science and technology and economy. She is now in grade 3."
          }
        ],
        "max_tokens": 1024,
        "temperature": 0.7,
        "top_p": 0.9,
        "seed": 10
      }'

    Résultat attendu :

    {
      "id": "chatcmpl-53613fd815da46df92cc9b92cd156146",
      "object": "chat.completion",
      "created": 1739261570,
      "model": "deepseek-r1",
      "choices": [
        {
          "index": 0,
          "message": {
            "role": "assistant",
            "content": "<think>...</think>\n\nDear Future 2035: ..."
          },
          "finish_reason": "stop"
        }
      ],
      "usage": {
        "prompt_tokens": 40,
        "completion_tokens": 994,
        "total_tokens": 1034
      }
    }

(Facultatif) Étape 4 : Nettoyez les ressources

Supprimez le service d'inférence et les ressources de stockage lorsqu'ils ne sont plus nécessaires.

  1. Supprimez le service d'inférence.

    arena serve delete deepseek-r1

    Résultat attendu :

    INFO[0007] The serving job deepseek-r1 with version v1 has been deleted successfully
  2. Supprimez le PVC et le PV.

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

    Résultat attendu :

    persistentvolumeclaim "llm-model" deleted
    persistentvolume "llm-model" deleted

Étapes suivantes