การสนทนาล่าสุดในวงการเทคโนโลยีได้เผยให้เห็นความกำกวมที่น่าสนใจในโลกของการคำนวณ: ความหมายที่ซ้อนทับกันของ ML ในเทคโนโลยีคอมไพเลอร์ ในขณะที่นักพัฒนาบางคนกดเข้าไปอ่านบทความเกี่ยวกับคอมไพเลอร์ ML โดยหวังว่าจะได้อ่านเกี่ยวกับคอมไพเลอร์ Meta Language อย่าง OCaml หรือ Standard ML (SML) แต่กลับพบว่าตัวเองกำลังเจาะลึกเข้าไปในความซับซ้อนของระบบการคอมไพล์ Machine Learning
เรื่องราวของ ML สองประเภท
ความสับสนนี้เกิดจากคำว่า ML ที่ถูกใช้ในสองบริบทที่แตกต่างกันในวิทยาการคอมพิวเตอร์:
- Meta Language (ML) - ตระกูลของภาษาโปรแกรมมิ่งที่รวมถึง OCaml และ Standard ML ซึ่งเป็นที่รู้จักในด้านการพัฒนาคอมไพเลอร์ที่ค่อนข้างตรงไปตรงมา
- ** Machine Learning (ML)** - สาขาของปัญญาประดิษฐ์ที่มุ่งเน้นการฝึกฝนโมเดลเพื่อทำงานเฉพาะทาง
ความแตกต่างด้านความซับซ้อน
สิ่งที่ทำให้ความแตกต่างนี้น่าสนใจเป็นพิเศษคือความแตกต่างอย่างชัดเจนในด้านความซับซ้อนระหว่างคอมไพเลอร์ทั้งสองประเภท จากการสนทนาในชุมชน คอมไพเลอร์ของ Meta Language นั้นค่อนข้างตรงไปตรงมาในการพัฒนา อย่างไรก็ตาม คอมไพเลอร์สำหรับ Machine Learning กลับเผชิญกับความท้าทายมากมายที่ทำให้มีความซับซ้อนมากขึ้นอย่างมีนัยสำคัญ:
ความท้าทายหลักในการคอมไพล์ Machine Learning:
- ** ความหลากหลายของการดำเนินการ**: เฟรมเวิร์ก ML สมัยใหม่อย่าง TensorFlow มีการดำเนินการที่แตกต่างกันมากกว่า 2,000 รูปแบบ
- ** การพัฒนาอย่างต่อเนื่อง**: เลเยอร์และการดำเนินการใหม่ๆ ถูกคิดค้นขึ้นอย่างต่อเนื่องโดยนักวิจัย
- ** ความซับซ้อนในการพัฒนา**: การดำเนินการหลายอย่างไม่สามารถแสดงในรูปแบบทางคณิตศาสตร์ได้อย่างง่าย
- ** การพึ่งพาเฟรมเวิร์ก**: การพัฒนาส่วนใหญ่ต้องพึ่งพาไลบรารีและเฟรมเวิร์กเฉพาะ
- ** ความเข้ากันได้กับแพลตฟอร์ม**: การแปลงโมเดลสำหรับแพลตฟอร์มที่แตกต่างกันในขณะที่ยังรักษาประสิทธิภาพเป็นเรื่องที่ท้าทาย
สถานการณ์ปัจจุบัน
บทความชี้ให้เห็นว่าแม้จะมีคอมไพเลอร์ ML (Machine Learning) ที่ประสบความสำเร็จหลายตัว เช่น XLA, TVM, MLIR, EON และ GLOW แต่พวกมันก็ยังไม่ได้กลายเป็นวิธีหลักในการรันโมเดล Machine Learning ซึ่งแตกต่างจากกระบวนการคอมไพล์ที่ตรงไปตรงมามากกว่าที่พบใน Meta Language
มองไปข้างหน้า
อนาคตของการคอมไพล์ Machine Learning ดูเหมือนจะอยู่ที่ทางแยก โดยอาจจะเดินไปในทิศทางใดทิศทางหนึ่ง:
- เส้นทางแบบ Matlab ที่ต้นแบบการวิจัยต้องการการแปลงทางวิศวกรรมด้วยมือสำหรับการใช้งานจริง
- แนวทางแบบ LLVM ที่มีการแสดงผลขั้นกลางแบบรวมที่สามารถรองรับหลายแพลตฟอร์มและเฟรมเวิร์ก
ความแตกต่างในความซับซ้อนของคอมไพเลอร์ระหว่าง Meta Language และระบบ Machine Learning ยังคงเป็นหัวข้อสำคัญในการสนทนาของชุมชนนักพัฒนา ซึ่งชี้ให้เห็นถึงความท้าทายที่ยังคงมีอยู่ในการทำให้ Machine Learning เข้าถึงได้ง่ายขึ้นและสามารถนำไปใช้งานบนแพลตฟอร์มต่างๆ ได้