WASM ทางเลือกใหม่ของงาน AI Infra
ผมมีโอกาสได้ไปงาน KubeDay2023 Singapore เมื่อวันที่ 12 ที่ผ่านมา ในงานวันนั้นจริงๆ มีหลาย Session ที่น่าสนใจมากๆ แต่ถูกผมชอบมากที่สุดก็คือ Session ที่มีชื่อว่า “Wasm for AI Infra : a Lightweight, Fast, and Secure Alternative Approach” ของคุณ MileyFu นั่นเอง
วันนี้ผมจึงจะมาเล่าเนื้อหาบางส่วนที่ได้ฟังมา ส่วนตัวผมคิดว่าไม่แน่เร็วๆ นี้เราอาจจะไม่ต้องใช้อุปกรณ์ที่มี computation สูงๆ มารัน AI อีกต่อไปแล้วก็เป็นได้ 5555
ปัจจุบันเวลาที่เราจะ self host model ai สักตัวเขาทำท่าไหนกัน?
คุณ MileyFu เล่าว่า ท่าที่ทำได้ง่ายที่สุดนั้นก็คือเราก็จะใช้ Python + Docker นี่แหละ คือการเริ่มต้นที่ง่ายที่สุดละ (ไม่นับพวก provider เช่น huggingface หรือ cloud provider ทั้งหลายนะ)
ซึ่งการใช้ Python + Docker เนี่ยก็มีข้อดีหลายอย่างเลย เช่น เขียนโค๊ดง่าย, เริ่มต้นได้ง่าย, มีคอมมูนิตี้คอยช่วยเหลือ มันจึงเหมาะมากเลยที่เหล่ายอดมนุษย์ในสายงาน data จะทำของพวกนี้ได้เอง
แต่ทว่ามันก็มีปัญหาใหญ่ๆ ที่เจอกันอยู่นั่งก็คือปัญหาเรื่องของ resource และ performances นั่นเอง ถึงแม้ว่ามันจะทำได้ง่ายแต่มันก็แลกมาด้วยการกินทรัพยากรจำนวนมากที่มาพร้อมกับช้าสุดๆ มันเลยทำให้เทคโนโลยีด้าน AI มันไปกองกับบริษัทใหญ่ๆ ที่มีเงินหนาพอจะเสก computation สูงๆ ได้
อ้าวแล้วแบบนี้จะแก้ปัญหายังไง?
คุณ MileyFu ก็เล่าต่อว่า เออเนี่ยมันก็มีหลายคนที่พยายามจะแก้ปัญหาตรงนี้อยู่นะ ยกตัวอย่างเช่น เปลี่ยนจาก python มาเป็น cython สิ ได้ perfomance ระดับ low level เลยนะ แต่ประเด็นคือมันก็ไม่ได้เขียน python อย่างเดียวทั้งหมดไง มันเหมือนมีโลกสองใบที่ต้องเขียนทั้ง python และ cython
ที่นี้ก็มี dev ท่านหนึ่งชื่อ Chris Lattner ที่เขาอยากจะแก้ปัญหาเรื่องโลกสองใบนี่แหละ ก็เลยไปกระโดดไปพัฒนาภาษาใหม่ที่ชื่อว่า Mojo ซึ่งเขาเคลมว่าเร็วกว่า python 35,000 เท่า แต่ก็ยังอยู่ในขั้นตอนการพัฒนาอยู่
อ้าวแบบนี้ใน prod จะมีทางเลือกอื่นอีกไหม? และแล้วก็มาถึงจุดที่คุณ MileyFu จะป้าย wasm หรือก็คือ WebAssembly นั่นเอง ซึ่งเจ้า wasm เนี่ยคุณ MileyFu เล่าแบบเร็วๆ ว่ามันเป็นเทคนิคนึงที่เราสามารถ compile code ของเราให้อยู่ในรูปของ binary format แล้วคือมันเร็วแล้วกินทรัพยากรน้อยมาก
ซึ่งในงานนี้เนี่ยคุณ MileyFu ก็เล่าว่า WebAssembly อาจจะเป็นทางเลือกใหม่ๆ ในการพัฒนา software ของยุคถัดไปต่อจาก Contaniner เลยนะ
แล้วไอ้ WebAssembly มันจะได้งานได้ดีกับ AI จริงหรือเปล่า?
คุณ MileyFu ไม่รอช้าจัดการ run ตัว Llama2 7b Chat Model (7 พันล้าน parameter) ด้วย WebAssembly บน Macbook ของเธอทันที ปรากฏว่ารันได้แบบไม่มีปัญหา !! สามารถทำการสลับจอมาพูดต่อได้อย่างไม่กระตุกเสมือนว่าตัว Model นั้นรันอยู่บน T4 หรือ A100 ก็มิปาน
และแล้วคุณ MileyFu ก็ปิดท้ายด้วยการขายของตัวโปรเจคที่เธอทำอยู่ ก็คือ WasmEdge และอื่นๆ อีกมากมาย
จริงๆ เนื้อหาใน session นี้มีพูดถึงภาษา rust เยอะพอสมควรแต่ผมไม่ได้เล่าเพราะว่ามันแต่ตื่นเต้นกับ WebAssembly อยู่
หลังจากจบ Session ผมนี่แทบจะเปิด macbook มา install rust แล้วทำตามในทันที 5555 หวังว่าทุกท่านจะเอ็นจอยใน WebAssembly ที่ผมป้ายยาไปนะครับ
เนื้อหาเพิ่มเติม