#
شارك نموذجك مع العالم

أظهرت آخر درسين تعليميين كيفية ضبط نموذج بدقة باستخدام PyTorch و Keras و 🤗 Accelerate لعمليات التهيئة الموزعة. والخطوة التالية هي مشاركة نموذجك مع المجتمع! في Hugging Face، نؤمن بالمشاركة المفتوحة للمعرفة والموارد لتمكين الجميع من الاستفادة من الذكاء الاصطناعي. ونشجعك على مشاركة نموذجك مع المجتمع لمساعدة الآخرين على توفير الوقت والموارد.

في هذا الدرس، ستتعلم طريقتين لمشاركة نموذجك المدرب أو مضبوط على منصة Model Hub:

- رفع ملفاتك إلى منصة Hub مباشرة باستخدام الكود البرمجي.

- قم بسحب وإفلات ملفاتك إلى Hub باستخدام الواجهة web.

لمشاركة نموذج مع المجتمع، تحتاج إلى حساب على huggingface.co. يمكنك أيضًا الانضمام إلى منظمة موجودة أو إنشاء منظمة جديدة.

##
ميزات المستودع

يعمل كل مستودع على Model Hub مثل مستودع GitHub النتقليدي. تقدم مستودعاتنا التحكم في الإصدارات وسجل التغييرات، وقدرة على رؤية الاختلافات بين الإصدارات.

تعتمد آلية التحكم في الإصدارات على منصة Model Hub على نظامي git و git-lfs. وبعبارة أخرى، يمكنك التعامل مع كل نموذج كأنه مستودع مستقل، مما يمكّن من زيادة التحكم في الوصول والقابلية للتطوير. يسمح التحكم في الإصدار بإجراء تعديلات وتثبيت إصدار محدد من النموذج باستخدام رمز التغيير (commit hash) أو وسم (tag) أو فرع (branch).

بفضل هذه الميزة، يمكنك تحميل إصدار محدد من النموذج باستخدام معلمة الإصدار “revision”:

    >>> model = AutoModel.from_pretrained(
    ...     "julien-c/EsperBERTo-small", revision="v2.0.1"  # اسم العلامة، أو اسم الفرع، أو تجزئة الالتزام
    ... )

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

##
الإعداد

قبل مشاركة نموذج على Hub، ستحتاج إلى بيانات اعتماد حساب Hugging Face الخاصة بك. إذا كنت تستخدم منصة الأوامر، فقم بتشغيل الأمر التالي في بيئة افتراضية حيث تم تثبيت 🤗 Transformers. سيقوم هذا الأمر بتخزين رمز الدخول الخاص بك في مجلد تخزين المؤقت لـ Hugging Face (`~/.cache/` بشكل افتراضي):

    huggingface-cli login

إذا كنت تستخدم دفتر ملاحظات مثل Jupyter أو Colaboratory، فتأكد من تثبيت مكتبة `huggingface_hub`. تسمح لك هذه المكتبة بالتفاعل برمجيًا مع Hub.

    pip install huggingface_hub

ثم استخدم `notebook_login` لتسجيل الدخول إلى Hub، واتبع الرابط هنا لإنشاء رمز للتسجيل:

    >>> from huggingface_hub import notebook_login

    >>> notebook_login()

##
تحويل النموذج ليتوافق مع جميع الأطر العمل

لضمان إمكانية استخدام نموذجك من قبل شخص يعمل بإطار عمل مختلف، نوصي بتحويل نموذجك ورفعه مع نقاط التحقق من PyTorch و TensorFlow. في حين أن المستخدمين لا يزال بإمكانهم تحميل نموذجك من إطار عمل مختلف إذا تخطيت هذه الخطوة، إلا أنه سيكون أبطأ لأن 🤗 Transformers ستحتاج إلى تحويل نقطة التحقق أثناء التشغيل.

تحويل نقطة التحقق لإطار عمل آخر أمر سهل. تأكد من تثبيت PyTorch و TensorFlow (راجع هنا لتعليمات التثبيت)، ثم ابحث عن النموذج الملائم لمهمتك في الإطار الآخر.

Pytorch
Hide Pytorch content

حدد `from_tf=True` لتحويل نقطة تحقق من TensorFlow إلى PyTorch:

    >>> pt_model = DistilBertForSequenceClassification.from_pretrained("path/to/awesome-name-you-picked", from_tf=True)
    >>> pt_model.save_pretrained("path/to/awesome-name-you-picked")

TensorFlow
Hide TensorFlow content

حدد `from_pt=True` لتحويل نقطة تحقق من PyTorch إلى TensorFlow:

    >>> tf_model = TFDistilBertForSequenceClassification.from_pretrained("path/to/awesome-name-you-picked", from_pt=True)

بعد ذلك، يمكنك حفظ نموذج TensorFlow الجديد بنقطة التحقق الجديدة:

    >>> tf_model.save_pretrained("path/to/awesome-name-you-picked")

JAX
Hide JAX content

إذا كان النموذج متاحًا في Flax، فيمكنك أيضًا تحويل نقطة تحقق من PyTorch إلى Flax:

    >>> flax_model = FlaxDistilBertForSequenceClassification.from_pretrained(
    ...     "path/to/awesome-name-you-picked", from_pt=True
    ... )

##
دفع نموذج أثناء التدريب

Pytorch
Hide Pytorch content

مشاركة نموذجك على Hub مر بسيط للغاية كل ما عليك هو إضافة معلمة أو استدعاء رد إضافي. كما تذكر من درس التدريب الدقيق، فإن فئة `TrainingArguments` هي المكان الذي تحدد فيه المعلمات الفائقة وخيارات التدريب الإضافية. تشمل إحدى خيارات التدريب هذه القدرة على دفع النموذج مباشرة إلى المنصة Hub. قم بتعيين `push_to_hub=True` في `TrainingArguments`:

    >>> training_args = TrainingArguments(output_dir="my-awesome-model", push_to_hub=True)

مرر معامﻻت التدريب كالمعتاد إلى `Trainer`:

    >>> trainer = Trainer(
    ...     model=model,
    ...     args=training_args,
    ...     train_dataset=small_train_dataset,
    ...     eval_dataset=small_eval_dataset,
    ...     compute_metrics=compute_metrics,
    ... )

بعد ضبط نموذجك بدقة، يمكنك استخدام دالة `push_to_hub()` المتاحة في `Trainer` لدفع النموذج المدرب إلى المنصة Hub. سوف تضيف 🤗 Transformers تلقائيًا المعلمات الفائقة المستخدمة في التدريب ونتائج التدريب وإصدارات الإطار إلى بطاقة معلومات النموذج الخاصة بك!

    >>> trainer.push_to_hub()

TensorFlow
Hide TensorFlow content

شارك نموذجًا على Hub باستخدام `PushToHubCallback`. في دالة `PushToHubCallback`, أضف:

- دليل إخراج لنموذجك.
- مُجزّئ اللغوي.
- `hub_model_id`، والذي هو اسم مستخدم Hub واسم النموذج الخاص بك.

    >>> from transformers import PushToHubCallback

    >>> push_to_hub_callback = PushToHubCallback(
    ...     output_dir="./your_model_save_path", tokenizer=tokenizer, hub_model_id="your-username/my-awesome-model"
    ... )

أضف الاستدعاء إلى `fit`، وسيقوم 🤗 Transformers بدفع النموذج المدرب إلى Hub:

    >>> model.fit(tf_train_dataset, validation_data=tf_validation_dataset, epochs=3, callbacks=push_to_hub_callback)

##
استخدام دالة push_to_hub

يمكنك أيضًا استدعاء `push_to_hub` مباشرة على نموذجك لتحميله إلى Hub.

حدد اسم نموذجك في `push_to_hub`:

    >>> pt_model.push_to_hub("my-awesome-model")

ينشئ هذا مستودعًا تحت اسم المستخدم الخاص بك باسم نموذج `my-awesome-model`. يمكن للمستخدمين الآن تحميل نموذجك باستخدام دالة `from_pretrained`:

    >>> from transformers import AutoModel

    >>> model = AutoModel.from_pretrained("your_username/my-awesome-model")

    >>> from transformers import AutoModel

    >>> model = AutoModel.from_pretrained("your_username/my-awesome-model")

إذا كنت تنتمي إلى منظمة وتريد دفع نموذجك تحت اسم المنظمة بدلاً من ذلك، فما عليك سوى إضافته إلى `repo_id`:

    >>> pt_model.push_to_hub("my-awesome-org/my-awesome-model")

يمكن أيضًا استخدام دالة `push_to_hub` لإضافة ملفات أخرى إلى مستودع النماذج. على سبيل المثال، أضف رموزًا إلى مستودع نموذج:

    >>> tokenizer.push_to_hub("my-awesome-model")

أو ربما تريد إضافة إصدار TensorFlow من نموذج PyTorch المضبوط:

    >>> tf_model.push_to_hub("my-awesome-model")

الآن عند الانتقال إلى ملفك الشخصي على Hugging Face، يجب أن ترى مستودع النماذج الذي أنشأته حديثًا. سيؤدي النقر فوق علامة التبويب Files إلى عرض جميع الملفات التي قمت بتحميلها في المستودع.

للحصول على مزيد من التفاصيل حول كيفية إنشاء الملفات وتحميلها إلى مستودع، راجع وثائق Hub هنا.

##
التحميل باستخدام الواجهة web

يمكن للمستخدمين الذين يفضلون نهج عدم الترميز تحميل نموذج من خلال واجهة Hub web. قم بزيارة huggingface.co/new لإنشاء مستودع جديد:

من هنا، أضف بعض المعلومات حول نموذجك:

- حدد مالك المستودع. يمكن أن يكون هذا أنت أو أي من المنظمات التي تنتمي إليها.
- اختر اسمًا لنموذجك، والذي سيكون أيضًا اسم المستودع.
- اختر ما إذا كان نموذجك عامًا أم خاصًا.
- حدد ترخيص الاستخدام لنموذجك.

الآن انقر فوق علامة التبويب Files ثم انقر فوق الزر Add file لإضافة ملف جديد إلى مستودعك. ثم اسحب وأسقط ملفًا لتحميله وأضف رسالة الالتزام.

##
إضافة بطاقة نموذج

للتأكد من فهم المستخدمين لقدرات نموذجك وقيوده وتحيزاته المحتملة واعتباراته الأخلاقية، يرجى إضافة بطاقة نموذج إلى مستودعك. يتم تعريف بطاقة النموذج في ملف `README.md`. يمكنك إضافة بطاقة نموذج عن طريق:

- قم بإنشاء ملف `README.md` وتحميله يدويًا.
- انقر فوق الزر Edit model card في مستودع نموذجك.

الق نظرة على بطاقة DistilBert للحصول على مثال جيد على نوع المعلومات التي يجب أن تتضمنها بطاقة النموذج. للحصول على مزيد من التفاصيل حول الخيارات الأخرى التي يمكنك التحكم فيها في ملف `README.md` مثل البصمة الكربونية للنموذج أو أمثلة الأداة، راجع الوثائق هنا.

< > Update on GitHub