Transformers documentation

Trainer

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Trainer

Kelas Trainer menyediakan API untuk pelatihan yang lengkap fitur di PyTorch, dan mendukung pelatihan terdistribusi di beberapa GPU/TPU, presisi campuran untuk NVIDIA GPUs, AMD GPUs, dan torch.amp untuk PyTorch. Trainer berjalan beriringan dengan kelas TrainingArguments, yang menawarkan berbagai opsi untuk menyesuaikan cara model dilatih. Bersama-sama, kedua kelas ini menyediakan API pelatihan yang lengkap.

Seq2SeqTrainer dan Seq2SeqTrainingArguments mewarisi dari kelas Trainer dan TrainingArguments, dan keduanya diadaptasi untuk melatih model untuk tugas sequence-to-sequence seperti ringkasan atau terjemahan.

Kelas Trainer dioptimalkan untuk model 🤗 Transformers dan dapat menunjukkan perilaku yang mengejutkan ketika digunakan dengan model lain. Saat menggunakannya dengan model Anda sendiri, pastikan:

  • model Anda selalu mengembalikan tuple atau subkelas dari ModelOutput
  • model Anda dapat menghitung loss jika argumen labels disediakan dan loss tersebut dikembalikan sebagai elemen pertama dari tuple (jika model Anda mengembalikan tuple)
  • model Anda dapat menerima beberapa argumen label (gunakan label_names di TrainingArguments untuk menunjukkan nama mereka ke Trainer) tetapi tidak ada yang boleh diberi nama "label"

Trainer

kelas 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 = (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 )

Parameter

  • model (PreTrainedModel atau torch.nn.Module, opsional) — Model yang akan dilatih, dievaluasi, atau digunakan untuk prediksi. Jika tidak disediakan, sebuah model_init harus diteruskan.

    Trainer dioptimalkan untuk bekerja dengan PreTrainedModel yang disediakan oleh pustaka. Anda tetap dapat menggunakan model Anda sendiri yang didefinisikan sebagai torch.nn.Module selama mereka bekerja dengan cara yang sama seperti model 🤗 Transformers.

  • args (TrainingArguments, opsional) — Argumen untuk penyesuaian pelatihan. Akan secara default menggunakan instance dasar dari TrainingArguments dengan output_dir yang diatur ke direktori bernama tmp_trainer di direktori saat ini jika tidak disediakan.
  • data_collator (DataCollator, opsional) — Fungsi yang digunakan untuk membentuk batch dari daftar elemen train_dataset atau eval_dataset. Akan default ke default_data_collator() jika tidak ada processing_class yang diberikan, atau instance dari DataCollatorWithPadding jika processing_class adalah feature extractor atau tokenizer.
  • train_dataset (torch.utils.data.Dataset | torch.utils.data.IterableDataset | datasets.Dataset, opsional) — Dataset yang akan digunakan untuk pelatihan. Jika dataset tersebut berupa Dataset, kolom yang tidak diterima oleh model.forward() metode akan dihapus secara otomatis.

    Perhatikan bahwa jika itu adalah torch.utils.data.IterableDataset dengan beberapa randomisasi dan Anda melatih dalam mode terdistribusi, dataset iterable Anda harus menggunakan atribut internal generator yang merupakan torch.Generator untuk randomisasi yang harus identik di semua proses (dan Trainer akan secara manual mengatur seed dari generator ini di setiap epoch) atau memiliki metode set_epoch() yang secara internal mengatur seed dari RNG yang digunakan.

    Jika dataset tidak mengimplementasikan __len__ (misalnya IterableDataset yang streaming), max_steps harus diatur, karena jumlah total langkah pelatihan tidak dapat disimpulkan.

  • eval_dataset (torch.utils.data.Dataset | dict[str, torch.utils.data.Dataset] | datasets.Dataset, opsional) — Dataset yang akan digunakan untuk evaluasi. Jika berupa Dataset, kolom yang tidak diterima oleh metode model.forward() akan dihapus secara otomatis. Jika berupa kamus, evaluasi akan dilakukan pada setiap dataset dengan menambahkan kunci kamus di depan nama metrik.
  • processing_class (PreTrainedTokenizerBase atau BaseImageProcessor atau FeatureExtractionMixin atau ProcessorMixin, opsional) — Kelas pemrosesan yang digunakan untuk memproses data. Jika disediakan, kelas ini akan digunakan untuk memproses input model secara otomatis, dan akan disimpan bersama model untuk memudahkan pelanjutan pelatihan yang terputus atau penggunaan ulang model yang telah dihaluskan.
  • model_init (Callable[[], PreTrainedModel], opsional) — Fungsi yang menginstansiasi model yang akan digunakan. Jika disediakan, setiap pemanggilan train() akan dimulai dari instans baru dari model sesuai dengan fungsi ini.

    Fungsi ini dapat memiliki nol argumen, atau satu argumen tunggal yang berisi objek trial optuna/Ray Tune, agar dapat memilih arsitektur yang berbeda berdasarkan hiperparameter (seperti jumlah layer, ukuran layer dalam, probabilitas dropout, dan sebagainya).

  • compute_loss_func (Callable, opsional) — Fungsi yang menerima output mentah model, label, dan jumlah item dalam seluruh batch yang terakumulasi (batch_size * gradient_accumulation_steps) dan mengembalikan loss. Sebagai contoh, lihat fungsi loss default yang digunakan oleh Trainer.
  • compute_metrics (Callable[[EvalPrediction], Dict], opsional) — Fungsi yang akan digunakan untuk menghitung metrik saat evaluasi. Harus menerima EvalPrediction dan mengembalikan kamus dari string ke nilai metrik. Catatan Saat meneruskan TrainingArgs dengan batch_eval_metrics diatur ke True, fungsi compute_metrics Anda harus menerima argumen boolean compute_result. Ini akan dipicu setelah batch eval terakhir untuk memberi sinyal bahwa fungsi perlu menghitung dan mengembalikan statistik ringkasan global alih-alih mengakumulasi statistik tingkat batch
  • callbacks (Daftar TrainerCallback, opsional) — Daftar callback untuk menyesuaikan loop pelatihan. Callback ini akan ditambahkan ke daftar callback default yang dijelaskan secara rinci di sini.

    Jika Anda ingin menghapus salah satu callback default yang digunakan, gunakan metode Trainer.remove_callback().

  • optimizers (tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR], opsional, defaultnya (None, None)) — Tuple yang berisi optimizer dan scheduler yang akan digunakan. Secara default akan menggunakan instance AdamW pada model Anda dan scheduler yang diberikan oleh get_linear_schedule_with_warmup() yang dikendalikan oleh args.
  • optimizer_cls_and_kwargs (tuple[Type[torch.optim.Optimizer], dict[str, Any]], opsional) — Tuple yang berisi kelas optimizer dan argumen kata kunci yang akan digunakan. Menggantikan optim dan optim_args di args. Tidak kompatibel dengan optimizers argumen.

    Berbeda dengan optimizers, argumen ini menghindari kebutuhan untuk menempatkan parameter model pada perangkat yang benar sebelum menginisialisasi Trainer.

  • preprocess_logits_for_metrics (Callable[[torch.Tensor, torch.Tensor], torch.Tensor], opsional) — Fungsi yang memproses ulang logits tepat sebelum disimpan ke cache pada setiap langkah evaluasi. Fungsi ini harus menerima dua tensor, yaitu logits dan label, lalu mengembalikan logits setelah diproses sesuai keinginan. Modifikasi yang dilakukan oleh fungsi ini akan tercermin dalam prediksi yang diterima oleh compute_metrics.

    Perhatikan bahwa label (parameter kedua) akan menjadi None jika dataset tidak memilikinya.

Trainer adalah loop pelatihan dan evaluasi yang sederhana namun lengkap untuk PyTorch, dioptimalkan untuk 🤗 Transformers.

Atribut penting:

  • model — Selalu menunjuk ke model inti. Jika menggunakan model transformers, ini akan menjadi subclass dari PreTrainedModel.
  • model_wrapped — Selalu menunjuk ke model paling eksternal jika satu atau lebih modul lain membungkus model asli. Ini adalah model yang harus digunakan untuk forward pass. Misalnya, di bawah DeepSpeed, model internal dibungkus dalam DeepSpeed dan kemudian lagi dalam torch.nn.DistributedDataParallel. Jika model internal belum dibungkus, maka self.model_wrapped sama dengan self.model.
  • is_model_parallel — Apakah model telah beralih ke mode model parallel (berbeda dari data parallelism, ini berarti beberapa lapisan model dipecah ke GPU yang berbeda).
  • place_model_on_device — Apakah model akan ditempatkan secara otomatis pada perangkat. Nilainya secara bawaan adalah True kecuali model parallel, DeepSpeed, FSDP, eval fp16/bf16 penuh, atau SageMaker MP sedang aktif. Dapat ditimpa dengan membuat subclass dari TrainingArguments dan menimpa properti place_model_on_device.
  • is_in_train — Apakah model sedang menjalankan train (misalnya ketika evaluate dipanggil saat berada di train)
  • loss_is_scaled_for_ga — Apakah loss yang dikembalikan oleh compute_loss sudah diskalakan untuk akumulasi gradien. True: training_step menggunakannya apa adanya. False: training_step membaginya dengan jumlah langkah akumulasi gradien. None (default): loss dianggap sudah diskalakan jika dinormalisasi oleh num_items_in_batch, yaitu ketika model menerima loss kwargs atau compute_loss_func diberikan. Subkelas yang menghitung loss mereka sendiri harus menyetelnya.

add_callback

< >

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

Parameter

  • callback (type atau [`~transformers.TrainerCallback`]) — Kelas TrainerCallback atau sebuah instance dari TrainerCallback. Pada kasus pertama, akan menginstansiasi anggota dari kelas tersebut.

Tambahkan callback ke daftar TrainerCallback saat ini.

autocast_smart_context_manager

< >

( cache_enabled: bool | None = True )

Wrapper pembantu yang membuat context manager yang sesuai untuk autocast sambil memasok argumen yang diinginkan, tergantung pada situasinya. Kami mengandalkan accelerate untuk autocast, sehingga kami tidak melakukan apa pun di sini.

call_model_init

< >

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

Panggil model_init untuk mendapatkan instance model baru, secara opsional dikondisikan pada trial hiperparameter.

compute_loss

< >

( model: Moduleinputs: dictreturn_outputs: bool = Falsenum_items_in_batch: typing.Union[torch.Tensor, int, NoneType] = None )

Parameter

  • model (nn.Module) — Model untuk menghitung loss.
  • inputs (dict[str, torch.Tensor | Any]) — Data input untuk model.
  • return_outputs (bool, opsional, defaultnya False) — Apakah akan mengembalikan output model bersama dengan loss.
  • num_items_in_batch (Optional[torch.Tensor], opsional) — Jumlah item dalam batch. Jika tidak diberikan, loss dihitung menggunakan logika reduksi ukuran batch default.

Cara loss dihitung oleh Trainer. Secara default, semua model mengembalikan loss di elemen pertama.

Subclass dan override untuk perilaku kustom. Jika Anda menghitung loss Anda sendiri, atur loss_is_scaled_for_ga untuk menyatakan apakah loss tersebut sudah diskalakan untuk akumulasi gradien: False jika itu adalah rata-rata per-batch (Trainer kemudian membaginya dengan jumlah langkah akumulasi gradien), True jika Anda sudah menormalisasikannya di seluruh batch yang terakumulasi.

compute_loss_context_manager

< >

( )

Wrapper pembantu untuk mengelompokkan beberapa context manager.

create_accelerator_and_postprocess

< >

( )

Buat accelerator dan lakukan setup pasca-pembuatan (FSDP, DeepSpeed, dll.).

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 )

Parameter

  • language (str, opsional) — Bahasa model (jika berlaku)
  • license (str, opsional) — Lisensi model. Akan menggunakan lisensi model pretrained yang digunakan secara default, jika model asli yang diberikan ke Trainer berasal dari repo di Hub.
  • tags (str atau list[str], opsional) — Beberapa tag yang akan disertakan dalam metadata model card.
  • model_name (str, opsional) — Nama model.
  • finetuned_from (str, opsional) — Nama model yang digunakan untuk fine-tuning model ini (jika berlaku). Akan secara default menggunakan nama repo dari model asli yang diberikan ke Trainer (jika berasal dari Hub).
  • tasks (str atau list[str], opsional) — Satu atau beberapa pengidentifikasi tugas, untuk disertakan dalam metadata kartu model.
  • dataset_tags (str atau list[str], opsional) — Satu atau beberapa tag dataset, untuk disertakan dalam metadata kartu model.
  • dataset (str atau list[str], opsional) — Satu atau beberapa pengidentifikasi dataset, untuk disertakan dalam metadata kartu model.
  • dataset_args (str atau list[str], opsional) — Satu atau beberapa argumen dataset, untuk disertakan dalam metadata kartu model.

Membuat draf kartu model menggunakan informasi yang tersedia pada Trainer.

create_optimizer

< >

( model = None ) → torch.optim.Optimizer

Mengembalikan

torch.optim.Optimizer

Instans optimizer.

Siapkan optimizer.

Kami menyediakan nilai default yang wajar dan berfungsi dengan baik. Jika Anda ingin menggunakan sesuatu yang lain, Anda dapat meneruskan tuple melalui optimizers pada init Trainer, atau membuat subclass dan menimpa metode ini di subclass tersebut.

create_optimizer_and_scheduler

< >

( num_training_steps: int )

Siapkan optimizer dan learning rate scheduler.

Kami menyediakan nilai default yang wajar dan berfungsi dengan baik. Jika Anda ingin menggunakan sesuatu yang lain, Anda dapat meneruskan tuple melalui init Trainer melalui optimizers, atau membuat subclass dan menimpa metode ini (atau create_optimizer dan/atau create_scheduler) di dalam subclass.

create_scheduler

< >

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

Parameter

  • num_training_steps (int) — Jumlah langkah pelatihan yang akan dilakukan.

Mengembalikan

torch.optim.lr_scheduler.LRScheduler

Instans penjadwal laju pembelajaran.

Siapkan scheduler. Optimizer dari trainer harus sudah disetel sebelum metode ini dipanggil atau dilewatkan sebagai argumen.

akhir

< >

( )

Selesaikan pelacak dan hancurkan grup proses terdistribusi.

Panggil ini sekali, di bagian paling akhir skrip, setelah semua hal yang membutuhkan proses lain: train(), evaluate(), predict(), save_model() dan push_to_hub() semuanya berkomunikasi antar proses dan akan gagal setelah grupnya hilang.

Contoh:

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' )

Parameter

  • eval_dataset (Dataset | dict[str, Dataset], opsional) — Lewati dataset jika Anda ingin menimpa self.eval_dataset. Jika berupa Dataset, kolom yang tidak diterima oleh model.forward() metode akan dihapus secara otomatis. Jika berupa kamus, evaluasi akan dilakukan pada setiap dataset, dengan menambahkan kunci kamus di depan nama metrik.

    Jika Anda meneruskan kamus dengan nama dataset sebagai kunci dan dataset sebagai nilai, evaluate akan menjalankan evaluasi terpisah pada setiap dataset. Hal ini dapat berguna untuk memantau bagaimana pelatihan memengaruhi dataset lain atau sekadar untuk mendapatkan evaluasi yang lebih rinci. Saat digunakan dengan load_best_model_at_end, pastikan metric_for_best_model merujuk tepat pada salah satu dataset. Jika, misalnya, Anda meneruskan {"data1": data1, "data2": data2} untuk dua dataset data1 dan data2, Anda dapat menentukan metric_for_best_model="eval_data1_loss" untuk menggunakan loss pada data1 dan metric_for_best_model="eval_data2_loss" untuk loss pada data2.

  • ignore_keys (list[str], opsional) — Daftar kunci dalam output model Anda (jika berupa dictionary) yang harus diabaikan saat mengumpulkan prediksi.
  • metric_key_prefix (str, opsional, defaultnya "eval") — Prefiks opsional yang akan digunakan sebagai prefiks kunci metrik. Misalnya, metrik “bleu” akan diberi nama “eval_bleu” jika prefiksnya adalah “eval” (default)

Jalankan evaluasi dan kembalikan metrik.

Skrip pemanggil akan bertanggung jawab untuk menyediakan metode untuk menghitung metrik, karena metrik bergantung pada tugas (sampaikan ke argumen compute_metrics saat inisialisasi).

Anda juga dapat membuat subkelas dan menimpa metode ini untuk menyuntikkan perilaku khusus.

evaluation_loop

< >

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

Loop prediksi/evaluasi, yang digunakan bersama oleh Trainer.evaluate() dan Trainer.predict().

Berfungsi baik dengan maupun tanpa label.

floating_point_ops

< >

( inputs: dict ) → int

Parameter

  • inputs (dict[str, torch.Tensor | Any]) — Input dan target dari model.

Mengembalikan

int

Jumlah operasi bilangan pecahan mengambang.

Untuk model yang mewarisi dari PreTrainedModel, gunakan metode tersebut untuk menghitung jumlah operasi floating point untuk setiap jalur backward + forward. Jika menggunakan model lain, terapkan metode semacam itu di dalam model atau subclass dan override metode ini.

get_batch_samples

< >

( epoch_iterator: Iteratornum_batches: intdevice: device )

Mengumpulkan sejumlah batch tertentu dari iterator epoch dan secara opsional menghitung jumlah item dalam batch untuk menskalakan loss dengan tepat.

get_cp_size

< >

( )

Dapatkan ukuran paralel konteks

get_decay_parameter_names

< >

( model: Module )

Dapatkan semua nama parameter yang akan diterapkan weight decay.

Fungsi ini menyaring parameter dengan dua cara:

  1. Berdasarkan jenis layer (instans dari layer yang ditentukan dalam ALL_LAYERNORM_LAYERS)
  2. Berdasarkan pola nama parameter (mengandung ‘bias’, atau variasi dari ‘norm’)

get_eval_dataloader

< >

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

Parameter

  • eval_dataset (str atau torch.utils.data.Dataset, opsional) — Jika berupa str, akan menggunakan self.eval_dataset[eval_dataset] sebagai dataset evaluasi. Jika berupa Dataset, akan menimpa self.eval_dataset. Jika berupa Dataset, kolom yang tidak diterima oleh metode model.forward() akan dihapus secara otomatis.

Mengembalikan ~torch.utils.data.DataLoader evaluasi.

Subclass dan override metode ini jika Anda ingin menyuntikkan perilaku kustom.

get_learning_rates

< >

( )

Mengembalikan tingkat pembelajaran dari setiap parameter di self.optimizer.

get_num_trainable_parameters

< >

( )

Dapatkan jumlah parameter yang dapat dilatih.

get_optimizer_cls_and_kwargs

< >

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

Parameter

  • args (transformers.training_args.TrainingArguments) — Argumen pelatihan untuk sesi pelatihan.
  • model (PreTrainedModel, opsional) — Model yang sedang dilatih. Diperlukan untuk beberapa optimizer (GaLore, Apollo, LOMO).

Mengembalikan kelas optimizer dan parameter optimizer berdasarkan argumen pelatihan.

get_optimizer_group

< >

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

Parameter

  • param (str atau torch.nn.parameter.Parameter, opsional) — Parameter yang grup optimizernya perlu dikembalikan.

Mengembalikan grup optimizer untuk parameter jika diberikan, jika tidak mengembalikan semua grup optimizer untuk parameter.

get_sp_size

< >

( )

Dapatkan ukuran paralel sekuens

get_test_dataloader

< >

( test_dataset: Dataset )

Parameter

  • test_dataset (torch.utils.data.Dataset, opsional) — Dataset pengujian yang akan digunakan. Jika berupa Dataset, kolom yang tidak diterima oleh metode model.forward() akan dihapus secara otomatis.

Mengembalikan ~torch.utils.data.DataLoader untuk pengujian.

Subclass dan override metode ini jika Anda ingin menyuntikkan perilaku kustom.

get_total_train_batch_size

< >

( args: TrainingArguments )

Menghitung ukuran batch total (micro_batch grad_accum dp_world_size).

Mencakup semua dimensi paralelisme: TP, CP, dan SP.

Formula: dp_world_size = world_size // (tp_size cp_size sp_size)

Di mana:

  • TP (Tensor Parallelism): Lapisan model dibagi di antara GPU
  • CP (Context Parallelism): Urutan dipecah menggunakan Ring Attention (FSDP2)
  • SP (Sequence Parallelism): Urutan dipecah menggunakan ALST/Ulysses (DeepSpeed)

Semua dimensi bersifat terpisah dan multiplikatif: world_size = dp_size tp_size cp_size * sp_size

get_tp_size

< >

( )

Dapatkan ukuran paralel tensor dari model atau konfigurasi DeepSpeed.

get_train_dataloader

< >

( )

Mengembalikan ~torch.utils.data.DataLoader pelatihan.

Akan menggunakan sampler kosong jika train_dataset tidak mengimplementasikan __len__, atau sampler acak (yang disesuaikan untuk pelatihan terdistribusi jika diperlukan) jika sebaliknya.

Subclass dan override metode ini jika Anda ingin menyuntikkan perilaku kustom.

hyperparameter_search

< >

( 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]]

Parameter

  • hp_space (Callable[["optuna.Trial"], dict[str, float]], opsional) — Fungsi yang mendefinisikan ruang pencarian hiperparameter. Akan secara default menggunakan default_hp_space_optuna() atau default_hp_space_ray() tergantung pada backend Anda.
  • compute_objective (Callable[[dict[str, float]], float], opsional) — Fungsi untuk menghitung tujuan yang akan diminimalkan atau dimaksimalkan dari metrik yang dikembalikan oleh metode evaluate. Nilai defaultnya adalah default_compute_objective().
  • n_trials (int, opsional, default 100) — Jumlah eksekusi uji coba untuk diuji.
  • direction (str atau list[str], opsional, defaultnya "minimize") — Jika ini adalah optimasi tujuan tunggal, str untuk arah, bisa berupa "minimize" atau "maximize", Anda seharusnya memilih "minimize" saat mengoptimalkan loss validasi, dan "maximize" saat mengoptimalkan satu atau beberapa metrik. Jika ini adalah optimasi multi-tujuan, list[str] untuk arah, bisa berupa daftar "minimize" dan "maximize", Anda seharusnya memilih "minimize" saat mengoptimalkan loss validasi, dan "maximize" saat mengoptimalkan satu atau beberapa metrik.
  • backend (str atau ~training_utils.HPSearchBackend, opsional) — Backend yang akan digunakan untuk pencarian hiperparameter. Secara default akan menggunakan optuna atau Ray Tune, tergantung pada salah satu yang terinstal. Jika keduanya terinstal, secara default akan menggunakan optuna.
  • hp_name (Callable[["optuna.Trial"], str]], opsional) — Fungsi yang mendefinisikan nama trial/eksekusi. Secara default bernilai None.
  • kwargs (dict[str, Any], opsional) — Argumen kata kunci tambahan untuk setiap backend:

Mengembalikan

[trainer_utils.BestRun atau list[trainer_utils.BestRun]]

Semua informasi tentang run terbaik atau run-run terbaik untuk optimasi multi-objektif. Ringkasan eksperimen dapat ditemukan di atribut run_summary untuk backend Ray.

Luncurkan pencarian hiperparameter menggunakan optuna atau Ray Tune. Kuantitas yang dioptimalkan ditentukan oleh compute_objective, yang secara default berupa fungsi yang mengembalikan evaluasi loss ketika tidak ada metrik yang diberikan, atau jumlah dari semua metrik jika sebaliknya.

Untuk menggunakan metode ini, Anda harus menyediakan model_init saat menginisialisasi Trainer Anda: kita perlu menginisialisasi ulang model di setiap run baru. Hal ini tidak kompatibel dengan argumen optimizers, jadi Anda perlu membuat subclass dari Trainer dan menimpa metode create_optimizer_and_scheduler() untuk optimizer/scheduler kustom.

init_hf_repo

< >

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

Parameter

  • token (str, opsional) — Token dengan izin tulis. Bawaan adalah self.args.hub_token.
  • private (bool, opsional) — Apakah membuat repo menjadi privat saat dibuat. Defaultnya adalah self.args.hub_private_repo. Tidak berpengaruh jika repo sudah ada.

Menginisialisasi repositori git di self.args.hub_model_id.

is_local_process_zero

< >

( )

Apakah proses ini merupakan proses utama lokal (misalnya, pada satu mesin jika pelatihan dilakukan secara terdistribusi di beberapa mesin).

is_world_process_zero

< >

( )

Apakah proses ini merupakan proses utama global (saat pelatihan dilakukan secara terdistribusi di beberapa mesin, ini hanya akan bernilai True untuk satu proses).

log

< >

( logs: dictstart_time: float | None = None )

Parameter

  • logs (dict[str, float]) — Nilai yang akan dicatat.
  • start_time (Optional[float]) — Awal dari pelatihan.

Catat logs pada berbagai objek yang memantau pelatihan.

Subclass dan override metode ini untuk menyuntikkan perilaku kustom.

log_metrics

< >

( splitmetrics )

Parameter

  • split (str) — Nama mode/split: salah satu dari train, eval, test
  • metrics (dict[str, float]) — Metrik yang dikembalikan dari train/evaluate/predictmetrics: dict metrik

Catat metrik dengan cara yang diformat secara khusus.

Dalam lingkungan terdistribusi, ini hanya dilakukan untuk proses dengan rank 0.

Catatan tentang laporan memori:

Untuk mendapatkan laporan penggunaan memori, Anda perlu menginstal psutil. Anda dapat melakukannya dengan pip install psutil.

Sekarang, ketika metode ini dijalankan, Anda akan melihat laporan yang mencakup:

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

Memahami laporan:

  • segmen pertama, misalnya train__, menunjukkan tahap apa yang menjadi fokus metrik tersebut. Laporan yang diawali dengan init_ akan ditambahkan ke tahap pertama yang dijalankan. Jadi, jika hanya evaluasi yang dijalankan, penggunaan memori untuk __init__ akan dilaporkan bersama metrik eval_.
  • segmen ketiga, yaitu cpu atau gpu, menunjukkan apakah itu metrik RAM umum atau memori gpu0.
  • *_alloc_delta - adalah selisih pada penghitung memori terpakai/teralokasi antara akhir dan awal tahap - nilainya bisa negatif jika sebuah fungsi melepaskan lebih banyak memori daripada yang dialokasikannya.
  • *_peaked_delta - adalah memori tambahan apa pun yang dikonsumsi lalu dibebaskan - relatif terhadap penghitung memori yang dialokasikan saat ini - nilainya tidak pernah negatif. Saat Anda melihat metrik dari tahap mana pun, Anda menjumlahkan alloc_delta + peaked_delta dan Anda mengetahui berapa banyak memori yang dibutuhkan untuk menyelesaikan tahap tersebut.

Pelaporan hanya terjadi untuk proses dengan rank 0 dan gpu 0 (jika ada gpu). Biasanya ini sudah cukup karena proses utama melakukan sebagian besar pekerjaan, tetapi hal ini mungkin tidak sepenuhnya berlaku jika model parallel digunakan, di mana GPU lain dapat menggunakan jumlah memori gpu yang berbeda. Ini juga tidak sama di bawah DataParallel, di mana gpu0 mungkin membutuhkan jauh lebih banyak memori daripada sisanya karena menyimpan gradien dan status optimizer untuk semua GPU yang berpartisipasi. Mungkin di masa depan, laporan-laporan ini akan berkembang untuk mengukur hal-hal tersebut juga.

Metrik CPU RAM mengukur RSS (Resident Set Size) yang mencakup memori unik untuk proses dan memori yang dibagikan dengan proses lain. Penting untuk dicatat bahwa metrik ini tidak mencakup memori yang di-swap, sehingga laporan bisa tidak akurat.

Memori puncak CPU diukur menggunakan thread sampling. Karena GIL pada python, beberapa memori puncak mungkin terlewat jika thread tersebut tidak mendapat kesempatan untuk berjalan saat penggunaan memori tertinggi terjadi. Oleh karena itu, laporan ini dapat lebih rendah dari kenyataan. Menggunakan tracemalloc akan melaporkan memori puncak yang tepat, tetapi tidak melaporkan alokasi memori di luar python. Jadi, jika beberapa ekstensi C++ CUDA mengalokasikan memorinya sendiri, hal itu tidak akan dilaporkan. Dan karena itu, pendekatan tersebut ditinggalkan demi pendekatan sampling memori, yang membaca penggunaan memori proses saat ini.

Pelaporan alokasi GPU dan memori puncak dilakukan dengan torch.cuda.memory_allocated() dan torch.cuda.max_memory_allocated(). Metrik ini hanya melaporkan “delta” untuk alokasi yang spesifik untuk pytorch, karena sistem manajemen memori torch.cuda tidak melacak memori yang dialokasikan di luar pytorch. Misalnya, pemanggilan cuda pertama biasanya memuat kernel CUDA, yang dapat memakan 0,5 hingga 2 GB memori GPU.

Perhatikan bahwa pelacak ini tidak memperhitungkan alokasi memori di luar panggilan __init__, train, evaluate, dan predict dari Trainer.

Karena pemanggilan evaluation dapat terjadi selama train, kami tidak dapat menangani pemanggilan bersarang karena torch.cuda.max_memory_allocated adalah penghitung tunggal, sehingga jika direset oleh pemanggilan eval bersarang, pelacak train akan melaporkan informasi yang salah. Jika masalah pytorch ini terselesaikan, akan dimungkinkan untuk mengubah kelas ini agar dapat re-entrant. Sampai saat itu, kami hanya akan melacak level terluar dari metode train, evaluate, dan predict. Artinya, jika eval dipanggil selama train, maka train yang akan memperhitungkan penggunaan memorinya dan penggunaan memori dari eval.

Ini juga berarti bahwa jika alat lain yang digunakan bersama Trainer memanggil torch.cuda.reset_peak_memory_stats, statistik memori puncak GPU bisa menjadi tidak valid. Dan Trainer akan mengganggu perilaku normal dari alat-alat semacam itu yang bergantung pada pemanggilan torch.cuda.reset_peak_memory_stats mereka sendiri.

Untuk kinerja terbaik, Anda mungkin perlu mempertimbangkan untuk mematikan profiling memori pada eksekusi produksi.

metrics_format

< >

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

Parameter

  • metrics (dict[str, float]) — Metrik yang dikembalikan dari train/evaluate/predict

Mengembalikan

metrik (dict[str, float])

Metrik yang diformat ulang

Format ulang nilai metrik Trainer menjadi format yang mudah dibaca manusia.

num_examples

< >

( dataloader: DataLoader )

Helper untuk mendapatkan jumlah sampel dalam ~torch.utils.data.DataLoader dengan mengakses dataset-nya. Ketika dataloader.dataset tidak ada atau tidak memiliki panjang, estimasi dilakukan sebaik mungkin

pop_callback

< >

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

Parameter

  • callback (type atau [`~transformers.TrainerCallback`]) — Kelas TrainerCallback atau sebuah instance dari TrainerCallback. Pada kasus pertama, akan mengambil anggota pertama dari kelas tersebut yang ditemukan dalam daftar callback.

Mengembalikan

TrainerCallback

Callback yang dihapus, jika ditemukan.

Hapus callback dari daftar TrainerCallback saat ini dan kembalikan.

Jika callback tidak ditemukan, mengembalikan None (dan tidak ada error yang dilempar).

predict

< >

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

Parameter

  • test_dataset (Dataset) — Dataset untuk menjalankan prediksi. Jika berupa datasets.Dataset, kolom yang tidak diterima oleh metode model.forward() akan dihapus secara otomatis.
  • ignore_keys (list[str], opsional) — Daftar kunci dalam output model Anda (jika berupa dictionary) yang harus diabaikan saat mengumpulkan prediksi.
  • metric_key_prefix (str, opsional, defaultnya "test") — Prefiks opsional yang akan digunakan sebagai prefiks kunci metrik. Misalnya, metrik “bleu” akan diberi nama “test_bleu” jika prefiksnya adalah “test” (default)

Jalankan prediksi dan kembalikan prediksi serta metrik potensial.

Tergantung pada dataset dan kasus penggunaan Anda, dataset pengujian Anda mungkin berisi label. Dalam hal itu, metode ini juga akan mengembalikan metrik, seperti pada evaluate().

Jika prediksi atau label Anda memiliki panjang sekuens yang berbeda (misalnya karena Anda melakukan padding dinamis dalam tugas klasifikasi token), prediksi akan di-pad (di sisi kanan) untuk memungkinkan penggabungan menjadi satu array. Indeks padding adalah -100.

Mengembalikan: NamedTuple namedtuple dengan kunci berikut:

  • predictions (np.ndarray): Prediksi pada test_dataset.
  • label_ids (np.ndarray, opsional): Label (jika dataset memuat beberapa).
  • metrics (dict[str, float], opsional): Kamus metrik yang mungkin (jika dataset berisi label).

prediction_step

< >

( model: Moduleinputs: dictprediction_loss_only: boolignore_keys: list[str] | None = None ) → tuple[Optional[torch.Tensor], Optional[torch.Tensor], Optional[torch.Tensor]]

Parameter

  • model (nn.Module) — Model yang akan dievaluasi.
  • inputs (dict[str, torch.Tensor | Any]) — Input dan target dari model.

    Kamus akan diurai sebelum diberikan ke model. Sebagian besar model mengharapkan target di bawah argumen labels. Periksa dokumentasi model Anda untuk semua argumen yang diterima.

  • prediction_loss_only (bool) — Apakah hanya mengembalikan loss.
  • ignore_keys (list[str], opsional) — Daftar kunci dalam output model Anda (jika berupa dictionary) yang harus diabaikan saat mengumpulkan prediksi.

Mengembalikan

tuple[Optional[torch.Tensor], Optional[torch.Tensor], Optional[torch.Tensor]]

Tuple berisi loss, logits dan labels (masing-masing bersifat opsional).

Lakukan langkah evaluasi pada model menggunakan inputs.

Subclass dan override untuk menyuntikkan perilaku kustom.

push_to_hub

< >

( commit_message: str | None = 'End of training'blocking: bool = Truetoken: str | None = Nonerevision: str | None = Noneprivate: bool | None = None**kwargs )

Parameter

  • commit_message (str, opsional, default "End of training") — Pesan untuk commit saat melakukan push.
  • blocking (bool, opsional, default True) — Apakah fungsi harus hanya mengembalikan nilai setelah git push selesai.
  • token (str, opsional, defaultnya None) — Token dengan izin tulis untuk menimpa argumen asli Trainer.
  • revision (str, opsional) — Revisi git untuk di-commit. Secara default menggunakan head dari branch “main”.
  • private (bool, opsional) — Apakah membuat repo menjadi privat saat dibuat. Defaultnya adalah args.hub_private_repo. Tidak berpengaruh jika repo sudah ada.
  • kwargs (dict[str, Any], opsional) — Argumen kata kunci tambahan yang diteruskan ke create_model_card().

Unggah self.model dan self.processing_class ke 🤗 model hub di repo self.args.hub_model_id.

remove_callback

< >

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

Parameter

  • callback (type atau [`~transformers.TrainerCallback`]) — Kelas TrainerCallback atau sebuah instance dari TrainerCallback. Pada kasus pertama, anggota pertama dari kelas tersebut yang ditemukan dalam daftar callback akan dihapus.

Hapus callback dari daftar TrainerCallback saat ini.

save_metrics

< >

( splitmetricscombined = True )

Parameter

  • split (str) — Nama mode/split: salah satu dari train, eval, test, all
  • metrics (dict[str, float]) — Metrik yang dikembalikan dari train/evaluate/predict
  • combined (bool, opsional, defaultnya True) — Membuat metrik gabungan dengan memperbarui all_results.json dengan metrik dari pemanggilan ini

Simpan metrik ke dalam file json untuk split tersebut, misalnya train_results.json.

Dalam lingkungan terdistribusi, ini hanya dilakukan untuk proses dengan rank 0.

Untuk memahami metrik, silakan baca docstring dari log_metrics(). Satu-satunya perbedaan adalah bahwa angka mentah yang tidak diformat disimpan dalam metode saat ini.

save_model

< >

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

Akan menyimpan model, sehingga Anda dapat memuatnya kembali menggunakan from_pretrained().

Hanya akan menyimpan dari proses utama.

save_state

< >

( )

Menyimpan state Trainer, karena Trainer.save_model hanya menyimpan tokenizer bersama model.

Dalam lingkungan terdistribusi, ini hanya dilakukan untuk proses dengan rank 0.

set_initial_training_values

< >

( args: TrainingArgumentsdataloader: DataLoader )

Menghitung dan mengembalikan nilai-nilai berikut:

  • num_train_epochs
  • num_update_steps_per_epoch
  • num_examples
  • num_train_samples
  • total_train_batch_size
  • steps_in_epoch (total batch per epoch)
  • max_steps

store_flos

< >

( )

Simpan jumlah operasi floating-point yang digunakan dalam model.

latih

< >

( resume_from_checkpoint: str | bool | None = Nonetrial: optuna.Trial | dict[str, Any] | None = Noneignore_keys_for_eval: list[str] | None = None ) → TrainOutput

Parameter

  • resume_from_checkpoint (str atau bool, opsional) — Jika berupa str, jalur lokal ke checkpoint yang disimpan oleh instance Trainer sebelumnya. Jika berupa bool dan bernilai True, muat checkpoint terakhir di args.output_dir yang disimpan oleh instance Trainer sebelumnya. Jika ada, pelatihan akan dilanjutkan dari status model/optimizer/scheduler yang dimuat di sini.
  • trial (optuna.Trial atau dict[str, Any], opsional) — Jalankan trial atau kamus hiperparameter untuk pencarian hiperparameter.
  • ignore_keys_for_eval (list[str], opsional) — Daftar kunci dalam output model Anda (jika berupa dictionary) yang harus diabaikan saat mengumpulkan prediksi untuk evaluasi selama pelatihan.

Mengembalikan

TrainOutput

Objek yang berisi jumlah langkah global, kerugian pelatihan, dan metrik.

Titik masuk utama pelatihan.

training_step

< >

( model: Moduleinputs: dictnum_items_in_batch: typing.Union[torch.Tensor, int, NoneType] = None ) → torch.Tensor

Parameter

  • model (nn.Module) — Model yang akan dilatih.
  • inputs (dict[str, torch.Tensor | Any]) — Input dan target dari model.

    Kamus akan diurai sebelum diberikan ke model. Sebagian besar model mengharapkan target di bawah argumen labels. Periksa dokumentasi model Anda untuk semua argumen yang diterima.

Mengembalikan

torch.Tensor

Tensor dengan loss pelatihan pada batch ini.

Lakukan langkah pelatihan pada batch input.

Subclass dan override untuk menyuntikkan perilaku kustom.

Seq2SeqTrainer

kelas 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 = (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 )

Parameter

  • eval_dataset (Dataset, optional) — Pass a dataset if you wish to override self.eval_dataset. If it is an Dataset, columns not accepted by the model.forward() method are automatically removed. It must implement the __len__ method.
  • ignore_keys (list[str], opsional) — Daftar kunci dalam output model Anda (jika berupa dictionary) yang harus diabaikan saat mengumpulkan prediksi.
  • metric_key_prefix (str, opsional, defaultnya "eval") — Prefiks opsional yang akan digunakan sebagai prefiks kunci metrik. Misalnya, metrik “bleu” akan diberi nama “eval_bleu” jika prefiksnya adalah "eval" (default)
  • max_length (int, opsional) — Panjang target maksimum yang digunakan saat memprediksi dengan metode generate.
  • num_beams (int, opsional) — Jumlah beam untuk beam search yang akan digunakan saat memprediksi dengan metode generate. 1 berarti tidak ada beam search.
  • gen_kwargs — Kwargs tambahan yang spesifik untuk generate.

Jalankan evaluasi dan kembalikan metrik.

Skrip pemanggil akan bertanggung jawab untuk menyediakan metode untuk menghitung metrik, karena metrik bergantung pada tugas (sampaikan ke argumen compute_metrics saat inisialisasi).

Anda juga dapat membuat subkelas dan menimpa metode ini untuk menyuntikkan perilaku khusus.

predict

< >

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

Parameter

  • test_dataset (Dataset) — Dataset untuk menjalankan prediksi. Jika berupa Dataset, kolom yang tidak diterima oleh metode model.forward() akan dihapus secara otomatis. Harus mengimplementasikan metode __len__
  • ignore_keys (list[str], opsional) — Daftar kunci dalam output model Anda (jika berupa dictionary) yang harus diabaikan saat mengumpulkan prediksi.
  • metric_key_prefix (str, opsional, defaultnya "eval") — Prefiks opsional yang akan digunakan sebagai prefiks kunci metrik. Misalnya, metrik “bleu” akan diberi nama “eval_bleu” jika prefiksnya adalah "eval" (default)
  • max_length (int, opsional) — Panjang target maksimum yang digunakan saat memprediksi dengan metode generate.
  • num_beams (int, opsional) — Jumlah beam untuk beam search yang akan digunakan saat memprediksi dengan metode generate. 1 berarti tidak ada beam search.
  • gen_kwargs — Kwargs tambahan yang spesifik untuk generate.

Jalankan prediksi dan kembalikan prediksi serta metrik potensial.

Tergantung pada dataset dan kasus penggunaan Anda, dataset pengujian Anda mungkin berisi label. Dalam hal itu, metode ini juga akan mengembalikan metrik, seperti pada evaluate().

Jika prediksi atau label Anda memiliki panjang sekuens yang berbeda (misalnya karena Anda melakukan padding dinamis dalam tugas klasifikasi token), prediksi akan di-pad (di sisi kanan) untuk memungkinkan penggabungan menjadi satu array. Indeks padding adalah -100.

Mengembalikan: NamedTuple namedtuple dengan kunci berikut:

  • predictions (np.ndarray): Prediksi pada test_dataset.
  • label_ids (np.ndarray, opsional): Label (jika dataset memuat beberapa).
  • metrics (dict[str, float], opsional): Kamus metrik yang mungkin (jika dataset berisi label).

TrainingArguments

kelas 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 = <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 )

Parameter

  • output_dir (str, opsional, default "trainer_output") — Direktori output tempat prediksi model dan checkpoint akan ditulis.

Durasi Pelatihan dan Ukuran Batch

  • per_device_train_batch_size (int, opsional, default 8) — Ukuran batch per perangkat. Ukuran batch global dihitung sebagai: per_device_train_batch_size * number_of_devices pada setup multi-GPU atau terdistribusi.
  • num_train_epochs(float, opsional, default 3.0) — Total jumlah epoch pelatihan yang akan dilakukan (jika bukan bilangan bulat, akan melakukan bagian desimalnya sebagai persentase dari epoch terakhir sebelum menghentikan pelatihan).
  • max_steps (int, opsional, default -1) — Menimpa num_train_epochs. Jika diatur ke angka positif, ini adalah total jumlah langkah pelatihan yang akan dilakukan. Untuk dataset berhingga, pelatihan diulang melalui dataset (jika semua data habis) sampai max_steps tercapai. Nilai ini harus diatur ke angka positif ketika dataset pelatihan tidak mengimplementasikan __len__ (misalnya dataset streaming), karena total jumlah langkah tidak dapat disimpulkan dan diperlukan untuk membatasi loop pelatihan serta mengonfigurasi penjadwal laju pembelajaran.

Learning Rate & Scheduler

  • learning_rate (float, opsional, default 5e-5) — Learning rate awal untuk optimizer. Ini biasanya merupakan learning rate puncak saat menggunakan scheduler dengan warmup.
  • lr_scheduler_type (str atau SchedulerType, opsional, default ke "linear") — Jenis learning rate scheduler yang akan digunakan. Lihat SchedulerType untuk semua nilai yang mungkin. Pilihan umum:
  • lr_scheduler_kwargs (dict atau str, opsional, defaultnya None) — Argumen tambahan untuk lr_scheduler. Lihat dokumentasi masing-masing scheduler untuk nilai yang mungkin.
  • warmup_steps (int atau float, opsional, default 0) — Jumlah langkah untuk warmup linear dari 0 ke learning_rate. Warmup membantu menstabilkan pelatihan pada fase awal. Bisa berupa:
    • Bilangan bulat: jumlah langkah pemanasan yang tepat
    • Float dalam rentang [0, 1): diinterpretasikan sebagai rasio dari total langkah pelatihan

Optimizer

  • optim (str atau training_args.OptimizerNames, opsional, default ke "adamw_torch" (untuk torch>=2.8 "adamw_torch_fused")) — Optimizer yang akan digunakan. Opsi umum:
    • "adamw_torch": AdamW dari PyTorch (default yang direkomendasikan)
    • "adamw_torch_fused": Kernel AdamW yang terpadu
    • "adamw_hf": Implementasi AdamW dari HuggingFace
    • "sgd": Stochastic Gradient Descent dengan momentum
    • "adafactor": Optimizer hemat memori untuk model besar
    • "adamw_8bit": AdamW 8-bit (memerlukan bitsandbytes) Lihat OptimizerNames untuk daftar lengkap.
  • optim_args (str, opsional) — Argumen opsional yang diberikan ke optimizer seperti AnyPrecisionAdamW, AdEMAMix, dan GaLore.
  • weight_decay (float, opsional, default 0) — Koefisien weight decay yang diterapkan oleh optimizer (bukan fungsi loss). Menambahkan regularisasi L2 untuk mencegah overfitting dengan menghukum bobot yang besar. Secara otomatis dikecualikan dari parameter bias dan LayerNorm. Nilai tipikal: 0.01 (standar), 0.1 (regularisasi lebih kuat), 0.0 (tanpa regularisasi).
  • adam_beta1 (float, opsional, default 0.9) — Laju peluruhan eksponensial untuk estimasi momen pertama (momentum) pada optimizer berbasis Adam. Mengontrol seberapa banyak riwayat gradien yang dipertahankan.
  • adam_beta2 (float, opsional, default 0.999) — Laju peluruhan eksponensial untuk estimasi momen kedua (varians) pada optimizer berbasis Adam. Mengontrol penskalaan laju pembelajaran adaptif.
  • adam_epsilon (float, opsional, default 1e-8) — Nilai epsilon untuk stabilitas numerik pada optimizer berbasis Adam. Mencegah pembagian dengan nol pada penyebut aturan pembaruan.
  • optim_target_modules (Union[str, list[str]], opsional) — Modul target yang akan dioptimalkan, yaitu nama modul yang ingin Anda latih. Saat ini digunakan untuk algoritma GaLore dan algoritma APOLLO. Lihat implementasi GaLore dan implementasi APOLLO untuk detail lebih lanjut. Anda perlu memastikan untuk meneruskan optimizer GaLore atau APOLLO yang valid, misalnya salah satu dari: “apollo_adamw”, “galore_adamw”, “galore_adamw_8bit”, “galore_adafactor” dan pastikan bahwa modul target hanya berupa modul nn.Linear.

Regularisasi & Stabilitas Pelatihan

  • gradient_accumulation_steps (int, opsional, default 1) — Jumlah langkah pembaruan untuk mengakumulasi gradien sebelum melakukan langkah backward/update. Meniru ukuran batch yang lebih besar tanpa memori tambahan. Ukuran batch efektif = per_device_train_batch_size × num_devices × gradient_accumulation_steps.

    Saat menggunakan akumulasi gradien, satu “langkah” dihitung sebagai satu langkah dengan jalur mundur. Oleh karena itu, pencatatan, evaluasi, dan penyimpanan akan terjadi setiap gradient_accumulation_steps × xxx_step contoh pelatihan.

  • average_tokens_across_devices (bool, opsional, default True) — Apakah akan merata-ratakan token di antara perangkat. Jika diaktifkan, akan menggunakan all_reduce untuk menyinkronkan num_tokens_in_batch untuk perhitungan loss yang presisi. Referensi: https://github.com/huggingface/transformers/issues/34242
  • max_grad_norm (float, opsional, default 1.0) — Norm maksimum gradien untuk pemotongan gradien. Diterapkan setelah langkah mundur (backward pass), sebelum langkah optimizer. Mencegah ledakan gradien dengan memperkecil gradien ketika norm globalnya melebihi ambang batas ini. Atur ke 0 untuk menonaktifkan pemotongan. Nilai tipikal: 1.0 (standar), 0.5 (lebih konservatif), 5.0 (kurang agresif).
  • label_smoothing_factor (float, opsional, default 0.0) — Faktor label smoothing untuk mencegah overconfidence. Mengganti target keras 0/1 dengan target lunak: 0 menjadi ε/num_labels dan 1 menjadi 1 - ε + ε/num_labels, di mana ε = label_smoothing_factor. Nol berarti tidak ada smoothing. Rentang tipikal: 0.0 hingga 0.1.

Pelatihan Presisi Campuran

  • bf16 (bool, opsional, default False) — Aktifkan pelatihan presisi campuran bfloat16 (BF16) Umumnya lebih disarankan daripada FP16 karena stabilitas numerik yang lebih baik dan tidak memerlukan loss scaling.
  • fp16 (bool, opsional, default False) — Aktifkan pelatihan presisi campuran float16 (FP16). Pertimbangkan untuk menggunakan BF16 sebagai gantinya jika perangkat keras Anda mendukungnya.
  • bf16_full_eval (bool, opsional, default False) — Gunakan presisi BF16 penuh untuk evaluasi (bukan hanya presisi campuran). Lebih cepat dan menghemat memori, tetapi dapat memengaruhi nilai metrik sedikit. Hanya berlaku selama evaluasi.
  • fp16_full_eval (bool, opsional, default False) — Gunakan presisi FP16 penuh untuk evaluasi (bukan hanya mixed precision). Lebih cepat dan menghemat memori, tetapi dapat memengaruhi nilai metrik sedikit. Hanya berlaku selama evaluasi.
  • tf32 (bool, opsional) — Aktifkan mode TensorFloat-32 (TF32) pada GPU Ampere dan yang lebih baru. TF32 menggunakan presisi 19-bit untuk perkalian matriks (bukan 23-bit FP32), memberikan percepatan hingga 8x dengan kehilangan akurasi yang dapat diabaikan. Nilai default bergantung pada versi PyTorch. Lihat dokumentasi TF32.

Activation Checkpointing

  • activation_checkpointing (bool, opsional, default False) — Aktifkan activation checkpointing untuk menukar komputasi dengan memori. Mengurangi penggunaan memori dengan membersihkan aktivasi selama forward pass dan menghitungnya ulang selama backward pass. Memungkinkan pelatihan model atau ukuran batch yang lebih besar dengan biaya pelatihan yang lebih lambat sekitar 20%.
  • activation_checkpointing_kwargs (dict, opsional, defaultnya None) — Argumen kata kunci yang diteruskan ke activation_checkpointing_enable(). every_n_layers hanya melakukan checkpoint setiap n-th lapisan decoder, bukan semuanya; 1 adalah perilaku all-or-nothing yang umum, dan nilai yang lebih besar mengembalikan sebagian memori untuk kecepatan. offload menyimpan aktivasi yang disimpan di memori host yang di-pin, yang membebaskan layers x sequence x hidden byte memori perangkat dan membuat langkah menjadi lebih lambat. Kunci lain apa pun diteruskan ke torch.utils.checkpoint.checkpoint.
  • gradient_checkpointing (bool, opsional) — Alias yang tidak lagi didukung dari activation_checkpointing, akan dihapus di v6.
  • gradient_checkpointing_kwargs (dict, opsional) — Alias yang tidak lagi didukung dari activation_checkpointing_kwargs, akan dihapus di v6.

Kompilasi

  • torch_compile (bool, opsional, default False) — Kompilasi model menggunakan torch.compile() dari PyTorch 2.0 untuk pelatihan yang lebih cepat. Dapat memberikan peningkatan kecepatan 20-50% tanpa perubahan kode. Menggunakan pengaturan kompilasi default kecuali torch_compile_backend atau torch_compile_mode ditentukan.
  • torch_compile_backend (str, opsional) — Backend untuk torch.compile(). Jika diatur, secara otomatis mengaktifkan torch_compile. Opsi termasuk "inductor" (default), "aot_eager", "cudagraphs". Backend bervariasi tergantung versi PyTorch - lihat dokumentasi PyTorch untuk opsi yang tersedia.
  • torch_compile_mode (str, opsional) — Mode kompilasi untuk torch.compile(). Jika diatur, secara otomatis mengaktifkan torch_compile. Opsi: "default", "reduce-overhead" (meminimalkan overhead Python), "max-autotune" (optimalisasi agresif, waktu kompilasi lebih lambat).

Kernels

  • use_liger_kernel (bool, opsional, default False) — Aktifkan optimasi Liger Kernel. Meningkatkan throughput multi-GPU sekitar 20% dan mengurangi penggunaan memori sekitar 60%. Berfungsi dengan Flash Attention, FSDP, dan DeepSpeed. Saat ini mendukung model Llama, Mistral, Mixtral, dan Gemma.
  • liger_kernel_config (Optional[dict], opsional) — Konfigurasi untuk Liger Kernel. Diteruskan sebagai kwargs ke _apply_liger_kernel_to_instance(). Opsi yang biasanya termasuk: "rope", "swiglu", "cross_entropy", "fused_linear_cross_entropy", "rms_norm". Jika None, menggunakan konfigurasi default.

Optimasi Tambahan

  • use_cache (bool, opsional, default False) — Apakah cache untuk model akan diaktifkan atau tidak. Untuk pelatihan, ini biasanya tidak diperlukan kecuali untuk beberapa metode PEFT yang menggunakan past_key_values.
  • neftune_noise_alpha (Optional[float]) — Jika bukan None, ini akan mengaktifkan noise embeddings NEFTune. Hal ini dapat secara drastis meningkatkan kinerja model untuk fine-tuning instruksi. Lihat paper aslinya dan kode aslinya. Mendukung PreTrainedModel dari transformers dan juga PeftModel dari peft. Paper aslinya menggunakan nilai dalam rentang [5.0, 15.0].
  • torch_empty_cache_steps (int, opsional) — Jumlah langkah yang harus ditunggu sebelum memanggil torch.<device>.empty_cache(). Jika tidak disetel atau disetel ke None, cache tidak akan dikosongkan. Hal ini dapat membantu menghindari error CUDA out-of-memory dengan menurunkan penggunaan VRAM puncak, dengan biaya sekitar penurunan performa 10%.
  • auto_find_batch_size (bool, opsional, default False) — Apakah akan menemukan ukuran batch pelatihan yang muat di memori secara otomatis melalui peluruhan eksponensial, menghindari error CUDA Out-of-Memory. Ukuran batch evaluasi tidak disesuaikan.

Logging & Monitoring Pelatihan

  • logging_strategy (str atau IntervalStrategy, opsional, default ke "steps") — Strategi logging yang diadopsi selama pelatihan. Nilai yang mungkin adalah:
    • "no": Tidak ada pencatatan log yang dilakukan selama pelatihan.
    • "epoch": Pencatatan dilakukan di akhir setiap epoch.
    • "steps": Pencatatan dilakukan setiap logging_steps.
  • logging_steps (int atau float, opsional, default 500) — Jumlah langkah pembaruan di antara dua log jika logging_strategy="steps". Harus berupa bilangan bulat atau desimal dalam rentang [0,1). Jika lebih kecil dari 1, akan diinterpretasikan sebagai rasio dari total langkah pelatihan.
  • logging_first_step (bool, opsional, defaultnya False) — Apakah akan mencatat global_step pertama atau tidak.
  • log_on_each_node (bool, opsional, default True) — Dalam pelatihan terdistribusi multinode, apakah akan mencatat menggunakan log_level sekali per node, atau hanya pada node utama.
  • logging_nan_inf_filter (bool, opsional, default True) — Saring kerugian NaN dan Inf saat pencatatan. Jika True, mengganti kerugian pelatihan NaN/Inf dengan rata-rata kerugian valid terbaru, dan mengecualikan batch NaN/Inf (misalnya batch tanpa token label) dari kerugian evaluasi. Tidak memengaruhi komputasi gradien, hanya pencatatan.
  • include_num_input_tokens_seen (Optional[Union[str, bool]], opsional, default “no”) — Apakah akan melacak jumlah token input yang dilihat. Harus salah satu dari [“all”, “non_padding”, “no”] atau nilai boolean yang dipetakan ke “all” atau “no”. Dapat lebih lambat dalam pelatihan terdistribusi karena operasi gather harus dipanggil.

Logging

  • log_level (str, opsional, defaultnya passive) — Tingkat log untuk proses utama. Opsi: "debug", "info", "warning", "error", "critical", atau "passive" (tidak mengubah tingkat log Transformers saat ini, yang defaultnya "warning")
  • log_level_replica (str, opsional, defaultnya "warning") — Tingkat log untuk proses replika dalam pelatihan terdistribusi. Opsi yang sama dengan log_level.
  • disable_tqdm (bool, opsional) — Nonaktifkan bilah progres tqdm. Nilainya secara default True jika log_level adalah warning atau lebih rendah, False selain itu.

Integrasi Pelacakan Eksperimen

  • report_to (str atau list[str], opsional, defaultnya "none") — Daftar integrasi untuk melaporkan hasil dan log. Platform yang didukung adalah "azure_ml", "clearml", "codecarbon", "comet_ml", "dagshub", "dvclive", "flyte", "mlflow", "swanlab", "tensorboard", "trackio" dan "wandb". Gunakan "all" untuk melaporkan ke semua integrasi yang terpasang, "none" untuk tanpa integrasi.
  • run_name (str, opsional) — Deskriptor untuk run. Biasanya digunakan untuk logging trackio, wandb, mlflow, comet dan swanlab.
  • project (str, opsional, defaultnya "huggingface") — Nama proyek yang akan digunakan untuk logging. Saat ini, hanya digunakan oleh Trackio.
  • trackio_space_id (str atau None, opsional, default None) — ID Hugging Face Space yang akan digunakan untuk logging Trackio secara langsung dengan Space berbasis Gradio. Harus berupa nama Space lengkap seperti 'username/reponame' atau 'orgname/reponame', atau hanya 'reponame' (Space akan dibuat di namespace pengguna yang sedang login). Jika None, metrik hanya dicatat ke direktori lokal (tanpa Space di Hub). Gradio Space tersebut memiliki akses baca dan tulis ke Bucket Trackio, yang memang diinginkan saat pelatihan masih berlangsung—misalnya saat melanjutkan run yang belum selesai atau mengagregasi log dari beberapa mesin. Space akan bersifat publik kecuali Anda mengatur hub_private_repo=True atau default organisasi Anda adalah membuat Space privat.
  • trackio_bucket_id (str atau None, opsional, default None) — ID Bucket Hugging Face opsional untuk Trackio. Jika tidak diset, Trackio akan menurunkannya. Digunakan bersama dengan Gradio Space (trackio_space_id) dan saat mendeploy Space statis (trackio_static_space_id bukan False).
  • trackio_static_space_id (str, False, atau None, opsional, defaultnya None) — ID Hugging Face Space yang akan digunakan untuk static Space yang dibuat setelah pelatihan selesai. Harus berupa nama Space lengkap seperti 'username/reponame' atau 'orgname/reponame', atau hanya 'reponame' (Space akan dibuat di namespace pengguna yang sedang login). Jika False, tidak akan ada static Space yang dibuat. Jika None, dan model didorong ke Hub, sebuah static Space akan dibuat dengan nama default dan ini akan ditautkan dari model card. Space akan bersifat publik kecuali Anda mengatur hub_private_repo=True atau default organisasi Anda adalah membuat Space privat.

Evaluasi

  • eval_strategy (str atau IntervalStrategy, opsional, default ke "no") — Kapan menjalankan evaluasi. Opsi:
    • "no": Tidak ada evaluasi selama pelatihan
    • "steps": Evaluasi setiap eval_steps
    • "epoch": Evaluasi di akhir setiap epoch
  • eval_steps (int atau float, opsional) — Jumlah langkah pembaruan di antara dua evaluasi jika eval_strategy="steps". Akan secara default menggunakan nilai yang sama dengan logging_steps jika tidak diatur. Harus berupa bilangan bulat atau desimal dalam rentang [0,1). Jika lebih kecil dari 1, akan diinterpretasikan sebagai rasio dari total langkah pelatihan.
  • eval_delay (float, opsional) — Jumlah epoch atau langkah yang harus ditunggu sebelum evaluasi pertama dapat dilakukan, tergantung pada eval_strategy.
  • per_device_eval_batch_size (int, opsional, default 8) — Ukuran batch per inti akselerator/CPU perangkat untuk evaluasi.
  • prediction_loss_only (bool, opsional, default False) — Saat melakukan evaluasi dan menghasilkan prediksi, hanya mengembalikan loss.
  • eval_on_start (bool, opsional, defaultnya False) — Apakah akan melakukan langkah evaluasi (pemeriksaan kewajaran) sebelum pelatihan untuk memastikan langkah validasi berjalan dengan benar.
  • eval_do_concat_batches (bool, opsional, defaultnya True) — Apakah akan menggabungkan (concat) input/losses/labels/predictions secara rekursif di antara batch. Jika False, maka data tersebut akan disimpan sebagai daftar, dengan setiap batch dipertahankan terpisah.
  • eval_use_gather_object (bool, opsional, default False) — Apakah akan menjalankan pengumpulan objek secara rekursif dari daftar/tuple/dictionary bersarang berisi objek dari semua perangkat. Opsi ini hanya harus diaktifkan jika pengguna tidak hanya mengembalikan tensor, dan hal ini secara aktif tidak dianjurkan oleh PyTorch. Ini berguna ketika struktur label bersifat non-standar, seperti pada tugas computer vision.
  • eval_accumulation_steps (int, opsional) — Jumlah langkah prediksi untuk mengakumulasi tensor output, sebelum memindahkan hasilnya ke CPU. Jika tidak disetel, seluruh prediksi akan diakumulasi di akselerator perangkat sebelum dipindahkan ke CPU (lebih cepat tetapi membutuhkan lebih banyak memori).

Perhitungan Metrik

  • include_for_metrics (list[str], opsional, defaultnya []) — Sertakan data tambahan dalam compute_metrics fungsi jika diperlukan untuk perhitungan metrik. Opsi yang mungkin ditambahkan ke include_for_metrics daftar:
    • "inputs": Data input yang diteruskan ke model, yang ditujukan untuk menghitung metrik yang bergantung pada input.
    • "loss": Nilai loss yang dihitung selama evaluasi, yang ditujukan untuk menghitung metrik yang bergantung pada loss.
  • batch_eval_metrics (bool, opsional, default False) — Jika diset ke True, evaluasi akan memanggil compute_metrics di akhir setiap batch untuk mengakumulasi statistik alih-alih menyimpan semua eval logits di memori. Ketika diset ke True, Anda harus meneruskan fungsi compute_metrics yang mengambil argumen boolean compute_result, yang ketika diteruskan True, akan memicu statistik ringkasan global akhir dari statistik ringkasan tingkat batch yang telah Anda akumulasikan di sepanjang set evaluasi.

Checkpointing & Penyimpanan

  • save_only_model (bool, opsional, default False) — Simpan hanya bobot model, bukan state optimizer/scheduler/RNG. Ini secara signifikan mengurangi ukuran checkpoint tetapi mencegah pelanjutan pelatihan dari checkpoint tersebut. Gunakan ketika Anda hanya membutuhkan model yang telah dilatih untuk inferensi, bukan untuk pelatihan lanjutan. Anda hanya dapat memuat model menggunakan from_pretrained dengan opsi ini diset ke True.
  • save_strategy (str atau SaveStrategy, opsional, default ke "steps") — Strategi penyimpanan checkpoint yang diadopsi selama pelatihan. Nilai yang mungkin adalah:
    • "no": Tidak ada penyimpanan yang dilakukan selama pelatihan.
    • "epoch": Penyimpanan dilakukan di akhir setiap epoch.
    • "steps": Penyimpanan dilakukan setiap save_steps.
    • "best": Penyimpanan dilakukan setiap kali best_metric baru tercapai.
  • save_steps (int atau float, opsional, default 500) — Jumlah langkah pembaruan sebelum dua penyimpanan checkpoint jika save_strategy="steps". Harus berupa bilangan bulat atau float dalam rentang [0,1). Jika lebih kecil dari 1, akan diinterpretasikan sebagai rasio dari total langkah pelatihan.
  • save_on_each_node (bool, opsional, default False) — Saat melakukan pelatihan terdistribusi multi-node, apakah model dan checkpoint disimpan di setiap node, atau hanya di node utama. Ini tidak boleh diaktifkan jika node yang berbeda menggunakan penyimpanan yang sama, karena file akan disimpan dengan nama yang sama untuk setiap node.
  • save_total_limit (int, opsional) — Jumlah maksimum checkpoint yang disimpan. Checkpoint yang lebih lama akan dihapus dari output_dir. Ketika load_best_model_at_end=True, checkpoint terbaik selalu dipertahankan beserta yang terbaru. Misalnya, save_total_limit=5 menyimpan 4 checkpoint terbaru ditambah yang terbaik
  • enable_jit_checkpoint (bool, optional, defaults to False) — Enable Just-In-Time checkpointing on SIGTERM signal for graceful termination on preemptible workloads. Important: Configure your orchestrator’s graceful shutdown period to allow sufficient time. For Kubernetes, set terminationGracePeriodSeconds (default 30s is usually insufficient). For Slurm, use --signal=TERM@<seconds>. Required grace period ≥ longest iteration time + checkpoint save time.

Integrasi Hugging Face Hub

  • push_to_hub (bool, opsional, default False) — Apakah model akan didorong ke Hub setiap kali model disimpan. Jika diaktifkan, output_dir akan memulai direktori git yang disinkronkan dengan repo (ditentukan oleh hub_model_id) dan kontennya akan didorong setiap kali penyimpanan dipicu (tergantung pada save_strategy Anda). Memanggil save_model() juga akan memicu pendorongan.
  • hub_token (str, opsional) — Token yang digunakan untuk mendorong model ke Hub. Secara default akan menggunakan token di folder cache yang diperoleh dengan hf auth login.
  • hub_private_repo (bool, opsional) — Apakah membuat repo menjadi privat. Jika None (default), repo akan menjadi publik kecuali default organisasi adalah privat. Nilai ini diabaikan jika repo sudah ada. Jika melaporkan ke Trackio dengan deployment ke Hugging Face Spaces diaktifkan, logika yang sama menentukan apakah Space tersebut privat.
  • hub_model_id (str, opsional) — Nama repositori yang akan disinkronkan dengan output_dir lokal. Ini bisa berupa ID model sederhana, di mana model akan didorong ke namespace Anda. Jika tidak, ini harus berupa nama repositori lengkap, misalnya "user_name/model", yang memungkinkan Anda mendorong ke organisasi yang Anda ikuti dengan "organization_name/model". Secara default menjadi user_name/output_dir_name dengan output_dir_name sebagai nama dari output_dir.
  • hub_strategy (str atau HubStrategy, opsional, default ke "every_save") — Menentukan apa dan kapan yang akan di-push ke Hub. Opsi:
    • "end": Dorong hanya di akhir pelatihan
    • "every_save": Push pada setiap penyimpanan (asinkron agar tidak memblokir pelatihan)
    • "checkpoint": Seperti "every_save" plus mendorong checkpoint terbaru ke subfolder "last-checkpoint" untuk memudahkan pelanjutan
    • "all_checkpoints": Dorong semua checkpoint saat muncul
  • hub_always_push (bool, opsional, default False) — Kecuali ini True, Trainer akan melewatkan pendorongan checkpoint jika pendorongan sebelumnya belum selesai.
  • hub_revision (str, opsional) — Revisi yang akan digunakan saat mendorong ke Hub. Bisa berupa nama branch, tag, atau hash commit.

Pelacakan Model Terbaik

  • load_best_model_at_end (bool, opsional, default False) — Muat checkpoint terbaik di akhir pelatihan. Memerlukan eval_strategy untuk disetel. Ketika diaktifkan, checkpoint terbaik selalu disimpan (lihat save_total_limit). Ketika `True`, `save_strategy` harus cocok dengan `eval_strategy` (kecuali `save_strategy` adalah `"best"`), dan jika menggunakan `"steps"`, `save_steps` harus kelipatan dari `eval_steps`.
  • metric_for_best_model (str, opsional) — Metrik yang digunakan untuk membandingkan model saat load_best_model_at_end=True. Harus berupa nama metrik yang dikembalikan oleh evaluasi, dengan atau tanpa prefiks "eval_". Bawaan adalah "loss". Jika Anda mengatur ini, greater_is_better akan secara bawaan menjadi True kecuali namanya diakhiri dengan "loss". Contoh: "accuracy", "f1", "eval_bleu".
  • greater_is_better (bool, opsional) — Apakah nilai metrik yang lebih tinggi lebih baik. Nilai default berdasarkan metric_for_best_model: True jika nama metrik tidak diakhiri dengan "loss", False selain itu.

Melanjutkan Pelatihan

  • ignore_data_skip (bool, opsional, default False) — Saat melanjutkan pelatihan, lewati proses fast-forward melalui dataset untuk mencapai keadaan sebelumnya. Jika True, pelatihan dimulai dari awal dataset (pelanjutan lebih cepat tetapi hasilnya tidak akan cocok dengan pelatihan yang terputus). Jika False, data yang sudah dilihat akan dilewati (pelanjutan lebih lambat tetapi kelanjutan yang persis).
  • restore_callback_states_from_checkpoint (bool, opsional, default False) — Pulihkan status callback dari checkpoint saat melanjutkan. Jika True, callback yang diteruskan ke Trainer akan ditimpa jika callback tersebut ada di checkpoint.

Reproduktibilitas

  • full_determinism (bool, opsional, default False) — Jika True, enable_full_determinism() dipanggil alih-alih set_seed() untuk memastikan hasil yang dapat direproduksi dalam pelatihan terdistribusi. Penting: ini akan berdampak negatif pada kinerja, jadi hanya gunakan untuk debugging.
  • seed (int, opsional, default 42) — Seed acak yang akan diset di awal pelatihan. Untuk memastikan reproduktibilitas antar eksekusi, gunakan fungsi ~Trainer.model_init untuk menginstansiasi model jika model tersebut memiliki beberapa parameter yang diinisialisasi secara acak.
  • data_seed (int, opsional) — Seed acak yang akan digunakan dengan data samplers. Jika tidak diatur, generator acak untuk pengambilan sampel data akan menggunakan seed yang sama dengan seed. Hal ini dapat digunakan untuk memastikan reproduktibilitas pengambilan sampel data, terlepas dari seed model.

Konfigurasi Perangkat Keras

  • use_cpu (bool, opsional, default False) — Apakah akan menggunakan cpu. Jika diset ke False, kami akan menggunakan perangkat/backend torch yang tersedia.

Konfigurasi Accelerate

  • accelerator_config (str, dict, atau AcceleratorConfig, opsional) — Konfigurasi untuk integrasi Accelerate internal. Bisa berupa: Path ke file konfigurasi JSON: "accelerator_config.json" Dictionary dengan opsi konfigurasi Instance AcceleratorConfig Opsi utama: split_batches (bool, default False): Apakah membagi batch di antara perangkat. Jika True, ukuran batch aktual sama di semua perangkat (total harus bisa dibagi habis oleh num_processes). Jika False, setiap perangkat mendapatkan ukuran batch yang ditentukan. dispatch_batches (bool): Jika True, hanya proses utama yang mengiterasi dataloader dan mendistribusikan batch ke perangkat. Default True untuk IterableDataset, False untuk lainnya. even_batches (bool, default True): Duplikasi sampel dari awal dataset untuk memastikan semua worker mendapatkan ukuran batch yang sama. use_seedable_sampler (bool, default True): Gunakan sampler acak yang sepenuhnya dapat di-seed untuk reproduktibilitas. use_configured_state (bool, default False): Gunakan AcceleratorState/PartialState yang sudah diinisialisasi sebelumnya alih-alih membuat yang baru. Mungkin menyebabkan masalah dengan penyetelan hiperparameter.
    • Path ke file konfigurasi JSON: "accelerator_config.json"
    • Dictionary dengan opsi konfigurasi
    • Instans AcceleratorConfig Opsi utama:
    • split_batches (bool, defaultnya False): Apakah batch akan dipecah di antara perangkat. Jika True, ukuran batch aktual sama di semua perangkat (total harus habis dibagi num_processes). Jika False, setiap perangkat mendapatkan ukuran batch yang ditentukan.
    • dispatch_batches (bool): Jika True, hanya proses utama yang mengiterasi dataloader dan mendistribusikan batch ke perangkat. Defaultnya adalah True untuk IterableDataset, False untuk kasus lainnya.
    • even_batches (bool, defaultnya True): Duplikat sampel dari awal dataset untuk memastikan semua worker mendapatkan ukuran batch yang sama.
    • use_seedable_sampler (bool, defaultnya True): Gunakan sampler acak yang sepenuhnya dapat di-seed untuk reproduktibilitas.
    • use_configured_state (bool, default False): Gunakan AcceleratorState/PartialState yang sudah diinisialisasi sebelumnya alih-alih membuat yang baru. Hal ini dapat menyebabkan masalah dengan penyetelan hiperparameter.
  • parallelism_config (ParallelismConfig, opsional) — Konfigurasi paralelisme untuk sesi pelatihan. Memerlukan Accelerate 1.10.1

Dataloader

  • dataloader_drop_last (bool, opsional, default False) — Apakah akan membuang batch terakhir yang tidak lengkap (jika panjang dataset tidak habis dibagi ukuran batch) atau tidak.
  • dataloader_num_workers (int, opsional, default 0) — Jumlah subprocess yang digunakan untuk memuat data (hanya PyTorch). 0 berarti data akan dimuat di proses utama.
  • dataloader_pin_memory (bool, opsional, defaultnya True) — Apakah Anda ingin mengunci memori di data loader atau tidak. Akan default ke True.
  • dataloader_persistent_workers (bool, opsional, defaultnya False) — Jika True, data loader tidak akan mematikan proses worker setelah dataset dikonsumsi sekali. Hal ini memungkinkan untuk mempertahankan instance Dataset worker tetap aktif. Potensinya dapat mempercepat pelatihan, tetapi akan meningkatkan penggunaan RAM. Defaultnya akan menjadi False.
  • dataloader_prefetch_factor (int, opsional) — Jumlah batch yang dimuat di muka oleh setiap worker. 2 berarti akan ada total 2 * num_workers batch yang diprefetch di seluruh worker.
  • dataloader_multiprocessing_context (str, opsional) — Metode start multiprocessing yang digunakan untuk worker pemuatan data ("fork", "spawn", atau "forkserver"). Secara default menggunakan metode start default PyTorch, kecuali pada MPS dengan dataloader_num_workers > 1, di mana defaultnya adalah "fork". Gunakan "spawn" saat streaming dari sumber yang objeknya tidak aman untuk fork (mis. HDFS via pyarrow). Di bawah "spawn", kode collate_fn atau dataset kustom apa pun harus dapat diimpor pada level modul (tanpa lambda/closure).
  • dataloader_in_order (bool, opsional, default True) — Jika True, data loader menghasilkan batch sesuai urutan worker yang dikirim. Atur ke False untuk menghasilkan batch segera setelah siap, yang dapat mengurangi latensi ekor untuk workload streaming IterableDataset. Memerlukan PyTorch >= 2.6.
  • remove_unused_columns (bool, opsional, default True) — Apakah kolom yang tidak digunakan oleh metode forward model akan dihapus secara otomatis.
  • label_names (list[str], opsional) — Daftar kunci dalam kamus input Anda yang sesuai dengan label. Akhirnya akan secara default menjadi daftar nama argumen yang diterima oleh model yang mengandung kata “label”, kecuali jika model yang digunakan adalah salah satu dari XxxForQuestionAnswering, di mana dalam hal itu juga akan menyertakan kunci ["start_positions", "end_positions"]. Anda hanya perlu menentukan label_names jika Anda menggunakan nama label kustom atau jika forward model Anda mengonsumsi beberapa tensor label (misalnya, extractive QA).
  • train_sampling_strategy (str, opsional, defaultnya "random") — Sampler yang digunakan untuk training dataloader. Nilai yang mungkin adalah:
    • "random": Menggunakan RandomSampler (default).
    • "sequential": Menggunakan SequentialSampler.
    • "group_by_length": Menggunakan LengthGroupedSampler untuk mengelompokkan sampel dengan panjang yang kurang lebih sama bersama-sama (untuk meminimalkan padding dan menjadi lebih efisien).
    • "batch_rebalance": Menggunakan BatchRebalanceSampler untuk menyeimbangkan biaya token bantalan antar perangkat dan langkah akumulasi gradien di dalam setiap batch efektif, mengurangi pemborosan bantalan dan memori puncak dibandingkan "group_by_length". Saat ini hanya didukung untuk pelatihan data-parallel (tensor parallelism belum didukung).

    Catatan: Saat menggunakan IterableDataset, argumen ini diabaikan.

  • length_column_name (str, opsional, defaultnya "length") — Nama kolom untuk panjang yang sudah dihitung sebelumnya. Jika kolom ini ada, pengelompokan berdasarkan panjang akan menggunakan nilai-nilai ini alih-alih menghitungnya saat peluncuran pelatihan. Diabaikan kecuali train_sampling_strategy adalah "group_by_length" atau "batch_rebalance" dan dataset adalah instance dari Dataset.

DDP (DistributedDataParallel)

  • ddp_find_unused_parameters (bool, opsional) — Saat menggunakan pelatihan terdistribusi, nilai flag find_unused_parameters yang diteruskan ke DistributedDataParallel. Akan menjadi False jika gradient checkpointing digunakan, True selain itu.
  • ddp_bucket_cap_mb (int, opsional) — Saat menggunakan pelatihan terdistribusi, nilai flag bucket_cap_mb yang diteruskan ke DistributedDataParallel.
  • ddp_broadcast_buffers (bool, opsional) — Saat menggunakan pelatihan terdistribusi, nilai flag broadcast_buffers yang diteruskan ke DistributedDataParallel. Akan menjadi False jika gradient checkpointing digunakan, True selain itu.
  • ddp_static_graph (bool, opsional) — Saat menggunakan pelatihan terdistribusi, nilai flag static_graph yang diteruskan ke DistributedDataParallel.
  • ddp_backend (str, opsional) — Backend yang digunakan untuk pelatihan terdistribusi. Harus salah satu dari "nccl", "mpi", "xccl", "gloo", "hccl".
  • ddp_timeout (int, opsional, default 1800) — Timeout untuk panggilan torch.distributed.init_process_group, digunakan untuk menghindari timeout socket GPU saat melakukan operasi lambat dalam eksekusi terdistribusi. Silakan lihat dokumentasi PyTorch untuk informasi lebih lanjut.

FSDP (Fully Sharded Data Parallel)

  • fsdp (bool, opsional, default None) — Aktifkan PyTorch Fully Sharded Data Parallel (FSDP) untuk pelatihan terdistribusi. Berikan True untuk mengaktifkan FSDP.
  • fsdp_config (str atau dict, opsional) — Pengaturan konfigurasi untuk saat fsdp diaktifkan. Berikan path ke file konfigurasi JSON, seperti fsdp_config.json, atau dict yang sudah dimuat.

    Kunci yang didukung:

    • versi (int, opsional, default 2): Versi FSDP yang akan digunakan (2 untuk FSDP2, 1 untuk FSDP1 legacy).
    • reshard_after_forward (bool, opsional, default True): Apakah akan melakukan resharding parameter setelah forward pass. Atur ke False untuk mempertahankan parameter dalam keadaan terkumpul (gathered) antara forward dan backward pass, menghindari re-all-gather, dan menggunakan memori puncak yang lebih tinggi.
    • cpu_offload (bool, opsional, default False): Offload parameter dan gradien ke CPU saat tidak digunakan untuk menghemat memori GPU.
    • activation_checkpointing (bool, opsional, default False): Atur ke True untuk mengurangi memori dengan menghitung ulang aktivasi selama backward pass. Saat menggunakan FSDP, lebih disarankan menggunakan ini daripada argumen pelatihan activation_checkpointing, yang memperkenalkan all-gather yang redundan dalam backward pass.
    • cpu_ram_efficient_loading (bool, opsional, default False): Atur ke True untuk memuat checkpoint pretrained hanya pada proses pertama. Proses lain dimulai dengan bobot kosong dan menerima bobot melalui broadcast.
    • state_dict_type (str, opsional, default "FULL_STATE_DICT"): Format checkpoint: "FULL_STATE_DICT" (satu file yang kompatibel dengan HF) atau "SHARDED_STATE_DICT" (satu file per rank, lebih cepat untuk model besar).
    • auto_wrap_policy (str, opsional, default "TRANSFORMER_BASED_WRAP"): Kebijakan auto-wrap yang akan digunakan. Pilih "TRANSFORMER_BASED_WRAP", "SIZE_BASED_WRAP", atau "NO_WRAP".
    • transformer_layer_cls_to_wrap (list[str], opsional): Nama kelas layer Transformer (peka huruf besar/kecil) yang akan dibungkus, misalnya LlamaDecoderLayer. Biasanya tidak diperlukan: kebijakan pembungkusan akan kembali ke _no_split_modules model, yang mencakup sebagian besar model transformers.
    • min_num_params (int, opsional, default 0): Jumlah minimum parameter per modul untuk auto-wrapping berbasis ukuran (digunakan dengan auto_wrap_policy="SIZE_BASED_WRAP").
    • xla (bool, opsional, default False): Apakah akan menggunakan PyTorch/XLA Fully Sharded Data Parallel Training. Eksperimental.
    • xla_fsdp_settings (dict, opsional): Kamus parameter pembungkus XLA FSDP. Untuk daftar lengkap opsi, lihat sumber kode XLA FSDP.
    • xla_fsdp_grad_ckpt (bool, opsional, default False): Atur ke True untuk menggunakan gradient checkpointing pada setiap lapisan XLA FSDP yang dibungkus secara bersarang. Memerlukan xla=True dan kebijakan auto-wrapping (min_num_params atau transformer_layer_cls_to_wrap).

DeepSpeed

  • deepspeed (str or dict, opsional) — Aktifkan DeepSpeed integrasi. Nilainya adalah salah satu dari:
    • Path ke file konfigurasi JSON DeepSpeed: "ds_config.json"
    • Konfigurasi dimuat sebagai kamus

      Jika menggunakan inisialisasi ZeRO, instansiasi model Anda setelah menginisialisasi TrainingArguments, jika tidak ZeRO tidak akan diterapkan.

Debugging & Profiling (Eksperimental)

  • debug (str atau daftar DebugOption, opsional, default ke "") — Aktifkan satu atau beberapa fitur debug. Ini adalah fitur eksperimental. Opsi yang tersedia adalah:
    • “underflow_overflow”: mendeteksi overflow pada input/output model dan melaporkan frame terakhir yang menyebabkan kejadian tersebut
    • “tpu_metrics_debug”: cetak metrik debug pada TPU
  • skip_memory_metrics (bool, opsional, defaultnya True) — Apakah akan melewati penambahan laporan profiler memori ke metrik. Ini dilewati secara default karena memperlambat kecepatan pelatihan dan evaluasi.

Flag Skrip Eksternal (tidak digunakan oleh Trainer)

  • do_train (bool, opsional, default False) — Apakah akan menjalankan pelatihan atau tidak. Argumen ini tidak digunakan secara langsung oleh Trainer, melainkan ditujukan untuk digunakan oleh skrip pelatihan/evaluasi Anda.
  • do_eval (bool, opsional) — Apakah akan menjalankan evaluasi pada set validasi atau tidak. Akan diset ke True jika eval_strategy berbeda dari "no". Argumen ini tidak digunakan secara langsung oleh Trainer, melainkan ditujukan untuk digunakan oleh skrip pelatihan/evaluasi Anda.
  • do_predict (bool, opsional, default False) — Apakah akan menjalankan prediksi pada set pengujian atau tidak. Argumen ini tidak digunakan secara langsung oleh Trainer, melainkan ditujukan untuk digunakan oleh skrip pelatihan/evaluasi Anda.
  • resume_from_checkpoint (str, opsional) — Path ke folder berisi checkpoint yang valid untuk model Anda. Argumen ini tidak digunakan secara langsung oleh Trainer, melainkan ditujukan untuk digunakan oleh skrip pelatihan/evaluasi Anda.

Kelas konfigurasi untuk mengendalikan semua aspek pelatihan model dengan Trainer. TrainingArguments memusatkan semua hiperparameter, pengaturan optimasi, preferensi pencatatan log, dan pilihan infrastruktur yang diperlukan untuk pelatihan.

HfArgumentParser dapat mengubah kelas ini menjadi argumen argparse yang dapat ditentukan pada baris perintah.

get_process_log_level

< >

( )

Mengembalikan level log yang akan digunakan tergantung pada apakah proses ini adalah proses utama dari node 0, proses utama dari node non-0, atau proses non-utama.

Untuk proses utama, tingkat log secara default mengikuti tingkat log yang diset (logging.WARNING jika Anda tidak melakukan apa pun) kecuali ditimpa oleh argumen log_level.

Untuk proses replika, tingkat log secara default adalah logging.WARNING kecuali ditimpa oleh argumen log_level_replica.

Pilihan antara pengaturan proses utama dan proses replika dibuat berdasarkan nilai pengembalian dari should_log.

get_warmup_steps

< >

( num_training_steps: int )

Dapatkan jumlah langkah yang digunakan untuk linear warmup.

main_process_first

< >

( local = Truedesc = 'work' )

Parameter

  • local (bool, opsional, default True) — jika True, “first” berarti proses rank 0 dari setiap node; jika False, “first” berarti proses rank 0 dari node rank 0. Dalam lingkungan multi-node dengan sistem berkas bersama, kemungkinan besar Anda ingin menggunakan local=False agar hanya proses utama dari node pertama yang melakukan pemrosesan. Namun, jika sistem berkas tidak bersama, maka proses utama dari setiap node perlu melakukan pemrosesan, yang merupakan perilaku default.
  • desc (str, opsional, defaultnya "work") — deskripsi pekerjaan yang akan digunakan dalam log debug

Manajer konteks untuk lingkungan torch distributed di mana seseorang perlu melakukan sesuatu pada proses utama, sambil memblokir replika, dan ketika selesai, melepaskan replika tersebut.

Salah satu penggunaan seperti itu adalah untuk fitur map dari datasets yang, agar efisien, harus dijalankan sekali pada proses utama, yang setelah selesai menyimpan versi hasil yang di-cache dan kemudian secara otomatis dimuat oleh replika.

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 )

Parameter

  • drop_last (bool, opsional, default False) — Apakah akan membuang batch terakhir yang tidak lengkap (jika panjang dataset tidak habis dibagi ukuran batch) atau tidak.
  • num_workers (int, opsional, default 0) — Jumlah subprocess yang digunakan untuk memuat data (hanya PyTorch). 0 berarti data akan dimuat di proses utama.
  • pin_memory (bool, opsional, default True) — Apakah Anda ingin mengunci memori di data loader atau tidak. Akan default ke True.
  • persistent_workers (bool, opsional, default False) — Jika True, data loader tidak akan mematikan proses worker setelah dataset dikonsumsi sekali. Hal ini memungkinkan untuk mempertahankan instance Dataset worker tetap aktif. Potensi mempercepat pelatihan, namun akan meningkatkan penggunaan RAM. Akan default ke False.
  • prefetch_factor (int, opsional) — Jumlah batch yang dimuat di muka oleh setiap worker. 2 berarti akan ada total 2 * num_workers batch yang diprefetch di seluruh worker.
  • multiprocessing_context (str, opsional) — Metode start multiprocessing yang digunakan untuk worker pemuatan data ("fork", "spawn", atau "forkserver"). Secara default menggunakan metode start default PyTorch. Gunakan "spawn" saat streaming dari sumber yang objeknya tidak aman untuk fork (mis. HDFS via pyarrow). Di bawah "spawn", kode collate_fn atau dataset kustom apa pun harus dapat diimpor pada level modul (tanpa lambda/closure).
  • in_order (bool, opsional, default True) — Jika True, data loader menghasilkan batch sesuai urutan worker yang dikirimkan. Atur ke False untuk menghasilkan batch segera setelah siap, yang dapat mengurangi latensi ekor untuk workload streaming IterableDataset. Memerlukan PyTorch >= 2.6.
  • auto_find_batch_size (bool, opsional, default False) — Apakah akan menemukan ukuran batch yang muat di memori secara otomatis melalui peluruhan eksponensial, menghindari error CUDA Out-of-Memory. Memerlukan accelerate terinstal (pip install accelerate)
  • ignore_data_skip (bool, opsional, default False) — Saat melanjutkan pelatihan, apakah epoch dan batch akan dilewati untuk membuat pemuatan data berada pada tahap yang sama seperti pada pelatihan sebelumnya. Jika diatur ke True, pelatihan akan dimulai lebih cepat (karena langkah penghindaran tersebut dapat memakan waktu lama) tetapi tidak akan menghasilkan hasil yang sama seperti yang akan dihasilkan oleh pelatihan yang terputus.
  • sampler_seed (int, opsional) — Seed acak yang akan digunakan dengan data samplers. Jika tidak diatur, generator acak untuk pengambilan sampel data akan menggunakan seed yang sama dengan self.seed. Hal ini dapat digunakan untuk memastikan reproduktibilitas pengambilan sampel data, terlepas dari seed model.

Metode yang mengelompokkan kembali semua argumen yang terkait dengan pembuatan dataloaders.

Contoh:

>>> 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 )

Parameter

  • strategy (str atau IntervalStrategy, opsional, default ke "no") — Strategi evaluasi yang diadopsi selama pelatihan. Nilai yang mungkin adalah:
    • "no": Tidak ada evaluasi yang dilakukan selama pelatihan.
    • "steps": Evaluasi dilakukan (dan dicatat) setiap steps.
    • "epoch": Evaluasi dilakukan di akhir setiap epoch.

    Menetapkan strategy yang berbeda dari "no" akan mengatur self.do_eval menjadi True.

  • steps (int, opsional, default 500) — Jumlah langkah pembaruan di antara dua evaluasi jika strategy="steps".
  • batch_size (int opsional, defaultnya 8) — Ukuran batch per perangkat (GPU/TPU core/CPU…) yang digunakan untuk evaluasi.
  • accumulation_steps (int, opsional) — Jumlah langkah prediksi untuk mengakumulasi tensor output, sebelum memindahkan hasilnya ke CPU. Jika tidak disetel, seluruh prediksi akan diakumulasi di GPU/TPU sebelum dipindahkan ke CPU (lebih cepat tetapi membutuhkan lebih banyak memori).
  • delay (float, opsional) — Jumlah epoch atau langkah yang harus ditunggu sebelum evaluasi pertama dapat dilakukan, tergantung pada eval_strategy.
  • loss_only (bool, opsional, defaultnya False) — Mengabaikan semua output kecuali loss.

Metode yang mengelompokkan kembali semua argumen yang terkait dengan evaluasi.

Contoh:

>>> 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' )

Parameter

  • strategy (str atau IntervalStrategy, opsional, default ke "steps") — Strategi pencatatan log yang diadopsi selama pelatihan. Nilai yang mungkin adalah:
    • "no": Tidak ada pencatatan log yang dilakukan selama pelatihan.
    • "epoch": Pencatatan dilakukan di akhir setiap epoch.
    • "steps": Pencatatan dilakukan setiap logging_steps.
  • steps (int, opsional, default 500) — Jumlah langkah pembaruan antara dua log jika strategy="steps".
  • level (str, opsional, default "passive") — Level log logger yang digunakan pada proses utama. Pilihan yang tersedia adalah level log sebagai string: "debug", "info", "warning", "error" dan "critical", serta level "passive" yang tidak mengatur apa pun dan membiarkan aplikasi mengatur levelnya.
  • report_to (str atau list[str], opsional, defaultnya "none") — Daftar integrasi untuk melaporkan hasil dan log. Platform yang didukung adalah "azure_ml", "clearml", "codecarbon", "comet_ml", "dagshub", "dvclive", "flyte", "mlflow", "swanlab", "tensorboard", "trackio" dan "wandb". Gunakan "all" untuk melaporkan ke semua integrasi yang terinstal, "none" untuk tanpa integrasi.
  • first_step (bool, opsional, default False) — Apakah akan mencatat dan mengevaluasi global_step pertama atau tidak.
  • nan_inf_filter (bool, opsional, defaultnya True) — Apakah akan memfilter nan dan inf losses untuk logging. Jika diatur ke True loss dari setiap langkah yang bernilai nan atau inf akan difilter dan rata-rata loss dari jendela logging saat ini akan digunakan sebagai gantinya.

    nan_inf_filter hanya memengaruhi pencatatan nilai loss, dan tidak mengubah perilaku saat gradien dihitung atau diterapkan ke model.

  • on_each_node (bool, opsional, default True) — Dalam pelatihan terdistribusi multinode, apakah mencatat menggunakan log_level sekali per node, atau hanya pada node utama.
  • replica_level (str, opsional, defaultnya "passive") — Tingkat log logger yang digunakan pada replika. Pilihan yang sama dengan log_level

Metode yang mengelompokkan kembali semua argumen yang terkait dengan pencatatan log.

Contoh:

>>> 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 )

Parameter

  • name (str atau SchedulerType, opsional, default "linear") — Jenis scheduler yang akan digunakan. Lihat dokumentasi SchedulerType untuk semua nilai yang mungkin.
  • num_epochs(float, opsional, default 3.0) — Total jumlah epoch pelatihan yang akan dilakukan (jika bukan bilangan bulat, akan melakukan bagian desimalnya sebagai persentase dari epoch terakhir sebelum menghentikan pelatihan).
  • max_steps (int, opsional, default -1) — Jika diatur ke angka positif, jumlah total langkah pelatihan yang akan dilakukan. Mengesampingkan num_train_epochs. Untuk dataset berhingga, pelatihan diulang melalui dataset (jika semua data habis) hingga max_steps tercapai. Nilai ini harus diatur ke angka positif ketika dataset pelatihan tidak mengimplementasikan __len__ (misalnya dataset streaming), karena jumlah total langkah tidak dapat diturunkan dan diperlukan untuk membatasi loop pelatihan serta mengonfigurasi penjadwal laju pembelajaran.
  • warmup_steps (float, opsional, default 0) — Jumlah langkah yang digunakan untuk pemanasan linear dari 0 hingga learning_rate. Harus berupa bilangan bulat atau float dalam rentang [0,1). Jika nilainya kurang dari 1, akan diinterpretasikan sebagai rasio langkah yang digunakan untuk pemanasan linear dari 0 hingga learning_rate.

Metode yang mengelompokkan kembali semua argumen yang terkait dengan penjadwal laju pembelajaran dan hiperparameternya.

Contoh:

>>> 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 )

Parameter

  • name (str atau training_args.OptimizerNames, opsional, default "adamw_torch") — Optimizer yang akan digunakan: "adamw_torch", "adamw_torch_fused", "adamw_anyprecision" atau "adafactor".
  • learning_rate (float, opsional, default 5e-5) — Learning rate awal.
  • weight_decay (float, opsional, default 0) — Weight decay yang diterapkan (jika tidak nol) ke semua lapisan kecuali semua bobot bias dan LayerNorm.
  • beta1 (float, opsional, default 0.9) — Hyperparameter beta1 untuk optimizer adam atau variasinya.
  • beta2 (float, opsional, default 0.999) — Hyperparameter beta2 untuk optimizer adam atau variasinya.
  • epsilon (float, opsional, default 1e-8) — Hyperparameter epsilon untuk optimizer adam atau variasinya.
  • args (str, opsional) — Argumen opsional yang diberikan ke AnyPrecisionAdamW (hanya berguna ketika optim="adamw_anyprecision").

Metode yang mengelompokkan kembali semua argumen yang terkait dengan optimizer dan hiperparameternya.

Contoh:

>>> 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 )

Parameter

  • model_id (str) — Nama repositori yang akan disinkronkan dengan output_dir lokal. Ini bisa berupa ID model sederhana, di mana model akan didorong ke namespace Anda. Jika tidak, ini harus berupa nama repositori lengkap, misalnya "user_name/model", yang memungkinkan Anda mendorong ke organisasi yang Anda ikuti dengan "organization_name/model".
  • strategy (str atau HubStrategy, opsional, default ke "every_save") — Menentukan cakupan apa yang didorong ke Hub dan kapan. Nilai yang mungkin adalah:
    • "end": mendorong model, konfigurasinya, processing_class (misalnya tokenizer, jika diteruskan ke Trainer) dan draf model card ketika metode save_model() dipanggil.
    • "every_save": mendorong model, konfigurasinya, processing_class (misalnya tokenizer, jika diteruskan ke Trainer) dan draf model card setiap kali ada penyimpanan model. Proses dorong bersifat asinkron agar tidak memblokir pelatihan, dan jika penyimpanan sangat sering, dorong baru hanya dicoba jika yang sebelumnya sudah selesai. Dorong terakhir dilakukan dengan model final di akhir pelatihan.
    • "checkpoint": seperti "every_save" tetapi checkpoint terbaru juga didorong ke subfolder bernama last-checkpoint, memungkinkan Anda melanjutkan pelatihan dengan mudah menggunakan trainer.train(resume_from_checkpoint="last-checkpoint").
    • "all_checkpoints": seperti "checkpoint" tetapi semua checkpoint didorong sesuai urutan kemunculannya di folder output (sehingga Anda akan mendapatkan satu folder checkpoint per folder di repositori akhir Anda)
  • token (str, opsional) — Token yang digunakan untuk mendorong model ke Hub. Secara default akan menggunakan token di folder cache yang diperoleh dengan hf auth login.
  • private_repo (bool, opsional, default False) — Apakah membuat repo menjadi privat. Jika None (default), repo akan menjadi publik kecuali default organisasi adalah privat. Nilai ini diabaikan jika repo sudah ada.
  • always_push (bool, opsional, default False) — Kecuali ini True, Trainer akan melewatkan pendorongan checkpoint jika pendorongan sebelumnya belum selesai.
  • revision (str, opsional) — Revisi yang akan digunakan saat mendorong ke Hub. Bisa berupa nama cabang, tag, atau hash commit.

Metode yang mengelompokkan kembali semua argumen yang terkait dengan sinkronisasi checkpoint dengan Hub.

Memanggil metode ini akan mengatur self.push_to_hub menjadi True, yang berarti output_dir akan memulai direktori git yang disinkronkan dengan repo (ditentukan oleh model_id) dan kontennya akan didorong setiap kali penyimpanan dipicu (tergantung pada self.save_strategy Anda). Memanggil save_model() juga akan memicu pendorongan.

Contoh:

>>> 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 )

Parameter

  • strategy (str atau IntervalStrategy, opsional, default ke "steps") — Strategi penyimpanan checkpoint yang diadopsi selama pelatihan. Nilai yang mungkin adalah:
    • "no": Tidak ada penyimpanan yang dilakukan selama pelatihan.
    • "epoch": Penyimpanan dilakukan di akhir setiap epoch.
    • "steps": Penyimpanan dilakukan setiap save_steps.
  • steps (int, opsional, default 500) — Jumlah langkah pembaruan sebelum dua penyimpanan checkpoint jika strategy="steps".
  • total_limit (int, opsional) — Jika nilai diberikan, akan membatasi jumlah total checkpoint. Menghapus checkpoint yang lebih lama di output_dir.
  • on_each_node (bool, opsional, defaultnya False) — Saat melakukan pelatihan terdistribusi multi-node, apakah model dan checkpoint disimpan di setiap node, atau hanya di node utama.

    Ini tidak boleh diaktifkan ketika node yang berbeda menggunakan penyimpanan yang sama, karena file akan disimpan dengan nama yang sama untuk setiap node.

Metode yang mengelompokkan kembali semua argumen yang terkait dengan penyimpanan checkpoint.

Contoh:

>>> 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 )

Parameter

  • batch_size (int opsional, defaultnya 8) — Ukuran batch per perangkat (GPU/TPU core/CPU…) yang digunakan untuk pengujian.
  • loss_only (bool, opsional, defaultnya False) — Mengabaikan semua output kecuali loss.

Metode yang mengelompokkan kembali semua argumen dasar yang terkait dengan pengujian pada dataset yang dipegang.

Memanggil metode ini akan secara otomatis mengatur self.do_predict menjadi True.

Contoh:

>>> 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 )

Parameter

  • learning_rate (float, opsional, default 5e-5) — Learning rate awal untuk optimizer.
  • batch_size (int opsional, defaultnya 8) — Ukuran batch per perangkat (GPU/TPU core/CPU…) yang digunakan untuk pelatihan.
  • weight_decay (float, opsional, default 0) — Nilai weight decay yang diterapkan (jika tidak nol) ke semua lapisan, kecuali semua bobot bias dan LayerNorm, pada optimizer.
  • num_epochs (float, opsional, default 3.0) — Total jumlah epoch pelatihan yang akan dilakukan (jika bukan bilangan bulat, akan melakukan bagian desimalnya sebagai persentase dari epoch terakhir sebelum menghentikan pelatihan).
  • max_steps (int, opsional, default -1) — Jika diatur ke angka positif, jumlah total langkah pelatihan yang akan dilakukan. Mengesampingkan num_train_epochs. Untuk dataset berhingga, pelatihan diulang melalui dataset (jika semua data habis) hingga max_steps tercapai. Nilai ini harus diatur ke angka positif ketika dataset pelatihan tidak mengimplementasikan __len__ (misalnya dataset streaming), karena jumlah total langkah tidak dapat diturunkan dan diperlukan untuk membatasi loop pelatihan serta mengonfigurasi penjadwal laju pembelajaran.
  • gradient_accumulation_steps (int, opsional, default 1) — Jumlah langkah update untuk mengakumulasi gradien sebelum melakukan langkah backward/update.

    Saat menggunakan akumulasi gradien, satu langkah dihitung sebagai satu langkah dengan jalur mundur. Oleh karena itu, pencatatan, evaluasi, dan penyimpanan akan dilakukan setiap gradient_accumulation_steps * xxx_step contoh pelatihan.

  • seed (int, opsional, default 42) — Seed acak yang akan diset di awal pelatihan. Untuk memastikan reproduktibilitas antar eksekusi, gunakan fungsi ~Trainer.model_init untuk menginstansiasi model jika model tersebut memiliki beberapa parameter yang diinisialisasi secara acak.
  • activation_checkpointing (bool, opsional, default False) — Jika True, gunakan activation checkpointing untuk menghemat memori dengan mengorbankan kecepatan backward pass.
  • gradient_checkpointing (bool, opsional) — Alias yang tidak lagi didukung dari activation_checkpointing, akan dihapus di v6.

Metode yang mengelompokkan kembali semua argumen dasar yang terkait dengan pelatihan.

Memanggil metode ini akan secara otomatis mengatur self.do_train menjadi True.

Contoh:

>>> 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

< >

( )

Menserialisasi instance ini dengan mengganti Enum dengan nilai-nilainya (untuk mendukung serialisasi JSON). Hal ini mengaburkan nilai token dengan menghapus nilainya.

to_json_string

< >

( )

Menserialisasi instance ini ke string JSON.

to_sanitized_dict

< >

( )

Serialisasi yang telah disanitasi untuk digunakan dengan hparams TensorBoard

Seq2SeqTrainingArguments

kelas 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 = <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 )

Parameter

  • output_dir (str, opsional, default "trainer_output") — Direktori output tempat prediksi model dan checkpoint akan ditulis.

Durasi Pelatihan dan Ukuran Batch

  • per_device_train_batch_size (int, opsional, default 8) — Ukuran batch per perangkat. Ukuran batch global dihitung sebagai: per_device_train_batch_size * number_of_devices pada setup multi-GPU atau terdistribusi.
  • num_train_epochs(float, opsional, default 3.0) — Total jumlah epoch pelatihan yang akan dilakukan (jika bukan bilangan bulat, akan melakukan bagian desimalnya sebagai persentase dari epoch terakhir sebelum menghentikan pelatihan).
  • max_steps (int, opsional, default -1) — Menimpa num_train_epochs. Jika diatur ke angka positif, ini adalah total jumlah langkah pelatihan yang akan dilakukan. Untuk dataset berhingga, pelatihan diulang melalui dataset (jika semua data habis) sampai max_steps tercapai. Nilai ini harus diatur ke angka positif ketika dataset pelatihan tidak mengimplementasikan __len__ (misalnya dataset streaming), karena total jumlah langkah tidak dapat disimpulkan dan diperlukan untuk membatasi loop pelatihan serta mengonfigurasi penjadwal laju pembelajaran.

Learning Rate & Scheduler

  • learning_rate (float, opsional, default 5e-5) — Learning rate awal untuk optimizer. Ini biasanya merupakan learning rate puncak saat menggunakan scheduler dengan warmup.
  • lr_scheduler_type (str atau SchedulerType, opsional, default ke "linear") — Jenis learning rate scheduler yang akan digunakan. Lihat SchedulerType untuk semua nilai yang mungkin. Pilihan umum:
  • lr_scheduler_kwargs (dict atau str, opsional, defaultnya None) — Argumen tambahan untuk lr_scheduler. Lihat dokumentasi masing-masing scheduler untuk nilai yang mungkin.
  • warmup_steps (int atau float, opsional, default 0) — Jumlah langkah untuk warmup linear dari 0 ke learning_rate. Warmup membantu menstabilkan pelatihan pada fase awal. Bisa berupa:
    • Bilangan bulat: jumlah langkah pemanasan yang tepat
    • Float dalam rentang [0, 1): diinterpretasikan sebagai rasio dari total langkah pelatihan

Optimizer

  • optim (str atau training_args.OptimizerNames, opsional, default ke "adamw_torch" (untuk torch>=2.8 "adamw_torch_fused")) — Optimizer yang akan digunakan. Opsi umum:
    • "adamw_torch": AdamW dari PyTorch (default yang direkomendasikan)
    • "adamw_torch_fused": Kernel AdamW yang terpadu
    • "adamw_hf": Implementasi AdamW dari HuggingFace
    • "sgd": Stochastic Gradient Descent dengan momentum
    • "adafactor": Optimizer hemat memori untuk model besar
    • "adamw_8bit": AdamW 8-bit (memerlukan bitsandbytes) Lihat OptimizerNames untuk daftar lengkap.
  • optim_args (str, opsional) — Argumen opsional yang diberikan ke optimizer seperti AnyPrecisionAdamW, AdEMAMix, dan GaLore.
  • weight_decay (float, opsional, default 0) — Koefisien weight decay yang diterapkan oleh optimizer (bukan fungsi loss). Menambahkan regularisasi L2 untuk mencegah overfitting dengan menghukum bobot yang besar. Secara otomatis dikecualikan dari parameter bias dan LayerNorm. Nilai tipikal: 0.01 (standar), 0.1 (regularisasi lebih kuat), 0.0 (tanpa regularisasi).
  • adam_beta1 (float, opsional, default 0.9) — Laju peluruhan eksponensial untuk estimasi momen pertama (momentum) pada optimizer berbasis Adam. Mengontrol seberapa banyak riwayat gradien yang dipertahankan.
  • adam_beta2 (float, opsional, default 0.999) — Laju peluruhan eksponensial untuk estimasi momen kedua (varians) pada optimizer berbasis Adam. Mengontrol penskalaan laju pembelajaran adaptif.
  • adam_epsilon (float, opsional, default 1e-8) — Nilai epsilon untuk stabilitas numerik pada optimizer berbasis Adam. Mencegah pembagian dengan nol pada penyebut aturan pembaruan.
  • optim_target_modules (Union[str, list[str]], opsional) — Modul target yang akan dioptimalkan, yaitu nama modul yang ingin Anda latih. Saat ini digunakan untuk algoritma GaLore dan algoritma APOLLO. Lihat implementasi GaLore dan implementasi APOLLO untuk detail lebih lanjut. Anda perlu memastikan untuk meneruskan optimizer GaLore atau APOLLO yang valid, misalnya salah satu dari: “apollo_adamw”, “galore_adamw”, “galore_adamw_8bit”, “galore_adafactor” dan pastikan bahwa modul target hanya berupa modul nn.Linear.

Regularisasi & Stabilitas Pelatihan

  • gradient_accumulation_steps (int, opsional, default 1) — Jumlah langkah pembaruan untuk mengakumulasi gradien sebelum melakukan langkah backward/update. Meniru ukuran batch yang lebih besar tanpa memori tambahan. Ukuran batch efektif = per_device_train_batch_size × num_devices × gradient_accumulation_steps.

    Saat menggunakan akumulasi gradien, satu “langkah” dihitung sebagai satu langkah dengan jalur mundur. Oleh karena itu, pencatatan, evaluasi, dan penyimpanan akan terjadi setiap gradient_accumulation_steps × xxx_step contoh pelatihan.

  • average_tokens_across_devices (bool, opsional, default True) — Apakah akan merata-ratakan token di antara perangkat. Jika diaktifkan, akan menggunakan all_reduce untuk menyinkronkan num_tokens_in_batch untuk perhitungan loss yang presisi. Referensi: https://github.com/huggingface/transformers/issues/34242
  • max_grad_norm (float, opsional, default 1.0) — Norm maksimum gradien untuk pemotongan gradien. Diterapkan setelah langkah mundur (backward pass), sebelum langkah optimizer. Mencegah ledakan gradien dengan memperkecil gradien ketika norm globalnya melebihi ambang batas ini. Atur ke 0 untuk menonaktifkan pemotongan. Nilai tipikal: 1.0 (standar), 0.5 (lebih konservatif), 5.0 (kurang agresif).
  • label_smoothing_factor (float, opsional, default 0.0) — Faktor label smoothing untuk mencegah overconfidence. Mengganti target keras 0/1 dengan target lunak: 0 menjadi ε/num_labels dan 1 menjadi 1 - ε + ε/num_labels, di mana ε = label_smoothing_factor. Nol berarti tidak ada smoothing. Rentang tipikal: 0.0 hingga 0.1.

Pelatihan Presisi Campuran

  • bf16 (bool, opsional, default False) — Aktifkan pelatihan presisi campuran bfloat16 (BF16) Umumnya lebih disarankan daripada FP16 karena stabilitas numerik yang lebih baik dan tidak memerlukan loss scaling.
  • fp16 (bool, opsional, default False) — Aktifkan pelatihan presisi campuran float16 (FP16). Pertimbangkan untuk menggunakan BF16 sebagai gantinya jika perangkat keras Anda mendukungnya.
  • bf16_full_eval (bool, opsional, default False) — Gunakan presisi BF16 penuh untuk evaluasi (bukan hanya presisi campuran). Lebih cepat dan menghemat memori, tetapi dapat memengaruhi nilai metrik sedikit. Hanya berlaku selama evaluasi.
  • fp16_full_eval (bool, opsional, default False) — Gunakan presisi FP16 penuh untuk evaluasi (bukan hanya mixed precision). Lebih cepat dan menghemat memori, tetapi dapat memengaruhi nilai metrik sedikit. Hanya berlaku selama evaluasi.
  • tf32 (bool, opsional) — Aktifkan mode TensorFloat-32 (TF32) pada GPU Ampere dan yang lebih baru. TF32 menggunakan presisi 19-bit untuk perkalian matriks (bukan 23-bit FP32), memberikan percepatan hingga 8x dengan kehilangan akurasi yang dapat diabaikan. Nilai default bergantung pada versi PyTorch. Lihat dokumentasi TF32.

Activation Checkpointing

  • activation_checkpointing (bool, opsional, default False) — Aktifkan activation checkpointing untuk menukar komputasi dengan memori. Mengurangi penggunaan memori dengan membersihkan aktivasi selama forward pass dan menghitungnya ulang selama backward pass. Memungkinkan pelatihan model atau ukuran batch yang lebih besar dengan biaya pelatihan yang lebih lambat sekitar 20%.
  • activation_checkpointing_kwargs (dict, opsional, defaultnya None) — Argumen kata kunci yang diteruskan ke activation_checkpointing_enable(). every_n_layers hanya melakukan checkpoint setiap n-th lapisan decoder, bukan semuanya; 1 adalah perilaku all-or-nothing yang umum, dan nilai yang lebih besar mengembalikan sebagian memori untuk kecepatan. offload menyimpan aktivasi yang disimpan di memori host yang di-pin, yang membebaskan layers x sequence x hidden byte memori perangkat dan membuat langkah menjadi lebih lambat. Kunci lain apa pun diteruskan ke torch.utils.checkpoint.checkpoint.
  • gradient_checkpointing (bool, opsional) — Alias yang tidak lagi didukung dari activation_checkpointing, akan dihapus di v6.
  • gradient_checkpointing_kwargs (dict, opsional) — Alias yang tidak lagi didukung dari activation_checkpointing_kwargs, akan dihapus di v6.

Kompilasi

  • torch_compile (bool, opsional, default False) — Kompilasi model menggunakan torch.compile() dari PyTorch 2.0 untuk pelatihan yang lebih cepat. Dapat memberikan peningkatan kecepatan 20-50% tanpa perubahan kode. Menggunakan pengaturan kompilasi default kecuali torch_compile_backend atau torch_compile_mode ditentukan.
  • torch_compile_backend (str, opsional) — Backend untuk torch.compile(). Jika diatur, secara otomatis mengaktifkan torch_compile. Opsi termasuk "inductor" (default), "aot_eager", "cudagraphs". Backend bervariasi tergantung versi PyTorch - lihat dokumentasi PyTorch untuk opsi yang tersedia.
  • torch_compile_mode (str, opsional) — Mode kompilasi untuk torch.compile(). Jika diatur, secara otomatis mengaktifkan torch_compile. Opsi: "default", "reduce-overhead" (meminimalkan overhead Python), "max-autotune" (optimalisasi agresif, waktu kompilasi lebih lambat).

Kernels

  • use_liger_kernel (bool, opsional, default False) — Aktifkan optimasi Liger Kernel. Meningkatkan throughput multi-GPU sekitar 20% dan mengurangi penggunaan memori sekitar 60%. Berfungsi dengan Flash Attention, FSDP, dan DeepSpeed. Saat ini mendukung model Llama, Mistral, Mixtral, dan Gemma.
  • liger_kernel_config (Optional[dict], opsional) — Konfigurasi untuk Liger Kernel. Diteruskan sebagai kwargs ke _apply_liger_kernel_to_instance(). Opsi yang biasanya termasuk: "rope", "swiglu", "cross_entropy", "fused_linear_cross_entropy", "rms_norm". Jika None, menggunakan konfigurasi default.

Optimasi Tambahan

  • use_cache (bool, opsional, default False) — Apakah cache untuk model akan diaktifkan atau tidak. Untuk pelatihan, ini biasanya tidak diperlukan kecuali untuk beberapa metode PEFT yang menggunakan past_key_values.
  • neftune_noise_alpha (Optional[float]) — Jika bukan None, ini akan mengaktifkan noise embeddings NEFTune. Hal ini dapat secara drastis meningkatkan kinerja model untuk fine-tuning instruksi. Lihat paper aslinya dan kode aslinya. Mendukung PreTrainedModel dari transformers dan juga PeftModel dari peft. Paper aslinya menggunakan nilai dalam rentang [5.0, 15.0].
  • torch_empty_cache_steps (int, opsional) — Jumlah langkah yang harus ditunggu sebelum memanggil torch.<device>.empty_cache(). Jika tidak disetel atau disetel ke None, cache tidak akan dikosongkan. Hal ini dapat membantu menghindari error CUDA out-of-memory dengan menurunkan penggunaan VRAM puncak, dengan biaya sekitar penurunan performa 10%.
  • auto_find_batch_size (bool, opsional, default False) — Apakah akan menemukan ukuran batch pelatihan yang muat di memori secara otomatis melalui peluruhan eksponensial, menghindari error CUDA Out-of-Memory. Ukuran batch evaluasi tidak disesuaikan.

Logging & Monitoring Pelatihan

  • logging_strategy (str atau IntervalStrategy, opsional, default ke "steps") — Strategi logging yang diadopsi selama pelatihan. Nilai yang mungkin adalah:
    • "no": Tidak ada pencatatan log yang dilakukan selama pelatihan.
    • "epoch": Pencatatan dilakukan di akhir setiap epoch.
    • "steps": Pencatatan dilakukan setiap logging_steps.
  • logging_steps (int atau float, opsional, default 500) — Jumlah langkah pembaruan di antara dua log jika logging_strategy="steps". Harus berupa bilangan bulat atau desimal dalam rentang [0,1). Jika lebih kecil dari 1, akan diinterpretasikan sebagai rasio dari total langkah pelatihan.
  • logging_first_step (bool, opsional, defaultnya False) — Apakah akan mencatat global_step pertama atau tidak.
  • log_on_each_node (bool, opsional, default True) — Dalam pelatihan terdistribusi multinode, apakah akan mencatat menggunakan log_level sekali per node, atau hanya pada node utama.
  • logging_nan_inf_filter (bool, opsional, default True) — Saring kerugian NaN dan Inf saat pencatatan. Jika True, mengganti kerugian pelatihan NaN/Inf dengan rata-rata kerugian valid terbaru, dan mengecualikan batch NaN/Inf (misalnya batch tanpa token label) dari kerugian evaluasi. Tidak memengaruhi komputasi gradien, hanya pencatatan.
  • include_num_input_tokens_seen (Optional[Union[str, bool]], opsional, default “no”) — Apakah akan melacak jumlah token input yang dilihat. Harus salah satu dari [“all”, “non_padding”, “no”] atau nilai boolean yang dipetakan ke “all” atau “no”. Dapat lebih lambat dalam pelatihan terdistribusi karena operasi gather harus dipanggil.

Logging

  • log_level (str, opsional, defaultnya passive) — Tingkat log untuk proses utama. Opsi: "debug", "info", "warning", "error", "critical", atau "passive" (tidak mengubah tingkat log Transformers saat ini, yang defaultnya "warning")
  • log_level_replica (str, opsional, defaultnya "warning") — Tingkat log untuk proses replika dalam pelatihan terdistribusi. Opsi yang sama dengan log_level.
  • disable_tqdm (bool, opsional) — Nonaktifkan bilah progres tqdm. Nilainya secara default True jika log_level adalah warning atau lebih rendah, False selain itu.

Integrasi Pelacakan Eksperimen

  • report_to (str atau list[str], opsional, defaultnya "none") — Daftar integrasi untuk melaporkan hasil dan log. Platform yang didukung adalah "azure_ml", "clearml", "codecarbon", "comet_ml", "dagshub", "dvclive", "flyte", "mlflow", "swanlab", "tensorboard", "trackio" dan "wandb". Gunakan "all" untuk melaporkan ke semua integrasi yang terpasang, "none" untuk tanpa integrasi.
  • run_name (str, opsional) — Deskriptor untuk run. Biasanya digunakan untuk logging trackio, wandb, mlflow, comet dan swanlab.
  • project (str, opsional, defaultnya "huggingface") — Nama proyek yang akan digunakan untuk logging. Saat ini, hanya digunakan oleh Trackio.
  • trackio_space_id (str atau None, opsional, default None) — ID Hugging Face Space yang akan digunakan untuk logging Trackio secara langsung dengan Space berbasis Gradio. Harus berupa nama Space lengkap seperti 'username/reponame' atau 'orgname/reponame', atau hanya 'reponame' (Space akan dibuat di namespace pengguna yang sedang login). Jika None, metrik hanya dicatat ke direktori lokal (tanpa Space di Hub). Gradio Space tersebut memiliki akses baca dan tulis ke Bucket Trackio, yang memang diinginkan saat pelatihan masih berlangsung—misalnya saat melanjutkan run yang belum selesai atau mengagregasi log dari beberapa mesin. Space akan bersifat publik kecuali Anda mengatur hub_private_repo=True atau default organisasi Anda adalah membuat Space privat.
  • trackio_bucket_id (str atau None, opsional, default None) — ID Bucket Hugging Face opsional untuk Trackio. Jika tidak diset, Trackio akan menurunkannya. Digunakan bersama dengan Gradio Space (trackio_space_id) dan saat mendeploy Space statis (trackio_static_space_id bukan False).
  • trackio_static_space_id (str, False, atau None, opsional, defaultnya None) — ID Hugging Face Space yang akan digunakan untuk static Space yang dibuat setelah pelatihan selesai. Harus berupa nama Space lengkap seperti 'username/reponame' atau 'orgname/reponame', atau hanya 'reponame' (Space akan dibuat di namespace pengguna yang sedang login). Jika False, tidak akan ada static Space yang dibuat. Jika None, dan model didorong ke Hub, sebuah static Space akan dibuat dengan nama default dan ini akan ditautkan dari model card. Space akan bersifat publik kecuali Anda mengatur hub_private_repo=True atau default organisasi Anda adalah membuat Space privat.

Evaluasi

  • eval_strategy (str atau IntervalStrategy, opsional, default ke "no") — Kapan menjalankan evaluasi. Opsi:
    • "no": Tidak ada evaluasi selama pelatihan
    • "steps": Evaluasi setiap eval_steps
    • "epoch": Evaluasi di akhir setiap epoch
  • eval_steps (int atau float, opsional) — Jumlah langkah pembaruan di antara dua evaluasi jika eval_strategy="steps". Akan secara default menggunakan nilai yang sama dengan logging_steps jika tidak diatur. Harus berupa bilangan bulat atau desimal dalam rentang [0,1). Jika lebih kecil dari 1, akan diinterpretasikan sebagai rasio dari total langkah pelatihan.
  • eval_delay (float, opsional) — Jumlah epoch atau langkah yang harus ditunggu sebelum evaluasi pertama dapat dilakukan, tergantung pada eval_strategy.
  • per_device_eval_batch_size (int, opsional, default 8) — Ukuran batch per inti akselerator/CPU perangkat untuk evaluasi.
  • prediction_loss_only (bool, opsional, default False) — Saat melakukan evaluasi dan menghasilkan prediksi, hanya mengembalikan loss.
  • eval_on_start (bool, opsional, defaultnya False) — Apakah akan melakukan langkah evaluasi (pemeriksaan kewajaran) sebelum pelatihan untuk memastikan langkah validasi berjalan dengan benar.
  • eval_do_concat_batches (bool, opsional, defaultnya True) — Apakah akan menggabungkan (concat) input/losses/labels/predictions secara rekursif di antara batch. Jika False, maka data tersebut akan disimpan sebagai daftar, dengan setiap batch dipertahankan terpisah.
  • eval_use_gather_object (bool, opsional, default False) — Apakah akan menjalankan pengumpulan objek secara rekursif dari daftar/tuple/dictionary bersarang berisi objek dari semua perangkat. Opsi ini hanya harus diaktifkan jika pengguna tidak hanya mengembalikan tensor, dan hal ini secara aktif tidak dianjurkan oleh PyTorch. Ini berguna ketika struktur label bersifat non-standar, seperti pada tugas computer vision.
  • eval_accumulation_steps (int, opsional) — Jumlah langkah prediksi untuk mengakumulasi tensor output, sebelum memindahkan hasilnya ke CPU. Jika tidak disetel, seluruh prediksi akan diakumulasi di akselerator perangkat sebelum dipindahkan ke CPU (lebih cepat tetapi membutuhkan lebih banyak memori).

Perhitungan Metrik

  • include_for_metrics (list[str], opsional, defaultnya []) — Sertakan data tambahan dalam compute_metrics fungsi jika diperlukan untuk perhitungan metrik. Opsi yang mungkin ditambahkan ke include_for_metrics daftar:
    • "inputs": Data input yang diteruskan ke model, yang ditujukan untuk menghitung metrik yang bergantung pada input.
    • "loss": Nilai loss yang dihitung selama evaluasi, yang ditujukan untuk menghitung metrik yang bergantung pada loss.
  • batch_eval_metrics (bool, opsional, default False) — Jika diset ke True, evaluasi akan memanggil compute_metrics di akhir setiap batch untuk mengakumulasi statistik alih-alih menyimpan semua eval logits di memori. Ketika diset ke True, Anda harus meneruskan fungsi compute_metrics yang mengambil argumen boolean compute_result, yang ketika diteruskan True, akan memicu statistik ringkasan global akhir dari statistik ringkasan tingkat batch yang telah Anda akumulasikan di sepanjang set evaluasi.

Checkpointing & Penyimpanan

  • save_only_model (bool, opsional, default False) — Simpan hanya bobot model, bukan state optimizer/scheduler/RNG. Ini secara signifikan mengurangi ukuran checkpoint tetapi mencegah pelanjutan pelatihan dari checkpoint tersebut. Gunakan ketika Anda hanya membutuhkan model yang telah dilatih untuk inferensi, bukan untuk pelatihan lanjutan. Anda hanya dapat memuat model menggunakan from_pretrained dengan opsi ini diset ke True.
  • save_strategy (str atau SaveStrategy, opsional, default ke "steps") — Strategi penyimpanan checkpoint yang diadopsi selama pelatihan. Nilai yang mungkin adalah:
    • "no": Tidak ada penyimpanan yang dilakukan selama pelatihan.
    • "epoch": Penyimpanan dilakukan di akhir setiap epoch.
    • "steps": Penyimpanan dilakukan setiap save_steps.
    • "best": Penyimpanan dilakukan setiap kali best_metric baru tercapai.
  • save_steps (int atau float, opsional, default 500) — Jumlah langkah pembaruan sebelum dua penyimpanan checkpoint jika save_strategy="steps". Harus berupa bilangan bulat atau float dalam rentang [0,1). Jika lebih kecil dari 1, akan diinterpretasikan sebagai rasio dari total langkah pelatihan.
  • save_on_each_node (bool, opsional, default False) — Saat melakukan pelatihan terdistribusi multi-node, apakah model dan checkpoint disimpan di setiap node, atau hanya di node utama. Ini tidak boleh diaktifkan jika node yang berbeda menggunakan penyimpanan yang sama, karena file akan disimpan dengan nama yang sama untuk setiap node.
  • save_total_limit (int, opsional) — Jumlah maksimum checkpoint yang disimpan. Checkpoint yang lebih lama akan dihapus dari output_dir. Ketika load_best_model_at_end=True, checkpoint terbaik selalu dipertahankan beserta yang terbaru. Misalnya, save_total_limit=5 menyimpan 4 checkpoint terbaru ditambah yang terbaik
  • enable_jit_checkpoint (bool, optional, defaults to False) — Enable Just-In-Time checkpointing on SIGTERM signal for graceful termination on preemptible workloads. Important: Configure your orchestrator’s graceful shutdown period to allow sufficient time. For Kubernetes, set terminationGracePeriodSeconds (default 30s is usually insufficient). For Slurm, use --signal=TERM@<seconds>. Required grace period ≥ longest iteration time + checkpoint save time.

Integrasi Hugging Face Hub

  • push_to_hub (bool, opsional, default False) — Apakah model akan didorong ke Hub setiap kali model disimpan. Jika diaktifkan, output_dir akan memulai direktori git yang disinkronkan dengan repo (ditentukan oleh hub_model_id) dan kontennya akan didorong setiap kali penyimpanan dipicu (tergantung pada save_strategy Anda). Memanggil save_model() juga akan memicu pendorongan.
  • hub_token (str, opsional) — Token yang digunakan untuk mendorong model ke Hub. Secara default akan menggunakan token di folder cache yang diperoleh dengan hf auth login.
  • hub_private_repo (bool, opsional) — Apakah membuat repo menjadi privat. Jika None (default), repo akan menjadi publik kecuali default organisasi adalah privat. Nilai ini diabaikan jika repo sudah ada. Jika melaporkan ke Trackio dengan deployment ke Hugging Face Spaces diaktifkan, logika yang sama menentukan apakah Space tersebut privat.
  • hub_model_id (str, opsional) — Nama repositori yang akan disinkronkan dengan output_dir lokal. Ini bisa berupa ID model sederhana, di mana model akan didorong ke namespace Anda. Jika tidak, ini harus berupa nama repositori lengkap, misalnya "user_name/model", yang memungkinkan Anda mendorong ke organisasi yang Anda ikuti dengan "organization_name/model". Secara default menjadi user_name/output_dir_name dengan output_dir_name sebagai nama dari output_dir.
  • hub_strategy (str atau HubStrategy, opsional, default ke "every_save") — Menentukan apa dan kapan yang akan di-push ke Hub. Opsi:
    • "end": Dorong hanya di akhir pelatihan
    • "every_save": Push pada setiap penyimpanan (asinkron agar tidak memblokir pelatihan)
    • "checkpoint": Seperti "every_save" plus mendorong checkpoint terbaru ke subfolder "last-checkpoint" untuk memudahkan pelanjutan
    • "all_checkpoints": Dorong semua checkpoint saat muncul
  • hub_always_push (bool, opsional, default False) — Kecuali ini True, Trainer akan melewatkan pendorongan checkpoint jika pendorongan sebelumnya belum selesai.
  • hub_revision (str, opsional) — Revisi yang akan digunakan saat mendorong ke Hub. Bisa berupa nama branch, tag, atau hash commit.

Pelacakan Model Terbaik

  • load_best_model_at_end (bool, opsional, default False) — Muat checkpoint terbaik di akhir pelatihan. Memerlukan eval_strategy untuk disetel. Ketika diaktifkan, checkpoint terbaik selalu disimpan (lihat save_total_limit). Ketika `True`, `save_strategy` harus cocok dengan `eval_strategy` (kecuali `save_strategy` adalah `"best"`), dan jika menggunakan `"steps"`, `save_steps` harus kelipatan dari `eval_steps`.
  • metric_for_best_model (str, opsional) — Metrik yang digunakan untuk membandingkan model saat load_best_model_at_end=True. Harus berupa nama metrik yang dikembalikan oleh evaluasi, dengan atau tanpa prefiks "eval_". Bawaan adalah "loss". Jika Anda mengatur ini, greater_is_better akan secara bawaan menjadi True kecuali namanya diakhiri dengan "loss". Contoh: "accuracy", "f1", "eval_bleu".
  • greater_is_better (bool, opsional) — Apakah nilai metrik yang lebih tinggi lebih baik. Nilai default berdasarkan metric_for_best_model: True jika nama metrik tidak diakhiri dengan "loss", False selain itu.

Melanjutkan Pelatihan

  • ignore_data_skip (bool, opsional, default False) — Saat melanjutkan pelatihan, lewati proses fast-forward melalui dataset untuk mencapai keadaan sebelumnya. Jika True, pelatihan dimulai dari awal dataset (pelanjutan lebih cepat tetapi hasilnya tidak akan cocok dengan pelatihan yang terputus). Jika False, data yang sudah dilihat akan dilewati (pelanjutan lebih lambat tetapi kelanjutan yang persis).
  • restore_callback_states_from_checkpoint (bool, opsional, default False) — Pulihkan status callback dari checkpoint saat melanjutkan. Jika True, callback yang diteruskan ke Trainer akan ditimpa jika callback tersebut ada di checkpoint.

Reproduktibilitas

  • full_determinism (bool, opsional, default False) — Jika True, enable_full_determinism() dipanggil alih-alih set_seed() untuk memastikan hasil yang dapat direproduksi dalam pelatihan terdistribusi. Penting: ini akan berdampak negatif pada kinerja, jadi hanya gunakan untuk debugging.
  • seed (int, opsional, default 42) — Seed acak yang akan diset di awal pelatihan. Untuk memastikan reproduktibilitas antar eksekusi, gunakan fungsi ~Trainer.model_init untuk menginstansiasi model jika model tersebut memiliki beberapa parameter yang diinisialisasi secara acak.
  • data_seed (int, opsional) — Seed acak yang akan digunakan dengan data samplers. Jika tidak diatur, generator acak untuk pengambilan sampel data akan menggunakan seed yang sama dengan seed. Hal ini dapat digunakan untuk memastikan reproduktibilitas pengambilan sampel data, terlepas dari seed model.

Konfigurasi Perangkat Keras

  • use_cpu (bool, opsional, default False) — Apakah akan menggunakan cpu. Jika diset ke False, kami akan menggunakan perangkat/backend torch yang tersedia.

Konfigurasi Accelerate

  • accelerator_config (str, dict, atau AcceleratorConfig, opsional) — Konfigurasi untuk integrasi Accelerate internal. Bisa berupa: Path ke file konfigurasi JSON: "accelerator_config.json" Dictionary dengan opsi konfigurasi Instance AcceleratorConfig Opsi utama: split_batches (bool, default False): Apakah membagi batch di antara perangkat. Jika True, ukuran batch aktual sama di semua perangkat (total harus bisa dibagi habis oleh num_processes). Jika False, setiap perangkat mendapatkan ukuran batch yang ditentukan. dispatch_batches (bool): Jika True, hanya proses utama yang mengiterasi dataloader dan mendistribusikan batch ke perangkat. Default True untuk IterableDataset, False untuk lainnya. even_batches (bool, default True): Duplikasi sampel dari awal dataset untuk memastikan semua worker mendapatkan ukuran batch yang sama. use_seedable_sampler (bool, default True): Gunakan sampler acak yang sepenuhnya dapat di-seed untuk reproduktibilitas. use_configured_state (bool, default False): Gunakan AcceleratorState/PartialState yang sudah diinisialisasi sebelumnya alih-alih membuat yang baru. Mungkin menyebabkan masalah dengan penyetelan hiperparameter.
    • Path ke file konfigurasi JSON: "accelerator_config.json"
    • Dictionary dengan opsi konfigurasi
    • Instans AcceleratorConfig Opsi utama:
    • split_batches (bool, defaultnya False): Apakah batch akan dipecah di antara perangkat. Jika True, ukuran batch aktual sama di semua perangkat (total harus habis dibagi num_processes). Jika False, setiap perangkat mendapatkan ukuran batch yang ditentukan.
    • dispatch_batches (bool): Jika True, hanya proses utama yang mengiterasi dataloader dan mendistribusikan batch ke perangkat. Defaultnya adalah True untuk IterableDataset, False untuk kasus lainnya.
    • even_batches (bool, defaultnya True): Duplikat sampel dari awal dataset untuk memastikan semua worker mendapatkan ukuran batch yang sama.
    • use_seedable_sampler (bool, defaultnya True): Gunakan sampler acak yang sepenuhnya dapat di-seed untuk reproduktibilitas.
    • use_configured_state (bool, default False): Gunakan AcceleratorState/PartialState yang sudah diinisialisasi sebelumnya alih-alih membuat yang baru. Hal ini dapat menyebabkan masalah dengan penyetelan hiperparameter.
  • parallelism_config (ParallelismConfig, opsional) — Konfigurasi paralelisme untuk sesi pelatihan. Memerlukan Accelerate 1.10.1

Dataloader

  • dataloader_drop_last (bool, opsional, default False) — Apakah akan membuang batch terakhir yang tidak lengkap (jika panjang dataset tidak habis dibagi ukuran batch) atau tidak.
  • dataloader_num_workers (int, opsional, default 0) — Jumlah subprocess yang digunakan untuk memuat data (hanya PyTorch). 0 berarti data akan dimuat di proses utama.
  • dataloader_pin_memory (bool, opsional, defaultnya True) — Apakah Anda ingin mengunci memori di data loader atau tidak. Akan default ke True.
  • dataloader_persistent_workers (bool, opsional, defaultnya False) — Jika True, data loader tidak akan mematikan proses worker setelah dataset dikonsumsi sekali. Hal ini memungkinkan untuk mempertahankan instance Dataset worker tetap aktif. Potensinya dapat mempercepat pelatihan, tetapi akan meningkatkan penggunaan RAM. Defaultnya akan menjadi False.
  • dataloader_prefetch_factor (int, opsional) — Jumlah batch yang dimuat di muka oleh setiap worker. 2 berarti akan ada total 2 * num_workers batch yang diprefetch di seluruh worker.
  • dataloader_multiprocessing_context (str, opsional) — Metode start multiprocessing yang digunakan untuk worker pemuatan data ("fork", "spawn", atau "forkserver"). Secara default menggunakan metode start default PyTorch, kecuali pada MPS dengan dataloader_num_workers > 1, di mana defaultnya adalah "fork". Gunakan "spawn" saat streaming dari sumber yang objeknya tidak aman untuk fork (mis. HDFS via pyarrow). Di bawah "spawn", kode collate_fn atau dataset kustom apa pun harus dapat diimpor pada level modul (tanpa lambda/closure).
  • dataloader_in_order (bool, opsional, default True) — Jika True, data loader menghasilkan batch sesuai urutan worker yang dikirim. Atur ke False untuk menghasilkan batch segera setelah siap, yang dapat mengurangi latensi ekor untuk workload streaming IterableDataset. Memerlukan PyTorch >= 2.6.
  • remove_unused_columns (bool, opsional, default True) — Apakah kolom yang tidak digunakan oleh metode forward model akan dihapus secara otomatis.
  • label_names (list[str], opsional) — Daftar kunci dalam kamus input Anda yang sesuai dengan label. Akhirnya akan secara default menjadi daftar nama argumen yang diterima oleh model yang mengandung kata “label”, kecuali jika model yang digunakan adalah salah satu dari XxxForQuestionAnswering, di mana dalam hal itu juga akan menyertakan kunci ["start_positions", "end_positions"]. Anda hanya perlu menentukan label_names jika Anda menggunakan nama label kustom atau jika forward model Anda mengonsumsi beberapa tensor label (misalnya, extractive QA).
  • train_sampling_strategy (str, opsional, defaultnya "random") — Sampler yang digunakan untuk training dataloader. Nilai yang mungkin adalah:
    • "random": Menggunakan RandomSampler (default).
    • "sequential": Menggunakan SequentialSampler.
    • "group_by_length": Menggunakan LengthGroupedSampler untuk mengelompokkan sampel dengan panjang yang kurang lebih sama bersama-sama (untuk meminimalkan padding dan menjadi lebih efisien).
    • "batch_rebalance": Menggunakan BatchRebalanceSampler untuk menyeimbangkan biaya token bantalan antar perangkat dan langkah akumulasi gradien di dalam setiap batch efektif, mengurangi pemborosan bantalan dan memori puncak dibandingkan "group_by_length". Saat ini hanya didukung untuk pelatihan data-parallel (tensor parallelism belum didukung).

    Catatan: Saat menggunakan IterableDataset, argumen ini diabaikan.

  • length_column_name (str, opsional, defaultnya "length") — Nama kolom untuk panjang yang sudah dihitung sebelumnya. Jika kolom ini ada, pengelompokan berdasarkan panjang akan menggunakan nilai-nilai ini alih-alih menghitungnya saat peluncuran pelatihan. Diabaikan kecuali train_sampling_strategy adalah "group_by_length" atau "batch_rebalance" dan dataset adalah instance dari Dataset.

DDP (DistributedDataParallel)

  • ddp_find_unused_parameters (bool, opsional) — Saat menggunakan pelatihan terdistribusi, nilai flag find_unused_parameters yang diteruskan ke DistributedDataParallel. Akan menjadi False jika gradient checkpointing digunakan, True selain itu.
  • ddp_bucket_cap_mb (int, opsional) — Saat menggunakan pelatihan terdistribusi, nilai flag bucket_cap_mb yang diteruskan ke DistributedDataParallel.
  • ddp_broadcast_buffers (bool, opsional) — Saat menggunakan pelatihan terdistribusi, nilai flag broadcast_buffers yang diteruskan ke DistributedDataParallel. Akan menjadi False jika gradient checkpointing digunakan, True selain itu.
  • ddp_static_graph (bool, opsional) — Saat menggunakan pelatihan terdistribusi, nilai flag static_graph yang diteruskan ke DistributedDataParallel.
  • ddp_backend (str, opsional) — Backend yang digunakan untuk pelatihan terdistribusi. Harus salah satu dari "nccl", "mpi", "xccl", "gloo", "hccl".
  • ddp_timeout (int, opsional, default 1800) — Timeout untuk panggilan torch.distributed.init_process_group, digunakan untuk menghindari timeout socket GPU saat melakukan operasi lambat dalam eksekusi terdistribusi. Silakan lihat dokumentasi PyTorch untuk informasi lebih lanjut.

FSDP (Fully Sharded Data Parallel)

  • fsdp (bool, opsional, default None) — Aktifkan PyTorch Fully Sharded Data Parallel (FSDP) untuk pelatihan terdistribusi. Berikan True untuk mengaktifkan FSDP.
  • fsdp_config (str atau dict, opsional) — Pengaturan konfigurasi untuk saat fsdp diaktifkan. Berikan path ke file konfigurasi JSON, seperti fsdp_config.json, atau dict yang sudah dimuat.

    Kunci yang didukung:

    • versi (int, opsional, default 2): Versi FSDP yang akan digunakan (2 untuk FSDP2, 1 untuk FSDP1 legacy).
    • reshard_after_forward (bool, opsional, default True): Apakah akan melakukan resharding parameter setelah forward pass. Atur ke False untuk mempertahankan parameter dalam keadaan terkumpul (gathered) antara forward dan backward pass, menghindari re-all-gather, dan menggunakan memori puncak yang lebih tinggi.
    • cpu_offload (bool, opsional, default False): Offload parameter dan gradien ke CPU saat tidak digunakan untuk menghemat memori GPU.
    • activation_checkpointing (bool, opsional, default False): Atur ke True untuk mengurangi memori dengan menghitung ulang aktivasi selama backward pass. Saat menggunakan FSDP, lebih disarankan menggunakan ini daripada argumen pelatihan activation_checkpointing, yang memperkenalkan all-gather yang redundan dalam backward pass.
    • cpu_ram_efficient_loading (bool, opsional, default False): Atur ke True untuk memuat checkpoint pretrained hanya pada proses pertama. Proses lain dimulai dengan bobot kosong dan menerima bobot melalui broadcast.
    • state_dict_type (str, opsional, default "FULL_STATE_DICT"): Format checkpoint: "FULL_STATE_DICT" (satu file yang kompatibel dengan HF) atau "SHARDED_STATE_DICT" (satu file per rank, lebih cepat untuk model besar).
    • auto_wrap_policy (str, opsional, default "TRANSFORMER_BASED_WRAP"): Kebijakan auto-wrap yang akan digunakan. Pilih "TRANSFORMER_BASED_WRAP", "SIZE_BASED_WRAP", atau "NO_WRAP".
    • transformer_layer_cls_to_wrap (list[str], opsional): Nama kelas layer Transformer (peka huruf besar/kecil) yang akan dibungkus, misalnya LlamaDecoderLayer. Biasanya tidak diperlukan: kebijakan pembungkusan akan kembali ke _no_split_modules model, yang mencakup sebagian besar model transformers.
    • min_num_params (int, opsional, default 0): Jumlah minimum parameter per modul untuk auto-wrapping berbasis ukuran (digunakan dengan auto_wrap_policy="SIZE_BASED_WRAP").
    • xla (bool, opsional, default False): Apakah akan menggunakan PyTorch/XLA Fully Sharded Data Parallel Training. Eksperimental.
    • xla_fsdp_settings (dict, opsional): Kamus parameter pembungkus XLA FSDP. Untuk daftar lengkap opsi, lihat sumber kode XLA FSDP.
    • xla_fsdp_grad_ckpt (bool, opsional, default False): Atur ke True untuk menggunakan gradient checkpointing pada setiap lapisan XLA FSDP yang dibungkus secara bersarang. Memerlukan xla=True dan kebijakan auto-wrapping (min_num_params atau transformer_layer_cls_to_wrap).

DeepSpeed

  • deepspeed (str or dict, opsional) — Aktifkan DeepSpeed integrasi. Nilainya adalah salah satu dari:
    • Path ke file konfigurasi JSON DeepSpeed: "ds_config.json"
    • Konfigurasi dimuat sebagai kamus

      Jika menggunakan inisialisasi ZeRO, instansiasi model Anda setelah menginisialisasi TrainingArguments, jika tidak ZeRO tidak akan diterapkan.

Debugging & Profiling (Eksperimental)

  • debug (str atau daftar DebugOption, opsional, default ke "") — Aktifkan satu atau beberapa fitur debug. Ini adalah fitur eksperimental. Opsi yang tersedia adalah:
    • “underflow_overflow”: mendeteksi overflow pada input/output model dan melaporkan frame terakhir yang menyebabkan kejadian tersebut
    • “tpu_metrics_debug”: cetak metrik debug pada TPU
  • skip_memory_metrics (bool, opsional, defaultnya True) — Apakah akan melewati penambahan laporan profiler memori ke metrik. Ini dilewati secara default karena memperlambat kecepatan pelatihan dan evaluasi.

Flag Skrip Eksternal (tidak digunakan oleh Trainer)

  • do_train (bool, opsional, default False) — Apakah akan menjalankan pelatihan atau tidak. Argumen ini tidak digunakan secara langsung oleh Trainer, melainkan ditujukan untuk digunakan oleh skrip pelatihan/evaluasi Anda.
  • do_eval (bool, opsional) — Apakah akan menjalankan evaluasi pada set validasi atau tidak. Akan diset ke True jika eval_strategy berbeda dari "no". Argumen ini tidak digunakan secara langsung oleh Trainer, melainkan ditujukan untuk digunakan oleh skrip pelatihan/evaluasi Anda.
  • do_predict (bool, opsional, default False) — Apakah akan menjalankan prediksi pada set pengujian atau tidak. Argumen ini tidak digunakan secara langsung oleh Trainer, melainkan ditujukan untuk digunakan oleh skrip pelatihan/evaluasi Anda.
  • resume_from_checkpoint (str, opsional) — Path ke folder berisi checkpoint yang valid untuk model Anda. Argumen ini tidak digunakan secara langsung oleh Trainer, melainkan ditujukan untuk digunakan oleh skrip pelatihan/evaluasi Anda.
  • sortish_sampler (bool, opsional, defaultnya False) — Apakah akan menggunakan sortish sampler atau tidak. Hanya mungkin jika dataset dasarnya adalah Seq2SeqDataset untuk saat ini, tetapi akan tersedia secara umum dalam waktu dekat.

    Ini mengurutkan input berdasarkan panjangnya untuk meminimalkan ukuran padding, dengan sedikit keacakan untuk set pelatihan.

  • predict_with_generate (bool, opsional, default False) — Apakah akan menggunakan generate untuk menghitung metrik generatif (ROUGE, BLEU).
  • generation_max_length (int, opsional) — max_length yang digunakan pada setiap loop evaluasi saat predict_with_generate=True. Akan secara default menggunakan nilai max_length dari konfigurasi model.
  • generation_num_beams (int, opsional) — num_beams yang digunakan pada setiap loop evaluasi saat predict_with_generate=True. Akan secara default menggunakan nilai num_beams dari konfigurasi model.
  • generation_config (str atau Path atau GenerationConfig, opsional) — Memungkinkan untuk memuat GenerationConfig dari from_pretrained metode. Ini bisa berupa: string, id model dari konfigurasi model pretrained yang dihosting di dalam repo model di huggingface.co. path ke direktori yang berisi file konfigurasi yang disimpan menggunakan metode save_pretrained(), misalnya ./my_model_directory/. objek GenerationConfig.
    • sebuah string, model id dari konfigurasi model pretrained yang dihosting di dalam repo model di huggingface.co.
    • path ke direktori yang berisi file konfigurasi yang disimpan menggunakan metode save_pretrained(), misalnya ./my_model_directory/.
    • objek GenerationConfig.

Kelas konfigurasi untuk mengendalikan semua aspek pelatihan model dengan Trainer. TrainingArguments memusatkan semua hiperparameter, pengaturan optimasi, preferensi pencatatan log, dan pilihan infrastruktur yang diperlukan untuk pelatihan.

HfArgumentParser dapat mengubah kelas ini menjadi argumen argparse yang dapat ditentukan pada baris perintah.

to_dict

< >

( )

Menserialisasi instance ini dengan mengganti Enum dengan nilai mereka dan GenerationConfig dengan kamus (untuk dukungan serialisasi JSON). Hal ini mengaburkan nilai token dengan menghapus nilainya.

Update on GitHub