ClearML 任务命令行界面
仅使用命令行和零额外的代码行,轻松跟踪您的工作并将ClearML与您现有的代码集成。
clearml-task
自动将任何脚本或Python仓库导入ClearML。clearml-task
允许
你将代码排队,由可用的ClearML Agent执行。你甚至可以提供命令行
参数、Python模块依赖项和requirements.txt文件!
ClearML 任务是什么?
- 在具有专用资源(例如GPU)的远程机器上启动现成的代码
- 在尚未集成到ClearML的代码库上运行超参数优化
- 从一系列脚本创建管道,您需要将其转换为ClearML任务
- 在远程机器上运行一些代码,无论是使用本地集群还是在云端
ClearML任务如何工作?
- 执行
clearml-task
,指定 ClearML 目标项目和任务名称,以及您的脚本(和仓库/提交/分支)。 可选地,指定要使用的执行队列和 Docker 镜像。 clearml-task
发挥它的魔力!它创建了一个新的 ClearML Task,并且,如果被指示,将其加入队列以便由 ClearML Agent 执行。- 当任务在远程机器上运行时,所有的控制台输出都会实时记录,同时还有你的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
选项。
如果未指定,clearml-task
将使用'master'分支的最新提交。
对于GitHub仓库,建议明确指定您的默认分支(例如--branch main
),以避免在识别正确的默认分支时出现错误。
命令行选项
Name | Description | Optional |
---|---|---|
--args | Arguments to pass to the remote task, list of <argument>=<value> strings. Currently only argparse arguments are supported | |
--base-task-id | Use a pre-existing task in the system, instead of a local repo / script. Essentially clones an existing task and overrides arguments / requirements | |
--binary | Binary executable used to launch the entry point. For example: --binary python3 , --binary /bin/bash . By default, the binary will be auto-detected | |
--branch | Select repository branch / tag. By default, latest commit from the master branch | |
--commit | Select commit ID to use. By default, latest commit, or local commit ID when using local repository | |
--cwd | Working directory to launch the script from. Relative to repo root or local --folder | |
--docker | Select the Docker image to use in the remote task | |
--docker_bash_setup_script | Add a bash script to be executed inside the Docker before setting up the task's environment | |
--docker_args | Add 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" | |
--folder | Execute 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 machine | |
--import-offline-session | Specify the path to the offline session you want to import. | |
--name | Set a target name for the new task | |
--output-uri | Set the task output_uri , upload destination for task models and artifacts | |
--packages | Manually specify a list of required packages. Example: --packages "tqdm>=2.1" "scikit-learn" | |
--project | Set the project name for the task (required, unless using --base-task-id ). If the named project does not exist, it is created on-the-fly | |
--queue | Select a task's execution queue. If not provided, a task is created but not launched | |
--repo | URL of remote repository. Example: --repo https://github.com/allegroai/clearml.git | |
--requirements | Specify requirements.txt file to install when setting the session. By default, the requirements.txt from the repository will be used | |
--script | Entry 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.py | |
--skip-task-init | If set, Task.init() call is not added to the entry point, and is assumed to be called within the script | |
--tags | Add tags to the newly created task. For example: --tags "base" "job" | |
--task-type | Set the task type. Optional values: training, testing, inference, data_processing, application, monitor, controller, optimizer, service, qc, custom | |
--version | Display the clearml-task utility version |
用法
这些命令展示了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_size
和epochs
的值被设置,并且该任务被排队在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中修改并稍后排队)。