Skip to content

Latest commit

 

History

History
317 lines (236 loc) · 28.1 KB

README_ar.md

File metadata and controls

317 lines (236 loc) · 28.1 KB

Hugging Face Transformers Library

Build GitHub Documentation GitHub release Contributor Covenant DOI

أحدث تقنيات التعلم الآلي لـ JAX وPyTorch وTensorFlow

يوفر 🤗 Transformers آلاف النماذج المُدربة مسبقًا لأداء المهام على طرائق مختلفة مثل النص والصورة والصوت.

يمكن تطبيق هذه النماذج على:

  • 📝 النص، لمهام مثل تصنيف النص واستخراج المعلومات والرد على الأسئلة والتلخيص والترجمة وتوليد النص، في أكثر من 100 لغة.
  • 🖼️ الصور، لمهام مثل تصنيف الصور وكشف الأشياء والتجزئة.
  • 🗣️ الصوت، لمهام مثل التعرف على الكلام وتصنيف الصوت.

يمكن لنماذج المحول أيضًا أداء مهام على طرائق متعددة مجتمعة، مثل الرد على الأسئلة الجدولية والتعرف البصري على الحروف واستخراج المعلومات من المستندات الممسوحة ضوئيًا وتصنيف الفيديو والرد على الأسئلة المرئية.

يوفر 🤗 Transformers واجهات برمجة التطبيقات (APIs) لتحميل تلك النماذج المُدربة مسبقًا واستخدامها على نص معين، وضبطها بدقة على مجموعات البيانات الخاصة بك، ثم مشاركتها مع المجتمع على مركز النماذج الخاص بنا. وفي الوقت نفسه، فإن كل وحدة نمطية Python التي تحدد بنية هي وحدة مستقلة تمامًا ويمكن تعديلها لتمكين تجارب البحث السريعة.

يتم دعم 🤗 Transformers بواسطة مكتبات التعلم العميق الثلاث الأكثر شيوعًا - Jax و PyTorch و TensorFlow - مع تكامل سلس بينها. من السهل تدريب نماذجك باستخدام واحدة قبل تحميلها للاستنتاج باستخدام الأخرى.

العروض التوضيحية عبر الإنترنت

يمكنك اختبار معظم نماذجنا مباشرة على صفحاتها من مركز النماذج. كما نقدم استضافة النماذج الخاصة وإصداراتها وواجهة برمجة تطبيقات الاستدلال للنماذج العامة والخاصة.

فيما يلي بعض الأمثلة:

في معالجة اللغات الطبيعية:

في رؤية الكمبيوتر:

في الصوت:

في المهام متعددة الطرائق:

100 مشروع يستخدم المحولات

🤗 Transformers هو أكثر من مجرد مجموعة أدوات لاستخدام النماذج المُدربة مسبقًا: إنه مجتمع من المشاريع المبنية حوله ومركز Hugging Face. نريد أن يمكّن 🤗 Transformers المطورين والباحثين والطلاب والأساتذة والمهندسين وأي شخص آخر من بناء مشاريعهم التي يحلمون بها.

للاحتفال بالـ 100,000 نجمة من النماذج المحولة، قررنا تسليط الضوء على المجتمع، وقد أنشأنا صفحة awesome-transformers التي تُدرج 100 مشروعًا رائعًا تم بناؤها بالقرب من النماذج المحولة.

إذا كنت تمتلك أو تستخدم مشروعًا تعتقد أنه يجب أن يكون جزءًا من القائمة، فالرجاء فتح PR لإضافته!

إذا كنت تبحث عن دعم مخصص من فريق Hugging Face

HuggingFace Expert Acceleration Program

جولة سريعة

لاستخدام نموذج على الفور على إدخال معين (نص أو صورة أو صوت، ...)، نوفر واجهة برمجة التطبيقات (API) الخاصة بـ pipeline. تجمع خطوط الأنابيب بين نموذج مُدرب مسبقًا ومعالجة ما قبل التدريب التي تم استخدامها أثناء تدريب هذا النموذج. فيما يلي كيفية استخدام خط أنابيب بسرعة لتصنيف النصوص الإيجابية مقابل السلبية:

>>> from transformers import pipeline

# خصص خط أنابيب للتحليل الشعوري
>>> classifier = pipeline('sentiment-analysis')
>>> classifier('We are very happy to introduce pipeline to the transformers repository.')
[{'label': 'POSITIVE', 'score': 0.9996980428695679}]

يسمح السطر الثاني من التعليمات البرمجية بتحميل النموذج المُدرب مسبقًا الذي يستخدمه خط الأنابيب وتخزينه مؤقتًا، بينما يقوم السطر الثالث بتقييمه على النص المحدد. هنا، تكون الإجابة "إيجابية" بثقة تبلغ 99.97%.

تتوفر العديد من المهام على خط أنابيب مُدرب مسبقًا جاهز للاستخدام، في NLP ولكن أيضًا في رؤية الكمبيوتر والخطاب. على سبيل المثال، يمكننا بسهولة استخراج الأشياء المكتشفة في صورة:

>>> import requests
>>> from PIL import Image
>>> from transformers import pipeline

# قم بتنزيل صورة بها قطط لطيفة
>>> url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/coco_sample.png"
>>> image_data = requests.get(url, stream=True).raw
>>> image = Image.open(image_data)

# خصص خط أنابيب لكشف الأشياء
>>> object_detector = pipeline('object-detection')
>>> object_detector(image)
[{'score': 0.9982201457023621،
  'label': 'remote'box': {'xmin': 40, 'ymin': 70, 'xmax': 175, 'ymax': 117}}،
 {'score': 0.9960021376609802،
  'label': 'remote'box': {'xmin': 333, 'ymin': 72, 'xmax': 368, 'ymax': 187}}،
 {'score': 0.9954745173454285،
  'label': 'couch'box': {'xmin': 0, 'ymin': 1, 'xmax': 639, 'ymax': 473}}،
 {'score': 0.9988006353378296،
  'label': 'cat'box': {'xmin': 13, 'ymin': 52, 'xmax': 314, 'ymax': 470}}،
 {'score': 0.9986783862113953،
  'label': 'cat'box': {'xmin': 345, 'ymin': 23, 'xmax': 640, 'ymax': 368}}]

هنا، نحصل على قائمة بالأشياء المكتشفة في الصورة، مع مربع يحيط بالشيء وتقييم الثقة. فيما يلي الصورة الأصلية على اليسار، مع عرض التوقعات على اليمين:

يمكنك معرفة المزيد حول المهام التي تدعمها واجهة برمجة التطبيقات (API) الخاصة بـ pipeline في هذا البرنامج التعليمي.

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

>>> from transformers import AutoTokenizer، AutoModel

>>> tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-uncased")
>>> model = AutoModel.from_pretrained("google-bert/bert-base-uncased")

>>> inputs = tokenizer("Hello world!"، return_tensors="pt")
>>> outputs = model(**inputs)

وهنا رمز مماثل لـ TensorFlow:

>>> from transformers import AutoTokenizer، TFAutoModel

>>> tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-uncased")
>>> model = TFAutoModel.from_pretrained("google-bert/bert-base-uncased")

>>> inputs = tokenizer("Hello world!"، return_tensors="tf")
>>> outputs = model(**inputs)

المُعلم مسؤول عن جميع المعالجة المسبقة التي يتوقعها النموذج المُدرب مسبقًا ويمكن استدعاؤه مباشرة على سلسلة واحدة (كما هو موضح في الأمثلة أعلاه) أو قائمة. سيقوم بإخراج قاموس يمكنك استخدامه في التعليمات البرمجية لأسفل أو تمريره مباشرة إلى نموذجك باستخدام عامل فك التعبئة **.

النموذج نفسه هو وحدة نمطية عادية Pytorch nn.Module أو TensorFlow tf.keras.Model (حسب backend) والتي يمكنك استخدامها كالمعتاد. يوضح هذا البرنامج التعليمي كيفية دمج مثل هذا النموذج في حلقة تدريب PyTorch أو TensorFlow التقليدية، أو كيفية استخدام واجهة برمجة تطبيقات Trainer لدينا لضبطها بدقة بسرعة على مجموعة بيانات جديدة.

لماذا يجب أن أستخدم المحولات؟

  1. نماذج سهلة الاستخدام وحديثة:

    • أداء عالي في فهم اللغة الطبيعية وتوليدها ورؤية الكمبيوتر والمهام الصوتية.
    • حاجز دخول منخفض للمربين والممارسين.
    • عدد قليل من التجريدات التي يواجهها المستخدم مع ثلاث فئات فقط للتعلم.
    • واجهة برمجة تطبيقات (API) موحدة لاستخدام جميع نماذجنا المُدربة مسبقًا.
  2. تكاليف الكمبيوتر أقل، وبصمة كربونية أصغر:

    • يمكن للباحثين مشاركة النماذج المدربة بدلاً من إعادة التدريب دائمًا.
    • يمكن للممارسين تقليل وقت الكمبيوتر وتكاليف الإنتاج.
    • عشرات البنيات مع أكثر من 400,000 نموذج مُدرب مسبقًا عبر جميع الطرائق.
  3. اختر الإطار المناسب لكل جزء من عمر النموذج:

    • تدريب النماذج الحديثة في 3 أسطر من التعليمات البرمجية.
    • قم بنقل نموذج واحد بين إطارات TF2.0/PyTorch/JAX حسب الرغبة.
    • اختر الإطار المناسب بسلاسة للتدريب والتقييم والإنتاج.
  4. قم بسهولة بتخصيص نموذج أو مثال وفقًا لاحتياجاتك:

    • نوفر أمثلة لكل بنية لإعادة إنتاج النتائج التي نشرها مؤلفوها الأصليون.
    • يتم عرض داخليات النموذج بشكل متسق قدر الإمكان.
    • يمكن استخدام ملفات النموذج بشكل مستقل عن المكتبة للتجارب السريعة.

لماذا لا يجب أن أستخدم المحولات؟

  • ليست هذه المكتبة عبارة عن مجموعة أدوات من الصناديق المكونة للشبكات العصبية. لم يتم إعادة صياغة التعليمات البرمجية في ملفات النموذج باستخدام تجريدات إضافية عن قصد، بحيث يمكن للباحثين إجراء حلقات تكرار سريعة على كل من النماذج دون الغوص في تجريدات/ملفات إضافية.
  • لا يُقصد بواجهة برمجة التطبيقات (API) للتدريب العمل على أي نموذج ولكنه مُستَهدف للعمل مع النماذج التي توفرها المكتبة. للحلقات العامة للتعلم الآلي، يجب استخدام مكتبة أخرى (ربما، تسريع).
  • في حين أننا نسعى جاهدين لتقديم أكبر عدد ممكن من حالات الاستخدام، فإن البرامج النصية الموجودة في مجلد الأمثلة الخاص بنا هي مجرد أمثلة. من المتوقع ألا تعمل هذه البرامج النصية خارج الصندوق على مشكلتك المحددة وأنه سيُطلب منك تغيير بضع أسطر من التعليمات البرمجية لتكييفها مع احتياجاتك.

التثبيت

باستخدام pip

تم اختبار هذا المستودع على Python 3.8+، Flax 0.4.1+، PyTorch 1.11+، و TensorFlow 2.6+.

يجب تثبيت 🤗 Transformers في بيئة افتراضية. إذا كنت غير معتاد على البيئات الافتراضية Python، فراجع دليل المستخدم.

أولاً، قم بإنشاء بيئة افتراضية بالإصدار Python الذي تنوي استخدامه وقم بتنشيطه.

بعد ذلك، ستحتاج إلى تثبيت واحدة على الأقل من Flax أو PyTorch أو TensorFlow. يرجى الرجوع إلى صفحة تثبيت TensorFlow، و صفحة تثبيت PyTorch و/أو صفحة تثبيت Flax و صفحة تثبيت Jax بشأن أمر التثبيت المحدد لمنصتك.

عندما يتم تثبيت إحدى هذه المكتبات الخلفية، يمكن تثبيت 🤗 Transformers باستخدام pip كما يلي:

pip install transformers

إذا كنت ترغب في اللعب مع الأمثلة أو تحتاج إلى أحدث إصدار من التعليمات البرمجية ولا يمكنك الانتظار حتى يتم إصدار إصدار جديد، فيجب تثبيت المكتبة من المصدر.

باستخدام conda

يمكن تثبيت 🤗 Transformers باستخدام conda كما يلي:

conda install conda-forge::transformers

ملاحظة: تم إيقاف تثبيت transformers من قناة huggingface.

اتبع صفحات التثبيت الخاصة بـ Flax أو PyTorch أو TensorFlow لمعرفة كيفية تثبيتها باستخدام conda.

ملاحظة: على Windows، قد تتم مطالبتك بتنشيط وضع المطور للاستفادة من التخزين المؤقت. إذا لم يكن هذا خيارًا بالنسبة لك، فيرجى إعلامنا بذلك في هذه المشكلة.

بنيات النماذج

جميع نقاط تفتيش النموذج التي يوفرها 🤗 Transformers مدمجة بسلاسة من مركز huggingface.co model hub، حيث يتم تحميلها مباشرة من قبل المستخدمين و المنظمات.

عدد نقاط التفتيش الحالية:

يوفر 🤗 Transformers حاليًا البنيات التالية: راجع هنا للحصول على ملخص لكل منها.

للتحقق مما إذا كان لكل نموذج تنفيذ في Flax أو PyTorch أو TensorFlow، أو كان لديه مُعلم مرفق مدعوم من مكتبة 🤗 Tokenizers، يرجى الرجوع إلى هذا الجدول.

تم اختبار هذه التطبيقات على العديد من مجموعات البيانات (راجع البرامج النصية المثالية) ويجب أن تتطابق مع أداء التنفيذ الأصلي. يمكنك العثور على مزيد من التفاصيل حول الأداء في قسم الأمثلة من الوثائق.

تعلم المزيد

القسم الوصف
وثائق وثائق واجهة برمجة التطبيقات (API) الكاملة والبرامج التعليمية
ملخص المهام المهام التي يدعمها 🤗 Transformers
برنامج تعليمي لمعالجة مسبقة استخدام فئة Tokenizer لإعداد البيانات للنماذج
التدريب والضبط الدقيق استخدام النماذج التي يوفرها 🤗 Transformers في حلقة تدريب PyTorch/TensorFlow وواجهة برمجة تطبيقات Trainer
جولة سريعة: البرامج النصية للضبط الدقيق/الاستخدام البرامج النصية المثالية للضبط الدقيق للنماذج على مجموعة واسعة من المهام
مشاركة النماذج وتحميلها تحميل ومشاركة نماذجك المضبوطة بدقة مع المجتمع

الاستشهاد

لدينا الآن ورقة يمكنك الاستشهاد بها لمكتبة 🤗 Transformers:

@inproceedings{wolf-etal-2020-transformers،
    title = "Transformers: State-of-the-Art Natural Language Processing"،
    author = "Thomas Wolf and Lysandre Debut and Victor Sanh and Julien Chaumond and Clement Delangue and Anthony Moi and Pierric Cistac and Tim Rault and R{\'e}mi Louf and Morgan Funtowicz and Joe Davison and Sam Shleifer and Patrick von Platen and Clara Ma and Yacine Jernite and Julien Plu and Canwen Xu and Teven Le Scao and Sylvain Gugger and Mariama Drame and Quentin Lhoest and Alexander M. Rush"،
    booktitle = "Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing: System Demonstrations"،
    month = oct،
    year = "2020"،
    address = "Online"،
    publisher = "Association for Computational Linguistics"،
    url = "https://www.aclweb.org/anthology/2020.emnlp-demos.6"،
    pages = "38--45"
}