NVIDIA, CUDA'ya sonunda yerel Python desteği ekledi
(thenewstack.io)- NVIDIA'nın yıllardır C/C++ merkezli olan CUDA araç setine 2024 GTC'de yerel Python desteği resmen eklendi
- Artık yalnızca Python ile GPU üzerinde doğrudan algoritma odaklı yüksek hızlı hesaplamalar çalıştırmak mümkün
- CUDA mimarı Stephen Jones, “Python CUDA, C kodunu Python sözdizimine taşımaktan ibaret değil;
Python geliştiricileri için doğal olacak şekilde baştan tasarlandı” diye açıklıyor
Yerel Python desteğinin açtığı yeni olanaklar
- Mevcut CUDA kullanıcılarının C++ ya da Fortran bilmesi gerekiyordu; artık ise yalnızca Python ile de yüksek performanslı GPU hesaplaması mümkün
- 2024 GitHub açık kaynak anketine göre Python, JavaScript'i geride bırakarak en popüler dil haline geldi
- CUDA kullanıcı sayısı 2020'de 2 milyonken 2023'te 4 milyona çıktı, ancak
Python geliştiricileri on milyonlar ölçeğinde; bu da özellikle Hindistan ve Brezilya gibi yükselen ülkelerdeki geliştiriciler için büyük bir avantaj - Bunun küresel GPU altyapısının genişlemesi üzerinde de olumlu etki yaratması bekleniyor
Pythonic CUDA nasıl yapılandırılıyor
- CUDA; kütüphaneler, SDK, derleyici, çalışma zamanı, araçlar ve algoritmalardan oluşuyor
- Python entegrasyonu, yalnızca çekirdekler sunmakla kalmıyor; tüm yığını Python dostu olacak şekilde yapılandırıyor
- Temel yaklaşım: JIT (Just-In-Time) derleme tabanlı, derleyici bağımlılığını en aza indiriyor
Başlıca bileşenler
- cuPyNumeric: NumPy ile aynı API'yi sunarken GPU hızlandırmasını destekleyen Python kütüphanesi
- CUDA Core: CUDA çalışma zamanını Python tarzında yeniden tasarlayan, yürütme akışı temelli sistem
- NVMath Python: host/device kütüphane çağrıları için birleşik arayüz sunuyor
- Yüksek performanslı C++ kütüphaneleriyle doğrudan entegre olabilen Python API yapısı
- Performans analizi ve kod analizi araçları da birlikte sunuluyor
> “Mevcut yüksek performanslı C++ koduyla doğrudan bağlantılı olduğu için performans kaybı neredeyse yok.” — Stephen Jones
Yeni programlama modeli: CuTile
- Python geliştiricileri için tasarlanmış yüksek seviyeli, dizi merkezli model
- Mevcut CUDA iş parçacığı tabanlı ayrıntılı kontrol gerektirirken, CuTile tile düzeyinde soyutlama ile daha sade ve anlaşılır bir yapı sunuyor
- CuTile, dizileri GPU tile birimlerine eşleyerek hata ayıklama ve optimizasyonu kolaylaştırırken performansı koruyor
- İleride C++ CUDA'ya da genişletilmesi planlanıyor
> “Derleyici GPU yapısını daha iyi anladığı için performans optimizasyonunu da otomatik olarak daha iyi yapabiliyor.”
Özet
- CUDA'nın Python ile yerel entegrasyonu, GPU programlamaya giriş eşiğini ciddi biçimde düşüren bir değişim
- Artık karmaşık dil bilgisi gerektirmeden yalnızca Python ile GPU üzerinde yapay zeka/bilimsel hesaplamalar yapılabilecek
- Python merkezli yapay zeka ekosisteminin büyümesi ve NVIDIA GPU kullanımının yaygınlaşması için yeni bir dönemi başlatan kritik bir dönüm noktası
3 yorum
Cupy ve pytorch gibi mevcut Cuda wrapper'larından daha hızlı olur mu acaba. Cupy ve torch'un avantajı, API'lerinin neredeyse numpy ile tamamen aynı olmasıydı; bu sayede numpy ile yazdığım test kodlarını çok uğraşmadan taşıyabiliyordum. Bunun nasıl olduğunu da kullanıp görmek gerekecek sanırım.
Hacker News görüşleri
GPU programcısı değilim ama benim gibi biri için bile kullanımı kolay görünüyor. GPU ve CPU kullanan basit bir demo yaptım. Sonuçlar şöyle
Python'ın neden bunlar için hedef haline geldiğini merak ediyorum. Birçok projenin Python desteği eklediğini gördüm. Python kod tabanlarının diğerlerine göre daha kolay şekilde çeşitli hedeflere derlenip derlenemediğini merak ediyorum
PyTorch'un bunun ortaya çıkmasından önce büyük ivme kazanmış olmasına sevindim. Artık paralel hesaplama için gerçekten platformdan bağımsız, yarı standart bir yapımız var. NVIDIA ile sınırlı değil
CuTile birçok açıdan OpenAI'nin Triton'unun devamı gibi hissettiriyor. Yalnızca tile/block seviyesinde primitive'ler ve TileIR değil, CuPy içinde düzgün bir SIMT programlama modeli de sunuyor. Görünüşe göre bu yılki GTC'de de pek çok kişi buna dikkat etmedi. Çok havalı bir şey
JAX ile nasıl karşılaştırıldığını gerçekten çok merak ediyorum
Bu müthiş. Yapay zeka alanında NVIDIA'ya alternatif olarak AMD + ROCm'u düşünen kimse artık düşünmeyecektir
Sırada Rust desteği mi var? Şu anda veri yapılarımı kernel'e/kernel'den byte dizileri olarak elle [de]serialize ediyorum. CUDA'nın C++'ta sunduğu gibi gerçekten paylaşılan veri yapılarına sahip olmak güzel olurdu
Python gerçekten de programlama dillerinin lingua franca'sı haline geliyor. FOSS rönesansında benimsenmesi hızla artıyor ve bence elimizdeki en yakın genel amaçlı araç bu
Bu muhtemelen Python'ın genel olarak öncülük ettiği şeyi daha da hızlandıracak: daha fazla şeyin daha hızlı denenmesi ve hızlı dillerde kalıcı hale gelmesi. Genel olarak bu harika bir adım. Bununla oynamayı kesinlikle dört gözle bekliyorum
CUDA, C ve C++ içinde doğdu. Keşke C++'ı genişletip buna CUDA C demek yerine gerçekten CUDA'nın bir C varyantını hayata geçirmiş olsalardı
İlk hız gerçekten böyle mi? Fazla yavaş görünüyor...