Devo usar GPU ou CPU para inferência?

11

Estou executando uma rede neural de aprendizado profundo que foi treinada por uma GPU. Agora eu quero implantar isso em vários hosts para inferência. A questão é: quais são as condições para decidir se devo usar GPUs ou CPUs como inferência?


Adicionando mais detalhes dos comentários abaixo.

Eu sou novo nisso, então a orientação é apreciada.

  • Memória : GPU é K80

  • Estrutura : Cuda e cuDNN

  • Tamanho dos dados por carga de trabalho : 20G

  • Nós de computação para consumir : um por trabalho, embora deseje considerar uma opção de escala

  • Custo : posso comprar uma opção de GPU se os motivos fizerem sentido

  • Implantação : Executando em servidores bare metal hospedados, não na nuvem.

No momento, estou executando na CPU simplesmente porque o aplicativo funciona bem. Mas, fora desse motivo, não sei por que alguém consideraria a GPU.

Dan
fonte
Para aconselhamento sobre comparação entre duas abordagens em potencial, será útil que outras pessoas conheçam alguns detalhes de sua tarefa. Por exemplo, qual é o tamanho dos seus dados, qual a capacidade de memória da sua GPU, o número de nós de computação que você planeja usar e talvez também qual a estrutura de redução de mapa que você tem em mente.
Dynamic Stardust
@DynamicStardust ... e o custo. Nós de CPU EC2 baratos ou nós de GPU ECW caros? Essa é uma pergunta muito vaga.
Spacedman 27/09/17

Respostas:

7

@Dan @SmallChess, eu não concordo completamente. É verdade que, para o treinamento, grande parte da paralalização pode ser explorada pelas GPUs, resultando em um treinamento muito mais rápido. Para a inferência, essa paralalização pode ser bem menor, mas a CNN ainda obterá uma vantagem disso, resultando em inferência mais rápida. Agora você só precisa se perguntar: a inferência mais rápida é importante? Eu quero essas dependências extras (uma boa GPU, os arquivos corretos instalados etc.)?

Se a velocidade não for um problema, vá para a CPU. No entanto, observe que as GPUs podem torná-lo uma ordem de magnitude mais rápida na minha experiência.

Laurens Meeus
fonte
Ponto interessante que você levantou, por que a CNN se beneficiaria do processamento paralelo durante a inferência?
Dan
1
Com o treinamento, os cálculos paralelos podem ser óbvios: você tem várias entradas, e cada uma delas precisa ser transmitida de maneira totalmente independente uma da outra. Para uma convolução, o kernel é multiplicado por vários 'patches' de entrada. Isso também pode ser feito em paralelo. É isso que torna a CNN tão poderosa: não apenas eles precisam de menos parâmetros para treinar, como também são mais paralelizados, tornando as GPUs tão poderosas. Não sei no que você trabalha, mas trabalho na segmentação (classificação em pixels) das imagens e, ao usar GPUs para inferência, obtenho uma enorme melhoria de velocidade (> x10).
Laurens Meeus 28/09
@LaurensMeeus Também sou novo nesse espectro e estou fazendo análise de custos de VMs na nuvem. Ainda usaria a GPU para treinamento se estiver treinando apenas a análise de texto e não imagens?
Squ1rr3lz 31/07/19
1
@ Squ1rr3lz eu sou 95% você deveria. Toda forma de computação paralela deve ter uma vantagem nas GPUs. Não sou especialista neste campo, mas, como a análise de texto também possui camadas convolucionais (seja 1D em vez de 2D), esse já é um dos motivos pelos quais poderia / deveria ser mais rápido. Se possível, tente por si mesmo qual a influência na ativação / desativação da GPU.
Laurens Meeus
5

A inferência de execução em uma GPU em vez da CPU fornecerá quase a mesma velocidade que no treinamento, menos um pouco de sobrecarga de memória.

No entanto, como você disse, o aplicativo funciona bem na CPU. Se você chegar ao ponto em que a velocidade de inferência é um gargalo no aplicativo, a atualização para uma GPU aliviará esse gargalo.

mpotma
fonte
Concordo plenamente. Ainda não entendo por que a publicação da CPU está no topo.
precisa
1
A GeForce GTX Titan X oferece desempenho entre 5,3 e 6,7 vezes maior que o CPU Intel Xeon E5 de 16 núcleos - muito menor que a aceleração alcançada durante o treinamento - no blog da própria NVidia: devblogs.nvidia.com/…
seanhalle
4

Você usaria apenas a GPU para treinamento, porque o aprendizado profundo exige um cálculo maciço para chegar a uma solução ideal. No entanto, você não precisa de máquinas GPU para implantação .

Vejamos o novo iPhone X da Apple como exemplo. O novo iPhone X possui um algoritmo avançado de aprendizado de máquina para detecção facial. Os funcionários da Apple devem ter um cluster de máquinas para treinamento e validação. Mas o seu iPhone X não precisa de uma GPU apenas para executar o modelo.

Olá Mundo
fonte
Obrigado por essa explicação. O que não entendo é o motivo pelo qual a Nvidia está promovendo o uso de GPUs como a melhor solução para inferência se a CPU pode fazer isso bem. Além disso, por que o Google também está pressionando o TPU por inferência se ele faz tudo isso com a CPU? Isso tem algo a ver com computação paralela?
Dan
3
@SmallChess o IPhone X não possuía um processador avançado tipo TPU puramente por inferência? extremetech.com/mobile/…
Laurens Meeus 28/09
3
@SmallChess Mas por que não pode ser? Talvez eu simplesmente não entenda completamente. Você ainda não obterá melhorias na velocidade?
Laurens Meeus 28/09
2
Honestamente, a NVidia tem um departamento de marketing fantástico e é do seu interesse promover o uso de GPUs NVidia para inferência. É do interesse deles, não do seu.
Seanhalle
1
No blog da NVidia: "258 vs. 242 imagens / segundo" para a CPU NVIDIA Tegra X1 vs i7 6700K ao executar inferência: devblogs.nvidia.com/…
seanhalle