目录

分布式

对于分布式训练,TorchX 依赖调度器的批调度能力来调度 n 个节点副本。一旦启动,应用程序应以利用这种拓扑的方式编写,例如使用 PyTorch 的 DDP。 你可以通过在组件的 AppDef 中指定多个 torchx.specs.Role 来表达各种节点拓扑。每个角色映射到一组同构的节点,在整体训练中执行一个“角色”(功能)。从调度的角度来看,TorchX 以子批的方式启动每个角色。

DDP 风格的训练作业只有一个角色:训练器。而使用参数服务器的训练作业则有两个角色:参数服务器和训练器。 你可以为每个角色指定不同的入口点(可执行文件)、副本数量、资源需求等。

DDP 内置

DDP风格的训练器很常见且易于模板化,因为它们是同构的单一角色AppDefs,所以有一个内置的:dist.ddp。假设你的DDP训练脚本名为main.py,可以通过以下方式启动它:

# locally, 1 node x 4 workers
$ torchx run -s local_cwd dist.ddp -j 1x4 --script main.py

# locally, 2 node x 4 workers (8 total)
$ torchx run -s local_cwd dist.ddp -j 2x4 --script main.py

# remote (optionally pass --rdzv_port to use a different master port than the default 29500)
$ torchx run -s kubernetes -cfg queue=default dist.ddp \
    -j 2x4 \
    --script main.py \

请注意,与本地启动相比,唯一的区别是调度器 (-s)。 dist.ddp 内置功能使用 torchelastic(更具体地说是 torch.distributed.run) 在幕后。了解更多关于 torchelastic 的信息请 点击这里

组件APIs

torchx.components.dist.ddp(*script_args: str, script: Optional[str] = None, m: Optional[str] = None, image: str = 'ghcr.io/pytorch/torchx:0.2.0dev0', name: Optional[str] = None, h: Optional[str] = None, cpu: int = 2, gpu: int = 0, memMB: int = 1024, j: str = '1x2', env: Optional[Dict[str, str]] = None, max_retries: int = 0, rdzv_port: int = 29500, mounts: Optional[List[str]] = None)torchx.specs.api.AppDef[source]

分布式数据并行风格应用(一个角色,多个副本)。 使用torch.distributed.run 启动和协调PyTorch工作进程。默认使用c10d会合后端 在会合端点$rank_0_host:$rdzv_port上。请注意,在单节点运行时,rdzv_port参数会被忽略 而是使用端口0,这指示torchelastic选择主机上的一个随机空闲端口。

Note: (cpu, gpu, memMB) parameters are mutually exclusive with h (named resource) where

h 如果指定了资源需求设置,则优先考虑。 请参阅 注册命名资源

Parameters
  • script_args – 主模块的参数

  • 脚本 – 在镜像中运行的脚本或二进制文件

  • m – 运行的Python模块路径

  • 图像 – 图像 (例如 docker)

  • 名称 – 作业名称覆盖(如果未指定,则使用脚本名称)

  • CPU – 每个副本的CPU数量

  • GPU – 每个副本的 GPU 数量

  • memMB – 每个副本中的CPU内存以MB为单位

  • h – 一个已注册的命名资源(如果指定,则优先于cpu、gpu、memMB)

  • j – {nnodes}x{nproc_per_node}, for gpu hosts, nproc_per_node must not exceed num gpus

  • env – 需要传递给运行的环境变量(例如 ENV1=v1,ENV2=v2,ENV3=v3)

  • max_retries – 允许的调度器重试次数

  • rdzv_port – 在rank0主机上用于托管c10d存储(用于会合)的端口。 仅在运行多节点时生效。当运行单节点时,此参数将被忽略,并选择一个随机的空闲端口。

  • 挂载点 – 挂载到工作环境/容器中的挂载点(例如 type=<bind/volume>,src=/host,dst=/job[,readonly])。 请参阅调度程序文档以获取更多信息。

文档

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

查看文档

教程

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

查看教程

资源

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

查看资源