Hub documentation
Kütüphaneler
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üphane | Açıklama | Hub'dan indir | Hub'dan akış | Hub'a Yükle | Hub'a Akıt | Optimize edilmiş Parquet dosyaları |
|---|---|---|---|---|---|---|
| Argilla | Yüksek kaliteli veriyi önemseden yapay zeka mühendisleri ve alan uzmanları için iş birliği aracı. | ✅ | ❌ | ✅ | ❌ | ❌ |
| Daft | Python yerel arayüze sahip, büyük ölçekli ve çok modlu veri işleme için veri motoru. | ✅ | ✅ | ✅ | ✅ | ✅ |
| Dask | Mevcut 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. | ✅ | ✅ | ✅ | ✅ | ✅ |
| Distilabel | Sentetik veri üretimi ve yapay zeka geri bildirimi için çerçeve. | ✅ | ❌ | ✅ | ❌ | ❌ |
| DuckDB | Sü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. | ✅ | ✅ | ❌ | ❌ | ❌ |
| FiftyOne | FiftyOne, 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. | ✅ | ✅ | ❌ | ❌ | ❌ |
| Pandas | Python veri analizi araç seti. | ✅ | ❌ | ✅ | ❌ | ✅* |
| Polars | Bir OLAP sorgu motorunun üzerine kurulu bir DataFrame kütüphanesi. | ✅ | ✅ | ✅ | ❌ | ❌ |
| PyArrow | Apache Arrow, hızlı veri değişimi ve bellek içi analitik için bir sütun tabanlı biçim ve araç kutusudur. | ✅ | ✅ | ✅ | ❌ | ✅* |
| Spark | Dağıtık bir ortamda gerçek zamanlı, büyük ölçekli veri işleme aracı. | ✅ | ✅ | ✅ | ✅ | ✅ |
| WebDataset | Bü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üphane | Açıklama | Hub'dan akış |
|---|---|---|
| Axolotl | Düşük kodlu LLM ince ayar çerçevesi | ✅ |
| LlamaFactory | 100'den fazla LLM için birleşik ince ayar | ✅ |
| Sentence Transformers | Metin gömlemleri ve anlamsal benzerlik | ✅ |
| Transformers | 🤗 Transformers Trainer ile modelleri ince ayar yapmak | ✅ |
| TRL | Pekiştirmeli öğrenme ile LLM'lerin eğitimi (SFT, DPO, GRPO) | ⚠️* |
| Unsloth | Hı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:
datasetskütüphanesini vepush_to_hubyöntemini kullanarak- Hub'a
pandaskullanarak yazma huggingface_hubkütüphanesini veupload_folderyö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