Por que as GPUs são mais adequadas para aprendizado profundo?

Conteúdo

Desde a última década, temos visto a GPU surgir com mais frequência em áreas como HPC (Computação de alto desempenho) e no campo mais popular, quer dizer, os jogos. As GPUs têm melhorado ano após ano e agora são capazes de fazer coisas incrivelmente impressionantes, mas nos últimos anos têm captado ainda mais atenção devido ao aprendizado profundo.

gpu-dl-1-3246159

Como os modelos de aprendizagem profunda passam muito tempo no Treinamento, mesmo CPUs potentes não eram suficientemente eficientes para lidar com tantos cálculos de uma só vez e esta é a área onde as GPUs simplesmente superaram as CPUs devido ao seu . Mas antes de nos aprofundarmos, vamos primeiro entender algumas coisas sobre a GPU.

O que é a GPU?

Una GPU o ‘Unidad de procesamiento de gráficoses una versión mini de una computadora completa, pero solo dedicada a una tarea específica. Es diferente a una CPU que realiza múltiples tareas al mismo tiempo. La GPU viene con su propio procesador que está integrado en su propia placa base junto con v-ram o video ram, y también un diseño térmico adecuado para ventilación y enfriamiento.

1kcdeydxjbyjfubkqbnkq_w-6466913

fonte (Gamers Nexus)

En el término ‘Unidad de procesamiento de gráficos’, ‘Gráficosse refiere a renderizar una imagen en coordenadas específicas en un espacio 2d o 3D. Una ventana o punto de vista es la perspectiva de un espectador de mirar un objeto según el tipo de proyección utilizada. La rasterización y el trazado de rayos son algunas de las formas de renderizar escenas en 3D, ambos conceptos se basan en un tipo de proyección llamada proyección en perspetiva. ¿Qué es la proyección en perspetiva?

Em resumo, es la forma en que se forma una imagen en un plano de vista o lienzo donde las líneas paralelas convergen a un punto convergente llamado 'centro de proyección’ también a medida que el objeto se aleja del punto de vista parece ser más pequeño , exatamente cómo se retratan nuestros ojos en el mundo real y esto también ayuda a comprender la profundidad de una imagen, esa es la razón por la que produce imágenes realistas.

O que mais, las GPU también procesan geometría compleja, vetor, fuentes de luz o iluminaciones, texturas, formas, etc. Como agora temos uma ideia básica sobre a GPU, entendamos por que ela é muito utilizada para o aprendizado profundo.

Por que as GPUs são melhores para o aprendizado profundo?

Uma das características mais admiradas de uma GPU é a capacidade de calcular processos em paralelo. Este é o ponto onde o conceito de entra em ação. Uma CPU, em geral, completa sua tarefa de forma sequencial. Uma CPU pode ser dividida em núcleos e cada núcleo realiza uma tarefa de cada vez. Suponhamos que uma CPU tenha 2 núcleos. Mais tarde, dois processos de tarefas diferentes podem ser executados nesses dois núcleos, realizando assim multitarefa.

Mas mesmo assim, esses processos são executados em série.

02quyfuolnx2g6sws-2369131

fonte (Exemplos de amostra)

Isso não significa que as CPUs não sejam suficientemente boas. De fato, las CPU son realmente buenas para manejar diferentes tareas relacionadas con diferentes operaciones como manejar sistemas operativos, entregar hojas de cálculo, reproducir videos HD, extraer archivos zip grandes, Tudo ao mesmo tempo. Estas son algunas de las cosas que una GPU simplemente no puede hacer.

¿Dónde está la diferencia?

0yh_3qpohpllu9cyv-9938641

fonte (NVIDIA)

Como mencionado anteriormente, una CPU se divide en múltiples núcleos para que puedan realizar múltiples tareas al mismo tiempo, mientras que la GPU tendrá cientos y miles de núcleos, todos los cuales están dedicados a una sola tarea. Estos son cálculos simples que se realizan con más frecuencia y son independientes entre sí. Y ambos almacenan los datos requeridos con frecuencia en su respetiva memoria caché, siguiendo así el principio de ‘‘.

0stjaj3bah_remflr-4635146

fonte (NVIDIA)

Hay muchos programas y juegos que pueden aprovechar las GPU para su ejecución. La idea detrás de esto es hacer que algunas partes de la tarea o el código de la aplicación sean paralelas, pero no todos los procesos. Esto se debe a que la mayoría de los procesos de la tarea solo deben ejecutarse de manera secuencial. Por exemplo, Começar sessão en un sistema o aplicación no necesita ser paralelo.

Cuando hay parte de la ejecución que se puede hacer en paralelo, simplemente se cambia a GPU para su procesamiento, donde al mismo tiempo se ejecuta la tarea secuencial en la CPU, luego ambas partes de la tarea se combinan nuevamente.

En el mercado de GPU, hay dos jugadores principales, quer dizer, AMD y Nvidia. Las GPU de Nvidia se utilizan ampliamente para el aprendizaje profundo porque tienen un amplio soporte en el software del foro, los controladores, CUDA y cuDNN. Então, en términos de inteligencia artificial y aprendizaje profundo, Nvidia es pionera durante mucho tiempo.

Se dice que las redes neuronales son , lo que significa que los cálculos en redes neuronales se pueden ejecutar en paralelo fácilmente y son independientes entre sí.

0io_dkbbe3mhjyl1f-8224374

Algunos cálculos como el cálculo de pesos y funciones de activación de cada capa, la retropropagación se pueden realizar en paralelo. También hay muchos artículos de investigación disponibles al respecto.
Las GPU de Nvidia vienen con núcleos especializados conocidos como núcleos que ajudam a acelerar o aprendizado profundo.

O que é CUDA?

CUDA significa 'Compute Unified Device Architecture'’ que foi lançado no ano 2007, é uma forma de conseguir computação em paralelo e obter o máximo desempenho da potência da sua GPU de maneira otimizada, o que resulta num desempenho muito melhor ao executar tarefas.

0ogbatkaijpdosxjw-6057700

fonte (NVIDIA)

O kit de ferramentas CUDA é um pacote completo que consiste num ambiente de desenvolvimento usado para criar aplicações que utilizam GPU. Este kit de ferramentas contém principalmente o compilador, o depurador e as bibliotecas de C / c ++. O que mais, o tempo de execução do CUDA tem os seus drivers para que possa comunicar-se com a GPU. CUDA também é uma linguagem de programação que foi projetada especificamente para instruir a GPU a realizar uma tarefa. Também é conhecida como programação de GPU.
A seguir é apresentado um programa simples de olá mundo apenas para ter uma ideia de como o código CUDA se parece.

/* programa ola mundo em cuda *
#incluir<stdio.h>
#incluir<stdlib.h>
#incluir<cuda.h>__global__ void demo() {
    printf("Olá, mundo!,meu primeiro programa cuda");
}int main() {
    printf("Do main!n");
    demo<<<1,1>>>();
    Retorna 0;
}

1ud6zvgvafahakpiqriijfg-3961769

Produção

O que é cuDNN?

0l0srgvjrqtkixa2b-2366574

Fonte (Hyper Linuxer)

cuDNN é uma biblioteca de neuronal vermelho que é otimizada para GPU e pode aproveitar ao máximo a GPU da Nvidia. Esta biblioteca consiste na implementação de convolução, propagação para frente e para trás, funções de ativação e pooling. É uma biblioteca imprescindível sem a qual não se pode usar GPU para treinar redes neuronais.

Um grande salto com os núcleos Tensor!

No ano 2018, A Nvidia lançou uma nova linha das suas GPUs, quer dizer, a série 2000. Também chamadas RTX, Estas placas vêm com núcleos tensor dedicados ao aprendizado profundo e baseados na arquitetura Volta.

0yb7zq51_tknpxldo-1786349

Fonte (Anand Tech)

Os núcleos tensor são núcleos particulares que realizam a multiplicação de matrizes 4 x 4 FP16 e a soma com 4 x 4 matriz FP16 ou FP32 em precisão média, a saída resultará numa matriz 4 x 4 FP16 ou FP32 com total precisão.
Observação: ‘FP’ significa ponto flutuante para compreender melhor o ponto flutuante e a precisão, verifique isto Blog.

Como afirma a Nvidia, los núcleos tensoriales de nueva generación basados en la arquitetura volta son mucho más rápidos que los núcleos CUDA basados en la arquitetura Pascal. Esto dio un gran impulso al aprendizaje profundo.

0r97t2ar7yph4cjco-6336862

fonte (NVIDIA)

Al momento de escribir este blog, Nvidia anunció la última série 3000 de su línea de GPU que viene con arquitetura Ampere. Nisto, mejoraron el rendimiento de los núcleos tensoriales en 2x. También trae nuevos valores de precisión como TF32 (tensor flutuador 32), FP64 (punto flotante 64). El TF32 funciona igual que el FP32 pero con una aceleración de hasta 20x, como resultado de todo esto, Nvidia afirma que el tiempo de inferencia o entrenamiento de los modelos se reducirá de semanas a horas.

AMD frente a Nvidia

0uuhldm-sahwrgwmh-7118913

fonte (Tom’s Hardware)

AMD As GPUs são decentes para jogos, mas assim que o deep learning entra em cena, crie uma nova consulta e carregue a tabela InvOverRides do arquivo excel Nvidia estão muito à frente. Não significa que as GPUs da AMD sejam más. É devido à otimização do software e aos drivers que não são atualizados ativamente, No lado da Nvidia têm melhores drivers com atualizações frequentes e em cima disso o CUDA, cuDNN ajuda a acelerar os cálculos.

Algumas bibliotecas conhecidas como Tensorflow, compatibilidade com PyTorch para CUDA. Significa que se podem usar GPUs de entrada da série GTX 1000. Do lado da AMD, tem muito pouco suporte de software para as suas GPUs. No lado do hardware, A Nvidia introduziu núcleos tensores dedicados. A AMD tem ROCm para aceleração, mas não é tão bom como núcleos tensoriais, e muitas bibliotecas de aprendizagem profunda não são compatíveis com ROCm. Nos últimos anos, não foi notado nenhum grande salto em termos de desempenho.

Devido a todos estes pontos, A Nvidia simplesmente sobressai na aprendizagem profunda.

Resumo

Para concluir tudo o que aprendemos, fica claro que a partir de agora a Nvidia é o líder do mercado em termos de GPU, mas realmente espero que até a AMD consiga acompanhar no futuro ou pelo menos faça algumas melhorias notáveis na próxima linha das suas GPUs. já que estão a fazer um trabalho excelente em relação aos seus CPUs, quer dizer, a série Ryzen.

O alcance das GPUs nos próximos anos é enorme à medida que realizamos novas inovações e avanços em aprendizagem profunda, aprendizagem automática e HPC. A aceleração por GPU será sempre útil para que muitos desenvolvedores e estudantes entrem neste campo, já que os seus preços também estão a tornar-se mais acessíveis. Também graças à ampla comunidade que também contribui para o desenvolvimento de IA e HPC.

1uq_qcun2brdqeyxtgkqk2w-3129823

Prathmesh Patil

Entusiasta da aprendizagem automática, ciência de dados, desenvolvedor de Python.

LinkedIn: https://www.linkedin.com/in/prathmesh

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.

Datapeaker