30 คะแนน โดย xguru 2023-11-14 | 5 ความคิดเห็น | แชร์ทาง WhatsApp
  • สแตก Rust+WASM อาจเป็นทางเลือกที่ทรงพลังแทน Python สำหรับงานอนุมาน AI
    • เมื่อเทียบกับ Python แอป Rust+Wasm มีขนาดเพียง 1/100 เร็วกว่า 100 เท่า และสามารถรันได้อย่างปลอดภัยทุกที่พร้อมการเร่งฮาร์ดแวร์เต็มรูปแบบโดยไม่ต้องเปลี่ยนโค้ดไบนารี
    • Rust คือภาษาสำหรับ AGI
  • หากลองเขียนโปรแกรม Rust แบบง่ายเพื่อรันการอนุมาน Llama2 ด้วยความเร็วระดับเนทีฟ
    • หลังคอมไพล์เป็น Wasm แล้ว ไบนารีมีขนาดเพียง 2MB แต่ยังพกพาไปยังตัวเร่งฮาร์ดแวร์ต่างสถาปัตยกรรมได้อย่างสมบูรณ์
    • นอกจากนี้ Wasm runtime (WasmEdge) ยังมอบสภาพแวดล้อมการรันที่ปลอดภัยสำหรับคลาวด์ ทำงานร่วมกับเครื่องมือคอนเทนเนอร์ได้อย่างราบรื่น จึงสามารถ orchestration และรันแอปแบบพกพาบนอุปกรณ์หลากหลายชนิดได้

ทำไมไม่ใช้ Python?

  • โดยทั่วไป LLM อย่าง llama2 มักถูกฝึกด้วย Python (เช่น PyTorch, Tensorflow, JAX)
  • แต่การใช้ Python กับแอปพลิเคชันอนุมานซึ่งคิดเป็นราว 95% ของงานประมวลผล AI นั้นเป็นความผิดพลาดครั้งใหญ่
  • แพ็กเกจ Python มี dependency ที่ซับซ้อน ตั้งค่าและใช้งานได้ยาก
  • dependency ของ Python มีขนาดใหญ่มาก Docker image สำหรับ Python หรือ PyTorch มักมีขนาดหลาย GB หรือหลายสิบ GB ซึ่งเป็นปัญหาอย่างยิ่งเมื่อทำ AI inference บน edge server หรืออุปกรณ์
  • Python เป็นภาษาที่ช้ามาก ช้ากว่าภาษาคอมไพล์อย่าง C, C++, Rust ได้มากสุดถึง 35,000 เท่า
  • เพราะ Python ช้า เวิร์กโหลดจริงส่วนใหญ่จึงต้องมอบให้ shared library แบบเนทีฟที่อยู่ใต้ Python wrapper
    • ดังนั้นแอปอนุมานด้วย Python จึงเหมาะกับเดโม แต่ปรับแก้ภายในให้ตรงกับความต้องการเฉพาะของธุรกิจได้ยากมาก
    • เนื่องจากต้องพึ่งพา native library อย่างมากและการจัดการ dependency ก็ซับซ้อน จึงยากมากที่จะพอร์ตโปรแกรม AI ที่เขียนด้วย Python ไปยังหลายอุปกรณ์ พร้อมใช้ความสามารถฮาร์ดแวร์เฉพาะของแต่ละเครื่องให้เต็มที่
  • แพ็กเกจ Python ที่ใช้กันทั่วไปใน toolchain ของ LLM มักขัดแย้งกันเองโดยตรง
  • Chris Lattner ผู้เป็นที่รู้จักจาก LLVM, Tensorflow และภาษา Swift ได้ให้สัมภาษณ์ที่น่าสนใจในพอดแคสต์สตาร์ทอัพสัปดาห์นี้ โดยอธิบายว่าเหตุใด Python จึงยอดเยี่ยมสำหรับการฝึกโมเดล แต่เป็นตัวเลือกที่ไม่เหมาะสำหรับแอปอนุมาน

ข้อดีของ Rust+Wasm

  • สแตก Rust+Wasm มอบโครงสร้างพื้นฐานคลาวด์คอมพิวติ้งแบบรวมศูนย์ ตั้งแต่อุปกรณ์ edge cloud, เซิร์ฟเวอร์ on-premise ไปจนถึง public cloud
  • เป็นทางเลือกที่แข็งแกร่งแทนสแตก Python สำหรับแอป AI inference และไม่น่าแปลกใจที่ Elon Musk เคยบอกว่า Rust คือภาษาของ AGI
  • เบามาก: แอปอนุมานมีขนาดเพียง 2MB รวม dependency ทั้งหมดแล้ว ซึ่งยังไม่ถึง 1% ของขนาดคอนเทนเนอร์ PyTorch ทั่วไป
  • เร็วมาก: ให้ความเร็วระดับเนทีฟของ C/Rust ในทุกส่วนของแอปอนุมาน ไม่ว่าจะเป็น preprocessing, tensor operations และ postprocessing
  • พกพาได้: สามารถรันแอป Wasm bytecode เดียวกันได้บนทุกแพลตฟอร์มการประมวลผลหลักที่รองรับการเร่งฮาร์ดแวร์แบบต่างสถาปัตยกรรม
  • ตั้งค่า พัฒนา และดีพลอยง่าย: ไม่ต้องมี dependency ที่ซับซ้อนอีกต่อไป ใช้เครื่องมือมาตรฐานบนโน้ตบุ๊กเพื่อ build ไฟล์ Wasm เดียวแล้วนำไป deploy ได้ทุกที่
  • ปลอดภัยและรองรับคลาวด์: Wasm runtime ถูกออกแบบมาเพื่อแยกโค้ดของผู้ใช้ที่ไม่น่าเชื่อถือออกจากระบบ สามารถจัดการ Wasm runtime ด้วยเครื่องมือคอนเทนเนอร์ และนำไป deploy บนแพลตฟอร์ม cloud-native ได้ง่าย

เดโมการอนุมานด้วย Rust

  • เขียนด้วยโค้ด Rust เพียง 40 บรรทัด และคอมไพล์เป็น Wasm
  • เมื่อได้ Wasm bytecode แล้ว ก็สามารถนำไป deploy บนอุปกรณ์ใดก็ได้ที่รองรับ WasmEdge runtime
  • ปลั๊กอิน WasmEdge GGML ที่อิงกับ llama.cpp จะใช้การเร่งฮาร์ดแวร์ของอุปกรณ์โดยอัตโนมัติเพื่อรันโมเดล llama2

ขั้นถัดไป

  • ชุดเครื่องมือ WasmEdge GGML พร้อมใช้งานแล้วในปัจจุบัน และมีลูกค้า cloud-native ใช้งานจริง แต่ยังอยู่ในระยะเริ่มต้น
  • หากคุณสนใจมีส่วนร่วมกับโอเพนซอร์สโปรเจกต์และช่วยกำหนดทิศทางของโครงสร้างพื้นฐาน LLM inference แห่งอนาคต ต่อไปนี้คือบางส่วนที่อาจร่วมพัฒนาได้
    • เพิ่มปลั๊กอิน GGML สำหรับฮาร์ดแวร์และแพลตฟอร์ม OS ให้มากขึ้น: เช่น TPU บน Linux และ Windows, ARM NPU และชิป AI เฉพาะทางอื่น ๆ
    • รองรับการตั้งค่า llama.cpp ให้มากขึ้น: ปัจจุบันรองรับการส่ง option การตั้งค่าบางส่วนจาก Wasm ไปยังปลั๊กอิน GGML แล้ว แต่ตั้งใจจะรองรับทุก option ที่ GGML มี
    • รองรับ WASI NN API สำหรับภาษาอื่นที่เข้ากันได้กับ Wasm: โดยเฉพาะ Go, Zig, Kotlin, JavaScript, C และ C++

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

 
gcback 2023-11-14

แนวทางที่เป็นจริงที่สุดที่ Apple ซึ่งตอนนี้ยังเป็นรองในด้าน AI อาจเลือกใช้ ดูเหมือนจะเป็นการใช้เอนจินอนุมาน S/W ที่ปรับแต่งมาอย่างดีแบบในบทความต้นฉบับ ให้เร่งความเร็วด้วย NPU ของชิป A ใน iPhone แล้วใส่ไฟล์ foundation model ลงไปใน iPhone แบบทั้งก้อน

ช่วงหลังทั้งในแวดวงวิชาการและอุตสาหกรรม มีความเห็นไปในทิศทางเดียวกันว่าประสิทธิภาพ AI ไม่ได้ขึ้นกับขนาดเพียงอย่างเดียว แต่ข้อมูลและการทำ fine-tuning สำคัญกว่า และก็มีเสียงประเมินกันมากว่าใน Llama2 ประสิทธิภาพจากการทำ fine-tuning นั้นดีมาก จึงคิดว่าการส่งโมเดลที่ฝึกมาอย่างดีลงไปยัง edge device อย่างต่อเนื่องก็น่าจะเป็นไปได้มากพอ
ในแง่นั้น กลยุทธ์แบบยัดทุกอย่างลงไปใน iPhone ก็ดูเป็นแนวทางที่ค่อนข้างสมจริงทีเดียว.

 
ragingwind 2023-11-14

WASM กำลังบูมขนาดนี้เลยเหรอ? แต่ Python ไม่ควรเอาไปเทียบกับ Mojo มากกว่าหรือ

 
freedomzero 2023-11-14

เห็นด้วยครับ/ค่ะ Mojo ยังต้องถือว่าอยู่ในขั้นทดลอง

 
cosine20 2023-11-14

แม้ว่า Mojo จะยังไม่ได้เปิดตัวอย่างเป็นทางการ แต่ Rust ก็เป็นภาษาที่เติบโตเต็มที่พอสมควรแล้ว และกำลังเข้ามาแทนที่หลายส่วนในการใช้งานจริงอยู่แล้ว

 
xguru 2023-11-14

GN⁺: การรันอนุมาน Llama2 ที่รวดเร็วและพกพาได้บน Edge แบบต่างสถาปัตยกรรม
โปรดดูสรุปของ GN⁺ และความคิดเห็นใน Hacker News ประกอบด้วย