Ray¶
- 類別 torchx.schedulers.ray_scheduler.RayScheduler(session_name: str, ray_client: Optional[JobSubmissionClient] = None)[來源]¶
基底:
TmpDirWorkspaceMixin
,Scheduler
[RayOpts
]RayScheduler 是 TorchX 與 Ray 的排程介面。工作定義工作器將作為 Ray actor 啟動
工作環境由 TorchX 工作區指定。除非在
.torchxignore
中指定,否則工作區中的任何檔案都將出現在 Ray 工作中。Python 依賴項將從位於工作區根目錄的requirements.txt
檔案中讀取,除非透過-c ...,requirements=foo/requirements.txt
覆寫。配置選項
usage: [cluster_config_file=CLUSTER_CONFIG_FILE],[cluster_name=CLUSTER_NAME],[dashboard_address=DASHBOARD_ADDRESS],[requirements=REQUIREMENTS] optional arguments: cluster_config_file=CLUSTER_CONFIG_FILE (str, None) Use CLUSTER_CONFIG_FILE to access or create the Ray cluster. cluster_name=CLUSTER_NAME (str, None) Override the configured cluster name. dashboard_address=DASHBOARD_ADDRESS (str, 127.0.0.1:8265) Use ray status to get the dashboard address you will submit jobs against requirements=REQUIREMENTS (str, None) Path to requirements.txt
相容性
功能
排程器支援
擷取日誌
部分支援。Ray 只支援單一日誌串流,因此只支援虛擬的「ray/0」組合日誌角色。不支援尾隨和時間搜尋。
分散式工作
✔️
取消工作
✔️
描述工作
部分支援。RayScheduler 將返回工作狀態,但不會提供完整的原始 AppSpec。
工作區/修補
✔️
掛載
❌
彈性
部分支援。不支援多角色工作。
- describe(app_id: str) Optional[DescribeAppResponse] [來源]¶
描述指定的應用程式。
- 返回:
AppDef 描述,如果應用程式不存在,則返回
None
。
- list() List[ListAppResponse] [來源]¶
對於在排程器上啟動的應用程式,此 API 返回 ListAppResponse 物件清單,每個物件都包含應用程式 ID 及其狀態。注意:此 API 處於原型階段,可能會有所變更。
- log_iter(app_id: str, role_name: Optional[str] = None, 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
副本 日誌行的迭代器。當所有符合條件的日誌行都被讀取後,迭代器就會結束。如果排程器支援基於時間的游標來擷取自訂時間範圍內的日誌行,則會採用
since
、until
欄位,否則將會忽略這些欄位。未指定since
和until
等同於取得所有可用的日誌行。如果until
為空,則迭代器的行為類似於tail -f
,會持續追蹤日誌輸出,直到作業達到終止狀態為止。日誌的確切定義因排程器而異。某些排程器可能會將 stderr 或 stdout 視為日誌,而其他排程器可能會從日誌檔中讀取日誌。
行為和假設
如果針對不存在的應用程式呼叫,則會產生未定義的行為。呼叫者應在呼叫此方法之前,使用
exists(app_id)
檢查應用程式是否存在。非狀態性,使用相同參數呼叫此方法兩次會傳回新的迭代器。先前的迭代進度將會遺失。
不一定支援日誌追蹤。並非所有排程器都支援即時日誌迭代(例如,在應用程式執行時追蹤日誌)。如需迭代器行為的詳細資訊,請參閱特定排程器的文件。
- 3.1 如果排程器支援日誌追蹤,則應由
should_tail
參數控制。
不保證日誌保留。在呼叫此方法時,基礎排程器可能已清除此應用程式的日誌記錄。如果是這樣,此方法會引發任意例外狀況。
如果
should_tail
為 True,則此方法只會在可存取的日誌行已完全用盡且應用程式已達到最終狀態時,才會引發StopIteration
例外狀況。例如,如果應用程式卡住且未產生任何日誌行,則迭代器會封鎖,直到應用程式最終被終止(透過逾時或手動方式),此時會引發StopIteration
。如果
should_tail
為 False,則此方法會在沒有更多日誌時引發StopIteration
。並非所有排程器都需要支援。
某些排程器可能支援透過
__getitem__
來支援行游標(例如,iter[50]
會搜尋到第 50 行日誌)。- 空格會被保留,每個新行都應包含
\n
。為了 支援互動式進度條,傳回的行不需要包含
\n
,但接著應在沒有換行的情況下列印,才能正確處理\r
歸位字元。
- 空格會被保留,每個新行都應包含
- 參數:
streams – 要選取的 IO 輸出串流。選項包括:combined、stdout、stderr。如果排程器不支援所選的串流,則會擲回 ValueError 例外狀況。
- 返回:
指定角色副本日誌行的
Iterator
- 引發:
NotImplementedError – 如果排程器不支援日誌迭代
- torchx.schedulers.ray_scheduler.create_scheduler(session_name: str, ray_client: Optional[JobSubmissionClient] = None, **kwargs: Any) RayScheduler [原始碼]¶
- torchx.schedulers.ray_scheduler.serialize(actors: List[RayActor], dirpath: str, output_filename: str = 'actors.json') None [原始碼]¶
- 類別 torchx.schedulers.ray_scheduler.RayJob(app_id: str, working_dir: str, cluster_config_file: ~typing.Optional[str] = None, cluster_name: ~typing.Optional[str] = None, dashboard_address: ~typing.Optional[str] = None, requirements: ~typing.Optional[str] = None, actors: ~typing.List[~torchx.schedulers.ray.ray_common.RayActor] = <factory>)[原始碼]¶
代表應該在 Ray 叢集上執行的作業。
- 變數:
app_id (str) – 應用程式的唯一 ID(亦即作業)。
cluster_config_file (Optional[str]) – Ray 叢集設定檔。
cluster_name (Optional[str]) – 要使用的叢集名稱。
dashboard_address (Optional[str]) – 要連線到的現有儀表板 IP 位址
working_dir (str) – 要複製到叢集的工作目錄
requirements (Optional[str]) – 要根據 requirements.txt 在叢集上安裝的程式庫
actors (List[torchx.schedulers.ray.ray_common.RayActor]) – 代表要執行的作業的 Ray actor。這個屬性會傾印到 JSON 檔案並複製到叢集,其中 ray_main.py 會使用它來啟動作業。