Profiler votre modèle sur des VM Cloud TPU
Le profilage vous permet d'optimiser les performances d'entraînement de votre modèle sur des Cloud TPU. Vous utilisez TensorBoard et le plug-in TensorBoard Cloud TPU pour profiler votre modèle.
Pour en savoir plus sur l'utilisation de TensorBoard avec l'un des frameworks compatibles, consultez les documents suivants:
Conditions préalables au profilage d'un script d'entraînement
Avant d'utiliser les outils de profilage TPU, vous devez:
Démarrer une session d'entraînement de modèle
- Configurez un TPU v4-8 pour entraîner un modèle. La procédure de profilage décrite dans ce document utilise un modèle ResNet, mais vous pouvez utiliser un autre modèle à condition qu'il soit entraîné sur un TPU v4.
Dans votre VM TPU, ajoutez une ligne pour démarrer le serveur de profileur au script d'entraînement.
Pour l'entraînement ResNET, le script d'entraînement se trouve à l'emplacement :
/usr/share/tpu/tensorflow/resnet50_keras/resnet50.py
.Insérez les lignes en surbrillance dans resnet50.py. En haut du fichier, ajoutez l'importation suivante:
import tensorflow.compat.v2 as tf2
Juste avant que les scripts ne lancent la boucle d'entraînement, ajoutez la ligne en surbrillance:
if name == 'main': tf.logging.set_verbosity(tf.logging.INFO) tf2.profiler.experimental.server.start(6000) app.run(main)
Le serveur de profilage TensorFlow démarre sur votre VM TPU lorsque vous exécutez le script.
Démarrez l'entraînement du modèle.
Exécutez votre script d'entraînement et attendez que le résultat indique que votre modèle est en cours d'entraînement. La sortie dépend de votre code et de votre modèle. Recherchez un résultat semblable à
Epoch 1/100
. Vous pouvez également accéder à la page Cloud TPU dans la console Google Cloud, sélectionner votre TPU et afficher le graphique d'utilisation du processeur. Bien que le graphique d'utilisation du processeur n'affiche pas l'utilisation du TPU, il permet d'indiquer que le TPU entraîne bien votre modèle.
Démarrer le profilage de l'entraînement du modèle
Lorsque le modèle est en cours d'entraînement, ouvrez une fenêtre de terminal ou Cloud Shell distincte. Suivez les étapes ci-dessous pour commencer à profiler l'entraînement du modèle.
Dans la nouvelle fenêtre ou shell, connectez-vous à votre VM TPU avec le transfert de port.
gcloud compute tpus tpu-vm ssh your-vm --zone=us-central2-b --ssh-flag="-4 -L 9001:localhost:9001"
Le transfert de port permet à votre navigateur local de communiquer avec le serveur TensorBoard exécuté sur votre VM TPU.
Installez la configuration requise pour TensorFlow.
TensorBoard est installé par défaut sur votre VM TPU. Vous pouvez également installer TensorFlow manuellement. Dans tous les cas, des dépendances supplémentaires peuvent être requises. Installez ces dépendances sur votre VM TPU en exécutant la commande suivante:
pip3 install -r /usr/share/tpu/models/official/requirements.txt
Installez le plug-in TensorBoard Cloud TPU.
Depuis la VM TPU, exécutez les commandes suivantes:
pip3 install --upgrade "cloud-tpu-profiler>=2.3.0" pip3 install tensorflow pip3 install tensorboard_plugin_profile
Démarrer le serveur TensorBoard
Exécutez TensorBoard et créez un répertoire de journaux (
logdir
) sur la VM TPU dans lequel TensorBoard peut écrire des données de profilage. Spécifiez le répertoire de journaux à l'aide de l'indicateur--logdir
. Exemple :mkdir log-directory TPU_LOAD_LIBRARY=0 tensorboard --logdir log-directory --port 9001
TensorBoard démarre un serveur Web et affiche son URL:
Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all TensorBoard 2.3.0 at http://localhost:9001 (Press CTRL+C to quit)
Ouvrez un navigateur Web et accédez à l'URL affichée dans le résultat de TensorBoard. Sélectionnez Profile (Profil) dans le menu déroulant en haut à droite de la page TensorBoard. La liste des outils de profilage disponibles s'affiche dans le menu déroulant Tools (Outils) de la barre latérale gauche.
Capturer un profil sur des VM TPU
- Sélectionnez le bouton CAPTURER LE PROFIL.
- Cochez la case d'option Adresse IP.
- Saisissez HOSTNAME:6000 dans le champ
Profile Service URL
. - Sélectionnez le bouton CAPTURER.
Afficher les données de profil avec TensorBoard
Une fois que vous avez capturé un profil, TensorBoard affiche la page overview_page. La liste des outils de profilage que vous pouvez utiliser s'affiche dans le volet de gauche.
Profil
L'onglet Profil s'affiche une fois que vous avez capturé des données de modèle. Vous devrez peut-être cliquer sur le bouton d'actualisation de la page TensorBoard. Une fois les données disponibles, cliquez sur l'onglet Profil pour afficher une sélection d'outils d'aide à l'analyse des performances. Vous pouvez utiliser l'un des outils suivants pour profiler votre modèle.
- Page de présentation
- Analyseur du pipeline d'entrée
- Profil d'opération XLA
- Lecteur de traces (navigateur Chrome uniquement)
- Lecteur de mémoire
Page de présentation du profil
La page de présentation (overview_page), disponible sur la page Profil, offre une vue d'ensemble des performances de votre modèle lors d'une exécution de capture. Elle propose une vue d'ensemble combinée de tous vos TPU, ainsi qu'une analyse globale du pipeline d'entrée. La liste déroulante Hôte comporte une option permettant de sélectionner des TPU individuels.
La page affiche les données dans les panneaux suivants :
Performance summary (Résumé des performances)
- Utilisation de FLOPS : pourcentage d'utilisation des unités matricielles du TPU
Top 10 des opérations TensorFlow sur TPU : affiche les opérations TensorFlow ayant pris le plus de temps :
Chaque ligne affiche le temps propre d'une opération (en pourcentage du temps nécessaire à toutes les opérations), le temps cumulé, la catégorie, le nom et le taux de FLOPS atteint.
Run Environment (Environnement d'exécution)
- Nombre d'hôtes utilisés
- Type de TPU utilisé
- Nombre de cœurs de TPU
Analyseur du pipeline d'entrée
L'analyseur du pipeline d'entrée fournit des informations sur les résultats de performances. Cet outil vous indique immédiatement si votre programme est subordonné aux entrées. Il peut vous guider dans l'analyse côté appareil et côté hôte pour déboguer toutes les étapes du pipeline qui créent des goulots d'étranglement.
Consultez les conseils en matière de performances du pipeline d'entrée pour obtenir des informations plus détaillées sur leur optimisation.
Pipeline d'entrée
Lorsqu'un programme TensorFlow lit les données d'un fichier, le processus de lecture est divisé en plusieurs étapes de traitement des données connectées en série. La sortie d'une étape est l'entrée de la suivante. Ce système de lecture se nomme pipeline d'entrée.
Pour lire des enregistrements à partir de fichiers, un pipeline type comprend les étapes suivantes :
- Lecture des fichiers
- Prétraitement des fichiers (facultatif)
- Transfert des fichiers de la machine hôte vers l'appareil
Un pipeline d'entrée inefficace peut considérablement ralentir votre application. Une application est considérée comme subordonnée aux entrées lorsqu'elle passe une part importante de son temps dans le pipeline d'entrée. Utilisez l'analyseur du pipeline d'entrée pour comprendre d'où vient cette inefficacité.
Tableau de bord du pipeline d'entrée
Pour ouvrir l'analyseur du pipeline d'entrée, sélectionnez Profil, puis input_pipeline_analyzer dans le menu déroulant Outils.
Le tableau de bord affiche les détails de l'analyse côté appareil et côté hôte.
Analyse côté appareil : affiche des informations sur la durée des étapes sur l'appareil.
- Statistiques sur la durée des étapes sur l'appareil
- % de temps d'étape de l'appareil passé à attendre des données d'entrée
Analyse côté hôte
Cette section présente les détails de l'analyse côté hôte divisés en plusieurs catégories:
- Mise en file d'attente des données à transférer sur l'appareil. Temps passé à placer des données dans une file d'attente d'alimentation avant de les transférer sur l'appareil.
- Prétraitement des données : temps consacré aux opérations de prétraitement, telles que la décompression d'images.
- Reading data from files in advance (Lecture à l'avance des données de fichiers) : temps consacré à la lecture des fichiers, y compris la mise en cache, la prérécupération et l'entrelacement.
- Reading data from files on demand (Lecture des données de fichiers à la demande) : temps consacré à la lecture des données de fichiers sans mise en cache, prérécupération et entrelacement.
- Autres opérations de lecture ou de traitement de données : temps consacré à d'autres opérations d'entrée n'utilisant pas
tf.data
.
Pour afficher les statistiques des opérations d'entrée individuelles et leurs catégories réparties par temps d'exécution, développez la section Show Input Op statistics
.
Une table de données source de ce type s'affiche :
Chaque entrée de la table contient les informations suivantes :
- Input Op (Opération d'entrée) : affiche le nom de l'opération d'entrée TensorFlow.
- Nombre : indique le nombre total d'instances de l'opération exécutée au cours de la période de profilage.
- Temps total (en ms) : affiche le cumul du temps passé sur chacune des instances d'opération.
- Temps total en % : affiche le temps total passé sur une opération sous la forme d'une fraction du temps total consacré au traitement des entrées.
- Temps propre total (en ms) : affiche le temps cumulé sur toutes les instances de la fonction. Le temps propre mesure le temps passé dans le corps de la fonction, à l'exclusion du temps passé dans les fonctions qu'elle appelle.
Par exemple, le
Iterator::PaddedBatch::Filter::ForeverRepeat::Map
est appelé parIterator::PaddedBatch::Filter
. Par conséquent, son temps libre total est exclu du temps libre total de ce dernier. - Total self-time % (Temps propre total en %) : indique le temps propre total sous la forme d'une fraction du temps total consacré au traitement des entrées.
- Catégorie : indique la catégorie de traitement de l'opération d'entrée.
Profil d'opération
Le profil d'opération est un outil Cloud TPU qui affiche les statistiques de performances des opérations XLA exécutées au cours d'une période de profilage. Le profil d'opération affiche les informations suivantes:
- Le degré d'utilisation de la ressource Cloud TPU par l'application, sous la forme d'un pourcentage du temps consacré aux opérations par catégorie et de l'utilisation des FLOPS TPU.
- Les opérations les plus longues (qui constituent des cibles potentielles d'optimisation).
- Des détails sur les opérations individuelles, y compris la forme, le remplissage et les expressions utilisant ces opérations.
Vous pouvez utiliser le profil d'opération pour trouver des cibles d'optimisation. Par exemple, vous pouvez utiliser le profil d'opération pour identifier les opérations XLA dont l'exécution prend le plus de temps et le nombre de FLOPS TPU qu'elles consomment.
Utiliser un profil d'opération
L'outil Profil d'opération contient des statistiques sur les performances des opérations XLA. Pour afficher les données de profil d'opération dans TensorBoard, cliquez sur l'onglet Profile (Profil) en haut de l'écran, puis sélectionnez op_profile dans le menu déroulant Tools (Outils). Voici ce qui s'affiche :
- La section "Vue d'ensemble" indique l'utilisation de Cloud TPU et fournit des suggestions d'optimisation.
- Panneau de commande : contient des commandes qui vous permettent de définir le nombre d'opérations affichées dans le tableau, les opérations à afficher et leur mode de tri.
- Table d'opérations : liste les principales catégories d'opérations TensorFlow associées aux opérations XLA. Ces opérations sont triées en fonction du pourcentage d'utilisation de Cloud TPU.
- Fiche d'informations sur l'opération : affiche les détails des opérations qui s'affichent lorsque vous pointez sur une opération dans le tableau. Ces détails incluent l'utilisation des FLOPS, l'expression dans laquelle l'opération est utilisée et la disposition de l'opération (ajustement).
Table d'opérations XLA
La table des opérations répertorie les catégories d'opération XLA dans l'ordre, par pourcentage décroissant d'utilisation de Cloud TPU. Le tableau indique le pourcentage de temps passé, le nom de la catégorie d'opération, le nom d'opération TensorFlow associé et le pourcentage d'utilisation de FLOPS correspondant à la catégorie. Pour afficher (ou masquer) les dix opérations XLA les plus longues d'une catégorie, cliquez sur le triangle en regard du nom de la catégorie dans le tableau.
- Temps : affiche le pourcentage total du temps passé par toutes les opérations de cette catégorie. Vous pouvez cliquer pour développer l'entrée et voir la répartition du temps passé par opération.
- 10 opérations les plus longues : bouton d'activation en regard du nom d'une catégorie qui affiche ou masque les 10 opérations les plus longues de cette catégorie. Si une entrée d'opération de fusion est affichée dans la liste des opérations, vous pouvez la développer pour afficher les opérations de non-fusion, élément par élément, qu'elle contient.
- Opération TensorFlow : affiche le nom de l'opération TensorFlow associée à l'opération XLA.
- FLOPS : affiche l'utilisation des FLOPS, qui correspond au nombre mesuré de FLOPS exprimé en pourcentage du pic de FLOPS Cloud TPU. Plus le pourcentage d'utilisation de FLOPS est élevé, plus les opérations sont rapides. Les cellules de cette colonne incluent un code couleur : vert en cas d'utilisation élevée des FLOPS (bonne) et rouge en cas de faible utilisation des FLOPS (mauvaise).
Cartes de détails de l'opération
Lorsque vous sélectionnez une entrée de la table, une carte s'affiche avec des détails sur l'opération XLA ou la catégorie d'opération. Une carte type se présente comme suit :
- Nom et Catégorie : affiche le nom et la catégorie de l'opération XLA en surbrillance.
- Utilisation des FLOPS : affiche l'utilisation des FLOPS sous la forme d'un pourcentage du nombre total de FLOPS possible.
- Expression : affiche l'expression XLA contenant l'opération.
- Memory Utilization (Utilisation de la mémoire) : affiche le pourcentage d'utilisation maximale de la mémoire par votre programme.
- Disposition (opérations de convolution uniquement) : affiche la forme et la mise en page d'un tenseur, y compris une description de tout remplissage effectué par le compilateur XLA.
Interpréter les résultats
Dans le cas des opérations de convolution, une faible utilisation des FLOPS TPU peut être due à l'une des raisons suivantes, ou pour les deux:
- Remplissage (les unités matricielles sont partiellement utilisées)
- Opération de convolution subordonnée à la mémoire
Cette section donne une interprétation de certaines métriques de performances d'un modèle présentant une faible utilisation des FLOPS. Dans cet exemple, la fusion de la sortie et la convolution ont dominé le temps d'exécution. De nombreuses opérations vectorielles ou scalaires ont une utilisation des FLOPS faible.
Une stratégie d'optimisation pour ce type de profil consiste à transformer les opérations vectorielles ou scalaires en opérations de convolution.
Dans l'exemple suivant, %convolution.399 affiche une utilisation des FLOPS et de la mémoire inférieure à celle de %convolution.340 dans l'exemple précédent.
Dans cet exemple, la taille de lot est complétée de façon à atteindre 128, et la taille de caractéristique est complétée de façon à atteindre 8. Dans ce cas, seuls 5% des unités de la matrice sont utilisées efficacement. L'utilisation est calculée comme suit : (((délai_batch * nb._fonctionnalités) / taille_compl.) / nb._cœurs). Comparez les FLOPS de cet exemple à l'opération %convolution.340 de l'exemple précédent, qui n'utilise pas de marge intérieure.
Lecteur de traces
Le lecteur de traces est un outil d'analyse des performances Cloud TPU disponible sur la page Profil. Comme il utilise le lecteur de profilage d'événements de trace Chrome, il ne fonctionne que dans le navigateur Chrome.
Le lecteur de traces affiche une chronologie indiquant :
- la durée des opérations exécutées par le modèle TensorFlow ;
- la partie du système (TPU ou machine hôte) qui a exécuté une opération. En règle générale, la machine hôte exécute des opérations d'alimentation, qui prétraitent les données d'entraînement et les transfèrent au TPU, tandis que ce dernier se charge de l'entraînement du modèle proprement dit.
Le lecteur de traces vous permet d'identifier les problèmes de performances dans le modèle, puis de prendre des mesures pour les résoudre. Par exemple, de manière générale, vous pouvez déterminer si les opérations d'alimentation ou d'entraînement du modèle prennent la majorité du temps. En affichant le détail, vous pouvez identifier les opérations TensorFlow dont l'exécution est la plus longue.
Le lecteur de traces est limité à un million d'événements par Cloud TPU. Si vous devez évaluer davantage d'événements, utilisez le lecteur de traces en flux continu.
Interface du lecteur de traces
Pour ouvrir le lecteur de traces, accédez à TensorBoard, cliquez sur l'onglet Profile (Profil) en haut de l'écran, puis choisissez trace_viewer dans le menu déroulant Tools (Outils). Le lecteur affiche l'exécution la plus récente :
Les principaux éléments de cet écran sont les suivants (ils sont indiqués par des numéros dans la capture d'écran précédente):
- Menu déroulant "Exécutions" : contient toutes les exécutions pour lesquelles vous avez capturé des informations de trace. Par défaut, elle affiche l'exécution la plus récente, mais vous pouvez en sélectionner une autre dans le menu déroulant.
- Liste déroulante "Outils" : permet de sélectionner différents outils de profilage.
- Liste déroulante "Hôte" : permet de sélectionner un hôte contenant un ensemble Cloud TPU.
- Volet "Chronologie" : affiche les opérations que Cloud TPU et la machine hôte ont exécutées au fil du temps.
- Volet "Détails" : affiche des informations supplémentaires sur les opérations sélectionnées dans le volet "Chronologie".
Examinez de plus près le volet de chronologie :
Ce volet contient les éléments suivants :
- Barre supérieure : contient divers contrôles auxiliaires.
- Axe temporel : affiche le temps par rapport au début de la trace.
- Libellés de section et de piste Chaque section contient plusieurs pistes. Sur sa gauche figure également un triangle sur lequel vous pouvez cliquer pour la développer et la réduire. Il y a une section pour chaque élément de traitement du système.
- Sélecteur d'outils : contient divers outils permettant d'interagir avec le lecteur de traces.
- Événements : indique le temps pendant lequel une opération a été exécutée ou la durée de méta-événements, tels que les étapes d'entraînement.
- Barre d'onglets verticale Cette barre n'a pas d'utilité pour Cloud TPU. Cette barre fait partie de l'outil de lecture des traces à usage général fourni par Google Chrome, qui est utilisé pour diverses tâches d'analyse des performances.
Sections et pistes
Le lecteur de traces comporte les sections suivantes :
- Une section pour chaque nœud TPU, étiquetée avec le numéro de la puce TPU et du cœur de TPU que celle-ci contient (par exemple, "Chip 2: TPU Core 1" [Puce 2 : Cœur de TPU 1]). Chaque section de nœud TPU contient les pistes suivantes :
- Étape : indique la durée des étapes d'entraînement exécutées sur le TPU.
- Opérations TensorFlow : affiche les opérations TensorFlow exécutées sur le TPU.
- Opérations XLA : affiche les opérations XLA exécutées sur le TPU. (Chaque opération est traduite en une ou plusieurs opérations XLA. Le compilateur XLA traduit les opérations XLA en code qui s'exécute sur le TPU.)
- Une section pour les threads s'exécutant sur le processeur hôte,avec l'étiquette "Threads hôtes". La section contient une piste pour chaque thread du processeur. Remarque : Vous pouvez ignorer les informations affichées à côté des étiquettes de section.
Sélecteur d'outils de chronologie
Vous pouvez interagir avec la vue de chronologie à l'aide du sélecteur d'outils de chronologie inclus dans TensorBoard. Cliquez sur un outil de chronologie pour l'activer et le mettre en surbrillance. Pour déplacer le sélecteur d'outils de chronologie, cliquez dans la zone en pointillés en haut, puis faites-le glisser à l'emplacement souhaité.
Utilisez les outils de chronologie comme suit :
Outil de sélection Cliquez sur un événement pour le sélectionner ou faites-le glisser pour sélectionner plusieurs événements. Des informations supplémentaires sur les événements sélectionnés (nom, heure de début et durée) s'affichent dans le volet de détails. |
|
Outil de panorama Faites glisser pour effectuer un panoramique de la chronologie horizontalement et verticalement. |
|
Outil de zoom Faites glisser vers le haut pour effectuer un zoom avant ou vers le bas pour effectuer un zoom arrière le long de l'axe horizontal (temps). La position horizontale du curseur de la souris détermine le centre autour duquel le zoom est effectué. Remarque:Si l'outil de zoom reste actif après avoir relâché le bouton de la souris, cliquez sur la vue chronologique pour le désactiver. |
|
Outil de synchronisation Faites glisser horizontalement pour marquer un intervalle de temps. Sa longueur apparaît sur l'axe de temps. Pour ajuster l'intervalle, faites glisser ses extrémités. Pour l'effacer, cliquez n'importe où dans la vue de chronologie. Si vous sélectionnez un autre outil, l'intervalle reste marqué. |
Lecteur de mémoire
Le lecteur de mémoire vous permet de visualiser le pic d'utilisation de la mémoire et les tendances d'utilisation de la mémoire pour votre programme.
L'interface utilisateur du lecteur de mémoire se présente comme suit:
- Liste déroulante Host (Hôte) : permet de sélectionner un hôte TPU et des modules HLO (High Level Optimizer) XLA à visualiser.
- Vue d'ensemble de la mémoire : affiche le pic d'allocation de mémoire et la taille sans remplissage.
- Graphique de l'espace de travail : affiche le pic d'utilisation de la mémoire et un tracé des tendances d'utilisation de la mémoire pour votre programme. Pointez sur un tampon dans l'un des graphiques de tampons pour afficher des informations supplémentaires dans la fiche d'allocation de tampons.
- Graphiques de tampons : deux graphiques affichant l'allocation des tampons au moment du pic d'utilisation de la mémoire. Pointez sur un tampon dans l'un des graphiques de tampons pour afficher des informations supplémentaires dans la fiche de détails du tampon.
- Carte de détails d'allocation de tampon : affiche les détails d'allocation d'un tampon.
Panneau d'informations générales sur la mémoire
Le panneau d'informations générales sur la mémoire (en haut) affiche le nom du module et le pic d'allocation de mémoire défini lorsque la taille totale d'allocation du tampon atteint son maximum. La taille maximale d'allocation sans remplissage est également indiquée à titre de comparaison.
Graphique de l'espace de travail
Ce graphique affiche le pic d'utilisation de la mémoire et un tracé des tendances d'utilisation de la mémoire pour votre programme. La ligne verticale indique le pic d'utilisation de la mémoire correspondant au programme. Ce graphique indique si votre programme peut tenir dans l'espace mémoire global disponible.
Chaque point du graphique représente un "point de programme" dans le programme HLO XLA. La ligne montre comment l'utilisation de la mémoire de votre programme évolue au fil du temps.
Interaction avec les éléments des graphiques de tampons
Lorsque vous pointez sur un tampon dans un graphique de tampons, une ligne horizontale indiquant la durée de vie du tampon s'affiche dans le graphique de l'espace de travail.
L'épaisseur de la ligne horizontale indique la magnitude relative de la taille de la mémoire tampon par rapport au pic d'allocation de mémoire. La longueur de la ligne indique la durée de vie du tampon.
Graphiques de tampons
Deux graphiques présentent la répartition de l'utilisation de la mémoire au moment du pic d'utilisation.
Par ordre de programme : affiche les tampons de gauche à droite, dans l'ordre dans lequel ils ont été actifs pendant l'exécution du programme.
Par taille : affiche les tampons actifs pendant l'exécution du programme par ordre décroissant de taille.
Carte de détails d'allocation de tampon
Lorsque vous pointez sur un tampon figurant dans l'un des graphiques de tampons, une fiche de détails d'allocation apparaît. Une carte de détails type se présente comme suit :
- Nom : nom de l'opération XLA.
- Catégorie : catégorie de l'opération.
- Taille : taille de l'allocation de tampon (remplissage compris).
- Taille sans remplissage : taille de l'allocation de tampon sans remplissage.
- Expansion : magnitude relative de la taille de la mémoire tampon avec remplissage par rapport à la taille sans remplissage.
- Mémoire supplémentaire : indique la quantité de mémoire supplémentaire utilisée pour le remplissage.
- Forme : décrit le rang, la taille et le type de données du tableau à n dimensions.
- Nom de l'opération TensorFlow : affiche le nom de l'opération TensorFlow associée à l'allocation de tampon.
- Allocation type (Type d'allocation) : indique la catégorie d'allocation de tampon : "Parameter" (Paramètre), "Output" (Sortie), "Thread local" (Thread local) et "Temporary" (Temporaire) (par exemple, allocation de tampon dans une fusion).
Mémoire insuffisante
Si vous exécutez un modèle et que vous obtenez une erreur de type "mémoire insuffisante", suivez les instructions de ce document pour capturer un profil. Attendez que votre script effectue l'entraînement de votre modèle avant de démarrer le profileur. Le résultat du profilage peut vous aider à comprendre la cause de l'erreur.