Aide-mémoire TensorRT

Liste de contrôle de triche TensorRT

question plan
Comment vérifier l'exactitude des résultats de calcul sur TensorRT, découvrir les couches avec une précision insuffisante et optimiser le graphique de calcul Utiliser la polygraphie
Comment analyser le temps d'inférence de différentes couches et trouver la couche qui prend le plus de temps Obtenez la chronologie de la phase en cours via les systèmes nsight et visualisez-la
Le temps de construction du moteur est trop long, comment gagner du temps lors de plusieurs builds ? Utiliser le cache de synchronisation
Les performances du mode Dynamic Shape se dégradent lorsque la plage min-opt-max est grande 1. Créez plusieurs profils d'optimisation pendant la construction. La plage de chaque profil doit être aussi petite que possible pour faciliter l'optimisation TensorRT.
2. Sélectionnez le profil correspondant en fonction de la forme des données lors de l'inférence. L'inconvénient est que cela augmentera l'utilisation de la mémoire.
Comment chevaucher le temps de calcul et de copie des données pour augmenter l'utilisation du GPU MultiStream, utilisant le flux CUDA et l'événement CUDA pour les appels asynchrones tout en utilisant la mémoire épinglée
Comment rendre un moteur disponible pour plusieurs threads À l'aide de plusieurs contextes, plusieurs contextes peuvent effectuer indépendamment des calculs d'inférence basés sur le même moteur.
Comment optimiser les appels du noyau et réduire l'apparition de Launch Bound,
c'est-à-dire que le temps nécessaire au CPU pour lancer un appel de fonction et au GPU pour l'exécuter est trop long. La plupart du temps est perdu sur des étapes telles que la préparation. et copie de données.
1. Utilisez Cuda Graph
2. Effectuez la plupart des préparatifs de lancement à l'avance
3. Optimisation du flux de travail CUDA
Certains algorithmes Layer conduisent à des erreurs importantes, comment bloquer cette sélection ? Complété via le sélecteur d'algorithme
1. Utilisez d'abord des outils tels que le plotgraphe pour constater que les résultats tactiques de certaines couches ne sont pas idéaux
2. Masquez ces couches via le sélecteur d'algorithme
3. Reconstruisez le moteur
Vous souhaitez mettre à jour les poids du modèle, mais vous ne souhaitez pas reconstruire le moteur ? Utiliser Refit
L'utilisation de la mémoire vidéo pendant la construction/l'exécution est trop importante, comment la réduire ? Dans BuilderConfig, les alternatives d'opérateur pour les trois bibliothèques cuBLAS, cuBLASLt et cuDNN sont activées par défaut. Lorsque TensorRT optimise le noyau, il sélectionne l'implémentation offrant les meilleures performances et la met dans le moteur.
Vous pouvez bloquer manuellement une ou plusieurs de ces bibliothèques, interdisant ainsi la sélection d'algorithmes de ces bibliothèques pour l'implémentation. Cela peut économiser de la mémoire et de la mémoire vidéo, et réduire le temps de construction du moteur. L'inconvénient est que cela peut entraîner une dégradation des performances du moteur ou une build échec
. Les versions ultérieures de TensorRT se déconnecteront complètement des bibliothèques externes.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_41817841/article/details/127859247
conseillé
Classement