快速入门¶
要启动一个**容错**作业,请在所有节点上运行以下命令。
torchrun
--nnodes=NUM_NODES
--nproc-per-node=TRAINERS_PER_NODE
--max-restarts=NUM_ALLOWED_FAILURES
--rdzv-id=JOB_ID
--rdzv-backend=c10d
--rdzv-endpoint=HOST_NODE_ADDR
YOUR_TRAINING_SCRIPT.py (--arg1 ... train script args...)
要启动一个**弹性**作业,请至少在MIN_SIZE
个节点上,最多在MAX_SIZE
个节点上运行以下命令。
torchrun
--nnodes=MIN_SIZE:MAX_SIZE
--nproc-per-node=TRAINERS_PER_NODE
--max-restarts=NUM_ALLOWED_FAILURES_OR_MEMBERSHIP_CHANGES
--rdzv-id=JOB_ID
--rdzv-backend=c10d
--rdzv-endpoint=HOST_NODE_ADDR
YOUR_TRAINING_SCRIPT.py (--arg1 ... train script args...)
注意
TorchElastic 将故障建模为成员资格更改。当节点发生故障时,这被视为“缩容”事件。当计划程序替换故障节点时,它是一个“扩容”事件。因此,对于容错和弹性作业,都使用--max-restarts
来控制在放弃之前允许的最大重启次数,无论重启是由故障还是扩展事件导致。
HOST_NODE_ADDR
,格式为 <host>[:<port>](例如 node1.example.com:29400),指定应在其中实例化和托管 C10d 协调后端的节点和端口。它可以是训练集群中的任何节点,但理想情况下,您应该选择一个带宽较高的节点。
注意
如果未指定端口号,则HOST_NODE_ADDR
默认为 29400。
注意
可以使用--standalone
选项启动带有辅助协调后端的单节点作业。使用--standalone
选项时,无需传递--rdzv-id
、--rdzv-endpoint
和--rdzv-backend
。
注意
详细了解如何编写分布式训练脚本,请点击此处。
如果torchrun
无法满足您的需求,您可以直接使用我们的 API 进行更强大的自定义。首先查看弹性代理 API。