Transformers documentation

Trainer

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Trainer

Trainer クラスは、PyTorch における機能の網羅的なトレーニング API を提供し、複数 GPU/TPU での分散トレーニング、NVIDIA GPU および AMD GPU 向けの混合精度、そして PyTorch 向けの torch.amp をサポートしています。Trainer は TrainingArguments クラスと連携して動作し、後者はモデルのトレーニング方法をカスタマイズするための幅広いオプションを提供します。これら 2 つのクラスを組み合わせることで、完全なトレーニング API が提供されます。

Seq2SeqTrainer と Seq2SeqTrainingArguments は、Trainer クラスと TrainingArguments クラスを継承しており、要約や翻訳などのシーケンスツーシーケンスタスク向けのモデル学習に適応されています。

Trainer クラスは 🤗 Transformers のモデル向けに最適化されており、他のモデルと組み合わせて使用すると予期しない動作を示す場合があります。独自のモデルと組み合わせて使用する際は、以下の点を確認してください。

  • モデルは常にタプルまたはModelOutputのサブクラスを返します
  • labels 引数が提供された場合、モデルは損失を計算でき、その損失はタプルの最初の要素として返されます(モデルがタプルを返す場合)。
  • モデルは複数のラベル引数を受け取れます(TrainingArguments の label_names でその名前を Trainer に指定します)が、いずれのラベル名も "label" にしてはいけません

Trainer

class transformers.Trainer

< >

( 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[typing.Optional[torch.optim.Optimizer], typing.Optional[torch.optim.lr_scheduler.LambdaLR]] = (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と連携するように最適化されています。🤗 Transformersのモデルと同様の動作をする限り、torch.nn.Moduleとして定義した独自のモデルも引き続き使用できます。

  • args (TrainingArguments、任意) — 学習を調整するための引数です。指定されない場合、output_dir が現在のディレクトリ内の tmp_trainer という名前のディレクトリに設定された TrainingArguments の基本的なインスタンスがデフォルトとして使用されます。
  • 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 である内部属性 generator を使用するか(Trainer は各エポックごとにこの generator のシードを手動で設定します)、内部で使用する RNG のシードを設定する set_epoch() メソッドを持つ必要があります。

    データセットが__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() の各呼び出しで、この関数によって提供されるモデルの新しいインスタンスから開始されます。

    この関数は、引数がゼロ個であるか、または optuna/Ray Tune の trial オブジェクトを含む単一の引数を持つ場合があります。これにより、ハイパーパラメータ(レイヤー数、内部レイヤーのサイズ、dropout 確率など)に応じて異なるアーキテクチャを選択できるようになります。

  • compute_loss_func (Callable, 省略可) — 生のモデル出力、ラベル、および累積バッチ全体(batch_size * gradient_accumulation_steps)のアイテム数を引数として受け取り、損失を返す関数です。デフォルトの 損失関数 の例については、Trainer で使用されるものをご参照ください。
  • compute_metrics (Callable[[EvalPrediction], Dict], 省略可) — 評価時にメトリクスを計算するために使用される関数。EvalPrediction を引数に取り、メトリクス名(文字列)からメトリクス値への辞書を返す必要があります。注 batch_eval_metrics が True に設定された TrainingArgs を渡す場合、compute_metrics 関数はブール型の引数 compute_result を受け取る必要があります。これは最後の評価バッチの後にトリガーされ、関数がバッチレベルの統計を蓄積するのではなく、グローバルなサマリー統計を計算して返す必要があることを示します。
  • callbacks (のリスト TrainerCallback, (省略可)) — トレーニングループをカスタマイズするためのコールバックのリストです。 こちらに詳述されているデフォルトのコールバックリストに追加されます。デフォルトで使用するコールバックを削除する場合は、Trainer.remove_callback() メソッドを使用してください。.

    デフォルトで使用するコールバックの1つを削除する場合は、Trainer.remove_callback()メソッドを使用します。

  • optimizers (tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR]、省略可、デフォルトは (None, None)) — 使用するオプティマイザーとスケジューラーを含むタプルです。デフォルトでは、モデルに対して AdamW のインスタンスと、args によって制御される get_linear_schedule_with_warmup() によるスケジューラーが使用されます。
  • optimizer_cls_and_kwargs (tuple[Type[torch.optim.Optimizer], dict[str, Any]], 省略可) — 使用するオプティマイザーのクラスとキーワード引数を含むタプル。 optim および optim_args の args. 引数と互換性がありません。 optimizers 引数とは異なり、この引数を使用すると、Trainer を初期化する前にモデルのパラメータを適切なデバイスに配置する必要がなくなります。

    optimizers とは異なり、この引数を使用すると、Trainer を初期化する前にモデルのパラメータを正しいデバイスに配置する必要がなくなります。

  • preprocess_logits_for_metrics (Callable[[torch.Tensor, torch.Tensor], torch.Tensor], 省略可能) — 各評価ステップで logits をキャッシュする直前に前処理を行う関数です。2 つのテンソル、すなわち logits とラベルを受け取り、所望の処理が施された logits を返す必要があります。この関数による変更は、 compute_metrics.

    ラベル(第2引数)は、データセットにラベルがない場合、Noneになります。

Trainer は、PyTorch 向けのシンプルかつ機能の充実した学習および評価ループであり、🤗 Transformers 向けに最適化されています。

重要な属性:

  • model — 常にコアモデルを指します。Transformers のモデルを使用している場合、PreTrainedModel のサブクラスになります。
  • model_wrapped — 1 つ以上のモジュールが元のモデルをラップしている場合、常に最も外側のモデルを指します。フォワードパスにはこのモデルを使用してください。例えば、DeepSpeed の下では、内側のモデルはまず DeepSpeed でラップされ、さらに torch.nn.DistributedDataParallel でラップされます。内側のモデルがラップされていない場合、self.model_wrapped は self.model と同じです。
  • is_model_parallel — モデルがモデル並列モードに切り替えられているかどうかを示します(データ並列とは異なり、モデルのレイヤーの一部が異なる GPU に分割されることを意味します)。
  • place_model_on_device — モデルをデバイスに自動的に配置するかどうか。モデル並列、DeepSpeed、FSDP、完全な fp16/bf16 評価、または SageMaker MP が有効でない限り、デフォルトは True です。TrainingArguments をサブクラス化して place_model_on_device プロパティをオーバーライドすることで上書きできます。
  • is_in_train — モデルが現在trainを実行中かどうか(train中にevaluateが呼び出された場合など)
  • loss_is_scaled_for_ga — Whether the loss returned by compute_loss is already scaled for gradient accumulation. True: training_step uses it as is. False: training_step divides it by the number of gradient accumulation steps. None (default): the loss counts as scaled when it was normalized by num_items_in_batch, i.e. when the model accepts loss kwargs or a compute_loss_func is passed. Subclasses that compute their own loss should set it.

add_callback

< >

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

パラメータ

  • callback (type または [`~transformers.TrainerCallback`]) — TrainerCallback クラス、または TrainerCallback のインスタンスです。前者の場合、そのクラスのメンバーをインスタンス化します。

現在のTrainerCallbackのリストにコールバックを追加します。

autocast_smart_context_manager

< >

( cache_enabled: bool | None = True )

状況に応じてautocastに適切な引数を渡すための、適切なコンテキストマネージャーを作成するヘルパーラッパーです。autocastにはaccelerateに依存しているため、ここでは何もしません。

call_model_init

< >

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

model_init を呼び出して、ハイパーパラメータの試行に条件付けられた新しいモデルインスタンスを取得します。

compute_loss

< >

( model: Moduleinputs: dict[str, typing.Union[torch.Tensor, typing.Any]]return_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], 任意) — バッチ内のアイテム数です。指定しない場合、デフォルトのバッチサイズ削減ロジックを使用して損失が計算されます。

Trainerが損失をどのように計算するかを指定します。デフォルトでは、すべてのモデルが最初の要素として損失を返します。

カスタムな動作のためにサブクラス化してオーバーライドします。独自の損失を計算する場合は、loss_is_scaled_for_ga を設定して、勾配蓄積用にスケーリング済みかどうかを指定します。バッチごとの平均である場合は False(この場合、Trainer が勾配蓄積ステップ数で割ります)、蓄積されたバッチ全体で正規化済みである場合は True を指定します。

compute_loss_context_manager

< >

( )

コンテキストマネージャーをまとめてグループ化するヘルパーラッパーです。

create_accelerator_and_postprocess

< >

( )

accelerator を作成し、作成後のセットアップ(FSDP、DeepSpeed など)を実行します。

create_model_card

< >

( 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、省略可) — モデルのライセンスです。元のモデルが Hub 上のリポジトリから取得された場合、Trainer に渡された事前学習済みモデルのライセンスがデフォルトとして使用されます。
  • tags (str または list[str]、省略可) — モデルカードのメタデータに含めるタグです。
  • model_name (str, 任意) — モデルの名前です。
  • finetuned_from (str, 任意) — このモデルのファインチューニングに使用されたモデルの名前(該当する場合)。Trainer に渡された元のモデルのリポジトリ名(Hub 由来の場合)がデフォルトになります。
  • tasks (str または list[str]、省略可) — モデルカードのメタデータに含める1つ以上のタスク識別子。
  • dataset_tags (str または list[str]、省略可) — モデルカードのメタデータに含めるための、1 つ以上のデータセットタグ。
  • dataset (str または list[str]、省略可) — モデルカードのメタデータに含める、1 つ以上のデータセット識別子。
  • dataset_args (str または list[str]、省略可) — モデルカードのメタデータに含めるための、1 つ以上のデータセット引数です。

Trainerで利用可能な情報を使用して、モデルカードのドラフトを作成します。

create_optimizer

< >

( model = None ) → torch.optim.Optimizer

戻り値

torch.optim.Optimizer

オプティマイザーのインスタンス。

オプティマイザーを設定します。

動作に問題のない適切なデフォルト値を提供しています。別のものを使用したい場合は、optimizers にタプルを渡して Trainer の初期化に渡すか、サブクラスを定義してこのメソッドをオーバーライドできます。

create_optimizer_and_scheduler

< >

( num_training_steps: int )

オプティマイザーと学習率スケジューラーを設定します。

うまく動作する妥当なデフォルト値を提供しています。別のものを使用したい場合は、optimizers にタプルを渡して Trainer の初期化に渡すか、サブクラスでこのメソッド(または create_optimizer および/または create_scheduler)をオーバーライドできます。

create_scheduler

< >

( num_training_steps: intoptimizer: typing.Optional[torch.optim.Optimizer] = None ) → torch.optim.lr_scheduler.LRScheduler

パラメータ

  • num_training_steps (int) — 実行するトレーニングステップの数。

戻り値

torch.optim.lr_scheduler.LRScheduler

学習率スケジューラーのインスタンス。

スケジューラーを設定します。このメソッドを呼び出す前に、または引数として渡すことで、trainer のオプティマイザーが設定されていなければなりません。

end

< >

( )

トラッカーを完了し、分散プロセスグループを破棄します。

スクリプトの最後、他のプロセスを必要とするすべての処理(train()、evaluate()、predict()、save_model()、push_to_hub())が完了した後に、一度だけ呼び出してください。これらの関数はプロセス間で通信を行うため、グループが解散した後は失敗します。

例:

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

evaluate

< >

( 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 がデータセットのいずれか 1 つを正確に参照していることを確認してください。例えば、2 つのデータセット data1 と data2 に対して {"data1": data1, "data2": data2} を渡す場合、data1 の損失を使用するには metric_for_best_model="eval_data1_loss" を、data2 の損失を使用するには metric_for_best_model="eval_data2_loss" を指定できます。

  • ignore_keys (list[str], 省略可) — モデルの出力(辞書の 경우)において、予測を集計する際に無視すべきキーのリストです。
  • metric_key_prefix (str, 任意、デフォルトは "eval") — メトリクスのキーに使用する任意のプレフィックスです。例えば、プレフィックスが「eval」(デフォルト)の場合、メトリクスの「bleu」は「eval_bleu」という名前になります。

評価を実行し、メトリクスを返します。

呼び出し元のスクリプトは、タスクに依存する指標の計算メソッドを提供する責任があります(compute_metrics 引数として init に渡します)。

このメソッドをサブクラス化してオーバーライドし、カスタムの動作を注入することもできます。

evaluation_loop

< >

( dataloader: DataLoaderdescription: strprediction_loss_only: bool | None = Noneignore_keys: list[str] | None = Nonemetric_key_prefix: str = 'eval' )

Trainer.evaluate() と Trainer.predict() で共有される予測/評価ループ。

ラベルの有無にかかわらず動作します。

floating_point_ops

< >

( inputs: dict[str, typing.Union[torch.Tensor, typing.Any]] ) → int

パラメータ

  • inputs (dict[str, torch.Tensor | Any]) — モデルの入力とターゲットです。

戻り値

int

浮動小数点演算の回数。

PreTrainedModel を継承するモデルでは、そのメソッドを使用して、バックワードパスとフォワードパスの合計における浮動小数点演算の回数を計算します。他のモデルを使用する場合は、モデルにそのようなメソッドを実装するか、サブクラス化してこのメソッドをオーバーライドしてください。

get_batch_samples

< >

( epoch_iterator: Iteratornum_batches: intdevice: device )

エポックイテレータから指定された数のバッチを収集し、必要に応じてバッチ内のアイテム数をカウントして、損失を適切にスケーリングします。

get_cp_size

< >

( )

コンテキスト並列サイズを取得する

get_decay_parameter_names

< >

( model: Module )

重み減衰が適用されるすべてのパラメータ名を取得します。

この関数は、2つの方法でパラメータをフィルタリングします:

  1. レイヤータイプ別(ALL_LAYERNORM_LAYERSで指定されたレイヤーのインスタンス)
  2. パラメータ名のパターン(「bias」を含む、または「norm」のバリエーション)

get_eval_dataloader

< >

( 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を返します。

カスタムな動作を注入したい場合は、このメソッドをサブクラス化してオーバーライドしてください。

get_learning_rates

< >

( )

self.optimizer から各パラメータの学習率を返します。

get_num_trainable_parameters

< >

( )

学習可能なパラメータの数を取得します。

get_optimizer_cls_and_kwargs

< >

( args: TrainingArgumentsmodel: transformers.modeling_utils.PreTrainedModel | None = None )

パラメータ

  • args (transformers.training_args.TrainingArguments) — トレーニングセッションのトレーニング引数です。
  • model (PreTrainedModel、任意) — 学習対象のモデルです。一部のオプティマイザー(GaLore、Apollo、LOMO)では必須です。

トレーニング引数に基づいて、オプティマイザークラスとオプティマイザーのパラメータを返します。

get_optimizer_group

< >

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

パラメータ

  • param (str または torch.nn.parameter.Parameter、省略可) — オプティマイザグループを返す対象のパラメータです。

パラメータが指定されている場合は、そのパラメータのオプティマイザグループを返します。指定されていない場合は、すべてのパラメータのオプティマイザグループを返します。

get_sp_size

< >

( )

シーケンス並列サイズを取得する

get_test_dataloader

< >

( test_dataset: Dataset )

パラメータ

  • test_dataset (torch.utils.data.Dataset、任意) — 使用するテストデータセットです。Dataset の場合、model.forward() メソッドが受け入れない列は自動的に削除されます。

テスト用の~torch.utils.data.DataLoaderを返します。

カスタムな動作を注入したい場合は、このメソッドをサブクラス化してオーバーライドしてください。

get_total_train_batch_size

< >

( args: TrainingArguments )

総バッチサイズを計算します(micro_batch grad_accum dp_world_size)。

TP、CP、SPのすべての並列化次元に対応します。

数式: dp_world_size = world_size // (tp_size cp_size sp_size)

ここで:

  • TP (テンソル並列): モデルのレイヤーを複数のGPUに分割
  • CP(Context Parallelism): Ring Attention(FSDP2)を使用してシーケンスを分割
  • SP(シーケンス並列化): ALST/Ulysses(DeepSpeed)を使用して分割されるシーケンス

すべての次元は独立しており、乗算の関係にあります: world_size = dp_size tp_size cp_size * sp_size

get_tp_size

< >

( )

モデルまたはDeepSpeedの設定から、テンソル並列サイズを取得します。

get_train_dataloader

< >

( )

学習用の~torch.utils.data.DataLoaderを返します。

train_datasetが__len__を実装していない場合は、サンプラーを使用しません。それ以外の場合は、ランダムサンプラーを使用します(必要に応じて分散学習に適応させます)。

カスタムな動作を注入したい場合は、このメソッドをサブクラス化してオーバーライドしてください。

ハイパーパラメータ探索

< >

( 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" を、1 つ以上のメトリクスを最適化する場合は "maximize" を選択してください。複数目的の最適化の場合、list[str] 型で、"minimize" と "maximize" のリストを指定できます。検証損失を最適化する場合は "minimize" を、1 つ以上のメトリクスを最適化する場合は "maximize" を選択してください。
  • backend (str または ~training_utils.HPSearchBackend、省略可) — ハイパーパラメータ検索に使用するバックエンドです。インストールされているものに応じて、optuna または Ray Tune がデフォルトとして使用されます。両方がインストールされている場合は、デフォルトで optuna が使用されます。
  • hp_name (Callable[["optuna.Trial"], str]], 省略可) — トライアル/ランの名前を定義する関数。デフォルトは None です。
  • kwargs (dict[str, Any], 省略可能) — 各バックエンド用の追加のキーワード引数:
    • optuna: optuna.study.create_study のパラメータおよび、optuna.study.Study.optimize のパラメータ timeout、n_jobs、gc_after_trial
    • ray: tune.runのパラメータ。 resources_per_trialがkwargsに設定されていない場合、デフォルトでは CPU コア 1 つと GPU 1 つ(利用可能な場合)が使用されます。 progress_reporterがkwargsに設定されていない場合、 ray.tune.CLIReporterが使用されます。

戻り値

[trainer_utils.BestRun または list[trainer_utils.BestRun]]

最良の実行、または多目的最適化における最良の実行に関するすべての情報。Rayバックエンドの場合、実験のサマリーはrun_summary属性に格納されています。

optuna または Ray Tune を使用してハイパーパラメータ検索を開始します。最適化対象の量は compute_objective によって決定され、メトリクスが指定されていない場合はデフォルトで評価損失を返す関数となり、メトリクスが指定されている場合はすべてのメトリクスの合計となります。

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

init_hf_repo

< >

( token: str | None = Noneprivate: bool | None = None )

パラメータ

  • token (str, 任意) — 書き込み権限を持つトークン。デフォルトは self.args.hub_token です。
  • private (bool、省略可能) — リポジトリの作成時にプライベートにするかどうか。デフォルトは self.args.hub_private_repo です。リポジトリが既に存在する場合は、この引数は無効です。

self.args.hub_model_id に git リポジトリを初期化します。

is_local_process_zero

< >

( )

このプロセスが、ローカル(複数マシンで分散学習を行う場合、1台のマシン上での)メインプロセスであるかどうかを示します。

is_world_process_zero

< >

( )

このプロセスがグローバルなメインプロセスかどうか(複数マシンで分散学習を行う場合、True になるのは1つのプロセスのみです)。

log

< >

( logs: dict[str, float]start_time: float | None = None )

パラメータ

  • logs (dict[str, float]) — 記録する値です。
  • start_time (Optional[float]) — トレーニングの開始時刻。

トレーニングを監視する各種オブジェクトにlogsを記録します。

このメソッドをサブクラス化してオーバーライドし、カスタムの動作を注入します。

log_metrics

< >

( splitmetrics )

パラメータ

  • split (str) — モード/スプリット名: train、eval、test のいずれか
  • metrics (dict[str, float]) — train/evaluate/predictmetrics から返されるメトリクス: メトリクスの辞書

特別な形式でメトリクスを記録します。

分散環境では、これはランク0のプロセスに対してのみ実行されます。

メモリレポートに関する注記:

メモリ使用量のレポートを取得するには、psutil のインストールが必要です。pip install psutil を実行してインストールできます。

このメソッドを実行すると、以下の内容を含むレポートが表示されます。

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

レポートの理解:

  • 最初のセグメント、例えば train__ は、そのメトリクスがどのステージのものであるかを示します。init_ で始まるレポートは、最初に実行されるステージに追加されます。そのため、評価のみが実行された場合、__init__ のメモリ使用量は eval_ メトリクスとともに報告されます。
  • 3番目のセグメントは cpu または gpu であり、一般的な RAM であるか gpu0 のメモリメトリックであるかを示します。
  • *_alloc_delta - ステージの開始時と終了時の使用/割り当てメモリカウンターの差です。関数が割り当てたメモリよりも多くのメモリを解放した場合は、負の値になることがあります。
  • *_peaked_delta - 現在の割り当てメモリカウンターに対する、消費されて解放された追加メモリ量です。負になることはありません。任意のステージのメトリクスを確認する際は、alloc_delta + peaked_delta を合計することで、そのステージの完了に必要なメモリ量がわかります。

レポートは、rank 0 のプロセスおよび gpu 0(gpu が存在する場合)に対してのみ行われます。通常、メインプロセスが大部分の処理を行うため、これで十分ですが、モデル並列を使用している場合は、他の GPU が異なる量の gpu メモリを使用する可能性があるため、必ずしもそうとは限りません。また、DataParallel の場合も同様ではなく、gpu0 がすべての参加 GPU の勾配とオプティマイザの状態を保存するため、他の GPU よりもはるかに多くのメモリを必要とする場合があります。将来的には、これらのレポートがそれらも測定するよう進化していくかもしれません。

CPU RAMメトリックはRSS(Resident Set Size)を測定します。RSSには、プロセス固有のメモリと、他のプロセスと共有されるメモリが含まれます。スワップアウトされたメモリは含まれないため、レポートが不正確になる可能性がある点に注意してください。

CPUのピークメモリは、サンプリングスレッドを使用して測定されます。PythonのGIL(グローバルインタープリタロック)の影響により、メモリ使用量が最大になった時点でそのスレッドが実行される機会が得られなかった場合、ピークメモリの一部を捕捉できない可能性があります。そのため、このレポートの値は実際の値より低くなる場合があります。tracemallocを使用すれば正確なピークメモリを報告できますが、Pythonの外側でのメモリ割り当ては報告されません。したがって、C++のCUDA拡張機能が独自のメモリを割り当てた場合、それは報告されません。そのため、現在のプロセスのメモリ使用量を読み取るメモリサンプリング方式が採用され、tracemallocは除外されました。

GPU の割り当てメモリおよびピークメモリの報告は、torch.cuda.memory_allocated() と torch.cuda.max_memory_allocated() を使用して行われます。このメトリクスは、PyTorch 固有の割り当てに対する「差分」のみを報告します。これは、torch.cuda のメモリ管理システムが、PyTorch 外部で割り当てられたメモリをトラッキングしないためです。例えば、最初の CUDA 呼び出しでは通常、CUDA カーネルがロードされ、これにより 0.5GB から 2GB の GPU メモリを消費する場合があります。

このトラッカーは、Trainerの__init__、train、evaluateおよびpredictの呼び出し以外のメモリ割り当てを考慮していません。

evaluation の呼び出しが train 中に発生する可能性があるため、torch.cuda.max_memory_allocated は単一のカウンターであるため、ネストされた呼び出しを処理できません。ネストされた eval 呼び出しによってリセットされると、train のトラッカーが誤った情報を報告してしまうためです。pytorch issue が解決されれば、このクラスを再入可能に変更できるようになります。それまでは、train、evaluate、predict メソッドの最外層のみを追跡します。つまり、train 中に eval が呼び出された場合、後者(train)が、自身および前者(eval)のメモリ使用量を計上することになります。

これは、Trainer と併用される他のツールが torch.cuda.reset_peak_memory_stats を呼び出す場合、GPU のピークメモリ統計が無効になる可能性があることを意味します。また、Trainer は、torch.cuda.reset_peak_memory_stats を自ら呼び出すことに依存する此类のツールの通常の動作を妨げます。

最高のパフォーマンスを得るには、本番環境での実行時にメモリプロファイリングを無効にすることを検討してください。

metrics_format

< >

( metrics: dict[str, float] ) → metrics (dict[str, float])

パラメータ

  • metrics (dict[str, float]) — train/evaluate/predict から返されるメトリクス

戻り値

metrics (dict[str, float])

整形されたメトリクス

Trainerのメトリクス値を、人間が読みやすい形式に整形します。

num_examples

< >

( dataloader: DataLoader )

~torch.utils.data.DataLoader のデータセットにアクセスして、サンプル数を取得するためのヘルパーです。dataloader.dataset が存在しないか、長さが定義されていない場合は、可能な限り推定します。

pop_callback

< >

( callback: type[transformers.trainer_callback.TrainerCallback] | transformers.trainer_callback.TrainerCallback ) → TrainerCallback

パラメータ

  • callback (type または [`~transformers.TrainerCallback`]) — TrainerCallback クラス、または TrainerCallback のインスタンスです。前者の場合、コールバックのリスト内で最初に発見されたそのクラスのメンバーを削除します。

戻り値

TrainerCallback

見つかった場合、削除されたコールバック。

現在のTrainerCallbackのリストからコールバックを削除し、それを返します。

コールバックが見つからない場合、Noneを返します(エラーは発生しません)。

predict

< >

( 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") — メトリクスのキーに使用する任意のプレフィックスです。例えば、プレフィックスが “test”(デフォルト)の場合、メトリクスの “bleu” は “test_bleu” という名前になります。

予測を実行し、予測結果と潜在的なメトリクスを返します。

データセットやユースケースによって、テストデータセットにラベルが含まれている場合があります。その場合、evaluate()と同様に、このメソッドはメトリクスも返します。

予測値またはラベルのシーケンス長が異なる場合(トークン分類タスクで動的パディングを行っている場合など)、予測値は右側にパディングされ、1つの配列に連結できるようになります。パディングのインデックスは-100です。

戻り値: NamedTuple 以下のキーを持つ namedtuple

  • predictions (np.ndarray): test_dataset に対する予測値。
  • label_ids (np.ndarray、任意): ラベル(データセットにラベルが含まれている場合)。
  • metrics (dict[str, float]、任意): データセットにラベルが含まれていた場合の、メトリクスの辞書。

prediction_step

< >

( model: Moduleinputs: dict[str, typing.Union[torch.Tensor, typing.Any]]prediction_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]]

損失、logits、ラベルのタプル(それぞれ任意)。

inputs を使用して、model に対して評価ステップを実行します。

サブクラス化してオーバーライドし、カスタムの動作を注入します。

push_to_hub

< >

( 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 リビジョンです。デフォルトでは “main” ブランチのヘッドになります。
  • private (bool、省略可能) — リポジトリ作成時にプライベートにするかどうか。デフォルトは args.hub_private_repo です。リポジトリが既に存在する場合は、この引数は無効です。
  • kwargs (dict[str, Any]、省略可) — create_model_card()に渡す追加のキーワード引数。

self.model と self.processing_class を、リポジトリ self.args.hub_model_id 上の 🤗 model hub にアップロードします。

remove_callback

< >

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

パラメータ

  • callback (type または [`~transformers.TrainerCallback`]) — TrainerCallback クラス、または TrainerCallback のインスタンスです。前者の場合、コールバックのリスト内で最初に発見されたそのクラスのメンバーを削除します。

現在のTrainerCallbackのリストからコールバックを削除します。

save_metrics

< >

( splitmetricscombined = True )

パラメータ

  • split (str) — モード/スプリット名: train、eval、test、all のいずれか
  • metrics (dict[str, float]) — train/evaluate/predict から返されるメトリクス
  • combined (bool、省略可、デフォルトはTrue) — この呼び出しのメトリクスでall_results.jsonを更新することにより、統合メトリクスを作成します

そのスプリット用のメトリクスを、train_results.json のような JSON ファイルに保存します。

分散環境では、これはランク0のプロセスに対してのみ実行されます。

メトリクスの詳細については、log_metrics()のドキュメント文字列(docstring)を参照してください。唯一の違いは、現在のメソッドでは整形されていない生の数値が保存される点です。

save_model

< >

( output_dir: str | None = None_internal_call: bool = False )

モデルを保存するため、from_pretrained() を使用して再読み込みできます。

メインプロセスからの保存のみ行います。

save_state

< >

( )

Trainer.save_model はモデルとトークナイザーのみを保存するため、Trainer の状態を保存します。

分散環境では、これはランク0のプロセスに対してのみ実行されます。

set_initial_training_values

< >

( args: TrainingArgumentsdataloader: DataLoader )

次の値を計算して返します:

  • num_train_epochs
  • num_update_steps_per_epoch
  • num_examples
  • num_train_samples
  • total_train_batch_size
  • steps_in_epoch(1エポックあたりのバッチ総数)
  • max_steps

store_flos

< >

( )

モデルに投入された浮動小数点演算の数を保存します。

train

< >

( 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 の場合、以前の Trainer インスタンスによって args.output_dir に保存された最後のチェックポイントを読み込みます。指定がある場合、ここで読み込まれたモデル/オプティマイザ/スケジューラの状態からトレーニングを再開します。
  • trial (optuna.Trial または dict[str, Any]、省略可) — ハイパーパラメータ探索のための試行ランまたはハイパーパラメータの辞書。
  • ignore_keys_for_eval (list[str]、任意) — モデルの出力(辞書の 경우)において、学習中の評価時に予測を集計する際に無視すべきキーのリストです。

戻り値

TrainOutput

グローバルステップ数、トレーニング損失、およびメトリクスを含むオブジェクト。

メインの学習エントリポイント。

training_step

< >

( model: Moduleinputs: dict[str, typing.Union[torch.Tensor, typing.Any]]num_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

< >

( 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[typing.Optional[torch.optim.Optimizer], typing.Optional[torch.optim.lr_scheduler.LambdaLR]] = (None, None)preprocess_logits_for_metrics: collections.abc.Callable[[torch.Tensor, torch.Tensor], torch.Tensor] | None = None )

evaluate

< >

( 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") — メトリクスのキーに使用する任意のプレフィックスです。例えば、プレフィックスが "eval"(デフォルト)の場合、メトリクスの “bleu” は “eval_bleu” という名前になります。
  • max_length (int, 任意) — generate メソッドによる予測時に使用する、ターゲットの最大長です。
  • num_beams (int, 任意) — generate メソッドによる予測時にビームサーチで使用するビーム数です。1 を指定するとビームサーチを行いません。
  • gen_kwargs — generate に固有の追加のキーワード引数。

評価を実行し、メトリクスを返します。

呼び出し元のスクリプトは、タスクに依存する指標の計算メソッドを提供する責任があります(compute_metrics 引数として init に渡します)。

このメソッドをサブクラス化してオーバーライドし、カスタムの動作を注入することもできます。

predict

< >

( test_dataset: Datasetignore_keys: list[str] | None = Nonemetric_key_prefix: str = 'test'**gen_kwargs )

パラメータ

  • test_dataset (Dataset) — 予測を実行する対象の Dataset。Dataset の場合、model.forward() メソッドが受け付けないカラムは自動的に削除されます。__len__ メソッドを実装している必要があります。
  • ignore_keys (list[str], 省略可) — モデルの出力(辞書の 경우)において、予測を集計する際に無視すべきキーのリストです。
  • metric_key_prefix (str、任意、デフォルトは "eval") — メトリクスのキーに使用する任意のプレフィックスです。例えば、プレフィックスが "eval"(デフォルト)の場合、メトリクスの “bleu” は “eval_bleu” という名前になります。
  • max_length (int, 任意) — generate メソッドによる予測時に使用する、ターゲットの最大長です。
  • num_beams (int, 任意) — generate メソッドによる予測時にビームサーチで使用するビーム数です。1 を指定するとビームサーチを行いません。
  • gen_kwargs — generate に固有の追加のキーワード引数。

予測を実行し、予測結果と潜在的なメトリクスを返します。

データセットやユースケースによって、テストデータセットにラベルが含まれている場合があります。その場合、evaluate()と同様に、このメソッドはメトリクスも返します。

予測値またはラベルのシーケンス長が異なる場合(トークン分類タスクで動的パディングを行っている場合など)、予測値は右側にパディングされ、1つの配列への連結が可能になります。パディングのインデックスは-100です。

戻り値: NamedTuple 以下のキーを持つ namedtuple

  • predictions (np.ndarray): test_dataset に対する予測値。
  • label_ids (np.ndarray、任意): ラベル(データセットにラベルが含まれている場合)。
  • metrics (dict[str, float]、任意): データセットにラベルが含まれていた場合の、メトリクスの辞書。

TrainingArguments

class transformers.TrainingArguments

< >

( 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[str] = <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) — デバイスごとのバッチサイズです。グローバルバッチサイズは、マルチ GPU または分散環境では、per_device_train_batch_size * number_of_devices で計算されます。
  • num_train_epochs(float, 任意、デフォルト値は 3.0) — 実行するトレーニングエポックの総数です(整数でない場合、トレーニングを停止する前に、最後のエポックの小数部分に相当する割合だけ実行されます)。
  • max_steps (int、任意、デフォルトは -1) — num_train_epochs を上書きします。正の値に設定した場合、実行するトレーニングステップの総数を指定します。 有限のデータセットの場合、データがすべて使い切られたら、max_steps に達するまでデータセットを繰り返し通してトレーニングを行います。 トレーニングデータセットが __len__ を実装していない場合(ストリーミングデータセットなど)、ステップの総数を推定できないため、トレーニングループの上限を定め、学習率スケジューラを設定するために、正の値を設定する必要があります。

学習率とスケジューラ

  • learning_rate (float、任意、デフォルト値は 5e-5)— オプティマイザの初期学習率です。ウォームアップ付きスケジューラを使用する場合、通常これはピーク学習率になります。
  • lr_scheduler_type (str または SchedulerType, 省略可, デフォルトは "linear") — 使用する学習率スケジューラーの種類です。 SchedulerType にすべての可能な値が記載されています。よく使われる選択肢:
  • lr_scheduler_kwargs (dict または str、省略可、デフォルトは None) — lr_scheduler に渡す追加引数です。各スケジューラのドキュメントを参照して、指定可能な値を確認してください。
  • warmup_steps (int または float, 省略可, デフォルト値は 0) — 0 から learning_rate. までの線形ウォームアップを行うステップ数。ウォームアップは、学習の初期段階での安定化に役立ちます。指定できる値は以下の通りです:
    • 整数:ウォームアップステップの正確な回数
    • 範囲 [0, 1) の float: 総トレーニングステップ数に対する比率として解釈されます

オプティマイザ

  • optim (str または training_args.OptimizerNames, 省略可, デフォルトは "adamw_torch" (torch>=2.8 の場合は "adamw_torch_fused")) — 使用するオプティマイザーです。一般的なオプションは以下の通りです。
    • "adamw_torch": PyTorch の AdamW(推奨のデフォルト)
    • "adamw_torch_fused": Fused AdamW カーネル
    • "adamw_hf": HuggingFace による AdamW の実装
    • "sgd": モメンタム付き確率勾配降下法
    • "adafactor": 大規模モデル向けのメモリ効率の高いオプティマイザ
    • "adamw_8bit": 8ビット AdamW(bitsandbytes が必要) 完全なリストは OptimizerNames を参照してください。
  • optim_args (str、任意) — AnyPrecisionAdamW、AdEMAMix、GaLore などのオプティマイザーに渡す任意の引数。
  • weight_decay (float、任意、デフォルト値は 0) — オプティマイザーによって適用されるウェイト減衰係数(損失関数ではありません)。大きな重みをペナルティすることで過学習を防ぐ L2 正則化を追加します。バイアスおよび LayerNorm パラメータには自動的に適用されません。一般的な値: 0.01(標準)、0.1(より強い正則化)、0.0(正則化なし)。
  • adam_beta1 (float、任意、デフォルト値は 0.9)— Adam ベースのオプティマイザーにおける、1 次モーメント推定値(モメンタム)の指数減衰率です。勾配の履歴をどの程度保持するかを制御します。
  • adam_beta2 (float、任意、デフォルト値は 0.999) — Adam ベースのオプティマイザーにおける、2 階モーメント推定値(分散)の指数減衰率です。適応型学習率のスケーリングを制御します。
  • 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) — backward/update パスを実行する前に勾配を累積する更新ステップ数。 追加のメモリを使用せずに、より大きなバッチサイズをシミュレートします。実効バッチサイズ = per_device_train_batch_size × num_devices × gradient_accumulation_steps.

    勾配蓄積を使用する場合、1つの「ステップ」はバックワードパスを1回実行したステップとしてカウントされます。したがって、ログ出力、評価、および保存は、gradient_accumulation_steps × xxx_step 個の学習例ごとに実行されます。

  • average_tokens_across_devices (bool、省略可、デフォルトはTrue) — デバイス間でトークンを平均化するかどうかを指定します。有効な場合、all_reduce を使用して num_tokens_in_batch を同期し、損失の正確な計算を行います。参考: https://github.com/huggingface/transformers/issues/34242
  • max_grad_norm (float、任意、デフォルト値は 1.0) — 勾配クリッピングに使用する最大勾配ノルムです。バックワードパスの後に、オプティマイザのステップの前に適用されます。勾配のグローバルノルムがこの閾値を超えた場合に勾配を縮小することで、勾配の爆発を防ぎます。クリッピングを無効にするには 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 の使用を検討してください。
  • bf16_full_eval (bool、任意、デフォルトは False) — 評価時に完全な BF16 精度を使用します(混合精度ではありません)。より高速でメモリを節約できますが、メトリックの値がわずかに影響を受ける可能性があります。評価時のみ適用されます。
  • fp16_full_eval (bool、任意、デフォルトは False) — 評価時に完全な FP16 精度を使用します(混合精度ではありません)。より高速でメモリを節約できますが、メトリックの値がわずかに影響を受ける可能性があります。評価時のみ適用されます。
  • tf32 (bool, 任意) — Ampere 以降の GPU で TensorFloat-32 (TF32) モードを有効にします。TF32 は行列乗算に 19 ビットの精度を使用します (FP32 の 23 ビットではなく)、精度の低下はほぼ無視できるレベルで最大 8 倍の高速化を実現します。デフォルト値は PyTorch のバージョンに依存します。TF32 のドキュメントを参照してください。

アクティベーション・チェックポイント

  • activation_checkpointing (bool、任意、デフォルトはFalse) — アクティベーション・チェックポイントを有効にし、計算量とメモリをトレードオフします。フォワードパス中にアクティベーションをクリアし、バックワードパス中に再計算することで、メモリ使用量を削減します。約20%の学習速度低下を代償として、より大きなモデルやバッチサイズでの学習を可能にします。
  • activation_checkpointing_kwargs (dict、任意、デフォルトはNone) — activation_checkpointing_enable()に渡すキーワード引数です。every_n_layersを指定すると、すべてのデコーダー層ではなく、n層ごとにチェックポイントを作成します。1は通常どおり全層または全層なしの動作であり、より大きな値を指定するとメモリを解放して速度を向上させることができます。offloadを指定すると、保存されたアクティベーションをピン留めされたホストメモリに保持し、layers x sequence x hiddenバイト分のデバイスメモリを解放しますが、ステップの処理は遅くなります。その他のキーはtorch.utils.checkpoint.checkpointに転送されます。
  • gradient_checkpointing (bool、省略可) — activation_checkpointing の非推奨エイリアスです。v6 で削除されます。
  • gradient_checkpointing_kwargs (dict、省略可) — activation_checkpointing_kwargs の非推奨エイリアスです。v6 で削除されます。

コンパイル

  • torch_compile (bool、任意、デフォルトは False) — PyTorch 2.0 の torch.compile() を使用してモデルをコンパイルし、トレーニングを高速化します。コードの変更なしで 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 の設定です。_apply_liger_kernel_to_instance() に kwargs として渡されます。 オプションには通常、"rope"、"swiglu"、"cross_entropy"、 "fused_linear_cross_entropy"、"rms_norm" が含まれます。None の場合は、デフォルトの設定が使用されます。

追加の最適化

  • use_cache (bool、任意、デフォルトは False) — モデルのキャッシュを有効にするかどうか。学習時には、past_key_values を使用する一部の PEFT 手法を除き、通常は必要ありません。
  • neftune_noise_alpha (Optional[float]) — None 以外の場合、NEFTune のノイズ埋め込みが有効になります。これにより、指示ファインチューニングにおけるモデルの性能が大幅に向上する可能性があります。元の論文および元のコードを参照してください。transformers の PreTrainedModel と、peft の PeftModel をサポートしています。元の論文では、[5.0, 15.0] の範囲の値が使用されていました。
  • torch_empty_cache_steps (int, 省略可) — torch.<device>.empty_cache() を呼び出す前に待機するステップ数です。未設定または None に設定されている場合、キャッシュはクリアされません。 これによりピーク時の VRAM 使用量を下げ、CUDA のメモリ不足エラーを回避できますが、パフォーマンスが約 10% 低下するというコストがあります。
  • 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" の場合、2 回のログ出力間の更新ステップ数です。[0,1) の範囲の整数または浮動小数点数である必要があります。1 未満の場合は、総トレーニングステップ数に対する比率として解釈されます。
  • logging_first_step (bool、任意、デフォルトはFalse) — 最初のglobal_stepをログに記録するかどうか。
  • log_on_each_node (bool、任意、デフォルトはTrue) — マルチノード分散学習において、log_level を使用してログを出力する際に、ノードごとに1回ずつ出力するか、メインノードでのみ出力するかどうかを指定します。
  • 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” にマッピングされるブール値を指定できます。 分散学習では、gather 操作を呼び出す必要があるため、処理が遅くなる場合があります。

ログ出力

  • log_level (str、任意、デフォルトは passive) — メインプロセスのログレベル。選択肢: "debug"、"info"、"warning"、"error"、 "critical"、または "passive"(現在の Transformers のログレベルを変更しません。 デフォルトは "warning" です)
  • log_level_replica (str、省略可能、デフォルトは "warning") — 分散学習におけるレプリカプロセスのログレベル。log_level と同じオプションが利用できます。
  • disable_tqdm (bool、省略可) — tqdm のプログレスバーを無効にします。log_level が warning 以下の場合、デフォルトは True、それ以外の場合は 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 (str または None、任意、デフォルトは None) — Gradio ベースの Space を使用して Trackio のライブログ出力を行う際に使用する Hugging Face Space の ID です。 'username/reponame' や 'orgname/reponame' のような完全な Space 名、または単に 'reponame'(Space は現在ログイン中のユーザーのネームスペースに作成されます)を指定します。 None の場合、メトリクスは ローカル ディレクトリにのみ記録されます(Hub 上の Space は作成されません)。 その Gradio Space は Trackio の Bucket に対して 読み書き アクセス権を持ちます。これは、トレーニングが 進行中 の場合、例えば部分実行を 再開 したり、複数のマシンから ログを集約 したりする際に必要です。 Space は hub_private_repo=True を設定するか、組織のデフォルトがプライベート Space の作成である場合を除き、パブリック になります。
  • trackio_bucket_id (str または None、任意、デフォルトは None) — Trackio 用の Hugging Face Bucket ID(任意)。未設定の場合、Trackio が自動的に生成します。Gradio Space(trackio_space_id)と組み合わせて使用し、静的 Space のデプロイ時(trackio_static_space_id が False でない場合)に使用されます。
  • trackio_static_space_id (str、False、または None、任意、デフォルトは None) — トレーニング完了後に作成される静的 Space に使用する Hugging Face Space ID です。'username/reponame' や 'orgname/reponame' のような完全な Space 名、または単に 'reponame' を指定します(この場合、Space は現在ログイン中のユーザーのネームスペース内に作成されます)。False の場合、静的 Space は作成されません。None の場合、かつモデルが Hub にプッシュされている場合、デフォルト名で静的 Space が作成され、モデルカードからリンクされます。hub_private_repo=True を設定するか、組織のデフォルトがプライベート Space の作成である場合を除き、Space はパブリックになります。

評価

  • eval_strategy (str または IntervalStrategy, 省略可, デフォルトは "no") — 評価の実行タイミング。選択肢は以下の通りです:
    • "no": 学習中に評価を実行しない
    • "steps": eval_stepsごとに評価
    • "epoch": 各エポックの終了時に評価を実行
  • eval_steps (int または float、省略可) — eval_strategy="steps" の場合、2 回の評価の間の更新ステップ数です。設定されていない場合は、logging_steps と同じ値がデフォルトで設定されます。[0,1) の範囲の整数または浮動小数点数である必要があります。1 より小さい場合は、総トレーニングステップ数に対する比率として解釈されます。
  • eval_delay (float, 任意) — に応じて、最初の評価を実行できるまで待機するエポック数またはステップ数。
  • 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 に設定すると、すべての eval logits をメモリに保存する代わりに、各バッチの終了時に compute_metrics を呼び出して統計情報を蓄積します。True に設定する場合、bool 型引数 compute_result を受け取る compute_metrics 関数を渡す必要があります。compute_result に True が渡された場合、評価セット全体で蓄積したバッチレベルの統計情報から、最終的なグローバルなサマリー統計を計算します。

チェックポイントの保存

  • save_only_model (bool、省略可、デフォルトは False) — モデルの重みのみを保存し、オプティマイザー/スケジューラー/RNG の状態は保存しません。チェックポイントのサイズを大幅に削減できますが、そのチェックポイントからトレーニングを再開できなくなります。継続的なトレーニングではなく、推論のために訓練済みモデルのみが必要な場合に使用してください。 このオプションを True に設定した場合、モデルは from_pretrained を使用してのみ読み込むことができます。
  • save_strategy (str または SaveStrategy, 省略可, デフォルトは "steps") — トレーニング中に採用するチェックポイントの保存戦略。指定可能な値は以下の通りです:
    • "no": 学習中に保存は行われません。
    • "epoch": 各エポックの終了時に保存が実行されます。
    • "steps": save_stepsごとに保存が行われます。
    • "best": 新しいbest_metricが達成されるたびに保存が行われます。
  • save_steps (int または float、任意、デフォルトは 500) — save_strategy="steps" の場合、2 回のチェックポイント保存の間隔となる更新ステップ数です。整数または [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) — プリエンプティブルなワークロードにおいて、SIGTERM シグナル時に Just-In-Time チェックポイントを作成し、正常な終了を可能にします。重要: オーケストレーターの graceful shutdown 期間を、十分な時間を確保するように設定してください。Kubernetes の場合は terminationGracePeriodSeconds を設定します(デフォルトの 30 秒では通常不十分です)。Slurm の場合は --signal=TERM@<seconds> を使用します。必要な grace period は、最長のイテレーション時間 + チェックポイントの保存時間以上である必要があります。

Hugging Face Hub 連携

  • push_to_hub (bool、省略可、デフォルトは False) — モデルを保存するたびに Hub にプッシュするかどうかを指定します。これを有効にすると、output_dir がリポジトリ(hub_model_id で決定される)と同期される git ディレクトリとして機能し、保存がトリガーされるたびに(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 と同期を維持するリポジトリの名前です。単なるモデル ID の場合、モデルはあなたの名前空間にプッシュされます。それ以外の場合は、"user_name/model" のように完全なリポジトリ名を指定する必要があります。これにより、"organization_name/model" を使用して、あなたがメンバーである組織にプッシュできます。デフォルトでは user_name/output_dir_name となり、output_dir_name は output_dir の名前です。
  • hub_strategy (str または HubStrategy, 省略可, デフォルトは "every_save") — Hub にプッシュする内容とタイミングを定義します。オプション:
    • "end": トレーニングの終了時のみプッシュ
    • "every_save": 各保存時にプッシュします(トレーニングをブロックしないよう非同期で実行)
    • "checkpoint": "every_save" に加えて、再開を容易にするため、最新のチェックポイントを "last-checkpoint" サブフォルダーにプッシュします
    • "all_checkpoints": 出現するすべてのチェックポイントをプッシュします
  • hub_always_push (bool、任意、デフォルトは False) — True 以外の場合、Trainer は、前回の push が完了していないときにチェックポイントの push をスキップします。
  • 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 は、メトリック名が "loss" で終わらない限り、デフォルトで True になります。例: "accuracy"、"f1"、"eval_bleu"。
  • greater_is_better (bool、省略可) — メトリックの値が高いほど良いかどうか。metric_for_best_modelに基づいてデフォルトが決定されます: メトリック名が"loss"で終わらない場合はTrue、それ以外の場合はFalse。

トレーニングの再開

  • ignore_data_skip (bool、任意、デフォルトは False) — トレーニングを再開する際に、以前の状態に到達するためにデータセットを高速スキップすることを無効にします。True の場合、トレーニングはデータセットの先頭から開始されます(再開は速くなりますが、中断されたトレーニングの結果と一致しません)。False の場合、既に処理済みのデータをスキップします(再開は遅くなりますが、正確に継続されます)。
  • restore_callback_states_from_checkpoint (bool、任意、デフォルトはFalse) — 再開時にチェックポイントからコールバックの状態を復元します。Trueの場合、チェックポイントに存在するコールバックは、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 を反復し、バッチをデバイスにディスパッチします。IterableDataset の場合はデフォルトで True、それ以外は 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を反復し、バッチを各デバイスにディスパッチします。IterableDatasetではデフォルトでTrue、それ以外ではFalseです。
    • even_batches (bool、デフォルトはTrue): データセットの先頭からサンプルを複製し、すべてのワーカーが同じバッチサイズになることを保証します。
    • use_seedable_sampler (bool、デフォルトは True): 再現性を確保するために、完全にシード可能なランダムサンプラーを使用します。
    • use_configured_state (bool、デフォルトは False): 新規作成する代わりに、事前初期化済みの AcceleratorState/PartialState を使用します。ハイパーパラメータチューニングで問題が発生する可能性があります。
  • parallelism_config (ParallelismConfig、任意) — トレーニング実行用の並列化設定です。Accelerate 1.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 インスタンスを存続させることができます。トレーニングを高速化する可能性がありますが、RAM 使用量が増加します。デフォルトはFalseです。
  • dataloader_prefetch_factor (int, 省略可) — 各ワーカーが事前に読み込むバッチの数です。 2 を指定すると、すべてのワーカー合計で 2 * num_workers 個のバッチが事前読み込みされます。
  • dataloader_multiprocessing_context (str, 省略可) — データローディングワーカーに使用するマルチプロセッシングの開始メソッド ("fork"、"spawn"、または "forkserver")。デフォルトでは PyTorch のデフォルトの開始メソッドが使用されますが、dataloader_num_workers > 1 の場合の MPS では "fork" がデフォルトになります。フォークに安全でないオブジェクトを持つソース (例: pyarrow を介した HDFS) からストリーミングする場合は "spawn" を使用してください。"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"]キーも含まれます。 カスタムのラベル名を使用している場合、またはモデルのforwardが複数のラベルテンソルを消費する場合(抽出型 QA など)にのみ、label_namesを指定してください。
  • train_sampling_strategy (str, 省略可, デフォルトは "random") — トレーニング用データローダーに使用するサンプラー。指定可能な値は以下の通りです:
    • "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、任意) — 分散学習を使用する場合、DistributedDataParallel に渡すフラグ find_unused_parameters の値です。勾配チェックポイントを使用している場合は False、それ以外の場合は True がデフォルトになります。
  • ddp_bucket_cap_mb (int, 任意) — 分散学習を使用する場合、DistributedDataParallel に渡すフラグ bucket_cap_mb の値。
  • ddp_broadcast_buffers (bool, 省略可) — 分散学習を使用する場合、DistributedDataParallel に渡すフラグ broadcast_buffers の値です。勾配チェックポイントを使用している場合は False、それ以外の場合は True がデフォルトになります。
  • ddp_static_graph (bool、任意) — 分散学習を使用する場合、DistributedDataParallel に渡すフラグ static_graph の値。
  • 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) を有効にします。FSDP を有効にするには True を渡します。
  • fsdp_config (str or dict, optional) — Configuration settings for when fsdp is enabled. Pass a path to a JSON config file, such as fsdp_config.json, or an already-loaded dict.

    サポートされているキー:

    • version (int、任意、デフォルトは 2): 使用する FSDP のバージョン (2 は FSDP2、1 はレガシーの FSDP1)。
    • reshard_after_forward (bool、任意、デフォルトはTrue): フォワードパスの後にパラメータをリシャードするかどうか。Falseに設定すると、フォワードパスとバックワードパスの間でパラメータをガサードした状態に保ち、リオールガサを回避できますが、ピークメモリ使用量が高くなります。
    • cpu_offload (bool、任意、デフォルトはFalse): 使用していないときにパラメータと勾配をCPUにオフロードして、GPUメモリを節約します。
    • activation_checkpointing (bool、任意、デフォルトはFalse): バックワードパスでアクティベーションを再計算してメモリを削減するには、Trueに設定します。FSDPを使用する場合は、バックワードパスで冗長なall-gatherを導入するトレーニング引数のactivation_checkpointingよりも、こちらを優先してください。
    • cpu_ram_efficient_loading (bool、任意、デフォルトは False): True に設定すると、事前学習済みチェックポイントを最初のプロセスでのみ読み込みます。その他のプロセスは空の重みで開始し、ブロードキャストによって重みを受信します。
    • state_dict_type (str、省略可、デフォルトは"FULL_STATE_DICT"): チェックポイントの形式: "FULL_STATE_DICT" (HF互換の単一ファイル) または "SHARDED_STATE_DICT" (ランクごとに1ファイル、大規模モデルでは高速)。
    • auto_wrap_policy (str、省略可、デフォルトは"TRANSFORMER_BASED_WRAP"): 使用する Auto-wrap ポリシー。"TRANSFORMER_BASED_WRAP"、"SIZE_BASED_WRAP"、または"NO_WRAP"を選択します。
    • transformer_layer_cls_to_wrap (list[str]、任意): ラップする Transformer レイヤーのクラス名(大文字と小文字を区別します)。例: LlamaDecoderLayer。通常は不要です。ラップポリシーは、ほとんどの transformers モデルをカバーするモデルの _no_split_modules にフォールバックします。
    • 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)が必要です。

DeepSpeed

  • deepspeed (str または dict, 省略可) — DeepSpeed の統合を有効にします。値は次のいずれかです:
    • DeepSpeed の JSON 設定ファイルへのパス: "ds_config.json"
    • 設定を辞書として読み込みました

      ZeRO初期化を使用する場合は、TrainingArgumentsを初期化した後にモデルをインスタンス化してください。そうしないと、ZeROが適用されません。

デバッグ & プロファイリング(実験的)

  • debug (str または DebugOption, 省略可, デフォルトは "") — 1 つ以上のデバッグ機能を有効にします。これは実験的な機能です。 利用可能なオプションは以下の通りです:
    • “underflow_overflow”: モデルの入力/出力におけるオーバーフローを検出し、そのイベントに至った最後のフレームを報告します
    • “tpu_metrics_debug”: TPU上でデバッグメトリクスを出力
  • skip_memory_metrics (bool、省略可、デフォルトはTrue) — メモリプロファイラのレポートをメトリクスに追加するかどうかを指定します。デフォルトではスキップされます。これは、トレーニングと評価の速度を低下させるためです。

外部スクリプトフラグ(Trainer では使用されません)

  • do_train (bool、省略可、デフォルトは False) — トレーニングを実行するかどうかを指定します。この引数は Trainer によって直接使用されず、代わりにトレーニング/評価スクリプトで使用することを想定しています。
  • do_eval (bool, 省略可) — 検証セットで評価を実行するかどうか。eval_strategy が "no" と異なる場合、True に設定されます。この引数は Trainer によって直接使用されるわけではなく、トレーニング/評価スクリプトで使用することを意図しています。
  • do_predict (bool、省略可、デフォルトは False) — テストセットで予測を実行するかどうかを指定します。この引数は Trainer によって直接使用されず、代わりに学習/評価スクリプトで使用することを想定しています。
  • resume_from_checkpoint (str, 任意) — モデルの有効なチェックポイントを含むフォルダへのパスです。この引数はTrainerによって直接使用されず、代わりに学習/評価スクリプトで使用することを想定しています。

Trainer によるモデルの学習のすべての側面を制御するための設定クラスです。 TrainingArguments は、学習に必要なすべてのハイパーパラメータ、最適化設定、ログ出力の好み、インフラストラクチャの選択を一元管理します。

HfArgumentParser は、このクラスをコマンドラインで指定できる argparse の引数に変換できます。

get_process_log_level

< >

( )

このプロセスがノード0のメインプロセス、ノード非0のメインプロセス、または非メインプロセスであるかによって、使用されるログレベルを返します。

メインプロセスのログレベルは、log_level 引数で上書きされない限り、設定されたログレベル(何も設定していない場合は logging.WARNING)がデフォルトになります。

レプリカプロセスのログレベルは、log_level_replica 引数で上書きされない限り、デフォルトで logging.WARNING になります。

should_logの戻り値に基づいて、メインプロセスとレプリカプロセスの設定のいずれかを選択します。

get_warmup_steps

< >

( num_training_steps: int )

線形ウォームアップに使用されるステップ数を取得します。

main_process_first

< >

( local = Truedesc = 'work' )

パラメータ

  • local (bool、任意、デフォルトは True) — True の場合、各ノードの rank 0 のプロセスが最初に処理を実行し、False の場合、rank 0 のノードの rank 0 のプロセスが最初に処理を実行します。共有ファイルシステムを持つマルチノード環境では、通常、local=False を使用して、最初のノードのメインプロセスのみが処理を実行するようにします。ただし、ファイルシステムが共有されていない場合は、各ノードのメインプロセスが処理を実行する必要があり、これがデフォルトの動作です。
  • desc (str、任意、デフォルトは "work") — デバッグログで使用するタスクの説明

torch の分散環境用のコンテキストマネージャーです。メインプロセスで何らかの処理を実行する必要がある場合、レプリカをブロックし、処理が完了したらレプリカを解放します。

その用途の一つは、datasetsのmap機能です。この機能は効率的に動作させるためにメインプロセスで一度だけ実行する必要があり、完了すると結果のキャッシュ版が保存され、その後レプリカによって自動的に読み込まれます。

set_dataloader

< >

( 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 の場合、データセットが一度消費された後でも、data loader は worker プロセスをシャットダウンしません。これにより、worker の Dataset インスタンスを存続させることができます。トレーニングの高速化につながる可能性がありますが、RAM 使用量が増加します。デフォルトは False です。
  • prefetch_factor (int, 省略可) — 各ワーカーが事前に読み込むバッチの数です。 2 を指定すると、すべてのワーカー合計で 2 * num_workers 個のバッチが事前読み込みされます。
  • multiprocessing_context (str, 省略可) — データローディングワーカーに使用するマルチプロセッシングの開始メソッド("fork"、"spawn"、または "forkserver")。デフォルトでは、PyTorch のデフォルトの開始メソッドが使用されます。fork 非対応のオブジェクトを持つソース(pyarrow を介した HDFS など)からストリーミングする場合は、"spawn" を使用してください。"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 と同じシードを使用します。これにより、モデルのシードとは独立して、データサンプリングの再現性を確保できます。

dataloader の作成に関連するすべての引数をまとめ直すメソッドです。

例:

>>> from transformers import TrainingArguments

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

set_evaluate

< >

( 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": 各エポックの終了時に評価が行われます。

    "no" 以外の strategy を設定すると、self.do_eval は True に設定されます。

  • steps (int、任意、デフォルトは 500) — strategy="steps" の場合、2 回の評価の間の更新ステップ数です。
  • batch_size (int 任意、デフォルトは 8) — 評価に使用する、デバイスごとのバッチサイズ(GPU/TPU コア/CPU など)。
  • accumulation_steps (int, 任意) — 結果を CPU に移動する前に、出力テンソルを蓄積する予測ステップの数です。 設定しない場合、予測全体が GPU/TPU 上で蓄積された後に CPU に移動されます(高速ですが、より多くのメモリを必要とします)。
  • delay (float, 任意) — eval_strategy に応じて、最初の評価を実行できるまで待機するエポック数またはステップ数。
  • loss_only (bool、省略可、デフォルトはFalse) — loss 以外のすべての出力を無視します。

評価に関連付けられたすべての引数を再グループ化するメソッドです。

例:

>>> from transformers import TrainingArguments

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

set_logging

< >

( 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" の場合、2 回のログの間に行われる更新ステップ数。
  • 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 は損失値のログ出力に影響するだけで、勾配の計算やモデルへの適用の挙動は変更されません。

  • on_each_node (bool、任意、デフォルトはTrue) — マルチノード分散学習において、log_level を使用してログを記録する際に、ノードごとに1回ずつ記録するか、メインノードでのみ記録するかを指定します。
  • replica_level (str、任意、デフォルトは "passive") — レプリカで使用する Logger のログレベル。log_level と同じ選択肢が利用できます。

ロギングに関連するすべての引数をまとめ直すメソッドです。

例:

>>> from transformers import TrainingArguments

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

set_lr_scheduler

< >

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

パラメータ

  • name (str または SchedulerType、optional、デフォルトは "linear") — 使用するスケジューラーの種類です。すべての可能な値については、SchedulerType のドキュメントを参照してください。
  • num_epochs(float, optional, デフォルト値は 3.0) — 実行するトレーニングのエポック総数(整数でない場合、トレーニングを停止する前に、最後のエポックの小数部分に相当する割合だけ実行します)。
  • max_steps (int、任意、デフォルトは -1) — 正の値に設定した場合、実行する学習ステップの総数を指定します。num_train_epochs を上書きします。 有限のデータセットの場合、max_steps に達するまで、データセットを反復して学習します(すべてのデータが使い切られた場合)。 学習データセットが __len__ を実装していない場合(ストリーミングデータセットなど)、ステップの総数を推定できないため、学習ループの範囲を制限し、学習率スケジューラを設定するために、正の値を設定する必要があります。
  • warmup_steps (float、任意、デフォルトは 0) — learning_rate まで 0 から線形ウォームアップを行うステップ数です。整数または [0,1) 範囲の浮動小数点数である必要があります。 1 未満の場合は、learning_rate まで 0 から線形ウォームアップを行うステップ数の比率として解釈されます。

学習率スケジューラとそのハイパーパラメータに関連付けられたすべての引数を再グループ化するメソッドです。

例:

>>> from transformers import TrainingArguments

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

set_optimizer

< >

( 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) — すべての bias および LayerNorm の重みを除く、すべてのレイヤーに適用する weight decay(ゼロでない場合)。
  • beta1 (float、任意、デフォルト値は 0.9) — adam オプティマイザーまたはそのバリアントにおける beta1 ハイパーパラメーター。
  • beta2 (float、任意、デフォルト値は 0.999) — adam オプティマイザーまたはそのバリアントにおける beta2 ハイパーパラメータ。
  • epsilon (float、任意、デフォルト値: 1e-8) — adam オプティマイザーまたはそのバリアントにおける epsilon ハイパーパラメータ。
  • args (str、任意) — AnyPrecisionAdamW に渡す任意の引数(optim="adamw_anyprecision" の場合のみ有効)。

オプティマイザーとそのハイパーパラメーターに関連付けられたすべての引数を再グループ化するメソッドです。

例:

>>> from transformers import TrainingArguments

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

set_push_to_hub

< >

( 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 と同期を維持するリポジトリの名前です。単なるモデル ID の場合、モデルはあなたの名前空間にプッシュされます。それ以外の場合は、"user_name/model" のように完全なリポジトリ名を指定する必要があります。これにより、"organization_name/model" を使用して、所属している組織にプッシュできます。
  • strategy (str または HubStrategy, 省略可, デフォルトは "every_save") — Hub にプッシュする範囲とタイミングを定義します。指定可能な値は以下の通りです:
    • "end": save_model() メソッドが呼び出されたときに、モデル、その設定、処理クラス(例: トークナイザー、Trainer に渡された場合)、およびモデルカードのドラフトをプッシュします。
    • "every_save": モデルの保存が行われるたびに、モデル本体、その設定、処理クラス(例: トークナイザー、Trainerに渡された場合)、およびモデルカードのドラフトを push します。push は非同期で実行され、トレーニングをブロックしません。また、保存が非常に頻繁に行われる場合、前回の push が完了していない限り、新しい push は試行されません。トレーニング終了時には、最終モデルで最後の push が実行されます。
    • "checkpoint": "every_save" と同様にチェックポイントを保存しますが、最新のチェックポイントは last-checkpoint という名前のサブフォルダーにもプッシュされるため、trainer.train(resume_from_checkpoint="last-checkpoint") を使用してトレーニングを簡単に再開できます。
    • "all_checkpoints": "checkpoint"と同様ですが、出力フォルダに表示される順序ですべてのチェックポイントがプッシュされます(最終リポジトリには、フォルダごとに1つのチェックポイントフォルダが作成されます)。
  • token (str, 任意) — Hub にモデルをプッシュするために使用するトークン。hf auth login で取得したキャッシュフォルダ内のトークンがデフォルトで使われます。
  • private_repo (bool、省略可、デフォルトは False) — リポジトリを非公開にするかどうか。None(デフォルト)の場合、組織のデフォルトが非公開でない限り、リポジトリは公開になります。リポジトリが既に存在する場合、この値は無視されます。
  • always_push (bool、任意、デフォルトは False) — True 以外の場合、Trainer は、前回の push が完了していないときにチェックポイントの push をスキップします。
  • revision (str, 省略可) — Hub にプッシュする際に使用するリビジョンです。ブランチ名、タグ、またはコミットハッシュを指定できます。

Hub でのチェックポイントの同期に関連するすべての引数をまとめ直すメソッドです。

このメソッドを呼び出すと、self.push_to_hub が True に設定され、output_dir がリポジトリ(model_id で決定される)と同期される git ディレクトリとして機能し始めます。これにより、保存がトリガーされるたびに(self.save_strategy に依存します)コンテンツがプッシュされます。save_model() の呼び出しもプッシュをトリガーします。

例:

>>> from transformers import TrainingArguments

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

set_save

< >

( 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" の場合、2 回のチェックポイント保存の間に行う更新ステップ数です。
  • total_limit (int、省略可) — 値が渡された場合、チェックポイントの総数を制限します。output_dir 内の古いチェックポイントが削除されます。
  • on_each_node (bool, 省略可, デフォルトは False) — マルチノード分散学習を行う場合、モデルとチェックポイントを各ノードに保存するか、メインノードのみに保存するかを指定します。

    各ノードが同じストレージを使用している場合、ファイルは各ノードで同じ名前として保存されるため、これを有効にすべきではありません。

チェックポイントの保存に関連するすべての引数をまとめ直すメソッドです。

例:

>>> from transformers import TrainingArguments

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

set_testing

< >

( batch_size: int = 8loss_only: bool = False )

パラメータ

  • batch_size (int 省略可能、デフォルトは 8) — テストに使用する、デバイスごとのバッチサイズ(GPU/TPU コア/CPU など)。
  • loss_only (bool、省略可、デフォルトはFalse) — loss 以外のすべての出力を無視します。

保留データセットでのテストに関連するすべての基本引数をまとめ直すメソッドです。

このメソッドを呼び出すと、self.do_predict が自動的に True に設定されます。

例:

>>> from transformers import TrainingArguments

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

set_training

< >

( 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) — オプティマイザーにおいて、すべてのバイアスおよび LayerNorm の重みを除くすべての層に適用するウェイトディケイ(ゼロでない場合)。
  • num_epochs (float、任意、デフォルト値は 3.0)— 実行する学習エポックの総数です(整数でない場合、最後のエポックの小数点以下の割合分だけ学習を実行した後に停止します)。
  • max_steps (int、任意、デフォルトは -1) — 正の値に設定した場合、実行する学習ステップの総数を指定します。num_train_epochs を上書きします。 有限のデータセットの場合、max_steps に達するまで、データセットを反復して学習します(すべてのデータが使い切られた場合)。 学習データセットが __len__ を実装していない場合(ストリーミングデータセットなど)、ステップの総数を推定できないため、学習ループの範囲を制限し、学習率スケジューラを設定するために、正の値を設定する必要があります。
  • gradient_accumulation_steps (int, 省略可, デフォルト値は 1) — backward/update パスを実行する前に、勾配を累積する更新ステップ数。

    勾配蓄積を使用する場合、1ステップはバックワードパスを伴う1ステップとしてカウントされます。したがって、ログ記録、評価、保存は、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 に設定されます。

例:

>>> from transformers import TrainingArguments

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

to_dict

< >

( )

このインスタンスをシリアライズし、Enumをその値に置き換えます(JSON シリアライズ対応のため)。トークン値を削除することで、トークン値をマスクします。

to_json_string

< >

( )

このインスタンスをJSON文字列にシリアライズします。

to_sanitized_dict

< >

( )

TensorBoard の hparams と併用するためのサニタイズされたシリアライズ

Seq2SeqTrainingArguments

クラス transformers.Seq2SeqTrainingArguments

< >

( 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[str] = <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) — デバイスごとのバッチサイズです。グローバルバッチサイズは、マルチ GPU または分散環境では、per_device_train_batch_size * number_of_devices で計算されます。
  • num_train_epochs(float, 任意、デフォルト値は 3.0) — 実行するトレーニングエポックの総数です(整数でない場合、トレーニングを停止する前に、最後のエポックの小数部分に相当する割合だけ実行されます)。
  • max_steps (int、任意、デフォルトは -1) — num_train_epochs を上書きします。正の値に設定した場合、実行するトレーニングステップの総数を指定します。 有限のデータセットの場合、データがすべて使い切られたら、max_steps に達するまでデータセットを繰り返し通してトレーニングを行います。 トレーニングデータセットが __len__ を実装していない場合(ストリーミングデータセットなど)、ステップの総数を推定できないため、トレーニングループの上限を定め、学習率スケジューラを設定するために、正の値を設定する必要があります。

学習率とスケジューラ

  • learning_rate (float、任意、デフォルト値は 5e-5)— オプティマイザの初期学習率です。ウォームアップ付きスケジューラを使用する場合、通常これはピーク学習率になります。
  • lr_scheduler_type (str または SchedulerType, 省略可, デフォルトは "linear") — 使用する学習率スケジューラーの種類です。 SchedulerType にすべての可能な値が記載されています。よく使われる選択肢:
  • lr_scheduler_kwargs (dict または str、省略可、デフォルトは None) — lr_scheduler に渡す追加引数です。各スケジューラのドキュメントを参照して、指定可能な値を確認してください。
  • warmup_steps (int または float, 省略可, デフォルト値は 0) — 0 から learning_rate. までの線形ウォームアップを行うステップ数。ウォームアップは、学習の初期段階での安定化に役立ちます。指定できる値は以下の通りです:
    • 整数:ウォームアップステップの正確な回数
    • 範囲 [0, 1) の float: 総トレーニングステップ数に対する比率として解釈されます

オプティマイザ

  • optim (str または training_args.OptimizerNames, 省略可, デフォルトは "adamw_torch" (torch>=2.8 の場合は "adamw_torch_fused")) — 使用するオプティマイザーです。一般的なオプションは以下の通りです。
    • "adamw_torch": PyTorch の AdamW(推奨のデフォルト)
    • "adamw_torch_fused": Fused AdamW カーネル
    • "adamw_hf": HuggingFace による AdamW の実装
    • "sgd": モメンタム付き確率勾配降下法
    • "adafactor": 大規模モデル向けのメモリ効率の高いオプティマイザ
    • "adamw_8bit": 8ビット AdamW(bitsandbytes が必要) 完全なリストは OptimizerNames を参照してください。
  • optim_args (str、任意) — AnyPrecisionAdamW、AdEMAMix、GaLore などのオプティマイザーに渡す任意の引数。
  • weight_decay (float、任意、デフォルト値は 0) — オプティマイザーによって適用されるウェイト減衰係数(損失関数ではありません)。大きな重みをペナルティすることで過学習を防ぐ L2 正則化を追加します。バイアスおよび LayerNorm パラメータには自動的に適用されません。一般的な値: 0.01(標準)、0.1(より強い正則化)、0.0(正則化なし)。
  • adam_beta1 (float、任意、デフォルト値は 0.9)— Adam ベースのオプティマイザーにおける、1 次モーメント推定値(モメンタム)の指数減衰率です。勾配の履歴をどの程度保持するかを制御します。
  • adam_beta2 (float、任意、デフォルト値は 0.999) — Adam ベースのオプティマイザーにおける、2 階モーメント推定値(分散)の指数減衰率です。適応型学習率のスケーリングを制御します。
  • 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) — backward/update パスを実行する前に勾配を累積する更新ステップ数。 追加のメモリを使用せずに、より大きなバッチサイズをシミュレートします。実効バッチサイズ = per_device_train_batch_size × num_devices × gradient_accumulation_steps.

    勾配蓄積を使用する場合、1つの「ステップ」はバックワードパスを1回実行したステップとしてカウントされます。したがって、ログ出力、評価、および保存は、gradient_accumulation_steps × xxx_step 個の学習例ごとに実行されます。

  • average_tokens_across_devices (bool、省略可、デフォルトはTrue) — デバイス間でトークンを平均化するかどうかを指定します。有効な場合、all_reduce を使用して num_tokens_in_batch を同期し、損失の正確な計算を行います。参考: https://github.com/huggingface/transformers/issues/34242
  • max_grad_norm (float、任意、デフォルト値は 1.0) — 勾配クリッピングに使用する最大勾配ノルムです。バックワードパスの後に、オプティマイザのステップの前に適用されます。勾配のグローバルノルムがこの閾値を超えた場合に勾配を縮小することで、勾配の爆発を防ぎます。クリッピングを無効にするには 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 の使用を検討してください。
  • bf16_full_eval (bool、任意、デフォルトは False) — 評価時に完全な BF16 精度を使用します(混合精度ではありません)。より高速でメモリを節約できますが、メトリックの値がわずかに影響を受ける可能性があります。評価時のみ適用されます。
  • fp16_full_eval (bool、任意、デフォルトは False) — 評価時に完全な FP16 精度を使用します(混合精度ではありません)。より高速でメモリを節約できますが、メトリックの値がわずかに影響を受ける可能性があります。評価時のみ適用されます。
  • tf32 (bool, 任意) — Ampere 以降の GPU で TensorFloat-32 (TF32) モードを有効にします。TF32 は行列乗算に 19 ビットの精度を使用します (FP32 の 23 ビットではなく)、精度の低下はほぼ無視できるレベルで最大 8 倍の高速化を実現します。デフォルト値は PyTorch のバージョンに依存します。TF32 のドキュメントを参照してください。

アクティベーション・チェックポイント

  • activation_checkpointing (bool、任意、デフォルトはFalse) — アクティベーション・チェックポイントを有効にし、計算量とメモリをトレードオフします。フォワードパス中にアクティベーションをクリアし、バックワードパス中に再計算することで、メモリ使用量を削減します。約20%の学習速度低下を代償として、より大きなモデルやバッチサイズでの学習を可能にします。
  • activation_checkpointing_kwargs (dict、任意、デフォルトはNone) — activation_checkpointing_enable()に渡すキーワード引数です。every_n_layersを指定すると、すべてのデコーダー層ではなく、n層ごとにチェックポイントを作成します。1は通常どおり全層または全層なしの動作であり、より大きな値を指定するとメモリを解放して速度を向上させることができます。offloadを指定すると、保存されたアクティベーションをピン留めされたホストメモリに保持し、layers x sequence x hiddenバイト分のデバイスメモリを解放しますが、ステップの処理は遅くなります。その他のキーはtorch.utils.checkpoint.checkpointに転送されます。
  • gradient_checkpointing (bool、省略可) — activation_checkpointing の非推奨エイリアスです。v6 で削除されます。
  • gradient_checkpointing_kwargs (dict、省略可) — activation_checkpointing_kwargs の非推奨エイリアスです。v6 で削除されます。

コンパイル

  • torch_compile (bool、任意、デフォルトは False) — PyTorch 2.0 の torch.compile() を使用してモデルをコンパイルし、トレーニングを高速化します。コードの変更なしで 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 の設定です。_apply_liger_kernel_to_instance() に kwargs として渡されます。 オプションには通常、"rope"、"swiglu"、"cross_entropy"、 "fused_linear_cross_entropy"、"rms_norm" が含まれます。None の場合は、デフォルトの設定が使用されます。

追加の最適化

  • use_cache (bool、任意、デフォルトは False) — モデルのキャッシュを有効にするかどうか。学習時には、past_key_values を使用する一部の PEFT 手法を除き、通常は必要ありません。
  • neftune_noise_alpha (Optional[float]) — None 以外の場合、NEFTune のノイズ埋め込みが有効になります。これにより、指示ファインチューニングにおけるモデルの性能が大幅に向上する可能性があります。元の論文および元のコードを参照してください。transformers の PreTrainedModel と、peft の PeftModel をサポートしています。元の論文では、[5.0, 15.0] の範囲の値が使用されていました。
  • torch_empty_cache_steps (int, 省略可) — torch.<device>.empty_cache() を呼び出す前に待機するステップ数です。未設定または None に設定されている場合、キャッシュはクリアされません。 これによりピーク時の VRAM 使用量を下げ、CUDA のメモリ不足エラーを回避できますが、パフォーマンスが約 10% 低下するというコストがあります。
  • 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" の場合、2 回のログ出力間の更新ステップ数です。[0,1) の範囲の整数または浮動小数点数である必要があります。1 未満の場合は、総トレーニングステップ数に対する比率として解釈されます。
  • logging_first_step (bool、任意、デフォルトはFalse) — 最初のglobal_stepをログに記録するかどうか。
  • log_on_each_node (bool、任意、デフォルトはTrue) — マルチノード分散学習において、log_level を使用してログを出力する際に、ノードごとに1回ずつ出力するか、メインノードでのみ出力するかどうかを指定します。
  • 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” にマッピングされるブール値を指定できます。 分散学習では、gather 操作を呼び出す必要があるため、処理が遅くなる場合があります。

ログ出力

  • log_level (str、任意、デフォルトは passive) — メインプロセスのログレベル。選択肢: "debug"、"info"、"warning"、"error"、 "critical"、または "passive"(現在の Transformers のログレベルを変更しません。 デフォルトは "warning" です)
  • log_level_replica (str、省略可能、デフォルトは "warning") — 分散学習におけるレプリカプロセスのログレベル。log_level と同じオプションが利用できます。
  • disable_tqdm (bool、省略可) — tqdm のプログレスバーを無効にします。log_level が warning 以下の場合、デフォルトは True、それ以外の場合は 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 (str または None、任意、デフォルトは None) — Gradio ベースの Space を使用して Trackio のライブログ出力を行う際に使用する Hugging Face Space の ID です。 'username/reponame' や 'orgname/reponame' のような完全な Space 名、または単に 'reponame'(Space は現在ログイン中のユーザーのネームスペースに作成されます)を指定します。 None の場合、メトリクスは ローカル ディレクトリにのみ記録されます(Hub 上の Space は作成されません)。 その Gradio Space は Trackio の Bucket に対して 読み書き アクセス権を持ちます。これは、トレーニングが 進行中 の場合、例えば部分実行を 再開 したり、複数のマシンから ログを集約 したりする際に必要です。 Space は hub_private_repo=True を設定するか、組織のデフォルトがプライベート Space の作成である場合を除き、パブリック になります。
  • trackio_bucket_id (str または None、任意、デフォルトは None) — Trackio 用の Hugging Face Bucket ID(任意)。未設定の場合、Trackio が自動的に生成します。Gradio Space(trackio_space_id)と組み合わせて使用し、静的 Space のデプロイ時(trackio_static_space_id が False でない場合)に使用されます。
  • trackio_static_space_id (str、False、または None、任意、デフォルトは None) — トレーニング完了後に作成される静的 Space に使用する Hugging Face Space ID です。'username/reponame' や 'orgname/reponame' のような完全な Space 名、または単に 'reponame' を指定します(この場合、Space は現在ログイン中のユーザーのネームスペース内に作成されます)。False の場合、静的 Space は作成されません。None の場合、かつモデルが Hub にプッシュされている場合、デフォルト名で静的 Space が作成され、モデルカードからリンクされます。hub_private_repo=True を設定するか、組織のデフォルトがプライベート Space の作成である場合を除き、Space はパブリックになります。

評価

  • eval_strategy (str または IntervalStrategy, 省略可, デフォルトは "no") — 評価の実行タイミング。選択肢は以下の通りです:
    • "no": 学習中に評価を実行しない
    • "steps": eval_stepsごとに評価
    • "epoch": 各エポックの終了時に評価を実行
  • eval_steps (int または float、省略可) — eval_strategy="steps" の場合、2 回の評価の間の更新ステップ数です。設定されていない場合は、logging_steps と同じ値がデフォルトで設定されます。[0,1) の範囲の整数または浮動小数点数である必要があります。1 より小さい場合は、総トレーニングステップ数に対する比率として解釈されます。
  • eval_delay (float, 任意) — に応じて、最初の評価を実行できるまで待機するエポック数またはステップ数。
  • 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 に設定すると、すべての eval logits をメモリに保存する代わりに、各バッチの終了時に compute_metrics を呼び出して統計情報を蓄積します。True に設定する場合、bool 型引数 compute_result を受け取る compute_metrics 関数を渡す必要があります。compute_result に True が渡された場合、評価セット全体で蓄積したバッチレベルの統計情報から、最終的なグローバルなサマリー統計を計算します。

チェックポイントの保存

  • save_only_model (bool、省略可、デフォルトは False) — モデルの重みのみを保存し、オプティマイザー/スケジューラー/RNG の状態は保存しません。チェックポイントのサイズを大幅に削減できますが、そのチェックポイントからトレーニングを再開できなくなります。継続的なトレーニングではなく、推論のために訓練済みモデルのみが必要な場合に使用してください。 このオプションを True に設定した場合、モデルは from_pretrained を使用してのみ読み込むことができます。
  • save_strategy (str または SaveStrategy, 省略可, デフォルトは "steps") — トレーニング中に採用するチェックポイントの保存戦略。指定可能な値は以下の通りです:
    • "no": 学習中に保存は行われません。
    • "epoch": 各エポックの終了時に保存が実行されます。
    • "steps": save_stepsごとに保存が行われます。
    • "best": 新しいbest_metricが達成されるたびに保存が行われます。
  • save_steps (int または float、任意、デフォルトは 500) — save_strategy="steps" の場合、2 回のチェックポイント保存の間隔となる更新ステップ数です。整数または [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) — プリエンプティブルなワークロードにおいて、SIGTERM シグナル時に Just-In-Time チェックポイントを作成し、正常な終了を可能にします。重要: オーケストレーターの graceful shutdown 期間を、十分な時間を確保するように設定してください。Kubernetes の場合は terminationGracePeriodSeconds を設定します(デフォルトの 30 秒では通常不十分です)。Slurm の場合は --signal=TERM@<seconds> を使用します。必要な grace period は、最長のイテレーション時間 + チェックポイントの保存時間以上である必要があります。

Hugging Face Hub 連携

  • push_to_hub (bool、省略可、デフォルトは False) — モデルを保存するたびに Hub にプッシュするかどうかを指定します。これを有効にすると、output_dir がリポジトリ(hub_model_id で決定される)と同期される git ディレクトリとして機能し、保存がトリガーされるたびに(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 と同期を維持するリポジトリの名前です。単なるモデル ID の場合、モデルはあなたの名前空間にプッシュされます。それ以外の場合は、"user_name/model" のように完全なリポジトリ名を指定する必要があります。これにより、"organization_name/model" を使用して、あなたがメンバーである組織にプッシュできます。デフォルトでは user_name/output_dir_name となり、output_dir_name は output_dir の名前です。
  • hub_strategy (str または HubStrategy, 省略可, デフォルトは "every_save") — Hub にプッシュする内容とタイミングを定義します。オプション:
    • "end": トレーニングの終了時のみプッシュ
    • "every_save": 各保存時にプッシュします(トレーニングをブロックしないよう非同期で実行)
    • "checkpoint": "every_save" に加えて、再開を容易にするため、最新のチェックポイントを "last-checkpoint" サブフォルダーにプッシュします
    • "all_checkpoints": 出現するすべてのチェックポイントをプッシュします
  • hub_always_push (bool、任意、デフォルトは False) — True 以外の場合、Trainer は、前回の push が完了していないときにチェックポイントの push をスキップします。
  • 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 は、メトリック名が "loss" で終わらない限り、デフォルトで True になります。例: "accuracy"、"f1"、"eval_bleu"。
  • greater_is_better (bool、省略可) — メトリックの値が高いほど良いかどうか。metric_for_best_modelに基づいてデフォルトが決定されます: メトリック名が"loss"で終わらない場合はTrue、それ以外の場合はFalse。

トレーニングの再開

  • ignore_data_skip (bool、任意、デフォルトは False) — トレーニングを再開する際に、以前の状態に到達するためにデータセットを高速スキップすることを無効にします。True の場合、トレーニングはデータセットの先頭から開始されます(再開は速くなりますが、中断されたトレーニングの結果と一致しません)。False の場合、既に処理済みのデータをスキップします(再開は遅くなりますが、正確に継続されます)。
  • restore_callback_states_from_checkpoint (bool、任意、デフォルトはFalse) — 再開時にチェックポイントからコールバックの状態を復元します。Trueの場合、チェックポイントに存在するコールバックは、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 を反復し、バッチをデバイスにディスパッチします。IterableDataset の場合はデフォルトで True、それ以外は 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を反復し、バッチを各デバイスにディスパッチします。IterableDatasetではデフォルトでTrue、それ以外ではFalseです。
    • even_batches (bool、デフォルトはTrue): データセットの先頭からサンプルを複製し、すべてのワーカーが同じバッチサイズになることを保証します。
    • use_seedable_sampler (bool、デフォルトは True): 再現性を確保するために、完全にシード可能なランダムサンプラーを使用します。
    • use_configured_state (bool、デフォルトは False): 新規作成する代わりに、事前初期化済みの AcceleratorState/PartialState を使用します。ハイパーパラメータチューニングで問題が発生する可能性があります。
  • parallelism_config (ParallelismConfig、任意) — トレーニング実行用の並列化設定です。Accelerate 1.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 インスタンスを存続させることができます。トレーニングを高速化する可能性がありますが、RAM 使用量が増加します。デフォルトはFalseです。
  • dataloader_prefetch_factor (int, 省略可) — 各ワーカーが事前に読み込むバッチの数です。 2 を指定すると、すべてのワーカー合計で 2 * num_workers 個のバッチが事前読み込みされます。
  • dataloader_multiprocessing_context (str, 省略可) — データローディングワーカーに使用するマルチプロセッシングの開始メソッド ("fork"、"spawn"、または "forkserver")。デフォルトでは PyTorch のデフォルトの開始メソッドが使用されますが、dataloader_num_workers > 1 の場合の MPS では "fork" がデフォルトになります。フォークに安全でないオブジェクトを持つソース (例: pyarrow を介した HDFS) からストリーミングする場合は "spawn" を使用してください。"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"]キーも含まれます。 カスタムのラベル名を使用している場合、またはモデルのforwardが複数のラベルテンソルを消費する場合(抽出型 QA など)にのみ、label_namesを指定してください。
  • train_sampling_strategy (str, 省略可, デフォルトは "random") — トレーニング用データローダーに使用するサンプラー。指定可能な値は以下の通りです:
    • "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、任意) — 分散学習を使用する場合、DistributedDataParallel に渡すフラグ find_unused_parameters の値です。勾配チェックポイントを使用している場合は False、それ以外の場合は True がデフォルトになります。
  • ddp_bucket_cap_mb (int, 任意) — 分散学習を使用する場合、DistributedDataParallel に渡すフラグ bucket_cap_mb の値。
  • ddp_broadcast_buffers (bool, 省略可) — 分散学習を使用する場合、DistributedDataParallel に渡すフラグ broadcast_buffers の値です。勾配チェックポイントを使用している場合は False、それ以外の場合は True がデフォルトになります。
  • ddp_static_graph (bool、任意) — 分散学習を使用する場合、DistributedDataParallel に渡すフラグ static_graph の値。
  • 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) を有効にします。FSDP を有効にするには True を渡します。
  • fsdp_config (str or dict, optional) — Configuration settings for when fsdp is enabled. Pass a path to a JSON config file, such as fsdp_config.json, or an already-loaded dict.

    サポートされているキー:

    • version (int、任意、デフォルトは 2): 使用する FSDP のバージョン (2 は FSDP2、1 はレガシーの FSDP1)。
    • reshard_after_forward (bool、任意、デフォルトはTrue): フォワードパスの後にパラメータをリシャードするかどうか。Falseに設定すると、フォワードパスとバックワードパスの間でパラメータをガサードした状態に保ち、リオールガサを回避できますが、ピークメモリ使用量が高くなります。
    • cpu_offload (bool、任意、デフォルトはFalse): 使用していないときにパラメータと勾配をCPUにオフロードして、GPUメモリを節約します。
    • activation_checkpointing (bool、任意、デフォルトはFalse): バックワードパスでアクティベーションを再計算してメモリを削減するには、Trueに設定します。FSDPを使用する場合は、バックワードパスで冗長なall-gatherを導入するトレーニング引数のactivation_checkpointingよりも、こちらを優先してください。
    • cpu_ram_efficient_loading (bool、任意、デフォルトは False): True に設定すると、事前学習済みチェックポイントを最初のプロセスでのみ読み込みます。その他のプロセスは空の重みで開始し、ブロードキャストによって重みを受信します。
    • state_dict_type (str、省略可、デフォルトは"FULL_STATE_DICT"): チェックポイントの形式: "FULL_STATE_DICT" (HF互換の単一ファイル) または "SHARDED_STATE_DICT" (ランクごとに1ファイル、大規模モデルでは高速)。
    • auto_wrap_policy (str、省略可、デフォルトは"TRANSFORMER_BASED_WRAP"): 使用する Auto-wrap ポリシー。"TRANSFORMER_BASED_WRAP"、"SIZE_BASED_WRAP"、または"NO_WRAP"を選択します。
    • transformer_layer_cls_to_wrap (list[str]、任意): ラップする Transformer レイヤーのクラス名(大文字と小文字を区別します)。例: LlamaDecoderLayer。通常は不要です。ラップポリシーは、ほとんどの transformers モデルをカバーするモデルの _no_split_modules にフォールバックします。
    • 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)が必要です。

DeepSpeed

  • deepspeed (str または dict, 省略可) — DeepSpeed の統合を有効にします。値は次のいずれかです:
    • DeepSpeed の JSON 設定ファイルへのパス: "ds_config.json"
    • 設定を辞書として読み込みました

      ZeRO初期化を使用する場合は、TrainingArgumentsを初期化した後にモデルをインスタンス化してください。そうしないと、ZeROが適用されません。

デバッグ & プロファイリング(実験的)

  • debug (str または DebugOption, 省略可, デフォルトは "") — 1 つ以上のデバッグ機能を有効にします。これは実験的な機能です。 利用可能なオプションは以下の通りです:
    • “underflow_overflow”: モデルの入力/出力におけるオーバーフローを検出し、そのイベントに至った最後のフレームを報告します
    • “tpu_metrics_debug”: TPU上でデバッグメトリクスを出力
  • skip_memory_metrics (bool、省略可、デフォルトはTrue) — メモリプロファイラのレポートをメトリクスに追加するかどうかを指定します。デフォルトではスキップされます。これは、トレーニングと評価の速度を低下させるためです。

外部スクリプトフラグ(Trainer では使用されません)

  • do_train (bool、省略可、デフォルトは False) — トレーニングを実行するかどうかを指定します。この引数は Trainer によって直接使用されず、代わりにトレーニング/評価スクリプトで使用することを想定しています。
  • do_eval (bool, 省略可) — 検証セットで評価を実行するかどうか。eval_strategy が "no" と異なる場合、True に設定されます。この引数は 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, 省略可) — predict_with_generate=True の場合、各評価ループで使用する max_length です。デフォルトでは、モデル設定の max_length 値が使用されます。
  • generation_num_beams (int, 省略可) — predict_with_generate=True の場合、各評価ループで使用する num_beams です。デフォルトでは、モデル設定の num_beams 値が使用されます。
  • generation_config (str または Path または GenerationConfig, 、任意) — から GenerationConfig を from_pretrained メソッドから読み込むことを可能にします。以下いずれかです:
    • 文字列、huggingface.co上のモデルリポジトリにホストされている事前学習済みモデル設定のmodel id。
    • save_pretrained() メソッドを使用して設定ファイルを保存した ディレクトリ へのパス。例: ./my_model_directory/
    • GenerationConfig オブジェクト。

Trainer によるモデルの学習のすべての側面を制御するための設定クラスです。 TrainingArguments は、学習に必要なすべてのハイパーパラメータ、最適化設定、ログ出力の好み、インフラストラクチャの選択を一元管理します。

HfArgumentParser は、このクラスをコマンドラインで指定できる argparse の引数に変換できます。

to_dict

< >

( )

このインスタンスをシリアライズします。このとき、Enum はその値に、GenerationConfig は辞書に置き換えられます(JSON シリアライズ対応のため)。トークンの値は、その値を削除することで伏せ字にされます。

Update on GitHub