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 du 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 aux 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 qui y sont /tmp stockées 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 les 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é.
-
Réduction des coûts : 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 statique, cela peut réduire la quantité de stockage d'exécution provisionné dont vous avez besoin. Les exécutions dynamiques ne nécessitent aucune modification.
Comment fonctionne le stockage éphémère
Lorsque vous activez le stockage éphémère, HealthOmics monte un 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 enregistrées ne /tmp sont pas conservées, exportées ou accessibles aux autres tâches ou aux 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 redirigent le scratch I/O vers. /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 de courte durée lors de l'exécution des tâches. Assurez-vous que les commandes de vos tâches ne sont pas mappées $TMPDIR vers un autre emplacement.
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 écrivent les données Scratch dans le répertoire de travail du système de fichiers partagé utilisé pour le stockage des exécutions, bien que les outils utilisés puissent tirer parti du /tmp stockage éphémère. /tmp
Chiffrement au repos
Tout le stockage éphémère est chiffré au repos à l'aide d'une clé gérée par le service 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 lorsque l'instance se termine.
Permissions
HealthOmics gère l'attachement 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 de tâches.
Permettre le stockage éphémère
Vous pouvez rediriger Scratch I/O vers le stockage local scratchStorageMode en configurant 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 l'endroit où votre flux de travail écrit les données temporaires. 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 conflit 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 temporaires, 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 course, définissez ce paramètre sur scratchStorageMode le LOCAL moment où vous commencez 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 séries par lots, scratchStorageMode transmettez-ledefaultRunSetting. 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 un échec), 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
Dans scratchStorageMode ce casSHARED, toutes disk les directives équivalentes de la définition du flux de travail sont ignorées et /tmp sont sauvegardées 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 efficace
Le stockage éphémère est désactivé par défaut. Lorsqu'il scratchStorageMode est omis dans une StartRun demande, scratchStorageMode il 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 si elle est omise. 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 GiB par tâche pour tous les types standard, de calcul et d'instance. Memory-optimized Il n'est pas nécessaire 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 aux tâches individuelles dans la définition de votre flux de travail, jusqu'à un maximum de 3 072 GiB par tâche. Le stockage supérieur à la valeur par défaut de 16 GiB 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 de calcul accéléré
La capacité de stockage des instances GPU est fixe par type d'instance et est fournie sans frais supplémentaires.
Les tâches du GPU utilisent toujours le stockage éphémère NVMe local. Le scratchStorageMode paramètre activé StartRun ne s'applique pas aux tâches du GPU et la définition de cette valeur n'SHAREDaura aucun effet sur les instances du GPU. La capacité est fixe 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é en fonction des exigences de cpu la tâche. memory acceleratorType
| Size | Processeurs graphiques | vCPU | Mémoire (Gio) | G4dn NVMe (T4) | G5 NVMe (A10G) | G6 NVMe (L4) | G6e NVMe (L40S) |
|---|---|---|---|---|---|---|---|
| xlarge | 1 | 4 | 16 | 125 GiB | 250 Gio | 250 Gio | 250 Gio |
| 2xlarge | 1 | 8 | 32 | 225 GiB | 450 GiB | 450 GiB | 450 GiB |
| 4xlarge | 1 | 16 | 64 | 225 GiB | 600 GiB | 600 GiB | 600 GiB |
| 8xlarge | 1 | 32 | 128 | 900 GiB | 900 GiB | 900 GiB | 900 GiB |
| 12xlarge | 4 | 48 | 192 | 900 GiB | 3 800 GiB | 3 760 GiB | 3 800 GiB |
| 16xlarge | 1 | 64 | 256 | 900 GiB | 1 900 GiB | 1 880 GiB | 1 900 GiB |
| 24xlarge | 4 | 96 | 384 | — | 3 800 GiB | 3 760 GiB | 3 800 GiB |
Configuration de la taille de stockage éphémère
Lorsque scratchStorageMode ce paramètre est défini surLOCAL, vous pouvez demander une augmentation du stockage éphémère par tâche en utilisant la disk directive (ou une directive équivalente) figurant dans la définition de votre flux de travail. HealthOmics traite la disk directive comme un indice 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 sur la base 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 un espace de stockage éphémère inférieur au stockage éphémère par défaut.
Il n'est pas nécessaire de dimensionner votre espace de stockage éphémère pour les images des conteneurs extraits, 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 les exigences de votre tâche. Par exemple, lorsqu'une tâche écrit de gros volumes de données dans/tmp.
Cas d’utilisation courants pour un stockage éphémère augmenté
-
RNA-Seq Détection de fusion : RNA-seq les flux de travail génèrent de grands BAM intermédiaires et les processus de tâches nécessitent souvent la présence simultanée de FastQS bruts et de sorties alignées, ce qui nécessite de gros 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 de gros 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 nécessitent beaucoup de mémoire et de disque et nécessitent parfois plusieurs TiB de stockage éphémère.
-
Appels variants/traitement BAM : les flux d'appels alternatifs nécessitent un stockage temporaire important pour les étapes d'alignement et de tri qui permettent de lire et de réécrire de manière répétée de gros fichiers BAM ou CRAM. Les besoins de stockage éphémères se chiffrent généralement à des centaines de GiB.
Syntaxe des directives par moteur
Le tableau suivant indique la directive équivalente pour chaque langage 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 GiB de stockage éphémère. HealthOmics arrondit cela au niveau de 704 GiB.
Pour plus d'informations sur la syntaxe des directives prise en charge, consultez Spécificités de définition du flux de travail WDL etCaractéristiques de la définition du flux de travail Nextflow.
Outils bioinformatiques courants et stockage éphémère
De nombreux outils bioinformatiques écrivent de gros fichiers temporaires lors de leur exécution. Lorsque scratchStorageMode ce paramètre est défini surLOCAL, redirigez ces outils pour les utiliser /tmp afin que I/O Scratch soit redirigé vers le volume local rapide plutôt que vers le système de fichiers partagé. Les exemples suivants montrent les indicateurs appropriés 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, approvisionne HealthOmics 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 de Nextflow ou les expressions WDL telles quedisks: ceil(size(input_bam, "GiB") * 2.5), la valeur est évaluée au moment de l'exécution, et non à. 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 point sont facturés.
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 l'endroit 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 à gratter 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 métriques incluent les données de stockage éphémères par tâche relatives à la taille (asscratchStorageReservedGiB) du volume provisionné (as) et à l'utilisation (asscratchStorageUtilizedGiB) pour chaque tâche. Consultez le journal du manifeste pour déterminer si les tâches étaient surprovisionnées ou sous-provisionnées sans demander directement. CloudWatch Pour plus de détails sur les journaux de 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-dessus 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 aucun frais supplémentaire pour le stockage éphémère sur les tâches du 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 saisies ne /tmp sont pas enregistrées, exportées ou disponibles pour les tâches ou les exécutions suivantes. Les données contenues 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. 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ébut de la tâche. Vous ne pouvez pas augmenter ou diminuer le stockage alloué pendant qu'une tâche est en cours d'exécution. |
| Working-directory scratch n'est pas automatiquement redirigé | Les flux de travail qui écrivent du scratch dans le répertoire de travail (par exemple input/./,, 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 les commandes de vos 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 du 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 (processeur) | Les demandes supérieures à 3 072 GiB sont provisionnées à 3 072 GiB avec un avertissement de journal d'exécution. Les tâches n'échouent pas. |
| 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 au moment de l'exécution | diskles valeurs calculées à partir d'expressions sont validées au début de la tâche, et non auCreateWorkflow. Les coûts de calcul jusqu'à cette date sont facturés en cas d'échec de la tâche lors de l'exécution. |
SHAREDle mode ignore toutes les directives du disque (CPU uniquement) |
Les directives scratchStorageMode SHARED When isdisk,tmpdirMin, et les directives équivalentes sont ignorées pour les tâches du processeur. Aucun volume de stockage local n'est provisionné. Les tâches du 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 vos journaux de CloudWatch manifeste 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 terrain. Si la valeur est « oui »SHARED, 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