

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 高度なリソース設定
<a name="advanced-resource-configuration"></a>

**omicsResourceFallbackOrder** ディレクティブを使用すると、ワークフロー内のタスクのリソース (アクセラレーターや CPU など) プロファイルの順序付きリストを宣言できます。このディレクティブはタスクレベルで指定します。HealthOmics は、予約可能な各プロファイルを指定した順序で検索します。待機タイムアウト内にキャパシティーが利用できない場合、HealthOmics はリスト内の次のリソースプロファイルに移動します。

これは、任意のアクセラレーター容量 ( を使用した G6e など`nvidia-l40s`) が使用できず、実行に失敗する代わりに別のアクセラレータータイプまたは CPU にフォールバックする場合に便利です。

## 仕組み
<a name="advanced-resource-configuration-how-it-works"></a>

1. **omicsResourceFallbackOrder** ディレクティブでリソースプロファイルの順序付きリストを定義します。

1. 実行時に、HealthOmics はリストの最初のプロファイルの容量を予約しようとします。

1. 待機タイムアウト期間内にキャパシティーが利用できない場合、HealthOmics は次のプロファイルに移動します。

1. タスクは、最初に成功したプロファイルで実行されます。

1. リスト内のすべてのプロファイルが失敗した場合、タスクは理由 で失敗します`ALL_PROFILES_INSTANCE_RESERVATION_FAILED`。すべてのプロファイルが使用できない場合、エンジンの再試行は適用されません。

**注記**  
**omicsResourceFallbackOrder** は、タスクの通常の **acceleratorType**、**acceleratorCount**、**cpu**、**memory**、および **omicsResourceWaitTimeoutInMin**フィールドを置き換えます。ディレクティブが存在する場合は、これらを最上位に設定しないでください。

## ユースケース
<a name="advanced-resource-configuration-use-cases"></a>


| シナリオ | 説明 | 
| --- | --- | 
| GPU から GPU へのフォールバック | アクセラレーター (または GPU) タイプを優先度順に一覧表示します。たとえば、nvidia-l40s最初に を試してから、 にフォールバックしますnvidia-l4。アクセラレータータイプ間でワークロードが同じ場合、コマンドを変更する必要はありません。 | 
| GPU から CPU へのフォールバック | CPU のみacceleratorTypeのフォールバックを省略する最終プロファイルを追加します。AWS\_HEALTHOMICS\_RESOURCE\_TYPE 環境変数を使用して、リソースタイプ別にコマンドを分岐させます。 | 

## タスクレベルのランタイムフィールド
<a name="advanced-resource-configuration-runtime-fields"></a>

を使用する場合**omicsResourceFallbackOrder**、タスクレベルのランタイムフィールドは 2 つのセットに分割されます。
+ **プロファイルごとのフィールド** (**acceleratorType**、**acceleratorCount**、**cpu**、**memory**、**omicsResourceWaitTimeoutInMin**) — リスト内のプロファイルごとに個別に設定できます。
+ **共有フィールド** (、 などの他のすべてのランタイムフィールド**maxRetries**) — 最上位レベルに 1 回設定し**docker**、すべてのプロファイルに同じ方法を適用します。

## WDL の例
<a name="advanced-resource-configuration-wdl-example"></a>

次の WDL タスクは`nvidia-l40s`、最初に (キャパシティーを最大 45 分待機）、次に `nvidia-l4` (デフォルトの待機ウィンドウ) を検索し、どちらのアクセラレータータイプも使用できない場合は CPU のみのプロファイル (32 vCPUs128 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"}
    ]
  }
}
```

この例では、 は選択したリソースパス ( `"nvidia-l40s"`や など) をコマンドに**AWS\_HEALTHOMICS\_RESOURCE\_TYPE**指示します`"cpu"`。

**注記**  
フォールバック順序に CPU プロファイルが含まれている場合、Docker イメージはアクセラレータと CPU コードパスの両方をサポートする必要があります。コンテナに、リスト内のすべてのリソースプロファイルに必要なツールが含まれていることを確認します。

## プロファイルごとのフィールドリファレンス
<a name="advanced-resource-configuration-field-reference"></a>

**omicsResourceFallbackOrder** リストの各エントリは、1 つのリソースプロファイルを記述するマップです。すべてのフィールドはオプションです。プロファイルは部分的な指定にすることができます。各プロファイルは引用符で囲まれた (文字列) キーを使用する必要があります。


| フィールド | タイプ | 省略した場合のデフォルト | 注意事項 | 
| --- | --- | --- | --- | 
| acceleratorType | String | 指定しない場合、プロファイルは CPU と見なされます。 | サポートされている 7 つのアクセラレータータイプのいずれかである必要があります。「[HealthOmics ワークフロー定義のタスクアクセラレーター](task-accelerators.md)」を参照してください。CPU のみのプロファイルを指定するには、このフィールドを省略します。CPU プロファイルの場合は、 に設定しないでください""。 | 
| acceleratorCount | 整数 | も存在しない場合acceleratorType、フィールドは存在しない | と一緒に指定する必要がありますacceleratorType。プロファイルに、もう 1 つのプロファイルがないとプロファイルを持つことはできません。 | 
| cpu | 整数または浮動小数点数 | 1 vCPU、または GPU プロファイルがそれを省略する場合は GPU インスタンスタイプのデフォルト | 最も近い vCPU 全体 (最小 1) に切り上げました。最上位runtime.cpuディレクティブと同じ小数サポート。 | 
| memory | 文字列 (例: "32 GiB") | 1 GiB、または GPU プロファイルがそれを省略する場合は GPU インスタンスタイプのデフォルト | 最上位runtime.memoryディレクティブと同じ形式。 | 
| omicsResourceWaitTimeoutInMin | 整数 | 単一 GPU アクセラレーターバンドルの場合は 20 分、マルチ GPU アクセラレーターバンドルの場合は 30 分。これらは推奨される最小値でもあります。 | 上限はありません。HealthOmics が次のプロファイルに移動する前に 1 つのプロファイルを検索する期間を制御します。「[タイムアウト動作](#advanced-resource-configuration-timeout-behavior)」を参照してください。 | 

**注記**  
省略されたフィールドは、リスト内の以前のプロファイルから継承された値ではなく、デフォルト値を使用します。プロファイルから取り出されたフィールドは、リスト内の以前のプロファイルからコピーされた値ではなく、文書化されたデフォルト (上記の表を参照) になります。

## タイムアウト動作
<a name="advanced-resource-configuration-timeout-behavior"></a>

**omicsResourceWaitTimeoutInMin** は、HealthOmics が特定のプロファイルのアクセラレーター容量を待機してから次のプロファイルに進むまでの時間を制御します。
+ **グローバルではなく、プロファイルごと。**各アクセラレータープロファイルは、独自のタイムアウトを指定できます。優先するハイエンドアクセラレーターを長く待機し、フォールバックタイプを短く待機するように設定します。
+ **最小推奨時間は 20 分です。**20 分未満の値 (マルチ GPU バンドルの場合は 30) は受け入れられますが、検証警告が生成されます。
+ **タイムアウトは進行し、失敗しません。**タイムアウトが経過すると、HealthOmics は次のプロファイルに移動し、タスクは失敗しません。失敗は、すべてのプロファイルが使い果たされた後にのみ発生します。
+ **CPU のみのプロファイルには適用されません。**CPU プロファイルには容量制限はありません。最終的な CPU プロファイル**omicsResourceWaitTimeoutInMin**では を省略します。
+ **再試行すると、新しいタイムアウトウィンドウが表示されます。**各 OOM またはサービスエラーの再試行は、以前の試行で既に費やされた時間を継承するのではなく、同じプロファイルで独自の全**omicsResourceWaitTimeoutInMin**ウィンドウを開始します。

## 環境変数
<a name="advanced-resource-configuration-environment-variables"></a>

HealthOmics は、タスクコンテナに次の環境変数を設定して、割り当てられたリソースプロファイルに基づいてコマンドを分岐できるようにします。


| 変数 | 値 | 値の例 | 
| --- | --- | --- | 
| AWS\_HEALTHOMICS\_RESOURCE\_TYPE | アクティブなプロファイルacceleratorTypeの 、または CPU 専用プロファイル"cpu"の 。 | "nvidia-l40s", "nvidia-l4", "cpu" | 

## 検証基準
<a name="advanced-resource-configuration-validation"></a>

HealthOmics は、ワークフローの作成時に以下を検証し、タスクの実行時に再チェックします。特に明記されていない限り、すべてのルールはワークフローまたはタスクを拒否します。

1. **個々のリソースディレクティブと混在することはできません。****omicsResourceFallbackOrder** が指定されている場合、最上位の **acceleratorType**、**acceleratorCount**、**cpu**、**memory**、および を同じタスクで指定**omicsResourceWaitTimeoutInMin**しないでください。

1. **リストである必要があります。 **はプロファイルの配列として記述**omicsResourceFallbackOrder**する必要があります。

1. **空にすることはできません。**リストには、少なくとも 1 つのプロファイルが含まれている必要があります。

1. **引用符で囲まれたキーが必要です。**各フィールド名は、 のように引用符で囲まれた文字列である必要があります`{"acceleratorType": "nvidia-l4", "acceleratorCount": 1}`。キーワードは検証に失敗します。

1. **空でないプロファイル。**空のプロファイル (`{}`) は使用できません。

1. ****acceleratorType** と **acceleratorCount** を一緒に実行します。**一方を設定するプロファイルは、もう一方のプロファイルを設定する必要があります。CPU プロファイルは両方を省略する必要があります。

1. **サポートされているアクセラレータータイプのみ。 **はサポートされているアクセラレータータイプであるか、省略**acceleratorType**されている必要があります (CPU プロファイル）。空の文字列`""`は受け入れられません。

1. **最小待機タイムアウト。****omicsResourceWaitTimeoutInMin**推奨値は ≥ 20 分 (マルチ GPU バンドルの場合は ≥ 30) です。

1. **プロファイルの複製 (警告のみ）。**プロファイルの複製は許可されますが、警告が発生します。代わりに、以前のプロファイル**omicsResourceWaitTimeoutInMin**で を増やすことを検討してください。

1. **認識されないフィールドが拒否されました。**上記のプロファイルごとに 5 つのフィールドのみが許可されます。

1. **正しいタイプ。**たとえば、 は文字列ではなく数値**cpu**である必要があります。

1. **最大 1 つの CPU プロファイル。**が省略するプロファイル**acceleratorType**は 1 つだけ許可されます。

1. **タスクごとに最大 10 個のプロファイル。**

## 再試行とのやり取り
<a name="advanced-resource-configuration-retries"></a>

Out-of-Memory (OOM) およびサービスエラー ( を除く 5xx`ALL_PROFILES_INSTANCE_RESERVATION_FAILED`) の場合、HealthOmics は次のようにタスクを再試行します。
+ 再試行は、以前に正常に予約された現在アクティブなプロファイル内で行われます。
+ 再試行がフォールバック順序で次のプロファイルに進むことはありません。
+ を使い果たす再試行はタスクに**maxRetries**失敗します。

HealthOmics でのタスクの再試行の詳細については、「」を参照してください[タスクの再試行](monitoring-runs.md#run-status-task-retries)。

**注記**  
インスタンスの予約なしで最初のエンジン試行ですべてのプロファイルが枯渇した場合、エンジンはタスクに失敗し、その後 ステータスで実行が失敗します`ALL_PROFILES_INSTANCE_RESERVATION_FAILED`。再試行を設定しても、HealthOmics はこのエラーコードを再試行しません。**omicsResourceWaitTimeoutInMin** を適切に調整することをお勧めします。

## ベストプラクティス
<a name="advanced-resource-configuration-best-practices"></a>
+ **マルチ GPU バンドルタイプはフォールバック順で避けてください。**複数のインスタンスファミリーにまたがるアクセラレータータイプ ( など`nvidia-t4-a10g-l4`) は、 内では推奨されません**omicsResourceFallbackOrder**。代わりにシングルファミリータイプを使用します。使用可能なアクセラレータータイプの詳細については、「」を参照してください[HealthOmics ワークフロー定義のタスクアクセラレーター](task-accelerators.md)。
+ **適切な待機タイムアウトを設定します。**優先度の高いアクセラレータープロファイルの場合は、 を増や**omicsResourceWaitTimeoutInMin**して HealthOmics にキャパシティーを見つける時間を増やします。
+ **CPU プロファイルを最後に配置します。**CPU のみのフォールバックを含める場合は、使用可能な場合にアクセラレーターが優先されるように、最後のエントリである必要があります。
+ **マルチアーキテクチャコンテナイメージを使用します。**GPU から CPU へのフォールバックを使用する場合は、Docker イメージが GPU アクセラレーションと CPU のみのコードパスの両方をサポートしていることを確認します。

## 制限事項
<a name="advanced-resource-configuration-limitations"></a>
+ **omicsResourceFallbackOrder** は **scatter**ブロック内ではサポートされていません。これはタスクレベルでのみ使用できます。
+ GA 起動日の時点では、WDL のみがサポートされています。Nextflow と CWL サポートが計画されています。
+ インスタンスタイプ名 ( など`omics.g6e.4xlarge`) はリソース値として受け入れられません。このページで説明されているプロファイルごとのフィールド構文を使用する必要があります。