

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 고급 리소스 구성
<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**를 사용하는 경우 작업 수준 런타임 필드는 두 세트로 분할됩니다.
+ **프로필별 필드**(**acceleratorType**, **acceleratorCount**, **cpu**, **memory**, **omicsResourceWaitTimeoutInMin**) - 목록의 각 프로필에 대해 독립적으로 구성할 수 있습니다.
+ **공유 필드**(,와 같은 다른 모든 런타임 필드**docker****maxRetries**) - 최상위 수준에서 한 번 설정하고 모든 프로필에 동일한 방법을 적용합니다.

## WDL 예제
<a name="advanced-resource-configuration-wdl-example"></a>

다음 WDL 작업은 액셀러레이터 유형을 사용할 수 없는 경우 `nvidia-l40s` 먼저 (용량에 대해 최대 45분 대기), `nvidia-l4` (기본 대기 기간)을 검색한 다음 CPU 전용 프로파일(vCPUs, 128GiB)로 돌아갑니다.

```
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 프로파일이 포함된 경우 도커 이미지는 액셀러레이터 및 CPU 코드 경로를 모두 지원해야 합니다. 컨테이너에 목록의 모든 리소스 프로파일에 필요한 도구가 포함되어 있는지 확인합니다.

## 프로필별 필드 참조
<a name="advanced-resource-configuration-field-reference"></a>

**omicsResourceFallbackOrder** 목록의 각 항목은 하나의 리소스 프로파일을 설명하는 맵입니다. 모든 필드는 선택 사항이며 프로필은 부분 사양일 수 있습니다. 각 프로필은 따옴표로 묶인 (문자열) 키를 사용해야 합니다.


| Field | 유형 | 생략 시 기본값 | 참고 | 
| --- | --- | --- | --- | 
| acceleratorType | 문자열 | 지정하지 않으면 프로파일이 CPU로 간주됩니다. | 지원되는 7가지 액셀러레이터 유형 중 하나여야 합니다. [HealthOmics 워크플로 정의의 태스크 액셀러레이터](task-accelerators.md)을(를) 참조하세요. CPU 전용 프로파일을 지정하려면이 필드를 생략합니다. CPU 프로파일의 경우 로 설정하지 마십시오"". | 
| acceleratorCount | Integer | acceleratorType 도 없는 경우 필드 없음 | 와 함께 지정해야 합니다acceleratorType. 프로필에는 다른 프로필이 없는 프로필이 있을 수 없습니다. | 
| cpu | 정수 또는 부동 소수점 | vCPU 1개 또는 GPU 프로파일이 vCPU를 생략하는 경우 GPU 인스턴스 유형 기본값 | 가장 가까운 전체 vCPU(최소 1)로 반올림됩니다. 최상위 runtime.cpu 지시문과 동일한 분수 지원. | 
| memory | 문자열(예: "32 GiB") | 1GiB 또는 GPU 프로파일이 이를 생략하는 경우 GPU 인스턴스 유형 기본값 | 최상위 runtime.memory 지시문과 동일한 형식입니다. | 
| omicsResourceWaitTimeoutInMin | Integer | 단일 GPU 액셀러레이터 번들의 경우 20분, 다중 GPU 액셀러레이터 번들의 경우 30분입니다. 또한 권장되는 최소값입니다. | 상한이 없습니다. HealthOmics가 다음 프로필로 이동하기 전에 하나의 프로필을 검색하는 기간을 제어합니다. [제한 시간 초과 동작](#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**, **memory**, 및 **cpu**를 지정해서는 **omicsResourceWaitTimeoutInMin** 안 됩니다.

1. **목록이어야 합니다.**는 프로필 배열로 작성해야 **omicsResourceFallbackOrder** 합니다.

1. **비워둘 수 없습니다.** 목록에는 하나 이상의 프로필이 포함되어야 합니다.

1. **따옴표로 묶은 키가 필요합니다.** 각 필드 이름은와 같이 따옴표로 묶인 문자열이어야 합니다`{"acceleratorType": "nvidia-l4", "acceleratorCount": 1}`. 베어워드 키는 검증에 실패합니다.

1. **비어 있지 않은 프로필입니다.** 빈 프로필(`{}`)은 허용되지 않습니다.

1. ****acceleratorType** 및가 함께 **acceleratorCount** 이동합니다.** 하나를 설정하는 프로필은 다른 프로필을 설정해야 합니다. CPU 프로필은 둘 다 생략해야 합니다.

1. **지원되는 액셀러레이터 유형만 해당됩니다.**는 지원되는 액셀러레이터 유형이거나 생략(CPU 프로필)이어야 **acceleratorType** 합니다. 빈 문자열`""`은 허용되지 않습니다.

1. **최소 대기 제한 시간입니다.** **omicsResourceWaitTimeoutInMin** 권장 값은 ≥ 20분입니다(다중 GPU 번들의 경우 ≥ 30).

1. **중복 프로필(경고만 해당).** 중복 프로필은 허용되지만 경고를 생성합니다. 대신 이전 프로파일**omicsResourceWaitTimeoutInMin**에서 늘리는 것이 좋습니다.

1. **인식할 수 없는 필드가 거부되었습니다.** 위에 나열된 프로필당 필드 5개만 허용됩니다.

1. **올바른 유형입니다.** 예를 들어는 문자열이 아닌 숫자여야 **cpu** 합니다.

1. **최대 하나의 CPU 프로파일.** 생략된 프로필**acceleratorType**은 하나만 허용됩니다.

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).
+ **적절한 대기 제한 시간을 설정합니다.** 우선순위가 높은 액셀러레이터 프로파일의 경우 HealthOmics**omicsResourceWaitTimeoutInMin**에 용량을 찾는 데 더 많은 시간을 제공하도록를 늘립니다.
+ **CPU 프로파일을 마지막으로 배치합니다.** CPU 전용 폴백을 포함하는 경우 사용 가능한 경우 액셀러레이터가 선호되도록 마지막 항목이어야 합니다.
+ **다중 아키텍처 컨테이너 이미지를 사용합니다.** GPU에서 CPU로의 대체를 사용하는 경우 Docker 이미지가 GPU 가속 및 CPU 전용 코드 경로를 모두 지원하는지 확인합니다.

## 제한 사항
<a name="advanced-resource-configuration-limitations"></a>
+ **omicsResourceFallbackOrder**는 **scatter** 블록 내에서 지원되지 않습니다. 작업 수준에서만 사용할 수 있습니다.
+ GA 출시일부터는 WDL만 지원됩니다. Nextflow 및 CWL 지원이 계획되어 있습니다.
+ 인스턴스 유형 이름(예: `omics.g6e.4xlarge`)은 리소스 값으로 허용되지 않습니다. 이 페이지에 설명된 프로필별 필드 구문을 사용해야 합니다.