# Solución de problemas

Esta guía tiene como objetivo proporcionarte las herramientas y el conocimiento necesarios para abordar algunos problemas comunes. Si las sugerencias enumeradas en esta guía no cubren tu situación, consulta la sección [Solicitar ayuda](#asking-for-help) para saber dónde encontrar asistencia con tu problema específico.

## Problemas al subir conjuntos de datos con `push_to_hub`

### Problemas de autenticación

Si experimenta problemas de autenticación al compartir un conjunto de datos en 🤗 Hub usando [Dataset.push_to_hub()](/docs/datasets/main/es/package_reference/main_classes#datasets.Dataset.push_to_hub) y un token de acceso de Hugging Face:

* Asegúrate de que el token de Hugging Face que estás usando para autenticarte sea un token con permiso de **write**.
* En OSX, puede ser útil limpiar todas las contraseñas de huggingface.co en el acceso al llavero y volver a configurar `git config --global credential.helper osxkeychain` antes de usar `hf auth login`.

Alternativamente, puedes usar claves SSH para autenticarte; lee más en la [documentación de 🤗 Hub](https://huggingface.co/docs/hub/security-git-ssh).
 
### Se perdió la conexión durante la carga de un conjunto de datos grande 

Al subir conjuntos de datos grandes a Hub, si el número de fragmentos del conjunto de datos es elevado, puede generar demasiados commits para Hub en un período corto. Esto provocará un error de conexión. El error de conexión también puede ser causado por un error HTTP 500 devuelto por el bucket de AWS S3 que Hub utiliza internamente. En cualquiera de estas situaciones, puedes volver a ejecutar [Dataset.push_to_hub()](/docs/datasets/main/es/package_reference/main_classes#datasets.Dataset.push_to_hub) para continuar con la carga del conjunto de datos. Hub comprobará los SHAs de los fragmentos ya subidos para evitar volver a subirlos. Estamos trabajando para hacer que el proceso de carga sea más robusto ante errores transitorios, por lo que actualizar a la última versión de la biblioteca siempre es una buena idea.

### `Too Many Requests`

Subir conjuntos de datos grandes mediante `push_to_hub()` puede provocar un error:

```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 te encuentras con este problema, necesitas actualizar la biblioteca `datasets` a la última versión (o al menos a la `2.15.0`).

## Problemas al crear conjuntos de datos a partir de datos personalizados

### Carga de imágenes y audio desde una carpeta

Al crear un conjunto de datos desde una carpeta, uno de los problemas más comunes es que la estructura de archivos no sigue el formato esperado o que hay un problema con el archivo de metadatos.

Obtenga más información sobre la estructura de carpetas requerida en las páginas de documentación correspondientes:

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

### Problemas con Pickling 

#### Problemas de serialización al usar `Dataset.from_generator`

Al crear un conjunto de datos, [IterableDataset.from_generator()](/docs/datasets/main/es/package_reference/main_classes#datasets.IterableDataset.from_generator) y [Dataset.from_generator()](/docs/datasets/main/es/package_reference/main_classes#datasets.Dataset.from_generator) esperan una función generadora "picklable". Esto es necesario para hacer un hash de la función usando [`pickle`](https://docs.python.org/3/library/pickle.html) para poder cachear el conjunto de datos en disco.

Aunque las funciones generadoras son generalmente "picklable", los objetos generador no lo son. Por lo tanto, si estás usando un objeto generador, te encontrarás con un `TypeError` como este:

```bash
TypeError: cannot pickle 'generator' object
```

Este error también puede ocurrir al usar una función generadora que utiliza un objeto global que no es "picklable", como una conexión a una base de datos, por ejemplo. Si ese es el caso, puede inicializar dicho objeto directamente dentro de la función generadora para evitar este error.

#### Problemas de pickling con `Dataset.map`

Los errores de pickling también pueden ocurrir en [Dataset.map()](/docs/datasets/main/es/package_reference/main_classes#datasets.Dataset.map) multiproceso: los objetos se serializan para pasarlos a los procesos hijos. Si los objetos utilizados en la transformación no son serializables, no es posible cachear el resultado de `map`, lo que provoca que se lance un error.

Aquí hay algunas formas de abordar este problema:
* Una solución universal a los problemas de pickle es asegurarse de que los objetos (o clases generadoras) sean serializables manualmente implementando `__getstate__` / `__setstate__` / `__reduce__`.
* También puedes proporcionar tu propio hash único en `map` con el argumento `new_fingerprint`.
* También puede deshabilitar la caché llamando a `datasets.disable_caching()`, aunque esto no es deseable: [lea más sobre la importancia de la caché](cache)

## Pedir ayuda

Si los consejos de solución de problemas anteriores no te ayudaron a resolver tu problema, busca ayuda en la comunidad y en el equipo.

### Foros 

Pide ayuda en los foros de Hugging Face: publica tu pregunta en la [categoría 🤗Datasets](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Fc%2Fdatasets%2F10). Asegúrate de escribir una publicación descriptiva con el contexto relevante sobre tu configuración y código reproducible para maximizar la probabilidad de que tu problema se resuelva.

### Discord

Publica una pregunta en [Discord](http://hf.co/join/discord) y deja que el equipo y la comunidad te ayuden.

### Discusiones de la comunidad en 🤗 Hub

Si tienes problemas para crear un conjunto de datos personalizado en Hub, puedes pedir ayuda al equipo de Hugging Face abriendo una discusión en la pestaña Community de tu conjunto de datos con este mensaje:

```text
# Dataset rewiew request for <Dataset name>

## Description

<brief description of the dataset>

## Files to review

- file1
- file2
- ...

cc @lhoestq @albertvillanova
```

### GitHub Issues

Por último, si sospechas que has encontrado un error relacionado con la propia biblioteca, crea un Issue en el [repositorio de GitHub](https://github.com/huggingface/datasets/issues) de 🤗 Datasets. Incluye contexto sobre el error: un fragmento de código para reproducirlo, detalles sobre tu entorno y los datos, etc., para ayudarnos a identificar qué está fallando y cómo podemos solucionarlo.

