Deep Learning – Uma abordagem em Hardware

On 8 de abril de 2019 by Mateus Coelho

Deep Learning é a nomenclatura dada ao conjunto mais recente de técnicas de inteligência artificial e aprendizado de máquina. Contudo, esse tipo de técnica envolve múltiplas operações matemáticas, especialmente matriciais. Assim, muitas vezes o hardware utilizado se torna um gargalo no treinamento e desenvolvimento de sistemas que utilizam essa técnica. Portanto, nesse texto discutimos os principais requisitos e modelos de hardware aplicados ao treinamento e deploy de algoritmos de Deep Learning.

Redes Neurais Convolucionais – Estado da Arte em Deep Learning

Anteriormente, já discutimos os conceitos de Inteligência Artificial, Deep Learning e Redes Neurais Artificiais. Sendo assim, discutiremos agora o que se considera como parte do estado da arte na área: Redes Convolucionais. Esse tipo de rede é especialmente aplicado a problemas de visão computacional, pois tem grande poder de extração de informações e reconhecimento de padrões.

Exemplo de Rede Neural Convolucional
Fonte: https://medium.com/@RaghavPrabhu/understanding-of-convolutional-neural-network-cnn-deep-learning-99760835f148

Conforme a ilustração sugere, uma Rede Neural Convolucional tem duas etapas: Extração de informações e Classificação. Cada execução de um algoritmo como esse envolve múltiplas operações matriciais, que são comumente caras do ponto de vista computacional. Além disso, o processo de treinamento de uma rede como essa requer milhares de execuções para o ajuste de cada um dos milhares ou milhões de pesos envolvidos no processo. O vídeo abaixo, por exemplo, mostra uma rede neural com essa característica que possui cerca de 500 000 neurônios. Dessa forma, os processos envolvidos no desenvolvimento desse tipo de algoritmo envolvem a exploração dos limites do poder computacional atual.

Problemas de Hardware para Deep Learning

Conforme mencionado, a capacidade computacional desses algoritmos depende da realização de operações matemáticas como equações algébricas e matriciais. Embora tenhamos presenciado um aumento da capacidade dos processadores, o avanço na velocidade de execução de algoritmos não tem acompanhado essa evolução. Da mesma forma, uma análise mostrada por Karl Rupp aborda exatamente esse problema. Segundo esses dados, o aumento do número de transistores em processadores tem causado um aumento de performance cada vez menor.

Análise de tendências de microprocessadores nos últimos 42 anos.
(Fonte: https://www.karlrupp.net/2018/02/42-years-of-microprocessor-trend-data/)

Ao mesmo tempo que os problemas citados limitam a evolução dos algoritmos, eles também abrem uma “corrida do ouro” para produzir soluções de suporte a nível de Hardware. Dessa maneira, empresas como Microsoft, Google, NVIDIA e Apple buscam soluções de apoio a inteligência artificial moderna.

GPUs, TPUs e Aceleradores de Hardware

A empresa Microsoft apresentou o Projeto Brainwave como proposta de hardware aplicada para resolver esse problema. Primordialmente, essa solução utiliza aceleração de Hardware com tecnologia de FPGA. Além disso, a empresa aposta em uma arquitetura de alta performance, somada a elementos de software otimizados para compilação e runtime.

Hot Chips Stratix 10 board
Hardware criado para o projeto Brainwave
(Fonte: https://www.microsoft.com/en-us/research/blog/microsoft-unveils-project-brainwave/)

Da mesma forma, a empresa Google oferece uma solução de hardware especializada, chamada Tensor Processing Unit. Essa ferramenta de hardware otimiza o uso da plataforma TensorFlow, a mais popular e mais utilizada para implementação de algoritmos de Deep Learning. Esse produto já está disponível assinando serviços de Cloud da Google. Ainda mais, qualquer um pode fazer uso de unidades TPU em Cloud por um tempo utilizando a plataforma Google Colaboratory.

Resultado de imagem para google TPU
Plataforma de hardware Google TPU
(Fonte: https://cloud.google.com/tpu/)

Assim como a Google, outra empresa que apresenta soluções de Hardware otimizada para TensorFlow é a NVIDIA. Primeiramente, a plataforma TensorFlow é oficialmente otimizada para implementações utilizando CUDA, a linguagem das GPUs NVIDIA. GPUs são otimizadas para realizar operações matriciais rapidamente, o que é favorável ao propósito de treinamento e deploy de modelos.

Resultado de imagem para tensorflow cuda
TensorFlow oferece suporte oficial a otimização usando CUDA
(Fonte: https://medium.com/brasil-ai/instalando-tensorflow-1-6-0-gpu-cuda-9-1-cudnn-7-1-3-no-arch-linux-manjaro-e068b3a8025f)

Ao mesmo tempo, a NVIDIA está investindo no desenvolvimento de Hardware especializado para implementações de Redes Neurais de Deep Learning. Ela apresentou novas arquiteturas de GPU com a finalidade de dar suporte a algoritmos de IA, como a NVIDIA Volta.

Resultado de imagem para NVidia volta
NVIDIA Volta
(Fonte: https://www.leak.pt/nvidia-novas-placas-graficas-volta/)

Finalmente, a empresa Apple apresentou recentemente uma unidade de suporte a redes neurais na arquitetura de hardware do novo iPhone X. O Apple Neural Engine é uma solução de suporte a redes neurais a nível de Hardware para dispositivos móveis da empresa.

Resultado de imagem para Apple  Neural Engine
Apresentação do Apple Neural Engine
(Fonte: https://www.theverge.com/2017/9/13/16300464/apple-iphone-x-ai-neural-engine)

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *