開源模型管理平台簡介 — MLflow

Simon Liu
InfuseAI
Published in
8 min readNov 10, 2022

--

Cover Photo — 開源模型管理平台簡介 — MLflow

本文內容難易度: ★ ★ ☆ ☆ ☆

建議閱讀對象:過去尚未使用過模型管理的團隊成員,想要嘗試使用平台或工具導入模型管理到公司專案,讓團隊能夠有系統性的進行模型比較等。

(歡迎給予鼓勵、留言,讓我們知道你喜歡這類型文章,感謝大家!)

簡介

過去在做模型專案時,其實主要就只是將模型訓練到使用者可以接受的準確度之後,就會將已經訓練好的模型上線做服務,但是,模型本身的資訊都沒有確實的被記錄下來,導致後續要使用時,可能會無法復現實際的狀況。

再者,隨著資料科學家或者機器學習工程師在大量的進行模型訓練時,我們總是希望能夠有一個很簡單的工具可以將各種模型的資訊、訓練成果和訓練模型本身記錄下來,模型管理平台的需求就誕生了!本文,我將會簡介MLflow這套被許多人使用的開源模型管理平台,讓大家知道他是如何進行模型管理的,以及你在訓練的過程中,你會獲得什麼資訊。

MLflow是什麼?它可以做到什麼事情?

MLflow 是一個 end-to-end 針對模型管理的一個管理平台,他可以做到以下幾件事情:

  1. 追蹤實驗數據和參數,來比較哪一個訓練出來的參數結果較好。
  2. 容易呈現的形式打包訓練模型的程式碼,方便與其他資料科學家進行環境共享。
  3. 管理各個型態模型的檔案記錄下來,方便後續進行模型部署作業。
  4. 註冊模型並透過CLI指令來去進行模型部署作業。

MLflow 現在被許多使用者進行使用,甚至像是 Azure Machine Learning Service 也是使用 MLflow 來進行模型實驗與追蹤作業,相信 MLflow 已經累計大量的使用者來使用它進行模型追蹤作業。

團隊使用 MLflow 做模型管理的好處?

透過以下的整理,可以讓大家更了解,為何團隊應導入 MLflow 來進行模型管理與追蹤的好處:

  1. 透過最簡易的 Python 程式碼,和 MLflow 的 Python SDK,很輕鬆的能夠追蹤機器學習資訊,以便做後續的應用。
  2. 支援模型架構總類眾多,例如說:SKlearn, Tensorflow, Pytorch, XGBoost, Lightgbm 等眾多模型架構,可以很間單的透過Autolog機制,來自動記錄下模型訓練出來的成果。
  3. 透過比較表格,就可以清楚明瞭的知道參數與預測表現的關係,讓工程師可以更快速的知道如何針對模型去做調參。
  4. 近乎 No-code 的方式進行模型部署,MLflow 的 CLI 工具,可以將模型訓練出來的結果,透過指令,就可以快速的佈建出一個新的模型。
  5. 模型版本管控機制的建立,在每次訓練時,模型不可能永遠都會順利的訓練起來,也因此,記錄下過去的資訊相對而言就顯得非常重要,MLflow 的 UI 上面,可以將模型註冊成一個 Registered Model,如果之後發現到上線的模型不如預期時,可以使用已經註冊的模型清單中,回朔至之前的版本,讓模型預測失真的問題可以降至最低。

透過以上五點,我們就可以更清楚的知道,導入如 MLflow 這樣的工具可以得到更多的好處,也讓模型的管理可以受到一定的保障。

範例 — 透過 MLflow 得到模型管理訊息

一、透過 MLflow Python SDK 去紀錄模型資訊

MLflow 在過去版本發佈時,要進行模型追蹤處理其實很複雜,因為要寫入大量的程式碼才能夠將完整的資訊記錄下來,這其實大大減少使用MLflow進行追蹤。

在過去這一年,MLflow 做了一個突破,就是可以透過以下幾行指令,讓 MLflow 可以自動化的記錄下各個機器學習模型資訊:

# MLflow code example

import mlflow
mlflow.set_experiment("test-experiment-model")
mlflow.tensorflow.autolog(log_models=True)

這大大減少了MLflow程式碼的撰寫時間,也減低了工程師撰寫程式碼的時間,造就現在大量使用者會使用MLflow進行模型管理,當然,。

二、透過 MLflow UI 去獲取並且比較實驗結果

除了透過 CLI 或者 SDK 來操作 MLflow 之外,MLflow 也提供網頁UI,將模型實驗的每次數據都詳細記錄在上面,透過以下幾張圖片截圖,來了解MLflow 平台UI是怎麼操作的吧!

首先,在 MLflow 的首頁上,可以先理解 MLflow 紀錄的邏輯,在頁面邏輯上分為 Experiments 和 Runs,其中 Experiments 包含了許多訓練的Runs,可以相互比較實驗上面的結果。

MLflow Experiments Page

而每一次Run會包含訓練時所記錄的Parameter、Metrics 和 Artifacts,可以了解到訓練epoch數等資訊,幫助之後如果需要重新訓練模型時,可以很快的恢復記錄下來起來的資訊,幫助可以找到最佳的訓練參數。

MLflow run page

訓練好的模型如果已經確定其表現可以直接使用在正式環境上,那我們可以透過Register Model,將模型註冊到模型註冊清單之中,讓後續模型上線時,可以馬上知道哪些模型已經是準備好的正式模型。

MLflow Model Page

結論

MLflow 無疑可以幫助資料團隊能夠透過程式碼進行模型追蹤與管控,重點是這個平台是開源平台,基本上所有功能都是免費的,因此在導入模型管理的成本上,只須付出一些成本加上導入時間,就可以做得很好,也因此推薦目前已經製作過不少模型專案的團隊此工具,來幫助您在管理上能夠更有效率的進行處理。

InfuseAI 可以提供的 MLflow 相關服務

MLflow in PrimeHub Apps

InfuseAI 所製作的 PrimeHub 平台,也有將 MLflow 放在 PrimeHub Apps 供大家可以直接啟用,並且使用 MLflow 來進行模型管理與部署作業,因為整合性高與方便性,讓大家可以更快速且便利的使用 MLflow 進行模型追蹤的工作,詳細資訊可見以下連結:

先前我們也有一篇文章分享這個 App 功能:PrimeHub App整合mlflow 實現model management 功能

MLflow Consulting Service

如果有任何模型管理或者MLOps技術導入上面的疑問,也歡迎透過以下連結找尋專家進行諮詢服務,我們可以為您規劃相關的模型管理機制。

I am Simon

Hi, I am Simon, the Customer Success Engineer at InfuseAI. If you think the article is helpful to you, please give me applause. Welcome to provide some suggestions and discuss with me in InfuseAI Discord.
Linkedin: https://www.linkedin.com/in/simonliuyuwei/

We are InfuseAI

InfuseAI provides MLOps tools and services:

  1. PrimeHub — Our end-to-end MLOps platform is the entire machine learning lifecycle in one platform.
  2. MLOps Consultant Service — Help the data and ML team to know how to do the MLOps pipeline.
  3. Piperider — The data quality toolkit for data professionals.

Join our machine learning community to discover more: InfuseAI Discord

Join our Discord Community!

--

--

Hi, I'm Simon Liu, AI and LLM engineer who's shaped AI solutions for major firms. Welcome to see my Medium article!