# 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 listées dans ce guide ne couvrent pas votre situation, veuillez consulter la section [Demander de l'aide](#asking-for-help) pour savoir où trouver de l'aide concernant votre problème spécifique.

## Problèmes lors de la téléversement 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()](/docs/datasets/v5.2.0/fr/package_reference/main_classes#datasets.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](https://huggingface.co/docs/hub/security-git-ssh).
 
### 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 sur Hub en un court laps de temps. Cela entraîne une erreur de connexion. Cette erreur 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()](/docs/datasets/v5.2.0/fr/package_reference/main_classes#datasets.Dataset.push_to_hub) pour poursuivre la mise en ligne du jeu de données. Hub vérifie 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.

### `Too Many Requests`

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

```bash
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 :

* [AudioFolder](https://huggingface.co/docs/datasets/audio_dataset#audiofolder)
* [ImageFolder](https://huggingface.co/docs/datasets/image_dataset#imagefolder)

### Problèmes de sérialisation 

#### Problèmes de pickling lors de l'utilisation de `Dataset.from_generator`

Lors de la création d'un jeu de données, [IterableDataset.from_generator()](/docs/datasets/v5.2.0/fr/package_reference/main_classes#datasets.IterableDataset.from_generator) et [Dataset.from_generator()](/docs/datasets/v5.2.0/fr/package_reference/main_classes#datasets.Dataset.from_generator) s'attendent à une fonction générateur « picklable ». Cela est nécessaire pour hacher la fonction à l'aide de [`pickle`](https://docs.python.org/3/library/pickle.html) 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 :

```bash
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 pickling avec `Dataset.map`

Les erreurs de pickling peuvent également survenir dans [Dataset.map()](/docs/datasets/v5.2.0/fr/package_reference/main_classes#datasets.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 est impossible de mettre en cache le résultat de `map`, ce qui provoque l'élévation d'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](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](https://discuss.huggingface.co/c/datasets/10). 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](http://hf.co/join/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 :

```text
# 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](https://github.com/huggingface/datasets/issues) 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 nous pouvons le corriger.

