捷徑

IBM Spectrum LSF

這包含 TorchX LSF 排程器,可用於在 LSF 叢集上執行 TorchX 元件。

此排程器處於原型階段,如有變更恕不另行通知。如果您遇到任何問題或有任何意見,請提交問題。

先決條件

您需要一個現有的 LSF 叢集來執行您的作業,或者個人可以安裝 LSF Community Edition。

如需更多詳細資訊,請參閱 LSF 文件:https://www.ibm.com/docs/en/cloud-private/3.2.x?topic=paks-spectrum-lsf-community-edition

類別 torchx.schedulers.lsf_scheduler.LsfScheduler(session_name: str)[原始碼]

基底:Scheduler[LsfOpts]

範例:hello_world

$ torchx run -s lsf -cfg jobdir=/mnt/data/torchx utils.echo --image alpine:latest --msg hello_world --num_replicas 3
...

範例:Gloo

$ cp dist_app.py /mnt/data/dist/
$ torchx run -s lsf -cfg "jobdir=/mnt/data/torchx,host_network=True" dist.ddp -j 2x2 --gpu 2           --script /data/dist_app.py --mount "type=bind,src=/mnt/data/dist,dst=/data"
...

設定選項

    usage:
        [lsf_queue=LSF_QUEUE],[jobdir=JOBDIR],[container_workdir=CONTAINER_WORKDIR],[host_network=HOST_NETWORK],[shm_size=SHM_SIZE]

    optional arguments:
        lsf_queue=LSF_QUEUE (str, None)
            queue name to submit jobs
        jobdir=JOBDIR (str, None)
            The directory to place the job code and outputs. The directory must not exist and will be created.
        container_workdir=CONTAINER_WORKDIR (str, None)
            working directory in container jobs
        host_network=HOST_NETWORK (bool, False)
            True if using the host network for jobs
        shm_size=SHM_SIZE (str, 64m)
            size of shared memory (/dev/shm) for jobs

相容性

功能

排程器支援

擷取日誌

✔️

分散式作業

✔️

取消作業

✔️

描述作業

LsfScheduler 將返回作業。

工作區 / 修補

掛載

✔️

彈性

待修正

  • 在 host_network=False 時,任務無法解析靜態名稱,例如 /etc/hosts(容器無法在沒有主機網路的情況下到達它)

  • 映像下載應該是分開的作業

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[LsfBsub]) str[來源]

submit 相同,但它需要一個 AppDryRunInfo。鼓勵實作者實作此方法,而不是直接實作 submit,因為 submit 可以透過以下方式簡單地實作:

dryrun_info = self.submit_dryrun(app, cfg)
return schedule(dryrun_info)
class torchx.schedulers.lsf_scheduler.LsfBsub(jobdir: Union[str, NoneType], app_id: str, app: torchx.specs.api.AppDef, cfg: torchx.schedulers.lsf_scheduler.LsfOpts, cmd: List[str])[來源]

參考

torchx.schedulers.lsf_scheduler.create_scheduler(session_name: str, **kwargs: Any) LsfScheduler[來源]

文件

取得 PyTorch 的完整開發人員文件

查看文件

教學課程

取得適用於初學者和進階開發人員的深入教學課程

查看教學課程

資源

尋找開發資源並取得問題解答

查看資源