目录

当地

这包含可用于运行 TorchX 的 TorchX 本地调度器 组件。

torchx.schedulers.local_scheduler 类LocalSchedulersession_name: strimage_provider_class: Callable[[LocalOpts] ImageProvider]cache_sizeint = 100,extra_paths可选[List[str]] = [来源]

基地:Scheduler[LocalOpts]

在 localhost 上调度。容器被建模为进程和 容器的某些不相关的属性 或者无法对 localhost 强制执行 runs。被忽略的属性:

  1. 资源要求

  2. 资源限制实施

  3. 重试策略

  4. 重试计数(不支持重试)

  5. 部署首选项

调度器支持在接收 SIGTERM 或 SIGINT 时进行孤立进程清理。 调度程序将终止生成的进程。

这是通过 scheduler local_cwd 公开的。

  • local_cwd 相对于当前工作运行 目录下,并忽略 images 字段以加快迭代和测试速度 目的。

注意

孤立项清理仅在从主线程实例化 LocalScheduler 时起作用。

配置选项

    usage:
        [log_dir=LOG_DIR],[prepend_cwd=PREPEND_CWD],[auto_set_cuda_visible_devices=AUTO_SET_CUDA_VISIBLE_DEVICES]

    optional arguments:
        log_dir=LOG_DIR (str, None)
            dir to write stdout/stderr log files of replicas
        prepend_cwd=PREPEND_CWD (bool, False)
            if set, prepends CWD to replica's PATH env var making any binaries in CWD take precedence over those in PATH
        auto_set_cuda_visible_devices=AUTO_SET_CUDA_VISIBLE_DEVICES (bool, False)
            sets the `CUDA_AVAILABLE_DEVICES` for roles that request GPU resources. Each role replica will be assigned one GPU. Does nothing if the device count is less than replicas.

兼容性

注意

由于调度程序差异,本地运行的作业在以下情况下可能无法工作 由于网络或软件依赖性,使用不同的调度程序。

特征

计划程序支持

获取日志

✔️

分布式作业

LocalScheduler 支持多个副本,但所有副本都将 在本地主机上执行。

取消作业

✔️

描述任务

✔️

工作区 / 修补

部分支持。LocalScheduler 从本地 目录中,但不支持编程工作区。

坐骑

弹性

auto_set_CUDA_VISIBLE_DEVICESrole_params: Dict[str List[ReplicaParam]]app AppDef,cfgLocalOpts [来源]

如果 run 选项 ,则 将 env var 设置为每个副本的 (node) env var 根据每个角色的资源规范中指定的 GPU 数量, 覆盖角色字段中存在的任何 OVER。 要手动设置 ,请在调度程序 runcfg 中运行。auto_set_cuda_visible_devices = TrueCUDA_VISIBLE_DEVICESCUDA_VISIBLE_DEVICESenvCUDA_VISIBLE_DEVICESauto_set_cuda_visible_devices = False

注意

如果主机的设备计数小于请求的 GPU 总数, then 未设置(即使 )。CUDA_VISIBLE_DEVICESauto_set_cuda_visible_devices=True

注意

此方法要么设置所有 GPU 角色,要么不设置CUDA_VISIBLE_DEVICES

示例(所有示例都假定在具有 8 个 GPU 的主机上运行):

  1. Role(num_replicas=2, resource=Resource(gpus=2))
    1. replica_0的CUDA_VISIBLE_DEVICES=0,1

    2. replica_1的CUDA_VISIBLE_DEVICES=2,3

  2. Role(num_replicas=3, resource=Resource(gpus=4))
    1. 错误 - '' 3 * 4 = 12 >= 8''

  3. [Role(num_replicas=1, resource=Resource(gpus=2)), Role(num_replicas=3, resource=Resource(gpus=1))]
    1. role_0、replica_0CUDA_VISIBLE_DEVICES=0,1

    2. role_1、replica_0CUDA_VISIBLE_DEVICES=2

    3. role_1、replica_1CUDA_VISIBLE_DEVICES=3

    4. role_1、replica_2CUDA_VISIBLE_DEVICES=4

close None[来源]

仅适用于具有本地状态的调度器!关闭调度程序 释放任何已分配的资源。关闭后,scheduler 对象 被视为不再有效,并且对对象调用的任何方法 导致未定义的行为。

此方法不应引发异常,并且允许调用 对同一对象进行多次作。

注意

仅对具有本地状态的调度程序实现进行覆盖 (). Scheduler 只需包装远程 scheduler 的 Client 端就不需要 实现此方法。torchx/schedulers/local_scheduler.py

describeapp_id str 可选[DescribeAppResponse][来源]

描述指定的应用程序。

结果

AppDef 描述,或者应用程序不存在。None

list List[ListAppResponse][来源]

对于在调度程序上启动的应用程序,此 API 返回 ListAppResponse 列表 对象,每个对象都有 App ID 及其 Status。 注意:此 API 处于原型阶段,可能会发生更改。

log_iterapp_id strrole_name: strk int = 0正则表达式 可选[str] = 因为 可选[日期时间] = 直到可选[日期时间] = should_tail:bool = False 可选[stream] = None Iterable[str][来源]

返回 . 当读取了所有符合条件的 log 行时,迭代器结束。k``th replica of the ``role

如果调度程序支持基于时间的游标获取日志行 对于自定义时间范围,则 , 字段为 honored,否则将被忽略。未指定 ,相当于获取所有可用的日志行。如果 是 empty,则迭代器的行为类似于 ,跟在日志输出之后 直到作业达到 END 状态。sinceuntilsinceuntiluntiltail -f

构成日志的确切定义特定于计划程序。一些 调度器可能会将 stderr 或 stdout 视为日志,其他人可能会读取日志 从日志文件中。

行为和假设:

  1. 如果在不存在的应用程序上调用,则生成 undefined-behavior 调用方应在调用此方法之前检查应用是否存在 using。exists(app_id)

  2. 不是有状态的,使用相同的参数调用此方法两次 返回一个新的迭代器。先前迭代 进度丢失。

  3. 并不总是支持对数拖尾。并非所有调度程序都支持 live 日志迭代(例如,在应用程序运行时跟踪日志)。指 Iterator 行为的特定 scheduler 文档。

3.1 如果调度器支持 log-tailing,应该对其进行控制

by 参数。should_tail

  1. 不保证日志保留。有可能到这个 方法调用时,底层调度程序可能已经清除了日志记录 对于此应用程序。如果是这样,此方法将引发任意异常。

  2. 如果为 True,则该方法仅引发异常 当可访问的日志行已完全耗尽并且应用程序已达到 最终状态。例如,如果应用程序卡住并且没有产生任何日志行, 然后 iterator 会阻塞,直到应用程序最终被杀死(通过 timeout 或手动),此时它会引发一个 .should_tailStopIterationStopIteration

    如果为 False,则当没有更多日志时,该方法将引发。should_tailStopIteration

  3. 不需要所有调度程序都支持。

  4. 一些调度器可能通过支持 line cursor(例如 寻找第 50 个对数行)。__getitem__iter[50]

  5. 保留空格,每个新行应包含 。自\n

    支持交互式进度条返回的行不需要 include 的 m,但随后应打印时不带换行符 正确处理回车。\n\r

参数

streams – 要选择的 IO 输出流。 其中之一: combined, stdout, stderr. 如果调度程序不支持所选流,它将 throw 一个 ValueError 的 Error。

结果

指定角色副本的 over log linesIterator

提升

NotImplementedError – 如果调度程序不支持日志迭代

scheduledryrun_info AppDryRunInfo[PopenRequest] str[源代码]

相同,只是它需要一个 . 鼓励实现者实现此方法,而不是 直接实现 since 可以很简单 实施者:submitAppDryRunInfosubmitsubmit

dryrun_info = self.submit_dryrun(app, cfg)
return schedule(dryrun_info)

图像提供程序

torchx.schedulers.local_scheduler 类ImageProvider[来源]

管理在 localhost 上下载和设置映像。这仅在 b2 中是必需的,因为通常真正的调度程序会执行此作 代表用户。LocalhostScheduler

抽象 fetch图片str str[来源]

拉取给定的图像并返回拉取的图像的路径 本地主机或空字符串(如果没有 OP)

fetch_rolerole Role str[来源]

与它获取角色的 image 并返回镜像根目录的路径,但 它允许此提供程序更新角色。有用 当需要在角色上设置其他环境变量时 为了遵守图片提供商的获取和管理方式 localhost 上的映像。默认情况下,此方法只是将 自。如有必要,请覆盖。fetch(image)fetch(role.image)

get_cwd图片str可选[str][来源]

返回已挂载的 img 目录的绝对路径。用作工作 目录中启动子进程。

get_entrypointimg_root: strrole 角色 str[来源]

返回入口点的位置。

get_replica_paramimg_root strrole 角色stdout 可选 [str] = stderr 可选[str] = 组合 可选[str] = None ReplicaParam[来源]

给定角色 replica 的 specs returns holder 其中包含最终要传递给的参数,以实际调用和运行每个角色的副本。预计 为 的返回值。 由于角色的镜像只需要获取一次(不是每个副本) 调用方应为每个角色调用一次方法 并为每个 .ReplicaParamsubprocess.Popenimg_rootself.fetch(role.image)fetchrole.num_replicas

torchx.schedulers.local_scheduler 类CWDImageProvidercfg LocalOpts[来源]

但是,与 LocalDirectoryImageProvider 类似,它会忽略映像名称和 使用当前工作目录作为映像路径。

例:

  1. fetch(Image(name="/tmp/foobar"))返回 os.getcwd()

  2. fetch(Image(name="foobar:latest"))返回 os.getcwd()

fetch图片str str[来源]

拉取给定的图像并返回拉取的图像的路径 本地主机或空字符串(如果没有 OP)

get_cwd图片str可选[str][来源]

返回已挂载的 img 目录的绝对路径。用作工作 目录中启动子进程。

get_entrypointimg_root: strrole 角色 str[来源]

返回入口点的位置。

torchx.schedulers.local_scheduler 类LocalDirectoryImageProvidercfg LocalOpts[来源]

将镜像名称解释为 本地主机。不 “获取” (例如 下载) 任何内容。结合使用 with 运行本地二进制文件。LocalScheduler

镜像名称必须是绝对路径,并且必须存在。

例:

  1. fetch(Image(name="/tmp/foobar"))返回/tmp/foobar

  2. fetch(Image(name="foobar"))提高ValueError

  3. fetch(Image(name="/tmp/dir/that/does/not_exist"))提高ValueError

fetch图片str str[来源]
提升

ValueError – 如果图像名称不是绝对目录,并且如果它 不存在或不是目录

get_cwd图片str可选[str][来源]

返回绝对工作目录。用作工作 目录中。

get_entrypointimg_root: strrole 角色 str[来源]

返回角色 entrypoint。当本地调度程序使用 image_type=dir,则 childprocess 工作目录将设置为 img_root。如果 role.entrypoint 是相对路径,则会解析 如 img_root/role.entrypoint,如果 role.entryPoint 为绝对路径, 它将按规定执行。

参考

torchx.schedulers.local_scheduler。create_schedulersession_name strcache_size int = 100extra_paths: 可选[List[str]] = None**kwargs Any LocalScheduler[来源]
torchx.schedulers.local_scheduler 类LogIteratorapp_id strlog_file: strscheduler 调度器should_tail: bool = True[来源]
torchx.schedulers.local_scheduler 类PopenRequestapp_id: strlog_dir strrole_params: Dict[str List[ReplicaParam]]role_log_dirs: Dict[str List[str]][来源]

保存参数以为每个角色的每个副本创建一个子流程 的应用程序。

torchx.schedulers.local_scheduler 类ReplicaParamargs List[str]env Dict[str str]stdout 可选 [str] = stderr 可选 [str] = 组合可选[str] = cwd可选[str] = [来源]

保存角色的每个副本的参数。LocalScheduler._popen()

torchx.schedulers.local_scheduler 类SignalExceptionmsg strsigval Signals[来源]

在运行时,当 torchx 本地调度程序进程时,会引发异常 收到终止信号。

文档

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

查看文档

教程

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

查看教程

资源

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

查看资源