3x Faster AllReduce with NVSwitch and TensorRT-LLM MultiShot

Üretim ortamlarında, kullanıcı sayılarının yüzlerce ile yüz binlerce arasında değişebildiği, özellikle giriş dizisi uzunluklarının her istekte farklılık gösterebildiği generatif yapay zeka yüklerinin dağıtılması, belirli zorluklar içermektedir. Bu tür ortamlarda düşük gecikme süreli çıkarım performansı elde etmek için, çoklu GPU kurulumları gereklidir. GPU nesli veya bellek kapasitesi ne olursa olsun, bu durum geçerlidir. Üretim seviyesindeki sistemlerde çıkarım performansını artırmak amacıyla, TensorRT-LLM Multi-shot adlı, yeni bir çoklu GPU iletişim protokolünü tanıtmaktan büyük heyecan duyuyoruz. Bu protokol, NVIDIA NVLink Switch‘ten yararlanarak iletişim hızını %300’e kadar artırmaktadır. Bu yazıda, bu yeni özelliğin nasıl çalıştığını ve geliştiricilerin ve çözüm mimarlarının geleneksel çoklu GPU iletişim yöntemlerinin sınırlamalarını nasıl aşmalarına yardımcı olduğunu ele alacağız.

Geleneksel AllReduce Algoritmaları ile İlgili Zorluklar

Düşük gecikme süreli çıkarım için çoklu GPU kullanımı kritik öneme sahiptir, bu durum tek bir GPU’nun bellek kapasitesine bakılmaksızın geçerlidir. Ancak düşük eşzamanlılıkta, GPU’ların veri alışverişinde geçirdiği süre, işlem süresini geçebilir. Bu nedenle, verimli bir AllReduce işlemi oldukça önemlidir; bu işlem, katılan her GPU’daki kısmi sonuçları birleştirir.

Geleneksel yaklaşımlar, kısmi değerlerin bir halka şeklinde GPU’lar arasında geçiş yaptığı halka tabanlı algoritmaları kullanmaktadır. Her GPU kendi değerlerini ekleyip, sonucu birlikteliğindeki komşusuna iletir. İşlem, N GPU’su olan bir yapıda toplamda 2N-2 kez tekrarlanır ve sonunda her GPU aynı toplam değere ulaşır. Ancak son GPU’dan çıkan toplam değerlerin geri kalan GPU’lara ulaşması için ikinci bir geçiş yapılması gerekmektedir.

Halka yöntemi, her iletişim adımında mevcut GPU’dan GPU’ya olan bant genişliğini verimli bir şekilde kullanmakta; ancak GPU sayısı arttıkça adım sayısı da artmaktadır. Bu, gecikmeyi artırır çünkü her adımda tüm GPU’ların senkronize kalması gerekir. Bu senkronizasyon gecikmeleri, ciddi gecikme genişlemelerine neden olup, daha sıkı gecikme hedeflerine ulaşmayı zorlaştırabilir.

Halka AllReduce algoritması aşağıdaki gibi tanımlanabilir:

  • Halka Algoritması: GPU-1 → GPU-2 → … → GPU-N → GPU-1 → GPU-2 → … → GPU-(N-1)
  • 2N-2 adım; her adımda tam tensor gönderimi/alımı
  • Gecikme: 2N-2 iletişim adımı. (N: GPU sayısı)
  • Trafik: (4N-4)/N tensor bayt gönderimi/alımı

TensorRT-LLM MultiShot ile AllReduce İletişim Zorluklarını Aşmak

TensorRT-LLM MultiShot, Ring AllReduce’un O(N) gecikmesini %300 oranında azaltan yeni bir algoritmadır; bu, NVSwitch’taki çoklu yayını (multicast) kullanarak gerçekleştirilir. Çoklu yayım, NVSwitch içindeki bir donanım hızlandırma özelliğidir; bu sayede bir GPU yalnızca bir kez veri gönderir ve veriyi diğer tüm GPU’lara eşzamanlı olarak iletebilir. Bu sayede iletişim adım sayısı iki inter-GPU senkronizasyonu ile minimize edilir, aynı zamanda bant genişliği açısından da verimli kalır.

TensorRT-LLM MultiShot, AllReduce işlemini önce bir ReduceScatter işlemi, ardından da bir AllGather işlemi ile ayırır (kollektif işlemlerin daha ayrıntılı tanımları için bu belgeyi inceleyebilirsiniz).

Her GPU, yalnızca sonuç tensörünün bir bölümünü toplamaktan sorumludur. İlk adımda (veya “shot”ta), her GPU, tensörün farklı dilimlerini, o dilimlerin birikiminden sorumlu olan ilgili GPU’ya gönderir. Yerel olarak toplandıktan sonra, her GPU artık kendine özgü sonuç dilimi için doğru toplamı elinde bulundurmaktadır.

İkinci adımda (veya “shot”ta), her GPU sonuç dilimini diğer tüm GPU’lara NVSwitch’in çoklu yayım yeteneğini kullanarak iletir. Bu işlem, gerekli olan bant genişliği miktarını minimize ederken, NVSwitch’in kendisi veri amplifikasyonu sağlar; her GPU, 1/N veri gönderir ve tam sonuç tensörünü tek bir adımda alır.

Tüm işlem yalnızca iki iletişim adımını gerektirir; bu durum kaç adet GPU bulunduğuna bağlı değildir.

  • TensorRT-LLM MultiShot Algoritması: GPU_N dilimleri gönderir, dilim toplamını hesaplar, sonuçları tek bir çoklu yayın işleminde iletir.
  • Gecikme: 2 iletişim adımı (GPU sayısından bağımsız)
  • Trafik: 2 tensor baytı gönderimi/alımı (GPU sayısından bağımsız)

Bu Neden Önemli

Bu algoritma, iki iletişim adımını gerektirdiğinden, Ring AllReduce’dan neredeyse %300 daha hızlıdır. Bu algoritmanın avantajları, özellikle daha küçük mesaj boyutları ve yüksek eşzamanlılık durumlarında belirginleşmektedir; böyle bir senaryo, mükemmel bir kullanıcı deneyimi için minimum gecikme ile gereken durumdur.

Bu, ya minimum gecikmeyi azaltmak ya da belirli bir gecikme süresinde çıktıyı artırmak için kullanılabilir. Daha agresif gecikme eşiklerine sahip senaryolarla, bu durum GPU sayısı ile süper-lineer ölçeklenmelere yol açabilir.

A chart showing the reduction in latency that TensorRT-LLM MultiShot provides across message sizes. 
Şekil 1. TensorRT-LLM MultiShot ile AllReduce gecikmesi %300’e kadar azaltılıyor.

Optimal çıkarım performansını sağlamak, dikkatli bir iş yükü analizi ve performans darboğazlarının derin bir anlayışını gerektirir. Bu anlayışı elde ederek hem iç mühendislik çalışmaları hem de dış geliştiricilerle ve araştırmacılarla yakın işbirliği yaparak, platformumuzun birçok yönünü hızla ve düzenli olarak optimize edebiliriz ve kullanıcılarımıza harika performans sunabiliriz.

Yeni performans optimizasyonlarını belirlemeye ve uygulamaya devam ederken; bazıları kapsamlı, bazıları ise daha dar kapsamlı olabilir. Bu optimizasyonlar hakkında düzenli güncellemeler sağlayarak, hem teknik motivasyon sağlar hem de nicel faydaları belirtiriz.

“`

Kaynak

Nvdia Blog

Exit mobile version