首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >你如何“永久”删除在Mlflow中的实验?

你如何“永久”删除在Mlflow中的实验?
EN

Stack Overflow用户
提问于 2020-02-06 06:26:41
回答 5查看 16.1K关注 0票数 21

实验的永久删除在任何地方都没有记载。我正在使用Mlflow w/后端postgres db

以下是我所做的:

代码语言:javascript
运行
复制
client = MlflowClient(tracking_uri=server)
client.delete_experiment(1)

这将删除该实验,但当我运行一个与我刚才删除的实验同名的新实验时,它将返回以下错误:

代码语言:javascript
运行
复制
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.

在说明如何永久删除所有内容的文档中,我找不到任何地方。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2020-03-26 14:05:13

不幸的是,目前似乎无法通过UI或CLI做到这一点:-/

其方法取决于您正在使用的后端文件存储的类型。

Filestore

如果您使用文件系统作为存储机制(默认情况),那么这很容易。“删除”实验被移动到一个.trash文件夹中。你只需要澄清一下:

代码语言:javascript
运行
复制
rm -rf mlruns/.trash/*

在当前版本的文档 (1.7.2)中,他们指出:

建议使用cron作业或替代工作流机制清除.trash文件夹。

SQL数据库:

这更棘手,因为有一些依赖关系需要删除。我使用的是MySQL,这些命令适用于我:

代码语言:javascript
运行
复制
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";
票数 23
EN

Stack Overflow用户

发布于 2020-08-04 12:51:21

从mlflow 1.11.0开始,推荐的永久删除方法是:mlflow gc [OPTIONS]

从文档中,mlflow gc

从指定的后端存储区永久删除在已删除的生命周期阶段运行。此命令删除与指定运行相关联的所有工件和元数据。

票数 16
EN

Stack Overflow用户

发布于 2020-11-24 07:57:35

如果要永久删除MLFlow的垃圾(如果您使用PostgreSQL作为后端存储),我将添加SQL命令。

更改为MLFlow数据库,例如使用:\c mlflow,然后:

代码语言:javascript
运行
复制
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命令。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60088889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档