Todos los productos
Search
Centro de documentos

Container Compute Service:Build a DeepSeek distilled model inference service using ACS GPU computing power

Última actualización: Sep 21, 2026

Container Compute Service (ACS) le permite ejecutar inference de LLM acelerada por GPU sin administrar el hardware subyacente ni los nodos de GPU. Todas las configuraciones funcionan de forma inmediata y la facturación es pay-as-you-go. ACS resulta ideal para tareas de inference de modelos de lenguaje grandes (LLM) y ayuda a reducir los costos de inference. En este tema se explica cómo desplegar un servicio de inference listo para producción con un modelo destilado de DeepSeek en ACS mediante el framework vLLM.

Contexto

DeepSeek-R1

DeepSeek-R1 es el modelo de razonamiento de primera generación de DeepSeek. Se entrenó con aprendizaje por refuerzo a gran escala para mejorar el rendimiento de razonamiento de los LLM. Supera a otros modelos de código cerrado en competencias de razonamiento matemático y programación, y su rendimiento se acerca o supera al de la serie OpenAI o1 en ciertas tareas. Además, ofrece resultados sólidos en tareas que requieren mucho conocimiento, como la redacción y las preguntas y respuestas.

DeepSeek también destila sus capacidades de razonamiento en modelos más pequeños basados en las arquitecturas Qwen y Llama. El modelo destilado de 14B supera al modelo de código abierto QwQ-32B, mientras que los modelos destilados de 32B y 70B establecen nuevos puntos de referencia. Para obtener más información, consulte el repositorio de GitHub de DeepSeek AI.

vLLM

vLLM es un framework de inference de LLM de alto rendimiento compatible con la mayoría de los LLM más utilizados, incluida la serie Qwen. Utiliza PagedAttention, procesamiento por lotes continuo y cuantización de modelos para maximizar el rendimiento de inference. Para obtener más información, consulte el repositorio de GitHub de vLLM.

Arena

Arena es un cliente ligero para gestionar tareas de aprendizaje automático basadas en Kubernetes. Abarca todo el ciclo de vida del aprendizaje automático: preparación de datos, desarrollo de modelos, entrenamiento y predicción. Con esto mejora la productividad de los científicos de datos. Arena se integra profundamente con los servicios de infraestructura de Alibaba Cloud, como el uso compartido de GPU y Cloud Parallel File Storage (CPFS). También puede ejecutar frameworks de aprendizaje profundo optimizados para Alibaba Cloud, lo que maximiza el rendimiento y reduce los costos en dispositivos heterogéneos de Alibaba Cloud. Para obtener más información, consulte el repositorio de GitHub de Arena.

Requisitos previos

Antes de empezar, compruebe que cuenta con lo siguiente:

  • El rol predeterminado del sistema asignado a la cuenta de servicio (obligatorio cuando usa Alibaba Cloud por primera vez). Esto permite que ACS invoque servicios dependientes como Elastic Compute Service (ECS), Object Storage Service (OSS), Apsara File Storage NAS, Cloud Parallel File Storage (CPFS) y Server Load Balancer (SLB), cree clústeres y guarde registros. ACS solo puede usar estas funciones después de que se otorgue correctamente este rol. Para obtener más detalles, consulte Get started with Container Compute Service.

  • Un clúster de ACS en una región y zona que proporcione recursos de GPU. Consulte Crear un clúster de ACS.

  • Tiene connected to a Kubernetes cluster using kubectl.

  • El cliente Arena instalado. Consulte Configure the Arena client.

Elija una especificación de instancia de GPU

Durante la inference, la memoria de la GPU se consume principalmente por los pesos del modelo, la caché KV y los búferes de tiempo de ejecución. Use la fórmula a continuación para estimar la memoria mínima de GPU obligatoria:

GPU memory = number of model parameters × bytes per parameter

Para un modelo 7B FP16: 7 × 10⁹ × 2 bytes ≈ 13.04 GiB. También debe considerar el tamaño de la caché KV necesaria durante el cálculo, la utilización de la GPU y el búfer reservado para estos elementos. Por ello, la especificación sugerida para el modelo 7B es 1 GPU con 24 GiB de memoria, 8 vCPU y 32 GiB de RAM.

La tabla a continuación muestra las especificaciones sugeridas para cada modelo destilado de DeepSeek compatible. Para consultar la lista completa de modelos y especificaciones de GPU disponibles en ACS, vea GPU models and specifications. Para obtener detalles sobre la facturación, consulte Billing overview.

Modelo

Tamaño

Tamaño del modelo (GB)

Especificación recomendada

vCPU

RAM

Memoria de GPU

DeepSeek-R1-Distill-Qwen-1.5B

1.5B

3.55 GB

4 o 6

30 GiB

24 GiB

DeepSeek-R1-Distill-Qwen-7B

7B

15.23 GB

6 u 8

32 GiB

24 GiB

DeepSeek-R1-Distill-Llama-8B

8B

16.06 GB

6 u 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

Nota

Procedimientos

Paso 1: Prepare los archivos del modelo

Nota

Descargar y cargar el modelo suele tomar entre 1 y 2 horas. Para ahorrar tiempo, envíe un ticket para que los archivos del modelo se copien directamente en su bucket de OSS.

  1. Descargue el modelo DeepSeek-R1-Distill-Qwen-7B desde ModelScope con git-lfs.

    Nota

    Compruebe si git-lfs está instalado. Si no lo está, instálelo con el comando yum install git-lfs o apt-get install git-lfs. Consulte Instalar 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. Cree un directorio de OSS y cargue los archivos del modelo.

    Nota

    Para instalar ossutil, consulte Install 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. Cree un PV y un PVC. Configure un volumen persistente (PV) llamado llm-model y una solicitud de volumen persistente (PVC) para el clúster de destino. Para ver una guía completa, consulte Use an OSS static volume.

    Use los parámetros a continuación al crear el PV:

    Parameter

    Value

    Tipo de PV

    OSS

    Nombre del volumen

    llm-model

    Certificado de acceso

    El AccessKey ID y el AccessKey secret de su bucket de OSS

    ID del bucket

    El bucket de OSS que creó en el paso anterior

    Ruta de OSS

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

    Use los parámetros a continuación al crear el PVC:

    Parameter

    Value

    Tipo de PVC

    OSS

    Nombre

    llm-model

    Modo de asignación

    Volúmenes existentes

    Volúmenes existentes

    Seleccione el PV creado anteriormente

    Ejemplo de 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

Paso 2: Despliegue el modelo

  1. Ejecute el comando a continuación para desplegar el servicio de inference de vLLM. Este servicio expone una API HTTP compatible con OpenAI.

    La marca --data monta el PVC del modelo en /model/DeepSeek-R1-Distill-Qwen-7B dentro del contenedor. La marca --max-model-len establece la longitud máxima del contexto en tokens. Aumentarla puede mejorar la calidad de conversación del modelo, pero consume más memoria de GPU.

    Nota
    • Reemplace <example-model> en --label=alibabacloud.com/gpu-model-series=<example-model> por la serie real de modelo de GPU compatible con su clúster de ACS. Envíe un ticket para obtener la lista de series de modelos de GPU disponibles.

    • egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/{image:tag} es una dirección de registro público. Para reducir el tiempo de descarga de la imagen, se recomienda using VPC to accelerate AI container image pulls.

    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"

    El resultado esperado es el siguiente:

    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

    La tabla a continuación describe los parámetros clave.

    Parameter

    Description

    --name

    Nombre del servicio de inference

    --version

    Versión del servicio de inference

    --gpus

    Número de GPU por réplica

    --cpu

    Número de vCPU por réplica

    --memory

    Cantidad de memoria por réplica

    --replicas

    Número de réplicas

    --label

    Etiquetas que specify ACS GPU compute power. Establezca alibabacloud.com/compute-class=gpu y alibabacloud.com/gpu-model-series=<example-model>

    --restful-port

    Puerto que expone 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

    --image

    Imagen de contenedor para el servicio de inference

    --data

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

  2. Para comprobar el estado del despliegue, ejecute:

    arena serve get deepseek-r1

    Resultado esperado:

    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

Paso 3: Compruebe el servicio de inference

  1. Use kubectl port-forward para configurar el reenvío de puertos desde su computadora local hacia el servicio de inference.

    Nota

    El reenvío de puertos que configura kubectl port-forward no ofrece la confiabilidad, seguridad ni escalabilidad necesarias para producción. Por lo tanto, está diseñado únicamente para fines de desarrollo y depuración, y no es adecuado para entornos de producción. Para obtener más información sobre soluciones de red listas para producción en clústeres de Kubernetes, consulte Ingress management.

    kubectl port-forward svc/deepseek-r1-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 compatible con 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
      }'

    Resultado esperado:

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

(Opcional) Paso 4: Limpie los recursos

Elimine el servicio de inference y los recursos de almacenamiento cuando ya no los necesite.

  1. Elimine el servicio de inference.

    arena serve delete deepseek-r1

    Resultado esperado:

    INFO[0007] The serving job deepseek-r1 with version v1 has been deleted successfully
  2. Elimine el PVC y el PV.

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

    Resultado esperado:

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

Pasos siguientes