總覽¶

備註
以上圖表僅供說明之用。並非所有方塊目前都可立即使用。
此模組包含一組內建的 TorchX 元件。目錄結構按元件類別組織。元件只是範本化的應用程式規格。將它們視為不同類型作業定義的工廠方法。在此模組中傳回 specs.AppDef
的函數就是我們所說的元件。
您可以瀏覽 torchx.components
模組或我們的 文件頁面 中的元件庫。
使用內建元件¶
找到內建元件後,您可以:
將元件作為作業執行
在工作流程 (管道) 的環境中使用元件
在這兩種情況下,元件都將作為作業執行,不同之處在於作業將作為獨立作業直接在排程器上執行,或者作為具有上游和/或下游相依性的工作流程中的「階段」執行。
備註
根據元件的語義,作業可以是單節點或分散式的。例如,如果元件具有單一角色,其中 role.num_replicas == 1
,則該作業是單節點作業。如果元件具有多個角色和/或任何角色的 num_replicas > 1
,則該作業是多節點分散式作業。
不確定應該將元件作為作業執行還是作為管道階段執行?使用以下經驗法則
剛開始使用?透過將元件作為作業執行來熟悉元件
需要作業相依性?將元件作為管道階段執行
不需要作業相依性?將元件作為作業執行
驗證¶
若要驗證您是否正確定義了元件,您可以:
(最簡單的方法)使用 cli 執行元件的
--help
測試執行:torchx run --dryrun ~/component.py:train --help
使用元件 linter(請參閱 dist_test.py 範例)
作為作業執行¶
您可以使用 torchx cli 將元件作為作業執行,也可以使用 torchx.runner 以程式設計方式執行。兩者是相同的,事實上,cli 在底層使用了 runner,所以您可以自由選擇。 快速入門 指南將引導您完成入門的基本知識。
程式設計執行¶
若要以程式設計方式執行內建元件或您自己的元件,只需將元件作為一般的 Python 函數呼叫,並將其傳遞給 torchx.runner
。以下是一個呼叫 utils.echo
內建元件的範例
from torchx.components.utils import echo
from torchx.runner import get_runner
get_runner().run(echo(msg="hello world"), scheduler="local_cwd")
CLI 執行(內建元件)¶
從命令列執行元件時,您必須傳遞要呼叫的元件函數。對於內建元件,格式為 {component_module}.{component_fn}
,其中 {component_module}
是元件相對於 torchx.components
的模組路徑,而 {component_fn}
是該模組中的元件函數。因此,對於 torchx.components.utils.echo
,我們會刪除 torchx.components
前綴並將其執行為
$ torchx run utils.echo --msg "hello world"
有關更多資訊,請參閱CLI 文件。
CLI 執行(自訂)¶
若要使用 CLI 執行自訂元件,您必須使用格式略有不同的語法 {component_path}:{component_fn}
。其中,{component_path}
是元件 Python 檔案的檔案路徑,而 {component_fn}
是該檔案中元件函數的名稱。假設您的元件位於 /home/bob/component.py
中,且元件函數稱為 train()
,則您將如下執行它
# option 1. use absolute path
$ torchx run /home/bob/component.py:train --help
# option 2. let the shell do the expansion
$ torchx run ~/component.py:train --help
# option 3. same but after CWD to $HOME
$ cd ~/
$ torchx run ./component.py:train --help
# option 4. files can be relative to CWD
$ cd ~/
$ torchx run component.py:train --help
備註
如果您知道 TorchX 的安裝目錄,則也可以透過這種方式執行內建元件!
從 CLI 傳遞元件參數¶
由於元件只是 Python 函數,因此以程式設計方式使用它們非常簡單。如上所示,當透過 CLI 的 run
子命令執行元件時,元件參數會使用雙破折號 + 參數名稱語法(例如 --param1=1
或 --param1 1
)作為程式引數傳遞。CLI 會根據元件的說明字串自動產生 argparse 解析器。以下是關於如何傳遞各種類型的元件參數的摘要,假設元件的定義如下
# in comp.py
from typing import Dict, List
import torchx.specs as specs
def f(i: int, f: float, s: str, b: bool, l: List[str], d: Dict[str, str], *args) -> specs.AppDef:
"""
Example component
Args:
i: int param
f: float param
s: string param
b: bool param
l: list param
d: map param
args: varargs param
Returns: specs.AppDef
"""
pass
說明:
torchx run comp.py:f --help
基本類型(
int
、float
、str
):torchx run comp.py:f --i 1 --f 1.2 --s "bar"
布林值:
torchx run comp.py:f --b True
(或--b False
)映射:
torchx run comp.py:f --d k1=v1,k2=v2,k3=v3
清單:
torchx run comp.py:f --l a,b,c
VAR_ARG:
*args
作為位置引數而非引數傳遞,因此它們在命令的末尾指定。--
分隔符號用於開始 VAR_ARGS 區段。當元件和應用程式具有相同的引數或傳遞--help
引數時,這非常有用。以下是幾個範例:**args=["arg1", "arg2", "arg3"]
:torchx run comp.py:f --i 1 arg1 arg2 arg3
**args=["--flag", "arg1"]
:torchx run comp.py:f --i 1 --flag arg1 `` * ``*args=["--help"]
:torchx run comp.py:f -- --help
**args=["--i", "2"]
:torchx run comp.py:f --i 1 -- --i 2
在管道中執行¶
torchx.pipelines 定義了將 torchx 元件轉換為表示目標管道平台中管道「階段」的物件的轉接器(支援的管道協調器清單請參閱管道)。
其他資源¶
請參閱