实验的永久删除在任何地方都没有记载。我正在使用Mlflow w/后端postgres db
以下是我所做的:
client = MlflowClient(tracking_uri=server)
client.delete_experiment(1)
这将删除该实验,但当我运行一个与我刚才删除的实验同名的新实验时,它将返回以下错误:
mlflow.exceptions.MlflowException: Cannot set a deleted experiment 'cross-sell' as the active experiment. You can restore the experiment, or permanently delete the experiment to create a new one.
在说明如何永久删除所有内容的文档中,我找不到任何地方。
发布于 2020-03-26 14:05:13
不幸的是,目前似乎无法通过UI或CLI做到这一点:-/
其方法取决于您正在使用的后端文件存储的类型。
Filestore
如果您使用文件系统作为存储机制(默认情况),那么这很容易。“删除”实验被移动到一个.trash
文件夹中。你只需要澄清一下:
rm -rf mlruns/.trash/*
在当前版本的文档 (1.7.2)中,他们指出:
建议使用cron作业或替代工作流机制清除
.trash
文件夹。
SQL数据库:
这更棘手,因为有一些依赖关系需要删除。我使用的是MySQL,这些命令适用于我:
USE mlflow_db; # the name of your database
DELETE FROM experiment_tags WHERE experiment_id=ANY(
SELECT experiment_id FROM experiments where lifecycle_stage="deleted"
);
DELETE FROM latest_metrics WHERE run_uuid=ANY(
SELECT run_uuid FROM runs WHERE experiment_id=ANY(
SELECT experiment_id FROM experiments where lifecycle_stage="deleted"
)
);
DELETE FROM metrics WHERE run_uuid=ANY(
SELECT run_uuid FROM runs WHERE experiment_id=ANY(
SELECT experiment_id FROM experiments where lifecycle_stage="deleted"
)
);
DELETE FROM tags WHERE run_uuid=ANY(
SELECT run_uuid FROM runs WHERE experiment_id=ANY(
SELECT experiment_id FROM experiments where lifecycle_stage="deleted"
)
);
DELETE FROM runs WHERE experiment_id=ANY(
SELECT experiment_id FROM experiments where lifecycle_stage="deleted"
);
DELETE FROM experiments where lifecycle_stage="deleted";
发布于 2020-08-04 12:51:21
从mlflow 1.11.0开始,推荐的永久删除方法是:mlflow gc [OPTIONS]
。
从文档中,mlflow gc
将
从指定的后端存储区永久删除在已删除的生命周期阶段运行。此命令删除与指定运行相关联的所有工件和元数据。
发布于 2020-11-24 07:57:35
如果要永久删除MLFlow的垃圾(如果您使用PostgreSQL作为后端存储),我将添加SQL命令。
更改为MLFlow数据库,例如使用:\c mlflow
,然后:
DELETE FROM experiment_tags WHERE experiment_id=ANY(
SELECT experiment_id FROM experiments where lifecycle_stage='deleted'
);
DELETE FROM latest_metrics WHERE run_uuid=ANY(
SELECT run_uuid FROM runs WHERE experiment_id=ANY(
SELECT experiment_id FROM experiments where lifecycle_stage='deleted'
)
);
DELETE FROM metrics WHERE run_uuid=ANY(
SELECT run_uuid FROM runs WHERE experiment_id=ANY(
SELECT experiment_id FROM experiments where lifecycle_stage='deleted'
)
);
DELETE FROM tags WHERE run_uuid=ANY(
SELECT run_uuid FROM runs WHERE experiment_id=ANY(
SELECT experiment_id FROM experiments where lifecycle_stage='deleted'
)
);
DELETE FROM params WHERE run_uuid=ANY(
SELECT run_uuid FROM runs where experiment_id=ANY(
SELECT experiment_id FROM experiments where lifecycle_stage='deleted'
));
DELETE FROM runs WHERE experiment_id=ANY(
SELECT experiment_id FROM experiments where lifecycle_stage='deleted'
);
DELETE FROM experiments where lifecycle_stage='deleted';
区别在于,我在那里添加了“params”Table命令。
https://stackoverflow.com/questions/60088889
复制相似问题