1 puan yazan GN⁺ 2023-07-19 | 1 yorum | WhatsApp'ta paylaş
  • Stable Diffusion WebGPU demosunu, Chrome'un en güncel sürümünde "Experimental WebAssembly" ve "Experimental WebAssembly JavaScript Promise Integration (JSPI)" bayrakları etkinleştirilmiş olarak çalıştırmanız gerekir.
  • Demonun her çıkarım adımı yaklaşık 1 dakika sürer ve görüntüyü üretmek için VAE decoder'ı çalıştırmak ek olarak yaklaşık 10 saniye alır.
  • DevTools açık bırakılırsa demo yaklaşık 2 kat yavaşlar.
  • Demoda kullanılan UNET modeli yalnızca CPU'da çalışır; tarayıcı sekmesi donabilir, ancak GPU'da çalıştırmaktan %10 daha hızlıdır.
  • Demoda kabul edilebilir sonuçlar elde etmek için gereken minimum adım sayısı 20'dir. Ancak demo amacıyla 3 adım yeterlidir.
  • Model dosyaları önbelleğe alınır, bu yüzden demoyu her çalıştırdığınızda yeniden indirilmeleri gerekmez.
  • "protobuf parsing failed" hatası oluşursa DevTools'ta Application -> Storage bölümüne gidip site verilerini temizleyebilirsiniz.
  • "sbox_fatal_memory_exceeded" hatası oluşursa, demoyu çalıştırmak için yeterli RAM olmadığı anlamına gelir. Sekmeyi veya tarayıcıyı yeniden yüklemeyi deneyebilirsiniz.
  • Demo, StableDiffusionPipeline'ın Python'dan JS'ye taşınması ve onnxruntime ile emscripten+binaryen'in, 4GB'tan fazla bellek ayırmayı ve kullanmayı destekleyecek şekilde yamalanması sayesinde mümkün oldu.
  • Şu anda demo multithreading desteklemiyor ve yalnızca tek bir CPU çekirdeği kullandığı için yavaş. WebAssembly.Memory constructor'ı üzerinden 64 bit belleğe destek eksikliği de bir başka sınırlama.
  • Demo GPU'da çalışıyor, ancak webgpu ve onnxruntime henüz erken aşamada olduğundan pek çok şey hâlâ uygulanmış değil. Veriler JS üzerinden GPU ile CPU arasında sürekli aktarılıyor, bu da işleme hızını düşürüyor. Daha fazla iş JS kernel'lerine kavuştuğunda demo daha hızlı olacaktır.
  • GitHub'da bulunan kodu kullanarak demoyu yerelde çalıştırabilirsiniz.
  • Yamalanmış onnxruntime ile transformers.js kullanarak büyük LLM'leri çalıştırabilirsiniz, ancak 8GB bellekle sınırlıdır. Bu paketle en fazla yaklaşık 4GB ağırlık yüklenebilir.
  • Yazarın daha önce node.js binding'lerine GPU hızlandırması ekleme deneyimi olduğu için, onnxruntime reposuna bir pull request göndermeyi planlıyor.

1 yorum

 
GN⁺ 2023-07-19
Hacker News görüşü
  • MLC ekibi zaten Stable Diffusion ve büyük dil modeli desteğini hayata geçirdi.
  • Tarayıcılar, Stable Diffusion gibi karmaşık işleri işleyebilecek seviyeye kadar gelişti.
  • Stable Diffusion kullanmak için belirli bir işaretin etkinleştirildiği Chrome'un en son sürümü gerekiyor.
  • Stable Diffusion, özel arka plan oluşturucu gibi başka web sitelerine de entegre edildi.
  • CPU'ya bağlı süreçler sırasında ana iş parçacığının durmasını önlemek için service worker kullanmayı değerlendirin.
  • Stable Diffusion'ın kullanım alanları arasında, sayfa yenilemeden gerçek zamanlı görsel üretimi yer alıyor.
  • WebGPU sohbet botları veya GPU'nun boştaki zamanında Bitcoin madenciliği gibi gelecekteki uygulamalar için potansiyel bulunuyor.
  • Bazı kullanıcılar, WebGPU'nun Firefox'ta kullanılabilir olmasını bekliyor.
  • Reklamsız bir internet olasılık olarak gündeme getiriliyor.