View a markdown version of this page

Archiviazione temporanea per le attività del flusso di lavoro HealthOmics - AWS HealthOmics

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Archiviazione temporanea per le attività del flusso di lavoro HealthOmics

HealthOmics fornisce uno spazio di archiviazione temporaneo per le attività del flusso di lavoro utilizzando la directory. /tmp Questa archiviazione è temporanea e univoca per ogni attività di un flusso di lavoro. HealthOmics per impostazione predefinita, assegna 16 GiB di spazio di archiviazione temporaneo a ciascuna istanza dell'attività. È possibile aumentare la quantità di spazio di archiviazione temporaneo allocato alle singole attività nella definizione del flusso di lavoro, fino a un massimo di 3.072 GiB per attività. Tutti i dati archiviati sono crittografati quando sono inattivi. /tmp

Vantaggi principali

  • Esecuzione più rapida delle attività: lo storage temporaneo può migliorare le prestazioni di esecuzione riducendo i file system condivisi. I/O

  • Prestazioni prevedibili: le attività non competono con altre attività eseguite contemporaneamente per quanto riguarda la I/O larghezza di banda, riducendo la variabilità e la limitazione associate a un file system di rete condiviso.

  • Costi ridotti: l'esecuzione più rapida delle attività riduce direttamente i tempi e i costi di calcolo per le attività vincolate che ne fanno uso. I/O /tmp Per le esecuzioni che utilizzano lo storage a esecuzione statica, ciò può ridurre la quantità di storage di esecuzione predisposto di cui hai bisogno. Le esecuzioni dinamiche non richiedono modifiche.

Come funziona l'archiviazione effimera

Quando abiliti lo storage temporaneo, HealthOmics monta un volume di archiviazione locale dedicato /tmp per ogni istanza dell'attività del flusso di lavoro. L'archiviazione temporanea è destinata ai file temporanei generati durante l'esecuzione delle attività. I volumi di archiviazione temporanei vengono sempre eliminati al termine dell'attività. I dati scritti non /tmp vengono mantenuti, esportati o accessibili per altre attività o esecuzioni successive.

Dove i flussi di lavoro scrivono file temporanei

I flussi di lavoro traggono vantaggio dall'archiviazione temporanea quando i processi delle attività vengono eseguiti direttamente su. I/O /tmp I linguaggi dei flussi di lavoro bioinformatici utilizzano la /tmp directory (e le variabili di $TMPDIR ambiente) per i file $TMP intermedi temporanei e di breve durata durante l'esecuzione delle attività. Assicurati che i comandi delle tue attività non siano mappati in un'altra posizione. $TMPDIR

I processi di gestione dei flussi di lavoro su cui viene eseguita la scrittura utilizzano /tmp automaticamente l'archiviazione temporanea quando abilitata, senza richiedere modifiche al flusso di lavoro. I flussi di lavoro che non indirizzano esplicitamente i processi di scratch alla /tmp scrittura dei dati di scratch nella directory di lavoro del file system condiviso utilizzato per l'archiviazione in esecuzione, sebbene gli strumenti utilizzati potrebbero trarre vantaggio dall'archiviazione temporanea. /tmp

Crittografia dei dati a riposo

Tutto lo storage temporaneo è crittografato quando è inattivo utilizzando una chiave gestita dal servizio. AWS KMS Le istanze di elaborazione accelerata sono crittografate a livello hardware con una chiave univoca per volume che viene distrutta quando l'istanza termina.

Permissions

HealthOmics gestisce il collegamento e il ciclo di vita dei volumi di storage temporanei per conto dell'utente. Non sono richieste autorizzazioni IAM aggiuntive nel ruolo di esecuzione delle attività.

Abilitare lo storage temporaneo

Puoi reindirizzare scratch I/O allo storage locale impostandolo scratchStorageMode nell'API. StartRun L'scratchStorageModeimpostazione si applica solo alle istanze della CPU e si applica a tutte le attività in esecuzione.

scratchStorageModedetermina dove il flusso di lavoro scrive i dati scratch. Valori possibili:

  • LOCAL— L'archiviazione temporanea viene collocata su disco locale. Scratch I/O offre IOPS e throughput dedicati.

  • SHARED— Viene utilizzato il file system condiviso (impostazione predefinita). Scratch I/O fa parte della cartella di lavoro.

Per ulteriori informazioni, consulta Inizia un run in HealthOmics.

Nota

Le attività GPU utilizzano sempre lo storage temporaneo NVMe locale per i dati scratch e scratchStorageMode lo fanno sempre per le attività GPU. LOCAL

Attiva lo storage temporaneo

Per abilitare l'archiviazione temporanea per una corsa, imposta su LOCAL quando inizi scratchStorageMode la corsa.

aws omics start-run \ --workflow-id workflow-id \ --role-arn arn:aws:iam::123456789012:role/OmicsServiceRole \ --output-uri s3://amzn-s3-demo-bucket/output-folder/ \ --parameters file:///path/to/parameters.json \ --scratch-storage-mode LOCAL

Per le esecuzioni in batch, invia. scratchStorageMode defaultRunSetting L'impostazione si applica a tutte le esecuzioni del batch.

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

Disattiva l'archiviazione temporanea

Per disabilitare l'archiviazione temporanea per un'esecuzione specifica (ad esempio, per isolare un errore), imposta su. scratchStorageMode SHARED

aws omics start-run \ --workflow-id workflow-id \ --role-arn arn:aws:iam::123456789012:role/OmicsServiceRole \ --output-uri s3://amzn-s3-demo-bucket/output-folder/ \ --scratch-storage-mode SHARED

In tal caso scratchStorageModeSHARED, tutte le disk direttive equivalenti nella definizione del flusso di lavoro vengono ignorate e supportate dal /tmp filesystem condiviso. Questa impostazione si applica solo alle istanze della CPU. Le attività GPU utilizzano sempre lo storage temporaneo NVMe locale e non possono essere disattivate.

Verifica la modalità effettiva

L'archiviazione temporanea è disattivata per impostazione predefinita. Quando scratchStorageMode viene omesso da una StartRun richiesta, scratchStorageMode è impostato su SHARED (impostazione predefinita).

scratchStorageModeviene restituito nella GetRun risposta solo se è stato passato esplicitamente nella StartRun richiesta. SHAREDè il valore predefinito se omesso. Chiama GetRun per confermare la modalità di archiviazione effettiva per una corsa.

aws omics get-run --id run-id

Allocazione di archiviazione predefinita

L'allocazione di archiviazione temporanea predefinita è di 16 GiB per attività per tutti i tipi Standard, Compute e di istanza. Memory-optimized Non è necessario specificare una disk direttiva per ricevere questo valore predefinito. Per configurare uno spazio di archiviazione aggiuntivo, utilizzare la disk direttiva. È possibile aumentare la quantità di spazio di archiviazione temporaneo allocato alle singole attività nella definizione del flusso di lavoro, fino a un massimo di 3.072 GiB per attività. Ti viene addebitato uno spazio di archiviazione superiore ai 16 GiB predefiniti.

Lo storage temporaneo può essere configurato con incrementi di 16 GiB. Per ulteriori informazioni, consulta Dimensioni supportate.

Storage temporaneo per istanze di elaborazione accelerate

La capacità di storage delle istanze GPU è fissa per tipo di istanza e viene fornita senza costi aggiuntivi.

Le attività GPU utilizzano sempre lo storage temporaneo NVMe locale. L'scratchStorageModeimpostazione attiva non StartRun si applica alle attività della GPU e l'impostazione di questo valore non SHARED avrà alcun effetto sulle istanze GPU. La capacità è fissa per tipo di istanza e non può essere personalizzata utilizzando la direttiva. disk La capacità NVMe è predeterminata dal tipo di istanza selezionato per l'attività e i cpu requisitimemory. acceleratorType

Dimensione GPU VPCU Memoria (GiB) G4dn NVMe (T4) G5 NVMe (A10G) G6 NVMe (L4) NVMe G6e (L40S)
xlarge1416125 GiB250 GiB250 GiB250 GiB
2xlarge1832225 GiB450 GiB450 GiB450 GiB
4xlarge11664225 GiB600 GiB600 GiB600 GiB
8xlarge132128900 GiB900 GiB900 GiB900 GiB
12xlarge448192900 GiB3.800 GiB3.760 GiB3.800 GiB
16xlarge164256900 GiB1.900 GiB1.880 GiB1.900 GiB
24xlarge496384—3.800 GiB3.760 GiB3.800 GiB

Configurazione delle dimensioni di archiviazione temporanee

Se scratchStorageMode è impostata suLOCAL, puoi richiedere un aumento dello spazio di archiviazione temporaneo per attività utilizzando la disk direttiva (o un equivalente) nella definizione del flusso di lavoro. HealthOmics considera la disk direttiva come un suggerimento e fornisce un volume arrotondato ai successivi 16 GiB. L'uso della disk direttiva non influisce sulla selezione del tipo di istanza. Il tipo di istanza viene selezionato esclusivamente in base a cpumemory, eacceleratorType. Per ulteriori informazioni, consulta Risorse delle attività in una definizione del flusso di lavoro HealthOmics.

Se non è presente alcuna disk direttiva, l'attività riceve i 16 GiB predefiniti. Le attività non possono avere una quantità di memoria temporanea inferiore a quella predefinita.

Non è necessario ridimensionare lo spazio di archiviazione temporaneo per le immagini estratte dai contenitori, che vengono contabilizzate separatamente. Per ulteriori informazioni, consulta Immagini di container per flussi di lavoro privati.

Quando usare la direttiva disk

Utilizzate la disk direttiva nella definizione dell'attività quando l'archiviazione temporanea predefinita per il tipo di istanza scelto non è sufficiente per i requisiti dell'attività. Ad esempio, quando un'attività scrive grandi volumi di dati su. /tmp

Casi d'uso comuni per una maggiore archiviazione temporanea

  1. RNA-Seq Fusion Detection: RNA-seq i flussi di lavoro generano BAM intermedi di grandi dimensioni e i processi di attività spesso richiedono la presenza simultanea sia dei FastQ grezzi che degli output allineati, richiedendo dischi scratch di grandi dimensioni (ad esempio, 512 GiB per attività).

  2. De Novo Genome Assembly: i flussi di lavoro di assemblaggio richiedono grandi volumi di Long-read memoria virtuale per elaborare le letture non elaborate e gli artefatti temporanei di assemblaggio che vengono ripetutamente riscritti e riorganizzati prima dell'output. Queste attività richiedono un uso intensivo della memoria e del disco e a volte richiedono diversi TiB di storage temporaneo.

  3. Variant Calling/elaborazione BAM: i flussi di lavoro di Variant Calling richiedono un notevole spazio di archiviazione scratch per le fasi di allineamento e ordinamento che leggono e riscrivono ripetutamente file BAM o CRAM di grandi dimensioni. Le esigenze di storage temporaneo sono in genere di centinaia di GiB.

Sintassi della direttiva per motore

La tabella seguente mostra la direttiva equivalente per ogni linguaggio del flusso di lavoro.

Motore Direttiva Esempio
WDL 1.1 disks disks: "/tmp 700 GiB"
Flusso successivo disk disk '700 GB'
CWL tmpdirMin tmpdirMin: 716800(valore in MiB)

Gli esempi seguenti mostrano come configurare un'attività che richiede 700 GiB di spazio di archiviazione temporaneo. HealthOmics arrotonda questo valore al livello di 704 GiB.

WDL
task sort_bam { runtime { cpu: 16 disks: "700 GiB" } command <<< samtools sort -T /tmp/sort_buffer ~{input_bam} -o ~{output_bam} >>> }
Nextflow
process sort_bam { disk '700 GB' script: """ samtools sort -T /tmp/sort_buffer ${input} -o ${output} """ }
CWL
requirements: ResourceRequirement: tmpdirMin: 716800 # 700 GiB expressed in MiB

Per ulteriori informazioni sulla sintassi delle direttive supportate, vedere e. Specifiche di definizione del flusso di lavoro WDL Specifiche di definizione del flusso di lavoro Nextflow

Esempio: dimensionamento del disco basato su espressioni

Invece di una dimensione fissa, è possibile impostare la disk direttiva su un'espressione che il motore del flusso di lavoro valuta per ogni attività in fase di esecuzione. Il seguente processo Nextflow utilizza una chiusura che ridimensiona la richiesta in base al numero di tentativi di attività. Se l'operazione fallisce per qualsiasi motivo e Nextflow la riprova, il nuovo tentativo richiede un volume maggiore.

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)

Il motore del flusso di lavoro valuta l'espressione per ogni tentativo di operazione. HealthOmics quindi arrotonda la dimensione risolta al successivo incremento di 16 GiB.

Nota

Poiché il motore risolve l'espressione in fase di esecuzione, HealthOmics non è possibile controllare la dimensione in. CreateWorkflow HealthOmics limita una dimensione stimata superiore a 3.072 GiB all'avvio dell'attività. Per ulteriori informazioni, consulta Dimensioni supportate.

Strumenti bioinformatici comuni e archiviazione effimera

Molti strumenti bioinformatici scrivono file temporanei di grandi dimensioni durante l'esecuzione. Se scratchStorageMode è impostato suLOCAL, reindirizza questi strumenti affinché vengano utilizzati /tmp in modo che scratch I/O vada al volume locale veloce anziché al filesystem a esecuzione condivisa. Gli esempi seguenti mostrano i flag pertinenti per gli strumenti di uso comune.

WDL
task sort_bam { runtime { cpu: 16 disks: "700 GiB" } command <<< # samtools: -T sets the temp-file prefix samtools sort -T /tmp/sort_buffer ~{input_bam} -o ~{sorted_bam} # GATK / Picard: --TMP_DIR flag (older Picard uses TMP_DIR=/tmp) gatk MarkDuplicates -I ~{sorted_bam} -O ~{output_bam} --TMP_DIR /tmp # STAR: --outTmpDir (path must not pre-exist; STAR creates it) STAR --runThreadN 16 --readFilesIn ~{reads} --outTmpDir /tmp/star_tmp --outFileNamePrefix out_ # bcftools sort: -T / --temp-dir bcftools sort -T /tmp ~{vcf} -o ~{output_vcf} # GNU sort: -T / --temporary-directory sort -T /tmp ~{big_table} -o ~{sorted_table} >>> } # HealthOmics rounds 700 GiB up to the 704 GiB tier
Nextflow
process sort_bam { disk '700 GB' script: """ # samtools: -T sets the temp-file prefix samtools sort -T /tmp/sort_buffer input.bam -o sorted.bam # GATK / Picard: --TMP_DIR flag (older Picard uses TMP_DIR=/tmp) gatk MarkDuplicates -I sorted.bam -O dedup.bam --TMP_DIR /tmp # STAR: --outTmpDir (path must not pre-exist; STAR creates it) STAR --runThreadN 16 --readFilesIn reads.fastq --outTmpDir /tmp/star_tmp --outFileNamePrefix out_ # bcftools sort: -T / --temp-dir bcftools sort -T /tmp input.vcf -o sorted.vcf # GNU sort: -T / --temporary-directory sort -T /tmp big_table.tsv -o sorted_table.tsv """ } // HealthOmics rounds 700 GB up to the 704 GiB tier
CWL
class: CommandLineTool cwlVersion: v1.2 requirements: ResourceRequirement: coresMin: 16 tmpdirMin: 716800 # 700 GiB expressed in MiB baseCommand: [bash, -c] arguments: - | set -euo pipefail # samtools: -T sets the temp-file prefix samtools sort -T /tmp/sort_buffer input.bam -o sorted.bam # GATK / Picard: --TMP_DIR flag (older Picard uses TMP_DIR=/tmp) gatk MarkDuplicates -I sorted.bam -O dedup.bam --TMP_DIR /tmp # STAR: --outTmpDir (path must not pre-exist; STAR creates it) STAR --runThreadN 16 --readFilesIn reads.fastq --outTmpDir /tmp/star_tmp --outFileNamePrefix out_ # bcftools sort: -T / --temp-dir bcftools sort -T /tmp input.vcf -o sorted.vcf # GNU sort: -T / --temporary-directory sort -T /tmp big_table.tsv -o sorted_table.tsv

Dimensioni supportate

Le dimensioni richieste vengono arrotondate all'incremento di 16 GiB più vicino, a partire dal valore predefinito di 16 GiB (16, 32, 48, 64,... fino a 3.072 GiB). La dimensione massima supportata è di 3.072 GiB per operazione.

Se una dimensione richiesta supera i 3.072 GiB, fornisce 3.072 GiB e HealthOmics scrive un avviso nel registro di esecuzione. L'operazione non è automaticamente fallita.

Nota

Per le disk direttive basate su espressioni, come le chiusure Nextflow o le espressioni WDL simili, il valore viene valutato in fase di disks: ceil(size(input_bam, "GiB") * 2.5) esecuzione, non in. CreateWorkflow Se la dimensione valutata supera i 3.072 GiB, l'attività ha esito negativo in fase di esecuzione e gli eventuali costi di elaborazione sostenuti fino a quel momento vengono addebitati. Per un esempio, consulta Esempio: dimensionamento del disco basato su espressioni.

Moduli di dischi WDL supportati

Per l'elenco completo dei disks moduli WDL accettati, vedere. Dischi WDL supportati, moduli

Utilizzo della direttiva scratch Nextflow

Per i flussi di lavoro Nextflow, puoi usare la scratch direttiva per controllare dove i processi scrivono file di lavoro temporanei. Per informazioni sui valori supportati e sull'utilizzo consigliato con l'archiviazione temporanea, vedere. Usare lo scratch storage in modo efficiente in Nextflow

Monitoraggio dello storage temporaneo

HealthOmics Scrive metriche di archiviazione temporanee per attività nei registri manifest. CloudWatch Le metriche includono dati di archiviazione temporanei per attività relativi alle dimensioni del volume (as) e all'utilizzo (as) previsti per ciascuna attività. scratchStorageReservedGiB scratchStorageUtilizedGiB Esamina il registro del manifesto per determinare se il provisioning delle attività è stato eccessivo o insufficiente senza interrogarlo direttamente. CloudWatch Per informazioni dettagliate sui log del manifesto, vedere. Monitoraggio HealthOmics con CloudWatch registri

Come viene fatturato lo storage temporaneo

Ti viene addebitato solo lo spazio di archiviazione temporaneo fornito al di sopra dell'allocazione predefinita. Le richieste che superano il valore predefinito nella disk direttiva vengono arrotondate al livello supportato più vicino.

Lo storage temporaneo delle istanze GPU è già incluso nei prezzi delle istanze. Non sono previsti costi aggiuntivi per lo storage temporaneo sulle attività della GPU.

Considerazioni e limitazioni

Considerazione Dettaglio
L'archiviazione temporanea non è persistente I volumi di archiviazione temporanei vengono sempre eliminati al termine dell'attività. I dati in ingresso non /tmp vengono salvati, esportati o disponibili per le attività o le esecuzioni successive. I dati /tmp in uno storage temporaneo non possono essere l'output di un'attività o un output del flusso di lavoro; ciò comporterà un errore in fase di esecuzione.
L'archiviazione temporanea non viene condivisa tra le attività Ogni attività riceve il proprio volume di archiviazione temporaneo isolato. Le attività non possono accedere alle rispettive directory. /tmp I dati che devono essere condivisi tra le attività devono essere scritti nel filesystem a esecuzione condivisa.
L'archiviazione non può essere ridimensionata a metà attività La dimensione dello spazio di archiviazione viene fissata all'inizio dell'attività. Non è possibile aumentare o diminuire lo spazio di archiviazione allocato mentre un'attività è in esecuzione.
Working-directory scratch non viene reindirizzato automaticamente I flussi di lavoro che scrivono scratch nella directory di lavoro, ad esempio,, o input/ ./out/, non ne traggono vantaggio automaticamente. Aggiorna il flusso di lavoro per reindirizzare scratch I/O a o/tmp. $TMPDIR
I dati di Scratch non vengono scritti /tmp come previsto Assicurati che i processi delle tue attività scrivano in modo esplicito /tmp e che i comandi delle attività non siano mappati in un'altra $TMPDIR posizione.
Le istanze GPU utilizzano sempre uno storage temporaneo Le attività GPU vengono sempre installate nell'archivio di istanze /tmp NVMe locale. L'impostazione scratchStorageMode su SHARED non disabilita l'archiviazione temporanea per le attività GPU.
Istanze GPU: la capacità NVMe è fissa Il dimensionamento personalizzato del disco non è supportato nelle istanze GPU. HealthOmics ignora le disk direttive e fornisce la capacità NVMe predefinita per il tipo di istanza.
Massimo 3.072 GiB per attività (CPU) Il provisioning delle richieste superiori a 3.072 GiB viene eseguito a 3.072 GiB con un avviso di run log. Le attività non sono fallite.
Solo livelli supportati (CPU) Le dimensioni richieste vengono arrotondate all'incremento di 16 GiB più vicino (16, 32, 48, 64,... fino a 3.072 GiB).
Expression-based direttive valutate in fase di esecuzione diski valori calcolati dalle espressioni vengono convalidati all'inizio dell'attività, non a. CreateWorkflow I costi di calcolo fino a quel momento vengono addebitati se l'attività ha esito negativo in fase di esecuzione.
SHAREDla modalità ignora tutte le direttive del disco (solo CPU) Le direttive SHARED When scratchStorageMode is disktmpdirMin, e equivalenti vengono ignorate per le attività della CPU. Non viene fornito alcun volume di archiviazione locale. Le attività della GPU non sono influenzate, utilizzano sempre NVMe locale.

Risoluzione dei problemi relativi allo storage temporaneo

L'operazione ha esito negativo se lo spazio di archiviazione temporaneo è esaurito

Un'operazione ha esito negativo quando lo spazio di archiviazione temporaneo raggiunge la capacità. Esamina i log del CloudWatch manifesto per determinare la quantità di spazio di archiviazione effettivamente utilizzata dall'attività, quindi aggiungi o aumenta la disk direttiva per richiedere un livello più ampio.

# Before: 4-vCPU task using the 16 GiB default runtime { cpu: 4 } # After: explicitly request 400 GiB runtime { cpu: 4, disks: "400 GiB" }

Lo storage temporaneo non sembra essere utilizzato

Chiama GetRun e controlla il campo. scratchStorageMode Se il valore èSHARED, l'archiviazione temporanea non è abilitata per quella corsa. Impostato per --scratch-storage-mode LOCAL la tua prossima start-run chiamata.

aws omics get-run --id run-id