O que é o tensorflow machine intelligence platform?

TensorFlow é uma biblioteca de software de código aberto para computação numérica usando grafos computacionais. Foi originalmente desenvolvido pela Google Brain Team na organização de pesquisa Machine Intelligence do Google para aprendizado de máquina e pesquisa de redes neurais profundas (Deep Learning), mas a biblioteca é geral o suficiente para ser aplicada em uma grande variedade de outros domínios também. Foi disponibilizado como open-source em 2015 e alcançou a versão 1.0 em Fevereiro de 2017, com um desenvolvimento e adoção incrivelmente rápidos e muitos colaboradores externos. O TensorFlow vem se tornando a biblioteca padrão para desenvolvimento em Deep Learning e aplicações de Inteligência Artificial. Este artigo apresenta o TensorFlow, sua comunidade e ecossistema de software livre. Afinal, O Que é o TensorFlow Machine Intelligence Platform?

 

O Que é o TensorFlow Machine Intelligence Platform?

A versão open-source do TensorFlow foi liberada pelo Google em Novembro de 2015, como o resultado de anos de lições aprendidas do seu antecessor, o DistBielief. O TensorFlow foi construído para ser flexível, eficiente, extensível e portável. Computadores de qualquer natureza podem executar o TensorFlow, desde smartphones a gigantescos clusters de computadores. E uma das características mais interessantes do TensorFlow é sua capacidade de rapidamente gerar um produto ou serviço a partir do modelo preditivo treinado, eliminando a necessidade de reimplementar o modelo. O TensorFlow é uma biblioteca inovadora e conta com uma comunidade ativa. O TensorFlow pode ser usado por indivíduos em busca de pesquisas ou mesmo grandes empresas que precisam implementar estratégias de Inteligência Artificial. O Google é um claro exemplo.

A ferramenta original de Deep Learning em larga escala do Google era o DistBelief, um produto da equipe do Google Brain. Desde a sua criação, tem sido utilizado por dezenas de equipes para inúmeros projetos envolvendo redes neurais profundas. No entanto, como ocorre com muitos projetos de engenharia de primeira classe, houve erros de projeto que limitaram a usabilidade e a flexibilidade do DistBelief. Algum tempo após a criação do DistBelief, o Google começou a trabalhar no seu sucessor, cujo design aplicaria lições aprendidas com o uso e as limitações do DistBelief original. Este projeto transformou-se no TensorFlow, que rapidamente se tornou uma biblioteca popular para o aprendizado de máquina e está sendo usado atualmente para aplicações de Inteligência Artificial, como Processamento de Linguagem NaturalVisão Computacional e análise preditiva.

O TensorFlow é multiplataforma e pode ser usado no Windows, MacOS e Linux. Ele é executado em quase tudo: CPUs e GPUs – incluindo plataformas móveis e integradas – e até mesmo Tensor Processing Units (TPUs), que são hardware especializado para fazer a matemática de um tensor (um objeto matemático multidimensional).  O TensorFlow é projetado para ser escalável em vários computadores, bem como várias CPUs e GPUs dentro de máquinas individuais. Embora a implementação de código aberto original não tivesse recursos distribuídos após a liberação, a partir da versão 0.8.0 a funcionalidade de execução distribuída ficou disponível como parte da biblioteca TensorFlow. Embora esta API distribuída seja um pouco pesada, é incrivelmente poderosa. A maioria das outras bibliotecas de aprendizagem de máquina não possui esses recursos e é importante observar que a compatibilidade nativa com determinados gerenciadores de cluster está sendo trabalhada.

 

tensorflow

 

O mecanismo de execução distribuído do TensorFlow abstrai os muitos dispositivos suportados e fornece um núcleo de alto desempenho implementado em linguagem C++ para a plataforma TensorFlow.

Além disso, o TensorFlow oferece a possibilidade de desenvolvimento em Python e C++ (além de API Java e Go). A API Layers fornece uma interface mais simples para camadas comumente usadas em modelos de aprendizagem profunda. E encontramos ainda as APIs de nível superior, incluindo Keras (mais no site Keras.io) e a Estimator API, que facilita o treinamento e a avaliação de modelos distribuídos. E, finalmente, vários modelos comumente usados estão prontos para uso.

O TensorFlow não é fácil de aprender e tem um nível de complexidade relativamente alto, mas ao mesmo tempo é flexível e poderoso, sendo atualmente o principal software para desenvolvimento em Deep Learning e aplicações de Inteligência Artificial.

 

Modelo de Execução do TensorFlow

O aprendizado de máquina pode se tornar complexo rapidamente e os modelos de aprendizado profundo podem se tornar grandes. Para muitos modelos, você precisa de treinamento distribuído para poder iterar dentro de um prazo razoável. E você normalmente deseja que os modelos desenvolvidos sejam implantados em várias plataformas.

Com a versão atual do TensorFlow, você escreve código para construir um grafo computacional e, em seguida, executa-o. O grafo é uma estrutura de dados que descreve completamente a computação que você deseja executar. Isso tem muitas vantagens:

  • – É portátil, já que o grafo pode ser executado imediatamente ou salvo para uso posterior, e pode ser executado em várias plataformas: CPUs, GPUs, TPUs, assim como dispositivos móveis e embarcados. Além disso, ele pode ser implementado em produção sem depender de nenhum código que criou o grafo, apenas o tempo de execução necessário para executá-lo.
  • – É transformável e otimizável, pois o grafo pode ser transformado para produzir uma versão mais otimizada para uma determinada plataforma. Além disso, otimizações de memória ou computação podem ser realizadas e compensações feitas entre elas. Isso é útil, por exemplo, no suporte à inferência móvel mais rápida após o treinamento em máquinas maiores.
  • – Suporte para execução distribuída.
  • – As APIs de alto nível do TensorFlow, em conjunto com os grafos computacionais, permitem um ambiente de desenvolvimento rico e flexível e poderosos recursos de produção no mesmo framework.

 

TensorFlow e a Comunidade de Software de Código Aberto

O TensorFlow foi aberto a comunidade open-source para permitir contribuições que aprimorassem a bilioteca. A equipe do TensorFlow configurou processos para gerenciar solicitações de extração, revisar e rotear os problemas arquivados e responder às perguntas do StackOverflow. Ou seja, o Google monitora o avanço e desenvolvimento do TensorFlow.

Até agora, já são mais de 890 contribuidores externos, contribuindo desde pequenas correções de documentação até grandes adições como o suporte a GPU do OSX ou a implementação do OpenCL. (A organização mais ampla do TensorFlow no GitHub tem quase 1.000 colaboradores únicos que não são Googlers).

O TensorFlow tem mais de 109.000 estrelas no GitHub, e o número de outros repositórios que o usam cresce a cada mês. O StackOverflow é monitorado pela equipe do TensorFlow, e é uma boa maneira de obter respostas às perguntas (com mais de 15.000 respostas até agora).

A versão externa (open-source) do TensorFlow não é diferente da versão interna (exclusiva do Google), além de algumas pequenas diferenças. Isso inclui a interface com a infraestrutura interna do Google (não ajudaria ninguém), alguns caminhos e peças que ainda não estão prontas. O núcleo do TensorFlow, no entanto, é idêntico. As atualizações da versão interna aparecem externamente em cerca de um dia e meio e vice-versa.

No repositório do Github no TensorFlow, você pode encontrar não apenas o TensorFlow em si, mas também um ecossistema útil de outros repos, incluindo modelos, serviços, TensorBoard, Project Magenta e muitos outros. (Alguns destes são descritos abaixo). Você também pode encontrar APIs do TensorFlow em várias linguagens (Python, C ++, Java e Go) e a comunidade desenvolveu outras extensões, incluindo C#, Haskell, Julia, Ruby, Rust e Scala.

 

Desempenho e Benchmarking

O TensorFlow possui altos padrões de medição e transparência. A equipe desenvolveu um conjunto de benchmarks detalhados e foi muito cuidadosa para incluir todos os detalhes necessários para a reprodução.

Há uma seção do site do TensorFlow com informações específicas para desenvolvedores como foco no desempenho. A otimização muitas vezes pode ser específica do modelo, mas existem algumas diretrizes gerais que podem, com frequência, fazer uma grande diferença.

 

Modelos Open Source do TensorFlow

A equipe do TensorFlow disponibiliza um grande número de modelos. Você pode encontrá-los no repositório tensorflow/models. Para muitos deles, o código liberado inclui não apenas o grafo computacional do modelo, mas também pesos de modelos treinados. Isso significa que você pode experimentar esses modelos prontos para uso e pode ajustar muitos deles usando um processo chamado transferência de aprendizado. Nota: se os termos citados neste parágrafo não soam familiar a você, recomendamos a leitura do Deep Learning Book, em português, online e gratuito.

Aqui estão apenas alguns dos modelos lançados recentemente (há muitos mais):

API de detecção de objetos: ainda é um desafio central do aprendizado de máquina criar modelos precisos capazes de localizar e identificar vários objetos em uma única imagem. A API de detecção de objetos TensorFlow produziu resultados de última geração (e ficou em primeiro lugar no desafio de detecção COCO). Essa API é estudada em detalhes no curso de Visão Computacional aqui na DSA.

 

O Que é o TensorFlow Machine Intelligence Platform

 

tf-seq2seq: O Google anunciou recentemente o Google Neural Machine Translation (GNMT), um modelo sequencial para sequência (seq2seq) que agora é usado nos sistemas de produção do Google Translate. O tf-seq2seq é um framework seq2seq de código aberto do TensorFlow que facilita a experimentação com modelos seq2seq e a obtenção de resultados de última geração. Esse modelo é estudado em detalhes no curso de Processamento de Linguagem Natural aqui na DSA.

ParseySaurus é um conjunto de modelos pré-concebidos que refletem uma atualização para o SyntaxNet. Os novos modelos usam uma representação de entrada baseada em caracteres e são muito melhores em prever o significado de novas palavras com base em sua ortografia e em como elas são usadas no contexto. Eles são muito mais precisos que seus predecessores, particularmente para idiomas onde pode haver dezenas de formas para cada palavra e muitas dessas formas nunca podem ser observadas durante o treinamento, mesmo em um corpus muito grande.

Multistyle Pastiche Generator do Projeto Magenta: “Transferência de estilo” é o que está acontecendo sob o capô com aqueles aplicativos divertidos que aplicam o estilo de uma pintura a uma de suas fotos. Este modelo Magenta amplia a transferência de estilo de imagem criando uma única rede que pode executar mais de uma estilização de uma imagem, opcionalmente ao mesmo tempo (tente brincar com os controles deslizantes para as imagens do cachorro neste link).

 

Transferência de Aprendizado

Muitos dos modelos do TensorFlow incluem pesos treinados e exemplos que mostram como você pode usá-los para a transferência de aprendizado, por exemplo, para aprender suas próprias classificações. Normalmente, você faz isso derivando informações sobre os dados de entrada da penúltima camada de um modelo treinado – que codifica abstrações úteis – e usa isso como entrada para treinar sua própria rede neural muito menor para prever suas próprias classes. Devido ao poder das abstrações aprendidas, o treinamento adicional normalmente não requer grandes conjuntos de dados.

Por exemplo, você pode usar a transferência de aprendizado com o modelo de classificação de imagem Inceptionpara treinar um classificador de imagem que usa seus dados de imagem especializados.

Para exemplos de uso de transferência de aprendizado para diagnóstico médico pelo treinamento de uma rede neural para detectar classes especializadas de imagens, consulte os seguintes artigos:

 

 

O código da API de detecção de objeto é projetado para suportar também o aprendizado de transferência. No repositório tensorflow/models, há um exemplo de como você pode usar a transferência de aprendizado para inicializar esse modelo treinado para construir um detector de animal de estimação, usando um conjunto de dados (um tanto limitado) de exemplos de cães e gatos.

 

tensorflow

 

Usando o TensorFlow em Dispositivos Móveis

O celular é um ótimo caso de uso para o TensorFlow – o celular faz sentido quando há uma conexão de rede deficiente ou ausente ou o envio de dados contínuos para um servidor seria muito caro. Mas, depois de treinar seu modelo e estar pronto para começar a usá-lo, você não quer que o tamanho do modelo no dispositivo seja grande demais.

O TensorFlow está trabalhando para ajudar os desenvolvedores a criar aplicativos móveis enxutos, tanto reduzindo a quantidade de código quanto suportando quantização.

Um dos projetos do TensorFlow, o MobileNet, está desenvolvendo um conjunto de modelos de visão computacional que são especialmente projetados para abordar os trade-offs de velocidade/precisão que precisam ser considerados em dispositivos móveis ou em aplicativos embarcados. Os modelos MobileNet podem ser encontrados no repo de modelos TensorFlow também.

Uma das demos mais recentes do Android, o TF Detect, usa um modelo da MobileNet treinado usando a API Tensorflow Object Detection.

 

tensorflow

 

E é claro que seríamos negligentes em não mencionar como a série Silicon Valley da HBO construiu ‘Not Hotdog’ com os dispositivos móveis TensorFlow, Keras e React Native. Se não faz ideia do que é isso, leia este artigo e depois assista a série da HBO.

 

O Ecossistema TensorFlow

O ecossistema TensorFlow inclui muitas ferramentas e bibliotecas para ajudá-lo a trabalhar com mais eficiência. Aqui estão algumas.

 

TensorBoard

O TensorBoard é um conjunto de aplicativos web para inspeção, visualização e compreensão de suas execuções e grafos do TensorFlow. Você pode usar o TensorBoard para visualizar seus grafos de modelo do TensorFlow e ampliar os detalhes das subseções gráficas.

Você pode plotar métricas como perda e precisão durante uma execução de treinamento e visualizar o histograma de como um tensor está mudando ao longo do tempo. O TensorBoard pode mostrar dados adicionais, como imagens, coletar metadados de tempo de execução para uma execução, como uso total de memória e formas de tensor e muito mais.

 

mnist_tensorboard

 

O TensorBoard funciona lendo arquivos do TensorFlow que contêm informações resumidas sobre o processo de treinamento. Você pode gerar esses arquivos ao executar jobs do TensorFlow.

Você pode usar o TensorBoard para comparar execuções de treinamento, coletar estatísticas de tempo de execução e gerar histogramas.

 

tensorflow

 

Uma característica particularmente fascinante do TensorBoard é seu visualizador de embeddings. Os mergulhos são onipresentes no aprendizado de máquina e, no contexto do TensorFlow, muitas vezes é natural visualizar os tensores como pontos no espaço, de modo que praticamente qualquer modelo do TensorFlow dará origem a vários encaixes.

 

Datalab

Os Jupyter notebooks são uma maneira fácil de explorar interativamente seus dados, definir modelos do TensorFlow e iniciar execuções de treinamento. Se você usa ferramentas e produtos do Google Cloud Platform como parte de seu fluxo de trabalho, talvez usando o Google Cloud Storage ou BigQuery para seus conjuntos de dados, ou o Apache Beam para pré-processamento de dados, o Google Cloud Datalab fornece um ambiente baseado no Jupyter com todas essas ferramentas (e outras como NumPy, Pandas, Scikit-learn e Matplotlib), junto com o TensorFlow, pré-instalados e agrupados. O Datalab é de código aberto, portanto, se você quiser modificar ainda mais seu ambiente de notebook, é fácil de fazer.

 

Facets

O poder do aprendizado de máquina vem de sua capacidade de aprender padrões a partir de grandes quantidades de dados, portanto, entender seus dados pode ser fundamental para a criação de um sistema poderoso de aprendizado de máquina.

Facets é uma ferramenta de visualização de dados de código aberto recentemente lançada que ajuda você a entender seus conjuntos de dados de aprendizado de máquina e ter uma noção da forma e características de cada recurso e ver rapidamente como os recursos interagem entre si. Por exemplo, você pode visualizar seu treinamento e testar conjuntos de dados (como é feito aqui com alguns dados do Censo), comparar as características de cada recurso e classificar os recursos por “distância de distribuição”.

 

tensorflow

 

O Cloud Datalab inclui integração de Facets. Esse link do GitHub tem um pequeno exemplo de como carregar um conjunto de dados público do NHTSA Traffic Fatality BigQuery e visualizá-lo com o Facets.

 

tensorflow

 

Na visão do Facets, podemos ver rapidamente quais estados têm mais fatalidades no tráfego e que a distribuição do tipo de colisão parece mudar à medida que o número de fatalidades por acidente aumenta.

 

E mais…

Outra ferramenta de diagnóstico útil é o depurador TensorFlow, tfdbg, que permite visualizar a estrutura interna e os estados de execução dos grafos do TensorFlow durante o treinamento e a inferência.

Uma vez que você tenha treinado um modelo com o qual você esteja satisfeito, o próximo passo é descobrir como você o servirá para poder suportar previsões sobre o modelo. O TensorFlow Serving é um sistema de atendimento de alto desempenho para modelos de Machine Learning, projetado para ambientes de produção. Ele foi recentemente movido para a versão 1.0. O TensorFlow Serving é estudado em detalhes, com exemplos de deploy em produção, no curso Deep Learning II aqui na DSA.

Existem muitas outras ferramentas e bibliotecas que não temos espaço para abranger aqui, mas veja os repositórios do TensorFlow no GitHub para aprender sobre eles.

 

Onde Aprender TensorFlow

A Data Science Academy possui cursos completos de TensorFlow, tudo 100% online e 100% em português. Em todos os cursos da Formação IA o TensorFlow é estudado em detalhes, como por exemplo nos cursos Deep Learning FrameworksDeep Learning I e Deep Learning II e depois aplicado em diversas soluções de IA nos cursos Visão Computacional e Processamento de Linguagem Natural.

E em breve, cursos de DataLab e BigQuery aqui na DSA!!

 

Referências:

Formação Inteligência Artificial

TensorFlow

What is the TensorFlow machine intelligence platform?

Build and train machine learning models on our new Google Cloud TPUs

Big Data + Deep Learning = Google TensorFlow

 

 

Por Data Science Academy

Fonte: http://datascienceacademy.com.br/blog/o-que-e-o-tensorflow-machine-intelligence-platform/

Comentários

Comentários