1. 實驗跟蹤閃電入門手冊

安裝:

pip install mlflow

跟蹤實驗過程(MLfow Tracking)

import os
from mlflow import log_metric, log_param, log_artifact

if __name__ == "__main__":
# 1. 跟蹤實驗參數
log_param("param1", 5)

# 2. 跟蹤實驗指標;mlflow 會記錄所有針對實驗指標的更新過程,
log_metric("foo", 1)
log_metric("foo", 2)
log_metric("foo", 3)

# 3. 上傳實驗文件
with open("output.txt", 'w') as f:
f.write("hello world")
log_artifact("output.txt")

把上面的文件保存成 main.py,執行:

python main.py

在當前目錄下會生成一個 mlflow 文件夾,類似這樣子:

mlruns/
└── 0
├── 8ecf174e6ab3434d82b0c28463110dc9
│ ├── artifacts
│ │ └── output.txt
│ ├── meta.yaml
│ ├── metrics
│ │ └── foo
│ ├── params
│ │ └── param1
│ └── tags
│ ├── mlflow.source.git.commit
│ ├── mlflow.source.name
│ ├── mlflow.source.type
│ └── mlflow.user
└── meta.yaml

6 directories, 9 files

Web UI 查看實驗結果

實驗結果記錄到本地之后可以通過 MLflow 內置的 web server 更直觀的查看實驗詳情:

mlflow ui

點進去查看重要的參數、指標和相關文件詳情:

其中實驗指標以折線圖等可視化方式展現,更加方便獲得數據全局觀

以上就是 MLflow 的第一個功能,實驗跟蹤。

2. 代碼和執行環境打包(MLflow Project)

使用 MLflow Project ,你可以把實驗相關的代碼、依賴打包成一個可復用、可復現的包,用于其他實驗數據或者線上環境。

打包完成后,你可以非常方便的通過 mlflow run 指令在其他地方重新運行該實驗,更棒的是還可以直接以 github 的項目 url 為參數運行實驗,是不是很酷!

mlflow run your_mlflow_experiment_package -P alpha=0.5
mlflow run https://github.com/mlflow/mlflow-example.git -P alpha=5

如果你機器上沒有部署 conda,或者不希望使用 conda,加上這個參數:

mlflow run https://github.com/mlflow/mlflow-example.git -P alpha=5 --no-conda

github 上的這個例子展示了 MLflow 如何通過 MLproject 文件的方式管理相關依賴和文件的,如果運行該實驗的過程中你沒有在本地配置 MLflow 的實時實驗最終服務也沒關系,相關數據會寫入到當前目錄的 mlruns 目錄下,你可以隨時通過 mlrun ui 來查看該目錄下的實驗相關數據。

3. MLflow artifacts/registry,上傳、部署、統一管理模型和其它相關文件

如果你仔細研究下 mlruns 里面 MLflow 生成的文件就會發現,MLflow 為每次實驗都生成一個唯一的 ID,并且通過 MLmodel 描述文件來記錄默認要生成的模型相關信息,然后以 scikit-learn 類型保存相關模型,所以你本地是一定要配置好 sklearn 包的。

搞清楚這一點后,就可以用如下的方式來運行一個指定的 MLflow 生成的模型了:

mlflow models serve -m runs:/<your_experiment_id>/model

之后就可以通過 curl 或者 postman 之類的接口文件來查看接口是否按照預期推理運行了。

除了 model 文件,其他的比如你覺得需要保存的 txt、img 文件,都可以通過 log_artifact 接口保存、管理起來。

關于 MLflow registry 請自行查閱 docs。

4. 私有化部署實驗跟蹤服務端

上面提到過,除了實驗過程和結果記錄在當前目錄的 mlruns 目錄下,還可以這樣通過簡單的兩行代碼實時記錄到跟蹤服務器上:

import mlflow

mlflow.set_tracking_uri("http://your-experiment-tracking-server")
mlflow.set_experiment("your-experiment-name")

配置 mlflow 的跟蹤服務端:

比如這樣,分別指定需要保存的 metadata 和 artifact 的存儲位置,metadata 位置可以指定文件、數據庫 URI(sqlalchemy 方式);artifact 支持類似 amazon s3、Azure/Google 等各家的 oss 服務,可以通過配置 minio 等方式統一支持。甚至 FTP/SFTP/NFS/HDFS 也都是支持的。

mlflow server \
--backend-store-uri /your/data/storage/path \
--default-artifact-root s3://my-mlflow-bucket/ \
--host 0.0.0.0

總結

MLflow 是一個開源的機器學習生命周期管理工具,主要用于簡化機器學習工作流程。它提供實驗跟蹤功能,記錄模型訓練過程中的參數、指標和輸出,便于對比和復現實驗結果。同時支持項目管理,可打包代碼和依賴,方便在不同環境中運行。此外,MLflow 還具備模型管理功能,能夠注冊、版本控制和部署模型,支持多種機器學習框架,幫助數據科學家和工程師高效地開發、測試和部署機器學習模型,提升工作效率和模型管理的規范性。

上一篇:

Perplexity的 pplx-api詳細介紹

下一篇:

python機器學習:超越隨機森林(XGBoost篇)
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費