Ir para o conteúdo principal

TensorFlow

Experimente o Databricks gratuitamente

Em novembro de 2015, o Google lançou um framework de código aberto para machine learning e deu o nome de TensorFlow. É compatível com deep learning, redes neurais e computação numérica geral em CPUs, GPUs e clusters de GPU. Uma das maiores vantagens do TensorFlow é sua comunidade de código aberto, com desenvolvedores, data scientists e engenheiros de dados contribuindo para o repository. A versão atual do TensorFlow pode ser encontrada no GitHub junto com as notas de versão. O TensorFlow é uma das bibliotecas de mecanismo de IA mais populares em uso atualmente.

Mecanismos de inteligência artificial mais populares

O que é o TensorFlow?

O TensorFlow é uma biblioteca de código aberto para computação numérica, machine learning em grande escala, deep learning e outras cargas de trabalho de análise estatística e preditiva. Essas tecnologias permitem que desenvolvedores implementem modelos de machine learning de maneira mais rápida e fácil. Isso ajuda no processo de aquisição de dados, fornecendo previsões em escala e refinando resultados de aprendizagem futuros.

Então, o que exatamente o TensorFlow faz? Ele pode treinar e executar modelos de redes neurais profundas para classificação de dígitos manuscritos, reconhecimento de imagens, incorporação de palavras, processamento de linguagem natural (PNL) e muito mais. Você pode usar o código incluído na biblioteca do TensorFlow em qualquer aplicativo para treinar essas tarefas.

As aplicações que usam o TensorFlow podem ser executadas em CPUs (unidades de processamento central) tradicionais ou GPUs (unidades de processamento gráfico de alto desempenho). Como o TensorFlow foi desenvolvido pelo Google, ele também é executado em TPUs (Tensor Processing Units), que o Google projetou de forma independente para acelerar os jobs do TensorFlow.

Além disso, você pode estar se perguntando: em que linguagem o TensorFlow está escrito? O TensorFlow usa Python como API de front-end para criar aplicações usando o framework, mas, na verdade, fornece wrappers para várias linguagens, como C++ e Java. Isso significa que você pode treinar e implantar rapidamente modelos de machine learning, independentemente da linguagem ou plataforma que usar.

Clique aqui para ver mais perguntas frequentes sobre o desenvolvimento de modelos do TensorFlow.

História do TensorFlow

O Google lançou o TensorFlow pela primeira vez em 2015 sob a licença Apache 2.0. Seu antecessor foi o DistBelief, um framework de código fechado do Google que serviu como teste para implementações de deep learning.

As primeiras TPUs do Google foram detalhadas em 2016 e são usadas internamente em conjunto com o TensorFlow para alimentar algumas das aplicações e serviços online da empresa. Isso inclui o algoritmo de busca do Google “RankBrain” e a tecnologia de mapeamento Street View.

No início de 2017, o Google lançou o TensorFlow versão 1.0.0. Um ano depois, a empresa disponibilizou as TPUs de segunda geração aos usuários do Google Cloud Platform para treinamento e execução de seus próprios modelos de machine learning.

O Google lançou a versão mais recente, TensorFlow 2.0, em outubro de 2019. Com base no feedback dos usuários, fez várias melhorias no framework para torná-lo mais fácil de usar. Por exemplo, agora, usam a API Keras relativamente simples para treinar modelos.

Quem criou o TensorFlow

Como já sabemos, o Google desenvolveu o TensorFlow e continua possuindo e mantendo o framework. O TensorFlow foi criado por uma equipe de pesquisadores do Google Brain, que conduz pesquisas fundamentais para avançar em áreas-chave da inteligência de máquina e promover a compreensão teórica do deep learning.

Embora a equipe do Google Brain tenha projetado o TensorFlow para funcionar de forma independente da infraestrutura de computação do Google, ele se beneficia muito por ter o apoio de uma grande empresa. Além de financiar o rápido desenvolvimento do projeto, o Google trabalhou duro ao longo dos anos para melhorar o TensorFlow e torná-lo mais fácil de adotar e usar.

O Google tornou o TensorFlow um framework de código aberto para acelerar o desenvolvimento de IA. Ao torná-lo um projeto comunitário, todos os usuários podem contribuir para melhorar a tecnologia e compartilhar os benefícios.

Como funciona o TensorFlow

O TensorFlow combina vários modelos e algoritmos de machine learning e deep learning (ou rede neural) e os torna convenientes para uso por meio de uma interface comum.

Os desenvolvedores podem criar gráficos de fluxos de dados por meio de nós computacionais que representam operações matemáticas. Cada conexão entre nós representa um vetor ou matriz multidimensional, criando algo chamado tensor.

Embora o Python forneça a API front-end para o TensorFlow, as operações matemáticas reais não são feitas no Python: binários C++ de alto desempenho executam as operações nos bastidores. O Python direciona o tráfego entre essas operações e as conecta por meio de abstrações de programação de alto nível.

As aplicações que usam o TensorFlow podem ser executadas em praticamente qualquer destino conforme sua conveniência, incluindo um dispositivo com iOS ou Android, uma máquina local ou um cluster na nuvem, bem como uma CPU ou GPU (ou TPU personalizada do Google, se você estiver usando o Google Cloud).

O TensorFlow inclui dois conjuntos de APIs: alto e baixo nível. Embora o Google recomende APIs de alto nível para desenvolver pipelines de dados e simplificar a programação de aplicativos, uma API de baixo nível (chamada TensorFlow Core) é útil para depurar e experimentar aplicações.

Possíveis usos do TensorFlow

O TensorFlow foi projetado para agilizar o processo para usuários como data scientists, estatísticos e desenvolvedores de modelos preditivos desenvolverem e executarem aplicações analíticas avançadas.

É amplamente usado por empresas de todos os setores e tamanhos para automatizar processos e desenvolver novos sistemas, e é particularmente útil para aplicações de processamento paralelo de grande escala, como redes neurais. Também é usado em experimentos e testes de carros autônomos.

Não é novidade que o criador do TensorFlow, o Google, também o usa para aplicações como melhoria dos recursos de recuperação de informações dos mecanismos de pesquisa, geração automática de respostas por e-mail, classificação de imagens e reconhecimento óptico de caracteres.

Um dos benefícios do TensorFlow é que ele fornece um mecanismo de abstração que permite aos desenvolvedores se concentrarem na lógica geral de sua aplicação enquanto o framework cuida dos detalhes mais sutis. Também é conveniente para desenvolvedores que precisam depurar ou examinar aplicações que usam o TensorFlow.

O conjunto de visualização TensorBoard apresenta um dashboard interativo baseado na web que permite explorar e traçar o perfil do desempenho de seus gráficos. Ele também fornece um modo de execução rápido que permite avaliar e modificar cada operação do gráfico de forma individual e transparente, em vez de criar o gráfico inteiro como um único objeto opaco e avaliá-lo de uma só vez.

O Databricks Runtime for Machine Learning inclui TensorFlow e TensorBoard, e essas bibliotecas estão disponíveis sem a instalação de nenhum outro pacote.

Agora vamos dar uma olhada em como usar o TensorFlow.

Como instalar o TensorFlow

Instruções detalhadas e tutoriais podem ser encontrados em tensorflow.org. Aqui apresentaremos o básico.

Requisitos de sistema:

  • Python 3.7 ou posterior
  • pip 19.0 ou posterior (compatível com manylinux2010, TensorFlow 2 requer uma nova versão do pip)
  • Ubuntu 16.04 ou posterior (64 bits)
  • macOS 10.12.6 (Sierra) ou posterior (64 bits) (sem compatibilidade com GPU)
  • Windows 7 ou posterior (64 bits)

Requisitos de hardware:

  • O TensorFlow 1.6 usa instruções AVX em seus binários e pode não funcionar em CPUs mais antigas.
  • A compatibilidade com GPU requer uma placa habilitada para CUDA® (Ubuntu, Windows).

1. Instale o ambiente de desenvolvimento Python

Verifique se o ambiente Python já está configurado:

python3 - -version

pip3 - -version

Se esses pacotes já estiverem instalados, prossiga para a próxima etapa.

Caso contrário, instale o Python, o gerenciador de pacotes pip e venv.

Se você não estiver em um ambiente virtual, use python3 -m pip para executar os comandos abaixo. Isso atualizará e usará o pip do Python em vez do pip do sistema.

2. Crie um ambiente virtual (recomendado)

Ambientes virtuais Python são usados para isolar a instalação de pacotes do sistema.

3. Instale o pacote pip do TensorFlow

Escolha uma das seguintes opções para instalar pacotes do TensorFlow do PyPI:

  • tensorflow: versão estável mais recente com compatibilidade com CPU e GPU (Ubuntu e Windows)
  • tf-nightly: pré-visualização (instável). As versões do Ubuntu e do Windows são compatíveis com GPU.
  • tensorflow==1.15: versão final do TensorFlow 1.x.

Por fim, verifique se a instalação foi realizada corretamente. Se retornar um tensor, a instalação do TensorFlow será bem-sucedida.

Observação: dependendo do método de instalação, pode ser solicitada a URL do pacote TensorFlow Python. O valor especificado depende da versão do Python que você está usando.

Como atualizar o TensorFlow

As atualizações do TensorFlow são independentes do ambiente e podem ser facilmente executadas usando o gerenciador de pacotes pip.

Pré-requisitos:

  • Python 3.6-3.9 instalado e configurado (verifique a versão do Python antes de começar).
  • TensorFlow 2 instalado.
  • A versão do gerenciador de pacotes pip é 19.0 ou superior (verifique a versão do pip e atualize se necessário).
  • Tenha acesso a um ambiente de linha de comando, terminal ou notebook.

Para atualizar o TensorFlow para uma nova versão, faça o seguinte:

1. Abra o Terminal (CTRL+ALT+T).

2. Verifique a versão do TensorFlow atualmente instalada:

pip3 show tensorflow

Este comando mostra informações sobre o pacote, incluindo sua versão.

3. Atualize o TensorFlow usando o seguinte comando:

pip3 install - -upgrade tensorflow==<version>

Você deve selecionar uma versão que seja compatível com sua versão do Python. Caso contrário, a versão não será instalada. Em um ambiente de notebook, execute o seguinte comando e reinicie o kernel após a conclusão:

!pip install - -upgrade tensorflow==<version>

Isso removerá automaticamente a versão antiga junto com suas dependências e instalará a nova versão.

4. Verifique a versão executando o seguinte comando:

pip3 show tensorflow

TensorFlow Lite

Em 2017, o Google anunciou uma nova versão do TensorFlow chamada TensorFlow Lite. O TensorFlow Lite é otimizado para uso em dispositivos incorporados e móveis. Um framework de deep learning de plataforma cruzada, de código aberto e pronta para produtos, que converte modelos pré-treinados do TensorFlow em formatos especiais otimizados para velocidade ou armazenamento.

Para usar a versão certa para cada cenário, você precisa saber quando usar o TensorFlow e quando usar o TensorFlow Lite. Por exemplo, se você precisar implantar um modelo de deep learning de alto desempenho em um local com conectividade de rede ruim, poderá usar o TensorFlow Lite para reduzir o tamanho do arquivo.

Ao desenvolver modelos para dispositivos de ponta, eles precisam ser leves para minimizar o uso de espaço e melhorar as velocidades de download em redes de baixa largura de banda. Isso requer otimizações como redução do tamanho do modelo e melhoria da latência, o que o TensorFlow Lite realiza por meio de quantização e redução de peso.

Os modelos obtidos com o TensorFlow Lite são leves para que possam ser inferidos com baixa latência em dispositivos de ponta, como smartphones com Android e iOS, e dispositivos incorporados baseados em Linux, como Raspberry Pi ou microcontroladores. O TensorFlow Lite também usa vários aceleradores de hardware para otimizar a velocidade, a precisão e o consumo de energia, que são importantes para executar inferências na borda.

Camadas densas no TensorFlow

Camadas densas são usadas para criação de redes neurais superficiais e profundas. As redes neurais artificiais são arquiteturas semelhantes ao cérebro, compostas por sistemas de neurônios que podem aprender com grandes quantidades de dados fornecidos, em vez de serem programados com regras específicas.

O deep learning usa múltiplas camadas para extrair recursos mais sofisticados da entrada de dados brutos. Uma rede composta por múltiplas camadas é chamada de rede neural empilhada. Cada uma dessas camadas consiste em nós que combinam entradas dos dados com um conjunto de coeficientes chamados pesos que amplificam ou atenuam as entradas.

O lançamento do TensorFlow 2.0 apresenta uma API de deep learning chamada Keras, que é executada no TensorFlow e fornece camadas pré-construídas para diferentes arquiteturas e finalidades de redes neurais. Uma camada densa é uma camada pré-construída, o que significa que possui conexões profundas porque cada neurônio recebe entrada de todos os neurônios da camada anterior.

As camadas densas são comumente usadas para redimensionar, girar, escalar e traduzir os vetores que geram. Elas têm a capacidade de aprender recursos combinando todos os recursos da camada anterior.

Diferenças entre TensorFlow e Python

TensorFlow é um framework de machine learning de código aberto e Python é uma das linguagens de programação populares que também é usada no TensorFlow. A linguagem recomendada para TensorFlow é Python, mas C++ e JavaScript também estão disponíveis.

Python foi desenvolvido para ajudar os programadores a escrever código lógico e conciso para projetos grandes e pequenos. É comumente usado para criar sites e softwares, automatizar tarefas e analisar dados. Portanto, mesmo os iniciantes podem aprender o TensorFlow com relativa facilidade.

Uma pergunta útil é: com quais versões do Python o TensorFlow é compatível? Algumas versões do TensorFlow são compatíveis apenas com versões específicas do Python, e a versão 2.0 abrange o Python 3.7 a 3.10. Verifique os requisitos antes de instalar o TensorFlow.

PyTorch e TensorFlow

O TensorFlow não é o único framework de machine learning. Existem muitas outras opções para bibliotecas semelhantes, como PyTorch, que atendem muitas das mesmas necessidades. Então, qual é a real diferença entre o TensorFlow e o PyTorch?

PyTorch e TensorFlow, ambos desenvolvidos por empresas de tecnologia para ambientes de deep learning Python, são apenas dois dos frameworks que ajudam os computadores a resolver problemas do mundo real que exigem precisão quase humana. A principal diferença entre o PyTorch e o TensorFlow é como o código é executado. O PyTorch está mais integrado ao Python.

Como vimos, o TensorFlow conta com recursos robustos de visualização, opções de implantação prontas para produção, compatibilidade com plataformas móveis e muito mais. O PyTorch é menos estabelecido, mas ganhou popularidade por sua simplicidade e facilidade de uso, bem como por seus gráficos computacionais dinâmicos e uso eficiente de memória.

Quanto à questão de qual é melhor, TensorFlow ou PyTorch ­— depende do que você deseja alcançar. O TensorFlow é adequado se seu objetivo é criar produtos relacionados à IA, e o PyTorch é adequado para desenvolvedores orientados para pesquisa. O PyTorch é ótimo para colocar projetos em funcionamento rapidamente, enquanto TensorFlow tem recursos robustos para projetos maiores e fluxos de trabalho mais complexos.

Empresas que usam o TensorFlow

De acordo com o site do TensorFlow, ele é usado não apenas pelo Google, mas também por muitas outras empresas conhecidas, como Airbnb, Coca-Cola, eBay, Intel, Qualcomm, SAP, Twitter, Uber, Snap Inc. (desenvolvedora do Snapchat) e STATS LLC (empresa de consultoria esportiva).

Empresas que usam o TensorFlow

As cinco principais alternativas ao TensorFlow

1. DataRobot

DataRobot é um framework de machine learning baseado na nuvem. Projetado para ajudar as empresas a expandir seus recursos de data science, implantando modelos de machine learning e criando aplicações avançadas de IA.

Este framework permite otimizar seus modelos usando tecnologias de modelagem de código aberto, como R, Python, Spark, H2O, VW e XGBoost. O DataRobot ajuda data scientists e analistas de dados a criar modelos preditivos mais precisos, automatizando análises preditivas.

Há um número crescente de bibliotecas que fornecem recursos, algoritmos e parâmetros ideais para a criação de cada modelo. Além disso, os conjuntos automatizados permitem que os usuários pesquisem e combinem facilmente vários algoritmos e protótipos pré-construídos para extração de recursos e preparação de dados (não são necessárias suposições de tentativa e erro).

2. PyTorch

Desenvolvido por uma equipe do Facebook e de código aberto no GitHub.com em 2017, PyTorch é um dos novos frameworks de deep learning. Conforme mencionado anteriormente, ele tem algumas semelhanças com o TensorFlow, incluindo componentes acelerados por hardware e um modelo de desenvolvimento interativo para design conforme o uso.

O PyTorch também aproveita a compatibilidade nativa do Python com execução assíncrona para otimizar o desempenho. Tem a vantagem de ter um gráfico dinâmico integrado e uma comunidade mais forte que o TensorFlow.

No entanto, PyTorch não fornece um framework para implantar diretamente modelos treinados online e requer um servidor de API em produção. Além disso, um terceiro, Visdom, é necessário para a visualização e sua funcionalidade é bastante limitada.

3. Keras

Keras é uma biblioteca de rede neural de código aberto de alto nível projetada para ser intuitiva, modular e facilmente extensível. Ele é escrito em Python e é compatível com vários mecanismos de computação de redes neurais de back-end. No entanto, o back-end principal (e padrão) é o TensorFlow, e seu principal apoiador é o Google.

Já mencionamos a API de alto nível TensorFlow Keras, e o Keras também roda em cima do Theano. Ele apresenta diversos módulos independentes que podem ser combinados, como camadas de rede neural, funções de custo, otimizadores, esquemas de inicialização, funções de ativação e esquemas de regularização.

O Keras é compatível com uma ampla variedade de opções de implantação de produção e tem forte compatibilidade com várias GPUs e treinamento distribuído. No entanto, tem suporte mínimo da comunidade e normalmente é usado para pequenos conjuntos de dados.

4. MXNet

O Apache MXNet é um framework de software de deep learning de código aberto usado para definir, treinar e implantar redes neurais profundas em uma ampla variedade de dispositivos. Ele tem um histórico de ser adotado pela Amazon como a principal framework de deep learning na AWS.

O escalonamento quase linear em diversas GPUs e diversas máquinas permite o treinamento rápido de modelos e é compatível com um modelo de programação flexível que combina programação simbólica e imperativa para máxima eficiência e produtividade.

O MXNet é compatível com várias APIs de linguagem de programação, como Python, C++, Scala, R, JavaScript, Julia, Perl e Go. No entanto, a API nativa não é tão agressiva quanto o TensorFlow.

5. CNTK

O CNTK, também conhecido como Microsoft Cognitive Toolkit, é um kit de ferramentas unificado de deep learning que usa estruturas gráficas para descrever o fluxo de dados como uma série de etapas computacionais (igual ao TensorFlow, mas não tão fácil de aprender ou implantar).

Ele se concentra fortemente na criação de redes neurais e pode processar rapidamente tarefas relacionadas a elas. O CNTK permite implementar e combinar facilmente tipos de modelos comuns, como redes neurais diretas, redes convolucionais (CNN) e redes neurais recorrentes (RNN/LSTM).

O CNTK tem um amplo conjunto de APIs (Python, C++, C#, Java) e pode ser incorporado como uma biblioteca em programas Python, C# ou C++ ou usado como uma ferramenta autônoma de machine learning usando sua própria linguagem de descrição de modelo (BrainScript). É compatível com os sistemas operacionais Linux de 64 bits ou Windows de 64 bits.

Observação: a versão 2.7 é o último lançamento principal do CNTK e não há planos para desenvolvimento de novos recursos.

Devo usar o TensorFlow?

O TensorFlow tem muitos benefícios. O framework de machine learning de código aberto oferece boa compatibilidade arquitetônica e facilita a implantação de frameworks computacionais em diversas plataformas. Graças, em parte, à reputação do Google, várias grandes empresas adotaram o TensorFlow para realizar tarefas de inteligência artificial.

No entanto, dependendo dos detalhes de implementação do TensorFlow, pode ser difícil obter resultados de treinamento de modelo totalmente determinísticos. Mas a equipe de desenvolvimento busca ter mais controle sobre o determinismo no fluxo de trabalho.

A implantação do TensorFlow é simples. Em particular, o TensorFlow do Databricks é fácil de começar com integração pronta para uso por meio do Databricks Runtime for Machine Learning. Você pode ativar um cluster em segundos e ter acesso a uma ampla variedade de APIs de baixo e alto nível.

Recursos adicionais

Voltar ao glossário