捷徑

Docker

class torchx.schedulers.docker_scheduler.DockerScheduler(session_name: str)[來源]

基底: DockerWorkspaceMixinScheduler[DockerOpts]

DockerScheduler 是一個 TorchX 排程介面,用於 Docker。

這是透過排程器 local_docker 公開的。

此排程器使用 AppDef 中指定的映像,透過本機 Docker 執行階段執行提供的應用程式。必須安裝並執行 Docker。這提供了最接近原生使用 Docker 的排程器的環境,例如 Kubernetes。

備註

Docker 不提供群組排程機制。如果作業中的一個複本失敗,則只會重新啟動該複本。

設定選項

    usage:
        [copy_env=COPY_ENV],[env=ENV],[privileged=PRIVILEGED],[image_repo=IMAGE_REPO],[quiet=QUIET]

    optional arguments:
        copy_env=COPY_ENV (typing.List[str], None)
            list of glob patterns of environment variables to copy if not set in AppDef. Ex: FOO_*
        env=ENV (typing.Dict[str, str], None)
            environment variables to be passed to the run. The separator sign can be eiher comma or semicolon
            (e.g. ENV1:v1,ENV2:v2,ENV3:v3 or ENV1:V1;ENV2:V2). Environment variables from env will be applied on top
            of the ones from copy_env
        privileged=PRIVILEGED (bool, False)
            If true runs the container with elevated permissions. Equivalent to running with `docker run --privileged`.
        image_repo=IMAGE_REPO (str, None)
            (remote jobs) the image repository to use when pushing patched images, must have push access. Ex: example.com/your/container
        quiet=QUIET (bool, False)
            whether to suppress verbose output for image building. Defaults to ``False``.

掛載

此類別支援繫結掛載目錄和具名磁碟區。

  • 繫結掛載: type=bind,src=<主機 路徑>,dst=<容器 路徑>[,readonly]

  • 具名磁碟區: type=volume,src=<名稱>,dst=<容器 路徑>[,readonly]

  • 裝置: type=device,src=<名稱>[,dst=<容器 路徑>][,permissions=rwm]

如需更多資訊,請參閱 torchx.specs.parse_mounts()

功能

排程器支援

擷取日誌

✔️

分散式作業

✔️

取消作業

✔️

描述作業

部分支援。DockerScheduler 將傳回作業和複本狀態,但不會提供完整的原始 AppSpec。

工作區 / 修補

✔️

掛載

✔️

彈性

describe(app_id: str) Optional[DescribeAppResponse][來源]

描述指定的應用程式。

傳回值

AppDef 描述;如果應用程式不存在,則傳回 None

list() List[ListAppResponse][來源]

對於在排程器上啟動的應用程式,此 API 會傳回 ListAppResponse 物件清單,每個物件都包含應用程式 ID 及其狀態。備註:此 API 處於原型階段,可能會有所變更。

log_iter(app_id: str, role_name: str, k: int = 0, regex: Optional[str] = None, since: Optional[datetime] = None, until: Optional[datetime] = None, should_tail: bool = False, streams: Optional[Stream] = None) Iterable[str][原始碼]

傳回一個迭代器,指向 ``role`` ``k`` 副本 的日誌行。當所有符合條件的日誌行都已讀取完畢時,迭代器就會結束。

如果排程器支援基於時間的游標來擷取自訂時間範圍內的日誌行,則會採用 sinceuntil 欄位,否則會忽略它們。未指定 sinceuntil 等同於取得所有可用的日誌行。如果 until 為空,則迭代器的行為類似於 tail -f,會持續追蹤日誌輸出,直到作業達到終止狀態為止。

日誌的確切定義因排程器而異。有些排程器可能會將 stderr 或 stdout 視為日誌,而其他排程器可能會從日誌檔案中讀取日誌。

行為和假設

  1. 如果在不存在的應用程式上呼叫,則會產生未定義的行為。呼叫者應在呼叫此方法之前,使用 exists(app_id) 檢查應用程式是否存在。

  2. 不是狀態性的,使用相同參數呼叫此方法兩次會傳回一個新的迭代器。先前的迭代進度會遺失。

  3. 不保證支援日誌追蹤。並非所有排程器都支援即時日誌迭代(例如,在應用程式執行時追蹤日誌)。有關迭代器行為的詳細資訊,請參閱特定排程器的文件。

3.1 如果排程器支援日誌追蹤,則應由

should_tail 參數控制。

  1. 不保證日誌保留。當呼叫此方法時,基礎排程器可能已清除此應用程式的日誌記錄。如果是這樣,此方法會引發任意例外狀況。

  2. 如果 should_tail 為 True,則只有在可存取的日誌行已完全耗盡且應用程式已達到最終狀態時,此方法才會引發 StopIteration 例外狀況。例如,如果應用程式卡住且未產生任何日誌行,則迭代器會封鎖,直到應用程式最終被終止(透過逾時或手動),此時會引發 StopIteration

    如果 should_tail 為 False,則當沒有更多日誌時,此方法會引發 StopIteration

  3. 並非所有排程器都需要支援。

  4. 某些排程器可能會透過支援 __getitem__ 來支援行游標(例如,iter[50] 會搜尋到第 50 行日誌)。

  5. 空白會保留,每個新行都應包含 \n。若要

    支援互動式進度條,傳回的行不需要包含 \n,但接著應在沒有換行的情況下列印,才能正確處理 \r 歸位字元。

參數

streams – 要選擇的 IO 輸出串流。選項包括:combined、stdout、stderr。如果排程器不支援所選的串流,則會擲出 ValueError。

傳回值

指定角色副本的日誌行 Iterator

引發

NotImplementedError – 如果排程器不支援日誌迭代

schedule(dryrun_info: AppDryRunInfo[DockerJob]) str[原始碼]

submit 相同,但它會採用 AppDryRunInfo。建議實作者實作此方法,而不是直接實作 submit,因為 submit 可以透過以下方式輕鬆實作

dryrun_info = self.submit_dryrun(app, cfg)
return schedule(dryrun_info)
class torchx.schedulers.docker_scheduler.DockerJob(app_id: str, containers: List[torchx.schedulers.docker_scheduler.DockerContainer])[原始碼]

參考

torchx.schedulers.docker_scheduler.create_scheduler(session_name: str, **kwargs: Any) DockerScheduler[原始碼]
class torchx.schedulers.docker_scheduler.DockerContainer(image: str, command: List[str], kwargs: Dict[str, object])[原始碼]
torchx.schedulers.docker_scheduler.has_docker() bool[原始碼]

文件

訪問 PyTorch 的完整開發人員文檔

查看文檔

教學

獲取針對初學者和高級開發人員的深入教學

查看教學

資源

查找開發資源並獲得問題解答

查看資源