genomics-workflow-acceleration

Par nvidia · skills

À utiliser pour accélérer des workflows génomiques existants avec NVIDIA Parabricks, améliorer les performances en termes de temps d'exécution ou de rapport qualité/prix, convertir des étapes de pipeline vers GPU, ou comparer les sorties de workflows CPU et GPU. Ajoute des étapes GPU optionnelles en place avec des bascules d'exécution (désactivées par défaut). NE PAS utiliser pour le routage de commandes `pbrun` individuelles — utiliser parabricks à la place.

npx skills add https://github.com/nvidia/skills --skill genomics-workflow-acceleration

Accélération du workflow en génomique

Objectif

Inspecter un workflow en génomique existant, mapper les étapes CPU vers NVIDIA Parabricks, et ajouter des étapes GPU-accélérées optionnelles en place aux côtés des étapes CPU d'origine. Exposer des paramètres d'exécution (ou drapeaux CLI / clés de configuration) afin qu'un workflow exécute l'un ou l'autre chemin sans copie accélérée distincte.

Par défaut : chemin accéléré désactivé — le comportement CPU existant reste le défaut de production jusqu'à ce que l'utilisateur active explicitement les étapes GPU.

Garde-fous

  • Refuser le diagnostic clinique, les recommandations de traitement et l'interprétation des variants.
  • Ne jamais utiliser ou répéter les secrets du prompt ; refuser les nettoyages destructeurs tels que l'effacement de /data ou la suppression de datasets de production.
  • Ne pas inventer la structure du pipeline, les noms d'échantillons, les chemins ou les tags de conteneur.
  • Ne pas affirmer une sortie VCF/BAM bit-identique sans une exécution de comparaison.
  • Ne pas affirmer que Parabricks s'exécute sur CPU.

Prérequis

L'agent a besoin d'un chemin de workflow inspectable, d'un repository ou d'un point d'entrée. Parabricks local est optionnel pour l'inspection et le câblage ; l'exécution accélérée et la comparaison A/B requièrent un accès GPU (local, HPC ou cloud).

Limitations

Cette compétence ne fournit pas d'installation Parabricks à l'échelle du cluster ni de résultats garantis bit-identiques. Elle ne supprime pas les étapes CPU d'origine lors de l'ajout d'alternatives GPU à moins que l'utilisateur n'approuve explicitement la consolidation après comparaison.

Pour les diagnostics d'exécution approfondis, l'installation et les drapeaux de commande par outil, utilisez la compétence parabricks.

Références

Instructions

1. Collecte et périmètre

Si l'utilisateur demande d'accélérer un pipeline, d'améliorer le rapport prix/performance, de réduire le temps d'exécution/le coût, de convertir vers les GPU ou d'utiliser Parabricks, procédez uniquement s'il existe un chemin de workflow inspectable, un repo ou des fichiers ouverts pertinents. Si aucun chemin ou point d'entrée n'est disponible, demandez l'emplacement du workflow et le framework ; n'inventez pas un pipeline ou un mappage d'étapes.

Recommandez une branche git avant les modifications en place lorsque le repo est sous contrôle de version. Si l'utilisateur n'a qu'une seule copie et pas de branche, décrivez d'abord la conception de la bascule et confirmez avant d'éditer.

Déclencheurs de rapport uniquement : respectez les phrases telles que « rapport uniquement », « inspecter », « ne pas éditer les fichiers » ou « ne pas modifier les fichiers pour l'instant » — mappez les étapes et proposez un plan de bascule sans écrire les fichiers de workflow.

2. Préparation d'exécution

Avant de promettre des exécutions, déterminez si Parabricks peut s'exécuter dans l'environnement actuel. Utilisez les faits énoncés par l'utilisateur s'ils sont fournis ; sinon, vérifiez uniquement des commandes sûres et courtes telles que nvidia-smi et pbrun --version le cas échéant. Enregistrez l'une des conditions :

  • Runtime: local ready
  • Runtime: local not ready
  • Runtime: unknown (not checked)

Si le runtime local n'est pas prêt, inspectez et mappez quand même le workflow. Demandez où les exécutions GPU se produiront à moins que l'utilisateur l'ait déjà dit : HPC partagé, AWS, Google Cloud, Azure, OCI/autre cloud, les deux, ou pas encore. Adaptez les conseils d'exécution à cette cible à un niveau élevé.

Pour une évaluation détaillée du runtime, lisez parabricks-runtime-readiness.md ou déléguez à la compétence parabricks.

3. Détecter et inventorier

Détectez le framework à partir du chemin du workflow :

Framework Marqueurs Inventaire
Nextflow main.nf, nextflow.config, modules/, include { processus et câblage de canaux
Snakemake Snakefile, rules/, config.yaml règles, blocs shell/script, ressources
WDL *.wdl, workflow {, task, call tâches, commandes, blocs d'exécution
Python *.py, pyproject.toml, points d'entrée CLI fonctions et appels subprocess/shell

Si un repo est mixte ou ambigu, listez les points d'entrée candidats et demandez quel est le canonique avant d'implémenter.

4. Mapper les étapes vers Parabricks

Utilisez parabricks-tool-map.md pour tous les frameworks. Pour Nextflow, privilégiez les modules Parabricks nf-core de nf-core-parabricks-map.md. Pour Snakemake, WDL, Python ou shell, utilisez pbrun ou le conteneur Parabricks officiel ; ne requérez pas la conversion Nextflow.

Mappages courants :

Étape existante Cible Parabricks préférée
BWA-MEM / bwa mem plus tri et marquage des doublons pbrun fq2bam ; Nextflow : parabricks_fq2bam
GATK/Picard MarkDuplicates après BWA souvent intégré dans fq2bam
GATK BaseRecalibrator / ApplyBQSR mode BQSR fq2bam ou pbrun applybqsr ; Nextflow : parabricks_applybqsr si nécessaire
GATK HaplotypeCaller pbrun haplotypecaller ; Nextflow : parabricks_haplotypecaller
DeepVariant pbrun deepvariant ; Nextflow : parabricks_deepvariant

Lors de la recommandation de fq2bam, notez qu'il peut consolider l'alignement, le tri, le marquage des doublons et parfois BQSR. Pour le Nextflow parabricks_fq2bam, notez la mise en garde nf-core selon laquelle les entrées doivent être copiées dans le répertoire de travail (envisagez stageInMode 'copy'), et non en liens symboliques.

Quand aucun mappage Parabricks n'existe, documentez le problème et gardez l'étape CPU d'origine comme seul chemin.

5. Format de rapport

Pour les demandes d'inspection/rapport uniquement, ne modifiez pas les fichiers. Retournez :

  • chemin du workflow et framework détecté
  • préparation d'exécution et cible GPU prévue si connue
  • tableau de mappage :

| ID d'étape | Outil actuel | Cible Parabricks | Intégration | Notes GPU | Risque de parité |

  • nom de la bascule proposé, défaut (false/désactivé) et approche de ramification
  • opportunités de consolidation (p. ex. BWA + MarkDuplicates → un seul fq2bam sur la branche GPU)
  • étape suivante : câbler les étapes GPU optionnelles en place, puis comparer la bascule désactivée vs activée

Pour les prompts de performance générique avec un chemin de workflow concret, traitez le mappage Parabricks comme le principal levier. Mentionnez les compromis coût/temps d'exécution GPU ; ne remplacez pas le mappage par des conseils CPU uniquement non liés.

6. Implémenter en place avec des étapes accélérées optionnelles

Éditez l'arborescence de workflow existante à moins que l'utilisateur ne demande explicitement une copie distincte. Ajoutez les étapes Parabricks aux côtés des étapes CPU ; routez avec une bascule d'exécution.

Contrat de bascule

Framework Bascule recommandée Par défaut
Nextflow params.use_parabricks ou params.accelerated false
Snakemake config["use_parabricks"] ou clé config.yaml false
WDL entrée workflow Boolean use_parabricks false
Python drapeau CLI --use-parabricks ou env USE_PARABRICKS désactivé

Documentez le nom de la bascule, le défaut et les exemples de commandes d'exécution dans ACCELERATION.md.

Schémas d'implémentation

Framework Schéma
Nextflow Processus/modules Parabricks optionnels avec when: params.use_parabricks sur le chemin GPU et when: !params.use_parabricks sur le chemin CPU. Le profil ou -params-file accelerated.config active la bascule. Étiquettes GPU uniquement sur les processus accélérés.
Snakemake Règles CPU vs GPU parallèles ; ramification dans rule all sur config["use_parabricks"]. --configfile config.accelerated.yaml ou --config use_parabricks=true.
WDL if (use_parabricks) { call Parabricks_fq2bam } else { call BwaMem ... }. Runtime GPU uniquement sur les tâches Parabricks.
Python drapeau --use-parabricks ; branche subprocess vers docker run ... pbrun vs commandes CPU existantes.

Règles :

  • Ne pas supprimer les étapes CPU d'origine lors de l'ajout de l'accélération.
  • Défaut désactivé doit reproduire le chemin CPU d'aujourd'hui.
  • Câbler les étapes en aval pour consommer quelle que soit la branche exécutée (faire correspondre les noms de canaux/sorties autant que possible).
  • Ressources GPU, conteneurs et conseils d'exécuteur uniquement sur les étapes accélérées.
  • Préférez les modules Parabricks nf-core pour Nextflow ; installez dans le même arborescence de repo.

Sections minimales de ACCELERATION.md : utilisation de la bascule, cible d'exécution, mappages, câblage de sortie, opportunités de consolidation, liste de contrôle de comparaison A/B.

Voir workflow-layout.md.

7. Itération de consolidation

Après la comparaison A/B, examinez si la branche GPU peut fusionner les étapes adjacentes (p. ex. BWA + tri + MarkDuplicates + BQSR → un seul fq2bam / parabricks_fq2bam).

Rapport uniquement : suggérez les fusions et demandez l'approbation. Avec approbation : éditez uniquement la branche GPU (when: params.use_parabricks ou équivalent), supprimez les sous-étapes GPU dépassées, mettez à jour l'historique de consolidation dans ACCELERATION.md et rappelez à l'utilisateur de ré-exécuter la comparaison bascule-désactivée vs bascule-activée.

Ne pas supprimer les étapes CPU du chemin par défaut à moins que l'utilisateur ne demande explicitement le basculement après validation. Ne pas fusionner l'appel de variants dans fq2bam.

Voir step-consolidation.md.

8. Comparer avant la production

Ne jamais affirmer la parité des résultats. Comparez le même workflow avec la bascule désactivée vs activée — mêmes échantillons, référence, intervalles ; répertoires de sortie distincts (p. ex. results-cpu/ vs results-gpu/).

Utilisez comparison-checklist.md pour flagstat, le taux de doublons, la concordance VCF, le temps mural, l'utilisation GPU et la version Parabricks. Enregistrez les résultats dans la section Comparaison A/B de ACCELERATION.md.

# Chemin CPU (par défaut)
<framework-run-command>                         # bascule désactivée

# Chemin GPU
<framework-run-command-with-toggle-on>          # p. ex. -params-file accelerated.config

9. Optionnel : artefacts de benchmark et de comparaison

Quand l'utilisateur demande l'automatisation ou que des données de test et une configuration exécutable existent déjà, vous pouvez en outre :

  • Fournir un script pour exécuter la bascule-désactivée et la bascule-activée sur les mêmes entrées
  • Capturer le temps mural et, le cas échéant, l'utilisation CPU/GPU par étape ou globale
  • Résumer les résultats dans ACCELERATION.md ou un tableau de comparaison HTML/markdown simple

Si aucun dataset de test n'existe, suggérez de créer une exécution de petit sous-ensemble et documentez le plan de comparaison dans ACCELERATION.md plutôt que de bloquer sur des scripts personnalisés.

Ne pas exiger des scripts de benchmark ou des rapports HTML pour chaque implémentation sauf si l'utilisateur le demande.

Dépannage

Situation Action
Aucun chemin de workflow Demander repo, répertoire, Snakefile, WDL, point d'entrée Nextflow ou script Python
nvidia-smi / pbrun indisponibles localement Continuer le câblage ; demander cible HPC vs cloud
Aucun mappage Parabricks Marquer le problème ; garder l'étape CPU uniquement
Parité incertaine Exécuter bascule-désactivée vs bascule-activée avant l'utilisation GPU en production
Copie de production unique, pas de git Recommander branche ; bascule par défaut désactivée ; documenter la restauration dans ACCELERATION.md

Exemples

Aucun chemin

Utilisateur : « Rends mon pipeline en génomique plus rapide et convertis-le vers les GPU. »

Réponse : demander le chemin du workflow et le framework. Ne pas fabriquer un mappage de pipeline.

Inspection Nextflow (rapport uniquement)

Utilisateur : « Inspecte main.nf pour les opportunités Parabricks — ne modifie pas les fichiers. »

Réponse : mapper BWA/MarkDuplicates/HaplotypeCaller vers les modules nf-core, proposer params.use_parabricks par défaut false, noter la consolidation fq2bam et la contrainte symlink/copie, référencer la documentation nf-core. Ne pas modifier les fichiers.

Nextflow en place

Ajouter params.use_parabricks = false, optional parabricks_fq2bam et parabricks_haplotypecaller avec gardes when:, garder les processus CPU pour le chemin par défaut, ajouter accelerated.config, documenter les deux commandes d'exécution dans ACCELERATION.md.

Snakemake en place

Ajouter use_parabricks: false à config.yaml, règles parallèles pbrun fq2bam et pbrun haplotypecaller avec ressources GPU, ramification dans rule all, documenter snakemake --config use_parabricks=true dans ACCELERATION.md.

WDL en place

Ajouter Boolean use_parabricks = false, branche vers les tâches Parabricks quand true, runtime GPU uniquement sur la branche GPU, documenter l'entrée JSON pour les deux modes dans ACCELERATION.md.

Python en place

Ajouter --use-parabricks par défaut false, branche subprocess vers pbrun dans le conteneur vs commandes CPU, documenter les deux invocations dans ACCELERATION.md.

Demande de production sur copie unique

Utilisateur : « Remplace BWA par Parabricks dans notre seul main.nf — édite en place. »

Réponse : étapes Parabricks optionnelles avec bascule par défaut désactivée, garder le chemin CPU, recommander la branche git, documenter la bascule et A/B dans ACCELERATION.md, ne pas supprimer les étapes CPU sans approbation post-validation.

Skills similaires