Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
caa309e
Add docs/source/ar/multilingual.md to Add_docs_source_ar_multilingual.md
AhmedAlmaghz Aug 22, 2024
ce7a4cf
Update docs/source/ar/multilingual.md
AhmedAlmaghz Oct 26, 2024
a618b31
Update docs/source/ar/multilingual.md
AhmedAlmaghz Oct 26, 2024
9bc062d
Update docs/source/ar/multilingual.md
AhmedAlmaghz Oct 26, 2024
2bc1cc9
Update docs/source/ar/multilingual.md
AhmedAlmaghz Oct 26, 2024
6b3bbc4
Update docs/source/ar/multilingual.md
AhmedAlmaghz Oct 26, 2024
0e88747
Update docs/source/ar/multilingual.md
AhmedAlmaghz Oct 26, 2024
cbf8373
Update docs/source/ar/multilingual.md
AhmedAlmaghz Oct 26, 2024
c552cf9
Update docs/source/ar/multilingual.md
AhmedAlmaghz Oct 26, 2024
16abf56
Update docs/source/ar/multilingual.md
AhmedAlmaghz Oct 26, 2024
ce6d78d
Update docs/source/ar/multilingual.md
AhmedAlmaghz Oct 26, 2024
4767d64
Update docs/source/ar/multilingual.md
AhmedAlmaghz Oct 26, 2024
a420425
Update docs/source/ar/multilingual.md
AhmedAlmaghz Oct 26, 2024
01a20b5
Update docs/source/ar/multilingual.md
AhmedAlmaghz Oct 26, 2024
e596e5e
Update docs/source/ar/multilingual.md
AhmedAlmaghz Oct 26, 2024
5bb7d5e
Update docs/source/ar/multilingual.md
AhmedAlmaghz Oct 26, 2024
980529d
Update docs/source/ar/multilingual.md
AhmedAlmaghz Oct 26, 2024
2085e98
Merge branch 'main' into Add_docs_source_ar_multilingual.md
AhmedAlmaghz Oct 30, 2024
21e8331
Update _toctree.yml
AhmedAlmaghz Oct 30, 2024
ad78566
Update _toctree.yml
AhmedAlmaghz Oct 30, 2024
73c00f8
Add Translated files to branch for merg
AhmedAlmaghz Oct 30, 2024
c08ffc7
Update _toctree.yml
AhmedAlmaghz Oct 30, 2024
e9cb766
Update _toctree.yml
AhmedAlmaghz Oct 30, 2024
be9c35e
Update custom_models.md
AhmedAlmaghz Oct 30, 2024
cc08c8c
Update chat_templating.md
AhmedAlmaghz Oct 30, 2024
943456e
Update docs/source/ar/create_a_model.md
AhmedAlmaghz Oct 30, 2024
910e057
Update create_a_model.md
AhmedAlmaghz Oct 30, 2024
f625f29
Update gguf.md
AhmedAlmaghz Oct 30, 2024
26c58a9
Update gguf.md
AhmedAlmaghz Oct 30, 2024
0c466d9
Update gguf.md
AhmedAlmaghz Oct 30, 2024
4f8dca3
Update gguf.md
AhmedAlmaghz Oct 30, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
160 changes: 160 additions & 0 deletions docs/source/ar/multilingual.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
# النماذج متعددة اللغات للاستنتاج
Comment thread
AhmedAlmaghz marked this conversation as resolved.
Outdated

هناك العديد من النماذج متعددة اللغات في مكتبة 🤗 Transformers، وتختلف طريقة استخدامها للاستنتاج عن النماذج أحادية اللغة. ولكن ليس كل استخدام النماذج متعددة اللغات مختلف. فبعض النماذج، مثل [google-bert/bert-base-multilingual-uncased](https://huggingface.co/google-bert/bert-base-multilingual-uncased)، يمكن استخدامها مثل النموذج أحادي اللغة. سيُظهر لك هذا الدليل كيفية استخدام النماذج متعددة اللغات التي تختلف طريقة استخدامها للاستنتاج.
Comment thread
AhmedAlmaghz marked this conversation as resolved.
Outdated

## XLM

يحتوي XLM على عشر نقاط تفتيش مختلفة، واحدة منها فقط أحادية اللغة. ويمكن تقسيم نقاط تفتيش النماذج التسع المتبقية إلى فئتين: نقاط التفتيش التي تستخدم تضمينات اللغة وتلك التي لا تستخدمها.
Comment thread
AhmedAlmaghz marked this conversation as resolved.
Outdated

### XLM مع تضمينات اللغة

تستخدم النماذج التالية من XLM تضمينات اللغة لتحديد اللغة المستخدمة في الاستنتاج:
Comment thread
AhmedAlmaghz marked this conversation as resolved.
Outdated

- `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`.
Comment thread
AhmedAlmaghz marked this conversation as resolved.
Outdated

في هذا المثال، قم بتحميل نقطة تفتيش `FacebookAI/xlm-clm-enfr-1024` (نمذجة اللغة السببية، الإنجليزية-الفرنسية):
Comment thread
AhmedAlmaghz marked this conversation as resolved.
Outdated

```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` في المحلل اللغات وأرقام تعريفها في هذا النموذج:
Comment thread
AhmedAlmaghz marked this conversation as resolved.
Outdated

```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 السابقة.
Comment thread
AhmedAlmaghz marked this conversation as resolved.
Outdated

## BERT

يمكن استخدام النماذج التالية من BERT للمهام متعددة اللغات:

- `google-bert/bert-base-multilingual-uncased` (نمذجة اللغة المقنعة + التنبؤ بالجملة التالية، 102 لغة)
- `google-bert/bert-base-multilingual-cased` (نمذجة اللغة المقنعة + التنبؤ بالجملة التالية، 104 لغات)

لا تتطلب هذه النماذج تضمينات اللغة أثناء الاستنتاج. يجب أن تحدد اللغة من السياق وتستنتج وفقاً لذلك.
Comment thread
AhmedAlmaghz marked this conversation as resolved.
Outdated

## 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` لترجمة النص من الصينية إلى الإنجليزية. يمكنك تعيين اللغة المصدر في المحلل:
Comment thread
AhmedAlmaghz marked this conversation as resolved.
Outdated

```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")
```

قم بتحليل النص:
Comment thread
AhmedAlmaghz marked this conversation as resolved.
Outdated

```py
>>> encoded_zh = tokenizer(chinese_text, return_tensors="pt")
```

يجبر M2M100 معرف اللغة الهدف كأول رمز مولد للترجمة إلى لغة الهدف. قم بتعيين `forced_bos_token_id` إلى `en` في طريقة `generate` للترجمة إلى الإنجليزية:
Comment thread
AhmedAlmaghz marked this conversation as resolved.
Outdated

```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` لترجمة النص من الفنلندية إلى الإنجليزية. يمكنك تعيين اللغة المصدر في المحلل:
Comment thread
AhmedAlmaghz marked this conversation as resolved.
Outdated

```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")
```

قم بتحليل النص:
Comment thread
AhmedAlmaghz marked this conversation as resolved.
Outdated

```py
>>> encoded_en = tokenizer(en_text, return_tensors="pt")
```

يجبر MBart معرف لغة الهدف كأول رمز مولد للترجمة إلى لغة الهدف. قم بتعيين `forced_bos_token_id` إلى `en` في طريقة `generate` للترجمة إلى الإنجليزية:
Comment thread
AhmedAlmaghz marked this conversation as resolved.
Outdated

```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`، فلا تحتاج إلى إجبار معرف لغة الهدف كأول رمز مولد، وإلا فإن الاستخدام هو نفسه.
Comment thread
AhmedAlmaghz marked this conversation as resolved.
Outdated