Nvidia'nın Çoklu GPU çoklu kart iletişim çerçevesi NCCL nasıl anlaşılır?

Lei Feng.com AI Teknolojisi Yorumu Basın, bu makale Tan Xu Zai Zhihu sorusundan geliyor [Nvidia'nın Çoklu-GPU çoklu kart iletişim çerçevesi NCCL nasıl anlaşılır? Altındaki yanıt, Leifeng.com AI Technology Review yeniden basma yetkisine sahiptir.

Soru detayları:

Çoklu GPU paralel eğitimi genellikle derin öğrenmede gereklidir ve Nvidia'nın NCCL kütüphanesi NVIDIA / nccl (https://github.com/NVIDIA/nccl), büyük derin öğrenme çerçevelerinde (Caffe / Tensorflow / Torch / Theano) çoklu kart paralelliği kullanır NCCL'nin ilkeleri ve özellikleri nasıl anlaşılır?

Cevap:

NCCL, Nvidia Collective multi-GPU Communication Library'nin kısaltmasıdır.Çoklu GPU'ları uygulayan kolektif bir iletişim (hepsini toplama, azaltma, yayınlama) kitaplığıdır. Nvidia, PCIe, Nvlink ve InfiniBand'de daha yüksek seviyelere ulaşmak için birçok optimizasyon yapmıştır. İletişim hızı.

Aşağıdakiler, temel iletişim ilkeleri, halka tabanlı kolektifler, tek bir makinede çoklu kart ve çok makineli çoklu kart uygulaması üzerinde NCCL ve son olarak NCCL'nin fiili kullanımında bazı deneyimleri paylaşma dahil olmak üzere aşağıdaki yönlerden NCCL'nin özellikleridir.

(1) iletişim ilkel

Paralel görevlerin iletişimi genel olarak Noktadan noktaya iletişim ve Toplu iletişim olarak ikiye ayrılabilir. Bu P2P iletişim modu, uygulaması nispeten basit olan yalnızca bir göndericiye ve bir alıcıya sahiptir. İkinci toplu iletişim, birden çok göndericiyi ve birden çok alıcıyı içerir.Genel iletişim ilkeleri arasında yayınlama, toplama, tümünü toplama, dağıtma, azaltma, tamamen azaltma, dağıtmayı azaltma, hepsi bir arada vb. Yer alır. Yaygın olarak kullanılan birkaç işlemi kısaca tanıtın:

Azaltma: Birden çok göndericiden veri alın ve son olarak bir düğümde birleştirin.

Tam azaltma: Birden çok göndericiden veri alın ve son olarak her düğümde birleştirin.

Geleneksel kolektif iletişim, iletişim düğümlerinden oluşan topolojinin, aşağıdaki şekilde gösterildiği gibi kalın bir ağaç olduğunu varsayar, böylece iletişim verimliliği en yüksek olur. Bununla birlikte, gerçek iletişim topolojisi daha karmaşık olabilir ve kalın bir ağaç değildir. Bu nedenle genellikle halka tabanlı Kolektif iletişim kullanılır.

(2) halka temelli kolektifler

Halka tabanlı kollektifler, uçtan-uca bağlantılar aracılığıyla tek yönlü bir halka oluşturmak için tüm iletişim düğümlerini birbirine bağlar ve veriler halka üzerinde sıralı olarak iletilir. Örnek olarak yayını alın. 4 GPU olduğunu, GPU0'ın gönderen olduğunu ve geri kalan GPU'lara sıralı bir şekilde iletilen GPU0- > GPU1-- > GPU2-- > GPU3, veri hacmi N ise, bant genişliği B'dir ve tüm iletim süresi (K-1) N / B'dir. Zaman, çok verimli olmayan düğüm sayısı ile doğrusal olarak artar.

İletilecek veriler S bölümlerine bölünür ve her seferinde sadece N / S veri hacmi iletilir.İletim süreci aşağıdaki gibidir:

GPU1, GPU0'dan bir veri parçası aldıktan sonra, bunu halkanın bir sonraki düğümüne geçirir ve bu şekilde, son zaman alır

S * (N / S / B) + (k-2) * (N / S / B) = N (S + K-2) / (SB) - > N / B, koşul, S'nin K'den çok daha büyük olmasıdır, yani, veri kopyalarının sayısı düğüm sayısından fazladır Bu, karşılanması kolaydır. Bu nedenle iletişim süresi düğüm sayısının artmasıyla artmaz, sadece toplam veri miktarı ve bant genişliği ile ilgilidir. İndirgeme, toplama ve benzeri diğer iletişim işlemleri.

Peki, GPU'nun iletişim düğümü olduğu bir senaryoda bir iletişim halkası nasıl oluşturulur? Aşağıda gösterildiği gibi:

Tek bir makinenin 4 kartının aynı PCIe anahtarı üzerinden bir CPU'ya takıldığı bir senaryo:

Tek bir 8 kartın iki CPU altındaki farklı PCIe anahtarları aracılığıyla monte edildiği senaryo:

(3) NCCL uygulaması

NCCL, 3 ilkel işlem dahil olmak üzere CUDA C ++ çekirdekleri olarak uygulanır: Kopyala, Azalt, Azalt ve Kopyala. Şu anda NCCL 1.0 sürümü yalnızca tek makineli çoklu kartı destekler ve kartlar PCIe, NVlink ve GPU Direct P2P aracılığıyla iletişim kurar. NCCL 2.0, birden çok cihazı ve birden çok kartı destekleyecek ve GPU Direct RDMA ile Soketler (Ethernet) veya InfiniBand aracılığıyla birden çok cihaz arasında iletişimi destekleyecektir.

Aşağıdaki şekilde gösterildiği gibi, tek bir makinedeki birden çok kart PCIe ve CPU soketi aracılığıyla iletişim kurar ve birden çok makine InfiniBand aracılığıyla iletişim kurar.

Benzer şekilde, çok makineli çok kartlı dahili olarak, bir iletişim halkası da oluşturulur.

Aşağıda, iletişim hacmi arttıkça bağımsız bir 4 kart (Maxwel GPU) üzerindeki her işlemin bant genişliği hızındaki değişim gösterilmektedir.Bant genişliğinin üst sınırının PCIe bant genişliğine yakın olan 10 GB / sn'ye ulaşabildiği görülebilir.

Aşağıdaki şekil, Allreduce'un tek bir makinenin farklı mimarileri altında hız karşılaştırmasını göstermektedir:

DGX-1 mimarisinden bağımsız olarak, bu Nvidia tarafından 60 GB / sn bant genişliğiyle başlatılan bir derin öğrenme platformudur. İlk üçü, tek makineli çoklu kart için tipik üç bağlantı yöntemidir ve üçüncüsü, dört kartın hepsinin bir PCIe anahtarı üzerinde olmasıdır, bu nedenle bant genişliği daha yüksektir ve erişebilir > 10 GB / sn PCIe'nin bant genişliği. İkincisi, iki GPU'nun anahtar yoluyla bağlanması ve ardından CPU aracılığıyla bağlanmasıdır. Hız biraz daha düşük olacaktır. Birincisi, iki GPU'nun CPU'dan geçmesi ve ardından QPI'dan ve iki GPU'nun diğer CPU'dan geçmesidir. Kart bağlı olduğundan hız en yavaş olanıdır, ancak aynı zamanda > 5 GB / sn.

Aşağıdaki resim, Allreduce'un birden fazla makine altındaki hız performansını göstermektedir.Soldaki resim 8 kartlı iki makineyi göstermektedir; makinenin içindeki PCIe ve makinelerin arasında ulaşabileceği InfiniBand > InfiniBand, 10GB / sn'lik bir hız ile temelde makine içindeki iletişim hızına ulaşabilir.

Aşağıdaki şekil, NCCL'nin CNTK ResNet50 üzerindeki ölçeklenebilirliğini göstermektedir, 32 kart temelde doğrusal hızlanma sağlayabilir.

(4) Gerçek ölçüm deneyimimiz

Öncelikle, aşağıdaki gibi bir K40 GPU makinesinde GPU bağlantı topolojisini test edin:

İlk dört kartın ve son dört kartın farklı CPU grupları üzerinden bağlandığı, GPU0 ve GPU1'in doğrudan PCIe anahtarı üzerinden bağlandığı ve ardından CPU aracılığıyla GPU2 ve GPU3'e bağlandığı görülebilir.

Aşağıda PCIe bant genişliği testi verilmiştir. GPU0 ile GU1 arasındaki iletişimin 10.59GB / s'ye ulaşabildiği görülebilir.GPU0 ile GPU2 ~ 3 arasındaki iletişim CPU nedeniyle daha yavaştır ve GPU4 ~ 7 ile iletişimin QPI üzerinden geçmesi gerekir, bu nedenle tekrar yavaşlar Biraz ama 9.15GB / s'ye ulaşabilir.

NVlink ile bağlanan GPU'nun iletişim hızı 35 GB / sn'ye ulaşabilir:

NCCL, farklı model boyutları ve hesaplanan parti boyutları nedeniyle farklı derin öğrenme çerçevelerinde (CNTK / Tensorflow / Torch / Theano / Caffe) farklı performanslara sahiptir. Örneğin, yukarıdaki şekilde CNTK'daki Resnet50, 32 kartlık doğrusal bir hızlanma oranına ulaşabilir. Facebook, ImageNet'i bir saat önce eğitebiliyordu, ancak NMT görevinde bu kadar büyük bir hızlanma oranına sahip olmayabilir. Çünkü paralel hesaplamanın verimliliğini etkileyen ana faktörler paralel görevlerin sayısı, her bir görevin hesaplama miktarı ve iletişim süresidir. Sadece mutlak iletişim miktarına değil, aynı zamanda iletişim ve hesaplamanın aynı anda gerçekleştirilip gerçekleştirilemeyeceğine ve hesaplama / iletişim oranına da bakarız İletişim daha küçük bir hesaplama oranını hesaba katarsa, paralel hesaplama görevi daha verimli olacaktır. NMT modelleri genellikle büyüktür, düzinelerce megabayttan yüzlerce megabayta kadar değişir.Birkaç megabayt boyutunda olabilen mevcut görüntü modelinin aksine, iletişim oranı daha yüksek olacaktır.

Aşağıda, NMT modelinin tek makineli çoklu kart hızlandırma işleminin basit bir karşılaştırma tablosu verilmiştir:

Yukarıdakiler, NCCL'nin biraz anlaşılmasıdır. Pek çok bilgi NCCL'nin resmi belgelerinden gelir. Değişim ve tartışmaya hoş geldiniz.

"Canavar Avı 2" Xu Chengyi ve Tony Leung, Nanjing'de Huba'nın doğum yerini havaya uçurdu, yüzlerce kişi yeni yılı planlanandan önce kutladı
önceki
"Glory of the King" deki kahramanlar için en iyi araba nasıl bir araba?
Sonraki
"Anılar Ölmeden Aşk" gösteriminin ilk turu sona erdi, izleyiciler: İzledikten sonra kaçmak istiyorum
Veri Bağımlılığı: Günümüzün yapay zeka alanındaki temel risk
"Bumblebee" Çince fragmanı: G1 modelleme Optimus Prime / Sasser / Sonic çıktı
Porsche Panamera Sport Turismo nasıl bir araba
2017 Dongfeng Citroen Elysee'nin iyileştirmeleri nelerdir?
Dünyanın ilgi gördüğü BYD enerji araçları arasında e5'e ne dersiniz?
Tao Piao Piao Röportajı Chen Sicheng: "Tang Tang" serisi Marvel evreni gibi olacak
Araba sahipleri, Chery Jaguar Land Rover'ın bu arabayı keşfetmesi hakkında ne düşünüyor?
Yu Chengdong: Huawei, ev aletleri için asla akıllı donanım yapmayacak ve üç yıl içinde Çin'in IoT cihazlarının 1 / 3'ünü kazanmayı planlıyor
Vibrato oynamak, haraç çayı içmek ve "Vahşi Yaşam Operasyonu" oynamak genç Japon kızların günlük yaşamlarıdır
Yeni bir araba nasıl seçilir? Bu arabalar minimum 40.000 yuan ile gidebilir!
İç Moğolistan'ın Chifeng kentinde bir polis memuru fazla mesai yaptı ve kalp krizinden öldü.Sadece iki gün içinde 4 polis öldü
To Top