View a markdown version of this page

進階資源組態 - AWS HealthOmics

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

進階資源組態

使用 omicsResourceFallbackOrder指令,您可以為工作流程中的任務宣告資源 (例如加速器和 CPU) 設定檔的排序清單。您可以在任務層級指定此指令。HealthOmics 會依您指定的順序搜尋每個設定檔,以保留可用性。如果在等待逾時內無法使用容量,HealthOmics 會移至清單中的下一個資源設定檔。

當您偏好的加速器容量 (例如 G6e 搭配 nvidia-l40s) 無法使用,而且您寧願回到不同的加速器類型或 CPU,也不想讓執行失敗時,這很有用。

運作方式

  1. 您可以在 omicsResourceFallbackOrder指令中定義資源描述檔的排序清單。

  2. 在執行時間,HealthOmics 會嘗試為清單中的第一個設定檔保留容量。

  3. 如果在等待逾時期間內無法使用容量,HealthOmics 會移至下一個設定檔。

  4. 任務會先於任何設定檔成功執行。

  5. 如果清單中的所有設定檔都失敗,任務會失敗,原因為 ALL_PROFILES_INSTANCE_RESERVATION_FAILED。當所有設定檔都無法使用時,不會套用任何引擎重試。

注意

omicsResourceFallbackOrder 會取代任務的一般 acceleratorTypeacceleratorCountmemorycpuomicsResourceWaitTimeoutInMin 欄位。當指令存在時,這些不得在頂層設定。

使用案例

案例 說明
GPU 對 GPU 備用 依優先順序列出加速器 (或 GPU) 類型。例如,nvidia-l40s請先嘗試,然後返回 nvidia-l4。如果跨加速器類型的工作負載相同,則不需要變更命令。
GPU 到 CPU 備用 新增只acceleratorType省略 CPU 後端的最終設定檔。使用 AWS_HEALTHOMICS_RESOURCE_TYPE環境變數,依資源類型分支命令。

任務層級執行時間欄位

使用 時omicsResourceFallbackOrder,任務層級執行期欄位分為兩組:

  • 每個設定檔欄位 (acceleratorTypeacceleratorCountcpumemoryomicsResourceWaitTimeoutInMin) — 可針對清單中的每個設定檔獨立設定。

  • 共用欄位 (所有其他執行時間欄位,例如 dockermaxRetries) — 在頂層設定一次,並對每個設定檔套用相同的方式。

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 在工作流程建立時間驗證下列項目,並在任務執行時間重新檢查。除非另有說明,否則所有規則都會拒絕工作流程或任務。

  1. 無法與個別資源指令混合。如果omicsResourceFallbackOrder指定 ,則omicsResourceWaitTimeoutInMin不得在相同的任務中指定頂層 acceleratorTypememory、、 acceleratorCount cpu和 。

  2. 必須是清單。 omicsResourceFallbackOrder 必須寫入為設定檔陣列。

  3. 不能為空。清單必須至少包含一個設定檔。

  4. 需要引用的金鑰。每個欄位名稱必須是引號字串,例如 {"acceleratorType": "nvidia-l4", "acceleratorCount": 1}。Bareword 金鑰驗證失敗。

  5. 非空白設定檔。不允許空白設定檔 ({})。

  6. acceleratorTypeacceleratorCount 一起進行。設定設定檔的設定檔必須設定另一個設定檔。CPU 設定檔必須同時省略兩者。

  7. 僅限支援的加速器類型。 acceleratorType 必須是支援的加速器類型或省略 (CPU 設定檔)。"" 不接受空白字串。

  8. 最短等待逾時。omicsResourceWaitTimeoutInMin建議值為 ≥ 20 分鐘 (多 GPU 套件則為 ≥ 30)。

  9. 重複的設定檔 (僅警告)。允許重複的設定檔,但會產生警告。請考慮改為在舊版設定檔omicsResourceWaitTimeoutInMin上增加 。

  10. 無法辨識的欄位遭拒。僅允許以上列出的五個每個設定檔欄位。

  11. 正確的類型。例如, cpu 必須是數字,而不是字串。

  12. 最多一個 CPU 設定檔。僅允許省略一個設定檔acceleratorType

  13. 每個任務最多 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) 不接受做為資源值。您必須使用此頁面所述的每個設定檔欄位語法。