İçeriğe geç
edumintsBlog
Yazılım3 dk okuma

Modeliniz AWS Trainium Üzerinde Çalışıyor mu? Hemen Kontrol Edin

Kaynak: Hugging Face Blog

Paylaş
YazılımEdumints Blog
İçindekiler 4 başlık

Daha önce AWS Trainium için yerel PyTorch arka ucu olan TorchNeuron (torch-neuronx paketi) tanıtılmıştı. Bu altyapı sayesinde Transformers, kendi modelleme kodunu diğer donanımlarda olduğu gibi doğrudan Trainium üzerinde çalıştırabilir; yani Hugging Face Hub üzerindeki herhangi bir Transformers modeli potansiyel olarak bu donanımda çalışabilir. Peki gerçekte hangileri sorunsuz çalışıyor?

Yeni torch-neuronx model support Space aracı, Hub üzerindeki en popüler modeller için bu soruyu yanıtlıyor. Bir modelin Trainium üzerinde hiçbir değişiklik yapılmadan çalışıp çalışmadığını gösteriyor ve modeli doğrudan kendi ortamınızda çalıştırmanız için gereken betiği sunuyor. Yazılım geliştiriciler için bu araç, donanım uyumluluğunu test etmek için saatler harcamak yerine doğrulama sürecini saniyelere indiriyor.

Bir Modeli Sorgulama#

Space aracı açıldığında varsayılan olarak Selected (Seçilenler) görünümüyle karşımıza çıkar. Bu görünüm, indirme sayısı ve trend puanına göre en popüler modeller arasından seçilen özel bir listeyi içerir. Her satırda geliştiriciler için kritik olan şu metrikler yer alır:

  • Test sonucu (başarılı olup olmadığı),
  • Modelin kaç Trainium çekirdeği (core) üzerine paylaştırıldığı (sharded),
  • Derleme dahil toplam çalışma süresi (wall time),
  • Ulaşılan en yüksek cihaz belleği (peak device memory) kullanımı.

Belirli bir modeli aramak için Trending veya Downloads görünümlerine geçip model adının bir kısmını yazabilirsiniz. Bir model bilerek kapsam dışı bırakıldıysa, araç bunun nedenini açıklar (çoğunlukla henüz önceliklendirilmemiştir veya gerçekten uyumsuzdur). Ayrıca Neuron derleyicisi (neuronx-cc) ve Transformers sürümlerini filtreleyerek inceleme yapabilirsiniz. Şu an için yalnızca text-generation ve image-text-to-text görevlerindeki Transformers modelleri test edilmektedir; ancak yakında diffusers ve sentence transformers desteği de eklenecektir.

Kendiniz Çalıştırın#

Listeden bir model seçtiğinizde onu nasıl çalıştıracağınızı adım adım görebilirsiniz. Space; modelin test edildiği Neuron yığınını (stack), kurulması gereken ek paketleri ve çalıştırılan run.py betiğini listeler. Bu betik şu pratik adımları izler:

  • Modeli from_pretrained ile yükler ve gerektiğinde çekirdekler arasında paylaştırır (sharding),
  • Statik önbellek (static cache) ve torch.compile(backend="neuron") kullanarak üretim (generation) yapar,
  • Bir Trainium2 (trn2) sunucusunda (örneğin AWS Neuron Deep Learning Container içinde) paketleri kurduktan sonra yalnızca python3 run.py komutuyla çalışır; betik kendi torch.distributed süreçlerini başlattığı için ayrıca torchrun kullanmanıza gerek kalmaz.

İlk çalıştırma normalde model grafiklerini derleyerek başlar. Geliştirme sürecinde bu uzun derleme adımını atlamak için aynı derleyicinin test sırasında oluşturduğu grafikleri genel NEFF önbellek (cache) alanından kopyalayabilirsiniz:

hf buckets sync hf://buckets/aws-neuron/torch-neuronx-neff-cache/neuronxcc-version /tmp/neff_cache

"Çalışıyor" Olması Ne Anlama Geliyor?#

Her test, modeli ağırlıklarını taşıyabilecek en az sayıda Trainium çekirdeğine paylaştırarak bir trn2 örneğine yükler. Çoğu model tensor parallelism ile bölünürken, tensör paralelliği planı olmayan Mixture-of-Experts (MoE) modelleri yalnızca expert parallelism kullanır.

Test sürecinde model 32 token üretir ve çıktılar doğrulanır:

  • Tek çekirdekte çalışan modellerde üretilen token'lar, aynı modelin CPU çalışmasıyla birebir karşılaştırılır.
  • Paylaştırılmış (sharded) modellerde ise küçük bir hakem model (judge model) üretilen metnin akıcı bir İngilizce olup olmadığını kontrol eder.

Şu an yalnızca 4 Trainium2 cihazına (en fazla 16 çekirdek) sığan modeller test edilmektedir. Pratik bir çıkarım olarak; PASS (Başarılı) sonucu modelin doğru çalıştığını gösterir ancak üretim hızı (throughput) veya çok daha uzun metin üretimlerindeki performansı hakkında garanti vermez.

Sonuçlar Bir Veri Kümesidir#

Space aracında gösterilen tüm veriler, her derleyici ve kütüphane çifti için Parquet dosyaları barındıran herkese açık aws-neuron/torch-neuronx-model-support veri kümesinden beslenir. Mühendislik ekipleri bu veri kümesini kendi MLOps ve donanım seçimi süreçlerine doğrudan entegre ederek altyapı kararlarını veriye dayalı hale getirebilir.

Kaynak ve atıf

Bu yazı, Hugging Face Blog üzerinde yayımlanan içerikten yararlanılarak Edumints tarafından yapay zekâ desteğiyle Türkçe hazırlandı. Ayrıntılar ve yazarların kendi anlatımı için orijinaline bakabilirsin:

  • huggingface.co/blog/torch-neuronx-model-support