Datasets documentation

Dépannage

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Dépannage

Ce guide a pour objectif de vous fournir les outils et les connaissances nécessaires pour résoudre certains problèmes courants. Si les suggestions énumérées dans ce guide ne couvrent pas votre situation, veuillez consulter la section Demander de l'aide pour savoir où trouver de l'aide concernant votre problème spécifique.

Problèmes lors de la mise en ligne de jeux de données avec push_to_hub

Problèmes d'authentification

Si vous rencontrez des problèmes d’authentification lors du partage d’un jeu de données sur 🤗 Hub à l’aide de Dataset.push_to_hub() et d’un jeton d’accès Hugging Face :

  • Assurez-vous que le jeton Hugging Face utilisé pour vous authentifier est un jeton avec la permission write.
  • Sur OSX, il peut être utile de nettoyer tous les mots de passe huggingface.co dans votre accès au trousseau, ainsi que de reconfigurer git config --global credential.helper osxkeychain, avant d'utiliser hf auth login.

Vous pouvez également utiliser des clés SSH pour vous authentifier - en savoir plus dans la documentation du 🤗 Hub.

Connexion perdue lors de l'envoi d'un jeu de données volumineux

Lors de la mise en ligne de grands jeux de données sur Hub, si le nombre de shards est élevé, cela peut générer un nombre excessif de commits pour Hub sur une courte période. Cela entraîne une erreur de connexion. L'erreur de connexion peut également être causée par une erreur HTTP 500 renvoyée par le bucket AWS S3 utilisé en interne par Hub. Dans les deux cas, vous pouvez relancer Dataset.push_to_hub() pour poursuivre la mise en ligne du jeu de données. Hub vérifiera les SHAs des shards déjà téléversés afin d'éviter de les renvoyer. Nous travaillons à rendre le processus de mise en ligne plus robuste face aux erreurs transitoires, il est donc toujours judicieux de mettre à jour vers la dernière version de la bibliothèque.

Trop de requêtes

La transmission de grands jeux de données via push_to_hub() peut entraîner une erreur :

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

Si vous rencontrez ce problème, vous devez mettre à jour la bibliothèque datasets vers la dernière version (ou au moins 2.15.0).

Problèmes lors de la création de jeux de données à partir de données personnalisées

Chargement d'images et d'audio depuis un dossier

Lors de la création d'un jeu de données à partir d'un dossier, l'un des problèmes les plus courants est que la structure des fichiers ne respecte pas le format attendu, ou qu'il y a un problème avec le fichier de métadonnées.

En savoir plus sur la structure de dossiers requise dans les pages de documentation correspondantes :

Problèmes de sérialisation

Problèmes de sérialisation lors de l'utilisation de Dataset.from_generator

Lors de la création d'un jeu de données, IterableDataset.from_generator() et Dataset.from_generator() s'attendent à une fonction générateur « picklable ». Ceci est nécessaire pour hacher la fonction à l'aide de pickle afin de pouvoir mettre le jeu de données en cache sur le disque.

Bien que les fonctions génératrices soient généralement « picklables », les objets générateurs ne le sont pas. Ainsi, si vous utilisez un objet générateur, vous rencontrerez une TypeError de ce type :

TypeError: cannot pickle 'generator' object

Cette erreur peut également se produire lors de l’utilisation d’une fonction générateur qui utilise un objet global non « picklable », tel qu’une connexion à une base de données, par exemple. Dans ce cas, vous pouvez initialiser cet objet directement à l’intérieur de la fonction générateur pour éviter cette erreur.

Problèmes de sérialisation avec Dataset.map

Les erreurs de pickling peuvent également survenir dans Dataset.map() en multiprocessus - les objets sont picklés pour être transmis aux processus enfants. Si les objets utilisés dans la transformation ne sont pas picklables, il n'est pas possible de mettre en cache le résultat de map, ce qui provoque une erreur.

Voici quelques façons de résoudre ce problème :

  • Une solution universelle aux problèmes de pickle consiste à s’assurer que les objets (ou les classes de générateurs) sont picklables manuellement en implémentant __getstate__ / __setstate__ / __reduce__.
  • Vous pouvez également fournir votre propre hachage unique dans map avec l'argument new_fingerprint.
  • Vous pouvez également désactiver la mise en cache en appelant datasets.disable_caching(), mais cela est déconseillé - en savoir plus sur l'importance du cache

Demander de l'aide

Si les conseils de dépannage ci-dessus ne vous ont pas permis de résoudre votre problème, n’hésitez pas à solliciter l’aide de la communauté et de l’équipe.

Forums

Demandez de l’aide sur les forums Hugging Face – publiez votre question dans la catégorie 🤗Datasets. Veillez à rédiger un message descriptif, avec le contexte pertinent de votre configuration et un code reproductible, afin de maximiser les chances que votre problème soit résolu !

Discord

Posez une question sur Discord et laissez l'équipe et la communauté vous aider.

Discussions de la communauté sur 🤗 Hub

Si vous rencontrez des difficultés pour créer un jeu de données personnalisé sur Hub, vous pouvez demander de l’aide à l’équipe Hugging Face en ouvrant une discussion dans l’onglet Community de votre jeu de données avec ce message :

# Dataset rewiew request for <Dataset name>

## Description

<brief description of the dataset>

## Files to review

- file1
- file2
- ...

cc @lhoestq @albertvillanova

GitHub Issues

Enfin, si vous pensez avoir trouvé un bug lié à la bibliothèque elle-même, créez un Issue sur le dépôt GitHub de 🤗 Datasets. Incluez un contexte concernant le bug : extrait de code pour le reproduire, détails sur votre environnement et vos données, etc., afin de nous aider à comprendre ce qui ne va pas et comment le corriger.

Update on GitHub