torchx.runner 中¶
- torchx.runner 中。get_runner(名称: 可选[str] = 无, **scheduler_params: 任意) → torchx.runner.api.Runner[来源]¶
构造和获取 Runner 对象的便捷方法。
- 类 torchx.runner 中。Runner(名称:str,调度程序:Dict[str, torchx.schedulers.api.Scheduler],wait_interval: int = 10)[来源]¶
Torchx 单个组件运行程序。具有用户 作用于 。是有状态的,并且 表示用户的逻辑工作区。它可以由服务提供支持 (例如 Torchx 服务器)用于持久化,也可以是独立无持久化 这意味着 仅在托管期间持续 进程(请参阅 API 以获取有关重新设置应用程序父级的说明 在会话之间)。
AppDefs
Runner
Runner
attach()
- describe(app_handle: str) → 可选[torchx.specs.api.AppDef][源代码]¶
在给定应用程序句柄的情况下(在最佳程度上)重建应用程序。 请注意,重建的应用程序可能不是完整的应用程序 它是通过 run API 提交的。可以重建多少应用程序 取决于调度程序。
- 返回
AppDef 或 None(如果应用程序不再存在,或者如果 scheduler 不支持描述 app 句柄
- dryrun(app: torchx.specs.api.AppDef, scheduler: str = 'default', cfg: 可选[torchx.specs.api.RunConfig] = 无)→ torchx.specs.api.AppDryRunInfo[来源]¶
Dry 使用提供的运行配置在给定的调度器上运行应用程序。 实际上并未提交应用程序,而是返回本应提交的内容 提交。返回的 is formatted and can 直接打印或记录。
AppDryRunInfo
用法:
dryrun_info = session.dryrun(app, scheduler="local", cfg) print(dryrun_info)
- list() → Dict[str, torchx.specs.api.AppDef][来源]¶
返回使用应用程序句柄映射的此会话运行的应用程序。 会话的持久性取决于实现。
- log_lines(app_handle: str, role_name: str, k: int = 0, regex: 可选[str] = 无,因为:可选[datetime.datetime] = 无,直到: 可选[datetime.datetime] = None, should_tail: bool = false) → Iterable[str][源代码]¶
返回指定作业容器的日志行的迭代器。
注意
k
是节点(主机)ID 而不是 .rank
since
并且不需要总是遵守 (取决于 scheduler)。until
警告
返回的迭代器的语义和保证是高度的 依赖于 scheduler。有关此日志迭代器的高级语义,请参见。因此 强烈建议不要使用此方法生成输出 传递给下游函数/依赖项。此方法 不保证返回 100% 的日志行。 此方法返回 no 或 partial log 行是完全有效的 如果调度程序已完全或部分清除日志记录 对于应用程序。
torchx.specs.api.Scheduler.log_iter
用法:
app_handle = session.run(app, scheduler="local", cfg=RunConfig()) print("== trainer node 0 logs ==") for line in session.log_lines(app_handle, "trainer", k=0): print(line)
不鼓励的反模式:
# DO NOT DO THIS! # parses accuracy metric from log and reports it for this experiment run accuracy = -1 for line in session.log_lines(app_handle, "trainer", k=0): if matches_regex(line, "final model_accuracy:[0-9]*"): accuracy = parse_accuracy(line) break report(experiment_name, accuracy)
- 参数
app_handle – 应用程序句柄
role_name – 应用程序中的角色(例如,培训师)
k – 要获取其日志的角色的第 k 个副本
regex – 可选的正则表达式过滤器,如果留空,则返回所有行
Since – 基于日期时间的开始游标。如果留空,则从 第一行日志 (Job 开始)。
until – 基于日期时间的结束游标。如果留空,则遵循日志输出 直到作业完成并且所有日志行都已用完。
- 返回
指定应用程序的角色第 k 个副本的迭代器。
- 提高
UnknownAppException – 如果计划程序中不存在该应用程序
- run(app: torchx.specs.api.AppDef, scheduler: str = 'default', cfg: 可选[torchx.specs.api.RunConfig] = 无) → str[源]¶
在指定模式下运行给定的应用程序。
注意
应该实现方法的子类 而不是直接覆盖此方法。
Session
schedule
- 返回
用于在应用程序上调用其他作 API 的应用程序句柄。
- 提高
AppNotReRunnableException – 如果会话/计划程序不支持重新运行附加的应用程序
- run_component(component_name: str, app_args: List[str], scheduler: str = 'default', cfg: 可选[torchx.specs.api.RunConfig] = None, dryrun: bool = False) → Union[str, torchx.specs.api.AppDryRunInfo][来源]¶
在指定模式下解析并运行应用程序。
根据指定模式检索应用程序并运行应用程序。
component_name
- 的分辨率顺序如下(从高 pri 到低 pri):
component_name
- 用户注册的组件。用户可以通过
https://packaging.python.org/specifications/entry-points/。方法查找 组中的入口点。
torchx.components
- 相对于 torchx.components 的内置组件。组件的路径应
是相对于 torchx.components 的模块名称和函数名称,格式为: 。
$module.$function
- 格式为: .relative 和
$FILE_PATH:FUNCTION_NAME
支持的绝对路径。
- 格式为: .relative 和
用法:
runner.run_component("distributed.ddp", ...) - will be resolved to ``torchx.components.distributed`` module and ``ddp`` function. runner.run_component("~/home/components.py:my_component", ...) - will be resolved to ``~/home/components.py`` file and ``my_component`` function.
- 参数
component_name – 要查找的组件的名称
app_args – 组件函数的参数
scheduler – 执行组件的调度程序
cfg – 计划程序运行配置
dryrun – 如果为 True,则返回
torchx.specs.AppDryRunInfo
- 返回
一个应用程序句柄,用于在应用程序上调用其他作 API,或者如果指定了 dryrun。
<NONE>
- 提高
AppNotReRunnableException – 如果会话/计划程序不支持重新运行附加的应用程序
ValueError – 如果 无法解决。
component_name
- 的分辨率顺序如下(从高 pri 到低 pri):
- run_opts() → Dict[str, torchx.specs.api.runopts][来源]¶
返回支持的调度程序后端的 。
runopts
用法:
local_runopts = session.run_opts()["local"] print("local scheduler run options: {local_runopts}")
- 返回
调度程序后端到其
runopts
- schedule(dryrun_info: torchx.specs.api.AppDryRunInfo) → str[来源]¶
实际上,从给定的 dryrun 信息运行应用程序。 当需要覆盖调度器中的参数时很有用 请求,该请求无法从其中一个对象 API 进行配置。
警告
谨慎使用,因为滥用此方法来覆盖 原始调度程序请求中的许多参数可能会 导致您对 TorchX 的使用不合规 从长远来看。此方法旨在 取消阻止用户尝试某些 短期内没有 Scheduler 特定的功能 必须等到 TorchX 公开调度器功能 在其 API 中。
注意
建议 的子类实现 此方法,而不是直接实现该方法。
Session
run
用法:
dryrun_info = session.dryrun(app, scheduler="default", cfg) # overwrite parameter "foo" to "bar" dryrun_info.request.foo = "bar" app_handle = session.submit(dryrun_info)
- scheduler_backends() → List[str][来源]¶
返回所有支持的调度程序后端的列表。 所有会话实现都必须支持 “default” scheduler 后端并记录默认的 scheduler 是。
- status(app_handle: str) → 可选[torchx.specs.api.AppStatus][来源]¶
- 返回
应用程序的状态,或者应用程序是否不再存在 (例如,在过去停止并从调度器的后端中删除)。
None
- stop(app_handle: str) → None[来源]¶
停止应用程序,有效地指示调度程序取消 工作。如果应用程序不存在,则不执行任何作。
注意
此方法在取消请求后立即返回 已提交到调度程序。应用程序将处于某种状态,直到调度程序实际终止 工作。如果调度程序成功中断作业 并终止它,则最终状态将为 ,否则它将是 。
RUNNING
CANCELLED
FAILED
- wait(app_handle: str) → 可选[torchx.specs.api.AppStatus][来源]¶
Block (无限期) 等待应用程序完成。 可能的实现方式:
while(True): app_status = status(app) if app_status.is_terminal(): return sleep(10)
- 返回
应用程序的终端状态,或者应用程序是否不再存在
None