當我們在訓練各種模型時, 難免會有許多實驗性的參數、產出的模型、不同的資料來源, 隨著版本迭代越來越多, 過了一段時間回頭看之後卻發現當初最好的某一個實驗參數到底是啥啊? 模型去了哪裡? 用的數據集是哪些?
核心組件

- Tracking: 用於記錄和查詢實驗參數、程式碼、指標和模型的 API 和 UI。
- Model Registry: 用於管理模型版本、階段和註釋的集中式存儲庫。
- MLflow Deployments for LLMs: 提供標準化 API 以訪問 SaaS 和開源大型語言模型 (LLM) 的服務器。
- Evaluate: 用於比較和評估傳統 ML 模型和 LLM 的工具集。
- Prompt Engineering UI: 為 LLM 的提示工程提供實驗、測試和部署環境的 UI。
- Recipes: 提供結構化 MLflow 專案的最佳實務指南,重點關注實際部署。
- Projects: 用於打包和共享可重複使用 ML 程式碼的標準格式。
為什麼要使用?
簡單來說就是讓我們的實驗可以有憑有據, 怎麼訓練出一個好的模型的過程都可以被記載, 並且快速用於下次的實驗, 試想我們過往在管理程式碼時, 也是透過Git來幫我們追蹤程式碼的修改過程, 對於協作來說非常的有幫助, 而AI時代的平台就需要MLFlow這樣的角色來幫我們追蹤與管理了! 這會讓我們有條有理的訓練與實驗, 減少因為漏失掉的紀錄所耗費的時間, 提昇模型產品化的效率。
開箱試試MLflow
概覽
大致上的模式就是啟動MLFlow的伺服器, 並在各個模型訓練的腳本中埋入追蹤的client端程式。

安裝套件
pip install mlflow
啟動伺服器
mlflow ui
啟動之後我們可以在 http://localhost:5000/ 看到這樣的畫面:

寫一隻Client端訓練程式
連接到伺服器
mlflow.set_tracking_uri("<http://localhost:5000>")
讓我們建立一個實驗
mlflow.set_experiment("check-localhost-connection")
with mlflow.start_run():
mlflow.log_metric("foo", 1)
mlflow.log_metric("bar", 2)
接著試跑看看這隻程式
python test.py
回到管理介面會看到上傳成功的記錄

結語
今天我們簡單的介紹一下MLflow可以為我們帶來哪些好處, 並用一個簡單的範例來讓大家了解一下MLflow大致上的運作模式, 相信親手操作過一次之後概念會更加清晰, 歡迎動手做看看!