Hub documentation
Bibliotecas
Bibliotecas
El Hub de Datasets admite varias bibliotecas del ecosistema de código abierto. Gracias a la biblioteca Python huggingface_hub, es fácil habilitar el intercambio de tus datasets en el Hub. Nos complace dar la bienvenida al Hub a un conjunto de bibliotecas de código abierto que están impulsando el avance del Machine Learning.
Tabla de bibliotecas
La tabla siguiente resume las bibliotecas admitidas y su nivel de integración.
| Biblioteca | Descripción | Descargar desde Hub | Transmitir desde Hub | Subir al Hub | Transmitir al Hub | Archivos Parquet optimizados |
|---|---|---|---|---|---|---|
| Argilla | Herramienta de colaboración para ingenieros de IA y expertos en el dominio que valoran los datos de alta calidad. | ✅ | ❌ | ✅ | ❌ | ❌ |
| Daft | Motor de datos para el procesamiento de datos multimodales a gran escala con una interfaz nativa de Python. | ✅ | ✅ | ✅ | ✅ | ✅ |
| Dask | Biblioteca de computación paralela y distribuida que escala el ecosistema existente de Python y PyData. | ✅ | ✅ | ✅ | ✅ | ✅* |
| Diseñador de datos | Framework NVIDIA NeMo para generar conjuntos de datos sintéticos utilizando LLMs. | ✅ | ❌ | ✅ | ❌ | ❌ |
| Conjuntos de datos | 🤗 Datasets es una biblioteca para acceder y compartir conjuntos de datos para Audio, Visión por Computadora y Procesamiento del Lenguaje Natural (NLP). | ✅ | ✅ | ✅ | ✅ | ✅ |
| Distilabel | El marco para la generación de datos sintéticos y la retroalimentación de IA. | ✅ | ❌ | ✅ | ❌ | ❌ |
| DuckDB | Sistema de gestión de bases de datos SQL OLAP en proceso. | ✅ | ✅ | ❌ | ❌ | ❌ |
| Atlas de incrustaciones | Herramienta interactiva de visualización y exploración para grandes incrustaciones. | ✅ | ✅ | ❌ | ❌ | ❌ |
| Fenic | Framework de DataFrames inspirado en PySpark para construir aplicaciones de IA y agentes para producción. | ✅ | ✅ | ❌ | ❌ | ❌ |
| FiftyOne | FiftyOne es una biblioteca para la curación y visualización de datos de imágenes, videos y 3D. | ✅ | ✅ | ✅ | ❌ | ❌ |
| Lance | Un formato de lakehouse abierto para IA multimodal. | ✅ | ✅ | ❌ | ❌ | ❌ |
| Pandas | Kit de herramientas de análisis de datos en Python. | ✅ | ❌ | ✅ | ❌ | ✅* |
| Polars | Una biblioteca de DataFrames sobre un motor de consultas OLAP. | ✅ | ✅ | ✅ | ❌ | ❌ |
| PyArrow | Apache Arrow es un formato columnar y un conjunto de herramientas para el intercambio rápido de datos y el análisis en memoria. | ✅ | ✅ | ✅ | ❌ | ✅* |
| Spark | Herramienta de procesamiento de datos a gran escala en tiempo real en un entorno distribuido. | ✅ | ✅ | ✅ | ✅ | ✅ |
| WebDataset | Biblioteca para escribir pipelines de E/S para conjuntos de datos grandes. | ✅ | ✅ | ❌ | ❌ | ❌ |
* Requiere pasar argumentos adicionales para escribir archivos Parquet optimizados
Bibliotecas de procesamiento de datos
Streaming
El streaming de datasets permite iterar progresivamente sobre un dataset de Hugging Face sin necesidad de descargarlo por completo. Ahorra espacio en el disco local porque los datos nunca se guardan en el disco. Ahorra memoria, ya que solo se utiliza una pequeña porción del dataset a la vez. Y ahorra tiempo, ya que no es necesario descargar los datos antes de la carga de trabajo de la CPU o la GPU.
Además de transmitir desde Hugging Face, muchas bibliotecas también admiten la transmisión hacia Hugging Face. Por lo tanto, pueden ejecutar pipelines de streaming de extremo a extremo: transmiten desde una fuente y escriben en Hugging Face de forma progresiva, a menudo superponiendo las etapas de descarga, carga y procesamiento.
Para más detalles sobre cómo realizar streaming, consulta la documentación de una biblioteca que lo soporte (ver tabla anterior) o la documentación de datasets de streaming si deseas transmitir datasets de Hugging Face por tu cuenta.
Archivos Parquet optimizados
Los archivos Parquet en Hugging Face están optimizados para mejorar la eficiencia de almacenamiento, acelerar las descargas y subidas, y permitir la transmisión y edición eficientes de conjuntos de datos.

Los archivos Parquet optimizados son archivos Parquet con funciones adicionales:
- El Parquet Content Defined Chunking optimiza Parquet para Xet, el backend de almacenamiento de Hugging Face. Acelera las cargas y descargas gracias a la deduplicación basada en fragmentos y permite editar archivos de manera eficiente
- El índice de páginas acelera los filtros durante la transmisión y permite un acceso aleatorio eficiente, por ejemplo, en el Dataset Viewer
Algunas bibliotecas requieren un argumento adicional para escribir archivos Parquet optimizados, como Pandas y PyArrow:
use_content_defined_chunking=Truepara habilitar el Parquet Content Defined Chunking, para deduplicación y ediciónwrite_page_index=Truepara incluir un índice de páginas en los metadatos de Parquet, para streaming y acceso aleatorio
Bibliotecas de entrenamiento
Bibliotecas de entrenamiento que se integran con los conjuntos de datos de Hub para el entrenamiento de modelos. La tabla siguiente muestra sus capacidades de streaming, es decir, la posibilidad de entrenar con conjuntos de datos sin necesidad de descargarlos primero.
| Biblioteca | Descripción | Transmitir desde Hub |
|---|---|---|
| Axolotl | Framework de ajuste fino de LLM con poco código | ✅ |
| LlamaFactory | Ajuste fino unificado para más de 100 LLM | ✅ |
| Sentence Transformers | Embeddings de texto y similitud semántica | ✅ |
| Transformers | 🤗 Transformers Trainer para el ajuste fino de modelos | ✅ |
| TRL | Entrenamiento de LLMs con aprendizaje por refuerzo (SFT, DPO, GRPO) | ⚠️* |
| Unsloth | Ajuste fino rápido de LLM (aceleración de 2x, 70% menos de memoria) | ✅ |
* SFTTrainer y DPOTrainer admiten streaming; GRPOTrainer aún no admite entrada en streaming
Streaming desde Hub
El streaming permite entrenar en conjuntos de datos masivos sin necesidad de descargarlos primero. Esto es valioso cuando:
- Tu conjunto de datos es demasiado grande para caber en el disco
- Quieres comenzar a entrenar de inmediato
- Estás usando HF Jobs, donde la computación colocada proporciona un streaming más rápido
Las mejoras recientes han hecho que el streaming sea hasta 100 veces más eficiente, con un inicio más rápido, preobtención y una mejor escalabilidad a muchos workers.
Nota: El streaming requiere max_steps en los argumentos de entrenamiento, ya que la longitud del conjunto de datos es desconocida, y utiliza un mezclado basado en búfer. Consulte conjuntos de datos en streaming para más detalles.
Registro en Hub
Algunas herramientas pueden transmitir los datos de entrenamiento de vuelta al Hub durante el entrenamiento:
- Trackio: Transmite las métricas de entrenamiento a un conjunto de datos del Hub en tiempo real
Integrar bibliotecas y herramientas de datos con el Hub
Esta guía está diseñada para desarrolladores y mantenedores de bibliotecas y herramientas de datos que deseen integrarse con el Hugging Face Hub. Ya sea que estés creando una biblioteca de procesamiento de datos, una herramienta de análisis o cualquier software que necesite interactuar con conjuntos de datos, esta documentación te ayudará a implementar una integración con el Hub.
La guía abarca:
- Enfoques posibles para cargar datos del Hub en tu biblioteca/herramienta
- Enfoques posibles para subir datos desde tu biblioteca/herramienta al Hub
Carga de datos desde el Hub
Si tienes una biblioteca para trabajar con datos, puede ser útil para tus usuarios cargar datos desde el Hub.
En general, sugerimos apoyarse en una biblioteca existente como datasets, pandas o polars para hacer esto, a menos que tenga una razón específica para implementar su propia solución. Si necesita más control sobre el proceso de carga, puede usar la biblioteca huggingface_hub, que le permitirá, por ejemplo, descargar un subconjunto específico de archivos de un repositorio.
Puedes encontrar más información sobre la carga de datos desde el Hub aquí.
Integración a través del visor de conjuntos de datos y archivos Parquet
El visor de conjuntos de datos del Hub y el sistema de conversión a Parquet proporcionan una forma estandarizada de integrarse con conjuntos de datos, independientemente de su formato original. Esta infraestructura es una capa de integración fiable entre el Hub y las bibliotecas externas.
Si el conjunto de datos no está en Parquet, el Hub convierte automáticamente los primeros 5 GB de cada conjunto de datos al formato Parquet para alimentar el visor de conjuntos de datos y proporcionar patrones de acceso consistentes. Esta estandarización ofrece varios beneficios para las integraciones de librerías:
- Patrones de acceso a datos consistentes independientemente del formato original
- Vista previa y exploración de conjuntos de datos integradas a través del visor de conjuntos de datos del Hub. El visor de conjuntos de datos también se puede incrustar como un iframe en tus aplicaciones, lo que facilita proporcionar vistas previas enriquecidas de los conjuntos de datos. Para obtener más información sobre la incrustación del visor, consulta la documentación de incrustación del visor de conjuntos de datos.
- Almacenamiento columnar eficiente optimizado para consultas. Por ejemplo, podrías usar una herramienta como DuckDB para consultar o filtrar un subconjunto específico de datos.
- Parquet cuenta con un amplio soporte en todo el ecosistema de aprendizaje automático y ciencia de datos.
Para más detalles sobre el trabajo con la API de Dataset Viewer, consulte la documentación de la API de Dataset Viewer
Subir datos al Hub
Esta sección aborda los posibles enfoques para añadir la capacidad de subir datos al Hub en su biblioteca, es decir, cómo implementar un método push_to_hub.
Esta guía cubrirá tres formas principales de subir datos al Hub:
- usando la biblioteca
datasetsy el métodopush_to_hub - usando
pandaspara escribir en el Hub - usando la biblioteca
huggingface_huby el métodoupload_folder
Usa la biblioteca datasets
La forma más directa de enviar datos al Hub es recurrir al método push_to_hub existente de la biblioteca datasets. El método push_to_hub se encargará automáticamente de:
- la creación del repositorio
- la conversión del conjunto de datos a Parquet
- dividir el conjunto de datos en partes adecuadas
- subiendo los datos
Por ejemplo, si tienes una biblioteca de generación de datos sintéticos que devuelve una lista de diccionarios, podrías hacer lo siguiente:
from datasets import Dataset
data = [{"prompt": "Write a cake recipe", "response": "Measure 1 cup ..."}]
ds = Dataset.from_list(data)
ds.push_to_hub("USERNAME_OR_ORG/repo_ID")Ejemplos de este tipo de integración:
Confíe en la integración de una biblioteca existente con el Hub
Polars, Pandas, Dask, Spark, DuckDB y Daft pueden escribir en un repositorio de Hugging Face Hub. Consulte la tabla de bibliotecas anterior para más detalles.
Si ya estás utilizando una de estas bibliotecas en tu código, añadir la capacidad de enviar al Hub es sencillo. Por ejemplo, si tienes una biblioteca de generación de datos sintéticos que puede devolver un DataFrame de Pandas, este es el código que necesitarías escribir para el Hub:
from huggingface_hub import HfApi
# Initialize the Hub API
hf_api = HfApi()
# Create a repository (if it doesn't exist)
hf_api.create_repo(repo_id="username/my-dataset", repo_type="dataset", exist_ok=True)
# Convert your data to a DataFrame and save directly to the Hub
df.to_parquet("hf://datasets/username/my-dataset/data.parquet")Usando la biblioteca de Python huggingface_hub
La biblioteca de Python huggingface_hub ofrece un enfoque más flexible para subir datos al Hub. La biblioteca permite subir archivos específicos o subconjuntos de archivos a un repositorio. Esto es útil si tienes un conjunto de datos grande que no deseas convertir a Parquet, si quieres subir un subconjunto específico de archivos o si deseas tener más control sobre la estructura del repositorio.
Dependiendo de su caso de uso, puede subir un archivo o carperta un punto específico de su código, es decir, exportar anotaciones de una herramienta al Hub cuando un usuario hace clic en “push to Hub”. Por ejemplo,
from huggingface_hub import HfApi
api = HfApi()
api.upload_folder(
folder_path="/my-cool-library/data-folder",
repo_id="username/my-dataset",
repo_type="dataset",
commit_message="Push annotations to Hub",
allow_patterns="*.jsonl",
)Puedes encontrar más información sobre las formas de subir datos al Hub aquí.
Alternativamente, hay situaciones en las que puede ser necesario subir datos en segundo plano, por ejemplo, datos sintéticos generados cada 10 minutos. En este caso, puede utilizar la clase CommitScheduler de la biblioteca huggingface_hub. Para más detalles, consulte la documentación de subidas programadas.
Puede ver un ejemplo de cómo usar este enfoque para subir datos al Hub en
Más soporte
Para preguntas técnicas sobre la integración, no dude en contactar al equipo de datasets en datasets@huggingface.co.
Update on GitHub