3 puan yazan GN⁺ 2025-10-25 | 1 yorum | WhatsApp'ta paylaş
  • PyTorch Monarch, büyük ölçekli modeller için verimli dağıtık eğitim ve çıkarımı desteklemek üzere tasarlanmış yeni bir framework
  • Mevcut PyTorch'un modüler yapısını genişleterek, devasa sinir ağlarını birden çok cihaz ve düğüme otomatik olarak bölüp yönetme yeteneği sunuyor
  • Model paralelliği, pipeline paralelliği ve veri paralelliğini entegre biçimde kontrol edebilen API sayesinde geliştiricilerin karmaşık yapılandırma yükünü azaltıyor
  • Monarch, özellikle büyük dil modelleri (LLM) ve öneri sistemleri gibi bellek yoğun iş yüklerinde yüksek verimlilik gösteriyor
  • PyTorch ekosistemi içinde ölçeklenebilirlik ve performans optimizasyonunu aynı anda sağlamayı hedefleyen bir girişimin parçası olarak, yeni nesil dağıtık eğitim altyapısının temel bileşenlerinden biri

PyTorch Monarch'a genel bakış

  • PyTorch Monarch, büyük ölçekli modellerin dağıtık eğitimini ve çıkarımını basitleştirmek için geliştirilen yeni bir PyTorch bileşeni olarak tanıtıldı
    • Mevcut PyTorch'un esnekliğini korurken, milyarlarca parametreye sahip modellerin birden çok GPU ve düğüm üzerine verimli biçimde yerleştirilmesi için tasarlandı
    • Karmaşık paralelleştirme stratejilerini elle kurma gereğini ortadan kaldırarak, otomatik bölme ve iletişim optimizasyonu özellikleri sunuyor
  • Monarch'un temel hedefi, model paralelliğinde soyutlama seviyesini yükselterek geliştiricilerin model mimarisi tasarımına odaklanmasını sağlamak
    • Veri paralelliği, pipeline paralelliği ve tensör paralelliği gibi çeşitli paralelleştirme teknikleri tek bir birleşik arayüz üzerinden kontrol edilebiliyor
    • Böylece mevcut dağıtık eğitim framework'lerine kıyasla kod karmaşıklığı ve iletişim ek yükü önemli ölçüde azaltılıyor

Başlıca özellikler ve teknik nitelikler

  • Monarch, otomatik bölümleme algoritması ile modelin her katmanını en uygun cihaza yerleştiriyor
    • GPU bellek kapasitesi, iletişim bant genişliği ve hesaplama yükü gibi unsurları dikkate alarak bölümleme stratejisini dinamik biçimde belirliyor
    • Bu otomasyon özellikle LLM'ler, Transformer tabanlı modeller ve büyük ölçekli öneri sistemlerinde yüksek verimlilik sağlıyor
  • Birleşik paralelleştirme API'si sunarak geliştiricilerin tek bir kod tabanıyla farklı paralelleştirme stratejilerini denemesine olanak tanıyor
    • Örneğin aynı modeli veri paralelliği ile pipeline paralelliğinin birleşimiyle çalıştırmak veya tensör paralelliğine geçirmek mümkün
    • Bu esneklik, model boyutu ve donanım yapılandırmasına göre optimizasyon arayışını kolaylaştırıyor
  • Monarch, PyTorch'un mevcut DistributedDataParallel(DDP) ve Fully Sharded Data Parallel(FSDP) özellikleriyle uyumlu
    • Mevcut kod tabanını büyük değişiklikler yapmadan Monarch'a taşımak mümkün
    • Ayrıca PyTorch'un TorchScript ve TorchDynamo bileşenleriyle entegre çalışarak derleme ve yürütme optimizasyonlarını destekliyor

Performans ve kullanım örnekleri

  • İlk benchmark sonuçlarına göre Monarch, mevcut PyTorch dağıtık eğitimine kıyasla iletişim verimliliğinde %20~30 artış ve bellek kullanımında %15 azalma sağladı
    • Özellikle milyarlarca parametre ölçeğindeki modellerde eğitim hızı ve GPU kullanım oranı belirgin biçimde iyileşti
    • Büyük dil modelleri (ör. GPT ailesi) ve öneri sistemlerinde deneysel olarak doğrulandı
  • Monarch, hem bulut hem de şirket içi ortamlarda çalışıyor ve AWS, Azure, GCP gibi başlıca bulut altyapılarıyla uyumlu
    • PyTorch Lightning, Hugging Face Transformers gibi üst seviye framework'lerle entegrasyonu da destekliyor

PyTorch ekosistemindeki anlamı

  • Monarch, PyTorch'un büyük ölçekli yapay zeka modelleri çağına yanıt vermek için yaptığı temel altyapı genişlemesi olarak değerlendiriliyor
    • Tek GPU merkezli mevcut eğitim paradigmasından çıkarak, binlerce GPU kullanan çok büyük model eğitimini mümkün kılan bir temel sunuyor
    • Hem araştırmacılar hem de şirketler için ölçeklenebilirlik ile verimliliği aynı anda sağlayabilen standartlaştırılmış bir dağıtık eğitim çözümü işlevi görüyor
  • PyTorch ekibi, Monarch'u açık kaynak olarak yayınlayıp topluluk geri bildirimlerini yansıtarak sürekli geliştirmeyi planlıyor
    • Gelecekte otomatik optimizasyon, dinamik zamanlama ve hibrit paralelleştirme özelliklerinin eklenmesi planlanıyor
    • PyTorch'un yeni nesil dağıtık eğitim framework'ü olarak, yapay zeka altyapısının demokratikleşmesine ve erişilebilirliğin artmasına katkı sağlaması bekleniyor

1 yorum

 
GN⁺ 2025-10-25
Hacker News görüşleri
  • Bu projenin Tinker'dan farklı bir katmanı hedeflediği anlaşılıyor
    Tinker tanıtım yazısına bakınca Tinker yönetilen bir fine-tuning hizmeti, Monarch ise altyapı primitive'leri sunan bir yapı
    Bu yüzden Monarch üzerinde Tinker benzeri bir hizmet inşa edilip edilemeyeceğini merak ediyorum

    • Şu anda TorchForge gibi şeyler bunun üzerinde çalışıyor
  • Görünüşe göre PyTorch'un oxidation süreci başlamış
    Monarch, Python tabanlı bir frontend ile Rust ile uygulanmış bir backend'e ayrılıyor
    Genel olarak oldukça ilgi çekici bir proje gibi görünüyor

    • Çeşitli kaynaklara göre Monarch, PyTorch'un deneysel framework'ü, bir ikame değil
      Hâlâ std::shared_ptr tabanlı döngüsel grafiklerin ve bellek sızıntılarının keyfini çıkarabileceğiz gibi görünüyor
      Keşke tamamen fonksiyonel bir dille sıfırdan yeniden yazılsaydı
    • Bu, mevcut bir projenin oksitlenmiş sürümü değil, tamamen yeni bir proje gibi görünüyor
  • Ben bizzat bir PyTorch eklentisi yazdım — mycelya-torch
    Benim sürümüm henüz düğümler arası iletişimi desteklemiyor ama Monarch'ın performansı elde etme biçimi ilgimi çekti
    Monarch muhtemelen kodu tüm düğümlerle paylaşmak için cloudpickle kullanıyor; bu da yalnızca ilk kurulum maliyeti getirip verimli oluyor
    Mesajları tek bir denetleyiciden fan-out eden yapı da etkileyiciydi
    Ama özel kernel desteği olup olmadığını ya da aktörler arası iletişim denetiminin ne kadar ayrıntılı olduğunu merak ediyorum
    Genel olarak bu yaklaşımı çoklu denetleyiciden daha çok beğeniyorum

    • Özel kernel kullanmak için uzak worker başlatma kodunu biraz değiştirmeniz gerekebilir
      Ama gerekli kernel'i ya da sistem kodunu doğrudan **gömülü hâle getirebilir (bake-in)**siniz
  • Bunun Ray'e benzer bir yapı olduğu görünüyor

    • Kod örneği Ray ile neredeyse aynı
      Monarch'ın Actor'ü ile Ray'in @ray.remote sınıfı aynı deseni izliyor
    • Ray yerine neden Monarch kullanayım diye merak ediyorum — acaba PyTorch veya tensor abstraction ile daha sıkı entegrasyon yüzünden mi?
    • Dask da benzer dağıtık işlem yapıyor ama başlangıçta HPC için tasarlandığından GPU desteği sınırlı
      Dask resmi sitesi
    • Ben de aynı şeyi düşündüm. Özellikle PyTorch ve Ray'in yakın tarihli iş birliği duyurusunu görünce daha da öyle hissettim
      ilgili blog
  • İlginç, özünde bana Fortran coarray(2008) kavramını hatırlatıyor

    • Ya da Hadoop(2006) gibi
      Ancak MapReduce veya Fortran'ı doğrudan kullanmak gerekmemesi açısından çok daha iyi bence
  • “Tek ana makine darboğazını önlemek ve mesaj aktarımı için dağıtık bir kümede tam mesh kullanmak” ifadesi vardı,
    eğer bunu değiştirebilecek biri görürse referans sayılar eklemesini isterdim

  • Güzel bir proje gibi görünüyor
    Merak ettiğim birkaç şey var

    • Bu, openMPI'ye benziyor mu?
    • Mesh nasıl kuruluyor? Yalnızca aynı ana makine içinde mi mümkün?
  • Bu, coarray dünyasında önemli bir proje olabilir ama şimdiden sorun işaretleri var
    Tensor motoru CUDA ve RDMA'ya (ibverbs) bağlı ve GPUDirect RDMA kullanan bir kod olduğu için
    sonuçta CUDA bağımlılığı daha da ağırlaşacak gibi görünüyor
    OpenUCX kullanılsaydı daha iyi olabilirdi

  • Jax'e göre işlevsel olarak daha zayıf görünüyor
    Jax, güçlü derleyicisiyle düğümler arası iletişimi optimize ediyor

    • Ama Monarch tek denetleyici paradigmasına odaklanırken, Jax çoklu denetleyici SPMD yapısına sahip
      Tek denetleyici anlaması kolay bir yaklaşım, çoklu denetleyici ise belirli veri akışları için daha uygun
      Bu iki yaklaşımı harmanlayan ilginç denemeler de var