Firefox ย้ายตัวประมวลผล AI จาก WASM เป็น Native C++ รันเร็วขึ้น 2-10 เท่า
Body
Firefox เลือกแนวทางใช้โมเดล AI รันในเครื่อง ด้วยเหตุผลด้านความเป็นส่วนตัว ซึ่งต่างจากเบราว์เซอร์ตัวอื่นๆ อย่างไรก็ตาม แนวทางนี้กลับเจอปัญหาเรื่องประสิทธิภาพ
ล่าสุด Firefox ประกาศวิธีแก้ปัญหานี้ ด้วยการเปลี่ยนรันไทม์ AI จากของเดิมรันบน WebAssembly (WASM) มาเป็น native C++ แทน
ระบบเดิม
การรัน AI บนหน้าเว็บของ Firefox ทำผ่านไลบรารี Transformers.js ที่เรียกใช้ onnxruntime‑web หรือรันไทม์ ONNX ที่อยู่บน WebAssembly (WASM) อีกที กระบวนการทำงานมี 3 ขั้นตอน
ปัญหาคือประสิทธิภาพของ WASM ไม่สามารถสู้เนทีฟได้ และไม่รองรับชุดคำสั่งเร่งความเร็วเฉพาะสถาปัตยกรรมซีพียู เช่น AVX-512 ของซีพียูอินเทล หรือ NEON บน Apple Silicon นอกจากนี้ยังมีปัญหาการแปลง JavaScript เป็น WASM ครั้งแรกจะต้องใช้เวลานาน (cold start)
ระบบใหม่
Mozilla ตัดสินใจผนวกเอารันไทม์ ONNX ที่เขียนด้วย C++ เข้ามาในตัว Firefox โดยตรง เพื่อตัดกระบวนการแปลง JavaScript เป็น WASM ออกไป เหลือเป็น JavaScript เข้าตรงเป็นเนทีฟได้เลย
การนำรันไทม์ ONNX มาใช้มีข้อจำกัดเล็กน้อย ตรงที่รันไทม์ไม่รองรับ build configuration ของ Firefox ทุกแบบ ถ้าผนวกเข้ามาในซอร์สโค้ด (in-tree) จะต้องแก้ไขเยอะ ทำให้ Firefox เลือกผนวกตัวไบนารีที่คอมไพล์แล้วเข้ามาแทน โดย Firefox จะดาวน์โหลดไบนารีมาให้อัตโนมัติเมื่อจะใช้งาน
ผลจากการเปลี่ยน WASM เป็น native C++ สามารถเพิ่มความเร็วในการรัน AI ได้สูง 2-10 เท่าตามแต่กรณี ตัวอย่างคือ ฟีเจอร์จัดกลุ่มแท็บ Smart Tab Grouping ที่มีปัญหาประสิทธิภาพ ทำงานได้เร็วขึ้นมากตอน cold start
Mozilla บอกว่ากำลังค่อยๆ ย้ายฟีเจอร์ AI มารันบน backend ตัวใหม่ และมีแผนปรับปรุงประสิทธิภาพเพิ่มเติม เช่น การรันมัลติเธร็ด การทำแคช model graph ก่อนรันงาน การย้ายไปรันในจีพียูแทนซีพียู เป็นต้น
ที่มา - Firefox Blog
mk Mon, 01/09/2025 - 08:49
Continue reading...
Body
Firefox เลือกแนวทางใช้โมเดล AI รันในเครื่อง ด้วยเหตุผลด้านความเป็นส่วนตัว ซึ่งต่างจากเบราว์เซอร์ตัวอื่นๆ อย่างไรก็ตาม แนวทางนี้กลับเจอปัญหาเรื่องประสิทธิภาพ
ล่าสุด Firefox ประกาศวิธีแก้ปัญหานี้ ด้วยการเปลี่ยนรันไทม์ AI จากของเดิมรันบน WebAssembly (WASM) มาเป็น native C++ แทน
ระบบเดิม
การรัน AI บนหน้าเว็บของ Firefox ทำผ่านไลบรารี Transformers.js ที่เรียกใช้ onnxruntime‑web หรือรันไทม์ ONNX ที่อยู่บน WebAssembly (WASM) อีกที กระบวนการทำงานมี 3 ขั้นตอน
- Pre‑processing in JavaScript (tokenization, tensor shaping)
- Model execution in WASM
- Post‑processing back in JavaScript
ปัญหาคือประสิทธิภาพของ WASM ไม่สามารถสู้เนทีฟได้ และไม่รองรับชุดคำสั่งเร่งความเร็วเฉพาะสถาปัตยกรรมซีพียู เช่น AVX-512 ของซีพียูอินเทล หรือ NEON บน Apple Silicon นอกจากนี้ยังมีปัญหาการแปลง JavaScript เป็น WASM ครั้งแรกจะต้องใช้เวลานาน (cold start)
ระบบใหม่
Mozilla ตัดสินใจผนวกเอารันไทม์ ONNX ที่เขียนด้วย C++ เข้ามาในตัว Firefox โดยตรง เพื่อตัดกระบวนการแปลง JavaScript เป็น WASM ออกไป เหลือเป็น JavaScript เข้าตรงเป็นเนทีฟได้เลย
การนำรันไทม์ ONNX มาใช้มีข้อจำกัดเล็กน้อย ตรงที่รันไทม์ไม่รองรับ build configuration ของ Firefox ทุกแบบ ถ้าผนวกเข้ามาในซอร์สโค้ด (in-tree) จะต้องแก้ไขเยอะ ทำให้ Firefox เลือกผนวกตัวไบนารีที่คอมไพล์แล้วเข้ามาแทน โดย Firefox จะดาวน์โหลดไบนารีมาให้อัตโนมัติเมื่อจะใช้งาน
ผลจากการเปลี่ยน WASM เป็น native C++ สามารถเพิ่มความเร็วในการรัน AI ได้สูง 2-10 เท่าตามแต่กรณี ตัวอย่างคือ ฟีเจอร์จัดกลุ่มแท็บ Smart Tab Grouping ที่มีปัญหาประสิทธิภาพ ทำงานได้เร็วขึ้นมากตอน cold start
Mozilla บอกว่ากำลังค่อยๆ ย้ายฟีเจอร์ AI มารันบน backend ตัวใหม่ และมีแผนปรับปรุงประสิทธิภาพเพิ่มเติม เช่น การรันมัลติเธร็ด การทำแคช model graph ก่อนรันงาน การย้ายไปรันในจีพียูแทนซีพียู เป็นต้น
ที่มา - Firefox Blog
mk Mon, 01/09/2025 - 08:49
Continue reading...