MLX - เฟรมเวิร์กอาร์เรย์คล้าย NumPy สำหรับ Apple Silicon
(github.com/ml-explore)- เฟรมเวิร์กอาร์เรย์ที่สร้างโดยทีมวิจัยแมชชีนเลิร์นนิงของ Apple ออกแบบมาเพื่อให้ทำแมชชีนเลิร์นนิงบน Apple Silicon ได้อย่างมีประสิทธิภาพและยืดหยุ่น
- มี Python API ที่แทบจะเหมือนกับ NumPy และยังมี C++ API ที่ให้ความสามารถทั้งหมดเช่นกัน
- ความแตกต่างจาก NumPy
- Composable function transformations: MLX มีการแปลงฟังก์ชันแบบประกอบได้สำหรับการทำ automatic differentiation, automatic vectorization และการปรับแต่ง computation graph
- Lazy Computation: การคำนวณของ MLX เป็นแบบ lazy โดยอาร์เรย์จะถูก materialize เฉพาะเมื่อจำเป็นเท่านั้น
- หลายอุปกรณ์: สามารถรันการคำนวณได้บนอุปกรณ์ที่รองรับทั้งหมด (CPU, GPU, ...)
- การสร้างกราฟแบบไดนามิก: computation graph ของ MLX ถูกสร้างขึ้นแบบไดนามิก แม้จะเปลี่ยนรูปร่างของอาร์กิวเมนต์ของฟังก์ชันก็ไม่ทำให้ความเร็วในการคอมไพล์ช้าลง และทำให้การดีบักง่ายและเข้าใจได้ตรงไปตรงมา
- ได้รับแรงบันดาลใจจากเฟรมเวิร์กอย่าง PyTorch, Jax และ ArrayFire
- ความแตกต่างที่เห็นได้ชัดระหว่างเฟรมเวิร์กเหล่านี้กับ MLX คือ Unified Memory Model
- อาร์เรย์ของ MLX ถูกเก็บไว้ในหน่วยความจำที่ใช้ร่วมกัน การทำงานกับอาร์เรย์ MLX สามารถทำได้บนอุปกรณ์ทุกประเภทที่รองรับโดยไม่ต้องคัดลอกข้อมูล
- ประเภทอุปกรณ์ที่รองรับในปัจจุบันคือ CPU และ GPU
- มีตัวอย่างที่หลากหลาย
- การฝึก Transformer language model
- การสร้างข้อความขนาดใหญ่ด้วย LLaMA และการ fine-tune ด้วย LoRA
- การสร้างภาพด้วย Stable Diffusion
- การรู้จำเสียงพูดด้วย OpenAI's Whisper
2 ความคิดเห็น
อันนี้ดูดีมากจริง ๆ นะครับ ผมต้องจัดการกับข้อมูลแบบ dynamic เยอะ พอใช้ jax ทีไรก็ลำบากตลอด...
โอ้ อันนี้ดีเลยครับ เดี๋ยวจะลองใช้ดูครับ