Hub documentation

Kütüphaneler

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Kütüphaneler

Datasets Hub, Açık Kaynak ekosistemindeki çeşitli kütüphaneler için destek sunar. huggingface_hub Python kütüphanesi sayesinde veri setlerinizi Hub üzerinde paylaşmayı etkinleştirmek kolaydır. Makine Öğrenmesini ileriye taşıyan bir dizi Açık Kaynak kütüphanesini Hub'a davet etmekten mutluluk duyuyoruz.

Kütüphaneler tablosu

Aşağıdaki tablo, desteklenen kütüphaneleri ve entegrasyon düzeylerini özetler.

KütüphaneAçıklamaHub'dan indirHub'dan akışHub'a YükleHub'a AkıtOptimize edilmiş Parquet dosyaları
ArgillaYüksek kaliteli veriyi önemseden yapay zeka mühendisleri ve alan uzmanları için iş birliği aracı.✅❌✅❌❌
DaftPython yerel arayüze sahip, büyük ölçekli ve çok modlu veri işleme için veri motoru.✅✅✅✅✅
DaskMevcut Python ve PyData ekosistemini ölçeklendiren paralel ve dağıtık hesaplama kütüphanesi.✅✅✅✅✅*
Veri TasarımcısıLLM'ler kullanarak sentetik veri setleri üretmek için NVIDIA NeMo çerçevesi.✅❌✅❌❌
Veri Setleri🤗 Datasets, Ses, Bilgisayarlı Görü ve Doğal Dil İşleme (NLP) için veri setlerine erişmek ve paylaşmak için kullanılan bir kütüphanedir.✅✅✅✅✅
DistilabelSentetik veri üretimi ve yapay zeka geri bildirimi için çerçeve.✅❌✅❌❌
DuckDBSüreç içi SQL OLAP veritabanı yönetim sistemi.✅✅❌❌❌
Gömme AtlasıBüyük gömme (embedding) kümeleri için etkileşimli görselleştirme ve keşif aracı.✅✅❌❌❌
FenicÜretim ortamında yapay zeka ve ajan tabanlı uygulamalar geliştirmek için PySpark'tan ilham alan bir DataFrame çerçevesi.✅✅❌❌❌
FiftyOneFiftyOne, görüntü, video ve 3B verilerinin kürasyonu ve görselleştirilmesi için bir kütüphanedir.✅✅✅❌❌
LanceÇok modlu yapay zeka için açık bir göl evi (lakehouse) biçimi.✅✅❌❌❌
PandasPython veri analizi araç seti.✅❌✅❌✅*
PolarsBir OLAP sorgu motorunun üzerine kurulu bir DataFrame kütüphanesi.✅✅✅❌❌
PyArrowApache Arrow, hızlı veri değişimi ve bellek içi analitik için bir sütun tabanlı biçim ve araç kutusudur.✅✅✅❌✅*
SparkDağıtık bir ortamda gerçek zamanlı, büyük ölçekli veri işleme aracı.✅✅✅✅✅
WebDatasetBüyük veri kümeleri için G/Ç (Giriş/Çıkış) boru hatları yazmak için kütüphane.✅✅❌❌❌

* Optimize edilmiş Parquet dosyaları yazmak için ek argümanların geçirilmesini gerektirir

Veri İşleme Kütüphaneleri

Akış

Dataset streaming, bir veri setini Hugging Face'ten tamamen indirmeden kademeli olarak işlemeye olanak tanır. Veri asla diske yazılmadığı için yerel disk alanı tasarrufu sağlar. Bir anda veri setinin yalnızca küçük bir bölümü kullanıldığı için bellek tasarrufu sağlar. CPU veya GPU iş yükünden önce veri indirme gereksinimi olmadığı için de zaman tasarrufu sağlar.

Hugging Face'ten akış dışında, birçok kütüphane Hugging Face'e geri akış desteği de sunar. Bu nedenle uçtan uca akış hatları çalıştırabilirler: bir kaynaktan akış alıp Hugging Face'e kademeli olarak yazma, çoğu zaman indirme, yükleme ve işleme adımlarını üst üste bindirme.

Akış işleminin nasıl yapılacağına dair daha fazla ayrıntı için, akışı destekleyen bir kütüphanenin (yukarıdaki tabloya bakın) belgelerini inceleyin veya Hugging Face'ten veri kümelerini kendiniz akışa almak istiyorsanız streaming datasets belgesine göz atın.

Optimize edilmiş Parquet dosyaları

Hugging Face üzerindeki Parquet dosyaları, depolama verimliliğini artırmak, indirme ve yükleme işlemlerini hızlandırmak ve verimli veri seti akışını ve düzenlemeyi mümkün kılmak üzere optimize edilmiştir.

Optimize edilmiş Parquet dosyaları, ek özelliklere sahip Parquet dosyalarıdır:

  • Parquet İçerik Tanımlı Parçalama, Hugging Face'in depolama altyapısı olan Xet için Parquet'i optimize eder. Parça tabanlı kopya azaltma sayesinde yüklemeleri ve indirmeleri hızlandırır ve verimli dosya düzenlemeye olanak tanır
  • Page index, akış sırasında filtreleri hızlandırır ve Dataset Viewer gibi durumlarda verimli rastgele erişim sağlar.

Bazı kütüphaneler, Pandas ve PyArrow gibi Optimize Edilmiş Parquet dosyaları yazmak için ek bir argüman gerektirir:

  • Parquet İçerik Tanımlı Parçalama'yı etkinleştirmek için use_content_defined_chunking=True, ayıklama ve düzenleme için
  • Parquet metaverisinde sayfa dizini içermek için write_page_index=True, akış ve rastgele erişim için

Eğitim Kütüphaneleri

Hub veri setleriyle model eğitimi için entegre olan eğitim kütüphaneleri. Aşağıdaki tablo, veri setlerini önceden indirmeden eğitim yapma yeteneği olan akış (streaming) özelliklerini göstermektedir.

KütüphaneAçıklamaHub'dan akış
AxolotlDüşük kodlu LLM ince ayar çerçevesi✅
LlamaFactory100'den fazla LLM için birleşik ince ayar✅
Sentence TransformersMetin gömlemleri ve anlamsal benzerlik✅
Transformers🤗 Transformers Trainer ile modelleri ince ayar yapmak✅
TRLPekiştirmeli öğrenme ile LLM'lerin eğitimi (SFT, DPO, GRPO)⚠️*
UnslothHızlı LLM ince ayarı (2x hızlanma, %70 daha az bellek)✅

* SFTTrainer ve DPOTrainer akış işleme (streaming) destekler; GRPOTrainer henüz akış işleme girdisini desteklemez

Hub'dan Akış

Streaming, dev setlerini önceden indirmeden devasa veri kümeleri üzerinde eğitim yapmanıza olanak tanır. Bu, şu durumlarda değerlidir:

  • Veri setiniz diske sığacak kadar büyük değil
  • Hemen eğitim başlatmak istiyorsanız
  • HF Jobs kullanıyorsunuz; aynı konumda bulunan hesaplama birimleri daha hızlı akış sağlar

Yapılan son iyileştirmeler, daha hızlı başlatma, ön yükleme ve çok sayıda işçiye daha iyi ölçeklenme sayesinde akışın 100 kata kadar daha verimli olmasını sağlamıştır.

Not: Veri seti uzunluğu bilinmediğinden, akış için eğitim argümanlarında max_steps gereklidir ve tampon tabanlı karıştırma kullanılır. Daha fazla ayrıntı için akış veri setleri bölümüne bakın.

Hub'a Kayıt

Bazı araçlar, eğitim sırasında eğitim verilerini Hub'a geri aktarabilir:

  • Trackio: Eğitim metriklerini gerçek zamanlı olarak bir Hub veri setine aktarır

Hub ile veri kütüphanelerini ve araçlarını entegre etme

Bu kılavuz, Hugging Face Hub ile entegrasyon yapmak isteyen veri kütüphanelerinin ve araçlarının geliştiricileri ile bakımcıları için tasarlanmıştır. Bir veri işleme kütüphanesi, analiz aracı veya veri setleriyle etkileşime girmesi gereken herhangi bir yazılım geliştiriyor olsanız bile, bu dokümantasyon size bir Hub entegrasyonu uygulamak konusunda yardımcı olacaktır.

Kılavuz şunları kapsar:

  • Hub'dan verileri kütüphanenize/aracınıza yüklemek için olası yaklaşımlar
  • Kitaplığınızdan/aracınızdan Hub'a veri yükleme için olası yaklaşımlar

Hub'dan veri yükleme

Veriyle çalışmak için bir kütüphaneniz varsa, kullanıcılarınızın Hub'dan veri yüklemesi onlar için faydalı olabilir.

Genel olarak, kendi uygulamanızı yazmak için belirli bir nedeniniz olmadıkça bunu yapmak için datasets, pandas veya polars gibi mevcut bir kütüphaneye güvenmenizi öneririz. Yükleme süreci üzerinde daha fazla kontrol gerektiriyorsanız, örneğin bir depodan belirli bir dosya alt kümesini indirmenize olanak tanıyan huggingface_hub kütüphanesini kullanabilirsiniz.

Hub'dan veri yükleme hakkında daha fazla bilgiyi burada bulabilirsiniz.

Veri Seti Görüntüleyici ve Parquet Dosyaları Üzerinden Entegrasyon

Hub’un veri seti görüntüleyicisi ve Parquet dönüştürme sistemi, veri setlerinin orijinal formatından bağımsız olarak onlarla entegre olmak için standart bir yöntem sağlar. Bu altyapı, Hub ile harici kütüphaneler arasında güvenilir bir entegrasyon katmanıdır.

Veri seti zaten Parquet formatında değilse, Hub, veri seti görüntüleyicisini çalıştırmak ve tutarlı erişim desenleri sağlamak için her veri setinin ilk 5 GB'ını otomatik olarak Parquet formatına dönüştürür. Bu standartlaştırma, kütüphane entegrasyonları için çeşitli avantajlar sunar:

  • Orijinal biçimden bağımsız olarak tutarlı veri erişim kalıpları
  • Hub’un veri seti görüntüleyicisi aracılığıyla yerleşik veri seti önizleme ve keşif. Veri seti görüntüleyicisi, zengin veri seti önizlemeleri sunmayı kolaylaştıran bir iframe olarak uygulamalarınıza da gömülebilir. Görüntüleyiciyi gömleme hakkında daha fazla bilgi için veri seti görüntüleyicisi gömme belgelerini inceleyin.
  • Sorgulama için optimize edilmiş verimli sütun tabanlı depolama. Örneğin, belirli bir veri alt kümesini sorgulamak veya filtrelemek için DuckDB gibi bir araç kullanabilirsiniz.
  • Parquet, makine öğrenimi ve veri bilimi ekosisteminde iyi desteklenmektedir.

Dataset Viewer API ile çalışma hakkında daha fazla ayrıntı için Dataset Viewer API belgelerini inceleyin.

Verileri Hub'a yükleme

Bu bölüm, kütüphanenize Hub'a veri yükleme yeteneği ekleme konusunda olası yaklaşımları, yani push_to_hub metodunun nasıl uygulanacağını ele alır.

Bu kılavuz, verileri Hub'a yüklemenin üç temel yolunu ele alacaktır:

  • datasets kütüphanesini ve push_to_hub yöntemini kullanarak
  • Hub'a pandas kullanarak yazma
  • huggingface_hub kütüphanesini ve upload_folder yöntemini kullanarak

datasets kütüphanesini kullanın

Hub'a veri göndermenin en doğrudan yolu, datasets kütüphanesindeki mevcut push_to_hub yöntemine güvenmektir. push_to_hub yöntemi otomatik olarak şunları ele alır:

  • deponun oluşturulması
  • veri setinin Parquet'e dönüştürülmesi
  • veri setini uygun parçalara ayırma
  • verilerin yüklenmesi

Örneğin, sözlük listesini döndüren sentetik veri üretme kütüphaneniz varsa, aşağıdaki işlemi basitçe yapabilirsiniz:

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

Bu tür entegrasyonun örnekleri:

Hub ile mevcut bir kütüphane entegrasyonuna güvenin

Polars, Pandas, Dask, Spark, DuckDB ve Daft, hepsi bir Hugging Face Hub deposuna yazabilir. Daha fazla ayrıntı için yukarıdaki Kütüphaneler tablosuna bakın.

Kodunuzda bu kütüphanelerden birini zaten kullanıyorsanız, Hub'a gönderme yeteneğini eklemek basittir. Örneğin, bir Pandas DataFrame döndürebilen sentetik veri üretimi kütüphaneniz varsa, Hub'a yazmak için yazmanız gereken kod şudur:

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

huggingface_hub Python kütüphanesini kullanarak

huggingface_hub Python kütüphanesi, Hub'a veri yüklemek için daha esnek bir yaklaşım sunar. Kütüphane, bir depoya belirli dosyaları veya dosya alt kümelerini yüklemenizi sağlar. Bu, Parquet'e dönüştürmek istemediğiniz büyük bir veri setiniz varsa, belirli bir dosya alt kümesini yüklemek istiyorsanız veya depo yapısı üzerinde daha fazla kontrol sahibi olmak istiyorsanız faydalıdır.

Kullanım senaryonuza bağlı olarak, kodunuzun belirli bir noktasında bir dosya veya klasör yükleyebilirsiniz; örneğin, bir kullanıcı “Hub'a gönder” düğmesine tıkladığında bir araçtan Hub'a etiketleri dışa aktarabilirsiniz. Örneğin,

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

Hub'a veri yükleme yöntemleri hakkında daha fazla bilgiyi burada bulabilirsiniz.

Alternatif olarak, arka planda veri yüklemek isteyebileceğiniz durumlar vardır; örneğin, her 10 dakikada bir üretilen sentetik veriler. Bu durumda huggingface_hub kütüphanesinin CommitScheduler sınıfını kullanabilirsiniz. Daha fazla ayrıntı için zamanlanmış yüklemeler belgelerini inceleyin.

Bu yaklaşımı kullanarak Hub'a veri yükleme örneğini

Daha fazla destek

Entegrasyonla ilgili teknik sorularınız için datasets@huggingface.co adresinden datasets ekibiyle iletişime geçmekten çekinmeyin.

Update on GitHub