Skip to main content

清理服务

清理服务 展示了如何使用clearml.backend_api.session.client.APIClient类来实现一个服务,该服务删除旧的 归档任务及其相关文件:模型检查点、其他工件和调试样本。

修改清理服务的参数,以指定要删除哪些归档实验以及何时删除它们。

运行清理服务

Self deployed ClearML server

DevOps Services项目中提供了一个模板Cleanup Service任务。您可以克隆它,根据您的需求调整其配置,并直接从ClearML UI中将其加入队列执行。

通过修改args字典来配置任务执行:

  • delete_threshold_days - 超过此天数的任务将被删除。默认值为30天。
  • cleanup_period_in_days - 以天为单位重复清理服务的间隔。默认值为1.0(每天运行一次)。
  • force_delete - 如果为False(默认),仅删除草稿任务。如果为True,允许删除任何状态的任务。
  • run_as_service - 如果为 True(默认值),任务将被排队以进行远程执行(默认队列:"services")。否则,脚本将在本地执行。
Remote Execution

如果run_as_service设置为True,请确保将clearml-agent分配给services队列。

现在脚本已配置,执行它:

python cleanup_service.py

在您的ClearML服务器上的DevOps项目中创建了一个名为Cleanup Service的新任务。脚本输出应该类似于:

ClearML Task: created new task id=8126c0af800f4903be07421aa344d7b3
ClearML results page: https://app.clear.ml/projects/608e9039/experiments/81261aa34d7b3/output/log
Cleanup service started
Starting cleanup
Deleting 100 tasks

接下来是清理的详细信息。

清理服务代码

cleanup_service.py 创建了一个 APIClient 对象,该对象与 ClearML 服务器建立会话,并通过调用以下内容完成清理:

  • Tasks.get_all 获取要删除的任务列表,提供以下参数:
    • system_tags - 仅获取标记为 archived 的任务。
    • status_changed - 获取最后状态更改时间早于删除阈值(以秒为单位)的任务。
  • Task.delete - 删除一个任务。

配置

实验的超参数通过Task.connect()方法明确记录到ClearML中。在WebApp中,可以在实验的配置页面下的超参数 > 常规中查看它们。

任务可以重复使用。克隆任务,编辑其参数,并将任务加入队列以在ClearML Agent 服务模式中运行。

清理服务配置

控制台

所有控制台输出都显示在实验的控制台中。

清理服务控制台