
如何使用Requests-OAuthlib實現OAuth認證
安裝:
pip install mlflow
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
實驗結果記錄到本地之后可以通過 MLflow 內置的 web server 更直觀的查看實驗詳情:
mlflow ui
點進去查看重要的參數、指標和相關文件詳情:
其中實驗指標以折線圖等可視化方式展現,更加方便獲得數據全局觀
以上就是 MLflow 的第一個功能,實驗跟蹤。
使用 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
來查看該目錄下的實驗相關數據。
如果你仔細研究下 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。
上面提到過,除了實驗過程和結果記錄在當前目錄的 mlruns
目錄下,還可以這樣通過簡單的兩行代碼實時記錄到跟蹤服務器上:
import mlflow
mlflow.set_tracking_uri("http://your-experiment-tracking-server")
mlflow.set_experiment("your-experiment-name")
比如這樣,分別指定需要保存的 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 還具備模型管理功能,能夠注冊、版本控制和部署模型,支持多種機器學習框架,幫助數據科學家和工程師高效地開發、測試和部署機器學習模型,提升工作效率和模型管理的規范性。