1 คะแนน โดย GN⁺ 2023-07-19 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ต้องรันเดโม Stable Diffusion WebGPU บน Chrome เวอร์ชันล่าสุด โดยเปิดใช้แฟล็ก "Experimental WebAssembly" และ "Experimental WebAssembly JavaScript Promise Integration (JSPI)"
  • ในแต่ละขั้นตอนการอนุมานของเดโมจะใช้เวลาประมาณ 1 นาที และใช้เวลาเพิ่มอีกราว 10 วินาทีในการรัน VAE decoder เพื่อสร้างภาพ
  • หากเปิด DevTools ค้างไว้ เดโมจะทำงานช้าลงประมาณ 2 เท่า
  • โมเดล UNET ที่ใช้ในเดโมจะรันบน CPU เท่านั้น และแท็บเบราว์เซอร์อาจค้างได้ แต่เร็วกว่าการรันบน GPU อยู่ 10%
  • จำนวนขั้นตอนขั้นต่ำเพื่อให้ได้ผลลัพธ์ที่ยอมรับได้ในเดโมคือ 20 ขั้นตอน อย่างไรก็ตาม สำหรับจุดประสงค์ในการสาธิต 3 ขั้นตอนก็เพียงพอ
  • ไฟล์โมเดลจะถูกแคชไว้ จึงไม่จำเป็นต้องดาวน์โหลดใหม่ทุกครั้งที่รันเดโม
  • หากเกิดข้อผิดพลาด "protobuf parsing failed" สามารถไปที่ Application -> Storage ใน DevTools แล้วล้างข้อมูลไซต์ได้
  • หากเกิดข้อผิดพลาด "sbox_fatal_memory_exceeded" แปลว่ามี RAM ไม่เพียงพอจนไม่สามารถรันเดโมได้ อาจลองรีโหลดแท็บหรือเบราว์เซอร์
  • เดโมนี้เกิดขึ้นได้จากการพอร์ต StableDiffusionPipeline จาก Python ไปเป็น JS และแพตช์ onnxruntime กับ emscripten+binaryen เพื่อรองรับการจัดสรรและใช้งานหน่วยความจำเกิน 4GB
  • ขณะนี้เดโมยังไม่รองรับมัลติเธรดและใช้เพียง CPU core เดียว จึงทำงานช้า การขาดการรองรับหน่วยความจำ 64 บิตผ่านตัวสร้าง WebAssembly.Memory ก็เป็นข้อจำกัดเช่นกัน
  • เดโมรันบน GPU แต่ webgpu และ onnxruntime ยังอยู่ในระยะเริ่มต้น จึงยังมีงานอีกมากที่ยังไม่ได้ถูกนำไปใช้ ข้อมูลถูกส่งไปมาระหว่าง GPU และ CPU ผ่าน JS อย่างต่อเนื่อง ทำให้การประมวลผลช้าลง เมื่อมีงานเพิ่มเติมที่มี JS kernel เดโมก็จะเร็วขึ้น
  • สามารถรันเดโมแบบโลคัลได้ด้วยโค้ดที่มีให้บน GitHub
  • สามารถใช้ onnxruntime ที่ถูกแพตช์แล้วเพื่อรัน LLMs ขนาดใหญ่ด้วย transformers.js ได้ แต่จะถูกจำกัดไว้ที่หน่วยความจำ 8GB และสามารถโหลดน้ำหนักโมเดลได้สูงสุดประมาณ 4GB ด้วยแพ็กเกจนั้น
  • ผู้เขียนเคยมีประสบการณ์เพิ่ม GPU acceleration ให้กับ node.js bindings มาก่อน จึงมีแผนจะส่ง pull request ไปยังรีโพซิทอรี onnxruntime

1 ความคิดเห็น

 
GN⁺ 2023-07-19
ความคิดเห็นจาก Hacker News
  • ทีม MLC ได้รองรับ Stable Diffusion และโมเดลภาษาขนาดใหญ่ไว้แล้ว
  • เบราว์เซอร์พัฒนามาถึงระดับที่สามารถจัดการงานซับซ้อนอย่าง Stable Diffusion ได้
  • การใช้งาน Stable Diffusion ต้องใช้ Chrome เวอร์ชันล่าสุดที่เปิดใช้งานแฟล็กบางตัว
  • Stable Diffusion ยังถูกนำไปรวมเข้ากับเว็บไซต์อื่น ๆ เช่น เครื่องมือสร้างพื้นหลังแบบกำหนดเอง
  • ลองพิจารณาใช้ service worker เพื่อป้องกันไม่ให้เธรดหลักค้างระหว่างกระบวนการที่ติดคอขวดด้วย CPU
  • กรณีการใช้งานของ Stable Diffusion รวมถึงการสร้างภาพแบบเรียลไทม์โดยไม่ต้องรีเฟรชหน้า
  • มีศักยภาพสำหรับแอปพลิเคชันในอนาคต เช่น แชตบอต WebGPU หรือการขุดบิตคอยน์ระหว่างช่วงเวลาที่ GPU ว่าง
  • ผู้ใช้บางส่วนกำลังรอจนกว่า WebGPU จะพร้อมใช้งานใน Firefox
  • มีการพูดถึงความเป็นไปได้ของอินเทอร์เน็ตที่ไม่มีโฆษณา