En este documento, se describe la configuración de instancias de máquinas virtuales (VM) A3 Mega, A3 High o A3 Edge que tienen ocho GPUs NVIDIA H100 conectadas y usan cualquiera de las siguientes tecnologías de GPUDirect: GPUDirect-TCPX o GPUDirect-TCPXO. Para crear una instancia de A3 High con menos de 8 GPUs, consulta Crea una instancia de A3 High o A2.
La tecnología GPUDirect que usas depende del tipo de máquina A3 que selecciones.
- GPUDirect-TCPXO: Es una pila de redes descargada similar a RDMA que se admite en los tipos de máquinas A3 Mega (
a3-megagpu-8g) que tienen ocho GPUs H100. - GPUDirect-TCPX: Es una versión optimizada de TCP invitado que proporciona una latencia más baja y es compatible con los tipos de máquinas A3 High (
a3-highgpu-8g) y A3 Edge (a3-edgegpu-8g) que tienen ocho GPUs H100.
La serie de máquinas con optimización de acelerador A3 tiene 208 CPU virtuales y hasta 1, 872 GB de memoria. Los tipos de máquinas a3-megagpu-8g, a3-highgpu-8g y a3-edgegpu-8g ofrecen 80 GB de memoria de GPU por GPU. Estos tipos de máquinas pueden obtener hasta 1,800 Gbps de ancho de banda de red, lo que los hace ideales para modelos de lenguaje grandes basados en transformadores, bases de datos y computación de alto rendimiento (HPC).
Tanto GPUDirect-TCPX como GPUDirect-TCPXO usan la tecnología NVIDIA GPUDirect para aumentar el rendimiento y reducir la latencia de tus VMs A3. Esto se logra permitiendo que las cargas útiles de los paquetes de datos se transfieran directamente de la memoria de GPU a la interfaz de red, lo que omite la CPU y la memoria del sistema. Esta es una forma de acceso directo a la memoria remota (RDMA). Cuando se combinan con la NIC virtual de Google (gVNIC), las VMs A3 pueden ofrecer la mayor capacidad de procesamiento entre las VMs en un clúster en comparación con los tipos de máquinas optimizados para aceleradores A2 o G2 de la generación anterior.
En este documento, se describe cómo crear una VM A3 Mega, A3 High o A3 Edge y habilitar GPUDirect-TCPX o GPUDirect-TCPXO para probar el rendimiento mejorado de la red de GPU.
Antes de comenzar
- Para revisar las limitaciones y los pasos de requisitos previos adicionales para crear instancias con GPU conectadas, como seleccionar una imagen de SO y verificar la cuota de GPU, consulta la Descripción general de la creación de una instancia con GPU conectadas.
-
Si aún no lo hiciste, configura la autenticación.
La autenticación verifica tu identidad para acceder a los servicios y las APIs de Google Cloud . Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
-
Instala Google Cloud CLI. Después de instalarla, inicializa Google Cloud CLI ejecutando el siguiente comando:
gcloud initSi usas un proveedor de identidad (IdP) externo, primero debes Acceder a gcloud CLI con tu identidad federada.
- Set a default region and zone.
-
Roles obligatorios
Para obtener los permisos que necesitas para crear VMs,
pídele a tu administrador que te otorgue el rol de IAM
Administrador de instancias de Compute (v1) (roles/compute.instanceAdmin.v1)
en el proyecto.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene los permisos necesarios para crear VM. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para crear VM:
-
compute.instances.createen el proyecto -
Si deseas usar una imagen personalizada para crear la VM, sigue estos pasos:
compute.images.useReadOnlyen la imagen -
Para usar una instantánea a fin de crear la VM, haz lo siguiente:
compute.snapshots.useReadOnlyen la instantánea -
Si quieres usar una plantilla de instancias para crear la VM, sigue estos pasos:
compute.instanceTemplates.useReadOnlyen la plantilla de instancias -
A fin de especificar una subred para tu VM:
compute.subnetworks.useen el proyecto o en la subred elegida -
Si deseas especificar una dirección IP estática para la VM:
compute.addresses.useen el proyecto -
Para asignar una dirección IP externa a la VM cuando se usa una red de VPC,
compute.subnetworks.useExternalIpen el proyecto o en la subred elegida. -
Para asignar una red heredada a la VM, ejecuta
compute.networks.useen el proyecto. -
Para asignar una dirección IP externa a la VM cuando se usa una red heredada, ejecuta
compute.networks.useExternalIpen el proyecto -
Para configurar los metadatos de la instancia de VM para la VM,
compute.instances.setMetadataen el proyecto. -
Para configurar etiquetas en la VM, haz lo siguiente:
compute.instances.setTagsen la VM -
Para configurar etiquetas en la VM, haz lo siguiente:
compute.instances.setLabelsen la VM -
A fin de configurar una cuenta de servicio para que la VM use:
compute.instances.setServiceAccounten la VM -
Crear un disco nuevo para la VM:
compute.disks.createen el proyecto -
Para conectar un disco existente en modo de solo lectura o de lectura y escritura, usa
compute.disks.useen el disco. -
Para conectar un disco existente en modo de solo lectura, haz lo siguiente:
compute.disks.useReadOnlyen el disco
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Descripción general
Para probar el rendimiento de la red con GPUDirect, completa los siguientes pasos:
- Configura una o más redes de nube privada virtual (VPC) que tengan una MTU grande configurada.
- Crea tu instancia de GPU.
Configura redes de VPC
Para habilitar la comunicación eficiente de tus VMs con GPU, debes crear una red de administración y una o más redes de datos. La red de administración se usa para el acceso externo, por ejemplo, SSH, y para la mayoría de las comunicaciones de red generales. Las redes de datos se usan para la comunicación de alto rendimiento entre las GPUs de diferentes VMs, por ejemplo, para el tráfico de acceso directo a la memoria remoto (RDMA).
Para estas redes de VPC, te recomendamos que establezcas la unidad de transmisión máxima (MTU) en un valor mayor. Los valores de MTU más altos aumentan el tamaño del paquete y reducen la sobrecarga del encabezado del paquete, lo que aumenta la capacidad de procesamiento de los datos de carga útil. Para obtener más información sobre cómo crear redes de VPC, consulta Crea y verifica una red MTU de marcos jumbo.
Crea una red de administración, subred y regla de firewall
Completa los siguientes pasos para configurar la red de administración:
Crea la red de administración con el comando
networks create:gcloud compute networks create NETWORK_NAME_PREFIX-mgmt-net \ --project=PROJECT_ID \ --subnet-mode=custom \ --mtu=8244Crea la subred de administración con el comando
networks subnets create:gcloud compute networks subnets create NETWORK_NAME_PREFIX-mgmt-sub \ --project=PROJECT_ID \ --network=NETWORK_NAME_PREFIX-mgmt-net \ --region=REGION \ --range=192.168.0.0/24Crea reglas de firewall con el comando
firewall-rules create.Crea una regla de firewall para la red de administración.
gcloud compute firewall-rules create NETWORK_NAME_PREFIX-mgmt-internal \ --project=PROJECT_ID \ --network=NETWORK_NAME_PREFIX-mgmt-net \ --action=ALLOW \ --rules=tcp:0-65535,udp:0-65535,icmp \ --source-ranges=192.168.0.0/16Crea la regla de firewall
tcp:22para limitar las direcciones IP de origen que pueden conectarse a la VM mediante SSH.gcloud compute firewall-rules create NETWORK_NAME_PREFIX-mgmt-external-ssh \ --project=PROJECT_ID \ --network=NETWORK_NAME_PREFIX-mgmt-net \ --action=ALLOW \ --rules=tcp:22 \ --source-ranges=SSH_SOURCE_IP_RANGECrea la regla de firewall
icmpque se puede usar para verificar si hay problemas de transmisión de datos en la red.gcloud compute firewall-rules create NETWORK_NAME_PREFIX-mgmt-external-ping \ --project=PROJECT_ID \ --network=NETWORK_NAME_PREFIX-mgmt-net \ --action=ALLOW \ --rules=icmp \ --source-ranges=0.0.0.0/0
Reemplaza lo siguiente:
NETWORK_NAME_PREFIX: Es el prefijo del nombre que se usará para las subredes y las redes de VPC.PROJECT_ID: El ID de tu proyectoREGION: Es la región en la que deseas crear las redes.SSH_SOURCE_IP_RANGE: el rango de IP en formato CIDR. Esto especifica qué direcciones IP de origen pueden conectarse a tu VM mediante SSH.
Crea redes de datos, subredes y reglas de firewall
La cantidad de redes de datos varía según el tipo de máquina con GPU que crees.A3 Mega
A3 Mega requiere ocho redes de datos. Usa el siguiente comando para crear ocho redes de datos, cada una con subredes y reglas de firewall.
for N in $(seq 1 8); do
gcloud compute networks create NETWORK_NAME_PREFIX-data-net-$N \
--project=PROJECT_ID \
--subnet-mode=custom \
--mtu=8244
gcloud compute networks subnets create NETWORK_NAME_PREFIX-data-sub-$N \
--project=PROJECT_ID \
--network=NETWORK_NAME_PREFIX-data-net-$N \
--region=REGION \
--range=192.168.$N.0/24
gcloud compute firewall-rules create NETWORK_NAME_PREFIX-data-internal-$N \
--project=PROJECT_ID \
--network=NETWORK_NAME_PREFIX-data-net-$N \
--action=ALLOW \
--rules=tcp:0-65535,udp:0-65535,icmp \
--source-ranges=192.168.0.0/16
done
A3 High y A3 Edge
Las versiones A3 High y A3 Edge requieren cuatro redes de datos. Usa el siguiente comando para crear cuatro redes de datos, cada una con subredes y reglas de firewall.
for N in $(seq 1 4); do
gcloud compute networks create NETWORK_NAME_PREFIX-data-net-$N \
--project=PROJECT_ID \
--subnet-mode=custom \
--mtu=8244
gcloud compute networks subnets create NETWORK_NAME_PREFIX-data-sub-$N \
--project=PROJECT_ID \
--network=NETWORK_NAME_PREFIX-data-net-$N \
--region=REGION \
--range=192.168.$N.0/24
gcloud compute firewall-rules create NETWORK_NAME_PREFIX-data-internal-$N \
--project=PROJECT_ID \
--network=NETWORK_NAME_PREFIX-data-net-$N \
--action=ALLOW \
--rules=tcp:0-65535,udp:0-65535,icmp \
--source-ranges=192.168.0.0/16
done
Crea instancias de A3 Mega (GPUDirect-TCPXO)
Crea tus instancias A3 Mega con la imagen de Container-Optimized OS cos-121-lts o posterior.
COS
Para probar el rendimiento de la red con GPUDirect-TCPXO, crea al menos dos instancias de VM A3 Mega.
Crea cada VM con la imagen de Container-Optimized OS cos-121-lts o posterior y especifica las redes de VPC que creaste en el paso anterior.
Las VMs A3 Mega requieren nueve interfaces de red de NIC virtual de Google (gVNIC), una para la red de administración y ocho para las redes de datos.
Según el modelo de aprovisionamiento que deseas usar para crear tu VM, selecciona una de las siguientes opciones:
Estándar
gcloud compute instances create VM_NAME \
--project=PROJECT_ID \
--zone=ZONE \
--machine-type=a3-megagpu-8g \
--maintenance-policy=TERMINATE \
--restart-on-failure \
--image-family=cos-121-lts \
--image-project=cos-cloud \
--boot-disk-size=BOOT_DISK_SIZE \
--metadata=cos-update-strategy=update_disabled \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-5,subnet=NETWORK_NAME_PREFIX-data-sub-5,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-6,subnet=NETWORK_NAME_PREFIX-data-sub-6,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-7,subnet=NETWORK_NAME_PREFIX-data-sub-7,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-8,subnet=NETWORK_NAME_PREFIX-data-sub-8,no-address
Reemplaza lo siguiente:
VM_NAMEpor el nombre de tu instancia de VM.PROJECT_ID: el ID de tu proyecto.ZONE: Una zona que admite tu tipo de máquina.BOOT_DISK_SIZE: Es el tamaño del disco de arranque en GB (por ejemplo,50).NETWORK_NAME_PREFIX: Es el prefijo del nombre que se usará para las subredes y las redes de VPC.
Spot
gcloud compute instances create VM_NAME \
--project=PROJECT_ID \
--zone=ZONE \
--machine-type=a3-megagpu-8g \
--maintenance-policy=TERMINATE \
--restart-on-failure \
--image-family=cos-121-lts \
--image-project=cos-cloud \
--boot-disk-size=BOOT_DISK_SIZE \
--metadata=cos-update-strategy=update_disabled \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-5,subnet=NETWORK_NAME_PREFIX-data-sub-5,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-6,subnet=NETWORK_NAME_PREFIX-data-sub-6,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-7,subnet=NETWORK_NAME_PREFIX-data-sub-7,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-8,subnet=NETWORK_NAME_PREFIX-data-sub-8,no-address \
--provisioning-model=SPOT \
--instance-termination-action=TERMINATION_ACTION
Reemplaza lo siguiente:
VM_NAMEpor el nombre de tu instancia de VM.PROJECT_ID: el ID de tu proyecto.ZONE: Una zona que admite tu tipo de máquina.BOOT_DISK_SIZE: Es el tamaño del disco de arranque en GB (por ejemplo,50).NETWORK_NAME_PREFIX: Es el prefijo del nombre que se usará para las subredes y las redes de VPC.TERMINATION_ACTION: Indica si se debe detener o borrar la VM cuando se interrumpa. Especifica uno de los siguientes valores:- Para detener la VM, haz lo siguiente:
STOP - Para borrar la VM, haz lo siguiente:
DELETE
- Para detener la VM, haz lo siguiente:
Inicio flexible
gcloud compute instances create VM_NAME \
--project=PROJECT_ID \
--zone=ZONE \
--machine-type=a3-megagpu-8g \
--maintenance-policy=TERMINATE \
--restart-on-failure \
--image-family=cos-121-lts \
--image-project=cos-cloud \
--boot-disk-size=BOOT_DISK_SIZE \
--metadata=cos-update-strategy=update_disabled \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-5,subnet=NETWORK_NAME_PREFIX-data-sub-5,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-6,subnet=NETWORK_NAME_PREFIX-data-sub-6,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-7,subnet=NETWORK_NAME_PREFIX-data-sub-7,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-8,subnet=NETWORK_NAME_PREFIX-data-sub-8,no-address \
--provisioning-model=FLEX_START \
--instance-termination-action=TERMINATION_ACTION \
--max-run-duration=RUN_DURATION \
--request-valid-for-duration=VALID_FOR_DURATION \
--reservation-affinity=none
Reemplaza lo siguiente:
VM_NAMEpor el nombre de tu instancia de VM.PROJECT_ID: el ID de tu proyecto.ZONE: Una zona que admite tu tipo de máquina.BOOT_DISK_SIZE: Es el tamaño del disco de arranque en GB (por ejemplo,50).NETWORK_NAME_PREFIX: Es el prefijo del nombre que se usará para las subredes y las redes de VPC.TERMINATION_ACTION: Indica si se debe detener o borrar la VM al final de su duración de ejecución. Especifica uno de los siguientes valores:- Para detener la VM, haz lo siguiente:
STOP - Para borrar la VM, haz lo siguiente:
DELETE
- Para detener la VM, haz lo siguiente:
RUN_DURATION: Es el tiempo máximo que se ejecuta la VM antes de que Compute Engine la detenga o la borre. Debes darle formato al valor como la cantidad de días, horas, minutos o segundos, seguidos ded,h,mys, respectivamente. Por ejemplo, un valor de30mdefine un tiempo de 30 minutos, y un valor de1h2m3sdefine un tiempo de una hora, dos minutos y tres segundos. Puedes especificar un valor entre 10 minutos y siete días.VALID_FOR_DURATION: Es el tiempo máximo que se debe esperar para aprovisionar los recursos solicitados. Debes darle formato al valor como la cantidad de días, horas, minutos o segundos, seguidos ded,h,mys, respectivamente. Según los requisitos zonales de tu carga de trabajo, especifica una de las siguientes duraciones para aumentar las probabilidades de que se complete tu solicitud de creación de VM:- Si tu carga de trabajo requiere que crees la VM en una zona específica, especifica una duración entre 90 segundos (
90s) y dos horas (2h). Las duraciones más largas te brindan más posibilidades de obtener recursos. - Si la VM puede ejecutarse en cualquier zona de la región, especifica una duración de cero segundos (
0s). Este valor especifica que Compute Engine solo asigna recursos si están disponibles de inmediato. Si la solicitud de creación falla porque los recursos no están disponibles, vuelve a intentarlo en otra zona.
- Si tu carga de trabajo requiere que crees la VM en una zona específica, especifica una duración entre 90 segundos (
Con reserva
gcloud compute instances create VM_NAME \
--project=PROJECT_ID \
--zone=ZONE \
--machine-type=a3-megagpu-8g \
--maintenance-policy=TERMINATE \
--restart-on-failure \
--image-family=cos-121-lts \
--image-project=cos-cloud \
--boot-disk-size=BOOT_DISK_SIZE \
--metadata=cos-update-strategy=update_disabled \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-5,subnet=NETWORK_NAME_PREFIX-data-sub-5,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-6,subnet=NETWORK_NAME_PREFIX-data-sub-6,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-7,subnet=NETWORK_NAME_PREFIX-data-sub-7,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-8,subnet=NETWORK_NAME_PREFIX-data-sub-8,no-address \
--provisioning-model=RESERVATION_BOUND \
--instance-termination-action=TERMINATION_ACTION \
--reservation-affinity=specific \
--reservation=RESERVATION_URL
Reemplaza lo siguiente:
VM_NAMEpor el nombre de tu instancia de VM.PROJECT_ID: el ID de tu proyecto.ZONE: Una zona que admite tu tipo de máquina.BOOT_DISK_SIZE: Es el tamaño del disco de arranque en GB (por ejemplo,50).NETWORK_NAME_PREFIX: Es el prefijo del nombre que se usará para las subredes y las redes de VPC.TERMINATION_ACTION: Indica si se debe detener o borrar la VM al final del período de reserva. Especifica uno de los siguientes valores:- Para detener la VM, haz lo siguiente:
STOP - Para borrar la VM, haz lo siguiente:
DELETE
- Para detener la VM, haz lo siguiente:
RESERVATION_URL: Es la URL de la reserva que deseas consumir. Especifica uno de los siguientes valores:- Si creaste la reserva en el mismo proyecto, haz lo siguiente:
example-reservation - Si la reserva está en otro proyecto y
tu proyecto puede usarla, ingresa
projects/PROJECT_ID/reservations/example-reservation.
- Si creaste la reserva en el mismo proyecto, haz lo siguiente:
Instalar los controladores de GPU.
En cada VM de A3 Mega, instala los controladores de GPU.
Instala los controladores de GPU de NVIDIA.
sudo cos-extensions install gpu -- --version=latest
Vuelve a montar la ruta.
sudo mount --bind /var/lib/nvidia /var/lib/nvidia sudo mount -o remount,exec /var/lib/nvidia
Otorga a las NIC acceso a las GPU
En cada VM de A3 Mega, otorga a las NIC acceso a las GPU.
- Ajusta la configuración del firewall para aceptar todas las conexiones TCP entrantes y habilitar la comunicación
entre los nodos de tu clúster:
sudo /sbin/iptables -I INPUT -p tcp -m tcp -j ACCEPT
- Configura el módulo
dmabuf. Carga el móduloimport-helper, que forma parte del frameworkdmabuf. Este framework permite el uso compartido de memoria de alta velocidad y sin copias entre la GPU y la tarjeta de interfaz de red (NIC), un componente fundamental para la tecnología GPUDirect:sudo modprobe import-helper
- Configura Docker para autenticar solicitudes en Artifact Registry.
docker-credential-gcr configure-docker --registries us-docker.pkg.dev
- Inicia
RxDMen el contenedor.RxDMes un servicio de administración que se ejecuta junto con la aplicación de GPU para administrar la memoria de GPU. Este servicio preasigna y administra la memoria de la GPU para el tráfico de red entrante, lo que es un elemento clave de la tecnología GPUDirect y esencial para las redes de alto rendimiento. Inicia un contenedor de Docker llamadorxdm:docker run --pull=always --rm --detach --name rxdm \ --network=host --cap-add=NET_ADMIN \ --privileged \ --volume /var/lib/nvidia:/usr/local/nvidia \ --device /dev/nvidia0:/dev/nvidia0 \ --device /dev/nvidia1:/dev/nvidia1 \ --device /dev/nvidia2:/dev/nvidia2 \ --device /dev/nvidia3:/dev/nvidia3 \ --device /dev/nvidia4:/dev/nvidia4 \ --device /dev/nvidia5:/dev/nvidia5 \ --device /dev/nvidia6:/dev/nvidia6 \ --device /dev/nvidia7:/dev/nvidia7 \ --device /dev/nvidia-uvm:/dev/nvidia-uvm \ --device /dev/nvidiactl:/dev/nvidiactl \ --device /dev/dmabuf_import_helper:/dev/dmabuf_import_helper \ --env LD_LIBRARY_PATH=/usr/local/nvidia/lib64 \ us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpxo/tcpgpudmarxd-dev:v1.0.19 \ --num_hops=2 --num_nics=8Para verificar que
RxDMse haya iniciado correctamente, ejecuta el comando. Espera a que aparezca el mensaje "Buffer manager initialization complete" para confirmar que la inicialización deRxDMse realizó correctamente.docker container logs --follow rxdm
Como alternativa, consulta el registro de finalización de la inicialización de
RxDM.docker container logs rxdm 2>&1 | grep "Buffer manager initialization complete"
Configura el entorno de NCCL
En cada VM A3 Mega, completa los siguientes pasos:
- Instala la biblioteca
nccl-net, un complemento para NCCL que habilita la comunicación de GPUDirect a través de la red.El siguiente comando extrae la imagen del instalador y, luego, instala los archivos de biblioteca necesarios en/var/lib/tcpxo/lib64/.NCCL_NET_IMAGE="us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpxo/nccl-plugin-gpudirecttcpx-dev:v1.0.13-1" docker run --pull=always --rm --privileged \ --network=host --cap-add=NET_ADMIN \ --volume /var/lib/nvidia:/usr/local/nvidia \ --volume /var/lib:/var/lib \ --device /dev/nvidia0:/dev/nvidia0 \ --device /dev/nvidia1:/dev/nvidia1 \ --device /dev/nvidia2:/dev/nvidia2 \ --device /dev/nvidia3:/dev/nvidia3 \ --device /dev/nvidia4:/dev/nvidia4 \ --device /dev/nvidia5:/dev/nvidia5 \ --device /dev/nvidia6:/dev/nvidia6 \ --device /dev/nvidia7:/dev/nvidia7 \ --device /dev/nvidia-uvm:/dev/nvidia-uvm \ --device /dev/nvidiactl:/dev/nvidiactl \ --device /dev/dmabuf_import_helper:/dev/dmabuf_import_helper \ --env LD_LIBRARY_PATH=/usr/local/nvidia/lib64:/var/lib/tcpxo/lib64 \ ${NCCL_NET_IMAGE} install --install-nccl sudo mount --bind /var/lib/tcpxo /var/lib/tcpxo && sudo mount -o remount,exec /var/lib/tcpxo - Inicia un contenedor dedicado
nccl-testspara las pruebas de NCCL. Este contenedor viene preconfigurado con las herramientas y los lenguajes de utilidad necesarios, lo que garantiza un entorno limpio y coherente para verificar el rendimiento de la configuración de GPUDirect.Este comando reutiliza la variable
NCCL_NET_IMAGEque estableciste en el paso anterior.docker run --pull=always --rm --detach --name nccl \ --network=host --cap-add=NET_ADMIN \ --privileged \ --volume /var/lib/nvidia:/usr/local/nvidia \ --volume /var/lib/tcpxo:/var/lib/tcpxo \ --shm-size=8g \ --device /dev/nvidia0:/dev/nvidia0 \ --device /dev/nvidia1:/dev/nvidia1 \ --device /dev/nvidia2:/dev/nvidia2 \ --device /dev/nvidia3:/dev/nvidia3 \ --device /dev/nvidia4:/dev/nvidia4 \ --device /dev/nvidia5:/dev/nvidia5 \ --device /dev/nvidia6:/dev/nvidia6 \ --device /dev/nvidia7:/dev/nvidia7 \ --device /dev/nvidia-uvm:/dev/nvidia-uvm \ --device /dev/nvidiactl:/dev/nvidiactl \ --device /dev/dmabuf_import_helper:/dev/dmabuf_import_helper \ --env LD_LIBRARY_PATH=/usr/local/nvidia/lib64:/var/lib/tcpxo/lib64 \ ${NCCL_NET_IMAGE} daemon
Ejecuta la comparativa de nccl-tests
Para ejecutar la comparativa de nccl-tests en una sola VM A3 Mega, completa los siguientes pasos:
- Abre una shell de Bash interactiva dentro del contenedor
nccl-tests.docker exec -it nccl bash
- Configura el entorno para una ejecución de varios nodos configurando SSH y generando archivos de host. Reemplaza
VM_NAME_1yVM_NAME_2por los nombres de cada VM./scripts/init_ssh.sh VM_NAME_1 VM_NAME_2 /scripts/gen_hostfiles.sh VM_NAME_1 VM_NAME_2
Esto crea un directorio llamado
/scripts/hostfiles2. - Ejecuta la comparativa
all_gather_perfpara medir el rendimiento colectivo de la comunicación:/scripts/run-nccl-tcpxo.sh all_gather_perf "${LD_LIBRARY_PATH}" 8 eth1,eth2,eth3,eth4,eth5,eth6,eth7,eth8 1M 512M 3 2 10 8 2 10
Desde el shell de bash del contenedor nccl-tests, completa los siguientes pasos.
Crea instancias de A3 High y Edge (GPUDirect-TCPX)
Crea tus instancias de A3 High y Edge con la imagen de Container-Optimized OS cos-121-lts o posterior.
COS
Para probar el rendimiento de la red con GPUDirect-TCPX, debes crear al menos dos VMs A3 High o Edge. Crea cada VM con la imagen de Container-Optimized OS cos-121-lts o posterior y especifica las redes de VPC que creaste en el paso anterior.
Las VMs deben usar la interfaz de red de NIC virtual de Google (gVNIC). Para las VMs de A3 High o Edge, debes usar la versión 1.4.0rc3 o una posterior del controlador gVNIC. Esta versión del controlador está disponible en Container-Optimized OS. La primera NIC virtual se usa como la principal para las redes y el almacenamiento generales, las otras cuatro NIC virtuales están alineadas con NUMA y dos de las ocho GPU usan el mismo interruptor de PCIe.
Según el modelo de aprovisionamiento que deseas usar para crear tu VM, selecciona una de las siguientes opciones:
Estándar
gcloud compute instances create VM_NAME \
--project=PROJECT_ID \
--zone=ZONE \
--machine-type=MACHINE_TYPE \
--maintenance-policy=TERMINATE --restart-on-failure \
--image-family=cos-121-lts \
--image-project=cos-cloud \
--boot-disk-size=BOOT_DISK_SIZE \
--metadata=cos-update-strategy=update_disabled \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address
Reemplaza lo siguiente:
VM_NAME: El nombre de tu VM.PROJECT_ID: el ID de tu proyecto.ZONE: Una zona que admite tu tipo de máquina.MACHINE_TYPE: Es el tipo de máquina de la VM. Especificaa3-highgpu-8goa3-edgegpu-8g.BOOT_DISK_SIZE: Es el tamaño del disco de arranque en GB (por ejemplo,50).NETWORK_NAME_PREFIX: Es el prefijo del nombre que se usará para las subredes y las redes de VPC.
Spot
gcloud compute instances create VM_NAME \
--project=PROJECT_ID \
--zone=ZONE \
--machine-type=MACHINE_TYPE \
--maintenance-policy=TERMINATE --restart-on-failure \
--image-family=cos-121-lts \
--image-project=cos-cloud \
--boot-disk-size=BOOT_DISK_SIZE \
--metadata=cos-update-strategy=update_disabled \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address \
--provisioning-model=SPOT \
--instance-termination-action=TERMINATION_ACTION
Reemplaza lo siguiente:
VM_NAME: El nombre de tu VM.PROJECT_ID: el ID de tu proyecto.ZONE: Una zona que admite tu tipo de máquina.MACHINE_TYPE: Es el tipo de máquina de la VM. Especificaa3-highgpu-8goa3-edgegpu-8g.BOOT_DISK_SIZE: Es el tamaño del disco de arranque en GB (por ejemplo,50).NETWORK_NAME_PREFIX: Es el prefijo del nombre que se usará para las subredes y las redes de VPC.TERMINATION_ACTION: Indica si se debe detener o borrar la VM cuando se interrumpa. Especifica uno de los siguientes valores:- Para detener la VM, haz lo siguiente:
STOP - Para borrar la VM, haz lo siguiente:
DELETE
- Para detener la VM, haz lo siguiente:
Inicio flexible
gcloud compute instances create VM_NAME \
--project=PROJECT_ID \
--zone=ZONE \
--machine-type=MACHINE_TYPE \
--maintenance-policy=TERMINATE --restart-on-failure \
--image-family=cos-121-lts \
--image-project=cos-cloud \
--boot-disk-size=BOOT_DISK_SIZE \
--metadata=cos-update-strategy=update_disabled \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address \
--provisioning-model=FLEX_START \
--instance-termination-action=TERMINATION_ACTION \
--max-run-duration=RUN_DURATION \
--request-valid-for-duration=VALID_FOR_DURATION \
--reservation-affinity=none
Reemplaza lo siguiente:
VM_NAME: El nombre de tu VM.PROJECT_ID: el ID de tu proyecto.ZONE: Una zona que admite tu tipo de máquina.MACHINE_TYPE: Es el tipo de máquina de la VM. Especificaa3-highgpu-8goa3-edgegpu-8g.BOOT_DISK_SIZE: Es el tamaño del disco de arranque en GB (por ejemplo,50).NETWORK_NAME_PREFIX: Es el prefijo del nombre que se usará para las subredes y las redes de VPC.TERMINATION_ACTION: Indica si se debe detener o borrar la VM al final de su duración de ejecución. Especifica uno de los siguientes valores:- Para detener la VM, haz lo siguiente:
STOP - Para borrar la VM, haz lo siguiente:
DELETE
- Para detener la VM, haz lo siguiente:
RUN_DURATION: Es el tiempo máximo que se ejecuta la VM antes de que Compute Engine la detenga o la borre. Debes darle formato al valor como la cantidad de días, horas, minutos o segundos, seguidos ded,h,mys, respectivamente. Por ejemplo, un valor de30mdefine un tiempo de 30 minutos, y un valor de1h2m3sdefine un tiempo de una hora, dos minutos y tres segundos. Puedes especificar un valor entre 10 minutos y siete días.VALID_FOR_DURATION: Es el tiempo máximo que se debe esperar para aprovisionar los recursos solicitados. Debes darle formato al valor como la cantidad de días, horas, minutos o segundos, seguidos ded,h,mys, respectivamente. Según los requisitos zonales de tu carga de trabajo, especifica una de las siguientes duraciones para aumentar las probabilidades de que se complete tu solicitud de creación de VM:- Si tu carga de trabajo requiere que crees la VM en una zona específica, especifica una duración entre 90 segundos (
90s) y dos horas (2h). Las duraciones más largas te brindan más posibilidades de obtener recursos. - Si la VM puede ejecutarse en cualquier zona de la región, especifica una duración de cero segundos (
0s). Este valor especifica que Compute Engine solo asigna recursos si están disponibles de inmediato. Si la solicitud de creación falla porque los recursos no están disponibles, vuelve a intentarlo en otra zona.
- Si tu carga de trabajo requiere que crees la VM en una zona específica, especifica una duración entre 90 segundos (
Con reserva
gcloud compute instances create VM_NAME \
--project=PROJECT_ID \
--zone=ZONE \
--machine-type=MACHINE_TYPE \
--maintenance-policy=TERMINATE --restart-on-failure \
--image-family=cos-121-lts \
--image-project=cos-cloud \
--boot-disk-size=BOOT_DISK_SIZE \
--metadata=cos-update-strategy=update_disabled \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
--network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address \
--provisioning-model=RESERVATION_BOUND \
--instance-termination-action=TERMINATION_ACTION \
--reservation-affinity=specific \
--reservation=RESERVATION_URL
Reemplaza lo siguiente:
VM_NAME: El nombre de tu VM.PROJECT_ID: el ID de tu proyecto.ZONE: Una zona que admite tu tipo de máquina.MACHINE_TYPE: Es el tipo de máquina de la VM. Especificaa3-highgpu-8goa3-edgegpu-8g.BOOT_DISK_SIZE: Es el tamaño del disco de arranque en GB (por ejemplo,50).NETWORK_NAME_PREFIX: Es el prefijo del nombre que se usará para las subredes y las redes de VPC.TERMINATION_ACTION: Indica si se debe detener o borrar la VM al final del período de reserva. Especifica uno de los siguientes valores:- Para detener la VM, haz lo siguiente:
STOP - Para borrar la VM, haz lo siguiente:
DELETE
- Para detener la VM, haz lo siguiente:
RESERVATION_URL: Es la URL de la reserva que deseas consumir. Especifica uno de los siguientes valores:- Si creaste la reserva en el mismo proyecto, haz lo siguiente:
example-reservation - Si la reserva está en otro proyecto y
tu proyecto puede usarla, ingresa
projects/PROJECT_ID/reservations/example-reservation.
- Si creaste la reserva en el mismo proyecto, haz lo siguiente:
Instalar los controladores de GPU.
En cada VM de A3 High o Edge, completa los siguientes pasos.
- Instala los controladores de GPU de NVIDIA ejecutando el siguiente comando:
sudo cos-extensions install gpu -- --version=latest
- Vuelve a activar la ruta ejecutando el siguiente comando:
sudo mount --bind /var/lib/nvidia /var/lib/nvidia sudo mount -o remount,exec /var/lib/nvidia
Otorga a las NIC acceso a las GPU
En cada VM de A3 High o Edge, otorga a las NIC acceso a las GPU completando los siguientes pasos:
- Configura el registro.
- Si usas Container Registry, ejecuta el siguiente comando:
docker-credential-gcr configure-docker
- Si usas Artifact Registry, ejecuta el siguiente comando:
docker-credential-gcr configure-docker --registries us-docker.pkg.dev
- Si usas Container Registry, ejecuta el siguiente comando:
- Configura el administrador de ruta de recepción de datos. Un servicio de administración,
GPUDirect-TCPX Receive Data Path Manager, debe ejecutarse
junto con las aplicaciones que usan GPUDirect-TCPX. Para iniciar el
servicio en cada VM de Container-Optimized OS, ejecuta el siguiente comando:
docker run --pull=always --rm \ --name receive-datapath-manager \ --detach \ --privileged \ --cap-add=NET_ADMIN --network=host \ --volume /var/lib/nvidia/lib64:/usr/local/nvidia/lib64 \ --device /dev/nvidia0:/dev/nvidia0 \ --device /dev/nvidia1:/dev/nvidia1 \ --device /dev/nvidia2:/dev/nvidia2 \ --device /dev/nvidia3:/dev/nvidia3 \ --device /dev/nvidia4:/dev/nvidia4 \ --device /dev/nvidia5:/dev/nvidia5 \ --device /dev/nvidia6:/dev/nvidia6 \ --device /dev/nvidia7:/dev/nvidia7 \ --device /dev/nvidia-uvm:/dev/nvidia-uvm \ --device /dev/nvidiactl:/dev/nvidiactl \ --env LD_LIBRARY_PATH=/usr/local/nvidia/lib64 \ --volume /run/tcpx:/run/tcpx \ --entrypoint /tcpgpudmarxd/build/app/tcpgpudmarxd \ us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpx/tcpgpudmarxd \ --gpu_nic_preset a3vm --gpu_shmem_type fd --uds_path "/run/tcpx" --setup_param "--verbose 128 2 0" - Verifica que se haya iniciado el contenedor
receive-datapath-manager.docker container logs --follow receive-datapath-manager
El resultado debe parecerse al siguiente:
I0000 00:00:1687813309.406064 1 rx_rule_manager.cc:174] Rx Rule Manager server(s) started...
- Para dejar de ver los registros, presiona
ctrl-c. - Instala las reglas de las tablas de IP.
sudo iptables -I INPUT -p tcp -m tcp -j ACCEPT
- Configura la biblioteca de comunicación colectiva de NVIDIA (NCCL)
y el complemento GPUDirect-TCPX.
Se requiere una versión específica de la biblioteca NCCL y la combinación de objeto binario del complemento GPUDirect-TCPX para usar NCCL con la compatibilidad con GPUDirect-TCPX. Google Cloud proporcionó paquetes que cumplen con este requisito.
Para instalar el paquete Google Cloud , ejecuta el siguiente comando:
docker run --rm -v /var/lib:/var/lib us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpx/nccl-plugin-gpudirecttcpx install --install-nccl sudo mount --bind /var/lib/tcpx /var/lib/tcpx sudo mount -o remount,exec /var/lib/tcpx
Si este comando se ejecuta de forma correcta, los archivos
libnccl-net.soylibnccl.sose colocan en el directorio/var/lib/tcpx/lib64.
Ejecuta pruebas
En cada VM de A3 High o Edge, ejecuta una prueba de NCCL completando los siguientes pasos:
- Inicia el contenedor.
#!/bin/bash function run_tcpx_container() { docker run \ -u 0 --network=host \ --cap-add=IPC_LOCK \ --userns=host \ --volume /run/tcpx:/tmp \ --volume /var/lib/nvidia/lib64:/usr/local/nvidia/lib64 \ --volume /var/lib/tcpx/lib64:/usr/local/tcpx/lib64 \ --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 \ --device /dev/nvidia0:/dev/nvidia0 \ --device /dev/nvidia1:/dev/nvidia1 \ --device /dev/nvidia2:/dev/nvidia2 \ --device /dev/nvidia3:/dev/nvidia3 \ --device /dev/nvidia4:/dev/nvidia4 \ --device /dev/nvidia5:/dev/nvidia5 \ --device /dev/nvidia6:/dev/nvidia6 \ --device /dev/nvidia7:/dev/nvidia7 \ --device /dev/nvidia-uvm:/dev/nvidia-uvm \ --device /dev/nvidiactl:/dev/nvidiactl \ --env LD_LIBRARY_PATH=/usr/local/nvidia/lib64:/usr/local/tcpx/lib64 \ "$@" }El comando anterior completa lo siguiente:
- Activa los dispositivos NVIDIA de
/deven el contenedor. - Configura el espacio de nombres de red del contenedor en el host.
- Configura el espacio de nombres del usuario del contenedor que alojarás.
- Agrega
CAP_IPC_LOCKa las capacidades del contenedor. - Activa
/tmpdel host en/tmpdel contenedor. - Activa la ruta de instalación del complemento NCCL y GPUDirect-TCPX NCCL en
el contenedor y agrega la ruta de acceso activada a
LD_LIBRARY_PATH.
- Activa los dispositivos NVIDIA de
- Después de iniciar el contenedor, las aplicaciones que usan NCCL pueden ejecutarse desde
el contenedor. Por ejemplo, para ejecutar la prueba
run-allgather, completa los siguientes pasos:- En cada VM A3 High o Edge, ejecuta lo siguiente:
$ run_tcpx_container -it --rm us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpx/nccl-plugin-gpudirecttcpx shell
- En una VM, ejecuta los siguientes comandos:
- Configura la conexión entre las VMs. Reemplaza
VM-0yVM-1por los nombres de cada VM./scripts/init_ssh.sh VM-0 VM-1 pushd /scripts && /scripts/gen_hostfiles.sh VM-0 VM-1; popd
Esto crea un directorio
/scripts/hostfiles2en cada VM. - Ejecuta la secuencia de comandos.
/scripts/run-allgather.sh 8 eth1,eth2,eth3,eth4 1M 512M 2
- Configura la conexión entre las VMs. Reemplaza
La secuencia de comandos
run-allgathertarda unos dos minutos en ejecutarse. Al final de los registros, verás los resultadosall-gather.Si ves la siguiente línea en tus registros NCCL, esto verifica que GPUGPU-TCPX se inicializó de forma correcta.
NCCL INFO NET/GPUDirectTCPX ver. 3.1.1.
- En cada VM A3 High o Edge, ejecuta lo siguiente:
GPU de varias instancias
Una GPU de instancias múltiples particiona una sola GPU de NVIDIA H100 dentro de la misma VM en hasta siete instancias de GPU independientes. Se ejecutan de manera simultánea, cada uno con su propio procesador de memoria, caché y transmisión. Esta configuración permite que la GPU NVIDIA H100 entregue una calidad de servicio (QoS) coherente hasta 7 veces mayor en comparación con los modelos de GPU anteriores.
Puedes crear hasta siete GPU de varias instancias. Con las GPU H100 de 80 GB, cada GPU de instancias múltiples tiene asignados 10 GB de memoria.
Para obtener más información sobre el uso de GPU de varias instancias, consulta Guía del usuario de GPU de varias instancias de NVIDIA.
Para crear GPU de varias instancias, completa los siguientes pasos:
Crea tus instancias A3 Mega, A3 High o A3 Edge.
Instala los controladores de GPU.
Habilita el modo MIG. Para obtener instrucciones, consulta Habilita el MIG.
Configura tus particiones de GPU. Para obtener instrucciones, consulta Cómo trabajar con particiones de GPU.