- MLX, Apple Silicon tabanlı makine öğrenimi araştırmacıları için dizi çerçevesi olup NumPy ve PyTorch’a benzer bir kullanım deneyimi sunuyor
- MLX’e CUDA backend ekleme çalışması sürüyor
- Temel amaç, birleşik bellek (unified memory) desteği ve NVIDIA donanımından geniş ölçekte yararlanma
- Şu anda yalnızca eğitim örnekleri çalıştırılabiliyor; derleme ve testler Ubuntu 22.04 + CUDA 11.6 ortamında doğrulandı
- İlk performans sorunları ve darboğaz iyileştirme sürecinden geçilirken optimizasyon ve refaktöring çalışmaları tekrarlı biçimde sürdürülüyor
- MLX’in CUDA backend’i Apple’ın desteğiyle geliştiriliyor; birleşik bellek ve NVIDIA donanım desteği sayesinde Mac’te geliştirme yapıp büyük ölçekli hesaplama ortamlarına dağıtırken tutarlı bir deneyim sunmak hedefleniyor
MLX çerçevesine giriş
- MLX, Apple’ın makine öğrenimi araştırma ekibi tarafından geliştirilen makine öğrenimi için dizi çerçevesidir
- Mühendislerin ve araştırmacıların etkili biçimde deney yapabilmesi ve fikirlerini hızlıca doğrulayabilmesi için geliştirildi
- Apple Silicon desteğiyle öne çıkıyordu; ancak artık CUDA backend eklenmesiyle NVIDIA GPU ortamlarında da çalışma olasılığını genişletmeye çalışıyor
Başlıca özellikler
- Tanıdık API: Python API, NumPy’ye; üst paketler olan
mlx.nn, mlx.optimizers ise PyTorch’a benzer bir arayüz sunuyor
- C++, C, Swift API’leri de birlikte sağlanıyor ve Python API ile tutarlı bir kullanım deneyimi garanti ediliyor
- Birleştirilebilir fonksiyon dönüşümleri: otomatik türev alma, otomatik vektörleştirme, hesaplama grafiği optimizasyonu gibi işlevler içeriyor
- Tembel hesaplama: birden çok işlemi gruplayıp sonuçları yalnızca gerçekten gerektiğinde hesaplayan yapısıyla kaynakların verimli kullanılmasını sağlıyor
- Dinamik grafik oluşturma: girdi verisinin shape’i değişse bile yavaş derleme olmadan anında çalıştırma sunarak geliştirme ve hata ayıklamayı kolaylaştırıyor
- Çoklu cihaz ve birleşik bellek modeli:
- Daha önce yalnızca CPU ve Apple GPU destekleniyordu; CUDA backend ile NVIDIA GPU ortamı desteği hedefleniyor
- Birleşik bellek yapısı sayesinde bellek kopyası olmadan tüm desteklenen cihazlarda aynı nesne üzerinde işlem yapılabiliyor
- Yalın ve genişletilebilir tasarım: araştırmacıların çerçeveyi kolayca genişletip iyileştirebilmesini sağlıyor
Diğer çerçevelerden farkları ve aldığı ilham
- Tasarım ilhamını NumPy, PyTorch, Jax, ArrayFire gibi projelerden alıyor
- Özellikle birleşik bellek modeli, yalın arayüz ve anında çalıştırma/hata ayıklama ortamını öne çıkarıyor
Öne çıkan örnekler ve kullanım alanları
- MLX Examples deposunda çeşitli uygulama kodları bulunuyor
- Transformer dil modeli eğitimi
- LLaMA tabanlı büyük ölçekli metin üretimi ve LoRA ile fine-tuning
- Stable Diffusion ile görsel üretimi
- OpenAI Whisper tabanlı konuşma tanıma gibi güncel model uygulama örnekleri
MLX’in anlamı ve CUDA desteği
- Apple Silicon merkezli bir çerçeve olan MLX, CUDA backend eklenmesiyle NVIDIA GPU ortamlarında da genel amaçlı kullanıma doğru genişliyor
- Güncel CUDA desteğiyle birlikte, hem Apple hem de NVIDIA donanımında en yeni araştırma ve endüstriyel kullanım için uygun bir çerçeve olarak konumlanması bekleniyor
3 yorum
macOS'ta sadece NVIDIA GPU'ları kullanabilmeyi sağlasalar yeterdi... hah hah.
Güzel haber :) Bir an önce CUDA desteği gelsin de Mac’te de yüksek hızlı eğitim mümkün olsun~!
Hacker News görüşleri
Kurulum rehberi
zcbenz hakkında
Depo README'sindeki maddeye bakın: MLX GitHub
Bunun tüm UMA APU'lara (üreticiden bağımsız olarak) genişletilmesi ilginç olurdu ama ayrık GPU'larda yaklaşımın farklı olması gerekip gerekmediğini merak ediyorum
PR yorumlarını okuyunca, CUDA'nın da UMA API'lerini doğrudan desteklediği ve gerektiğinde kopyalamayı şeffaf biçimde yönettiği anlaşılıyor
Apple'ın bunu perde arkasından destekleyip resmiyette öne çıkmadığını merak ettiriyor. Ekibin transfer olacağına dair söylentiler de vardı
Yani bu, MLX kodunun x86 + GeForce donanımında derlenip çalıştırılabildiği anlamına geliyor; tersi değil
Kendim denedim; PyPI'de yalnızca Python 3.12 sürümü var
MLX-CUDA PyPI sayfası
Son zamanlarda YouTuber incelemelerinde DGX Spark'ın Strix Halo'ya kıyasla fiyat/performans açısından zayıf kaldığı da söyleniyor. Dezavantajı, ROCm'in hâlâ yetersiz olması (yakında iyileşmesi bekleniyor). Apple cihazlarında CUDA kusursuz çalışabilseydi, Strix ne kadar ucuz ve iyi olursa olsun ciddi biçimde düşünmeye değer bir seçenek olurdu