如何撰写有效的 Issue
当您遇到 Hugging Face 库中某些不正确的地方时,您绝对应该告诉我们,以便我们能够修复它(对于任何开源库来说都是如此)。如果您不完全确定错误是否出在您自己的代码或我们的某个库中,首先要检查的地方是 论坛。社区将帮助您弄清楚这一点,Hugging Face 团队也会密切关注那里的讨论。
当您确定自己遇到错误时,第一步是构建一个最小的可复现示例。
创建最小的可复现示例
隔离产生错误的代码片段非常重要,因为 Hugging Face 团队中还没有人会魔法,他们无法修复他们看不到的东西。一个最小的可复现示例,顾名思义,应该是可复现的。这意味着它不应依赖于您可能拥有的任何外部文件或数据。尝试用一些看起来像真实数据但仍然会产生相同错误的虚拟值替换您正在使用的数据。
🚨 🤗 Transformers 存储库中的许多问题都未解决,因为用于复现它们的数据无法访问。
一旦您拥有了自包含的内容,您可以尝试将其减少到更少的代码行,构建我们称之为最小可复现示例的内容。虽然这需要您多做一些工作,但如果您提供一个简洁、简短的错误复现程序,几乎可以保证获得帮助和修复。
如果您感觉足够自信,请检查发生错误的源代码。您可能会找到解决问题的方法(在这种情况下,您甚至可以建议一个拉取请求来修复它),但更普遍地说,这可以帮助维护者在阅读您的报告时更好地理解源代码。
填写 Issue 模板
当您提交 Issue 时,您会注意到有一个模板需要填写。我们将遵循 🤗 Transformers Issue 的模板,但如果您在另一个存储库中报告问题,则需要相同的信息。不要留空模板:花时间填写它将最大限度地提高您获得答复和解决问题的可能性。
总的来说,在提交 Issue 时,请始终保持礼貌。这是一个开源项目,因此您正在使用免费软件,没有人有义务帮助您。您可以在您的 Issue 中包含您认为合理的批评,但维护者很可能会对此感到反感,并且不会急于帮助您。确保您阅读了该项目的 行为准则。
包含您的环境信息
🤗 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
命令的开头添加一个 !
,以便从 Notebook 单元格中执行它,然后复制并粘贴结果到 Issue 的开头。
标记人员
通过键入 @
后跟他们的 GitHub 句柄来标记人员,将向他们发送通知,以便他们看到您的 Issue 并可能更快地回复。适度使用此功能,因为您标记的人员可能不希望在与他们没有直接关联的事情上收到通知。如果您查看了与您的错误相关的源文件,则应标记在您认为导致您问题的行中最后进行更改的人员(您可以通过在 GitHub 上查看该行,选择它,然后单击“查看 git 责任”来找到此信息)。
否则,模板会提供要标记人员的建议。一般来说,永远不要标记超过三个人!
包含可复现示例
如果您已设法创建一个产生错误的自包含示例,那么现在是时候包含它了!键入一行,其中包含三个反引号后跟 python
,如下所示
```python
然后粘贴您的最小可复现示例,并键入一个包含三个反引号的新行。这将确保您的代码格式正确。
如果您未能创建可复现示例,请清楚地说明您是如何遇到该问题的。如果可以,请提供一个指向您遇到错误的 Google Colab 笔记本的链接。您分享的信息越多,维护者就越能够回复您。
在所有情况下,您都应该复制并粘贴您遇到的完整错误消息。如果您在 Colab 中工作,请记住堆栈跟踪中的一些框架可能会自动折叠,因此请确保在复制之前展开它们。与代码示例一样,将错误消息放在两行三反引号之间,以便正确格式化。
描述预期行为
用几句话解释您期望得到什么,以便维护人员能够全面了解问题。这部分通常非常明显,因此应该用一句话概括,但在某些情况下,您可能需要说很多话。
然后呢?
提交问题后,请务必快速检查所有内容是否正常。如果您犯了错误,可以编辑问题,或者如果您意识到问题与您最初的想法不同,甚至可以更改其标题。
如果您没有得到回复,就没有必要ping其他人。如果几天内没有人帮助您,则可能没有人能够理解您的问题。不要犹豫,回到可复现的示例。您能否使其更短、更切中要害?如果一周内没有收到回复,您可以留下消息,礼貌地寻求帮助,尤其是在您编辑了问题以包含更多有关问题的信息时。