Datasets documentation

Penyimpanan cloud

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v4.8.4).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Penyimpanan cloud

Hugging Face Datasets

Hugging Face Dataset Hub adalah rumah bagi kumpulan dataset yang terus berkembang, mencakup berbagai domain dan tugas.

Ini lebih dari sekadar penyimpanan cloud: Dataset Hub adalah platform yang menyediakan versioning data berkat git, serta Dataset Viewer untuk menjelajahi data, menjadikannya tempat yang sangat baik untuk menyimpan dataset yang siap untuk AI.

Panduan ini menunjukkan cara mengimpor data dari penyimpanan cloud lain menggunakan implementasi sistem berkas dari fsspec.

Hugging Face Storage Buckets

Storage Buckets adalah tipe repositori di Hugging Face Hub yang menyediakan penyimpanan objek serupa S3, didukung oleh backend penyimpanan Xet. Berbeda dengan repositori dataset berbasis Git, bucket bersifat non-versioned dan mutable, dirancang untuk kasus penggunaan di mana Anda membutuhkan penyimpanan yang sederhana dan cepat, seperti log, artefak antara, atau kumpulan file besar lainnya yang tidak memerlukan kontrol versi.

Impor data dari penyimpanan cloud

Sebagian besar penyedia penyimpanan cloud memiliki implementasi FileSystem fsspec, yang berguna untuk mengimpor data dari penyedia cloud mana pun dengan kode yang sama. Hal ini sangat berguna untuk menerbitkan dataset di Hugging Face.

Lihat tabel berikut untuk beberapa contoh penyedia penyimpanan cloud yang didukung:

Penyedia penyimpananImplementasi sistem berkas
Amazon S3s3fs
Google Cloud Storagegcsfs
Azure Blob/DataLakeadlfs
Oracle Cloud Storageocifs

Panduan ini akan menunjukkan cara mengimpor file data dari penyimpanan cloud apa pun dan menyimpan dataset di Hugging Face.

…

Pertama, instansiasi sistem file penyimpanan cloud Anda dan daftarkan file yang ingin Anda impor:

>>> import fsspec
>>> fs = fsspec.filesystem("...")  # s3 / gcs / abfs / adl / oci / ...
>>> data_dir = "path/to/my/data/"
>>> pattern = "*.parquet"
>>> data_files = fs.glob(data_dir + pattern)
["path/to/my/data/0001.parquet", "path/to/my/data/0001.parquet", ...]

Publikasikan Dataset

Lalu Anda dapat membuat dataset di Hugging Face dan mengimpor file data, menggunakan misalnya:

>>> from huggingface_hub import create_repo, upload_folder
>>> from tqdm.auto import tqdm
>>> destination_dataset = "username/my-dataset"
>>> create_repo(destination_dataset, repo_type="dataset")
>>> batch_size = 100
>>> for data_files in batched(tqdm(fs.glob(data_dir + pattern)), batch_size):
...     with TemporaryDirectory() as tmp_dir:
...         tmp_files = [os.path.join(tmp_dir, x[len(data_dir):]) for x in data_files]
...         fs.download(data_files, tmp_files)
...         upload_folder(
...             repo_id=destination_dataset,
...             folder_path=tmp_dir,
...             repo_type="dataset",
...         )

Lihat dokumentasi huggingface_hub tentang pengunggahan file di sini jika Anda mencari lebih banyak opsi pengunggahan.

Terakhir, Anda sekarang dapat memuat dataset menggunakan 🤗 Datasets:

>>> from datasets import load_dataset
>>> ds = load_dataset("username/my-dataset")

Impor data mentah ke Storage Buckets

Sebagai alternatif, jika Anda tidak ingin menerbitkan dataset tetapi hanya mengimpor file data mentah ke dalam Storage Bucket Hugging Face, Anda dapat menggunakan:

>>> from huggingface_hub import create_bucket, sync_bucket
>>> from tqdm.auto import tqdm
>>> from itertools import batched
>>> from tempfile import TemporaryDirectory
>>> import os
>>> create_bucket("username/my-bucket")
>>> bucket_files_location = "hf://buckets/username/my-bucket/path/to/raw/files"
>>> batch_size = 100
>>> for data_files in batched(tqdm(fs.glob(data_dir + pattern)), batch_size):
...     with TemporaryDirectory() as tmp_dir:
...         tmp_files = [os.path.join(tmp_dir, x[len(data_dir):]) for x in data_files]
...         fs.download(data_files, tmp_files)
...         sync_bucket(tmp_dir, bucket_files_location)

Lihat dokumentasi huggingface_hub tentang Storage Buckets di sini jika Anda mencari lebih banyak opsi unggah.

Kemudian, Anda dapat memuat file mentah menggunakan 🤗 Datasets, mentransformasikannya, dan mengunggah dataset AI-ready akhir, misalnya dengan cara streaming:

Jika file dalam format yang didukung oleh 🤗 Datasets:

>>> from datasets import load_dataset
>>> ds = load_dataset(bucket_files_location, streaming=True)
>>> ds = ds.map(...).filter(...)
>>> ds.push_to_hub("username/my-dataset", num_proc=4)
>>> # and later
>>> ds = load_dataset("username/my-dataset")

Atau Anda dapat menggunakan fungsi parsing file Anda sendiri:

>>> from datasets import IterableDataset
>>> from huggingface_hub import hffs
>>> data_files = hffs.find(bucket_files_location)
>>> num_shards = 1024  # For parallelism. PS: every shard should fit in RAM
>>> ds = IterableDataset.from_dict({"data_file": data_files}, num_shards=num_shards)
>>> def parse_data_files(data_files):
...     ...
...     return {"col_1": [...], "col_2": [...]}
>>> ds = ds.map(parse_data_files, batched=True, input_column=["data_file"])
>>> ds.push_to_hub("username/my-dataset", num_proc=4)
>>> # and later
>>> ds = load_dataset("username/my-dataset")
Update on GitHub