Jak skonfigurować NVLink na serwerze dedykowanym
NVLink to zastrzeżony, wysokowydajny interfejs połączeń GPU firmy NVIDIA, który zastępuje magistralę PCIe jako główną ścieżkę komunikacji między GPU — a w wybranych architekturach, między GPU a CPU. Zapewnia dwukierunkową przepustowość do 600 GB/s na łącze w sprzęcie generacji Hopper, w porównaniu do teoretycznego maksimum wynoszącego około 64 GB/s w PCIe 5.0 x16. W przypadku obciążeń takich jak trenowanie dużych modeli językowych, symulacje dynamiki molekularnej lub wieloGPU wnioskowanie, ta różnica nie jest marginalna — jest architektoniczna.
Ten przewodnik zawiera kompletny, gotowy do wdrożenia produkcyjnego opis konfiguracji NVLink na serwerze dedykowanym: od fizycznej instalacji sprzętu i konfiguracji stosu sterowników, po weryfikację topologii, integrację na poziomie aplikacji i bieżące monitorowanie wydajności.
Czym NVLink naprawdę jest — i czym nie jest
NVLink to nie tylko szybszy kabel. Jest to spójny, punkt-do-punktu interfejs połączeń wbudowany bezpośrednio w matrycę GPU. Każdy tor NVLink przenosi dane w obu kierunkach jednocześnie, używając serializowanego protokołu sygnalizacji różnicowej. Wiele torów jest łączonych w jedno logiczne łącze, a wiele łączy może łączyć tę samą parę GPU w celu addytywnego zwiększenia przepustowości.
Co istotne, NVLink obsługuje spójny pamięciowo dostęp do pamięci podręcznej. Oznacza to, że GPU A może odczytywać z pamięci framebuffer GPU B bez pośrednictwa pamięci RAM hosta lub kontrolera pamięci CPU. Ta właściwość umożliwia model programowania „zunifikowanej pamięci” w CUDA — jedną wirtualną przestrzeń adresową obejmującą wiele fizycznych pamięci GPU.
Czym NVLink nie jest: nie jest zamiennikiem NVSwitch w systemach wielkoskalowych. W konfiguracjach z więcej niż dwoma GPU, NVIDIA używa NVSwitch — dedykowanego układu przełączającego crossbar — aby zapewnić łączność NVLink wszystkich ze wszystkimi. DGX A100 na przykład używa sześciu układów NVSwitch, aby każdy z ośmiu GPU A100 miał pełną przepustowość NVLink do każdego innego GPU jednocześnie. Jeśli budujesz stację roboczą z dwoma GPU lub serwer z czterema GPU z obsługiwanym mostem, pracujesz z bezpośrednimi połączeniami NVLink. Jeśli pracujesz z ośmioma lub więcej GPU, prawie na pewno jesteś w obszarze NVSwitch.
Przepustowość NVLink według generacji GPU
Zrozumienie limitu przepustowości konkretnego sprzętu jest niezbędne przed benchmarkingiem lub planowaniem pojemności.
| Generacja GPU | Wersja NVLink | Łącza na GPU | Całkowita przepustowość dwukierunkowa |
|---|---|---|---|
| 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 zapewnia około 32 GB/s dwukierunkowo. PCIe 5.0 x16 podwaja to do około 64 GB/s. Nawet dwułączowy konsumencki most NVLink na kartach RTX 3090 zapewnia prawie dwukrotnie większą przepustowość niż PCIe 5.0 — a GPU do centrów danych są w zupełnie innej kategorii.
Wymagania wstępne i zgodność sprzętowa
Przed dotknięciem jakiegokolwiek pliku konfiguracyjnego potwierdź następujące kwestie:
Zgodność GPU. NVLink nie jest dostępny we wszystkich GPU NVIDIA. Karty konsumenckie poniżej RTX 2080 Ti go nie obsługują. RTX 4080 nie obsługuje NVLink pomimo bycia kartą wysokiej klasy — w generacji Ada obsługuje go tylko RTX 4090. Zawsze weryfikuj na podstawie oficjalnej karty specyfikacji GPU NVIDIA dla konkretnego SKU.
Most NVLink. W przypadku GPU konsumenckich i prosumenckich wymagany jest fizyczny łącznik mostu NVLink. Mosty te są specyficzne dla generacji — most Turing nie pasuje do karty Ampere. GPU do centrów danych (A100, H100) w formie SXM używają zastrzeżonej płyty mezzanine i nie korzystają z osobnego mostu.
Płyta główna i rozstaw gniazd PCIe. Most NVLink wymaga, aby dwa GPU znajdowały się w sąsiednich gniazdach x16 z określoną fizyczną przerwą. Większość konsumenckich mostów obejmuje dwa gniazda. Niektóre mosty wysokiej klasy obejmują trzy gniazda. Przed zakupem sprawdź rozstaw gniazd płyty głównej w odniesieniu do wymiarów mostu.
Ustawienia BIOS. Włącz „Above 4G Decoding” i „Resizable BAR” (zwane również Smart Access Memory na platformach AMD) w UEFI. Niektóre systemy wymagają również wyłączenia CSM (Compatibility Support Module), aby umożliwić pełną alokację przestrzeni adresowej PCIe dla wielu GPU.
Zasilanie. Dwa GPU wysokiej klasy pod pełnym obciążeniem przyspieszanym przez NVLink mogą łącznie pobierać 600W lub więcej. Upewnij się, że zasilacz ma wystarczający zapas mocy i że złącza zasilania GPU są na osobnych szynach, tam gdzie to możliwe.
System operacyjny. Ten przewodnik obejmuje Linux (Ubuntu 22.04 LTS / Debian 12) jako główny cel, który jest standardowym środowiskiem dla obciążeń AI i HPC na Serwerach Dedykowanych. Kroki specyficzne dla Windows są zaznaczone tam, gdzie znacząco się różnią.
Krok 1: Fizyczna instalacja GPU i mostu
Całkowicie wyłącz serwer i odłącz go od zasilania sieciowego. Przed dotknięciem jakichkolwiek kart PCIe uziemij się za pomocą opaski antystatycznej ESD.
- Usuń zaślepki gniazd PCIe dla docelowych gniazd.
- Włóż pierwszy GPU do głównego gniazda x16 (zazwyczaj najbliżej CPU).
- Włóż drugi GPU do sąsiedniego gniazda x16, upewniając się, że fizyczna przerwa odpowiada mostowi NVLink.
- Mocno osadź obie karty, aż zatrzaski retencyjne PCIe klikną.
- Podłącz wszystkie wymagane złącza zasilania PCIe z zasilacza do każdego GPU. Nie używaj złączy w łańcuchu dla kart o wysokim TDP — używaj osobnych kabli z zasilacza.
- Wyrównaj most NVLink nad złotymi padami złącza na górnej krawędzi obu GPU. Naciśnij mocno i równomiernie, aż całkowicie się osadzi. Częściowo osadzony most spowoduje ciche niepowodzenie łącza lub działanie przy zmniejszonej szerokości.
- Jeśli Twoje GPU obsługują podwójne mosty NVLink (np. RTX 2080 Ti ma dwa złącza NVLink), zainstaluj oba mosty dla maksymalnej przepustowości.
- Zamknij obudowę i podłącz zasilanie.
Krok 2: Konfiguracja BIOS i UEFI
Uruchom konfigurację UEFI (zazwyczaj Del lub F2 podczas POST).
- Włącz Above 4G Decoding.
- Włącz Resizable BAR, jeśli jest obsługiwany.
- Ustaw prędkość łącza PCIe na Auto lub Gen4/Gen5 odpowiednio do sprzętu.
- Wyłącz CSM, jeśli system operacyjny uruchamia się przez UEFI.
- Zapisz i wyjdź.
Krok 3: Instalacja sterowników NVIDIA na Linux
NVIDIA udostępnia wiele ścieżek instalacji. Metoda menedżera pakietów jest preferowana w środowiskach serwerowych, ponieważ integruje się z DKMS (Dynamic Kernel Module Support), który automatycznie przebudowuje moduł jądra po aktualizacjach jądra.
Najpierw dodaj repozytorium pakietów NVIDIA i zainstaluj sterownik:
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-545Zastąp 545 najnowszą wersją gałęzi produkcyjnej dostępną dla Twojego GPU. Możesz zapytać o dostępne wersje za pomocą:
apt-cache search nvidia-driver | grep "^nvidia-driver"Po instalacji uruchom ponownie:
sudo rebootPo ponownym uruchomieniu sprawdź, czy sterownik załadował się poprawnie:
nvidia-smiWynik powinien wyświetlać oba GPU z wersją sterownika, zgodnością wersji CUDA i aktualnym stanem zasilania. Jeśli pojawia się tylko jeden GPU, drugi może nie być prawidłowo osadzony lub może mieć problem z zasilaniem.
Krytyczna pułapka: Jeśli masz załadowany Nouveau (sterownik NVIDIA open-source), będzie on kolidował ze sterownikiem własnościowym. Zablokuj go jawnie:
echo -e "blacklist nouveaunoptions nouveau modeset=0" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf
sudo update-initramfs -u
sudo rebootKrok 4: Instalacja zestawu narzędzi CUDA
Pełna możliwość NVLink — w szczególności dostęp do pamięci peer-to-peer i komunikacja zbiorowa — wymaga zestawu narzędzi CUDA. Zainstaluj go przez repozytorium CUDA NVIDIA dla najbardziej niezawodnego dopasowania wersji:
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-4Dodaj pliki binarne i biblioteki CUDA do środowiska powłoki:
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrcZweryfikuj instalację:
nvcc --versionPowinieneś zobaczyć wynik identyfikujący wersję kompilatora CUDA. Uruchom również przykład CUDA deviceQuery, jeśli masz zainstalowane przykłady — wyliczy oba GPU i zgłosi flagi możliwości NVLink.
Krok 5: Weryfikacja topologii i stanu NVLink
Jest to najważniejszy diagnostycznie krok. nvidia-smi udostępnia kilka podpoleceń specjalnie do inspekcji NVLink.
Sprawdź macierz topologii systemu:
nvidia-smi topo -mWynik to macierz pokazująca typ połączenia między każdą parą urządzeń w systemie. Szukaj etykiet NV# między GPU, gdzie # to liczba mostów NVLink je łączących. Etykieta NV2 oznacza, że aktywne są dwa mosty NVLink. Etykieta PIX lub PHB oznacza, że GPU komunikują się przez PCIe — NVLink nie jest aktywny.
Przykładowy wynik dla poprawnie skonfigurowanego systemu z dwoma GPU:
GPU0 GPU1 CPU Affinity NUMA Affinity
GPU0 X NV2 0-23 0
GPU1 NV2 X 0-23 0Sprawdź stan łącza NVLink na GPU:
nvidia-smi nvlink --status -i 0Pokazuje to stan każdego portu NVLink na GPU 0. Aktywne łącza będą wykazywać stan Active i wynegocjowaną prędkość.
Sprawdź liczniki błędów NVLink:
nvidia-smi nvlink --errorcounters -i 0Niezerowe liczniki błędów powtórzeń lub odzyskiwania wskazują na problem z warstwą fizyczną — częściowo osadzony most, uszkodzone złącze lub problemy z integralnością sygnału spowodowane niewystarczającym zasilaniem.
Monitoruj przepustowość NVLink w czasie rzeczywistym:
nvidia-smi nvlink -sWyświetla to skumulowane liczniki przepustowości. Do monitorowania delta w czasie rzeczywistym połącz z watch:
watch -n 1 nvidia-smi nvlink -sKrok 6: Włączenie i weryfikacja dostępu do pamięci peer-to-peer
Spójny dostęp do pamięci NVLink wymaga włączenia peer-to-peer (P2P) na poziomie CUDA. Możesz to zweryfikować programowo:
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.pyLub użyj programu CUDA C z cudaDeviceCanAccessPeer(). Do szybkiej walidacji, przykłady CUDA simpleP2P i p2pBandwidthLatencyTest są narzędziami ostatecznej weryfikacji:
cd /usr/local/cuda/samples/1_Utilities/p2pBandwidthLatencyTest
make
./p2pBandwidthLatencyTestWynik pokaże dwukierunkową przepustowość między parami GPU. Przez NVLink powinieneś zobaczyć wartości zgodne z powyższą tabelą przepustowości. Jeśli widzisz przepustowość na poziomie PCIe (~10–30 GB/s), P2P przez NVLink nie jest aktywny — sprawdź, czy most jest w pełni osadzony i czy żadne ustawienia IOMMU nie blokują dostępu peer.
Uwaga dotycząca IOMMU: Na platformach AMD EPYC i niektórych Intel Xeon, IOMMU może być domyślnie włączony i może blokować dostęp P2P GPU. Jeśli P2P nie działa, dodaj iommu=pt (tryb passthrough) lub amd_iommu=on iommu=pt do wiersza poleceń jądra w /etc/default/grub:
sudo nano /etc/default/grub
# Add iommu=pt to GRUB_CMDLINE_LINUX_DEFAULT
sudo update-grub
sudo rebootKrok 7: Konfiguracja frameworków głębokiego uczenia do używania NVLink
Nowoczesne frameworki wykrywają NVLink automatycznie przez NCCL (NVIDIA Collective Communications Library), ale zrozumienie, jak weryfikować i dostrajać to zachowanie, jest niezbędne dla wdrożeń produkcyjnych.
Zmienne środowiskowe NCCL do optymalizacji 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-nodeUstawienie NCCL_DEBUG=INFO powoduje, że NCCL wyświetla wykrytą topologię podczas działania. Zobaczysz linie takie jak [0] NCCL INFO Channel 00 : 0[...] -> 1[...] via NVL potwierdzające, że NVLink jest używany do transferów między GPU.
Weryfikacja wielu GPU w 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}")Jeśli can_device_access_peer zwraca True dla obu kierunków, DataParallel i DistributedDataParallel PyTorch będą automatycznie używać NVLink do synchronizacji gradientów.
Sprawdzenie wielu GPU w 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 używa NCCL do operacji zbiorowych podczas działania z MirroredStrategy, więc powyższe zmienne środowiskowe NCCL mają równe zastosowanie.
Krok 8: Benchmarking wydajności NVLink
Przed zaangażowaniem obciążeń produkcyjnych ustal punkt odniesienia wydajności. Służy to również jako test regresji po aktualizacjach sterowników lub zmianach sprzętowych.
Test przepustowości all-reduce NCCL (najbardziej reprezentatywny benchmark dla trenowania rozproszonego):
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 2Flaga -g 2 określa dwa GPU. Spójrz na kolumnę busbw — to jest efektywna przepustowość magistrali. Przez NVLink na kartach RTX 3090 powinieneś widzieć wartości zbliżające się do 100 GB/s. Przez PCIe oczekuj 20–30 GB/s.
Benchmark cuBLAS GEMM dla obciążeń ograniczonych obliczeniami:
/usr/local/cuda/extras/demo_suite/bandwidthTest --mode=shmooKrok 9: Bieżące monitorowanie i alerty
W środowiskach produkcyjnych zalecane jest nvidia-smi w trybie demona lub integracja z Prometheus przez dcgm-exporter.
Zainstaluj DCGM (Data Center GPU Manager):
sudo apt-get install -y datacenter-gpu-manager
sudo systemctl enable nvidia-dcgm
sudo systemctl start nvidia-dcgmZapytaj o metryki specyficzne dla NVLink przez DCGM:
dcgmi dmon -e 1011,1012,1013,1014Identyfikatory pól 1011–1014 odpowiadają liczniком przepustowości NVLink (TX/RX na łącze). Można je eksportować do Prometheus i wizualizować w Grafana do długoterminowej analizy trendów.
Do lżejszego monitorowania, prosta pętla nvidia-smi przechwytuje najważniejsze dane:
nvidia-smi dmon -s pucvmet -d 5Flagi -s pucvmet włączają raportowanie zasilania, wykorzystania, zegara, VRAM, przepustowości pamięci, ECC i temperatury w 5-sekundowych interwałach.
NVLink vs. PCIe vs. NVSwitch: kiedy stosować każdą architekturę
| Scenariusz | Zalecane połączenie | Uzasadnienie |
|---|---|---|
| Stacja robocza z 2 GPU | Most NVLink | Opłacalny, 2x przepustowość PCIe |
| Serwer prosumencki z 2-4 GPU | Most NVLink (jeśli obsługiwany) | Znaczący wzrost przepustowości dla trenowania |
| Węzeł centrum danych z 8 GPU | Sieć NVSwitch | Łączność wszystkich ze wszystkimi, brak wąskiego gardła |
| Wielowęzłowe trenowanie rozproszone | InfiniBand + NVLink | NVLink wewnątrz węzła, IB między węzłami |
| Serwowanie wnioskowania (krytyczne opóźnienie) | NVLink | Zmniejsza opóźnienie synchronizacji między GPU |
| Transkodowanie wideo (embarrassingly parallel) | PCIe wystarczający | Brak potrzeby komunikacji między GPU |
Typowe tryby awarii i rozwiązywanie problemów
NVLink nie wykryty po fizycznej instalacji. Uruchom nvidia-smi topo -m i sprawdź PIX zamiast NV#. Ponownie osadź most. Sprawdź, czy oba GPU są na tym samym kompleksie głównym PCIe — GPU na różnych gniazdach CPU połączonych przez QPI/UPI nie utworzą pary NVLink nawet z zainstalowanym mostem.
Przepustowość P2P odpowiada prędkościom PCIe pomimo mostu NVLink. IOMMU prawie na pewno blokuje dostęp peer. Zastosuj parametr jądra iommu=pt zgodnie z opisem powyżej.
Błędy NVLink gromadzące się w nvidia-smi nvlink --errorcounters. Problem z warstwą fizyczną. Sprawdź pady złącza mostu pod kątem zanieczyszczeń lub uszkodzeń. Spróbuj ponownie osadzić most. Jeśli błędy się utrzymują, sam most może być wadliwy.
NCCL nie używa NVLink pomimo topologii pokazującej NV2. Ustaw NCCL_P2P_LEVEL=NVL jawnie. Sprawdź również zgodność wersji NCCL z wersją CUDA — niezgodności powodują, że NCCL wraca do transportu przez pamięć współdzieloną lub gniazda.
Instalacja sterownika kończy się błędami DKMS. Nagłówki jądra dla działającego jądra mogą nie być zainstalowane. Napraw za pomocą:
sudo apt-get install -y linux-headers-$(uname -r)
sudo dkms autoinstallWybór odpowiedniej infrastruktury serwerowej dla obciążeń NVLink
Konfiguracja NVLink jest tylko tak skuteczna, jak bazowa platforma serwerowa. Kilka czynników infrastrukturalnych bezpośrednio wpływa na wydajność NVLink w praktyce:
Topologia PCIe. Na platformach z dwoma gniazdami EPYC lub Xeon, tory PCIe są rozdzielone między oba CPU. GPU podłączone do różnych CPU komunikują się przez sieć między gniazdami (Infinity Fabric lub UPI), co dodaje opóźnienie i zmniejsza efektywną przepustowość dla transferów GPU-do-GPU, które muszą przekraczać granicę gniazda. Gdy tylko możliwe, instaluj GPU sparowane przez NVLink w gniazdach PCIe podłączonych do tego samego gniazda CPU.
Przepustowość pamięci. Nawet gdy NVLink obsługuje transfery GPU-do-GPU, podsystem pamięci CPU pozostaje wąskim gardłem dla pozyskiwania danych. Platformy wyposażone w wysokoprzepustowe DDR5 lub HBM skracają czas potrzebny na przygotowanie danych przed dotarciem do GPU.
Przepustowość pamięci masowej. Duże punkty kontrolne modeli i zestawy danych treningowych wymagają szybkiej pamięci masowej. Dyski NVMe SSD z sekwencyjnymi prędkościami odczytu powyżej 7 GB/s zapobiegają temu, aby warstwa pamięci masowej stała się wąskim gardłem podczas ładowania danych.
Chłodzenie. Dwa GPU o wysokim TDP pod stałym obciążeniem przyspieszanym przez NVLink generują znaczne ciepło. Zapewnij odpowiedni przepływ powietrza lub pojemność chłodzenia cieczą. Dławienie termiczne zmniejszy prędkości zegarowe GPU i zniweluje przewagę przepustowości zapewnianą przez NVLink.
Dla zespołów prowadzących wieloGPU trenowanie AI lub symulacje HPC, Serwery Dedykowane z pamięcią masową NVMe i dostępem root zapewniają kontrolę sprzętową niezbędną do wdrożenia pełnej konfiguracji opisanej w tym przewodniku. W przypadku obciążeń przyspieszanych przez GPU, Hosting GPU oferuje wstępnie skonfigurowane środowiska z już zainstalowanymi sterownikami NVIDIA. Zespoły potrzebujące elastycznej bazy dla niestandardowych środowisk CUDA mogą również uznać Hosting VPS za przydatny do tworzenia i testowania przed skalowaniem do dedykowanego sprzętu.
Kluczowe wnioski i lista kontrolna decyzji
Przed wdrożeniem NVLink w produkcji zweryfikuj każdy punkt:
- Sprzęt potwierdzony: Oba GPU znajdują się na liście zgodności NVLink NVIDIA dla konkretnego SKU, nie tylko rodziny produktów.
- Generacja mostu dopasowana: Generacja mostu NVLink odpowiada generacji GPU (most Turing dla GPU Turing, most Ampere dla GPU Ampere).
- Instalacja fizyczna zweryfikowana:
nvidia-smi topo -mpokazujeNV1lubNV2między parami GPU, niePIXlubPHB. - Dostęp P2P potwierdzony:
p2pBandwidthLatencyTestraportuje przepustowość na poziomie NVLink (nie PCIe). - IOMMU rozwiązany: Jeśli działa na EPYC lub Xeon,
iommu=ptjest ustawiony w parametrach jądra. - Transport NCCL potwierdzony: Wynik
NCCL_DEBUG=INFOpokazujevia NVLdla kanałów między GPU. - Liczniki błędów czyste:
nvidia-smi nvlink --errorcounterspokazuje zero błędów powtórzeń i odzyskiwania po teście wypalania. - Monitorowanie aktywne: DCGM lub
nvidia-smi dmonrejestruje przepustowość NVLink i metryki błędów do trwałego magazynu. - Zapas termiczny potwierdzony: Oba GPU utrzymują docelowe prędkości zegarowe pod pełnym obciążeniem bez dławienia termicznego.
- Wersje sterownika i CUDA przypięte: Środowiska produkcyjne używają przypiętych wersji sterowników zarządzanych przez DKMS, aby zapobiec niezamierzonym aktualizacjom psującym konfigurację.
Często zadawane pytania
Czy NVLink działa na wszystkich kartach NVIDIA RTX?
Nie. Obsługa NVLink różni się znacznie nawet w obrębie linii RTX. RTX 4080 na przykład nie obsługuje NVLink pomimo bycia kartą wysokiej klasy Ada Lovelace. Tylko RTX 4090 obsługuje NVLink w tej generacji. Zawsze weryfikuj na podstawie karty danych konkretnego GPU, nie rodziny produktów.
Czy NVLink może być używany między różnymi modelami GPU?
Ogólnie nie. NVLink wymaga, aby oba GPU były tego samego modelu i generacji. NVIDIA oficjalnie nie obsługuje konfiguracji NVLink z mieszanymi modelami, a stos sterowników nie utworzy relacji peer-to-peer NVLink między różnymi GPU, nawet jeśli fizyczne złącza są kompatybilne.
Co się stanie, jeśli most NVLink zostanie usunięty podczas działania systemu?
System nie zawiesi się natychmiast, ale wszelkie aktywne transfery P2P przez NVLink zakończą się niepowodzeniem, co zazwyczaj spowoduje, że działająca aplikacja CUDA zgłosi błąd CUDA i zakończy działanie. GPU powrócą do PCIe dla kolejnych operacji. Gorące usuwanie mostu nie jest obsługiwane i grozi fizycznym uszkodzeniem padów złącza.
Czy NVLink jest automatycznie używany przez PyTorch i TensorFlow, czy wymaga jawnej konfiguracji?
Oba frameworki używają NCCL do wieloGPU operacji zbiorowych, a NCCL automatycznie wykrywa topologię NVLink. Jednak zawsze powinieneś weryfikować za pomocą NCCL_DEBUG=INFO, że NCCL faktycznie wybiera ścieżkę transportu NVLink. W niektórych konfiguracjach — szczególnie z włączonym IOMMU lub niezgodnymi wersjami NCCL/CUDA — NCCL po cichu wraca do wolniejszych transportów.
Jak sprawdzić, czy NVLink faktycznie poprawia przepustowość trenowania?
Uruchom zadanie treningowe z NCCL_P2P_DISABLE=1 (wymusza PCIe), a następnie bez niego (zezwala na NVLink). Porównaj czas iteracji lub próbki na sekundę. W przypadku obciążeń intensywnie komunikacyjnych, takich jak trenowanie dużych transformerów z częstymi operacjami all-reduce, NVLink zazwyczaj skraca czas synchronizacji między GPU o 40–70% w porównaniu do PCIe, co bezpośrednio przekłada się na szybsze czasy epok.
