(beta) .torchxconfig 文件¶
你可以通过将调度器运行配置(运行配置)存储在.torchxconfig文件中来为项目保存这些配置。
目前,此文件仅在从CLI运行组件时被读取和使用。
命令行接口使用方法¶
cd文件放入您希望.torchxconfig文件被放置的目录中。 命令行界面只会从当前工作目录 (CWD) 中获取.torchxconfig文件, 因此请选择一个您通常运行torchx的目录。通常这是您的项目根目录。通过运行生成配置文件
$ torchx configure -s <comma,delimited,scheduler,names> # -- or for all registered schedulers -- $ torchx configure
如果你指定了
-s local_cwd,kubernetes,你应该会看到一个.torchxconfig文件,如下所示:$ cat .torchxconfig [local_cwd] [kubernetes] queue = #FIXME:(str) Volcano queue to schedule job in
.torchxconfig在INI格式中,且部分名称映射到调度器名称。 每个部分包含调度器的运行配置为$key = $value对。 您可能会发现某些调度器的部分为空,这意味着 调度器为其所有运行配置定义了合理的默认值,因此在运行时不需要指定运行配置。如果您想覆盖默认值,可以添加它们。 提示: 要查看调度器的所有运行选项,请使用torchx runopts <scheduler_name>。带有
FIXME占位符的部分是调度器所需的运行配置。请用适用于您的值进行替换。重要: 如果您对特定运行配置提供的调度器默认值感到满意,您 不应 在
.torchxconfig中冗余地指定它们,因为调度器可能会在稍后决定更改默认值,这会使您留下过时的默认值。现在你可以运行你的组件而无需每次都指定调度器的运行配置。只需确保你运行
torchxcli 的目录实际上 包含.torchxconfig!$ ls .torchxconfig .torchxconfig $ torchx run -s local_cwd ./my_component.py:train
程序化用法¶
与命令行界面不同,.torchxconfig 文件 不会自动 从 CWD 中加载
如果你正在通过编程方式运行你的组件,并使用 torchx.runner.Runner。
你将需要手动指定包含 .torchxconfig 的目录。
以下是示例内容,请提供需要翻译的具体文本。
from torchx.runner import get_runner
from torchx.runner.config import apply
import torchx.specs as specs
def my_component(a: int) -> specs.AppDef:
# <... component body omitted for brevity ...>
pass
scheduler = "local_cwd"
cfg = {"log_dir": "/these/take/outmost/precedence"}
apply(scheduler, cfg, dirs=["/home/bob"]) # looks for /home/bob/.torchxconfig
get_runner().run(my_component(1), scheduler, cfg)
您还可以指定多个目录(按前序排列),这在您希望将个人配置覆盖置于项目定义的默认设置之上时很有用。
配置API函数¶
- torchx.runner.config.apply(scheduler: str, cfg: Dict[str, Optional[Union[str, int, float, bool, List[str]]]], dirs: Optional[List[str]] = None) → None[source]¶
从指定目录按顺序加载一个
.torchxconfigINI 文件,并将其运行配置应用于给定的cfg。如果没有指定
dirs,那么它将在当前工作目录中查找.torchxconfig。如果指定的目录中没有.torchxconfig,则会被忽略。注意,给定的
cfg中已有的配置优先于配置文件中的配置,并且只会添加新的配置。按列表顺序加载的配置也是如此。例如,如果
cfg={"foo":"bar"}并且配置文件为:# dir_1/.torchxconfig [local_cwd] foo = baz hello = world # dir_2/.torchxconfig [local_cwd] hello = bob
然后在方法调用之后,
cfg={"foo":"bar","hello":"world"}。
- torchx.runner.config.load(scheduler: str, f: TextIO, cfg: Dict[str, Optional[Union[str, int, float, bool, List[str]]]]) → None[source]¶
加载配置文件
[{scheduler}]中的节f(.INI 格式)到提供的runcfg中,只添加当前不在给定runcfg中的配置(例如不会覆盖runcfg中现有的值)。如果未找到节,则不执行任何操作。
- torchx.runner.config.dump(f: TextIO, schedulers: Optional[List[str]] = None, required_only: bool = False) → None[source]¶
将包含给定调度器名称的 :py:class:torchx.specs.runopts 的默认 INI 风格配置模板转储到由
f指定的文件对象中。 如果没有指定schedulers,则转储所有已知注册的调度器。可选运行选项已使用其默认值预填。 必填运行选项设置为
FIXME: ...占位符。 仅要导出必填运行选项,请传递required_only=True。每个调度器的运行选项都写在称为
[{scheduler_name}]的部分中。例如:
[kubernetes] namespace = default queue = #FIXME (str)Volcano queue to schedule job in
- Raises
ValueError – 如果给定的调度器名称未知