捷徑

GCP Batch

這包含 TorchX GCP Batch 排程器,可用於直接在 GCP Batch 上執行 TorchX 元件。

此排程器處於原型階段,如有變更恕不另行通知。

先決條件

您需要啟用並設定 GCP 專案才能使用 Batch。請參閱 https://cloud.google.com/batch/docs/get-started#prerequisites

類別 torchx.schedulers.gcp_batch_scheduler.GCPBatchScheduler(session_name: str, client: Optional[Any] = None)[原始碼]

基底: Scheduler[GCPBatchOpts]

GCPBatchScheduler 是一個 TorchX 與 GCP Batch 的排程介面。

$ pip install torchx[gcp_batch]
$ torchx run --scheduler gcp_batch utils.echo --msg hello
# This launches a job with app handle like gcp_batch://torchx/project:location:app_id1234 and prints it
$ torchx status gcp_batch://torchx/project:location:app_id1234
...

驗證是使用 gcloud 憑證處理從環境載入的。

設定選項

    usage:
        [project=PROJECT],[location=LOCATION]

    optional arguments:
        project=PROJECT (str, None)
            Name of the GCP project. Defaults to the configured GCP project in the environment
        location=LOCATION (str, us-central1)
            Name of the location to schedule the job in. Defaults to us-central1

相容性

功能

排程器支援

擷取日誌

✔️

分散式作業

✔️

取消作業

✔️

描述作業

✔️

工作區/修補

掛載

彈性

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][原始碼]

傳回 k``th ``role 副本的日誌行的迭代器。當所有符合條件的日誌行都被讀取後,迭代器就會結束。

如果排程器支援基於時間的游標擷取自訂時間範圍內的日誌行,則會採用 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 – 如果排程器不支援日誌迭代

run_opts() runopts[來源]

返回排程器期望的執行配置選項。基本上是 run API 的 --help

schedule(dryrun_info: AppDryRunInfo[GCPBatchJob]) str[來源]

submit 相同,只是它需要一個 AppDryRunInfo。鼓勵實作者實現此方法,而不是直接實現 submit,因為 submit 可以通過

dryrun_info = self.submit_dryrun(app, cfg)
return schedule(dryrun_info)
class torchx.schedulers.gcp_batch_scheduler.GCPBatchJob(name: str, project: str, location: str, job_def: 'batch_v1.Job')[來源]

參考

torchx.schedulers.gcp_batch_scheduler.create_scheduler(session_name: str, client: Optional[Any] = None, **kwargs: object) GCPBatchScheduler[來源]

文件

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

檢視文件

教學課程

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

檢視教學課程

資源

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

檢視資源