Todos los productos
Search
Centro de documentos

Container Compute Service:Programación con detección de topología GPU-HPN

Última actualización: Sep 06, 2026

Container Compute Service (ACS) asigna dispositivos GPU a los pods según la topología de GPU de cada modelo de nodo GPU-HPN. Los pods que se ejecutan en el mismo nodo intercambian datos mediante canales como NVLink, y las restricciones de partición mantienen la comunicación entre GPU eficiente y equitativa.

Requisitos previos

Esta función solo es compatible con los pods que usan la clase de cómputo gpu-hpn (compute-class) y los tipos de nodo GPU-HPN correspondientes.

Contexto

Dentro de un nodo GPU-HPN, los dispositivos GPU se conectan y se comunican mediante uno o más canales. Además, en un mismo nodo pueden ejecutarse pods que solicitan distintas cantidades de GPU. Para mantener una comunicación entre GPU eficiente y equitativa, y evitar que los pods interfieran entre sí, ACS programa los pods según la topología de GPU del nodo. El servicio divide los dispositivos GPU en particiones que coinciden con la cantidad de GPU solicitada por los pods y, después, asigna la partición óptima a cada pod.

A continuación se muestra un nodo con ocho GPU. Cada cuatro GPU forman un grupo. Las GPU dentro de un grupo están interconectadas directamente, mientras que los dos grupos se conectan mediante PCIe.

imagen

ACS divide los dispositivos de este nodo en las siguientes particiones:

GPU solicitadas por el pod

Resultados de asignación de dispositivos disponibles

8

[0,1,2,3,4,5,6,7]

4

[0,1,2,3], [4,5,6,7]

2

[0,1], [2,3], [4,5], [6,7]

1

[0], [1], [2], [3], [4], [5], [6], [7]

La creación y eliminación repetida de pods en un nodo puede provocar fragmentación de particiones. Esto impide programar nuevos pods y los deja en estado Pending. Para liberar los dispositivos que requiere un pod pendiente, consulte los resultados de asignación de dispositivos de los pods del nodo y desaloje algunos según las prioridades de su negocio. En la sección de preguntas frecuentes de este tema se explica cómo planificar los recursos del nodo para evitar la fragmentación de particiones, cómo elegir los pods que se van a desalojar y cómo el tipo, la versión y la configuración del programador afectan el grado en que se consideran las particiones durante la programación.

Particiones de los tipos de nodo GPU-HPN

Las particiones y los modelos de GPU varían según los tipos de nodo GPU-HPN que ofrece ACS. Para comprobar qué particiones están en uso en un nodo, consulte los resultados de asignación de dispositivos de los pods que se ejecutan en ese nodo.

gpu.p16en-16XL

Este tipo de nodo cuenta con 16 GPU del modelo P16EN. A continuación se muestran las particiones correspondientes a la cantidad de GPU que solicitan los pods.

GPU solicitadas por el pod

Resultados de asignación de dispositivos disponibles

16

[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]

8

[0,1,2,3,4,5,6,7], [8,9,10,11,12,13,14,15]

4

[0,1,2,3], [4,5,6,7], [8,9,10,11], [12,13,14,15]

2

[0,3], [1,2], [4,7], [5,6], [8,11], [9,10], [12,15], [13,14]

1

[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15]

Consulte los resultados de programación de un pod

Resultado de asignación de dispositivos

En un pod GPU-HPN, el resultado de asignación de dispositivos se registra en las anotaciones del pod con el siguiente formato:

apiVersion: v1
kind: Pod
metadata:
  annotations:
    alibabacloud.com/device-allocation: '{"gpus": {"minor": [0,1,2,3]}}'

Mensaje de error de programación causado por fragmentación de particiones

Un pod que no se logra programar permanece en estado Pending. Ejecute el siguiente comando para consultar el mensaje de error de programación:

kubectl describe pod pod-demo

Salida esperada, sin incluir otro contenido:

...
Events:
  Type     Reason            Age    From               Message
  ----     ------            ----   ----               -------
  Warning  FailedScheduling  26m    default-scheduler  0/5 nodes are available: 2 Node(s) Insufficient Partitioned GPU Devices, 1 Node(s) xxx, 2 Node(s) xxx.

En un mensaje similar a 0/5 nodes are available: xxx, Insufficient Partitioned GPU Devices indica que la programación falló debido a la fragmentación de particiones en el nodo.

Preguntas frecuentes

¿Cómo planifico los recursos y las políticas del nodo para evitar la fragmentación de particiones?

Planifique los recursos y las políticas del nodo de la siguiente manera:

  • Agrupe los nodos por cantidad de GPU solicitadas: establezca etiquetas distintas en sus nodos para gestionar los recursos según la cantidad de GPU que soliciten los pods. Por ejemplo, programe en nodos distintos los pods que solicitan 8 GPU y los que solicitan 1 GPU.

  • Libere dispositivos inactivos cuando ya haya pods en estado Pending: si la fragmentación de particiones deja pods en estado Pending en el clúster, utilice mecanismos como el desprogramamiento para desalojar algunos pods de baja prioridad. De esta forma, libera dispositivos inactivos para los pods pendientes.

  • Reserve capacidad cuando no sea posible planificar etiquetas de nodo: si tiene pocos nodos o no puede planificar etiquetas de nodo, y sus pods solicitan cantidades muy variadas de GPU, reserve capacidad para cubrir los requisitos de recursos de sus aplicaciones. Para obtener más información, consulte GPU pod capacity reservation.

¿Cómo elijo los pods que se van a desalojar al resolver la fragmentación de particiones?

  1. Identifique la cantidad de GPU que solicita el pod pendiente; por ejemplo, 8 GPU.

  2. En el nodo de destino, lea la anotación alibabacloud.com/device-allocation de cada pod para determinar qué dispositivos ya están asignados. Para obtener más información, consulte device allocation result.

  3. Decida qué pods desalojar según los resultados de asignación. Asegúrese de que los dispositivos liberados cumplan tanto con la cantidad de GPU solicitada como con las restricciones de partición del pod pendiente. Por ejemplo, una solicitud de 8 GPU en P16EN requiere que los identificadores de dispositivo [0,1,2,3,4,5,6,7] o [8,9,10,11,12,13,14,15] estén completamente sin asignar.

  4. Desaloje los pods mediante la ejecución de un comando como evict o delete.

¿Qué debo saber sobre las particiones si utilizo un programador personalizado?

Una vez que un programador personalizado asigna un pod a un nodo, ACS asigna los dispositivos para ese pod en dicho nodo. Durante la asignación de dispositivos, ACS agrupa los dispositivos de la forma más compacta posible para evitar la fragmentación de particiones.

Un programador personalizado solo necesita considerar la capacidad total de GPU de un nodo. Para los recursos de GPU, se recomienda usar una política de empaquetamiento de nodos MostAllocated), ya que reduce la fragmentación de particiones.

¿Qué programadores detectan la topología de particiones de GPU-HPN?

Utilice la siguiente tabla para determinar si su programador detecta la topología de particiones de los nodos GPU-HPN.

Tipo de programador

Condiciones

Descripción

Programador predeterminado de ACS

Se cumplen todas las condiciones siguientes:

  • el tipo de clúster es ACS;

  • el valor de schedulerName del pod es default-scheduler;

y se cumple alguna de las siguientes condiciones de versión:

  • la versión del programador es v1.32.0-apsara.6.11.8.507bee55 o posterior, v1.31.0-aliyun-1.5.0 o posterior, v1.30.3-aliyun-1.6.0 o posterior, o cualquier versión a partir de la 1.33

  • el programador es de una versión anterior y la opción Enable custom tags and scheduler for GPU-HPN nodes no está seleccionada.

Para consultar las versiones compatibles, consulte kube-scheduler.

El programador detecta el estado de asignación de particiones del nodo actual y excluye los nodos cuyas particiones no pueden satisfacer la solicitud. El evento de error de programación del pod incluye el mensaje Insufficient Partitioned GPU Devices.

Programador predeterminado de ACK

Se cumplen todas las condiciones siguientes:

  • el clúster es un clúster administrado de ACK, un clúster registrado de ACK One o un clúster de ACK One para flujos de trabajo distribuidos de Argo;

  • el valor de schedulerName del pod es default-scheduler;

  • y la versión del programador es v1.30.3-apsara.6.11.8. o posterior, v1.32.0-apsara.6.11.8. o posterior, v1.33.0-apsara.6.11.8. o posterior, v1.34.0-apsara.6.11.8. o posterior, o cualquier versión a partir de la 1.35.

Las versiones compatibles se encuentran en kube-scheduler.

El programador detecta el estado de asignación de particiones del nodo actual y excluye los nodos cuyas particiones no pueden satisfacer la solicitud. El evento de error de programación del pod incluye el mensaje Insufficient Partitioned GPU Devices.

Otros tipos de programador

El tipo de programador, las condiciones o la configuración no cumplen los requisitos anteriores.

El programador no detecta la topología de particiones. El nodo GPU-HPN asigna los dispositivos de la forma más compacta posible. Si las particiones no pueden satisfacer la solicitud, el pod permanece en estado Pending en el nodo hasta que las particiones puedan cubrirla, y el evento de error de programación del pod incluye el mensaje Insufficient Partitioned GPU Devices. Para obtener más información, consulte How do I plan node resources and policies to avoid partition fragmentation?