Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:Best practices for deploying the DeepSeek full version across multiple nodes in ACK

Última actualización: Sep 20, 2026

Este tema describe las mejores prácticas para desplegar el modelo de la versión completa de DeepSeek en varios nodos de Alibaba Cloud Container Service for Kubernetes (ACK). El objetivo es lograr un rendimiento, una escalabilidad y una confiabilidad óptimos.

Contexto

Descripción general de DeepSeek

DeepSeek es una serie de modelos de lenguaje grandes desarrollados por DeepSeek. Los modelos de la versión completa de DeepSeek admiten los modos de pensamiento híbrido y de pensamiento exclusivo. Estos proporcionan capacidades avanzadas de razonamiento para tareas complejas. Dichos modelos son especialmente adecuados para escenarios que requieren un análisis profundo y resolución de problemas.

Los modelos de DeepSeek compatibles incluyen:

  • Modelos de pensamiento híbrido (deshabilitados de forma predeterminada): deepseek-v3.2, deepseek-v3.2-exp, deepseek-v3.1

  • Modelos de pensamiento exclusivo: deepseek-r1, deepseek-r1-0528, modelos destilados de deepseek-r1

Nota: Actualmente, los modelos de DeepSeek solo están disponibles en la región Beijing.

Beneficios del despliegue distribuido en ACK

Desplegar los modelos de DeepSeek en varios nodos de ACK ofrece varias ventajas:

  • Escalabilidad: escale los recursos de cómputo de forma dinámica según la demanda de la carga de trabajo.

  • Alta disponibilidad: distribuya las cargas de trabajo en varios nodos para eliminar puntos únicos de falla.

  • Optimización de recursos: utilice de manera eficiente los recursos de GPU en todo el clúster.

  • Rendimiento: reduzca la latencia mediante un load balancer inteligente y la programación por proximidad.

Requisitos previos

  • Cree un clúster administrado de ACK (edición Pro) con nodos de GPU. La versión de Kubernetes del clúster debe ser 1.22 o posterior.

    Asegúrese de que el clúster contenga nodos con GPU de NVIDIA compatibles (se recomiendan A10, V100 o A100). Utilice la versión 525 del controlador de NVIDIA para obtener un rendimiento óptimo.

  • Asegúrese de contar con permisos suficientes para crear y gestionar recursos de Kubernetes, incluidos deployments, services y volúmenes persistentes.

  • Configure Object Storage Service (OSS) para el almacenamiento y la caché del modelo. Cree un bucket para almacenar los pesos del modelo y los archivos de configuración.

  • Establezca las políticas de red y los security groups adecuados. Esto permite la comunicación entre nodos y el acceso externo al servicio de inference.

Principios de diseño de arquitectura

Estrategia de despliegue en varios nodos

Al desplegar los modelos de DeepSeek en varios nodos, considere los siguientes enfoques arquitectónicos:

Enfoque de Horizontal Pod Autoscaler (HPA)

Despliegue varias réplicas del servicio de inference de DeepSeek en distintos nodos. Esto permite que Kubernetes escale automáticamente con base en métricas de CPU, memoria o personalizadas.

Afinidad y antiafinidad de nodos

Utilice reglas de afinidad de nodos para garantizar una distribución óptima de los pods de DeepSeek en distintos nodos y zonas de disponibilidad:

affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: NotIn
          values:
          - node-1
          - node-2
  podAntiAffinity:
    preferredDuringSchedulingIgnoredDuringExecution:
    - weight: 100
      podAffinityTerm:
        labelSelector:
          matchLabels:
            app: deepseek-inference
        topologyKey: kubernetes.io/hostname

Gestión de recursos

Configure las solicitudes y los límites de recursos adecuados para los pods de DeepSeek:

resources:
  requests:
    cpu: "4"
    memory: "16Gi"
    nvidia.com/gpu: "1"
  limits:
    cpu: "8"
    memory: "32Gi"
    nvidia.com/gpu: "1"

Pasos de despliegue

Paso 1: Preparar el modelo de DeepSeek

  1. Descargue los archivos del modelo de DeepSeek en su bucket de OSS:

    #!/bin/bash
    # Download DeepSeek model from ModelScope
    git lfs install
    git clone https://www.modelscope.cn/deepseek-ai/DeepSeek-V3.2.git /tmp/deepseek-v3.2
    # Upload to OSS
    ossutil cp -r /tmp/deepseek-v3.2 oss://your-bucket/models/deepseek-v3.2/
  2. Optimice el modelo para inference con TensorRT-LLM (opcional, pero recomendado para mejorar el rendimiento):

    cd /workspace/tensorrt_llm/examples/deepseek
    python convert_checkpoint.py \
      --model_dir /models/deepseek-v3.2 \
      --output_dir /models/deepseek-v3.2-trtllm \
      --dtype float16

Paso 2: Configurar el almacenamiento y la caché

  1. Cree un Dataset de Fluid para cargar el modelo de manera eficiente:

    apiVersion: data.fluid.io/v1alpha1
    kind: Dataset
    metadata:
      name: deepseek-models
    spec:
      mounts:
      - mountPoint: oss://your-bucket/models/
        name: models
        path: /
        options:
          fs.oss.endpoint: oss-cn-beijing.aliyuncs.com
        encryptOptions:
          - name: fs.oss.accessKeyId
            valueFrom:
              secretKeyRef:
                name: oss-secret
                key: accessKeyId
          - name: fs.oss.accessKeySecret
            valueFrom:
              secretKeyRef:
                name: oss-secret
                key: accessKeySecret
  2. Configure JindoRuntime para la caché:

    apiVersion: data.fluid.io/v1alpha1
    kind: JindoRuntime
    metadata:
      name: deepseek-models
    spec:
      replicas: 3
      tieredstore:
        levels:
          - mediumtype: MEM
            volumeType: emptyDir
            path: /dev/shm
            quota: 50Gi
            high: "0.95"
            low: "0.7"

Paso 3: Desplegar el servicio de inference

  1. Cree un deployment de Kubernetes con varias réplicas:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: deepseek-inference
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: deepseek-inference
      template:
        metadata:
          labels:
            app: deepseek-inference
        spec:
          containers:
          - name: deepseek-server
            image: registry.cn-beijing.aliyuncs.com/your-registry/deepseek-inference:latest
            ports:
            - containerPort: 8000
            env:
            - name: MODEL_PATH
              value: "/models/deepseek-v3.2"
            - name: ENABLE_THINKING
              value: "true"
            resources:
              requests:
                cpu: "4"
                memory: "16Gi"
                nvidia.com/gpu: "1"
              limits:
                cpu: "8"
                memory: "32Gi"
                nvidia.com/gpu: "1"
            volumeMounts:
            - name: model-storage
              mountPath: /models
          volumes:
          - name: model-storage
            persistentVolumeClaim:
              claimName: deepseek-models
          affinity:
            podAntiAffinity:
              preferredDuringSchedulingIgnoredDuringExecution:
              - weight: 100
                podAffinityTerm:
                  labelSelector:
                    matchLabels:
                      app: deepseek-inference
                  topologyKey: kubernetes.io/hostname
  2. Cree un service de tipo load balancer:

    apiVersion: v1
    kind: Service
    metadata:
      name: deepseek-inference-service
    spec:
      selector:
        app: deepseek-inference
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8000
      type: LoadBalancer

Paso 4: Configurar el escalado automático

  1. Configure Horizontal Pod Autoscaler:

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: deepseek-hpa
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: deepseek-inference
      minReplicas: 2
      maxReplicas: 10
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 70
      - type: Resource
        resource:
          name: memory
          target:
            type: Utilization
            averageUtilization: 80
  2. Establezca métricas personalizadas para la utilización de la GPU (opcional):

    # Custom metric for GPU utilization
    - type: Pods
      pods:
        metric:
          name: gpu_utilization
        target:
          type: AverageValue
          averageValue: "75"

Monitoreo y optimización

Configuración del monitoreo

Implemente un monitoreo integral para su despliegue de DeepSeek:

  • Métricas de Prometheus para la utilización de CPU, memoria y GPU.

  • Paneles de Grafana para la visualización en tiempo real.

  • Registro centralizado con Fluentd o Logstash.

  • Seguimiento distribuido con Jaeger para analizar el flujo de las solicitudes.

Técnicas de optimización del rendimiento

Aplique estas estrategias de optimización para mejorar el rendimiento:

Procesamiento por lotes de solicitudes

Configure el procesamiento por lotes para aumentar el rendimiento:

env:
- name: MAX_BATCH_SIZE
  value: "8"
- name: BATCH_TIMEOUT_MS
  value: "100"

Estrategias de caché del modelo

Utilice una caché multinivel para reducir el tiempo de carga del modelo:

  1. Caché basada en RAM para las partes del modelo a las que se accede con frecuencia.

  2. Caché en SSD NVMe para componentes más grandes del modelo.

  3. Redis o Memcached para compartir datos entre nodos.

Pool de conexiones

Implemente un pool de conexiones para reducir la sobrecarga:

env:
- name: CONNECTION_POOL_SIZE
  value: "50"
- name: KEEP_ALIVE_TIMEOUT
  value: "300"

Mejores prácticas

Planificación de recursos

  • Asignación de GPU: asigne GPU dedicadas por cada instancia de DeepSeek para evitar la contención de recursos.

  • Dimensionamiento de memoria: reserve como mínimo el doble del tamaño del modelo en RAM para obtener un rendimiento óptimo.

  • Núcleos de CPU: asigne de 4 a 8 núcleos de CPU por cada instancia de GPU para las tareas de preprocesamiento.

Estrategias de escalado

  • Escalado gradual: escale de forma incremental con base en los patrones reales de carga, en lugar de estimaciones máximas.

  • Distribución por zonas: distribuya las réplicas en varias zonas de disponibilidad para garantizar tolerancia a fallas.

  • Periodos de calentamiento: implemente un aumento gradual del tráfico durante los eventos de escalado.

Optimización de costos

  • Instancias spot: utilice instancias preemptible para cargas de trabajo de inference no críticas.

  • Límites de escalado automático: establezca límites mínimos y máximos adecuados para equilibrar el rendimiento y el costo.

  • Apagado por inactividad: implemente el apagado automático durante los periodos de bajo uso.

Consideraciones de seguridad

  • Políticas de red: restrinja la comunicación entre pods mediante las Network Policies de Kubernetes.

  • Cifrado TLS: habilite TLS para todas las comunicaciones externas.

  • RBAC: implemente el control de acceso basado en roles para los recursos del clúster.

  • Gestión de secretos: utilice Kubernetes Secrets o almacenes externos para gestionar las credenciales.

Solución de problemas

Problemas comunes y soluciones

Errores de falta de memoria en la GPU

Síntomas: errores de CUDA por falta de memoria durante la inference.

Soluciones:

  • Reduzca el tamaño del lote.

  • Aumente la asignación de memoria de la GPU.

  • Habilite la cuantización del modelo.

  • Utilice paralelismo de modelos en varias GPU.

Rendimiento lento de inference

Síntomas: alta latencia y tiempos de respuesta lentos.

Soluciones:

  • Compruebe las métricas de utilización de la GPU.

  • Optimice el modelo con TensorRT-LLM.

  • Implemente el procesamiento por lotes de solicitudes.

  • Revise la conectividad de red entre los nodos.

Problemas con el escalado automático

Síntomas: los pods no se inician ni escalan correctamente.

Soluciones:

  • Compruebe las cuotas y los límites de recursos.

  • Verifique la disponibilidad de recursos en los nodos.

  • Revise las reglas de afinidad y antiafinidad.

  • Supervise los registros del escalador automático del clúster.

Comandos de diagnóstico

Comandos útiles para solucionar problemas:

# Check pod status and resource usage
kubectl top pods -l app=deepseek-inference

# View detailed pod information
kubectl describe pod -l app=deepseek-inference

# Check GPU utilization
kubectl exec -it <pod-name> -- nvidia-smi

# Monitor logs
kubectl logs -f -l app=deepseek-inference --tail=100

# Check HPA status
kubectl get hpa deepseek-hpa

# Verify service endpoints
kubectl get endpoints deepseek-inference-service