Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Exécuter l'optimisation pour un HealthOmics flux de travail privé
Vous pouvez optimiser les cycles en fonction du coût total, de la durée d'exécution totale ou d'une combinaison des deux. HealthOmics fournit des données et des outils pour vous aider à prendre des décisions d'optimisation. L'optimisation d'exécution ne s'applique pas aux flux de travail Ready2Run, car vous n'avez aucun contrôle sur la façon dont le service gère le provisionnement des ressources pour ces flux de travail.
La première étape consiste à comprendre l'utilisation actuelle des ressources des tâches et le coût des tâches en cours d'exécution, puis à appliquer des méthodes pour optimiser le coût d'exécution et les performances.
Rubriques
Exécuter l'analyseur
HealthOmics fournit un outil open source nommé Run Analyzer
Note
Run Analyzer estime le coût des tâches et les économies potentielles en fonction AWS des prix catalogue au moment de l'exécution de l'outil. Évaluez les recommandations d'optimisation et mettez en œuvre celles qui conviennent à vos cas d'utilisation. Testez les optimisations que vous adoptez pour vous assurer qu'elles conviennent à votre course.
Run Analyzer exécute les tâches suivantes :
-
Évalue les goulots d'étranglement liés à la mémoire et au calcul.
-
Identifie les tâches surprovisionnées en mémoire ou en processeur, et recommande de nouvelles tailles d'instance susceptibles de réduire les coûts.
-
Calcule les estimations de coûts pour des tâches individuelles et calcule les économies potentielles si vous appliquez les recommandations.
-
Fournit une vue chronologique des tâches afin que vous puissiez vérifier les dépendances entre les tâches et la séquence de traitement. La chronologie vous aide également à identifier les tâches à long terme.
-
Fournit des recommandations concernant la taille du système de fichiers pour le stockage d'exécution.
-
Vous indique les délais de provisionnement des tâches afin que vous puissiez identifier les zones dans lesquelles les chargements de conteneurs importants peuvent ralentir le temps de provisionnement.
-
L'outil inclut un paramètre d'entrée (marge de manœuvre) que vous pouvez utiliser pour contrôler l'agressivité des recommandations d'optimisation.
Les sections suivantes contiennent des suggestions spécifiques pour utiliser Run Analyzer afin d'optimiser les exécutions.
Déterminer les coûts de fonctionnement
Vous pouvez utiliser les méthodes et directives suivantes pour déterminer les coûts d'exploitation :
-
Pour consulter le total des coûts d'exploitation pour une période de facturation, procédez comme suit :
-
Ouvrez la console Billing and Cost Management
et sélectionnez Bills. Dans Charges par service, développez Omics.
Élargissez la région, puis visualisez le coût de toutes vos exécutions détaillé par type d'instance omics, type de stockage d'exécution et flux de travail Ready2Run.
-
-
Pour générer un rapport de coûts incluant des informations pour chaque cycle, procédez comme suit :
-
Ouvrez la console Billing and Cost Management
et choisissez Data Exports. -
Choisissez Créer pour créer une nouvelle exportation de données.
-
Entrez un nom d'exportation pour l'exportation de données. Conservez les valeurs par défaut des autres champs pour créer un rapport CUR (coût et utilisation).
-
Pour la granularité horaire, sélectionnez horaire ou quotidien.
-
Sous Paramètres de stockage des exportations de données, effectuez les étapes de configuration suivantes :
-
Configurez un compartiment Amazon S3 pour l'exportation des données.
-
Pour le contrôle des versions de fichiers, indiquez si vous souhaitez remplacer le fichier d'exportation existant ou créer un nouveau fichier à chaque fois.
Le système génère le premier rapport dans les 24 heures qui suivent et les rapports suivants une fois par jour.
-
Pour plus d'informations sur la création de l'exportation de données, voir Création d'exportations de données dans le Guide de l'utilisateur AWS des exportations de données.
-
-
Vous pouvez étiqueter vos courses pour surveiller et optimiser les coûts par catégorie, par exemple par équipe ou par projet. Si vous utilisez des balises, procédez comme suit pour afficher les coûts d'exploitation par catégorie de balises :
-
Ouvrez la console Billing and Cost Management
et choisissez Cost Explorer. Dans Paramètres du rapport > Regrouper par, choisissez Tag comme dimension et sélectionnez le nom de balise souhaité.
-
-
Pour connaître l'utilisation des ressources pour les tâches, consultez le manifeste d'exécution pour vous connecter CloudWatch. Pour de plus amples informations, veuillez consulter Surveillance à HealthOmics l'aide de CloudWatch journaux.
-
Utilisez l'Exécuter l'analyseuroutil pour extraire les informations d'utilisation des ressources d'une tâche pour une exécution.
Déterminer l'utilisation du temps d'exécution
Vous pouvez utiliser les méthodes suivantes pour étudier l'utilisation du temps d'exécution :
-
Sur la page Exécutions de la console, vous pouvez consulter le temps d'exécution total d'une exécution.
-
Sur la page Détails de l'exécution, vous pouvez consulter les éléments suivants :
-
Afficher la durée totale d'une exécution.
-
Affichez le temps d'exécution de chaque tâche en cours d'exécution.
-
Choisissez l'un des liens pour afficher les journaux dans Amazon S3, ou pour consulter les journaux d'exécution ou les journaux d'exécution du manifeste CloudWatch.
-
-
Dans la liste Exécuter les tâches, cliquez sur le lien Afficher les journaux d'une tâche pour afficher les connexions de la tâche CloudWatch.
-
La réponse à l'opération d'
listRuns
API inclut l'heure de début et l'heure de fin de l'exécution, afin que vous puissiez calculer la durée d'exécution totale. -
L'Exécuter l'analyseuroutil affiche la durée des tâches sur une vue chronologique. Cet outil fournit une représentation visuelle de la séquence de traitement des tâches, que vous pouvez faire correspondre à l'ordre attendu.
Méthodes pour optimiser les courses
HealthOmics provisionne, gère et optimise automatiquement les ressources qui assurent le transfert des données (telles que les importations et les exportations de données). HealthOmics démarre et exécute également le moteur de flux de travail pour votre flux de travail. Cependant, vous pouvez influencer les heures de début d'exécution, les heures de début des tâches et la durée globale d'exécution des tâches en définissant différentes configurations d'exécution. Votre approche globale de la définition et de la conception du flux de travail a également un impact sur le temps d'exécution des tâches. La liste suivante décrit les facteurs susceptibles d'affecter les performances d'exécution et de tâche :
- Type de stockage d'exécution
-
Le type de stockage d'exécution a un impact sur les performances d'exécution et le temps de provisionnement de l'exécution. Le stockage à exécution dynamique s'approvisionne plus rapidement et ne manque jamais de mémoire, car il évolue de manière dynamique en fonction de vos besoins en stockage d'exécution. Le stockage dynamique convient également aux flux de travail en cours de développement, dans lesquels vous pouvez souvent démarrer et arrêter un flux de travail pour résoudre des problèmes.
Le stockage à exécution statique nécessite des temps de provisionnement du système de fichiers plus longs, mais peut effectuer certaines exécutions plus rapidement, généralement si les exécutions comportent une grande simultanéité des tâches ou nécessitent une capacité de système de fichiers supérieure à 9,6 TiB. Le stockage statique convient parfaitement aux flux de travail de longue durée soumis à des I/O exigences élevées.
Pour vous aider à évaluer le coût par rapport aux performances de chaque type de stockage exécuté pour un cycle donné, vous pouvez effectuer des tests A/B pour déterminer quel type de stockage d'exécution offre les meilleures performances. Pensez également à utiliser le stockage dynamique pour vos cycles de développement, puis à utiliser le stockage statique pour les cycles de production à grande échelle.
Pour plus d'informations sur les types de stockage d'exécution Exécuter les types de stockage dans les HealthOmics flux de travail
- Surprovisionner le stockage statique
-
Si le calcul des tâches de votre flux de travail est limité par des goulots d'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étranglement, l'augmentation de la taille du système de fichiers pour réduire le temps d'exécution des tâches peut réduire le coût global.
- Réduire la taille des images des conteneurs
-
Lorsque chaque tâche démarre, HealthOmics charge le conteneur que vous avez spécifié pour la tâche. Les grands conteneurs prennent plus de temps à charger. Optimisez vos conteneurs pour qu'ils soient aussi petits que possible afin d'améliorer l'efficacité du lancement de nouvelles tâches. Si vous ajoutez de grands ensembles de données à vos conteneurs, envisagez de les stocker dans S3 et de demander à votre flux de travail d'importer les données depuis S3. Pour les tailles maximales de conteneurs HealthOmics compatibles, voirHealthOmics quotas de taille fixe du flux de travail.
- Taille de la tâche
-
Vous pouvez combiner de petites tâches séquentielles en une seule tâche afin de gagner du temps dans le provisionnement des tâches. De plus, la durée minimale des tâches HealthOmics est facturée d'une minute, de sorte que la combinaison des tâches peut réduire les coûts. Dans le cadre de la tâche combinée, vous pourrez peut-être utiliser des canaux Unix pour éviter les I/O coûts liés à la sérialisation et à la désérialisation des fichiers.
- Compression de fichiers
-
Évitez de trop compresser les fichiers intermédiaires du flux de travail. La plupart des formats génomiques utilisent la compression « gzip » ou « block gzip ». La décompression du fichier d'entrée de tâche et la recompression du fichier de sortie de tâche peuvent consommer un pourcentage important de l'utilisation totale du processeur de la tâche. Certaines applications de génomique vous permettent de définir le niveau de compression lors de la sérialisation des sorties. En réduisant le niveau de compression, vous pouvez réduire le temps du processeur, même si des fichiers plus volumineux augmentent le temps passé à écrire sur le disque. En fonction de la tâche et de l'application, vous pouvez trouver le niveau de compression optimal pour les fichiers intermédiaires dont le temps d'exécution est le plus court. Nous vous recommandons de commencer par cibler les tâches dont les fichiers de sortie sont les plus volumineux. Un niveau de compression de 2 fonctionne bien pour plusieurs scénarios. Vous pouvez commencer par ce niveau pour votre cas d'utilisation et comparer les résultats en essayant d'autres niveaux de compression.
- Nombre de fils
-
Si vous spécifiez des threads dans votre définition de tâche, définissez le nombre de threads sur la même valeur que le nombre de threads demandésCPUs.
- Spécifier le calcul et la mémoire
-
Si vous ne spécifiez pas de mémoire ou de ressources de calcul dans votre tâche, HealthOmics attribuez le type d'instance le plus petit (
omics.c.large
) par défaut. Déclarez explicitement vos besoins en mémoire et en calcul si vous HealthOmics souhaitez attribuer un type d'instance plus important.HealthOmics alloue le nombre de ressources vCPUs, de mémoire et de GPU que vous demandez. Par exemple, si vous demandez 15 V CPUs et 33 Go, HealthOmics alloue une instance omics.m.4xl (16 V, 64 Go) à votre tâcheCPUs, mais celle-ci ne peut utiliser que 15 V et 33 Go. CPUs Par conséquent, nous vous recommandons de demander des ressources v CPUs et mémoire qui correspondent à une instance omics.
- Batch de plusieurs échantillons en une seule fois
-
Comme le provisionnement du système de fichiers prend du temps au début de l'exécution, vous pouvez gagner du temps en regroupant plusieurs échantillons dans le même cycle. Tenez compte des facteurs suivants avant de choisir cette approche :
-
Un seul échantillon défectueux peut entraîner l'échec d'un flux de travail. Le traitement par lots d'échantillons peut donc augmenter le nombre de flux de travail défaillants. Si vous n'êtes pas sûr que votre flux de travail réussira la plupart du temps, une exécution par échantillon pourrait être une meilleure approche.
-
HealthOmics alloue un système de fichiers de stockage en une seule exécution pour l'ensemble du flux de travail. Pour un lot d'échantillons, assurez-vous de spécifier une quantité de stockage d'essais suffisante pour traiter tous les échantillons.
-
La quantité maximale de stockage par flux de travail est limitée, ce qui peut limiter le nombre d'échantillons que vous pouvez ajouter au lot.
-
La taille de stockage minimale est de 1,2 TiB. Le traitement par lots peut donc réduire les coûts si le flux de travail utilise beaucoup moins d'espace de stockage que le minimum requis pour chaque échantillon.
-
Le stockage d'exécution peut gérer plusieurs connexions simultanées. Le fait que plusieurs tâches utilisent le même stockage d'exécution ne devrait donc pas provoquer de goulots d' I/O étranglement.
-
Chaque course possède son propre ensemble de balises. Si vous balisez les flux de travail avec des informations à des fins de budgétisation ou de suivi, il peut être préférable d'utiliser des cycles séparés.
-
Les rôles IAM s'appliquent à l'ensemble de la course. Chaque utilisateur a accès à toutes les données d'un lot d'échantillons. La séparation des flux de travail vous permet d'utiliser des autorisations plus précises.
-
HealthOmics définit des quotas au niveau du compte pour le nombre maximum de flux de travail simultanés et le nombre maximum de tâches simultanées dans un flux de travail. Pour plus d'informations sur la procédure à suivre pour demander une augmentation de ces quotas, voirHealthOmics quotas de service.
-
- Utiliser des paramètres pour les images de conteneurs
-
Paramétrez les images de vos conteneurs plutôt que de les intégrer URIs dans le flux de travail. Lorsqu'il s'agit de paramètres d'exécution, cela HealthOmics confirme que l'exécution a accès à vos conteneurs avant le début de l'exécution. Dans le cas contraire, la tâche échoue pendant l'exécution, lorsque vous avez engagé des frais pour toutes les tâches terminées. De plus, comme il s'agit d'entrées paramétrées, il HealthOmics génère une somme de contrôle dans le manifeste d'exécution, ce qui améliore la provenance des exécutions.
- Utilisez un linter
-
Utilisez un linter pour détecter les erreurs de flux de travail courantes avant d'exécuter un nouveau flux de travail. Pour de plus amples informations, veuillez consulter Linters de flux de travail dans HealthOmics.
- EventBridge À utiliser pour signaler les problèmes
-
Utilisez des alertes EventBridge personnalisées pour détecter les anomalies spécifiques à votre logique métier.
- Utiliser des magasins de séquences
-
Envisagez d'utiliser un magasin de séquences pour vos données sources afin de réduire les coûts de stockage. Pour plus d'informations, consultez le billet de HealthOmics blog intitulé Store omics data de manière rentable à n'importe quelle échelle
.
Impact de la variation de taille de fichier entre les exécutions
Les utilisateurs conçoivent et testent souvent des séries en utilisant un petit ensemble de données de test, puis rencontrent une grande variété de données présentant une variation significative de la taille des fichiers lors des cycles de production. Assurez-vous de prendre en compte cet écart lorsque vous optimisez la course.
La liste suivante décrit les recommandations d'optimisation en cas de variation significative de la taille des fichiers :
- Variez la taille des fichiers dans vos données de test
-
Essayez d'utiliser des données de test présentant une variance représentative pendant le développement.
- Utiliser Run Analyzer
-
Utilisez l'outil Run Analyzer sur divers échantillons pour tenir compte de la variation de la taille des données.
Vous pouvez utiliser l'analyseur de cycles pour comprendre la variance entre les cycles dans vos échantillons de données de production. Utilisez
--batch
le mode dans Run Analyzer pour générer des statistiques pour un lot d'exécutions et analyser les ressources de calcul maximales requises pour gérer les valeurs aberrantes de vos ensembles de données.Par exemple, vous pouvez attribuer à Run Analyzer une cellule à flux complet de données en mode batch afin de comprendre les pics d'utilisation du vCPU et de la mémoire pour la cellule à flux complet.
- Réduire la variation de taille des ensembles de données en entrée
-
Si vous constatez une forte variation de la taille des échantillons, vous pouvez diviser les échantillons en amont HealthOmics et sélectionner des tailles de système de fichiers différentes pour chaque lot afin de réduire les coûts de stockage.
Dans WDL, utilisez la
size
fonction pour bifurquer l'allocation des ressources pour les tâches individuelles pour les grands échantillons par rapport aux petits échantillons. Appliquez cette stratégie à vos tâches les plus coûteuses afin d'avoir le plus d'impact possible.Dans Nextflow, utilisez des ressources conditionnelles pour hiérarchiser l'allocation des ressources en fonction de la taille ou du nom du fichier. Pour plus d'informations, consultez la section Ressources relatives aux processus conditionnels
sur le GitHub site Nextflow. - N'optimisez pas trop tôt
-
Finalisez le code et la logique de votre flux de travail avant d'investir dans d'importants efforts d'optimisation des performances. La modification de votre code peut avoir un impact significatif sur les ressources requises. Si vous optimisez une exécution trop tôt dans le processus de développement, vous risquez de suroptimiser ou de devoir l'optimiser à nouveau si la définition du flux de travail change ultérieurement.
- Réexécutez régulièrement l'outil Run Analyzer
-
Si vous modifiez la définition de votre flux de travail au fil du temps ou si la variance de votre échantillon change, exécutez régulièrement l'outil Run Analyzer pour vous aider à effectuer des optimisations supplémentaires.
Méthodes pour optimiser la simultanéité des ressources
HealthOmics fournit les fonctionnalités suivantes pour vous aider à contrôler et à gérer les coûts lors de cycles de traitement à grande échelle :
-
Utilisez des groupes d'exécution pour contrôler vos coûts et votre utilisation des ressources. Vous pouvez définir des valeurs maximales dans le groupe d'exécutions pour le nombre d'exécutions simultanées, v CPUs GPUs, et le temps d'exécution total par tâche. Si des équipes ou des groupes distincts utilisent le même compte, vous pouvez créer un groupe de course distinct pour chaque équipe. Vous pouvez contrôler l'utilisation des ressources et les coûts par équipe et en configurant les valeurs maximales des groupes d'exécution. Pour de plus amples informations, veuillez consulter Création de groupes de HealthOmics course.
-
Au cours du développement, vous pouvez configurer un groupe d'exécution distinct avec des valeurs maximales inférieures pour intercepter les tâches intempestives.
-
Les Quotas de Service aident également à protéger votre compte contre les demandes de ressources excessives. Pour plus d'informations sur les Quotas de Service, notamment sur la manière de demander une augmentation de la valeur des quotas, voir HealthOmics quotas de service