Ejecuta un análisis de genómica en un notebook de JupyterLab

En este instructivo, se muestra cómo ejecutar un análisis genómico de una sola célula con Dask, NVIDIA CUDA-X y GPU, que puedes configurar en Managed Service para Apache Spark. Puedes configurar Managed Service para Apache Spark para que ejecute Dask con su programador independiente o con YARN para la administración de recursos.

En este instructivo, se configura Managed Service para Apache Spark con una instancia de JupyterLab alojada para ejecutar un notebook que incluye un análisis genómico de una sola célula. Usar un notebook de Jupyter en Managed Service para Apache Spark te permite combinar las capacidades interactivas de Jupyter con el escalamiento de cargas de trabajo que habilita Managed Service para Apache Spark. Con Managed Service para Apache Spark, puedes escalar horizontalmente tus cargas de trabajo de una a muchas máquinas, que puedes configurar con tantas GPUs como necesites.

Este instructivo está dirigido a investigadores y científicos de datos. Se supone que tienes experiencia con Python y que tienes conocimientos básicos sobre lo siguiente:

Objetivos

  • Crear una instancia de Managed Service para Apache Spark configurada con GPU, JupyterLab y componentes de código abierto
  • Ejecuta un notebook en Managed Service para Apache Spark.

Costos

En este documento, usarás los siguientes componentes facturables de Cloud de Confiance by S3NS:

  • Managed Service for Apache Spark
  • Cloud Storage
  • GPUs
  • Cuando completes las tareas que se describen en este documento, podrás borrar los recursos que creaste para evitar que se te siga facturando. Para obtener más información, consulta Realiza una limpieza.

    Antes de comenzar

    1. En la consola de Cloud de Confiance , en la página del selector de proyectos, selecciona o crea un proyecto de Cloud de Confiance .

      Roles necesarios para seleccionar o crear un proyecto

      • Seleccionar un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
      • Crea un proyecto: Para crear un proyecto, necesitas el rol de Creador de proyectos (roles/resourcemanager.projectCreator), que contiene el permiso resourcemanager.projects.create. Obtén más información para otorgar roles.

      Ir al selector de proyectos

    2. Verifica que la facturación esté habilitada para tu proyecto de Cloud de Confiance .

    3. Habilita la API de Dataproc si aún no está habilitada.

      Roles necesarios para habilitar las APIs

      Para habilitar las APIs, necesitas el permiso serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtenerlo a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén información para otorgar roles.

      Habilitar la API

    Prepara el entorno

    1. Selecciona una ubicación para tus recursos.

      REGION=REGION
      

    2. Crear un bucket de Cloud Storage

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

    3. Copia las siguientes acciones de inicialización en tu 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
      

    Crea un clúster de Managed Service para Apache Spark con JupyterLab y componentes de código abierto

    1. Crea un clúster de Managed Service para 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
    

    El clúster tiene las siguientes propiedades:

    • --region: Es la región en la que se encuentra el clúster.
    • --image-version: 2.0-ubuntu18, es la versión con imágenes del clúster.
    • --master-machine-type: n1-standard-32, es el tipo de máquina principal.
    • --master-accelerator: Es el tipo y el recuento de GPU en el nodo principal, cuatro GPU nvidia-tesla-t4.
    • --initialization-actions: Son las rutas de acceso de Cloud Storage a las secuencias de comandos de instalación que instalan los controladores de GPU, Dask, CUDA-X y las dependencias adicionales.
    • --initialization-action-timeout: Es el tiempo de espera para las acciones de inicialización.
    • --metadata: Se pasa a las acciones de inicialización para configurar el clúster con controladores de GPU de NVIDIA, el programador independiente para Dask y la versión 21.06 de CUDA-X.
    • --optional-components: Configura el clúster con el componente opcional de Jupyter.
    • --enable-component-gateway: Permite el acceso a las IU web en el clúster.
    • --single-node: Configura el clúster como un solo nodo (sin trabajadores).

    Accede al notebook de Jupyter

    1. Abre la página Clústeres en la consola de Cloud de Confiance de Managed Service para Apache Spark.
      Abrir la página Clústeres
    2. Haz clic en tu clúster y, luego, en la pestaña Interfaces web.
    3. Haz clic en JupyterLab.
    4. Abre una terminal nueva en JupyterLab.
    5. Clona el repositorio clara-parabricks/rapids-single-cell-examples y revisa la rama managed-spark/multi-gpu.

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

    6. En JupyterLab, navega al repositorio rapids-single-cell-examples/notebooks y abre el Notebook de Jupyter 1M_brain_gpu_analysis_uvm.ipynb.

    7. Para borrar todos los resultados del notebook, selecciona Edit > Clear All Outputs.

    8. Lee las instrucciones en las celdas del notebook. El notebook usa Dask y CUDA-X en Managed Service para Apache Spark para guiarte a través de un flujo de trabajo de RNA-seq de una sola célula en 1 millón de células, incluido el procesamiento y la visualización de los datos. Para obtener más información, consulta Acelera el análisis genómico de una sola célula con CUDA-X.

    Realiza una limpieza

    Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.

    Borra el proyecto

    1. En la Cloud de Confiance consola, ve a la página Administrar recursos.

      Ir a Administrar recursos

    2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
    3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

    Borra los recursos individuales

    1. Borra tu clúster de Managed Service para Apache Spark.
      gcloud dataproc clusters delete cluster-name \
          --region=region
      
    2. Borra el bucket:
      gcloud storage buckets delete BUCKET_NAME

    ¿Qué sigue?