Ayrıştırılabilen iş birimini tanımlamak
Kabul edilen bir sonucun ne olduğunu yazın: bir görsel, işlenmiş bir belge, bir dizi simülasyon veya eğitimin nihai durumu. Ardından bir birimin diğerlerini beklemeden hesaplanıp hesaplanamayacağını sorun. İki belge işlenme sırasında bağımsız olabilir, ancak ortak bir dizin oluşturma adımına bağlı hale gelebilir. Bölümleme, bu ikinci adımı paralellik vaadi içinde unutmak yerine onu tanımlamalıdır.
Bilişimsel bağımsızlığı iş bağımsızlığından ayırın. Bir çıktı teknik alışveriş olmadan üretilebilir, ancak tüm parti onaylanmadan kullanılamaz kalabilir. Bu nedenle hesaplama birimini, teslim birimini ve birleştirme kuralını adlandırın. Bu ortak sözcük dağarcığı, satın almanın kartları sayarken uygulama ekibinin aynı modelin örneklerini veya parçalarını saymasını önler.
Bağımsız işler ile sıkı işbirliği arasında seçim yapmak
Bağımsız görevler için her süreç kendi girdilerini alır ve tanımlanabilir bir çıktı üretir. Başka bir kart, her adımda senkronizasyon olmadan başka bir görevi yürütebilir. Bu mod, hedef belirli bir zaman aralığında tamamlanan miktara odaklandığında ilgi çekicidir. Tek başına bir görevi otomatik olarak hızlandırmaz ve veri, depolama veya lisanslar üzerindeki çekişme yine doğrulanmalıdır.
İşbirlikçi bir çalışmada, aygıtlar veri alışverişinde bulunur veya bir ara sonucu bekler. Program bu dağıtımı yönetmelidir. CUDA kılavuzu, birden fazla GPU'nun kullanılmasının bağlamlar, veri dağıtımı, başlatmalar ve iletişimler içerdiğini açıklar. Bunlar yazılım yolunun ve gözlemlenen sistemin özellikleridir; katalogdaki bir kartın adı, bu yolun zaten var olduğunu kanıtlamaz.
| Soru | Bağımsız işler | İşbirlikçi çalışma |
|---|---|---|
| Bir kart ne alır? | Ayrı, eksiksiz bir görev | İşin bir parçası veya bir kopyası |
| Neyin koordine edilmesi gerekir? | Girdilerin atanması ve çıktıların toplanması | Alışverişler, sıralama ve senkronizasyonlar |
| Hangi fayda doğrulanmalı? | Zaman aralığı başına kabul edilen sonuç sayısı | Uyarlanmış süre veya kapasiteyle aynı sonuç |
| Hangi başarısızlık öngörülmeli? | İzole bir görev veya yayın | Bir katılımcının kullanılamamasının gruba etkisi |
Kopyalamayı bellek dağıtımıyla karıştırmamak
Bir modelin birden fazla kopyası, parametrelerinin kartlar arasında bölündüğü anlamına gelmez. PyTorch DistributedDataParallel, yerel modellerini eğiten süreçler arasında gradyanları senkronize eder. Bu nedenle bu yaklaşımla, yalnızca adına bakarak, bir karta sığmayacak kadar büyük bir modelin birden fazlasına sığacağı sonucuna varılamaz. Bir bölümleme mekanizması kendi belgelerini ve kendi doğrulamasını gerektirir.
Her kartın belleği, yazılımın oraya gerçekten yerleştirdiklerini karşılamalıdır: veriler, model durumu, geçici alanlar ve olası alışverişler. Zirve, ayarlara ve işleme aşamasına göre değişebilir. Bunu aygıt başına kaydedin. Nominal kapasitelerin toplamı, bir kartın belleğinin yetmediği, diğerlerinin ise belleğini koruduğu bir dengesizliği gizler. Partinin toplam kapasitesi senaryoyu kabul etmek için yeterli değildir.
Kurgusal örnek: sekiz bağımsız dönüştürmeyi paylaştırmak
Kurgusal « Kitaplar Dizini » ekibi sekiz belge dönüştürmesi hazırlıyor. Çalışma varsayımında, her dönüştürme yükleme ve çıktı dahil bir kartı on iki dakika meşgul ediyor. Bir görev karta tek başına sığıyor ve nihai birleştirmeden önce hiçbir alışveriş gerekmiyor. Bu süreler yalnızca akıl yürütmeyi kurmaya yarar: Capordia tarafından sunulan hiçbir yürütmeyi veya GPU performansını tanımlamazlar.
Tek kartla, birbirini izleyen sekiz görev 8 × 12 = 96 dakika demektir. İki kart ve her birine dört görev düşen dengeli bir dağıtımla, paralelleştirilebilir kısım teorik olarak 48 dakika sürer. Nihai birleştirme ayrı bir birimde on dakika gerektiriyorsa, başlangıç öncesi bekleme hariç toplam yol sırasıyla 106 veya 58 dakika olur. Bu hesaplama, iki kartın birbirlerinin yüklemelerini yavaşlatmadığını varsayar.
| Organizasyon | Paralelleştirilebilir kısım | Birleştirme | Hesaplanan süre |
|---|---|---|---|
| Tek kart, sekiz görev | 96 dk | 10 dk | 106 dk |
| İki kart, her birine dört görev | 48 dk | 10 dk | 58 dk |
Bu teorik kazancı geçersiz kılabilecek unsurları ortaya koymak
Aynı örnekte, belgeler eşit boyutta olmayabilir. En uzun dördünü bir karta atamak, diğerinin işin sonunda beklemesine yol açar. Uygunluk durumuna göre dağıtım dengeyi iyileştirebilir, ancak güvenilir bir atama mekanizması ve bir kabul politikası gerektirir. Kuyruk rehberi bu organizasyonu ele alır; buradaki hesaplama, bunun hâlihazırda kurulu olduğunu kanıtlamaz.
Depolama da baskın ortak kaynak hâline gelebilir. Aynı verileri okuyan veya aynı anda büyük çıktılar yazan iki süreç, mutlaka iki kat veri yoluna sahip değildir. Araçların ve lisansların eşzamanlılık sınırlarını da kontrol edin. Paralelleştirilemeyen kısım artarsa, tüm takvimi yeniden yapın. Bir aşamada kazanılan zaman, başka bir yerde eklenen gecikmeyi gizlememelidir.
Dağıtılmış bir iş için gerçek topolojiyi almak
Hangi kartların görünür olduğunu, nasıl iletişim kurduklarını ve hangi ana makine kaynaklarının süreçlerini paylaştığını sorun. Erişilebilir aygıtları yalnızca bir yönetici konsolundan değil, kullanılan ortamdan doğrulayın. CUDA, başka bir GPU'nun belleğine erişimin özellikle topolojiye ve sistem yeteneklerine bağlı olduğunu belirtir. Bir işlevin bir model tarafından desteklenmesi, makinede beklenen bağlantının bulunduğunu kanıtlamaz.
Veri akışının basit bir şemasını tutun: giriş, ilgili kart veya süreç, alışverişler, nihai toplama ve çıkış. Her ok için, ana makine belleğinden mi, GPU'lar arası bir bağlantıdan mı yoksa ağdan mı geçtiğini belirleyin. Bu görünüm, kabul kontrollerini seçmeye yarar. Belirli bir teknolojiyi dayatmaz ve çoklu GPU talebini belirli bir topoloji vaadine dönüştürmez.
Beklenen sonucu değiştirmeden iki organizasyonu karşılaştırmak
Küçük, temsili bir korpus hazırlayın ve izinli hedefinizde önce bir referans organizasyonu, ardından aday organizasyonu çalıştırın. Sürümleri, ayarları, beklenen kaliteyi ve birleştirme kurallarını koruyun. Kabul edilen sonuca kadar geçen süreyi, her kartın en yüksek bellek kullanımını, hataları ve ortak kaynak tüketimini karşılaştırın. Gözlemleri tahminlerden ayırın; önerilen bir komut, elde edilmiş bir sonuç yerine geçmez.
Özellikle kabul edilen çıktı sayısının aynı kaldığını ve hiçbir girdinin atlanmadığını doğrulayın. İşlem sırasına duyarlı bir hesaplama için, keyfi bir eşitlik yerine gerekçeli bir tolerans seçin. Farklı bir kaliteyle daha hızlı biten bir organizasyon, başka bir soruya yanıt verir. Paylaşımın avantajlı olmadığı bir durumu da saklayın: bu sınır, ortak yükü olmayan bir kart sıralamasından seçimi daha iyi açıklar.
Seçimi talep edilen kapasiteye dönüştürmek
Son olarak eşzamanlı görev sayısını, her biri için gereken kartları ve vazgeçilmez koşulları yazın. İki karta dağıtılmış bir görev ile tek kartlık iki görev, kart toplamı eşit olsa bile iki farklı organizasyonu temsil eder. Seçilen yapılandırma, gereken organizasyona izin vermelidir; nominal toplamdan yola çıkıp ona sonradan bir kullanım uydurmayın.
Katalog, kart partilerini gösterir. Bir B200 partisi, her biri 180 GB olan iki GPU içerir; bu bileşim, bir yazılımın bunları tek bir bellek gibi kullanacağını garanti etmez. Sonraki adım, ihtiyacı partiyle eşleştirmek ve ardından gerçekten gerekli olan özellikleri teslim almaktır. Belirleyici koşullar doğrulanmadığı sürece takvim, maliyet ve karar geçici kalır.
Karar vermek için sorular
İki GPU her zaman tek bir GPU'dan daha mı hızlıdır?
Hayır. Kazanç, paralelleştirilebilir orana, veri alışverişine ve ortak kaynaklara bağlıdır. Bölünemeyen tek bir görev için ikinci kart kullanılmadan kalabilir. Aynı kabul edilen sonuca kadar geçen süreyi, açık bir protokol üzerinde karşılaştırın.
İki kartlık bir parti, programım için kullanılabilir belleği ikiye katlar mı?
Otomatik olarak değil. Her aygıtın kendi belleği vardır ve programın durumunu veya verilerini dağıtması gerekir. Bir modelin replikasyonu ise tam tersine bu durumun büyük bir kısmını çoğaltabilir. Yazılım mekanizmasını ve kart başına tepe değeri doğrulayın.
Bağımsız görevlere ne zaman başlanmalı?
Her birimin ayrı ayrı hesaplanabildiği ve aranan faydanın daha fazla birimi tamamlamak olduğu durumlarda. Yine de atamayı, yük dengesini ve nihai birleştirmeyi doğrulamak gerekir; depolama ve lisansların otomatik olarak uyacağını varsaymamalısınız.