ทำไม operationalize machine learning ถึงเป็นเรื่องยาก
ปัญหาการเอาโมเดล Machine Learning ไปใช้ในระบบ production ยังคงเป็นเรื่องยากสำหรับองค์กรส่วนใหญ่ ตามรายงาน Data Science Needs to Grow Up: The 2021 Domino Data Lab Maturity Index ที่ระบุว่า 68% ของผู้ตอบแบบสอบถามบอกว่าเป็นเรื่องยาก และ 37% ในนั้นบอกว่า “ยากมาก”
ซึ่งก็สอดคล้องกับผลวิจัยเมื่อปีที่แล้ว 2020 The State of Enterprise Machine Learning ที่บอกว่าการ deploy model ใช้เวลานานมาก ประมาณครึ่งหนึ่งใช้เวลาระหว่าง 31 ถึง 90 วัน และมีแค่ 14% เท่านั้นที่ใช้เวลาไม่เกิน 7 วัน
จากประสบการณ์ที่ผ่านมา ผมพบว่า ความท้าทายในการ operationalize โมเดล ML แบ่งออกเป็นสองส่วน คือ ส่วนที่เป็น software engineering สำหรับระบบ production และส่วนที่สองเป็นเรื่องเกี่ยวกับธรรมชาติของงาน ML เอง
Engineering challenges
ผมเรียกปัญหาส่วนแรกนี้ว่า engineering challenges เนื่องจากว่า ปัญหานี้เราจะพบได้ทั่วไปไม่เฉพาะในงาน data science หรือ Machine Learning มันคือการทำอะไรบางอย่างให้ใช้งานได้จริงๆ ซึ่งต้องอาศัยกระบวนการทางวิศวกรรม ที่ออกแบบให้ระบบมีความเสถียร รองรับภาระงานจำนวนมากได้ ตรวจสอบได้ ย้อนกลับได้ มีมาตรฐาน มีการควบคุมคุณภาพ เป็นต้น
ในสาขาวิชาชีพอื่นๆ ที่มีพัฒนาการมายาวนานแล้ว ไม่ว่าจะเป็นงานด้านการก่อสร้าง งานโรงงานอุตสาหกรรม หรือแม้แต่งานวิศวกรรมซอฟต์แวร์ มีขั้นตอนกระบวนการและวิธีการเหล่านี้มาเรียบร้อยแล้ว แต่งานด้าน data science โดยเฉพาะในส่วนที่เกี่ยวข้องกับ Machine Learning ถือได้ว่ายังใหม่อยู่มากเทียบกับสาขาวิชาชีพวิศวกรรมด้านอื่นๆ
ตัวอย่างปัญหาด้านวิศวกรรมในงาน ML เช่นการทำ version control การเขียนโค้ดให้ scale รองรับการทำงานแบบ multi-thread การจัดการ library dependency และการ integrate ML code เข้ากับส่วนอื่นๆ ของระบบ
ML specific challenges
นอกเหนือจากความท้าทายด้านวิศวกรรมแล้ว งาน Machine Learning ก็ยังมีลักษณะธรรมชาติเฉพาะของมันเองที่แตกต่างจากงานซอฟต์แวร์ประเภทอื่นๆ
ในซอฟต์แวร์ทั่วไป คอมพิวเตอร์ทำหน้าที่คำนวณผลลัพธ์ โดยใช้ข้อมูลและโปรแกรมที่ถูกออกแบบไว้ล่วงหน้า ดังนั้นระบบจะยังสามารถทำงานได้ถูกต้องไปเรื่อยๆ ตราบใดที่ business logic ที่โปรแกรมถูกสร้างขึ้นมายังใช้งานได้อยู่ และข้อมูลอยู่ในขอบเขตที่ออกแบบไว้
แต่สำหรับงาน Machine Learning กระบวนการในการสร้างโมเดลจะแตกต่างจาก programming ทั่วไป คอมพิวเตอร์จะใช้ข้อมูล ร่วมกับโค้ดผ่านกระบวนการ training ได้เป็นโมเดลออกมา ดังนั้นแล้ว ตัวข้อมูล จึงมีผลอย่างมากกับความถูกต้องของโมเดลในงาน ML คราวนี้ความยากมันอยู่ที่ ทั้ง code และ data ต่างก็มีวิวัฒนาการของตัวเองไปเรื่อยๆ ตามเวลาที่ผ่านไป ส่งผลให้ตัวโมเดลเอง ต้องมีการปรับปรุงเปลี่ยนแปลงอยู่ตลอดเวลาเช่นกัน
ความเสี่ยงที่เกิดจากโมเดลไม่มีคุณภาพ
จากรายงาน Data Science Needs to Grow Up: The 2021 Domino Data Lab Maturity Index แจ้งว่ามีถึง 23% ที่กล่าวว่าโมเดลที่ใช้ไม่เคยมีการอัพเดตเลย
โมเดลที่ขาดการดูแล (ถึงแม้จะ train มาดีในตอนต้นก็ตาม) ก่อให้เกิดความเสี่ยงต่อองค์กรหลายอย่าง เช่น (ตัวเลขคือเปอร์เซ็นต์ของผู้ตอบแบบสอบถาม)
- เกิดการตัดสินใจที่ผิดพลาด สูญเสียรายได้ (46%)
- เกิดการรายงาน KPI ภายในผิดพลาด ส่งผลกระทบต่อพนักงานและค่าตอบแทน (45%)
- ปัญหาความปลอดภัย (43%)
- ปัญหา discrimination และ bias (41%)
MLOps อาจจะเป็นทางออก
ในปัญหาเชิงวิศวกรรมที่ผมกล่าวไว้ข้างต้น คนที่อยู่ในแวดวงวิศวกรรมซอฟต์แวร์คงทราบกันดีแล้วว่า กระบวนการ DevOps สามารถช่วยแก้ปัญหาเหล่านั้นได้ แต่แค่นั้นก็ยังไม่เพียงพอ เพราะธรรมชาติของงาน ML ที่กล่าวไว้แล้ว
ดังนั้นในช่วงหลังจึงเกิดแนวทางในการแก้ปัญหาการ operationalize ML ขึ้นมา โดยเรียกว่า MLOps
MLOps เป็นกลุ่มของกระบวนการและขั้นตอนที่ผสานงานทั้งสามส่วนเข้าด้วยกัน นั่นคือ งาน DevOps ที่ใช้ในการจัดการวิศวกรรมซอฟต์แวร์ งานด้าน Machine Learning และงานด้านการจัดการข้อมูล หรือ Data Engineering
เป้าหมายของ MLOps ก็คือเพื่อให้กระบวนการพัฒนา นำไปใช้ และการดูแลรักษาองค์ประกอบต่างๆ (รวมถึงข้อมูลด้วย) ในระบบ Machine Learning ที่ใช้ในงาน production เป็นไปอย่างราบรื่นและมีประสิทธิภาพมากที่สุด
ส่งท้าย
ในภาพรวมแล้ว งานด้าน machine learning ยังคงอยู่ในช่วงเริ่มต้นเท่านั้น ถึงแม้ว่าจะได้รับความสนใจและมีการเติบโตที่รวดเร็ว แต่ก็ยังมีปัญหาให้ต้องแก้ไขอีกหลายเรื่อง
สิ่งที่หน่วยงานต่างๆ ควรให้ความสำคัญได้แก่
- ทักษะและความรู้ที่ครอบคลุม จะเห็นได้ว่า เราไม่ได้แค่ต้องการเฉพาะ data scientists เท่านั้น แต่เรายังต้องการ software engineer และ data engineer ด้วย
- กระบวนการ และมาตรฐานในการบริหารจัดการองค์ประกอบต่างๆ ให้ทำงานร่วมกันได้อย่างราบรื่น