15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij
23.10.2024

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.

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.

Zrozumienie limitu przepustowości konkretnego sprzętu jest niezbędne przed benchmarkingiem lub planowaniem pojemności.

Generacja GPUWersja NVLinkŁącza na GPUCałkowita przepustowość dwukierunkowa
Volta (V100)NVLink 2.06300 GB/s
Turing (RTX 2080 Ti)NVLink 2.02100 GB/s
Ampere (A100 SXM)NVLink 3.012600 GB/s
Ampere (RTX 3090)NVLink 3.02112.5 GB/s
Ada Lovelace (RTX 4090)NVLink 4.02112.5 GB/s
Hopper (H100 SXM)NVLink 4.018900 GB/s
Blackwell (B200)NVLink 5.0181800 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.

  1. Usuń zaślepki gniazd PCIe dla docelowych gniazd.
  2. Włóż pierwszy GPU do głównego gniazda x16 (zazwyczaj najbliżej CPU).
  3. Włóż drugi GPU do sąsiedniego gniazda x16, upewniając się, że fizyczna przerwa odpowiada mostowi NVLink.
  4. Mocno osadź obie karty, aż zatrzaski retencyjne PCIe klikną.
  5. 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.
  6. 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.
  7. 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.
  8. 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-545

Zastą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 reboot

Po ponownym uruchomieniu sprawdź, czy sterownik załadował się poprawnie:

nvidia-smi

Wynik 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 reboot

Krok 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-4

Dodaj 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 ~/.bashrc

Zweryfikuj instalację:

nvcc --version

Powinieneś 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.

Jest to najważniejszy diagnostycznie krok. nvidia-smi udostępnia kilka podpoleceń specjalnie do inspekcji NVLink.

Sprawdź macierz topologii systemu:

nvidia-smi topo -m

Wynik 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            0

Sprawdź stan łącza NVLink na GPU:

nvidia-smi nvlink --status -i 0

Pokazuje 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 0

Niezerowe 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 -s

Wyświetla to skumulowane liczniki przepustowości. Do monitorowania delta w czasie rzeczywistym połącz z watch:

watch -n 1 nvidia-smi nvlink -s

Krok 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.py

Lub 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
./p2pBandwidthLatencyTest

Wynik 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 reboot

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-node

Ustawienie 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.

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 2

Flaga -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=shmoo

Krok 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-dcgm

Zapytaj o metryki specyficzne dla NVLink przez DCGM:

dcgmi dmon -e 1011,1012,1013,1014

Identyfikatory 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 5

Flagi -s pucvmet włączają raportowanie zasilania, wykorzystania, zegara, VRAM, przepustowości pamięci, ECC i temperatury w 5-sekundowych interwałach.

ScenariuszZalecane połączenieUzasadnienie
Stacja robocza z 2 GPUMost NVLinkOpłacalny, 2x przepustowość PCIe
Serwer prosumencki z 2-4 GPUMost NVLink (jeśli obsługiwany)Znaczący wzrost przepustowości dla trenowania
Węzeł centrum danych z 8 GPUSieć NVSwitchŁączność wszystkich ze wszystkimi, brak wąskiego gardła
Wielowęzłowe trenowanie rozproszoneInfiniBand + NVLinkNVLink wewnątrz węzła, IB między węzłami
Serwowanie wnioskowania (krytyczne opóźnienie)NVLinkZmniejsza opóźnienie synchronizacji między GPU
Transkodowanie wideo (embarrassingly parallel)PCIe wystarczającyBrak 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 autoinstall

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 -m pokazuje NV1 lub NV2 między parami GPU, nie PIX lub PHB.
  • Dostęp P2P potwierdzony: p2pBandwidthLatencyTest raportuje przepustowość na poziomie NVLink (nie PCIe).
  • IOMMU rozwiązany: Jeśli działa na EPYC lub Xeon, iommu=pt jest ustawiony w parametrach jądra.
  • Transport NCCL potwierdzony: Wynik NCCL_DEBUG=INFO pokazuje via NVL dla kanałów między GPU.
  • Liczniki błędów czyste: nvidia-smi nvlink --errorcounters pokazuje zero błędów powtórzeń i odzyskiwania po teście wypalania.
  • Monitorowanie aktywne: DCGM lub nvidia-smi dmon rejestruje 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.

15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij