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.
Stockage éphémère pour HealthOmics les tâches de flux de travail
HealthOmics fournit un stockage éphémère pour les tâches de flux de travail utilisant le /tmp répertoire. Ce stockage est temporaire et propre à chaque tâche d'un flux de travail. HealthOmics alloue 16 GiB de stockage éphémère à chaque instance de tâche par défaut. Vous pouvez augmenter la quantité de stockage éphémère allouée à des tâches individuelles dans la définition de votre flux de travail, jusqu'à un maximum de 3 072 GiB par tâche. Toutes les données stockées /tmp sont cryptées au repos.
Rubriques
Principaux avantages
-
Exécution plus rapide des tâches : le stockage éphémère peut améliorer les performances d'exécution en réduisant le système de fichiers partagé. I/O
-
Performances prévisibles : les tâches n'entrent pas en concurrence avec d'autres tâches exécutées simultanément en termes de I/O bande passante, ce qui réduit la variabilité et la limitation associées à un système de fichiers réseau partagé.
-
Coûts réduits : l'exécution plus rapide des tâches réduit directement le temps de calcul et le coût des tâches I/O liées qui utilisent
/tmp. Pour les exécutions utilisant le stockage d'exécution statique, cela peut réduire la quantité de stockage d'exécution provisionné dont vous avez besoin. Les courses dynamiques ne nécessitent aucune modification.
Comment fonctionne le stockage éphémère
Lorsque vous activez le stockage éphémère, vous montez un HealthOmics volume de stockage local dédié /tmp pour chaque instance de tâche de flux de travail. Le stockage éphémère est destiné aux fichiers temporaires générés lors de l'exécution des tâches. Les volumes de stockage éphémères sont toujours supprimés à la fin de la tâche. Les données écrites ne /tmp sont pas conservées, exportées ou accessibles pour d'autres tâches ou exécutions ultérieures.
Où les flux de travail écrivent des fichiers temporaires
Les flux de travail bénéficient d'un stockage éphémère lorsque les processus de tâches sont dirigés vers. I/O /tmp Les langages de flux de travail bioinformatiques utilisent le /tmp répertoire (et les $TMP variables d'$TMPDIRenvironnement) pour les fichiers intermédiaires temporaires et de courte durée lors de l'exécution des tâches. Assurez-vous que vos commandes de tâches ne sont pas mappées $TMPDIR à un autre emplacement.
Les processus de tâches de flux de travail qui écrivent pour utiliser /tmp automatiquement le stockage éphémère lorsqu'il est activé, ne nécessitant aucune modification du flux de travail. Les flux de travail qui ne dirigent pas explicitement les processus scratch vers /tmp écriront les données scratch dans le répertoire de travail du système de fichiers partagé utilisé pour le stockage d'exécution, bien que les outils utilisés puissent tirer parti du /tmp stockage éphémère.
Chiffrement au repos
Tout le stockage éphémère est chiffré au repos à l'aide d'une clé gérée par les services AWS KMS . Les instances de calcul accéléré sont chiffrées matériellement à l'aide d'une clé unique par volume qui est détruite à la fermeture de l'instance.
Permissions
HealthOmics gère les pièces jointes et le cycle de vie des volumes de stockage éphémères en votre nom. Aucune autorisation IAM supplémentaire n'est requise dans votre rôle d'exécution des tâches.
Activation du stockage éphémère
Vous pouvez rediriger Scratch I/O vers le stockage local en le configurant scratchStorageMode dans l'StartRunAPI. Le scratchStorageMode paramètre s'applique uniquement aux instances de processeur et s'applique à toutes les tâches de cette exécution.
scratchStorageModedétermine où votre flux de travail écrit les données scratch. Valeurs possibles :
-
LOCAL— Le stockage éphémère est placé sur le disque local. Scratch I/O dispose d'IOPS et d'un débit dédiés. -
SHARED— Le système de fichiers partagé est utilisé (par défaut). I/O Scratch est en concurrence avec le répertoire de travail.
Pour de plus amples informations, veuillez consulter Commencez une course HealthOmics.
Note
Les tâches GPU utilisent toujours le stockage éphémère NVMe local pour les données de travail, et scratchStorageMode c'est toujours le cas LOCAL pour les tâches GPU.
Optez pour le stockage éphémère
Pour activer le stockage éphémère pour une exécution, définissez le LOCAL moment où scratchStorageMode vous démarrez l'exécution.
aws omics start-run \ --workflow-idworkflow-id\ --role-arnarn:aws:iam::123456789012:role/OmicsServiceRole\ --output-uri s3://amzn-s3-demo-bucket/output-folder/ \ --parameters file:///path/to/parameters.json\ --scratch-storage-mode LOCAL
Pour les tirages par lots, transmettez scratchStorageModedefaultRunSetting. Le paramètre s'applique à chaque exécution du lot.
aws omics start-run-batch \ --batch-name "my-batch" \ --default-run-setting '{ "workflowId": "workflow-id", "roleArn": "arn:aws:iam::123456789012:role/OmicsServiceRole", "outputUri": "s3://amzn-s3-demo-bucket/output-folder/", "storageType": "DYNAMIC", "parameters": {"referenceUri": "s3://amzn-s3-demo-bucket/reference.fasta"}, "scratchStorageMode": "LOCAL" }' \ --batch-run-settings '{ "inlineSettings": [ { "runSettingId": "sample-A", "parameters": {"inputUri": "s3://amzn-s3-demo-bucket/sampleA.fastq"} }, { "runSettingId": "sample-B", "parameters": {"inputUri": "s3://amzn-s3-demo-bucket/sampleB.fastq"} } ] }'
Désactiver le stockage éphémère
Pour désactiver le stockage éphémère pour une exécution spécifique (par exemple, pour isoler une panne), définissez surscratchStorageMode. SHARED
aws omics start-run \ --workflow-idworkflow-id\ --role-arnarn:aws:iam::123456789012:role/OmicsServiceRole\ --output-uri s3://amzn-s3-demo-bucket/output-folder/ \ --scratch-storage-mode SHARED
Lorsque scratchStorageMode c'est SHARED le cas, toutes les directives disk et les directives équivalentes de la définition du flux de travail sont ignorées et /tmp sont soutenues par le système de fichiers partagé. Ce paramètre s'applique uniquement aux instances de processeur. Les tâches GPU utilisent toujours le stockage éphémère NVMe local et ne peuvent pas être désactivées.
Vérifiez le mode effectif
Le stockage éphémère est désactivé par défaut. Quand scratchStorageMode est omis dans une StartRun demande, scratchStorageMode est défini sur SHARED (par défaut).
scratchStorageModen'est renvoyé dans la GetRun réponse que s'il a été explicitement transmis dans la StartRun demande. SHAREDest la valeur par défaut en cas d'omission. Appelez GetRun pour confirmer le mode de stockage effectif pour une exécution.
aws omics get-run --idrun-id
Allocation de stockage par défaut
L'allocation de stockage éphémère par défaut est de 16 Go par tâche pour tous les types de stockage standard, de calcul et Memory-optimized d'instance. Vous n'avez pas besoin de spécifier de disk directive pour recevoir cette valeur par défaut. Pour configurer un stockage supplémentaire, utilisez la disk directive. Vous pouvez augmenter la quantité de stockage éphémère allouée à des tâches individuelles dans la définition de votre flux de travail, jusqu'à un maximum de 3 072 GiB par tâche. Un stockage supérieur à la valeur par défaut de 16 Go vous est facturé.
Le stockage éphémère peut être configuré par incréments de 16 GiB. Pour de plus amples informations, veuillez consulter Tailles prises en charge.
Stockage éphémère pour les instances informatiques accélérées
La capacité de stockage des instances GPU est fixe par type d'instance et est fournie sans frais supplémentaires.
Les tâches GPU utilisent toujours le stockage éphémère NVMe local. Le scratchStorageMode paramètre activé StartRun ne s'applique pas aux tâches GPU et définir cette valeur sur n'SHAREDaura aucun effet sur les instances GPU. La capacité est fixée par type d'instance et ne peut pas être personnalisée à l'aide de la disk directive. La capacité NVMe est prédéterminée par le type d'instance sélectionné pour les exigences et acceleratorType les exigences de cpu la tâche. memory
| Size | Processeurs graphiques | vCPU | Mémoire (Gio) | G4dn NVMe (T4) | NVMe G5 (A10G) | NVMe G6 (L4) | G6e NVMe (L40S) |
|---|---|---|---|---|---|---|---|
| xlarge | 1 | 4 | 16 | 125 Gio | 250 Gio | 250 Gio | 250 Gio |
| 2xlarge | 1 | 8 | 32 | 225 Go | 450 Gio | 450 Gio | 450 Gio |
| 4xlarge | 1 | 16 | 64 | 225 Go | 600 Gio | 600 Gio | 600 Gio |
| 8xlarge | 1 | 32 | 128 | 900 Gio | 900 Gio | 900 Gio | 900 Gio |
| 12xlarge | 4 | 48 | 192 | 900 Gio | 3 800 Gio | 3 760 Gio | 3 800 Gio |
| 16xlarge | 1 | 64 | 256 | 900 Gio | 1 900 Gio | 1 880 Gio | 1 900 Gio |
| 24xlarge | 4 | 96 | 384 | — | 3 800 Gio | 3 760 Gio | 3 800 Gio |
Configuration de la taille du stockage éphémère
Lorsque cette valeur scratchStorageMode est définie surLOCAL, vous pouvez demander une augmentation du stockage éphémère par tâche à l'aide de la disk directive (ou d'une directive équivalente) figurant dans la définition de votre flux de travail. HealthOmics traite la disk directive comme une indication et fournit un volume arrondi aux 16 GiB suivants. L'utilisation de la disk directive n'affecte pas la sélection du type d'instance. Le type d'instance est sélectionné uniquement en fonction de cpumemory, etacceleratorType. Pour de plus amples informations, veuillez consulter Ressources de tâches dans une définition HealthOmics de flux de travail.
Si aucune disk directive n'est présente, la tâche reçoit la valeur par défaut de 16 GiB. Les tâches ne peuvent pas avoir moins que le stockage éphémère par défaut.
Vous n'avez pas besoin de dimensionner votre espace de stockage éphémère pour les images de conteneurs extraites, qui sont comptabilisées séparément. Pour de plus amples informations, veuillez consulter Images de conteneur pour les flux de travail privés.
Quand utiliser la directive Disk
Utilisez la disk directive dans votre définition de tâche lorsque le stockage éphémère par défaut pour le type d'instance que vous avez choisi n'est pas suffisant pour répondre aux exigences de votre tâche. Par exemple, lorsqu'une tâche écrit de grands volumes de données dans/tmp.
Cas d’utilisation courants pour un stockage éphémère augmenté
-
RNA-Seq Détection de fusion : les RNA-seq flux de travail génèrent de grandes BAM intermédiaires et les processus de tâches nécessitent souvent à la fois la présence simultanée des FastQ bruts et des sorties alignées, ce qui nécessite de grands disques de travail (par exemple, 512 GiB par tâche).
-
Assemblage du génome de Novo : les flux de travail d' Long-read assemblage nécessitent d'importants volumes de travail pour traiter les lectures brutes et les artefacts d'assemblage temporaires qui sont réécrits et réorganisés à plusieurs reprises avant la sortie. Ces tâches sont gourmandes en mémoire et en disque et nécessitent parfois plusieurs TiB de stockage éphémère.
-
Appel de variantes/traitement BAM : les flux de travail d'appel de variantes nécessitent un espace de stockage temporaire important pour les étapes d'alignement et de tri qui lisent et réécrivent à plusieurs reprises de gros fichiers BAM ou CRAM. Les besoins de stockage éphémère s'élèvent généralement à des centaines de GiB.
Syntaxe des directives par moteur
Le tableau suivant indique la directive équivalente pour chaque langue de flux de travail.
| Engine | Directive | Exemple |
|---|---|---|
| WDL 1.1 | disks |
disks: "/tmp 700 GiB" |
| Flux suivant | disk |
disk '700 GB' |
| CWL | tmpdirMin |
tmpdirMin: 716800(valeur en MiB) |
Les exemples suivants montrent comment configurer une tâche qui demande 700 Go de stockage éphémère. HealthOmics arrondit ce chiffre au niveau 704 GiB.
Pour plus d'informations sur la syntaxe de directive prise en charge, consultez Spécificités de la définition du flux de travail WDL etSpécificités de la définition du flux de travail Nextflow.
Exemple : dimensionnement de disque basé sur l'expression
Au lieu d'une taille fixe, vous pouvez définir la disk directive sur une expression que le moteur de flux de travail évalue pour chaque tâche au moment de l'exécution. Le processus Nextflow suivant utilise une fermeture qui redimensionne la demande en fonction du nombre de tentatives de tâche. Si la tâche échoue pour une raison quelconque et que Nextflow la réessaie, la nouvelle tentative demande un volume plus important.
process sort_bam { disk { 200.GB * task.attempt } errorStrategy 'retry' maxRetries 2 script: """ samtools sort -T /tmp/sort_buffer ${input} -o ${output} """ } // First attempt requests 200 GiB (provisioned at the 208 GiB tier) // Second attempt requests 400 GiB (provisioned at the 400 GiB tier)
Le moteur de flux de travail évalue l'expression pour chaque tentative de tâche. HealthOmics arrondit ensuite la taille résolue au prochain incrément de 16 GiB.
Note
Étant donné que le moteur résout l'expression au moment de l'exécution, il HealthOmics ne peut pas vérifier la taille àCreateWorkflow. HealthOmics limite une taille évaluée supérieure à 3 072 GiB lorsque la tâche démarre. Pour de plus amples informations, veuillez consulter Tailles prises en charge.
Outils bioinformatiques courants et stockage éphémère
De nombreux outils bioinformatiques écrivent de gros fichiers temporaires pendant leur exécution. Lorsque cette scratchStorageMode option est définie surLOCAL, redirigez ces outils à utiliser /tmp afin que I/O Scratch soit dirigé vers le volume local rapide au lieu du système de fichiers d'exécution partagé. Les exemples suivants montrent les indicateurs pertinents pour les outils couramment utilisés.
Tailles prises en charge
Les tailles demandées sont arrondies à l'incrément de 16 GiB le plus proche, à partir de la valeur par défaut de 16 GiB (16, 32, 48, 64,... jusqu'à 3 072 GiB). La taille maximale prise en charge est de 3 072 GiB par tâche.
Si la taille demandée dépasse 3 072 GiB, HealthOmics provisionne 3 072 GiB et écrit un avertissement dans le journal d'exécution. La tâche n'échoue pas automatiquement.
Note
Pour les disk directives basées sur des expressions, telles que les fermetures Nextflow ou les expressions WDL, la valeur est évaluée au moment de l'exécution, et non à. disks: ceil(size(input_bam, "GiB") * 2.5) CreateWorkflow Si la taille évaluée dépasse 3 072 GiB, la tâche échoue lors de l'exécution et tous les coûts de calcul encourus jusqu'à ce moment sont facturés. Pour obtenir un exemple, consultez Exemple : dimensionnement de disque basé sur l'expression.
Formulaires de disques WDL pris en charge
Pour la liste complète des disks formulaires WDL acceptés, voirFormulaires de disques WDL pris en charge.
Utilisation de la directive scratch Nextflow
Pour les flux de travail Nextflow, vous pouvez utiliser la scratch directive pour contrôler où les processus écrivent les fichiers de travail temporaires. Pour plus d'informations sur les valeurs prises en charge et l'utilisation recommandée avec le stockage éphémère, consultez. Utiliser efficacement le stockage Scratch dans Nextflow
Surveillance du stockage éphémère
HealthOmics écrit des métriques de stockage éphémères par tâche dans les journaux des manifestes. CloudWatch Les mesures incluent les données de stockage éphémères par tâche relatives à la taille du volume provisionné (en tant quescratchStorageReservedGiB) et à l'utilisation (en tant quescratchStorageUtilizedGiB) pour chaque tâche. Consultez le journal du manifeste pour déterminer si les tâches étaient surprovisionnées ou sous-provisionnées sans effectuer de requêtes CloudWatch directes. Pour plus de détails sur les journaux des manifestes, consultezSurveillance à HealthOmics l'aide de CloudWatch journaux.
Comment est facturé le stockage éphémère
Vous êtes facturé uniquement pour le stockage éphémère fourni au-delà de l'allocation par défaut. Les demandes supérieures à la valeur par défaut de votre disk directive sont arrondies au niveau pris en charge le plus proche.
Le stockage éphémère des instances GPU est déjà pris en compte dans la tarification des instances. Il n'y a pas de frais supplémentaires pour le stockage éphémère des tâches GPU.
Considérations et restrictions
| Considération | Détail |
|---|---|
| Le stockage éphémère n'est pas persistant | Les volumes de stockage éphémères sont toujours supprimés à la fin de la tâche. Les données /tmp saisies ne sont pas enregistrées, exportées ou disponibles pour les tâches ou exécutions suivantes. Les données stockées dans /tmp un stockage éphémère ne peuvent pas être une sortie de tâche ou une sortie de flux de travail ; cela entraînera un échec lors de l'exécution. |
| Le stockage éphémère n'est pas partagé entre les tâches | Chaque tâche reçoit son propre volume de stockage éphémère isolé. Les tâches ne peuvent pas accéder aux /tmp répertoires des autres tâches. Les données qui doivent être partagées entre les tâches doivent être écrites dans le système de fichiers d'exécution partagé. |
| Le stockage ne peut pas être redimensionné en cours de tâche | La taille de stockage est fixée au démarrage de la tâche. Vous ne pouvez pas augmenter ou diminuer l'espace de stockage alloué lorsqu'une tâche est en cours d'exécution. |
| Working-directory scratch n'est pas automatiquement redirigé | Les flux de travail qui écrivent de zéro dans le répertoire de travailinput/, par exemple./, ouout/, n'en bénéficient pas automatiquement. Mettez à jour votre flux de travail pour rediriger scratch I/O vers /tmp ou$TMPDIR. |
Les données Scratch ne sont pas écrites /tmp comme prévu |
Assurez-vous que vos processus de tâches écrivent explicitement vers un autre emplacement /tmp et que vos commandes de tâches ne sont pas mappées $TMPDIR vers un autre emplacement. |
| Les instances GPU utilisent toujours un stockage éphémère | Les tâches GPU sont toujours montées /tmp sur le magasin d'instances NVMe local. Le réglage scratchStorageMode sur SHARED ne désactive pas le stockage éphémère pour les tâches GPU. |
| Instances GPU : la capacité NVMe est fixe | Le dimensionnement de disque personnalisé n'est pas pris en charge sur les instances GPU. HealthOmics ignore disk les directives et fournit la capacité NVMe par défaut pour le type d'instance. |
| Maximum de 3 072 GiB par tâche (CPU) | Les requêtes dépassant 3 072 GiB sont provisionnées à 3 072 GiB avec un avertissement de journal d'exécution. Les tâches n'ont pas échoué. |
| Niveaux pris en charge uniquement (CPU) | Les tailles demandées sont arrondies à l'incrément de 16 GiB le plus proche (16, 32, 48, 64,... jusqu'à 3 072 GiB). |
| Expression-based directives évaluées lors de l'exécution | diskles valeurs calculées à partir d'expressions sont validées au début de la tâche, et non àCreateWorkflow. Les coûts de calcul jusqu'à ce point sont facturés si la tâche échoue au moment de l'exécution. |
SHAREDle mode ignore toutes les directives du disque (CPU uniquement) |
Les directives when scratchStorageMode is SHAREDdisk,tmpdirMin, et équivalentes sont ignorées pour les tâches du processeur. Aucun volume de stockage local n'est provisionné. Les tâches GPU ne sont pas affectées, elles utilisent toujours le NVMe local. |
Résolution des problèmes liés au stockage éphémère
La tâche échoue lorsque le stockage éphémère est épuisé
Une tâche échoue lorsque le stockage éphémère atteint sa capacité maximale. Passez en revue les journaux de vos CloudWatch manifestes pour déterminer la quantité de stockage réellement utilisée par votre tâche, puis ajoutez ou augmentez la disk directive pour demander un niveau plus élevé.
# Before: 4-vCPU task using the 16 GiB default runtime { cpu: 4 } # After: explicitly request 400 GiB runtime { cpu: 4, disks: "400 GiB" }
Le stockage éphémère ne semble pas être utilisé
Appelez GetRun et vérifiez le scratchStorageMode champ. Si la valeur estSHARED, le stockage éphémère n'est pas activé pour cette exécution. --scratch-storage-mode LOCALProgrammez votre prochain start-run appel.
aws omics get-run --idrun-id