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.
Ejecute la optimización para un HealthOmics flujo de trabajo privado
Puedes optimizar las ejecuciones teniendo en cuenta el coste total, el tiempo total de ejecución o una combinación de ambos. HealthOmics proporciona datos y herramientas que le ayudarán a tomar decisiones de optimización de las ejecuciones. La optimización de la ejecución no se aplica a los flujos de trabajo de Ready2Run, ya que no tienes ningún control sobre la forma en que el servicio gestiona el aprovisionamiento de recursos para estos flujos de trabajo.
El primer paso consiste en comprender el uso actual de los recursos de la tarea y el coste de las tareas en ejecución y, a continuación, aplicar métodos para optimizar el coste y el rendimiento de la ejecución.
Temas
Ejecute Analyzer
HealthOmics proporciona una herramienta de código abierto denominada Run Analyzer
nota
Run Analyzer estima los costos de las tareas y los posibles ahorros de costos en función de los precios AWS de lista en el momento en que se ejecuta la herramienta. Evalúe las recomendaciones de optimización e implemente las que mejor se adapten a sus casos de uso. Pruebe las optimizaciones que adopte para asegurarse de que funcionan para su ejecución.
Run Analyzer realiza las siguientes tareas:
-
Evalúa los cuellos de botella de memoria y computación.
-
Identifica las tareas que están sobreaprovisionadas de memoria o CPU y recomienda nuevos tamaños de instancia que pueden reducir los costes.
-
Calcula las estimaciones de costes de las tareas individuales y calcula los posibles ahorros de costes si aplicas las recomendaciones.
-
Le proporciona una vista cronológica de las tareas para que pueda verificar las dependencias de las tareas y la secuencia de procesamiento. El cronograma también le ayuda a identificar las tareas de larga duración.
-
Proporciona recomendaciones sobre el tamaño del sistema de archivos para el almacenamiento en ejecución.
-
Muestra los tiempos de aprovisionamiento de las tareas para que pueda identificar las áreas en las que las grandes cargas de contenedores pueden estar ralentizando el tiempo de aprovisionamiento.
-
La herramienta incluye un parámetro de entrada (margen de maniobra) que puede utilizar para controlar la agresividad de las recomendaciones de optimización.
Las siguientes secciones incluyen sugerencias específicas para usar Run Analyzer para optimizar las ejecuciones.
Determine los costos de ejecución
Puede utilizar los siguientes métodos y directrices para determinar los costes de ejecución:
-
Para ver los costes de funcionamiento totales de un período de facturación, sigue estos pasos:
-
Abra la consola Billing and Cost Management
y seleccione Bills. En Cargos por servicio, expanda Omics.
Amplíe la región y, a continuación, consulte el costo de todas sus ejecuciones desglosado por tipo de instancia ómica, tipo de almacenamiento de ejecución y flujo de trabajo Ready2Run.
-
-
Para generar un informe de costes que incluya información sobre cada ejecución, sigue estos pasos:
-
Abra la consola de Billing and Cost Management
y seleccione Exportaciones de datos. -
Elija Crear para crear una nueva exportación de datos.
-
Introduzca un nombre de exportación para la exportación de datos. Mantenga los demás campos en sus valores predeterminados para crear un informe CUR (costo y uso).
-
En la granularidad del tiempo, seleccione por hora o por día.
-
En Configuración de almacenamiento de exportación de datos, lleve a cabo estos pasos de configuración:
-
Configure un bucket de Amazon S3 para la exportación de datos.
-
Para el control de versiones de archivos, seleccione si desea sobrescribir el archivo de exportación existente o crear un archivo nuevo cada vez.
El sistema genera el primer informe en las próximas 24 horas y genera los informes posteriores una vez al día.
-
Para obtener más información sobre cómo crear la exportación de datos, consulte Creación de exportaciones de datos en la Guía del usuario de exportación de AWS datos.
-
-
Puede etiquetar sus recorridos para supervisar y optimizar los costes por categoría, por ejemplo, por equipo o por proyecto. Si utilizas etiquetas, sigue estos pasos para ver los costes de las carreras por categoría de etiquetas:
-
Abra la consola de Billing and Cost Management
y seleccione Cost Explorer. En Parámetros del informe > Agrupar por, elija Etiqueta como dimensión y seleccione el nombre de etiqueta deseado.
-
-
Para ver el uso de los recursos en las tareas, consulta el manifiesto de ejecución e inicia sesión CloudWatch. Para obtener más información, consulte Supervisión HealthOmics con CloudWatch registros.
-
Usa la Ejecute Analyzer herramienta para extraer la información sobre el uso de los recursos de la tarea para una ejecución.
Determine el uso del tiempo de ejecución
Puedes usar los siguientes métodos para ayudarte a investigar el uso del tiempo de ejecución:
-
En la página Ejecuciones de la consola, puede ver el tiempo total de ejecución de una ejecución.
-
En la página de detalles de la ejecución, puedes ver los siguientes elementos:
-
Consulta el tiempo total de ejecución de una ejecución.
-
Muestra el tiempo de ejecución de cada tarea de la ejecución.
-
Elija uno de los enlaces para ver los registros en Amazon S3 o para ver los registros de ejecución o los registros del manifiesto de ejecución CloudWatch.
-
-
En la lista Ejecutar tareas, seleccione el enlace Ver registros de una tarea para ver los registros de la tarea CloudWatch.
-
La respuesta a la operación de la
listRuns
API incluye la hora de inicio y la hora de finalización de la ejecución, para que puedas calcular el tiempo total de ejecución. -
La Ejecute Analyzer herramienta muestra la duración de las tareas en una vista de cronograma. Esta herramienta proporciona una representación visual de la secuencia de procesamiento de la tarea, que puede hacer coincidir con el orden esperado.
Métodos para optimizar las ejecuciones
HealthOmics aprovisiona, administra y optimiza automáticamente los recursos que realizan la preparación de datos (como la importación y exportación de datos). HealthOmics también inicia y ejecuta el motor de flujo de trabajo de su flujo de trabajo. Sin embargo, puede influir en las horas de inicio de la ejecución, las horas de inicio de las tareas y el tiempo de ejecución general de las tareas configurando varias configuraciones de ejecución. El enfoque general de la definición y el diseño del flujo de trabajo también afecta al tiempo de ejecución de las tareas. En la siguiente lista se describen los factores que pueden afectar al rendimiento de la ejecución y de las tareas:
- Ejecute el tipo de almacenamiento
-
El tipo de almacenamiento de ejecución afecta al rendimiento de la ejecución y al tiempo de aprovisionamiento de la ejecución. El almacenamiento de ejecución dinámica se aprovisiona más rápido y nunca se queda sin memoria, ya que se escala de forma dinámica en función de las necesidades de almacenamiento de ejecución. El almacenamiento de ejecución dinámica también es una buena opción para los flujos de trabajo en desarrollo, en los que a menudo es posible iniciar y detener un flujo de trabajo para solucionar problemas.
El almacenamiento de ejecución estática requiere tiempos de aprovisionamiento del sistema de archivos más prolongados, pero puede completar algunas ejecuciones más rápido, normalmente si las ejecuciones tienen una alta concurrencia de tareas o requieren más de 9,6 TiB de capacidad del sistema de archivos. El almacenamiento de ejecuciones estáticas es ideal para flujos de trabajo de larga duración con requisitos elevados. I/O
Para ayudarlo a evaluar el costo en comparación con el rendimiento de cada tipo de almacenamiento de ejecución para una ejecución determinada, puede probar las pruebas A/B para ver qué tipo de almacenamiento de ejecución ofrece un mejor rendimiento. Además, considere la posibilidad de utilizar el almacenamiento de ejecución dinámico para sus ciclos de desarrollo y, a continuación, utilice el almacenamiento de ejecución estático para las ejecuciones de producción a escala.
Para obtener más información sobre los tipos de almacenamiento de ejecución Ejecute tipos de almacenamiento en HealthOmics flujos de trabajo
- Aprovisione en exceso el almacenamiento estático de ejecución
-
Si el cálculo de las tareas del flujo de trabajo se ve limitado por I/O, consider over-provisioning the static run storage. Storage cost increases with its size, but maximum throughput of the file system also increases. If an expensive compute task is experiencing I/O cuellos de botella, aumentar el tamaño del sistema de archivos para reducir el tiempo de ejecución de la tarea puede reducir el coste total.
- Reduzca el tamaño de las imágenes del contenedor
-
Cuando se inicia cada tarea, HealthOmics carga el contenedor que especificó para la tarea. Los contenedores más grandes tardan más en cargarse. Optimice sus contenedores para que sean lo más pequeños posible para mejorar la eficiencia a la hora de lanzar nuevas tareas. Si agrega conjuntos de datos de gran tamaño a sus contenedores, considere la posibilidad de almacenar los conjuntos de datos en S3 y hacer que su flujo de trabajo importe los datos de S3. Para conocer los tamaños máximos de contenedores admitidos HealthOmics , consulte. HealthOmics cuotas de tamaño fijo del flujo de trabajo
- Tamaño de tarea
-
Puede combinar pequeñas tareas secuenciales en una sola tarea para ahorrar tiempo de aprovisionamiento de tareas. Además, HealthOmics tiene una duración mínima de un minuto por tarea, por lo que la combinación de tareas puede reducir los costes. Dentro de la tarea combinada, es posible que pueda utilizar canales Unix para evitar el I/O coste de serializar y deserializar los archivos.
- Compresión de archivos
-
Evite comprimir demasiado los archivos intermedios del flujo de trabajo. La mayoría de los formatos de genómica utilizan la compresión «gzip» o «block gzip». Descomprimir el archivo de entrada de la tarea y volver a comprimir el archivo de salida de la tarea puede consumir un gran porcentaje del uso total de la CPU de la tarea. Algunas aplicaciones de genómica permiten establecer el nivel de compresión al serializar los resultados. Al reducir el nivel de compresión, puede reducir el tiempo de CPU, aunque los archivos más grandes aumentan el tiempo dedicado a escribir en el disco. En función de la tarea y de la aplicación, podrá encontrar el nivel de compresión óptimo para los archivos intermedios que reduzcan el tiempo de ejecución. Le recomendamos que comience por centrarse en las tareas con los archivos de salida más grandes. Un nivel de compresión de 2 funciona bien en varios escenarios. Puede empezar con este nivel para su caso de uso y comparar los resultados probando otros niveles de compresión.
- Recuento de hilos
-
Si especificas subprocesos en la definición de tu tarea, establece el número de subprocesos en el mismo valor que el número de subprocesos solicitadosCPUs.
- Especifique el cómputo y la memoria
-
Si no especificas recursos de memoria o cómputo en tu tarea, HealthOmics asigna el tipo de instancia más pequeño (
omics.c.large
) como predeterminado. Declara de forma explícita tus requisitos de memoria y procesamiento si quieres HealthOmics asignar un tipo de instancia más grande.HealthOmics asigna la cantidad de recursos vCPUs, de memoria y de GPU que solicites. Por ejemplo, si solicitas 15 v CPUs y 33 GiB, HealthOmics asigna una instancia omics.m.4xl (16 v, 64 GB) para tu tareaCPUs, pero tu tarea solo puede usar 15 v y 33 GiB. CPUs Por lo tanto, te recomendamos que solicites v y recursos de memoria que coincidan con una instancia ómica. CPUs
- Batch varias muestras en una sola ejecución
-
Como el aprovisionamiento del sistema de archivos lleva tiempo al inicio de la ejecución, puede ahorrar tiempo de aprovisionamiento agrupando varias muestras en la misma ejecución. Tenga en cuenta los siguientes factores antes de decidirse por este enfoque:
-
Una sola muestra defectuosa puede provocar un error en un flujo de trabajo, por lo que agrupar muestras por lotes podría aumentar el número de flujos de trabajo fallidos. Si no está seguro de que su flujo de trabajo vaya a funcionar correctamente la mayoría de las veces, una ejecución por muestra podría ser una mejor opción.
-
HealthOmics asigna un sistema de archivos de almacenamiento de una ejecución para todo el flujo de trabajo. Para un lote de muestras, asegúrese de especificar una cantidad de almacenamiento lo suficientemente grande como para procesar todas las muestras.
-
Hay una cantidad máxima de almacenamiento de ejecuciones por flujo de trabajo, por lo que puede limitar la cantidad de muestras que puede añadir al lote.
-
El tamaño mínimo de almacenamiento de las tiradas es de 1,2 TiB, por lo que el procesamiento por lotes puede reducir los costes si el flujo de trabajo utiliza mucho menos almacenamiento que el mínimo para cada muestra.
-
El almacenamiento de ejecución puede gestionar varias conexiones simultáneas, por lo que tener varias tareas utilizando el mismo almacenamiento de ejecución no debería provocar I/O cuellos de botella.
-
Cada ejecución tiene su propio conjunto de etiquetas. Si etiqueta los flujos de trabajo con información para presupuestar o realizar un seguimiento, puede ser mejor utilizar ejecuciones independientes.
-
Las funciones de IAM se aplican a toda la ejecución. Cada usuario tiene acceso a todos los datos de un lote de muestras. Al tener flujos de trabajo separados, podrá utilizar permisos más detallados.
-
HealthOmics establece cuotas a nivel de cuenta para el número máximo de flujos de trabajo simultáneos y el número máximo de tareas simultáneas en un flujo de trabajo. Para obtener información sobre cómo solicitar un aumento de estas cuotas, consulte. HealthOmics cuotas de servicio
-
- Utilice parámetros para las imágenes del contenedor
-
Parametriza las imágenes del contenedor en lugar de incrustarlas URIs en el flujo de trabajo. Cuando son parámetros de ejecución, HealthOmics valida que la ejecución tenga acceso a sus contenedores antes de que comience la ejecución. De lo contrario, la tarea fallará durante la ejecución, cuando haya incurrido en cargos por cualquier tarea completada. Además, dado que se trata de entradas parametrizadas, HealthOmics genera una suma de comprobación en el manifiesto de la ejecución, lo que mejora la procedencia de la ejecución.
- Usa un linter
-
Use un linter para encontrar errores comunes en el flujo de trabajo antes de ejecutar un nuevo flujo de trabajo. Para obtener más información, consulte Lentes de flujo de trabajo en HealthOmics.
- Se usa EventBridge para marcar problemas
-
Utilice alertas EventBridge personalizadas para atrapar las anomalías específicas de su lógica empresarial.
- Utilice almacenes de secuencias
-
Considere la posibilidad de utilizar un almacén de secuencias para sus datos de origen a fin de ahorrar costes de almacenamiento. Para obtener más información, consulte la entrada de HealthOmics blog sobre cómo almacenar datos ómicos de forma rentable a cualquier escala
.
Impacto de la variación del tamaño de los archivos entre ejecuciones
Los usuarios suelen diseñar y probar las ejecuciones con un conjunto pequeño de datos de prueba y, a continuación, se encuentran con una amplia variedad de datos con una variación significativa en el tamaño de los archivos en las tiradas de producción. Asegúrese de tener en cuenta esta variación al optimizar la ejecución.
En la siguiente lista se describen las recomendaciones de optimización cuando hay una variación significativa en el tamaño de los archivos:
- Varíe los tamaños de los archivos en los datos de las pruebas
-
Intente utilizar datos de prueba durante el desarrollo que tengan una cantidad de varianza representativa.
- Utilice Run Analyzer
-
Utilice la herramienta Run Analyzer en una variedad de muestras para tener en cuenta la variación en el tamaño de los datos.
Puede usar el analizador de corridas para comprender la varianza entre las ejecuciones en sus muestras de datos de producción. Utilice
--batch
el modo de Run Analyzer para generar estadísticas para un lote de ejecuciones y analizar los recursos informáticos máximos necesarios para gestionar los valores atípicos de los conjuntos de datos.Por ejemplo, puede proporcionar al analizador de ejecución una celda de datos de flujo completo en modo por lotes para comprender el uso máximo de vCPU y memoria en la celda de flujo completo.
- Reduzca la variación de tamaño de los conjuntos de datos de entrada
-
Si observa una gran variación en los tamaños de las muestras, puede bifurcar las muestras en sentido ascendente HealthOmics y seleccionar diferentes tamaños de sistema de archivos para cada lote a fin de ahorrar costes de almacenamiento.
En WDL, utilice la
size
función para bifurcar la asignación de recursos para tareas individuales en el caso de muestras grandes y pequeñas. Aplica esta estrategia a tus tareas más costosas para lograr el mayor impacto.En Nextflow, usa recursos condicionales para organizar la asignación de recursos por niveles según el tamaño o el nombre del archivo. Para obtener más información, consulte Recursos de procesos condicionales
en el sitio de GitHub Nextflow. - No optimice demasiado pronto
-
Finalice el código y la lógica de su flujo de trabajo antes de invertir en importantes esfuerzos de ajuste del rendimiento. Cambiar el código puede tener un impacto significativo en los recursos necesarios. Si optimizas una ejecución demasiado pronto en el proceso de desarrollo, es posible que la optimices en exceso o que tengas que volver a optimizarla si la definición del flujo de trabajo cambia más adelante.
- Vuelva a ejecutar la herramienta Run Analyzer periódicamente
-
Si realiza cambios en la definición de su flujo de trabajo a lo largo del tiempo o si la varianza de la muestra cambia, ejecute periódicamente la herramienta Run Analyzer para ayudarle a realizar optimizaciones adicionales.
Métodos para optimizar la simultaneidad de recursos
HealthOmics proporciona las siguientes funciones para ayudarle a controlar y gestionar los costes cuando el procesamiento se ejecuta a gran escala:
-
Utilice grupos de ejecución para controlar los costes y el uso de los recursos. Puede establecer valores máximos en el grupo de ejecuciones para el número de ejecuciones simultáneas CPUs GPUs, v y el tiempo total de ejecución por tarea. Si distintos equipos o grupos utilizan la misma cuenta, puedes crear un grupo de carreras independiente para cada equipo. Puedes controlar el uso de los recursos y los costes por equipo y configurar los valores máximos del grupo de carreras. Para obtener más información, consulte Creación de grupos de HealthOmics carreras.
-
Durante el desarrollo, puedes configurar un grupo de ejecución independiente con valores máximos más bajos para catch runaway tasks.
-
Service Quotas también ayuda a proteger tu cuenta de solicitudes de recursos excesivas. Para obtener información sobre Service Quotas, incluida la forma de solicitar aumentos en el valor de las cuotas, consulte HealthOmics cuotas de servicio