기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
고급 리소스 구성
omicsResourceFallbackOrder 지시문을 사용하면 워크플로 내의 작업에 대해 순서가 지정된 리소스(예: 액셀러레이터 및 CPU) 프로파일 목록을 선언할 수 있습니다. 작업 수준에서이 지시문을 지정합니다. HealthOmics는 사용자가 지정한 순서대로 각 프로필을 검색하여 예약 가능 여부를 확인합니다. 대기 제한 시간 내에 용량을 사용할 수 없는 경우 HealthOmics는 목록의 다음 리소스 프로필로 이동합니다.
이는 선호하는 액셀러레이터 용량(예:의 G6envidia-l40s)을 사용할 수 없고 실행에 실패하는 대신 다른 액셀러레이터 유형 또는 CPU로 돌아가는 것이 좋을 때 유용합니다.
작동 방식
-
omicsResourceFallbackOrder 명령에서 정렬된 리소스 프로필 목록을 정의합니다.
-
실행 시간에 HealthOmics는 목록의 첫 번째 프로파일에 대한 용량을 예약하려고 합니다.
-
대기 제한 시간 내에 용량을 사용할 수 없는 경우 HealthOmics는 다음 프로필로 이동합니다.
-
작업은 먼저 성공한 프로파일에서 실행됩니다.
-
목록의 모든 프로필이 실패하면 사유와 함께 작업이 실패합니다
ALL_PROFILES_INSTANCE_RESERVATION_FAILED. 모든 프로필을 사용할 수 없는 경우 엔진 재시도가 적용되지 않습니다.
참고
omicsResourceFallbackOrder는 작업의 일반적인 acceleratorType, acceleratorCount, cpu, memory및 omicsResourceWaitTimeoutInMin 필드를 대체합니다. 지시문이 있는 경우 최상위 수준에서 설정해서는 안 됩니다.
사용 사례
| 시나리오 | 설명 |
|---|---|
| GPU에서 GPU로의 대체 | 액셀러레이터(또는 GPU) 유형을 우선 순위에 따라 나열합니다. 예를 들어 nvidia-l40s 먼저를 시도한 다음 로 돌아갑니다nvidia-l4. 워크로드가 액셀러레이터 유형 간에 동일한 경우 명령 변경이 필요하지 않습니다. |
| GPU에서 CPU로의 대체 | CPU 전용 폴백acceleratorType을 생략하는 최종 프로파일을 추가합니다. AWS_HEALTHOMICS_RESOURCE_TYPE 환경 변수를 사용하여 명령을 리소스 유형별로 분기합니다. |
작업 수준 런타임 필드
omicsResourceFallbackOrder를 사용하는 경우 작업 수준 런타임 필드는 두 세트로 분할됩니다.
-
프로필별 필드(acceleratorType, acceleratorCount, cpu, memory, omicsResourceWaitTimeoutInMin) - 목록의 각 프로필에 대해 독립적으로 구성할 수 있습니다.
-
공유 필드(,와 같은 다른 모든 런타임 필드dockermaxRetries) - 최상위 수준에서 한 번 설정하고 모든 프로필에 동일한 방법을 적용합니다.
WDL 예제
다음 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 코드 경로를 모두 지원해야 합니다. 컨테이너에 목록의 모든 리소스 프로파일에 필요한 도구가 포함되어 있는지 확인합니다.
프로필별 필드 참조
omicsResourceFallbackOrder 목록의 각 항목은 하나의 리소스 프로파일을 설명하는 맵입니다. 모든 필드는 선택 사항이며 프로필은 부분 사양일 수 있습니다. 각 프로필은 따옴표로 묶인 (문자열) 키를 사용해야 합니다.
| Field | 유형 | 생략 시 기본값 | 참고 |
|---|---|---|---|
acceleratorType |
문자열 | 지정하지 않으면 프로파일이 CPU로 간주됩니다. | 지원되는 7가지 액셀러레이터 유형 중 하나여야 합니다. HealthOmics 워크플로 정의의 태스크 액셀러레이터을(를) 참조하세요. 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가 다음 프로필로 이동하기 전에 하나의 프로필을 검색하는 기간을 제어합니다. 제한 시간 초과 동작을(를) 참조하세요. |
참고
생략된 필드는 목록의 이전 프로파일에서 상속된 값이 아니라 기본값을 사용합니다. 프로파일에서 제외된 필드는 목록의 이전 프로파일에서 복사된 값이 아닌 문서화된 기본값(위 표에 나와 있음)을 사용합니다.
제한 시간 초과 동작
omicsResourceWaitTimeoutInMin는 HealthOmics가 다음 프로파일로 진행하기 전에 지정된 프로파일에서 액셀러레이터 용량을 기다리는 시간을 제어합니다.
-
전역이 아닌 프로필별입니다. 각 액셀러레이터 프로파일은 고유한 제한 시간을 지정할 수 있습니다. 선호하는 하이엔드 액셀러레이터에 대해 더 긴 대기 시간을 구성하고 폴백 유형에 대해 더 짧은 대기 시간을 구성합니다.
-
최소 권장 시간은 20분입니다. 20분(다중 GPU 번들의 경우 30) 미만의 값은 허용되지만 검증 경고를 생성합니다.
-
제한 시간이 진행되지만 실패하지는 않습니다. 제한 시간이 경과하면 HealthOmics가 다음 프로필로 이동합니다. 작업이 실패하지 않습니다. 실패는 모든 프로필이 소진된 후에만 발생합니다.
-
CPU 전용 프로필에는 적용되지 않습니다. CPU 프로파일에는 용량 제한이 없습니다. 최종 CPU 프로파일omicsResourceWaitTimeoutInMin에서를 생략합니다.
-
재시도는 새로운 제한 시간을 받습니다. 각 OOM 또는 서비스 오류 재시도는 이전 시도에서 이미 소요한 시간을 상속하지 않고 동일한 프로필에서 자체 전체 omicsResourceWaitTimeoutInMin 기간을 시작합니다.
환경 변수
HealthOmics는 명령이 할당된 리소스 프로파일을 기반으로 분기할 수 있도록 작업 컨테이너에서 다음 환경 변수를 설정합니다.
| 변수 | 값 | 예제 값 |
|---|---|---|
AWS_HEALTHOMICS_RESOURCE_TYPE |
활성 프로필acceleratorType의 또는 CPU 전용 프로필의 "cpu" 입니다. |
"nvidia-l40s", "nvidia-l4", "cpu" |
검증 기준
HealthOmics는 워크플로 생성 시 다음을 검증하고 작업 런타임 시 다시 확인합니다. 달리 명시되지 않는 한 모든 규칙은 워크플로 또는 작업을 거부합니다.
-
개별 리소스 지시문과 혼합할 수 없습니다. omicsResourceFallbackOrder이 지정된 경우 동일한 작업에서 최상위 acceleratorType, acceleratorCount, memory, 및 cpu를 지정해서는 omicsResourceWaitTimeoutInMin 안 됩니다.
-
목록이어야 합니다.는 프로필 배열로 작성해야 omicsResourceFallbackOrder 합니다.
-
비워둘 수 없습니다. 목록에는 하나 이상의 프로필이 포함되어야 합니다.
-
따옴표로 묶은 키가 필요합니다. 각 필드 이름은와 같이 따옴표로 묶인 문자열이어야 합니다
{"acceleratorType": "nvidia-l4", "acceleratorCount": 1}. 베어워드 키는 검증에 실패합니다. -
비어 있지 않은 프로필입니다. 빈 프로필(
{})은 허용되지 않습니다. -
acceleratorType 및가 함께 acceleratorCount 이동합니다. 하나를 설정하는 프로필은 다른 프로필을 설정해야 합니다. CPU 프로필은 둘 다 생략해야 합니다.
-
지원되는 액셀러레이터 유형만 해당됩니다.는 지원되는 액셀러레이터 유형이거나 생략(CPU 프로필)이어야 acceleratorType 합니다. 빈 문자열
""은 허용되지 않습니다. -
최소 대기 제한 시간입니다. omicsResourceWaitTimeoutInMin 권장 값은 ≥ 20분입니다(다중 GPU 번들의 경우 ≥ 30).
-
중복 프로필(경고만 해당). 중복 프로필은 허용되지만 경고를 생성합니다. 대신 이전 프로파일omicsResourceWaitTimeoutInMin에서 늘리는 것이 좋습니다.
-
인식할 수 없는 필드가 거부되었습니다. 위에 나열된 프로필당 필드 5개만 허용됩니다.
-
올바른 유형입니다. 예를 들어는 문자열이 아닌 숫자여야 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 워크플로 정의의 태스크 액셀러레이터. -
적절한 대기 제한 시간을 설정합니다. 우선순위가 높은 액셀러레이터 프로파일의 경우 HealthOmicsomicsResourceWaitTimeoutInMin에 용량을 찾는 데 더 많은 시간을 제공하도록를 늘립니다.
-
CPU 프로파일을 마지막으로 배치합니다. CPU 전용 폴백을 포함하는 경우 사용 가능한 경우 액셀러레이터가 선호되도록 마지막 항목이어야 합니다.
-
다중 아키텍처 컨테이너 이미지를 사용합니다. GPU에서 CPU로의 대체를 사용하는 경우 Docker 이미지가 GPU 가속 및 CPU 전용 코드 경로를 모두 지원하는지 확인합니다.
제한 사항
-
omicsResourceFallbackOrder는 scatter 블록 내에서 지원되지 않습니다. 작업 수준에서만 사용할 수 있습니다.
-
GA 출시일부터는 WDL만 지원됩니다. Nextflow 및 CWL 지원이 계획되어 있습니다.
-
인스턴스 유형 이름(예:
omics.g6e.4xlarge)은 리소스 값으로 허용되지 않습니다. 이 페이지에 설명된 프로필별 필드 구문을 사용해야 합니다.