1
00:00:05,840 --> 00:00:11,520
Utilisation du débogueur Python dans un terminal. Dans cette vidéo, nous allons apprendre à utiliser le débogueur Python

2
00:00:11,520 --> 00:00:16,800
dans un terminal. Pour cet exemple, nous exécutons le code de la section de classification de tokens,

3
00:00:17,600 --> 00:00:22,320
téléchargeant le jeu de données Conll avant de charger un tokenizer pour le prétraiter.

4
00:00:23,200 --> 00:00:28,720
Consultez la section du cours liée ci-dessous pour plus d'informations. Une fois cela fait, nous

5
00:00:28,720 --> 00:00:34,240
essayons de regrouper certaines fonctionnalités du jeu de données d'entraînement en les rembourrant et en renvoyant un tenseur.

6
00:00:37,200 --> 00:00:40,160
Si nous essayons d'exécuter notre script dans le terminal, nous obtenons l'erreur suivante.

7
00:00:42,800 --> 00:00:47,280
Notez que nous utilisons PyTorch ici, mais vous obtiendrez la même erreur avec TensorFlow.

8
00:00:49,280 --> 00:00:53,680
Comme nous l'avons vu dans la vidéo « Comment déboguer une erreur ? », le message d'erreur est à la fin

9
00:00:53,680 --> 00:00:58,640
et indique que nous devrions utiliser le rembourrage... ce que nous essayons actuellement de faire. Ce n'est donc pas

10
00:00:58,640 --> 00:01:03,360
utile et nous devrons aller un peu plus loin pour déboguer le problème. Heureusement, vous pouvez utiliser

11
00:01:03,360 --> 00:01:10,400
le débogueur Python assez facilement dans un terminal en lançant votre script avec « python -m pdb » puis le nom de script d'entraînement.

12
00:01:10,400 --> 00:01:17,200
Lors de l'exécution de cette commande, vous êtes renvoyé à la première instruction de votre script.

13
00:01:17,200 --> 00:01:28,840
Vous pouvez exécuter uniquement l'instruction suivante en saisissant « n » puis « entrée » ou continuer jusqu'à l'erreur en saisissant directement « c » puis « entrée ».

14
00:01:29,680 --> 00:01:33,120
Une fois là, vous allez tout en bas du « traceback » et vous pouvez saisir des commandes.

15
00:01:34,000 --> 00:01:40,160
Les deux premières commandes que vous devez apprendre sont « u » et « d » (pour monter et descendre), qui vous permettent de monter dans

16
00:01:40,160 --> 00:01:48,320
le « Traceback » ou vers le bas. En remontant deux fois, nous arrivons au point où l'erreur a été atteinte. La troisième commande

17
00:01:48,320 --> 00:01:54,000
à apprendre est « p » , pour « print ». Elle vous permet d'imprimer la valeur de votre choix. Par exemple ici, nous pouvons voir

18
00:01:54,000 --> 00:01:59,120
la valeur de `return_tensors` ou `batch_outputs` pour essayer de comprendre ce qui a déclenché l'erreur.

19
00:02:00,000 --> 00:02:04,720
Le dictionnaire de `batch_outputs` est un peu difficile à voir, alors plongeons-y dans de plus petits morceaux.

20
00:02:05,360 --> 00:02:10,560
Dans le débogueur, vous pouvez non seulement imprimer n'importe quelle variable, mais également évaluer n'importe quelle expression,

21
00:02:10,560 --> 00:02:23,600
afin que nous puissions examiner indépendamment les entrées ou les étiquettes. Ces étiquettes sont vraiment bizarres :

22
00:02:24,160 --> 00:02:27,920
elles sont de différentes tailles, ce que nous pouvons en fait confirmer en imprimant les tailles avec une liste compressée.

23
00:02:35,760 --> 00:02:40,160
Pas étonnant que le tokenizer n'ait pas été en mesure de créer un tenseur avec eux ! C'est parce que la

24
00:02:40,160 --> 00:02:45,840
méthode `pad` ne s'occupe que des sorties du tokenizer : `input_ids`, `attention_mask`, `token_type_ids`.

25
00:02:46,400 --> 00:02:50,080
Nous devons donc rembourrer nous-mêmes les étiquettes avant d'essayer de créer un tenseur avec elles.

26
00:02:51,120 --> 00:02:56,880
Une fois que vous êtes prêt à quitter le débogueur Python, vous pouvez appuyer sur « q » pour quitter puis « entrée ». Une autre

27
00:02:56,880 --> 00:03:11,000
manière d'accéder au débogueur Python et de mettre un point de cassage dans notre script. Nous pouvons faire cela en utilisant la méthode `pdb.set_trace` du moment que nous importons le module pdb au début de notre script.

28
00:03:11,000 --> 00:03:23,280
On sauvegarde et relance notre script avec `python`. Cela interrompra l'exécution au point d'erreur.

29
00:03:23,280 --> 00:03:32,080
Nous pourrons inspecter toutes les variables avant que la prochaine instruction ne soit exécutée, par exemple, ici `features`. Taper « n » puis « entrée » exécute

30
00:03:32,080 --> 00:03:37,280
l'instruction suivante, qui nous ramène à l'intérieur du « traceback ». Une façon de corriger l'erreur consiste

31
00:03:37,280 --> 00:03:49,760
à rembourrer manuellement toutes les étiquettes jusqu'à la plus longue. Une autre façon est d'utiliser le assembleur de données pour la classification de tokens. 

32
00:03:49,760 --> 00:03:53,760
Si vous voulez apprendre comment utiliser le débogueur Python dans un notebook, regardez le lien ci-dessous.