PyTorch
如果您尚未使用ClearML,请参阅入门指南以获取设置说明。
ClearML 与 PyTorch 无缝集成,自动记录其模型。
你只需要在你的PyTorch脚本中添加两行代码:
from clearml import Task
task = Task.init(task_name="<task_name>", project_name="<project_name>")
就这样!这将创建一个ClearML任务,它捕获:
- Source code and uncommitted changes
- Installed packages
- PyTorch 模型
- TensorBoard 输出
- Console Output
- 一般详细信息,如机器详细信息、运行时间、创建日期等。
- 还有更多
您可以在WebApp中查看所有任务的详细信息。
自动日志控制
默认情况下,当ClearML集成到您的PyTorch脚本中时,它会捕获PyTorch模型。但是,您可能希望对实验日志有更多的控制。
要控制任务的框架日志记录,请使用Task.init()
的auto_connect_frameworks
参数。
通过将参数设置为False
,可以完全禁用所有自动日志记录。为了更精细地控制记录的框架,可以输入一个包含框架-布尔对的字典。
例如:
auto_connect_frameworks={
'pytorch': False, 'matplotlib': True, 'tensorboard': False, 'tensorflow': False,
'xgboost': False, 'scikit': True, 'fastai': True, 'lightgbm': False,
'hydra': True, 'detect_repository': True, 'tfdefines': True, 'joblib': True,
'megengine': True, 'catboost': True
}
您还可以将通配符作为字典值输入,因此只有当其本地路径至少匹配一个通配符时,ClearML 才会记录由框架创建的模型。
例如,在下面的代码中,ClearML 只会记录路径具有 .pt
扩展名的 PyTorch 模型。未指定框架的值默认为 true,因此它们的所有模型都会自动记录。
auto_connect_frameworks={'pytorch' : '*.pt'}
手动日志记录
为了增强其自动日志记录功能,ClearML 还提供了一个显式的日志记录接口。
查看有关显式记录信息到ClearML任务的更多信息:
- 模型
- 配置 (例如 参数, 配置文件)
- Artifacts(例如,由任务创建的输出文件或Python对象)
- 标量
- 文本/图表/调试样本
参见 显式报告教程。
分布式训练
您可以将ClearML集成到您的分布式训练脚本中。通过ClearML,您可以轻松地将每个子进程的信息记录到集中位置并进行可视化。
PyTorch Distributed 脚本展示了如何使用 ClearML
与 PyTorch 分布式通信包 (torch.distributed
):在子进程生成之前初始化一个 ClearML 任务,然后每个子进程手动将其工件、标量和超参数报告给任务。
示例
看看ClearML的PyTorch示例。这些示例在不同的配置中使用PyTorch和ClearML,并配合其他工具,如argparse、TensorBoard和matplotlib:
- PyTorch MNIST - 演示ClearML自动记录使用PyTorch创建的模型,以及
argparse
命令行参数 - PyTorch with Matplotlib - 演示了ClearML自动记录PyTorch模型和matplotlib图像的功能。这些图像会显示在生成的ClearML实验的调试样本中。
- PyTorch with TensorBoard - 展示 ClearML 自动记录 PyTorch 模型,以及使用 TensorBoard 的
SummaryWriter
记录的标量、调试样本和文本 - PyTorch TensorBoard 玩具 - 展示 ClearML 自动记录使用 TensorBoard 的
SummaryWriter
记录的调试样本 - PyTorch TensorBoardX - 演示 ClearML 自动记录 PyTorch 模型,以及使用 TensorBoardX 的
SummaryWriter
记录的标量、调试样本和文本 - PyTorch Abseil - 展示 ClearML 自动记录 PyTorch 模型和
absl.flags
参数 - PyTorch 模型更新 - 演示如何使用 ClearML 的 OutputModel 类进行训练、日志记录和更新 PyTorch 模型
- PyTorch 分布式 - 演示如何使用 ClearML 与 PyTorch 分布式通信包 (
torch.distributed
)
远程执行
ClearML 记录了在不同机器上重现实验所需的所有信息(已安装的包、未提交的更改等)。ClearML Agent 监听指定的队列,当任务入队时,代理会拉取它,重新创建其执行环境,并运行它,将其标量、图表等报告给实验管理器。
通过在任何机器上(例如云虚拟机、本地GPU机器、您自己的笔记本电脑)运行以下命令来部署ClearML代理:
clearml-agent daemon --queue <queues_to_listen_to> [--docker]
使用ClearML的自动扩展器来帮助您管理所选云(AWS、GCP、Azure)中的云工作负载,并自动部署ClearML代理:自动扩展器会根据您设置的资源预算,根据需要自动启动和关闭实例。
克隆、编辑和入队
使用ClearML的网页界面编辑任务详情,如配置参数或输入模型,然后在远程机器上使用新配置执行任务:
- Clone Experiment
- Edit hyperparameters and/or other details
- 将任务加入队列
执行任务的ClearML代理将使用新值来覆盖任何硬编码的值。
远程执行任务
你可以通过在你的脚本中添加Task.execute_remotely()
来设置一个任务以编程方式远程执行。这个方法会停止当前任务的本地执行,然后将其加入指定的队列,以便在远程机器上重新运行。
# If executed locally, process will terminate, and a copy will be executed by an agent instead
task.execute_remotely(queue_name='default', exit_process=True)