SON DAKİKA

Nvdia

“NCCL 2.24 ile Ölçeklemeli Ağ Güvenilirliği ve Gözlemlenebilirlik”

NVIDIA Collective Communications Library (NCCL), çoklu GPU ve çoklu düğüm (MGMN) iletişimlerin optimize edilmiş ilkelere sahip bir kütüphanedir. Bu kütüphane, özellikle NVIDIA GPU’ları ve ağ iletişimi için tasarlanmıştır. NCCL, çoklu GPU derin öğrenme eğitiminde kritik bir yazılım parçasıdır. PCI, NVLink veya ağ üzerinden herhangi bir türdeki inter-GPU iletişimini yönetir. Gelişmiş topoloji tespiti, optimize edilmiş iletişim grafikleri ve ayar modelleri ile NVIDIA GPU platformları üzerinde en iyi performansı elde etmek için tasarlanmıştır. NCCL hakkında daha fazla bilgi almak için NVIDIA/nccl GitHub reposuna göz atabilirsiniz.

Bu yazıda, NCCL 2.24‘teki yeni özellikler ve düzeltmeler üzerinde duracağız.

NCCL 2.24 Yeni Özellikler

Aşağıdaki yeni özellikleri ele alacağız:

  • Güvenilirlik, kullanılabilirlik ve hizmet edilebilirlik (RAS) alt sistemi
  • Kullanıcı tamponu (UB) kayıt işlemi için multinode toplamsal işlemler
  • NIC Fusion
  • İsteğe bağlı alım tamamlama
  • FP8 desteği
  • NCCL_ALGO ve NCCL_PROTO için sıkı uygulama

RAS Alt Sistemi

NCCL 2.24 ile birlikte getirilen RAS alt sistemi, kullanıcıların uygulama çökmesi veya duraklamalarını teşhis etmelerine yardımcı olmak amacıyla eklenmiştir. Büyük ölçekli uygulamalarda, bir uygulamanın ilerlemesindeki temel nedeni belirlemek, NCCL ile yakından tanışmayan kullanıcılar için zorlayıcı olabilir.

RAS, çalışmakta olan NCCL işlerinin sağlığını sorgulamak için kullanılabilecek düşük verimlilikte bir altyapıdır. Uygulamanın genel durumunu izler ve yanıt vermeyen düğümler veya diğer uygulama süreçlerinin geride kalma gibi anormalliklerin tespitine yardımcı olur.

RAS, her biri bir NCCL sürecine ait bir dizi iş parçacığından oluşur ve bu parçacıklar birbirleriyle TCP/IP bağlantıları kurarak iletişim kurarlar. Bir NCCL süreci çöker veya duraklarsa, diğer NCCL süreçleri üzerindeki RAS bağlantıları kapatılır veya yanıt vermez hale gelir ve bu durum diğer süreçleri sorundan haberdar eder.

RAS, hafif bir yapıya sahiptir. Boşta olduğu zaman, minimum sistem kaynaklarını kullanır ve uygulama ile etkileşime geçmez. Varsayılan olarak etkin durumda olup, NCCL_RAS_ENABLE=0 ortam değişkeni verilerek devre dışı bırakılabilir.

RAS’nın sağladığı yeni ncclras istemcisi, NCCL işinin çalıştığı her düğümde başlatılabilir ve işin durum raporunu oluşturabilir. Alternatif olarak, basit iletişim araçları olan telnet veya netcat de kullanılabilir.

UB Kaydı için Multinode Toplamsal İşlemleri

NCCL, herhangi bir kalıcı tampon kaydının yapılmasını gerektirmeden çalışabilir. Bu özellik, kullanım kolaylığı açısından avantaj sağlar. Ancak, doğrudan erişim olmadığında, daha fazla kontrol akışı ve ara bellekleme yapılmak zorunda kalınır. Bu durum, daha yüksek kaynak tüketimine neden olur ve veri taşınmasını zorlaştırır.

Mümkün olduğunda, ncclCommRegister fonksiyonu ile tamponların kaydedilmesi önerilmektedir. Bu, NCCL’in mevcut tüm optimizasyonları kullanabilmesi için gereklidir. NCCL 2.24 ile birlikte, UB kayıt desteği şu alanlarda sağlanmıştır:

  • Birden fazla sıralayıcı üzerine kolektif bağlantı, özellikle IB SHARP. AllReduce, AllGather ve ReduceScatter desteklenmektedir.
  • NCCL, standart otonom ağlarda Ring algoritması için kaydedilmiş kullanıcı tamponlarını kullanır. ncclAllReduce, ncclAllGather ve ncclBroadcast desteklenmektedir.

NIC Fusion

NCCL, desteklenen sistemlerin zenginleştirilmesi sırasında uyum sağlamak için, çoklu NIC’leri (her GPU’dan daha fazla NIC) etkili bir şekilde çalışabilir hale gelmiştir. Fakat, çoklu NIC sistemlerinde aşağıdaki sorunlarla karşılaşılmıştır:

  • NCCL algoritmaları bir GPU için tek NIC ile çalışacak şekilde tasarlanmıştır. Bu nedenle, iki NIC’e bir GPU’da, veya dördü bir GPU’da olmak üzere, bu algoritmalar çökebilir.
  • NCCL’nin temel ayar kodu sadece bir NIC için tasarlanmıştır. Birden fazla NIC olduğunda, NCCL kendini aşırı optimize edebilir veya bazı NIC’leri kullanmamayı seçebilir.

NCCL 2.21’de uygulanan Port Fusion özelliği ile bu sorun kısmen çözüldü. Ancak, NIC Fusion ile daha farklı senaryoları kapsayacak şekilde geliştirilmiştir. NIC Fusion’un temel süreci, tüm ağ cihazlarını çıkarma, ardından uygunluk testleri ile birleştirme işlemlerini içerir.

NIC Fusion, fiziksel ve sanal cihazlar arasında ayrım yaparak, kullanıcının belirlediği kriterlere göre hangi NIC’lerin birleştirileceğine karar verir. Ayrıca, kullanıcı sağlanan topoloji dosyalarında yalnızca fiziksel cihazları içeren NCCL çıktısı alabilir.

İsteğe Bağlı Alım Tamamlama

NCCL’nin ağ eklentisi API’sini oluşturan ekip, yeni API’ler veya mevcut olanların genişletilmesi ile NVIDIA müşterilerine daha fazla fayda ve performans sağlama noktalarına odaklanıyor. NCCL 2.24 ile birlikte LL ve LL128 protokollerinin bazı özellikleri, alım tamamlama işlemlerinin gereksiz olabileceği bir iyileştirme sağlıyor.

LL ve LL128 protokollerinin kullanımı sırasında, NCCL, ağın alım tamamlama işlemlerini beklemek zorunda kalmamaktadır. Bu optimizasyon, ağ yığınında gereksiz sinyal ve senkronizasyon işlemlerinin atlanmasına yardımcı olur.

FP8 Desteği

NCCL artık FP8 tabanlı verilere, hem e4m3 hem de e5m2 formatlarında destek vermektedir. Bu veri türleri yalnızca NVIDIA Hopper ve daha yeni mimarilerde kullanılabilir.

Hata Düzeltmeleri ve Küçük Özellikler

NCCL 2.24 ayrıca aşağıdaki güncellemeleri içermektedir:

  • PAT ayarını iyileştirerek kötü performans durumlarını azaltma
  • Varsayılan olarak ana bellek tahsisi için cuMem* fonksiyonlarını kullanma
  • Yanlış bir değer ayarlandığında ncclInvalidUsage döndürme
  • UDS’de dosya tanıtıcısı sızıntısını düzeltme
  • Grafik tampon kaydı ile karışmamış işlem düzeltmeleri
  • Daha iyi bellek yönetimi için kullanıcı tampon kayıt işlemlerinde düzeltmeler yapma
  • IB kodundaki başlatılmamış alanları düzeltme
  • Bloklama olmayan ncclSend/ncclRecv karışıklıklarını giderme
  • Çeşitli derleyici ayarlamaları ve düzeltmeleri
  • ncclTopoPrintGraph içindeki yazım hatasını düzeltme

Özet

NCCL 2.24, ölçeklenebilirlik ve gözlemlenebilirlik konularında önemli yeni özellikler ve iyileştirmeler sunuyor. RAS alt sistemi, multinode kolektifleri için kullanıcı tampon kayıt desteği, NIC Fusion ve FP8 veri türü desteği gibi geliştirmeler, NCCL’in yeteneklerini genişletiyor.

Önceki NCCL sürümleri hakkında daha fazla bilgi almak için aşağıdaki yazılara göz atabilirsiniz:

  • Yeni Ölçekleme Algoritması ve Başlatma – NVIDIA Collective Communications Library 2.23
  • Hafıza Verimliliği, Daha Hızlı Başlatma ve Maliyet Tahmini – NVIDIA Collective Communications Library 2.22

NCCL ve NVIDIA Magnum IO hakkında daha fazla bilgi edinin. Ayrıca, Kapsamlı Derin Öğrenim Modelleri Eğitimi: NCCL ile AI Veri Merkezi Ağlarında En İyi Performans başlıklı isteğe bağlı oturumu da kaçırmayın.

Kaynak

Nvdia Blog

Düşüncenizi Paylaşın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgili Teknoloji Haberleri