Skip to main content

ClearML 任务命令行界面

仅使用命令行和额外的代码行,轻松跟踪您的工作并将ClearML与您现有的代码集成。

clearml-task 自动将任何脚本或Python仓库导入ClearML。clearml-task 允许 你将代码排队,由可用的ClearML Agent执行。你甚至可以提供命令行 参数、Python模块依赖项和requirements.txt文件!

ClearML 任务是什么?

  • 在具有专用资源(例如GPU)的远程机器上启动现成的代码
  • 在尚未集成到ClearML的代码库上运行超参数优化
  • 从一系列脚本创建管道,您需要将其转换为ClearML任务
  • 在远程机器上运行一些代码,无论是使用本地集群还是在云端

ClearML任务如何工作?

  1. 执行 clearml-task,指定 ClearML 目标项目和任务名称,以及您的脚本(和仓库/提交/分支)。 可选地,指定要使用的执行队列和 Docker 镜像。
  2. clearml-task 发挥它的魔力!它创建了一个新的 ClearML Task,并且,如果被指示,将其加入队列以便由 ClearML Agent 执行。
  3. 当任务在远程机器上运行时,所有的控制台输出都会实时记录,同时还有你的TensorBoard和matplotlib。你可以在ClearML Web UI中跟踪脚本的进度和结果(在ClearML任务创建任务时,会打印出指向ClearML Web UI中任务详情页面的链接)。

执行配置

Docker

使用--docker 选项指定一个Docker容器来运行代码。 ClearML代理会自动从Docker Hub或Docker artifactory中拉取它。

包依赖

clearml-task 自动在远程仓库中找到 requirements.txt 文件。

如果本地脚本需要某些包,或者远程仓库没有requirements.txt文件, 请使用--packages ""手动指定所需的Python包,例如--packages "keras" "tensorflow>2.2"

队列

任务通过队列传递给ClearML代理。指定一个队列来将任务加入队列。如果您不输入队列,任务将以草稿状态创建,您可以在稍后将其加入队列。

分支和工作目录

要指定代码的分支和提交ID,请传递--branch --commit 选项。 如果未指定,clearml-task将使用'master'分支的最新提交。

Github Default Branch

对于GitHub仓库,建议明确指定您的默认分支(例如--branch main),以避免在识别正确的默认分支时出现错误。

命令行选项

NameDescriptionOptional
--argsArguments to pass to the remote task, list of <argument>=<value> strings. Currently only argparse arguments are supportedYes
--base-task-idUse a pre-existing task in the system, instead of a local repo / script. Essentially clones an existing task and overrides arguments / requirementsYes
--binaryBinary executable used to launch the entry point. For example: --binary python3, --binary /bin/bash. By default, the binary will be auto-detectedYes
--branchSelect repository branch / tag. By default, latest commit from the master branchYes
--commitSelect commit ID to use. By default, latest commit, or local commit ID when using local repositoryYes
--cwdWorking directory to launch the script from. Relative to repo root or local --folderYes
--dockerSelect the Docker image to use in the remote taskYes
--docker_bash_setup_scriptAdd a bash script to be executed inside the Docker before setting up the task's environmentYes
--docker_argsAdd Docker arguments. Pass a single string in the following format: --docker_args "<argument_string>". For example: --docker_args "-v some_dir_1:other_dir_1 -v some_dir_2:other_dir_2"Yes
--folderExecute the code from a local folder. Notice, it assumes a git repository already exists. Current state of the repo (commit ID and uncommitted changes) is logged and replicated on the remote machineYes
--import-offline-sessionSpecify the path to the offline session you want to import.Yes
--nameSet a target name for the new taskNo
--output-uriSet the task output_uri, upload destination for task models and artifactsYes
--packagesManually specify a list of required packages. Example: --packages "tqdm>=2.1" "scikit-learn"Yes
--projectSet the project name for the task (required, unless using --base-task-id). If the named project does not exist, it is created on-the-flyNo
--queueSelect a task's execution queue. If not provided, a task is created but not launchedYes
--repoURL of remote repository. Example: --repo https://github.com/allegroai/clearml.gitYes
--requirementsSpecify requirements.txt file to install when setting the session. By default, the requirements.txt from the repository will be usedYes
--scriptEntry point script for the remote execution. When used with --repo, input the script's relative path inside the repository. For example: --script source/train.py. When used with --folder, it supports a direct path to a file inside the local repository itself, for example: --script ~/project/source/train.pyNo
--skip-task-initIf set, Task.init() call is not added to the entry point, and is assumed to be called within the scriptYes
--tagsAdd tags to the newly created task. For example: --tags "base" "job"Yes
--task-typeSet the task type. Optional values: training, testing, inference, data_processing, application, monitor, controller, optimizer, service, qc, customYes
--versionDisplay the clearml-task utility versionYes

用法

这些命令展示了clearml-task的一些有用用例。

从远程仓库执行代码

clearml-task --project examples --name remote_test --repo https://github.com/allegroai/events.git --branch master --script /webinar-0620/keras_mnist.py --args batch_size=64 epochs=1 --queue default

events GitHub仓库导入的keras_mnist.py脚本被作为一个名为remote_test的ClearML任务导入到examples项目中。其命令行参数batch_sizeepochs的值被设置,并且该任务被排队在default队列中执行。

执行本地脚本

使用 clearml-task 执行本地脚本与使用它执行远程仓库中的代码非常相似。

clearml-task --project examples --name local_test --script keras_mnist.py --branch master --requirements requirements.txt --args epochs=1 --queue default

用户本地机器上的keras_mnist.py脚本被导入为examples项目中名为local_test的ClearML任务。

它的Python需求取自本地的requiremnts.txt文件,并且其epochs命令行参数值已设置。

任务已加入default队列等待执行。

将脚本推送到服务器

clearml-task --project examples --name no_execute --script keras_mnist.py --branch master --requirements requirements.txt --args epochs=1 

用户本地机器上的keras_mnist.py脚本被导入为examples项目中名为no_execute的ClearML任务。

它的Python需求来自本地的requiremnts.txt文件,并且其epochs命令行参数值已设置。 任务以草稿状态创建(即可以在WebApp UI中修改并稍后排队)。