# Trainer

توفر فئة [Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer) واجهة برمجة تطبيقات (API) للتدريب الكامل الميزات في PyTorch، وتدعم التدريب الموزع على عدة وحدات معالجة رسومات (GPUs) ووحدات معالجة TPU، والدقة المختلطة لـ [NVIDIA GPUs](https://nvidia.github.io/apex/) و [AMD GPUs](https://rocm.docs.amd.com/en/latest/rocm.html)، و [`torch.amp`](https://pytorch.org/docs/stable/amp.html) في PyTorch. تعمل فئة [Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer) جنبًا إلى جنب مع فئة [TrainingArguments](/docs/transformers/main/ar/main_classes/trainer#transformers.TrainingArguments)، التي تقدم مجموعة واسعة من الخيارات لتخصيص طريقة تدريب النموذج. معًا، توفر هاتان الفئتان واجهة برمجة تطبيقات كاملة للتدريب.

يرث [Seq2SeqTrainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Seq2SeqTrainer) و[Seq2SeqTrainingArguments](/docs/transformers/main/ar/main_classes/trainer#transformers.Seq2SeqTrainingArguments) من فئتي [Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer) و[TrainingArguments](/docs/transformers/main/ar/main_classes/trainer#transformers.TrainingArguments)، وقد تم تكييفهما لتدريب النماذج على مهام التحويل من تسلسل إلى تسلسل مثل التلخيص أو الترجمة.

تم تحسين فئة [Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer) لنماذج 🤗 Transformers، وقد تُظهر سلوكيات غير متوقعة عند استخدامها مع نماذج أخرى. عند استخدامها مع نموذجك الخاص، تأكد من:

- يعيد نموذجك دائمًا مجموعات (tuples) أو فئات فرعية من [ModelOutput](/docs/transformers/main/ar/main_classes/output#transformers.utils.ModelOutput)
- يمكن لنموذجك حساب الخسارة إذا تم توفير معامل `labels`، وتُعاد تلك الخسارة كعنصر أول في المجموعة المرتبة (إذا كان نموذجك يعيد مجموعات مرتبة)
- يمكن لنموذجك أن يقبل عدة حُجج تسمية (استخدم `label_names` في [TrainingArguments](/docs/transformers/main/ar/main_classes/trainer#transformers.TrainingArguments) لتوضيح أسمائها إلى [Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer)) لكن لا ينبغي أن يكون اسم أي منها `"label"`

## مدرب[مرجع الواجهة البرمجية][[transformers.Trainer]]

#### transformers.Trainer[[transformers.Trainer]]

```python
transformers.Trainer(model: typing.Union[transformers.modeling_utils.PreTrainedModel, torch.nn.Module, NoneType] = None, args: transformers.training_args.TrainingArguments | None = None, data_collator: collections.abc.Callable[[list[typing.Any]], dict[str, typing.Any]] | None = None, train_dataset: Dataset | IterableDataset | datasets.Dataset | None = None, eval_dataset: Dataset | dict[str, Dataset] | datasets.Dataset | None = None, processing_class: transformers.tokenization_utils_base.PreTrainedTokenizerBase | transformers.image_processing_utils.BaseImageProcessor | transformers.feature_extraction_utils.FeatureExtractionMixin | transformers.processing_utils.ProcessorMixin | None = None, model_init: collections.abc.Callable[..., transformers.modeling_utils.PreTrainedModel] | None = None, compute_loss_func: collections.abc.Callable | None = None, compute_metrics: collections.abc.Callable[[transformers.trainer_utils.EvalPrediction], dict] | None = None, callbacks: list[transformers.trainer_callback.TrainerCallback] | None = None, optimizers: tuple = (None, None), optimizer_cls_and_kwargs: tuple[type[torch.optim.Optimizer], dict[str, typing.Any]] | None = None, preprocess_logits_for_metrics: collections.abc.Callable[[torch.Tensor, torch.Tensor], torch.Tensor] | None = None)
```

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

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

model ([PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel) أو `torch.nn.Module`، *اختياري*) : النموذج الذي سيتم تدريبه أو تقييمه أو استخدامه للتنبؤات. إذا لم يتم تقديمه، فيجب تمرير `model_init`.    [Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer) مُحسّن للعمل مع [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel) الذي توفره المكتبة. يمكنك ما زال استخدام نماذجك الخاصة المعرّفة كـ `torch.nn.Module` طالما أنها تعمل بنفس طريقة عمل نماذج 🤗 Transformers.

args ([TrainingArguments](/docs/transformers/main/ar/main_classes/trainer#transformers.TrainingArguments)، *اختياري*) : الحُجج التي تُعدّلها للتدريب. إذا لم تُقدَّم، فسيتم افتراضياً استخدام نسخة أساسية من [TrainingArguments](/docs/transformers/main/ar/main_classes/trainer#transformers.TrainingArguments) مع ضبط `output_dir` على مجلد باسم *tmp_trainer* في المجلد الحالي.

data_collator (`DataCollator`، *اختياري*) : الدالة المستخدمة لتكوين دفعة (batch) من قائمة عناصر `train_dataset` أو `eval_dataset`. ستكون القيمة الافتراضية [default_data_collator()](/docs/transformers/main/ar/main_classes/data_collator#transformers.default_data_collator) إذا لم يتم تقديم `processing_class`، وإلا فستكون نسخة من [DataCollatorWithPadding](/docs/transformers/main/ar/main_classes/data_collator#transformers.DataCollatorWithPadding) إذا كان processing_class مستخرج ميزات (feature extractor) أو مُجزئًا (tokenizer).

train_dataset (`torch.utils.data.Dataset` | `torch.utils.data.IterableDataset` | `datasets.Dataset`، *اختياري*) : مجموعة البيانات المستخدمة للتدريب. إذا كانت من نوع [Dataset](https://huggingface.co/docs/datasets/main/en/package_reference/main_classes#datasets.Dataset)، تُحذف تلقائيًا الأعمدة غير المقبولة بواسطة طريقة `model.forward()`. لاحظ أنه إذا كانت من نوع `torch.utils.data.IterableDataset` مع بعض العشوائية، وأنت تتدرب بطريقة موزعة، فيجب أن تستخدم مجموعة البيانات القابلة للتكرار إما خاصية داخلية `generator` تكون من نوع `torch.Generator` للعشوائية، ويجب أن تكون متطابقة في جميع العمليات (وسيقوم Trainer بإعداد بذرة هذا `generator` يدويًا في كل حقبة)، أو أن تحتوي على طريقة `set_epoch()` تقوم داخليًا بإعداد بذرة مولدات الأرقام العشوائية المستخدمة. إذا لم تنفّذ مجموعة البيانات `__len__` (مثل `IterableDataset` البثّي)، يجب تعيين `max_steps`، لأن عدد خطوات التدريب الإجمالي لا يمكن استنتاجه.

eval_dataset (`torch.utils.data.Dataset` | dict[str, `torch.utils.data.Dataset`] | `datasets.Dataset`, *اختياري*) : مجموعة البيانات المستخدمة للتقييم. إذا كانت من نوع [Dataset](https://huggingface.co/docs/datasets/main/en/package_reference/main_classes#datasets.Dataset)، تُحذف الأعمدة غير المقبولة بواسطة طريقة `model.forward()` تلقائيًا. أما إذا كانت قاموسًا، فسيتم التقييم على كل مجموعة بيانات مع إضافة مفتاح القاموس إلى بداية اسم المقياس.

processing_class (`PreTrainedTokenizerBase` أو `BaseImageProcessor` أو `FeatureExtractionMixin` أو `ProcessorMixin`، *اختياري*) : فئة المعالجة المستخدمة لمعالجة البيانات. إذا تم تقديمها، فستُستخدم لمعالجة المدخلات الخاصة بالنموذج تلقائيًا، وستُحفظ مع النموذج لتسهيل إعادة تشغيل التدريب المقطوع أو إعادة استخدام النموذج المُحسَّن.

model_init (`Callable[[], PreTrainedModel]`، *اختياري*) : دالة تُنشئ النموذج الذي سيُستخدم. إذا تم توفيرها، فستبدأ كل استدعاء لـ [train()](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer.train) من نسخة جديدة من النموذج كما تحددها هذه الدالة. قد تحتوي الدالة على صفر من المعاملات، أو معامل واحد يحتوي على كائن تجربة optuna/Ray Tune، حتى يمكن اختيار معماريات مختلفة وفقًا للمعاملات الفائقة (مثل عدد الطبقات، أحجام الطبقات الداخلية، احتمالات dropout وما إلى ذلك).

compute_loss_func (`Callable`، *اختياري*) : دالة تقبل مخرجات النموذج الخام، والتسميات، وعدد العناصر في الدفعة المتراكمة بالكامل (batch_size * gradient_accumulation_steps) وتعيد الخسارة. على سبيل المثال، راجع [دالة الخسارة](https://github.com/huggingface/transformers/blob/052e652d6d53c2b26ffde87e039b723949a53493/src/transformers/trainer.py#L3618) الافتراضية المستخدمة بواسطة [Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer).

compute_metrics (`Callable[[EvalPrediction], Dict]`، *اختياري*) : الدالة التي ستُستخدم لحساب المقاييس أثناء التقييم. يجب أن تستقبل [EvalPrediction](/docs/transformers/main/ar/internal/trainer_utils#transformers.EvalPrediction) وتعيد قاموسًا من السلاسل النصية إلى قيم المقاييس. *ملاحظة* عند تمرير TrainingArgs مع ضبط `batch_eval_metrics` على `True`، يجب أن تستقبل دالة compute_metrics الخاصة بك معاملًا من نوع boolean باسم `compute_result`. سيُستدعى هذا بعد آخر دفعة تقييم للإشارة إلى أن الدالة بحاجة إلى حساب إحصاءات الملخص العام وإعادتها بدلاً من تراكم إحصاءات مستوى الدفعة

callbacks (قائمة من [TrainerCallback](/docs/transformers/main/ar/main_classes/callback#transformers.TrainerCallback)، *اختياري*) : قائمة من الاستدعاءات المخصصة لتخصيص حلقة التدريب. ستُضاف هذه الاستدعاءات إلى قائمة الاستدعاءات الافتراضية المفصّلة في [هنا](callback). إذا كنت ترغب في إزالة أحد الاستدعاءات الافتراضية المستخدمة، فاستخدم طريقة [Trainer.remove_callback()](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer.remove_callback).

optimizers (`tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR]`، *اختياري*، القيمة الافتراضية هي `(None, None)`) : مجموعة (tuple) تحتوي على المُحسِّن (optimizer) والمُجدوِل (scheduler) المطلوبين للاستخدام. ستكون القيمة الافتراضية هي نسخة من `AdamW` على النموذج الخاص بك، مع مُجدوِل يُعطى بواسطة [get_linear_schedule_with_warmup()](/docs/transformers/main/ar/main_classes/optimizer_schedules#transformers.get_linear_schedule_with_warmup) ويُتحكم به عبر `args`.

optimizer_cls_and_kwargs (`tuple[Type[torch.optim.Optimizer], dict[str, Any]]`، *اختياري*) : مجموعة (tuple) تحتوي على فئة المُحسِّن (optimizer) وبارامترات الكلمات المفتاحية (keyword arguments) المراد استخدامها. يتجاوز `optim` و`optim_args` في `args`. غير متوافق مع معامل `optimizers`. على عكس `optimizers`، يتجنب هذا المعامل الحاجة إلى وضع معاملات النموذج على الأجهزة الصحيحة قبل تهيئة Trainer.

preprocess_logits_for_metrics (`Callable[[torch.Tensor, torch.Tensor], torch.Tensor]`، *اختياري*) : دالة تعالج القيم الاحتمالية (logits) مباشرةً قبل تخزينها في كل خطوة تقييم. يجب أن تستقبل مصفوفتين (tensors)، وهما القيم الاحتمالية والوسوم (labels)، وتعيد القيم الاحتمالية بعد معالجتها بالطريقة المطلوبة. ستظهر التعديلات التي تجريها هذه الدالة في التنبؤات التي يستلمها `compute_metrics`. لاحظ أن الوسم (المعامل الثاني) سيكون `None` إذا لم يحتوي مجموعة البيانات على وسوم.

Trainer هو حلقة تدريب وتقييم بسيطة لكنها متكاملة الميزات لـ PyTorch، مُحسّنة لـ 🤗 Transformers.

الخصائص المهمة:

- **model** -- يشير دائمًا إلى النموذج الأساسي. إذا كنت تستخدم نموذجًا من transformers، فسيكون [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel) فئة فرعية.
- **model_wrapped** -- تشير دائمًا إلى النموذج الخارجي الأكثر شمولًا في حال كان هناك وحدة أو أكثر تغلف النموذج الأصلي. هذا هو النموذج الذي يجب استخدامه لتمريرة الأمامية. على سبيل المثال، في إطار `DeepSpeed`، يُغلَّف النموذج الداخلي بواسطة `DeepSpeed` ثم مرة أخرى بواسطة `torch.nn.DistributedDataParallel`. إذا لم يكن النموذج الداخلي مُغلَّفًا، فإن `self.model_wrapped` هو نفسه `self.model`.
- **is_model_parallel** -- ما إذا كان النموذج قد تم تحويله إلى وضع التوازي على مستوى النموذج (على عكس التوازي على مستوى البيانات، حيث يتم تقسيم بعض طبقات النموذج على وحدات معالجة رسومية مختلفة).
- **place_model_on_device** -- ما إذا كان سيتم وضع النموذج على الجهاز تلقائيًا أم لا. القيمة الافتراضية هي `True` ما لم يكن التوازي بين النماذج أو DeepSpeed أو FSDP أو التقييم الكامل بـ fp16/bf16 أو SageMaker MP مفعّلًا. يمكن تجاوز ذلك عن طريق إنشاء فئة فرعية من `TrainingArguments` وتجاوز خاصية `place_model_on_device`.
- **is_in_train** -- ما إذا كان النموذج يعمل حالياً `train` (على سبيل المثال، عند استدعاء `evaluate` أثناء `train`)
- **loss_is_scaled_for_ga** -- ما إذا كانت الدالة `compute_loss` تُرجع قيمة الخسارة مُقيَّمة بالفعل لتراكم التدرجات. `True`: يستخدم `training_step` القيمة كما هي. `False`: يقسم `training_step` القيمة على عدد خطوات تراكم التدرجات. `None` (الافتراضي): تُحتسب الخسارة على أنها مُقيَّمة إذا كانت مُطبَّعة بواسطة `num_items_in_batch`، أي عندما يقبل النموذج معاملات إضافية للخسارة أو عند تمرير `compute_loss_func`. يجب على الفئات الفرعية التي تحسب خسارتها الخاصة تعيين هذا الخيار.

#### add_callback[[transformers.Trainer.add_callback]]

```python
add_callback(callback: type[transformers.trainer_callback.TrainerCallback] | transformers.trainer_callback.TrainerCallback)
```

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

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

callback (`type` أو [`~transformers.TrainerCallback]`) : فئة [TrainerCallback](/docs/transformers/main/ar/main_classes/callback#transformers.TrainerCallback) أو مثيل من [TrainerCallback](/docs/transformers/main/ar/main_classes/callback#transformers.TrainerCallback). في الحالة الأولى، سيتم إنشاء عضو من تلك الفئة.

أضف مستدعيًا (callback) إلى القائمة الحالية من [TrainerCallback](/docs/transformers/main/ar/main_classes/callback#transformers.TrainerCallback).

#### autocast_smart_context_manager[[transformers.Trainer.autocast_smart_context_manager]]

```python
autocast_smart_context_manager(cache_enabled: bool | None = True)
```

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

غلاف مساعد يُنشئ مدير سياق مناسبًا لـ`autocast` مع تزويده بالحجج المطلوبة، اعتمادًا على الموقف. نعتمد على accelerate لـautocast، لذا لا نفعل شيئًا هنا.

#### call_model_init[[transformers.Trainer.call_model_init]]

```python
call_model_init(trial: optuna.Trial | dict[str, Any] | None = None)
```

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

استدعِ `model_init` للحصول على نسخة جديدة من النموذج، مع إمكانية اشتراطها على تجربة لمعاملات ضبط.

#### compute_loss[[transformers.Trainer.compute_loss]]

```python
compute_loss(model: Module, inputs: dict, return_outputs: bool = False, num_items_in_batch: typing.Union[int, torch.Tensor, NoneType] = None)
```

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

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

model (`nn.Module`) : النموذج الذي يتم حساب الخسارة (loss) له.

inputs (`dict[str, torch.Tensor | Any]`) : بيانات الإدخال للنموذج.

return_outputs (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب إرجاع مخرجات النموذج إلى جانب الخسارة.

num_items_in_batch (اختياري[torch.Tensor], *اختياري*) : عدد العناصر في الدفعة. إذا لم يُمرَّر، يتم حساب الخسارة باستخدام منطق اختزال حجم الدفعة الافتراضي.

**يعيد:**

فقدان النموذج مع مخرجاته إذا تم تعيين return_outputs إلى True

كيفية حساب الدالة الخاسرة بواسطة Trainer. افتراضياً، تُرجع جميع النماذج قيمة الخسارة في العنصر الأول.

أنشئ فئة فرعية وأعد تعريف الدوال للحصول على سلوك مخصص. إذا كنت تحسب دالة الخسارة الخاصة بك، فعيّن `loss_is_scaled_for_ga` للإشارة إلى ما إذا كانت الخسارة مُقيّمة بالفعل لتراكم التدرجات: `False` إذا كانت متوسطًا لكل دفعة (حيث يقوم Trainer بقسمتها على عدد خطوات تراكم التدرجات)، و`True` إذا كنت قد قمت بتطبيعها مسبقًا على الدفعة المتراكمة بأكملها.

#### compute_loss_context_manager[[transformers.Trainer.compute_loss_context_manager]]

```python
compute_loss_context_manager()
```

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

غلاف مساعد لتجميع مُديري السياق معًا.

#### create_accelerator_and_postprocess[[transformers.Trainer.create_accelerator_and_postprocess]]

```python
create_accelerator_and_postprocess()
```

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

أنشئ المُسرِّع وأجرِ الإعدادات ما بعد الإنشاء (FSDP، DeepSpeed، إلخ).

#### create_model_card[[transformers.Trainer.create_model_card]]

```python
create_model_card(language: str | None = None, license: str | None = None, tags: str | list[str] | None = None, model_name: str | None = None, finetuned_from: str | None = None, tasks: str | list[str] | None = None, dataset_tags: str | list[str] | None = None, dataset: str | list[str] | None = None, dataset_args: str | list[str] | None = None)
```

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

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

language (`str`، *اختياري*) : لغة النموذج (إن كان ذلك منطبقاً)

license (`str`، *اختياري*) : ترخيص النموذج. سيُستخدم ترخيص النموذج المُسبق التدريب الذي تم استخدامه افتراضيًا، إذا كان النموذج الأصلي المُمرَّر إلى `Trainer` من مستودع على Hub.

tags (`str` أو `list[str]`، *اختياري*) : بعض الوسوم التي يجب تضمينها في بيانات وصفية لبطاقة النموذج.

model_name (`str`، *اختياري*) : اسم النموذج.

finetuned_from (`str`, *اختياري*) : اسم النموذج المستخدم لضبط هذا النموذج (إذا كان ذلك ممكنًا). سيكون الافتراضي هو اسم مستودع النموذج الأصلي المُقدَّم إلى `Trainer` (إذا كان من Hub).

tasks (`str` أو `list[str]`، *اختياري*) : معرّف واحد أو عدة معرّفات للمهام، لتضمينها في بيانات بطاقة النموذج الوصفية.

dataset_tags (`str` أو `list[str]`، *اختياري*) : وسم أو عدة وسوم للمجموعة، لتضمينها في البيانات الوصفية لبطاقة النموذج.

dataset (`str` أو `list[str]`، *اختياري*) : معرّف واحد أو عدة معرّفات لمجموعات بيانات، لتضمينها في بيانات وصفية لبطاقة النموذج.

dataset_args (`str` أو `list[str]`، *اختياري*) : حجة واحدة أو عدة حجج للمجموعة، لتضمينها في بيانات بطاقة النموذج الوصفية.

ينشئ مسودة لبطاقة نموذج باستخدام المعلومات المتاحة في `Trainer`.

#### create_optimizer[[transformers.Trainer.create_optimizer]]

```python
create_optimizer(model = None)
```

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

**يعيد:** `torch.optim.Optimizer`

مثيل المُحسِّن.

اضبط المُحسِّن.

نوفّر قيمة افتراضية معقولة تعمل بشكل جيد. إذا كنت ترغب في استخدام شيء آخر، يمكنك تمرير مجموعة (tuple) عبر `optimizers` في تهيئة Trainer، أو إنشاء فئة فرعية وتجاوز هذه الطريقة في الفئة الفرعية.

#### create_optimizer_and_scheduler[[transformers.Trainer.create_optimizer_and_scheduler]]

```python
create_optimizer_and_scheduler(num_training_steps: int)
```

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

اضبط المُحسِّن وجدول مُعدّل التعلّم.

نوفّر قيمة افتراضية معقولة تعمل بشكل جيد. إذا كنت ترغب في استخدام شيء آخر، يمكنك تمرير مجموعة (tuple) في تهيئة Trainer عبر `optimizers`، أو إنشاء فئة فرعية وتجاوز هذه الطريقة (أو `create_optimizer` و/أو `create_scheduler`) في فئة فرعية.

#### create_scheduler[[transformers.Trainer.create_scheduler]]

```python
create_scheduler(num_training_steps: int, optimizer: typing.Optional[torch.optim.Optimizer] = None)
```

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

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

num_training_steps (int) : عدد خطوات التدريب المطلوب تنفيذها.

**يعيد:** `torch.optim.lr_scheduler.LRScheduler`

مثيل جدولة معدل التعلم.

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

#### نهاية[[transformers.Trainer.end]]

```python
end()
```

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

أنهِ المسارات المراقبة وأتلف مجموعة العمليات الموزعة.

استدعِ هذه الدالة مرة واحدة فقط، في نهاية السكربت، بعد كل ما يتطلب العمليات الأخرى: [train()](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer.train)، [evaluate()](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer.evaluate)، [predict()](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer.predict)، [save_model()](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer.save_model) و[push_to_hub()](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer.push_to_hub) تتواصل جميعها بين العمليات وستفشل بمجرد اختفاء المجموعة.

مثال:

```python
trainer.train()
trainer.evaluate()
trainer.push_to_hub()
trainer.end()
```

#### تقييم[[transformers.Trainer.evaluate]]

```python
evaluate(eval_dataset: typing.Union[torch.utils.data.Dataset, dict[str, torch.utils.data.Dataset], NoneType] = None, ignore_keys: list[str] | None = None, metric_key_prefix: str = 'eval')
```

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

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

eval_dataset (`Dataset` | dict[str, `Dataset`], *اختياري*) : مرّر مجموعة بيانات إذا كنت ترغب في تجاوز `self.eval_dataset`. إذا كانت من نوع [Dataset](https://huggingface.co/docs/datasets/main/en/package_reference/main_classes#datasets.Dataset)، تُحذف تلقائيًا الأعمدة غير المقبولة بواسطة طريقة `model.forward()`. إذا كانت قاموسًا، فسيتم التقييم على كل مجموعة بيانات، مع إضافة مفتاح القاموس إلى بداية اسم المقياس.    إذا مرّرت قاموسًا بأسماء مجموعات البيانات كمفاتيح ومجموعات البيانات كقيم، فستقوم عملية التقييم بتشغيل تقييمات منفصلة على كل مجموعة بيانات. يمكن أن يكون هذا مفيدًا لمراقبة تأثير التدريب على مجموعات بيانات أخرى أو ببساطة للحصول على تقييم أكثر تفصيلًا. عند الاستخدام مع `load_best_model_at_end`، تأكد من أن `metric_for_best_model` يشير إلى مجموعة بيانات واحدة بالضبط. على سبيل المثال، إذا مرّرت `{"data1": data1, "data2": data2}` لمجموعتي بيانات `data1` و`data2`، يمكنك تحديد `metric_for_best_model="eval_data1_loss"` لاستخدام الخسارة على `data1` و`metric_for_best_model="eval_data2_loss"` للخسارة على `data2`.

ignore_keys (`list[str]`، *اختياري*) : قائمة بمفاتيح في مخرجات نموذجك (إذا كان قاموسًا) يجب تجاهلها عند جمع التنبؤات.

metric_key_prefix (`str`، *اختياري*، القيمة الافتراضية `"eval"`) : بادئة اختيارية تُستخدم كبادئة لمفتاح المقاييس. على سبيل المثال، سيُسمّى المقياس "bleu" باسم "eval_bleu" إذا كانت البادئة "eval" (الافتراضية)

**يعيد:**

قاموس يحتوي على خسارة التقييم والمقاييس المحتملة المحسوبة من التنبؤات. كما يحتوي القاموس على رقم الدورة (epoch) الذي يأتي من حالة التدريب.

تشغيل التقييم وإرجاع المقاييس.

ستكون سكريبت الاستدعاء مسؤولة عن توفير طريقة لحساب المقاييس، إذ إنها تعتمد على المهمة (مررها إلى معامل `compute_metrics` في init).

يمكنك أيضًا إنشاء فئة فرعية وتجاوز هذه الطريقة لحقن سلوك مخصص.

#### evaluation_loop[[transformers.Trainer.evaluation_loop]]

```python
evaluation_loop(dataloader: DataLoader, description: str, prediction_loss_only: bool | None = None, ignore_keys: list[str] | None = None, metric_key_prefix: str = 'eval')
```

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

حلقة التنبؤ/التقييم، المشتركة بين `Trainer.evaluate()` و`Trainer.predict()`.

يعمل سواءً مع وجود تسميات أو بدونها.

#### floating_point_ops[[transformers.Trainer.floating_point_ops]]

```python
floating_point_ops(inputs: dict)
```

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

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

inputs (`dict[str, torch.Tensor | Any]`) : مدخلات النموذج وأهدافه.

**يعيد:** `int`

عدد عمليات الفاصلة العائمة.

بالنسبة للنماذج التي ترث من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel)، تستخدم هذه الطريقة لحساب عدد عمليات الفاصلة العائمة لكل مسار خلفي + أمامي. إذا كنت تستخدم نموذجًا آخر، فقم إما بتنفيذ مثل هذه الطريقة داخل النموذج، أو إنشاء فئة فرعية وتجاوز هذه الطريقة.

#### get_batch_samples[[transformers.Trainer.get_batch_samples]]

```python
get_batch_samples(epoch_iterator: Iterator, num_batches: int, device: device)
```

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

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

#### get_cp_size[[transformers.Trainer.get_cp_size]]

```python
get_cp_size()
```

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

احصل على حجم التوازي السياقي

#### get_decay_parameter_names[[transformers.Trainer.get_decay_parameter_names]]

```python
get_decay_parameter_names(model: Module)
```

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

احصل على جميع أسماء المعاملات التي سيُطبَّق عليها اضمحلال الوزن.

تُفلتر هذه الدالة المعاملات بطريقتين:
1. حسب نوع الطبقة (الأمثلة من الطبقات المحددة في ALL_LAYERNORM_LAYERS)
2. حسب أنماط أسماء المعاملات (تتضمن 'bias'، أو أي صيغة من 'norm')

#### get_eval_dataloader[[transformers.Trainer.get_eval_dataloader]]

```python
get_eval_dataloader(eval_dataset: typing.Union[str, torch.utils.data.Dataset, NoneType] = None)
```

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

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

eval_dataset (`str` أو `torch.utils.data.Dataset`، *اختياري*) : إذا كان `str`، فسيتم استخدام `self.eval_dataset[eval_dataset]` كمجموعة بيانات التقييم. إذا كان `Dataset`، فسيتم تجاوز `self.eval_dataset`. إذا كان [Dataset](https://huggingface.co/docs/datasets/main/en/package_reference/main_classes#datasets.Dataset)، تُحذف تلقائيًا الأعمدة غير المقبولة بواسطة طريقة `model.forward()`.

يعيد `~torch.utils.data.DataLoader` للتقييم.

قم بإنشاء فئة فرعية وتجاوز هذه الطريقة إذا كنت ترغب في حقن سلوك مخصص.

#### get_learning_rates[[transformers.Trainer.get_learning_rates]]

```python
get_learning_rates()
```

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

يعيد معدل تعلّم كل معامل من self.optimizer.

#### get_num_trainable_parameters[[transformers.Trainer.get_num_trainable_parameters]]

```python
get_num_trainable_parameters()
```

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

احصل على عدد المعاملات القابلة للتدريب.

#### get_optimizer_cls_and_kwargs[[transformers.Trainer.get_optimizer_cls_and_kwargs]]

```python
get_optimizer_cls_and_kwargs(args: TrainingArguments, model: transformers.modeling_utils.PreTrainedModel | None = None)
```

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

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

args (`transformers.training_args.TrainingArguments`) : حُجج التدريب الخاصة بجلسة التدريب.

model (`PreTrainedModel`، *اختياري*) : النموذج قيد التدريب. مطلوب لبعض محسّنات التدريب (GaLore، Apollo، LOMO).

**يعيد:**

مجموعة (tuple) تحتوي على فئة المُحسِّن (optimizer) وقاموس (dictionary) لحجج الكلمات المفتاحية الخاصة بالمُحسِّن.

يعيد فئة المُحسِّن (optimizer) ومعاملات المُحسِّن بناءً على حُجج التدريب.

#### get_optimizer_group[[transformers.Trainer.get_optimizer_group]]

```python
get_optimizer_group(param: typing.Union[str, torch.nn.parameter.Parameter, NoneType] = None)
```

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

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

param (`str` أو `torch.nn.parameter.Parameter`، *اختياري*) : المعامل الذي يجب إرجاع مجموعة المُحسِّن (optimizer group) الخاصة به.

يعيد مجموعة المُحسِّن الخاصة بمعامل إذا تم تقديمه، وإلا يعيد جميع مجموعات المُحسِّن للمعاملات.

#### get_sp_size[[transformers.Trainer.get_sp_size]]

```python
get_sp_size()
```

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

احصل على حجم التوازي التسلسلي

#### get_test_dataloader[[transformers.Trainer.get_test_dataloader]]

```python
get_test_dataloader(test_dataset: Dataset)
```

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

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

test_dataset (`torch.utils.data.Dataset`، *اختياري*) : مجموعة البيانات الاختبارية المستخدمة. إذا كانت من نوع [Dataset](https://huggingface.co/docs/datasets/main/en/package_reference/main_classes#datasets.Dataset)، تُحذف الأعمدة غير المقبولة بواسطة طريقة `model.forward()` تلقائيًا.

يعيد `~torch.utils.data.DataLoader` الخاص بالاختبار.

قم بإنشاء فئة فرعية وتجاوز هذه الطريقة إذا كنت ترغب في حقن سلوك مخصص.

#### get_total_train_batch_size[[transformers.Trainer.get_total_train_batch_size]]

```python
get_total_train_batch_size(args: TrainingArguments)
```

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

يحسب حجم الدفعة الإجمالي (micro_batch * grad_accum * dp_world_size).

تتضمن الحسابات جميع أبعاد التوازي: TP وCP وSP.

الصيغة: dp_world_size = world_size // (tp_size * cp_size * sp_size)

حيث:
- TP (توازي الموترات): تقسيم طبقات النموذج على وحدات معالجة الرسوميات
- CP (توازي السياق): تسلسلات مقسمة باستخدام Ring Attention (FSDP2)
- SP (توازي التسلسلات): تُقسَّم التسلسلات باستخدام ALST/Ulysses (DeepSpeed)

جميع الأبعاد مستقلة ومتضاعفة: world_size = dp_size * tp_size * cp_size * sp_size

#### get_tp_size[[transformers.Trainer.get_tp_size]]

```python
get_tp_size()
```

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

احصل على حجم التوازي للتينسور من إعدادات النموذج أو DeepSpeed.

#### get_train_dataloader[[transformers.Trainer.get_train_dataloader]]

```python
get_train_dataloader()
```

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

يعيد `~torch.utils.data.DataLoader` للتدريب.

سيُستخدم عيّان عشوائي (مُكيَّف للتدريب الموزّع عند الحاجة) إذا كان `train_dataset` لا ينفّذ `__len__`، وإلا فلن يُستخدم أي عيّان.

قم بإنشاء فئة فرعية وتجاوز هذه الطريقة إذا كنت ترغب في حقن سلوك مخصص.

#### hyperparameter_search[[transformers.Trainer.hyperparameter_search]]

```python
hyperparameter_search(hp_space: collections.abc.Callable[['optuna.Trial'], dict[str, float]] | None = None, compute_objective: collections.abc.Callable[[dict[str, float]], float] | None = None, n_trials: int = 20, direction: str | list[str] = 'minimize', backend: str | transformers.trainer_utils.HPSearchBackend | None = None, hp_name: collections.abc.Callable[['optuna.Trial'], str] | None = None, **kwargs)
```

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

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

hp_space (`Callable[["optuna.Trial"], dict[str, float]]`، *اختياري*) : دالة تُعرّف مساحة البحث للمعاملات الفائقة. ستكون القيمة الافتراضية `default_hp_space_optuna()` أو `default_hp_space_ray()` اعتمادًا على البنية التحتية التي تستخدمها.

compute_objective (`Callable[[dict[str, float]], float]`، *اختياري*) : دالة تحسب الهدف المطلوب تقليله أو تعظيمه انطلاقًا من المقاييس التي يعيدها أسلوب `evaluate`. وسيُستخدم `default_compute_objective()` افتراضيًا.

n_trials (`int`، *اختياري*، القيمة الافتراضية 100) : عدد عمليات التشغيل التجريبية للاختبار.

direction (`str` أو `list[str]`، *اختياري*، القيمة الافتراضية `"minimize"`) : إذا كان الأمر يتعلق بتحسين هدف واحد، فإن الاتجاه يكون من نوع `str`، ويمكن أن يكون `"minimize"` أو `"maximize"`، وينبغي اختيار `"minimize"` عند تحسين خسارة التحقق، و`"maximize"` عند تحسين مقياس واحد أو عدة مقاييس. أما إذا كان الأمر يتعلق بتحسين أهداف متعددة، فإن الاتجاه يكون من نوع `list[str]`، ويمكن أن يكون قائمة من `"minimize"` و`"maximize"`، وينبغي اختيار `"minimize"` عند تحسين خسارة التحقق، و`"maximize"` عند تحسين مقياس واحد أو عدة مقاييس.

backend (`str` أو `~training_utils.HPSearchBackend`، *اختياري*) : الخلفية المستخدمة للبحث في المعلمات الفائقة. سيكون الافتراضي optuna أو Ray Tune، اعتمادًا على أيٍّ منهما مثبّت. إذا كان كلاهما مثبّتًا، سيكون الافتراضي optuna.

hp_name (`Callable[["optuna.Trial"], str]]`، *اختياري*) : دالة تُعرّف اسم التجربة/التشغيل. القيمة الافتراضية هي None.

kwargs (`dict[str, Any]`، *اختياري*) : حُجج إضافية لكل واجهة خلفية:  - `optuna`: المعاملات من [optuna.study.create_study](https://optuna.readthedocs.io/en/stable/reference/generated/optuna.study.create_study.html) وكذلك المعاملات `timeout` و`n_jobs` و`gc_after_trial` من [optuna.study.Study.optimize](https://optuna.readthedocs.io/en/stable/reference/generated/optuna.study.Study.html#optuna.study.Study.optimize) - `ray`: المعاملات من [tune.run](https://docs.ray.io/en/latest/tune/api_docs/execution.html#tune-run). إذا لم يتم تعيين `resources_per_trial` في `kwargs`، فإن القيمة الافتراضية هي نواة معالج واحدة وبطاقة رسومات واحدة (إن كانت متاحة). إذا لم يتم تعيين `progress_reporter` في `kwargs`، يتم استخدام [ray.tune.CLIReporter](https://docs.ray.io/en/latest/tune/api/doc/ray.tune.CLIReporter.html).

**يعيد:** [`trainer_utils.BestRun` أو `list[trainer_utils.BestRun]`]

جميع المعلومات حول أفضل تشغيل أو أفضل عمليات التشغيل لتحسين متعدد الأهداف. يمكن العثور على ملخص التجربة في خاصية `run_summary` لخادم Ray.

شغّل بحثًا على المعاملات الفائقة باستخدام `optuna` أو `Ray Tune`. يُحدَّد الكمية المُحسَّنة بواسطة `compute_objective`، والتي تُرجع افتراضيًا دالةً تعيد خسارة التقييم عند عدم تقديم مقياس، وإلا فترجع مجموع جميع المقاييس.

To use this method, you need to have provided a `model_init` when initializing your [Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer): we need to reinitialize the model at each new run. This is incompatible with the `optimizers` argument, so you need to subclass [Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer) and override the method [create_optimizer_and_scheduler()](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer.create_optimizer_and_scheduler) for custom optimizer/scheduler.

#### init_hf_repo[[transformers.Trainer.init_hf_repo]]

```python
init_hf_repo(token: str | None = None, private: bool | None = None)
```

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

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

token (`str`، *اختياري*) : رمز (Token) بصلاحية الكتابة. القيمة الافتراضية هي `self.args.hub_token`.

private (`bool`، *اختياري*) : ما إذا كان يجب جعل المستودع خاصًا عند إنشائه. القيمة الافتراضية هي `self.args.hub_private_repo`. لا يكون له أي تأثير إذا كان المستودع موجودًا مسبقًا.

يُهيّئ مستودع git في `self.args.hub_model_id`.

#### is_local_process_zero[[transformers.Trainer.is_local_process_zero]]

```python
is_local_process_zero()
```

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

ما إذا كانت هذه العملية هي العملية الرئيسية المحلية (على سبيل المثال، على جهاز واحد إذا كان التدريب يتم بطريقة موزعة على عدة أجهزة).

#### is_world_process_zero[[transformers.Trainer.is_world_process_zero]]

```python
is_world_process_zero()
```

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

ما إذا كانت هذه العملية هي العملية الرئيسية العامة (عند التدريب بطريقة موزعة على عدة أجهزة، لن تكون `True` إلا لعملية واحدة).

#### log[[transformers.Trainer.log]]

```python
log(logs: dict, start_time: float | None = None)
```

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

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

logs (`dict[str, float]`) : القيم التي سيتم تسجيلها.

start_time (`Optional[float]`) : بداية التدريب.

سجّل `logs` على الكائنات المختلفة التي تراقب التدريب.

أنشئ فئة فرعية وأعد تعريف هذه الطريقة لحقن سلوك مخصص.

#### log_metrics[[transformers.Trainer.log_metrics]]

```python
log_metrics(split, metrics)
```

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

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

split (`str`) : اسم الوضع/التقسيم: أحد `train`، `eval`، `test`

metrics (`dict[str, float]`) : المقاييس المُعادَة من train/evaluate/predictmetrics: قاموس المقاييس

سجّل المقاييس بطريقة مُنسّقة بشكل خاص.

في البيئة الموزعة، يتم تنفيذ هذا الإجراء فقط للعملية ذات الترتيب 0.

ملاحظات حول تقارير الذاكرة:

للحصول على تقرير لاستخدام الذاكرة، يجب عليك تثبيت `psutil`. يمكنك القيام بذلك عبر `pip install psutil`.

الآن، عند تشغيل هذه الطريقة، ستظهر لك تقرير يتضمن:

```
init_mem_cpu_alloc_delta   =     1301MB
init_mem_cpu_peaked_delta  =      154MB
init_mem_gpu_alloc_delta   =      230MB
init_mem_gpu_peaked_delta  =        0MB
train_mem_cpu_alloc_delta  =     1345MB
train_mem_cpu_peaked_delta =        0MB
train_mem_gpu_alloc_delta  =      693MB
train_mem_gpu_peaked_delta =        7MB
```

**فهم التقارير:**

- يُخبرك المقطع الأول، مثل `train__`، بالمرحلة التي تخصها المقاييس. أما التقارير التي تبدأ بـ `init_` فتُضاف إلى المرحلة الأولى التي يتم تشغيلها. وبذلك، إذا تم تشغيل التقييم فقط، فسيتم الإبلاغ عن استهلاك الذاكرة الخاص بـ `__init__` إلى جانب مقاييس `eval_`.
- المقطع الثالث، وهو إما `cpu` أو `gpu`، يُخبرك ما إذا كان الأمر يتعلق بمقياس ذاكرة الوصول العشوائي العامة أم بذاكرة gpu0.
- `*_alloc_delta` - هو الفرق في عداد الذاكرة المستخدمة/المخصصة بين نهاية المرحلة وبدايتها - وقد يكون سالبًا إذا كانت الدالة أفرجت عن ذاكرة أكثر مما خصصته.
- `*_peaked_delta` - هو أي ذاكرة إضافية استُهلكت ثم أُطلِقت - مقارنةً بعدّاد الذاكرة المخصصة الحالي - وهو لا يكون سالبًا أبدًا. عند النظر إلى مقاييس أي مرحلة، تُجمِع `alloc_delta` + `peaked_delta` لتعرف مقدار الذاكرة المطلوبة لإكمال تلك المرحلة.

تتم عملية الإبلاغ فقط للعملية ذات الترتيب 0 ولوحدة المعالجة الرسومية 0 (إذا كانت موجودة). وعادةً ما يكون ذلك كافياً، لأن العملية الرئيسية تقوم بمعظم العمل، لكن الأمر قد لا يكون كذلك تماماً إذا تم استخدام توازي النموذج، حيث قد تستخدم وحدات المعالجة الرسومية الأخرى كميات مختلفة من ذاكرة GPU. كما أن الوضع ليس مماثلاً في حالة DataParallel، حيث قد تتطلب وحدة المعالجة الرسومية 0 مساحة ذاكرة أكبر بكثير من الوحدات الأخرى، لأنها تخزن تدرجات وحالات المُحسِّن لجميع وحدات المعالجة الرسومية المشاركة. ربما ستتطور هذه التقارير في المستقبل لقياس تلك الجوانب أيضاً.

تقيس مقياس ذاكرة الوصول العشوائي المعالج (CPU RAM) حجم مجموعة المقيم (RSS)، والذي يشمل الذاكرة الفريدة للعملية والذاكرة المشتركة مع العمليات الأخرى. من المهم ملاحظة أنه لا يتضمن الذاكرة المُبدَلة (swapped out)، لذا قد تكون التقارير غير دقيقة.

يُقاس ذروة الذاكرة المستخدمة في المعالج المركزي (CPU) باستخدام خيط عينات (sampling thread). وبسبب قفل اللغة المشتركة (GIL) في بايثون، قد يفوت هذا الخيط بعض ذروات الذاكرة إذا لم يحصل على فرصة للتشغيل في اللحظة التي استُخدمت فيها أعلى كمية من الذاكرة. ولذلك، قد تكون هذه التقارير أقل من الواقع. كان من الممكن أن يُبلغ `tracemalloc` عن ذروة الذاكرة بدقة، لكنه لا يُبلغ عن تخصيصات الذاكرة خارج بايثون. لذا، إذا خصصت إضافة C++ CUDA ذاكرتها الخاصة، فلن يتم الإبلاغ عنها. ولهذا السبب، تم التخلي عنه لصالح نهج أخذ عينات من الذاكرة، الذي يقرأ استخدام الذاكرة الحالي للعملية.

يتم تخصيص وحدة المعالجة الرسومية (GPU) وإبلاغ عن ذروة الذاكرة باستخدام `torch.cuda.memory_allocated()` و`torch.cuda.max_memory_allocated()`. يبلغ هذا المقياس عن "الفروقات" فقط للتخصيصات الخاصة بـ PyTorch، لأن نظام إدارة الذاكرة في `torch.cuda` لا يتتبع أي ذاكرة مُخصصة خارج PyTorch. على سبيل المثال، يستدعي نداء CUDA الأول عادةً تحميل نواة CUDA، والتي قد تستهلك من 0.5 إلى 2 غيغابايت من ذاكرة GPU.

لاحظ أن هذا المسار لا يأخذ في الاعتبار تخصيصات الذاكرة خارج استدعاءات `__init__` و`train` و`evaluate` و`predict` الخاصة بـ[Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer).

بما أن استدعاءات `evaluation` قد تحدث أثناء `train`، فلا يمكننا التعامل مع الاستدعاءات المتداخلة لأن `torch.cuda.max_memory_allocated` هو عداد واحد، فإذا تم إعادة ضبطه بواسطة استدعاء تقييم متداخل، فإن متتبع `train` سيُبلغ عن معلومات غير صحيحة. إذا تم حل [قضية pytorch](https://github.com/pytorch/pytorch/issues/16266) هذه، فسيصبح من الممكن تغيير هذا الصنف ليكون قابلًا لإعادة الدخول. حتى ذلك الحين، سنقوم بتتبع المستوى الخارجي فقط لطرق `train` و`evaluate` و`predict`. وهذا يعني أنه إذا تم استدعاء `eval` أثناء `train`، فإن الأخير هو الذي سيحتسب استهلاكه للذاكرة واستهلاك الأول.

وهذا يعني أيضًا أنه إذا استدعى أي أداة أخرى تُستخدم مع [Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer) الدالة `torch.cuda.reset_peak_memory_stats`، فقد تصبح إحصائيات ذروة ذاكرة وحدة معالجة الرسوميات غير صالحة. كما أن [Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer) سيُخلّ بالسلوك الطبيعي لأي أدوات من هذا النوع تعتمد على استدعاء `torch.cuda.reset_peak_memory_stats` بنفسها.

للحصول على أفضل أداء، قد ترغب في تعطيل ملفّات الذاكرة (memory profiling) عند التشغيل في بيئة الإنتاج.

#### metrics_format[[transformers.Trainer.metrics_format]]

```python
metrics_format(metrics: dict)
```

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

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

metrics (`dict[str, float]`) : المقاييس المُعادَة من التدريب/التقييم/التنبؤ

**يعيد:** مقاييس (`dict[str, float]`)

المقاييس المُعاد تنسيقها

إعادة تنسيق قيم مقاييس Trainer إلى صيغة قابلة للقراءة من قِبل المستخدم.

#### num_examples[[transformers.Trainer.num_examples]]

```python
num_examples(dataloader: DataLoader)
```

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

Helper to get number of samples in a `~torch.utils.data.DataLoader` by accessing its dataset. When dataloader.dataset does not exist or has no length, estimates as best it can

#### pop_callback[[transformers.Trainer.pop_callback]]

```python
pop_callback(callback: type[transformers.trainer_callback.TrainerCallback] | transformers.trainer_callback.TrainerCallback)
```

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

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

callback (`type` أو [`~transformers.TrainerCallback]`) : فئة [TrainerCallback](/docs/transformers/main/ar/main_classes/callback#transformers.TrainerCallback) أو مثيل من [TrainerCallback](/docs/transformers/main/ar/main_classes/callback#transformers.TrainerCallback). في الحالة الأولى، سيتم استرجاع أول عضو من تلك الفئة الموجود في قائمة الاستدعاءات.

**يعيد:** [TrainerCallback](/docs/transformers/main/ar/main_classes/callback#transformers.TrainerCallback)

المستدعى المُزال، إذا تم العثور عليه.

إزالة مستدعٍ من القائمة الحالية لـ [TrainerCallback](/docs/transformers/main/ar/main_classes/callback#transformers.TrainerCallback) وإرجاعه.

إذا لم يُعثر على الاستدعاء العكسي، تُرجع `None` (ولا يتم رفع أي خطأ).

#### predict[[transformers.Trainer.predict]]

```python
predict(test_dataset: Dataset, ignore_keys: list[str] | None = None, metric_key_prefix: str = 'test')
```

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

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

test_dataset (`Dataset`) : مجموعة البيانات التي سيتم تشغيل التنبؤات عليها. إذا كانت من نوع `datasets.Dataset`، تُحذف تلقائيًا الأعمدة غير المقبولة بواسطة طريقة `model.forward()`.

ignore_keys (`list[str]`، *اختياري*) : قائمة بمفاتيح في مخرجات نموذجك (إذا كان قاموسًا) يجب تجاهلها عند جمع التنبؤات.

metric_key_prefix (`str`، *اختياري*، القيمة الافتراضية `"test"`) : بادئة اختيارية تُستخدم كبادئة لمفتاح المقاييس. على سبيل المثال، سيُسمّى المقياس "bleu" باسم "test_bleu" إذا كانت البادئة "test" (الافتراضية)

تشغيل التنبؤ وإرجاع التنبؤات والمقاييس المحتملة.

اعتمادًا على مجموعة البيانات وحالة الاستخدام الخاصة بك، قد تحتوي مجموعة البيانات الاختبارية على تسميات. في هذه الحالة، ستعيد هذه الطريقة أيضًا مقاييس الأداء، كما في `evaluate()`.

إذا كانت التنبؤات أو التسميات لديك لها أطوال تسلسل مختلفة (على سبيل المثال، لأنك تقوم بتوسيط ديناميكي في مهمة تصنيف الرموز)، فسيتم توسيط التنبؤات (على اليمين) للسماح بدمجها في مصفوفة واحدة. فهرس التوسيط هو -100.

تُرجع: *NamedTuple* tuple مُسمّى بالمفاتيح التالية:

- predictions (`np.ndarray`): التنبؤات على `test_dataset`.
- label_ids (`np.ndarray`، *اختياري*): التسميات (إذا كانت مجموعة البيانات تحتوي على تسميات).
- metrics (`dict[str, float]`، *اختياري*): قاموس المقاييس المحتملة (إذا احتوت مجموعة البيانات على تسميات).

#### prediction_step[[transformers.Trainer.prediction_step]]

```python
prediction_step(model: Module, inputs: dict, prediction_loss_only: bool, ignore_keys: list[str] | None = None)
```

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

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

model (`nn.Module`) : النموذج المراد تقييمه.

inputs (`dict[str, torch.Tensor | Any]`) : مدخلات النموذج وأهدافه. سيتم تفكيك القاموس قبل إمداده إلى النموذج. تتوقع معظم النماذج وجود الأهداف تحت الحجة `labels`. راجع توثيق نموذجك لمعرفة جميع الحجج المقبولة.

prediction_loss_only (`bool`) : ما إذا كان يجب إرجاع الخسارة فقط أم لا.

ignore_keys (`list[str]`، *اختياري*) : قائمة بمفاتيح في مخرجات نموذجك (إذا كان قاموسًا) يجب تجاهلها عند جمع التنبؤات.

**يعيد:** tuple[Optional[torch.Tensor], Optional[torch.Tensor], Optional[torch.Tensor]]

مجموعة (tuple) تحتوي على الخسارة (loss) والقيم المنطقية (logits) والوسوم (labels) (كل منها اختياري).

أداء خطوة تقييم على `model` باستخدام `inputs`.

أنشئ فئة فرعية وأعد تعريف الدوال لحقن سلوك مخصص.

#### push_to_hub[[transformers.Trainer.push_to_hub]]

```python
push_to_hub(commit_message: str | None = 'End of training', blocking: bool = True, token: str | None = None, revision: str | None = None, private: bool | None = None, **kwargs)
```

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

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

commit_message (`str`، *اختياري*، القيمة الافتراضية `"End of training"`) : الرسالة التي سيتم الالتزام بها أثناء الدفع.

blocking (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان ينبغي للدالة أن تُرجع القيمة فقط بعد اكتمال عملية `git push`.

token (`str`، *اختياري*، القيمة الافتراضية `None`) : رمز (Token) يملك صلاحية الكتابة لتجاوز الحجج الأصلية الخاصة بـ Trainer.

revision (`str`، *اختياري*) : المراجعة (revision) في git التي سيتم الالتزام منها. الافتراضي هو رأس فرع "main".

private (`bool`، *اختياري*) : ما إذا كان يجب جعل المستودع خاصًا عند إنشائه. القيمة الافتراضية هي `args.hub_private_repo`. لا يكون له أي تأثير إذا كان المستودع موجودًا مسبقًا.

kwargs (`dict[str, Any]`، *اختياري*) : حُجج إضافية تُمرَّر إلى [create_model_card()](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer.create_model_card).

**يعيد:**

عنوان URL للمستودع الذي تم دفع النموذج إليه إذا كان `blocking=False`، أو كائن `Future` يتتبع تقدم عملية الالتزام إذا كان `blocking=True`.

ارفع `self.model` و`self.processing_class` إلى مركز النماذج 🤗 في المستودع `self.args.hub_model_id`.

#### remove_callback[[transformers.Trainer.remove_callback]]

```python
remove_callback(callback: type[transformers.trainer_callback.TrainerCallback] | transformers.trainer_callback.TrainerCallback)
```

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

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

callback (`type` أو [`~transformers.TrainerCallback]`) : فئة [TrainerCallback](/docs/transformers/main/ar/main_classes/callback#transformers.TrainerCallback) أو مثيل من [TrainerCallback](/docs/transformers/main/ar/main_classes/callback#transformers.TrainerCallback). في الحالة الأولى، سيتم حذف أول عضو من تلك الفئة الموجود في قائمة الاستدعاءات.

إزالة مستدعٍ من القائمة الحالية لـ [TrainerCallback](/docs/transformers/main/ar/main_classes/callback#transformers.TrainerCallback).

#### save_metrics[[transformers.Trainer.save_metrics]]

```python
save_metrics(split, metrics, combined = True)
```

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

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

split (`str`) : اسم الوضع/التقسيم: أحد `train`، `eval`، `test`، `all`

metrics (`dict[str, float]`) : المقاييس المُعادَة من التدريب/التقييم/التنبؤ

combined (`bool`، *اختياري*، القيمة الافتراضية `True`) : ينشئ مقاييس مجمعة من خلال تحديث `all_results.json` بمقاييس هذه الاستدعاء

احفظ المقاييس في ملف json خاص بتلك التقسيمة، مثل `train_results.json`.

في البيئة الموزعة، يتم تنفيذ هذا الإجراء فقط للعملية ذات الترتيب 0.

لفهم المقاييس، يرجى قراءة [log_metrics()](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer.log_metrics) في التوثيق. الفارق الوحيد هو أن الأرقام الخام غير المنسّقة تُحفظ في الطريقة الحالية.

#### save_model[[transformers.Trainer.save_model]]

```python
save_model(output_dir: str | None = None, _internal_call: bool = False)
```

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

سيحفظ النموذج، مما يتيح لك إعادة تحميله باستخدام `from_pretrained()`.

سيتم الحفظ من العملية الرئيسية فقط.

#### save_state[[transformers.Trainer.save_state]]

```python
save_state()
```

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

يحفظ حالة Trainer، لأن Trainer.save_model يحفظ المرمّز (tokenizer) مع النموذج فقط.

في البيئة الموزعة، يتم تنفيذ هذا الإجراء فقط للعملية ذات الترتيب 0.

#### set_initial_training_values[[transformers.Trainer.set_initial_training_values]]

```python
set_initial_training_values(args: TrainingArguments, dataloader: DataLoader)
```

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

يُحسب ويعيد القيم التالية:
- `num_train_epochs`
- `num_update_steps_per_epoch`
- `num_examples`
- `num_train_samples`
- `total_train_batch_size`
- `steps_in_epoch` (إجمالي الدفعات في كل حقبة)
- `max_steps`

#### store_flos[[transformers.Trainer.store_flos]]

```python
store_flos()
```

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

احفظ عدد عمليات الفاصلة العائمة التي تم إجراؤها في النموذج.

#### تدريب[[transformers.Trainer.train]]

```python
train(resume_from_checkpoint: str | bool | None = None, trial: optuna.Trial | dict[str, Any] | None = None, ignore_keys_for_eval: list[str] | None = None)
```

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

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

resume_from_checkpoint (`str` أو `bool`، *اختياري*) : إذا كان من نوع `str`، فهو المسار المحلي لنقطة تفتيش محفوظة بواسطة نسخة سابقة من [Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer). وإذا كان من نوع `bool` وقيمته `True`، يتم تحميل آخر نقطة تفتيش في *args.output_dir* كما حفظتها نسخة سابقة من [Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer). إذا كانت موجودة، فسيستأنف التدريب من حالات النموذج/المُحسِّن/المُجدوِل التي تم تحميلها من هنا.

trial (`optuna.Trial` أو `dict[str, Any]`، *اختياري*) : الجولة التجريبية أو قاموس المعاملات الفائقة للبحث في المعاملات الفائقة.

ignore_keys_for_eval (`list[str]`، *اختياري*) : قائمة بمفاتيح في مخرجات النموذج (إذا كان قاموسًا) يجب تجاهلها عند جمع التنبؤات للتقييم أثناء التدريب.

**يعيد:** `TrainOutput`

كائن يحتوي على عدد الخطوات العالمية، وخسارة التدريب، والمقاييس.

نقطة الدخول الرئيسية للتدريب.

#### training_step[[transformers.Trainer.training_step]]

```python
training_step(model: Module, inputs: dict, num_items_in_batch: typing.Union[int, torch.Tensor, NoneType] = None)
```

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

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

model (`nn.Module`) : النموذج المراد تدريبه.

inputs (`dict[str, torch.Tensor | Any]`) : مدخلات النموذج وأهدافه. سيتم تفكيك القاموس قبل إمداده إلى النموذج. تتوقع معظم النماذج وجود الأهداف تحت الحجة `labels`. راجع توثيق نموذجك لمعرفة جميع الحجج المقبولة.

**يعيد:** `torch.Tensor`

الموتر الذي يحتوي على خسارة التدريب على هذه الدفعة.

نفّذ خطوة تدريب على دفعة من المدخلات.

أنشئ فئة فرعية وأعد تعريف الدوال لحقن سلوك مخصص.

## Seq2SeqTrainer[[transformers.Seq2SeqTrainer]]

#### transformers.Seq2SeqTrainer[[transformers.Seq2SeqTrainer]]

```python
transformers.Seq2SeqTrainer(model: typing.Union[ForwardRef('PreTrainedModel'), torch.nn.Module, NoneType] = None, args: typing.Optional[ForwardRef('TrainingArguments')] = None, data_collator: typing.Optional[ForwardRef('DataCollator')] = None, train_dataset: typing.Union[torch.utils.data.Dataset, ForwardRef('IterableDataset'), ForwardRef('datasets.Dataset'), NoneType] = None, eval_dataset: typing.Union[torch.utils.data.Dataset, dict[str, torch.utils.data.Dataset], NoneType] = None, processing_class: typing.Union[ForwardRef('PreTrainedTokenizerBase'), ForwardRef('BaseImageProcessor'), ForwardRef('FeatureExtractionMixin'), ForwardRef('ProcessorMixin'), NoneType] = None, model_init: collections.abc.Callable[[], 'PreTrainedModel'] | None = None, compute_loss_func: collections.abc.Callable | None = None, compute_metrics: collections.abc.Callable[['EvalPrediction'], dict] | None = None, callbacks: list['TrainerCallback'] | None = None, optimizers: tuple = (None, None), preprocess_logits_for_metrics: collections.abc.Callable[[torch.Tensor, torch.Tensor], torch.Tensor] | None = None)
```

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

#### تقييم[[transformers.Seq2SeqTrainer.evaluate]]

```python
evaluate(eval_dataset: typing.Optional[torch.utils.data.Dataset] = None, ignore_keys: list[str] | None = None, metric_key_prefix: str = 'eval', **gen_kwargs)
```

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

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

eval_dataset (`Dataset`، *اختياري*) : مرّر مجموعة بيانات إذا كنت ترغب في تجاوز `self.eval_dataset`. إذا كانت من نوع [Dataset](https://huggingface.co/docs/datasets/main/en/package_reference/main_classes#datasets.Dataset)، تُحذف الأعمدة غير المقبولة بواسطة طريقة `model.forward()` تلقائيًا. يجب أن تُنفّذ طريقة `__len__`.

ignore_keys (`list[str]`، *اختياري*) : قائمة بمفاتيح في مخرجات نموذجك (إذا كان قاموسًا) يجب تجاهلها عند جمع التنبؤات.

metric_key_prefix (`str`، *اختياري*، القيمة الافتراضية `"eval"`) : بادئة اختيارية تُستخدم كبادئة لمفتاح المقاييس. على سبيل المثال، سيُسمّى المقياس "bleu" باسم "eval_bleu" إذا كانت البادئة `"eval"` (الافتراضية)

max_length (`int`، *اختياري*) : الحد الأقصى لطول الهدف المستخدم عند التنبؤ باستخدام طريقة generate.

num_beams (`int`, *اختياري*) : عدد الحزم المستخدمة في بحث الحزم عند التنبؤ باستخدام طريقة generate. القيمة 1 تعني عدم استخدام بحث الحزم.

gen_kwargs : كلمات وسيطة إضافية خاصة بـ `generate`.

**يعيد:**

قاموس يحتوي على خسارة التقييم والمقاييس المحتملة المحسوبة من التنبؤات. كما يحتوي القاموس على رقم الدورة (epoch) الذي يأتي من حالة التدريب.

تشغيل التقييم وإرجاع المقاييس.

ستكون سكريبت الاستدعاء مسؤولة عن توفير طريقة لحساب المقاييس، إذ إنها تعتمد على المهمة (مررها إلى معامل `compute_metrics` في init).

يمكنك أيضًا إنشاء فئة فرعية وتجاوز هذه الطريقة لحقن سلوك مخصص.

#### predict[[transformers.Seq2SeqTrainer.predict]]

```python
predict(test_dataset: Dataset, ignore_keys: list[str] | None = None, metric_key_prefix: str = 'test', **gen_kwargs)
```

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

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

test_dataset (`Dataset`) : مجموعة البيانات التي سيتم تشغيل التنبؤات عليها. إذا كانت من نوع [Dataset](https://huggingface.co/docs/datasets/main/en/package_reference/main_classes#datasets.Dataset)، تُحذف تلقائيًا الأعمدة غير المقبولة بواسطة طريقة `model.forward()`. يجب أن تنفّذ الطريقة `__len__`

ignore_keys (`list[str]`، *اختياري*) : قائمة بمفاتيح في مخرجات نموذجك (إذا كان قاموسًا) يجب تجاهلها عند جمع التنبؤات.

metric_key_prefix (`str`، *اختياري*، القيمة الافتراضية `"eval"`) : بادئة اختيارية تُستخدم كبادئة لمفتاح المقاييس. على سبيل المثال، سيُسمّى المقياس "bleu" باسم "eval_bleu" إذا كانت البادئة `"eval"` (الافتراضية)

max_length (`int`، *اختياري*) : الحد الأقصى لطول الهدف المستخدم عند التنبؤ باستخدام طريقة generate.

num_beams (`int`, *اختياري*) : عدد الحزم المستخدمة في بحث الحزم عند التنبؤ باستخدام طريقة generate. القيمة 1 تعني عدم استخدام بحث الحزم.

gen_kwargs : كلمات وسيطة إضافية خاصة بـ `generate`.

تشغيل التنبؤ وإرجاع التنبؤات والمقاييس المحتملة.

اعتمادًا على مجموعة البيانات وحالة الاستخدام الخاصة بك، قد تحتوي مجموعة البيانات الاختبارية على تسميات. في هذه الحالة، ستعيد هذه الطريقة أيضًا مقاييس الأداء، كما في `evaluate()`.

إذا كانت التنبؤات أو التسميات لديك ذات أطوال تسلسل مختلفة (على سبيل المثال، لأنك تقوم بتوسيط ديناميكي في مهمة تصنيف الرموز)، فسيتم توسيط التنبؤات (على اليمين) للسماح بدمجها في مصفوفة واحدة. فهرس التوسيط هو -100.

تُرجع: *NamedTuple* tuple مُسمّى بالمفاتيح التالية:

- predictions (`np.ndarray`): التنبؤات على `test_dataset`.
- label_ids (`np.ndarray`، *اختياري*): التسميات (إذا كانت مجموعة البيانات تحتوي على تسميات).
- metrics (`dict[str, float]`، *اختياري*): قاموس المقاييس المحتملة (إذا احتوت مجموعة البيانات على تسميات).

## TrainingArguments[[transformers.TrainingArguments]]

#### transformers.TrainingArguments[[transformers.TrainingArguments]]

```python
transformers.TrainingArguments(output_dir: str | None = None, per_device_train_batch_size: int = 8, num_train_epochs: float = 3.0, max_steps: int = -1, learning_rate: float = 5e-05, lr_scheduler_type: transformers.trainer_utils.SchedulerType | str = 'linear', lr_scheduler_kwargs: dict | str | None = None, warmup_steps: float = 0, optim: transformers.training_args.OptimizerNames | str = 'adamw_torch_fused', optim_args: str | None = None, weight_decay: float = 0.0, adam_beta1: float = 0.9, adam_beta2: float = 0.999, adam_epsilon: float = 1e-08, optim_target_modules: None | str | list[str] = None, gradient_accumulation_steps: int = 1, average_tokens_across_devices: bool = True, max_grad_norm: float = 1.0, label_smoothing_factor: float = 0.0, bf16: bool = False, fp16: bool = False, bf16_full_eval: bool = False, fp16_full_eval: bool = False, tf32: bool | None = None, activation_checkpointing: bool | None = None, activation_checkpointing_kwargs: dict[str, typing.Any] | str | None = None, gradient_checkpointing: bool | None = None, gradient_checkpointing_kwargs: dict[str, typing.Any] | str | None = None, torch_compile: bool = False, torch_compile_backend: str | None = None, torch_compile_mode: str | None = None, use_liger_kernel: bool = False, liger_kernel_config: dict[str, bool] | None = None, use_cache: bool = False, neftune_noise_alpha: float | None = None, torch_empty_cache_steps: int | None = None, auto_find_batch_size: bool = False, logging_strategy: transformers.trainer_utils.IntervalStrategy | str = 'steps', logging_steps: float = 500, logging_first_step: bool = False, log_on_each_node: bool = True, logging_nan_inf_filter: bool = True, include_num_input_tokens_seen: str | bool = 'no', log_level: str = 'passive', log_level_replica: str = 'warning', disable_tqdm: bool | None = None, report_to: None | str | list[str] = 'none', run_name: str | None = None, project: str = 'huggingface', trackio_space_id: str | None = None, trackio_bucket_id: str | None = None, trackio_static_space_id: typing.Union[str, NoneType, typing.Literal[False]] = None, eval_strategy: transformers.trainer_utils.IntervalStrategy | str = 'no', eval_steps: float | None = None, eval_delay: float = 0, per_device_eval_batch_size: int = 8, prediction_loss_only: bool = False, eval_on_start: bool = False, eval_do_concat_batches: bool = True, eval_use_gather_object: bool = False, eval_accumulation_steps: int | None = None, include_for_metrics: list = <factory>, batch_eval_metrics: bool = False, save_only_model: bool = False, save_strategy: transformers.trainer_utils.SaveStrategy | str = 'steps', save_steps: float = 500, save_on_each_node: bool = False, save_total_limit: int | None = None, enable_jit_checkpoint: bool = False, push_to_hub: bool = False, hub_token: str | None = None, hub_private_repo: bool | None = None, hub_model_id: str | None = None, hub_strategy: transformers.trainer_utils.HubStrategy | str = 'every_save', hub_always_push: bool = False, hub_revision: str | None = None, load_best_model_at_end: bool = False, metric_for_best_model: str | None = None, greater_is_better: bool | None = None, ignore_data_skip: bool = False, restore_callback_states_from_checkpoint: bool = False, full_determinism: bool = False, seed: int = 42, data_seed: int | None = None, use_cpu: bool = False, accelerator_config: dict | str | None = None, parallelism_config: typing.Any | None = None, dataloader_drop_last: bool = False, dataloader_num_workers: int = 0, dataloader_pin_memory: bool = True, dataloader_persistent_workers: bool = False, dataloader_prefetch_factor: int | None = None, dataloader_multiprocessing_context: str | None = None, dataloader_in_order: bool = True, remove_unused_columns: bool = True, label_names: list[str] | None = None, train_sampling_strategy: str = 'random', length_column_name: str = 'length', ddp_find_unused_parameters: bool | None = None, ddp_bucket_cap_mb: int | None = None, ddp_broadcast_buffers: bool | None = None, ddp_static_graph: bool | None = None, ddp_backend: str | None = None, ddp_timeout: int = 1800, fsdp: str | None = None, fsdp_config: dict[str, typing.Any] | str | None = None, deepspeed: dict | str | None = None, debug: str | list[transformers.debug_utils.DebugOption] = '', skip_memory_metrics: bool = True, do_train: bool = False, do_eval: bool = False, do_predict: bool = False, resume_from_checkpoint: str | None = None, local_rank: int = -1)
```

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

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

output_dir (`str`، *اختياري*، القيمة الافتراضية `"trainer_output"`) : المجلد الذي تُكتب فيه تنبؤات النموذج ونقاط التفتيش.

**مدة التدريب وحجم الدفعة:**

per_device_train_batch_size (`int`، *اختياري*، القيمة الافتراضية 8) : حجم الدفعة *لكل جهاز*. يُحسب **حجم الدفعة الكلي** على النحو التالي: `per_device_train_batch_size * number_of_devices` في الإعدادات متعددة وحدات معالجة الرسومات أو الموزعة.

num_train_epochs(`float`، *اختياري*، القيمة الافتراضية 3.0) : العدد الإجمالي لفترات التدريب (epochs) التي سيتم تنفيذها (إذا لم تكن قيمة صحيحة، فسيتم تنفيذ الجزء العشري كنسبة مئوية من الفترة الأخيرة قبل إيقاف التدريب).

max_steps (`int`، *اختياري*، القيمة الافتراضية -1) : يتجاوز `num_train_epochs`. إذا تم ضبطه على رقم موجب، فهو يمثل العدد الإجمالي لخطوات التدريب التي يجب تنفيذها. في حالة مجموعة بيانات محدودة، يُعاد التدريب عبر مجموعة البيانات (إذا استُنفد كل البيانات) حتى يتم الوصول إلى `max_steps`. يجب ضبطه على قيمة موجبة عندما لا تنفّذ مجموعة بيانات التدريب `__len__` (مثل مجموعة بيانات البث)، حيث لا يمكن في هذه الحالة استنتاج العدد الإجمالي للخطوات، وهو مطلوب لتحديد حدود حلقة التدريب وإعداد مجدول معدل التعلم.

**معدل التعلم ومجدوله:**

learning_rate (`float`، *اختياري*، القيمة الافتراضية 5e-5) : معدل التعلم الأولي لمُحسِّن الخوارزمية. عادةً ما يكون هذا هو معدل التعلم الأقصى عند استخدام مُجدوِل مع فترة إحماء.

lr_scheduler_type (`str` or [SchedulerType](/docs/transformers/main/ar/main_classes/optimizer_schedules#transformers.SchedulerType), *optional*, defaults to `"linear"`) : The learning rate scheduler type to use. See [SchedulerType](/docs/transformers/main/ar/main_classes/optimizer_schedules#transformers.SchedulerType) for all possible values. Common choices: - "linear" = [get_linear_schedule_with_warmup()](/docs/transformers/main/ar/main_classes/optimizer_schedules#transformers.get_linear_schedule_with_warmup) - "cosine" = [get_cosine_schedule_with_warmup()](/docs/transformers/main/ar/main_classes/optimizer_schedules#transformers.get_cosine_schedule_with_warmup) - "constant" =  [get_constant_schedule()](/docs/transformers/main/ar/main_classes/optimizer_schedules#transformers.get_constant_schedule) - "constant_with_warmup" = [get_constant_schedule_with_warmup()](/docs/transformers/main/ar/main_classes/optimizer_schedules#transformers.get_constant_schedule_with_warmup)

lr_scheduler_kwargs (`dict` أو `str`، *اختياري*، القيمة الافتراضية `None`) : الحُجج الإضافية الخاصة بـ lr_scheduler. راجع توثيق كل مُجدول لمعرفة القيم الممكنة.

warmup_steps (`int` أو `float`، *اختياري*، القيمة الافتراضية 0) : عدد الخطوات لدفء خطي من 0 إلى `learning_rate`. يساعد الدفء في استقرار التدريب في المرحلة الأولية. يمكن أن يكون: - عددًا صحيحًا: عدد خطوات الدفء الدقيق - عددًا عشريًا في المدى [0, 1): يُفسَّر كنسبة من إجمالي خطوات التدريب

**المُحسِّن:**

optim (`str` أو `training_args.OptimizerNames`، *اختياري*، القيمة الافتراضية هي `"adamw_torch"` (لـ torch>=2.8 تكون `"adamw_torch_fused"`)) : المُحسِّن (optimizer) الذي سيتم استخدامه. الخيارات الشائعة: - `"adamw_torch"`: AdamW الخاص بـ PyTorch (الافتراضي الموصى به) - `"adamw_torch_fused"`: نواة AdamW المدمجة (Fused) - `"adamw_hf"`: تنفيذ HuggingFace لخوارزمية AdamW - `"sgd"`: التدرج العشوائي (Stochastic Gradient Descent) مع الزخم (momentum) - `"adafactor"`: مُحسِّن موفّر للذاكرة مناسب للنماذج الكبيرة - `"adamw_8bit"`: AdamW بدقة 8 بت (يتطلب مكتبة bitsandbytes) راجع `OptimizerNames` للحصول على القائمة الكاملة.

optim_args (`str`، *اختياري*) : حُجج اختيارية تُمرَّر إلى المُحسِّنات مثل AnyPrecisionAdamW وAdEMAMix وGaLore.

weight_decay (`float`، *اختياري*، القيمة الافتراضية 0) : معامل تخفيف الوزن (Weight decay) الذي يطبّقه المُحسِّن (وليس دالة الخسارة). يضيف تنظيم L2 لمنع الإفراط في التخصيص (overfitting) عن طريق معاقبة الأوزان الكبيرة. يُستثنى تلقائيًا من معاملات الانحياز (bias) ومعاملات LayerNorm. القيم النموذجية: 0.01 (قياسي)، 0.1 (تنظيم أقوى)، 0.0 (بدون تنظيم).

adam_beta1 (`float`، *اختياري*، القيمة الافتراضية 0.9) : معدل الاضمحلال الأسي لتقديرات اللحظة الأولى (الزخم) في المُحسِّنات القائمة على Adam. يتحكم في مقدار تاريخ التدرجات الذي يجب الاحتفاظ به.

adam_beta2 (`float`، *اختياري*، القيمة الافتراضية 0.999) : معدل الاضمحلال الأسي لتقديرات اللحظة الثانية (التباين) في المُحسِّنات القائمة على Adam. يتحكم في تحجيم معدل التعلم التكيفي.

adam_epsilon (`float`، *اختياري*، القيمة الافتراضية 1e-8) : قيمة إيبسلون للاستقرار العددي في المُحسِّنات القائمة على Adam. تمنع القسمة على صفر في مقام قاعدة التحديث.

optim_target_modules (`Union[str, list[str]]`، *اختياري*) : الوحدات المستهدفة للتحسين، أي أسماء الوحدات التي ترغب في تدريبها. يُستخدم حاليًا لخوارزمية [GaLore](https://huggingface.co/papers/2403.03507) وخوارزمية [APOLLO](https://huggingface.co/papers/2412.05270). راجع [تنفيذ GaLore](https://github.com/jiaweizzhao/GaLore) و[تنفيذ APOLLO](https://github.com/zhuhanqing/APOLLO) لمزيد من التفاصيل. يجب التأكد من تمرير مُحسِّن GaLore أو APOLLO صالح، مثل أحد ما يلي: "apollo_adamw"، "galore_adamw"، "galore_adamw_8bit"، "galore_adafactor"، والتأكد من أن الوحدات المستهدفة هي وحدات `nn.Linear` فقط.

**التنظيم واستقرار التدريب:**

gradient_accumulation_steps (`int`، *اختياري*، القيمة الافتراضية 1) : عدد خطوات التحديث لتجميع التدرجات قبل تنفيذ مسار الرجوع/التحديث. يحاكي أحجام دفعات أكبر دون استهلاك ذاكرة إضافي. حجم الدفعة الفعّال = `per_device_train_batch_size × num_devices × gradient_accumulation_steps`. > [!TIP] > عند استخدام تجميع التدرجات، يُحتسب "خطوة" واحدة على أنها خطوة واحدة تتضمن مسار رجوع. لذلك، ستتم عمليات التسجيل والتقييم والحفظ كل `gradient_accumulation_steps × xxx_step` من أمثلة التدريب.

average_tokens_across_devices (`bool`، *اختياري*، القيمة الافتراضية `True`) : تحديد ما إذا كان سيتم متوسط الرموز عبر الأجهزة أم لا. عند التفعيل، سيستخدم all_reduce لمزامنة num_tokens_in_batch لحساب الدقة بدقة. المرجع: https://github.com/huggingface/transformers/issues/34242

max_grad_norm (`float`، *اختياري*، القيمة الافتراضية 1.0) : الحد الأقصى لطول التدرّج (Norm) لقصّ التدرّجات. يُطبَّق بعد مسار الرجوع وقبل خطوة المُحسِّن. يمنع انفجار التدرّجات عن طريق تصغير التدرّجات عندما يتجاوز طولها الكلي هذا العتبة. اضبطه على 0 لتعطيل القصّ. القيم النموذجية: 1.0 (قياسي)، 0.5 (أكثر تحفظاً)، 5.0 (أقل عدوانية).

label_smoothing_factor (`float`، *اختياري*، القيمة الافتراضية 0.0) : معامل تنعيم التسميات لمنع الثقة المفرطة. يستبدل الأهداف الصلبة 0/1 بأهداف ناعمة: يصبح 0 هو `ε/num_labels` ويصبح 1 هو `1 - ε + ε/num_labels`، حيث ε = `label_smoothing_factor`. القيمة صفر تعني عدم وجود تنعيم. النطاق النموذجي: من 0.0 إلى 0.1.

**التدريب بدقة مختلطة:**

bf16 (`bool`، *اختياري*، القيمة الافتراضية `False`) : تفعيل التدريب بدقة مختلطة bfloat16 (BF16). يُفضَّل عمومًا على FP16 نظرًا لاستقراره العددي الأفضل وعدم الحاجة إلى تحجيم الفقد.

fp16 (`bool`، *اختياري*، القيمة الافتراضية `False`) : تفعيل التدريب بدقة مختلطة float16 (FP16). يُنصح باستخدام BF16 بدلاً من ذلك إذا كان جهازك يدعمه.

bf16_full_eval (`bool`، *اختياري*، القيمة الافتراضية `False`) : استخدام دقة BF16 الكاملة للتقييم (وليس مجرد دقة مختلطة). أسرع ويوفر الذاكرة، لكنه قد يؤثر قليلاً على قيم المقاييس. ينطبق فقط أثناء التقييم.

fp16_full_eval (`bool`، *اختياري*، القيمة الافتراضية `False`) : استخدام دقة FP16 الكاملة للتقييم (وليس مجرد دقة مختلطة). أسرع ويوفر الذاكرة، لكنه قد يؤثر قليلاً على قيم المقاييس. ينطبق فقط أثناء التقييم.

tf32 (`bool`, *اختياري*) : تفعيل وضع TensorFloat-32 (TF32) على معالجات Ampere وأحدث. يستخدم TF32 دقة بمقدار 19 بت لعمليات ضرب المصفوفات (بدلاً من 23 بت في FP32)، مما يوفر تسريعًا يصل إلى 8 أضعاف مع فقدان دقة ضئيل. تعتمد القيمة الافتراضية على إصدار PyTorch. راجع [وثائق TF32](https://huggingface.co/docs/transformers/perf_train_gpu_one#tf32).

**نقطة التفعيل:**

activation_checkpointing (`bool`، *اختياري*، القيمة الافتراضية `False`) : تفعيل نقطة التفتيش للتفعيل (activation checkpointing) لتبادل الحساب مقابل الذاكرة. يقلل من استهلاك الذاكرة عن طريق مسح التفعيلات أثناء المرور الأمامي وإعادة حسابها أثناء المرور الخلفي. يتيح تدريب نماذج أكبر أو أحجام دفعات أكبر مقابل تكلفة تدريب أبطأ بنسبة ~20%.

activation_checkpointing_kwargs (`dict`، *اختياري*، القيمة الافتراضية `None`) : حُجج الكلمات المفتاحية التي تُمرَّر إلى `activation_checkpointing_enable()`. يُنشئ `every_n_layers` نقاط تفتيش فقط لكل طبقة مُفكِّك n بدلاً من جميع الطبقات؛ حيث يمثل `1` السلوك المعتاد الشامل أو المنعدم، وتوفر القيم الأكبر بعض الذاكرة مقابل السرعة. يحتفظ `offload` بالتفعيلات المحفوظة في ذاكرة مضيف مثبّتة، مما يُحرر `layers x sequence x hidden` بايت من ذاكرة الجهاز ويجعل الخطوة أبطأ. تُمرَّر أي مفاتيح أخرى إلى `torch.utils.checkpoint.checkpoint`.

gradient_checkpointing (`bool`، *اختياري*) : مستعار غير مستخدم لـ `activation_checkpointing`، وسيتم إزالته في الإصدار v6.

gradient_checkpointing_kwargs (`dict`, *اختياري*) : اسم مستعار غير مستحسن لـ `activation_checkpointing_kwargs`، وسيتم إزالته في الإصدار v6.

**التجميع:**

torch_compile (`bool`، *اختياري*، القيمة الافتراضية `False`) : تجميع النموذج باستخدام `torch.compile()` في PyTorch 2.0 لتسريع التدريب. يمكن أن يوفر تسريعًا بنسبة 20-50% دون أي تغييرات في الكود. يستخدم إعدادات التجميع الافتراضية ما لم يتم تحديد `torch_compile_backend` أو `torch_compile_mode`.

torch_compile_backend (`str`، *اختياري*) : الخلفية (Backend) الخاصة بـ `torch.compile()`. إذا تم ضبطه، يتم تفعيل `torch_compile` تلقائيًا. تشمل الخيارات `"inductor"` (الافتراضي)، `"aot_eager"`، `"cudagraphs"`. تختلف الخلفيات حسب إصدار PyTorch - راجع توثيق PyTorch لمعرفة الخيارات المتاحة.

torch_compile_mode (`str`، *اختياري*) : وضع التجميع لـ `torch.compile()`. إذا تم ضبطه، يتم تفعيل `torch_compile` تلقائيًا. الخيارات: `"default"`، `"reduce-overhead"` (لتقليل الحمل الإضافي على Python)، `"max-autotune"` (تحسين عدواني، مع وقت تجميع أطول).

**النوى:**

use_liger_kernel (`bool`، *اختياري*، القيمة الافتراضية `False`) : تفعيل تحسينات [Liger Kernel](https://github.com/linkedin/Liger-Kernel). يزيد من الإنتاجية عبر وحدات معالجة الرسومات المتعددة بنسبة ~20% ويقلل من استهلاك الذاكرة بنسبة ~60%. يعمل مع Flash Attention وFSDP وDeepSpeed. يدعم حاليًا نماذج Llama وMistral وMixtral وGemma.

liger_kernel_config (`Optional[dict]`، *اختياري*) : إعدادات Liger Kernel. تُمرَّر كـ kwargs إلى `_apply_liger_kernel_to_instance()`. تشمل الخيارات عادةً: `"rope"`، `"swiglu"`، `"cross_entropy"`، `"fused_linear_cross_entropy"`، `"rms_norm"`. إذا كانت `None`، يتم استخدام الإعدادات الافتراضية.

**تحسينات إضافية:**

use_cache (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم تفعيل ذاكرة التخزين المؤقت للنموذج أم لا. في حالة التدريب، عادةً ما لا تكون هذه الميزة ضرورية باستثناء بعض طرق PEFT التي تستخدم `past_key_values`.

neftune_noise_alpha (`Optional[float]`) : إذا لم تكن `None`، فسيتم تفعيل تضمينات ضوضاء NEFTune. يمكن أن يحسّن هذا أداء النموذج بشكل كبير عند ضبط التعليمات. اطّلع على [الورقة الأصلية](https://huggingface.co/papers/2310.05914) و[الكود الأصلي](https://github.com/neelsjain/NEFTune). يدعم `PreTrainedModel` في transformers وكذلك `PeftModel` من peft. استخدمت الورقة الأصلية قيمًا في النطاق [5.0, 15.0].

torch_empty_cache_steps (`int`, *اختياري*) : عدد الخطوات التي يجب انتظارها قبل استدعاء `torch.<device>.empty_cache()`. إذا تُرك غير مضبوط أو تم ضبطه على None، فلن يتم تفريغ ذاكرة التخزين المؤقت. يمكن أن يساعد ذلك في تجنب أخطاء نفاد ذاكرة CUDA عن طريق خفض ذروة استخدام ذاكرة VRAM، مقابل تكلفة تقارب [10% من الأداء الأبطأ](https://github.com/huggingface/transformers/issues/31372).

auto_find_batch_size (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم تحديد حجم دفعة تدريب يتناسب مع الذاكرة تلقائيًا من خلال التلاشي الأسي، لتجنب أخطاء نفاد ذاكرة CUDA. لا يتم تعديل حجم دفعة التقييم.

**تسجيل التدريب ومراقبته:**

logging_strategy (`str` أو [IntervalStrategy](/docs/transformers/main/ar/internal/trainer_utils#transformers.IntervalStrategy)، *اختياري*، القيمة الافتراضية هي `"steps"`) : استراتيجية التسجيل المعتمدة أثناء التدريب. القيم الممكنة هي: - `"no"`: لا يتم إجراء أي تسجيل أثناء التدريب. - `"epoch"`: يتم إجراء التسجيل في نهاية كل حقبة. - `"steps"`: يتم إجراء التسجيل كل `logging_steps`.

logging_steps (`int` أو `float`، *اختياري*، القيمة الافتراضية 500) : عدد خطوات التحديث بين سجلّين إذا كان `logging_strategy="steps"`. يجب أن يكون عددًا صحيحًا أو عددًا عشريًا ضمن المدى `[0,1)`. إذا كان أقل من 1، فسيُفسَّر كنسبة من إجمالي خطوات التدريب.

logging_first_step (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم تسجيل أول `global_step` أم لا.

log_on_each_node (`bool`، *اختياري*، القيمة الافتراضية `True`) : في التدريب الموزّع متعدد العقد، ما إذا كان سيتم التسجيل باستخدام `log_level` مرة واحدة لكل عقدة، أم على العقدة الرئيسية فقط.

logging_nan_inf_filter (`bool`، *اختياري*، القيمة الافتراضية `True`) : يُستبعد فقدان NaN و Inf عند التسجيل. إذا كانت `True`، يتم استبدال قيم فقدان التدريب التي تكون NaN/Inf بمتوسط قيم الفقدان الصالحة الأخيرة، ويُستبعد الدُفعات التي تحتوي على NaN/Inf (مثل الدُفعات التي لا تحتوي على رموز تسميات) من حساب فقدان التقييم. لا يؤثر هذا على حساب التدرجات، بل على التسجيل فقط.

include_num_input_tokens_seen (`Optional[Union[str, bool]]`، *اختياري*، القيمة الافتراضية هي "no") : ما إذا كان سيتم تتبع عدد رموز الإدخال التي تم رؤيتها. يجب أن تكون واحدة من ["all", "non_padding", "no"] أو قيمة منطقية تُخضع إلى "all" أو "no". قد يكون أبطأ في التدريب الموزّع نظرًا لضرورة استدعاء عمليات الجمع.

**التسجيل:**

log_level (`str`، *اختياري*، القيمة الافتراضية `passive`) : مستوى التسجيل للعملية الرئيسية. الخيارات: `"debug"`، `"info"`، `"warning"`، `"error"`، `"critical"`، أو `"passive"` (لا يغيّر مستوى تسجيل Transformers الحالي، والذي تكون قيمته الافتراضية `"warning"`)

log_level_replica (`str`، *اختياري*، القيمة الافتراضية `"warning"`) : مستوى التسجيل لعمليات النسخ في التدريب الموزّع. نفس الخيارات المتاحة في `log_level`.

disable_tqdm (`bool`، *اختياري*) : تعطيل أشرطة تقدّم tqdm. القيمة الافتراضية هي `True` إذا كانت `log_level` تحذيرًا أو أقل، وإلا فهي `False`.

**تكامل تتبع التجارب:**

report_to (`str` أو `list[str]`، *اختياري*، القيمة الافتراضية `"none"`) : قائمة التكاملات التي سيتم الإبلاغ عن النتائج والسجلات إليها. المنصات المدعومة هي `"azure_ml"`، `"clearml"`، `"codecarbon"`، `"comet_ml"`، `"dagshub"`، `"dvclive"`، `"flyte"`، `"mlflow"`، `"swanlab"`، `"tensorboard"`، `"trackio"` و`"wandb"`. استخدم `"all"` للإبلاغ إلى جميع التكاملات المثبتة، و`"none"` لعدم استخدام أي تكاملات.

run_name (`str`، *اختياري*) : وصفٌ للتشغيل. يُستخدم عادةً لتسجيل [trackio](https://github.com/gradio-app/trackio)، [wandb](https://www.wandb.com/)، [mlflow](https://www.mlflow.org/)، [comet](https://www.comet.com/site) و[swanlab](https://swanlab.cn).

project (`str`، *اختياري*، القيمة الافتراضية `"huggingface"`) : اسم المشروع المستخدم للتسجيل. حاليًا، يُستخدم فقط بواسطة Trackio.

trackio_space_id (`str` أو `None`، *اختياري*، القيمة الافتراضية `None`) : معرّف مساحة Hugging Face التي سيتم استخدامها للتسجيل المباشر في Trackio عبر مساحة مبنية على Gradio. يجب أن يكون اسمًا كاملًا للمساحة مثل `'username/reponame'` أو `'orgname/reponame'`، أو مجرد `'reponame'` (تُنشأ المساحة في نطاق المستخدم المسجّل حاليًا). إذا كانت `None`، تُسجَّل المقاييس في **مجلد محلي** فقط (بدون مساحة على Hub). تتمتع مساحة Gradio تلك بصلاحية **القراءة والكتابة** إلى **Bucket** الخاص بـ Trackio، وهو ما تريده أثناء **استمرار التدريب**—على سبيل المثال عند **استئناف** تشغيل جزئي أو **تجميع السجلات** من عدة أجهزة. ستكون المساحة **عامة** ما لم تضبط `hub_private_repo=True` أو كان الافتراضي في مؤسستك هو إنشاء مساحات خاصة.

trackio_bucket_id (`str` أو `None`، *اختياري*، القيمة الافتراضية `None`) : معرّف Bucket اختياري على Hugging Face لـ Trackio. إذا لم يتم ضبطه، فسيقوم Trackio باستنتاجه. يُستخدم مع مساحة Gradio (`trackio_space_id`) وعند نشر مساحة ثابتة (عندما لا تكون `trackio_static_space_id` قيمة `False`).

trackio_static_space_id (`str` أو `False` أو `None`، *اختياري*، القيمة الافتراضية هي `None`) : معرّف مساحة Hugging Face التي سيتم استخدامها للمساحة الثابتة التي تُنشأ بعد اكتمال التدريب. يجب أن يكون اسمًا كاملًا للمساحة مثل `'username/reponame'` أو `'orgname/reponame'`، أو مجرد `'reponame'` (تُنشأ المساحة في مساحة اسم المستخدم المسجّل حاليًا). إذا كانت القيمة False، فلن يتم إنشاء مساحة ثابتة. إذا كانت القيمة None، وتم دفع النموذج إلى Hub، فسيتم إنشاء مساحة ثابتة باسم افتراضي وسيتم ربطها من بطاقة النموذج. ستكون المساحة عامة ما لم تضبط `hub_private_repo=True` أو كان الإعداد الافتراضي لمنظمتك هو إنشاء مساحات خاصة.

**التقييم:**

eval_strategy (`str` أو [IntervalStrategy](/docs/transformers/main/ar/internal/trainer_utils#transformers.IntervalStrategy)، *اختياري*، الافتراضي `"no"`) : متى يتم تشغيل التقييم. الخيارات: - `"no"`: لا تقييم أثناء التدريب - `"steps"`: تقييم كل `eval_steps` - `"epoch"`: تقييم في نهاية كل حقبة

eval_steps (`int` أو `float`، *اختياري*) : عدد خطوات التحديث بين كل تقييمين إذا كان `eval_strategy="steps"`. سيُستخدم نفس قيمة `logging_steps` افتراضيًا إذا لم يتم ضبطه. يجب أن يكون عددًا صحيحًا أو عددًا عشريًا ضمن المدى `[0,1)`. إذا كان أقل من 1، فسيُفسَّر كنسبة من إجمالي خطوات التدريب.

eval_delay (`float`، *اختياري*) : عدد الفترات أو الخطوات التي يجب الانتظار قبل إجراء أول تقييم، وذلك اعتمادًا على eval_strategy.

per_device_eval_batch_size (`int`، *اختياري*، القيمة الافتراضية 8) : حجم الدفعة لكل نواة تسريع/معالج CPU للتقييم.

prediction_loss_only (`bool`، *اختياري*، القيمة الافتراضية `False`) : عند إجراء التقييم وتوليد التنبؤات، يُرجع الخسارة فقط.

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

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

eval_use_gather_object (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم تنفيذ تجميع الكائنات بشكل تكراري من جميع الأجهزة ضمن قائمة/مجموعة/قاموس متداخل من الكائنات. يجب تفعيل هذا الخيار فقط إذا لم يكن المستخدمون يعيدون مجرد متجهات (tensors)، حيث يُنصح ضد ذلك بنشاط من قِبل PyTorch. يكون هذا الخيار مفيداً عندما تكون بنية التسميات غير قياسية، كما هو الحال في مهام الرؤية الحاسوبية.

eval_accumulation_steps (`int`, *اختياري*) : عدد خطوات التنبؤ التي يتم خلالها تجميع المصفوفات الناتجة قبل نقل النتائج إلى وحدة المعالجة المركزية. إذا تُرك غير مضبوط، يتم تجميع التنبؤات بالكامل على مُسرِّع الجهاز قبل نقلها إلى وحدة المعالجة المركزية (أسرع لكن يتطلب ذاكرة أكبر).

**حساب المقاييس:**

include_for_metrics (`list[str]`، *اختياري*، القيمة الافتراضية `[]`) : تضمين بيانات إضافية في دالة `compute_metrics` إذا كانت مطلوبة لحساب المقاييس. الخيارات الممكنة لإضافتها إلى قائمة `include_for_metrics`: - `"inputs"`: بيانات الإدخال المُمرَّرة إلى النموذج، والمُعدّة لحساب المقاييس المعتمدة على المدخلات. - `"loss"`: قيم الخسارة المحسوبة أثناء التقييم، والمُعدّة لحساب المقاييس المعتمدة على الخسارة.

batch_eval_metrics (`bool`، *اختياري*، القيمة الافتراضية `False`) : إذا تم ضبطه على `True`، فستقوم عملية التقييم باستدعاء compute_metrics في نهاية كل دفعة لتراكم الإحصاءات بدلاً من حفظ جميع قيم التقييم في الذاكرة. عند ضبطه على `True`، يجب عليك تمرير دالة compute_metrics تقبل حجة منطقية `compute_result`، والتي عند تمرير `True` إليها، ستُطلق الإحصاءات الإجمالية النهائية من الإحصاءات المجمعة على مستوى الدفعة التي تراكمها عبر مجموعة التقييم.

**التحقق من النقاط والحفظ:**

save_only_model (`bool`، *اختياري*، القيمة الافتراضية `False`) : حفظ أوزان النموذج فقط، دون حالة المُحسِّن/المُجدوِل/حالة المولّد العشوائي. يقلّل هذا بشكل كبير من حجم نقطة التفتيش، لكنه يمنع استئناف التدريب من نقطة التفتيش. استخدمه عندما تحتاج إلى النموذج المدرَّب للاستدلال فقط، وليس للتدريب المستمر. يمكنك تحميل النموذج باستخدام `from_pretrained` فقط عند ضبط هذا الخيار على `True`.

save_strategy (`str` أو `SaveStrategy`، *اختياري*، القيمة الافتراضية `"steps"`) : استراتيجية حفظ نقاط التفتيش المعتمدة أثناء التدريب. القيم الممكنة هي: - `"no"`: لا يتم أي حفظ أثناء التدريب. - `"epoch"`: يتم الحفظ في نهاية كل حقبة. - `"steps"`: يتم الحفظ كل `save_steps`. - `"best"`: يتم الحفظ كلما تم تحقيق `best_metric` جديد.

save_steps (`int` أو `float`، *اختياري*، القيمة الافتراضية 500) : عدد خطوات التحديث قبل حفظ نقطتي تفتيش إذا كان `save_strategy="steps"`. يجب أن يكون عددًا صحيحًا أو عددًا عشريًا ضمن المدى `[0,1)`. إذا كان أقل من 1، فسيُفسَّر كنسبة من إجمالي خطوات التدريب.

save_on_each_node (`bool`، *اختياري*، القيمة الافتراضية `False`) : عند تنفيذ التدريب الموزّع متعدد العقد، يحدد ما إذا كان سيتم حفظ النماذج والنقاط المرجعية على كل عقدة، أم على العقدة الرئيسية فقط. يجب عدم تفعيل هذا الخيار عندما تستخدم العقد المختلفة نفس التخزين، لأن الملفات ستُحفظ بأسماء متطابقة على كل عقدة.

save_total_limit (`int`، *اختياري*) : الحد الأقصى لعدد نقاط التفتيش التي يجب الاحتفاظ بها. يحذف نقاط التفتيش الأقدم في `output_dir`. عند تعيين `load_best_model_at_end=True`، يتم دائمًا الاحتفاظ بأفضل نقطة تفتيش بالإضافة إلى أحدث النقاط. على سبيل المثال، `save_total_limit=5` يحتفظ بأحدث أربع نقاط بالإضافة إلى الأفضل

enable_jit_checkpoint (`bool`، *اختياري*، القيمة الافتراضية `False`) : تفعيل نقطة التفتيش الفورية (Just-In-Time) عند إشارة SIGTERM لإنهاء العمل بسلاسة على الأحمال القابلة للمقاطعة. **مهم**: اضبط فترة الإيقاف السليم في مُنسّقك (orchestrator) للسماح بزمن كافٍ. في Kubernetes، اضبط `terminationGracePeriodSeconds` (القيمة الافتراضية 30 ثانية عادةً غير كافية). في Slurm، استخدم `--signal=TERM@<seconds>`. الفترة السليمة المطلوبة ≥ أطول وقت للتكرار + وقت حفظ نقطة التفتيش.

**تكامل مع Hugging Face Hub:**

push_to_hub (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم دفع النموذج إلى Hub في كل مرة يُحفظ فيها النموذج. إذا تم تفعيل هذا الخيار، فسيبدأ `output_dir` في إنشاء دليل git متزامن مع المستودع (المحدد بواسطة `hub_model_id`) وسيتم دفع المحتوى في كل مرة يتم فيها تشغيل الحفظ (بناءً على `save_strategy` الخاص بك). كما أن استدعاء [save_model()](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer.save_model) سيؤدي أيضًا إلى تشغيل عملية الدفع.

hub_token (`str`، *اختياري*) : الرمز المميز (token) المستخدم لدفع النموذج إلى Hub. سيُستخدم افتراضيًا الرمز المميز الموجود في مجلد الكاش (cache) الذي تم الحصول عليه عبر `hf auth login`.

hub_private_repo (`bool`، *اختياري*) : ما إذا كان سيتم جعل المستودع خاصًا. إذا كانت القيمة `None` (الافتراضي)، فسيكون المستودع عامًا ما لم يكن الافتراضي للمنظمة هو الخاص. يتم تجاهل هذه القيمة إذا كان المستودع موجودًا مسبقًا. عند الإبلاغ إلى Trackio مع تمكين النشر إلى Hugging Face Spaces، تحدد نفس المنطق ما إذا كان المساحة (Space) خاصًا.

hub_model_id (`str`, *اختياري*) : اسم المستودع الذي يجب إبقاؤه متزامنًا مع *output_dir* المحلي. يمكن أن يكون معرّف نموذج بسيط، وفي هذه الحالة سيتم دفع النموذج إلى نطاقك. وإلا، يجب أن يكون اسم المستودع الكامل، على سبيل المثال `"user_name/model"`، مما يتيح لك الدفع إلى منظمة أنت عضو فيها باستخدام `"organization_name/model"`. سيكون الافتراضي `user_name/output_dir_name` حيث يكون *output_dir_name* هو اسم `output_dir`.

hub_strategy (`str` أو `HubStrategy`، *اختياري*، القيمة الافتراضية `"every_save"`) : يحدد ما الذي يجب دفعه إلى Hub ومتى. الخيارات: - `"end"`: الدفع فقط في نهاية التدريب - `"every_save"`: الدفع عند كل حفظ (بشكل غير متزامن حتى لا يعيق التدريب) - `"checkpoint"`: مثل `"every_save"` بالإضافة إلى دفع أحدث نقطة تحقق إلى مجلد الفرع `"last-checkpoint"` لسهولة الاستئناف - `"all_checkpoints"`: دفع جميع نقاط التحقق عند ظهورها

hub_always_push (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما لم تكن هذه القيمة `True`، سيتخطى `Trainer` دفع نقطة التفتيش إذا لم تكتمل عملية الدفع السابقة.

hub_revision (`str`، *اختياري*) : المراجعة (revision) المستخدمة عند الدفع إلى Hub. يمكن أن يكون اسم فرع، أو وسم، أو تجزئة (hash) لالتزام.

**أفضل تتبع للنماذج:**

load_best_model_at_end (`bool`، *اختياري*، القيمة الافتراضية `False`) : تحميل أفضل نقطة تحقق (checkpoint) في نهاية التدريب. يتطلب ضبط `eval_strategy`. عند التفعيل، يتم دائمًا حفظ أفضل نقطة تحقق (انظر `save_total_limit`). عند تعيين `True`، يجب أن يتطابق `save_strategy` مع `eval_strategy` (ما لم يكن `save_strategy` هو `"best"`)، وإذا كان استخدام `"steps"`، فيجب أن يكون `save_steps` مضاعفًا لـ `eval_steps`.

metric_for_best_model (`str`، *اختياري*) : المقياس المستخدم لمقارنة النماذج عند `load_best_model_at_end=True`. يجب أن يكون اسم مقياس يُعاد من التقييم، مع أو بدون البادئة `"eval_"`. القيمة الافتراضية هي `"loss"`. إذا قمت بتعيين هذا، فستكون القيمة الافتراضية لـ `greater_is_better` هي `True` ما لم ينتهِ الاسم بـ `"loss"`. أمثلة: `"accuracy"`، `"f1"`، `"eval_bleu"`.

greater_is_better (`bool`، *اختياري*) : ما إذا كانت القيم الأعلى للمقياس أفضل. القيمة الافتراضية مبنية على `metric_for_best_model`: `True` إذا لم ينتهِ اسم المقياس بـ `"loss"`، وإلا `False`.

**استئناف التدريب:**

ignore_data_skip (`bool`، *اختياري*، القيمة الافتراضية `False`) : عند استئناف التدريب، يتخطى هذا الخيار التقدّم السريع عبر مجموعة البيانات للوصول إلى الحالة السابقة. إذا كانت القيمة `True`، يبدأ التدريب من بداية مجموعة البيانات (استئناف أسرع لكن النتائج لن تتطابق مع التدريب المقطوع). إذا كانت القيمة `False`، يتخطى البيانات التي تم رؤيتها (استئناف أبطأ لكن استكمال دقيق).

restore_callback_states_from_checkpoint (`bool`، *اختياري*، القيمة الافتراضية `False`) : استعادة حالات الاستدعاءات (callbacks) من نقطة التفتيش عند الاستئناف. إذا كانت `True`، فسيتم تجاوز الاستدعاءات الممرّرة إلى Trainer إذا كانت موجودة في نقطة التفتيش.

**إمكانية التكرار:**

full_determinism (`bool`، *اختياري*، القيمة الافتراضية `False`) : إذا كانت `True`، يتم استدعاء [enable_full_determinism()](/docs/transformers/main/ar/internal/trainer_utils#transformers.enable_full_determinism) بدلاً من [set_seed()](/docs/transformers/main/ar/internal/trainer_utils#transformers.set_seed) لضمان نتائج قابلة للتكرار في التدريب الموزع. ملاحظة مهمة: سيؤثر هذا سلباً على الأداء، لذا استخدمه فقط لأغراض تصحيح الأخطاء.

seed (`int`، *اختياري*، القيمة الافتراضية 42) : البذرة العشوائية التي سيتم ضبطها في بداية التدريب. لضمان قابلية إعادة الإنتاج عبر التشغيلات، استخدم دالة `~Trainer.model_init` لإنشاء النموذج إذا كانت بعض معاميره مهيأة عشوائيًا.

data_seed (`int`, *اختياري*) : البذرة العشوائية التي تُستخدم مع مُعيّنات البيانات. إذا لم يتم ضبطها، فستستخدم المولّدات العشوائية لعينة البيانات نفس البذرة الخاصة بـ`seed`. يمكن استخدام هذا لضمان قابلية إعادة إنتاج عينة البيانات، بشكل مستقل عن بذرة النموذج.

**إعدادات العتاد:**

use_cpu (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم استخدام وحدة المعالجة المركزية (CPU) أم لا. إذا تم ضبطه على False، فسنستخدم جهاز/واجهة الخلفية المتاحة من torch.

**إعدادات Accelerate:**

accelerator_config (`str` أو `dict` أو `AcceleratorConfig`، *اختياري*) : إعدادات للتكامل الداخلي مع Accelerate. يمكن أن تكون: - مسار إلى ملف إعدادات بصيغة JSON: `"accelerator_config.json"` - قاموس يحتوي على خيارات الإعداد - كائن من `AcceleratorConfig` الخيارات الرئيسية: - `split_batches` (`bool`، القيمة الافتراضية `False`): ما إذا كان سيتم تقسيم الدفعات عبر الأجهزة. إذا كانت `True`، فإن حجم الدفعة الفعلي يكون متساوياً على جميع الأجهزة (يجب أن يكون الحجم القابل للقسمة على num_processes). إذا كانت `False`، يحصل كل جهاز على حجم الدفعة المحدد. - `dispatch_batches` (`bool`): إذا كانت `True`، فإن العملية الرئيسية فقط تتصفح dataloader وتوزع الدفعات على الأجهزة. القيمة الافتراضية هي `True` لـ `IterableDataset`، و`False` في الحالات الأخرى. - `even_batches` (`bool`، القيمة الافتراضية `True`): نسخ العينات من بداية مجموعة البيانات لضمان حصول جميع العمال على أحجام دفعات متساوية. - `use_seedable_sampler` (`bool`، القيمة الافتراضية `True`): استخدام عينة عشوائية قابلة للتبذير بالكامل من أجل قابلية التكرار. - `use_configured_state` (`bool`، القيمة الافتراضية `False`): استخدام `AcceleratorState`/`PartialState` مُهيّأ مسبقاً بدلاً من إنشاء حالة جديدة. قد يسبب مشاكل في ضبط المعلمات الفائقة.

parallelism_config (`ParallelismConfig`، *اختياري*) : إعدادات التوازي لجلسة التدريب. يتطلب `1.10.1` من Accelerate

**محمّل البيانات:**

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

dataloader_num_workers (`int`، *اختياري*، القيمة الافتراضية 0) : عدد العمليات الفرعية المستخدمة لتحميل البيانات (خاصة بـ PyTorch). القيمة 0 تعني أن البيانات ستُحمَّل في العملية الرئيسية.

dataloader_pin_memory (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كنت ترغب في تثبيت الذاكرة في محمّلات البيانات أم لا. ستكون القيمة الافتراضية `True`.

dataloader_persistent_workers (`bool`، *اختياري*، القيمة الافتراضية `False`) : إذا كانت القيمة True، فلن يُغلق مُحمِّل البيانات عمليات العامل بعد استهلاك مجموعة البيانات مرة واحدة. وهذا يسمح بإبقاء كائنات Dataset الخاصة بالعاملات نشطة. قد يسرّع التدريب بشكل محتمل، لكنه سيزيد من استخدام ذاكرة RAM. ستكون القيمة الافتراضية `False`.

dataloader_prefetch_factor (`int`، *اختياري*) : عدد الدفعات التي يحمّلها كل عامل مسبقًا. القيمة 2 تعني أن إجمالي عدد الدفعات المحمّلة مسبقًا عبر جميع العمال سيكون 2 * num_workers.

dataloader_multiprocessing_context (`str`, *اختياري*) : طريقة بدء المعالجة متعددة العمليات المستخدمة لعمال تحميل البيانات (`"fork"` أو `"spawn"` أو `"forkserver"`). الافتراضي هو طريقة البدء الافتراضية في PyTorch، باستثناء حالة MPS عندما يكون `dataloader_num_workers > 1`، حيث تكون القيمة الافتراضية `"fork"`. استخدم `"spawn"` عند البث من مصادر لا تكون كائناتها آمنة للاستنساخ (مثل HDFS عبر `pyarrow`). عند استخدام `"spawn"`، يجب أن يكون أي `collate_fn` مخصص أو كود مجموعة بيانات قابلًا للاستيراد على مستوى الوحدة (بدون دوال lambda أو الإغلاقات).

dataloader_in_order (`bool`، *اختياري*، القيمة الافتراضية `True`) : إذا كانت `True`، فإن مُحمِّل البيانات يُخرج الدفعات بالترتيب الذي تم فيه إرسال العمال. اضبطها على `False` لإخراج الدفعات فور جاهزيتها، مما قد يقلل من زمن التأخير النهائي لأحمال العمل البثية الخاصة بـ`IterableDataset`. يتطلب PyTorch >= 2.6.

remove_unused_columns (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم حذف الأعمدة غير المستخدمة في طريقة forward للنموذج تلقائيًا أم لا.

label_names (`list[str]`، *اختياري*) : قائمة المفاتيح في قاموس المدخلات الخاصة بك التي تتوافق مع التسميات. ستصبح افتراضيًا قائمة أسماء المعاملات التي يقبلها النموذج والتي تحتوي على كلمة "label"، ما لم يكن النموذج المستخدم من نوع `XxxForQuestionAnswering`، وفي هذه الحالة ستشمل أيضًا المفاتيح `["start_positions", "end_positions"]`. يجب عليك تحديد `label_names` فقط إذا كنت تستخدم أسماء تسميات مخصصة أو إذا كان `forward` الخاص بنموذجك يستهلك عدة تينسورات للتسميات (مثل الاستخراجية QA).

train_sampling_strategy (`str`، *اختياري*، القيمة الافتراضية `"random"`) : المُعيّن (sampler) المستخدم لمُحمّل بيانات التدريب. القيم الممكنة هي:  - `"random"`: يستخدم `RandomSampler` (الافتراضي). - `"sequential"`: يستخدم `SequentialSampler`. - `"group_by_length"`: يستخدم `LengthGroupedSampler` لتجميع العينات ذات الطول المتقارب معًا (لتقليل الحشو وزيادة الكفاءة). - `"batch_rebalance"`: يستخدم `BatchRebalanceSampler` لموازنة تكلفة الرموز المحشوة عبر الأجهزة وخطوات تراكم التدرجات داخل كل دفعة فعّالة، مما يقلل من هدر الحشو والذروة في الذاكرة مقارنةً بـ`"group_by_length"`. حاليًا، يُدعم هذا فقط للتدريب المتوازي للبيانات (التوازي على مستوى المصفوفات غير مدعوم بعد).  ملاحظة: عند استخدام `IterableDataset`، يتم تجاهل هذا الحُجّة.

length_column_name (`str`، *اختياري*، القيمة الافتراضية `"length"`) : اسم العمود الخاص بالطول المحسوب مسبقًا. إذا كان العمود موجودًا، فسيستخدم التجميع حسب الطول هذه القيم بدلاً من حسابها عند بدء التدريب. يتم تجاهله ما لم يكن `train_sampling_strategy` هو `"group_by_length"` أو `"batch_rebalance"` وكان مجموعة البيانات مثيلًا لـ `Dataset`.

**DDP (DistributedDataParallel):**

ddp_find_unused_parameters (`bool`، *اختياري*) : عند استخدام التدريب الموزّع، قيمة العلم `find_unused_parameters` المُمرّرة إلى `DistributedDataParallel`. ستكون القيمة الافتراضية `False` إذا تم استخدام نقطة التفتيش للتدرّجات، وإلا فستكون `True`.

ddp_bucket_cap_mb (`int`, *اختياري*) : عند استخدام التدريب الموزّع، قيمة العلم `bucket_cap_mb` المُمرَّر إلى `DistributedDataParallel`.

ddp_broadcast_buffers (`bool`، *اختياري*) : عند استخدام التدريب الموزّع، قيمة العلم `broadcast_buffers` المُمرّرة إلى `DistributedDataParallel`. ستكون القيمة الافتراضية `False` إذا تم استخدام فحص التدرّج (gradient checkpointing)، وإلا فستكون `True`.

ddp_static_graph (`bool`، *اختياري*) : عند استخدام التدريب الموزّع، قيمة العلم `static_graph` المُمرَّر إلى `DistributedDataParallel`.

ddp_backend (`str`، *اختياري*) : الخلفية المستخدمة للتدريب الموزّع. يجب أن يكون أحد `"nccl"`، `"mpi"`، `"xccl"`، `"gloo"`، `"hccl"`.

ddp_timeout (`int`، *اختياري*، القيمة الافتراضية 1800) : مهلة انتهاء الوقت لاستدعاءات `torch.distributed.init_process_group`، وتُستخدم لتجنّب انتهاء مهلة اتصال GPU عند تنفيذ عمليات بطيئة في التشغيل الموزّع. يُرجى الرجوع إلى [توثيق PyTorch](https://pytorch.org/docs/stable/distributed.html#torch.distributed.init_process_group) لمزيد من المعلومات.

**FSDP (التوازي الكامل للبيانات المجزأة):**

fsdp (`bool`، *اختياري*، القيمة الافتراضية `None`) : تفعيل PyTorch Fully Sharded Data Parallel (FSDP) للتدريب الموزّع. مرّر `True` لتفعيل FSDP.

fsdp_config (`str` أو `dict`، *اختياري*) : إعدادات التهيئة عند تمكين `fsdp`. مرّر مساراً إلى ملف تكوين بصيغة JSON، مثل `fsdp_config.json`، أو قاموساً محمّلاً مسبقاً. المفاتيح المدعومة: - version (`int`، *اختياري*، القيمة الافتراضية `2`): إصدار FSDP المراد استخدامه (`2` لـ FSDP2، و`1` لـ FSDP1 القديم). - reshard_after_forward (`bool`، *اختياري*، القيمة الافتراضية `True`): ما إذا كان يجب إعادة تجزئة المعاملات بعد مسار الأمامي. اضبطه على `False` للحفاظ على تجميع المعاملات بين مساري الأمامي والخلفي، مما يتجنب إعادة التجميع الشامل (re-all-gather)، ويستخدم ذاكرة ذروة أعلى. - cpu_offload (`bool`، *اختياري*، القيمة الافتراضية `False`): نقل المعاملات والتدرجات إلى وحدة المعالجة المركزية (CPU) عند عدم استخدامها لتوفير ذاكرة وحدة معالجة الرسوميات (GPU). - activation_checkpointing (`bool`، *اختياري*، القيمة الافتراضية `False`): اضبطه على `True` لتقليل الذاكرة عن طريق إعادة حساب التفعيلات (activations) أثناء مسار الخلفي. عند استخدام FSDP، يُفضّل استخدام هذا بدلاً من معامل التدريب `activation_checkpointing`، الذي يُدخل تجميعاً شاملاً زائداً في مسار الخلفي. - cpu_ram_efficient_loading (`bool`، *اختياري*، القيمة الافتراضية `False`): اضبطه على `True` لتحميل نقطة التفتيش (checkpoint) المُسبقة التدريب على العملية الأولى فقط. تبدأ العمليات الأخرى بأوزان فارغة وتستقبل الأوزان عبر البث (broadcast). - state_dict_type (`str`، *اختياري*، القيمة الافتراضية `"FULL_STATE_DICT"`): صيغة نقطة التفتيش: `"FULL_STATE_DICT"` (ملف واحد متوافق مع HF) أو `"SHARDED_STATE_DICT"` (ملف واحد لكل رتبة، أسرع للنماذج الكبيرة). - auto_wrap_policy (`str`، *اختياري*، القيمة الافتراضية `"TRANSFORMER_BASED_WRAP"`): سياسة التغليف التلقائي (auto-wrap) المراد استخدامها. اختر `"TRANSFORMER_BASED_WRAP"` أو `"SIZE_BASED_WRAP"` أو `"NO_WRAP"`. - transformer_layer_cls_to_wrap (`list[str]`، *اختياري*): أسماء فئات طبقات Transformer (حساسة لحالة الأحرف) المراد تغليفها، مثل `LlamaDecoderLayer`. عادةً ما يكون هذا غير ضروري: فسياسة التغليف تعود إلى `_no_split_modules` الخاص بالنموذج، والذي يغطي معظم نماذج transformers. - min_num_params (`int`، *اختياري*، القيمة الافتراضية `0`): الحد الأدنى لعدد المعاملات لكل وحدة للتغليف التلقائي القائم على الحجم (يُستخدم مع `auto_wrap_policy="SIZE_BASED_WRAP"`). - xla (`bool`، *اختياري*، القيمة الافتراضية `False`): ما إذا كان يجب استخدام تدريب PyTorch/XLA Fully Sharded Data Parallel. تجريبي. - xla_fsdp_settings (`dict`، *اختياري*): قاموس بمعاملات تغليف XLA FSDP. للحصول على قائمة كاملة بالخيارات، راجع [مصدر XLA FSDP](https://github.com/pytorch/xla/blob/master/torch_xla/distributed/fsdp/xla_fully_sharded_data_parallel.py). - xla_fsdp_grad_ckpt (`bool`، *اختياري*، القيمة الافتراضية `False`): اضبطه على `True` لاستخدام نقطة تفتيش التدرجات (gradient checkpointing) على كل طبقة مغلّفة بشكل متداخل بواسطة XLA FSDP. يتطلب `xla=True` وسياسة تغليف تلقائي (`min_num_params` أو `transformer_layer_cls_to_wrap`).

**DeepSpeed:**

deepspeed (`str` أو `dict`، *اختياري*) : تفعيل تكامل [DeepSpeed](https://github.com/deepspeedai/DeepSpeed). القيمة تكون إما: - مسار إلى ملف إعدادات DeepSpeed بصيغة JSON: `"ds_config.json"` - إعدادات محمّلة على شكل قاموس > [!TIP] > عند استخدام تهيئة ZeRO، قم بإنشاء نموذجك *بعد* تهيئة `TrainingArguments`، وإلا فلن يتم تطبيق ZeRO.

**التصحيح والتحقق من الأداء (تجريبي):**

debug (`str` أو قائمة من `DebugOption`، *اختياري*، القيمة الافتراضية `""`) : تفعيل ميزة أو أكثر من ميزات التصحيح. هذه ميزة تجريبية. الخيارات الممكنة هي: - "underflow_overflow": يكشف عن تجاوز الحدود في مدخلات/مخرجات النموذج ويبلغ عن آخر الإطارات التي أدت إلى الحدث - "tpu_metrics_debug": يطبع مقاييس التصحيح على TPU

skip_memory_metrics (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم تخطي إضافة تقارير ملفّس الذاكرة إلى المقاييس. يتم تخطي هذا الأمر افتراضيًا لأنه يُبطئ سرعة التدريب والتقييم.

**أعلام السكربت الخارجي (غير مستخدمة بواسطة Trainer):**

do_train (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم تشغيل التدريب أم لا. لا يستخدم هذا الحجة مباشرةً بواسطة [Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer)، بل يُقصد استخدامه في سكربتات التدريب/التقييم الخاصة بك.

do_eval (`bool`، *اختياري*) : ما إذا كان سيتم تشغيل التقييم على مجموعة التحقق أم لا. سيُضبط على `True` إذا كان `eval_strategy` مختلفًا عن `"no"`. لا يستخدم هذا الحجة مباشرةً بواسطة [Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer)، بل يُقصد استخدامه في سكربتات التدريب/التقييم الخاصة بك.

do_predict (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم تشغيل التنبؤات على مجموعة الاختبار أم لا. لا يستخدم هذا الحجة مباشرةً بواسطة [Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer)، بل يُقصد استخدامه في سكربتات التدريب/التقييم الخاصة بك بدلاً من ذلك.

resume_from_checkpoint (`str`، *اختياري*) : المسار إلى مجلد يحتوي على نقطة تفتيش صالحة لنموذجك. لا يستخدم هذا الحجة مباشرةً بواسطة [Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer)، بل يُقصد استخدامه من قِبل سكربتات التدريب/التقييم الخاصة بك.

فئة التهيئة للتحكم في جميع جوانب تدريب النموذج باستخدام Trainer. توحّد TrainingArguments جميع المعاملات الفائقة وإعدادات التحسين وتفضيلات التسجيل وخيارات البنية التحتية اللازمة للتدريب.

يمكن لـ [HfArgumentParser](/docs/transformers/main/ar/internal/trainer_utils#transformers.HfArgumentParser) تحويل هذه الفئة إلى حُجج [argparse](https://docs.python.org/3/library/argparse#module-argparse) يمكن تحديدها على سطر الأوامر.

#### get_process_log_level[[transformers.TrainingArguments.get_process_log_level]]

```python
get_process_log_level()
```

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

تُعيد مستوى التسجيل (log level) الذي سيتم استخدامه اعتمادًا على ما إذا كانت هذه العملية هي العملية الرئيسية للعقدة 0، أو العملية الرئيسية لعقدة غير صفرية، أو عملية غير رئيسية.

تكون قيمة مستوى التسجيل للعملية الرئيسية افتراضياً هي مستوى التسجيل المُعيَّن (`logging.WARNING` إذا لم تقم بأي شيء) ما لم يتم تجاوزها بواسطة معامل `log_level`.

تكون قيمة مستوى التسجيل الافتراضية لعمليات النسخ `logging.WARNING` ما لم يتم تجاوزها بواسطة الحجة `log_level_replica`.

يتم اتخاذ القرار بين إعدادات العملية الرئيسية وإعدادات عملية النسخ بناءً على القيمة المُعادة من `should_log`.

#### get_warmup_steps[[transformers.TrainingArguments.get_warmup_steps]]

```python
get_warmup_steps(num_training_steps: int)
```

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

الحصول على عدد الخطوات المستخدمة للتسخين الخطي.

#### main_process_first[[transformers.TrainingArguments.main_process_first]]

```python
main_process_first(local = True, desc = 'work')
```

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

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

local (`bool`، *اختياري*، القيمة الافتراضية `True`) : إذا كانت `True` فإن المعنى الأول هو العملية ذات الترتيب 0 في كل عقدة، وإذا كانت `False` فإن المعنى الأول هو العملية ذات الترتيب 0 في العقدة ذات الترتيب 0. في بيئة متعددة العقد مع نظام ملفات مشترك، من المرجح أن ترغب في استخدام `local=False` بحيث تقوم العملية الرئيسية للعقدة الأولى فقط بالمعالجة. أما إذا لم يكن نظام الملفات مشتركاً، فستحتاج العملية الرئيسية لكل عقدة إلى القيام بالمعالجة، وهو السلوك الافتراضي.

desc (`str`، *اختياري*، القيمة الافتراضية `"work"`) : وصف للعمل يُستخدم في سجلات التصحيح

مدير سياق لبيئة torch distributed حيث يحتاج المرء إلى تنفيذ شيء ما على العملية الرئيسية، مع إبقاء النسخ الفرعية في حالة انتظار، ثم تحريرها عند الانتهاء.

من بين هذه الاستخدامات ميزة `map` في `datasets`، والتي يجب تشغيلها مرة واحدة على العملية الرئيسية لتكون فعّالة، حيث تُحفظ نسخة مخبأة من النتائج عند اكتمالها، ثم تُحمَّل تلقائيًا بواسطة النسخ.

#### set_dataloader[[transformers.TrainingArguments.set_dataloader]]

```python
set_dataloader(train_batch_size: int = 8, eval_batch_size: int = 8, drop_last: bool = False, num_workers: int = 0, pin_memory: bool = True, persistent_workers: bool = False, prefetch_factor: int | None = None, multiprocessing_context: str | None = None, in_order: bool = True, auto_find_batch_size: bool = False, ignore_data_skip: bool = False, sampler_seed: int | None = None)
```

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

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

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

num_workers (`int`، *اختياري*، القيمة الافتراضية 0) : عدد العمليات الفرعية المستخدمة لتحميل البيانات (خاصة بـ PyTorch). القيمة 0 تعني أن البيانات ستُحمَّل في العملية الرئيسية.

pin_memory (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كنت ترغب في تثبيت الذاكرة في محمّلات البيانات أم لا. ستكون القيمة الافتراضية `True`.

persistent_workers (`bool`، *اختياري*، القيمة الافتراضية `False`) : إذا كانت القيمة True، فلن يُغلق مُحمِّل البيانات عمليات العامل بعد استهلاك مجموعة البيانات مرة واحدة. وهذا يسمح بإبقاء كائنات Dataset الخاصة بالعاملات نشطة. قد يسرّع التدريب بشكل محتمل، لكنه سيزيد من استخدام ذاكرة RAM. ستكون القيمة الافتراضية `False`.

prefetch_factor (`int`، *اختياري*) : عدد الدفعات التي يحمّلها كل عامل مسبقًا. القيمة 2 تعني أن إجمالي عدد الدفعات المحمّلة مسبقًا عبر جميع العمال سيكون 2 * num_workers.

multiprocessing_context (`str`, *اختياري*) : طريقة بدء المعالجة متعددة العمليات المستخدمة لعمال تحميل البيانات (`"fork"` أو `"spawn"` أو `"forkserver"`). الافتراضي هو طريقة البدء الافتراضية في PyTorch. استخدم `"spawn"` عند البث من مصادر لا تكون كائناتها آمنة للاستنساخ (مثل HDFS عبر `pyarrow`). عند استخدام `"spawn"`، يجب أن يكون أي `collate_fn` مخصص أو كود مجموعة بيانات قابلًا للاستيراد على مستوى الوحدة (بدون دوال lambda أو الإغلاقات).

in_order (`bool`، *اختياري*، القيمة الافتراضية `True`) : إذا كانت `True`، فإن مُحمِّل البيانات يُخرج الدفعات بالترتيب الذي تم فيه إرسال العمال. اضبطها على `False` لإخراج الدفعات فور جاهزيتها، مما قد يقلل من زمن التأخير النهائي لأحمال العمل البثية الخاصة بـ`IterableDataset`. يتطلب PyTorch >= 2.6.

auto_find_batch_size (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم تحديد حجم دفعة يتناسب مع الذاكرة تلقائيًا من خلال التلاشي الأسي، لتجنب أخطاء نفاد ذاكرة CUDA. يتطلب تثبيت accelerate (`pip install accelerate`)

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

sampler_seed (`int`, *اختياري*) : البذرة العشوائية التي سيتم استخدامها مع عينات البيانات. إذا لم يتم ضبطها، فستستخدم مولدات الأرقام العشوائية لعينات البيانات نفس البذرة الخاصة بـ `self.seed`. يمكن استخدام هذا لضمان قابلية إعادة إنتاج عينات البيانات، بشكل مستقل عن بذرة النموذج.

طريقة تجمع جميع الحُجج المرتبطة بإنشاء محمّلي البيانات.

مثال:

```py
>>> from transformers import TrainingArguments

>>> args = TrainingArguments("working_dir")
>>> args = args.set_dataloader(train_batch_size=16, eval_batch_size=64)
>>> args.per_device_train_batch_size
16
```

#### set_evaluate[[transformers.TrainingArguments.set_evaluate]]

```python
set_evaluate(strategy: str | transformers.trainer_utils.IntervalStrategy = 'no', steps: int = 500, batch_size: int = 8, accumulation_steps: int | None = None, delay: float | None = None, loss_only: bool = False)
```

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

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

strategy (`str` أو [IntervalStrategy](/docs/transformers/main/ar/internal/trainer_utils#transformers.IntervalStrategy)، *اختياري*، الافتراضي `"no"`) : استراتيجية التقييم المعتمدة أثناء التدريب. القيم الممكنة هي:  - `"no"`: لا يتم إجراء أي تقييم أثناء التدريب. - `"steps"`: يتم إجراء التقييم (وسجلّه) كل `steps`. - `"epoch"`: يتم إجراء التقييم في نهاية كل حقبة.  تعيين `strategy` مختلف عن `"no"` سيضبط `self.do_eval` على `True`.

steps (`int`، *اختياري*، القيمة الافتراضية 500) : عدد خطوات التحديث بين تقييمين إذا كان `strategy="steps"`.

batch_size (`int` *اختياري*، القيمة الافتراضية 8) : حجم الدفعة لكل جهاز (GPU/TPU core/CPU...) المستخدم للتقييم.

accumulation_steps (`int`، *اختياري*) : عدد خطوات التنبؤ التي يتم خلالها تجميع الموترات الناتجة قبل نقل النتائج إلى وحدة المعالجة المركزية. إذا تُرك غير مضبوط، يتم تجميع التنبؤات كاملة على وحدة معالجة الرسوميات/وحدة معالجة TPU قبل نقلها إلى وحدة المعالجة المركزية (أسرع لكن يتطلب ذاكرة أكبر).

delay (`float`، *اختياري*) : عدد الفترات أو الخطوات التي يجب الانتظار قبل إجراء أول تقييم، وذلك اعتمادًا على eval_strategy.

loss_only (`bool`، *اختياري*، القيمة الافتراضية `False`) : يتجاهل جميع المخرجات باستثناء الخسارة.

طريقة تجمع جميع الحُجج المرتبطة بالتقييم.

مثال:

```py
>>> from transformers import TrainingArguments

>>> args = TrainingArguments("working_dir")
>>> args = args.set_evaluate(strategy="steps", steps=100)
>>> args.eval_steps
100
```

#### set_logging[[transformers.TrainingArguments.set_logging]]

```python
set_logging(strategy: str | transformers.trainer_utils.IntervalStrategy = 'steps', steps: int = 500, report_to: str | list[str] = 'none', level: str = 'passive', first_step: bool = False, nan_inf_filter: bool = False, on_each_node: bool = False, replica_level: str = 'passive')
```

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

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

strategy (`str` أو [IntervalStrategy](/docs/transformers/main/ar/internal/trainer_utils#transformers.IntervalStrategy)، *اختياري*، القيمة الافتراضية هي `"steps"`) : استراتيجية التسجيل المعتمدة أثناء التدريب. القيم الممكنة هي: - `"no"`: لا يتم إجراء أي تسجيل أثناء التدريب. - `"epoch"`: يتم إجراء التسجيل في نهاية كل حقبة. - `"steps"`: يتم إجراء التسجيل كل `logging_steps`.

steps (`int`، *اختياري*، القيمة الافتراضية 500) : عدد خطوات التحديث بين سجلّين إذا كان `strategy="steps"`.

level (`str`، *اختياري*، القيمة الافتراضية `"passive"`) : مستوى تسجيل السجلات (Logger log level) المستخدم في العملية الرئيسية. الخيارات الممكنة هي مستويات التسجيل كنصوص: `"debug"`، `"info"`، `"warning"`، `"error"` و`"critical"`، بالإضافة إلى مستوى `"passive"` الذي لا يضبط أي شيء ويترك للتطبيق ضبط المستوى.

report_to (`str` أو `list[str]`، *اختياري*، القيمة الافتراضية `"none"`) : قائمة التكاملات التي سيتم الإبلاغ عن النتائج والسجلات إليها. المنصات المدعومة هي `"azure_ml"`، `"clearml"`، `"codecarbon"`، `"comet_ml"`، `"dagshub"`، `"dvclive"`، `"flyte"`، `"mlflow"`، `"swanlab"`، `"tensorboard"`، `"trackio"` و`"wandb"`. استخدم `"all"` للإبلاغ إلى جميع التكاملات المثبتة، و`"none"` لعدم استخدام أي تكاملات.

first_step (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم تسجيل وتقييم `global_step` الأولى أم لا.

nan_inf_filter (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم تصفية قيم `nan` و`inf` في الخسائر لأغراض التسجيل. إذا تم ضبطه على `True`، يتم تصفية الخسارة في كل خطوة تكون `nan` أو `inf`، ويُعتمد بدلاً منها متوسط الخسارة في نافذة التسجيل الحالية.    `nan_inf_filter` يؤثر فقط على تسجيل قيم الخسارة، ولا يغيّر طريقة حساب التدرّج أو تطبيقه على النموذج.

on_each_node (`bool`، *اختياري*، القيمة الافتراضية `True`) : في التدريب الموزّع متعدد العقد، ما إذا كان سيتم التسجيل باستخدام `log_level` مرة واحدة لكل عقدة، أم على العقدة الرئيسية فقط.

replica_level (`str`، *اختياري*، القيمة الافتراضية `"passive"`) : مستوى تسجيل السجلات (Logger log level) المستخدم على النسخ. الخيارات المتاحة هي نفسها خيارات `log_level`

طريقة تجمع جميع الحُجج المرتبطة بالتسجيل.

مثال:

```py
>>> from transformers import TrainingArguments

>>> args = TrainingArguments("working_dir")
>>> args = args.set_logging(strategy="steps", steps=100)
>>> args.logging_steps
100
```

#### set_lr_scheduler[[transformers.TrainingArguments.set_lr_scheduler]]

```python
set_lr_scheduler(name: str | transformers.trainer_utils.SchedulerType = 'linear', num_epochs: float = 3.0, max_steps: int = -1, warmup_steps: float = 0)
```

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

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

name (`str` أو [SchedulerType](/docs/transformers/main/ar/main_classes/optimizer_schedules#transformers.SchedulerType)، *اختياري*، الافتراضي `"linear"`) : نوع المجدول (scheduler) الذي سيتم استخدامه. راجع توثيق [SchedulerType](/docs/transformers/main/ar/main_classes/optimizer_schedules#transformers.SchedulerType) لمعرفة جميع القيم الممكنة.

num_epochs(`float`، *اختياري*، القيمة الافتراضية 3.0) : العدد الإجمالي لفترات التدريب (epochs) التي سيتم تنفيذها (إذا لم تكن قيمة صحيحة، سيتم تنفيذ الجزء العشري كنسبة مئوية من الفترة الأخيرة قبل إيقاف التدريب).

max_steps (`int`، *اختياري*، القيمة الافتراضية -1) : إذا تم تعيينه إلى رقم موجب، فهو يمثل العدد الإجمالي لخطوات التدريب التي يجب تنفيذها. يتجاوز `num_train_epochs`. في حالة مجموعة بيانات محدودة، يُعاد التدريب عبر مجموعة البيانات (إذا استُنفد كل البيانات) حتى يتم الوصول إلى `max_steps`. يجب تعيينه إلى قيمة موجبة عندما لا تنفّذ مجموعة بيانات التدريب `__len__` (مثل مجموعة بيانات البث)، لأن العدد الإجمالي للخطوات لا يمكن استنتاجه في هذه الحالة، وهو مطلوب لتحديد حدود حلقة التدريب وإعداد جدولة معدل التعلم.

warmup_steps (`float`، *اختياري*، القيمة الافتراضية 0) : عدد الخطوات المستخدمة للتسخين الخطي من 0 إلى `learning_rate`. يجب أن يكون عددًا صحيحًا أو عددًا عشريًا ضمن المدى `[0,1)`. إذا كان أقل من 1، فسيُفسَّر كنسبة من الخطوات المستخدمة للتسخين الخطي من 0 إلى `learning_rate`.

طريقة تجمع جميع الحُجج المرتبطة بجدول جدولة معدل التعلم ومعاملاته الفائقة.

مثال:

```py
>>> from transformers import TrainingArguments

>>> args = TrainingArguments("working_dir")
>>> args = args.set_lr_scheduler(name="cosine", warmup_steps=0.05)
>>> args.warmup_steps
0.05
```

#### set_optimizer[[transformers.TrainingArguments.set_optimizer]]

```python
set_optimizer(name: str | transformers.training_args.OptimizerNames = 'adamw_torch', learning_rate: float = 5e-05, weight_decay: float = 0, beta1: float = 0.9, beta2: float = 0.999, epsilon: float = 1e-08, args: str | None = None)
```

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

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

name (`str` أو `training_args.OptimizerNames`، *اختياري*، القيمة الافتراضية `"adamw_torch"`) : المُحسِّن (optimizer) الذي سيتم استخدامه: `"adamw_torch"` أو `"adamw_torch_fused"` أو `"adamw_anyprecision"` أو `"adafactor"`.

learning_rate (`float`، *اختياري*، القيمة الافتراضية 5e-5) : معدل التعلم الأولي.

weight_decay (`float`، *اختياري*، القيمة الافتراضية 0) : مقدار تخفيف الوزن (weight decay) الذي يُطبَّق (إذا لم يكن صفراً) على جميع الطبقات باستثناء أوزان جميع عناصر الانحياز (bias) وأوزان طبقات LayerNorm.

beta1 (`float`، *اختياري*، القيمة الافتراضية 0.9) : معامل الضبط beta1 لمُحسِّن adam أو متغيراته.

beta2 (`float`، *اختياري*، القيمة الافتراضية 0.999) : معامل الضبط beta2 لخوارزمية adam أو متغيّراتها.

epsilon (`float`، *اختياري*، القيمة الافتراضية 1e-8) : معامل epsilon للمُحسِّن adam أو متغيراته.

args (`str`، *اختياري*) : حُجُج اختيارية تُمرَّر إلى AnyPrecisionAdamW (لا تُفيد إلا عند `optim="adamw_anyprecision"`).

طريقة تجمع جميع الحُجج المرتبطة بمُحسِّن التدريب (optimizer) ومعاملاته الفائقة.

مثال:

```py
>>> from transformers import TrainingArguments

>>> args = TrainingArguments("working_dir")
>>> args = args.set_optimizer(name="adamw_torch", beta1=0.8)
>>> args.optim
'adamw_torch'
```

#### set_push_to_hub[[transformers.TrainingArguments.set_push_to_hub]]

```python
set_push_to_hub(model_id: str, strategy: str | transformers.trainer_utils.HubStrategy = 'every_save', token: str | None = None, private_repo: bool | None = None, always_push: bool = False, revision: str | None = None)
```

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

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

model_id (`str`) : اسم المستودع الذي يجب إبقاؤه متزامنًا مع *output_dir* المحلي. يمكن أن يكون معرّف نموذج بسيط، وفي هذه الحالة سيتم دفع النموذج إلى نطاقك. وإلا، فيجب أن يكون اسم المستودع الكامل، على سبيل المثال `"user_name/model"`، مما يتيح لك الدفع إلى منظمة أنت عضو فيها باستخدام `"organization_name/model"`.

strategy (`str` أو `HubStrategy`، *اختياري*، القيمة الافتراضية `"every_save"`) : يحدد نطاق ما يتم دفعه إلى Hub ومتى. القيم الممكنة هي:  - `"end"`: دفع النموذج، وتكوينه، وprocessing_class مثل tokenizer (إذا تم تمريره إلى [Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer)) ومسودة بطاقة النموذج عند استدعاء طريقة [save_model()](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer.save_model). - `"every_save"`: دفع النموذج، وتكوينه، وprocessing_class مثل tokenizer (إذا تم تمريره إلى [Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer)) ومسودة بطاقة النموذج في كل مرة يتم فيها حفظ النموذج. تكون عمليات الدفع غير متزامنة حتى لا تعيق التدريب، وفي حال كانت عمليات الحفظ متكررة جداً، لا يُحاول دفع جديد إلا بعد انتهاء الدفع السابق. يتم إجراء دفع أخير بالنموذج النهائي في نهاية التدريب. - `"checkpoint"`: مثل `"every_save"` ولكن يتم أيضاً دفع أحدث نقطة تفتيش في مجلد فرعي باسم last-checkpoint، مما يتيح لك استئناف التدريب بسهولة باستخدام `trainer.train(resume_from_checkpoint="last-checkpoint")`. - `"all_checkpoints"`: مثل `"checkpoint"` ولكن يتم دفع جميع نقاط التفتيش كما تظهر في مجلد الإخراج (لذا ستحصل على مجلد نقطة تفتيش واحد لكل مجلد في مستودعك النهائي)

token (`str`، *اختياري*) : الرمز المميز (token) المستخدم لدفع النموذج إلى Hub. سيُستخدم افتراضيًا الرمز المميز الموجود في مجلد الكاش (cache) الذي تم الحصول عليه عبر `hf auth login`.

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

always_push (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما لم تكن هذه القيمة `True`، سيتخطى `Trainer` دفع نقطة التفتيش إذا لم تكتمل عملية الدفع السابقة.

revision (`str`، *اختياري*) : المراجعة (revision) المستخدمة عند الدفع إلى Hub. يمكن أن يكون اسم فرع، أو وسم، أو تجزئة (hash) لالتزام.

طريقة تجمع جميع الحُجج المرتبطة بمزامنة نقاط التفتيش مع Hub.

عند استدعاء هذه الطريقة، يتم تعيين `self.push_to_hub` إلى `True`، مما يعني أن `output_dir` سيبدأ بمجلد git متزامن مع المستودع (المحدد بواسطة `model_id`)، وسيتم دفع المحتوى في كل مرة يتم فيها تشغيل حفظ (بناءً على `self.save_strategy`). كما أن استدعاء [save_model()](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer.save_model) سيؤدي أيضاً إلى تشغيل عملية الدفع.

مثال:

```py
>>> from transformers import TrainingArguments

>>> args = TrainingArguments("working_dir")
>>> args = args.set_push_to_hub("me/awesome-model")
>>> args.hub_model_id
'me/awesome-model'
```

#### set_save[[transformers.TrainingArguments.set_save]]

```python
set_save(strategy: str | transformers.trainer_utils.IntervalStrategy = 'steps', steps: int = 500, total_limit: int | None = None, on_each_node: bool = False)
```

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

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

strategy (`str` أو [IntervalStrategy](/docs/transformers/main/ar/internal/trainer_utils#transformers.IntervalStrategy)، *اختياري*، الافتراضي `"steps"`) : استراتيجية حفظ نقاط التفتيش المعتمدة أثناء التدريب. القيم الممكنة هي: - `"no"`: لا يتم أي حفظ أثناء التدريب. - `"epoch"`: يتم الحفظ في نهاية كل حقبة. - `"steps"`: يتم الحفظ كل `save_steps`.

steps (`int`، *اختياري*، القيمة الافتراضية 500) : عدد خطوات التحديث قبل حفظ نقطتي تفتيش إذا كان `strategy="steps"`.

total_limit (`int`، *اختياري*) : إذا تم تمرير قيمة، فسيتم تحديد إجمالي عدد نقاط التفتيش. يحذف نقاط التفتيش الأقدم في `output_dir`.

on_each_node (`bool`، *اختياري*، القيمة الافتراضية `False`) : عند تنفيذ التدريب الموزّع متعدد العقد، هل يتم حفظ النماذج والنقاط التفتيشية على كل عقدة، أم على العقدة الرئيسية فقط. يجب عدم تفعيل هذا الخيار عندما تستخدم العقد المختلفة نفس التخزين، لأن الملفات ستُحفظ بأسماء متطابقة على كل عقدة.

طريقة تجمع جميع الحُجج المرتبطة بحفظ نقاط التفتيش.

مثال:

```py
>>> from transformers import TrainingArguments

>>> args = TrainingArguments("working_dir")
>>> args = args.set_save(strategy="steps", steps=100)
>>> args.save_steps
100
```

#### set_testing[[transformers.TrainingArguments.set_testing]]

```python
set_testing(batch_size: int = 8, loss_only: bool = False)
```

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

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

batch_size (`int` *اختياري*، القيمة الافتراضية 8) : حجم الدفعة لكل جهاز (GPU/TPU core/CPU...) المستخدم للاختبار.

loss_only (`bool`، *اختياري*، القيمة الافتراضية `False`) : يتجاهل جميع المخرجات باستثناء الخسارة.

طريقة تجمع جميع الحجج الأساسية المرتبطة باختبار على مجموعة بيانات محجوزة.

ستؤدي استدعاء هذه الطريقة إلى تعيين `self.do_predict` تلقائيًا إلى `True`.

مثال:

```py
>>> from transformers import TrainingArguments

>>> args = TrainingArguments("working_dir")
>>> args = args.set_testing(batch_size=32)
>>> args.per_device_eval_batch_size
32
```

#### set_training[[transformers.TrainingArguments.set_training]]

```python
set_training(learning_rate: float = 5e-05, batch_size: int = 8, weight_decay: float = 0, num_epochs: float = 3, max_steps: int = -1, gradient_accumulation_steps: int = 1, seed: int = 42, activation_checkpointing: bool = False, gradient_checkpointing: bool | None = None)
```

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

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

learning_rate (`float`، *اختياري*، القيمة الافتراضية 5e-5) : معدل التعلم الأولي للمُحسِّن.

batch_size (`int` *اختياري*، القيمة الافتراضية 8) : حجم الدفعة لكل جهاز (GPU/TPU core/CPU...) المستخدم للتدريب.

weight_decay (`float`، *اختياري*، القيمة الافتراضية 0) : مقدار التلاشي الوزني (weight decay) الذي يُطبَّق (إذا لم يكن صفراً) على جميع الطبقات باستثناء أوزان الانحياز (bias) وLayerNorm في المُحسِّن (optimizer).

num_epochs (`float`، *اختياري*، القيمة الافتراضية 3.0) : إجمالي عدد فترات التدريب (epochs) التي سيتم تنفيذها (إذا لم تكن قيمة صحيحة، فسيتم تنفيذ الجزء العشري كنسبة مئوية من الفترة الأخيرة قبل إيقاف التدريب).

max_steps (`int`، *اختياري*، القيمة الافتراضية -1) : إذا تم تعيينه إلى رقم موجب، فهو يمثل العدد الإجمالي لخطوات التدريب التي يجب تنفيذها. يتجاوز `num_train_epochs`. في حالة مجموعة بيانات محدودة، يُعاد التدريب عبر مجموعة البيانات (إذا استُنفد كل البيانات) حتى يتم الوصول إلى `max_steps`. يجب تعيينه إلى قيمة موجبة عندما لا تنفّذ مجموعة بيانات التدريب `__len__` (مثل مجموعة بيانات البث)، لأن العدد الإجمالي للخطوات لا يمكن استنتاجه في هذه الحالة، وهو مطلوب لتحديد حدود حلقة التدريب وإعداد جدولة معدل التعلم.

gradient_accumulation_steps (`int`، *اختياري*، القيمة الافتراضية 1) : عدد خطوات التحديث التي يتم فيها تجميع التدرجات قبل تنفيذ مسار الرجوع/التحديث. عند استخدام تجميع التدرجات، تُحسب خطوة واحدة على أنها خطوة واحدة تتضمن مسار رجوع. لذلك، ستتم عمليات التسجيل والتقييم والحفظ كل `gradient_accumulation_steps * xxx_step` من أمثلة التدريب.

seed (`int`، *اختياري*، القيمة الافتراضية 42) : البذرة العشوائية التي سيتم ضبطها في بداية التدريب. لضمان قابلية إعادة الإنتاج عبر التشغيلات، استخدم دالة `~Trainer.model_init` لإنشاء النموذج إذا كانت بعض معاميره مهيأة عشوائيًا.

activation_checkpointing (`bool`، *اختياري*، القيمة الافتراضية `False`) : إذا كانت القيمة True، فسيتم استخدام فحص التنشيط (activation checkpointing) لتوفير الذاكرة على حساب إبطاء مسار الرجوع (backward pass).

gradient_checkpointing (`bool`، *اختياري*) : مستعار غير مستخدم لـ `activation_checkpointing`، وسيتم إزالته في الإصدار v6.

طريقة تجمع جميع الحجج الأساسية المرتبطة بالتدريب.

ستؤدي استدعاء هذه الطريقة إلى تعيين `self.do_train` تلقائيًا إلى `True`.

مثال:

```py
>>> from transformers import TrainingArguments

>>> args = TrainingArguments("working_dir")
>>> args = args.set_training(learning_rate=1e-4, batch_size=32)
>>> args.learning_rate
1e-4
```

#### to_dict[[transformers.TrainingArguments.to_dict]]

```python
to_dict()
```

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

يسلسل هذه النسخة مع استبدال `Enum` بقيمها (لدعم التسلسل بصيغة JSON). كما يُعمّي على قيم الرموز عن طريق إزالة قيمها.

#### to_json_string[[transformers.TrainingArguments.to_json_string]]

```python
to_json_string()
```

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

يسلسل هذه النسخة إلى نص JSON.

#### to_sanitized_dict[[transformers.TrainingArguments.to_sanitized_dict]]

```python
to_sanitized_dict()
```

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

التسلسل المعقّم للاستخدام مع hparams في TensorBoard

## Seq2SeqTrainingArguments[[transformers.Seq2SeqTrainingArguments]]

#### transformers.Seq2SeqTrainingArguments[[transformers.Seq2SeqTrainingArguments]]

```python
transformers.Seq2SeqTrainingArguments(output_dir: str | None = None, per_device_train_batch_size: int = 8, num_train_epochs: float = 3.0, max_steps: int = -1, learning_rate: float = 5e-05, lr_scheduler_type: transformers.trainer_utils.SchedulerType | str = 'linear', lr_scheduler_kwargs: dict | str | None = None, warmup_steps: float = 0, optim: transformers.training_args.OptimizerNames | str = 'adamw_torch_fused', optim_args: str | None = None, weight_decay: float = 0.0, adam_beta1: float = 0.9, adam_beta2: float = 0.999, adam_epsilon: float = 1e-08, optim_target_modules: None | str | list[str] = None, gradient_accumulation_steps: int = 1, average_tokens_across_devices: bool = True, max_grad_norm: float = 1.0, label_smoothing_factor: float = 0.0, bf16: bool = False, fp16: bool = False, bf16_full_eval: bool = False, fp16_full_eval: bool = False, tf32: bool | None = None, activation_checkpointing: bool | None = None, activation_checkpointing_kwargs: dict[str, typing.Any] | str | None = None, gradient_checkpointing: bool | None = None, gradient_checkpointing_kwargs: dict[str, typing.Any] | str | None = None, torch_compile: bool = False, torch_compile_backend: str | None = None, torch_compile_mode: str | None = None, use_liger_kernel: bool = False, liger_kernel_config: dict[str, bool] | None = None, use_cache: bool = False, neftune_noise_alpha: float | None = None, torch_empty_cache_steps: int | None = None, auto_find_batch_size: bool = False, logging_strategy: transformers.trainer_utils.IntervalStrategy | str = 'steps', logging_steps: float = 500, logging_first_step: bool = False, log_on_each_node: bool = True, logging_nan_inf_filter: bool = True, include_num_input_tokens_seen: str | bool = 'no', log_level: str = 'passive', log_level_replica: str = 'warning', disable_tqdm: bool | None = None, report_to: None | str | list[str] = 'none', run_name: str | None = None, project: str = 'huggingface', trackio_space_id: str | None = None, trackio_bucket_id: str | None = None, trackio_static_space_id: typing.Union[str, NoneType, typing.Literal[False]] = None, eval_strategy: transformers.trainer_utils.IntervalStrategy | str = 'no', eval_steps: float | None = None, eval_delay: float = 0, per_device_eval_batch_size: int = 8, prediction_loss_only: bool = False, eval_on_start: bool = False, eval_do_concat_batches: bool = True, eval_use_gather_object: bool = False, eval_accumulation_steps: int | None = None, include_for_metrics: list = <factory>, batch_eval_metrics: bool = False, save_only_model: bool = False, save_strategy: transformers.trainer_utils.SaveStrategy | str = 'steps', save_steps: float = 500, save_on_each_node: bool = False, save_total_limit: int | None = None, enable_jit_checkpoint: bool = False, push_to_hub: bool = False, hub_token: str | None = None, hub_private_repo: bool | None = None, hub_model_id: str | None = None, hub_strategy: transformers.trainer_utils.HubStrategy | str = 'every_save', hub_always_push: bool = False, hub_revision: str | None = None, load_best_model_at_end: bool = False, metric_for_best_model: str | None = None, greater_is_better: bool | None = None, ignore_data_skip: bool = False, restore_callback_states_from_checkpoint: bool = False, full_determinism: bool = False, seed: int = 42, data_seed: int | None = None, use_cpu: bool = False, accelerator_config: dict | str | None = None, parallelism_config: typing.Any | None = None, dataloader_drop_last: bool = False, dataloader_num_workers: int = 0, dataloader_pin_memory: bool = True, dataloader_persistent_workers: bool = False, dataloader_prefetch_factor: int | None = None, dataloader_multiprocessing_context: str | None = None, dataloader_in_order: bool = True, remove_unused_columns: bool = True, label_names: list[str] | None = None, train_sampling_strategy: str = 'random', length_column_name: str = 'length', ddp_find_unused_parameters: bool | None = None, ddp_bucket_cap_mb: int | None = None, ddp_broadcast_buffers: bool | None = None, ddp_static_graph: bool | None = None, ddp_backend: str | None = None, ddp_timeout: int = 1800, fsdp: str | None = None, fsdp_config: dict[str, typing.Any] | str | None = None, deepspeed: dict | str | None = None, debug: str | list[transformers.debug_utils.DebugOption] = '', skip_memory_metrics: bool = True, do_train: bool = False, do_eval: bool = False, do_predict: bool = False, resume_from_checkpoint: str | None = None, local_rank: int = -1, sortish_sampler: bool = False, predict_with_generate: bool = False, generation_max_length: int | None = None, generation_num_beams: int | None = None, generation_config: str | pathlib.Path | transformers.generation.configuration_utils.GenerationConfig | None = None)
```

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

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

output_dir (`str`، *اختياري*، القيمة الافتراضية `"trainer_output"`) : المجلد الذي تُكتب فيه تنبؤات النموذج ونقاط التفتيش.

**مدة التدريب وحجم الدفعة:**

per_device_train_batch_size (`int`، *اختياري*، القيمة الافتراضية 8) : حجم الدفعة *لكل جهاز*. يُحسب **حجم الدفعة الكلي** على النحو التالي: `per_device_train_batch_size * number_of_devices` في الإعدادات متعددة وحدات معالجة الرسومات أو الموزعة.

num_train_epochs(`float`، *اختياري*، القيمة الافتراضية 3.0) : العدد الإجمالي لفترات التدريب (epochs) التي سيتم تنفيذها (إذا لم تكن قيمة صحيحة، فسيتم تنفيذ الجزء العشري كنسبة مئوية من الفترة الأخيرة قبل إيقاف التدريب).

max_steps (`int`، *اختياري*، القيمة الافتراضية -1) : يتجاوز `num_train_epochs`. إذا تم ضبطه على رقم موجب، فهو يمثل العدد الإجمالي لخطوات التدريب التي يجب تنفيذها. في حالة مجموعة بيانات محدودة، يُعاد التدريب عبر مجموعة البيانات (إذا استُنفد كل البيانات) حتى يتم الوصول إلى `max_steps`. يجب ضبطه على قيمة موجبة عندما لا تنفّذ مجموعة بيانات التدريب `__len__` (مثل مجموعة بيانات البث)، حيث لا يمكن في هذه الحالة استنتاج العدد الإجمالي للخطوات، وهو مطلوب لتحديد حدود حلقة التدريب وإعداد مجدول معدل التعلم.

**معدل التعلم ومجدوله:**

learning_rate (`float`، *اختياري*، القيمة الافتراضية 5e-5) : معدل التعلم الأولي لمُحسِّن الخوارزمية. عادةً ما يكون هذا هو معدل التعلم الأقصى عند استخدام مُجدوِل مع فترة إحماء.

lr_scheduler_type (`str` or [SchedulerType](/docs/transformers/main/ar/main_classes/optimizer_schedules#transformers.SchedulerType), *optional*, defaults to `"linear"`) : The learning rate scheduler type to use. See [SchedulerType](/docs/transformers/main/ar/main_classes/optimizer_schedules#transformers.SchedulerType) for all possible values. Common choices: - "linear" = [get_linear_schedule_with_warmup()](/docs/transformers/main/ar/main_classes/optimizer_schedules#transformers.get_linear_schedule_with_warmup) - "cosine" = [get_cosine_schedule_with_warmup()](/docs/transformers/main/ar/main_classes/optimizer_schedules#transformers.get_cosine_schedule_with_warmup) - "constant" =  [get_constant_schedule()](/docs/transformers/main/ar/main_classes/optimizer_schedules#transformers.get_constant_schedule) - "constant_with_warmup" = [get_constant_schedule_with_warmup()](/docs/transformers/main/ar/main_classes/optimizer_schedules#transformers.get_constant_schedule_with_warmup)

lr_scheduler_kwargs (`dict` أو `str`، *اختياري*، القيمة الافتراضية `None`) : الحُجج الإضافية الخاصة بـ lr_scheduler. راجع توثيق كل مُجدول لمعرفة القيم الممكنة.

warmup_steps (`int` أو `float`، *اختياري*، القيمة الافتراضية 0) : عدد الخطوات لدفء خطي من 0 إلى `learning_rate`. يساعد الدفء في استقرار التدريب في المرحلة الأولية. يمكن أن يكون: - عددًا صحيحًا: عدد خطوات الدفء الدقيق - عددًا عشريًا في المدى [0, 1): يُفسَّر كنسبة من إجمالي خطوات التدريب

**المُحسِّن:**

optim (`str` أو `training_args.OptimizerNames`، *اختياري*، القيمة الافتراضية هي `"adamw_torch"` (لـ torch>=2.8 تكون `"adamw_torch_fused"`)) : المُحسِّن (optimizer) الذي سيتم استخدامه. الخيارات الشائعة: - `"adamw_torch"`: AdamW الخاص بـ PyTorch (الافتراضي الموصى به) - `"adamw_torch_fused"`: نواة AdamW المدمجة (Fused) - `"adamw_hf"`: تنفيذ HuggingFace لخوارزمية AdamW - `"sgd"`: التدرج العشوائي (Stochastic Gradient Descent) مع الزخم (momentum) - `"adafactor"`: مُحسِّن موفّر للذاكرة مناسب للنماذج الكبيرة - `"adamw_8bit"`: AdamW بدقة 8 بت (يتطلب مكتبة bitsandbytes) راجع `OptimizerNames` للحصول على القائمة الكاملة.

optim_args (`str`، *اختياري*) : حُجج اختيارية تُمرَّر إلى المُحسِّنات مثل AnyPrecisionAdamW وAdEMAMix وGaLore.

weight_decay (`float`، *اختياري*، القيمة الافتراضية 0) : معامل تخفيف الوزن (Weight decay) الذي يطبّقه المُحسِّن (وليس دالة الخسارة). يضيف تنظيم L2 لمنع الإفراط في التخصيص (overfitting) عن طريق معاقبة الأوزان الكبيرة. يُستثنى تلقائيًا من معاملات الانحياز (bias) ومعاملات LayerNorm. القيم النموذجية: 0.01 (قياسي)، 0.1 (تنظيم أقوى)، 0.0 (بدون تنظيم).

adam_beta1 (`float`، *اختياري*، القيمة الافتراضية 0.9) : معدل الاضمحلال الأسي لتقديرات اللحظة الأولى (الزخم) في المُحسِّنات القائمة على Adam. يتحكم في مقدار تاريخ التدرجات الذي يجب الاحتفاظ به.

adam_beta2 (`float`، *اختياري*، القيمة الافتراضية 0.999) : معدل الاضمحلال الأسي لتقديرات اللحظة الثانية (التباين) في المُحسِّنات القائمة على Adam. يتحكم في تحجيم معدل التعلم التكيفي.

adam_epsilon (`float`، *اختياري*، القيمة الافتراضية 1e-8) : قيمة إيبسلون للاستقرار العددي في المُحسِّنات القائمة على Adam. تمنع القسمة على صفر في مقام قاعدة التحديث.

optim_target_modules (`Union[str, list[str]]`، *اختياري*) : الوحدات المستهدفة للتحسين، أي أسماء الوحدات التي ترغب في تدريبها. يُستخدم حاليًا لخوارزمية [GaLore](https://huggingface.co/papers/2403.03507) وخوارزمية [APOLLO](https://huggingface.co/papers/2412.05270). راجع [تنفيذ GaLore](https://github.com/jiaweizzhao/GaLore) و[تنفيذ APOLLO](https://github.com/zhuhanqing/APOLLO) لمزيد من التفاصيل. يجب التأكد من تمرير مُحسِّن GaLore أو APOLLO صالح، مثل أحد ما يلي: "apollo_adamw"، "galore_adamw"، "galore_adamw_8bit"، "galore_adafactor"، والتأكد من أن الوحدات المستهدفة هي وحدات `nn.Linear` فقط.

**التنظيم واستقرار التدريب:**

gradient_accumulation_steps (`int`، *اختياري*، القيمة الافتراضية 1) : عدد خطوات التحديث لتجميع التدرجات قبل تنفيذ مسار الرجوع/التحديث. يحاكي أحجام دفعات أكبر دون استهلاك ذاكرة إضافي. حجم الدفعة الفعّال = `per_device_train_batch_size × num_devices × gradient_accumulation_steps`. > [!TIP] > عند استخدام تجميع التدرجات، يُحتسب "خطوة" واحدة على أنها خطوة واحدة تتضمن مسار رجوع. لذلك، ستتم عمليات التسجيل والتقييم والحفظ كل `gradient_accumulation_steps × xxx_step` من أمثلة التدريب.

average_tokens_across_devices (`bool`، *اختياري*، القيمة الافتراضية `True`) : تحديد ما إذا كان سيتم متوسط الرموز عبر الأجهزة أم لا. عند التفعيل، سيستخدم all_reduce لمزامنة num_tokens_in_batch لحساب الدقة بدقة. المرجع: https://github.com/huggingface/transformers/issues/34242

max_grad_norm (`float`، *اختياري*، القيمة الافتراضية 1.0) : الحد الأقصى لطول التدرّج (Norm) لقصّ التدرّجات. يُطبَّق بعد مسار الرجوع وقبل خطوة المُحسِّن. يمنع انفجار التدرّجات عن طريق تصغير التدرّجات عندما يتجاوز طولها الكلي هذا العتبة. اضبطه على 0 لتعطيل القصّ. القيم النموذجية: 1.0 (قياسي)، 0.5 (أكثر تحفظاً)، 5.0 (أقل عدوانية).

label_smoothing_factor (`float`، *اختياري*، القيمة الافتراضية 0.0) : معامل تنعيم التسميات لمنع الثقة المفرطة. يستبدل الأهداف الصلبة 0/1 بأهداف ناعمة: يصبح 0 هو `ε/num_labels` ويصبح 1 هو `1 - ε + ε/num_labels`، حيث ε = `label_smoothing_factor`. القيمة صفر تعني عدم وجود تنعيم. النطاق النموذجي: من 0.0 إلى 0.1.

**التدريب بدقة مختلطة:**

bf16 (`bool`، *اختياري*، القيمة الافتراضية `False`) : تفعيل التدريب بدقة مختلطة bfloat16 (BF16). يُفضَّل عمومًا على FP16 نظرًا لاستقراره العددي الأفضل وعدم الحاجة إلى تحجيم الفقد.

fp16 (`bool`، *اختياري*، القيمة الافتراضية `False`) : تفعيل التدريب بدقة مختلطة float16 (FP16). يُنصح باستخدام BF16 بدلاً من ذلك إذا كان جهازك يدعمه.

bf16_full_eval (`bool`، *اختياري*، القيمة الافتراضية `False`) : استخدام دقة BF16 الكاملة للتقييم (وليس مجرد دقة مختلطة). أسرع ويوفر الذاكرة، لكنه قد يؤثر قليلاً على قيم المقاييس. ينطبق فقط أثناء التقييم.

fp16_full_eval (`bool`، *اختياري*، القيمة الافتراضية `False`) : استخدام دقة FP16 الكاملة للتقييم (وليس مجرد دقة مختلطة). أسرع ويوفر الذاكرة، لكنه قد يؤثر قليلاً على قيم المقاييس. ينطبق فقط أثناء التقييم.

tf32 (`bool`, *اختياري*) : تفعيل وضع TensorFloat-32 (TF32) على معالجات Ampere وأحدث. يستخدم TF32 دقة بمقدار 19 بت لعمليات ضرب المصفوفات (بدلاً من 23 بت في FP32)، مما يوفر تسريعًا يصل إلى 8 أضعاف مع فقدان دقة ضئيل. تعتمد القيمة الافتراضية على إصدار PyTorch. راجع [وثائق TF32](https://huggingface.co/docs/transformers/perf_train_gpu_one#tf32).

**نقطة التفعيل:**

activation_checkpointing (`bool`، *اختياري*، القيمة الافتراضية `False`) : تفعيل نقطة التفتيش للتفعيل (activation checkpointing) لتبادل الحساب مقابل الذاكرة. يقلل من استهلاك الذاكرة عن طريق مسح التفعيلات أثناء المرور الأمامي وإعادة حسابها أثناء المرور الخلفي. يتيح تدريب نماذج أكبر أو أحجام دفعات أكبر مقابل تكلفة تدريب أبطأ بنسبة ~20%.

activation_checkpointing_kwargs (`dict`، *اختياري*، القيمة الافتراضية `None`) : حُجج الكلمات المفتاحية التي تُمرَّر إلى `activation_checkpointing_enable()`. يُنشئ `every_n_layers` نقاط تفتيش فقط لكل طبقة مُفكِّك n بدلاً من جميع الطبقات؛ حيث يمثل `1` السلوك المعتاد الشامل أو المنعدم، وتوفر القيم الأكبر بعض الذاكرة مقابل السرعة. يحتفظ `offload` بالتفعيلات المحفوظة في ذاكرة مضيف مثبّتة، مما يُحرر `layers x sequence x hidden` بايت من ذاكرة الجهاز ويجعل الخطوة أبطأ. تُمرَّر أي مفاتيح أخرى إلى `torch.utils.checkpoint.checkpoint`.

gradient_checkpointing (`bool`، *اختياري*) : مستعار غير مستخدم لـ `activation_checkpointing`، وسيتم إزالته في الإصدار v6.

gradient_checkpointing_kwargs (`dict`, *اختياري*) : اسم مستعار غير مستحسن لـ `activation_checkpointing_kwargs`، وسيتم إزالته في الإصدار v6.

**التجميع:**

torch_compile (`bool`، *اختياري*، القيمة الافتراضية `False`) : تجميع النموذج باستخدام `torch.compile()` في PyTorch 2.0 لتسريع التدريب. يمكن أن يوفر تسريعًا بنسبة 20-50% دون أي تغييرات في الكود. يستخدم إعدادات التجميع الافتراضية ما لم يتم تحديد `torch_compile_backend` أو `torch_compile_mode`.

torch_compile_backend (`str`، *اختياري*) : الخلفية (Backend) الخاصة بـ `torch.compile()`. إذا تم ضبطه، يتم تفعيل `torch_compile` تلقائيًا. تشمل الخيارات `"inductor"` (الافتراضي)، `"aot_eager"`، `"cudagraphs"`. تختلف الخلفيات حسب إصدار PyTorch - راجع توثيق PyTorch لمعرفة الخيارات المتاحة.

torch_compile_mode (`str`، *اختياري*) : وضع التجميع لـ `torch.compile()`. إذا تم ضبطه، يتم تفعيل `torch_compile` تلقائيًا. الخيارات: `"default"`، `"reduce-overhead"` (لتقليل الحمل الإضافي على Python)، `"max-autotune"` (تحسين عدواني، مع وقت تجميع أطول).

**النوى:**

use_liger_kernel (`bool`، *اختياري*، القيمة الافتراضية `False`) : تفعيل تحسينات [Liger Kernel](https://github.com/linkedin/Liger-Kernel). يزيد من الإنتاجية عبر وحدات معالجة الرسومات المتعددة بنسبة ~20% ويقلل من استهلاك الذاكرة بنسبة ~60%. يعمل مع Flash Attention وFSDP وDeepSpeed. يدعم حاليًا نماذج Llama وMistral وMixtral وGemma.

liger_kernel_config (`Optional[dict]`، *اختياري*) : إعدادات Liger Kernel. تُمرَّر كـ kwargs إلى `_apply_liger_kernel_to_instance()`. تشمل الخيارات عادةً: `"rope"`، `"swiglu"`، `"cross_entropy"`، `"fused_linear_cross_entropy"`، `"rms_norm"`. إذا كانت `None`، يتم استخدام الإعدادات الافتراضية.

**تحسينات إضافية:**

use_cache (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم تفعيل ذاكرة التخزين المؤقت للنموذج أم لا. في حالة التدريب، عادةً ما لا تكون هذه الميزة ضرورية باستثناء بعض طرق PEFT التي تستخدم `past_key_values`.

neftune_noise_alpha (`Optional[float]`) : إذا لم تكن `None`، فسيتم تفعيل تضمينات ضوضاء NEFTune. يمكن أن يحسّن هذا أداء النموذج بشكل كبير عند ضبط التعليمات. اطّلع على [الورقة الأصلية](https://huggingface.co/papers/2310.05914) و[الكود الأصلي](https://github.com/neelsjain/NEFTune). يدعم `PreTrainedModel` في transformers وكذلك `PeftModel` من peft. استخدمت الورقة الأصلية قيمًا في النطاق [5.0, 15.0].

torch_empty_cache_steps (`int`, *اختياري*) : عدد الخطوات التي يجب انتظارها قبل استدعاء `torch.<device>.empty_cache()`. إذا تُرك غير مضبوط أو تم ضبطه على None، فلن يتم تفريغ ذاكرة التخزين المؤقت. يمكن أن يساعد ذلك في تجنب أخطاء نفاد ذاكرة CUDA عن طريق خفض ذروة استخدام ذاكرة VRAM، مقابل تكلفة تقارب [10% من الأداء الأبطأ](https://github.com/huggingface/transformers/issues/31372).

auto_find_batch_size (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم تحديد حجم دفعة تدريب يتناسب مع الذاكرة تلقائيًا من خلال التلاشي الأسي، لتجنب أخطاء نفاد ذاكرة CUDA. لا يتم تعديل حجم دفعة التقييم.

**تسجيل التدريب ومراقبته:**

logging_strategy (`str` أو [IntervalStrategy](/docs/transformers/main/ar/internal/trainer_utils#transformers.IntervalStrategy)، *اختياري*، القيمة الافتراضية هي `"steps"`) : استراتيجية التسجيل المعتمدة أثناء التدريب. القيم الممكنة هي: - `"no"`: لا يتم إجراء أي تسجيل أثناء التدريب. - `"epoch"`: يتم إجراء التسجيل في نهاية كل حقبة. - `"steps"`: يتم إجراء التسجيل كل `logging_steps`.

logging_steps (`int` أو `float`، *اختياري*، القيمة الافتراضية 500) : عدد خطوات التحديث بين سجلّين إذا كان `logging_strategy="steps"`. يجب أن يكون عددًا صحيحًا أو عددًا عشريًا ضمن المدى `[0,1)`. إذا كان أقل من 1، فسيُفسَّر كنسبة من إجمالي خطوات التدريب.

logging_first_step (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم تسجيل أول `global_step` أم لا.

log_on_each_node (`bool`، *اختياري*، القيمة الافتراضية `True`) : في التدريب الموزّع متعدد العقد، ما إذا كان سيتم التسجيل باستخدام `log_level` مرة واحدة لكل عقدة، أم على العقدة الرئيسية فقط.

logging_nan_inf_filter (`bool`، *اختياري*، القيمة الافتراضية `True`) : يُستبعد فقدان NaN و Inf عند التسجيل. إذا كانت `True`، يتم استبدال قيم فقدان التدريب التي تكون NaN/Inf بمتوسط قيم الفقدان الصالحة الأخيرة، ويُستبعد الدُفعات التي تحتوي على NaN/Inf (مثل الدُفعات التي لا تحتوي على رموز تسميات) من حساب فقدان التقييم. لا يؤثر هذا على حساب التدرجات، بل على التسجيل فقط.

include_num_input_tokens_seen (`Optional[Union[str, bool]]`، *اختياري*، القيمة الافتراضية هي "no") : ما إذا كان سيتم تتبع عدد رموز الإدخال التي تم رؤيتها. يجب أن تكون واحدة من ["all", "non_padding", "no"] أو قيمة منطقية تُخضع إلى "all" أو "no". قد يكون أبطأ في التدريب الموزّع نظرًا لضرورة استدعاء عمليات الجمع.

**التسجيل:**

log_level (`str`، *اختياري*، القيمة الافتراضية `passive`) : مستوى التسجيل للعملية الرئيسية. الخيارات: `"debug"`، `"info"`، `"warning"`، `"error"`، `"critical"`، أو `"passive"` (لا يغيّر مستوى تسجيل Transformers الحالي، والذي تكون قيمته الافتراضية `"warning"`)

log_level_replica (`str`، *اختياري*، القيمة الافتراضية `"warning"`) : مستوى التسجيل لعمليات النسخ في التدريب الموزّع. نفس الخيارات المتاحة في `log_level`.

disable_tqdm (`bool`، *اختياري*) : تعطيل أشرطة تقدّم tqdm. القيمة الافتراضية هي `True` إذا كانت `log_level` تحذيرًا أو أقل، وإلا فهي `False`.

**تكامل تتبع التجارب:**

report_to (`str` أو `list[str]`، *اختياري*، القيمة الافتراضية `"none"`) : قائمة التكاملات التي سيتم الإبلاغ عن النتائج والسجلات إليها. المنصات المدعومة هي `"azure_ml"`، `"clearml"`، `"codecarbon"`، `"comet_ml"`، `"dagshub"`، `"dvclive"`، `"flyte"`، `"mlflow"`، `"swanlab"`، `"tensorboard"`، `"trackio"` و`"wandb"`. استخدم `"all"` للإبلاغ إلى جميع التكاملات المثبتة، و`"none"` لعدم استخدام أي تكاملات.

run_name (`str`، *اختياري*) : وصفٌ للتشغيل. يُستخدم عادةً لتسجيل [trackio](https://github.com/gradio-app/trackio)، [wandb](https://www.wandb.com/)، [mlflow](https://www.mlflow.org/)، [comet](https://www.comet.com/site) و[swanlab](https://swanlab.cn).

project (`str`، *اختياري*، القيمة الافتراضية `"huggingface"`) : اسم المشروع المستخدم للتسجيل. حاليًا، يُستخدم فقط بواسطة Trackio.

trackio_space_id (`str` أو `None`، *اختياري*، القيمة الافتراضية `None`) : معرّف مساحة Hugging Face التي سيتم استخدامها للتسجيل المباشر في Trackio عبر مساحة مبنية على Gradio. يجب أن يكون اسمًا كاملًا للمساحة مثل `'username/reponame'` أو `'orgname/reponame'`، أو مجرد `'reponame'` (تُنشأ المساحة في نطاق المستخدم المسجّل حاليًا). إذا كانت `None`، تُسجَّل المقاييس في **مجلد محلي** فقط (بدون مساحة على Hub). تتمتع مساحة Gradio تلك بصلاحية **القراءة والكتابة** إلى **Bucket** الخاص بـ Trackio، وهو ما تريده أثناء **استمرار التدريب**—على سبيل المثال عند **استئناف** تشغيل جزئي أو **تجميع السجلات** من عدة أجهزة. ستكون المساحة **عامة** ما لم تضبط `hub_private_repo=True` أو كان الافتراضي في مؤسستك هو إنشاء مساحات خاصة.

trackio_bucket_id (`str` أو `None`، *اختياري*، القيمة الافتراضية `None`) : معرّف Bucket اختياري على Hugging Face لـ Trackio. إذا لم يتم ضبطه، فسيقوم Trackio باستنتاجه. يُستخدم مع مساحة Gradio (`trackio_space_id`) وعند نشر مساحة ثابتة (عندما لا تكون `trackio_static_space_id` قيمة `False`).

trackio_static_space_id (`str` أو `False` أو `None`، *اختياري*، القيمة الافتراضية هي `None`) : معرّف مساحة Hugging Face التي سيتم استخدامها للمساحة الثابتة التي تُنشأ بعد اكتمال التدريب. يجب أن يكون اسمًا كاملًا للمساحة مثل `'username/reponame'` أو `'orgname/reponame'`، أو مجرد `'reponame'` (تُنشأ المساحة في مساحة اسم المستخدم المسجّل حاليًا). إذا كانت القيمة False، فلن يتم إنشاء مساحة ثابتة. إذا كانت القيمة None، وتم دفع النموذج إلى Hub، فسيتم إنشاء مساحة ثابتة باسم افتراضي وسيتم ربطها من بطاقة النموذج. ستكون المساحة عامة ما لم تضبط `hub_private_repo=True` أو كان الإعداد الافتراضي لمنظمتك هو إنشاء مساحات خاصة.

**التقييم:**

eval_strategy (`str` أو [IntervalStrategy](/docs/transformers/main/ar/internal/trainer_utils#transformers.IntervalStrategy)، *اختياري*، الافتراضي `"no"`) : متى يتم تشغيل التقييم. الخيارات: - `"no"`: لا تقييم أثناء التدريب - `"steps"`: تقييم كل `eval_steps` - `"epoch"`: تقييم في نهاية كل حقبة

eval_steps (`int` أو `float`، *اختياري*) : عدد خطوات التحديث بين كل تقييمين إذا كان `eval_strategy="steps"`. سيُستخدم نفس قيمة `logging_steps` افتراضيًا إذا لم يتم ضبطه. يجب أن يكون عددًا صحيحًا أو عددًا عشريًا ضمن المدى `[0,1)`. إذا كان أقل من 1، فسيُفسَّر كنسبة من إجمالي خطوات التدريب.

eval_delay (`float`، *اختياري*) : عدد الفترات أو الخطوات التي يجب الانتظار قبل إجراء أول تقييم، وذلك اعتمادًا على eval_strategy.

per_device_eval_batch_size (`int`، *اختياري*، القيمة الافتراضية 8) : حجم الدفعة لكل نواة تسريع/معالج CPU للتقييم.

prediction_loss_only (`bool`، *اختياري*، القيمة الافتراضية `False`) : عند إجراء التقييم وتوليد التنبؤات، يُرجع الخسارة فقط.

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

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

eval_use_gather_object (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم تنفيذ تجميع الكائنات بشكل تكراري من جميع الأجهزة ضمن قائمة/مجموعة/قاموس متداخل من الكائنات. يجب تفعيل هذا الخيار فقط إذا لم يكن المستخدمون يعيدون مجرد متجهات (tensors)، حيث يُنصح ضد ذلك بنشاط من قِبل PyTorch. يكون هذا الخيار مفيداً عندما تكون بنية التسميات غير قياسية، كما هو الحال في مهام الرؤية الحاسوبية.

eval_accumulation_steps (`int`, *اختياري*) : عدد خطوات التنبؤ التي يتم خلالها تجميع المصفوفات الناتجة قبل نقل النتائج إلى وحدة المعالجة المركزية. إذا تُرك غير مضبوط، يتم تجميع التنبؤات بالكامل على مُسرِّع الجهاز قبل نقلها إلى وحدة المعالجة المركزية (أسرع لكن يتطلب ذاكرة أكبر).

**حساب المقاييس:**

include_for_metrics (`list[str]`، *اختياري*، القيمة الافتراضية `[]`) : تضمين بيانات إضافية في دالة `compute_metrics` إذا كانت مطلوبة لحساب المقاييس. الخيارات الممكنة لإضافتها إلى قائمة `include_for_metrics`: - `"inputs"`: بيانات الإدخال المُمرَّرة إلى النموذج، والمُعدّة لحساب المقاييس المعتمدة على المدخلات. - `"loss"`: قيم الخسارة المحسوبة أثناء التقييم، والمُعدّة لحساب المقاييس المعتمدة على الخسارة.

batch_eval_metrics (`bool`، *اختياري*، القيمة الافتراضية `False`) : إذا تم ضبطه على `True`، فستقوم عملية التقييم باستدعاء compute_metrics في نهاية كل دفعة لتراكم الإحصاءات بدلاً من حفظ جميع قيم التقييم في الذاكرة. عند ضبطه على `True`، يجب عليك تمرير دالة compute_metrics تقبل حجة منطقية `compute_result`، والتي عند تمرير `True` إليها، ستُطلق الإحصاءات الإجمالية النهائية من الإحصاءات المجمعة على مستوى الدفعة التي تراكمها عبر مجموعة التقييم.

**التحقق من النقاط والحفظ:**

save_only_model (`bool`، *اختياري*، القيمة الافتراضية `False`) : حفظ أوزان النموذج فقط، دون حالة المُحسِّن/المُجدوِل/حالة المولّد العشوائي. يقلّل هذا بشكل كبير من حجم نقطة التفتيش، لكنه يمنع استئناف التدريب من نقطة التفتيش. استخدمه عندما تحتاج إلى النموذج المدرَّب للاستدلال فقط، وليس للتدريب المستمر. يمكنك تحميل النموذج باستخدام `from_pretrained` فقط عند ضبط هذا الخيار على `True`.

save_strategy (`str` أو `SaveStrategy`، *اختياري*، القيمة الافتراضية `"steps"`) : استراتيجية حفظ نقاط التفتيش المعتمدة أثناء التدريب. القيم الممكنة هي: - `"no"`: لا يتم أي حفظ أثناء التدريب. - `"epoch"`: يتم الحفظ في نهاية كل حقبة. - `"steps"`: يتم الحفظ كل `save_steps`. - `"best"`: يتم الحفظ كلما تم تحقيق `best_metric` جديد.

save_steps (`int` أو `float`، *اختياري*، القيمة الافتراضية 500) : عدد خطوات التحديث قبل حفظ نقطتي تفتيش إذا كان `save_strategy="steps"`. يجب أن يكون عددًا صحيحًا أو عددًا عشريًا ضمن المدى `[0,1)`. إذا كان أقل من 1، فسيُفسَّر كنسبة من إجمالي خطوات التدريب.

save_on_each_node (`bool`، *اختياري*، القيمة الافتراضية `False`) : عند تنفيذ التدريب الموزّع متعدد العقد، يحدد ما إذا كان سيتم حفظ النماذج والنقاط المرجعية على كل عقدة، أم على العقدة الرئيسية فقط. يجب عدم تفعيل هذا الخيار عندما تستخدم العقد المختلفة نفس التخزين، لأن الملفات ستُحفظ بأسماء متطابقة على كل عقدة.

save_total_limit (`int`، *اختياري*) : الحد الأقصى لعدد نقاط التفتيش التي يجب الاحتفاظ بها. يحذف نقاط التفتيش الأقدم في `output_dir`. عند تعيين `load_best_model_at_end=True`، يتم دائمًا الاحتفاظ بأفضل نقطة تفتيش بالإضافة إلى أحدث النقاط. على سبيل المثال، `save_total_limit=5` يحتفظ بأحدث أربع نقاط بالإضافة إلى الأفضل

enable_jit_checkpoint (`bool`، *اختياري*، القيمة الافتراضية `False`) : تفعيل نقطة التفتيش الفورية (Just-In-Time) عند إشارة SIGTERM لإنهاء العمل بسلاسة على الأحمال القابلة للمقاطعة. **مهم**: اضبط فترة الإيقاف السليم في مُنسّقك (orchestrator) للسماح بزمن كافٍ. في Kubernetes، اضبط `terminationGracePeriodSeconds` (القيمة الافتراضية 30 ثانية عادةً غير كافية). في Slurm، استخدم `--signal=TERM@<seconds>`. الفترة السليمة المطلوبة ≥ أطول وقت للتكرار + وقت حفظ نقطة التفتيش.

**تكامل مع Hugging Face Hub:**

push_to_hub (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم دفع النموذج إلى Hub في كل مرة يُحفظ فيها النموذج. إذا تم تفعيل هذا الخيار، فسيبدأ `output_dir` في إنشاء دليل git متزامن مع المستودع (المحدد بواسطة `hub_model_id`) وسيتم دفع المحتوى في كل مرة يتم فيها تشغيل الحفظ (بناءً على `save_strategy` الخاص بك). كما أن استدعاء [save_model()](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer.save_model) سيؤدي أيضًا إلى تشغيل عملية الدفع.

hub_token (`str`، *اختياري*) : الرمز المميز (token) المستخدم لدفع النموذج إلى Hub. سيُستخدم افتراضيًا الرمز المميز الموجود في مجلد الكاش (cache) الذي تم الحصول عليه عبر `hf auth login`.

hub_private_repo (`bool`، *اختياري*) : ما إذا كان سيتم جعل المستودع خاصًا. إذا كانت القيمة `None` (الافتراضي)، فسيكون المستودع عامًا ما لم يكن الافتراضي للمنظمة هو الخاص. يتم تجاهل هذه القيمة إذا كان المستودع موجودًا مسبقًا. عند الإبلاغ إلى Trackio مع تمكين النشر إلى Hugging Face Spaces، تحدد نفس المنطق ما إذا كان المساحة (Space) خاصًا.

hub_model_id (`str`, *اختياري*) : اسم المستودع الذي يجب إبقاؤه متزامنًا مع *output_dir* المحلي. يمكن أن يكون معرّف نموذج بسيط، وفي هذه الحالة سيتم دفع النموذج إلى نطاقك. وإلا، يجب أن يكون اسم المستودع الكامل، على سبيل المثال `"user_name/model"`، مما يتيح لك الدفع إلى منظمة أنت عضو فيها باستخدام `"organization_name/model"`. سيكون الافتراضي `user_name/output_dir_name` حيث يكون *output_dir_name* هو اسم `output_dir`.

hub_strategy (`str` أو `HubStrategy`، *اختياري*، القيمة الافتراضية `"every_save"`) : يحدد ما الذي يجب دفعه إلى Hub ومتى. الخيارات: - `"end"`: الدفع فقط في نهاية التدريب - `"every_save"`: الدفع عند كل حفظ (بشكل غير متزامن حتى لا يعيق التدريب) - `"checkpoint"`: مثل `"every_save"` بالإضافة إلى دفع أحدث نقطة تحقق إلى مجلد الفرع `"last-checkpoint"` لسهولة الاستئناف - `"all_checkpoints"`: دفع جميع نقاط التحقق عند ظهورها

hub_always_push (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما لم تكن هذه القيمة `True`، سيتخطى `Trainer` دفع نقطة التفتيش إذا لم تكتمل عملية الدفع السابقة.

hub_revision (`str`، *اختياري*) : المراجعة (revision) المستخدمة عند الدفع إلى Hub. يمكن أن يكون اسم فرع، أو وسم، أو تجزئة (hash) لالتزام.

**أفضل تتبع للنماذج:**

load_best_model_at_end (`bool`، *اختياري*، القيمة الافتراضية `False`) : تحميل أفضل نقطة تحقق (checkpoint) في نهاية التدريب. يتطلب ضبط `eval_strategy`. عند التفعيل، يتم دائمًا حفظ أفضل نقطة تحقق (انظر `save_total_limit`). عند تعيين `True`، يجب أن يتطابق `save_strategy` مع `eval_strategy` (ما لم يكن `save_strategy` هو `"best"`)، وإذا كان استخدام `"steps"`، فيجب أن يكون `save_steps` مضاعفًا لـ `eval_steps`.

metric_for_best_model (`str`، *اختياري*) : المقياس المستخدم لمقارنة النماذج عند `load_best_model_at_end=True`. يجب أن يكون اسم مقياس يُعاد من التقييم، مع أو بدون البادئة `"eval_"`. القيمة الافتراضية هي `"loss"`. إذا قمت بتعيين هذا، فستكون القيمة الافتراضية لـ `greater_is_better` هي `True` ما لم ينتهِ الاسم بـ `"loss"`. أمثلة: `"accuracy"`، `"f1"`، `"eval_bleu"`.

greater_is_better (`bool`، *اختياري*) : ما إذا كانت القيم الأعلى للمقياس أفضل. القيمة الافتراضية مبنية على `metric_for_best_model`: `True` إذا لم ينتهِ اسم المقياس بـ `"loss"`، وإلا `False`.

**استئناف التدريب:**

ignore_data_skip (`bool`، *اختياري*، القيمة الافتراضية `False`) : عند استئناف التدريب، يتخطى هذا الخيار التقدّم السريع عبر مجموعة البيانات للوصول إلى الحالة السابقة. إذا كانت القيمة `True`، يبدأ التدريب من بداية مجموعة البيانات (استئناف أسرع لكن النتائج لن تتطابق مع التدريب المقطوع). إذا كانت القيمة `False`، يتخطى البيانات التي تم رؤيتها (استئناف أبطأ لكن استكمال دقيق).

restore_callback_states_from_checkpoint (`bool`، *اختياري*، القيمة الافتراضية `False`) : استعادة حالات الاستدعاءات (callbacks) من نقطة التفتيش عند الاستئناف. إذا كانت `True`، فسيتم تجاوز الاستدعاءات الممرّرة إلى Trainer إذا كانت موجودة في نقطة التفتيش.

**إمكانية التكرار:**

full_determinism (`bool`، *اختياري*، القيمة الافتراضية `False`) : إذا كانت `True`، يتم استدعاء [enable_full_determinism()](/docs/transformers/main/ar/internal/trainer_utils#transformers.enable_full_determinism) بدلاً من [set_seed()](/docs/transformers/main/ar/internal/trainer_utils#transformers.set_seed) لضمان نتائج قابلة للتكرار في التدريب الموزع. ملاحظة مهمة: سيؤثر هذا سلباً على الأداء، لذا استخدمه فقط لأغراض تصحيح الأخطاء.

seed (`int`، *اختياري*، القيمة الافتراضية 42) : البذرة العشوائية التي سيتم ضبطها في بداية التدريب. لضمان قابلية إعادة الإنتاج عبر التشغيلات، استخدم دالة `~Trainer.model_init` لإنشاء النموذج إذا كانت بعض معاميره مهيأة عشوائيًا.

data_seed (`int`, *اختياري*) : البذرة العشوائية التي تُستخدم مع مُعيّنات البيانات. إذا لم يتم ضبطها، فستستخدم المولّدات العشوائية لعينة البيانات نفس البذرة الخاصة بـ`seed`. يمكن استخدام هذا لضمان قابلية إعادة إنتاج عينة البيانات، بشكل مستقل عن بذرة النموذج.

**إعدادات العتاد:**

use_cpu (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم استخدام وحدة المعالجة المركزية (CPU) أم لا. إذا تم ضبطه على False، فسنستخدم جهاز/واجهة الخلفية المتاحة من torch.

**إعدادات Accelerate:**

accelerator_config (`str` أو `dict` أو `AcceleratorConfig`، *اختياري*) : إعدادات للتكامل الداخلي مع Accelerate. يمكن أن تكون: - مسار إلى ملف إعدادات بصيغة JSON: `"accelerator_config.json"` - قاموس يحتوي على خيارات الإعداد - كائن من `AcceleratorConfig` الخيارات الرئيسية: - `split_batches` (`bool`، القيمة الافتراضية `False`): ما إذا كان سيتم تقسيم الدفعات عبر الأجهزة. إذا كانت `True`، فإن حجم الدفعة الفعلي يكون متساوياً على جميع الأجهزة (يجب أن يكون الحجم القابل للقسمة على num_processes). إذا كانت `False`، يحصل كل جهاز على حجم الدفعة المحدد. - `dispatch_batches` (`bool`): إذا كانت `True`، فإن العملية الرئيسية فقط تتصفح dataloader وتوزع الدفعات على الأجهزة. القيمة الافتراضية هي `True` لـ `IterableDataset`، و`False` في الحالات الأخرى. - `even_batches` (`bool`، القيمة الافتراضية `True`): نسخ العينات من بداية مجموعة البيانات لضمان حصول جميع العمال على أحجام دفعات متساوية. - `use_seedable_sampler` (`bool`، القيمة الافتراضية `True`): استخدام عينة عشوائية قابلة للتبذير بالكامل من أجل قابلية التكرار. - `use_configured_state` (`bool`، القيمة الافتراضية `False`): استخدام `AcceleratorState`/`PartialState` مُهيّأ مسبقاً بدلاً من إنشاء حالة جديدة. قد يسبب مشاكل في ضبط المعلمات الفائقة.

parallelism_config (`ParallelismConfig`، *اختياري*) : إعدادات التوازي لجلسة التدريب. يتطلب `1.10.1` من Accelerate

**محمّل البيانات:**

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

dataloader_num_workers (`int`، *اختياري*، القيمة الافتراضية 0) : عدد العمليات الفرعية المستخدمة لتحميل البيانات (خاصة بـ PyTorch). القيمة 0 تعني أن البيانات ستُحمَّل في العملية الرئيسية.

dataloader_pin_memory (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كنت ترغب في تثبيت الذاكرة في محمّلات البيانات أم لا. ستكون القيمة الافتراضية `True`.

dataloader_persistent_workers (`bool`، *اختياري*، القيمة الافتراضية `False`) : إذا كانت القيمة True، فلن يُغلق مُحمِّل البيانات عمليات العامل بعد استهلاك مجموعة البيانات مرة واحدة. وهذا يسمح بإبقاء كائنات Dataset الخاصة بالعاملات نشطة. قد يسرّع التدريب بشكل محتمل، لكنه سيزيد من استخدام ذاكرة RAM. ستكون القيمة الافتراضية `False`.

dataloader_prefetch_factor (`int`، *اختياري*) : عدد الدفعات التي يحمّلها كل عامل مسبقًا. القيمة 2 تعني أن إجمالي عدد الدفعات المحمّلة مسبقًا عبر جميع العمال سيكون 2 * num_workers.

dataloader_multiprocessing_context (`str`, *اختياري*) : طريقة بدء المعالجة متعددة العمليات المستخدمة لعمال تحميل البيانات (`"fork"` أو `"spawn"` أو `"forkserver"`). الافتراضي هو طريقة البدء الافتراضية في PyTorch، باستثناء حالة MPS عندما يكون `dataloader_num_workers > 1`، حيث تكون القيمة الافتراضية `"fork"`. استخدم `"spawn"` عند البث من مصادر لا تكون كائناتها آمنة للاستنساخ (مثل HDFS عبر `pyarrow`). عند استخدام `"spawn"`، يجب أن يكون أي `collate_fn` مخصص أو كود مجموعة بيانات قابلًا للاستيراد على مستوى الوحدة (بدون دوال lambda أو الإغلاقات).

dataloader_in_order (`bool`، *اختياري*، القيمة الافتراضية `True`) : إذا كانت `True`، فإن مُحمِّل البيانات يُخرج الدفعات بالترتيب الذي تم فيه إرسال العمال. اضبطها على `False` لإخراج الدفعات فور جاهزيتها، مما قد يقلل من زمن التأخير النهائي لأحمال العمل البثية الخاصة بـ`IterableDataset`. يتطلب PyTorch >= 2.6.

remove_unused_columns (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم حذف الأعمدة غير المستخدمة في طريقة forward للنموذج تلقائيًا أم لا.

label_names (`list[str]`، *اختياري*) : قائمة المفاتيح في قاموس المدخلات الخاصة بك التي تتوافق مع التسميات. ستصبح افتراضيًا قائمة أسماء المعاملات التي يقبلها النموذج والتي تحتوي على كلمة "label"، ما لم يكن النموذج المستخدم من نوع `XxxForQuestionAnswering`، وفي هذه الحالة ستشمل أيضًا المفاتيح `["start_positions", "end_positions"]`. يجب عليك تحديد `label_names` فقط إذا كنت تستخدم أسماء تسميات مخصصة أو إذا كان `forward` الخاص بنموذجك يستهلك عدة تينسورات للتسميات (مثل الاستخراجية QA).

train_sampling_strategy (`str`، *اختياري*، القيمة الافتراضية `"random"`) : المُعيّن (sampler) المستخدم لمُحمّل بيانات التدريب. القيم الممكنة هي:  - `"random"`: يستخدم `RandomSampler` (الافتراضي). - `"sequential"`: يستخدم `SequentialSampler`. - `"group_by_length"`: يستخدم `LengthGroupedSampler` لتجميع العينات ذات الطول المتقارب معًا (لتقليل الحشو وزيادة الكفاءة). - `"batch_rebalance"`: يستخدم `BatchRebalanceSampler` لموازنة تكلفة الرموز المحشوة عبر الأجهزة وخطوات تراكم التدرجات داخل كل دفعة فعّالة، مما يقلل من هدر الحشو والذروة في الذاكرة مقارنةً بـ`"group_by_length"`. حاليًا، يُدعم هذا فقط للتدريب المتوازي للبيانات (التوازي على مستوى المصفوفات غير مدعوم بعد).  ملاحظة: عند استخدام `IterableDataset`، يتم تجاهل هذا الحُجّة.

length_column_name (`str`، *اختياري*، القيمة الافتراضية `"length"`) : اسم العمود الخاص بالطول المحسوب مسبقًا. إذا كان العمود موجودًا، فسيستخدم التجميع حسب الطول هذه القيم بدلاً من حسابها عند بدء التدريب. يتم تجاهله ما لم يكن `train_sampling_strategy` هو `"group_by_length"` أو `"batch_rebalance"` وكان مجموعة البيانات مثيلًا لـ `Dataset`.

**DDP (DistributedDataParallel):**

ddp_find_unused_parameters (`bool`، *اختياري*) : عند استخدام التدريب الموزّع، قيمة العلم `find_unused_parameters` المُمرّرة إلى `DistributedDataParallel`. ستكون القيمة الافتراضية `False` إذا تم استخدام نقطة التفتيش للتدرّجات، وإلا فستكون `True`.

ddp_bucket_cap_mb (`int`, *اختياري*) : عند استخدام التدريب الموزّع، قيمة العلم `bucket_cap_mb` المُمرَّر إلى `DistributedDataParallel`.

ddp_broadcast_buffers (`bool`، *اختياري*) : عند استخدام التدريب الموزّع، قيمة العلم `broadcast_buffers` المُمرّرة إلى `DistributedDataParallel`. ستكون القيمة الافتراضية `False` إذا تم استخدام فحص التدرّج (gradient checkpointing)، وإلا فستكون `True`.

ddp_static_graph (`bool`، *اختياري*) : عند استخدام التدريب الموزّع، قيمة العلم `static_graph` المُمرَّر إلى `DistributedDataParallel`.

ddp_backend (`str`، *اختياري*) : الخلفية المستخدمة للتدريب الموزّع. يجب أن يكون أحد `"nccl"`، `"mpi"`، `"xccl"`، `"gloo"`، `"hccl"`.

ddp_timeout (`int`، *اختياري*، القيمة الافتراضية 1800) : مهلة انتهاء الوقت لاستدعاءات `torch.distributed.init_process_group`، وتُستخدم لتجنّب انتهاء مهلة اتصال GPU عند تنفيذ عمليات بطيئة في التشغيل الموزّع. يُرجى الرجوع إلى [توثيق PyTorch](https://pytorch.org/docs/stable/distributed.html#torch.distributed.init_process_group) لمزيد من المعلومات.

**FSDP (التوازي الكامل للبيانات المجزأة):**

fsdp (`bool`، *اختياري*، القيمة الافتراضية `None`) : تفعيل PyTorch Fully Sharded Data Parallel (FSDP) للتدريب الموزّع. مرّر `True` لتفعيل FSDP.

fsdp_config (`str` أو `dict`، *اختياري*) : إعدادات التهيئة عند تمكين `fsdp`. مرّر مساراً إلى ملف تكوين بصيغة JSON، مثل `fsdp_config.json`، أو قاموساً محمّلاً مسبقاً. المفاتيح المدعومة: - version (`int`، *اختياري*، القيمة الافتراضية `2`): إصدار FSDP المراد استخدامه (`2` لـ FSDP2، و`1` لـ FSDP1 القديم). - reshard_after_forward (`bool`، *اختياري*، القيمة الافتراضية `True`): ما إذا كان يجب إعادة تجزئة المعاملات بعد مسار الأمامي. اضبطه على `False` للحفاظ على تجميع المعاملات بين مساري الأمامي والخلفي، مما يتجنب إعادة التجميع الشامل (re-all-gather)، ويستخدم ذاكرة ذروة أعلى. - cpu_offload (`bool`، *اختياري*، القيمة الافتراضية `False`): نقل المعاملات والتدرجات إلى وحدة المعالجة المركزية (CPU) عند عدم استخدامها لتوفير ذاكرة وحدة معالجة الرسوميات (GPU). - activation_checkpointing (`bool`، *اختياري*، القيمة الافتراضية `False`): اضبطه على `True` لتقليل الذاكرة عن طريق إعادة حساب التفعيلات (activations) أثناء مسار الخلفي. عند استخدام FSDP، يُفضّل استخدام هذا بدلاً من معامل التدريب `activation_checkpointing`، الذي يُدخل تجميعاً شاملاً زائداً في مسار الخلفي. - cpu_ram_efficient_loading (`bool`، *اختياري*، القيمة الافتراضية `False`): اضبطه على `True` لتحميل نقطة التفتيش (checkpoint) المُسبقة التدريب على العملية الأولى فقط. تبدأ العمليات الأخرى بأوزان فارغة وتستقبل الأوزان عبر البث (broadcast). - state_dict_type (`str`، *اختياري*، القيمة الافتراضية `"FULL_STATE_DICT"`): صيغة نقطة التفتيش: `"FULL_STATE_DICT"` (ملف واحد متوافق مع HF) أو `"SHARDED_STATE_DICT"` (ملف واحد لكل رتبة، أسرع للنماذج الكبيرة). - auto_wrap_policy (`str`، *اختياري*، القيمة الافتراضية `"TRANSFORMER_BASED_WRAP"`): سياسة التغليف التلقائي (auto-wrap) المراد استخدامها. اختر `"TRANSFORMER_BASED_WRAP"` أو `"SIZE_BASED_WRAP"` أو `"NO_WRAP"`. - transformer_layer_cls_to_wrap (`list[str]`، *اختياري*): أسماء فئات طبقات Transformer (حساسة لحالة الأحرف) المراد تغليفها، مثل `LlamaDecoderLayer`. عادةً ما يكون هذا غير ضروري: فسياسة التغليف تعود إلى `_no_split_modules` الخاص بالنموذج، والذي يغطي معظم نماذج transformers. - min_num_params (`int`، *اختياري*، القيمة الافتراضية `0`): الحد الأدنى لعدد المعاملات لكل وحدة للتغليف التلقائي القائم على الحجم (يُستخدم مع `auto_wrap_policy="SIZE_BASED_WRAP"`). - xla (`bool`، *اختياري*، القيمة الافتراضية `False`): ما إذا كان يجب استخدام تدريب PyTorch/XLA Fully Sharded Data Parallel. تجريبي. - xla_fsdp_settings (`dict`، *اختياري*): قاموس بمعاملات تغليف XLA FSDP. للحصول على قائمة كاملة بالخيارات، راجع [مصدر XLA FSDP](https://github.com/pytorch/xla/blob/master/torch_xla/distributed/fsdp/xla_fully_sharded_data_parallel.py). - xla_fsdp_grad_ckpt (`bool`، *اختياري*، القيمة الافتراضية `False`): اضبطه على `True` لاستخدام نقطة تفتيش التدرجات (gradient checkpointing) على كل طبقة مغلّفة بشكل متداخل بواسطة XLA FSDP. يتطلب `xla=True` وسياسة تغليف تلقائي (`min_num_params` أو `transformer_layer_cls_to_wrap`).

**DeepSpeed:**

deepspeed (`str` أو `dict`، *اختياري*) : تفعيل تكامل [DeepSpeed](https://github.com/deepspeedai/DeepSpeed). القيمة تكون إما: - مسار إلى ملف إعدادات DeepSpeed بصيغة JSON: `"ds_config.json"` - إعدادات محمّلة على شكل قاموس > [!TIP] > عند استخدام تهيئة ZeRO، قم بإنشاء نموذجك *بعد* تهيئة `TrainingArguments`، وإلا فلن يتم تطبيق ZeRO.

**التصحيح والتحقق من الأداء (تجريبي):**

debug (`str` أو قائمة من `DebugOption`، *اختياري*، القيمة الافتراضية `""`) : تفعيل ميزة أو أكثر من ميزات التصحيح. هذه ميزة تجريبية. الخيارات الممكنة هي: - "underflow_overflow": يكشف عن تجاوز الحدود في مدخلات/مخرجات النموذج ويبلغ عن آخر الإطارات التي أدت إلى الحدث - "tpu_metrics_debug": يطبع مقاييس التصحيح على TPU

skip_memory_metrics (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم تخطي إضافة تقارير ملفّس الذاكرة إلى المقاييس. يتم تخطي هذا الأمر افتراضيًا لأنه يُبطئ سرعة التدريب والتقييم.

**أعلام السكربت الخارجي (غير مستخدمة بواسطة Trainer):**

do_train (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم تشغيل التدريب أم لا. لا يستخدم هذا الحجة مباشرةً بواسطة [Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer)، بل يُقصد استخدامه في سكربتات التدريب/التقييم الخاصة بك.

do_eval (`bool`، *اختياري*) : ما إذا كان سيتم تشغيل التقييم على مجموعة التحقق أم لا. سيُضبط على `True` إذا كان `eval_strategy` مختلفًا عن `"no"`. لا يستخدم هذا الحجة مباشرةً بواسطة [Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer)، بل يُقصد استخدامه في سكربتات التدريب/التقييم الخاصة بك.

do_predict (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم تشغيل التنبؤات على مجموعة الاختبار أم لا. لا يستخدم هذا الحجة مباشرةً بواسطة [Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer)، بل يُقصد استخدامه في سكربتات التدريب/التقييم الخاصة بك بدلاً من ذلك.

resume_from_checkpoint (`str`، *اختياري*) : المسار إلى مجلد يحتوي على نقطة تفتيش صالحة لنموذجك. لا يستخدم هذا الحجة مباشرةً بواسطة [Trainer](/docs/transformers/main/ar/main_classes/trainer#transformers.Trainer)، بل يُقصد استخدامه من قِبل سكربتات التدريب/التقييم الخاصة بك.

sortish_sampler (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم استخدام *sortish sampler* أم لا. حاليًا، هذا ممكن فقط إذا كانت مجموعات البيانات الأساسية من نوع *Seq2SeqDataset*، لكن سيصبح متاحًا بشكل عام في المستقبل القريب. يقوم بفرز المدخلات وفقًا لطولها لتقليل حجم الحشو (padding)، مع إضافة قدر من العشوائية لمجموعة التدريب.

predict_with_generate (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم استخدام generate لحساب المقاييس التوليدية (ROUGE، BLEU).

generation_max_length (`int`، *اختياري*) : قيمة `max_length` المستخدمة في كل حلقة تقييم عند تعيين `predict_with_generate=True`. ستكون القيمة الافتراضية هي قيمة `max_length` في إعدادات النموذج.

generation_num_beams (`int`، *اختياري*) : قيمة `num_beams` المستخدمة في كل حلقة تقييم عند تعيين `predict_with_generate=True`. ستكون القيمة الافتراضية هي قيمة `num_beams` في إعدادات النموذج.

generation_config (`str` أو `Path` أو [GenerationConfig](/docs/transformers/main/ar/main_classes/text_generation#transformers.GenerationConfig)، *اختياري*) : يتيح تحميل [GenerationConfig](/docs/transformers/main/ar/main_classes/text_generation#transformers.GenerationConfig) من طريقة `from_pretrained`. يمكن أن يكون هذا: - نصًا، وهو *معرف النموذج* لإعدادات نموذج مُدرَّب مسبقًا مستضاف داخل مستودع نماذج على huggingface.co. - مسارًا إلى *مجلد* يحتوي على ملف إعدادات تم حفظه باستخدام طريقة [save_pretrained()](/docs/transformers/main/ar/main_classes/text_generation#transformers.GenerationConfig.save_pretrained)، على سبيل المثال `./my_model_directory/`. - كائن [GenerationConfig](/docs/transformers/main/ar/main_classes/text_generation#transformers.GenerationConfig).

فئة التهيئة للتحكم في جميع جوانب تدريب النموذج باستخدام Trainer. توحّد TrainingArguments جميع المعاملات الفائقة وإعدادات التحسين وتفضيلات التسجيل وخيارات البنية التحتية اللازمة للتدريب.

يمكن لـ [HfArgumentParser](/docs/transformers/main/ar/internal/trainer_utils#transformers.HfArgumentParser) تحويل هذه الفئة إلى حُجج [argparse](https://docs.python.org/3/library/argparse#module-argparse) يمكن تحديدها على سطر الأوامر.

#### to_dict[[transformers.Seq2SeqTrainingArguments.to_dict]]

```python
to_dict()
```

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

يسلسل هذه النسخة مع استبدال `Enum` بقيمها و`GenerationConfig` بقواميس (لدعم التسلسل بصيغة JSON). كما يُعمي قيم الرموز (tokens) عن طريق إزالة قيمها.

