Transformers documentation
Trainer
Trainer
Класс Trainer предоставляет API для полноценной обучения в PyTorch и поддерживает распределённое обучение на нескольких GPU/TPU, смешанную точность для NVIDIA GPUs, AMD GPUs и torch.amp для PyTorch. Trainer тесно связан с классом TrainingArguments, который предлагает широкий набор параметров для настройки процесса обучения модели. Вместе эти два класса образуют полный API для обучения.
Классы Seq2SeqTrainer и Seq2SeqTrainingArguments наследуются от классов Trainer и TrainingArguments и адаптированы для обучения моделей, решающих задачи последовательность-в-последовательность, такие как суммаризация или перевод.
Класс Trainer оптимизирован для моделей 🤗 Transformers и может вести себя непредсказуемо при использовании с другими моделями. При работе со своей моделью убедитесь, что:
- ваша модель всегда возвращает кортежи или подклассы ModelOutput
- ваша модель может вычислять потерю, если передан аргумент
labels, и эта потеря возвращается как первый элемент кортежа (если ваша модель возвращает кортежи)- ваша модель может принимать несколько аргументов меток (используйте
label_namesв TrainingArguments, чтобы указать их имена для Trainer), но ни один из них не должен называться"label"
Trainer
класс transformers.Trainer
< source >( model: typing.Union[transformers.modeling_utils.PreTrainedModel, torch.nn.Module, NoneType] = Noneargs: transformers.training_args.TrainingArguments | None = Nonedata_collator: collections.abc.Callable[[list[typing.Any]], dict[str, typing.Any]] | None = Nonetrain_dataset: Dataset | IterableDataset | datasets.Dataset | None = Noneeval_dataset: Dataset | dict[str, Dataset] | datasets.Dataset | None = Noneprocessing_class: transformers.tokenization_utils_base.PreTrainedTokenizerBase | transformers.image_processing_utils.BaseImageProcessor | transformers.feature_extraction_utils.FeatureExtractionMixin | transformers.processing_utils.ProcessorMixin | None = Nonemodel_init: collections.abc.Callable[..., transformers.modeling_utils.PreTrainedModel] | None = Nonecompute_loss_func: collections.abc.Callable | None = Nonecompute_metrics: collections.abc.Callable[[transformers.trainer_utils.EvalPrediction], dict] | None = Nonecallbacks: list[transformers.trainer_callback.TrainerCallback] | None = Noneoptimizers: tuple = (None, None)optimizer_cls_and_kwargs: tuple[type[torch.optim.Optimizer], dict[str, typing.Any]] | None = Nonepreprocess_logits_for_metrics: collections.abc.Callable[[torch.Tensor, torch.Tensor], torch.Tensor] | None = None )
Параметры
- model (PreTrainedModel или
torch.nn.Module, необязательный) — Модель для обучения, оценки или использования для предсказаний. Если не указана, необходимо передатьmodel_init.Trainer оптимизирован для работы с PreTrainedModel, предоставляемым библиотекой. Вы по-прежнему можете использовать собственные модели, определённые как
torch.nn.Module, при условии, что они работают так же, как модели 🤗 Transformers. - args (TrainingArguments, необязательный) —
Аргументы для настройки обучения. Если не заданы, по умолчанию используется базовый экземпляр TrainingArguments с
output_dir, установленным в каталог с именем tmp_trainer в текущей директории. - data_collator (
DataCollator, необязательный) — Функция, используемая для формирования батча из списка элементовtrain_datasetилиeval_dataset. Еслиprocessing_classне указан, по умолчанию используется default_data_collator(); в противном случае, если processing_class является feature extractor или tokenizer, используется экземпляр DataCollatorWithPadding. - train_dataset (
torch.utils.data.Dataset|torch.utils.data.IterableDataset|datasets.Dataset, необязательный) — Набор данных, используемый для обучения. Если это Dataset, столбцы, не поддерживаемые методомmodel.forward(), автоматически удаляются. Обратите внимание, что если это torch.utils.data.IterableDataset с некоторой рандомизацией и вы обучаете модель в распределённом режиме, ваш итерируемый набор данных должен либо использовать внутренний атрибут-генератор, являющийся torch.Generator для рандомизации, который должен быть идентичен во всех процессах (и Trainer будет вручную устанавливать seed этого генератора в каждой эпохе), либо иметь метод set_epoch(), который внутренним образом устанавливает seed для используемых генераторов случайных чисел. Если набор данных не реализует __len__ (например, потоковый IterableDataset), необходимо установить max_steps, поскольку общее количество шагов обучения невозможно определить.Обратите внимание, что если используется
torch.utils.data.IterableDatasetс некоторой рандомизацией и обучение выполняется в распределённом режиме, итерируемый датасет должен либо использовать внутренний атрибутgenerator, являющийсяtorch.Generatorдля рандомизации, который должен быть идентичным во всех процессах (и Trainer будет вручную устанавливать seed этогоgeneratorв каждой эпохе), либо иметь методset_epoch(), который внутренним образом устанавливает seed используемых генераторов случайных чисел.Если набор данных не реализует
__len__(например, потоковыйIterableDataset), необходимо задатьmax_steps, поскольку общее количество шагов обучения невозможно определить. - eval_dataset (
torch.utils.data.Dataset| dict[str,torch.utils.data.Dataset] |datasets.Dataset, необязательный) — Набор данных, используемый для оценки. Если это Dataset, столбцы, не принимаемые методомmodel.forward(), автоматически удаляются. Если это словарь, оценка выполняется для каждого набора данных, а ключ словаря добавляется в начало имени метрики. - processing_class (
PreTrainedTokenizerBaseилиBaseImageProcessorилиFeatureExtractionMixinилиProcessorMixin, необязательный) — Класс обработки, используемый для обработки данных. Если указан, будет автоматически применяться к входным данным модели и сохраняться вместе с моделью, чтобы упростить перезапуск прерванной тренировки или повторное использование дообученной модели. - model_init (
Callable[[], PreTrainedModel], необязательный) — Функция, создающая экземпляр модели, который будет использоваться. Если она передана, каждый вызов train() будет начинать обучение с нового экземпляра модели, создаваемого этой функцией.Функция может не принимать аргументов или принимать один аргумент, содержащий объект trial из optuna/Ray Tune, чтобы можно было выбирать различные архитектуры в зависимости от гиперпараметров (например, количество слоёв, размеры внутренних слоёв, вероятности dropout и т. д.).
- compute_loss_func (
Callable, необязательный) — Функция, которая принимает необработанные выходные данные модели, метки и количество элементов во всей накопленной пачке (batch_size * gradient_accumulation_steps) и возвращает значение функции потерь. Например, см. функцию потерь по умолчанию, используемую в Trainer. - compute_metrics (
Callable[[EvalPrediction], Dict], необязательный) — Функция, которая будет использоваться для вычисления метрик при оценке. Она должна принимать EvalPrediction и возвращать словарь, сопоставляющий строки со значениями метрик. Примечание При передаче TrainingArgs с установленнымbatch_eval_metricsвTrueфункция compute_metrics должна принимать булевый аргументcompute_result. Этот аргумент будет срабатывать после последней eval-пачки, чтобы сигнализировать функции, что необходимо вычислить и вернуть глобальную сводную статистику, а не накапливать статистику на уровне пачек - callbacks (список TrainerCallback, , необязательный) —
Список колбэков для настройки цикла обучения. Эти колбэки будут добавлены к списку колбэков по умолчанию, описанных здесь. Если вы хотите удалить один из колбэков по умолчанию, используйте метод Trainer.remove_callback()..
Если вы хотите удалить один из используемых по умолчанию колбэков, воспользуйтесь методом Trainer.remove_callback().
- optimizers (
tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR], необязательный, по умолчанию(None, None)) — Кортеж, содержащий оптимизатор и планировщик, которые будут использоваться. По умолчанию будет создан экземплярAdamWдля вашей модели и планировщик, заданный функцией get_linear_schedule_with_warmup() и управляемый параметрамиargs. - optimizer_cls_and_kwargs (
tuple[Type[torch.optim.Optimizer], dict[str, Any]], optional) — A tuple containing the optimizer class and keyword arguments to use. Overridesoptimandoptim_argsinargs. Incompatible with theoptimizersargument.В отличие от
optimizers, этот аргумент избавляет от необходимости размещать параметры модели на соответствующих устройствах до инициализации Trainer. - preprocess_logits_for_metrics (
Callable[[torch.Tensor, torch.Tensor], torch.Tensor], необязательный) — Функция, которая предобрабатывает logits непосредственно перед их кэшированием на каждом шаге оценки. Должна принимать два тензора — logits и labels — и возвращать обработанные logits. Изменения, внесённые этой функцией, будут отражены в предсказаниях, полученных вcompute_metrics.Обратите внимание, что метки (второй параметр) будут
None, если в наборе данных их нет.
Trainer — это простой, но функционально полный цикл обучения и оценки для PyTorch, оптимизированный для 🤗 Transformers.
Важные атрибуты:
- model — всегда указывает на базовую модель. Если используется модель из transformers, это будет подкласс PreTrainedModel.
- model_wrapped — всегда указывает на самую внешнюю модель, если одна или несколько других обёрток окружают исходную модель. Именно эта модель должна использоваться для прямого прохода. Например, в
DeepSpeedвнутренняя модель сначала оборачивается вDeepSpeed, а затем повторно вtorch.nn.DistributedDataParallel. Если внутренняя модель не была обёрнута, тоself.model_wrappedсовпадает сself.model. - is_model_parallel — Указывает, переключена ли модель в режим параллелизма по модели (в отличие от параллелизма по данным, это означает, что некоторые слои модели распределены по разным GPU).
- 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
< source >( callback: type[transformers.trainer_callback.TrainerCallback] | transformers.trainer_callback.TrainerCallback )
Параметры
- callback (
typeили [`~transformers.TrainerCallback]`) — Класс TrainerCallback или экземпляр класса TrainerCallback. В первом случае будет создан экземпляр этого класса.
Добавьте колбэк в текущий список TrainerCallback.
Вспомогательная обёртка, создающая подходящий контекстный менеджер для autocast и передающая ему необходимые аргументы в зависимости от ситуации. Мы используем accelerate для autocast, поэтому здесь ничего не делаем.
Вызовите model_init, чтобы получить новый экземпляр модели, при необходимости с учётом гиперпараметров текущего испытания.
compute_loss
< source >( model: Moduleinputs: dictreturn_outputs: bool = Falsenum_items_in_batch: typing.Union[int, torch.Tensor, NoneType] = None )
Параметры
- model (
nn.Module) — Модель, для которой вычисляется функция потерь. - inputs (
dict[str, torch.Tensor | Any]) — Входные данные для модели. - return_outputs (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли возвращать выходные данные модели вместе с потерей. - num_items_in_batch (Optional[torch.Tensor], необязательный) — Количество элементов в батче. Если не передано, loss вычисляется с использованием стандартной логики редукции по размеру батча.
Как Trainer вычисляет потерю. По умолчанию все модели возвращают потерю в первом элементе.
Создайте подкласс и переопределите методы для реализации собственного поведения. Если вы вычисляете собственную функцию потерь, установите loss_is_scaled_for_ga, чтобы указать, была ли она уже масштабирована для накопления градиентов: False, если это среднее значение по батчу (тогда Trainer делит её на количество шагов накопления градиентов), и True, если вы уже нормализовали её по всему накопленному батчу.
Вспомогательная обёртка для группировки контекстных менеджеров.
Создайте accelerator и выполните настройку после создания (FSDP, DeepSpeed и т. д.).
create_model_card
< source >( language: str | None = Nonelicense: str | None = Nonetags: str | list[str] | None = Nonemodel_name: str | None = Nonefinetuned_from: str | None = Nonetasks: str | list[str] | None = Nonedataset_tags: str | list[str] | None = Nonedataset: str | list[str] | None = Nonedataset_args: str | list[str] | None = None )
Параметры
- language (
str, необязательный) — Язык модели (если применимо) - license (
str, необязательный) — Лицензия модели. Если исходная модель, переданная вTrainer, была загружена из репозитория на Hugging Face Hub, по умолчанию используется лицензия предобученной модели. - tags (
strилиlist[str], необязательный) — Список тегов, которые будут включены в метаданные карточки модели. - model_name (
str, необязательный) — Имя модели. - finetuned_from (
str, optional) — Название модели, на основе которой была выполнена дообучение этой модели (если применимо). По умолчанию используется название репозитория исходной модели, переданной вTrainer(если она была получена из Hub). - tasks (
strилиlist[str], необязательный) — Один или несколько идентификаторов задач, которые будут включены в метаданные карточки модели. - dataset_tags (
strилиlist[str], необязательный) — Один или несколько тегов набора данных, которые будут включены в метаданные карточки модели. - dataset (
strилиlist[str], необязательный) — Один или несколько идентификаторов наборов данных, которые будут включены в метаданные карточки модели. - dataset_args (
strилиlist[str], необязательный) — Один или несколько аргументов датасета, которые будут включены в метаданные карточки модели.
Создаёт черновик карточки модели, используя доступную Trainer информацию.
create_optimizer
< source >( model = None ) → torch.optim.Optimizer
Возвращает
torch.optim.Optimizer
Экземпляр оптимизатора.
Настройте оптимизатор.
Мы предоставляем разумное значение по умолчанию, которое хорошо работает. Если вы хотите использовать что-то другое, вы можете передать кортеж в init класса Trainer через optimizers или создать подкласс и переопределить этот метод.
Настройте оптимизатор и планировщик скорости обучения.
Мы предоставляем разумные значения по умолчанию, которые хорошо работают. Если вы хотите использовать что-то другое, вы можете передать кортеж в init класса Trainer через optimizers или создать подкласс и переопределить этот метод (или create_optimizer и/или create_scheduler) в подклассе.
create_scheduler
< source >( num_training_steps: intoptimizer: typing.Optional[torch.optim.Optimizer] = None ) → torch.optim.lr_scheduler.LRScheduler
Настройте планировщик. Оптимизатор тренера должен быть настроен до вызова этого метода или передан в качестве аргумента.
Завершите работу трекеров и уничтожьте группу распределённых процессов.
Вызовите это один раз, в самом конце скрипта, после всех операций, требующих взаимодействия с другими процессами: train(), evaluate(), predict(), save_model() и push_to_hub() обмениваются данными между процессами и завершатся с ошибкой, если группа будет удалена.
evaluate
< source >( eval_dataset: typing.Union[torch.utils.data.Dataset, dict[str, torch.utils.data.Dataset], NoneType] = Noneignore_keys: list[str] | None = Nonemetric_key_prefix: str = 'eval' )
Параметры
- eval_dataset (
Dataset| dict[str,Dataset], необязательный) — Передайте датасет, если хотите переопределитьself.eval_dataset. Если это Dataset, столбцы, не поддерживаемые методомmodel.forward()автоматически удаляются. Если передан словарь, оценка будет выполнена для каждого датасета, а ключ словаря будет добавлен в начало имени метрики.Если передать словарь, где ключами являются имена наборов данных, а значениями — сами наборы данных, evaluate выполнит отдельные оценки для каждого набора. Это может быть полезно для отслеживания влияния обучения на другие наборы данных или для получения более детальной оценки. При использовании с
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” (по умолчанию)
Запускает оценку и возвращает метрики.
Скрипт, вызывающий процесс, должен предоставлять метод для вычисления метрик, поскольку они зависят от задачи (передайте его в аргумент compute_metrics при инициализации).
Вы также можете создать подкласс и переопределить этот метод, чтобы добавить собственное поведение.
evaluation_loop
< source >( dataloader: DataLoaderdescription: strprediction_loss_only: bool | None = Noneignore_keys: list[str] | None = Nonemetric_key_prefix: str = 'eval' )
Цикл предсказания/оценки, общий для Trainer.evaluate() и Trainer.predict().
Работает как с метками, так и без них.
floating_point_ops
< source >( inputs: dict ) → int
Для моделей, наследующих от PreTrainedModel, используется этот метод для вычисления количества операций с плавающей точкой за каждый проход вперёд и назад. Если используется другая модель, необходимо либо реализовать такой метод в модели, либо создать подкласс и переопределить этот метод.
Собирает заданное количество батчей из итератора эпохи и при необходимости подсчитывает число элементов в батчах для корректного масштабирования функции потерь.
Получить размер контекстного параллелизма
Получите все имена параметров, к которым будет применено затухание весов.
Эта функция отфильтровывает параметры двумя способами:
- По типу слоя (экземпляры слоёв, указанных в ALL_LAYERNORM_LAYERS)
- По шаблонам имен параметров (содержащим «bias» или варианты «norm»)
get_eval_dataloader
< source >( eval_dataset: typing.Union[str, torch.utils.data.Dataset, NoneType] = None )
Параметры
- eval_dataset (
strилиtorch.utils.data.Dataset, необязательный) — Если передана строкаstr, в качестве набора данных для оценки будет использованself.eval_dataset[eval_dataset]. Если передан объектDataset, он заменитself.eval_dataset. Если это Dataset, столбцы, не принимаемые методомmodel.forward(), будут автоматически удалены.
Возвращает объект оценки ~torch.utils.data.DataLoader.
Создайте подкласс и переопределите этот метод, если хотите добавить собственное поведение.
Возвращает коэффициент обучения каждого параметра из self.optimizer.
Получите количество обучаемых параметров.
get_optimizer_cls_and_kwargs
< source >( args: TrainingArgumentsmodel: transformers.modeling_utils.PreTrainedModel | None = None )
Возвращает класс оптимизатора и параметры оптимизатора на основе аргументов обучения.
get_optimizer_group
< source >( param: typing.Union[str, torch.nn.parameter.Parameter, NoneType] = None )
Возвращает группу оптимизатора для указанного параметра, а если параметр не указан — все группы оптимизатора для параметров.
Получить размер последовательного параллелизма
get_test_dataloader
< source >( test_dataset: Dataset )
Параметры
- test_dataset (
torch.utils.data.Dataset, необязательный) — Тестовый набор данных, который будет использоваться. Если это Dataset, столбцы, не принимаемые методомmodel.forward(), автоматически удаляются.
Возвращает тестовый ~torch.utils.data.DataLoader.
Создайте подкласс и переопределите этот метод, если хотите добавить собственное поведение.
Вычисляет общий размер батча (micro_batch grad_accum dp_world_size).
Учитывает все измерения параллелизма: TP, CP и SP.
Формула: dp_world_size = world_size // (tp_size cp_size sp_size)
Где:
- TP (Tensor Parallelism): слои модели распределяются по нескольким GPU
- CP (Context Parallelism): последовательности разбиваются с помощью Ring Attention (FSDP2)
- SP (Sequence Parallelism): последовательности разбиваются с помощью ALST/Ulysses (DeepSpeed)
Все размеры независимы и перемножаются: world_size = dp_size tp_size cp_size * sp_size
Получите размер тензорного параллелизма из конфигурации модели или DeepSpeed.
Возвращает тренировочный ~torch.utils.data.DataLoader.
Если train_dataset не реализует __len__, сэмплер не используется; в противном случае применяется случайный сэмплер (при необходимости адаптированный для распределённого обучения).
Создайте подкласс и переопределите этот метод, если хотите добавить собственное поведение.
hyperparameter_search
< source >( hp_space: collections.abc.Callable[['optuna.Trial'], dict[str, float]] | None = Nonecompute_objective: collections.abc.Callable[[dict[str, float]], float] | None = Nonen_trials: int = 20direction: str | list[str] = 'minimize'backend: str | transformers.trainer_utils.HPSearchBackend | None = Nonehp_name: collections.abc.Callable[['optuna.Trial'], str] | None = None**kwargs ) → [trainer_utils.BestRun or list[trainer_utils.BestRun]]
Параметры
- 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]], необязательный) — Функция, определяющая имя trial/run. По умолчанию — None. - kwargs (
dict[str, Any], необязательный) — Дополнительные именованные аргументы для каждого бэкенда:optuna: параметры из optuna.study.create_study а также параметрыtimeout,n_jobsиgc_after_trialиз optuna.study.Study.optimizeray: параметры из tune.run. Еслиresources_per_trialне задан вkwargs, по умолчанию используется 1 ядро CPU и 1 GPU (если доступно). Еслиprogress_reporterне задан вkwargs, используется ray.tune.CLIReporter.
Возвращает
[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_initwhen initializing your Trainer: we need to reinitialize the model at each new run. This is incompatible with theoptimizersargument, so you need to subclass Trainer and override the method create_optimizer_and_scheduler() for custom optimizer/scheduler.
init_hf_repo
< source >( token: str | None = Noneprivate: bool | None = None )
Параметры
- token (
str, необязательный) — Токен с правами на запись. По умолчанию используетсяself.args.hub_token. - private (
bool, optional) — Определяет, следует ли сделать репозиторий приватным при его создании. По умолчанию используется значениеself.args.hub_private_repo. Не имеет эффекта, если репозиторий уже существует.
Инициализирует git-репозиторий в self.args.hub_model_id.
Указывает, является ли данный процесс локальным (например, на одной машине при распределённом обучении на нескольких машинах) основным процессом.
Является ли данный процесс глобальным основным процессом (при распределённом обучении на нескольких машинах значение True будет только для одного процесса).
log
< source >( logs: dictstart_time: float | None = None )
Ведите logs на различных объектах, отслеживающих обучение.
Создайте подкласс и переопределите этот метод, чтобы добавить собственное поведение.
log_metrics
< source >( splitmetrics )
Записывайте метрики в специально отформатированном виде.
В распределённой среде это выполняется только для процесса с рангом 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 и GPU 0 (если GPU присутствует). Как правило, этого достаточно, поскольку основной процесс выполняет основную часть работы, однако при использовании модельного параллелизма ситуация может отличаться: другие GPU могут потреблять разное количество видеопамяти. Аналогичная ситуация наблюдается и при использовании DataParallel, где GPU 0 может требовать значительно больше памяти, чем остальные, поскольку хранит градиенты и состояния оптимизатора для всех участвующих GPU. Возможно, в будущем эти отчёты будут расширены, чтобы учитывать и эти параметры.
Метрика CPU RAM измеряет RSS (Resident Set Size), которая включает как память, уникальную для процесса, так и память, разделяемую с другими процессами. Важно отметить, что в неё не входит выгруженная в подкачку память, поэтому отчёты могут быть неточными.
Пиковое потребление памяти CPU измеряется с помощью потока выборки. Из-за GIL в Python этот поток может не успеть выполнить замер в момент максимального потребления памяти, поэтому значение в отчёте может быть ниже фактического. Использование tracemalloc позволило бы зафиксировать точный пик потребления памяти, однако этот инструмент не отслеживает выделение памяти вне Python. Следовательно, если какое-либо расширение 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.
Поскольку вызовы evaluation могут происходить во время train, мы не можем обрабатывать вложенные вызовы, так как torch.cuda.max_memory_allocated представляет собой единый счётчик: если он сбрасывается вложенным вызовом eval, трекер train будет сообщать неверную информацию. Если эта проблема PyTorch будет решена, станет возможным сделать этот класс реентерабельным. До тех пор мы будем отслеживать только внешний уровень методов train, evaluate и predict. Это означает, что если eval вызывается во время train, именно последний учтёт потребление памяти как своим, так и первого.
Это также означает, что если какой-либо другой инструмент, используемый вместе с Trainer, вызывает torch.cuda.reset_peak_memory_stats, статистика пиковой памяти GPU может оказаться некорректной. Кроме того, Trainer нарушит нормальную работу любых таких инструментов, которые сами полагаются на вызов torch.cuda.reset_peak_memory_stats.
Для достижения наилучшей производительности при запуске в продакшене рекомендуется отключить профилирование памяти.
metrics_format
< source >( metrics: dict ) → metrics (dict[str, float])
Форматирует значения метрик Trainer в человекочитаемый вид.
Вспомогательная функция для получения количества образцов в ~torch.utils.data.DataLoader через обращение к его набору данных. Если атрибут dataloader.dataset не существует или не имеет длины, выполняется наилучшая возможная оценка.
pop_callback
< source >( callback: type[transformers.trainer_callback.TrainerCallback] | transformers.trainer_callback.TrainerCallback ) → TrainerCallback
Параметры
- callback (
typeили [`~transformers.TrainerCallback`]) — Класс TrainerCallback или экземпляр TrainerCallback. В первом случае будет удалён первый элемент этого класса, найденный в списке callback'ов.
Возвращает
Удаленный колбэк, если он был найден.
Удаляет обратный вызов из текущего списка TrainerCallback и возвращает его.
Если обратный вызов не найден, возвращается None (ошибка не возникает).
predict
< source >( test_dataset: Datasetignore_keys: list[str] | None = Nonemetric_key_prefix: str = 'test' )
Параметры
- test_dataset (
Dataset) — Набор данных, на котором выполняются предсказания. Если этоdatasets.Dataset, столбцы, не поддерживаемые методомmodel.forward(), автоматически удаляются. - ignore_keys (
list[str], необязательный) — Список ключей в выводе вашей модели (если он представляет собой словарь), которые следует игнорировать при сборе предсказаний. - metric_key_prefix (
str, необязательный, по умолчанию"test") — Необязательный префикс, используемый в качестве префикса ключа метрик. Например, метрика «bleu» будет называться «test_bleu», если префикс равен «test» (по умолчанию).
Выполняет предсказание и возвращает предсказания и потенциальные метрики.
В зависимости от набора данных и сценария использования ваш тестовый набор может содержать метки. В этом случае данный метод также вернёт метрики, как в evaluate().
Если ваши предсказания или метки имеют разную длину последовательности (например, потому что вы используете динамическое выравнивание в задаче классификации токенов), предсказания будут дополнены (справа), чтобы обеспечить возможность их объединения в один массив. Индекс дополнения равен -100.
Возвращает: NamedTuple Именованный кортеж со следующими ключами:
- predictions (
np.ndarray): Предсказания наtest_dataset. - label_ids (
np.ndarray, необязательный): Метки (если они содержались в наборе данных). - metrics (
dict[str, float], необязательный): Возможный словарь метрик (если набор данных содержал метки).
prediction_step
< source >( model: Moduleinputs: dictprediction_loss_only: boolignore_keys: list[str] | None = None ) → tuple[Optional[torch.Tensor], Optional[torch.Tensor], Optional[torch.Tensor]]
Параметры
- 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]]
Кортеж, содержащий loss, logits и labels (каждый из них является необязательным).
Выполните шаг оценки на model с использованием inputs.
Создайте подкласс и переопределите методы, чтобы внедрить собственное поведение.
push_to_hub
< source >( commit_message: str | None = 'End of training'blocking: bool = Truetoken: str | None = Nonerevision: str | None = Noneprivate: bool | None = None**kwargs )
Параметры
- commit_message (
str, необязательный, по умолчанию"End of training") — Сообщение для коммита при отправке. - blocking (
bool, необязательный, по умолчаниюTrue) — Определяет, должна ли функция возвращаться только после завершенияgit push. - token (
str, необязательный, по умолчаниюNone) — Токен с правом записи для перезаписи исходных аргументов Trainer. - revision (
str, необязательный) — Git-ревизия, от которой выполняется коммит. По умолчанию используется head ветки «main». - private (
bool, optional) — Определяет, следует ли сделать репозиторий приватным при его создании. По умолчанию используется значениеargs.hub_private_repo. Не имеет эффекта, если репозиторий уже существует. - kwargs (
dict[str, Any], необязательный) — Дополнительные именованные аргументы, передаваемые в create_model_card().
Загрузите self.model и self.processing_class в модельный хаб 🤗 в репозиторий self.args.hub_model_id.
remove_callback
< source >( callback: type[transformers.trainer_callback.TrainerCallback] | transformers.trainer_callback.TrainerCallback )
Параметры
- callback (
typeили [`~transformers.TrainerCallback]`) — Класс TrainerCallback или экземпляр TrainerCallback. В первом случае будет удалён первый элемент этого класса, найденный в списке callback'ов.
Удалить обратный вызов из текущего списка TrainerCallback.
save_metrics
< source >( splitmetricscombined = True )
Сохраните метрики в файл json для этого сплита, например, train_results.json.
В распределённой среде это выполняется только для процесса с рангом 0.
Чтобы понять метрики, прочитайте docstring функции log_metrics(). Единственное отличие состоит в том, что в текущем методе сохраняются необработанные числа без форматирования.
Сохранит модель, чтобы вы могли загрузить её снова с помощью from_pretrained().
Сохранение выполняется только из основного процесса.
Сохраняет состояние Trainer, так как Trainer.save_model сохраняет только токенизатор вместе с моделью.
В распределённой среде это выполняется только для процесса с рангом 0.
Вычисляет и возвращает следующие значения:
num_train_epochsnum_update_steps_per_epochnum_examplesnum_train_samplestotal_train_batch_sizesteps_in_epoch(всего батчей на эпоху)max_steps
Сохраните количество операций с плавающей точкой, затраченных на модель.
train
< source >( resume_from_checkpoint: str | bool | None = Nonetrial: optuna.Trial | dict[str, Any] | None = Noneignore_keys_for_eval: list[str] | None = None ) → TrainOutput
Параметры
- resume_from_checkpoint (
strилиbool, необязательный) — Если передана строка (str), это локальный путь к сохранённой контрольной точке, созданной предыдущим экземпляром Trainer. Если передано значениеbool, равноеTrue, загружается последняя контрольная точка из args.output_dir, сохранённая предыдущим экземпляром Trainer. Если параметр указан, обучение возобновляется из состояний модели/оптимизатора/планировщика, загруженных из этой контрольной точки. - trial (
optuna.Trialилиdict[str, Any], необязательный) — Запуск эксперимента или словарь гиперпараметров для поиска гиперпараметров. - ignore_keys_for_eval (
list[str], необязательный) — Список ключей в выводе вашей модели (если он представляет собой словарь), которые следует игнорировать при сборе предсказаний для оценки во время обучения.
Возвращает
TrainOutput
Объект, содержащий общее количество шагов, потерю обучения и метрики.
Основная точка входа для обучения.
training_step
< source >( model: Moduleinputs: dictnum_items_in_batch: typing.Union[int, torch.Tensor, NoneType] = None ) → torch.Tensor
Параметры
- model (
nn.Module) — Модель, подлежащая обучению. - inputs (
dict[str, torch.Tensor | Any]) — Входные данные и целевые значения модели.Словарь будет распакован перед передачей в модель. Большинство моделей ожидают целевые значения в аргументе
labels. Ознакомьтесь с документацией вашей модели, чтобы узнать все поддерживаемые аргументы.
Возвращает
torch.Tensor
Тензор с потерей обучения на этой мини-выборке.
Выполните шаг обучения на батче входных данных.
Создайте подкласс и переопределите методы, чтобы внедрить собственное поведение.
Seq2SeqTrainer
класс transformers.Seq2SeqTrainer
< source >( model: typing.Union[ForwardRef('PreTrainedModel'), torch.nn.Module, NoneType] = Noneargs: typing.Optional[ForwardRef('TrainingArguments')] = Nonedata_collator: typing.Optional[ForwardRef('DataCollator')] = Nonetrain_dataset: typing.Union[torch.utils.data.Dataset, ForwardRef('IterableDataset'), ForwardRef('datasets.Dataset'), NoneType] = Noneeval_dataset: typing.Union[torch.utils.data.Dataset, dict[str, torch.utils.data.Dataset], NoneType] = Noneprocessing_class: typing.Union[ForwardRef('PreTrainedTokenizerBase'), ForwardRef('BaseImageProcessor'), ForwardRef('FeatureExtractionMixin'), ForwardRef('ProcessorMixin'), NoneType] = Nonemodel_init: collections.abc.Callable[[], 'PreTrainedModel'] | None = Nonecompute_loss_func: collections.abc.Callable | None = Nonecompute_metrics: collections.abc.Callable[['EvalPrediction'], dict] | None = Nonecallbacks: list['TrainerCallback'] | None = Noneoptimizers: tuple = (None, None)preprocess_logits_for_metrics: collections.abc.Callable[[torch.Tensor, torch.Tensor], torch.Tensor] | None = None )
evaluate
< source >( eval_dataset: typing.Optional[torch.utils.data.Dataset] = Noneignore_keys: list[str] | None = Nonemetric_key_prefix: str = 'eval'**gen_kwargs )
Параметры
- eval_dataset (
Dataset, необязательный) — Передайте набор данных, если вы хотите переопределитьself.eval_dataset. Если это Dataset, столбцы, не поддерживаемые методомmodel.forward(), будут автоматически удалены. Он должен реализовывать метод__len__. - ignore_keys (
list[str], необязательный) — Список ключей в выводе вашей модели (если он представляет собой словарь), которые следует игнорировать при сборе предсказаний. - metric_key_prefix (
str, необязательный, по умолчанию"eval") — Необязательный префикс, используемый в качестве префикса ключей метрик. Например, метрика “bleu” будет называться “eval_bleu”, если префикс равен"eval"(по умолчанию) - max_length (
int, необязательный) — Максимальная длина целевой последовательности, используемая при генерации с помощью метода generate. - num_beams (
int, необязательный) — Количество лучей для beam search, которое будет использоваться при предсказании с методом generate. Значение 1 означает, что beam search не используется. - gen_kwargs —
Дополнительные аргументы, специфичные для
generate.
Запускает оценку и возвращает метрики.
Скрипт, вызывающий процесс, должен предоставлять метод для вычисления метрик, поскольку они зависят от задачи (передайте его в аргумент compute_metrics при инициализации).
Вы также можете создать подкласс и переопределить этот метод, чтобы добавить собственное поведение.
predict
< source >( test_dataset: Datasetignore_keys: list[str] | None = Nonemetric_key_prefix: str = 'test'**gen_kwargs )
Параметры
- test_dataset (
Dataset) — Набор данных, на котором выполняются предсказания. Если это Dataset, столбцы, не поддерживаемые методомmodel.forward(), автоматически удаляются. Должен реализовывать метод__len__ - ignore_keys (
list[str], необязательный) — Список ключей в выводе вашей модели (если он представляет собой словарь), которые следует игнорировать при сборе предсказаний. - metric_key_prefix (
str, необязательный, по умолчанию"eval") — Необязательный префикс, используемый в качестве префикса ключей метрик. Например, метрика “bleu” будет называться “eval_bleu”, если префикс равен"eval"(по умолчанию) - max_length (
int, необязательный) — Максимальная длина целевой последовательности, используемая при генерации с помощью метода generate. - num_beams (
int, необязательный) — Количество лучей для beam search, которое будет использоваться при предсказании с методом generate. Значение 1 означает, что beam search не используется. - gen_kwargs —
Дополнительные аргументы, специфичные для
generate.
Выполняет предсказание и возвращает предсказания и потенциальные метрики.
В зависимости от набора данных и сценария использования ваш тестовый набор может содержать метки. В этом случае данный метод также вернёт метрики, как в evaluate().
Если ваши предсказания или метки имеют разную длину последовательности (например, потому что вы используете динамическое выравнивание в задаче классификации токенов), предсказания будут дополнены (справа), чтобы обеспечить возможность их объединения в один массив. Индекс дополнения равен -100.
Возвращает: NamedTuple Именованный кортеж со следующими ключами:
- predictions (
np.ndarray): Предсказания наtest_dataset. - label_ids (
np.ndarray, необязательный): Метки (если они содержались в наборе данных). - metrics (
dict[str, float], необязательный): Возможный словарь метрик (если набор данных содержал метки).
TrainingArguments
класс transformers.TrainingArguments
< source >( output_dir: str | None = Noneper_device_train_batch_size: int = 8num_train_epochs: float = 3.0max_steps: int = -1learning_rate: float = 5e-05lr_scheduler_type: transformers.trainer_utils.SchedulerType | str = 'linear'lr_scheduler_kwargs: dict | str | None = Nonewarmup_steps: float = 0optim: transformers.training_args.OptimizerNames | str = 'adamw_torch_fused'optim_args: str | None = Noneweight_decay: float = 0.0adam_beta1: float = 0.9adam_beta2: float = 0.999adam_epsilon: float = 1e-08optim_target_modules: None | str | list[str] = Nonegradient_accumulation_steps: int = 1average_tokens_across_devices: bool = Truemax_grad_norm: float = 1.0label_smoothing_factor: float = 0.0bf16: bool = Falsefp16: bool = Falsebf16_full_eval: bool = Falsefp16_full_eval: bool = Falsetf32: bool | None = Noneactivation_checkpointing: bool | None = Noneactivation_checkpointing_kwargs: dict[str, typing.Any] | str | None = Nonegradient_checkpointing: bool | None = Nonegradient_checkpointing_kwargs: dict[str, typing.Any] | str | None = Nonetorch_compile: bool = Falsetorch_compile_backend: str | None = Nonetorch_compile_mode: str | None = Noneuse_liger_kernel: bool = Falseliger_kernel_config: dict[str, bool] | None = Noneuse_cache: bool = Falseneftune_noise_alpha: float | None = Nonetorch_empty_cache_steps: int | None = Noneauto_find_batch_size: bool = Falselogging_strategy: transformers.trainer_utils.IntervalStrategy | str = 'steps'logging_steps: float = 500logging_first_step: bool = Falselog_on_each_node: bool = Truelogging_nan_inf_filter: bool = Trueinclude_num_input_tokens_seen: str | bool = 'no'log_level: str = 'passive'log_level_replica: str = 'warning'disable_tqdm: bool | None = Nonereport_to: None | str | list[str] = 'none'run_name: str | None = Noneproject: str = 'huggingface'trackio_space_id: str | None = Nonetrackio_bucket_id: str | None = Nonetrackio_static_space_id: typing.Union[str, NoneType, typing.Literal[False]] = Noneeval_strategy: transformers.trainer_utils.IntervalStrategy | str = 'no'eval_steps: float | None = Noneeval_delay: float = 0per_device_eval_batch_size: int = 8prediction_loss_only: bool = Falseeval_on_start: bool = Falseeval_do_concat_batches: bool = Trueeval_use_gather_object: bool = Falseeval_accumulation_steps: int | None = Noneinclude_for_metrics: list = <factory>batch_eval_metrics: bool = Falsesave_only_model: bool = Falsesave_strategy: transformers.trainer_utils.SaveStrategy | str = 'steps'save_steps: float = 500save_on_each_node: bool = Falsesave_total_limit: int | None = Noneenable_jit_checkpoint: bool = Falsepush_to_hub: bool = Falsehub_token: str | None = Nonehub_private_repo: bool | None = Nonehub_model_id: str | None = Nonehub_strategy: transformers.trainer_utils.HubStrategy | str = 'every_save'hub_always_push: bool = Falsehub_revision: str | None = Noneload_best_model_at_end: bool = Falsemetric_for_best_model: str | None = Nonegreater_is_better: bool | None = Noneignore_data_skip: bool = Falserestore_callback_states_from_checkpoint: bool = Falsefull_determinism: bool = Falseseed: int = 42data_seed: int | None = Noneuse_cpu: bool = Falseaccelerator_config: dict | str | None = Noneparallelism_config: typing.Any | None = Nonedataloader_drop_last: bool = Falsedataloader_num_workers: int = 0dataloader_pin_memory: bool = Truedataloader_persistent_workers: bool = Falsedataloader_prefetch_factor: int | None = Nonedataloader_multiprocessing_context: str | None = Nonedataloader_in_order: bool = Trueremove_unused_columns: bool = Truelabel_names: list[str] | None = Nonetrain_sampling_strategy: str = 'random'length_column_name: str = 'length'ddp_find_unused_parameters: bool | None = Noneddp_bucket_cap_mb: int | None = Noneddp_broadcast_buffers: bool | None = Noneddp_static_graph: bool | None = Noneddp_backend: str | None = Noneddp_timeout: int = 1800fsdp: str | None = Nonefsdp_config: dict[str, typing.Any] | str | None = Nonedeepspeed: dict | str | None = Nonedebug: str | list[transformers.debug_utils.DebugOption] = ''skip_memory_metrics: bool = Truedo_train: bool = Falsedo_eval: bool = Falsedo_predict: bool = Falseresume_from_checkpoint: str | None = Nonelocal_rank: int = -1 )
Параметры
- output_dir (
str, необязательный, по умолчанию"trainer_output") — Каталог, в который будут записаны предсказания модели и контрольные точки.
Длительность обучения и размер батча
- per_device_train_batch_size (
int, необязательный, по умолчанию 8) — Размер батча на устройство. Глобальный размер батча вычисляется как:per_device_train_batch_size * number_of_devicesв конфигурациях с несколькими GPU или распределённых средах. - num_train_epochs(
float, optional, по умолчанию 3.0) — Общее количество эпох обучения, которые необходимо выполнить (если значение не является целым числом, будет выполнена доля последней эпохи, соответствующая дробной части, после чего обучение будет остановлено). - max_steps (
int, необязательный, по умолчанию -1) — Переопределяетnum_train_epochs. Если установлено положительное число, определяет общее количество шагов обучения. Для конечного набора данных обучение повторяется по всему набору (если все данные исчерпаны), пока не будет достигнуто значениеmax_steps. Это значение должно быть положительным, если набор данных для обучения не реализует__len__(например, потоковый набор данных), поскольку в этом случае общее количество шагов невозможно определить и оно необходимо для ограничения цикла обучения и настройки планировщика скорости обучения.
Коэффициент обучения и планировщик
- learning_rate (
float, необязательный, по умолчанию 5e-5) — Начальная скорость обучения для оптимизатора. Обычно это пиковая скорость обучения при использовании планировщика с warmup. - lr_scheduler_type (
strили SchedulerType, необязательный, по умолчанию"linear") — Тип планировщика скорости обучения. См. SchedulerType для всех допустимых значений. Частые варианты:- “linear” = get_linear_schedule_with_warmup()
- “cosine” = get_cosine_schedule_with_warmup()
- “constant” = get_constant_schedule()
- “constant_with_warmup” = get_constant_schedule_with_warmup()
- lr_scheduler_kwargs (
dictилиstr, необязательный, по умолчаниюNone) — Дополнительные аргументы для lr_scheduler. См. документацию каждого планировщика, чтобы узнать допустимые значения. - warmup_steps (
intилиfloat, необязательный, по умолчанию 0) — Количество шагов для линейного warmup с 0 доlearning_rate. Warmup помогает стабилизировать обучение на начальном этапе. Может быть:- Целое число: точное количество шагов разгона
- Float в диапазоне [0, 1): интерпретируется как доля от общего числа шагов обучения
Оптимизатор
- optim (
strилиtraining_args.OptimizerNames, необязательный, по умолчанию"adamw_torch"(для torch>=2.8"adamw_torch_fused")) — Оптимизатор для использования. Основные варианты:"adamw_torch": AdamW из PyTorch (рекомендуемое значение по умолчанию)"adamw_torch_fused": объединённое ядро AdamW"adamw_hf": реализация AdamW от HuggingFace"sgd": стохастический градиентный спуск с импульсом"adafactor": Оптимизатор с эффективным использованием памяти для больших моделей"adamw_8bit": 8-битный AdamW (требуется bitsandbytes) См.OptimizerNamesдля полного списка.
- optim_args (
str, необязательный) — Необязательные аргументы, передаваемые оптимизаторам, таким как AnyPrecisionAdamW, AdEMAMix и GaLore. - weight_decay (
float, необязательный, по умолчанию 0) — Коэффициент затухания весов, применяемый оптимизатором (а не функцией потерь). Добавляет L2-регуляризацию для предотвращения переобучения, штрафуя за большие значения весов. Автоматически исключает параметры 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 и алгоритма APOLLO. Подробнее см. реализацию GaLore и реализацию 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.При использовании накопления градиентов один «шаг» считается как один шаг с обратным распространением. Следовательно, логирование, оценка и сохранение будут выполняться каждые
gradient_accumulation_steps × xxx_stepобучающих примеров. - average_tokens_across_devices (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли усреднять токены между устройствами. Если включено, для синхронизации num_tokens_in_batch с целью точного вычисления потерь будет использоваться all_reduce. Ссылка: https://github.com/huggingface/transformers/issues/34242 - max_grad_norm (
float, необязательный, по умолчанию 1.0) — Максимальная норма градиента для обрезки градиентов. Применяется после обратного прохода, перед шагом оптимизатора. Предотвращает взрыв градиентов, масштабируя градиенты вниз, если их глобальная норма превышает этот порог. Установите 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 до 0.1.
Обучение с смешанной точностью
- bf16 (
bool, необязательный, по умолчаниюFalse) — Включает обучение с смешанной точностью bfloat16 (BF16). Как правило, предпочтительнее FP16 благодаря лучшей численной устойчивости и отсутствию необходимости масштабирования потерь. - fp16 (
bool, необязательный, по умолчаниюFalse) — Включает обучение с использованием смешанной точности float16 (FP16). Если ваше оборудование поддерживает BF16, рекомендуется использовать его вместо FP16. - bf16_full_eval (
bool, необязательный, по умолчаниюFalse) — Использовать полную точность BF16 для оценки (а не только смешанную точность). Быстрее и экономит память, но может незначительно влиять на значения метрик. Применяется только во время оценки. - fp16_full_eval (
bool, необязательный, по умолчаниюFalse) — Использовать полную точность FP16 для оценки (а не только смешанную точность). Быстрее и экономит память, но может незначительно влиять на значения метрик. Применяется только во время оценки. - tf32 (
bool, необязательный) — Включает режим TensorFloat-32 (TF32) на GPU Ampere и новее. TF32 использует точность 19 бит для матричных умножений (вместо 23 бит у FP32), что обеспечивает ускорение до 8 раз при незначительной потере точности. Значение по умолчанию зависит от версии PyTorch. См. документацию по TF32.
Контрольные точки активаций
- activation_checkpointing (
bool, необязательный, по умолчаниюFalse) — Включает контрольную точку активаций, чтобы экономить память за счёт вычислений. Снижает потребление памяти, очищая активации на этапе прямого прохода и пересчитывая их на этапе обратного прохода. Позволяет обучать более крупные модели или использовать большие размеры пакетов, но замедляет обучение примерно на 20%. - activation_checkpointing_kwargs (
dict, необязательный, по умолчаниюNone) — Именованные аргументы, передаваемые вactivation_checkpointing_enable().every_n_layersвыполняет checkpoint только каждого 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, необязательный) — Бэкенд для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. Повышает производительность при работе с несколькими GPU примерно на 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. Это может значительно повысить качество модели при дообучении по инструкциям. См. оригинальную статью и исходный код. Поддерживаются моделиPreTrainedModelиз transformers, а такжеPeftModelиз peft. В оригинальной статье использовались значения в диапазоне [5.0, 15.0]. - torch_empty_cache_steps (
int, optional) — Number of steps to wait before callingtorch.<device>.empty_cache(). If left unset or set to None, cache will not be emptied. This can help avoid CUDA out-of-memory errors by lowering peak VRAM usage at a cost of about 10% slower performance. - auto_find_batch_size (
bool, необязательный, по умолчаниюFalse) — Определять ли размер обучающей выборки, который поместится в память, автоматически с помощью экспоненциального затухания, чтобы избежать ошибок CUDA Out-of-Memory. Размер выборки для оценки не изменяется.
Журналирование и мониторинг обучения
- logging_strategy (
strили 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установлен на warning или ниже, иначе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, wandb, mlflow, comet и swanlab. - project (
str, необязательный, по умолчанию"huggingface") — Имя проекта, используемого для логирования. В настоящее время используется только Trackio. - trackio_space_id (
strorNone, необязательный, по умолчаниюNone) — Идентификатор Hugging Face Space, используемый для живого логирования Trackio с Space на базе Gradio. Должен быть полным именем Space, например'username/reponame'или'orgname/reponame', или просто'reponame'(Space будет создан в пространстве имён текущего пользователя). ЕслиNone, метрики записываются только в локальную директорию (без Space на Hub). У этого Gradio Space есть доступ на чтение и запись к Bucket Trackio, что необходимо, пока обучение идёт—например, при возобновлении незавершённого запуска или агрегации логов с нескольких машин. Space будет публичным, если не установитьhub_private_repo=Trueили если по умолчанию в вашей организации создаются приватные Spaces. - trackio_bucket_id (
strилиNone, необязательный, по умолчаниюNone) — Необязательный идентификатор Hugging Face Bucket для Trackio. Если не задан, Trackio генерирует его. Используется вместе с Gradio Space (trackio_space_id) и при развёртывании статического Space (trackio_static_space_idне равноFalse). - trackio_static_space_id (
str,FalseилиNone, необязательный, по умолчаниюNone) — Идентификатор Hugging Face Space, который будет использоваться для статического Space, создаваемого после завершения обучения. Должен представлять собой полное имя Space, например'username/reponame'или'orgname/reponame', либо просто'reponame'(Space будет создан в пространстве имён текущего пользователя). Если значение равно False, статический Space не будет создан. Если значение равно None, а модель загружается на Hub, будет создан статический Space с именем по умолчанию, и на карточке модели появится ссылка на него. Space будет публичным, если не установленоhub_private_repo=Trueили если по умолчанию в вашей организации создаются приватные Spaces.
Оценка
- eval_strategy (
strили 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) — Определяет, следует ли выполнять рекурсивный сбор объектов из вложенных списков/кортежей/словарей объектов со всех устройств. Этот параметр следует включать только в том случае, если возвращаемые данные не являются тензорами; PyTorch активно не рекомендует его использование. Это полезно, когда структура меток нестандартная, как, например, в задачах компьютерного зрения. - eval_accumulation_steps (
int, необязательный) — Количество шагов предсказаний, для которых накапливаются выходные тензоры, прежде чем результаты будут перемещены на CPU. Если значение не задано, все предсказания накапливаются на ускорителе устройства перед перемещением на CPU (быстрее, но требует больше памяти).
Вычисление метрик
- include_for_metrics (
list[str], необязательный, по умолчанию[]) — Дополнительные данные, которые нужно передать в функциюcompute_metrics, если они необходимы для вычисления метрик. Варианты, которые можно добавить в списокinclude_for_metrics:"inputs": входные данные, передаваемые в модель, предназначенные для вычисления метрик, зависящих от входных данных."loss": Значения потерь, вычисленные во время оценки, предназначенные для расчёта метрик, зависящих от потерь.
- batch_eval_metrics (
bool, необязательный, по умолчаниюFalse) — Если установлено вTrue, то при оценке функция compute_metrics будет вызываться в конце каждой партии для накопления статистики, вместо того чтобы сохранять все logits оценки в памяти. Если установлено вTrue, необходимо передать функцию compute_metrics, принимающую булевый аргументcompute_result, который при значенииTrueзапускает вычисление итоговой глобальной статистики на основе накопленной вами статистики по партиям на наборе для оценки.
Сохранение контрольных точек
- save_only_model (
bool, необязательный, по умолчаниюFalse) — Сохраняет только веса модели, а не состояние оптимизатора/планировщика/RNG. Значительно уменьшает размер контрольной точки, но не позволяет возобновить обучение с этой контрольной точки. Используйте, если вам нужна только обученная модель для инференса, а не для продолжения обучения. Загрузить модель можно только с помощью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сохраняет 4 самые последние и лучшую - enable_jit_checkpoint (
bool, необязательный, по умолчаниюFalse) — Включает Just-In-Time checkpointing по сигналу SIGTERM для корректного завершения работы на preemptible-нагрузках. Важно: Настройте период корректного завершения работы вашего оркестратора, чтобы обеспечить достаточное время. Для Kubernetes установитеterminationGracePeriodSeconds(значение по умолчанию 30 с обычно недостаточно). Для Slurm используйте--signal=TERM@<seconds>. Требуемый период корректного завершения ≥ время самой длительной итерации + время сохранения checkpoint.
Интеграция с Hugging Face Hub
- push_to_hub (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли отправлять модель на Hub каждый раз при сохранении. Если эта опция включена, вoutput_dirбудет создан git-каталог, синхронизированный с репозиторием (определяемым параметромhub_model_id), и содержимое будет отправляться каждый раз при срабатывании сохранения (в зависимости от вашегоsave_strategy). Вызов save_model() также запускает отправку. - hub_token (
str, необязательный) — Токен, используемый для загрузки модели на Hub. По умолчанию используется токен из каталога кэша, полученный с помощью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": выполнять push только в конце обучения"every_save": Push при каждом сохранении (асинхронно, чтобы не блокировать обучение)"checkpoint": как"every_save", но дополнительно выгружает последний чекпоинт в подпапку"last-checkpoint"для удобного возобновления"all_checkpoints": Загружать все контрольные точки по мере их появления
- hub_always_push (
bool, необязательный, по умолчаниюFalse) — Если это значение не равноTrue,Trainerпропустит отправку контрольной точки, если предыдущая отправка ещё не завершена. - hub_revision (
str, необязательный) — Ревизия, используемая при отправке на Hub. Может быть именем ветки, тегом или хэшем коммита.
Лучшее отслеживание моделей
- load_best_model_at_end (
bool, необязательный, по умолчаниюFalse) — Загружает лучшую контрольную точку в конце обучения. Требуется, чтобы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) — Восстанавливать состояния callback'ов из контрольной точки при возобновлении обучения. ЕслиTrue, callback'ы, переданные в Trainer, будут перезаписаны, если они присутствуют в контрольной точке.
Воспроизводимость
- full_determinism (
bool, необязательный, по умолчаниюFalse) — ЕслиTrue, вместо set_seed() вызывается enable_full_determinism() для обеспечения воспроизводимых результатов при распределённом обучении. Важно: это негативно сказывается на производительности, поэтому используйте только для отладки. - 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 вместо создания нового. Может вызывать проблемы при тюнинге гиперпараметров.- Путь к файлу конфигурации 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вместо создания нового. Может вызывать проблемы при подстройке гиперпараметров.
- Путь к файлу конфигурации JSON:
- parallelism_config (
ParallelismConfig, необязательный) — Конфигурация параллелизма для запуска обучения. Требуется Accelerate1.10.1
Dataloader
- 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 рабочих процессов в активном состоянии. Потенциально может ускорить обучение, но увеличит потребление оперативной памяти. По умолчанию установлено значениеFalse. - dataloader_prefetch_factor (
int, необязательный) — Количество батчей, загружаемых заранее каждым воркером. Значение 2 означает, что в общей сложности будет предварительно загружено 2 * num_workers батчей всеми воркерами. - dataloader_multiprocessing_context (
str, необязательный) — Метод запуска процессов для рабочих процессов загрузки данных ("fork","spawn"или"forkserver"). По умолчанию используется метод запуска по умолчанию в PyTorch, за исключением случая MPS сdataloader_num_workers > 1, где по умолчанию используется"fork". Используйте"spawn", если данные стримятся из источников, объекты которых не поддерживают fork (например, HDFS черезpyarrow). При использовании"spawn"любой пользовательскийcollate_fnили код датасета должен быть импортируемым на уровне модуля (без лямбд и замыканий). - 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вашей модели принимает несколько тензоров меток (например, в задаче извлечения ответа). - train_sampling_strategy (
str, необязательный, по умолчанию"random") — Сэмплер, используемый для training dataloader. Допустимые значения:"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.
FSDP (Fully Sharded Data Parallel)
- 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, параметры останутся собранными между прямым и обратным проходами, что позволяет избежать повторного all-gather, но приводит к более высокому пиковому потреблению памяти. - cpu_offload (
bool, необязательный, по умолчаниюFalse): Выгружает параметры и градиенты на CPU, когда они не используются, для экономии памяти GPU. - activation_checkpointing (
bool, необязательный, по умолчаниюFalse): УстановитеTrue, чтобы уменьшить потребление памяти за счёт пересчёта активаций во время обратного прохода. При использовании FSDP предпочитайте этот параметр аргументу обученияactivation_checkpointing, который вносит избыточный all-gather в обратный проход. - cpu_ram_efficient_loading (
bool, необязательный, по умолчаниюFalse): УстановитеTrue, чтобы загрузить предобученную контрольную точку только в первом процессе. Остальные процессы начинают работу с пустыми весами и получают их через broadcast. - state_dict_type (
str, необязательный, по умолчанию"FULL_STATE_DICT"): Формат контрольной точки:"FULL_STATE_DICT"(один файл, совместимый с HF) или"SHARDED_STATE_DICT"(один файл на каждый ранк, быстрее для больших моделей). - auto_wrap_policy (
str, необязательный, по умолчанию"TRANSFORMER_BASED_WRAP"): Политика автообёртки. Выберите"TRANSFORMER_BASED_WRAP","SIZE_BASED_WRAP"или"NO_WRAP". - transformer_layer_cls_to_wrap (
list[str], optional): Имена классов трансформерных слоёв (с учётом регистра), которые нужно обернуть, например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 Training. Экспериментальная функция. - xla_fsdp_settings (
dict, необязательный): Словарь параметров обёртки XLA FSDP. Полный список параметров см. в исходном коде XLA FSDP. - xla_fsdp_grad_ckpt (
bool, необязательный, по умолчаниюFalse): УстановитеTrue, чтобы использовать градиентный чекпоинтинг для каждого вложенного слоя, обёрнутого XLA FSDP. Требуетxla=Trueи политики автообёртывания (min_num_paramsилиtransformer_layer_cls_to_wrap).
- version (
DeepSpeed
- deepspeed (
strилиdict, необязательный) — Включает интеграцию с . Допустимые значения:- Путь к файлу конфигурации DeepSpeed в формате JSON:
"ds_config.json" - Конфигурация загружена в виде словаря
Если используется инициализация ZeRO, создайте экземпляр модели после инициализации
TrainingArguments, иначе ZeRO не будет применён.
- Путь к файлу конфигурации DeepSpeed в формате JSON:
Отладка и профилирование (экспериментально)
- debug (
strили списокDebugOption, , необязательный, по умолчанию"") — Включает одну или несколько функций отладки. Это экспериментальная функция. Доступные варианты:- “underflow_overflow”: обнаруживает переполнение во входных/выходных данных модели и сообщает о последних кадрах, приведших к событию
- “tpu_metrics_debug”: выводить отладочные метрики на TPU
- skip_memory_metrics (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли пропускать добавление отчётов профилировщика памяти в метрики. По умолчанию это пропускается, так как замедляет скорость обучения и оценки.
Флаги внешнего скрипта (не используются в Trainer)
- do_train (
bool, необязательный, по умолчаниюFalse) — Указывает, следует ли запускать обучение. Этот аргумент не используется непосредственно в Trainer; он предназначен для использования в ваших скриптах обучения и оценки. - do_eval (
bool, необязательный) — Указывает, следует ли выполнять оценку на валидационном наборе данных. Будет установлено вTrue, еслиeval_strategyотличается от"no". Этот аргумент не используется непосредственно Trainer, он предназначен для использования в ваших скриптах обучения/оценки. - do_predict (
bool, необязательный, по умолчаниюFalse) — Указывает, следует ли выполнять предсказания на тестовом наборе данных. Этот аргумент не используется непосредственно в Trainer, он предназначен для использования в ваших скриптах обучения/оценки. - resume_from_checkpoint (
str, необязательный) — Путь к папке с валидной контрольной точкой для вашей модели. Этот аргумент не используется непосредственно Trainer, он предназначен для использования в ваших скриптах обучения/оценки.
Класс конфигурации для управления всеми аспектами обучения модели с помощью Trainer. TrainingArguments централизует все гиперпараметры, настройки оптимизации, параметры логирования и инфраструктурные решения, необходимые для обучения.
HfArgumentParser позволяет преобразовать этот класс в аргументы argparse, которые можно указать в командной строке.
Возвращает уровень журнала, который будет использоваться в зависимости от того, является ли данный процесс основным процессом узла 0, основным процессом узла, отличного от 0, или неосновным процессом.
Для основного процесса уровень журнала по умолчанию соответствует установленному уровню логирования (logging.WARNING, если вы ничего не меняли), если он не переопределён аргументом log_level.
Для процессов-реплик уровень журнала по умолчанию составляет logging.WARNING, если он не переопределён аргументом log_level_replica.
Выбор между настройками основного процесса и процесса-реплики определяется по возвращаемому значению should_log.
Получить количество шагов, используемых для линейного разгона.
main_process_first
< source >( local = Truedesc = 'work' )
Параметры
- local (
bool, необязательный, по умолчаниюTrue) — еслиTrue, «first» означает процесс с рангом 0 на каждом узле; еслиFalse, «first» означает процесс с рангом 0 на узле с рангом 0. В многоузловой среде с общей файловой системой, скорее всего, стоит использоватьlocal=False, чтобы обработку выполнял только главный процесс первого узла. Если же файловая система не общая, обработку должен выполнять главный процесс каждого узла, что и является поведением по умолчанию. - desc (
str, необязательный, по умолчанию"work") — описание задачи, используемое в журналах отладки
Контекстный менеджер для распределённой среды torch, в котором необходимо выполнить определённые действия на основном процессе, заблокировав при этом реплики, а по завершении — разблокировать их.
Одно из таких применений — функция map в datasets, которая для эффективности должна выполняться один раз в основном процессе, а по завершении сохраняет кэшированную версию результатов, которая затем автоматически загружается репликами.
set_dataloader
< source >( train_batch_size: int = 8eval_batch_size: int = 8drop_last: bool = Falsenum_workers: int = 0pin_memory: bool = Truepersistent_workers: bool = Falseprefetch_factor: int | None = Nonemultiprocessing_context: str | None = Nonein_order: bool = Trueauto_find_batch_size: bool = Falseignore_data_skip: bool = Falsesampler_seed: int | None = None )
Параметры
- drop_last (
bool, необязательный, по умолчаниюFalse) — Указывает, следует ли отбрасывать последний неполный пакет (если длина набора данных не делится на размер пакета) или нет. - num_workers (
int, необязательный, по умолчанию 0) — Количество подпроцессов, используемых для загрузки данных (только PyTorch). Значение 0 означает, что данные будут загружаться в основном процессе. - pin_memory (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли закреплять память в загрузчиках данных. По умолчанию установлено значениеTrue. - persistent_workers (
bool, необязательный, по умолчаниюFalse) — Если True, загрузчик данных не завершает процессы рабочих процессов после однократного потребления набора данных. Это позволяет сохранять экземпляры Dataset рабочих процессов в активном состоянии. Может потенциально ускорить обучение, но увеличит потребление ОЗУ. По умолчаниюFalse. - prefetch_factor (
int, необязательный) — Количество батчей, загружаемых заранее каждым воркером. Значение 2 означает, что в общей сложности будет предварительно загружено 2 * num_workers батчей всеми воркерами. - multiprocessing_context (
str, необязательный) — Метод запуска процессов для рабочих процессов загрузки данных ("fork","spawn"или"forkserver"). По умолчанию используется метод запуска по умолчанию в PyTorch. Используйте"spawn"при потоковой передаче из источников, объекты которых не поддерживают fork (например, HDFS черезpyarrow). При использовании"spawn"любой пользовательскийcollate_fnили код датасета должен быть импортируемым на уровне модуля (без лямбд и замыканий). - in_order (
bool, необязательный, по умолчаниюTrue) — ЕслиTrue, загрузчик данных возвращает батчи в том порядке, в котором были запущены воркеры. УстановитеFalse, чтобы возвращать батчи сразу по мере их готовности; это может снизить хвостовую задержку для стриминговых нагрузокIterableDataset. Требуется PyTorch >= 2.6. - auto_find_batch_size (
bool, необязательный, по умолчаниюFalse) — Определять ли размер батча, который поместится в память, автоматически с помощью экспоненциального затухания, чтобы избежать ошибок CUDA Out-of-Memory. Требуется установка accelerate (pip install accelerate) - ignore_data_skip (
bool, необязательный, по умолчаниюFalse) — При возобновлении обучения определяет, нужно ли пропускать эпохи и батчи, чтобы загрузка данных находилась на том же этапе, что и в предыдущем обучении. Если установлено вTrue, обучение начнётся быстрее (поскольку этап пропускания может занимать много времени), но результаты не будут совпадать с теми, которые были бы получены при продолжении прерванного обучения. - sampler_seed (
int, необязательный) — Случайный сид, используемый с сэмплерами данных. Если не задан, генераторы случайных чисел для выборки данных будут использовать тот же сид, что иself.seed. Это позволяет обеспечить воспроизводимость выборки данных независимо от сида модели.
Метод, который объединяет все аргументы, связанные с созданием загрузчиков данных.
set_evaluate
< source >( strategy: str | transformers.trainer_utils.IntervalStrategy = 'no'steps: int = 500batch_size: int = 8accumulation_steps: int | None = Nonedelay: float | None = Noneloss_only: bool = False )
Параметры
- strategy (
strили IntervalStrategy, , необязательный, по умолчанию"no") — Стратегия оценки, применяемая во время обучения. Возможные значения:"no": Оценка не выполняется во время обучения."steps": Оценка выполняется (и логируется) каждыеsteps."epoch": Оценка выполняется в конце каждой эпохи.
Установка значения
strategy, отличного от"no", приводит к присвоениюself.do_evalзначенияTrue. - steps (
int, необязательный, по умолчанию 500) — Число шагов обновления между двумя оценками, еслиstrategy="steps". - batch_size (
intнеобязательный, по умолчанию 8) — Размер батча на устройство (ядро GPU/TPU/CPU…), используемый для оценки. - accumulation_steps (
int, необязательный) — Количество шагов предсказания, в течение которых накапливаются выходные тензоры, прежде чем результаты будут перемещены на CPU. Если параметр не задан, все предсказания накапливаются на GPU/TPU перед перемещением на CPU (быстрее, но требует больше памяти). - delay (
float, необязательный) — Количество эпох или шагов, которые нужно пропустить перед тем, как можно будет выполнить первую оценку, в зависимости от eval_strategy. - loss_only (
bool, необязательный, по умолчаниюFalse) — Игнорирует все выходные данные, кроме loss.
Метод, который объединяет все аргументы, связанные с оценкой.
set_logging
< source >( strategy: str | transformers.trainer_utils.IntervalStrategy = 'steps'steps: int = 500report_to: str | list[str] = 'none'level: str = 'passive'first_step: bool = Falsenan_inf_filter: bool = Falseon_each_node: bool = Falsereplica_level: str = 'passive' )
Параметры
- strategy (
strили IntervalStrategy, , необязательный, по умолчанию"steps") — Стратегия ведения журнала во время обучения. Возможные значения:"no": во время обучения ведение журнала не выполняется."epoch": Логирование выполняется в конце каждой эпохи."steps": Логирование выполняется каждыеlogging_steps.
- steps (
int, необязательный, по умолчанию 500) — Количество шагов обновления между двумя записями в журнал, еслиstrategy="steps". - level (
str, необязательный, по умолчанию"passive") — уровень ведения журнала для основного процесса. Допустимые значения — строки, соответствующие уровням журнала:"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 влияет только на логирование значений потерь и не изменяет способ вычисления градиента или его применения к модели.nan_inf_filterвлияет только на логирование значений функции потерь и не изменяет способ вычисления градиента или его применения к модели. - on_each_node (
bool, необязательный, по умолчаниюTrue) — В многоузловом распределённом обучении определяет, следует ли выполнять логирование с уровнемlog_levelна каждом узле или только на главном узле. - replica_level (
str, необязательный, по умолчанию"passive") — Уровень журнала для использования на репликах. Те же варианты, что и уlog_level
Метод, который объединяет все аргументы, связанные с ведением журнала.
set_lr_scheduler
< source >( name: str | transformers.trainer_utils.SchedulerType = 'linear'num_epochs: float = 3.0max_steps: int = -1warmup_steps: float = 0 )
Параметры
- name (
strили SchedulerType, необязательный, по умолчанию"linear") — Тип планировщика, который следует использовать. См. документацию SchedulerType для всех допустимых значений. - num_epochs(
float, необязательный, по умолчанию 3.0) — Общее количество эпох обучения, которые необходимо выполнить (если значение не является целым числом, будет выполнена доля последней эпохи, соответствующая дробной части, после чего обучение будет остановлено). - max_steps (
int, необязательный, по умолчанию -1) — Если установлено положительное число, определяет общее количество шагов обучения. Переопределяетnum_train_epochs. Для конечного набора данных обучение повторяется по всему набору (если все данные исчерпаны), пока не будет достигнуто значениеmax_steps. Это значение должно быть положительным, если обучающий набор данных не реализует__len__(например, потоковый набор данных), поскольку в этом случае общее количество шагов невозможно определить, и оно необходимо для ограничения цикла обучения и настройки планировщика скорости обучения. - warmup_steps (
float, необязательный, по умолчанию 0) — Количество шагов, используемых для линейного разгона с 0 доlearning_rate. Должно быть целым числом или дробным в диапазоне[0,1). Если значение меньше 1, оно интерпретируется как доля шагов, используемых для линейного разгона с 0 доlearning_rate.
Метод, который объединяет все аргументы, связанные с планировщиком скорости обучения и его гиперпараметрами.
set_optimizer
< source >( name: str | transformers.training_args.OptimizerNames = 'adamw_torch'learning_rate: float = 5e-05weight_decay: float = 0beta1: float = 0.9beta2: float = 0.999epsilon: float = 1e-08args: str | None = None )
Параметры
- name (
strилиtraining_args.OptimizerNames, необязательный, по умолчанию"adamw_torch") — Оптимизатор, который будет использоваться:"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").
Метод, который перегруппировывает все аргументы, связанные с оптимизатором и его гиперпараметрами.
set_push_to_hub
< source >( model_id: strstrategy: str | transformers.trainer_utils.HubStrategy = 'every_save'token: str | None = Noneprivate_repo: bool | None = Nonealways_push: bool = Falserevision: str | None = None )
Параметры
- model_id (
str) — Имя репозитория, с которым нужно поддерживать синхронизацию с локальным output_dir. Это может быть простой идентификатор модели, в этом случае модель будет загружена в ваше пространство имён. В противном случае следует указать полное имя репозитория, например"user_name/model", что позволяет загружать модель в организацию, участником которой вы являетесь, с помощью"organization_name/model". - strategy (
strилиHubStrategy, необязательный, по умолчанию"every_save") — Определяет, что именно и когда отправляется в Hub. Возможные значения:"end": при вызове метода save_model() загружает модель, её конфигурацию, processing_class (например, tokenizer, если он был передан в Trainer) и черновик карточки модели."every_save": при каждом сохранении модели выполняется публикация (push) модели, её конфигурации, processing_class (например, токенизатора, если он был передан в Trainer) и черновика model card. Публикации выполняются асинхронно, чтобы не блокировать обучение; если сохранения происходят очень часто, новая публикация предпринимается только после завершения предыдущей. В конце обучения выполняется финальная публикация с итоговой моделью."checkpoint": как"every_save", но последняя контрольная точка также сохраняется в подпапке с именем last-checkpoint, что позволяет легко возобновить обучение с помощьюtrainer.train(resume_from_checkpoint="last-checkpoint")."all_checkpoints": как"checkpoint", но все контрольные точки загружаются в том порядке, в котором они появляются в выходной папке (в результате в вашем конечном репозитории будет одна папка контрольной точки на каждую папку)
- token (
str, необязательный) — Токен, используемый для загрузки модели на Hub. По умолчанию используется токен из папки кэша, полученный с помощьюhf auth login. - private_repo (
bool, необязательный, по умолчаниюFalse) — Определяет, будет ли репозиторий приватным. Если указаноNone(по умолчанию), репозиторий будет публичным, если только по умолчанию для организации не задан приватный доступ. Это значение игнорируется, если репозиторий уже существует. - always_push (
bool, необязательный, по умолчаниюFalse) — Если это значение не равноTrue,Trainerпропустит публикацию контрольной точки, если предыдущая публикация ещё не завершена. - revision (
str, необязательный) — Ревизия, используемая при отправке на Hub. Может быть именем ветки, тегом или хэшем коммита.
Метод, который объединяет все аргументы, связанные с синхронизацией контрольных точек с Hub.
Вызов этого метода установит
self.push_to_hubвTrue, что означает, что вoutput_dirбудет создана git-директория, синхронизированная с репозиторием (определяемым поmodel_id), и содержимое будет отправляться каждый раз при срабатывании сохранения (в зависимости от вашегоself.save_strategy). Вызов save_model() также запустит отправку.
set_save
< source >( strategy: str | transformers.trainer_utils.IntervalStrategy = 'steps'steps: int = 500total_limit: int | None = Noneon_each_node: bool = False )
Параметры
- strategy (
strили IntervalStrategy, необязательный, по умолчанию"steps") — Стратегия сохранения контрольных точек во время обучения. Возможные значения:"no": сохранение не выполняется во время обучения."epoch": Сохранение выполняется в конце каждой эпохи."steps": Сохранение выполняется каждыеsave_steps.
- steps (
int, необязательный, по умолчанию 500) — Количество шагов обновления перед сохранением двух контрольных точек, еслиstrategy="steps". - total_limit (
int, необязательный) — Если передано значение, ограничивает общее количество контрольных точек. Удаляет более старые контрольные точки изoutput_dir. - on_each_node (
bool, необязательный, по умолчаниюFalse) — При распределённой обучении на нескольких узлах — сохранять ли модели и контрольные точки на каждом узле или только на главном.Эта опция не должна быть включена, если разные узлы используют одно и то же хранилище, так как файлы будут сохраняться с одинаковыми именами на каждом узле.
Метод, который группирует все аргументы, связанные с сохранением контрольных точек.
set_testing
< source >( batch_size: int = 8loss_only: bool = False )
Метод, который объединяет все базовые аргументы, связанные с тестированием на выделенном наборе данных.
Вызов этого метода автоматически установит
self.do_predictв значениеTrue.
set_training
< source >( learning_rate: float = 5e-05batch_size: int = 8weight_decay: float = 0num_epochs: float = 3max_steps: int = -1gradient_accumulation_steps: int = 1seed: int = 42activation_checkpointing: bool = Falsegradient_checkpointing: bool | None = None )
Параметры
- learning_rate (
float, необязательный, по умолчанию 5e-5) — Начальная скорость обучения для оптимизатора. - batch_size (
intнеобязательный, по умолчанию 8) — Размер батча на устройство (ядро GPU/TPU/CPU…), используемый для обучения. - weight_decay (
float, необязательный, по умолчанию 0) — Значение weight decay, применяемое (если оно не равно нулю) ко всем слоям, кроме весов bias и LayerNorm, в оптимизаторе. - num_epochs (
float, необязательный, по умолчанию 3.0) — Общее количество эпох обучения (если значение не является целым числом, будет выполнена доля последней эпох, соответствующая дробной части, после чего обучение будет остановлено). - max_steps (
int, необязательный, по умолчанию -1) — Если установлено положительное число, определяет общее количество шагов обучения. Переопределяетnum_train_epochs. Для конечного набора данных обучение повторяется по всему набору (если все данные исчерпаны), пока не будет достигнуто значениеmax_steps. Это значение должно быть положительным, если обучающий набор данных не реализует__len__(например, потоковый набор данных), поскольку в этом случае общее количество шагов невозможно определить, и оно необходимо для ограничения цикла обучения и настройки планировщика скорости обучения. - gradient_accumulation_steps (
int, необязательный, по умолчанию 1) — Количество шагов обновления, для которых накапливаются градиенты, прежде чем будет выполнен проход backward/обновление.При использовании накопления градиентов один шаг считается как один шаг с обратным распространением. Поэтому логирование, оценка и сохранение будут выполняться каждые
gradient_accumulation_steps * xxx_stepпримеров обучения. - seed (
int, необязательный, по умолчанию 42) — Случайный посев, который будет установлен в начале обучения. Чтобы обеспечить воспроизводимость между запусками, используйте функцию~Trainer.model_initдля инициализации модели, если у неё есть параметры, инициализируемые случайным образом. - activation_checkpointing (
bool, необязательный, по умолчаниюFalse) — Если True, используется активационный чекпоинтинг для экономии памяти ценой замедления обратного прохода. - gradient_checkpointing (
bool, необязательный) — Устаревший псевдоним дляactivation_checkpointing, будет удалён в v6.
Метод, который объединяет все базовые аргументы, связанные с обучением.
Вызов этого метода автоматически установит
self.do_trainв значениеTrue.
Сериализует этот экземпляр, заменяя Enum на их значения (для поддержки JSON-сериализации). Он маскирует значения токенов, удаляя их.
Сериализует этот экземпляр в строку JSON.
Санитизированная сериализация для использования с hparams в TensorBoard
Seq2SeqTrainingArguments
класс transformers.Seq2SeqTrainingArguments
< source >( output_dir: str | None = Noneper_device_train_batch_size: int = 8num_train_epochs: float = 3.0max_steps: int = -1learning_rate: float = 5e-05lr_scheduler_type: transformers.trainer_utils.SchedulerType | str = 'linear'lr_scheduler_kwargs: dict | str | None = Nonewarmup_steps: float = 0optim: transformers.training_args.OptimizerNames | str = 'adamw_torch_fused'optim_args: str | None = Noneweight_decay: float = 0.0adam_beta1: float = 0.9adam_beta2: float = 0.999adam_epsilon: float = 1e-08optim_target_modules: None | str | list[str] = Nonegradient_accumulation_steps: int = 1average_tokens_across_devices: bool = Truemax_grad_norm: float = 1.0label_smoothing_factor: float = 0.0bf16: bool = Falsefp16: bool = Falsebf16_full_eval: bool = Falsefp16_full_eval: bool = Falsetf32: bool | None = Noneactivation_checkpointing: bool | None = Noneactivation_checkpointing_kwargs: dict[str, typing.Any] | str | None = Nonegradient_checkpointing: bool | None = Nonegradient_checkpointing_kwargs: dict[str, typing.Any] | str | None = Nonetorch_compile: bool = Falsetorch_compile_backend: str | None = Nonetorch_compile_mode: str | None = Noneuse_liger_kernel: bool = Falseliger_kernel_config: dict[str, bool] | None = Noneuse_cache: bool = Falseneftune_noise_alpha: float | None = Nonetorch_empty_cache_steps: int | None = Noneauto_find_batch_size: bool = Falselogging_strategy: transformers.trainer_utils.IntervalStrategy | str = 'steps'logging_steps: float = 500logging_first_step: bool = Falselog_on_each_node: bool = Truelogging_nan_inf_filter: bool = Trueinclude_num_input_tokens_seen: str | bool = 'no'log_level: str = 'passive'log_level_replica: str = 'warning'disable_tqdm: bool | None = Nonereport_to: None | str | list[str] = 'none'run_name: str | None = Noneproject: str = 'huggingface'trackio_space_id: str | None = Nonetrackio_bucket_id: str | None = Nonetrackio_static_space_id: typing.Union[str, NoneType, typing.Literal[False]] = Noneeval_strategy: transformers.trainer_utils.IntervalStrategy | str = 'no'eval_steps: float | None = Noneeval_delay: float = 0per_device_eval_batch_size: int = 8prediction_loss_only: bool = Falseeval_on_start: bool = Falseeval_do_concat_batches: bool = Trueeval_use_gather_object: bool = Falseeval_accumulation_steps: int | None = Noneinclude_for_metrics: list = <factory>batch_eval_metrics: bool = Falsesave_only_model: bool = Falsesave_strategy: transformers.trainer_utils.SaveStrategy | str = 'steps'save_steps: float = 500save_on_each_node: bool = Falsesave_total_limit: int | None = Noneenable_jit_checkpoint: bool = Falsepush_to_hub: bool = Falsehub_token: str | None = Nonehub_private_repo: bool | None = Nonehub_model_id: str | None = Nonehub_strategy: transformers.trainer_utils.HubStrategy | str = 'every_save'hub_always_push: bool = Falsehub_revision: str | None = Noneload_best_model_at_end: bool = Falsemetric_for_best_model: str | None = Nonegreater_is_better: bool | None = Noneignore_data_skip: bool = Falserestore_callback_states_from_checkpoint: bool = Falsefull_determinism: bool = Falseseed: int = 42data_seed: int | None = Noneuse_cpu: bool = Falseaccelerator_config: dict | str | None = Noneparallelism_config: typing.Any | None = Nonedataloader_drop_last: bool = Falsedataloader_num_workers: int = 0dataloader_pin_memory: bool = Truedataloader_persistent_workers: bool = Falsedataloader_prefetch_factor: int | None = Nonedataloader_multiprocessing_context: str | None = Nonedataloader_in_order: bool = Trueremove_unused_columns: bool = Truelabel_names: list[str] | None = Nonetrain_sampling_strategy: str = 'random'length_column_name: str = 'length'ddp_find_unused_parameters: bool | None = Noneddp_bucket_cap_mb: int | None = Noneddp_broadcast_buffers: bool | None = Noneddp_static_graph: bool | None = Noneddp_backend: str | None = Noneddp_timeout: int = 1800fsdp: str | None = Nonefsdp_config: dict[str, typing.Any] | str | None = Nonedeepspeed: dict | str | None = Nonedebug: str | list[transformers.debug_utils.DebugOption] = ''skip_memory_metrics: bool = Truedo_train: bool = Falsedo_eval: bool = Falsedo_predict: bool = Falseresume_from_checkpoint: str | None = Nonelocal_rank: int = -1sortish_sampler: bool = Falsepredict_with_generate: bool = Falsegeneration_max_length: int | None = Nonegeneration_num_beams: int | None = Nonegeneration_config: str | pathlib.Path | transformers.generation.configuration_utils.GenerationConfig | None = None )
Параметры
- output_dir (
str, необязательный, по умолчанию"trainer_output") — Каталог, в который будут записаны предсказания модели и контрольные точки.
Длительность обучения и размер батча
- per_device_train_batch_size (
int, необязательный, по умолчанию 8) — Размер батча на устройство. Глобальный размер батча вычисляется как:per_device_train_batch_size * number_of_devicesв конфигурациях с несколькими GPU или распределённых средах. - num_train_epochs(
float, optional, по умолчанию 3.0) — Общее количество эпох обучения, которые необходимо выполнить (если значение не является целым числом, будет выполнена доля последней эпохи, соответствующая дробной части, после чего обучение будет остановлено). - max_steps (
int, необязательный, по умолчанию -1) — Переопределяетnum_train_epochs. Если установлено положительное число, определяет общее количество шагов обучения. Для конечного набора данных обучение повторяется по всему набору (если все данные исчерпаны), пока не будет достигнуто значениеmax_steps. Это значение должно быть положительным, если набор данных для обучения не реализует__len__(например, потоковый набор данных), поскольку в этом случае общее количество шагов невозможно определить и оно необходимо для ограничения цикла обучения и настройки планировщика скорости обучения.
Коэффициент обучения и планировщик
- learning_rate (
float, необязательный, по умолчанию 5e-5) — Начальная скорость обучения для оптимизатора. Обычно это пиковая скорость обучения при использовании планировщика с warmup. - lr_scheduler_type (
strили SchedulerType, необязательный, по умолчанию"linear") — Тип планировщика скорости обучения. См. SchedulerType для всех допустимых значений. Частые варианты:- “linear” = get_linear_schedule_with_warmup()
- “cosine” = get_cosine_schedule_with_warmup()
- “constant” = get_constant_schedule()
- “constant_with_warmup” = get_constant_schedule_with_warmup()
- lr_scheduler_kwargs (
dictилиstr, необязательный, по умолчаниюNone) — Дополнительные аргументы для lr_scheduler. См. документацию каждого планировщика, чтобы узнать допустимые значения. - warmup_steps (
intилиfloat, необязательный, по умолчанию 0) — Количество шагов для линейного warmup с 0 доlearning_rate. Warmup помогает стабилизировать обучение на начальном этапе. Может быть:- Целое число: точное количество шагов разгона
- Float в диапазоне [0, 1): интерпретируется как доля от общего числа шагов обучения
Оптимизатор
- optim (
strилиtraining_args.OptimizerNames, необязательный, по умолчанию"adamw_torch"(для torch>=2.8"adamw_torch_fused")) — Оптимизатор для использования. Основные варианты:"adamw_torch": AdamW из PyTorch (рекомендуемое значение по умолчанию)"adamw_torch_fused": объединённое ядро AdamW"adamw_hf": реализация AdamW от HuggingFace"sgd": стохастический градиентный спуск с импульсом"adafactor": Оптимизатор с эффективным использованием памяти для больших моделей"adamw_8bit": 8-битный AdamW (требуется bitsandbytes) См.OptimizerNamesдля полного списка.
- optim_args (
str, необязательный) — Необязательные аргументы, передаваемые оптимизаторам, таким как AnyPrecisionAdamW, AdEMAMix и GaLore. - weight_decay (
float, необязательный, по умолчанию 0) — Коэффициент затухания весов, применяемый оптимизатором (а не функцией потерь). Добавляет L2-регуляризацию для предотвращения переобучения, штрафуя за большие значения весов. Автоматически исключает параметры 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 и алгоритма APOLLO. Подробнее см. реализацию GaLore и реализацию 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.При использовании накопления градиентов один «шаг» считается как один шаг с обратным распространением. Следовательно, логирование, оценка и сохранение будут выполняться каждые
gradient_accumulation_steps × xxx_stepобучающих примеров. - average_tokens_across_devices (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли усреднять токены между устройствами. Если включено, для синхронизации num_tokens_in_batch с целью точного вычисления потерь будет использоваться all_reduce. Ссылка: https://github.com/huggingface/transformers/issues/34242 - max_grad_norm (
float, необязательный, по умолчанию 1.0) — Максимальная норма градиента для обрезки градиентов. Применяется после обратного прохода, перед шагом оптимизатора. Предотвращает взрыв градиентов, масштабируя градиенты вниз, если их глобальная норма превышает этот порог. Установите 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 до 0.1.
Обучение с смешанной точностью
- bf16 (
bool, необязательный, по умолчаниюFalse) — Включает обучение с смешанной точностью bfloat16 (BF16). Как правило, предпочтительнее FP16 благодаря лучшей численной устойчивости и отсутствию необходимости масштабирования потерь. - fp16 (
bool, необязательный, по умолчаниюFalse) — Включает обучение с использованием смешанной точности float16 (FP16). Если ваше оборудование поддерживает BF16, рекомендуется использовать его вместо FP16. - bf16_full_eval (
bool, необязательный, по умолчаниюFalse) — Использовать полную точность BF16 для оценки (а не только смешанную точность). Быстрее и экономит память, но может незначительно влиять на значения метрик. Применяется только во время оценки. - fp16_full_eval (
bool, необязательный, по умолчаниюFalse) — Использовать полную точность FP16 для оценки (а не только смешанную точность). Быстрее и экономит память, но может незначительно влиять на значения метрик. Применяется только во время оценки. - tf32 (
bool, необязательный) — Включает режим TensorFloat-32 (TF32) на GPU Ampere и новее. TF32 использует точность 19 бит для матричных умножений (вместо 23 бит у FP32), что обеспечивает ускорение до 8 раз при незначительной потере точности. Значение по умолчанию зависит от версии PyTorch. См. документацию по TF32.
Контрольные точки активаций
- activation_checkpointing (
bool, необязательный, по умолчаниюFalse) — Включает контрольную точку активаций, чтобы экономить память за счёт вычислений. Снижает потребление памяти, очищая активации на этапе прямого прохода и пересчитывая их на этапе обратного прохода. Позволяет обучать более крупные модели или использовать большие размеры пакетов, но замедляет обучение примерно на 20%. - activation_checkpointing_kwargs (
dict, необязательный, по умолчаниюNone) — Именованные аргументы, передаваемые вactivation_checkpointing_enable().every_n_layersвыполняет checkpoint только каждого 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, необязательный) — Бэкенд для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. Повышает производительность при работе с несколькими GPU примерно на 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. Это может значительно повысить качество модели при дообучении по инструкциям. См. оригинальную статью и исходный код. Поддерживаются моделиPreTrainedModelиз transformers, а такжеPeftModelиз peft. В оригинальной статье использовались значения в диапазоне [5.0, 15.0]. - torch_empty_cache_steps (
int, optional) — Number of steps to wait before callingtorch.<device>.empty_cache(). If left unset or set to None, cache will not be emptied. This can help avoid CUDA out-of-memory errors by lowering peak VRAM usage at a cost of about 10% slower performance. - auto_find_batch_size (
bool, необязательный, по умолчаниюFalse) — Определять ли размер обучающей выборки, который поместится в память, автоматически с помощью экспоненциального затухания, чтобы избежать ошибок CUDA Out-of-Memory. Размер выборки для оценки не изменяется.
Журналирование и мониторинг обучения
- logging_strategy (
strили 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установлен на warning или ниже, иначе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, wandb, mlflow, comet и swanlab. - project (
str, необязательный, по умолчанию"huggingface") — Имя проекта, используемого для логирования. В настоящее время используется только Trackio. - trackio_space_id (
strorNone, необязательный, по умолчаниюNone) — Идентификатор Hugging Face Space, используемый для живого логирования Trackio с Space на базе Gradio. Должен быть полным именем Space, например'username/reponame'или'orgname/reponame', или просто'reponame'(Space будет создан в пространстве имён текущего пользователя). ЕслиNone, метрики записываются только в локальную директорию (без Space на Hub). У этого Gradio Space есть доступ на чтение и запись к Bucket Trackio, что необходимо, пока обучение идёт—например, при возобновлении незавершённого запуска или агрегации логов с нескольких машин. Space будет публичным, если не установитьhub_private_repo=Trueили если по умолчанию в вашей организации создаются приватные Spaces. - trackio_bucket_id (
strилиNone, необязательный, по умолчаниюNone) — Необязательный идентификатор Hugging Face Bucket для Trackio. Если не задан, Trackio генерирует его. Используется вместе с Gradio Space (trackio_space_id) и при развёртывании статического Space (trackio_static_space_idне равноFalse). - trackio_static_space_id (
str,FalseилиNone, необязательный, по умолчаниюNone) — Идентификатор Hugging Face Space, который будет использоваться для статического Space, создаваемого после завершения обучения. Должен представлять собой полное имя Space, например'username/reponame'или'orgname/reponame', либо просто'reponame'(Space будет создан в пространстве имён текущего пользователя). Если значение равно False, статический Space не будет создан. Если значение равно None, а модель загружается на Hub, будет создан статический Space с именем по умолчанию, и на карточке модели появится ссылка на него. Space будет публичным, если не установленоhub_private_repo=Trueили если по умолчанию в вашей организации создаются приватные Spaces.
Оценка
- eval_strategy (
strили 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) — Определяет, следует ли выполнять рекурсивный сбор объектов из вложенных списков/кортежей/словарей объектов со всех устройств. Этот параметр следует включать только в том случае, если возвращаемые данные не являются тензорами; PyTorch активно не рекомендует его использование. Это полезно, когда структура меток нестандартная, как, например, в задачах компьютерного зрения. - eval_accumulation_steps (
int, необязательный) — Количество шагов предсказаний, для которых накапливаются выходные тензоры, прежде чем результаты будут перемещены на CPU. Если значение не задано, все предсказания накапливаются на ускорителе устройства перед перемещением на CPU (быстрее, но требует больше памяти).
Вычисление метрик
- include_for_metrics (
list[str], необязательный, по умолчанию[]) — Дополнительные данные, которые нужно передать в функциюcompute_metrics, если они необходимы для вычисления метрик. Варианты, которые можно добавить в списокinclude_for_metrics:"inputs": входные данные, передаваемые в модель, предназначенные для вычисления метрик, зависящих от входных данных."loss": Значения потерь, вычисленные во время оценки, предназначенные для расчёта метрик, зависящих от потерь.
- batch_eval_metrics (
bool, необязательный, по умолчаниюFalse) — Если установлено вTrue, то при оценке функция compute_metrics будет вызываться в конце каждой партии для накопления статистики, вместо того чтобы сохранять все logits оценки в памяти. Если установлено вTrue, необходимо передать функцию compute_metrics, принимающую булевый аргументcompute_result, который при значенииTrueзапускает вычисление итоговой глобальной статистики на основе накопленной вами статистики по партиям на наборе для оценки.
Сохранение контрольных точек
- save_only_model (
bool, необязательный, по умолчаниюFalse) — Сохраняет только веса модели, а не состояние оптимизатора/планировщика/RNG. Значительно уменьшает размер контрольной точки, но не позволяет возобновить обучение с этой контрольной точки. Используйте, если вам нужна только обученная модель для инференса, а не для продолжения обучения. Загрузить модель можно только с помощью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сохраняет 4 самые последние и лучшую - enable_jit_checkpoint (
bool, необязательный, по умолчаниюFalse) — Включает Just-In-Time checkpointing по сигналу SIGTERM для корректного завершения работы на preemptible-нагрузках. Важно: Настройте период корректного завершения работы вашего оркестратора, чтобы обеспечить достаточное время. Для Kubernetes установитеterminationGracePeriodSeconds(значение по умолчанию 30 с обычно недостаточно). Для Slurm используйте--signal=TERM@<seconds>. Требуемый период корректного завершения ≥ время самой длительной итерации + время сохранения checkpoint.
Интеграция с Hugging Face Hub
- push_to_hub (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли отправлять модель на Hub каждый раз при сохранении. Если эта опция включена, вoutput_dirбудет создан git-каталог, синхронизированный с репозиторием (определяемым параметромhub_model_id), и содержимое будет отправляться каждый раз при срабатывании сохранения (в зависимости от вашегоsave_strategy). Вызов save_model() также запускает отправку. - hub_token (
str, необязательный) — Токен, используемый для загрузки модели на Hub. По умолчанию используется токен из каталога кэша, полученный с помощью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": выполнять push только в конце обучения"every_save": Push при каждом сохранении (асинхронно, чтобы не блокировать обучение)"checkpoint": как"every_save", но дополнительно выгружает последний чекпоинт в подпапку"last-checkpoint"для удобного возобновления"all_checkpoints": Загружать все контрольные точки по мере их появления
- hub_always_push (
bool, необязательный, по умолчаниюFalse) — Если это значение не равноTrue,Trainerпропустит отправку контрольной точки, если предыдущая отправка ещё не завершена. - hub_revision (
str, необязательный) — Ревизия, используемая при отправке на Hub. Может быть именем ветки, тегом или хэшем коммита.
Лучшее отслеживание моделей
- load_best_model_at_end (
bool, необязательный, по умолчаниюFalse) — Загружает лучшую контрольную точку в конце обучения. Требуется, чтобы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) — Восстанавливать состояния callback'ов из контрольной точки при возобновлении обучения. ЕслиTrue, callback'ы, переданные в Trainer, будут перезаписаны, если они присутствуют в контрольной точке.
Воспроизводимость
- full_determinism (
bool, необязательный, по умолчаниюFalse) — ЕслиTrue, вместо set_seed() вызывается enable_full_determinism() для обеспечения воспроизводимых результатов при распределённом обучении. Важно: это негативно сказывается на производительности, поэтому используйте только для отладки. - 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 вместо создания нового. Может вызывать проблемы при тюнинге гиперпараметров.- Путь к файлу конфигурации 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вместо создания нового. Может вызывать проблемы при подстройке гиперпараметров.
- Путь к файлу конфигурации JSON:
- parallelism_config (
ParallelismConfig, необязательный) — Конфигурация параллелизма для запуска обучения. Требуется Accelerate1.10.1
Dataloader
- 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 рабочих процессов в активном состоянии. Потенциально может ускорить обучение, но увеличит потребление оперативной памяти. По умолчанию установлено значениеFalse. - dataloader_prefetch_factor (
int, необязательный) — Количество батчей, загружаемых заранее каждым воркером. Значение 2 означает, что в общей сложности будет предварительно загружено 2 * num_workers батчей всеми воркерами. - dataloader_multiprocessing_context (
str, необязательный) — Метод запуска процессов для рабочих процессов загрузки данных ("fork","spawn"или"forkserver"). По умолчанию используется метод запуска по умолчанию в PyTorch, за исключением случая MPS сdataloader_num_workers > 1, где по умолчанию используется"fork". Используйте"spawn", если данные стримятся из источников, объекты которых не поддерживают fork (например, HDFS черезpyarrow). При использовании"spawn"любой пользовательскийcollate_fnили код датасета должен быть импортируемым на уровне модуля (без лямбд и замыканий). - 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вашей модели принимает несколько тензоров меток (например, в задаче извлечения ответа). - train_sampling_strategy (
str, необязательный, по умолчанию"random") — Сэмплер, используемый для training dataloader. Допустимые значения:"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.
FSDP (Fully Sharded Data Parallel)
- 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, параметры останутся собранными между прямым и обратным проходами, что позволяет избежать повторного all-gather, но приводит к более высокому пиковому потреблению памяти. - cpu_offload (
bool, необязательный, по умолчаниюFalse): Выгружает параметры и градиенты на CPU, когда они не используются, для экономии памяти GPU. - activation_checkpointing (
bool, необязательный, по умолчаниюFalse): УстановитеTrue, чтобы уменьшить потребление памяти за счёт пересчёта активаций во время обратного прохода. При использовании FSDP предпочитайте этот параметр аргументу обученияactivation_checkpointing, который вносит избыточный all-gather в обратный проход. - cpu_ram_efficient_loading (
bool, необязательный, по умолчаниюFalse): УстановитеTrue, чтобы загрузить предобученную контрольную точку только в первом процессе. Остальные процессы начинают работу с пустыми весами и получают их через broadcast. - state_dict_type (
str, необязательный, по умолчанию"FULL_STATE_DICT"): Формат контрольной точки:"FULL_STATE_DICT"(один файл, совместимый с HF) или"SHARDED_STATE_DICT"(один файл на каждый ранк, быстрее для больших моделей). - auto_wrap_policy (
str, необязательный, по умолчанию"TRANSFORMER_BASED_WRAP"): Политика автообёртки. Выберите"TRANSFORMER_BASED_WRAP","SIZE_BASED_WRAP"или"NO_WRAP". - transformer_layer_cls_to_wrap (
list[str], optional): Имена классов трансформерных слоёв (с учётом регистра), которые нужно обернуть, например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 Training. Экспериментальная функция. - xla_fsdp_settings (
dict, необязательный): Словарь параметров обёртки XLA FSDP. Полный список параметров см. в исходном коде XLA FSDP. - xla_fsdp_grad_ckpt (
bool, необязательный, по умолчаниюFalse): УстановитеTrue, чтобы использовать градиентный чекпоинтинг для каждого вложенного слоя, обёрнутого XLA FSDP. Требуетxla=Trueи политики автообёртывания (min_num_paramsилиtransformer_layer_cls_to_wrap).
- version (
DeepSpeed
- deepspeed (
strилиdict, необязательный) — Включает интеграцию с . Допустимые значения:- Путь к файлу конфигурации DeepSpeed в формате JSON:
"ds_config.json" - Конфигурация загружена в виде словаря
Если используется инициализация ZeRO, создайте экземпляр модели после инициализации
TrainingArguments, иначе ZeRO не будет применён.
- Путь к файлу конфигурации DeepSpeed в формате JSON:
Отладка и профилирование (экспериментально)
- debug (
strили списокDebugOption, , необязательный, по умолчанию"") — Включает одну или несколько функций отладки. Это экспериментальная функция. Доступные варианты:- “underflow_overflow”: обнаруживает переполнение во входных/выходных данных модели и сообщает о последних кадрах, приведших к событию
- “tpu_metrics_debug”: выводить отладочные метрики на TPU
- skip_memory_metrics (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли пропускать добавление отчётов профилировщика памяти в метрики. По умолчанию это пропускается, так как замедляет скорость обучения и оценки.
Флаги внешнего скрипта (не используются в Trainer)
- do_train (
bool, необязательный, по умолчаниюFalse) — Указывает, следует ли запускать обучение. Этот аргумент не используется непосредственно в Trainer; он предназначен для использования в ваших скриптах обучения и оценки. - do_eval (
bool, необязательный) — Указывает, следует ли выполнять оценку на валидационном наборе данных. Будет установлено вTrue, еслиeval_strategyотличается от"no". Этот аргумент не используется непосредственно Trainer, он предназначен для использования в ваших скриптах обучения/оценки. - do_predict (
bool, необязательный, по умолчаниюFalse) — Указывает, следует ли выполнять предсказания на тестовом наборе данных. Этот аргумент не используется непосредственно в Trainer, он предназначен для использования в ваших скриптах обучения/оценки. - resume_from_checkpoint (
str, необязательный) — Путь к папке с валидной контрольной точкой для вашей модели. Этот аргумент не используется непосредственно Trainer, он предназначен для использования в ваших скриптах обучения/оценки. - sortish_sampler (
bool, необязательный, по умолчаниюFalse) — использовать sortish sampler или нет. Пока возможно только в том случае, если базовые наборы данных являются Seq2SeqDataset , но в ближайшем будущем станет доступно в общем случае.Он сортирует входные данные по длине, чтобы минимизировать размер отступов, добавляя немного случайности для обучающей выборки.
- 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, , необязательный) — Позволяет загрузить GenerationConfig из методаfrom_pretrained. Это может быть:- строка, model id конфигурации предобученной модели, размещенной в репозитории моделей на huggingface.co.
- путь к каталогу, содержащему файл конфигурации, сохранённый с помощью метода
save_pretrained(), например,
./my_model_directory/. - объект GenerationConfig.
Класс конфигурации для управления всеми аспектами обучения модели с помощью Trainer. TrainingArguments централизует все гиперпараметры, настройки оптимизации, параметры логирования и инфраструктурные решения, необходимые для обучения.
HfArgumentParser позволяет преобразовать этот класс в аргументы argparse, которые можно указать в командной строке.
Сериализует этот экземпляр, заменяя Enum на их значения, а GenerationConfig — на словари (для поддержки JSON-сериализации). Значения токенов обфусцируются путём удаления их значений.