如何写一个好的问题
当您遇到 Hugging Face 库中似乎不正确的问题时,您应该告诉我们,以便我们能够修复它(对于任何开源库而言,情况也是如此)。如果您不确定错误是出在您自己的代码中还是我们的库中,首先要检查的是 论坛。社区将帮助您解决这个问题,Hugging Face 团队也会密切关注那里的讨论。
当您确定自己遇到错误时,第一步是构建一个最小的可复现示例。
创建最小的可复现示例
隔离产生错误的代码片段非常重要,因为 Hugging Face 团队中的任何人都不是魔术师(尚未),他们无法修复他们无法看到的东西。最小的可复现示例应该,顾名思义,是可复现的。这意味着它不应依赖于您可能拥有的任何外部文件或数据。尝试将您正在使用的数据替换为一些看起来像您真实数据但仍然会产生相同错误的虚拟值。
🚨 🤗 Transformers 存储库中的许多问题未解决,因为用于重现它们的数据无法访问。
一旦您拥有一个自包含的东西,您可以尝试将其缩减为更少的代码行,构建我们所说的最小可复现示例。虽然这需要您多做一些工作,但如果您提供一个简洁、简短的错误复现程序,您几乎可以肯定能得到帮助和修复。
如果您足够自信,请检查出现错误的源代码。您可能会找到问题的解决方案(在这种情况下,您甚至可以建议一个 pull request 来修复它),但更一般地说,这可以帮助维护者在阅读您的报告时更好地理解源代码。
填写问题模板
当您提交问题时,您会注意到有一个模板需要填写。我们将遵循 🤗 Transformers 问题 的模板,但如果您在另一个存储库中报告问题,则需要相同类型的信息。不要留空模板:花时间填写它将最大限度地提高您获得答复并解决问题的可能性。
总的来说,提交问题时,请始终保持礼貌。这是一个开源项目,因此您使用的是免费软件,没有人有义务帮助您。您可以在您的问题中包含您认为合理的批评,但维护者可能会对此感到反感,并且不会急于帮助您。确保您阅读了该项目的 行为准则。
包含您的环境信息
🤗 Transformers 提供了一个实用程序来获取有关您的环境的所有信息。只需在您的终端中键入以下内容
transformers-cli env
您应该得到这样的结果
Copy-and-paste the text below in your GitHub issue and FILL OUT the two last points.
- `transformers` version: 4.12.0.dev0
- Platform: Linux-5.10.61-1-MANJARO-x86_64-with-arch-Manjaro-Linux
- Python version: 3.7.9
- PyTorch version (GPU?): 1.8.1+cu111 (True)
- Tensorflow version (GPU?): 2.5.0 (True)
- Flax version (CPU?/GPU?/TPU?): 0.3.4 (cpu)
- Jax version: 0.2.13
- JaxLib version: 0.1.65
- Using GPU in script?: <fill in>
- Using distributed or parallel set-up in script?: <fill in>
您也可以在 transformers-cli env
命令的开头添加一个 !
,以便从笔记本单元格中执行它,然后将结果复制粘贴到您的问题开头。
标记人员
通过键入 @
后跟他们的 GitHub 句柄来标记人员将向他们发送通知,以便他们会看到您的问题,并可能更快地回复。适度使用此功能,因为您标记的人员可能不希望收到通知,如果这与他们没有直接关系。如果您查看了与您的错误相关的源文件,您应该标记最后对您认为导致问题的那一行进行更改的人员(您可以在 GitHub 上查看该行,选择它,然后单击“查看 git blame”找到此信息)。
否则,模板会提供人员标记建议。一般来说,永远不要标记超过三个人!
包含一个可复现的示例
如果您成功创建了一个自包含的示例来产生错误,现在是时候包含它了!键入一行,其中包含三个反引号,后跟 python
,如下所示
```python
然后将您的最小可复现示例粘贴进去,然后键入一个带有三个反引号的新行。这将确保您的代码格式正确。
如果您没有成功创建可复现的示例,请清楚地解释您是如何遇到问题的。如果您能提供指向您遇到错误的 Google Colab 笔记本的链接,请包含它。您共享的信息越多,维护者就越能回复您。
在所有情况下,您都应该复制并粘贴您遇到的完整错误消息。如果您在 Colab 中工作,请记住,堆栈跟踪中的一些框架可能会自动折叠,因此请确保在复制之前展开它们。与代码示例一样,将该错误消息放在两行三反引号之间,以便正确格式化。
描述预期的行为
用几句话解释您期望得到什么,以便维护人员能够完全理解问题。这部分通常非常明显,因此应该用一句话就能概括,但在某些情况下您可能需要说很多话。
然后呢?
提交问题后,请确保快速检查一切是否正常。如果您犯了错误,可以编辑问题,甚至可以更改标题,如果您发现问题与您最初的想法不同。
如果您没有得到回复,就没有必要 ping 人。如果几天内没有人帮助您,很可能没有人能理解您的问题。不要犹豫,回到可重现的示例。您能把它缩短并更切中要害吗?如果您在一周内没有得到回复,您可以留下一条消息,礼貌地寻求帮助,尤其是如果您已经编辑了问题以包含更多关于问题的信息。