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


Neste tutorial, mostramos como executar uma análise genômica de célula única usando Dask, NVIDIA RAPIDS e GPUs, que podem ser configuradas no Dataproc. É possível configurar o Dataproc para executar o Dask com o programador autônomo ou com o YARN para gerenciamento de recursos.

Neste tutorial, o Dataproc é configurado com uma instância hospedada do JupyterLab para executar um notebook com análise genômica de célula única. O uso de um notebook do Jupyter no Dataproc permite combinar os recursos interativos do Jupyter com o escalonamento de carga de trabalho permitido pelo Dataproc. Com o Dataproc, é possível escalonar suas cargas de trabalho de uma para várias máquinas, que você pode configurar com quantas GPUs precisar.

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

Objetivos

  • Criar uma instância do Dataproc configurada com GPUs, JupyterLab e componentes de código aberto.
  • Execute um notebook no Dataproc.

Custos

Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:

  • Dataproc
  • Cloud Storage
  • GPUs
  • Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços. Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.

    Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em Limpeza.

    Antes de começar

    1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Go to project selector

    2. Make sure that billing is enabled for your Google Cloud project.

    3. Enable the Dataproc API.

      Enable the API

    Prepare 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 Dataproc com o JupyterLab e componentes de código aberto

    1. Criar um cluster do Dataproc.
    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, RAPIDS 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 autônomo do Dask e a versão RAPIDS 21.06.
    • --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 do Google Cloud no Dataproc.
      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 dataproc/multi-gpu.

      git clone https://github.com/clara-parabricks/rapids-single-cell-examples.git
      git checkout dataproc/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 oDask e RAPIDS no Dataproc 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 de dados. Para saber mais, consulte Aceleração da análise genômica de célula única usando RAPIDS.

    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. In the Google Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    Excluir recursos individuais

    1. Excluir o cluster do Dataproc.
      gcloud dataproc clusters delete cluster-name \
          --region=region
      
    2. Excluir o bucket:
      gcloud storage buckets delete BUCKET_NAME

    A seguir