Compare MLflow vs Kubeflow Part III
หลังจากบท 1 และบท 2 ที่ได้ทำการกล่าวถึง MLflow องค์ประกอบทั้ง 4 ตัวและตัวอย่างการทดลองใช้เครื่องมือดู มาบทนี้จะมาลองเปรียบเทียบกับเครื่องยอดนิยมอีกตัวที่เป็นที่นิยมเหมือนกันในการทำ MLOps
ก่อนที่จะเปรียบเทียบการทำงานของทั้งสองเครื่องมือ ขอพูดถึงรายละเอียดการทำงานภายในของ MLflow ซึ่ง MLflow นั้นเป็น open-source หมายความว่านักพัฒนาหรือใครก็ตามสามารถเข้าถึง project หรือ code เพื่อดูหรือนำไปแก้ไขปรับปรุงได้ ซึ่งการที่เป็น open-source จะทำให้การพัฒนาเครื่องมือนั้นเป็นไปได้อย่างรวดเร็ว
ถ้าใครสนใจรายละเอียด open-source เพิ่มเติม สามารถเข้าไปดูได้ที่
https://opensource.com/resources/what-open-source
โดยเวอร์ชันล่าสุดของ MLflow ยังคงเป็น beta version ซึ่งหมายความว่าอาจมีการเปลี่ยนแปลง API หรือ รูปแบบต่าง ๆ ในอนาคตได้ อีกทั้งตอนนี้ MLflow ยังไม่รองรับการเรียกใช้งานบน window ได้ แต่อนาคตคาดว่าคงมีนักพัฒนาที่จะมาช่วยทำให้สามารถรองรับการทำงานบน window ได้โดย project นี้อยู่ใน repository บน Github → https://github.com/databricks/mlflow
ซึ่งถ้าต้องการความช่วยเหลือหรือมีข้อสงสัยเกี่ยวกับ MLflow สามารถไปกดติดตามได้ที่
mlflow-users@googlegroups.com
หรือเข้าร่วม Slackhttps://tinyurl.com/mlflow-slack
อะไรคือ MLOps ???
Machine Learning algorithms ได้เข้ามามีส่วนร่วมช่วยในการนำข้อมูลมาใช้ให้เกิดประโยชน์มากขึ้นในธุรกิจภาคต่าง ๆ หลากหลาย โดย MLOps เป็นตัวช่วยให้เกิดความสะดวกในขั้นตอนการทำงานด้าน machine learning ที่มีความหลากหลาย ซึ่งการ deploy model ทุก ML project ต้องผ่านขั้นตอนต่าง ๆ ตาม ML lifecycle ซึ่งมีความยุ่งยากมากในแต่ละขั้นตอน
ขั้นตอนทั้งหมดนี้ใน Machine Learning project ทำซ้ำเป็นวัฏจักร ทำให้ Data Scientists ประสบปัญหามากมาย ตั้งแต่การ development จนนำไปสู่การใช้งานจริงบน production สิ่งที่เป็นความท้าทายหลักในการทำงานคือการ implement machine learning project ที่ถูกต้องและนำไปสู่การใช้งานบน production ให้เกิดประโยชน์
Machine Learning solutions ต้องการระบบที่คอยตรวจสอบและอัปเดตอย่างต่อเนื่องอยู่เสมอ ซึ่งมีเครื่องมือ open-source มากมายที่ช่วยใน ML projects โดยเครื่องมือ MLOps เหล่านี้มีให้บริการเต็มรูปแบบและเฉพาะทาง
ความแตกต่างของ MLflow กับ Kubeflow ใน MLOps
MLOps เป็นส่วนหนึ่งที่ก้าวขึ้นมามีความสำคัญเป็นอย่างมากกับการทำ data science ซึ่งตลาดมีการคาดการณ์ไว้ว่าจะมีการเติบโตขึ้นเกือบ 4 พันล้านดอลล่าห์ในปี 2568 ซึ่งบริษัทใหญ่ๆอย่าง Amazon, Google, Microsoft และ IBM มีการใช้ MLOps สำหรับทำ pipeline automation, monitoring, lifecycle management และ governance ปัจจุบันมีการพัฒนาเครื่องมือ MLOps ขึ้นมามากขึ้นเรื่อง ๆ เพื่อนำมาใช้ในการช่วยจัดการส่วนต่าง ๆ ของ workflow ซึ่งมี 2 เครื่องมือที่นิยมใช้คือ Mlflow และ Kubeflow
ด้วยลักษณะที่ MLflow และ Kubeflow เป็น open-sourced จึงได้รับเลือกจากบริษัทเทคโนโลยีชั้นนำต่าง ๆ อย่างไรก็ตามความสามารถของทั้ง 2 เครื่องมือค่อนข้างมีความแตกต่างกันเมื่อนำมาเปรียบเทียบกันเช่น MLflow นั้นจะเป็นการช่วยให้การทำการทดลองจนนำไปใช้มีความสะดวกมากยิ่งขึ้น ส่วน Kubeflow จะเน้นช่วยในการทำ pipeline โดยในบทความนี้จะกล่าวถึงข้อแตกต่างเพื่อช่วยให้สามารถเลือกเครื่องมือที่เหมาะสมในการใช้งานได้
MLflow
MLFlow เป็น open-source platform ที่ใช้จัดการ machine learning lifecycle ซึ่งมีความน่าเชื่อถือ ความปลอดภัยและการ scale ถูกสร้างขึ้นโดย Databricks โดย platform นี้เริ่มถูกนำไปเริ่มใช้ในบริษัทเทคโนโลยีใหญ่ ๆ อย่าง Facebook, Accenture, Microsoft และ Booking.com อีกทั้งยังรองรับกับ ML library ต่าง ๆ รวมถึง TensorFlow, Pytorch, Keras, Pandas และอื่น ๆ อีกมากมาย
MLflow ช่วยให้การทดลอง, การทดสอบ, deployment และ central model registry ซึ่งทำให้นักพัฒนา สร้าง, track หรือ deploy model ได้ ในขณะที่ platform คอยจัดการสิ่งต่าง ๆ อยู่เบื้องหลัง จากที่กล่าวไปในบทที่ 1 และบทที่ 2 ว่า Mlflow มี 4 องค์ประกอบหลักด้วยกันที่สามารถเลือกใช้งานได้อย่างยืดหยุ่น
Kubeflow
Kubeflow มีเป้าหมายที่จะทำให้การปรับใช้ ML บน Kubernetes เป็นเรื่องง่าย, สะดวก และปรับขนาดเครื่องได้ cloud-native framework สร้างขึ้นโดยนักพัฒนาของ Google โดยอิงตามวิธีการภายใน Google คือ TensorFlow Extended ซึ่งใช้ในการ deploy TensorFlow models หลังจากที่มีการเปิดครั้งแรก บริษัทเทคโนโลยีต่าง ๆ รวมไปถึง Arrikto, Cisco, IBM, RedHat และ Caicloud ได้มีส่วนรวมช่วยกันแก้ปัญหาบน GitHub issue board
Kubeflow ทำการจัดเตรียมองค์ประกอบสำหรับแต่ละขั้นตอนใน ML lifecycle รวมถึง exploration, training และ deployment นอกจากนี้ยังช่วยในการ scaling machine learning models และ deploy ไปยัง production Kubeflow จะมี 3 องค์ประกอบหลักด้วยกันคือ
- Notebooks: Kubeflow ให้ผู้ใช้สร้างและจัดการ Jupyter notebooks ได้ ในขณะเดียวกันก็สามารถปรับแต่ง notebook containers และ pods ได้อีกด้วย
- Pipelines: Kubeflow เป็นที่รู้จักมากที่สุดสำหรับการทำ pipelines โดยจะอนุญาติให้ผู้ใช้สร้างและ deploy ML workflows ที่มีความยืดหยุ่นและมีขนาดไม่ใหญ่
- Training: นักพัฒนาสามารถใช้ Kubeflow training เพื่อ train ML models บน frameworks ต่าง ๆ ได้ เช่น PyTorch, MXNet, Chainer และ TensorFlow เป็นต้น
นอกจากนี้ เนื่องจาก Kubeflow ยังรองรับ TensorFlow Serving containers, trained TensorFlow models ที่สามารถ export ไปยัง Kubernetes ได้ Kubeflow ยังมีการรวมกันกับ Seldon Core ซึ่งเป็น open-source framework เพื่อ deploy machine learning models บน Kubernetes, AWS, GCP และ Azure
ความแตกต่างอื่น ๆ
Approach
Kubeflow เป็นระบบจัดการ container ดังนั้นการประมวลผลทั้งหมดจึงเกิดขึ้นภายใน Kubernetes infrastucture เนื่องจากการจัดการ Kuberflow จะมีความซับซ้อนมากกว่าแต่ในขณะเดียวกันก็ทำให้สามารถ reproduce ได้มากขึ้น
MLflow เป็น Python program ดังนั้นการ train สามารถทำได้ตามความต้องการของนักพัฒนา นอกจากนี้ยังสามารถตั้งค่าบน server และปรับแต่ง ML model ได้อย่างง่ายดาย
Environment
Kubeflow metadata สามารถ track platform นักพัฒนาจึงต้องมีความรู้ความเข้าใจทางด้านเทคนิคมากขึ้น อย่างไรก็ตาม MLflow สามารถพัฒนาในเครื่องของตัวเองได้และ track การรันแบบ remote ได้เช่นกัน
Deployment
Kubeflow สามารถ deploy ผ่าน Kubeflow pipeline โดยไม่ขึ้นกับส่วนประกอบอื่น ๆ ของ platform และ KubeFlow Pipelines เน้น model deployment และ continuous integration
MLflow ใช้ประโยชน์จาก model registry และ API/UI ในการสร้าง central location สำหรับการทำงานร่วมกัน จัดการ lifecycle และ deploy models
สรุป
MLflow และ Kubeflow เป็นเครื่องมือยอดนิยมในแพลตฟอร์มของ machine learning ที่เป็น open-source แต่มีความแตกต่างกันมาก พูดง่ายๆ ก็คือ Kubeflow แก้ปัญหาการประสานโครงสร้างพื้นฐานและการติดตามการทดสอบด้วยค่าใช้จ่ายเพิ่มเติมที่ต้องมีความเข้าใจในการตั้งค่าและการบำรุงรักษา ในขณะที่ MLflow แก้ปัญหาการติดตามการทดสอบและการกำหนดเวอร์ชันของโมเดล
ใช้ Kubeflow — หากต้องการติดตามการทดลองของ machine learning และปรับใช้ solution ในแบบที่ปรับแต่งได้มากขึ้น ซึ่งมีการสนับสนุนโดย Kubernetes
ใช้ MLFlow — หากต้องการแนวทางที่ง่ายกว่าในการติดตามการทดลอง model และต้องการปรับใช้กับแพลตฟอร์มที่มีการจัดการ เช่น Amazon
ดังนั้นในการทำ MLOps การเลือกเครื่องมือที่ตรงกับความต้องการของทีมมากที่สุดไปใช้ก็จะสามารถทำให้ใช้เครื่องมือนั้น ๆ ได้อย่างมีประสิทธิภาพมากยิ่งขึ้น
บทนี้เป็นบทสุดท้ายหวังว่าผู้อ่านจะได้ประโยชน์และเข้าใจ MLflow ได้มากขึ้นไม่มากก็น้อย ขอบคุณครับ