Tensorflow

De Open Source Software

Introdução:

Imagem2.png

O TensorFlow é uma plataforma com Processo de Fornecimento caracterizado como Código Aberto (Open Software)[1]de ponta a ponta para Aprendizado de Máquina (Machine Learning ou ML). Possui um ecossistema flexível e abrangente de ferramentas, e comunidade que permite encontrar modelos, módulos e conjuntos de dados criados pela TensorFlow Community. Nesta plataforma, pesquisadores desenvolvem o que há de mais moderno em Machine Learning, assim havendo a possibilidade de construir e implantar facilmente aplicativos com esta abordagem.

O principal benefício que o TensorFlow oferece para o desenvolvimento de solução em Machine Learning é a abstração. Em vez de lidar com os detalhes básicos da implementação de algoritmos, ou de descobrir formas adequadas de ligar a saída de uma função à entrada de outra, o desenvolvedor pode se concentrar na lógica geral da aplicação e o TensorFlow cuida dos detalhes nos bastidores.

O TensorFlow oferece facilidades adicionais para desenvolvedores que precisam depurar seus aplicativos. O modo eager execution - execução ansiosa, permite avaliar e modificar cada operação de grafo separadamente e de forma transparente, em vez de construir o grafo inteiro como um único objeto opaco e avaliar tudo de uma vez.

A versão mais recente (Outubro, 2019) do TensorFlow disponível no mercado é a TF 2.0.


Projeto:

Pode-se observar dentro dos Processos Organizacionais para Habilitação de Projetos - com base nos dados da comunidade - uma grande preocupação com o Processo de Gestão de Recursos Humanos e com o Processo de Gestão de Conhecimento.
Entre os dados mais importantes neste quisito que estão extritamente relacionados ao núcleo do TensorFlow, podemos destacar os seguintes fatos:
• Número de 'commits': Aproximadamente 49.500 (Ano de 2019).
• Número de contribuidores do projeto: mais de 1.830 contribuidores (Ano 2019).
• Número de perguntas na plataforma 'StackOverflow': Mais que 39.000 perguntas referêntes a ferramenta TensorFlow (Ano 2019).
• Número de desenvolvedores 'experts' em Machine Learning: Exatamente 66 desenvolvedores (Ano 2019).
• Número de postagens em blogs oficiais: 14 postagem de convidados no blog TensorFlow (Ano 2019).

Números que continuam subindo a cada ano (Dados obtidos até 06 de Março de 2019).

Fonte: TF Dev Summit ‘19. Obs.: Minuto 00:00:49 do vídeo)


Comunicação:

A comunicação é uma etapa importante no Processos de Gerenciamento Técnico e neste documento iremos subdividi-la em:

Comunicação Geral:
Todos os links necessários para convidados incipientes da comunidade podem ser encontrados na URL destinada a TensorFlow Community. O link contém o acesso a maioria das informações de contato, usuários, desenvolvedores e assuntos correlatos.

Comunicação de Questões Técnicas (Algoritmos):
Uma referência importante e útil aos usuários, indicada pelo próprio projeto TensorFlow, é a web page Stack Overflow. Este web site serve de apoio a diversas discusões sobre a implementação de softwares com o uso desta técnica e comunicação sobre temas específicos em meio a participação nas diversas listas de discussões da comunidade TensorFlow.

Comunicação de Conferências:
A comunicação de novas funcionalidades TensorFlow fazem parte do Processo de Planejamento de Projeto, e são divulgadas anualmente em meio a sua conferência oficial conhecida como TensorFlow Dev Summit. Esta conferência também busca atrair novos membros a comunidade ano após ano.

Fontes: TensorFlow Community, TensorFlow Slack Overflow & TF Dev Summit ‘19


Licença de uso:

O Processo de Aquisição do TensorFlow possibilita o uso sobre uma licença permissiva cujas principais condições exigem a preservação de direitos autorais e avisos de licença. Ele corresponde atualmente a licença Apache 2.0 Open Source License; nela os colaboradores fornecem uma concessão expressa de direitos de patente. Trabalhos licenciados, modificações e trabalhos maiores podem ser distribuídos sob termos diferentes e sem código fonte. Tipos de permissões:

  • Uso comercial
  • Modificação
  • Distribuição
  • Uso de patente
  • Uso privado


Limitações:

Uso da marca registrada Responsabilidade

Garantia

Condições

Aviso de licença e direitos autorais Mudanças de estado


Arquitetura e Compatibilidade:

Arquitetura TensorFlow [2]

O TensorFlow é multiplataforma e pode ser usado no Windows, MacOS e Linux. Ele é executado em 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 tem um Processos de Definição de Arquitetura que permite 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. A maioria das demais 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.

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.

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.



Atualização - TensorFlow 2.0

O TensorFlow 2.0, lançado em outubro de 2019, reformulou a estrutura de várias maneiras, com base no feedback da comunidade, para facilitar o trabalho (por exemplo, usando a API Keras relativamente simples para o treinamento de modelos) e mais desempenho. O treinamento distribuído é mais fácil de executar, graças a uma nova API, e o suporte ao TensorFlow Lite torna possível implantar modelos em uma variedade maior de plataformas. No entanto, o código escrito para versões anteriores do TensorFlow deve ser reescrito, assim com o custo de refatoração de código. Para o aproveitamento do máximo dos novos recursos do TensorFlow 2.0.


Fluxo de Dados [3]

Fluxos de Dados:

Os fluxos de dados animados entre diferentes nós no gráfico são tensores que são matrizes de dados multidimensionais, podemos ver como os gráficos computacionais podem ser usados para representar os cálculos nas redes neurais, e nesse ponto o TensorFlow se destaca. Esse beneficio é essenciais para aplicativos de big data e aprendizado profundo - especialmente para arquiteturas de redes neurais complicadas, como Redes Neurais Convolucionais e Redes Neurais Recorrentes. O intuito por trás do TensorFlow é a capacidade de criar gráficos computacionais em código e permitir melhorias significativas de desempenho por meio de operações paralelas e outros ganhos de eficiência. Os nós no gráfico simulam operações matemáticas, enquanto as arestas do gráfico representam as matrizes de dados multidimensionais (tensores), que se conversam entre eles. A arquitetura mutável permite que o usuário implante a programação em uma ou mais CPUs ou GPUs em um desktop, servidor ou dispositivo móvel com uma única API.















Diretrizes de contribuição:

Para contribuir com o TensorFlow, é importanter saber as diretrizes de contribuição . O projeto segue o código de conduta do TensorFlow . Os problemas do GitHub são usados para rastrear solicitações e bugs, pelo TensorFlow Discuss para perguntas e discussões gerais. Perguntas específicas utilizasse o plataforma[4]


Contribuição do TensorFlow como Ferramentas Open Source No Contexto De Data Science

A pesquisa feita por Reinstein foi listados os 20 maiores projetos Open Source de acordo com o número de contribuidores no GitHub, repositório de código fonte, conforme ilustra a figura.[5] A dimensão é proporcional ao número de contribuidores, a cor indica a mudança no número de contribuidores em relação a essa mesma pesquisa feita no ano de 2017, vermelho diz respeito ao número de aumento e azul que diminuição. Os asteriscos representam os projetos sobre Deep Learning.

Maiores Projetos Machine Learning no Github [6]


TensorFlow detém o primeiro lugar da pesquisa, assim justificando seu impacto na comunidade Open Source. O projeto foi criado com o intuito de facilitar a pesquisa sobre Aprendizado de Máquina, e tornar mais fácil a transição de um protótipo de pesquisa para um sistema de produção [7].


Ações para Melhorar o Ecossistema:[8]

• Facilitar o envolvimento de pessoas no projeto;

• Aumentar a transparência sobre o desenvolvimento;

• Capacitação de pessoas envolvidas;

• Conferência TensorFlow World


Implemetação:[9]

Facilitar a contribuição: Como mencionado no TF Dev Summit ‘19 uma das estratégias para facilitar o Processo de Planejamento do Projeto, foi o aumento da modularidade; o que torna o projeto menos monilítico em termos de código e organização de pessoas.
Outra estratégia interessante foi o aumento de lugares para contribuir por meio de: Blogs, vídeos, documentação, teste de software, etc.

Grupos de Interesse (Special Interest Group):
As SIG's ou Grupos Especiais de Interesse são elementos formados a fim de organizar as atividades dos desenvolvedores. Seu objetivo é manter um escopo fechado para cada grupo de desenvolvedores, melhorando-se assim o trabalho em equipe, por conta de cada grupo ter um trabalho pré definido.

Manutenibilidade: como as alterações ocorrem?:

A [manutenibilidade |Processo de manutenção] do TensorFlow se dá de muitas maneiras, é possível contribuir com código, fazer melhorias na documentação da API do TensorFlow ou adicionar blocos de anotações Jupyter ao repositório de tensorflow/examples. É possível contribuir das seguintes maneiras:

  • Escrevendo código.
  • Melhorando a documentação.
  • Respondendo às perguntas no Stack Overflow.
  • Participando das discussões nos fóruns do TensorFlow.
  • Contribuindo com cadernos de exemplo.
  • Investigando bugs e problemas (issues) no GitHub.
  • Revisando e comentando as pull requests de outros desenvolvedores.
  • Relatando um problema.
  • Dando um “joinha” like em questões relevantes de próprio interesse.
  • Consultando o TensorFlow em blogs, pappers e artigos.
  • Acesso as mídias sociais.
  • Criando os repositórios que próprio interesse no GitHub.

Todos estes processos são analisados e validados pela equipe do TensorFlow. Alguns deles estão delineados na Diretrizes de Contribuição. [10]


Resolução de conflitos:

Fonte: https://github.com/tensorflow/tensorflow/blob/master/CODE_OF_CONDUCT.md

Teste

Arquitetura TensorFlow