Hub documentation

استخدام 🤗 transformers في Hugging Face

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

استخدام 🤗 transformers في Hugging Face

🤗 transformers هي مكتبة تُديرها Hugging Face والمجتمع، مخصصة لأحدث تقنيات التعلم الآلي في PyTorch وTensorFlow وJAX. توفر آلاف النماذج المُسبقة التدريب لأداء مهام على أنماط مختلفة مثل النص والرؤية والصوت. نحن منحازون بعض الشيء، لكننا نحب 🤗 transformers حقًا!

استكشاف 🤗 transformers في Hub

يوجد أكثر من 630,000 نموذج transformers في Hub يمكنك العثور عليها من خلال التصفية على يسار صفحة النماذج.

يمكنك العثور على نماذج لمهام مختلفة كثيرة:

يمكنك تجربة النماذج مباشرةً في المتصفح إذا كنت ترغب في اختبارها دون تنزيلها، وذلك بفضل أدوات الواجهة المدمجة في المتصفح!

ملفات مستودع Transformers

تحتوي مستودعة نماذج Transformers بشكل عام على ملفات النموذج وملفات المعالج المسبق.

النموذج

  • تخزّن ملف config.json تفاصيل حول بنية النموذج مثل عدد الطبقات المخفية، حجم المفردات، عدد رؤوس الانتباه، أبعاد كل رأس، والمزيد. تُعد هذه البيانات الوصفية مخطط النموذج.

  • يخزّن ملف model.safetensors الطبقات والأوزان المُسبقة التدريب للنماذج. بالنسبة للنماذج الكبيرة، يتم تقسيم ملف safetensors إلى أجزاء لتقليل كمية الذاكرة المطلوبة لتحميله. تصفح ملف model.safetensors.index.json لمعرفة من أي ملف safetensors يتم تحميل أوزان النموذج.

    {
    "metadata": {
      "total_size": 16060522496
    },
    "weight_map": {
      "lm_head.weight": "model-00004-of-00004.safetensors",
      "model.embed_tokens.weight": "model-00001-of-00004.safetensors",
      ...
      }
    }

    يمكنك أيضًا تصور هذا الترميز بالنقر على زر ↗ في بطاقة النموذج.

    Safetensors هو تنسيق تسلسلي أكثر أمانًا وسرعة - مقارنةً بـ pickle - لتخزين أوزان النموذج. قد تواجه أوزانًا مُسلسلة بتنسيقات مثل bin أو pth أو ckpt، لكن safetensors يُتبنى بشكل متزايد في منظومة النماذج كبديل أفضل.

  • قد يحتوي النموذج أيضًا على ملف generation_config.json يخزّن تفاصيل حول كيفية توليد النص، مثل ما إذا كان سيتم أخذ عينات، والرموز العلوية التي سيتم أخذ العينات منها، ودرجة الحرارة، والرموز الخاصة لبدء التوليد وإيقافه.

المعالج المسبق

  • تخزّن ملف tokenizer_config.json الرموز الخاصة التي يضيفها النموذج. تُشعِر هذه الرموز الخاصة النموذج بالعديد من الأمور، مثل بداية الجملة، أو تنسيق محدد للقوالب الخاصة بالحوارات، أو الإشارة إلى صورة. كما يُظهر هذا الملف أقصى طول لسلسلة الإدخال التي يمكن للنموذج قبولها، وفئة المعالج المسبق، والمخرجات التي يعيدها.
  • يخزّن الملف tokenizer.json المفردات التي تعلّمها النموذج.
  • يُعدّ special_tokens_map.json خريطةً للرموز الخاصة. على سبيل المثال، في Llama 3.1-8B-Instruct، يكون رمز بداية النص "<|begin_of_text|>".

بالنسبة إلى الأنماط الأخرى، يُستبدل ملف tokenizer_config.json بملف preprocessor_config.json.

استخدام نماذج موجودة

جميع نماذج transformer على بُعد سطر واحد من أن تصبح جاهزة للاستخدام! اعتمادًا على الطريقة التي ترغب في استخدامها بها، يمكنك استخدام واجهة برمجة التطبيقات عالية المستوى عبر دالة pipeline أو استخدام AutoModel للحصول على تحكم أكبر.

# With pipeline, just specify the task and the model id from the Hub.
from transformers import pipeline
pipe = pipeline("text-generation", model="distilbert/distilgpt2")

# If you want more control, you will need to define the tokenizer and model.
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("distilbert/distilgpt2")
model = AutoModelForCausalLM.from_pretrained("distilbert/distilgpt2")

يمكنك أيضًا تحميل نموذج من إصدار محدد (بناءً على تجزئة الالتزام، أو اسم العلامة، أو الفرع) على النحو التالي:

model = AutoModel.from_pretrained(
    "julien-c/EsperBERTo-small", revision="v2.0.1"  # tag name, or branch name, or commit hash
)

إذا كنت ترغب في معرفة كيفية تحميل نموذج محدد، يمكنك النقر على Use in Transformers وستحصل على مقتطف برمجي جاهز للتشغيل يمكنك من خلاله تحميل النموذج! إذا كنت بحاجة إلى مزيد من المعلومات حول بنية النموذج، يمكنك أيضًا النقر على “Read model documentation” في أسفل المقتطف.

مشاركة نماذجك

للقراءة عن مشاركة النماذج باستخدام transformers على وجه التحديد، يرجى التوجه إلى دليل مشاركة نموذج في التوثيق الرسمي.

تحتوي العديد من الفئات في transformers، مثل النماذج ومقسّمي الرموز، على طريقة push_to_hub تتيح رفع الملفات إلى مستودع بسهولة.

# Pushing model to your own account
model.push_to_hub("my-awesome-model")

# Pushing your tokenizer
tokenizer.push_to_hub("my-awesome-model")

# Pushing all things after training
trainer.push_to_hub()

هناك المزيد مما يمكنك القيام به، لذا نقترح عليك مراجعة دليل مشاركة نموذج.

موارد إضافية

Update on GitHub