การอนุมาน Llama2 ที่รวดเร็วและพกพาได้บนเอดจ์ที่หลากหลาย
(secondstate.io)สแตก Rust+Wasm: ทางเลือกที่ทรงพลังแทน Python
- แอปพลิเคชัน Rust+Wasm มีขนาดเล็กกว่า Python 1/100 ทำงานเร็วกว่า 100 เท่า และสามารถรันได้อย่างปลอดภัยทุกที่โดยไม่ต้องเปลี่ยนแปลงการเร่งฮาร์ดแวร์เลย
- Rust คือภาษาสำหรับ AGI (ปัญญาประดิษฐ์ทั่วไป) และมีการสร้างโปรแกรม Rust แบบเรียบง่ายที่ใช้อนุมานโมเดล llama2 ได้ด้วยความเร็วเดิม
- แอปพลิเคชันไบนารีที่คอมไพล์เป็น Wasm (2MB) สามารถพกพาข้ามอุปกรณ์ที่มีตัวเร่งฮาร์ดแวร์หลากหลายได้อย่างสมบูรณ์
- Wasm runtime (WasmEdge) มอบสภาพแวดล้อมการรันที่ปลอดภัยและมั่นคงในสภาพแวดล้อมคลาวด์
การติดตั้งและรันโปรแกรม Rust
- Step 1. ติดตั้ง WasmEdge และปลั๊กอิน GGML: ใช้คำสั่งด้านล่างเพื่อติดตั้งบนอุปกรณ์ Linux หรือ Mac
- Step 2. ดาวน์โหลดแอป Wasm ที่บิลด์ไว้ล่วงหน้าและโมเดล: ดาวน์โหลดโมเดล llama2 ในรูปแบบ GGUF โดยตัวอย่างใช้โมเดล llama2 7B chat tuned ที่ควอนไทซ์น้ำหนักแบบ 5 บิต
- Step 3. รัน: ใช้ WasmEdge เพื่อรันแอปอนุมานแบบ wasm แล้วส่งโมเดล GGUF เข้าไป จากนั้นป้อนคำถามเพื่อสนทนากับโมเดล
การตั้งค่าการทำงานของโมเดล
- สามารถกำหนดวิธีโต้ตอบกับโมเดลได้ด้วยตัวเลือกบรรทัดคำสั่ง
- ตัวอย่างเช่น สามารถระบุความยาวคอนเท็กซ์ กำหนดจำนวนโทเค็นสูงสุดที่จะทำนายในแต่ละคำตอบ แสดงสถิติ และสตรีมคำตอบของโมเดลไปยัง
stdout - โปรแกรมสามารถสร้างโทเค็นได้ราว 25 โทเค็นต่อวินาทีบน MacBook M2 รุ่นราคาประหยัด
LLM เอเจนต์และแอป
- ใช้ Rust และ WasmEdge เพื่อสร้างเซิร์ฟเวอร์ API ที่เข้ากันได้กับ OpenAI
- ทำให้สามารถใช้เครื่องมือพัฒนาที่เข้ากันได้กับ OpenAI เพื่อสร้าง LLM เอเจนต์และแอปได้
ข้อดีของ Rust+Wasm เมื่อเทียบกับ Python
- สแตก Rust+Wasm เป็นทางเลือกที่ทรงพลังแทนสแตก Python สำหรับแอปพลิเคชัน AI inference และรองรับโครงสร้างพื้นฐานคลาวด์คอมพิวติง
- เบามาก: แอปอนุมานมีขนาดเพียง 2MB รวมทุก dependency แล้ว
- เร็วมาก: ให้ความเร็วระดับ native C/Rust ในทุกส่วนของแอปอนุมาน
- พกพาได้: แอป Wasm bytecode เดียวกันสามารถรันได้บนแพลตฟอร์มคอมพิวติงหลักทั้งหมดที่รองรับการเร่งฮาร์ดแวร์ที่หลากหลาย
- ติดตั้ง พัฒนา และดีพลอยได้ง่าย: ไม่มี dependency ที่ซับซ้อน สามารถบิลด์เป็นไฟล์ Wasm เดียวด้วยเครื่องมือมาตรฐานบนโน้ตบุ๊ก และนำไปดีพลอยที่ไหนก็ได้
- ปลอดภัยและพร้อมสำหรับคลาวด์: Wasm runtime ถูกออกแบบมาเพื่อแยกโค้ดของผู้ใช้ที่ไม่น่าเชื่อถือออกจากระบบ สามารถจัดการด้วยเครื่องมือคอนเทนเนอร์และดีพลอยบนแพลตฟอร์ม cloud-native ได้ง่าย
โปรแกรมอนุมาน Rust
- โปรแกรมอนุมานเดโมเขียนด้วย Rust และคอมไพล์เป็น Wasm
- ซอร์สโค้ด Rust เรียบง่ายมาก มีเพียง 40 บรรทัดของโค้ด
- โปรแกรม Rust จัดการอินพุตของผู้ใช้ ติดตามประวัติการสนทนา แปลงข้อความเป็น chat template ของ llama2 และรันงานอนุมานผ่าน WASI NN API
รันบนคลาวด์หรือเอดจ์
- เมื่อมีไฟล์ Wasm bytecode แล้ว ก็สามารถนำไปดีพลอยบนอุปกรณ์ใดก็ได้ที่รองรับ WasmEdge runtime
- WasmEdge ติดตั้งมาพร้อมปลั๊กอิน GGML และจะใช้ประโยชน์จากการเร่งฮาร์ดแวร์ที่มีอยู่อย่างอัตโนมัติเพื่อรันโมเดล llama2
ขั้นตอนถัดไป
- เครื่องมือ WasmEdge GGML พร้อมใช้งานแล้วในปัจจุบันและมีลูกค้า cloud-native ใช้งานอยู่ แต่ยังอยู่ในช่วงเริ่มต้น
- หากสนใจมีส่วนร่วมกับโครงการโอเพนซอร์สและช่วยกำหนดทิศทางของโครงสร้างพื้นฐาน LLM inference ในอนาคต ก็ยังมีงานระดับล่างหลายอย่างที่สามารถช่วยได้
โมเดล AI อื่น ๆ
- WasmEdge และ WASI NN สามารถใช้เป็นทางเลือกแทน Python เพื่อสร้างแอป inference ที่เบา เร็ว พกพาได้ และปลอดภัย
- ตัวอย่างเช่น โปรเจกต์ mediapipe-rs มอบ Rust+Wasm API สำหรับโมเดล Google mediapipe Tensorflow
ความเห็นของ GN⁺
สาระสำคัญที่สุดของบทความนี้คือการนำเสนอ Rust และ WebAssembly (Wasm) เป็นทางเลือกแทน Python สำหรับ AI inference ซึ่งให้ข้อได้เปรียบอย่างชัดเจนในด้านขนาด ความเร็ว การพกพา และความปลอดภัย สแตกเทคโนโลยีนี้ยังผสานรวมโครงสร้างพื้นฐานคลาวด์คอมพิวติงเพื่อยกระดับประสิทธิภาพบนอุปกรณ์และสภาพแวดล้อมคลาวด์ที่หลากหลาย พร้อมแก้ปัญหา dependency ที่ซับซ้อน และทำให้การพัฒนาและการดีพลอยง่ายขึ้น แนวทางนี้อาจส่งผลสำคัญต่ออนาคตของ edge computing และ AI inference และเป็นหัวข้อที่น่าสนใจอย่างมากสำหรับผู้ที่สนใจเทคโนโลยี
1 ความคิดเห็น
ความเห็นจาก Hacker News