Esegui l'ottimizzazione per un HealthOmics flusso di lavoro privato - 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à.

Esegui l'ottimizzazione per un HealthOmics flusso di lavoro privato

Puoi ottimizzare le esecuzioni per il costo totale, il tempo di esecuzione totale o una combinazione di entrambi. HealthOmics fornisce dati e strumenti per aiutarvi a prendere decisioni di ottimizzazione delle esecuzioni. L'ottimizzazione delle esecuzioni non si applica ai flussi di lavoro Ready2Run, poiché non hai alcun controllo sul modo in cui il servizio gestisce l'approvvigionamento delle risorse per questi flussi di lavoro.

Il primo passaggio consiste nel comprendere l'utilizzo corrente delle risorse e il costo delle attività in esecuzione, quindi applicare metodi per ottimizzare i costi e le prestazioni di esecuzione.

Esegui Analyzer

HealthOmics fornisce uno strumento open source denominato Run Analyzer. Questo strumento estrae informazioni sull'utilizzo delle risorse a livello di attività per una corsa e suggerisce opportunità di ottimizzazione dei costi e delle prestazioni di esecuzione.

Nota

Run analyzer stima i costi delle attività e i potenziali risparmi sui costi in base ai prezzi di AWS listino al momento dell'esecuzione dello strumento. Valuta i consigli di ottimizzazione e implementa quelli più adatti ai tuoi casi d'uso. Testa le ottimizzazioni che adotti per assicurarti che funzionino per la tua corsa.

Run Analyzer esegue le seguenti attività:

  • Valuta i colli di bottiglia di memoria e calcolo.

  • Identifica le attività che richiedono un eccessivo approvvigionamento di memoria o CPU e consiglia nuove dimensioni delle istanze in grado di ridurre i costi.

  • Calcola le stime dei costi per le singole attività e calcola i potenziali risparmi sui costi se si applicano i consigli.

  • Fornisce una visualizzazione cronologica delle attività in modo da poter verificare le dipendenze tra le attività e la sequenza di elaborazione. La sequenza temporale consente inoltre di identificare le attività di lunga durata.

  • Fornisce consigli sulla dimensione del file system per l'archiviazione di esecuzione.

  • Mostra i tempi di approvvigionamento delle attività in modo da poter identificare le aree in cui grandi carichi di container potrebbero rallentare i tempi di approvvigionamento.

  • Lo strumento include un parametro di input (headroom) che puoi utilizzare per controllare l'aggressività dei consigli di ottimizzazione.

Le sezioni seguenti includono suggerimenti specifici per l'utilizzo di Run Analyzer per ottimizzare le esecuzioni.

Determina i costi di esecuzione

È possibile utilizzare i seguenti metodi e linee guida per determinare i costi di gestione:

  • Per visualizzare i costi di gestione totali per un periodo di fatturazione, procedi nel seguente modo:

    1. Apri la console Billing and Cost Management e scegli Bills.

    2. In Charges by service, espandi Omics.

    3. Espandi la regione, quindi visualizza il costo di tutte le tue esecuzioni suddivise per tipo di istanza omics, tipo di storage di esecuzione e flusso di lavoro Ready2Run.

  • Per generare un rapporto sui costi che includa informazioni per ogni esecuzione, procedi nel seguente modo:

    1. Apri la console Billing and Cost Management e scegli Esportazioni dati.

    2. Scegli Crea per creare una nuova esportazione di dati.

    3. Inserisci un nome di esportazione per l'esportazione dei dati. Mantieni gli altri campi ai valori predefiniti per creare un rapporto CUR (costo e utilizzo).

    4. Per la granularità temporale, seleziona ogni ora o ogni giorno.

    5. In Impostazioni di archiviazione per l'esportazione dei dati, esegui questi passaggi di configurazione:

      1. Configura un bucket Amazon S3 per l'esportazione dei dati.

      2. Per il controllo delle versioni dei file, seleziona se sovrascrivere il file di esportazione esistente o creare ogni volta un nuovo file.

      Il sistema genera il primo rapporto entro le 24 ore successive e genera i report successivi una volta al giorno.

    6. Per ulteriori informazioni su come creare l'esportazione dei dati, vedere Creazione di esportazioni di dati nella Guida per l'utente delle esportazioni di AWS dati.

  • Puoi etichettare le tue tirature per monitorare e ottimizzare i costi per categoria, ad esempio per team o per progetto. Se utilizzi i tag, segui questi passaggi per visualizzare i costi di esecuzione per categoria di tag:

    1. Apri la console Billing and Cost Management e scegli Cost Explorer.

    2. In Parametri del rapporto > Raggruppa per, scegli Tag come dimensione e seleziona il nome del tag desiderato.

  • Per vedere l'utilizzo delle risorse per le attività, visualizza i log in del manifesto di esecuzione. CloudWatch Per ulteriori informazioni, consulta Monitoraggio HealthOmics con CloudWatch registri.

  • Utilizzate lo Esegui Analyzer strumento per estrarre le informazioni sull'utilizzo delle risorse delle attività per un'esecuzione.

Determina l'utilizzo in fase di esecuzione

È possibile utilizzare i seguenti metodi per analizzare l'utilizzo in fase di esecuzione:

  • Dalla pagina Esecuzioni della console, è possibile visualizzare il tempo di esecuzione totale di un'esecuzione.

  • Dalla pagina dei dettagli dell'esecuzione, è possibile visualizzare i seguenti elementi:

    • Visualizza il tempo di esecuzione totale di una corsa.

    • Visualizza il tempo di esecuzione per ogni attività in esecuzione.

    • Scegli uno dei link per visualizzare i log in Amazon S3 o per visualizzare i log di esecuzione o i log in di esecuzione del manifest. CloudWatch

  • Dall'elenco Esegui attività, scegli il link Visualizza registri relativo a un'attività per visualizzare i log delle attività. CloudWatch

  • La risposta all'operazione listRuns API include l'ora di inizio e l'ora di fine dell'esecuzione, in modo da poter calcolare il tempo di esecuzione totale.

  • Lo Esegui Analyzer strumento mostra la durata delle attività in una visualizzazione temporale. Questo strumento fornisce una rappresentazione visiva della sequenza di elaborazione delle attività, che è possibile abbinare all'ordine previsto.

Metodi per ottimizzare le esecuzioni

HealthOmics fornisce, gestisce e ottimizza automaticamente le risorse che eseguono l'archiviazione temporanea dei dati (ad esempio importazioni ed esportazioni di dati). HealthOmics inoltre avvia ed esegue il motore di workflow relativo al tuo workflow. Tuttavia, è possibile influenzare gli orari di inizio dell'esecuzione, gli orari di inizio delle attività e il tempo di esecuzione complessivo dell'attività impostando varie configurazioni di esecuzione. L'approccio generale alla definizione e alla progettazione del flusso di lavoro influisce anche sul tempo di esecuzione delle attività. L'elenco seguente descrive i fattori che possono influire sull'esecuzione e sulle prestazioni delle attività:

Esegui il tipo di archiviazione

Il tipo di run storage ha un impatto sulle prestazioni di esecuzione e sul tempo di esecuzione del provisioning. Il Dynamic Run Storage esegue il provisioning più velocemente e non esaurisce mai la memoria, perché si adatta dinamicamente alle esigenze di run storage. Lo storage a esecuzione dinamica è ideale anche per i flussi di lavoro in fase di sviluppo, in cui spesso è possibile avviare e arrestare un flusso di lavoro per risolvere i problemi.

Lo storage a esecuzione statica richiede tempi di provisioning del file system più lunghi, ma può completare alcune esecuzioni più velocemente, in genere se le esecuzioni hanno un'elevata concomitanza delle attività o richiedono una capacità del file system superiore a 9,6 TiB. Lo storage a esecuzione statica è ideale per flussi di lavoro di lunga durata con requisiti elevati. I/O

Per aiutarti a valutare il rapporto costo/prestazioni di ogni tipo di run storage per una determinata esecuzione, puoi provare i test A/B per vedere quale tipo di run storage offre prestazioni migliori. Inoltre, prendi in considerazione l'utilizzo di Dynamic Run Storage per i tuoi cicli di sviluppo, quindi utilizza lo storage a esecuzione statica per esecuzioni di produzione su larga scala.

Per ulteriori informazioni sui tipi di run storage Esegui tipi di storage nei flussi HealthOmics di lavoro

Esegui un provisioning eccessivo dello storage statico

Se il calcolo delle attività del flusso di lavoro è limitato da 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 colli di bottiglia, l'aumento delle dimensioni del file system per ridurre il tempo di esecuzione delle attività può ridurre il costo complessivo.

Riduci le dimensioni delle immagini dei contenitori

All'avvio di ogni attività, HealthOmics carica il contenitore specificato per l'attività. I contenitori più grandi richiedono più tempo per essere caricati. Ottimizza i contenitori in modo che siano il più piccoli possibile per migliorare l'efficienza nell'avvio di nuove attività. Se aggiungi set di dati di grandi dimensioni ai tuoi contenitori, valuta la possibilità di archiviare i set di dati in S3 e di fare in modo che il flusso di lavoro importi i dati da S3. Per le dimensioni massime dei contenitori supportate, consulta HealthOmics . HealthOmics quote a dimensione fissa per il flusso di lavoro

Dimensioni processo

È possibile combinare piccole attività sequenziali in un'unica attività per ridurre i tempi di assegnazione delle attività. Inoltre, HealthOmics prevede una tariffa minima per la durata delle attività di un minuto, quindi la combinazione delle attività può ridurre i costi. Nell'ambito dell'operazione combinata, potresti essere in grado di utilizzare le pipe Unix per evitare i I/O costi di serializzazione e deserializzazione dei file.

Compressione dei file

Evita di comprimere eccessivamente i file intermedi del flusso di lavoro. La maggior parte dei formati genomici utilizza la compressione «gzip» o «block gzip». La decompressione del file di input dell'attività e la ricompressione del file di output dell'attività possono consumare una grande percentuale dell'utilizzo complessivo della CPU dell'operazione. Alcune applicazioni di genomica consentono di impostare il livello di compressione durante la serializzazione degli output. Riducendo il livello di compressione, è possibile ridurre il tempo impiegato dalla CPU, sebbene file più grandi aumentino il tempo impiegato per la scrittura su disco. A seconda dell'attività e dell'applicazione, è possibile individuare il livello di compressione ottimale per i file intermedi che garantiscono il tempo di esecuzione più breve. Si consiglia di iniziare indirizzando le attività con i file di output più grandi. Un livello di compressione pari a 2 è ideale per diversi scenari. Puoi iniziare con questo livello in base al tuo caso d'uso e confrontare i risultati provando altri livelli di compressione.

Numero di thread

Se specifichi i thread nella definizione dell'attività, imposta il numero di thread sullo stesso valore del numero di v richiesti. CPUs

Specificate calcolo e memoria

Se non specificate risorse di memoria o di calcolo nell'attività, HealthOmics assegna il tipo di istanza più piccolo (omics.c.large) come predefinito. Dichiara esplicitamente i tuoi requisiti di memoria e calcolo se desideri HealthOmics assegnare un tipo di istanza più grande.

HealthOmics alloca il numero di risorse vCPUs, memoria e GPU richieste. Ad esempio, se richiedi 15v CPUs e 33GiB, HealthOmics alloca un'istanza omics.m.4xl (16v, 64GB) per l'attivitàCPUs, ma l'attività può utilizzare solo 15 v e 33GiB. CPUs Pertanto, ti consigliamo di richiedere risorse v e di memoria che corrispondano a un'istanza omics. CPUs

Batch più campioni in un'unica esecuzione

Poiché il provisioning del file system richiede tempo all'inizio dell'esecuzione, è possibile risparmiare tempo di provisioning raggruppando più campioni nella stessa esecuzione. Considerate i seguenti fattori prima di scegliere questo approccio:

  • Un singolo campione errato può causare il fallimento di un flusso di lavoro, pertanto la suddivisione in batch dei campioni potrebbe aumentare il numero di flussi di lavoro non riusciti. Se non sei sicuro che il tuo flusso di lavoro avrà successo per la maggior parte del tempo, un'esecuzione per campione potrebbe essere un approccio migliore.

  • HealthOmics alloca un unico file system di archiviazione per l'intero flusso di lavoro. Per un batch di campioni, assicuratevi di specificare una quantità sufficiente di storage di esecuzione per elaborare tutti i campioni.

  • È prevista una quantità massima di storage di esecuzione per flusso di lavoro, pertanto ciò potrebbe limitare il numero di campioni che è possibile aggiungere al batch.

  • La dimensione minima dello storage di esecuzione è di 1,2 TiB, quindi il batch può ridurre i costi se il flusso di lavoro utilizza molto meno spazio di archiviazione rispetto al minimo per ogni campione.

  • Run storage è in grado di gestire più connessioni simultanee, quindi avere più attività che utilizzano lo stesso storage di esecuzione non dovrebbe causare colli di bottiglia. I/O

  • Ogni esecuzione ha il proprio set di tag. Se contrassegni i flussi di lavoro con informazioni per la definizione del budget o il monitoraggio, potrebbe essere preferibile utilizzare esecuzioni separate.

  • I ruoli IAM si applicano all'intera esecuzione. Ogni utente ha accesso a tutti i dati per un batch di campioni. La separazione dei flussi di lavoro consente di utilizzare autorizzazioni più dettagliate.

  • HealthOmics imposta quote a livello di account per il numero massimo di flussi di lavoro simultanei e il numero massimo di attività simultanee in un flusso di lavoro. Per informazioni su come richiedere un aumento di queste quote, vedere. HealthOmics quote di servizio

Usa i parametri per le immagini dei contenitori

Parametrizza le immagini del contenitore anziché incorporarle nel flusso di lavoro URIs . Se si tratta di parametri di esecuzione, HealthOmics verifica che l'esecuzione abbia accesso ai contenitori prima dell'inizio dell'esecuzione. In caso contrario, l'attività ha esito negativo durante l'esecuzione, quando sono stati sostenuti addebiti per tutte le attività completate. Inoltre, poiché si tratta di input con parametri, HealthOmics genera un checksum nel manifesto di esecuzione, che migliora la provenienza dell'esecuzione.

Usa un linter

Utilizzate un linter per trovare gli errori più comuni del flusso di lavoro prima di eseguire un nuovo flusso di lavoro. Per ulteriori informazioni, consulta Stampanti per flussi di lavoro in HealthOmics.

Utilizzatelo EventBridge per segnalare i problemi

Utilizza avvisi EventBridge personalizzati per rilevare anomalie specifiche della tua logica aziendale.

Usa gli archivi di sequenza

Prendi in considerazione l'utilizzo di un archivio di sequenze per i dati di origine per risparmiare sui costi di archiviazione. Per ulteriori informazioni, consulta Store omics data in modo conveniente su qualsiasi scala con HealthOmics post sul blog.

Impatto della variazione delle dimensioni dei file tra le esecuzioni

Gli utenti spesso progettano e testano le esecuzioni utilizzando un piccolo set di dati di test, quindi utilizzano un'ampia varietà di dati con variazioni significative delle dimensioni dei file nei cicli di produzione. Assicurati di tenere conto di questa varianza quando ottimizzi l'esecuzione.

L'elenco seguente descrive i consigli per l'ottimizzazione in caso di variazioni significative nelle dimensioni dei file:

Variate le dimensioni dei file nei dati di test

Prova a utilizzare dati di test durante lo sviluppo che abbiano una varianza rappresentativa.

Usa Run Analyzer

Utilizza lo strumento Run Analyzer su una varietà di campioni per tenere conto della varianza nelle dimensioni dei dati.

È possibile utilizzare lo strumento Run Analyzer per comprendere la varianza tra le esecuzioni nei campioni di dati di produzione. Utilizzate --batch la modalità di Run Analyzer per generare statistiche per un batch di esecuzioni e analizzare le risorse di calcolo massime necessarie per gestire i valori anomali nei set di dati.

Ad esempio, è possibile assegnare a run analyzer una cella di dati a flusso completo in modalità batch per comprendere il picco di utilizzo della vCPU e della memoria per la cella a flusso completo.

Ridurre la varianza delle dimensioni dei set di dati di input

Se si riscontra un'elevata varianza nelle dimensioni dei campioni, è possibile biforcare i campioni a monte del file system HealthOmics e selezionare diverse dimensioni del file system per ogni batch per risparmiare sui costi di storage di esercizio.

In WDL, utilizzate la size funzione per biforcare l'allocazione delle risorse per singole attività per campioni grandi rispetto a campioni piccoli. Applica questa strategia alle attività più costose per avere il massimo impatto.

In Nextflow, utilizza risorse condizionali per suddividere l'allocazione delle risorse in base alla dimensione o al nome del file. Per ulteriori informazioni, consulta Risorse di processo condizionali sul sito Nextflow. GitHub

Non ottimizzate troppo presto

Finalizza il codice e la logica del flusso di lavoro prima di investire in importanti sforzi di ottimizzazione delle prestazioni. La modifica del codice può avere un impatto significativo sulle risorse richieste. Se ottimizzi un'esecuzione troppo presto nel processo di sviluppo, potresti ottimizzarla eccessivamente o potrebbe essere necessario ottimizzarla nuovamente se la definizione del flusso di lavoro cambia in un secondo momento.

Eseguite nuovamente lo strumento Run Analyzer periodicamente

Se apporti modifiche alla definizione del flusso di lavoro nel tempo o se la varianza del campione cambia, esegui periodicamente lo strumento Run Analyzer per apportare ottimizzazioni aggiuntive.

Metodi per ottimizzare la concorrenza delle risorse

HealthOmics offre le seguenti funzionalità per aiutarvi a controllare e gestire i costi quando l'elaborazione viene eseguita su larga scala:

  • Utilizza i gruppi di esecuzione per controllare i costi e l'utilizzo delle risorse. È possibile impostare valori massimi nel gruppo di esecuzione per il numero di esecuzioni simultanee CPUs GPUs, v e il tempo di esecuzione totale per attività. Se team o gruppi diversi utilizzano lo stesso account, puoi creare un gruppo di corsa separato per ogni team. Puoi controllare l'utilizzo delle risorse e i costi per team e configurando i valori massimi del gruppo di esecuzione. Per ulteriori informazioni, consulta Creazione di gruppi di HealthOmics corsa.

  • Durante lo sviluppo, puoi configurare un gruppo di esecuzione separato con valori massimi inferiori per catch task in esecuzione.

  • Le Service Quotas aiutano anche a proteggere il tuo account da richieste eccessive di risorse. Per informazioni su Service Quotas, incluso come richiedere aumenti del valore delle quote, vedere HealthOmics quote di servizio