Shortcuts

torchx.tracker

概述与用法

注意

原型,使用风险自负,API可能会更改

运行机器学习任务的从业者通常需要跟踪以下信息:

  • Job inputs:
    • configuration
      • 模型配置

      • HPO参数

    • data
      • 版本

      • 来源

  • Job results:
    • 指标

    • 模型位置

  • 概念性的工作分组

AppRun 提供了一个统一的接口作为实验和工件跟踪解决方案,通过提供TrackerBase适配器实现来支持包装可插拔的跟踪实现。

示例用法

使用tracker API的示例code

追踪器设置

要启用跟踪,需要:

  1. 在启动器端定义跟踪器后端(入口点/模块和配置)使用 .torchxconfig

  2. 在用户作业中使用entry_points添加入口点(specification

1. 启动器端配置

User can define any number of tracker backends under torchx:tracker section in .torchxconfig, where:
  • Key: is an arbitrary name for the tracker, where the name will be used to configure its properties

    在 [tracker:] 下

  • Value: is entrypoint or module factory method that must be available within user job. The value will be injected into a

    用户作业并用于构建跟踪器实现。

[torchx:tracker]
tracker_name=<entry_point_or_module_factory_method>

每个跟踪器可以在[tracker:]部分下进行额外配置(目前仅限于config参数):

[tracker:<TRACKER NAME>]
config=configvalue

例如,~/.torchxconfig 可以设置为:

[torchx:tracker]
tracker1=tracker1
tracker2=backend_2_entry_point
tracker3=torchx.tracker.mlflow:create_tracker

[tracker:tracker1]
config=s3://my_bucket/config.json

[tracker:tracker3]
config=my_config.json

2. 用户作业配置(高级)

在上一步中定义的入口点值必须在[torchx.tracker]组下可发现,并且可以在用户作业中调用(取决于打包/分发机制)以创建TrackerBase的实例。

要实现这一点,请在分发中的entry_points.txt中定义入口点如下:

[torchx.tracker]
entry_point_name=my_module:create_tracker_fn

获取 AppRun 实例

使用 app_run_from_env():

>>> import os; os.environ["TORCHX_JOB_ID"] = "scheduler://session/job_id" # Simulate running job first
>>> from torchx.tracker import app_run_from_env
>>> app_run = app_run_from_env()

参考 TrackerBase 实现

FsspecTracker 提供了跟踪器后端的参考实现。 GitHub 示例 目录 提供了如何在用户应用程序中配置和使用它的示例。

查询数据

  • CmdTracker exposes operations available to users at the CLI level:
    • torchx tracker list jobs [–parent-run-id RUN_ID]

    • torchx tracker list metadata RUN_ID

    • torchx tracker list artifacts [–artifact ARTIFACT_NAME] RUN_ID

  • 或者,后端实现可能会为用户提供用户界面。

class torchx.tracker.AppRun(id: str, backends: Iterable[TrackerBase])[source]

在作业级别公开跟踪器API,并且应该是封装该模块实现的唯一API。

此API仍处于实验阶段,未来可能会有所更改。

Parameters:
  • id (str) – 由追踪器API使用的作业标识

  • backends (Iterable[TrackerBase]) – 用于持久化数据的TrackerBase实现列表。

class torchx.tracker.api.TrackerBase[source]

跟踪解决方案实现/服务的抽象。

此API仍处于实验阶段,未来可能会有较大变化。

class torchx.tracker.backend.fsspec.FsspecTracker(fs: AbstractFileSystem, root_dir: str)[source]

使用Fsspec抽象实现TrackerBase,并具有使用各种存储选项来持久化数据的优势。

重要提示:torchx.tracker.api API 仍处于实验阶段,因此目前尚不保证与未来版本的向后兼容性。

每次运行都会有一个目录,其中包含用于元数据、工件、源和后代数据的子目录。

class torchx.cli.cmd_tracker.CmdTracker[source]

原型 TorchX 跟踪器子命令,允许通过与跟踪器实现交互来查询数据。

重要提示:命令和参数将来可能会被修改。

Supported commands:
  • 跟踪器列出作业 [–父运行ID RUN_ID]

  • 跟踪器列表元数据 RUN_ID

  • 跟踪器列表工件 [–artifact 工件名称] 运行ID