Hub documentation

المكتبات

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

المكتبات

يدعم مركز البيانات (Datasets Hub) عدة مكتبات في منظومة المصادر المفتوحة. بفضل مكتبة huggingface_hub بلغة بايثون، يصبح من السهل تمكين مشاركة مجموعات البيانات الخاصة بك على المركز. يسعدنا أن نرحب في المركز بمجموعة من المكتبات مفتوحة المصدر التي تدفع مجال تعلم الآلة إلى الأمام.

جدول المكتبات

تلخص الجدول أدناه المكتبات المدعومة ومستوى تكاملها.

المكتبةالوصفالتحميل من Hubالبث من Hubالرفع إلى المستودعالبث إلى Hubملفات Parquet المُحسّنة
Daftمحرك بيانات لمعالجة البيانات متعددة الوسائط على نطاق واسع، مع واجهة أصلية بلغة بايثون.✅✅✅✅✅
Daskمكتبة للحوسبة المتوازية والموزعة توسّع نطاق منظومة Python وPyData الحالية.✅✅✅✅✅*
مصمم البياناتإطار عمل NVIDIA NeMo لتوليد مجموعات بيانات اصطناعية باستخدام نماذج اللغة الكبيرة.✅❌✅❌❌
المجموعات🤗 Datasets هي مكتبة للوصول إلى مجموعات البيانات ومشاركتها في مجالات الصوت، ورؤية الحاسوب، ومعالجة اللغة الطبيعية (NLP).✅✅✅✅✅
DuckDBنظام إدارة قواعد بيانات SQL OLAP يعمل داخل العملية.✅✅✅✅❌
Lanceتنسيق بحيرة بيانات مفتوح للذكاء الاصطناعي متعدد الوسائط.✅✅❌❌❌
Pandasأدوات تحليل البيانات بلغة بايثون.✅❌✅❌✅*
Polarsمكتبة إطار بيانات (DataFrame) مبنية على محرك استعلامات OLAP.✅✅✅❌❌
PyArrowApache Arrow هو تنسيق أعمدي وأدوات لصياغة البيانات السريعة والتحليلات في الذاكرة.✅✅✅✅✅*
Sparkأداة لمعالجة البيانات على نطاق واسع في الوقت الفعلي ضمن بيئة موزعة.✅✅✅✅✅
WebDatasetمكتبة لكتابة خطوط أنابيب الإدخال/الإخراج للمجموعات البيانات الكبيرة.✅✅❌❌❌

* يتطلب تمرير حِجج إضافية لكتابة ملفات Parquet مُحسَّنة

تتوفر في مكتبات أخرى تكاملات لتدقيق مجموعات البيانات: Embedding Atlas (تصور التضمينات)، Fenic (المعالجة الدلالية)، FiftyOne (تصور الصور وتدقيقها).

مكتبات معالجة البيانات

البث

يتيح بثّ مجموعة البيانات (Dataset streaming) التكرار على مجموعة بيانات من Hugging Face بشكل تدريجي دون الحاجة إلى تنزيلها بالكامل. يوفر مساحة على القرص المحلي لأن البيانات لا تُحفظ على القرص أبدًا. ويوفر الذاكرة لأن جزءًا صغيرًا فقط من مجموعة البيانات يُستخدم في كل مرة. كما يوفر الوقت، إذ لا حاجة إلى تنزيل البيانات قبل بدء الحمل على وحدة المعالجة المركزية (CPU) أو وحدة معالجة الرسوميات (GPU).

بالإضافة إلى البث من Hugging Face، تدعم العديد من المكتبات أيضًا البث إلى Hugging Face. لذلك، يمكنها تشغيل خطوط أنابيب بث من طرف إلى طرف: البث من مصدر والكتابة إلى Hugging Face بشكل تدريجي، وغالبًا ما تتداخل خطوات التنزيل والرفع والمعالجة.

لمزيد من التفاصيل حول كيفية تنفيذ البث، راجع توثيق مكتبة تدعم البث (انظر الجدول أعلاه) أو توثيق مجموعات البيانات البثية إذا كنت ترغب في بث مجموعات البيانات من Hugging Face بنفسك.

ملفات Parquet المُحسّنة

تم تحسين ملفات Parquet على Hugging Face لتحسين كفاءة التخزين، وتسريع عمليات التنزيل والرفع، وتمكين بث مجموعات البيانات وتحريرها بكفاءة.

الملفات المُحسَّنة من نوع Parquet هي ملفات Parquet تتضمن ميزات إضافية:

  • يحسّن Parquet Content Defined Chunking ملفات Parquet من أجل Xet، وهو نظام تخزين Hugging Face. فهو يسرّع عمليات الرفع والتنزيل بفضل إزالة التكرار على أساس المقاطع، ويتيح تحرير الملفات بكفاءة
  • يسرّع فهرس الصفحة عمليات التصفية أثناء البث المباشر ويتيح وصولاً عشوائياً فعالاً، على سبيل المثال في عارض مجموعة البيانات

تتطلب بعض المكتبات حجة إضافية لكتابة ملفات Parquet المحسّنة مثل Pandas وPyArrow:

مكتبات التدريب

مكتبات التدريب التي تتكامل مع مجموعات بيانات Hub لتدريب النماذج. تُظهر الجدول أدناه قدرات البث المباشر - أي القدرة على التدريب على مجموعات البيانات دون الحاجة إلى تنزيلها أولاً.

المكتبةالوصفالبث من Hub
Axolotlإطار عمل منخفض الكود لتدريب نماذج اللغة الكبيرة✅
LlamaFactoryضبط موحّد لأكثر من 100 نموذج لغة كبير✅
جُمل التحويلاتتضمينات النصوص والتشابه الدلالي✅
Transformers🤗 Transformers Trainer لضبط نماذج✅
TRLتدريب نماذج اللغة الكبيرة باستخدام التعلم المعزز (SFT، DPO، GRPO)⚠️*
Unslothضبط دقيق سريع للنماذج اللغوية الكبيرة (تسريع مرتين، تقليل الذاكرة بنسبة 70%)✅

* يدعم كل من SFTTrainer و DPOTrainer البث؛ بينما لا يدعم GRPOTrainer بعد إدخال البيانات عبر البث

البث من Hub

يتيح البث (Streaming) التدريب على مجموعات بيانات ضخمة دون الحاجة إلى تنزيلها أولاً. وهذا مفيد عندما:

  • مجموعة بياناتك كبيرة جداً بحيث لا يمكن تخزينها على القرص
  • تريد البدء بالتدريب فوراً
  • أنت تستخدم HF Jobs حيث يوفر الحوسبة المتقاربة بثًا أسرع

أدت التحسينات الأخيرة إلى زيادة كفاءة البث بما يصل إلى 100 ضعف مع بدء تشغيل أسرع، وجلب مسبق، وتوسع أفضل إلى العديد من العمال.

ملاحظة: يتطلب البث تحديد max_steps في حُجج التدريب لأن طول مجموعة البيانات غير معروف، كما أنه يستخدم الخلط القائم على المخازن المؤقتة. راجع مجموعات البيانات البثية لمزيد من التفاصيل.

التسجيل في Hub

يمكن لبعض الأدوات بث بيانات التدريب مرة أخرى إلى Hub أثناء التدريب:

  • Trackio: يبث مقاييس التدريب إلى مجموعة بيانات على Hub في الوقت الفعلي

تكامل مكتبات البيانات والأدوات مع Hub

صُمم هذا الدليل للمطورين وصانعي مكتبات البيانات وأدواتها الذين يرغبون في التكامل مع Hugging Face Hub. سواء كنت تبني مكتبة لمعالجة البيانات، أو أداة تحليل، أو أي برنامج يحتاج إلى التفاعل مع مجموعات البيانات، فإن هذه الوثائق ستساعدك على تنفيذ تكامل مع Hub.

يتناول الدليل:

  • الأساليب الممكنة لتحميل البيانات من Hub إلى مكتبتك/أداتك
  • الأساليب الممكنة لرفع البيانات من مكتبتك/أداتك إلى المستودع

تحميل البيانات من Hub

إذا كان لديك مكتبة للتعامل مع البيانات، فقد يكون من المفيد لمستخدميك تحميل البيانات من Hub.

بشكل عام، نقترح الاعتماد على مكتبة موجودة مسبقًا مثل datasets أو pandas أو polars للقيام بذلك، ما لم يكن لديك سبب محدد لتنفيذ ذلك بنفسك. إذا كنت بحاجة إلى مزيد من التحكم في عملية التحميل، يمكنك استخدام مكتبة huggingface_hub، والتي ستتيح لك، على سبيل المثال، تنزيل مجموعة فرعية محددة من الملفات من مستودع.

يمكنك العثور على مزيد من المعلومات حول تحميل البيانات من Hub هنا.

التكامل عبر عارض مجموعات البيانات وملفات Parquet

توفر عارض مجموعات البيانات في Hub ونظام التحويل إلى Parquet طريقة موحّدة للتكامل مع مجموعات البيانات بغض النظر عن صيغتها الأصلية. تُعد هذه البنية التحتية طبقة تكامل موثوقة بين Hub والمكتبات الخارجية.

إذا لم يكن مجموعة البيانات بصيغة Parquet بالفعل، فإن Hub يقوم تلقائيًا بتحويل أول 5 جيجابايت من كل مجموعة بيانات إلى صيغة Parquet لتشغيل عارض مجموعات البيانات وتوفير أنماط وصول متسقة. توفر هذه المعايير عدة فوائد لتكاملات المكتبات:

  • أنماط وصول متسقة إلى البيانات بغض النظر عن التنسيق الأصلي
  • معاينة واستكشاف المجموعات البيانات المدمجة من خلال عارض مجموعات البيانات الخاص بالمركز. يمكن أيضًا تضمين عارض مجموعات البيانات كإطار مضمّن (iframe) في تطبيقاتك، مما يسهّل توفير معاينات غنية لمجموعات البيانات. لمزيد من المعلومات حول تضمين العارض، راجع توثيق تضمين عارض مجموعات البيانات.
  • تخزين عمودي فعّال مُحسَّن للاستعلام. على سبيل المثال، يمكنك استخدام أداة مثل DuckDB للاستعلام عن مجموعة فرعية محددة من البيانات أو تصفيتها.
  • Parquet مدعوم بشكل جيد عبر منظومة تعلم الآلة وعلوم البيانات.

لمزيد من التفاصيل حول العمل مع واجهة برمجة تطبيقات Dataset Viewer، راجع توثيق واجهة برمجة تطبيقات Dataset Viewer

رفع البيانات إلى Hub

يتناول هذا القسم الأساليب الممكنة لإضافة القدرة على رفع البيانات إلى Hub في مكتبتك، أي كيفية تنفيذ طريقة push_to_hub.

ستغطي هذه الدليل ثلاث طرق رئيسية لرفع البيانات إلى Hub:

  • باستخدام مكتبة datasets وطريقة push_to_hub
  • استخدام pandas للكتابة إلى Hub
  • باستخدام مكتبة huggingface_hub وطريقة upload_folder

استخدم مكتبة datasets

أكثر الطرق مباشرةً لدفع البيانات إلى Hub هو الاعتماد على طريقة push_to_hub الموجودة مسبقًا في مكتبة datasets. ستتعامل طريقة push_to_hub تلقائيًا مع:

  • إنشاء المستودع
  • تحويل مجموعة البيانات إلى Parquet
  • تقسيم مجموعة البيانات إلى أجزاء مناسبة
  • رفع البيانات

على سبيل المثال، إذا كان لديك مكتبة لتوليد بيانات اصطناعية تُرجع قائمة من القواميس، يمكنك ببساطة القيام بما يلي:

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

أمثلة على هذا النوع من التكامل:

اعتمد على تكامل المكتبات الموجودة مع Hub

يمكن لكلٍّ من Polars وPandas وDask وSpark وDuckDB وDaft الكتابة إلى مستودع في Hugging Face Hub. راجع جدول المكتبات أعلاه لمزيد من التفاصيل.

إذا كنت تستخدم بالفعل إحدى هذه المكتبات في كودك، فإن إضافة القدرة على الدفع إلى Hub أمر بسيط. على سبيل المثال، إذا كان لديك مكتبة لتوليد بيانات اصطناعية يمكنها إرجاع Pandas DataFrame، فإليك الكود الذي ستحتاج إلى كتابته إلى Hub:

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 بلغة بايثون

توفر مكتبة huggingface_hub بلغة بايثون نهجًا أكثر مرونة لرفع البيانات إلى الـ Hub. تتيح لك المكتبة رفع ملفات محددة أو مجموعات فرعية من الملفات إلى مستودع. وهذا مفيد إذا كان لديك مجموعة بيانات كبيرة لا ترغب في تحويلها إلى Parquet، أو ترغب في رفع مجموعة فرعية محددة من الملفات، أو تريد مزيدًا من التحكم في بنية المستودع.

يعتمد على حالة الاستخدام لديك، يمكنك رفع ملف أو مجلد في نقطة محددة من كودك، أي تصدير التعليقات التوضيحية من أداة إلى Hub عند نقر المستخدم على «push to Hub». على سبيل المثال،

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 هنا.

بديلًا عن ذلك، توجد حالات قد ترغب فيها في رفع البيانات في الخلفية، على سبيل المثال، البيانات الاصطناعية التي يتم توليدها كل 10 دقائق. في هذه الحالة يمكنك استخدام فئة CommitScheduler من مكتبة huggingface_hub. لمزيد من التفاصيل، راجع توثيق الرفع المجدول.

يمكنك الاطلاع على مثال لاستخدام هذا النهج لرفع البيانات إلى Hub في

دعم إضافي

بالنسبة للأسئلة التقنية المتعلقة بالدمج، لا تتردد في التواصل مع فريق مجموعات البيانات على datasets@huggingface.co.

Update on GitHub