远程执行
execute_remotely_example
脚本展示了如何使用 Task.execute_remotely()
方法。
note
确保至少有一个ClearML Agent正在运行并分配到监听default
队列:
clearml-agent daemon --queue default
执行流程
该脚本在PyTorch内置的MNIST数据集上训练一个简单的深度神经网络。以下描述了代码的执行流程:
- 训练运行一个周期。
- 代码使用了
Task.execute_remotely()
,这会终止代码的本地执行并将任务排入default
队列,如queue_name
参数中所指定的那样。 - 监听队列的代理获取任务并远程重新启动任务执行。当代理执行任务时,
execute_remotely
被视为无操作。
使用execute_remotely
的执行流程在开发机器上运行代码进行几次迭代以调试并确保代码不会崩溃,或者设置环境时特别有用。之后,训练可以转移到更强大的机器上执行。
在执行示例脚本的过程中,代码执行以下操作:
- 使用ClearML的自动和显式日志记录。
- 在
examples
项目中创建一个名为Remote_execution PyTorch MNIST train
的实验。
标量
在示例脚本的 train
函数中,以下代码明确将标量报告给 ClearML:
Logger.current_logger().report_scalar(
title="train",
series="loss",
iteration=(epoch * len(train_loader) + batch_idx),
value=loss.item()
)
在脚本的test
函数中,代码明确报告了loss
和accuracy
标量。
Logger.current_logger().report_scalar(
title="test", series="loss", iteration=epoch, value=test_loss
)
Logger.current_logger().report_scalar(
title="test", series="accuracy", iteration=epoch, value=(correct / len(test_loader.dataset))
)
这些标量可以在图中可视化,这些图会出现在ClearML网页界面的实验SCALARS标签中。
超参数
ClearML 自动记录使用 argparse
定义的命令行选项。它们会出现在 配置 > 超参数 > 参数 中。
控制台
打印到控制台的训练进度文本,以及所有其他控制台输出,显示在控制台中。
工件
实验创建的模型会出现在实验的ARTIFACTS标签中。ClearML 会自动记录和跟踪使用 PyTorch 创建的模型及其任何快照。