私有 HealthOmics 工作流程的執行最佳化 - AWS HealthOmics

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

私有 HealthOmics 工作流程的執行最佳化

您可以針對總成本、總執行時間或兩者的組合來最佳化執行。HealthOmics 提供資料和工具,協助您做出執行最佳化決策。執行最佳化不適用於 Ready2Run 工作流程,因為您無法控制服務如何管理這些工作流程的資源佈建。

第一步是了解執行中任務目前的任務資源用量和成本,然後套用方法來最佳化執行成本和效能。

執行分析器

HealthOmics 提供名為 Run Analyzer 的開放原始碼工具。此工具會擷取執行的任務層級資源用量資訊,並建議成本和執行效能的最佳化機會。

注意

執行分析器會根據執行工具時的 AWS 清單價格,預估任務成本和潛在的成本節省。評估最佳化建議,並實作對您的使用案例有意義的建議。測試您採用的最佳化,以確保它們適用於您的執行。

Run Analyzer 會執行下列任務:

  • 評估記憶體和運算瓶頸。

  • 識別記憶體或 CPU 過度佈建的任務,並建議可降低成本的新執行個體大小。

  • 計算個別任務的成本預估,並計算套用建議的潛在成本節省。

  • 為您提供任務的時間軸檢視,以便您可以驗證任務相依性和處理序列。時間軸也可協助您識別長時間執行的任務。

  • 提供有關執行儲存體之檔案系統大小的建議。

  • 顯示任務佈建時間,讓您可以識別大型容器負載可能減慢佈建時間的區域。

  • 此工具包含輸入參數 (標題),可用來控制最佳化建議的積極性。

下列各節包含使用 Run Analyzer 最佳化執行的特定建議。

判斷執行成本

您可以使用下列方法和準則來判斷執行成本:

  • 若要檢視計費期間的總執行成本,請遵循下列步驟:

    1. 開啟帳單和成本管理主控台,然後選擇帳單

    2. 依服務收費中,展開 Omic。

    3. 展開區域,然後檢視依 omics 執行個體類型、執行儲存類型和 Ready2Run 工作流程逐項列出的所有執行成本。

  • 若要產生包含每次執行資訊的成本報告,請遵循下列步驟:

    1. 開啟 Billing and Cost Management 主控台,然後選擇資料匯出

    2. 選擇建立以建立新的資料匯出。

    3. 輸入資料匯出的匯出名稱。將其他欄位保留在其預設值,以建立 CUR (成本和用量) 報告。

    4. 針對時間精細程度,選取每小時或每天。

    5. 資料匯出儲存設定下,執行下列組態步驟:

      1. 設定資料匯出的 Amazon S3 儲存貯體。

      2. 針對檔案版本控制,選取是否覆寫現有的匯出檔案,或每次建立新檔案。

      系統會在接下來 24 小時內產生第一份報告,每天產生一次後續報告。

    6. 如需如何建立資料匯出的詳細資訊,請參閱《資料匯出使用者指南》中的建立AWS 資料匯出

  • 您可以標記您的執行,以依類別監控和最佳化成本,例如依團隊或依專案。如果您使用標籤,請依照下列步驟,依標籤類別檢視執行成本:

    1. 開啟 Billing and Cost Management 主控台,然後選擇 Cost Explorer

    2. 報告參數 > 分組依據中,選擇標籤做為維度。 然後選取所需的標籤名稱。

  • 若要查看任務的資源用量,請在 CloudWatch 中檢視執行資訊清單日誌。如需詳細資訊,請參閱使用 CloudWatch Logs 監控 HealthOmics

  • 使用 執行分析器工具擷取執行的任務資源用量資訊。

判斷執行時間用量

您可以使用下列方法來協助您調查執行時間用量:

  • 從 主控台的執行頁面,您可以檢視執行的總執行時間。

  • 執行詳細資訊頁面,您可以檢視下列項目:

    • 檢視執行的總執行時間。

    • 檢視執行中每個任務的執行時間。

    • 選擇其中一個連結來檢視 Amazon S3 中的日誌,或在 CloudWatch 中檢視執行日誌或執行資訊清單日誌。

  • 執行任務清單中,選擇任務的檢視日誌連結,以在 CloudWatch 中檢視任務日誌。

  • listRuns API 操作的回應包含執行開始時間和停止時間,因此您可以計算總執行時間。

  • 執行分析器 工具會在時間軸檢視上顯示任務持續時間。此工具提供任務處理序列的視覺化呈現,您可以符合預期的順序。

最佳化執行的方法

HealthOmics 會自動佈建、管理和最佳化執行資料預備的資源 (例如資料匯入和資料匯出)。HealthOmics 也會啟動並執行工作流程的工作流程引擎。不過,您可以透過設定各種執行組態來影響執行開始時間、任務開始時間和整體任務執行時間。您對工作流程定義和設計的整體方法也會影響任務執行時間。下列清單說明可能影響執行和任務效能的因素:

執行儲存體類型

執行儲存類型會影響執行效能和執行佈建時間。動態執行儲存佈建更快速且永遠不會耗盡記憶體,因為它會根據您的執行儲存需求動態擴展。動態執行儲存體也非常適合開發中的工作流程,您通常可以啟動和停止工作流程來疑難排解問題。

靜態執行儲存需要較長的檔案系統佈建時間,但通常在執行具有高任務並行或需要大於 9.6 TiB 的檔案系統容量時,可以更快地完成某些執行。靜態執行儲存非常適合具有高 I/O 需求的長時間執行工作流程。

為了協助您評估特定執行之每個執行儲存類型的成本與效能,您可以嘗試 A/B 測試,以查看哪些執行儲存類型可提供更好的效能。此外,請考慮在開發週期使用動態執行儲存體,然後使用靜態執行儲存體進行大規模的生產執行。

如需執行儲存體類型的詳細資訊 在 HealthOmics 工作流程中執行儲存類型

過度佈建的執行靜態儲存

如果您的工作流程任務運算受到 I/O 限制,請考慮過度佈建靜態執行儲存。儲存成本會隨著其大小而增加,但檔案系統的最大輸送量也會增加。如果昂貴的運算任務遇到 I/O 瓶頸,增加檔案系統大小以減少任務執行時間可能會降低整體成本。

減少容器映像大小

當每個任務開始時,HealthOmics 會載入您為任務指定的容器。較大的容器需要更長的時間才能載入。將容器最佳化為盡可能小,以改善啟動新任務的效率。如果您將大型資料集新增至容器,請考慮將資料集儲存在 S3 中,並讓工作流程從 S3 匯入資料。如需 HealthOmics 支援的最大容器大小,請參閱 HealthOmics 工作流程固定大小配額

任務大小

您可以將小型的循序任務合併為單一任務,以節省任務佈建時間。此外,HealthOmics 有一分鐘的最低任務持續時間費用,因此合併任務可能會降低成本。在合併任務中,您可以使用 Unix 管道來避免序列化和還原序列化檔案的 I/O 成本。

檔案壓縮

避免過度壓縮工作流程中繼檔案。大多數基因體格式使用「gzip」或「區塊 gzip」壓縮。解壓縮任務輸入檔案並重新壓縮任務輸出檔案,可能會耗用大量整體任務 CPU 用量。有些基因體應用程式可讓您在序列化輸出時設定壓縮層級。透過減少壓縮層級,您可以縮短 CPU 時間,但較大的檔案會增加寫入磁碟所花費的時間。根據任務和應用程式,您可以找到導致最短執行時間的中繼檔案的最佳壓縮層級。我們建議您先以具有最大輸出檔案的任務為目標。壓縮層級 2 適用於多種案例。您可以針對您的使用案例從此層級開始,並透過嘗試其他壓縮層級來比較結果。

執行緒計數

如果您在任務定義中指定執行緒,請將執行緒數目設定為與請求vCPUs 數目相同的值。

指定運算和記憶體

如果您未在任務中指定記憶體或運算資源,HealthOmics 會將最小執行個體類型 (omics.c.large) 指派為預設 。如果您希望 HealthOmics 指派更大的執行個體類型,請明確宣告您的記憶體和運算需求。

HealthOmics 會配置您請求vCPUs、記憶體和 GPU 資源數量。例如,如果您要求 15vCPUs和 33GiB,HealthOmics 會為您的任務配置 omics.m.4xl 執行個體 (16vCPUs64GB),但您的任務只能使用 15 個 vCPUs和 33GiB。因此,我們建議您請求 vCPUs和符合 omics 執行個體的記憶體資源。

將多個範例批次處理為一次執行

由於檔案系統佈建在執行開始時需要時間,因此您可以將多個範例批次處理到相同的執行中,以節省佈建時間。在決定此方法之前,請考慮下列因素:

  • 單一錯誤範例可能會導致工作流程失敗,因此批次處理範例可能會增加失敗的工作流程數目。如果您不確定您的工作流程在大部分時間都會成功,則每個範例執行一次可能是更好的方法。

  • HealthOmics 會為整個工作流程配置一個執行儲存檔案系統。對於一批樣本,請務必指定足夠大的執行儲存量來處理所有樣本。

  • 每個工作流程有最大數量的執行儲存,因此 可能會限制您可以新增至批次的樣本數量。

  • 最小執行儲存體大小為 1.2 TiB,因此如果工作流程使用的儲存體遠低於每個範例的最低儲存體,批次處理可能會降低成本。

  • 執行儲存可以處理多個同時連線,因此使用相同執行儲存體的多個任務不應造成 I/O 瓶頸。

  • 每個執行都有自己的一組標籤。如果您使用預算或追蹤的資訊標記工作流程,最好使用不同的執行。

  • IAM 角色適用於整個執行。每個使用者都可以存取批次範例的所有資料。分離工作流程可讓您使用更精細的許可。

  • HealthOmics 會設定工作流程中並行工作流程數量上限和並行任務數量上限的帳戶層級配額。如需如何請求提高這些配額的詳細資訊,請參閱 HealthOmics 服務配額

使用容器映像的參數

參數化您的容器映像,而不是在工作流程中內嵌其 URIs。它們是執行參數,HealthOmics 會在執行開始之前驗證執行是否可存取您的容器。否則,當您針對任何已完成的任務產生費用時,任務會在執行期間失敗。此外,由於這些是參數化輸入,HealthOmics 會在執行資訊清單中產生檢查總和,以改善執行來源。

使用 linter

在執行新的工作流程之前,使用 linter 尋找常見的工作流程錯誤。如需詳細資訊,請參閱HealthOmics 中的工作流程文字

使用 EventBridge 標記問題

使用 EventBridge 自訂警示來擷取業務邏輯特有的異常。

使用序列存放區

考慮為您的來源資料使用序列存放區,以節省儲存成本。如需詳細資訊,請參閱使用 HealthOmics 部落格文章,以經濟實惠的方式在任何規模存放 omics 資料

執行之間檔案大小差異的影響

使用者通常會使用一小組測試資料來設計和測試執行,然後在生產執行中遇到具有顯著檔案大小差異的各種資料。當您最佳化執行時,請務必考慮此差異。

下列清單說明檔案大小有顯著差異的最佳化建議:

測試資料中的不同檔案大小

嘗試在開發期間使用具有代表性變異量的測試資料。

使用 Run Analyzer

跨各種範例使用 Run Analyzer 工具,以考慮資料大小的差異。

您可以使用執行分析器來了解生產資料範例中執行之間的差異。在 Run Analyzer 中使用 --batch 模式來產生批次執行的統計資料,並分析處理資料集極端值所需的運算資源上限。

例如,您可以為執行分析器提供批次模式中的資料完整流程儲存格,以了解完整流程儲存格的尖峰 vCPU 和記憶體使用率。

減少輸入資料集的大小差異

如果您看到樣本大小有很大的差異,您可以對 HealthOmics 上游的樣本進行分叉,並為每個批次選取不同的檔案系統大小,以節省執行儲存成本。

在 WDL 中,使用 size函數為大型和小型範例的個別任務分叉資源配置。將此策略套用至最昂貴的任務,以產生最大的影響。

在 Nextflow 中,根據檔案大小或檔案名稱,使用條件式資源來分層資源配置。如需詳細資訊,請參閱 Nextflow GitHub 網站上的條件式程序資源

不要太快最佳化

在投資大量的效能調校工作之前,請先完成您的工作流程程式碼和邏輯。變更程式碼可能會對所需資源產生重大影響。如果您在開發過程中過早最佳化執行,您可能會過度最佳化,或者如果工作流程定義稍後變更,您可能需要再次最佳化。

定期重新執行 Run Analyzer 工具

如果您隨著時間對工作流程定義進行變更,或如果您的範例變異,請定期執行 Run Analyzer 工具,以協助您進行其他最佳化。

最佳化資源並行的方法

HealthOmics 提供下列功能,協助您控制和管理大規模處理執行時的成本:

  • 使用執行群組來控制您的成本和資源用量。您可以在執行群組中針對並行執行次數、vCPUs、GPUs 和每個任務的總執行時間設定最大值。如果不同的團隊或群組使用相同的帳戶,您可以為每個團隊建立個別的執行群組。您可以設定執行群組最大值,以控制每個團隊的資源用量和成本。如需詳細資訊,請參閱建立 HealthOmics 執行群組

  • 在開發期間,您可以設定具有較低最大值的個別執行群組,以擷取失控任務。

  • Service Quotas 也有助於保護您的帳戶免受過多資源請求的影響。如需 Service Quotas 的相關資訊,包括如何請求提高配額值,請參閱 HealthOmics 服務配額