-
Notifications
You must be signed in to change notification settings - Fork 27k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[i18n-ar] Translated file :
docs/source/ar/multilingual.md
into Ara…
…bic (#33048) * Add docs/source/ar/multilingual.md to Add_docs_source_ar_multilingual.md * Update docs/source/ar/multilingual.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/multilingual.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/multilingual.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/multilingual.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/multilingual.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/multilingual.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/multilingual.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/multilingual.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/multilingual.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/multilingual.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/multilingual.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/multilingual.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/multilingual.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/multilingual.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/multilingual.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update docs/source/ar/multilingual.md Co-authored-by: Abdullah Mohammed <[email protected]> * Update _toctree.yml * Update _toctree.yml * Add Translated files to branch for merg * Update _toctree.yml * Update _toctree.yml * Update custom_models.md * Update chat_templating.md * Update docs/source/ar/create_a_model.md Co-authored-by: Steven Liu <[email protected]> * Update create_a_model.md * Update gguf.md * Update gguf.md * Update gguf.md * Update gguf.md --------- Co-authored-by: Abdullah Mohammed <[email protected]> Co-authored-by: Steven Liu <[email protected]>
- Loading branch information
1 parent
2801d7b
commit b53e44e
Showing
7 changed files
with
1,895 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
# GGUF وتفاعلها مع المحولات | ||
|
||
تُستخدم صيغة ملف GGUF لتخزين النماذج للاستدلال باستخدام [GGML](https://github.com/ggerganov/ggml) والمكتبات الأخرى التي تعتمد عليه، مثل [llama.cpp](https://github.com/ggerganov/llama.cpp) أو [whisper.cpp](https://github.com/ggerganov/whisper.cpp) الشهيرة جدًا. | ||
|
||
إنها صيغة ملف [مدعومة من قبل Hugging Face Hub](https://huggingface.co/docs/hub/en/gguf) مع ميزات تسمح بالفحص السريع للموترات والبيانات الوصفية داخل الملف. | ||
|
||
تم تصميم تنسيق الملف هذا كـ "تنسيق ملف واحد" حيث يحتوي ملف واحد عادةً على كل من سمات التكوين ومفردات المجزىء اللغوي والخصائص الأخرى، بالإضافة إلى جميع الموترات التي سيتم تحميلها في النموذج. تأتي هذه الملفات بتنسيقات مختلفة وفقًا لنوع التكميم في الملف. نلقي نظرة موجزة على بعضها [هنا](https://huggingface.co/docs/hub/en/gguf#quantization-types). | ||
|
||
## الدعم داخل المحولات | ||
|
||
أضفنا القدرة على تحميل ملفات `gguf` داخل `المحولات` لتوفير قدرات تدريب/ضبط إضافية لنماذج gguf، قبل إعادة تحويل تلك النماذج إلى `gguf` لاستخدامها داخل نظام `ggml`. عند تحميل نموذج، نقوم أولاً بإلغاء تكميمه إلى fp32، قبل تحميل الأوزان لاستخدامها في PyTorch. | ||
|
||
> [!NOTE] | ||
> لا يزال الدعم تجريبيًا للغاية ونرحب بالمساهمات من أجل ترسيخه عبر أنواع التكميم وبنى النماذج. | ||
فيما يلي، بنيات النماذج وأنواع التكميم المدعومة: | ||
|
||
### أنواع التكميم المدعومة | ||
|
||
تُحدد أنواع التكميم المدعومة مبدئيًا وفقًا لملفات التكميم الشائعة التي تمت مشاركتها على Hub. | ||
|
||
- F32 | ||
- F16 | ||
- BF16 | ||
- Q4_0 | ||
- Q4_1 | ||
- Q5_0 | ||
- Q5_1 | ||
- Q8_0 | ||
- Q2_K | ||
- Q3_K | ||
- Q4_K | ||
- Q5_K | ||
- Q6_K | ||
- IQ1_S | ||
- IQ1_M | ||
- IQ2_XXS | ||
- IQ2_XS | ||
- IQ2_S | ||
- IQ3_XXS | ||
- IQ3_S | ||
- IQ4_XS | ||
- IQ4_NL | ||
|
||
> [!NOTE] | ||
> لدعم إلغاء تكميم gguf، يلزم تثبيت `gguf>=0.10.0`. | ||
### بنيات النماذج المدعومة | ||
|
||
في الوقت الحالي، بنيات النماذج المدعومة هي البنيات التي كانت شائعة جدًا على Hub، وهي: | ||
|
||
- LLaMa | ||
- Mistral | ||
- Qwen2 | ||
- Qwen2Moe | ||
- Phi3 | ||
- Bloom | ||
- Falcon | ||
- StableLM | ||
- GPT2 | ||
- Starcoder2 | ||
- T5 | ||
|
||
## مثال الاستخدام | ||
|
||
لتحميل ملفات `gguf` في `transformers`، يجب تحديد معامل `gguf_file` فى دالة `from_pretrained` لكل من المُجزّئ اللغوية والنموذج. فيما يلي كيفية تحميل المُجزّئ اللغوي ونموذج، يمكن تحميلهما من نفس الملف: | ||
|
||
```py | ||
from transformers import AutoTokenizer, AutoModelForCausalLM | ||
|
||
model_id = "TheBloke/TinyLlama-1.1B-Chat-v1.0-GGUF" | ||
filename = "tinyllama-1.1b-chat-v1.0.Q6_K.gguf" | ||
|
||
tokenizer = AutoTokenizer.from_pretrained(model_id, gguf_file=filename) | ||
model = AutoModelForCausalLM.from_pretrained(model_id, gguf_file=filename) | ||
``` | ||
|
||
الآن لديك إمكانية الوصول إلى النسخة الكامل غير المكممة للنموذج في بيئة PyTorch، حيث يمكنك دمجه مع مجموعة كبيرة من الأدوات الأخرى. | ||
|
||
لإعادة التحويل إلى ملف `gguf`، نوصي باستخدام ملف [`convert-hf-to-gguf.py`](https://github.com/ggerganov/llama.cpp/blob/master/convert-hf-to-gguf.py) من llama.cpp. | ||
|
||
فيما يلي كيفية إكمال البرنامج النصي أعلاه لحفظ النموذج وإعادة تصديره مرة أخرى إلى `gguf`: | ||
|
||
```py | ||
tokenizer.save_pretrained('directory') | ||
model.save_pretrained('directory') | ||
|
||
!python ${path_to_llama_cpp}/convert-hf-to-gguf.py ${directory} | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,160 @@ | ||
# النماذج متعددة اللغات للاستدلال | ||
|
||
هناك العديد من النماذج متعددة اللغات في مكتبة 🤗 Transformers، وتختلف طريقة استخدامها للاستدلال عن النماذج أحادية اللغة. ولكن ليس كل استخدام النماذج متعددة اللغات مختلف. فبعض النماذج، مثل [google-bert/bert-base-multilingual-uncased](https://huggingface.co/google-bert/bert-base-multilingual-uncased)، يمكن استخدامها تمامًا مثل النموذج أحادي اللغة. سيوضح لك هذا الدليل كيفية استخدام النماذج متعددة اللغات التي تختلف طريقة استخدامها للاستدلال. | ||
|
||
## XLM | ||
|
||
يحتوي XLM على عشر نسخ مختلفة، واحدة منها فقط أحادية اللغة. ويمكن تقسيم نسخ النماذج التسع المتبقية إلى فئتين: نسخ التي تستخدم تضمينات اللغة (language embeddings) وتلك التي لا تستخدمها. | ||
|
||
### XLM مع تضمينات اللغة | ||
|
||
تستخدم النماذج التالية من XLM تضمينات اللغة لتحديد اللغة المستخدمة أثناء الاستدلال: | ||
|
||
- `FacebookAI/xlm-mlm-ende-1024` (نمذجة اللغة المقنعة، الإنجليزية-الألمانية) | ||
- `FacebookAI/xlm-mlm-enfr-1024` (نمذجة اللغة المقنعة، الإنجليزية-الفرنسية) | ||
- `FacebookAI/xlm-mlm-enro-1024` (نمذجة اللغة المقنعة، الإنجليزية-الرومانية) | ||
- `FacebookAI/xlm-mlm-xnli15-1024` (نمذجة اللغة المقنعة، لغات XNLI) | ||
- `FacebookAI/xlm-mlm-tlm-xnli15-1024` (نمذجة اللغة المقنعة + الترجمة، لغات XNLI) | ||
- `FacebookAI/xlm-clm-enfr-1024` (نمذجة اللغة السببية، الإنجليزية-الفرنسية) | ||
- `FacebookAI/xlm-clm-ende-1024` (نمذجة اللغة السببية، الإنجليزية-الألمانية) | ||
|
||
تُمثل تضمينات اللغة على شكل مصفوفة بنفس شكل `input_ids` التي يتم تمريره إلى النموذج. وتعتمد القيم في هذه المصفوفات على اللغة المستخدمة ويتم تحديدها بواسطة معاملى المجزىء `lang2id` و `id2lang`. | ||
|
||
في هذا المثال، قم بتحميل نسخة `FacebookAI/xlm-clm-enfr-1024` ( نمذجة اللغة السببية، الإنجليزية-الفرنسية): | ||
|
||
```py | ||
>>> import torch | ||
>>> from transformers import XLMTokenizer, XLMWithLMHeadModel | ||
|
||
>>> tokenizer = XLMTokenizer.from_pretrained("FacebookAI/xlm-clm-enfr-1024") | ||
>>> model = XLMWithLMHeadModel.from_pretrained("FacebookAI/xlm-clm-enfr-1024") | ||
``` | ||
|
||
تُظهر خاصية `lang2id` في المجزىء اللغات وأرقام تعريفها في هذا النموذج: | ||
|
||
```py | ||
>>> print(tokenizer.lang2id) | ||
{'en': 0, 'fr': 1} | ||
``` | ||
|
||
بعد ذلك، قم بإنشاء مثال على المدخلات: | ||
|
||
```py | ||
>>> input_ids = torch.tensor([tokenizer.encode("Wikipedia was used to")]) # batch size of 1 | ||
``` | ||
|
||
قم بتعيين معرف اللغة إلى `"en"` واستخدمه لتحديد تضمين اللغة. وتضمين اللغة عبارة عن مصفوفة مملوءة بـ `0` لأن هذا هو معرف اللغة الإنجليزية. يجب أن تكون هذه المصفوفة بنفس حجم `input_ids`. | ||
|
||
```py | ||
>>> language_id = tokenizer.lang2id["en"] # 0 | ||
>>> langs = torch.tensor([language_id] * input_ids.shape[1]) # torch.tensor([0, 0, 0, ..., 0]) | ||
|
||
>>> # نقوم بإعادة تشكيلها لتكون بالحجم (batch_size، sequence_length) | ||
>>> langs = langs.view(1, -1) # الآن بالحجم [1، sequence_length] (لدينا batch size تساوي 1) | ||
``` | ||
|
||
الآن يمكنك تمرير `input_ids` وتضمين اللغة إلى النموذج: | ||
|
||
```py | ||
>>> outputs = model(input_ids, langs=langs) | ||
``` | ||
|
||
يمكن لنص البرنامج النصي [run_generation.py](https://github.com/huggingface/transformers/tree/main/examples/pytorch/text-generation/run_generation.py) توليد النص باستخدام تضمينات اللغة مع نقاط تفتيش `xlm-clm`. | ||
|
||
### XLM بدون تضمينات اللغة | ||
|
||
النماذج التالية من XLM لا تتطلب تضمينات اللغة أثناء الاستنتاج: | ||
|
||
- `FacebookAI/xlm-mlm-17-1280` (نمذجة اللغة المقنعة، 17 لغة) | ||
- `FacebookAI/xlm-mlm-100-1280` (نمذجة اللغة المقنعة، 100 لغة) | ||
|
||
تُستخدم هذه النماذج لتمثيل الجمل العامة، على عكس نسح XLM السابقة. | ||
|
||
## BERT | ||
|
||
يمكن استخدام النماذج التالية من BERT للمهام متعددة اللغات: | ||
|
||
- `google-bert/bert-base-multilingual-uncased` (نمذجة اللغة المقنعة + التنبؤ بالجملة التالية، 102 لغة) | ||
- `google-bert/bert-base-multilingual-cased` (نمذجة اللغة المقنعة + التنبؤ بالجملة التالية، 104 لغات) | ||
|
||
لا تتطلب هذه النماذج تضمينات اللغة أثناء الاستدلال. يجب أن تُحدّد اللغة من السياق وتستنتج وفقاً لذلك. | ||
|
||
## XLM-RoBERTa | ||
|
||
يمكن استخدام النماذج التالية من XLM-RoBERTa للمهام متعددة اللغات: | ||
|
||
- `FacebookAI/xlm-roberta-base` (نمذجة اللغة المقنعة، 100 لغة) | ||
- `FacebookAI/xlm-roberta-large` (نمذجة اللغة المقنعة، 100 لغة) | ||
|
||
تم تدريب XLM-RoBERTa على 2.5 تيرابايت من بيانات CommonCrawl الجديدة والمحسنة في 100 لغة. ويوفر مكاسب قوية على النماذج متعددة اللغات التي تم إصدارها سابقاً مثل mBERT أو XLM في مهام المصب مثل التصنيف، ووضع العلامات التسلسلية، والأسئلة والأجوبة. | ||
|
||
## M2M100 | ||
|
||
يمكن استخدام النماذج التالية من M2M100 للترجمة متعددة اللغات: | ||
|
||
- `facebook/m2m100_418M` (الترجمة) | ||
- `facebook/m2m100_1.2B` (الترجمة) | ||
|
||
في هذا المثال، قم بتحميل نسحة `facebook/m2m100_418M` لترجمة النص من الصينية إلى الإنجليزية. يمكنك تعيين اللغة المصدر في المجزىء اللغوى: | ||
|
||
```py | ||
>>> from transformers import M2M100ForConditionalGeneration, M2M100Tokenizer | ||
|
||
>>> en_text = "Do not meddle in the affairs of wizards, for they are subtle and quick to anger." | ||
>>> chinese_text = "不要插手巫師的事務, 因為他們是微妙的, 很快就會發怒." | ||
|
||
>>> tokenizer = M2M100Tokenizer.from_pretrained("facebook/m2m100_418M", src_lang="zh") | ||
>>> model = M2M100ForConditionalGeneration.from_pretrained("facebook/m2m100_418M") | ||
``` | ||
|
||
تقسيم النّص إلى رموز: | ||
|
||
```py | ||
>>> encoded_zh = tokenizer(chinese_text, return_tensors="pt") | ||
``` | ||
|
||
يجبر M2M100 معرف اللغة الهدف كأول رمز مولد للترجمة إلى اللغة الهدف. قم بتعيين `forced_bos_token_id` إلى `en` في طريقة `generate` للترجمة إلى الإنجليزية: | ||
|
||
```py | ||
>>> generated_tokens = model.generate(**encoded_zh, forced_bos_token_id=tokenizer.get_lang_id("en")) | ||
>>> tokenizer.batch_decode(generated_tokens, skip_special_tokens=True) | ||
'Do not interfere with the matters of the witches, because they are delicate and will soon be angry.' | ||
``` | ||
|
||
## MBart | ||
|
||
يمكن استخدام النماذج التالية من MBart للترجمة متعددة اللغات: | ||
|
||
- `facebook/mbart-large-50-one-to-many-mmt` (الترجمة الآلية متعددة اللغات من واحد إلى كثير، 50 لغة) | ||
- `facebook/mbart-large-50-many-to-many-mmt` (الترجمة الآلية متعددة اللغات من كثير إلى كثير، 50 لغة) | ||
- `facebook/mbart-large-50-many-to-one-mmt` (الترجمة الآلية متعددة اللغات من كثير إلى واحد، 50 لغة) | ||
- `facebook/mbart-large-50` (الترجمة متعددة اللغات، 50 لغة) | ||
- `facebook/mbart-large-cc25` | ||
|
||
في هذا المثال، قم بتحميل نسخة `facebook/mbart-large-50-many-to-many-mmt` لترجمة النص من الفنلندية إلى الإنجليزية. يمكنك تعيين اللغة المصدر في المجزىء: | ||
|
||
```py | ||
>>> from transformers import AutoTokenizer, AutoModelForSeq2SeqLM | ||
|
||
>>> en_text = "Do not meddle in the affairs of wizards, for they are subtle and quick to anger." | ||
>>> fi_text = "Älä sekaannu velhojen asioihin, sillä ne ovat hienovaraisia ja nopeasti vihaisia." | ||
|
||
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/mbart-large-50-many-to-many-mmt", src_lang="fi_FI") | ||
>>> model = AutoModelForSeq2SeqLM.from_pretrained("facebook/mbart-large-50-many-to-many-mmt") | ||
``` | ||
|
||
تقسيم النّص إلى رموز: | ||
|
||
```py | ||
>>> encoded_en = tokenizer(en_text, return_tensors="pt") | ||
``` | ||
|
||
يجبر MBart معرف لغة الهدف كأول رمز مولد للترجمة إلى اللغة الهدف. قم بتعيين `forced_bos_token_id` إلى `en` في طريقة `generate` للترجمة إلى الإنجليزية: | ||
|
||
```py | ||
>>> generated_tokens = model.generate(**encoded_en, forced_bos_token_id=tokenizer.lang_code_to_id["en_XX"]) | ||
>>> tokenizer.batch_decode(generated_tokens, skip_special_tokens=True) | ||
"Don't interfere with the wizard's affairs, because they are subtle, will soon get angry." | ||
``` | ||
|
||
إذا كنت تستخدم نسخة `facebook/mbart-large-50-many-to-one-mmt`، فلا تحتاج إلى إجبار معرف لغة الهدف كأول رمز مولد، وإلا فإن الاستخدام هو نفسه. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
# التصدير إلى TFLite | ||
|
||
[TensorFlow Lite](https://www.tensorflow.org/lite/guide) هو إطار عمل خفيف الوزن لنشر نماذج التعلم الآلي على الأجهزة المحدودة الموارد، مثل الهواتف المحمولة، والأنظمة المدمجة، وأجهزة إنترنت الأشياء (IoT). تم تصميم TFLite لتشغيل النماذج وتحسينها بكفاءة على هذه الأجهزة ذات الطاقة الحاسوبية والذاكرة واستهلاك الطاقة المحدودة. | ||
|
||
يُمثَّل نموذج TensorFlow Lite بتنسيق محمول فعال خاص يُعرَّف بامتداد الملف `.tflite`. | ||
|
||
🤗 Optimum يقدم وظيفة لتصدير نماذج 🤗 Transformers إلى TFLite من خلال الوحدة النمطية `exporters.tflite`. بالنسبة لقائمة هندسات النماذج المدعومة، يرجى الرجوع إلى [وثائق 🤗 Optimum](https://huggingface.co/docs/optimum/exporters/tflite/overview). | ||
|
||
لتصدير نموذج إلى TFLite، قم بتثبيت متطلبات البرنامج المطلوبة: | ||
|
||
```bash | ||
pip install optimum[exporters-tf] | ||
``` | ||
|
||
للاطلاع على جميع المغامﻻت المتاحة، راجع [وثائق 🤗 Optimum](https://huggingface.co/docs/optimum/main/en/exporters/tflite/usage_guides/export_a_model)، أو عرض المساعدة في سطر الأوامر: | ||
|
||
```bash | ||
optimum-cli export tflite --help | ||
``` | ||
|
||
لتصدير نسخة النموذج ل 🤗 Hub، على سبيل المثال، `google-bert/bert-base-uncased`، قم بتشغيل الأمر التالي: | ||
|
||
```bash | ||
optimum-cli export tflite --model google-bert/bert-base-uncased --sequence_length 128 bert_tflite/ | ||
``` | ||
|
||
ستظهر لك السجلات التي تُبيّن التقدم وموقع حفظ ملف `model.tflite` الناتج، كما في المثال التالي: | ||
|
||
```bash | ||
Validating TFLite model... | ||
-[✓] TFLite model output names match reference model (logits) | ||
- Validating TFLite Model output "logits": | ||
-[✓] (1, 128, 30522) matches (1, 128, 30522) | ||
-[x] values not close enough, max diff: 5.817413330078125e-05 (atol: 1e-05) | ||
The TensorFlow Lite export succeeded with the warning: The maximum absolute difference between the output of the reference model and the TFLite exported model is not within the set tolerance 1e-05: | ||
- logits: max diff = 5.817413330078125e-05. | ||
The exported model was saved at: bert_tflite | ||
``` | ||
|
||
يُبيّن المثال أعلاه كيفية تصدير نسخة من النموذج ل 🤗 Hub. عند تصدير نموذج محلي، تأكد أولاً من حفظ ملفات أوزان النموذج المجزء اللغوى في نفس المسار (`local_path`). عند استخدام CLI، قم بتمرير `local_path` إلى معامل `model` بدلاً من اسم النسخة على 🤗 Hub. |