目录

世界您好

这是一个独立的指南,介绍如何构建一个简单的应用程序和组件规范,并通过两个不同的调度器启动它。

在执行此示例之前,请参阅快速入门,了解如何在本地安装 TorchX。

让我们从编写一个简单的 “Hello World” python 应用程序开始。这只是一个普通的 python 程序,可以包含您想要的任何内容。

注意:此示例使用 Jupyter Notebook 创建本地文件以用于示例目的。在正常使用情况下,您可以将这些文件作为独立文件。%%writefile

[1]:
%%writefile my_app.py

import sys
import argparse

def main(user: str) -> None:
    print(f"Hello, {user}!")

if __name__ == "__main__":
    parser = argparse.ArgumentParser(
        description="Hello world app"
    )
    parser.add_argument(
        "--user",
        type=str,
        help="the person to greet",
        required=True,
    )
    args = parser.parse_args(sys.argv[1:])

    main(args.user)
Overwriting my_app.py

现在我们有一个应用程序,我们可以为它编写组件文件。此功能允许我们以用户友好的方式重用和共享我们的应用程序。

我们可以从 cli 或以编程方式将此组件用作管道的一部分。torchx

[2]:
%%writefile my_component.py

import torchx.specs as specs

def greet(user: str, image: str = "my_app:latest") -> specs.AppDef:
    """
    Echos a message to stdout (calls /bin/echo)

    Args:
        user: name of the person to greet
        image: image to use
    """
    return specs.AppDef(
        name="hello_world",
        roles=[
            specs.Role(
                name="greeter",
                image=image,
                entrypoint="python",
                args=[
                    "-m", "my_app",
                    "--user", user,
                ],
            )
        ],
    )
Overwriting my_component.py

一旦我们编写了组件,我们就可以通过 .调度程序相对于当前目录执行组件。torchx runlocal_cwd

[3]:
%%sh
torchx run --scheduler local_cwd my_component.py:greet --user "your name"
Hello, your name!
local_cwd://torchx/hello_world_ed42ed11
torchx 2021-10-18 11:48:45 INFO     Waiting for the app to finish...
torchx 2021-10-18 11:48:46 INFO     Job finished: SUCCEEDED

如果我们想在其他环境中运行,我们可以构建一个 Docker 容器,这样我们就可以在支持 Docker 的环境(如 Kubernetes)中或通过本地 Docker 调度器运行我们的组件。

注意:这需要安装 Docker,并且在 Google Colab 等环境中不起作用。

[4]:
%%writefile Dockerfile

FROM ghcr.io/pytorch/torchx:0.1.0rc1

ADD my_app.py .
Overwriting Dockerfile

创建 Dockerfile 后,我们就可以创建 Docker 映像了。

[5]:
%%sh
docker build -t my_app:latest -f Dockerfile .
Step 1/2 : FROM ghcr.io/pytorch/torchx:0.1.0rc1
 ---> 15fd31611433
Step 2/2 : ADD my_app.py .
 ---> Using cache
 ---> 9cedd7f457fb
Successfully built 9cedd7f457fb
Successfully tagged my_app:latest

然后,我们可以在本地调度器上启动它。

[6]:
%%sh
torchx run --scheduler local_docker my_component.py:greet --image "my_app:latest" --user "your name"
Hello, your name!
local_docker://torchx/hello_world_0619d6b3
Error response from daemon: pull access denied for my_app, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
torchx 2021-10-18 11:48:48 WARNING  failed to fetch image my_app:latest, falling back to local: Command '['docker', 'pull', 'my_app:latest']' returned non-zero exit status 1.
torchx 2021-10-18 11:48:48 INFO     Waiting for the app to finish...
WARNING: IPv4 forwarding is disabled. Networking will not work.
torchx 2021-10-18 11:48:49 INFO     Job finished: SUCCEEDED

如果您有 Kubernetes 集群,则可以使用 Kubernetes 调度程序在集群上启动它。

文档

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

查看文档

教程

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

查看教程

资源

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

查看资源