Compare MLflow vs Kubeflow Part III

Jessada Weeradetkumpon
4 min readMay 14, 2022

--

หลังจากบท 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 หรือเข้าร่วม Slack https://tinyurl.com/mlflow-slack

อะไรคือ MLOps ???

Machine Learning algorithms ได้เข้ามามีส่วนร่วมช่วยในการนำข้อมูลมาใช้ให้เกิดประโยชน์มากขึ้นในธุรกิจภาคต่าง ๆ หลากหลาย โดย MLOps เป็นตัวช่วยให้เกิดความสะดวกในขั้นตอนการทำงานด้าน machine learning ที่มีความหลากหลาย ซึ่งการ deploy model ทุก ML project ต้องผ่านขั้นตอนต่าง ๆ ตาม ML lifecycle ซึ่งมีความยุ่งยากมากในแต่ละขั้นตอน

Source: https://databricks.com/glossary/mlops

ขั้นตอนทั้งหมดนี้ใน 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 และอื่น ๆ อีกมากมาย

Source: https://databricks.com/glossary/mlops

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

source: https://royalcyberinc.medium.com/kubeflow-vs-mlflow-an-mlops-comparison-36db04a665d8

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

source: https://analyticsindiamag.com/kubeflow-vs-mlflow-which-mlops-tool-should-you-use/

ความแตกต่างอื่น ๆ

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

source: https://analyticsindiamag.com/kubeflow-vs-mlflow-which-mlops-tool-should-you-use/

สรุป

MLflow และ Kubeflow เป็นเครื่องมือยอดนิยมในแพลตฟอร์มของ machine learning ที่เป็น open-source แต่มีความแตกต่างกันมาก พูดง่ายๆ ก็คือ Kubeflow แก้ปัญหาการประสานโครงสร้างพื้นฐานและการติดตามการทดสอบด้วยค่าใช้จ่ายเพิ่มเติมที่ต้องมีความเข้าใจในการตั้งค่าและการบำรุงรักษา ในขณะที่ MLflow แก้ปัญหาการติดตามการทดสอบและการกำหนดเวอร์ชันของโมเดล

ใช้ Kubeflow — หากต้องการติดตามการทดลองของ machine learning และปรับใช้ solution ในแบบที่ปรับแต่งได้มากขึ้น ซึ่งมีการสนับสนุนโดย Kubernetes
ใช้ MLFlow — หากต้องการแนวทางที่ง่ายกว่าในการติดตามการทดลอง model และต้องการปรับใช้กับแพลตฟอร์มที่มีการจัดการ เช่น Amazon

ดังนั้นในการทำ MLOps การเลือกเครื่องมือที่ตรงกับความต้องการของทีมมากที่สุดไปใช้ก็จะสามารถทำให้ใช้เครื่องมือนั้น ๆ ได้อย่างมีประสิทธิภาพมากยิ่งขึ้น

บทนี้เป็นบทสุดท้ายหวังว่าผู้อ่านจะได้ประโยชน์และเข้าใจ MLflow ได้มากขึ้นไม่มากก็น้อย ขอบคุณครับ

Reference

--

--