iT邦幫忙

2021 iThome 鐵人賽

DAY 26
0
AI & Data

我好想轉生成史萊姆系列 第 26

MLflow MLmodel 的格式和環境檔案

MLmodel 的格式

除了 flavors 這個 field 以外,MLflow MLmodel 還可以包含以下幾種:

time_created

模型建立的日期和時間,用的是 UTC ISO 8601 的格式。

run_id

如果這個模型是透過 MLflow Tracking 所儲存,這就會是建立此模型運行的ID

signature

JSON 格式下的模型簽名。這邊的模型簽名定義了模型輸入和輸出的形式。

input_example

輸入範例。

databricks_runtime

如果模型是由 Databricks 訓練出來的話,這就會是 Databricks 運行時的版本和類型。

環境檔案

為了重建環境,當模型被紀錄時,我們會自動紀錄 conda.yamlrequirements.txt 檔案。透過 condapip 這些檔案可以被用於重新安裝相依的套件。

conda.yaml

當儲存模型時,MLflow 提供了一個選項來傳入包含訓練模型所需的相依套件 conda 環境參數。如果沒有任何提供 conda 環境,MLflow 會根據模型的 flavor 來建立一個預設的環境。這個 Conda 環境會被儲存成名為 conda.yaml 的 YAML 檔案。

requirements.txt

這個檔案是由 conda.yaml 中 pip 的部分所建立的,額外的 pip 相依套件可以被加入到 requirements.txt,方法是將它們作為 pip 相依套件包含在 conda 環境中,並在環境中記錄模型。

下面的範例是手動指定 Conda 環境和儲存模型

conda_env = {
    'channels': ['conda-forge'],
    'dependencies': [
        'python=3.8.8',
        'pip'],
    'pip': [
        'mlflow',
        'scikit-learn==0.23.2',
        'cloudpickle==1.6.0'
    ],
    'name': 'mlflow-env'
}
mlflow.sklearn.log_model(model, "my_model", conda_env=conda_env)

由上面生成的 conda.yaml

channels:
  - conda-forge
  dependencies:
  - python=3.8.8
  - pip
  - pip:
    - mlflow
    - scikit-learn==0.23.2
    - cloudpickle==1.6.0
name: mlflow-env

requirements.txt

mlflow
scikit-learn==0.23.2
cloudpickle==1.6.0

References


上一篇
MLflow Models
下一篇
MLflow Models 建立一個自訂的模型
系列文
我好想轉生成史萊姆30

尚未有邦友留言

立即登入留言