ในการสาธิตความสามารถของ AI บนเบราว์เซอร์ที่น่าทึ่ง นักพัฒนาได้สร้างการใช้งานแบบสมบูรณ์ของ GPT-2 small (117 ล้านพารามิเตอร์) ที่ทำงานทั้งหมดบน WebGL2 shaders โปรเจกต์นี้แสดงให้เห็นว่าเบราว์เซอร์สมัยใหม่สามารถใช้ประโยชน์จากการเร่งความเร็วของ GPU สำหรับงานการเรียนรู้ของเครื่องโดยไม่ต้องพึ่งพาเฟรมเวิร์กเฉพาะทาง
WebGL vs WebGPU: เรื่องของความเข้ากันได้และประสบการณ์
นักพัฒนาเลือกใช้ WebGL แทนมาตรฐาน WebGPU ที่ใหม่กว่าเป็นหลัก เนื่องจากความคุ้นเคยและข้อกำหนดของโปรเจกต์ ตามความเห็นจากผู้สร้าง สิ่งนี้ถูกพัฒนาขึ้นเป็นโปรเจกต์สุดท้ายสำหรับคลาสกราฟิกที่ใช้ WebGL อย่างมาก สมาชิกในชุมชนชี้ให้เห็นว่าในขณะที่ WebGPU อาจให้ข้อได้เปรียบด้านประสิทธิภาพ แต่ WebGL ให้ความเข้ากันได้ที่กว้างกว่าในเบราว์เซอร์ต่างๆ ผู้แสดงความคิดเห็นคนหนึ่งสังเกตว่าการรองรับ WebGPU ยังคงไม่แน่นอนในแพลตฟอร์มที่แตกต่างกัน ทำให้ WebGL เป็นตัวเลือกที่เชื่อถือได้มากกว่าสำหรับการเข้าถึงที่เป็นสากล
การสนทนาเน้นย้ำว่าไลบรารีที่มีอยู่หลายตัว เช่น transformers.js ใช้ประโยชน์จาก WebGPU อยู่แล้ว ทำให้การใช้งาน WebGL นี้โดดเด่นในด้านความคิดสร้างสรรค์มากกว่าแค่ฟังก์ชันการทำงาน โปรเจกต์นี้เข้าร่วมกับการใช้งานภาษาโมเดลที่สร้างสรรค์อื่นๆ ในสภาพแวดล้อมที่ไม่คาดคิด รวมถึงโลก VRChat ที่กล่าวถึงซึ่งทำงาน Qwen2-0.5B ใน shaders และแม้กระทั่งการใช้งาน GPT-2 ก่อนหน้านี้ใน Microsoft Excel
การใช้งานทางเทคนิคและข้อพิจารณาด้านประสิทธิภาพ
การใช้งานนี้มี forward pass ของ GPT-2 small แบบสมบูรณ์ที่ทำงานบน GPU ผ่าน WebGL2 shaders โดยมีการ tokenization แบบ BPE ที่จัดการโดย js-tiktoken โดยตรงในเบราว์เซอร์โดยไม่ต้องการการเรียก WebAssembly สมาชิกในชุมชนแสดงความสนใจในการทำความเข้าใจลักษณะประสิทธิภาพ โดยเฉพาะว่าเวลาการอนุมานมากเพียงใดที่ผูกกับ GPU เทียบกับ CPU ในสภาพแวดล้อมของเบราว์เซอร์
โปรเจกต์สุดเจ๋ง! เวลาในการอนุมานเท่าไหร่ที่ผูกกับ GPU เทียบกับ CPU ในเบราว์เซอร์? สงสัยว่า WebGPU จะให้การเพิ่มประสิทธิภาพที่มากกว่า WebGL2 ตรงนี้หรือไม่
คำถามนี้เน้นย้ำข้อพิจารณาทางเทคนิคที่สำคัญสำหรับการเรียนรู้ของเครื่องบนเบราว์เซอร์: ความสมดุลระหว่างภาระงาน GPU และ CPU สามารถส่งผลกระทบต่อประสิทธิภาพโดยรวมอย่างมีนัยสำคัญ ผู้แสดงความคิดเห็นหลายคนแนะนำว่าการผลักดันเทคโนโลยีเก่ากว่าเช่น WebGL อาจจะส่งเสริมความเข้าใจที่ลึกซึ้งยิ่งขึ้นเกี่ยวกับวิธีการทำงานของโมเดลเหล่านี้เมื่อเทียบกับการใช้ไลบรารีใหม่กว่าที่ซ่อนรายละเอียดการใช้งาน
คุณสมบัติทางเทคนิคของโครงการ
- การประมวลผลแบบ forward pass เต็มรูปแบบของ GPT-2 small (117M) บน GPU ผ่าน WebGL2 shaders
- การแบ่งคำแบบ BPE tokenization โดยใช้ js-tiktoken ในเบราว์เซอร์ (ไม่ต้องเรียกใช้ WASM)
- สคริปต์ Python สำหรับดาวน์โหลดโมเดลที่ผ่านการเทรนมาแล้ว
ข้อกำหนดเบื้องต้น
- Node.js ≥ 16.x และ npm
- Python ≥ 3.8
- เบราว์เซอร์รุ่นใหม่ที่รองรับ WebGL2 (Chrome, Firefox, Safari, Edge)
โครงการในชุมชนที่คล้ายคลึงกันที่ใช้อ้างอิง
- การพัฒนา GPT-2 บน Excel
- Qwen2-0.5B ที่ทำงานบน VRChat world shaders
- transformers.js ที่ใช้ ONNX runtime (รองรับ WASM, WebGL, WebGPU, WebNN)
ความท้าทายในการเผยแพร่และการเข้าถึง
โปรเจกต์ปัจจุบันเผชิญกับความท้าทายในการเผยแพร่ โดยเฉพาะเกี่ยวกับการกระจายน้ำหนัก ในขณะที่โค้ดมีอยู่บน GitHub ผู้ใช้สังเกตเห็นความยากลำบากในการเข้าถึงการสาธิตแบบสดเนื่องจากปัญหาในการโฮสต์น้ำหนักโมเดล สมาชิกชุมชนหลายคนแนะนำวิธีแก้ไข รวมถึงการดึงน้ำหนักโดยตรงจากที่เก็บ Hugging Face ตามความต้องการแทนที่จะรวมไว้กับแอปพลิเคชัน
ผู้สร้างกล่าวถึงการทำงานบนการเผยแพร่ GitHub Pages แต่ยอมรับความท้าทายกับวิธีการโหลดน้ำหนักในปัจจุบัน สมาชิกชุมชนเสนอคำแนะนำที่เป็นประโยชน์ รวมถึงการอ้างอิงโปรเจกต์ที่มีอยู่ซึ่งดึงน้ำหนัก GPT-2 จาก Hugging Face แบบไดนามิกได้สำเร็จ
โปรเจกต์นี้แสดงถึงจุดตัดที่น่าสนใจระหว่างการเขียนโปรแกรมกราฟิกและการเรียนรู้ของเครื่อง แสดงให้เห็นว่าเบราว์เซอร์สมัยใหม่มีความสามารถเพิ่มขึ้นในการรันโมเดล AI ที่ซับซ้อนโดยตรงบนฝั่งไคลเอนต์ เมื่อเทคโนโลยีเบราว์เซอร์ยังคงพัฒนาต่อไป เราคาดหวังที่จะเห็นแอปพลิเคชันนวัตกรรมมากขึ้นที่ใช้ประโยชน์จากการเร่งความเร็ว GPU สำหรับงาน AI โดยไม่ต้องการฮาร์ดแวร์หรือสภาพแวดล้อมซอฟต์แวร์เฉพาะทาง
อ้างอิง: GPT-2 WebGL Inference Demo