目录

快速入门

运行内置组件

开始使用 TorchX 的最简单方法是通过提供的 CLI。

$ pip install torchx
$ torchx --help

使用 TorchX,您可以 BYO 应用程序,但 TorchX 有一系列内置功能。 现在让我们看一下内置函数

$ torchx builtins
Found <n> builtin configs:
  ...
  i. utils.echo
  j. utils.touch
  ...

Echo 看起来很熟悉,也很简单。让我们了解如何运行 .utils.echo

$ torchx run --scheduler local_cwd utils.echo --help
usage: torchx run echo [-h] [--msg MSG]

Echos a message

optional arguments:
-h, --help  show this help message and exit
--msg MSG   Message to echo

我们可以看到它需要一个参数。让我们尝试在本地运行它--msg

$ torchx run --scheduler local_cwd utils.echo --msg "hello world"

注意

echo在这种情况下,它只是一个应用程序规范。这不是应用程序 逻辑本身,而不仅仅是运行 /bin/echo 的 “作业定义”。 如果您还没有这样做,现在是通读 基本概念 熟悉基本概念的好时机。

定义您自己的组件

现在让我们尝试实现自己。让事情变得更有趣 我们将向 的 版本再添加两个参数:echoecho

  1. 要并行运行的副本数

  2. 在消息前加上副本 ID

首先,我们创建一个应用程序规范文件。 这只是一个常规的 python 文件,我们在其中定义了应用程序规范。

$ touch ~/test.py

现在将以下内容复制粘贴到test.py

import torchx.specs as specs


def echo(num_replicas: int, msg: str = "hello world") -> specs.AppDef:
    """
    Echos a message to stdout (calls /bin/echo)

    Args:
       num_replicas: number of copies (in parallel) to run
       msg: message to echo

    """
    return specs.AppDef(
        name="echo",
        roles=[
            specs.Role(
                name="echo",
                entrypoint="/bin/echo",
                image="ubuntu:latest",
                args=[f"replica #{specs.macros.replica_id}: {msg}"],
                num_replicas=num_replicas,
            )
        ],
    )

请注意,

  1. 与 不同,没有默认值 指示它是必需的参数。--msg--num_replicas

  2. test.py不包含 App 的 logic 并且 只是一个作业定义。

现在让我们尝试运行我们的自定义echo

$ torchx run --scheduler local_cwd ~/test.py:echo --num_replicas 4 --msg "foobar"

replica #0: foobar
replica #1: foobar
replica #2: foobar
replica #3: foobar

在其他映像上运行

到目前为止,我们已经运行了 scheduler。这意味着我们指定的是相对于当前工作目录的,并且 忽略指定的图像。这对我们来说并不重要 因为我们指定了一个绝对路径作为 entryPoint ()。 如果我们指定了 local_cwd 调度程序将尝试相对于当前目录和指定的 PATH 进行调用。utils.echolocal_cwdentrypointentrypoint=/bin/echoentrypoint=echoecho

如果您有预构建的应用程序二进制文件,则使用 local_cwd 是一种 验证应用程序和 .但这还不是全部 如果您想在远程调度程序上运行应用程序,这很有用 (请参见Running On Other Schedulers)。specs.AppDef

注意

字符串 in 是容器映像的标识符 受调度程序支持。请参阅 scheduler 文档 以找出答案 要使用的调度程序支持哪个容器镜像。imagespecs.Role

为了匹配远程镜像行为,我们可以使用调度器 将通过 Docker 启动镜像并运行相同的应用程序。local_docker

注意

在继续之前,您需要安装 docker。如果您尚未这样做 按照以下位置的安装说明进行作:https://docs.docker.com/get-docker/

现在让我们尝试从 docker 容器运行。修改您在上一节中创建的 echo 以使 .echoAppDef~/test.pyimage="ubuntu:latest"

import torchx.specs as specs


def echo(num_replicas: int, msg: str = "hello world") -> specs.AppDef:
    """
    Echos a message to stdout (calls /bin/echo)

    Args:
       num_replicas: number of copies (in parallel) to run
       msg: message to echo

    """
    return specs.AppDef(
        name="echo",
        roles=[
            specs.Role(
                name="echo",
                entrypoint="/bin/echo",
                image="ubuntu:latest", # IMAGE NOW POINTS TO THE UBUNTU DOCKER IMAGE
                args=[f"replica #{specs.macros.replica_id}: {msg}"],
                num_replicas=num_replicas,
            )
        ],
    )

尝试运行 echo 应用程序

$ torchx run --scheduler local_docker \
             ~/test.py:echo \
             --num_replicas 4 \
             --msg "foobar from docker!"

在其他计划程序上运行

到目前为止,我们已经在本地启动了组件。让我们看看如何在 真正的调度器。

注意

本节假设您已经设置了一个正在运行的 支持的调度程序之一

让我们看看我们可以启动哪些调度器,并选择一个 您已经设置好了。

$ torchx schedulers

对于大多数调度程序,您必须指定一个附加参数。这些是关联的调度程序的启动时间参数 添加到应用程序的 Run 实例 (Job) 而不是 Job 定义 (App Spec) 的应用程序,例如 Job 。调度程序参数 是特定于调度程序的,因此您必须找出什么是 scheduler 参数 您计划使用的调度程序需要--scheduler_argspriority

$ torchx runopts <sched_name>
$ torchx runopts local_docker

现在您已经弄清楚了需要哪些 scheduler 参数,请启动您的应用程序

$ torchx run --scheduler <sched_name> --scheduler_args <k1=v1,k2=v2,...> \
    utils.sh ~/my_app.py <app_args...>
$ torchx run --scheduler local_cwd --scheduler_args log_dir=/tmp \
    utils.sh ~/my_app.py --foo=bar

注意

如果您的应用程序 args 与子命令的 args 重叠,则 必须使用 argparse 的分隔符才能避免混淆。 例如,如果您的应用程序还接受一个参数 如下所示运行它。run----scheduler

$ torchx run --scheduler local_docker ~/my_app.py -- --scheduler foobar

后续步骤

  1. 查看 torchx CLI 的其他功能

  2. 了解如何通过引用 torchx.specs 来编写更复杂的应用程序规范

  3. 浏览内置组件的集合

  4. 查看 Runner 支持的调度程序列表

  5. 查看您可以在哪些 ML 管道平台上运行组件

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

获取面向初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并解答您的问题

查看资源