1. mlflow
https://zhuanlan.zhihu.com/p/363673389
官方文檔: https://www.mlflow.org/docs/latest/index.html
https://zhuanlan.zhihu.com/p/67173051
在跟蹤實驗時,通過運行 mlflow ui 后在 http:// localhost:5000 中進行查看。目前沒辦法打開,也不確定是否將結果上傳到mlflow的服務器中。
mlflow 主要有四大功能:Tracking、Projects、Models、Model Registry
(1) 跟蹤實驗以記錄并比較實驗參數和實驗結果
(2) 以可復用可復現的方式對代碼進行打包,以便不同工程師去復現
(3) 從各種ML庫管理和部署模型到各種模型服務和推理平臺(MLflow models)。
(4) 提供一個中央模型存儲來協同管理MLflow模型的整個生命周期,包括模型版本控制、階段轉換和注釋(MLflow模型注冊表)。
MLflow Tracking 是一個用于在運行機器學習代碼時記錄參數、代碼版本、衡量指標、模型環(huán)境依賴關系和模型工件的API。MLflow Tracking 有一個用于審查和比較運行及其結果的UI。這張來自MLflow Tracking UI的圖像顯示了一個將參數(學習率和動量)與損失參數聯系在一起的圖表:
MLflow Models:一種模型打包格式和工具套件,可以讓您輕松部署訓練模型(來自任何ML庫),以便在Docker、Apache Spark、Databricks、Azure ML和AWS SageMaker等平臺上進行批處理或實時推理。此圖顯示了MLflow Tracking UI對運行細節(jié)及其MLflow模型的視圖。
模型目錄中的工件包括模型權重,描述模型環(huán)境和依賴關系的文件,以及用于加載模型和推斷模型的示例代碼
mlflow是給誰用的?
MLflow由數據科學家和MLOps專業(yè)人員使用。數據科學家使用MLflow來跟蹤實驗、結構代碼、打包模型,以及審查和選擇要部署的模型。MLOps專業(yè)人員使用MLflow將模型安全地部署到生產環(huán)境中,并監(jiān)控部署的性能和準確性。
mlflow的一些使用案例:
(1) 一組數據科學家使用MLflow Tracking來記錄他們在單個問題領域的實驗參數和指標。他們使用MLflow UI來比較結果并指導他們對解決方案空間的探索。它們將運行的輸出存儲為MLflow模型。
(2) MLOps工程師使用MLflow UI來比較不同模型的性能,并選擇最好的模型進行部署。他們在MLflow Registry中注冊模型,以跟蹤該特定版本在生產中的性能。
(3) MLOps工程師使用MLflow模型將模型部署到生產環(huán)境中。他們使用MLflow Registry來跟蹤模型的性能,并將其與生產中的其他模型進行比較。
(4) 開始處理新項目的數據科學家將他們的代碼結構為MLflow項目,以便他們可以輕松地與其他人共享并使用不同的參數運行它。
mlflow提供了一些函數接口,可以使你方面地進行實驗跟蹤
Constant values (for instance, configuration parameters)
mlflow.log_param, mlflow.log_params
Values updated during the run (for instance, accuracy)
mlflow.log_metric
Artifacts
Files produced by the run (for instance, model weights)
mlflow.log_artifacts, mlflow.log_image, mlflow.log_text
import os
from random import random, randint
from mlflow import log_metric, log_param, log_params, log_artifacts
if __name__ == "__main__":
# Log a parameter (key-value pair)
log_param("config_value", randint(0, 100))
# Log a dictionary of parameters
log_params({"param1": randint(0, 100), "param2": randint(0, 100)})
# Log a metric; metrics can be updated throughout the run
log_metric("accuracy", random() / 2.0)
log_metric("accuracy", random() + 0.1)
log_metric("accuracy", random() + 0.2)
# Log an artifact (output file)
if not os.path.exists("outputs"):
os.makedirs("outputs")
with open("outputs/test.txt", "w") as f:
f.write("hello world!")
log_artifacts("outputs")
2. wandb
參考視頻:
https://www.bilibili.com/video/BV17A41167WX/?spm_id_from=333.337.search-card.all.click&vd_source=d01f5189f5bedbfe41e17c66006caa42
官方網站:
https://wandb.ai/site
wandb全稱weights$bias,是一款類似 Tensorboard 的機器學習可視化分析工具。相比 TensorBoard,wandb具有以下主要優(yōu)勢:
- 日志上傳遠端永久存儲,便于分享不怕丟失 (wandb.log);
- 可以存管代碼、數據集和模型的版本,隨時復現(wandb.Artifact, wandb.log_artifact, wandb.save),版本會和模型的性能指標或者日志相關聯;
- 可以使用交互式表格進行 case 分析 (wandb.Table,wandb.Image),可以輸入文本、圖像、視頻等的分析;
- 可以自動化模型調參 (wandb.sweep)
數據、代碼、模型保存,保存還還會和各種超參數和性能指標相關聯。
# resume the run
import wandb
# 指定 run_id 來恢復實驗
run = wandb.init(project='wandb_demo', id=model.run_id, resume='must')
# save dataset
arti_dataset = wandb.Artifact('dataset_name', type='dataset')
arti_dataset.add_dir('dataset_dir/')
wandb.log_artifact(arti_dataset)
# save code
arti_code = wandb.Artifact('code_name', type='code')
arti_code.add_dir('code_dir/')
wandb.log_artifact(arti_code)
# save model
arti_model = wandb.Artifact('model_name', type='model')
arti_model.add_file(config.ckpt_path)
wandb.log_artifact(arti_model)
這里給出一些相關網址:
wandb官網:https://wandb.ai/site
wandb文檔:https://docs.wandb.ai/v/zh-hans/
常見報錯及解決:https://docs.wandb.ai/guides/sweeps/faq
模型參數可視化colab示例:http://wandb.me/pytorch-colab文章來源:http://www.zghlxwxcb.cn/news/detail-500941.html
超參搜索colab示例:https://colab.research.google.com/github/wandb/examples/blob/master/colabs/pytorch/Organizing_Hyperparameter_Sweeps_in_PyTorch_with_W%26B.ipynb文章來源地址http://www.zghlxwxcb.cn/news/detail-500941.html
到了這里,關于深度學習管理工具的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!