Datasets documentation

故障排除

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v4.8.4).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

故障排除

本指南旨在为您提供解决一些常见问题所需的工具和知识。如果本指南中列出的建议未能涵盖您的具体情况,请参阅寻求帮助部分,了解如何针对您的特定问题获取帮助。

使用 push_to_hub 上传数据集时遇到的问题

身份验证问题

如果您在通过 Dataset.push_to_hub() 和 Hugging Face 访问令牌在 🤗 Hub 上共享数据集时遇到身份验证问题:

  • 请确保您用于身份验证的 Hugging Face 令牌具有 write 权限。
  • 在 OSX 上,使用 hf auth login 之前,建议先清理钥匙串访问中所有 huggingface.co 的密码,并重新配置 git config --global credential.helper osxkeychain。

或者,您可以使用 SSH 密钥进行身份验证 - 更多信息请参阅 🤗 Hub 文档。

上传大型数据集时连接丢失

将大型数据集上传到 Hub 时,如果数据集分片数量过多,可能会在短时间内为 Hub 创建过多的提交,从而导致连接错误。 连接错误也可能由 Hub 内部使用的 AWS S3 存储桶返回的 HTTP 500 错误引起。 在这两种情况下,都可以重新运行 Dataset.push_to_hub() 以继续上传数据集。Hub 会检查已上传分片的 SHA,以避免重复上传。 我们正在努力使上传过程对瞬时错误更具鲁棒性,因此始终建议更新到最新的库版本。

请求过多

通过 push_to_hub() 上传大型数据集时可能会导致错误:

HfHubHTTPError: 429 Client Error: Too Many Requests for url: ...
You have exceeded our hourly quotas for action: commit. We invite you to retry later.

如果遇到此问题,需要将 datasets 库升级到最新版本(或至少 2.15.0)。

从自定义数据创建数据集时遇到的问题

从文件夹加载图像和音频

从文件夹创建数据集时,最常见的问题之一是文件结构不符合预期格式,或者元数据文件存在问题。

有关所需文件夹结构的详细信息,请参阅相应的文档页面:

Pickling 问题

使用 Dataset.from_generator 时遇到的 Pickling 问题

When creating a dataset, IterableDataset.from_generator() and Dataset.from_generator() expect a “picklable” generator function. This is required to hash the function using pickle to be able to cache the dataset on disk.

虽然生成器函数通常是“可 pickle 的”,但请注意生成器对象不是。因此,如果您使用的是生成器对象, 将会遇到如下所示的 TypeError:

TypeError: cannot pickle 'generator' object

当使用生成器函数时,如果该函数引用了无法“pickle”序列化的全局对象(例如数据库连接),也可能出现此错误。在这种情况下,您可以直接在生成器函数内部初始化该对象,以避免此错误。

Dataset.map 的 Pickling 问题

在 Dataset.map() 的多进程处理中也可能出现 Pickling 错误——对象会被序列化(pickled)以便传递给子进程。 如果转换中使用的对象无法被序列化,则无法缓存 map 的结果,从而导致抛出错误。

以下是解决此问题的一些方法:

  • 解决 pickle 问题的通用方法是手动确保对象(或生成器类)可被 pickle 序列化,即实现 __getstate__ / __setstate__ / __reduce__。
  • 您也可以在 map 中通过 new_fingerprint 参数提供自己的唯一哈希值。
  • 你还可以通过调用 datasets.disable_caching() 来禁用缓存,但这样做并不推荐 - 了解更多关于缓存重要性的内容

寻求帮助

如果上述故障排除建议未能帮助您解决问题,请向社区和团队寻求帮助。

论坛

在 Hugging Face 论坛上寻求帮助 - 将您的问题发布在 🤗Datasets 分类 中。请务必撰写描述清晰的帖子,并提供有关您环境的相关背景信息以及可复现的代码,以最大程度地提高问题得到解决的可能性!

Discord

在 Discord 上发布问题,让团队和社区来帮助你。

🤗 Hub 上的社区讨论

如果您在 Hub 上创建自定义数据集时遇到问题,可以在数据集的 Community 标签页中发起讨论,并使用以下消息向 Hugging Face 团队寻求帮助:

# Dataset rewiew request for <Dataset name>

## Description

<brief description of the dataset>

## Files to review

- file1
- file2
- ...

cc @lhoestq @albertvillanova

GitHub 问题

最后,如果您怀疑发现了与库本身相关的 bug,请在 🤗 Datasets 的 GitHub 仓库上创建一个 Issue。请提供有关该 bug 的上下文信息:用于复现的代码片段、关于您的环境和数据的详细信息等,以帮助我们查明问题所在以及如何修复。

Update on GitHub