J'exécute un réseau neuronal d'apprentissage en profondeur qui a été formé par un GPU. Je veux maintenant déployer cela sur plusieurs hôtes pour l'inférence. La question est de savoir quelles sont les conditions pour décider si je dois utiliser des GPU ou des CPU pour l'inférence?
Ajout de plus de détails à partir des commentaires ci-dessous.
Je suis nouveau dans ce domaine, donc les conseils sont appréciés.
Mémoire : le GPU est K80
Cadre : Cuda et cuDNN
Taille des données par charge de travail : 20G
Nœuds de calcul à consommer : un par tâche, mais souhaiterait envisager une option d'échelle
Coût : je peux me permettre une option GPU si les raisons ont du sens
Déploiement : exécuté sur ses propres serveurs bare metal hébergés, pas dans le cloud.
En ce moment, je fonctionne sur CPU simplement parce que l'application fonctionne correctement. Mais en dehors de cette raison, je ne sais pas pourquoi on envisagerait même le GPU.
Réponses:
@Dan @SmallChess, je ne suis pas complètement d'accord. Il est vrai que pour la formation, une grande partie de la parallalisation peut être exploitée par les GPU, ce qui entraîne une formation beaucoup plus rapide. Pour l'inférence, cette parallalisation peut être bien moindre, mais les CNN en tireront toujours un avantage, ce qui se traduira par une inférence plus rapide. Il ne vous reste plus qu'à vous demander: une inférence plus rapide est-elle importante? Est-ce que je veux ces dépendances supplémentaires (un bon GPU, les bons fichiers installés, etc.)?
Si la vitesse n'est pas un problème, optez pour le CPU. Cependant, notez que les GPU peuvent accélérer l'ordre de grandeur de mon expérience.
la source
L'exécution de l'inférence sur un GPU au lieu du CPU vous donnera presque la même accélération que lors de l'entraînement, moins un peu de surcharge de mémoire.
Cependant, comme vous l'avez dit, l'application fonctionne correctement sur le CPU. Si vous arrivez au point où la vitesse d'inférence est un goulot d'étranglement dans l'application, la mise à niveau vers un GPU atténuera ce goulot d'étranglement.
la source
Vous utiliseriez uniquement le GPU pour la formation, car l'apprentissage en profondeur nécessite un calcul massif pour arriver à une solution optimale. Cependant, vous n'avez pas besoin de machines GPU pour le déploiement .
Prenons l'exemple du nouvel iPhone X d'Apple. Le nouvel iPhone X dispose d'un algorithme avancé d'apprentissage automatique pour la détection faciale. Les employés Apple doivent disposer d'un cluster de machines pour la formation et la validation. Mais votre iPhone X n'a pas besoin d'un GPU pour simplement exécuter le modèle.
la source