# الفلسفة

Transformers هي مكتبة تُعطي الأولوية لـ PyTorch. فهي توفر نماذج مطابقة لأوراقها البحثية، وسهلة الاستخدام، وسهلة التعديل.

يتوفر مقال أطول وأكثر تفصيلاً يتضمن أمثلة وتصورات زمنية وجداول زمنية [هنا](https://huggingface.co/spaces/transformers-community/Transformers-tenets) كمرجع قياسي لدينا.

> [!NOTE]
> تتطور فلسفتنا من خلال الممارسة. فيما يلي مبادئنا الحالية والمستقرة.

## لمن هذه المكتبة

- الباحثون والمعلمون الذين يستكشفون أو يوسّعون من هياكل النماذج.
- الممارسون الذين يقومون بضبط النماذج الدقيقة أو تقييمها أو تقديمها.
- المهندسون الذين يريدون نموذجًا مُدرَّبًا مسبقًا "يعمل مباشرة" مع واجهة برمجة تطبيقات متوقعة.

## ما يمكن أن تتوقعه

- تتطلب كل نموذج ثلاث فئات أساسية: [configuration](./main_classes/configuration)، و[models](./main_classes/model)، وفئة للمعالجة المسبقة. تتولى [Tokenizers](./main_classes/tokenizer) معالجة نصوص اللغة الطبيعية، وتتولى [image processors](./main_classes/image_processor) معالجة الصور، وتتولى [video processors](./main_classes/video_processor) معالجة مقاطع الفيديو، وتتولى [feature extractors](./main_classes/feature_extractor) معالجة الصوت، وتتولى [processors](./main_classes/processors) معالجة المدخلات متعددة الوسائط.

- يمكن تهيئة جميع هذه الفئات بطريقة بسيطة وموحّدة من النماذج المُسبقة التدريب باستخدام طريقة `from_pretrained()` المشتركة، والتي تقوم بتنزيل (إن لزم الأمر) وتخزين مؤقت وتحميل كائن الفئة ذات الصلة والبيانات المرتبطة بها (معاملات التشكيلات، ومفردات المُرمّزات، ومعاملات المُعالجات، وأوزان النماذج) من نقطة تحقق مُسبقة التدريب متاحة على [Hugging Face Hub](https://huggingface.co/models) أو من نقطة تحقق محفوظة من قِبلك.
- بالإضافة إلى هذه الفئات الأساسية الثلاث، يوفر المكتبة واجهتي برمجة تطبيقات: [pipeline()](/docs/transformers/main/ar/main_classes/pipelines#transformers.pipeline) لاستخدام نموذج بسرعة للاستدلال على مهمة محددة، و[Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer) لتدريب أو ضبط نموذج PyTorch بسرعة.

## المبادئ الأساسية

تبلورت المبادئ العشرة التالية مع مرور الوقت، وهي موضّحة بالتفصيل في منشورنا الجديد على المدونة حول فلسفتنا [منشور المدونة](https://huggingface.co/spaces/transformers-community/Transformers-tenets). وتُوجّه هذه المبادئ قرارات المشرفين عند مراجعة طلبات الدمج والمساهمات.

> - **المصدر الموثوق.** يجب أن تكون التطبيقات مطابقة للنتائج الرسمية والسلوك المقصود. - **نموذج واحد، ملف واحد.** منطق الاستدلال/التدريب الأساسي مرئي من الأعلى إلى الأسفل في ملف النموذج الذي يقرؤه المستخدمون. - **الكود هو المنتج.** حسّن للقراءة ومقارنة الفروقات. فضّل الأسماء الصريحة على التحويل غير المباشر المعقّد. - **قيّم، لا تجرّد.** احتفظ بالسلوك الخاص بالنموذج داخل النموذج. استخدم الواجهات المشتركة فقط للبنية التحتية العامة. - **DRY\*** (كرّر عندما يساعد ذلك المستخدمين). تبقى ملفات نمذجة المستخدم النهائي مكتفية ذاتيًا. يتم فصل البنية التحتية. - **واجهة برمجية مستخدم دنيا.** مسارات كود قليلة، معاملات kwargs متوقعة، طرق مستقرة. - **التوافق مع الإصدارات السابقة.** يجب ألا تتكسر الأسطح العامة. يجب أن تستمر عناصر Hub القديمة في العمل.. - **سطح عام متسق.** التسمية، والمخرجات، والتشخيصات الاختيارية متسقة ومختبرة.

## الفئات الرئيسية

- تُخزّن [**فئات التهيئة**](./main_classes/configuration) المعاملات الفائقة اللازمة لبناء النموذج. وتشمل هذه المعاملات عدد الطبقات وحجم الطبقة المخفية. لا تحتاج دائمًا إلى إنشاء هذه الفئات بنفسك. فعند استخدام نموذج مُدرَّب مسبقًا دون إجراء أي تعديلات عليه، يتم إنشاء التهيئة تلقائيًا عند إنشاء النموذج.
- فئات النماذج **Model classes** هي نماذج PyTorch ([torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module))، مُغلَّفة بطبقة واحدة على الأقل من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel).

- **محوّلات معيارية.** يكتب المساهمون شريحة صغيرة `modular_*.py` تُعلن إعادة الاستخدام من مكوّنات موجودة مسبقًا. يقوم المكتبة تلقائيًا بتوسيع هذه الشريحة إلى الملف المرئي `modeling_*.py` الذي يقرؤه المستخدمون ويصححون أخطاءه. يراجع المسؤولون الشريحة؛ بينما يعدّل المستخدمون الملف الموسّع. يحافظ هذا على مبدأ «نموذج واحد، ملف واحد» دون انحراف في الشيفرة القياسية. راجع [توثيق المساهمة](./modular_transformers) لمزيد من المعلومات.

- تقوم **فئات المعالجة المسبقة** بتحويل البيانات الخام إلى صيغة يقبلها النموذج. يخزّن [المجزّئ](./main_classes/tokenizer) قاموس الكلمات لكل نموذج، ويوفّر طرقًا لتشفير النصوص وفكّ تشفيرها في قائمة من فهارس تضمين الرموز. تعالج [معالجات الصور](./main_classes/image_processor) مدخلات الرؤية، وتعالج [معالجات الفيديو](./main_classes/video_processor) مدخلات الفيديو، وتعالج [مستخرجات الميزات](./main_classes/feature_extractor) مدخلات الصوت، بينما تعالج [المعالجات](./main_classes/processors) المدخلات متعددة الوسائط.

يمكن إنشاء جميع هذه الفئات من نماذج مُدرَّبة مسبقًا، وحفظها محليًا، ومشاركتها على Hub باستخدام ثلاث طرق:

- يتيح لك `from_pretrained()` إنشاء نموذج، وتكوين، وفئة معالجة مسبقة من نسخة مُدرَّبة مسبقًا، إما تلك التي توفرها المكتبة نفسها (يمكن العثور على النماذج المدعومة في [مركز النماذج](https://huggingface.co/models))، أو تلك التي يخزنها المستخدم محليًا (أو على خادم).
- تتيح لك `save_pretrained()` حفظ النموذج والإعدادات وفئة المعالجة المسبقة محليًا بحيث يمكن إعادة تحميلها باستخدام `from_pretrained()`.
- يتيح لك `push_to_hub()` مشاركة نموذج، وإعدادات، وفئة معالجة مسبقة مع مستودع Hub، مما يجعلها في متناول الجميع بسهولة.

