Outils de profilage IA
Le profilage est une étape indispensable de l'optimisation d'un code. Son but est de cibler les étapes d'exécution les plus coûteuses en temps ou en mémoire, et de visualiser la répartition de la charge de travail entre GPU et CPU.
Profiler une exécution est une opération trÚs gourmande en temps. Cette étude se fait donc en général sur quelques itérations de votre entraßnement. La création des logs se fait a posteriori, à la fin du travail. Il n'est pas possible de visualiser le profilage pendant son exécution. La visualisation des logs peut donc se faire indifféremment sur Jean Zay ou sur votre propre machine locale (parfois cela sera plus facile de le faire sur votre propre machine).
NIVIDIA aussi fournit un profiler spĂ©cifique pour le Deep Learning baptisĂ© DLProf. CouplĂ© avec Nsight, son outil de debug de Kernel GPU, il permet de recueillir un ensemble d'informations extrĂȘmement complet. Cependant la mise en Ćuvre peut s'avĂ©rer un peu complexe et ralentir fortement l'exĂ©cution du code.
Solutions de profilage avec PyTorch et TensorFlowâ
Les 2 librairies proposent des solutions de pofilage. Pour l'instant nous documentons:
Avec PyTorch:
- Profiler PyTorch
- DLProf (NVIDIA)
Avec TensorFlow:
Chacun de ces outils de profilage est capable de tracer l'activité du GPU.
Le tableau comparatif suivant liste les capacités et les possibilités de chacun de ces outils.
| Profiler | Ease-of-use | Slow down code | Overview | Recommendations | Trace view | Multi GPU Dist. View | Memory profile | Kernel View | Operator View | Input View | Tensor Core efficiency view |
|---|---|---|---|---|---|---|---|---|---|---|---|
| PyTorch TensorBoard | â | â | â | â | â | â | â | â | â | . | â |
| PyTorch Natif | â | â | â | . | â | . | â | . | . | . | . |
| DLProf + PyTorch | â | â | â | â | â | â | . | â | â | . | â |
| TensorFlow TensorBoard | â | â | â | â | â | â | â | â | . | â | . |
Légende :
- â : fonctionnalitĂ© prĂ©sente et sentiment positif
- â : fonctionnalitĂ© prĂ©sente et sentiment nĂ©gatif (difficultĂ© ou version actuelle limitĂ©e)
- . : fonctionnalité absente