基础¶
这些组件在构建其他组件时作为方便的方法使用。基础组件库中的许多方法都是工厂方法,用于 Role, Container, 和 Resources,它们与 TorchX 的可配置扩展点挂钩。
- torchx.components.base.roles.create_torch_dist_role(name: str, image: str, entrypoint: str, resource: torchx.specs.api.Resource = Resource(cpu=-1, gpu=-1, memMB=-1, capabilities={}), base_image: Optional[str] = None, args: Optional[List[str]] = None, env: Optional[Dict[str, str]] = None, num_replicas: int = 1, max_retries: int = 0, port_map: Dict[str, int] = Field(name=None, type=None, default=<dataclasses._MISSING_TYPE object>, default_factory=<class 'dict'>, init=True, repr=True, hash=None, compare=True, metadata=mappingproxy({}), _field_type=None), retry_policy: torchx.specs.api.RetryPolicy = <RetryPolicy.APPLICATION: 'APPLICATION'>, **launch_kwargs: Any) → torchx.specs.api.Role[source]¶
一个
Role,用户提供了entrypoint,由 torchelastic 代理(在容器中)执行。请注意,torchelastic 代理会调用多个entrypoint的副本。有关 torchelastic 的更多信息,请参阅 torchelastic 快速入门文档。
重要的
这是用户的责任,确保角色的图像包含torchelastic。由于Torchx无法控制图像构建过程,因此无法自动将torchelastic包含在角色的图像中。
以下示例启动了2个
replicas(节点)的弹性my_train_script.py,允许其在2到4个节点之间缩放。每个节点运行8个工人,这些工人最多可以失败并重启3次。>>> from torchx.components.base.roles import create_torch_dist_role >>> from torchx.specs.api import NULL_RESOURCE >>> elastic_trainer = create_torch_dist_role( ... name="trainer", ... image="<NONE>", ... resource=NULL_RESOURCE, ... entrypoint="my_train_script.py", ... args=["--script_arg", "foo", "--another_arg", "bar"], ... num_replicas=4, max_retries=1, ... nproc_per_node=8, max_restarts=3) ... # effectively runs: ... # python -m torch.distributed.launch ... # --nproc_per_node 8 ... # --nnodes 4 ... # --max_restarts 3 ... # my_train_script.py --script_arg foo --another_arg bar >>> elastic_trainer Role(name='trainer', ...)
- Parameters
名称 – 角色的名称
入口点 – 用户二进制文件或Python脚本,将被启动。
资源 – 请求调度器的资源
base_image – 可选基础镜像,如果调度器支持图像叠加
参数 – 用户提供的参数
环境 – 工作进程运行入口点时设置的环境变量
num_replicas – 运行的副本数量
最大重试次数 – 最大重试次数
端口映射 – 角色的端口映射
重试策略 – 应用于角色的重试策略
launch_kwargs – kwarg 样式启动参数,将用于启动 torchelastic 代理。
- Returns
角色对象,通过torchelastic作为代理启动用户入口点