24 คะแนน โดย xguru 2023-12-07 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • เฟรมเวิร์กอาร์เรย์ที่สร้างโดยทีมวิจัยแมชชีนเลิร์นนิงของ 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 ความคิดเห็น

 
mjhong0708 2023-12-07

การสร้างกราฟแบบไดนามิก: กราฟการคำนวณของ MLX ถูกสร้างขึ้นแบบไดนามิก แม้จะเปลี่ยน shape ของอาร์กิวเมนต์ของฟังก์ชัน ความเร็วในการคอมไพล์ก็ไม่ช้าลง และการดีบักก็ทำได้ง่ายและตรงไปตรงมา

อันนี้ดูดีมากจริง ๆ นะครับ ผมต้องจัดการกับข้อมูลแบบ dynamic เยอะ พอใช้ jax ทีไรก็ลำบากตลอด...

 
haebom 2023-12-07

โอ้ อันนี้ดีเลยครับ เดี๋ยวจะลองใช้ดูครับ