Executar uma análise genômica em um notebook JupyterLab

Neste tutorial, mostramos como executar uma análise genômica de célula única usando o Dask, o NVIDIA CUDA-X e GPUs, que podem ser configurados no Serviço Gerenciado para Apache Spark. É possível configurar o Serviço Gerenciado para Apache Spark para executar o Dask com o programador independente ou com o YARN para gerenciamento de recursos.

Neste tutorial, você vai configurar o Serviço Gerenciado para Apache Spark com uma instância hospedada do JupyterLab para executar um notebook com uma análise genômica de célula única. Ao usar um notebook do Jupyter no Serviço Gerenciado para Apache Spark, é possível combinar os recursos interativos do Jupyter com o escalonamento de cargas de trabalho que o Serviço Gerenciado para Apache Spark permite. Com o Serviço Gerenciado para Apache Spark, é possível escalonar horizontalmente suas cargas de trabalho de uma para várias máquinas, que podem ser configuradas com quantas GPUs forem necessárias.

Este tutorial é destinado a cientistas de dados e pesquisadores. Ele pressupõe que você tenha experiência com Python e tenha conhecimento básico dos seguintes tópicos:

Objetivos

  • Crie uma instância do Serviço Gerenciado para Apache Spark configurada com GPUs, JupyterLab e componentes de código aberto.
  • Execute um notebook no Serviço Gerenciado para Apache Spark.

Custos

Neste documento, você vai usar os seguintes componentes faturáveis do Cloud de Confiance by S3NS:

  • Managed Service for Apache Spark
  • Cloud Storage
  • GPUs
  • Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Para mais informações, consulte Limpeza.

    Antes de começar

    1. No console do Cloud de Confiance , na página do seletor de projetos, selecione ou crie um projeto do Cloud de Confiance .

      Papéis necessários para selecionar ou criar um projeto

      • Selecionar um projeto: não é necessário ter um papel específico do IAM para selecionar um projeto. É possível selecionar qualquer projeto em que você tenha um papel.
      • Criar um projeto: para criar um projeto, é preciso ter o papel de Criador de projetos (roles/resourcemanager.projectCreator), que contém a permissão resourcemanager.projects.create. Saiba como conceder papéis.

      Acessar o seletor de projetos

    2. Verifique se o faturamento está ativado para o projeto do Cloud de Confiance .

    3. Ative a API Dataproc, se ainda não estiver ativada.

      Funções necessárias para ativar APIs

      Para ativar APIs, você precisa da permissão serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão pelo papel de proprietário (roles/owner). Caso contrário, é possível conseguir essa permissão pelo papel de administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.

      Ativar a API

    Preparar o ambiente

    1. Selecione um local para seus recursos.

      REGION=REGION
      

    2. Criar um bucket do Cloud Storage.

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

    3. Copie as seguintes ações de inicialização para o 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
      

    Criar um cluster do Serviço Gerenciado para Apache Spark com o JupyterLab e componentes de código aberto

    1. Crie um cluster do Serviço Gerenciado 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
    

    O cluster tem as seguintes propriedades:

    • --region: a região em que o cluster está localizado.
    • --image-version: 2.0-ubuntu18, a versão de imagem do cluster.
    • --master-machine-type: n1-standard-32, o tipo de máquina principal.
    • --master-accelerator: o tipo e a contagem de GPUs no nó principal, quatro GPUs nvidia-tesla-t4.
    • --initialization-actions: os caminhos do Cloud Storage para os scripts de instalação que instalam drivers de GPU, Dask, CUDA-X e dependências extras.
    • --initialization-action-timeout: o tempo limite das ações de inicialização.
    • --metadata: transmitido para as ações de inicialização para configurar o cluster com drivers de GPU NVIDIA, o programador independente para Dask e a versão 21.06 do CUDA-X.
    • --optional-components: configura o cluster com o componente opcional Jupyter.
    • --enable-component-gateway: permite o acesso a IUs da Web no cluster.
    • --single-node: configura o cluster como um único nó (sem workers).

    Acessar o Jupyter Notebook

    1. Abra a página Clusters no console Cloud de Confiance do Serviço Gerenciado para Apache Spark.
      Abrir a página "Clusters"
    2. Clique no cluster e na guia Interfaces da Web.
    3. Clique em JupyterLab.
    4. Abra um novo terminal no JupyterLab.
    5. Clone o repositório clara-parabricks/rapids-single-cell-examples e confira a ramificação managed-spark/multi-gpu.

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

    6. No JupyterLab, acesse o repositório rapids-single-cell-examples/notebooks e abra o notebook do Jupyter 1M_brain_gpu_analysis_uvm.ipynb.

    7. Para limpar todas as saídas no notebook, selecione Editar > Limpar todas as saídas.

    8. Leia as instruções nas células do notebook. O notebook usa o Dask e o CUDA-X no Serviço Gerenciado para Apache Spark para orientar você em um fluxo de trabalho de RNA-seq de célula única em 1 milhão de células, incluindo o processamento e a visualização dos dados. Para saber mais, consulte Como acelerar a análise genômica de célula única usando o CUDA-X.

    Limpar

    Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.

    Excluir o projeto

    1. No console Cloud de Confiance , acesse a página Gerenciar recursos.

      Acessar "Gerenciar recursos"

    2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
    3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

    Excluir recursos individuais

    1. Exclua o cluster do Serviço Gerenciado para Apache Spark.
      gcloud dataproc clusters delete cluster-name \
          --region=region
      
    2. Excluir o bucket:
      gcloud storage buckets delete BUCKET_NAME

    A seguir