Hub documentation

Perpustakaan

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Perpustakaan

Hub Datasets mendukung beberapa pustaka dalam ekosistem Open Source. Berkat pustaka Python huggingface_hub, Anda dapat dengan mudah mengaktifkan berbagi dataset Anda di Hub. Kami senang menyambut serangkaian pustaka Open Source di Hub yang mendorong kemajuan Machine Learning.

Tabel pustaka

Tabel di bawah ini merangkum pustaka yang didukung dan tingkat integrasinya.

LibraryDeskripsiUnduh dari HubStream dari HubPush to HubStream ke HubFile Parquet yang dioptimalkan
ArgillaAlat kolaborasi untuk insinyur AI dan pakar bidang yang mengutamakan data berkualitas tinggi.βœ…βŒβœ…βŒβŒ
DaftMesin data untuk pemrosesan data multimodal berskala besar dengan antarmuka Python-native.βœ…βœ…βœ…βœ…βœ…
DaskPerpustakaan komputasi paralel dan terdistribusi yang menskalakan ekosistem Python dan PyData yang ada.βœ…βœ…βœ…βœ…βœ…*
Perancang DataFramework NVIDIA NeMo untuk menghasilkan dataset sintetis menggunakan LLM.βœ…βŒβœ…βŒβŒ
DatasetπŸ€— Datasets adalah pustaka untuk mengakses dan membagikan dataset untuk Audio, Computer Vision, dan Natural Language Processing (NLP).βœ…βœ…βœ…βœ…βœ…
DistilabelKerangka kerja untuk pembuatan data sintetis dan umpan balik AI.βœ…βŒβœ…βŒβŒ
DuckDBSistem manajemen database SQL OLAP in-process.βœ…βœ…βŒβŒβŒ
Atlas EmbeddingAlat visualisasi dan eksplorasi interaktif untuk embedding berskala besar.βœ…βœ…βŒβŒβŒ
FenicFramework DataFrame terinspirasi PySpark untuk membangun aplikasi AI dan agen produksi.βœ…βœ…βŒβŒβŒ
FiftyOneFiftyOne adalah pustaka untuk kurasi dan visualisasi data gambar, video, dan 3D.βœ…βœ…βœ…βŒβŒ
LanceFormat lakehouse terbuka untuk AI multimodal.βœ…βœ…βŒβŒβŒ
PandasToolkit analisis data Python.βœ…βŒβœ…βŒβœ…*
PolarsPerpustakaan DataFrame di atas mesin kueri OLAP.βœ…βœ…βœ…βŒβŒ
PyArrowApache Arrow adalah format kolom dan kotak alat untuk pertukaran data cepat dan analitik in-memory.βœ…βœ…βœ…βŒβœ…*
SparkAlat pemrosesan data skala besar secara real-time di lingkungan terdistribusi.βœ…βœ…βœ…βœ…βœ…
WebDatasetPerpustakaan untuk menulis pipeline I/O untuk dataset besar.βœ…βœ…βŒβŒβŒ

* Memerlukan pengargumen tambahan untuk menulis file Parquet yang dioptimalkan

Perpustakaan Pemrosesan Data

Streaming

Streaming dataset memungkinkan iterasi pada dataset dari Hugging Face secara progresif tanpa perlu mengunduhnya secara lengkap. Ini menghemat ruang disk lokal karena data tidak pernah disimpan di disk. Ini menghemat memori karena hanya sebagian kecil dataset yang digunakan pada satu waktu. Dan ini menghemat waktu, karena tidak perlu mengunduh data sebelum beban kerja CPU atau GPU.

Selain streaming dari Hugging Face, banyak pustaka juga mendukung streaming ke Hugging Face. Oleh karena itu, pustaka-pustaka tersebut dapat menjalankan pipeline streaming end-to-end: streaming dari sumber dan menulis ke Hugging Face secara bertahap, sering kali dengan menumpuk langkah unduhan, unggahan, dan pemrosesan.

Untuk detail lebih lanjut tentang cara melakukan streaming, lihat dokumentasi pustaka yang mendukung streaming (lihat tabel di atas) atau dokumentasi streaming datasets jika Anda ingin melakukan streaming dataset dari Hugging Face secara mandiri.

File Parquet yang dioptimalkan

File Parquet di Hugging Face dioptimalkan untuk meningkatkan efisiensi penyimpanan, mempercepat unduhan dan unggahan, serta memungkinkan streaming dan pengeditan dataset yang efisien.

File Parquet yang dioptimalkan adalah file Parquet dengan fitur tambahan:

  • Parquet Content Defined Chunking mengoptimalkan Parquet untuk Xet, backend penyimpanan Hugging Face. Hal ini mempercepat unggahan dan unduhan berkat deduplikasi berbasis chunk serta memungkinkan pengeditan file yang efisien
  • Indeks halaman mempercepat filter saat streaming dan memungkinkan akses acak yang efisien, misalnya di Dataset Viewer

Beberapa pustaka memerlukan argumen tambahan untuk menulis file Parquet yang dioptimalkan seperti Pandas dan PyArrow:

  • use_content_defined_chunking=True untuk mengaktifkan Parquet Content Defined Chunking, untuk deduplikasi dan pengeditan
  • write_page_index=True untuk menyertakan indeks halaman dalam metadata Parquet, untuk streaming dan akses acak

Perpustakaan Pelatihan

Perpustakaan pelatihan yang terintegrasi dengan dataset Hub untuk pelatihan model. Tabel di bawah ini menunjukkan kemampuan streaming mereka - kemampuan untuk melatih pada dataset tanpa mengunduhnya terlebih dahulu.

LibraryDeskripsiStream dari Hub
AxolotlFramework penyesuaian halus LLM berkode rendahβœ…
LlamaFactoryFine-tuning terpadu untuk 100+ LLMβœ…
Sentence TransformersEmbedding teks dan kemiripan semantikβœ…
TransformersπŸ€— Transformers Trainer untuk fine-tuning modelβœ…
TRLMelatih LLM dengan pembelajaran penguatan (SFT, DPO, GRPO)⚠️*
UnslothFine-tuning LLM cepat (percepatan 2x, pengurangan memori 70%)βœ…

* SFTTrainer dan DPOTrainer mendukung streaming; GRPOTrainer belum mendukung input streaming

Streaming dari Hub

Streaming memungkinkan pelatihan pada dataset besar tanpa perlu mengunduhnya terlebih dahulu. Ini sangat berguna ketika:

  • Dataset Anda terlalu besar untuk muat di disk
  • Anda ingin langsung memulai pelatihan
  • Anda menggunakan HF Jobs di mana komputasi yang terlokasi bersama menyediakan streaming yang lebih cepat

Perbaikan terbaru telah membuat streaming hingga 100x lebih efisien dengan startup yang lebih cepat, prefetching, dan skalabilitas yang lebih baik ke banyak worker.

Catatan: Streaming memerlukan max_steps dalam argumen pelatihan karena panjang dataset tidak diketahui, dan menggunakan pengacakan berbasis buffer. Lihat dataset streaming untuk detail lebih lanjut.

Pencatatan ke Hub

Beberapa alat dapat mengalirkan data pelatihan kembali ke Hub selama pelatihan:

  • Trackio: Mengalirkan metrik pelatihan ke dataset Hub secara real-time

Mengintegrasikan pustaka dan alat data dengan Hub

Panduan ini dirancang untuk pengembang dan pemelihara pustaka data dan alat yang ingin mengintegrasikan dengan Hugging Face Hub. Baik Anda sedang membangun pustaka pemrosesan data, alat analisis, atau perangkat lunak apa pun yang perlu berinteraksi dengan dataset, dokumentasi ini akan membantu Anda mengimplementasikan integrasi Hub.

Panduan ini mencakup:

  • Pendekatan yang mungkin untuk memuat data dari Hub ke pustaka/alat Anda
  • Pendekatan yang mungkin untuk mengunggah data dari pustaka/alat Anda ke Hub

Memuat data dari Hub

Jika Anda memiliki pustaka untuk bekerja dengan data, akan sangat membantu bagi pengguna Anda untuk memuat data dari Hub.

Secara umum, kami menyarankan untuk mengandalkan pustaka yang sudah ada seperti datasets, pandas atau polars untuk melakukan ini, kecuali Anda memiliki alasan spesifik untuk mengimplementasikan sendiri. Jika Anda memerlukan kontrol lebih lanjut atas proses pemuatan, Anda dapat menggunakan pustaka huggingface_hub, yang memungkinkan Anda, misalnya, untuk mengunduh subset file tertentu dari sebuah repositori.

Anda dapat menemukan informasi lebih lanjut tentang memuat data dari Hub di sini.

Integrasi melalui Dataset Viewer dan File Parquet

Penampil dataset Hub dan sistem konversi Parquet menyediakan cara yang terstandarisasi untuk mengintegrasikan dataset, terlepas dari format aslinya. Infrastruktur ini merupakan lapisan integrasi yang andal antara Hub dan pustaka eksternal.

Jika dataset belum dalam format Parquet, Hub secara otomatis mengonversi 5GB pertama dari setiap dataset ke format Parquet untuk mendukung dataset viewer dan menyediakan pola akses yang konsisten. Standarisasi ini menawarkan beberapa manfaat untuk integrasi library:

  • Pola akses data yang konsisten terlepas dari format aslinya
  • Pratinjau dan eksplorasi dataset bawaan melalui penampil dataset Hub. Penampil dataset juga dapat disematkan sebagai iframe dalam aplikasi Anda, sehingga memudahkan penyediaan pratinjau dataset yang kaya. Untuk informasi lebih lanjut tentang penyematan penampil, lihat dokumentasi penyematan penampil dataset.
  • Penyimpanan kolom yang efisien dan dioptimalkan untuk kueri. Misalnya, Anda dapat menggunakan alat seperti DuckDB untuk melakukan kueri atau memfilter subset data tertentu.
  • Parquet didukung dengan baik di seluruh ekosistem machine learning dan data science.

Untuk detail lebih lanjut tentang cara bekerja dengan Dataset Viewer API, lihat dokumentasi Dataset Viewer API

Mengunggah data ke Hub

Bagian ini membahas pendekatan yang mungkin untuk menambahkan kemampuan mengunggah data ke Hub di pustaka Anda, yaitu bagaimana mengimplementasikan metode push_to_hub.

Panduan ini akan membahas tiga cara utama untuk mengunggah data ke Hub:

  • menggunakan pustaka datasets dan metode push_to_hub
  • menggunakan pandas untuk menulis ke Hub
  • menggunakan pustaka huggingface_hub dan metode upload_folder

Gunakan pustaka datasets

Pendekatan paling langsung untuk mendorong data ke Hub adalah dengan mengandalkan metode push_to_hub yang sudah ada dari pustaka datasets. Metode push_to_hub akan secara otomatis menangani:

  • pembuatan repositori
  • konversi dataset ke Parquet
  • membagi dataset menjadi bagian-bagian yang sesuai
  • mengunggah data

Sebagai contoh, jika Anda memiliki pustaka generasi data sintetis yang mengembalikan daftar kamus, Anda cukup melakukan hal berikut:

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")

Contoh dari jenis integrasi ini:

Andalkan integrasi pustaka yang sudah ada dengan Hub

Polars, Pandas, Dask, Spark, DuckDB, dan Daft semuanya dapat menulis ke repositori Hugging Face Hub. Lihat tabel Perpustakaan di atas untuk detail lebih lanjut.

Jika Anda sudah menggunakan salah satu pustaka ini dalam kode Anda, menambahkan kemampuan untuk mendorong ke Hub sangat mudah. Misalnya, jika Anda memiliki pustaka generasi data sintetis yang dapat mengembalikan Pandas DataFrame, berikut adalah kode yang perlu Anda tulis ke 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")

Menggunakan pustaka Python huggingface_hub

Perpustakaan Python huggingface_hub menawarkan pendekatan yang lebih fleksibel untuk mengunggah data ke Hub. Perpustakaan ini memungkinkan Anda mengunggah file tertentu atau subset file ke sebuah repositori. Hal ini berguna jika Anda memiliki dataset besar yang tidak ingin dikonversi ke Parquet, ingin mengunggah subset file tertentu, atau ingin memiliki kendali lebih atas struktur repositori.

Tergantung pada kasus penggunaan Anda, Anda dapat mengunggah file atau folder pada titik tertentu dalam kode Anda, yaitu, mengekspor anotasi dari sebuah alat ke Hub ketika pengguna mengklik β€œpush to Hub”. Sebagai contoh,

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",
)

Anda dapat menemukan informasi lebih lanjut tentang cara mengunggah data ke Hub di sini.

Sebagai alternatif, ada situasi di mana Anda mungkin ingin mengunggah data di latar belakang, misalnya, data sintetis yang dihasilkan setiap 10 menit. Dalam kasus ini, Anda dapat menggunakan kelas CommitScheduler dari pustaka huggingface_hub. Untuk detail lebih lanjut, lihat dokumentasi unggahan terjadwal.

Anda dapat melihat contoh penggunaan pendekatan ini untuk mengunggah data ke Hub di

Dukungan lebih lanjut

Untuk pertanyaan teknis tentang integrasi, silakan hubungi tim datasets di datasets@huggingface.co.

Update on GitHub