Olá pessoal. Nesta sexta-feira, estamos compartilhando com você a primeira publicação sobre o lançamento do curso
Data Scientist . Boa leitura.
Muitas organizações começaram a tentar usar a inteligência artificial em suas decisões para expandir o escopo de atividades ou desenvolver sua start-up, mas uma coisa importante a entender: a tecnologia de desenvolvimento escolhida deve seguir uma boa estrutura para o aprendizado profundo, especialmente porque cada estrutura serve para algum tipo de objetivo separado. A busca pelo conjunto perfeito neste caso é um pré-requisito para o desenvolvimento rápido e suave dos negócios e a implantação bem-sucedida de projetos.

A lista a seguir de estruturas para aprendizado profundo pode ajudar no processo de escolha da ferramenta certa para resolver problemas específicos que você enfrenta no processo de trabalhar em um projeto. Você pode comparar os prós e os contras de várias soluções, avaliar seus limites e aprender sobre os melhores casos de uso para cada solução!
1. TensorflowCriado pelo Google e escrito em Python e C ++, o TensorFlow é uma das melhores bibliotecas de código aberto para computação numérica. Simplesmente tem que ser bom, porque até gigantes como DeepMind, Uber, AirBnB ou Dropbox escolheram essa estrutura para suas necessidades.
O TensorFlow é bom para projetos complexos, como redes neurais de várias camadas. É usado para reconhecimento de voz ou aplicativos de imagens e texto, como o Google Translate, por exemplo.
Obviamente, os especialistas chamaram muitas de suas vantagens:
- Um grande número de manuais e documentação foi escrito para ela;
- Oferece ferramentas poderosas para monitorar o processo de aprendizagem de modelos e visualização (Tensorboard);
- É suportado por uma grande comunidade de desenvolvedores e empresas de tecnologia;
- Fornece modelos de serviço;
- Suporta aprendizado distribuído;
- O TensorFlow Lite fornece saída para dispositivos de baixa latência para dispositivos móveis;
E contras:
Ele perde velocidade nos benchmarks, em comparação com CNTK e MXNet, por exemplo;
Ele tem um limite de entrada mais alto para iniciantes do que PyTorch ou Keras. O Tensorflow nu é de nível bastante baixo e requer muito código padrão, e o modo "detectar e executar" do Tensorflow complica bastante o processo de depuração.
Há outra limitação significativa: a única linguagem totalmente suportada é o Python.
2. PyTorchO PyTorch é o sucessor do Python da biblioteca Lua Torch e um grande concorrente do TensorFlow. Foi desenvolvido pelo Facebook e usado pelo Twitter, Salesforce, Oxford University e muitas outras empresas.
O PyTorch é usado principalmente para treinar modelos de maneira rápida e eficiente, portanto,
essa é a escolha de um grande número de desenvolvedores.
Tem muitas vantagens importantes:
- Graças à arquitetura da estrutura, o processo de criação de um modelo é bastante simples e transparente;
- O modo "definir por execução" padrão é uma referência à programação tradicional. A estrutura suporta ferramentas populares de depuração, como depurador pdb, ipdb ou PyCharm;
- Ele suporta simultaneidade declarativa de dados ;
- Possui muitos modelos pré-treinados e peças modulares pré-fabricadas que são fáceis de combinar;
O treinamento distribuído está disponível desde a versão 0.4.
Mas essa estrutura tem alguns inconvenientes inegáveis:
- Falta de suporte ao modelo;
- Ele ainda não está pronto para um lançamento completo na produção, mas o roteiro para a versão 1.0 parece realmente impressionante;
- Não há interfaces suficientes para monitoramento e visualização, como o TensorBoard - no entanto, ele possui uma conexão externa ao Tensorboard.
3.
KerasKeras é uma biblioteca mínima baseada em Python que pode ser executada em cima de TensoFlow, Theano ou CNTK. Foi desenvolvido por um engenheiro do Google, François Schollet, para acelerar os experimentos. Keras suporta uma ampla gama de camadas de redes neurais, como camadas convolucionais, recorrentes ou densas.
Essa estrutura é boa em casos de tradução, reconhecimento de imagem, fala etc.
Vantagens:
- A prototipagem é realmente rápida e fácil;
- É pequeno o suficiente para criar modelos de aprendizado profundo para muitas camadas;
- Possui módulos totalmente configuráveis;
- Possui uma interface simples e intuitiva, respectivamente, boa para iniciantes;
- Possui suporte interno para treinamento em várias GPUs;
- Ele pode ser configurado como avaliador do TensorFlow e treinado em clusters de GPU na plataforma Google Cloud;
- Executa no Spark;
- Suporta GPUs NVIDIA, Google TPUs, GPUs Open-CL, como AMD.
E algumas desvantagens:
- Pode parecer muito alto e nem sempre é fácil de personalizar;
- É limitado aos back-ends Tensorflow, CNTK e Theano.
O Keras não é tão funcional quanto o TensorFlow e oferece menos opções para gerenciar uma conexão de rede, o que pode ser uma limitação séria se você pretende criar algum modelo especializado de aprendizado profundo.
4. MXNet
Essa é uma estrutura de aprendizado profundo criada pelo Apache que suporta uma abundância de linguagens como Python, Julia, C ++, R ou JavaScript. É usado pela Microsoft, Intel e Amazon Web Services.
A estrutura MXNet é conhecida por sua alta escalabilidade, e é por isso que é usada por grandes empresas principalmente para reconhecimento e escrita de voz, PNL e previsão.
Tem muitas vantagens:
- É rápido o suficiente, flexível e eficaz no trabalho com algoritmos de aprendizado profundo;
- Ele fornece suporte avançado à GPU;
- Pode ser executado em qualquer dispositivo;
- Possui uma API imperativa de alto desempenho;
- Ele fornece suporte fácil ao modelo;
- É extremamente escalável;
- Ele fornece um bom suporte para muitas linguagens de programação, como Python, R, Scala, JavaScript e C ++, e muitas outras.
Agora, as desvantagens do MXNet:
- Ao seu redor, não existe mais uma comunidade como a TensorFlow;
- Não é tão popular na comunidade científica.
Com base nos argumentos acima, o MXNet é uma boa estrutura para grandes projetos industriais, mas ainda é bastante jovem, lembre-se de que você pode não receber suporte técnico para resolver seu problema o mais rápido possível.
5. CNTKEssa estrutura agora é chamada de Microsoft Cognitive Toolkit. É uma estrutura aberta de aprendizado profundo, projetada para trabalhar com conjuntos de dados realmente grandes, com suporte para Python, C ++, C # e Java.
O CNTK fornece treinamento de modelo eficaz para reconhecimento de voz, escrita e imagem e também suporta CNN e RNN. É usado no Skype, Xbox e Cortana.
Como sempre, os especialistas já apreciaram seus benefícios:
- Mostra bom desempenho e escalabilidade;
- Fornece muitos componentes bem otimizados;
- Oferece suporte para o Apache Spark;
- Eficaz no uso de recursos;
- Possui fácil integração com a nuvem do Azure;
E uma única desvantagem:
- Suporte comunitário limitado.
6. Caffe e Caffe2Caffe é uma estrutura C ++ que possui uma interface Python muito utilizável. Ele suporta CNN e redes de distribuição direta e também é bom para modelos de treinamento (sem escrever linhas extras de código), processamento de imagens e melhoria de redes neurais existentes. Por outro lado, não é tão bem documentado e difícil de compilar. Não há informações sobre o uso do Caffe por grandes empresas. Em 2017, o Facebook lançou o Caffe 2, que se tornou o verdadeiro sucessor do Caffe, e foi criado para o desenvolvimento móvel e em larga escala no ambiente de produção.
Ele é conhecido no Facebook como
"Uma plataforma pronta para produção (...) que roda em mais de 1 bilhão de smartphones, abrangendo 8 gerações do iPhone e seis gerações de arquiteturas de processadores Android".Essa estrutura é boa por vários motivos:
- Oferece modelos pré-treinados para criar aplicativos de demonstração;
- É rápido, escalável e ocupa pouco espaço;
- Funciona bem com outras estruturas, como o PyTorch, e eventualmente será integrado ao PyTorch 1.0;
- Ele fornece trabalho otimizado com o servidor.
E, novamente, a principal desvantagem:
- Suporte comunitário limitado.
Apesar de o Caffe2 passar bem nos testes em termos de velocidade e memória ocupada, é relativamente novo e bastante limitado em termos de implantação de redes complexas que exigem pelo menos ferramentas convenientes para depuração e suporte técnico.
7. Deeplearning4jSe sua linguagem de programação principal é Java, você definitivamente deve dar uma olhada no DL4J. É uma plataforma comercial de código aberto criada principalmente para Java e Scala que fornece bom suporte para vários tipos de redes neurais (como CNN, RNN, RNTN ou LTSM).
Essa estrutura será uma boa escolha, pois possui um grande potencial nas áreas de reconhecimento de imagem, processamento de linguagem natural, pesquisa de vulnerabilidades e análise de texto.
Prós:
- Confiável, flexível e eficiente;
- Ele pode processar grandes quantidades de dados sem perda de velocidade;
- Funciona com Apache Hadoop e Spark, em CPU ou GPU distribuída;
- Tem boa documentação;
- Tem uma versão da comunidade e da empresa.
O que é surpreendente, falando sobre essa estrutura, os especialistas não se concentram em nenhuma falha específica, pois supõem um debate geral sobre a adequação do Java ao aprendizado de máquina em geral. Como o Java não é usado com tanta frequência em projetos de aprendizado de máquina, a estrutura não pode contar com bancos de dados crescentes de código pronto para resolver problemas específicos. Como resultado, os custos do seu projeto podem se tornar muito mais altos e a solução de um problema pode desacelerar significativamente o progresso geral do projeto.
8. ChainerOutra estrutura de aprendizado profundo do Python suportada por gigantes como Intel, IBM, NVIDIA e AWS. Pode facilmente usar várias GPUs.
O Chainer é usado principalmente para reconhecimento de voz, tradução automática e análise de chaves. Ele suporta várias arquiteturas de rede, como CNN, fast-forward, RNN e possui várias vantagens importantes sobre seus concorrentes:
- É muito mais rápido que qualquer outro framework Python;
- É incrivelmente flexível e intuitivo;
- As redes existentes podem ser modificadas diretamente no tempo de execução;
Por outro lado:
- Muito difícil em termos de depuração;
- Ao seu redor há uma comunidade relativamente pequena;
Como outras estruturas baseadas em Python são muito mais populares, talvez você não obtenha ajuda tão rápida quanto em outras estruturas, como TensorFlow ou PyTorch.
Resumir
Escolher a melhor estrutura para um projeto de aprendizado profundo pode ser extremamente difícil. Você precisa considerar os seguintes fatores:
- O tipo de redes neurais que você desenvolverá;
- A linguagem de programação que você usa;
- O número de ferramentas e opções adicionais que você pode precisar;
- Orçamento do projeto;
- A natureza e os objetivos que o projeto persegue.
Espero que essa comparação de estruturas elucide um pouco esse problema e ajude você a escolher a solução mais adequada para o seu projeto.
Escreva comentários e até
o dia aberto , que será realizado em 19 de março por
Alexander Nikitin .