# GPT-Sw3

## نظرة عامة

قُدم نموذج GPT-Sw3 لأول مرة في [Lessons Learned from GPT-SW3: Building the First Large-Scale Generative Language Model for Swedish](http://www.lrec-conf.org/proceedings/lrec2022/pdf/2022.lrec-1.376.pdf) من قِبل Ariel Ekgren وAmaru Cuba Gyllensten وEvangelia Gogoulou وAlice Heiman وSeverine Verlinden وJoey Öhman وFredrik Carlsson وMagnus Sahlgren.

منذ ذلك الورقة الأولى، وسّع المؤلفون عملهم ودرّبوا نماذج جديدة على مجموعات بياناتهم الجديدة البالغة 1.2 تيرابايت والمُسمّاة The Nordic Pile.

GPT-Sw3 هي مجموعة من نماذج اللغة التحويلية مسبقة التدريب الكبيرة ذات المُفكِّك فقط، طوّرتها AI Sweden بالتعاون مع RISE و WASP WARA للإعلام واللغة. تم تدريب GPT-Sw3 على مجموعة بيانات تحتوي على 320 مليار رمز باللغة السويدية والنرويجية والدنماركية والآيسلندية والإنجليزية وأكواد البرمجة. تم تدريب النموذج مسبقًا باستخدام هدف نمذجة اللغة السببية (CLM) مع الاستفادة من تطبيق NeMo Megatron GPT.

تمت مساهمة هذا النموذج من قِبل [AI Sweden Models](https://huggingface.co/AI-Sweden-Models).

## مثال على الاستخدام

```python
from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("AI-Sweden-Models/gpt-sw3-356m")
model = AutoModelForCausalLM.from_pretrained("AI-Sweden-Models/gpt-sw3-356m", device_map="auto")

input_ids = tokenizer("Träd är fina för att", return_tensors="pt").to(model.device)["input_ids"]

generated_token_ids = model.generate(inputs=input_ids, max_new_tokens=10, do_sample=True)[0]

print(tokenizer.decode(generated_token_ids))
Träd är fina för att de är färgstarka. Men ibland är det fint
```

## الموارد

- [دليل مهمة تصنيف النصوص](../tasks/sequence_classification)
- [دليل مهمة تصنيف الرموز](../tasks/token_classification)
- [دليل مهمة نمذجة اللغة السببية](../tasks/language_modeling)

تستخدم هذه التنفيذ `GPT2Model` مقترنةً بـ `GPTSw3Tokenizer` الخاص بنا. راجع [توثيق GPT2Model](gpt2) للاطلاع على مرجع واجهة برمجة التطبيقات والأمثلة.

لاحظ أن `pip install transformers[sentencepiece]` أو `pip install sentencepiece` مطلوبان لتثبيت sentencepiece، وهو ضروري لاستخدام مُجزّئنا.

## GPTSw3Tokenizer[[transformers.GPTSw3Tokenizer]]

#### transformers.GPTSw3Tokenizer[[transformers.GPTSw3Tokenizer]]

```python
transformers.GPTSw3Tokenizer(vocab_file, do_lower_case = False, remove_space = False, keep_accents = False, pad_token = None, unk_token = None, eos_token = None, bos_token = None, sp_model_kwargs: dict[str, typing.Any] | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/gpt_sw3/tokenization_gpt_sw3.py#L21)

**المعاملات:**

vocab_file (`str`) : ملف [SentencePiece](https://github.com/google/sentencepiece) (يحمل عادةً امتداد *.spm*) يحتوي على المفردات اللازمة لإنشاء مُجزِّئ.

do_lower_case (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان سيتم تحويل المدخلات إلى أحرف صغيرة عند تقسيم النص.

remove_space (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب إزالة النص عند الترميز (إزالة المسافات الزائدة قبل السلسلة وبعدها).

keep_accents (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب الحفاظ على علامات التشكيل عند تقسيم النص إلى رموز.

pad_token (`str`، *اختياري*) : الرمز المستخدم للتعبئة (padding)، على سبيل المثال عند تجميع تسلسلات بطول مختلف. إذا لم يُقدَّم، فسيتم افتراض '' أو '' اعتمادًا على حجم النموذج.

unk_token (`str`، *اختياري*) : الرمز المجهول. الرمز غير الموجود في المفردات لا يمكن تحويله إلى معرّف، لذا يُعيَّن هذا الرمز بدلاً منه. إذا لم يُقدَّم، فسيكون الافتراضي ''.

eos_token (`str`، *اختياري*) : رمز نهاية التسلسل الذي شوهد أثناء التدريب المسبق. إذا لم يُقدَّم، فسيكون الافتراضي هو '<|endoftext|>'

bos_token (`str`، *اختياري*) : رمز بداية التسلسل الذي يمكن استخدامه للمهمة التالية، ولم يُرَ أثناء التدريب المسبق. إذا لم يُقدَّم، فسيكون الافتراضي '' أو '<|endoftext|>'، اعتمادًا على حجم النموذج.

sp_model_kwargs (`dict`، *اختياري*) : سيتم تمريرها إلى طريقة `SentencePieceProcessor.__init__()`. يمكن استخدام [غلاف Python لـ SentencePiece](https://github.com/google/sentencepiece/tree/master/python)، من بين أمور أخرى، لضبط:  - `enable_sampling`: تفعيل تنسيق تحت الكلمة. - `nbest_size`: معاملات العينة للوحدة الأحادية. غير صالح لـ BPE-Dropout.  - `nbest_size = {0,1}`: لا يتم إجراء أي عينة. - `nbest_size > 1`: يأخذ عينات من نتائج nbest_size. - `nbest_size < 0`: بافتراض أن nbest_size لا نهائي، ويأخذ عينات من جميع الفرضيات (الشبكة) باستخدام خوارزمية التصفية الأمامية والعينة الخلفية.  - `alpha`: معامل التنعيم لعينة الوحدة الأحادية، واحتمالية dropout لعمليات الدمج في BPE-dropout.

sp_model (`SentencePieceProcessor`) : معالج *SentencePiece* المستخدم لكل عملية تحويل (النص، الرموز، والمعرّفات).

whitespaces (`set`) : المسافات البيضاء التي يتم استبدالها في تطبيع المسافات البيضاء أثناء المعالجة المسبقة.

non_printing_characters_re (`Pattern`) : التعبير النمطي المُجمَّع لإزالة الأحرف غير القابلة للطباعة أثناء المعالجة المسبقة.

أنشئ مُجزِّئ GPTSw3. مبني على [SentencePiece](https://github.com/google/sentencepiece).

يرث هذا المُجزِّئ من [PreTrainedTokenizer](/docs/transformers/main/ar/main_classes/tokenizer#transformers.PythonBackend) التي تحتوي على معظم الطرق الرئيسية. ينبغي للمستخدمين الرجوع إلى هذه الفئة الأصلية لمزيد من المعلومات حول تلك الطرق.

مثال على الاستخدام:
```python
>>> from transformers import GPTSw3Tokenizer

>>> tokenizer = GPTSw3Tokenizer.from_pretrained("AI-Sweden-Models/gpt-sw3-126m")
>>> tokenizer("Svenska är kul!")["input_ids"]
[1814, 377, 3617, 63504]
```

#### save_vocabulary[[transformers.GPTSw3Tokenizer.save_vocabulary]]

```python
save_vocabulary(save_directory: str, filename_prefix: str | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_sentencepiece.py#L237)

**المعاملات:**

save_directory (`str`) : المجلد الذي سيتم فيه حفظ مفردات اللغة.

filename_prefix (`str`، *اختياري*) : بادئة اختيارية تُضاف إلى أسماء الملفات المحفوظة.

**يعيد:** `tuple(str)`

مسارات الملفات المحفوظة.

احفظ مفردات sentencepiece (انسخ الملف الأصلي) إلى مجلد.

