Job Submission
Job
我們有時會需要批次完成特定工作。特別是需要長時間運算的工作,使用者又無法一直監視著整個過程的時候,我們可以利用Job Submission
創建一個Job
把工作指令項目批次地加入,再將Job
送出於背景執行,隨時地監視執行的過程及結果。如果我們想要的是週期性自動發動的job
,我們可以利用 Job Scheduler 來創建這類型 job 及設定其週期性。
Lifetime
job
最長可以執行 24 個小時。一旦超過 24 小時後,會被中止宣告失敗。結束
job
的工作日誌基本上會被保留 7 天;超過 7 天後,job
還是會在列表中,但Logs
資訊會被刪除;另外,結束job
預設只會保留 30 天,30 天後會從列表及系統中移除。由於 Job 容器有可能提早被其執行環境給回收,因此
Logs
有可能在 7 天內被刪除。
Job 列表
此頁列出已創建 Jobs 及其對應資訊。
列表中的Job
對應資訊欄位:
欄位 | 描述 |
---|---|
Status | 狀態, Pending , Preparing , Running , Failed , Succeeded 及 Cancelled |
Job name | 名稱 |
Schedule | 如果此 Job 是被 scheduler 根據排程時間發動的話,這裡會顯示 Scheduler 名稱;反之顯示- 。 |
User | 所有者 |
Group | 所屬群組 |
Timing | 執行時間 |
Action | 我們可以
|
New Job
: 點擊按鈕,創建job
。Refresh
: 點擊按鈕,刷新job
列表。Job name
link: 點擊名稱連結,進入 Job 詳細頁。Schedule
link: 點擊名稱連結,進入 Job Scheduler 詳細頁。Submitted by Me
勾選,只列出該使用者創建的job
。Search job name
關鍵字搜尋。
創建 Job
請確認目前預先決定的專案群組,是否為設想的群組;切換專案群組請用下拉選單 Group:
。
InstanceTypes
: 選擇job
所需instance type
資源佈屬。Images
: 選擇job
的執行環境。Job name
: 指定job
名稱。Command
: 指定job
批次工作項目。
Command
使用者可以在任務內執行 sudo apt <command>
安裝軟體套件。
例如:
sudo apt update
sudo apt install <package> --assume-yes
pip install <package>
Job 可存取工作目錄、專案目錄及資料集目錄
注意:Job 的預設路徑是在
/home/jovyan
,但這是在 Job Pod 裡的環境,不是 JupyterHub Pod 裡! 所以 JupyterHub/home/jovyan
下的其它檔案並 不存在 此時的 Job Pod 的/home/jovyan
。Job 這裡只會有掛載的<group volume>
及<dataset>
。
目錄 | 描述 |
---|---|
/home/jovyan | job 執行時的暫存工作目錄。注意: 如果輸出 data 於此,此 data 將會著job 結束而消失,只能做為暫存之用。 不再是/workingdir |
/home/jovyan/<group> -> /project/<group>/ | 用此路徑(或 Symbolic link),存取群組目錄,可以做為讀取及輸出常態性資料,即使job 已經結束。注意: group volume 必須要事存在,請洽系統管理員。 |
/home/jovyan/datasets/<dataset> -> /datasets/<dataset> | 用此路徑(或 Symbolic link),存取群組資料集。注意: dataset volume 必須要事先存在,請洽系統管理員。 |
Job 可存取環境變數
變數名稱 | 描述 |
---|---|
$PRIMEHUB_USER | Job 所有者 |
$PRIMEHUB_GROUP | Job 所屬群組 |
Python command option
python -u
我們可以用-u
強制輸出訊息不經由緩衝,如此可以在Logs
看到即時訊息。 Example 1: 假設train_mint.py
事先存在名叫research
的group volume
,我們可以進/project/research
下,執行該 python file 做為一個job
。job
執行期間輸出的 data 則存在此路徑的相對位置。
cd /project/research/
python -u train_minst.py
Example 2: 如果我們直接執行下列指令,沒有變更路徑,job
的工作目錄位在/home/jovyan
job 執行期間輸出的 data 則會存在此路徑的相對位置。但此為暫存目錄,換而言之, 輸出在/home/jovyan
的 data 資料會隨著job
結束而消失。
python -u /project/research/train_minst.py
Submit
: 點擊按鈕,送出工作執行。
查看 Job
在列表上點擊想要查看的job
名稱,查看內容資訊及執行記錄;可以Rerun
或Clone
此 Job。
Panel
It shows the brief information of the job.
Field | Description |
---|---|
Status | 狀態,Pending ,Preparing , Running , Failed , Succeeded 及 Cancelled |
Duration | 執行時間 |
Finished | 多久前結束 |
Schedule | 如果此 Job 是被 scheduler 根據排程時間發動的話,這裡會顯示 Scheduler 名稠;反之顯示- ;點擊名稱連結,進入 Job Scheduler 詳細頁。 |
User | 所有者 |
Tabs
Information
Job
記載內容資訊如下:
Field | Description |
---|---|
Message | 執行回傳訊息 |
Job ID | ID |
Job name | 名稱 |
Creation Time | 創建時間 |
Start Time | 開始時間 |
Finished Time | 結束時間 |
Group | 所屬群組 |
Instance type | 所佈屬 instance type 資源 |
Image | 所屬執行環境 |
Command | 批次工作項目內容 |
Artifacts
如果工作在執竹的過程中有產出資料 (Artifacts) 存放在 artifacts/
,這裡會列舉出在此 PHFS 儲存空間 下的所有檔案;同時,在 Notebook 裡這些 artifacts 是位在此路徑 /phfs/jobArtifacts/job-xxxxx
。請參照 Job Artifacts 初階範例。
Monitoring
此功能需要 PHFS 開啟;當 PHFS 功能未開啟時,顯示訊息 "feature not enabled, please contact admin".
監測表顯示此 Job 所用到的資源。
15 mins
,1 hour
,3 hours
,Lifetime
: 選擇「最近時間區間內」顯示的數據; 15mins 顯示最近 15 分內的數據, Lifetime 顯示從開始到結束的數據。Overall Usage
: CPU 及 Memory(MB).GPU Device Usage
: 當此 Job 有配置到 GPU 時才顯示 GPU 及 Memory(MB)。
Logs
預設此頁只顯示最新的 2000 行資訊;按下
Download
下載完整記錄。
當工作執行「成功」或「失敗」,我們可以由此查看整個執行過程、結果、甚至除錯。
當工作是被「取消」或「中止」,無法由此查到任何記錄!因為此時的 Pod 已被刪除回收。
有時,我們只想看最後的輸出結果,可以點擊Scroll to Bottom
跳過攏長記錄直接到記錄尾端。
另外,由於介面上只顯示最後的 2000 行記錄,我們可以點擊Download
下載完整的記錄檔來檢查。