• Nenhum resultado encontrado

4.3 COMPARAÇÃO DAS APLICAÇÕES

4.3.1 Comparação dos Frameworks

Um estudo sobre velocidade de treinamento realizado por (BHATIA, 2017) testou os frameworksTensorFlow - na versão 1.3.0-, MXNet - na versão 1.2.2 -, Theano - na versão 0.9.0 -, utilizando como front end o software Keras - na versão 2.0.8. Esse estudo foi utilizado como base inicial para a análise das aplicações porque foi o trabalho de comparação que utilizou ver- sões dos frameworks bem recentes, apesar de existirem hoje versões mais atuais. O Keras foi utilizado como front end porque permite ao desenvolvedor utilizar várias estruturas de aprendi- zado profundo sem a necessidade de alterar nenhum código. Em setembro de 2017, data em que o estudo foi realizado, as versões dos frameworks citados acima eram as versões estáveis mais recentes disponíveis. Os testes foram realizados utilizando arquitetura de rede neural convoluci- onal, realizando analises nas imagens dos datasets CIFAR10 e MNIST, classificando 10 classes de imagens em cada um deles. O aprendizado de máquina foi realizado em um máquina virtual Azure NC6 VM, utilizando a GPU Nvidia Tesla K80, configurada com o driver Nvidia-CUDA 8.0.61.

O primeiro teste do autor foi realizado sobre o dataset CIFAR10, que revelou que o TensorFlow, em termos de velocidade de treinamento por época, é superior aos demais, tendo apenas uma pequena vantagem sobre o segundo colocado, o MXNet. A Figura 13 demonstra o resultado do teste, sendo possível observar o tempo em segundos para cada época de treina- mento em cada um dos frameworks. Vale lembrar que, como se trata de tempo de treinamento, o framework com a menor barra no gráfico é considerado melhor, uma vez que isso indica uma maior velocidade.

Figura 13 – Tempo de Treinamento dos Frameworks - Dataset CIFAR10

segundo teste realizado sobre o dataset MNIST, o framework MXNet não foi testado, pois, segundo o autor, seriam necessárias alterações significativas no código da rede neural de- vido a falta de suporte do MXNet para as versões mais recentes do Keras, pelo menos no período em que o estudo foi realizado. Entretanto, as demais aplicações foram testadas, demonstrando mais uma vitória do TensorFlow sobre as demais. A Figura 14 demonstra o resultado do teste, em que pode-se observar o tempo em segundos para cada época de treinamento em cada um dos frameworks.

Figura 14 – Tempo de Treinamento dos Frameworks - Dataset MNIST

Fonte: (BHATIA, 2017)

Como citado anteriormente, o estudo realizado por (BHATIA, 2017), foi utilizado como base inicial de estudo, por ter sido realizado testes em apenas 4 frameworks, analisando imagens do dataset CIFAR-10, e apenas 3 frameworks, analisando imagens do dataset MNIST, sem falar que o único quesito comparado foi velocidade de treinamento, é necessário mais aná- lises para chegar a uma conclusão de qual a melhor aplicação a ser utilizada.

O benchmarking pulicado por (RUBASHKIN, 2017), compara as aplicações Theano, TensorFlow, Torch, Caffe, MXNet, Neon e CNTK, em uma combinação de experiências sub- jetivas passadas pelo autor no reconhecimento de imagens e no reconhecimento de fala. Além desse estudo ter sido realizado em mais softwares, o autor não analisa somente a velocidade de treinamento; incluindo, portanto, outros quesitos importantes.

O primeiro quesito comparado foi as linguagens de programação que cada aplicação suporta. Essa comparação, segundo o autor, é bastante importante, pois o programador deve sempre que possível usar uma estrutura que suporte a linguagem na qual ele esteja mais famili- arizado. Contudo, o autor recomenda que o programador deva conhecer as linguagens C ++ e Lua. Nesse quesito não é possível elencar um vencedor, porque se trata de um quesito subjetivo. O segundo quesito leva em conta a quantidade e a qualidade de materiais disponíveis

sobre as aplicações. Um dos critérios para medir isso foi o engajamento da comunidade GitHub em cada aplicação. A Figura 15 mostra a comparação do interesse de cada framework no GitHub, enquanto a Figura 16 mostra a quantidade de contribuições de cada framework no GitHub. Nesse quesito o TensorFlow apresenta vantagem sobre os outros frameworks.

Figura 15 – Comparação de Interesse no GitHub

Fonte: (RUBASHKIN, 2017)

O terceiro quesito, considerou a capacidade do framework em modelar redes neurais convolucionais. Dentre os recursos analisados está o espaço de oportunidade para definir mode- los, a disponibilidade de camadas pré-construídas e as ferramentas e funções disponíveis para conectar essas camadas. Esse é um quesito importante a ser considerado para o desenvolvi- mento de redes neurais voltadas ao reconhecimento de imagem, uma vez que as CNNs são as redes neurais mais utilizadas para esse fim. Nessa questão o Tensorflow e o Torch empataram na primeira colocação.

O quarto quesito analisou a capacidade de modelagem em redes neurais recorrentes. As RNNs são utilizadas principalmente por aplicações voltadas ao reconhecimento de fala, previsão de séries temporais, criação de legendas de imagens entre outras tarefas que requerem processamento de informações sequenciais.

O quinto quesito verifica a arquitetura. O objetivo aqui é verificar a facilidade de criar e treinar uma rede neural. Portanto, nessa análise verifica-se a simplicidade e a modularidade do software no desenvolvimento. O TensorFlow, o Torch e o MXNet têm uma arquitetura mais simples e modular, se comparados com estruturas como o Caffe, o qual exige uma quantidade significativa de trabalho para criar uma nova camada. Além disso, o TensorFlow possui uma

Figura 16 – Comparação de Contribuições no GitHub

Fonte: (RUBASHKIN, 2017)

vantagem na depuração e monitoramento, já que traz consigo a ferramenta web Tensorboard. O sexto quesito é quanto a velocidade de treinamento nos modelos de rede convolucio- nais e recorrentes. Esse quesito é importante para os fins desse estudo, uma vez que o modelo de rede neural mais adequado para a análise de imagens é o modelo convolucional. O framework Torch ganhou nesse ponto.

O sétimo quesito se preocupa com o suporte disponibilizado pelo framework para a re- alização de treinamentos em GPUs. Treinamentos realizados em GPUs tendem a ser muito mais rápidos do que os realizados por CPU, principalmente quando se trata de big data. Portanto, possuir suporte para treinamentos em GPUs é importante quando se trabalha com uma grande quantidade de dados. O Mxnet possui vantagens nesse quesito sobre os demais frameworks.

Finalizando, o quesito número oito se refere a compatibilidade da aplicação com o Keras. Nesse caso, o Keras seria utilizado como o front-end e o framework seria utilizado como o back end.

A Tabela 4 mostra uma tabela com as pontuações dos frameworks nos quesitos citados acima segundo (RUBASHKIN, 2017).

Tendo como base os resultados dos testes das duas pesquisas, chegou-se a conclusão que o TensorFlow é a melhor opção, principalmente por apresentar uma ótima capacidade de modelagem de redes neurais convolucionais e por ser de fácil utilização para modelar arqui- teturas de front end. Além disso, o TensorFlow possui um bom desempenho na questão de velocidade de treinamento. Por esses motivos o TensorFlow será o framework utilizado no desenvolvimento do software que será proposto no próximo capítulo.

Tabela 4 – Comparação de Aplicações

Fonte: (RUBASHKIN, 2017)

Documentos relacionados