python - 您如何“永久”删除 Mlflow 中的实验?
问题描述
任何地方都没有记录永久删除实验。我正在使用带有后端 postgres db 的 Mlflow
这是我运行的:
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.
我在文档中找不到任何地方显示如何永久删除所有内容。
解决方案
不幸的是,目前似乎无法通过 UI 或 CLI 执行此操作:-/
执行此操作的方法取决于您使用的后端文件存储的类型。
文件存储:
如果您使用文件系统作为存储机制(默认),那么这很容易。“已删除”的实验被移动到一个.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";
推荐阅读
- mariadb - SQL order by “id”导致重复,而另一列排序工作正常
- python - 如何一起添加递增的整数/字符串行?
- c++ - c++ const_cast gcc 8.2.1 -Wignored-qualifiers bug?
- tfs - 如何批量放弃 TFS 代码审查?
- google-apps-script - 在 Google 表格中将两个单元格值链接在一起
- java - 使用 MongoDB 驱动程序保存时出现异常
- laravel-5.5 - getStream laravel 集成 FeedConfigException
- javascript - javascript中类型化数组在性能方面的可行性?
- reactjs - 将 TypeScript 回调函数提升到窗口对象
- php - 增加 dbx_query 行长度