Datasets documentation

Bulut depolama

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

Bulut depolama

Hugging Face Datasets

Hugging Face Veri Seti Hub'ı, çeşitli alanları ve görevleri kapsayan, sürekli büyüyen bir veri seti koleksiyonuna ev sahipliği yapmaktadır.

Sadece bir bulut depolama alanından fazlasıdır: Dataset Hub, git sayesinde veri sürümleme imkânı sunan ve verileri keşfetmek için bir Dataset Viewer içeren bir platformdur; bu da onu AI-uygun veri setlerini depolamak için mükemmel bir yer haline getirir.

Bu kılavuz, fsspec dosya sistemi uygulamalarını kullanarak diğer bulut depolama alanlarından veri içe aktarmanın nasıl yapılacağını gösterir.

Hugging Face Depolama Kovaları

Storage Buckets, Hugging Face Hub'da S3 benzeri nesne depolama sunan bir depo türüdür ve Xet depolama altyapısıyla çalışır. Git tabanlı veri seti depolarından farklı olarak bucket'lar sürüm yönetimi yapılmaz ve değiştirilebilir; sürüm kontrolüne ihtiyaç duymayan günlükler, ara artefaktlar veya büyük dosya koleksiyonları gibi basit ve hızlı depolama gerektiren kullanım senaryoları için tasarlanmıştır.

Bulut depolamadan veri içe aktarma

Çoğu bulut depolama sağlayıcısının fsspec FileSystem uygulaması vardır; bu, aynı kodla herhangi bir bulut sağlayıcısından veri içe aktarmak için kullanışlıdır. Bu, Hugging Face üzerinde veri setleri yayınlamak için özellikle faydalıdır.

Desteklenen bulut depolama sağlayıcılarının bazı örnekleri için aşağıdaki tabloya göz atın:

Depolama sağlayıcısıDosya sistemi uygulaması
Amazon S3s3fs
Google Cloud Storagegcsfs
Azure Blob/DataLakeadlfs
Oracle Cloud Storageocifs

Bu kılavuz, herhangi bir bulut depolama alanından veri dosyalarını içe aktarma ve bir veri setini Hugging Face üzerinde kaydetme yöntemini gösterir.

Parquet dosyalarından bulut depolamasında bir veri setini Hugging Face'te yayınlamak istediğimizi varsayalım.

Öncelikle bulut depolama dosya sisteminizi örnekleyin ve içe aktarmak istediğiniz dosyaları listeleyin:

>>> 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", ...]

Bir Veri Seti Yayınla

Ardından Hugging Face üzerinde bir veri seti oluşturabilir ve veri dosyalarını örneğin şu şekilde içe aktarabilirsiniz:

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

Daha fazla yükleme seçeneği arıyorsanız, dosya yüklemeleri hakkında huggingface_hub dokümantasyonuna buradan göz atabilirsiniz.

Son olarak, artık veri setini 🤗 Datasets kullanarak yükleyebilirsiniz:

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

Ham verileri Storage Buckets'a aktarın

Alternatif olarak, bir veri seti yayınlamak yerine ham veri dosyalarını doğrudan bir Hugging Face Storage Bucket'a içe aktarmak istiyorsanız, şunu kullanabilirsiniz:

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

Daha fazla yükleme seçeneği arıyorsanız, Storage Buckets hakkında huggingface_hub dokümantasyonuna buradan göz atabilirsiniz.

Daha sonra ham dosyaları 🤗 Datasets ile yükleyebilir, dönüştürebilir ve son AI-ready veri setlerini örneğin streaming yöntemiyle yükleyebilirsiniz:

Dosyalar 🤗 Datasets tarafından desteklenen bir biçimdeyse:

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

Aksi takdirde kendi dosya ayrıştırma işlevinizi kullanabilirsiniz:

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