think - O principal evento global de Cloud Híbrida e IA - 11/05 | Américas e 12/05 | APAC e EMEA Inscrição Gratuita

Ative a Eager Execution no TensorFlow

O TensorFlow é uma plataforma de aprendizado de máquina open-source de ponta a ponta que facilita a criação e a implementação de modelos de aprendizado de máquina. Um aplicativo TensorFlow usa uma estrutura conhecida como gráfico do fluxo de dados. Por padrão, no TensorFlow versão 1.0, cada gráfico precisava ser executado dentro de uma sessão do TensorFlow, o que permitia apenas que o gráfico inteiro fosse executado de uma só vez, dificultando a depuração do gráfico de computação. A única maneira de desviar desse padrão e conseguir depurar o código era usando a Eager Execution.

A Eager Execution é uma plataforma de aprendizado de máquina para pesquisa e experimentação que oferece:

  • Uma interface intuitiva para que o código possa ser estruturado naturalmente e use estruturas de dados Python. Modelos pequenos e dados pequenos podem ser iterados rapidamente.
  • Depuração mais fácil ao oferecer a capacidade de chamar diretamente as operações para inspecionar o código linha a linha e testar alterações.
  • Um fluxo de controle natural que usa o fluxo de controle Python em vez de um fluxo de controle de gráfico, o que simplifica a especificação de modelos dinâmicos.

Com o TensorFlow 2.x, a Eager Execution está ativada por padrão. Isso permite que o código do TensorFlow seja executado e avaliado linha a linha.

Objetivos de aprendizado

Este tutorial examina o impacto da Eager Execution e os benefícios de deixá-la ativada por padrão no TensorFlow 2.x. Você usará um notebook Jupyter para observar o comportamento do TensorFlow quando a Eager Execution estiver desativada e ativada. Você aprenderá a:

  • Executar um notebook Jupyter usando o IBM Watson® Studio no IBM Cloud® Pak for Data as a Service
  • Desativar e ativar a Eager Execution
  • Entender os benefícios da Eager Execution

Pré-requisitos

Os pré-requisitos a seguir são necessários para seguir o tutorial:

Tempo estimado

Você deverá levar cerca de 30 minutos para concluir o tutorial.

Etapas

  1. Configurar o IBM Cloud Pak for Data as a Service
  2. Criar um novo projeto e importar o notebook
  3. Ler o notebook
  4. Executar a primeira metade do notebook
  5. Reiniciar o kernel
  6. Executar a segunda metade do notebook

Configurar o IBM Cloud Pak for Data as a Service

  1. Abra um navegador e entre na IBM Cloud com as credenciais da IBM Cloud.

    Entrar na IBM Cloud

  2. Digite Watson Studio na barra de pesquisa no topo. Se você já tiver uma instância do Watson Studio, ela deverá estar visível. Nesse caso, clique nela. Caso contrário, clique em Watson Studio em Catalog Results para criar uma nova instância de serviço.

    Selecionar o serviço Watson Studio

  3. Selecione o tipo de plano que deseja criar caso esteja criando uma nova instância de serviço. Um plano Lite (gratuito) deve ser suficiente para este tutorial. Clique em Create.

    Plano Lite do Watson Studio

  4. Clique em Get Started na página de destino para a instância de serviço.

    Iniciar - Watson Studio

    Você deverá ser conduzido à página de destino do IBM Cloud Pak for Data as a Service.

  5. Clique em seu avatar no canto superior direito e, depois, clique em Profile and settings embaixo do seu nome.

    CPDaaS - perfil e configurações

  6. Mude para a guia Services. A instância de serviço do Watson deverá estar listada em Your Cloud Pak for Data services.

    Também é possível associar outros serviços, como o Watson Knowledge Catalog e o Watson Machine Learning, à sua conta do IBM Cloud Pak for Data as a Service. Eles estão listados sob Try our available services.

    No exemplo mostrado aqui, uma instância de serviço do Watson Knowledge Catalog já existe na conta da IBM Cloud. Portanto, será automaticamente associada à conta do IBM Cloud Pak for Data as a Service. Para adicionar qualquer outro serviço (Watson Machine Learning, neste exemplo), clique em Add dentro do bloco referente ao serviço sob Try our available services.

    CPDaaS - serviços associados

  7. Selecione o tipo de plano que deseja criar (um plano Lite deve ser suficiente) e clique em Create.

    Plano Lite do Machine Learning

    Depois que a instância de serviço for criada, você retornará à instância do IBM Cloud Pak for Data as a Service. Você verá que o serviço já está associado à sua conta do IBM Cloud Pak for Data as a Service.

    CPDaas - todos os serviços associados

Criar um novo projeto e importar o notebook

  1. Navegue até o menu de hambúrguer (☰) à esquerda e escolha View all projects. Depois que a tela for carregada, clique em New + ou New project + para criar um novo projeto.

    CPDaas - novo projeto

  2. Selecione Create an empty project.

    CPDaaS - projeto vazio

  3. Forneça um nome para o projeto. É necessário associar uma instância do IBM Cloud Object Storage ao projeto. Se você já tiver uma instância de serviço do IBM Cloud Object Storage na sua conta da IBM Cloud, ela deverá ser preenchida aqui automaticamente. Caso contrário, clique em Add.

    CPDaaS - nome do projeto

  4. Selecione o tipo de plano que deseja criar (um plano Lite deve ser suficiente para este tutorial) e clique em Create.

    Plano Lite do COS

  5. Clique em Refresh na página de criação do projeto.

    CPDaaS - atualizar COS

  6. Clique em Create depois de ver a instância do IBM Cloud Object Storage que você criou exibida em Storage.

    CPDaaS - criar projeto

  7. Depois que o projeto for criado, será possível adicionar o notebook a ele. Clique em Add to project + e selecione Notebook.

    CPDaaS - adicionar notebook ao projeto

  8. Mude para a guia From URL. Forneça o nome do notebook como Eager_Execution_in_TensorFlow_2.x e a URL do notebook como https://raw.githubusercontent.com/IBM/dl-learning-path-assets/main/fundamentals-of-deeplearning/notebooks/Eager_Execution_in_TensorFlow_2.x.ipynb.

  9. No menu suspenso Select runtime, selecione Default Python 3.7 XXS (1 vCPU 4 GB RAM) (a primeira opção na lista). Este é o menor tempo de execução disponível e o que consome o mínimo de unidades de capacidade por hora (0,5). Esse tempo de execução deve ser suficiente para este tutorial. Clique em Create.

    CPDaaS - criar notebook

  10. Depois que o notebook Jupyter for carregado e o kernel estiver pronto, será possível começar a executar as células nesse notebook.

    CPDaaS - notebook carregado

Importante: lembre-se de interromper o kernel dos notebooks quando terminar, para conservar os recursos de memória.

Interromper kernel

Observação: A saída foi removida do notebook Jupyter incluso no projeto. Caso deseje ver o notebook que já foi concluído com a saída, consulte o exemplo de notebook.

Ler o notebook

Dê uma boa olhada nas seções do notebook para ter uma visão geral. Um notebook é composto de células de texto (markdown ou cabeçalho) e células de código. As células de markdown fornecem comentários sobre o que o código foi desenvolvido para fazer.

Para executar as células individualmente, destaque cada uma delas. Em seguida, clique em Run na parte superior do notebook ou use o atalho de teclado para executar a célula (Shift + Enter ; no entanto, pode variar de acordo com a plataforma). Enquanto a célula está em execução, um asterisco ([*]) é exibido do lado esquerdo dela. Quando a execução da célula chega ao fim, aparece um número sequencial (por exemplo, [17]).

Observação: Alguns dos comentários no notebook são instruções para a modificação de seções específicas do código. Realize as alterações indicadas antes de executar a célula.

O notebook é dividido em várias seções.

  • A Seção 1 explica o que é Eager Execution e quais são seus recursos.
  • A Seção 2 fornece instruções para a instalação do TensorFlow.
  • A Seção 3 apresenta um exemplo que demonstra como as operações do TensorFlow funcionam quando a Eager Execution está desativada.
  • A Seção 4 apresenta um exemplo que demonstra como as operações do TensorFlow funcionam quando a Eager Execution está ativada. Antes de seguir tais instruções, é necessário reiniciar o kernel.
  • A Seção 5 contém um exemplo de fluxo de controle dinâmico, que é possível quando a Eager Execution está ativada.

Executar a primeira metade do notebook

Execute as células nas Seções 2 e 3 do notebook. O código nessas seções instala o TensorFlow versão 2.2.0 e seus pré-requisitos. Depois, demonstra como um conjunto de operações no Tensors se comporta quando a Eager Execution está desativada. É possível ver que os valores intermediários das variáveis do Tensor não estão disponíveis antes que o gráfico inteiro seja executado (usando uma Session). Isso dificulta a depuração do código.

Não é possível depurar quando a Eager Execution está desativada

Observe que o tipo de objeto criado usando o código a = tf.constant(np.array([1., 2., 3.])) é tensorflow.python.framework.ops.Tensor.

Eager Execution desativada, objeto do Tensor criado

Reiniciar o kernel

Em seguida, você ativará a Eager Execution e executará o mesmo código. No entanto, a ativação ou desativação da Eager Execution precisa acontecer no início do código, antes da criação dos Tensors. É necessário reiniciar o kernel, portanto, antes de ativar a Eager Execution.

  1. Para reiniciar o kernel, acesse o menu Kernel e clique em Restart. Na opção que aparece, clique em Restart para confirmar que deseja reiniciar o kernel.

    Reiniciar o kernel

Executar a segunda metade do notebook

  1. Depois que o kernel for reiniciado, execute a primeira célula de código na seção 4, que importa tensorflow e numpy. Os números sequenciais que aparecem no lado esquerdo do código no momento da execução foram redefinidos. As instruções de importação da seção 4 têm o número sequencial [1].

    Os números sequenciais foram redefinidos

  2. Continue com a execução do restante das células nas seções 4 e 5. Na seção 4, a Eager Execution está ativada. O mesmo código que foi executado antes será executado novamente. Como a Eager Execution está ativada, o código já pode ser depurado. É possível verificar os valores variáveis intermediários sem a necessidade de executar o código inteiro como parte de uma Session.

    É possível depurar com Eager Execution

  3. Observe também que, quando a Eager Execution está ativada, o código a = tf.constant(np.array([1., 2., 3.])) cria um objeto do tipo tensorflow.python.framework.ops.EagerTensor. Isso significa que o mesmo código pode ser reutilizado ao ativar ou desativar a Eager Execution.

    Eager Execution cria o EagerTensor

  4. Execute as células de código na seção 5. O código na seção 5 mostra como, com a Eager Execution ativada, os Tensors se comportam como outras variáveis na linguagem host. É possível até mesmo usar as instruções de controle de linguagem host e loops como if, while e for no fluxo de controle do Tensor.

Resumo

Neste tutorial, você viu o impacto da Eager Execution e os benefícios de deixá-la ativada por padrão no TensorFlow 2.x. Aprendeu a executar um notebook Jupyter usando o Watson Studio no IBM Cloud Pak for Data as a Service, como desativar e ativar a Eager Execution e quais são os benefícios da Eager Execution.