Exécuter une analyse génomique dans un notebook JupyterLab

Ce tutoriel vous explique comment exécuter une analyse génomique à une seule cellule à l'aide de Dask, NVIDIA RAPIDS et de GPU, que vous pouvez configurer sur Managed Service for Apache Spark. Vous pouvez configurer Managed Service pour Apache Spark pour exécuter Dask avec son programmeur autonome ou avec YARN pour la gestion des ressources.

Ce tutoriel configure Managed Service pour Apache Spark avec une instance JupyterLab hébergée afin d'exécuter un notebook contenant une analyse génomique à une seule cellule. L'utilisation d'un notebook Jupyter sur Managed Service pour Apache Spark vous permet de combiner les fonctionnalités interactives de Jupyter avec la mise à l'échelle de la charge de travail activée par Managed Service pour Apache Spark. Avec Managed Service pour Apache Spark, vous pouvez effectuer un scaling horizontal de vos charges de travail d'une seule à plusieurs machines, que vous pouvez configurer avec autant de GPU que nécessaire.

Ce tutoriel s'adresse aux data scientists et aux chercheurs. Il part du principe que vous connaissez Python et que vous maîtrisez les composants de base suivants :

Objectifs

  • Créer une instance Managed Service pour Apache Spark configurée avec des GPU, JupyterLab et des composants Open Source.
  • Exécuter un notebook sur Managed Service pour Apache Spark.

Coûts

Dans ce tutoriel, vous utilisez les composants facturables de suivants Google Cloud:

  • Managed Service for Apache Spark
  • Cloud Storage
  • GPUs
  • Obtenez une estimation des coûts en fonction de votre utilisation prévue, utilisez le simulateur de coût.

    Les nouveaux utilisateurs de peuvent bénéficier d'un essai sans frais. Google Cloud

    Une fois que vous avez terminé les tâches décrites dans ce document, supprimez les ressources que vous avez créées pour éviter que des frais vous soient facturés. Pour en savoir plus, consultez la section Effectuer un nettoyage.

    Avant de commencer

    1. Dans la Google Cloud console, sur la page de sélection du projet, sélectionnez ou créez un Google Cloud projet.

      Rôles requis pour sélectionner ou créer un projet

      • Sélectionner un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
      • Créer un projet : pour créer un projet, vous devez disposer du rôle Créateur de projet (roles/resourcemanager.projectCreator), qui contient l'autorisation resourcemanager.projects.create. Découvrez comment attribuer des rôles.

      Accéder au sélecteur de projet

    2. Vérifiez que la facturation est activée pour votre Google Cloud projet.

    3. activer l'API Dataproc ;

      Rôles requis pour activer les API

      Pour activer les API, vous devez disposer de l'autorisation serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation via le rôle Propriétaire (roles/owner). Sinon, vous pouvez obtenir cette autorisation via le rôle Administrateur d'utilisation du service (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.

      Activer l'API

    Préparer votre environnement

    1. Sélectionnez un emplacement pour vos ressources.

      REGION=REGION
      

    2. Créez un bucket Cloud Storage.

      gcloud storage buckets create gs://BUCKET --location=REGION
      

    3. Copiez les actions d'initialisation suivantes dans votre bucket.

      SCRIPT_BUCKET=gs://goog-dataproc-initialization-actions-REGION
      gcloud storage cp ${SCRIPT_BUCKET}/gpu/install_gpu_driver.sh BUCKET/gpu/install_gpu_driver.sh
      gcloud storage cp ${SCRIPT_BUCKET}/dask/dask.sh BUCKET/dask/dask.sh
      gcloud storage cp ${SCRIPT_BUCKET}/rapids/rapids.sh BUCKET/rapids/rapids.sh
      gcloud storage cp ${SCRIPT_BUCKET}/python/pip-install.sh BUCKET/python/pip-install.sh
      

    Créer un cluster Managed Service pour Apache Spark avec JupyterLab et des composants Open Source

    1. Créez un cluster Managed Service pour Apache Spark.
    gcloud dataproc clusters create CLUSTER_NAME \
        --region REGION \
        --image-version 2.0-ubuntu18 \
        --master-machine-type n1-standard-32 \
        --master-accelerator type=nvidia-tesla-t4,count=4 \
        --initialization-actions
    BUCKET/gpu/install_gpu_driver.sh,BUCKET/dask/dask.sh,BUCKET/rapids/rapids.sh,BUCKET/python/pip-install.sh
    \
        --initialization-action-timeout=60m \
        --metadata
    gpu-driver-provider=NVIDIA,dask-runtime=yarn,rapids-runtime=DASK,rapids-version=21.06,PIP_PACKAGES="scanpy==1.8.1,wget" \
        --optional-components JUPYTER \
        --enable-component-gateway \
        --single-node
    

    Le cluster possède les propriétés suivantes :

    • --region : région où se trouve votre cluster.
    • --image-version : 2.0-ubuntu18, version de l'image de cluster
    • --master-machine-type : n1-standard-32, type de machine principal.
    • --master-accelerator : type et nombre de GPU sur le nœud principal, quatre GPU nvidia-tesla-t4.
    • --initialization-actions : chemins d'accès Cloud Storage aux scripts d'installation qui installent les pilotes de GPU, Dask, RAPIDS et les dépendances supplémentaires.
    • --initialization-action-timeout : délai avant expiration des actions d'initialisation.
    • --metadata: transmis aux actions d'initialisation pour configurer le cluster avec des pilotes de GPU NVIDIA, le programmeur autonome pour Dask et la version RAPIDS 21.06.
    • --optional-components : configure le cluster avec le composant Jupyter facultatif.
    • --enable-component-gateway : permet d'accéder aux interfaces utilisateur Web du cluster.
    • --single-node : configure le cluster en tant que nœud unique (aucun nœud de calcul).

    Accéder au notebook Jupyter

    1. Ouvrez la page Clusters dans la console Managed Service pour Apache Spark Google Cloud .
      Ouvrir la page "Clusters"
    2. Cliquez sur votre cluster, puis sur l'onglet Interfaces Web.
    3. Cliquez sur JupyterLab.
    4. Ouvrez un nouveau terminal dans JupyterLab.
    5. Clonez le clara-parabricks/rapids-single-cell-examples dépôt et extrayez la managed-spark/multi-gpu branche.

      git clone https://github.com/clara-parabricks/rapids-single-cell-examples.git
      git checkout managed-spark/multi-gpu
      

    6. Dans JupyterLab, accédez au rapids-single-cell-examples/notebooks et ouvrez le 1M_brain_gpu_analysis_uvm.ipynb.

    7. Pour supprimer tous les éléments de sortie du notebook, sélectionnez Modifier > Supprimer tous les éléments de sortie.

    8. Lisez les instructions dans les cellules du notebook. Le notebook utilise Dask et RAPIDS sur Managed Service pour Apache Spark pour vous guider dans un workflow à une seule cellule RNA-seq sur un million de cellules, y compris le traitement et la visualisation des données. Pour en savoir plus, consultez la page Accélérer l'analyse génomique à une seule cellule à l'aide de RAPIDS.

    Effectuer un nettoyage

    Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.

    Supprimer le projet

    1. Dans la Google Cloud console, accédez à la page Gérer les ressources.

      Accéder à la page "Gérer les ressources"

    2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
    3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez Arrêter pour supprimer le projet.

    Supprimer des ressources individuelles

    1. Supprimez votre cluster Managed Service pour Apache Spark.
      gcloud dataproc clusters delete cluster-name \
          --region=region
      
    2. Supprimez le bucket :
      gcloud storage buckets delete BUCKET_NAME

    Étape suivante