Hugging Face 207 WebGPU Çekirdeğiyle Tarayıcıda Yapay Zekayı Hızlandırıyor
Hugging Face, tarayıcıda çalışan yapay zeka modellerini hızlandırmak için 207 optimize edilmiş WebGPU çekirdeğini (kernel) ve @huggingface/kernels kütüphanesini yayınladı. Yeni koleksiyon, ONNX Runtime Web'e kıyasla 2.57 kat daha hızlı performans sunuyor.
WebGPU Çekirdekleri Neden Önemli?
Tarayıcıda çalışan bir yapay zeka modeli, aslında bir dizi GPU işlemine dönüşür: matris çarpmaları, normalizasyonlar, evrişimler, dikkat mekanizmaları, nicemleme (quantization) işlemleri ve veri düzeni dönüşümleri. WebGPU API'si bu işlemleri modern tarayıcılarda taşınabilir bir arayüzle sunarken, WGSL dili de bu işlemleri yürüten gölgelendiriciler (shaders) için ortak bir dil sağlar. Ancak taşınabilirlik, otomatik olarak yüksek performans anlamına gelmez. Aynı işlemi yapan iki farklı gölgelendirici, farklı donanımlarda çok farklı davranabilir. Çalışma grubu boyutları, bellek erişim desenleri, vektörizasyon, veri tipleri ve birleştirme stratejileri performansı etkiler. En iyi seçim, girdi şekline, cihaza, tarayıcıya ve mevcut WebGPU özelliklerine göre değişir. Bu nedenle çekirdekler (kernels), hızlı tarayıcı çıkarımının temel katmanını oluşturur. Üst düzey çalışma zamanları, ancak dağıttıkları işlemler kadar verimli olabilir.
Hugging Face'in Yeni Koleksiyonu
Hugging Face, bu temel katmanı güçlendirmek için @huggingface/kernels adlı minimalist bir JavaScript kütüphanesi ve Hugging Face Hub üzerinde 207 WebGPU çekirdeğinden oluşan bir koleksiyon yayınladı. Bu çekirdekler, çeşitli makine öğrenimi mimarilerinde ve iş yüklerinde kullanılan işlemleri kapsıyor. Her çekirdek, sürümlendirilmiş ve eksiksiz bir paket olarak sunuluyor: arayüzü, gölgelendirici şablonları, doğruluk testleri, kıyaslama senaryoları ve kullanım talimatları Hub'da bir arada bulunuyor. Koleksiyon, Apache-2.0 lisansıyla yayınlanan bireysel depolar halinde organize edilmiş durumda.
Çekirdek Yapısı ve Kullanımı
Her çekirdek deposu, işlemin sözleşmesini (contract) tanımlayan manifest.json, çekirdek kimliğini ve kaynağını içeren metadata.json, doğruluk testlerini içeren test.json, kıyaslama senaryolarını içeren bench.json ve parametrik WGSL uygulamalarını içeren .wgsl.jinja dosyalarından oluşuyor. Bu yapı, bir gölgelendiriciyi yeniden kullanılabilir bir yazılım parçasına dönüştürüyor. Geliştiriciler, npm üzerinden @huggingface/kernels paketini kurarak ve getKernel fonksiyonunu çağırarak bu çekirdekleri kullanabilir. Örneğin, bir bias ekleme işlemi için şu kod yazılabilir:
```javascript import { getKernel } from "@huggingface/kernels"; const add = await getKernel("webgpu-kernels/ai.onnx.Add", { version: 1 }); const { c } = await add({ a: { data: new Float32Array([1, 2, 3, 4, 5, 6]), shape: [2, 3] }, b: { data: new Float32Array([10, 20, 30]), shape: [3] }, }); ```
Bu örnekte, ikinci girdi birinci boyut boyunca yayınlanır ve çıktı şekli [2, 3] olur. Yükleyici, manifest sözleşmesine ve girdilere dayanarak çıktı şeklini ve veri tipini otomatik olarak belirler. Bu çağrı deseni, matris çarpımı gibi ağır işlemler için de aynıdır; sadece depo kimliği ve girdiler değişir.
Performans Karşılaştırması
Hugging Face, kendi çekirdeklerini ONNX Runtime Web (ORT WebGPU) ile Apple M4 GPU üzerinde karşılaştırdı. 1.756 test senaryosundan her iki tarafın da eşleşen çıktılar ürettiği 809 senaryoda, kendi çekirdekleri geometrik ortalama ile 2.57 kat, medyan olarak 1.90 kat daha hızlıydı. 629 galibiyet, 176 mağlubiyet ve 4 beraberlik elde edildi. Bazı bireysel durumlarda fark çok daha büyüktü: Örneğin, zorlu bir bilineer Einsum durumu (i,ij,j boyut 4096) kendi çekirdekleriyle 0.136 ms'de çalışırken, ORT WebGPU 1.396 ms sürdü (10.000 kat hız farkı). Satır bazlı CumSum işlemi ise 301 kat daha hızlıydı. Bu uç durumlar genel beklentiyi yansıtmasa da, özel bir çekirdeğin genel bir uygulamanın yavaş kaldığı durumlarda ne kadar etkili olabileceğini gösteriyor.
Fleet ile Topluluk Katkısı
WebGPU performansı GPU, tarayıcı ve sürücülere göre değiştiğinden, tek bir makineden alınan sonuçlar yeterli değil. Bu nedenle Hugging Face, Fleet adında tarayıcı tabanlı bir kıyaslama ve test aracı başlattı. Fleet, kullanıcıların kendi donanımlarında doğruluk ve performans testleri yapmasına olanak tanıyor. Kullanıcı onayıyla her çalıştırma, cihaza özel hataları tespit etmek, varyantları karşılaştırmak ve seçim kurallarını iyileştirmek için anonim olarak katkı sağlıyor. Bu sayede geniş bir gerçek dünya cihaz yelpazesinden veri toplanarak çekirdeklerin daha hızlı ve güvenilir hale getirilmesi hedefleniyor.
Neden Önemli?
Bu gelişme, Türkiye'deki yapay zeka geliştiricileri ve araştırmacılar için önemli fırsatlar sunuyor. Tarayıcıda çalışan modeller, sunucu maliyetlerini düşürür ve veri gizliliğini artırır. Özellikle düşük kaynaklı cihazlarda ve internet bağlantısının sınırlı olduğu bölgelerde, yerel çıkarım (local inference) kritik hale geliyor. Hugging Face'in bu çekirdek koleksiyonu, geliştiricilerin kendi WebGPU uygulamalarını optimize etmeleri için referans görevi görebilir. Ayrıca, Fleet aracı sayesinde Türkiye'deki geliştiriciler de kendi cihazlarından veri göndererek bu ekosisteme katkıda bulunabilir. Bu, hem performans iyileştirmelerine hem de daha geniş bir donanım yelpazesinde doğruluk testlerine olanak tanır. Sonuç olarak, bu adım, tarayıcı tabanlı yapay zekanın daha erişilebilir ve verimli olması yolunda önemli bir kilometre taşıdır.