- Rust+WASM yığını, yapay zeka çıkarımında Python’a güçlü bir alternatif olabilir
- Python ile karşılaştırıldığında Rust+Wasm uygulamaları 1/100 boyutta, 100 kat daha hızlıdır ve ikili kodu değiştirmeden tam donanım hızlandırmasıyla her yerde güvenli biçimde çalışabilir
- Rust, AGI’nin dilidir
- Llama2 çıkarımını yerel hızda çalıştıran basit bir Rust programı yazarsak
- Wasm’a derlendikten sonra ikili dosya yalnızca 2MB’tır, ancak heterojen donanım hızlandırıcılarına tamamen taşınabilir
- Ayrıca Wasm çalışma zamanı (WasmEdge), bulut ortamları için güvenli bir yürütme ortamı sağlar. Konteyner araçlarıyla sorunsuz çalışarak çeşitli cihazlarda taşınabilir uygulamaları orkestre etmeyi ve çalıştırmayı mümkün kılar
Neden Python değil?
- llama2 gibi LLM’ler genellikle Python ile eğitilir (ör. PyTorch, Tensorflow, JAX)
- Ancak yapay zeka hesaplamasının yaklaşık %95’ini oluşturan çıkarım uygulamalarında Python kullanmak büyük bir hatadır
- Python paketleri karmaşık bağımlılıklara sahiptir. Kurulumu ve kullanımı zordur
- Python bağımlılıkları çok büyüktür. Python veya PyTorch için Docker imajları genellikle birkaç GB ya da onlarca GB boyutundadır; bu da özellikle edge sunucularda veya cihazlarda yapay zeka çıkarımı yaparken sorun yaratır
- Python çok yavaş bir dildir. C, C++ ve Rust gibi derlenen dillere kıyasla 35.000 kata kadar daha yavaş olabilir
- Python yavaş olduğu için gerçek iş yüklerinin çoğu, Python sarmalayıcısının altındaki yerel paylaşımlı kütüphanelere devredilmek zorundadır
- Bu nedenle Python çıkarım uygulamaları demolar için harikadır, ancak iş gereksinimlerine göre içeriden özelleştirilmesi çok zordur
- Yerel kütüphanelere yüksek bağımlılık ve karmaşık bağımlılık yönetimi nedeniyle, Python yapay zeka programlarını cihazların kendine özgü donanım özelliklerinden yararlanırken birden fazla cihaza taşımak çok zordur
- LLM araç zincirinde yaygın olarak kullanılan Python paketleri doğrudan birbiriyle çakışır
- LLVM, TensorFlow ve Swift diliyle tanınan Chris Lattner bu hafta bir startup podcast’inde harika bir röportaj verdi; burada Python’ın model eğitimi için iyi, ancak çıkarım uygulamaları için neden yanlış bir seçim olduğunu açıkladı
Rust+Wasm’ın avantajları
- Rust+Wasm yığını, cihazlardan edge buluta, şirket içi sunuculara ve genel buluta kadar birleşik bir bulut bilişim altyapısı sağlar
- Yapay zeka çıkarım uygulamaları için Python yığınına güçlü bir alternatiftir ve Elon Musk’ın Rust’ı AGI’nin dili olarak nitelemesi şaşırtıcı değildir
- Ultra hafif: Çıkarım uygulaması, tüm bağımlılıklarıyla birlikte yalnızca 2MB’tır. Bu, tipik bir PyTorch konteyner boyutunun %1’inden bile azdır
- Çok hızlı: Ön işleme, tensör işlemleri ve son işleme dahil olmak üzere çıkarım uygulamasının her bölümünde yerel C/Rust hızı sunar
- Taşınabilir: Heterojen donanım hızlandırmasını destekleyen tüm büyük hesaplama platformlarında aynı Wasm bayt kodu uygulaması çalıştırılabilir
- Kurulum, geliştirme ve dağıtım kolaydır: Artık karmaşık bağımlılıklar yoktur. Dizüstü bilgisayarınızdaki standart araçlarla tek bir Wasm dosyası oluşturup her yere dağıtabilirsiniz
- Güvenli ve bulut destekli: Wasm çalışma zamanı, güvenilmeyen kullanıcı kodunu izole etmek için tasarlanmıştır. Wasm çalışma zamanı konteyner araçlarıyla yönetilebilir ve cloud-native platformlara kolayca dağıtılabilir
Rust çıkarım demosu
- 40 satırlık Rust koduyla yazılmıştır ve Wasm’a derlenmiştir
- Wasm bayt kodu elde edildiğinde, WasmEdge çalışma zamanını destekleyen herhangi bir cihaza dağıtılabilir
- llama.cpp tabanlı WasmEdge GGML eklentisi, cihazın donanım hızlandırmasını otomatik olarak kullanarak llama2 modelini çalıştırır
Sonraki adımlar
- WasmEdge GGML araçları şu anda kullanılabilir durumda ve gerçekten cloud-native müşteriler tarafından kullanılıyor, ancak hâlâ erken aşamada
- Açık kaynak projeye katkıda bulunmak ve geleceğin LLM çıkarım altyapısının yönünü şekillendirmekle ilgileniyorsanız, katkı verebileceğiniz bazı alanlar şunlardır
- Daha fazla donanım ve işletim sistemi platformu için GGML eklentileri eklemek: Linux ve Windows üzerinde TPU, ARM NPU ve diğer özel yapay zeka çipleri gibi
- Daha fazla llama.cpp yapılandırmasını desteklemek: Şu anda bazı yapılandırma seçeneklerinin Wasm’dan GGML eklentisine aktarılmasını destekliyor, ancak GGML’nin sunduğu tüm seçenekleri desteklemek istiyorlar
- Diğer Wasm uyumlu diller için WASI NN API desteği eklemek: özellikle Go, Zig, Kotlin, JavaScript, C ve C++
5 yorum
Şu anda yapay zekada geride olan Apple’ın izleyebileceği en gerçekçi yaklaşımın,
ana yazıdaki gibi optimize edilmiş bir S/W çıkarım motorunun iPhone A çipinin NPU’su tarafından hızlandırılması ve foundation model dosyasının iPhone’a tek parça halinde konulması gibi görünüyor.
Son dönemde akademi/endüstride yapay zeka performansında boyuttan ziyade veri ve fine-tuning’in önemli olduğu yönünde güçlü bir görüş var; ayrıca Llama2’de fine-tuning performansının oldukça iyi olduğuna dair pek çok değerlendirme bulunuyor. Bu yüzden iyi eğitilmiş bir modeli edge device’lara sürekli dağıtmak da fazlasıyla mümkün görünüyor. Bu açıdan bakınca her şeyi iPhone’a yükleme stratejisi oldukça gerçekçi olacaktır.
WASM gerçekten bu kadar mı yükselişte? Ama Python’ı Mojo ile karşılaştırmak gerekmiyor mu?
Katılıyorum. Mojo'yu şimdilik hâlâ deneysel aşamada görmek gerekir.
Mojo henüz resmî olarak yayımlanmadı, ancak Rust zaten oldukça olgunlaşmış bir dil ve üretim ortamında birçok alanda yerini alıyor.
GN⁺: Heterojen edge ortamlarında hızlı ve taşınabilir Llama2 çıkarımı
GN⁺ özetine ve Hacker News yorumlarına da birlikte göz atın.