ภาษาโปรแกรม Mojo ได้ก้าวไปข้างหน้าอย่างมีนัยสำคัญด้วยการเพิ่มการรองรับ GPU ของ Apple Silicon ในรุ่น nightly releases ล่าสุด การพัฒนานี้มีเป้าหมายเพื่อทำให้การเขียนโปรแกรม GPU เข้าถึงได้ง่ายขึ้นโดยการกำหนดเป้าหมายไปที่ฮาร์ดแวร์ที่มีอยู่ในมือของนักพัฒนาหลายล้านคนแล้ว นั่นคือคอมพิวเตอร์ Mac รุ่นใหม่ อย่างไรก็ตาม การประกาศนี้ได้จุดประกายการถกเถียงอย่างเข้มข้นภายในชุมชนนักพัฒนาเกี่ยวกับว่า Mojo จะสามารถเอาชนะอุปสรรคสำคัญต่อการนำไปใช้อย่างแพร่หลายได้หรือไม่
ทำให้การเขียนโปรแกรม GPU เป็นประชาธิปไตยมากขึ้น
การรองรับ GPU ของ Apple Silicon ใหม่ของ Mojo แสดงถึงความพยายามในการลดอุปสรรคต่อการเขียนโปรแกรม GPU แทนที่จะต้องใช้ฮาร์ดแวร์ NVIDIA ที่มีราคาแพงในการเขียน custom kernels นักพัฒนาสามารถทดลองกับการเร่งความเร็วด้วย GPU โดยใช้คอมพิวเตอร์ Mac ที่มีอยู่แล้ว การใช้งานนี้ทำงานได้กับชิป M1-M4 ทุกซีรีส์ที่ใช้ macOS 15 หรือใหม่กว่า แม้ว่าจะต้องใช้เครื่องมือพัฒนาเฉพาะรวมถึง Xcode 16
แนวทางทางเทคนิคเกี่ยวข้องกับการคอมไพล์โค้ด Mojo ไปเป็น Apple Intermediate Representation (AIR) bitcode ซึ่งจะถูกแปลงเป็นรูปแบบที่เข้ากันได้กับ Metal สำหรับการประมวลผล กระบวนการนี้เกิดขึ้นเบื้องหลังผ่าน MetalDeviceContext เฉพาะที่จัดการไปป์ไลน์ทั้งหมดตั้งแต่การคอมไพล์จนถึงการประมวลผล
หมายเหตุทางเทคนิค: AIR (Apple Intermediate Representation) คือรูปแบบโค้ดระดับต่ำของ Apple ที่ใช้สำหรับการเขียนโปรแกรม GPU ด้วย Metal ในขณะที่ Metal คือ API สำหรับกราฟิกและการคำนวณของ Apple ที่คล้ายกับ CUDA หรือ OpenCL
ข้อกำหนดระบบสำหรับการรองรับ GPU Apple Silicon ของ Mojo:
- Mac Apple Silicon (ชิป M1-M4 series)
- macOS 15 หรือใหม่กว่า
- Xcode 16 หรือใหม่กว่า
- Metal Shading Language 3.2 (AIR bitcode version 2.7.0)
ความสามารถที่จำกัดในปัจจุบันทำให้เกิดคำถาม
แม้ว่าการรองรับเบื้องต้นจะมีแนวโน้มที่ดี แต่การใช้งานในปัจจุบันมีข้อจำกัดที่สำคัญ MAX graphs พื้นฐานยังไม่ทำงาน ซึ่งหมายความว่าโมเดล AI ไม่สามารถทำงานบน GPU ของ Apple Silicon ได้ ฟีเจอร์ขั้นสูงหลายอย่างเช่น atomic operations, intrinsics บางตัว และการทำงานร่วมกับ PyTorch ยังหายไป แม้แต่ตัวอย่างง่ายๆ เช่น reduction operations ก็ยังไม่ทำงาน
ข้อจำกัดเหล่านี้ทำให้สมาชิกชุมชนบางคนตั้งคำถามว่าความพยายามนี้ตอบสนองความต้องการที่แท้จริงของนักพัฒนาหรือไม่ การอภิปรายเผยให้เห็นความแตกแยกพื้นฐาน: ในขณะที่บางคนเห็นศักยภาพในการทำให้การเขียนโปรแกรม GPU เข้าถึงได้ง่ายขึ้น คนอื่นๆ โต้แย้งว่านักพัฒนาส่วนใหญ่พึ่งพาไลบรารีที่มีอยู่แล้วซึ่งได้รับการปรับให้เหมาะสมสูงแทนที่จะเขียน custom kernels
ข้อจำกัดปัจจุบัน:
- ไม่รองรับ intrinsics สำหรับความสามารถของฮาร์ดแวร์หลายประเภท
- ตัวอย่าง reduction.mojo และการคูณเมทริกซ์เชิงซ้อนใช้งานไม่ได้
- GPU puzzles 16+ ต้องการคุณสมบัติฮาร์ดแวร์ขั้นสูงมากขึ้น
- ไม่รองรับ MAX graphs พื้นฐาน
- ไม่มี MAX custom ops
- ไม่มีการทำงานร่วมกับ PyTorch
- ยังไม่สามารถรันหรือให้บริการโมเดล AI ได้
การถกเถียงเรื่องความท้าทายในการนำไปใช้
การอภิปรายของชุมชนได้เผยให้เห็นความไม่เห็นด้วยอย่างรุนแรงเกี่ยวกับแนวโน้มอนาคตของ Mojo ผู้วิจารณ์ชี้ไปที่จำนวนนักพัฒนาที่น้อยมากที่เขียน custom GPU kernels จริงๆ โดยแนะนำว่างาน machine learning ส่วนใหญ่พึ่งพาไลบรารีที่สร้างไว้ล่วงหน้าและปรับให้เหมาะสมสูงจาก frameworks เช่น PyTorch พวกเขาโต้แย้งว่าการปรับปรุงประสิทธิภาพ 30% จาก custom kernels นั้นไม่มีนัยสำคัญเมื่อเทียบกับการปรับปรุง 500%+ ที่ได้จากการอัปเกรดฮาร์ดแวร์หรือการปรับปรุงโครงสร้างพื้นฐาน
การปรับปรุง 30% ที่คุณได้จาก kernels และเทคนิคคอมไพเลอร์นั้นไม่มีนัยสำคัญเลยเมื่อเทียบกับการปรับปรุง 500%+ ที่คุณได้จากการอัปเกรดฮาร์ดแวร์ การเพิ่ม load balancing และ routing, KV และ prefix caching, การดำเนินการแบบกลุ่มที่ปรับให้เหมาะสม ฯลฯ
ผู้สนับสนุนโต้แย้งว่าการทำให้การเขียนโปรแกรม GPU ง่ายขึ้นอาจขยายกลุ่มนักพัฒนาที่สามารถเขียน custom kernels ได้ พวกเขาชี้ไปที่ศักยภาพของ Mojo สำหรับความเข้ากันได้ข้ามแพลตฟอร์มและคำมั่นสัญญาในการจับคู่ประสิทธิภาพของ C++ ในขณะที่รักษาไวยากรณ์ที่คล้าย Python
ข้อกังวลเรื่องโมเดลธุรกิจและคำถามเกี่ยวกับ Open Source
ธีมที่เกิดขึ้นซ้ำๆ ในการอภิปรายของชุมชนเน้นไปที่ลักษณะเชิงพาณิชย์ของ Mojo ไม่เหมือนกับ CUDA ที่มาฟรีกับฮาร์ดแวร์ NVIDIA, Mojo ถูกพัฒนาโดยบริษัทเชิงพาณิชย์ที่ต้องสร้างรายได้ สิ่งนี้ทำให้เกิดความลังเลใจในหมู่นักพัฒนาที่กังวลเกี่ยวกับการสร้างบนแพลตฟอร์มที่อาจต้องมีค่าธรรมเนียมใบอนุญาตหรืออาจเปลี่ยนทิศทางตามความต้องการทางธุรกิจ
การเปรียบเทียบกับภาษาอื่นๆ ที่ได้รับการสนับสนุนจากบริษัทเช่น Swift (Apple) และ Go (Google) ได้เกิดขึ้น โดยบางคนโต้แย้งว่าการนำไปใช้ที่ประสบความสำเร็จเป็นไปได้แม้จะมีความเป็นเจ้าของขององค์กร อย่างไรก็ตาม คนอื่นๆ ชี้ไปที่ความพยายามที่ล้มเหลวเช่น Swift for TensorFlow เป็นเรื่องเตือนใจ
หมายเหตุทางเทคนิค: CUDA คือแพลตฟอร์มการคำนวณแบบขนานของ NVIDIA ที่มาฟรีกับ GPU ของพวกเขาแต่ไม่ใช่ open source ในขณะที่ Mojo วางแผนที่จะกลายเป็น open source อย่างสมบูรณ์ภายในสิ้นปี 2025
บทสรุป
การรองรับ GPU ของ Apple Silicon ของ Mojo แสดงถึงความสำเร็จทางเทคนิคที่น่าสนใจ แต่การถกเถียงของชุมชนเน้นย้ำถึงความท้าทายที่ซับซ้อนที่ภาษาโปรแกรมใหม่ใดๆ ในพื้นที่ AI/ML ต้องเผชิญ แม้ว่าความสามารถทางเทคนิคจะน่าประทับใจ แต่คำถามเกี่ยวกับการนำไปใช้ การพัฒนาระบบนิเวศ และความยั่งยืนของโมเดลธุรกิจยังคงไม่ได้รับการแก้ไข ความสำเร็จของความคิดริเริ่มนี้น่าจะขึ้นอยู่กับว่า Modular สามารถแก้ไขข้อกังวลเหล่านี้ได้หรือไม่ในขณะที่ยังคงขยายความสามารถและข้อได้เปรียบด้านประสิทธิภาพของ Mojo
อ้างอิง: Apple Silicon GPU support in Mojo