View a markdown version of this page

Configuración avanzada de recursos - AWS HealthOmics

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configuración avanzada de recursos

Con la omicsResourceFallbackOrder directiva, puedes declarar una lista ordenada de perfiles de recursos (por ejemplo, de acelerador y de CPU) para una tarea dentro de tu flujo de trabajo. Esta directiva se especifica a nivel de tarea. HealthOmics busca cada perfil en el orden que especifiques para reservar la disponibilidad. Si la capacidad no está disponible durante el tiempo de espera, HealthOmics pasa al siguiente perfil de recursos de la lista.

Esto resulta útil cuando la capacidad de tu acelerador preferida (por ejemplo, el G6e connvidia-l40s) no está disponible y prefieres recurrir a un tipo de acelerador diferente o a una CPU en lugar de fallar en la ejecución.

Funcionamiento

  1. En la directiva se define una lista ordenada de perfiles de recursos. omicsResourceFallbackOrder

  2. En tiempo de ejecución, HealthOmics intenta reservar capacidad para el primer perfil de la lista.

  3. Si la capacidad no está disponible durante el tiempo de espera, HealthOmics pasa al siguiente perfil.

  4. La tarea se ejecuta en el perfil que tenga éxito primero.

  5. Si todos los perfiles de la lista fallan, la tarea falla por un motivo. ALL_PROFILES_INSTANCE_RESERVATION_FAILED No se realizará ningún reintento del motor cuando todos los perfiles no estén disponibles.

nota

omicsResourceFallbackOrderreemplaza los omicsResourceWaitTimeoutInMin campos habitualesacceleratorType, acceleratorCount cpumemory, y de la tarea. Estos no deben establecerse al más alto nivel cuando la directiva esté vigente.

Casos de uso

Escenario Description (Descripción)
Alternativa de GPU a GPU Enumera los tipos de aceleradores (o GPU) en orden de prioridad. Por ejemplo, inténtelo nvidia-l40s primero y, a continuación, recurra anvidia-l4. No es necesario cambiar los comandos si la carga de trabajo es la misma en todos los tipos de aceleradores.
Alternativa de GPU a CPU Agregue un perfil final que omita la opción de respaldoacceleratorType. CPU-only Utilice la variable de AWS_HEALTHOMICS_RESOURCE_TYPE entorno para bifurcar el comando por tipo de recurso.

Task-level campos de tiempo de ejecución

Cuando se usanomicsResourceFallbackOrder, los campos de ejecución a nivel de tarea se dividen en dos conjuntos:

  • Per-profile campos (acceleratorType,, acceleratorCount cpumemory,omicsResourceWaitTimeoutInMin): se pueden configurar de forma independiente para cada perfil de la lista.

  • Campos compartidos (todos los demás campos de tiempo de ejecución, comodocker,maxRetries): se configuran una vez en el nivel superior y se aplican de la misma manera a todos los perfiles.

Ejemplo de WDL

La siguiente tarea de WDL busca nvidia-l40s primero (espera hasta 45 minutos para obtener capacidad), luego nvidia-l4 (ventana de espera predeterminada) y, a continuación, recurre a un CPU-only perfil (32 vCPU, 128 GiB) si no hay ningún tipo de acelerador disponible.

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"} ] } }

En este ejemplo, AWS_HEALTHOMICS_RESOURCE_TYPE indica al comando qué ruta de recursos se seleccionó (por ejemplo, "nvidia-l40s" o). "cpu"

nota

La imagen de Docker debe admitir las rutas de código del acelerador y de la CPU si tu orden alternativa contiene un perfil de CPU. Asegúrate de que tu contenedor incluya las herramientas necesarias para todos los perfiles de recursos de la lista.

Per-profile referencia de campo

Cada entrada de la omicsResourceFallbackOrder lista es un mapa que describe un perfil de recurso. Todos los campos son opcionales; un perfil puede ser una especificación parcial. Cada perfil debe usar claves entre comillas (cadenas).

Campo Tipo Predeterminado cuando se omite Notas
acceleratorType Cadena Si no se especifica, el perfil se considera como CPU Debe ser uno de los 7 tipos de aceleradores compatibles. Consulte Aceleradores de tareas en una definición de flujo de trabajo HealthOmics. Omita este campo para especificar un CPU-only perfil. Para el perfil de CPU, no lo defina "" como.
acceleratorCount Entero Campo ausente cuando también acceleratorType está ausente Debe especificarse junto conacceleratorType. Un perfil no puede tener uno sin el otro.
cpu Entero o flotante 1 vCPU o tipo de instancia de GPU predeterminado si un perfil de GPU lo omite Redondeado hacia arriba a la vCPU completa más cercana (mínimo 1). El mismo soporte fraccionario que la directiva de nivel superiorruntime.cpu.
memory Cadena (por ejemplo,) "32 GiB" 1 GiB, o un tipo de instancia de GPU predeterminado si un perfil de GPU lo omite El mismo formato que la directiva de nivel superior. runtime.memory
omicsResourceWaitTimeoutInMin Entero 20 minutos para el paquete de acelerador de una sola GPU y 30 minutos para los paquetes de acelerador de varias GPU. Estos también son los valores mínimos recomendados. No hay límite superior. Controla la duración de las HealthOmics búsquedas de un perfil antes de pasar al siguiente. Consulte Comportamiento de los tiempos de espera.
nota

Los campos omitidos toman el valor predeterminado, no los valores heredados de un perfil anterior de la lista. Un campo que no figura en un perfil adopta su valor predeterminado documentado (como se indica en la tabla anterior), no un valor copiado de un perfil anterior de la lista.

Comportamiento de los tiempos de espera

omicsResourceWaitTimeoutInMincontrola el tiempo de HealthOmics espera para que se agote la capacidad del acelerador en un perfil determinado antes de pasar al siguiente.

  • Per-profile, no global. Cada perfil de acelerador puede especificar su propio tiempo de espera. Configure una espera más larga para el acelerador de gama alta que prefiera y una espera más corta para un tipo alternativo.

  • Se recomienda un mínimo de 20 minutos. Se aceptan valores inferiores a 20 minutos (30 para paquetes con varias GPU), pero generan una advertencia de validación.

  • El tiempo de espera avanza, no falla. Cuando transcurre el tiempo de espera, HealthOmics pasa al siguiente perfil; la tarea no falla. El error solo se produce cuando se agotan todos los perfiles.

  • No se aplica a CPU-only los perfiles. Un perfil de CPU no tiene limitaciones de capacidad. Omite omicsResourceWaitTimeoutInMin en el perfil final de la CPU.

  • Los reintentos reciben una nueva ventana de tiempo de espera. Cada intento de OOM o error de servicio inicia su propia omicsResourceWaitTimeoutInMin ventana completa en el mismo perfil, en lugar de heredar el tiempo ya empleado en un intento anterior.

Variables de entorno

HealthOmics establece la siguiente variable de entorno en el contenedor de tareas para que el comando pueda ramificarse en función del perfil de recursos que se haya asignado:

Variable Valor Valores de ejemplo
AWS_HEALTHOMICS_RESOURCE_TYPE El acceleratorType del perfil activo o el "cpu" de un CPU-only perfil. "nvidia-l40s", "nvidia-l4", "cpu"

Criterios de validación

HealthOmics valida lo siguiente en el momento de crear el flujo de trabajo y vuelve a comprobarlo durante la ejecución de la tarea. Todas las reglas rechazan el flujo de trabajo o la tarea, a menos que se indique lo contrario.

  1. No se puede combinar con las directivas de recursos individuales. Si omicsResourceFallbackOrder se especifica, el nivel superioracceleratorType,acceleratorCount, cpumemory, y no omicsResourceWaitTimeoutInMin debe especificarse en la misma tarea.

  2. Debe ser una lista. omicsResourceFallbackOrderdebe escribirse como una matriz de perfiles.

  3. No puede estar vacío. La lista debe contener al menos un perfil.

  4. Se requieren las claves entre comillas. Cada nombre de campo debe ser una cadena entre comillas, por ejemplo{"acceleratorType": "nvidia-l4", "acceleratorCount": 1}. Las claves de palabras simples no se validan.

  5. Non-empty perfiles. No se permite un perfil vacío ({}).

  6. acceleratorTypey acceleratorCount vayan juntos. Un perfil que defina uno debe establecer el otro. Un perfil de CPU debe omitir ambos.

  7. Solo los tipos de aceleradores compatibles. acceleratorTypedebe ser un tipo de acelerador compatible o estar omitido (perfil de CPU). No "" se acepta una cadena vacía.

  8. Tiempo de espera mínimo. omicsResourceWaitTimeoutInMinel valor recomendado es ≥ 20 minutos (≥ 30 para paquetes con varias GPU).

  9. Perfiles duplicados (solo con advertencia). Se permiten perfiles duplicados, pero generan una advertencia. omicsResourceWaitTimeoutInMinEn su lugar, considere aumentar el perfil anterior.

  10. Se rechazaron los campos no reconocidos. Solo se permiten los cinco campos por perfil enumerados anteriormente.

  11. Tipos correctos. Por ejemplo, cpu debe ser un número, no una cadena.

  12. Como máximo, un perfil de CPU. Solo se permite un perfil que acceleratorType omita.

  13. Máximo 10 perfiles por tarea.

Interacción con reintentos

En el Out-of-Memory caso de errores (OOM) y de servicio (excepto 5 vecesALL_PROFILES_INSTANCE_RESERVATION_FAILED), HealthOmics vuelva a intentar la tarea de la siguiente manera:

  • Los reintentos se producen en el perfil actualmente activo que anteriormente se reservó correctamente.

  • Los reintentos nunca avanzan al siguiente perfil en el orden alternativo.

  • Los reintentos agotados fallan en la tarea. maxRetries

Para obtener más información sobre los reintentos de tareas, consulte. HealthOmics La tarea se reintenta

nota

Si todos los perfiles se agotan en el primer intento del motor sin reserva de instancias, el motor no realiza la tarea y, posteriormente, pasa a ejecutar con el estadoALL_PROFILES_INSTANCE_RESERVATION_FAILED. Incluso si ha configurado los reintentos, HealthOmics no vuelva a intentarlo para obtener este código de error. Le recomendamos que lo ajuste de forma adecuada. omicsResourceWaitTimeoutInMin

Prácticas recomendadas

  • Evita usar paquetes con varias GPU en el orden alternativo. Los tipos de aceleradores que abarcan varias familias de instancias (por ejemplo,nvidia-t4-a10g-l4) no se recomiendan en interioresomicsResourceFallbackOrder. En su lugar, usa tipos unifamiliares. Para obtener más información sobre los tipos de aceleradores disponibles, consulteAceleradores de tareas en una definición de flujo de trabajo HealthOmics.

  • Establezca los tiempos de espera adecuados. Para los perfiles de aceleradores de alta prioridad, aumente omicsResourceWaitTimeoutInMin para HealthOmics tener más tiempo para encontrar capacidad.

  • Coloque los perfiles de la CPU en último lugar. Si incluyes una CPU-only alternativa, debe ser la última entrada, por lo que se prefieren los aceleradores cuando estén disponibles.

  • Usa imágenes de contenedores con varias arquitecturas. Cuando utilices el respaldo de GPU a CPU, asegúrate de que tu imagen de Docker sea compatible con ambas rutas GPU-accelerated de CPU-only código.

Limitaciones

  • omicsResourceFallbackOrderno se admite en scatter bloques. Solo está disponible a nivel de tarea.

  • A partir de la fecha de lanzamiento en GA, solo se admite la WDL. Está previsto que Nextflow y CWL sean compatibles.

  • Instance-type los nombres (por ejemplo,omics.g6e.4xlarge) no se aceptan como valores de recursos. Debe usar la sintaxis de campo por perfil que se describe en esta página.