Hub documentation

Mengedit dataset

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Mengedit dataset

Hub memungkinkan kurasi kolaboratif untuk dataset komunitas dan riset. Kami mendorong Anda untuk menjelajahi dataset yang tersedia di Hub dan berkontribusi pada perbaikannya guna membantu pertumbuhan komunitas ML serta mempercepat kemajuan bagi semua orang. Semua kontribusi sangat disambut!

Mulai dengan membuat akun Hugging Face Hub jika Anda belum memilikinya.

Edit menggunakan UI Hub

Fitur ini saat ini hanya tersedia untuk dataset CSV, TSV, dan Parquet.

Antarmuka web Hub memungkinkan pengguna tanpa keahlian teknis apa pun untuk mengedit dataset.

Buka halaman dataset dan navigasikan ke tab Data Studio untuk mulai mengedit.

Klik Toggle edit mode untuk mengaktifkan pengeditan dataset.

Edit sebanyak sel yang Anda inginkan dan akhirnya klik Commit untuk mengonfirmasi perubahan Anda dan meninggalkan pesan commit.

Menggunakan pustaka klien huggingface_hub

Perpustakaan huggingface_hub dapat mengelola repositori Hub, termasuk pengeditan dataset.

Sebagai contoh, berikut adalah cara mengedit file CSV menggunakan Hugging Face FileSystem API:

from huggingface_hub import hffs

path = f"datasets/{repo_id}/data.csv"

with hffs.open(path, "r") as f:
    content = f.read()
edited_content = content.replace("foo", "bar")
with hffs.open(path, "w") as f:
    f.write(edited_content)

Anda juga dapat menerapkan edit secara lokal di disk Anda dan meng-commit perubahan tersebut:

from huggingface_hub import hf_hub_download, upload_file

local_path = hf_hub_download(repo_id=repo_id, path_in_repo= "data.csv", repo_type="dataset")

with open(path, "r") as f:
    content = f.read()
edited_content = content.replace("foo", "bar")
with open(path, "w") as f:
    f.write(edited_content)

upload_file(repo_id=repo_id, path_in_repo=local_path, repo_type="dataset")

Untuk memiliki seluruh repositori dataset secara lokal dan mengedit banyak file sekaligus, gunakan snapshot_download dan upload_folder alih-alih hf_hub_download dan upload_file

Kunjungi dokumentasi pustaka klien untuk mempelajari lebih lanjut.

Perpustakaan terintegrasi

Jika dataset di Hub kompatibel dengan library yang didukung, memuat, mengedit, dan mendorong dataset hanya membutuhkan beberapa baris.

Berikut cara mengedit file CSV dengan Pandas:

import pandas as pd

# Load the dataset
df = pd.read_csv(f"hf://datasets/{repo_id}/data.csv")

# Edit
df = df.apply(...)

# Commit the changes
df.to_csv(f"hf://datasets/{repo_id}/data.csv")

Perpustakaan seperti Polars dan DuckDB juga mengimplementasikan protokol hf:// untuk membaca, mengedit, dan menulis file di Hugging Face. Dan perpustakaan lain berguna untuk mengedit dataset yang terdiri dari banyak file seperti Spark, Dask, atau 🤗 Datasets. Lihat daftar lengkap perpustakaan yang didukung di sini

Untuk informasi tentang cara mengakses dataset di situs web, Anda dapat mengklik tombol “Use this dataset” di halaman dataset untuk melihat caranya. Sebagai contoh, samsum menunjukkan caranya dengan 🤗 Datasets di bawah ini.

Hanya unggah data baru

Penyimpanan Hugging Face didukung oleh Xet, yang menggunakan deduplikasi chunk untuk membuat unggahan lebih efisien. Berbeda dengan penyimpanan cloud tradisional, Xet tidak memerlukan seluruh dataset untuk diunggah ulang guna mengomitm perubahan. Sebaliknya, Xet secara otomatis mendeteksi bagian mana dari dataset yang telah berubah dan menginstruksikan pustaka klien untuk hanya mengunggah bagian yang diperbarui. Untuk melakukan hal itu, Xet menggunakan algoritma cerdas untuk menemukan chunk berukuran 64kB yang sudah ada di Hugging Face.

Mari kita lihat contoh sebelumnya dengan Pandas:

import pandas as pd

# Load the dataset
df = pd.read_csv(f"hf://datasets/{repo_id}/data.csv")

# Edit part of the dataset
df = df.apply(...)

# Commit the changes
df.to_csv(f"hf://datasets/{repo_id}/data.csv")

Kode ini pertama kali memuat dataset dan kemudian mengeditnya. Setelah pengeditan selesai, to_csv() merealisasikan file di memori, membaginya menjadi chunk, menanyakan kepada Xet chunk mana yang sudah ada di Hugging Face dan chunk mana yang telah berubah, lalu hanya mengunggah data baru.

Pengeditan Parquet yang dioptimalkan

Jumlah data yang diunggah bergantung pada perubahan dan struktur file.

Format Parquet bersifat kolom dan dikompresi pada level halaman (halaman berukuran sekitar ~1MB). Kami mengoptimalkan Parquet untuk Xet dengan Parquet Content Defined Chunking, yang memastikan data yang tidak berubah umumnya menghasilkan halaman yang tidak berubah.

Sebagai contoh, kode ini mengunggah konten dari df dan kemudian untuk edited_df pengunggahan lebih cepat karena hanya mengunggah chunk yang berubah:

import pandas as pd

df.to_parquet(
    "hf://datasets/username/my_dataset/imdb.parquet",
    # Optimize for Xet
    use_content_defined_chunking=True,
    write_page_index=True,
)

edited_df = ...  # e.g. with added/modified/removed rows or columns

edited_df.to_parquet(
    "hf://datasets/username/my_dataset/imdb.parquet",
    # Optimize for Xet
    use_content_defined_chunking=True,
    write_page_index=True,
)

Chunk berukuran ~64kB dan Parquet menyimpan data per kolom, sehingga dalam praktiknya inilah yang terjadi saat mengedit file Optimized Parquet:

  • menambahkan kolom baru -> hanya chunk dari kolom baru yang diunggah
  • menambahkan/mengedit/menghapus baris -> satu chunk per kolom diunggah

Selain itu, potongan-potongan footer Parquet yang berisi metadata juga diunggah.

Periksa apakah pustaka Anda mendukung Optimized Parquet di halaman pustaka yang didukung.

Streaming

Untuk dataset besar, disarankan menggunakan pustaka dengan fitur streaming dataset untuk pipeline streaming end-to-end. Dalam kasus ini, pemrosesan dataset berjalan secara progresif seiring dengan kedatangan data lama dan pengunggahan data baru ke Hub.

Periksa apakah pustaka Anda mendukung streaming di halaman pustaka yang didukung.

Update on GitHub