2 puan yazan GN⁺ 2023-11-14 | 1 yorum | WhatsApp'ta paylaş

Rust+Wasm yığını: Python'a güçlü bir alternatif

  • Rust+Wasm uygulamaları, Python'a kıyasla 1/100 boyutta, 100 kat daha hızlıdır ve donanım hızlandırmayı hiç değiştirmeden her yerde güvenle çalışabilir.
  • Rust, AGI'nin (yapay genel zeka) dili olarak, llama2 modelinde özgün hızda çıkarım yapan basit bir Rust programı oluşturur.
  • Wasm'a derlenmiş ikili uygulama (2MB), çeşitli donanım hızlandırıcılara sahip cihazlarda tamamen taşınabilirdir.
  • Wasm çalışma zamanı (WasmEdge), bulut ortamlarında güvenli ve emniyetli bir çalıştırma ortamı sağlar.

Rust programını kurma ve çalıştırma

  • Adım 1. WasmEdge ve GGML eklentisini kurma: Linux veya Mac cihazlarda aşağıdaki komutlarla kurulur.
  • Adım 2. Önceden derlenmiş Wasm uygulamasını ve modeli indirme: llama2 modelini GGUF biçiminde indirin; örnek olarak, 5 bit ağırlıklarla kuantize edilmiş llama2 7B chat-tuned modeli indirilir.
  • Adım 3. Çalıştırma: WasmEdge ile wasm çıkarım uygulamasını başlatın, GGUF modelini verin ve modelle sohbet etmek için bir soru girin.

Model davranışını yapılandırma

  • Komut satırı seçenekleri kullanılarak modelle nasıl etkileşim kurulacağı ayarlanabilir.
  • Örneğin, belirli bir bağlam uzunluğu belirtilebilir, her yanıtta tahmin edilecek azami token sayısı ayarlanabilir, istatistikler yazdırılabilir ve model yanıtı stdout üzerinden akıtılacak şekilde yapılandırılabilir.
  • Program, düşük maliyetli bir M2 MacBook'ta saniyede yaklaşık 25 token üretir.

LLM ajanları ve uygulamaları

  • Rust ve WasmEdge kullanılarak OpenAI uyumlu bir API sunucusu oluşturulur.
  • Bu sayede OpenAI uyumlu geliştirme araçlarıyla LLM ajanları ve uygulamaları geliştirilebilir.

Python yerine Rust+Wasm'ın avantajları

  • Rust+Wasm yığını, yapay zeka çıkarım uygulamaları için Python yığınına güçlü bir alternatif olup bulut bilişim altyapısı sunar.
  • Aşırı hafif: Çıkarım uygulaması, tüm bağımlılıklarıyla birlikte yalnızca 2MB'tır.
  • Çok hızlı: Çıkarım uygulamasının her bölümünde yerel C/Rust hızı sağlar.
  • Taşınabilirlik: Aynı Wasm bytecode uygulaması, heterojen donanım hızlandırmayı destekleyen tüm büyük bilgi işlem platformlarında çalışabilir.
  • Kurulum, geliştirme ve dağıtım kolaylığı: Karmaşık bağımlılıklar yoktur; dizüstü bilgisayarda standart araçlarla tek bir Wasm dosyası derlenip her yere dağıtılabilir.
  • Güvenli ve buluta hazır: Wasm çalışma zamanı, güvenilmeyen kullanıcı kodunu izole edecek şekilde tasarlanmıştır; konteyner araçları tarafından yönetilebilir ve cloud-native platformlara kolayca dağıtılabilir.

Rust çıkarım programı

  • Demo çıkarım programı Rust ile yazılmış ve Wasm'a derlenmiştir.
  • Rust kaynak kodu son derece basittir ve yalnızca 40 satır koddan oluşur.
  • Rust programı kullanıcı girdisini yönetir, sohbet geçmişini izler, metni llama2'nin sohbet şablonuna dönüştürür ve WASI NN API'sini kullanarak çıkarım görevini yürütür.

Bulutta veya edge'de çalıştırma

  • Wasm bytecode dosyasına sahip olduktan sonra, bunu WasmEdge çalışma zamanını destekleyen herhangi bir cihaza dağıtabilirsiniz.
  • WasmEdge, GGML eklentisiyle birlikte kurulur ve çeşitli donanım hızlandırmalardan otomatik olarak yararlanarak llama2 modelini çalıştırır.

Sonraki adımlar

  • WasmEdge GGML araçları şu anda kullanılabilir durumda ve cloud-native müşteriler tarafından kullanılıyor, ancak hâlâ erken aşamadadır.
  • 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ı düşük seviye işler vardır.

Diğer yapay zeka modelleri

  • WasmEdge ve WASI NN, Python'a alternatif olarak hafif, hızlı, taşınabilir ve güvenli çıkarım uygulamaları oluşturmayı mümkün kılar.
  • Örneğin, mediapipe-rs projesi, Google'ın mediapipe Tensorflow modeli için Rust+Wasm API'si sunar.

GN⁺ görüşü

Bu yazının en önemli noktası, Rust ve WebAssembly (Wasm) kullanarak yapay zeka çıkarımı için Python'a bir alternatif sunması ve bunun boyut, hız, taşınabilirlik ve güvenlik açısından belirgin avantajlar sağlamasıdır. Bu teknoloji yığını, bulut bilişim altyapısını entegre ederek çeşitli cihazlarda ve bulut ortamlarında performansı artırmanın, karmaşık bağımlılık sorunlarını çözmenin ve geliştirme ile dağıtımı basitleştirmenin bir yolunu sunuyor. Bu yaklaşım özellikle edge bilişim ve yapay zeka çıkarımının geleceği üzerinde önemli etkilere sahip olabilir; bu da teknolojiyle ilgilenenler için oldukça ilgi çekici bir konu haline geliyor.

1 yorum

 
GN⁺ 2023-11-14
Hacker News görüşleri
  • Rust ve WASM’e destek verdiğini belirtirken, gerçek kodun Rust ile yazılmış temel bir komut satırı betiğinden ibaret olduğunu ve asıl işlemenin WASI-NN backend’ini çağıran tek satırlık koda dayandığını vurguluyor. Bu backend bu durumda WasmEdge runtime’ı tarafından sağlanıyor ve WasmEdge’in C++ ile yazıldığına dikkat çekiyor.
  • Uygulama geliştiricileri için bu proje, çıkarım motorunu dağıtılabilir bir dosya olarak paketlemenin en kolay yolunu sunuyor. Model ağırlıkları zaten taşınabilir ve gerektiğinde indirilebilir.
  • Projenin aslında sadece llama.cpp’yi sarmalayan bir katman olup olmadığını sorguluyor ve Rust ile WebGPU kullanarak ML framework’leri geliştirme deneyimini paylaşıyor.
  • wasm-nn’e bağımlı projelerin gerçekte taşınabilir olmadığını, belirli donanım desteği yoksa çalıştırılamayabileceğini belirtiyor. Bunun WASI’nin amacıyla çelişen bir durum olduğunu ekliyor.
  • GGML eklentisinin Mac OS derlemesinin, M1/M2/M3’ün Neural Engine’i yerine Metal API üzerinden GPU’da çıkarım çalıştırdığı iddiasının doğruluğunu sorguluyor.
  • Transformer mimarisini edge computing ortamlarında daha verimli ve hızlı çalıştırmanın yollarının geliştirileceğini, ancak VRAM gereksinimlerinin büyük modelleri yüklemede temel darboğaz olmaya devam ederek bir sınıra ulaştırabileceğini düşünüyor.
  • Projenin iPhone’da çevrimdışı olarak çalışıp çalışmadığını soruyor. Bunun internet erişiminin mümkün olmadığı durumlarda faydalı olabileceğini belirtiyor.
  • Projenin, başka bir dilde yazılmış bir wrapper kullanıp bunu boyut veya hız açısından yenilikçiymiş gibi pazarlamasını eleştiriyor. Gerçekte bunun llama.cpp tabanlı bir proje olduğunu, çıkarım hızı ya da binary boyutunun seçilen wrapper tarafından belirlenmediğini söylüyor.
  • Modelin eğitilmiş ağırlıkları toplam boyutun büyük kısmını oluşturuyorsa, doğruluktan ödün vermeden bu boyutun nasıl küçültülebileceğini soruyor.
  • Rust kaynak kodunun özünün son derece basit olduğunu; kullanıcı girdisini yöneten, konuşma geçmişini takip eden, metni llama2’nin sohbet şablonuna dönüştüren ve WASI NN API’si üzerinden çıkarım yapan 40 satırlık koddan oluştuğunu belirtiyor.