- [讲师] 在笔记本中使用 Python 调试器。 - [Instructor] Using the Python debugger in a notebook.
在本视频中，我们将学习如何使用 Python 调试器 In this video, we'll learn how to use the Python debugger
在 Jupyter Notebook 或 Colab 中。 in a Jupyter Notebook or a Colab.
对于这个例子，我们正在运行代码 For this example, we are running code
从令牌分类部分， from the token classification section,
下载 Conll 数据集， downloading the Conll dataset,
稍微看一下数据， looking a little bit at data,
在加载分词器之前 before loading a tokenizer
预处理整个数据集。 to preprocess the whole dataset.
查看下面链接的课程部分 Check out the section of the course linked below
了解更多信息。 for more information.
一旦完成， Once this is done,
我们尝试加载训练数据集的八个特征， we try to load eight features of the training dataset,
然后将它们批在一起， and then batch them together,
使用 tokenizer.pad， using tokenizer.pad,
我们得到以下错误。 and we get the following error.
我们在这里使用 PyTorch， We use PyTorch here,
使用 return_tensors="pt" with return_tensors="pt"
但是你会在 TensorFlow 中遇到同样的错误。 but you will get the same error with TensorFlow.
正如我们在 “如何调试错误？” 中看到的那样。视频， As we have seen in the "How to debug an error?" video,
错误消息在回溯的末尾。 the error message is at the end of the traceback.
在这里，它表明我们应该使用填充， Here, it indicates us we should use padding,
我们实际上正在尝试这样做。 which we are actually trying to do.
所以这根本没有用， So this is not useful at all,
我们需要更深入一点 and we will need to go a little deeper
调试问题。 to debug the problem.
幸运的是，你可以使用 Python 调试器 Fortunately, you can use the Python debugger
任何时候你在 Jupyter Notebook 中遇到错误 at any time you get an error in a Jupyter Notebook
通过在单元格中键入魔法命令 debug。 by typing the magic command, debug, in a cell.
不要忘记开头的百分比。 Don't forget the percent at the beginning.
执行该单元格时， When executing that cell,
你走到回溯的最底部 you go to the very bottom of the traceback
你可以在其中键入命令 where you can type commands
这将帮助你调试脚本。 that will help you debug your script.
你应该学习的前两个命令， The first two commands you should learn,
是 u 和 d，代表向上和向下。 are u and d, for up and down.
输入 u 和 enter 会让你更上一层楼 Typing u and enter will take you up one step
在上一条指令的回溯中。 in the traceback to the previous instruction.
输入 d 然后输入将带你 Typing d and then enter will take you
在追溯中向下迈出一步。 one step down in the traceback.
上升两次，我们到达了错误发生的地步。 Going up twice, we get to the point the error was reached.
为调试器学习的第三个命令是 p，用于打印。 The third command to learn for the debugger is p, for print.
它允许你打印任何你想要的值。 It allows you to print any value you want.
例如，键入 p return_tensors 并输入， For instance, typing p return_tensors and enter,
我们看到传递给错误函数的值 pt。 we see the value pt that we pass to the bad function.
我们还可以查看批处理输出 We can also have a look at the batch outputs
此批处理行编码对象获取。 this batch line coding object gets.
批量输出字典有点难以挖掘， The batch outputs dictionary is a bit hard to dig in to,
因此，让我们深入研究它的较小部分。 so let's dive into smaller pieces of it.
在调试器内部，你不仅可以打印任何变量 Inside the debugger you can not only print any variable
还要评估任何表达式， but also evaluate any expression,
例如，我们可以查看 input_ids 键 for instance, we can have a look at the input_ids keys
这个 batch_outputs 对象。 this batch_outputs object.
或者在这个 batch_outputs 对象的标签键处。 Or at the labels keys of this batch_outputs object.
这些标签肯定很奇怪： Those labels are definitely weird:
它们大小不一， they are of various sizes,
我们实际上可以确认，如果我们愿意的话， which we can actually confirm, if we want,
通过以最小压缩打印尺寸。 by printing the size with the least compression.
这是因为 tokenizer 的 pad 方法 This is because the pad method of the tokenizer
只处理分词器输出： only takes care of the tokenizer outputs:
输入 ID、注意掩码和令牌类型 ID， input IDs, attention mask, and token type IDs,
所以我们必须自己填充标签 so we have to pad the labels ourselves
在尝试用它们创建张量之前。 before trying to create a tensor with them.
一旦你准备好退出 Python 调试器， Once you are ready to exit the Python debugger,
你可以按 q 并输入退出。 you can press q and enter for quit.
修复错误的一种方法 One way to fix the error
就是手动把 labels 补到最长。 is to manually pad the labels to the longest.
另一种方法是使用数据整理器 Another way is to use a data collator
专为令牌分类而设计。 specifically designed for token classification.
你也可以直接使用 Python 调试器 You can also use a Python debugger directly
在终端。 in the terminal.
查看下面的视频链接以了解操作方法。 Check out the video link below to learn how.