Cómo Configurar NVLink en un Servidor Dedicado
NVLink es el interconector propietario de alta velocidad entre GPU de NVIDIA que reemplaza el bus PCIe como ruta de comunicación principal entre GPU — y en arquitecturas selectas, entre GPU y CPU. Ofrece un ancho de banda bidireccional de hasta 600 GB/s por enlace en hardware de generación Hopper, en comparación con un máximo teórico de aproximadamente 64 GB/s en PCIe 5.0 x16. Para cargas de trabajo como el entrenamiento de modelos de lenguaje de gran escala, simulación de dinámica molecular o inferencia multi-GPU, esta diferencia no es marginal — es arquitectónica.
Esta guía proporciona un recorrido completo de nivel productivo para configurar NVLink en un servidor dedicado: desde la instalación física del hardware y la configuración del stack de controladores hasta la verificación de topología, la integración a nivel de aplicación y el monitoreo continuo del rendimiento.
Qué es realmente NVLink — y qué no es
NVLink no es simplemente un cable más rápido. Es un tejido de interconexión coherente punto a punto integrado directamente en el die de la GPU. Cada carril NVLink transporta datos en ambas direcciones simultáneamente mediante un protocolo de señalización diferencial serializada. Múltiples carriles se agrupan en un único enlace lógico, y múltiples enlaces pueden conectar el mismo par de GPU para un ancho de banda aditivo.
De manera crítica, NVLink admite acceso a memoria coherente con caché. Esto significa que la GPU A puede leer desde la memoria framebuffer de la GPU B sin pasar los datos por la RAM del host o el controlador de memoria de la CPU. Esta propiedad es la que habilita el modelo de programación de “memoria unificada” en CUDA — un único espacio de direcciones virtuales que abarca múltiples memorias físicas de GPU.
Lo que NVLink no es: no es un reemplazo de NVSwitch en sistemas a gran escala. En configuraciones con más de dos GPU, NVIDIA utiliza NVSwitch — un chip de conmutación crossbar dedicado — para proporcionar conectividad NVLink de todos a todos. El DGX A100, por ejemplo, utiliza seis chips NVSwitch para dar a cada una de sus ocho GPU A100 el ancho de banda NVLink completo hacia cada otra GPU simultáneamente. Si está construyendo una estación de trabajo de dos GPU o un servidor de cuatro GPU con un puente compatible, está trabajando con conexiones NVLink directas. Si trabaja con ocho o más GPU, casi con certeza se encuentra en territorio NVSwitch.
Ancho de banda NVLink por generación de GPU
Comprender el límite de ancho de banda de su hardware específico es esencial antes de realizar benchmarks o planificar la capacidad.
| Generación de GPU | Versión NVLink | Enlaces por GPU | Ancho de banda bidireccional total |
|---|---|---|---|
| Volta (V100) | NVLink 2.0 | 6 | 300 GB/s |
| Turing (RTX 2080 Ti) | NVLink 2.0 | 2 | 100 GB/s |
| Ampere (A100 SXM) | NVLink 3.0 | 12 | 600 GB/s |
| Ampere (RTX 3090) | NVLink 3.0 | 2 | 112.5 GB/s |
| Ada Lovelace (RTX 4090) | NVLink 4.0 | 2 | 112.5 GB/s |
| Hopper (H100 SXM) | NVLink 4.0 | 18 | 900 GB/s |
| Blackwell (B200) | NVLink 5.0 | 18 | 1800 GB/s |
PCIe 4.0 x16 ofrece aproximadamente 32 GB/s bidireccional. PCIe 5.0 x16 duplica eso a aproximadamente 64 GB/s. Incluso un puente NVLink de consumo de dos enlaces en tarjetas RTX 3090 proporciona casi el doble del ancho de banda de PCIe 5.0 — y las GPU de centros de datos están en una categoría completamente diferente.
Requisitos previos y compatibilidad de hardware
Antes de tocar un solo archivo de configuración, confirme lo siguiente:
Compatibilidad de GPU. NVLink no está disponible en todas las GPU de NVIDIA. Las tarjetas de consumo por debajo de la RTX 2080 Ti no lo admiten. La RTX 4080 no admite NVLink a pesar de ser una tarjeta de gama alta — solo la RTX 4090 lo hace en la generación Ada. Verifique siempre con la hoja de especificaciones oficial de GPU de NVIDIA para su SKU exacto.
Puente NVLink. Para GPU de consumo y prosumer, se requiere un conector de puente NVLink físico. Estos puentes son específicos de cada generación — un puente Turing no encajará en una tarjeta Ampere. Las GPU de centros de datos (A100, H100) en formato SXM utilizan una placa mezzanine propietaria y no usan un puente discreto.
Placa base y espaciado de ranuras PCIe. El puente NVLink requiere que las dos GPU estén en ranuras PCIe x16 adyacentes con una separación física específica. La mayoría de los puentes de consumo abarcan dos ranuras. Algunos puentes de gama alta abarcan tres ranuras. Verifique el paso de ranuras de su placa base con las dimensiones del puente antes de comprarlo.
Configuración del BIOS. Habilite “Above 4G Decoding” y “Resizable BAR” (también llamado Smart Access Memory en plataformas AMD) en UEFI. Algunos sistemas también requieren deshabilitar CSM (Compatibility Support Module) para permitir la asignación completa del espacio de direcciones PCIe para múltiples GPU.
Suministro de energía. Dos GPU de gama alta bajo carga completa acelerada por NVLink pueden consumir 600W o más en conjunto. Asegúrese de que su PSU tenga suficiente margen y que los conectores de alimentación de la GPU estén en rieles separados donde sea posible.
Sistema operativo. Esta guía cubre Linux (Ubuntu 22.04 LTS / Debian 12) como objetivo principal, que es el entorno estándar para cargas de trabajo de IA y HPC en Servidores Dedicados. Los pasos específicos de Windows se indican donde difieren significativamente.
Paso 1: Instalación física de GPU y puente
Apague completamente el servidor y desconéctelo de la corriente eléctrica. Conéctese a tierra usando una pulsera antiestática antes de manipular cualquier tarjeta PCIe.
- Retire las cubiertas de las ranuras PCIe para las ranuras objetivo.
- Inserte la primera GPU en la ranura x16 principal (normalmente la más cercana a la CPU).
- Inserte la segunda GPU en la ranura x16 adyacente, asegurándose de que la separación física coincida con su puente NVLink.
- Asiente ambas tarjetas firmemente hasta que los clips de retención PCIe hagan clic.
- Conecte todos los conectores de alimentación PCIe requeridos del PSU a cada GPU. No use conectores en cadena para tarjetas de alto TDP — use cables separados del PSU.
- Alinee el puente NVLink sobre las almohadillas de conector dorado en el borde superior de ambas GPU. Presione hacia abajo de manera firme y uniforme hasta que quede completamente asentado. Un puente parcialmente asentado hará que el enlace falle silenciosamente o funcione con un ancho reducido.
- Si sus GPU admiten puentes NVLink duales (por ejemplo, la RTX 2080 Ti tiene dos conectores NVLink), instale ambos puentes para el máximo ancho de banda.
- Cierre el chasis y reconecte la alimentación.
Paso 2: Configuración de BIOS y UEFI
Arranque en la configuración UEFI (normalmente Del o F2 durante el POST).
- Habilite Above 4G Decoding.
- Habilite Resizable BAR si es compatible.
- Configure la velocidad del enlace PCIe en Auto o Gen4/Gen5 según corresponda a su hardware.
- Deshabilite CSM si su SO arranca mediante UEFI.
- Guarde y salga.
Paso 3: Instalar controladores NVIDIA en Linux
NVIDIA proporciona múltiples rutas de instalación. El método del gestor de paquetes es preferido para entornos de servidor porque se integra con DKMS (Dynamic Kernel Module Support), que reconstruye automáticamente el módulo del kernel tras las actualizaciones del kernel.
Primero, agregue el repositorio de paquetes de NVIDIA e instale el controlador:
sudo apt-get update
sudo apt-get install -y software-properties-common
sudo add-apt-repository -y ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install -y nvidia-driver-545 nvidia-dkms-545Reemplace 545 con la versión de rama de producción más reciente disponible para su GPU. Puede consultar las versiones disponibles con:
apt-cache search nvidia-driver | grep "^nvidia-driver"Después de la instalación, reinicie:
sudo rebootTras el reinicio, verifique que el controlador se cargó correctamente:
nvidia-smiLa salida debería listar ambas GPU con su versión de controlador, compatibilidad de versión CUDA y estado de energía actual. Si solo aparece una GPU, es posible que la segunda tarjeta no esté correctamente asentada o tenga un problema de suministro de energía.
Un error crítico a evitar: Si tiene Nouveau (el controlador NVIDIA de código abierto) cargado, entrará en conflicto con el controlador propietario. Inclúyalo explícitamente en la lista negra:
echo -e "blacklist nouveaunoptions nouveau modeset=0" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf
sudo update-initramfs -u
sudo rebootPaso 4: Instalar el kit de herramientas CUDA
La capacidad completa de NVLink — en particular el acceso a memoria entre pares y las comunicaciones colectivas — requiere el kit de herramientas CUDA. Instálelo a través del repositorio CUDA de NVIDIA para una coincidencia de versiones más confiable:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get install -y cuda-toolkit-12-4Agregue los binarios y bibliotecas CUDA a su entorno de shell:
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrcVerifique la instalación:
nvcc --versionDebería ver una salida que identifique la versión del compilador CUDA. También ejecute la muestra CUDA deviceQuery si tiene las muestras instaladas — enumerará ambas GPU e informará los indicadores de capacidad NVLink.
Paso 5: Verificar la topología y el estado de NVLink
Este es el paso más importante desde el punto de vista diagnóstico. nvidia-smi proporciona varios subcomandos específicamente para la inspección de NVLink.
Verifique la matriz de topología del sistema:
nvidia-smi topo -mLa salida es una matriz que muestra el tipo de interconexión entre cada par de dispositivos en el sistema. Busque etiquetas NV# entre sus GPU, donde # es el número de puentes NVLink que los conectan. Una etiqueta de NV2 significa que hay dos puentes NVLink activos. Una etiqueta de PIX o PHB significa que las GPU se están comunicando a través de PCIe — NVLink no está activo.
Ejemplo de salida para un sistema de doble GPU correctamente configurado:
GPU0 GPU1 CPU Affinity NUMA Affinity
GPU0 X NV2 0-23 0
GPU1 NV2 X 0-23 0Verifique el estado del enlace NVLink por GPU:
nvidia-smi nvlink --status -i 0Esto muestra el estado de cada puerto NVLink en la GPU 0. Los enlaces activos mostrarán el estado Active y la velocidad negociada.
Verifique los contadores de errores NVLink:
nvidia-smi nvlink --errorcounters -i 0Los recuentos de errores de repetición o recuperación distintos de cero indican un problema en la capa física — un puente parcialmente asentado, un conector dañado o problemas de integridad de señal por un suministro de energía inadecuado.
Monitoree el rendimiento de NVLink en tiempo real:
nvidia-smi nvlink -sEsto imprime contadores de rendimiento acumulativos. Para el monitoreo de delta en tiempo real, combínelo con watch:
watch -n 1 nvidia-smi nvlink -sPaso 6: Habilitar y verificar el acceso a memoria entre pares
El acceso a memoria coherente de NVLink requiere que el acceso entre pares (P2P) esté habilitado a nivel CUDA. Puede verificarlo mediante programación:
cat << 'EOF' > check_p2p.py
import subprocess
result = subprocess.run(['nvidia-smi', 'topo', '-p2p', 'r'], capture_output=True, text=True)
print(result.stdout)
EOF
python3 check_p2p.pyO use un programa CUDA C con cudaDeviceCanAccessPeer(). Para una validación rápida, las muestras CUDA simpleP2P y p2pBandwidthLatencyTest son las herramientas definitivas:
cd /usr/local/cuda/samples/1_Utilities/p2pBandwidthLatencyTest
make
./p2pBandwidthLatencyTestLa salida mostrará el ancho de banda bidireccional entre pares de GPU. A través de NVLink, debería ver valores consistentes con la tabla de ancho de banda anterior. Si ve ancho de banda a nivel PCIe (~10–30 GB/s), P2P sobre NVLink no está activo — verifique que el puente esté completamente asentado y que ninguna configuración de IOMMU esté bloqueando el acceso entre pares.
Consideración sobre IOMMU: En plataformas AMD EPYC y algunos Intel Xeon, IOMMU puede estar habilitado de forma predeterminada y puede bloquear el acceso P2P entre GPU. Si P2P no funciona, agregue iommu=pt (modo de paso directo) o amd_iommu=on iommu=pt a la línea de comandos del kernel en /etc/default/grub:
sudo nano /etc/default/grub
# Add iommu=pt to GRUB_CMDLINE_LINUX_DEFAULT
sudo update-grub
sudo rebootPaso 7: Configurar frameworks de aprendizaje profundo para usar NVLink
Los frameworks modernos detectan NVLink automáticamente a través de NCCL (NVIDIA Collective Communications Library), pero comprender cómo verificar y ajustar este comportamiento es esencial para implementaciones en producción.
Variables de entorno NCCL para la optimización de NVLink:
export NCCL_DEBUG=INFO
export NCCL_P2P_LEVEL=NVL # Force NVLink for P2P transfers
export NCCL_SHM_DISABLE=0 # Keep shared memory enabled
export NCCL_SOCKET_IFNAME=eth0 # Specify network interface for multi-nodeConfigurar NCCL_DEBUG=INFO hace que NCCL imprima su detección de topología en tiempo de ejecución. Verá líneas como [0] NCCL INFO Channel 00 : 0[...] -> 1[...] via NVL confirmando que NVLink se está utilizando para las transferencias entre GPU.
Verificación multi-GPU con PyTorch:
import torch
print(f"CUDA available: {torch.cuda.is_available()}")
print(f"GPU count: {torch.cuda.device_count()}")
for i in range(torch.cuda.device_count()):
for j in range(torch.cuda.device_count()):
if i != j:
can_access = torch.cuda.can_device_access_peer(i, j)
print(f"GPU {i} -> GPU {j} P2P access: {can_access}")Si can_device_access_peer devuelve True para ambas direcciones, DataParallel y DistributedDataParallel de PyTorch usarán NVLink para la sincronización de gradientes automáticamente.
Verificación multi-GPU con TensorFlow:
import tensorflow as tf
gpus = tf.config.list_physical_devices('GPU')
print(f"Detected GPUs: {len(gpus)}")
for gpu in gpus:
print(gpu)
# Enable memory growth to prevent TF from allocating all VRAM at startup
for gpu in gpus:
tf.config.experimental.set_memory_growth(gpu, True)TensorFlow usa NCCL para operaciones colectivas cuando se ejecuta con MirroredStrategy, por lo que las variables de entorno NCCL anteriores se aplican igualmente.
Paso 8: Benchmark del rendimiento de NVLink
Antes de comprometer cargas de trabajo de producción, establezca una línea base de rendimiento. Esto también sirve como prueba de regresión después de actualizaciones de controladores o cambios de hardware.
Prueba de ancho de banda all-reduce de NCCL (el benchmark más representativo para el entrenamiento distribuido):
git clone https://github.com/NVIDIA/nccl-tests.git
cd nccl-tests
make CUDA_HOME=/usr/local/cuda
./build/all_reduce_perf -b 8 -e 512M -f 2 -g 2El indicador -g 2 especifica dos GPU. Observe la columna busbw — este es el ancho de banda efectivo del bus. A través de NVLink en tarjetas RTX 3090, debería ver valores que se aproximan a 100 GB/s. A través de PCIe, espere 20–30 GB/s.
Benchmark GEMM de cuBLAS para cargas de trabajo limitadas por cómputo:
/usr/local/cuda/extras/demo_suite/bandwidthTest --mode=shmooPaso 9: Monitoreo continuo y alertas
Para entornos de producción, nvidia-smi en modo daemon o la integración con Prometheus a través de dcgm-exporter es el enfoque recomendado.
Instale DCGM (Data Center GPU Manager):
sudo apt-get install -y datacenter-gpu-manager
sudo systemctl enable nvidia-dcgm
sudo systemctl start nvidia-dcgmConsulte métricas específicas de NVLink a través de DCGM:
dcgmi dmon -e 1011,1012,1013,1014Los IDs de campo 1011–1014 corresponden a los contadores de ancho de banda NVLink (TX/RX por enlace). Estos pueden exportarse a Prometheus y visualizarse en Grafana para el análisis de tendencias a largo plazo.
Para un monitoreo más ligero, un bucle simple de nvidia-smi captura lo esencial:
nvidia-smi dmon -s pucvmet -d 5Los indicadores -s pucvmet habilitan el reporte de energía, utilización, reloj, VRAM, ancho de banda de memoria, ECC y temperatura a intervalos de 5 segundos.
NVLink vs. PCIe vs. NVSwitch: cuándo aplica cada arquitectura
| Escenario | Interconexión recomendada | Justificación |
|---|---|---|
| Estación de trabajo de consumo con 2 GPU | Puente NVLink | Rentable, 2x ancho de banda PCIe |
| Servidor prosumer de 2-4 GPU | Puente NVLink (si es compatible) | Ganancia significativa de ancho de banda para entrenamiento |
| Nodo de centro de datos con 8 GPU | Tejido NVSwitch | Conectividad de todos a todos, sin cuello de botella |
| Entrenamiento distribuido multi-nodo | InfiniBand + NVLink | NVLink dentro del nodo, IB entre nodos |
| Servicio de inferencia (crítico en latencia) | NVLink | Reduce la latencia de sincronización entre GPU |
| Transcodificación de video (paralelismo embarazoso) | PCIe es suficiente | No se necesita comunicación entre GPU |
Modos de fallo comunes y solución de problemas
NVLink no detectado tras la instalación física. Ejecute nvidia-smi topo -m y verifique si aparece PIX en lugar de NV#. Vuelva a asentar el puente. Verifique que ambas GPU estén en el mismo complejo raíz PCIe — las GPU en diferentes zócalos de CPU conectadas mediante QPI/UPI no formarán un par NVLink incluso con un puente instalado.
El ancho de banda P2P coincide con las velocidades PCIe a pesar del puente NVLink. IOMMU casi con certeza está bloqueando el acceso entre pares. Aplique el parámetro de kernel iommu=pt como se describe anteriormente.
Errores NVLink acumulándose en nvidia-smi nvlink --errorcounters. Problema en la capa física. Inspeccione las almohadillas del conector del puente en busca de suciedad o daños. Intente volver a asentar el puente. Si los errores persisten, el propio puente puede estar defectuoso.
NCCL no usa NVLink a pesar de que la topología muestra NV2. Configure NCCL_P2P_LEVEL=NVL explícitamente. También verifique la compatibilidad de versiones de NCCL con su versión de CUDA — las incompatibilidades hacen que NCCL recurra al transporte de memoria compartida o socket.
La instalación del controlador falla con errores DKMS. Es posible que los encabezados del kernel para su kernel en ejecución no estén instalados. Corrija con:
sudo apt-get install -y linux-headers-$(uname -r)
sudo dkms autoinstallElegir la infraestructura de servidor adecuada para cargas de trabajo NVLink
La configuración de NVLink solo es tan efectiva como la plataforma de servidor subyacente. Varios factores de infraestructura afectan directamente el rendimiento de NVLink en la práctica:
Topología PCIe. En plataformas EPYC o Xeon de doble zócalo, los carriles PCIe se distribuyen entre ambas CPU. Las GPU conectadas a diferentes CPU se comunican a través del tejido entre zócalos (Infinity Fabric o UPI), lo que agrega latencia y reduce el ancho de banda efectivo para las transferencias GPU a GPU que deben cruzar el límite del zócalo. Siempre que sea posible, instale las GPU emparejadas con NVLink en ranuras PCIe conectadas al mismo zócalo de CPU.
Ancho de banda de memoria. Incluso con NVLink manejando las transferencias GPU a GPU, el subsistema de memoria de la CPU sigue siendo el cuello de botella para la ingesta de datos. Las plataformas equipadas con DDR5 de alto ancho de banda o HBM reducen el tiempo dedicado a preparar los datos antes de que lleguen a la GPU.
Rendimiento de almacenamiento. Los grandes puntos de control de modelos y los conjuntos de datos de entrenamiento requieren almacenamiento rápido. Los SSD NVMe con velocidades de lectura secuencial superiores a 7 GB/s evitan que la capa de almacenamiento se convierta en el cuello de botella durante la carga de datos.
Refrigeración. Dos GPU de alto TDP bajo carga sostenida acelerada por NVLink generan un calor considerable. Asegure un flujo de aire adecuado o capacidad de refrigeración líquida. El throttling térmico reducirá las velocidades de reloj de la GPU y anulará la ventaja de ancho de banda que proporciona NVLink.
Para equipos que ejecutan entrenamiento de IA multi-GPU o simulaciones HPC, los Servidores Dedicados con almacenamiento NVMe y acceso root proporcionan el control de hardware necesario para implementar la configuración completa descrita en esta guía. Para cargas de trabajo específicamente aceleradas por GPU, el Alojamiento GPU ofrece entornos preconfigurados con controladores NVIDIA ya instalados. Los equipos que necesitan una base flexible para entornos CUDA personalizados también pueden encontrar útil el Alojamiento VPS para desarrollo y pruebas antes de escalar a hardware dedicado.
Conclusiones clave y lista de verificación de decisiones
Antes de implementar NVLink en producción, verifique cada elemento:
- Hardware confirmado: Ambas GPU están en la lista de compatibilidad NVLink de NVIDIA para su SKU específico, no solo la familia de productos.
- Generación del puente coincidente: La generación del puente NVLink coincide con la generación de la GPU (puente Turing para GPU Turing, puente Ampere para GPU Ampere).
- Instalación física verificada:
nvidia-smi topo -mmuestraNV1oNV2entre pares de GPU, noPIXoPHB. - Acceso P2P confirmado:
p2pBandwidthLatencyTestreporta ancho de banda a nivel NVLink (no a nivel PCIe). - IOMMU abordado: Si se ejecuta en EPYC o Xeon,
iommu=ptestá configurado en los parámetros del kernel. - Transporte NCCL confirmado: La salida de
NCCL_DEBUG=INFOmuestravia NVLpara los canales entre GPU. - Contadores de errores limpios:
nvidia-smi nvlink --errorcountersmuestra cero errores de repetición y recuperación después de una prueba de quemado. - Monitoreo activo: DCGM o
nvidia-smi dmonestá registrando el ancho de banda NVLink y las métricas de errores en un almacén persistente. - Margen térmico confirmado: Ambas GPU mantienen las velocidades de reloj objetivo bajo carga completa sin throttling térmico.
- Versiones de controlador y CUDA fijadas: Los entornos de producción utilizan versiones de controlador fijadas gestionadas a través de DKMS para evitar que actualizaciones no deseadas rompan la configuración.
Preguntas frecuentes
¿NVLink funciona en todas las tarjetas NVIDIA RTX?
No. La compatibilidad con NVLink varía significativamente incluso dentro de la línea RTX. La RTX 4080, por ejemplo, no admite NVLink a pesar de ser una tarjeta Ada Lovelace de gama alta. Solo la RTX 4090 admite NVLink en esa generación. Verifique siempre con la hoja de datos de la GPU específica, no con la familia de productos.
¿Se puede usar NVLink entre diferentes modelos de GPU?
En general, no. NVLink requiere que ambas GPU sean del mismo modelo y generación. NVIDIA no admite oficialmente configuraciones NVLink de modelos mixtos, y el stack de controladores no formará una relación NVLink entre pares entre GPU distintas incluso si los conectores físicos son compatibles.
¿Qué sucede si se retira el puente NVLink mientras el sistema está en funcionamiento?
El sistema no se bloqueará inmediatamente, pero cualquier transferencia P2P activa a través de NVLink fallará, lo que normalmente hará que la aplicación CUDA en ejecución genere un error CUDA y termine. Las GPU recurrirán a PCIe para las operaciones posteriores. La extracción en caliente del puente no está admitida y supone un riesgo de daño físico en las almohadillas del conector.
¿NVLink es utilizado automáticamente por PyTorch y TensorFlow, o requiere configuración explícita?
Ambos frameworks usan NCCL para operaciones colectivas multi-GPU, y NCCL detecta la topología NVLink automáticamente. Sin embargo, siempre debe verificar con NCCL_DEBUG=INFO que NCCL esté seleccionando realmente la ruta de transporte NVLink. En algunas configuraciones — particularmente con IOMMU habilitado o versiones incompatibles de NCCL/CUDA — NCCL recurrirá silenciosamente a transportes más lentos.
¿Cómo puedo saber si NVLink realmente está mejorando el rendimiento de mi entrenamiento?
Ejecute su trabajo de entrenamiento con NCCL_P2P_DISABLE=1 (fuerza PCIe) y luego sin él (permite NVLink). Compare el tiempo de iteración o las muestras por segundo. Para cargas de trabajo con mucha comunicación, como el entrenamiento de grandes transformers con frecuentes operaciones all-reduce, NVLink típicamente reduce el tiempo de sincronización entre GPU en un 40–70% en comparación con PCIe, lo que se traduce directamente en tiempos de época más rápidos.
