# منسّق البيانات

مجمِّعات البيانات هي كائنات تُشكِّل دفعةً واحدة باستخدام قائمة من عناصر مجموعة البيانات كمدخلات. تكون هذه العناصر من نفس نوع عناصر `train_dataset` أو `eval_dataset`.

لتمكين من بناء الدفعات، قد تُطبّق مجمّعات البيانات بعض المعالجات (مثل الحشو). كما تُطبّق بعض هذه المجمّعات (مثل [DataCollatorForLanguageModeling](/docs/transformers/main/ar/main_classes/data_collator#transformers.DataCollatorForLanguageModeling)) بعض عمليات زيادة البيانات العشوائية (مثل الإخفاء العشوائي) على الدفعة المُشكَّلة.

يمكن العثور على أمثلة للاستخدام في [دفاتر الأمثلة](https://github.com/huggingface/notebooks/tree/main/examples).

## مجمّع البيانات الافتراضي[[transformers.default_data_collator]]

#### transformers.default_data_collator[[transformers.default_data_collator]]

```python
transformers.default_data_collator(features: list, return_tensors = 'pt')
```

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

منسّق بيانات بسيط للغاية يقوم ببساطة بجمع دفعات من الكائنات المشابهة للقاموس وينفّذ معالجة خاصة للمفاتيح المحتملة المسماة:

- `label`: يتعامل مع قيمة واحدة (int أو float) لكل كائن
- `label_ids`: يتعامل مع قائمة من القيم لكل كائن

لا يقوم بأي معالجة مسبقة إضافية: سيتم استخدام أسماء خصائص كائن الإدخال كمدخلات مقابلة للنموذج. راجع glue وner كمثال على كيفية فائدته.

## DefaultDataCollator[[transformers.DefaultDataCollator]]

#### transformers.DefaultDataCollator[[transformers.DefaultDataCollator]]

```python
transformers.DefaultDataCollator(return_tensors: str = 'pt')
```

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

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

return_tensors (`str`، *اختياري*، القيمة الافتراضية `"pt"`) : نوع المصفوفة (Tensor) التي سيتم إرجاعها. القيم المسموح بها هي "np" أو "pt".

منسّق بيانات بسيط للغاية يقوم ببساطة بجمع دفعات من الكائنات المشابهة للقاموس وينفّذ معالجة خاصة للمفاتيح المحتملة المسماة:

- `label`: يتعامل مع قيمة واحدة (int أو float) لكل كائن
- `label_ids`: يتعامل مع قائمة من القيم لكل كائن

لا يقوم بأي معالجة مسبقة إضافية: سيتم استخدام أسماء خصائص كائن الإدخال كمدخلات مقابلة للنموذج. راجع glue وner كمثال على كيفية فائدته.

هذا كائن (مثل مُجمِّعات البيانات الأخرى) وليس دالةً خالصةً مثل default_data_collator. وقد يكون ذلك مفيدًا إذا كنت بحاجة إلى تعيين قيمة return_tensors عند التهيئة.

## DataCollatorWithPadding[[transformers.DataCollatorWithPadding]]

#### transformers.DataCollatorWithPadding[[transformers.DataCollatorWithPadding]]

```python
transformers.DataCollatorWithPadding(tokenizer: PreTrainedTokenizerBase, padding: bool | str | transformers.utils.generic.PaddingStrategy = True, max_length: int | None = None, pad_to_multiple_of: int | None = None, return_tensors: str = 'pt')
```

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

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

tokenizer ([PreTrainedTokenizer](/docs/transformers/main/ar/main_classes/tokenizer#transformers.PythonBackend) أو [PreTrainedTokenizerFast](/docs/transformers/main/ar/main_classes/tokenizer#transformers.TokenizersBackend)) : المُرمِّز المستخدم لتشفير البيانات.

padding (`bool` أو `str` أو [PaddingStrategy](/docs/transformers/main/ar/internal/file_utils#transformers.utils.PaddingStrategy)، *اختياري*، القيمة الافتراضية `True`) : اختيار استراتيجية لحشو التسلسلات المُعادَة (وفقًا لجانب الحشو وفهرس الحشو الخاص بالنموذج) من بين الخيارات التالية: - `True` أو `'longest'` (الافتراضي): الحشو حتى أطول تسلسل في الدفعة (أو عدم الحشو إذا تم تقديم تسلسل واحد فقط). - `'max_length'`: الحشو حتى طول أقصى محدد بالحجة `max_length` أو حتى أقصى طول إدخال مقبول للنموذج إذا لم تُقدَّم تلك الحجة. - `False` أو `'do_not_pad'`: لا حشو (أي، يمكن إخراج دفعة تحتوي على تسلسلات بأطوال مختلفة).

max_length (`int`، *اختياري*) : الحد الأقصى لطول القائمة المُعاد، وطول الحشو اختياريًا (انظر أعلاه).

pad_to_multiple_of (`int`, *اختياري*) : إذا تم ضبطه، سيتم توسيط التسلسل إلى مضاعف للقيمة المُقدَّمة. وهذا مفيد بشكل خاص لتفعيل استخدام نوى Tensor على أجهزة NVIDIA التي تتمتع بقابلية معالجة >= 7.0 (Volta).

return_tensors (`str`، *اختياري*، القيمة الافتراضية `"pt"`) : نوع المصفوفة (Tensor) التي سيتم إرجاعها. القيم المسموح بها هي "np" أو "pt".

مجمّع بيانات يقوم بتوسيط المدخلات المستلمة ديناميكيًا.

## DataCollatorForTokenClassification[[transformers.DataCollatorForTokenClassification]]

#### transformers.DataCollatorForTokenClassification[[transformers.DataCollatorForTokenClassification]]

```python
transformers.DataCollatorForTokenClassification(tokenizer: PreTrainedTokenizerBase, padding: bool | str | transformers.utils.generic.PaddingStrategy = True, max_length: int | None = None, pad_to_multiple_of: int | None = None, label_pad_token_id: int = -100, return_tensors: str = 'pt')
```

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

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

tokenizer ([PreTrainedTokenizer](/docs/transformers/main/ar/main_classes/tokenizer#transformers.PythonBackend) أو [PreTrainedTokenizerFast](/docs/transformers/main/ar/main_classes/tokenizer#transformers.TokenizersBackend)) : المُرمِّز المستخدم لتشفير البيانات.

padding (`bool` أو `str` أو [PaddingStrategy](/docs/transformers/main/ar/internal/file_utils#transformers.utils.PaddingStrategy)، *اختياري*، القيمة الافتراضية `True`) : اختيار استراتيجية لحشو التسلسلات المُعادَة (وفقًا لجانب الحشو وفهرس الحشو الخاص بالنموذج) من بين الخيارات التالية: - `True` أو `'longest'` (الافتراضي): الحشو حتى أطول تسلسل في الدفعة (أو عدم الحشو إذا تم تقديم تسلسل واحد فقط). - `'max_length'`: الحشو حتى طول أقصى محدد بالحجة `max_length` أو حتى أقصى طول إدخال مقبول للنموذج إذا لم تُقدَّم تلك الحجة. - `False` أو `'do_not_pad'`: لا حشو (أي، يمكن إخراج دفعة تحتوي على تسلسلات بأطوال مختلفة).

max_length (`int`، *اختياري*) : الحد الأقصى لطول القائمة المُعاد، وطول الحشو اختياريًا (انظر أعلاه).

pad_to_multiple_of (`int`, *اختياري*) : إذا تم ضبطه، سيتم توسيط التسلسل إلى مضاعف للقيمة المُقدَّمة. وهذا مفيد بشكل خاص لتفعيل استخدام نوى Tensor على أجهزة NVIDIA التي تتمتع بقابلية معالجة >= 7.0 (Volta).

label_pad_token_id (`int`، *اختياري*، القيمة الافتراضية -100) : المعرّف الذي يُستخدم عند ملء التسميات (سيتم تجاهل -100 تلقائيًا بواسطة دوال الخسارة في PyTorch).

return_tensors (`str`، *اختياري*، القيمة الافتراضية `"pt"`) : نوع المصفوفة (Tensor) التي سيتم إرجاعها. القيم المسموح بها هي "np" أو "pt".

مجمّع بيانات يقوم بتوسيط المدخلات المستلمة ديناميكياً، وكذلك التسميات.

## DataCollatorForSeq2Seq[[transformers.DataCollatorForSeq2Seq]]

#### transformers.DataCollatorForSeq2Seq[[transformers.DataCollatorForSeq2Seq]]

```python
transformers.DataCollatorForSeq2Seq(tokenizer: PreTrainedTokenizerBase, model: typing.Any | None = None, padding: bool | str | transformers.utils.generic.PaddingStrategy = True, max_length: int | None = None, pad_to_multiple_of: int | None = None, label_pad_token_id: int = -100, return_tensors: str = 'pt')
```

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

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

tokenizer ([PreTrainedTokenizer](/docs/transformers/main/ar/main_classes/tokenizer#transformers.PythonBackend) أو [PreTrainedTokenizerFast](/docs/transformers/main/ar/main_classes/tokenizer#transformers.TokenizersBackend)) : المُرمِّز المستخدم لتشفير البيانات.

model ([PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel)، *اختياري*) : النموذج الذي يتم تدريبه. إذا تم تعيينه وكان يحتوي على *prepare_decoder_input_ids_from_labels*، فاستخدمه لتحضير *decoder_input_ids*. هذا مفيد عند استخدام *label_smoothing* لتجنب حساب الخسارة مرتين.

padding (`bool` أو `str` أو [PaddingStrategy](/docs/transformers/main/ar/internal/file_utils#transformers.utils.PaddingStrategy)، *اختياري*، القيمة الافتراضية `True`) : اختيار استراتيجية لحشو التسلسلات المُعادَة (وفقًا لجانب الحشو وفهرس الحشو الخاص بالنموذج) من بين الخيارات التالية: - `True` أو `'longest'` (الافتراضي): الحشو حتى أطول تسلسل في الدفعة (أو عدم الحشو إذا تم تقديم تسلسل واحد فقط). - `'max_length'`: الحشو حتى طول أقصى محدد بالحجة `max_length` أو حتى أقصى طول إدخال مقبول للنموذج إذا لم تُقدَّم تلك الحجة. - `False` أو `'do_not_pad'`: لا حشو (أي، يمكن إخراج دفعة تحتوي على تسلسلات بأطوال مختلفة).

max_length (`int`، *اختياري*) : الحد الأقصى لطول القائمة المُعاد، وطول الحشو اختياريًا (انظر أعلاه).

pad_to_multiple_of (`int`, *اختياري*) : إذا تم ضبطه، سيتم توسيط التسلسل إلى مضاعف للقيمة المُقدَّمة. وهذا مفيد بشكل خاص لتفعيل استخدام نوى Tensor على أجهزة NVIDIA التي تتمتع بقابلية معالجة >= 7.0 (Volta).

label_pad_token_id (`int`، *اختياري*، القيمة الافتراضية -100) : المعرّف الذي يُستخدم عند ملء التسميات (سيتم تجاهل -100 تلقائيًا بواسطة دوال الخسارة في PyTorch).

return_tensors (`str`، *اختياري*، القيمة الافتراضية `"pt"`) : نوع المصفوفة (Tensor) التي سيتم إرجاعها. القيم المسموح بها هي "np" أو "pt".

مجمّع بيانات يقوم بتوسيط المدخلات المستلمة ديناميكياً، وكذلك التسميات.

## DataCollatorForLanguageModeling[[transformers.DataCollatorForLanguageModeling]]

#### transformers.DataCollatorForLanguageModeling[[transformers.DataCollatorForLanguageModeling]]

```python
transformers.DataCollatorForLanguageModeling(tokenizer: PreTrainedTokenizerBase, mlm: bool = True, whole_word_mask: bool = False, mlm_probability: float | None = 0.15, mask_replace_prob: float = 0.8, random_replace_prob: float = 0.1, pad_to_multiple_of: int | None = None, return_tensors: str = 'pt', seed: int | None = None)
```

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

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

tokenizer ([PreTrainedTokenizer](/docs/transformers/main/ar/main_classes/tokenizer#transformers.PythonBackend) أو [PreTrainedTokenizerFast](/docs/transformers/main/ar/main_classes/tokenizer#transformers.TokenizersBackend)) : المُرمِّز المستخدم لتشفير البيانات.

mlm (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم استخدام نمذجة اللغة المقنّعة أم لا. إذا تم ضبطه على `False`، فإن التسميات تكون مطابقة للمدخلات مع تجاهل رموز الحشو (عن طريق ضبطها على -100). وإلا، تكون التسميات -100 للرموز غير المقنّعة والقيمة المتوقعة للرمز المقنّع.

whole_word_mask (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم إخفاء الكلمات الكاملة بدلاً من الرموز الفردية.

mlm_probability (`float`، *اختياري*، القيمة الافتراضية 0.15) : الاحتمال الذي يتم بموجبه إخفاء الرموز (بشكل عشوائي) في المدخلات، عندما تكون قيمة `mlm` هي `True`.

mask_replace_prob (`float`، *اختياري*، القيمة الافتراضية 0.8) : الاحتمال الذي تُستبدل به الرموز المقنّعة برمز القناع الخاص بمعالج الرموز (مثل `[MASK]`). القيمة الافتراضية هي 0.8، مما يعني أن 80% من الرموز المقنّعة ستُستبدل بـ `[MASK]`. يعمل فقط عندما تكون قيمة `mlm` هي `True`.

random_replace_prob (`float`، *اختياري*، القيمة الافتراضية 0.1) : الاحتمال الذي تُستبدل به الرموز المقنّعة برموز عشوائية من قاموس مُجزّئ الرموز. القيمة الافتراضية هي 0.1، مما يعني أن 10% من الرموز المقنّعة ستُستبدل برموز عشوائية. تبقى الرموز المقنّعة المتبقية (1 - mask_replace_prob - random_replace_prob) دون تغيير. يعمل هذا فقط عند ضبط `mlm` على `True`.

pad_to_multiple_of (`int`، *اختياري*) : إذا تم ضبطه، فسيتم ملء التسلسل حتى يصبح مضاعفًا للقيمة المُقدَّمة.

return_tensors (`str`) : The type of Tensor to return. Allowable values are "np", or "pt".

seed (`int`, *اختياري*) : البذرة المستخدمة لمولّد الأرقام العشوائية للتعتيم. إذا لم تُقدَّم، فسيتم استخدام مولّد الأرقام العشوائية العام.

مُجمِّع البيانات المستخدم لنمذجة اللغة. يتم توسيد المدخلات ديناميكيًا حتى الطول الأقصى للدفعة إذا لم تكن جميعها بنفس الطول.

للحصول على أفضل أداء، يجب استخدام مُجمِّع البيانات هذا مع مجموعة بيانات تحتوي على عناصر تكون قواميس أو BatchEncoding، وتحمل المفتاح `"special_tokens_mask"`، كما تُعاد من [PreTrainedTokenizer](/docs/transformers/main/ar/main_classes/tokenizer#transformers.PythonBackend) أو [PreTrainedTokenizerFast](/docs/transformers/main/ar/main_classes/tokenizer#transformers.TokenizersBackend) مع الحجة `return_special_tokens_mask=True`.

1. السلوك الافتراضي:
   - `mask_replace_prob=0.8`, `random_replace_prob=0.1`.
   - توقع أن يتم استبدال 80% من الرموز المقنّعة بـ`[MASK]`، واستبدال 10% برموز عشوائية، وإبقاء 10% دون تغيير.

2. جميع الرموز المقنّعة التي استُبدلت بـ `[MASK]`:
   - `mask_replace_prob=1.0`, `random_replace_prob=0.0`.
   - توقع أن يتم استبدال جميع الرموز المقنّعة بـ `[MASK]`. لا تُترك أي رموز دون تغيير ولا تُستبدل برموز عشوائية.

3. لا يوجد استبدال بـ `[MASK]`، بل رموز عشوائية فقط:
   - `mask_replace_prob=0.0`, `random_replace_prob=1.0`.
   - توقع أن يتم استبدال جميع الرموز المقنّعة برموز عشوائية. لا توجد عمليات استبدال بـ`[MASK]` أو رموز لم تتغير.

4. استبدال متوازن:
   - `mask_replace_prob=0.5`, `random_replace_prob=0.4`.
   - توقع أن يتم استبدال 50% من الرموز المقنّعة بـ `[MASK]`، واستبدال 40% برموز عشوائية، وإبقاء 10% دون تغيير.

ملاحظة: يجب ألا يتجاوز مجموع `mask_replace_prob` و`random_replace_prob` القيمة 1. إذا كان مجموعهما أقل من 1، فإن النسبة المتبقية ستتشكل من الرموز المقنّعة التي تُترك دون تغيير.

#### numpy_mask_tokens[[transformers.DataCollatorForLanguageModeling.numpy_mask_tokens]]

```python
numpy_mask_tokens(inputs: Any, special_tokens_mask: typing.Any | None = None, offset_mapping: typing.Any | None = None)
```

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

جهّز مدخلات/تسميات الرموز المقنّعة لنمذجة اللغة المقنّعة.

#### torch_mask_tokens[[transformers.DataCollatorForLanguageModeling.torch_mask_tokens]]

```python
torch_mask_tokens(inputs: Any, special_tokens_mask: typing.Any | None = None, offset_mapping: typing.Any | None = None)
```

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

جهّز مدخلات/تسميات الرموز المقنّعة لنمذجة اللغة المقنّعة.

## DataCollatorForPermutationLanguageModeling[[transformers.DataCollatorForPermutationLanguageModeling]]

#### transformers.DataCollatorForPermutationLanguageModeling[[transformers.DataCollatorForPermutationLanguageModeling]]

```python
transformers.DataCollatorForPermutationLanguageModeling(tokenizer: PreTrainedTokenizerBase, plm_probability: float = 0.16666666666666666, max_span_length: int = 5, return_tensors: str = 'pt')
```

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

مجمّع البيانات المستخدم لنمذجة اللغة بالتبديل.

- يجمع دفعات من الموترات (tensors) مع مراعاة رمز الحشو (pad_token) الخاص بمعالج النص (tokenizer) الخاص بها
- يعالج الدفعات مسبقاً لنمذجة اللغة بالتبديل باستخدام إجراءات خاصة بـ XLNet

#### numpy_mask_tokens[[transformers.DataCollatorForPermutationLanguageModeling.numpy_mask_tokens]]

```python
numpy_mask_tokens(inputs: Any)
```

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

تُحدَّد الرموز المقنَّعة التي يجب التنبؤ بها لسلسلة معينة من خلال الخوارزمية التالية:

0. ابدأ من بداية التسلسل عن طريق تعيين `cur_len = 0` (عدد الرموز التي تم معالجتها حتى الآن).
1. اختر `span_length` عشوائياً من الفترة `[1, max_span_length]` (طول المقطع من الرموز التي سيتم إخفاؤها)
2. احجز سياقاً بطول `context_length = span_length / plm_probability` لمحيط الجزء الذي سيتم إخفاؤه
3. اختر نقطة بداية `start_index` من الفترة `[cur_len, cur_len + context_length - span_length]` وأقنِع الرموز `start_index:start_index + span_length`
4. اضبط `cur_len = cur_len + context_length`. إذا كان `cur_len < max_len` (أي أنه لا تزال هناك رموز متبقية في التسلسل لم تتم معالجتها)، فكرر من الخطوة 1.

#### torch_mask_tokens[[transformers.DataCollatorForPermutationLanguageModeling.torch_mask_tokens]]

```python
torch_mask_tokens(inputs: Any)
```

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

تُحدَّد الرموز المقنَّعة التي يجب التنبؤ بها لسلسلة معينة من خلال الخوارزمية التالية:

0. ابدأ من بداية التسلسل عن طريق تعيين `cur_len = 0` (عدد الرموز التي تم معالجتها حتى الآن).
1. اختر `span_length` عشوائياً من الفترة `[1, max_span_length]` (طول المقطع من الرموز التي سيتم إخفاؤها)
2. احجز سياقاً بطول `context_length = span_length / plm_probability` لمحيط الجزء الذي سيتم إخفاؤه
3. اختر نقطة بداية `start_index` من الفترة `[cur_len, cur_len + context_length - span_length]` وأقنِع الرموز `start_index:start_index + span_length`
4. اضبط `cur_len = cur_len + context_length`. إذا كان `cur_len < max_len` (أي أنه لا تزال هناك رموز متبقية في التسلسل لم تتم معالجتها)، فكرر من الخطوة 1.

## DataCollatorWithFlattening[[transformers.DataCollatorWithFlattening]]

#### transformers.DataCollatorWithFlattening[[transformers.DataCollatorWithFlattening]]

```python
transformers.DataCollatorWithFlattening(*args, return_position_ids = True, separator_id = -100, return_flash_attn_kwargs = False, return_seq_idx = False, position_ids_start = 0, **kwargs)
```

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

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

return_position_ids (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع `position_ids`، والتي تبدأ من جديد من `position_ids_start` لكل تسلسل مُسطّح.

separator_id (`int`، *اختياري*، القيمة الافتراضية -100) : القيمة المستخدمة لفصل التسلسلات داخل `labels` المدمجة.

return_flash_attn_kwargs (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب إرجاع معاملات الكلمات المفتاحية (kwargs) الخاصة بحدود التسلسل المستخدمة في FlashAttention (`cu_seq_lens_q`، `cu_seq_lens_k`، `max_length_q` و`max_length_k`).

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

position_ids_start (`int`، *اختياري*، القيمة الافتراضية 0) : معرّف الموضع المُعطى لأول رمز في كل تسلسل.

مُجمِّع البيانات المستخدم في نهج خالٍ من الحشو. يقوم بما يلي:

- يجمع الدفعة الفرعية بأكملها في تسلسل طويل واحد من الشكل [1, total_tokens]
- يستخدم `separator_id` لفصل التسلسلات داخل `labels` المدمجة، والقيمة الافتراضية هي -100
- لن يتم إضافة أي حشو، وتُرجع `input_ids` و`labels` و`position_ids` افتراضيًا
- تُرجع اختياريًا معاملات kwargs الموجودة في FlashAttentionKwargs
- يعيد اختياريًا seq_idx الذي يحدد التسلسل الذي ينتمي إليه كل رمز

سيؤدي استخدام `DataCollatorWithFlattening` إلى تسطيح الدفعة الفرعية بأكملها في تسلسل طويل واحد. تأكد من أن حساب الانتباه لديك قادر على التعامل مع ذلك!

لا يبدأ كل نموذج ترقيم الموضع من 0 عند حساب معرّفات الموضع بنفسه. تبدأ البنى المعمارية المشابهة لـ RoBERTa (من بينها `roberta`، `xlm_roberta`، `camembert`، `mpnet` و`esm` مع تضمينات الموضع المطلقة) من `padding_idx + 1`، وهو عادةً 2. تمرير `position_ids` الافتراضية القائمة على 0 إلى مثل هذه النماذج يُسبّب إزاحة تضمينات الموضع بصمت ويُضعف مخرجاتها، لذا اضبط `position_ids_start` بشكل مناسب لتلك النماذج.

## DataCollatorForMultipleChoice[[transformers.DataCollatorForMultipleChoice]]

#### transformers.DataCollatorForMultipleChoice[[transformers.DataCollatorForMultipleChoice]]

```python
transformers.DataCollatorForMultipleChoice(tokenizer: PreTrainedTokenizerBase, padding: bool | str | transformers.utils.generic.PaddingStrategy = True, max_length: int | None = None, pad_to_multiple_of: int | None = None, return_tensors: str = 'pt')
```

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

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

tokenizer ([PreTrainedTokenizer](/docs/transformers/main/ar/main_classes/tokenizer#transformers.PythonBackend) أو [PreTrainedTokenizerFast](/docs/transformers/main/ar/main_classes/tokenizer#transformers.TokenizersBackend)) : المُرمِّز المستخدم لتشفير البيانات.

padding (`bool` أو `str` أو [PaddingStrategy](/docs/transformers/main/ar/internal/file_utils#transformers.utils.PaddingStrategy)، *اختياري*، القيمة الافتراضية `True`) : اختيار استراتيجية لحشو التسلسلات المُعادَة وفقًا لجانب الحشو وفهرس الحشو الخاص بالنموذج، من بين الخيارات التالية: - `True` أو `'longest'`: الحشو حتى أطول تسلسل في الدفعة (أو عدم الحشو إذا تم تقديم تسلسل واحد فقط). - `'max_length'`: الحشو حتى الحد الأقصى للطول المحدد بالحجة `max_length` أو حتى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. - `False` أو `'do_not_pad'` (الافتراضي): لا يوجد حشو (أي، يمكن إخراج دفعة تحتوي على تسلسلات بطول مختلف).

max_length (`int`، *اختياري*) : الحد الأقصى لطول القائمة المُعاد، وطول الحشو اختياريًا (انظر أعلاه).

pad_to_multiple_of (`int`, *اختياري*) : توسيط التسلسل إلى مضاعف للقيمة المُقدَّمة. هذا مفيد بشكل خاص لتفعيل استخدام نوى المصفوفات (Tensor Cores) على أجهزة NVIDIA ذات قدرة الحوسبة >= 7.5 (Volta).

return_tensors (`str`، *اختياري*، القيمة الافتراضية `"pt"`) : نوع المصفوفة (Tensor) التي سيتم إرجاعها. القيم المسموح بها هي "np" أو "pt".

مُجمِّع بيانات يقوم بتوسيط ديناميكي لدفعة من الأمثلة المتداخلة لاختيارات متعددة، بحيث تكون جميع الخيارات لجميع الأمثلة بنفس الطول.

