Blog
GPU Altyapısı

NVIDIA A40 Çoklu GPU Sorunu: 30 Dakika Sonra Neden Kopuyor?

A40, NVLink, MIG, vGPU, NCCL, P2P, IOMMU ve 30 dakikalık distributed timeout belirtisini kaynaklarıyla ayıran teknik teşhis rehberi.

DEHA Araştırma22 Ağustos 202615 dk okuma

İki veya daha fazla NVIDIA A40 ile eğitim başlatıp işin yaklaşık 30 dakika sonra donması, “A40 kartlar birlikte çalışamıyor” sonucunu doğurabilir. Ancak NVIDIA'nın teknik özellikleri böyle bir süre sınırı tanımlamaz. A40, iki kart arasında doğrudan bağlantı için 2-way NVLink destekler; CUDA ve NCCL ile çoklu GPU iş yüklerinde kullanılabilir. Tam veya yaklaşık 30 dakikada görülen çökme çoğu zaman donanımın çalışma süresi değil, daha önce durmuş bir collective işlemin framework timeout'una ulaşmasıdır.

Karışıklığın kaynağı “GPU paylaşımı” ifadesinin üç farklı problemi aynı anda anlatmasıdır: bir eğitimi birden fazla fiziksel GPU'ya dağıtmak, tek fiziksel GPU'yu birden fazla sanal makineye paylaştırmak ve GPU belleğini donanımsal bölümlere ayırmak. A40 bu üç senaryoda aynı özellik setine sahip değildir. Bu yazı A40'ın gerçek sınırlarını, 30 dakikalık timeout belirtisini ve doğru teşhis sırasını ayırır.

Kısa cevap

A40'larda “30 dakikadan uzun birlikte çalışamaz” şeklinde genel bir NVIDIA kısıtı yoktur. A40 MIG desteklemez, ancak iki kartlı NVLink ve lisanslı time-sliced vGPU destekler. Tam 30 dakikalık hata; çoğunlukla process-group timeout, P2P/NVLink erişimi, PCIe topolojisi, IOMMU/ACS, sanal makine profili veya rank'lerden birinin daha önce durmasıyla açıklanır.

1 NVIDIA A40 gerçekte hangi çoklu GPU özelliklerini destekliyor?

NVIDIA'nın A40 veri sayfasında kart başına 48 GB ECC GDDR6 bellek, 696 GB/s bellek bant genişliği ve 112,5 GB/s çift yönlü NVLink bağlantısı belirtilir. Desteklenen fiziksel topoloji iki kartlıdır; A40 bir NVSwitch sistemi değildir. Doğru bridge ve platformla iki A40 doğrudan bağlanabilir. Buna karşılık A40'ın MIG desteği yoktur.

Bu ayrım önemlidir. NVLink, iki ayrı GPU arasında hızlı P2P iletişim sağlar; tek başına her uygulamaya otomatik 96 GB'lık birleşik CUDA aygıtı sunmaz. Model veya eğitim framework'ü tensor, pipeline ya da data parallel stratejisini uygulamalıdır. MIG ise tek fiziksel GPU'yu donanımsal olarak yalıtılmış örneklere böler. A40'ta MIG olmadığı için A100/A30 gibi kartlardaki spatial partitioning yaklaşımı kullanılamaz.

2 “NVIDIA GPU paylaşımını açmamış” ne anlama gelebilir?

SenaryoA40 durumuİlgili teknoloji
Tek eğitim işini iki fiziksel GPU'da çalıştırmaDesteklenirCUDA, NCCL, DDP/FSDP, NVLink veya PCIe
Bir GPU'yu birden fazla süreçte kullanmaDesteklenir; izolasyon ve performans uygulamaya bağlıdırCUDA context, MPS veya framework scheduler
Bir fiziksel GPU'yu birden fazla VM'e vermeLisanslı profillerle desteklenirNVIDIA vGPU time slicing
GPU'yu donanımsal, yalıtılmış dilimlere bölmeDesteklenmezMIG yok
Bir VM içindeki iki vGPU arasında P2PSınırlı profil, hypervisor ve bağlantı koşullarıylaA40-48Q, Linux, NVLink

NVIDIA vGPU belgelerine göre A40 time-sliced vGPU profilleriyle paylaştırılabilir. Fakat vGPU ile çoklu fiziksel GPU eğitimi aynı şey değildir. Sanal makine içindeki P2P CUDA transferleri daha dar bir destek matrisine sahiptir: A40 için tam framebuffer kullanan A40-48Q profili, desteklenen Linux/KVM sürümleri ve NVLink gerekir; PCIe üzerinden vGPU P2P desteklenmez. Bare-metal sistemde çalışan bir DDP işi bu lisanslı vGPU katmanına ihtiyaç duymaz.

3 Neden hata yaklaşık 30 dakikada görünüyor?

Dağıtık eğitimde bütün rank'ler aynı collective sırasına girmelidir. Bir rank veri yüklerken kilitlenir, OOM olur, CUDA hatası alır veya farklı bir kod dalına girerse diğer rank'ler all_reduce, all_gatherya da barrier üzerinde bekler. Kullanıcı ilk arızayı değil, bekleyen collective'in timeout mesajını görür.

PyTorch belgelerinde init_process_group() için varsayılan timeout NCCL backend'inde 10 dakika, diğer backend'lerde 30 dakikadır. Uygulama, launcher veya eğitim kütüphanesi bu değeri açıkça 30 dakikaya da ayarlayabilir. Bu yüzden “her seferinde 30 dakika” güçlü bir teşhis sinyalidir: Kartın süre dolduğu için kapandığını değil, rank'lerin daha önce senkronizasyonu kaybettiğini araştırmak gerekir. Timeout'u iki saate yükseltmek yalnızca hatayı iki saat geç gösterebilir.

4 En yaygın kök nedenler

4.1 NVLink bridge yok, yanlış veya topolojide görünmüyor

A40'ın NVLink desteklemesi, sunucudaki iki kartın otomatik olarak NVLink ile bağlı olduğu anlamına gelmez. Uygun slot aralığına sahip bridge fiziksel olarak takılmalı ve link sürücü tarafından görülmelidir. Link yoksa NCCL PCIe, shared memory veya ağ yoluna düşebilir. Bu fallback doğru çalışabilir; fakat iletişim performansı ve destek koşulları farklıdır.

4.2 PCIe P2P, IOMMU ve ACS yönlendirmesi

NVIDIA'nın NCCL troubleshooting rehberi, P2P erişimi bozuk göründüğünde bare-metal Linux IOMMU ve PCI Access Control Services yapılandırmasını özellikle kontrol etmeyi önerir. ACS, GPU-GPU trafiğini doğrudan PCIe switch üzerinden geçirmek yerine root complex'e yönlendirebilir. Sanallaştırmada gerekli olan IOMMU ile bare-metal GPU Direct gereksinimleri aynı değildir; BIOS parametresini internetten bulunan tek komutla değiştirmek yerine platform ve hypervisor senaryosu belirlenmelidir.

4.3 Sanal makine veya vGPU profili P2P'ye uygun değil

İki vGPU'nun aynı VM'e görünmesi, aralarında CUDA P2P bulunduğunu garanti etmez. Profil türü, framebuffer tahsisi, işletim sistemi, hypervisor sürümü ve NVLink topolojisi birlikte desteklenmelidir. Özellikle küçük time-sliced profilleri birleştirip fiziksel iki A40 gibi davranmasını beklemek hatalıdır.

4.4 Rank'lerden biri iletişimden önce öldü

DataLoader worker çökmesi, CPU RAM tükenmesi, disk veya ağ beklemesi, farklı batch sayıları, koşullu forward, kullanılmayan parametreler, CUDA OOM ve sürücü Xid hataları NCCL timeout'unun gerçek başlangıç noktası olabilir. Bu durumda yalnız rank 0 çıktısına bakmak yetersizdir; bütün rank logları aynı zaman çizgisinde tutulmalıdır.

4.5 Sürücü, CUDA, PyTorch ve NCCL matrisi

İki GPU aynı model olsa bile host driver, container CUDA runtime, PyTorch'un derlendiği CUDA ve NCCL sürümü uyumsuz olabilir. Container'ın host sürücüsünü kullandığı unutulmamalıdır. “Tek GPU çalışıyor” testi collective iletişim katmanını sınamadığı için çoklu GPU uyumluluğunu kanıtlamaz.

5 Doğru teşhis sırası

Önce uygulamayı değil, fiziksel ve CUDA iletişim yolunu doğrulayın:

# Kart, sürücü ve aktif hata durumu
nvidia-smi

# GPU/CPU/NIC topolojisi ve NVLink yolu
nvidia-smi topo -m
nvidia-smi topo -p2p n
nvidia-smi topo -p2p p
nvidia-smi nvlink --status

# Sürücü kaynaklı Xid ve PCIe hataları
dmesg -T | grep -Ei 'NVRM|Xid|pcie|aer'

# Runtime sürüm matrisi
python -c "import torch; print(torch.__version__, torch.version.cuda); print(torch.cuda.nccl.version())"

Ardından CUDA Samples içindeki p2pBandwidthLatencyTest ve NVIDIA nccl-testsall_reduce_perf çalıştırılmalıdır. Kısa test yeterli değildir; üretimde sorun 30 dakikada görünüyorsa aynı mesaj boyutu ve GPU yüküyle en az 60-90 dakikalık soak testi yapılmalıdır. NCCL logları zaman damgası ve topoloji bilgisiyle açılabilir:

export NCCL_DEBUG=INFO
export NCCL_DEBUG_SUBSYS=INIT,GRAPH,P2P,COLL
export NCCL_DEBUG_FILE=/tmp/nccl-%h-%p.log
export TORCH_DISTRIBUTED_DEBUG=DETAIL

torchrun --standalone --nproc_per_node=2 train.py

6 P2P'yi kapatmak çözüm mü?

NCCL_P2P_DISABLE=1, NCCL'nin doğrudan GPU-GPU P2P taşımasını kapatıp başka taşıma yollarını denemesini sağlar. Bu değişken yararlı bir A/B teşhisidir: sorun kaybolursa P2P/topoloji yoluna odaklanılır. Fakat kalıcı çözüm olarak körlemesine kullanmak bant genişliğini ciddi düşürebilir ve hatalı donanım ya da BIOS yapılandırmasını gizleyebilir. Aynı şekilde NCCL_SHM_DISABLE veya rastgele NCCL_P2P_LEVEL değerleri de ölçüm ve topoloji kanıtı olmadan production ayarı yapılmamalıdır.

7 Sağlam bir A40 çoklu GPU kabul testi

  1. Her GPU'yu ayrı ayrı uzun süreli compute ve bellek testiyle doğrulayın.
  2. NVLink bridge, slot yerleşimi ve topo -m çıktısının fiziksel kurulumla eşleştiğini kontrol edin.
  3. CUDA P2P bandwidth/latency testini iki yönde çalıştırın.
  4. NCCL all_reduce_perf ile küçükten büyük mesaj boyutlarına geçin.
  5. Testi 60-90 dakika sürdürürken sıcaklık, güç, ECC ve Xid sayaçlarını izleyin.
  6. Framework işinde her rank için ayrı log, step ve batch kimliği yazdırın.
  7. Hata anındaki ilk rank hatasını bulun; sonradan gelen watchdog timeout'u kök neden sanmayın.
  8. Bare-metal ile VM/vGPU senaryosunu aynı destek matrisiyle değerlendirmeyin.

8 Sonuç

NVIDIA A40'ın çoklu GPU kullanımında 30 dakikalık mimari bir çalışma sınırı yoktur. A40, iki kartlı NVLink bağlantısını ve NCCL tabanlı dağıtık iş yüklerini destekler; ancak MIG desteklemez ve sanallaştırılmış P2P için profil/hypervisor kısıtları vardır. Bu nedenle “GPU sharing kapalı” teşhisi, kullanım modelini belirtmeden doğru değildir.

Tam 30 dakikada görülen arıza önce timeout olarak ele alınmalıdır. P2P/NVLink, PCIe-IOMMU-ACS topolojisi, vGPU profili ve rank'lerin senkronizasyonu ayrı ayrı test edilmelidir. Timeout süresini artırmak yerine ilk bozulan rank'i ve iletişim yolunu bulmak kalıcı çözümdür. Model eğitiminde VRAM ve dağıtım kararları için ayrıca LLM fine-tuning ve VRAM rehberine bakabilirsiniz.

Sık sorulan sorular

İki A40 toplam 96 GB tek GPU belleği gibi görünür mü?

Hayır. NVLink hızlı P2P sağlar; framework model/tensor/pipeline parallelism ile belleği bilinçli dağıtmalıdır.

A40 MIG destekliyor mu?

Hayır. NVIDIA A40 veri sayfasında MIG desteği “No” olarak belirtilir.

A40 vGPU ile paylaşılabilir mi?

Evet, NVIDIA vGPU yazılımı ve uygun lisans/profillerle time slicing yapılabilir. Bu, MIG tabanlı donanımsal bölümleme değildir.

30 dakika timeout'u iki saate çıkarmalı mıyım?

Yalnız gerçek bir işlemin meşru olarak uzun sürdüğü kanıtlandıysa. Rank öldüyse veya collective kilitlendiyse süreyi artırmak yalnız teşhisi geciktirir.

Kaynakça

  1. NVIDIA A40 Datasheet: NVLink, bellek, PCIe, vGPU ve MIG özellikleri.
  2. NVIDIA NCCL GPU Troubleshooting: P2P, IOMMU ve ACS teşhisi.
  3. NVIDIA System Management Interface: topology ve P2P komutları.
  4. NVIDIA AI Enterprise: Peer-to-Peer CUDA Transfers: vGPU P2P koşulları ve sınırları.
  5. NVIDIA AI Enterprise: Multi-vGPU: çoklu vGPU uyumluluk kuralları.
  6. PyTorch Distributed Documentation: process-group timeout davranışı.
  7. NVIDIA NCCL Environment Variables: P2P ve SHM teşhis ayarları.

Türkçe öncelikli yapay zeka çalışma alanını deneyin

Belge analizi, web ve akademik arama, makale, sunum ve kaynaklı sohbet özelliklerini tek çalışma alanında kullanın.

DEHA'yı Ücretsiz Dene →