本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
進階資源組態
使用 omicsResourceFallbackOrder指令,您可以為工作流程中的任務宣告資源 (例如加速器和 CPU) 設定檔的排序清單。您可以在任務層級指定此指令。HealthOmics 會依您指定的順序搜尋每個設定檔,以保留可用性。如果在等待逾時內無法使用容量,HealthOmics 會移至清單中的下一個資源設定檔。
當您偏好的加速器容量 (例如 G6e 搭配 nvidia-l40s) 無法使用,而且您寧願回到不同的加速器類型或 CPU,也不想讓執行失敗時,這很有用。
運作方式
-
您可以在 omicsResourceFallbackOrder指令中定義資源描述檔的排序清單。
-
在執行時間,HealthOmics 會嘗試為清單中的第一個設定檔保留容量。
-
如果在等待逾時期間內無法使用容量,HealthOmics 會移至下一個設定檔。
-
任務會先於任何設定檔成功執行。
-
如果清單中的所有設定檔都失敗,任務會失敗,原因為
ALL_PROFILES_INSTANCE_RESERVATION_FAILED。當所有設定檔都無法使用時,不會套用任何引擎重試。
注意
omicsResourceFallbackOrder 會取代任務的一般 acceleratorType、acceleratorCount、memory、 cpu和 omicsResourceWaitTimeoutInMin 欄位。當指令存在時,這些不得在頂層設定。
使用案例
| 案例 | 說明 |
|---|---|
| GPU 對 GPU 備用 | 依優先順序列出加速器 (或 GPU) 類型。例如,nvidia-l40s請先嘗試,然後返回 nvidia-l4。如果跨加速器類型的工作負載相同,則不需要變更命令。 |
| GPU 到 CPU 備用 | 新增只acceleratorType省略 CPU 後端的最終設定檔。使用 AWS_HEALTHOMICS_RESOURCE_TYPE環境變數,依資源類型分支命令。 |
任務層級執行時間欄位
使用 時omicsResourceFallbackOrder,任務層級執行期欄位分為兩組:
-
每個設定檔欄位 (acceleratorType、acceleratorCount、cpu、memory、omicsResourceWaitTimeoutInMin) — 可針對清單中的每個設定檔獨立設定。
-
共用欄位 (所有其他執行時間欄位,例如 docker、maxRetries) — 在頂層設定一次,並對每個設定檔套用相同的方式。
WDL 範例
下列 WDL 任務會nvidia-l40s先搜尋 (等待容量最多 45 分鐘),然後 nvidia-l4(預設等待時段),如果沒有可用的加速器類型,則會回到僅限 CPU 設定檔 (32 vCPUs,128 GiB)。
task align { command <<< # Branch based on which resource type was allocated if [ "$AWS_HEALTHOMICS_RESOURCE_TYPE" = "cpu" ]; then sentieon bwa mem -t 32 ~{reference} ~{fastq} else pbrun fq2bam --ref ~{reference} --in-fq ~{fastq} fi >>> runtime { docker: "my-registry/align-multi-arch:latest" maxRetries: 2 omicsResourceFallbackOrder: [ {"acceleratorType": "nvidia-l40s", "acceleratorCount": 1, "cpu": 8, "memory": "32 GiB", "omicsResourceWaitTimeoutInMin": 45}, {"acceleratorType": "nvidia-l4", "acceleratorCount": 1, "cpu": 8, "memory": "32 GiB"}, {"cpu": 32, "memory": "128 GiB"} ] } }
在此範例中, 會AWS_HEALTHOMICS_RESOURCE_TYPE告知 命令已選取哪個資源路徑 (例如, "nvidia-l40s"或 "cpu")。
注意
如果您的備用順序包含 CPU 設定檔,Docker 映像必須同時支援加速器和 CPU 程式碼路徑。確保您的容器包含清單中所有資源設定檔的必要工具。
每個設定檔欄位參考
omicsResourceFallbackOrder 清單中的每個項目都是描述一個資源設定檔的映射。所有欄位都是選用的;設定檔可以是部分規格。每個設定檔都必須使用引號 (字串) 金鑰。
| 欄位 | Type | 省略時的預設值 | 備註 |
|---|---|---|---|
acceleratorType |
String | 未指定時,設定檔會被視為 CPU | 必須是 7 種支援的加速器類型之一。請參閱 HealthOmics 工作流程定義中的任務加速器。省略此欄位以指定僅限 CPU 的設定檔。對於 CPU 設定檔,請勿將其設定為 ""。 |
acceleratorCount |
Integer | 當 也不存在 acceleratorType 時, 欄位不存在 |
必須與 一起指定acceleratorType。一個描述檔不能有一個沒有另一個描述檔的描述檔。 |
cpu |
整數或浮點數 | 1 個 vCPU,如果 GPU 設定檔省略,則預設為 GPU 執行個體類型 | 四捨五入至最接近的整個 vCPU (最少 1)。與最上層runtime.cpu指令相同的分數支援。 |
memory |
字串 (例如,"32 GiB") |
1 GiB,如果 GPU 設定檔省略,則為 GPU 執行個體類型預設值 | 與最上層runtime.memory指令相同的格式。 |
omicsResourceWaitTimeoutInMin |
Integer | 單一 GPU 加速器套件 20 分鐘,多 GPU 加速器套件 30 分鐘。這些也是建議的最小值。 | 沒有上限。控制 HealthOmics 在移至下一個設定檔之前搜尋一個設定檔的時間長度。請參閱 逾時行為。 |
注意
省略的欄位會採用預設值,而不是從清單中先前描述檔繼承的值。離開設定檔的欄位會採用其記錄的預設值 (如上表所示),而不是從清單中先前設定檔複製的值。
逾時行為
omicsResourceWaitTimeoutInMin 控制 HealthOmics 在進入下一個設定檔之前,在指定設定檔上等待加速器容量的時間長度。
-
每個設定檔,而非全域。每個加速器設定檔都可以指定自己的逾時。設定較長的偏好高階加速器等待時間,以及較短的備用類型等待時間。
-
建議最短 20 分鐘。接受低於 20 分鐘的值 (多 GPU 套件為 30),但會產生驗證警告。
-
逾時會提前,不會失敗。當逾時過後,HealthOmics 會移至下一個設定檔 — 任務不會失敗。只有在所有設定檔都用盡之後,才會發生失敗。
-
不適用於僅限 CPU 的設定檔。CPU 設定檔沒有容量限制。省略最終 CPU 設定檔omicsResourceWaitTimeoutInMin上的 。
-
重試會收到新的逾時時段。每個 OOM 或服務錯誤重試都會在相同的設定檔上開始自己的完整omicsResourceWaitTimeoutInMin時段,而不是繼承先前嘗試已花費的時間。
環境變數
HealthOmics 會在任務容器中設定下列環境變數,讓您的命令可以根據配置的資源設定檔進行分支:
| 變數 | Value | 範例值 |
|---|---|---|
AWS_HEALTHOMICS_RESOURCE_TYPE |
作用中設定檔acceleratorType的 ,或僅限 CPU 設定檔"cpu"的 。 |
"nvidia-l40s", "nvidia-l4", "cpu" |
驗證條件
HealthOmics 在工作流程建立時間驗證下列項目,並在任務執行時間重新檢查。除非另有說明,否則所有規則都會拒絕工作流程或任務。
-
無法與個別資源指令混合。如果omicsResourceFallbackOrder指定 ,則omicsResourceWaitTimeoutInMin不得在相同的任務中指定頂層 acceleratorType、memory、、 acceleratorCount cpu和 。
-
必須是清單。 omicsResourceFallbackOrder 必須寫入為設定檔陣列。
-
不能為空。清單必須至少包含一個設定檔。
-
需要引用的金鑰。每個欄位名稱必須是引號字串,例如
{"acceleratorType": "nvidia-l4", "acceleratorCount": 1}。Bareword 金鑰驗證失敗。 -
非空白設定檔。不允許空白設定檔 (
{})。 -
acceleratorType 和 acceleratorCount 一起進行。設定設定檔的設定檔必須設定另一個設定檔。CPU 設定檔必須同時省略兩者。
-
僅限支援的加速器類型。 acceleratorType 必須是支援的加速器類型或省略 (CPU 設定檔)。
""不接受空白字串。 -
最短等待逾時。omicsResourceWaitTimeoutInMin建議值為 ≥ 20 分鐘 (多 GPU 套件則為 ≥ 30)。
-
重複的設定檔 (僅警告)。允許重複的設定檔,但會產生警告。請考慮改為在舊版設定檔omicsResourceWaitTimeoutInMin上增加 。
-
無法辨識的欄位遭拒。僅允許以上列出的五個每個設定檔欄位。
-
正確的類型。例如, cpu 必須是數字,而不是字串。
-
最多一個 CPU 設定檔。僅允許省略一個設定檔acceleratorType。
-
每個任務最多 10 個設定檔。
與重試的互動
對於Out-of-Memory(OOM) 和服務錯誤 (5xx,不包括 ALL_PROFILES_INSTANCE_RESERVATION_FAILED),HealthOmics 會重試任務,如下所示:
-
重試會在先前已成功保留的目前作用中設定檔內發生。
-
重試永遠不會以遞迴順序前進到下一個設定檔。
-
耗盡任務的重試maxRetries會失敗。
如需 HealthOmics 中任務重試的詳細資訊,請參閱 任務重試。
注意
如果第一次引擎嘗試時所有設定檔都用盡,而沒有執行個體保留,則引擎會失敗任務,然後執行狀態為 ALL_PROFILES_INSTANCE_RESERVATION_FAILED。即使您已設定重試,HealthOmics 也不會為此錯誤碼重試。建議您omicsResourceWaitTimeoutInMin適當地調整 。
最佳實務
-
避免依遞迴順序排列的多 GPU 套件類型。不建議在 內使用跨越多個執行個體系列的加速器類型 (例如
nvidia-t4-a10g-l4)omicsResourceFallbackOrder。請改用單一系列類型。如需可用加速器類型的詳細資訊,請參閱 HealthOmics 工作流程定義中的任務加速器。 -
設定適當的等待逾時。對於高優先順序加速器設定檔,請增加 omicsResourceWaitTimeoutInMin ,讓 HealthOmics 有更多時間尋找容量。
-
最後放置 CPU 設定檔。如果您包含僅限 CPU 的備用,它必須是最後一個項目,以便在可用時偏好加速器。
-
使用多架構容器映像。使用 GPU 進行 CPU 備用時,請確定您的 Docker 映像同時支援 GPU 加速和僅限 CPU 的程式碼路徑。
限制
-
omicsResourceFallbackOrder scatter區塊中不支援 。它只能在任務層級使用。
-
自 GA 啟動日期起,僅支援 WDL。已規劃 Nextflow 和 CWL 支援。
-
執行個體類型名稱 (例如
omics.g6e.4xlarge) 不接受做為資源值。您必須使用此頁面所述的每個設定檔欄位語法。