我正在使用以下工具记录模型
mlflow.sklearn.log_model(model, "my-model")
个
我想在日志(log)记录期间为模型设置标签,我判断了这个方法不允许设置标签,有一个mlflow.set_tags()
方法,但它是标记运行而不是模型.
有人知道如何在记录过程中标记模型吗?
谢谢!
我正在使用以下工具记录模型
mlflow.sklearn.log_model(model, "my-model")
个
我想在日志(log)记录期间为模型设置标签,我判断了这个方法不允许设置标签,有一个mlflow.set_tags()
方法,但它是标记运行而不是模型.
有人知道如何在记录过程中标记模型吗?
谢谢!
当使用mlflow.sklearn.log_model
-you work with the experiment registry which is run-focused时,只能描述和标记实验和运行.
如果你想在模型上设置标签,你可以 Select need to work with the model registry.
我推荐的解决方案是设置为register the model when logging using registered_model_name
(也有更细粒度的方法),并使用MLFlowClient
API设置已注册模型的自定义属性(如标记).
以下是一个有效的示例:
import mlflow
from mlflow.client import MlflowClient
mlflow.set_tracking_uri('http://0.0.0.0:5000')
experiment_name = 'test_mlflow'
try:
experiment_id = mlflow.create_experiment(experiment_name)
except:
experiment_id = mlflow.get_experiment_by_name(experiment_name).experiment_id
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score
with mlflow.start_run(experiment_id = experiment_id):
# log performance and register the model
X, y = load_iris(return_X_y=True)
params = {"C": 0.1, "random_state": 42}
mlflow.log_params(params)
lr = LogisticRegression(**params).fit(X, y)
y_pred = lr.predict(X)
mlflow.log_metric("accuracy", accuracy_score(y, y_pred))
mlflow.sklearn.log_model(lr,
artifact_path="models",
registered_model_name='test-model'
)
# set extra tags on the model
client = MlflowClient(mlflow.get_tracking_uri())
model_info = client.get_latest_versions('test-model')[0]
client.set_model_version_tag(
name='test-model',
version=model_info.version,
key='task',
value='regression'
)
下面是插图
另请参阅这篇关于MLFlow Client的优秀文档.