AGAnchorGPU

İş yükü kılavuzları

Tekrarlanabilir bir PyTorch çalıştırması planlayın

Belleği ölçün, bir paralellik stratejisi seçin, kontrol noktası geri yüklemeyi test edin ve sabit süreli bir PyTorch eğitim çalışması planlayın.

10 dk okuma · Güncellendi

Ölçeklendirmeden önce tek bir adımı eksiksiz kanıtlayın

Model ve veri kümesi revizyonlarını, bağımlılık sürümlerini, eğitim yapılandırmasını, rastgele tohumları ve konteyner özetini kilitleyin. Tek bir hızlandırıcıda model yükleme, tam bir eğitim adımı, değerlendirme, kontrol noktası kaydetme ve kontrol noktası geri yüklemeyi çalıştırın.

Daha uzun çalıştırma için amaçlanan dizi uzunluğu ve mikro parti ayarlarının aynısını kullanın. Optimize edici durumunu atlayan veya daha kısa diziler kullanan küçük bir pilot, ölçmeye çalıştığınız bellek sorununu gizleyebilir.

Temsili bir optimizasyon adımını ölçün

Mevcut eğitim programınızın içinde, temsili bir adımı bir tepe bellek ölçümüyle çevreleyin. Örnek; modelin, yığının ve optimize edicinin GPU üzerinde zaten başlatıldığını varsayar. Bazı durumlar tembel olarak oluşturulduğundan optimize edici adımını dahil edin.

torch.cuda.reset_peak_memory_stats()
optimizer.zero_grad(set_to_none=True)
loss = model(**batch).loss
loss.backward()
optimizer.step()
torch.cuda.synchronize()
peak_gib = torch.cuda.max_memory_allocated() / 2**30
print(f"Peak tensor memory: {peak_gib:.2f} GiB")

Bu, cihazın tüm ayak izini değil, en yüksek tensör tahsisini raporlar. Ayrıca ayrılmış belleği, çalışma zamanı ek yükünü ve sistemin cihaz belleği raporunu da inceleyin.

Doğru nedenle DDP veya parçalamayı seçin

DistributedDataParallel, her süreçte bir model kopyası tutar ve gradyanları eşitler. Tam eğitim durumu her GPU'ya sığdığında ve daha fazla veriyi paralel işlemek istediğinizde kullanışlıdır; VRAM belleğini tek bir bitişik havuzda birleştirmez.

Tamamen Parçalanmış Veri Paraleli, parametreleri, gradyanları ve optimize edici durumunu dağıtabilir. Bellek baskısı parçalamayı haklı çıkardığında kullanın ve ek iletişim ile dağıtılmış kontrol noktası karmaşıklığını hesaba katın.

Karma hassasiyet ve aktivasyon kontrol noktası oluşturma ayrı seçimlerdir. Daha düşük hassasiyet için sayısal davranışı doğrulayın; kontrol noktası oluşturma bellek tasarrufu sağladığında aktivasyonları yeniden hesaplamanın işlem maliyetini ölçün.

Tek düğümlü bir pilot başlatın

Eğitim betiği dağıtık yürütmeyi başlatmalı ve yerel sıra bilgisini kullanarak her GPU'ya bir süreç atamalıdır. Süreç sayısını görünür GPU'larla eşleştirin. Aşağıdaki, dağıtık farkındalıklı bir betik için başlatma örneğidir, eksiksiz bir eğitim uygulaması değildir.

torchrun --standalone --nproc-per-node=4 \
  train.py --config configs/pilot.yaml

Bunu yalnızca sağlanan bir düğümde çalıştırın. Yerel AnchorGPU demosu eğitim yürütmez veya uzak GPU'lar tahsis etmez.

Pilot sonucuna göre donanımı seçin

A100'ü daha düşük fiyatlı bir 80 GB CUDA taban çizgisi olarak kullanın ve iş yükünün yararlı bir Hopper'a özgü yolu varsa H100'ü test edin. H200 daha büyük bir CUDA bellek yapılandırması sunar. MI300X, tam uygulama ROCm üzerinde nitelendirilmiş olması koşuluyla bu katalogda hızlandırıcı başına daha fazla kapasite sunar.

AMD için özel uzantıları, çekirdekleri, paket sürümlerini ve ROCm ile test edilmiş PyTorch imajını eksiksiz bir set olarak kontrol edin. Çerçeve düzeyindeki uyumluluk, her isteğe bağlı işlemi doğrulamaz.

H200'ü MI300X ile karşılaştırın

Yalnızca kaydetmeyi değil, geri yüklemeyi de test edin

İlgili yerlerde model, optimize edici, zamanlayıcı, eğitim adımı, yapılandırma ve karma hassasiyet ölçekleyici durumunu kaydedin. Bir kontrol noktası kaydedin, süreci sonlandırın, ardından uzun çalışmaya başlamadan önce geri yükleyip devam edin.

Dağıtılmış duruma uygun bir kontrol noktası yöntemi kullanın. Kaydedilen yapıtların orijinal süreçten bağımsız olarak okunabildiğini ve değerlendirme çıktısının beklenen tolerans içinde kaldığını test edin.

Tüm hattı bütçeleyin

İndirmeleri, ön işlemeyi, veri yüklemeyi, doğrulamayı, kontrol noktası oluşturmayı, dışa aktarmayı ve çıktıları düğümden kopyalamayı dahil edin. Verimi; bellek, veri yükleme duraklamaları, iletişim süresi, kontrol noktası süresi ve doğrulama kalitesiyle birlikte ölçün.

7 günlük bir dönem, sınırlı bir uyumluluk ve profil oluşturma geçişi için yararlıdır. 30 günlük bir rezervasyonu yalnızca yararlı işi ve operasyonel tamponu tahmin edebildikten sonra seçin. Daha fazla GPU, yalnızca ek hesaplama; iletişim ve girdi hattı sınırlarını aştığında yardımcı olur.

Sabit dönemli faturalandırmayı anlayın

Kaynaklar ve ek okumalar

PyTorch dağıtılmış genel bakışPyTorch en yüksek ayrılmış bellekPyTorch torchrunPyTorch etkinleştirme denetim noktasıPyTorch Dağıtılmış Kontrol NoktasıROCm üzerinde PyTorch
Eğitim yapılandırmalarını karşılaştırın