Transformers documentation
Trainer
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
labelsdisediakan dan loss tersebut dikembalikan sebagai elemen pertama dari tuple (jika model Anda mengembalikan tuple)- model Anda dapat menerima beberapa argumen label (gunakan
label_namesdi TrainingArguments untuk menunjukkan nama mereka ke Trainer) tetapi tidak ada yang boleh diberi nama"label"
Trainer
kelas transformers.Trainer
< source >( model: typing.Union[transformers.modeling_utils.PreTrainedModel, torch.nn.Module, NoneType] = Noneargs: transformers.training_args.TrainingArguments | None = Nonedata_collator: collections.abc.Callable[[list[typing.Any]], dict[str, typing.Any]] | None = Nonetrain_dataset: Dataset | IterableDataset | datasets.Dataset | None = Noneeval_dataset: Dataset | dict[str, Dataset] | datasets.Dataset | None = Noneprocessing_class: transformers.tokenization_utils_base.PreTrainedTokenizerBase | transformers.image_processing_utils.BaseImageProcessor | transformers.feature_extraction_utils.FeatureExtractionMixin | transformers.processing_utils.ProcessorMixin | None = Nonemodel_init: collections.abc.Callable[..., transformers.modeling_utils.PreTrainedModel] | None = Nonecompute_loss_func: collections.abc.Callable | None = Nonecompute_metrics: collections.abc.Callable[[transformers.trainer_utils.EvalPrediction], dict] | None = Nonecallbacks: list[transformers.trainer_callback.TrainerCallback] | None = Noneoptimizers: tuple = (None, None)optimizer_cls_and_kwargs: tuple[type[torch.optim.Optimizer], dict[str, typing.Any]] | None = Nonepreprocess_logits_for_metrics: collections.abc.Callable[[torch.Tensor, torch.Tensor], torch.Tensor] | None = None )
Parameter
- model (PreTrainedModel atau
torch.nn.Module, opsional) — Model yang akan dilatih, dievaluasi, atau digunakan untuk prediksi. Jika tidak disediakan, sebuahmodel_initharus diteruskan.Trainer dioptimalkan untuk bekerja dengan PreTrainedModel yang disediakan oleh pustaka. Anda tetap dapat menggunakan model Anda sendiri yang didefinisikan sebagai
torch.nn.Moduleselama 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_diryang 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 elementrain_datasetataueval_dataset. Akan default ke default_data_collator() jika tidak adaprocessing_classyang 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 olehmodel.forward()metode akan dihapus secara otomatis.Perhatikan bahwa jika itu adalah
torch.utils.data.IterableDatasetdengan beberapa randomisasi dan Anda melatih dalam mode terdistribusi, dataset iterable Anda harus menggunakan atribut internalgeneratoryang merupakantorch.Generatoruntuk randomisasi yang harus identik di semua proses (dan Trainer akan secara manual mengatur seed darigeneratorini di setiap epoch) atau memiliki metodeset_epoch()yang secara internal mengatur seed dari RNG yang digunakan.Jika dataset tidak mengimplementasikan
__len__(misalnyaIterableDatasetyang streaming),max_stepsharus 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 metodemodel.forward()akan dihapus secara otomatis. Jika berupa kamus, evaluasi akan dilakukan pada setiap dataset dengan menambahkan kunci kamus di depan nama metrik. - processing_class (
PreTrainedTokenizerBaseatauBaseImageProcessoratauFeatureExtractionMixinatauProcessorMixin, 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 denganbatch_eval_metricsdiatur keTrue, fungsi compute_metrics Anda harus menerima argumen booleancompute_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 instanceAdamWpada model Anda dan scheduler yang diberikan oleh get_linear_schedule_with_warmup() yang dikendalikan olehargs. - 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. Menggantikanoptimdanoptim_argsdiargs. Tidak kompatibel denganoptimizersargumen.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 olehcompute_metrics.Perhatikan bahwa label (parameter kedua) akan menjadi
Nonejika 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 dalamDeepSpeeddan kemudian lagi dalamtorch.nn.DistributedDataParallel. Jika model internal belum dibungkus, makaself.model_wrappedsama denganself.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
Truekecuali model parallel, DeepSpeed, FSDP, eval fp16/bf16 penuh, atau SageMaker MP sedang aktif. Dapat ditimpa dengan membuat subclass dariTrainingArgumentsdan menimpa propertiplace_model_on_device. - is_in_train — Apakah model sedang menjalankan
train(misalnya ketikaevaluatedipanggil saat berada ditrain) - loss_is_scaled_for_ga — Apakah loss yang dikembalikan oleh
compute_losssudah diskalakan untuk akumulasi gradien.True:training_stepmenggunakannya apa adanya.False:training_stepmembaginya dengan jumlah langkah akumulasi gradien.None(default): loss dianggap sudah diskalakan jika dinormalisasi olehnum_items_in_batch, yaitu ketika model menerima loss kwargs ataucompute_loss_funcdiberikan. Subkelas yang menghitung loss mereka sendiri harus menyetelnya.
add_callback
< source >( callback: type[transformers.trainer_callback.TrainerCallback] | transformers.trainer_callback.TrainerCallback )
Parameter
- callback (
typeatau [`~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.
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.
Panggil model_init untuk mendapatkan instance model baru, secara opsional dikondisikan pada trial hiperparameter.
compute_loss
< source >( 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, defaultnyaFalse) — 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.
Wrapper pembantu untuk mengelompokkan beberapa context manager.
Buat accelerator dan lakukan setup pasca-pembuatan (FSDP, DeepSpeed, dll.).
create_model_card
< source >( language: str | None = Nonelicense: str | None = Nonetags: str | list[str] | None = Nonemodel_name: str | None = Nonefinetuned_from: str | None = Nonetasks: str | list[str] | None = Nonedataset_tags: str | list[str] | None = Nonedataset: str | list[str] | None = Nonedataset_args: str | list[str] | None = None )
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 keTrainerberasal dari repo di Hub. - tags (
strataulist[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 keTrainer(jika berasal dari Hub). - tasks (
strataulist[str], opsional) — Satu atau beberapa pengidentifikasi tugas, untuk disertakan dalam metadata kartu model. - dataset_tags (
strataulist[str], opsional) — Satu atau beberapa tag dataset, untuk disertakan dalam metadata kartu model. - dataset (
strataulist[str], opsional) — Satu atau beberapa pengidentifikasi dataset, untuk disertakan dalam metadata kartu model. - dataset_args (
strataulist[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
< source >( 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.
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
< source >( num_training_steps: intoptimizer: typing.Optional[torch.optim.Optimizer] = None ) → torch.optim.lr_scheduler.LRScheduler
Siapkan scheduler. Optimizer dari trainer harus sudah disetel sebelum metode ini dipanggil atau dilewatkan sebagai argumen.
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.
evaluate
< source >( eval_dataset: typing.Union[torch.utils.data.Dataset, dict[str, torch.utils.data.Dataset], NoneType] = Noneignore_keys: list[str] | None = Nonemetric_key_prefix: str = 'eval' )
Parameter
- eval_dataset (
Dataset| dict[str,Dataset], opsional) — Lewati dataset jika Anda ingin menimpaself.eval_dataset. Jika berupa Dataset, kolom yang tidak diterima olehmodel.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, pastikanmetric_for_best_modelmerujuk tepat pada salah satu dataset. Jika, misalnya, Anda meneruskan{"data1": data1, "data2": data2}untuk dua datasetdata1dandata2, Anda dapat menentukanmetric_for_best_model="eval_data1_loss"untuk menggunakan loss padadata1danmetric_for_best_model="eval_data2_loss"untuk loss padadata2. - 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
< source >( 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
< source >( inputs: dict ) → int
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.
Mengumpulkan sejumlah batch tertentu dari iterator epoch dan secara opsional menghitung jumlah item dalam batch untuk menskalakan loss dengan tepat.
Dapatkan ukuran paralel konteks
Dapatkan semua nama parameter yang akan diterapkan weight decay.
Fungsi ini menyaring parameter dengan dua cara:
- Berdasarkan jenis layer (instans dari layer yang ditentukan dalam ALL_LAYERNORM_LAYERS)
- Berdasarkan pola nama parameter (mengandung ‘bias’, atau variasi dari ‘norm’)
get_eval_dataloader
< source >( eval_dataset: typing.Union[str, torch.utils.data.Dataset, NoneType] = None )
Parameter
- eval_dataset (
stratautorch.utils.data.Dataset, opsional) — Jika berupastr, akan menggunakanself.eval_dataset[eval_dataset]sebagai dataset evaluasi. Jika berupaDataset, akan menimpaself.eval_dataset. Jika berupa Dataset, kolom yang tidak diterima oleh metodemodel.forward()akan dihapus secara otomatis.
Mengembalikan ~torch.utils.data.DataLoader evaluasi.
Subclass dan override metode ini jika Anda ingin menyuntikkan perilaku kustom.
Mengembalikan tingkat pembelajaran dari setiap parameter di self.optimizer.
Dapatkan jumlah parameter yang dapat dilatih.
get_optimizer_cls_and_kwargs
< source >( args: TrainingArgumentsmodel: transformers.modeling_utils.PreTrainedModel | None = None )
Mengembalikan kelas optimizer dan parameter optimizer berdasarkan argumen pelatihan.
get_optimizer_group
< source >( param: typing.Union[str, torch.nn.parameter.Parameter, NoneType] = None )
Mengembalikan grup optimizer untuk parameter jika diberikan, jika tidak mengembalikan semua grup optimizer untuk parameter.
Dapatkan ukuran paralel sekuens
get_test_dataloader
< source >( test_dataset: Dataset )
Parameter
- test_dataset (
torch.utils.data.Dataset, opsional) — Dataset pengujian yang akan digunakan. Jika berupa Dataset, kolom yang tidak diterima oleh metodemodel.forward()akan dihapus secara otomatis.
Mengembalikan ~torch.utils.data.DataLoader untuk pengujian.
Subclass dan override metode ini jika Anda ingin menyuntikkan perilaku kustom.
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
Dapatkan ukuran paralel tensor dari model atau konfigurasi DeepSpeed.
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
< source >( hp_space: collections.abc.Callable[['optuna.Trial'], dict[str, float]] | None = Nonecompute_objective: collections.abc.Callable[[dict[str, float]], float] | None = Nonen_trials: int = 20direction: str | list[str] = 'minimize'backend: str | transformers.trainer_utils.HPSearchBackend | None = Nonehp_name: collections.abc.Callable[['optuna.Trial'], str] | None = None**kwargs ) → [trainer_utils.BestRun or list[trainer_utils.BestRun]]
Parameter
- hp_space (
Callable[["optuna.Trial"], dict[str, float]], opsional) — Fungsi yang mendefinisikan ruang pencarian hiperparameter. Akan secara default menggunakandefault_hp_space_optuna()ataudefault_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 metodeevaluate. Nilai defaultnya adalahdefault_compute_objective(). - n_trials (
int, opsional, default 100) — Jumlah eksekusi uji coba untuk diuji. - direction (
strataulist[str], opsional, defaultnya"minimize") — Jika ini adalah optimasi tujuan tunggal,struntuk 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 (
stratau~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:optuna: parameter dari optuna.study.create_study dan juga parametertimeout,n_jobsdangc_after_trialdari optuna.study.Study.optimizeray: parameter dari tune.run. Jikaresources_per_trialtidak diatur dikwargs, nilainya secara default 1 inti CPU dan 1 GPU (jika tersedia). Jikaprogress_reportertidak diatur dikwargs, ray.tune.CLIReporter yang digunakan.
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_initsaat menginisialisasi Trainer Anda: kita perlu menginisialisasi ulang model di setiap run baru. Hal ini tidak kompatibel dengan argumenoptimizers, jadi Anda perlu membuat subclass dari Trainer dan menimpa metode create_optimizer_and_scheduler() untuk optimizer/scheduler kustom.
init_hf_repo
< source >( token: str | None = Noneprivate: bool | None = None )
Menginisialisasi repositori git di self.args.hub_model_id.
Apakah proses ini merupakan proses utama lokal (misalnya, pada satu mesin jika pelatihan dilakukan secara terdistribusi di beberapa mesin).
Apakah proses ini merupakan proses utama global (saat pelatihan dilakukan secara terdistribusi di beberapa mesin, ini hanya akan bernilai True untuk satu proses).
log
< source >( logs: dictstart_time: float | None = None )
Catat logs pada berbagai objek yang memantau pelatihan.
Subclass dan override metode ini untuk menyuntikkan perilaku kustom.
log_metrics
< source >( splitmetrics )
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 = 7MBMemahami laporan:
- segmen pertama, misalnya
train__, menunjukkan tahap apa yang menjadi fokus metrik tersebut. Laporan yang diawali denganinit_akan ditambahkan ke tahap pertama yang dijalankan. Jadi, jika hanya evaluasi yang dijalankan, penggunaan memori untuk__init__akan dilaporkan bersama metrikeval_. - segmen ketiga, yaitu
cpuataugpu, 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 menjumlahkanalloc_delta+peaked_deltadan 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
< source >( metrics: dict ) → metrics (dict[str, float])
Format ulang nilai metrik Trainer menjadi format yang mudah dibaca manusia.
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
< source >( callback: type[transformers.trainer_callback.TrainerCallback] | transformers.trainer_callback.TrainerCallback ) → TrainerCallback
Parameter
- callback (
typeatau [`~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
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
< source >( test_dataset: Datasetignore_keys: list[str] | None = Nonemetric_key_prefix: str = 'test' )
Parameter
- test_dataset (
Dataset) — Dataset untuk menjalankan prediksi. Jika berupadatasets.Dataset, kolom yang tidak diterima oleh metodemodel.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 padatest_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
< source >( 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
< source >( 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, defaultTrue) — Apakah fungsi harus hanya mengembalikan nilai setelahgit pushselesai. - token (
str, opsional, defaultnyaNone) — 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 adalahargs.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
< source >( callback: type[transformers.trainer_callback.TrainerCallback] | transformers.trainer_callback.TrainerCallback )
Parameter
- callback (
typeatau [`~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.
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.
Akan menyimpan model, sehingga Anda dapat memuatnya kembali menggunakan from_pretrained().
Hanya akan menyimpan dari proses utama.
Menyimpan state Trainer, karena Trainer.save_model hanya menyimpan tokenizer bersama model.
Dalam lingkungan terdistribusi, ini hanya dilakukan untuk proses dengan rank 0.
Menghitung dan mengembalikan nilai-nilai berikut:
num_train_epochsnum_update_steps_per_epochnum_examplesnum_train_samplestotal_train_batch_sizesteps_in_epoch(total batch per epoch)max_steps
Simpan jumlah operasi floating-point yang digunakan dalam model.
latih
< source >( 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 (
strataubool, opsional) — Jika berupastr, jalur lokal ke checkpoint yang disimpan oleh instance Trainer sebelumnya. Jika berupabooldan bernilaiTrue, 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.Trialataudict[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
< source >( 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
< source >( model: typing.Union[ForwardRef('PreTrainedModel'), torch.nn.Module, NoneType] = Noneargs: typing.Optional[ForwardRef('TrainingArguments')] = Nonedata_collator: typing.Optional[ForwardRef('DataCollator')] = Nonetrain_dataset: typing.Union[torch.utils.data.Dataset, ForwardRef('IterableDataset'), ForwardRef('datasets.Dataset'), NoneType] = Noneeval_dataset: typing.Union[torch.utils.data.Dataset, dict[str, torch.utils.data.Dataset], NoneType] = Noneprocessing_class: typing.Union[ForwardRef('PreTrainedTokenizerBase'), ForwardRef('BaseImageProcessor'), ForwardRef('FeatureExtractionMixin'), ForwardRef('ProcessorMixin'), NoneType] = Nonemodel_init: collections.abc.Callable[[], 'PreTrainedModel'] | None = Nonecompute_loss_func: collections.abc.Callable | None = Nonecompute_metrics: collections.abc.Callable[['EvalPrediction'], dict] | None = Nonecallbacks: list['TrainerCallback'] | None = Noneoptimizers: tuple = (None, None)preprocess_logits_for_metrics: collections.abc.Callable[[torch.Tensor, torch.Tensor], torch.Tensor] | None = None )
evaluate
< source >( eval_dataset: typing.Optional[torch.utils.data.Dataset] = Noneignore_keys: list[str] | None = Nonemetric_key_prefix: str = 'eval'**gen_kwargs )
Parameter
- eval_dataset (
Dataset, optional) — Pass a dataset if you wish to overrideself.eval_dataset. If it is an Dataset, columns not accepted by themodel.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
< source >( 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 metodemodel.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 padatest_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
< source >( output_dir: str | None = Noneper_device_train_batch_size: int = 8num_train_epochs: float = 3.0max_steps: int = -1learning_rate: float = 5e-05lr_scheduler_type: transformers.trainer_utils.SchedulerType | str = 'linear'lr_scheduler_kwargs: dict | str | None = Nonewarmup_steps: float = 0optim: transformers.training_args.OptimizerNames | str = 'adamw_torch_fused'optim_args: str | None = Noneweight_decay: float = 0.0adam_beta1: float = 0.9adam_beta2: float = 0.999adam_epsilon: float = 1e-08optim_target_modules: None | str | list[str] = Nonegradient_accumulation_steps: int = 1average_tokens_across_devices: bool = Truemax_grad_norm: float = 1.0label_smoothing_factor: float = 0.0bf16: bool = Falsefp16: bool = Falsebf16_full_eval: bool = Falsefp16_full_eval: bool = Falsetf32: bool | None = Noneactivation_checkpointing: bool | None = Noneactivation_checkpointing_kwargs: dict[str, typing.Any] | str | None = Nonegradient_checkpointing: bool | None = Nonegradient_checkpointing_kwargs: dict[str, typing.Any] | str | None = Nonetorch_compile: bool = Falsetorch_compile_backend: str | None = Nonetorch_compile_mode: str | None = Noneuse_liger_kernel: bool = Falseliger_kernel_config: dict[str, bool] | None = Noneuse_cache: bool = Falseneftune_noise_alpha: float | None = Nonetorch_empty_cache_steps: int | None = Noneauto_find_batch_size: bool = Falselogging_strategy: transformers.trainer_utils.IntervalStrategy | str = 'steps'logging_steps: float = 500logging_first_step: bool = Falselog_on_each_node: bool = Truelogging_nan_inf_filter: bool = Trueinclude_num_input_tokens_seen: str | bool = 'no'log_level: str = 'passive'log_level_replica: str = 'warning'disable_tqdm: bool | None = Nonereport_to: None | str | list[str] = 'none'run_name: str | None = Noneproject: str = 'huggingface'trackio_space_id: str | None = Nonetrackio_bucket_id: str | None = Nonetrackio_static_space_id: typing.Union[str, NoneType, typing.Literal[False]] = Noneeval_strategy: transformers.trainer_utils.IntervalStrategy | str = 'no'eval_steps: float | None = Noneeval_delay: float = 0per_device_eval_batch_size: int = 8prediction_loss_only: bool = Falseeval_on_start: bool = Falseeval_do_concat_batches: bool = Trueeval_use_gather_object: bool = Falseeval_accumulation_steps: int | None = Noneinclude_for_metrics: list = <factory>batch_eval_metrics: bool = Falsesave_only_model: bool = Falsesave_strategy: transformers.trainer_utils.SaveStrategy | str = 'steps'save_steps: float = 500save_on_each_node: bool = Falsesave_total_limit: int | None = Noneenable_jit_checkpoint: bool = Falsepush_to_hub: bool = Falsehub_token: str | None = Nonehub_private_repo: bool | None = Nonehub_model_id: str | None = Nonehub_strategy: transformers.trainer_utils.HubStrategy | str = 'every_save'hub_always_push: bool = Falsehub_revision: str | None = Noneload_best_model_at_end: bool = Falsemetric_for_best_model: str | None = Nonegreater_is_better: bool | None = Noneignore_data_skip: bool = Falserestore_callback_states_from_checkpoint: bool = Falsefull_determinism: bool = Falseseed: int = 42data_seed: int | None = Noneuse_cpu: bool = Falseaccelerator_config: dict | str | None = Noneparallelism_config: typing.Any | None = Nonedataloader_drop_last: bool = Falsedataloader_num_workers: int = 0dataloader_pin_memory: bool = Truedataloader_persistent_workers: bool = Falsedataloader_prefetch_factor: int | None = Nonedataloader_multiprocessing_context: str | None = Nonedataloader_in_order: bool = Trueremove_unused_columns: bool = Truelabel_names: list[str] | None = Nonetrain_sampling_strategy: str = 'random'length_column_name: str = 'length'ddp_find_unused_parameters: bool | None = Noneddp_bucket_cap_mb: int | None = Noneddp_broadcast_buffers: bool | None = Noneddp_static_graph: bool | None = Noneddp_backend: str | None = Noneddp_timeout: int = 1800fsdp: str | None = Nonefsdp_config: dict[str, typing.Any] | str | None = Nonedeepspeed: dict | str | None = Nonedebug: str | list[transformers.debug_utils.DebugOption] = ''skip_memory_metrics: bool = Truedo_train: bool = Falsedo_eval: bool = Falsedo_predict: bool = Falseresume_from_checkpoint: str | None = Nonelocal_rank: int = -1 )
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_devicespada 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) — Menimpanum_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) sampaimax_stepstercapai. 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 (
stratau SchedulerType, opsional, default ke"linear") — Jenis learning rate scheduler yang akan digunakan. Lihat SchedulerType untuk semua nilai yang mungkin. Pilihan umum:- “linear” = get_linear_schedule_with_warmup()
- “cosine” = get_cosine_schedule_with_warmup()
- “constant” = get_constant_schedule()
- “constant_with_warmup” = get_constant_schedule_with_warmup()
- lr_scheduler_kwargs (
dictataustr, opsional, defaultnyaNone) — Argumen tambahan untuk lr_scheduler. Lihat dokumentasi masing-masing scheduler untuk nilai yang mungkin. - warmup_steps (
intataufloat, opsional, default 0) — Jumlah langkah untuk warmup linear dari 0 kelearning_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 (
stratautraining_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) LihatOptimizerNamesuntuk 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 modulnn.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_stepcontoh pelatihan. - average_tokens_across_devices (
bool, opsional, defaultTrue) — 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_labelsdan 1 menjadi1 - ε + ε/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, defaultFalse) — 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, defaultFalse) — Aktifkan pelatihan presisi campuran float16 (FP16). Pertimbangkan untuk menggunakan BF16 sebagai gantinya jika perangkat keras Anda mendukungnya. - bf16_full_eval (
bool, opsional, defaultFalse) — 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, defaultFalse) — 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, defaultFalse) — 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, defaultnyaNone) — Argumen kata kunci yang diteruskan keactivation_checkpointing_enable().every_n_layershanya melakukan checkpoint setiap n-th lapisan decoder, bukan semuanya;1adalah perilaku all-or-nothing yang umum, dan nilai yang lebih besar mengembalikan sebagian memori untuk kecepatan.offloadmenyimpan aktivasi yang disimpan di memori host yang di-pin, yang membebaskanlayers x sequence x hiddenbyte memori perangkat dan membuat langkah menjadi lebih lambat. Kunci lain apa pun diteruskan ketorch.utils.checkpoint.checkpoint. - gradient_checkpointing (
bool, opsional) — Alias yang tidak lagi didukung dariactivation_checkpointing, akan dihapus di v6. - gradient_checkpointing_kwargs (
dict, opsional) — Alias yang tidak lagi didukung dariactivation_checkpointing_kwargs, akan dihapus di v6.
Kompilasi
- torch_compile (
bool, opsional, defaultFalse) — Kompilasi model menggunakantorch.compile()dari PyTorch 2.0 untuk pelatihan yang lebih cepat. Dapat memberikan peningkatan kecepatan 20-50% tanpa perubahan kode. Menggunakan pengaturan kompilasi default kecualitorch_compile_backendatautorch_compile_modeditentukan. - torch_compile_backend (
str, opsional) — Backend untuktorch.compile(). Jika diatur, secara otomatis mengaktifkantorch_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 untuktorch.compile(). Jika diatur, secara otomatis mengaktifkantorch_compile. Opsi:"default","reduce-overhead"(meminimalkan overhead Python),"max-autotune"(optimalisasi agresif, waktu kompilasi lebih lambat).
Kernels
- use_liger_kernel (
bool, opsional, defaultFalse) — 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". JikaNone, menggunakan konfigurasi default.
Optimasi Tambahan
- use_cache (
bool, opsional, defaultFalse) — Apakah cache untuk model akan diaktifkan atau tidak. Untuk pelatihan, ini biasanya tidak diperlukan kecuali untuk beberapa metode PEFT yang menggunakanpast_key_values. - neftune_noise_alpha (
Optional[float]) — Jika bukanNone, ini akan mengaktifkan noise embeddings NEFTune. Hal ini dapat secara drastis meningkatkan kinerja model untuk fine-tuning instruksi. Lihat paper aslinya dan kode aslinya. MendukungPreTrainedModeldari transformers dan jugaPeftModeldari peft. Paper aslinya menggunakan nilai dalam rentang [5.0, 15.0]. - torch_empty_cache_steps (
int, opsional) — Jumlah langkah yang harus ditunggu sebelum memanggiltorch.<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, defaultFalse) — 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 (
stratau 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 setiaplogging_steps.
- logging_steps (
intataufloat, opsional, default 500) — Jumlah langkah pembaruan di antara dua log jikalogging_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, defaultnyaFalse) — Apakah akan mencatatglobal_steppertama atau tidak. - log_on_each_node (
bool, opsional, defaultTrue) — Dalam pelatihan terdistribusi multinode, apakah akan mencatat menggunakanlog_levelsekali per node, atau hanya pada node utama. - logging_nan_inf_filter (
bool, opsional, defaultTrue) — Saring kerugian NaN dan Inf saat pencatatan. JikaTrue, 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, defaultnyapassive) — 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 denganlog_level. - disable_tqdm (
bool, opsional) — Nonaktifkan bilah progres tqdm. Nilainya secara defaultTruejikalog_leveladalah warning atau lebih rendah,Falseselain itu.
Integrasi Pelacakan Eksperimen
- report_to (
strataulist[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 (
stratauNone, opsional, defaultNone) — 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). JikaNone, 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 mengaturhub_private_repo=Trueatau default organisasi Anda adalah membuat Space privat. - trackio_bucket_id (
stratauNone, opsional, defaultNone) — 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_idbukanFalse). - trackio_static_space_id (
str,False, atauNone, opsional, defaultnyaNone) — 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 mengaturhub_private_repo=Trueatau default organisasi Anda adalah membuat Space privat.
Evaluasi
- eval_strategy (
stratau IntervalStrategy, opsional, default ke"no") — Kapan menjalankan evaluasi. Opsi:"no": Tidak ada evaluasi selama pelatihan"steps": Evaluasi setiapeval_steps"epoch": Evaluasi di akhir setiap epoch
- eval_steps (
intataufloat, opsional) — Jumlah langkah pembaruan di antara dua evaluasi jikaeval_strategy="steps". Akan secara default menggunakan nilai yang sama denganlogging_stepsjika 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, defaultFalse) — Saat melakukan evaluasi dan menghasilkan prediksi, hanya mengembalikan loss. - eval_on_start (
bool, opsional, defaultnyaFalse) — Apakah akan melakukan langkah evaluasi (pemeriksaan kewajaran) sebelum pelatihan untuk memastikan langkah validasi berjalan dengan benar. - eval_do_concat_batches (
bool, opsional, defaultnyaTrue) — Apakah akan menggabungkan (concat) input/losses/labels/predictions secara rekursif di antara batch. JikaFalse, maka data tersebut akan disimpan sebagai daftar, dengan setiap batch dipertahankan terpisah. - eval_use_gather_object (
bool, opsional, defaultFalse) — 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 dalamcompute_metricsfungsi jika diperlukan untuk perhitungan metrik. Opsi yang mungkin ditambahkan keinclude_for_metricsdaftar:"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, defaultFalse) — Jika diset keTrue, evaluasi akan memanggil compute_metrics di akhir setiap batch untuk mengakumulasi statistik alih-alih menyimpan semua eval logits di memori. Ketika diset keTrue, Anda harus meneruskan fungsi compute_metrics yang mengambil argumen booleancompute_result, yang ketika diteruskanTrue, 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, defaultFalse) — 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 menggunakanfrom_pretraineddengan opsi ini diset keTrue. - save_strategy (
stratauSaveStrategy, 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 setiapsave_steps."best": Penyimpanan dilakukan setiap kalibest_metricbaru tercapai.
- save_steps (
intataufloat, opsional, default 500) — Jumlah langkah pembaruan sebelum dua penyimpanan checkpoint jikasave_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, defaultFalse) — 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 darioutput_dir. Ketikaload_best_model_at_end=True, checkpoint terbaik selalu dipertahankan beserta yang terbaru. Misalnya,save_total_limit=5menyimpan 4 checkpoint terbaru ditambah yang terbaik - enable_jit_checkpoint (
bool, optional, defaults toFalse) — 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, setterminationGracePeriodSeconds(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, defaultFalse) — Apakah model akan didorong ke Hub setiap kali model disimpan. Jika diaktifkan,output_dirakan memulai direktori git yang disinkronkan dengan repo (ditentukan olehhub_model_id) dan kontennya akan didorong setiap kali penyimpanan dipicu (tergantung padasave_strategyAnda). 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 denganhf auth login. - hub_private_repo (
bool, opsional) — Apakah membuat repo menjadi privat. JikaNone(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 menjadiuser_name/output_dir_namedengan output_dir_name sebagai nama darioutput_dir. - hub_strategy (
stratauHubStrategy, 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, defaultFalse) — Kecuali iniTrue,Trainerakan 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, defaultFalse) — Muat checkpoint terbaik di akhir pelatihan. Memerlukaneval_strategyuntuk disetel. Ketika diaktifkan, checkpoint terbaik selalu disimpan (lihatsave_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 saatload_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_betterakan secara bawaan menjadiTruekecuali namanya diakhiri dengan"loss". Contoh:"accuracy","f1","eval_bleu". - greater_is_better (
bool, opsional) — Apakah nilai metrik yang lebih tinggi lebih baik. Nilai default berdasarkanmetric_for_best_model:Truejika nama metrik tidak diakhiri dengan"loss",Falseselain itu.
Melanjutkan Pelatihan
- ignore_data_skip (
bool, opsional, defaultFalse) — Saat melanjutkan pelatihan, lewati proses fast-forward melalui dataset untuk mencapai keadaan sebelumnya. JikaTrue, pelatihan dimulai dari awal dataset (pelanjutan lebih cepat tetapi hasilnya tidak akan cocok dengan pelatihan yang terputus). JikaFalse, data yang sudah dilihat akan dilewati (pelanjutan lebih lambat tetapi kelanjutan yang persis). - restore_callback_states_from_checkpoint (
bool, opsional, defaultFalse) — Pulihkan status callback dari checkpoint saat melanjutkan. JikaTrue, callback yang diteruskan ke Trainer akan ditimpa jika callback tersebut ada di checkpoint.
Reproduktibilitas
- full_determinism (
bool, opsional, defaultFalse) — JikaTrue, 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_inituntuk 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 denganseed. Hal ini dapat digunakan untuk memastikan reproduktibilitas pengambilan sampel data, terlepas dari seed model.
Konfigurasi Perangkat Keras
- use_cpu (
bool, opsional, defaultFalse) — Apakah akan menggunakan cpu. Jika diset ke False, kami akan menggunakan perangkat/backend torch yang tersedia.
Konfigurasi Accelerate
- accelerator_config (
str,dict, atauAcceleratorConfig, 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
AcceleratorConfigOpsi utama: split_batches(bool, defaultnyaFalse): Apakah batch akan dipecah di antara perangkat. JikaTrue, ukuran batch aktual sama di semua perangkat (total harus habis dibagi num_processes). JikaFalse, setiap perangkat mendapatkan ukuran batch yang ditentukan.dispatch_batches(bool): JikaTrue, hanya proses utama yang mengiterasi dataloader dan mendistribusikan batch ke perangkat. Defaultnya adalahTrueuntukIterableDataset,Falseuntuk kasus lainnya.even_batches(bool, defaultnyaTrue): Duplikat sampel dari awal dataset untuk memastikan semua worker mendapatkan ukuran batch yang sama.use_seedable_sampler(bool, defaultnyaTrue): Gunakan sampler acak yang sepenuhnya dapat di-seed untuk reproduktibilitas.use_configured_state(bool, defaultFalse): GunakanAcceleratorState/PartialStateyang sudah diinisialisasi sebelumnya alih-alih membuat yang baru. Hal ini dapat menyebabkan masalah dengan penyetelan hiperparameter.
- Path ke file konfigurasi JSON:
- parallelism_config (
ParallelismConfig, opsional) — Konfigurasi paralelisme untuk sesi pelatihan. Memerlukan Accelerate1.10.1
Dataloader
- dataloader_drop_last (
bool, opsional, defaultFalse) — 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, defaultnyaTrue) — Apakah Anda ingin mengunci memori di data loader atau tidak. Akan default keTrue. - dataloader_persistent_workers (
bool, opsional, defaultnyaFalse) — 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 menjadiFalse. - 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 dengandataloader_num_workers > 1, di mana defaultnya adalah"fork". Gunakan"spawn"saat streaming dari sumber yang objeknya tidak aman untuk fork (mis. HDFS viapyarrow). Di bawah"spawn", kodecollate_fnatau dataset kustom apa pun harus dapat diimpor pada level modul (tanpa lambda/closure). - dataloader_in_order (
bool, opsional, defaultTrue) — JikaTrue, data loader menghasilkan batch sesuai urutan worker yang dikirim. Atur keFalseuntuk menghasilkan batch segera setelah siap, yang dapat mengurangi latensi ekor untuk workload streamingIterableDataset. Memerlukan PyTorch >= 2.6. - remove_unused_columns (
bool, opsional, defaultTrue) — 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 dariXxxForQuestionAnswering, di mana dalam hal itu juga akan menyertakan kunci["start_positions", "end_positions"]. Anda hanya perlu menentukanlabel_namesjika Anda menggunakan nama label kustom atau jikaforwardmodel 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": MenggunakanRandomSampler(default)."sequential": MenggunakanSequentialSampler."group_by_length": MenggunakanLengthGroupedSampleruntuk mengelompokkan sampel dengan panjang yang kurang lebih sama bersama-sama (untuk meminimalkan padding dan menjadi lebih efisien)."batch_rebalance": MenggunakanBatchRebalanceSampleruntuk 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 kecualitrain_sampling_strategyadalah"group_by_length"atau"batch_rebalance"dan dataset adalah instance dariDataset.
DDP (DistributedDataParallel)
- ddp_find_unused_parameters (
bool, opsional) — Saat menggunakan pelatihan terdistribusi, nilai flagfind_unused_parametersyang diteruskan keDistributedDataParallel. Akan menjadiFalsejika gradient checkpointing digunakan,Trueselain itu. - ddp_bucket_cap_mb (
int, opsional) — Saat menggunakan pelatihan terdistribusi, nilai flagbucket_cap_mbyang diteruskan keDistributedDataParallel. - ddp_broadcast_buffers (
bool, opsional) — Saat menggunakan pelatihan terdistribusi, nilai flagbroadcast_buffersyang diteruskan keDistributedDataParallel. Akan menjadiFalsejika gradient checkpointing digunakan,Trueselain itu. - ddp_static_graph (
bool, opsional) — Saat menggunakan pelatihan terdistribusi, nilai flagstatic_graphyang diteruskan keDistributedDataParallel. - 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 panggilantorch.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, defaultNone) — Aktifkan PyTorch Fully Sharded Data Parallel (FSDP) untuk pelatihan terdistribusi. BerikanTrueuntuk mengaktifkan FSDP. - fsdp_config (
strataudict, opsional) — Pengaturan konfigurasi untuk saatfsdpdiaktifkan. Berikan path ke file konfigurasi JSON, sepertifsdp_config.json, atau dict yang sudah dimuat.Kunci yang didukung:
- versi (
int, opsional, default2): Versi FSDP yang akan digunakan (2untuk FSDP2,1untuk FSDP1 legacy). - reshard_after_forward (
bool, opsional, defaultTrue): Apakah akan melakukan resharding parameter setelah forward pass. Atur keFalseuntuk 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, defaultFalse): Offload parameter dan gradien ke CPU saat tidak digunakan untuk menghemat memori GPU. - activation_checkpointing (
bool, opsional, defaultFalse): Atur keTrueuntuk mengurangi memori dengan menghitung ulang aktivasi selama backward pass. Saat menggunakan FSDP, lebih disarankan menggunakan ini daripada argumen pelatihanactivation_checkpointing, yang memperkenalkan all-gather yang redundan dalam backward pass. - cpu_ram_efficient_loading (
bool, opsional, defaultFalse): Atur keTrueuntuk 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, misalnyaLlamaDecoderLayer. Biasanya tidak diperlukan: kebijakan pembungkusan akan kembali ke_no_split_modulesmodel, yang mencakup sebagian besar model transformers. - min_num_params (
int, opsional, default0): Jumlah minimum parameter per modul untuk auto-wrapping berbasis ukuran (digunakan denganauto_wrap_policy="SIZE_BASED_WRAP"). - xla (
bool, opsional, defaultFalse): 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, defaultFalse): Atur keTrueuntuk menggunakan gradient checkpointing pada setiap lapisan XLA FSDP yang dibungkus secara bersarang. Memerlukanxla=Truedan kebijakan auto-wrapping (min_num_paramsatautransformer_layer_cls_to_wrap).
- versi (
DeepSpeed
- deepspeed (
strordict, 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.
- Path ke file konfigurasi JSON DeepSpeed:
Debugging & Profiling (Eksperimental)
- debug (
stratau daftarDebugOption, 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, defaultnyaTrue) — 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, defaultFalse) — 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 keTruejikaeval_strategyberbeda dari"no". Argumen ini tidak digunakan secara langsung oleh Trainer, melainkan ditujukan untuk digunakan oleh skrip pelatihan/evaluasi Anda. - do_predict (
bool, opsional, defaultFalse) — 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.
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.
Dapatkan jumlah langkah yang digunakan untuk linear warmup.
main_process_first
< source >( local = Truedesc = 'work' )
Parameter
- local (
bool, opsional, defaultTrue) — jikaTrue, “first” berarti proses rank 0 dari setiap node; jikaFalse, “first” berarti proses rank 0 dari node rank 0. Dalam lingkungan multi-node dengan sistem berkas bersama, kemungkinan besar Anda ingin menggunakanlocal=Falseagar 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
< source >( train_batch_size: int = 8eval_batch_size: int = 8drop_last: bool = Falsenum_workers: int = 0pin_memory: bool = Truepersistent_workers: bool = Falseprefetch_factor: int | None = Nonemultiprocessing_context: str | None = Nonein_order: bool = Trueauto_find_batch_size: bool = Falseignore_data_skip: bool = Falsesampler_seed: int | None = None )
Parameter
- drop_last (
bool, opsional, defaultFalse) — 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, defaultTrue) — Apakah Anda ingin mengunci memori di data loader atau tidak. Akan default keTrue. - persistent_workers (
bool, opsional, defaultFalse) — 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 keFalse. - 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 viapyarrow). Di bawah"spawn", kodecollate_fnatau dataset kustom apa pun harus dapat diimpor pada level modul (tanpa lambda/closure). - in_order (
bool, opsional, defaultTrue) — JikaTrue, data loader menghasilkan batch sesuai urutan worker yang dikirimkan. Atur keFalseuntuk menghasilkan batch segera setelah siap, yang dapat mengurangi latensi ekor untuk workload streamingIterableDataset. Memerlukan PyTorch >= 2.6. - auto_find_batch_size (
bool, opsional, defaultFalse) — 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, defaultFalse) — Saat melanjutkan pelatihan, apakah epoch dan batch akan dilewati untuk membuat pemuatan data berada pada tahap yang sama seperti pada pelatihan sebelumnya. Jika diatur keTrue, 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 denganself.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.
set_evaluate
< source >( strategy: str | transformers.trainer_utils.IntervalStrategy = 'no'steps: int = 500batch_size: int = 8accumulation_steps: int | None = Nonedelay: float | None = Noneloss_only: bool = False )
Parameter
- strategy (
stratau 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) setiapsteps."epoch": Evaluasi dilakukan di akhir setiap epoch.
Menetapkan
strategyyang berbeda dari"no"akan mengaturself.do_evalmenjadiTrue. - steps (
int, opsional, default 500) — Jumlah langkah pembaruan di antara dua evaluasi jikastrategy="steps". - batch_size (
intopsional, 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, defaultnyaFalse) — Mengabaikan semua output kecuali loss.
Metode yang mengelompokkan kembali semua argumen yang terkait dengan evaluasi.
set_logging
< source >( strategy: str | transformers.trainer_utils.IntervalStrategy = 'steps'steps: int = 500report_to: str | list[str] = 'none'level: str = 'passive'first_step: bool = Falsenan_inf_filter: bool = Falseon_each_node: bool = Falsereplica_level: str = 'passive' )
Parameter
- strategy (
stratau 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 setiaplogging_steps.
- steps (
int, opsional, default 500) — Jumlah langkah pembaruan antara dua log jikastrategy="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 (
strataulist[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, defaultFalse) — Apakah akan mencatat dan mengevaluasiglobal_steppertama atau tidak. - nan_inf_filter (
bool, opsional, defaultnyaTrue) — Apakah akan memfilternandaninflosses untuk logging. Jika diatur keTrueloss dari setiap langkah yang bernilainanatauinfakan difilter dan rata-rata loss dari jendela logging saat ini akan digunakan sebagai gantinya.nan_inf_filterhanya memengaruhi pencatatan nilai loss, dan tidak mengubah perilaku saat gradien dihitung atau diterapkan ke model. - on_each_node (
bool, opsional, defaultTrue) — Dalam pelatihan terdistribusi multinode, apakah mencatat menggunakanlog_levelsekali per node, atau hanya pada node utama. - replica_level (
str, opsional, defaultnya"passive") — Tingkat log logger yang digunakan pada replika. Pilihan yang sama denganlog_level
Metode yang mengelompokkan kembali semua argumen yang terkait dengan pencatatan log.
set_lr_scheduler
< source >( name: str | transformers.trainer_utils.SchedulerType = 'linear'num_epochs: float = 3.0max_steps: int = -1warmup_steps: float = 0 )
Parameter
- name (
stratau 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. Mengesampingkannum_train_epochs. Untuk dataset berhingga, pelatihan diulang melalui dataset (jika semua data habis) hinggamax_stepstercapai. 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 hinggalearning_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 hinggalearning_rate.
Metode yang mengelompokkan kembali semua argumen yang terkait dengan penjadwal laju pembelajaran dan hiperparameternya.
set_optimizer
< source >( name: str | transformers.training_args.OptimizerNames = 'adamw_torch'learning_rate: float = 5e-05weight_decay: float = 0beta1: float = 0.9beta2: float = 0.999epsilon: float = 1e-08args: str | None = None )
Parameter
- name (
stratautraining_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 ketikaoptim="adamw_anyprecision").
Metode yang mengelompokkan kembali semua argumen yang terkait dengan optimizer dan hiperparameternya.
set_push_to_hub
< source >( model_id: strstrategy: str | transformers.trainer_utils.HubStrategy = 'every_save'token: str | None = Noneprivate_repo: bool | None = Nonealways_push: bool = Falserevision: str | None = None )
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 (
stratauHubStrategy, 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 menggunakantrainer.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 denganhf auth login. - private_repo (
bool, opsional, defaultFalse) — Apakah membuat repo menjadi privat. JikaNone(default), repo akan menjadi publik kecuali default organisasi adalah privat. Nilai ini diabaikan jika repo sudah ada. - always_push (
bool, opsional, defaultFalse) — Kecuali iniTrue,Trainerakan 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_hubmenjadiTrue, yang berartioutput_dirakan memulai direktori git yang disinkronkan dengan repo (ditentukan olehmodel_id) dan kontennya akan didorong setiap kali penyimpanan dipicu (tergantung padaself.save_strategyAnda). Memanggil save_model() juga akan memicu pendorongan.
set_save
< source >( strategy: str | transformers.trainer_utils.IntervalStrategy = 'steps'steps: int = 500total_limit: int | None = Noneon_each_node: bool = False )
Parameter
- strategy (
stratau 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 setiapsave_steps.
- steps (
int, opsional, default 500) — Jumlah langkah pembaruan sebelum dua penyimpanan checkpoint jikastrategy="steps". - total_limit (
int, opsional) — Jika nilai diberikan, akan membatasi jumlah total checkpoint. Menghapus checkpoint yang lebih lama dioutput_dir. - on_each_node (
bool, opsional, defaultnyaFalse) — 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.
set_testing
< source >( batch_size: int = 8loss_only: bool = False )
Metode yang mengelompokkan kembali semua argumen dasar yang terkait dengan pengujian pada dataset yang dipegang.
Memanggil metode ini akan secara otomatis mengatur
self.do_predictmenjadiTrue.
set_training
< source >( learning_rate: float = 5e-05batch_size: int = 8weight_decay: float = 0num_epochs: float = 3max_steps: int = -1gradient_accumulation_steps: int = 1seed: int = 42activation_checkpointing: bool = Falsegradient_checkpointing: bool | None = None )
Parameter
- learning_rate (
float, opsional, default 5e-5) — Learning rate awal untuk optimizer. - batch_size (
intopsional, 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. Mengesampingkannum_train_epochs. Untuk dataset berhingga, pelatihan diulang melalui dataset (jika semua data habis) hinggamax_stepstercapai. 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_stepcontoh pelatihan. - seed (
int, opsional, default 42) — Seed acak yang akan diset di awal pelatihan. Untuk memastikan reproduktibilitas antar eksekusi, gunakan fungsi~Trainer.model_inituntuk menginstansiasi model jika model tersebut memiliki beberapa parameter yang diinisialisasi secara acak. - activation_checkpointing (
bool, opsional, defaultFalse) — Jika True, gunakan activation checkpointing untuk menghemat memori dengan mengorbankan kecepatan backward pass. - gradient_checkpointing (
bool, opsional) — Alias yang tidak lagi didukung dariactivation_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_trainmenjadiTrue.
Menserialisasi instance ini dengan mengganti Enum dengan nilai-nilainya (untuk mendukung serialisasi JSON). Hal ini mengaburkan nilai token dengan menghapus nilainya.
Menserialisasi instance ini ke string JSON.
Serialisasi yang telah disanitasi untuk digunakan dengan hparams TensorBoard
Seq2SeqTrainingArguments
kelas transformers.Seq2SeqTrainingArguments
< source >( output_dir: str | None = Noneper_device_train_batch_size: int = 8num_train_epochs: float = 3.0max_steps: int = -1learning_rate: float = 5e-05lr_scheduler_type: transformers.trainer_utils.SchedulerType | str = 'linear'lr_scheduler_kwargs: dict | str | None = Nonewarmup_steps: float = 0optim: transformers.training_args.OptimizerNames | str = 'adamw_torch_fused'optim_args: str | None = Noneweight_decay: float = 0.0adam_beta1: float = 0.9adam_beta2: float = 0.999adam_epsilon: float = 1e-08optim_target_modules: None | str | list[str] = Nonegradient_accumulation_steps: int = 1average_tokens_across_devices: bool = Truemax_grad_norm: float = 1.0label_smoothing_factor: float = 0.0bf16: bool = Falsefp16: bool = Falsebf16_full_eval: bool = Falsefp16_full_eval: bool = Falsetf32: bool | None = Noneactivation_checkpointing: bool | None = Noneactivation_checkpointing_kwargs: dict[str, typing.Any] | str | None = Nonegradient_checkpointing: bool | None = Nonegradient_checkpointing_kwargs: dict[str, typing.Any] | str | None = Nonetorch_compile: bool = Falsetorch_compile_backend: str | None = Nonetorch_compile_mode: str | None = Noneuse_liger_kernel: bool = Falseliger_kernel_config: dict[str, bool] | None = Noneuse_cache: bool = Falseneftune_noise_alpha: float | None = Nonetorch_empty_cache_steps: int | None = Noneauto_find_batch_size: bool = Falselogging_strategy: transformers.trainer_utils.IntervalStrategy | str = 'steps'logging_steps: float = 500logging_first_step: bool = Falselog_on_each_node: bool = Truelogging_nan_inf_filter: bool = Trueinclude_num_input_tokens_seen: str | bool = 'no'log_level: str = 'passive'log_level_replica: str = 'warning'disable_tqdm: bool | None = Nonereport_to: None | str | list[str] = 'none'run_name: str | None = Noneproject: str = 'huggingface'trackio_space_id: str | None = Nonetrackio_bucket_id: str | None = Nonetrackio_static_space_id: typing.Union[str, NoneType, typing.Literal[False]] = Noneeval_strategy: transformers.trainer_utils.IntervalStrategy | str = 'no'eval_steps: float | None = Noneeval_delay: float = 0per_device_eval_batch_size: int = 8prediction_loss_only: bool = Falseeval_on_start: bool = Falseeval_do_concat_batches: bool = Trueeval_use_gather_object: bool = Falseeval_accumulation_steps: int | None = Noneinclude_for_metrics: list = <factory>batch_eval_metrics: bool = Falsesave_only_model: bool = Falsesave_strategy: transformers.trainer_utils.SaveStrategy | str = 'steps'save_steps: float = 500save_on_each_node: bool = Falsesave_total_limit: int | None = Noneenable_jit_checkpoint: bool = Falsepush_to_hub: bool = Falsehub_token: str | None = Nonehub_private_repo: bool | None = Nonehub_model_id: str | None = Nonehub_strategy: transformers.trainer_utils.HubStrategy | str = 'every_save'hub_always_push: bool = Falsehub_revision: str | None = Noneload_best_model_at_end: bool = Falsemetric_for_best_model: str | None = Nonegreater_is_better: bool | None = Noneignore_data_skip: bool = Falserestore_callback_states_from_checkpoint: bool = Falsefull_determinism: bool = Falseseed: int = 42data_seed: int | None = Noneuse_cpu: bool = Falseaccelerator_config: dict | str | None = Noneparallelism_config: typing.Any | None = Nonedataloader_drop_last: bool = Falsedataloader_num_workers: int = 0dataloader_pin_memory: bool = Truedataloader_persistent_workers: bool = Falsedataloader_prefetch_factor: int | None = Nonedataloader_multiprocessing_context: str | None = Nonedataloader_in_order: bool = Trueremove_unused_columns: bool = Truelabel_names: list[str] | None = Nonetrain_sampling_strategy: str = 'random'length_column_name: str = 'length'ddp_find_unused_parameters: bool | None = Noneddp_bucket_cap_mb: int | None = Noneddp_broadcast_buffers: bool | None = Noneddp_static_graph: bool | None = Noneddp_backend: str | None = Noneddp_timeout: int = 1800fsdp: str | None = Nonefsdp_config: dict[str, typing.Any] | str | None = Nonedeepspeed: dict | str | None = Nonedebug: str | list[transformers.debug_utils.DebugOption] = ''skip_memory_metrics: bool = Truedo_train: bool = Falsedo_eval: bool = Falsedo_predict: bool = Falseresume_from_checkpoint: str | None = Nonelocal_rank: int = -1sortish_sampler: bool = Falsepredict_with_generate: bool = Falsegeneration_max_length: int | None = Nonegeneration_num_beams: int | None = Nonegeneration_config: str | pathlib.Path | transformers.generation.configuration_utils.GenerationConfig | None = None )
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_devicespada 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) — Menimpanum_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) sampaimax_stepstercapai. 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 (
stratau SchedulerType, opsional, default ke"linear") — Jenis learning rate scheduler yang akan digunakan. Lihat SchedulerType untuk semua nilai yang mungkin. Pilihan umum:- “linear” = get_linear_schedule_with_warmup()
- “cosine” = get_cosine_schedule_with_warmup()
- “constant” = get_constant_schedule()
- “constant_with_warmup” = get_constant_schedule_with_warmup()
- lr_scheduler_kwargs (
dictataustr, opsional, defaultnyaNone) — Argumen tambahan untuk lr_scheduler. Lihat dokumentasi masing-masing scheduler untuk nilai yang mungkin. - warmup_steps (
intataufloat, opsional, default 0) — Jumlah langkah untuk warmup linear dari 0 kelearning_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 (
stratautraining_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) LihatOptimizerNamesuntuk 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 modulnn.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_stepcontoh pelatihan. - average_tokens_across_devices (
bool, opsional, defaultTrue) — 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_labelsdan 1 menjadi1 - ε + ε/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, defaultFalse) — 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, defaultFalse) — Aktifkan pelatihan presisi campuran float16 (FP16). Pertimbangkan untuk menggunakan BF16 sebagai gantinya jika perangkat keras Anda mendukungnya. - bf16_full_eval (
bool, opsional, defaultFalse) — 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, defaultFalse) — 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, defaultFalse) — 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, defaultnyaNone) — Argumen kata kunci yang diteruskan keactivation_checkpointing_enable().every_n_layershanya melakukan checkpoint setiap n-th lapisan decoder, bukan semuanya;1adalah perilaku all-or-nothing yang umum, dan nilai yang lebih besar mengembalikan sebagian memori untuk kecepatan.offloadmenyimpan aktivasi yang disimpan di memori host yang di-pin, yang membebaskanlayers x sequence x hiddenbyte memori perangkat dan membuat langkah menjadi lebih lambat. Kunci lain apa pun diteruskan ketorch.utils.checkpoint.checkpoint. - gradient_checkpointing (
bool, opsional) — Alias yang tidak lagi didukung dariactivation_checkpointing, akan dihapus di v6. - gradient_checkpointing_kwargs (
dict, opsional) — Alias yang tidak lagi didukung dariactivation_checkpointing_kwargs, akan dihapus di v6.
Kompilasi
- torch_compile (
bool, opsional, defaultFalse) — Kompilasi model menggunakantorch.compile()dari PyTorch 2.0 untuk pelatihan yang lebih cepat. Dapat memberikan peningkatan kecepatan 20-50% tanpa perubahan kode. Menggunakan pengaturan kompilasi default kecualitorch_compile_backendatautorch_compile_modeditentukan. - torch_compile_backend (
str, opsional) — Backend untuktorch.compile(). Jika diatur, secara otomatis mengaktifkantorch_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 untuktorch.compile(). Jika diatur, secara otomatis mengaktifkantorch_compile. Opsi:"default","reduce-overhead"(meminimalkan overhead Python),"max-autotune"(optimalisasi agresif, waktu kompilasi lebih lambat).
Kernels
- use_liger_kernel (
bool, opsional, defaultFalse) — 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". JikaNone, menggunakan konfigurasi default.
Optimasi Tambahan
- use_cache (
bool, opsional, defaultFalse) — Apakah cache untuk model akan diaktifkan atau tidak. Untuk pelatihan, ini biasanya tidak diperlukan kecuali untuk beberapa metode PEFT yang menggunakanpast_key_values. - neftune_noise_alpha (
Optional[float]) — Jika bukanNone, ini akan mengaktifkan noise embeddings NEFTune. Hal ini dapat secara drastis meningkatkan kinerja model untuk fine-tuning instruksi. Lihat paper aslinya dan kode aslinya. MendukungPreTrainedModeldari transformers dan jugaPeftModeldari peft. Paper aslinya menggunakan nilai dalam rentang [5.0, 15.0]. - torch_empty_cache_steps (
int, opsional) — Jumlah langkah yang harus ditunggu sebelum memanggiltorch.<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, defaultFalse) — 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 (
stratau 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 setiaplogging_steps.
- logging_steps (
intataufloat, opsional, default 500) — Jumlah langkah pembaruan di antara dua log jikalogging_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, defaultnyaFalse) — Apakah akan mencatatglobal_steppertama atau tidak. - log_on_each_node (
bool, opsional, defaultTrue) — Dalam pelatihan terdistribusi multinode, apakah akan mencatat menggunakanlog_levelsekali per node, atau hanya pada node utama. - logging_nan_inf_filter (
bool, opsional, defaultTrue) — Saring kerugian NaN dan Inf saat pencatatan. JikaTrue, 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, defaultnyapassive) — 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 denganlog_level. - disable_tqdm (
bool, opsional) — Nonaktifkan bilah progres tqdm. Nilainya secara defaultTruejikalog_leveladalah warning atau lebih rendah,Falseselain itu.
Integrasi Pelacakan Eksperimen
- report_to (
strataulist[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 (
stratauNone, opsional, defaultNone) — 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). JikaNone, 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 mengaturhub_private_repo=Trueatau default organisasi Anda adalah membuat Space privat. - trackio_bucket_id (
stratauNone, opsional, defaultNone) — 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_idbukanFalse). - trackio_static_space_id (
str,False, atauNone, opsional, defaultnyaNone) — 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 mengaturhub_private_repo=Trueatau default organisasi Anda adalah membuat Space privat.
Evaluasi
- eval_strategy (
stratau IntervalStrategy, opsional, default ke"no") — Kapan menjalankan evaluasi. Opsi:"no": Tidak ada evaluasi selama pelatihan"steps": Evaluasi setiapeval_steps"epoch": Evaluasi di akhir setiap epoch
- eval_steps (
intataufloat, opsional) — Jumlah langkah pembaruan di antara dua evaluasi jikaeval_strategy="steps". Akan secara default menggunakan nilai yang sama denganlogging_stepsjika 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, defaultFalse) — Saat melakukan evaluasi dan menghasilkan prediksi, hanya mengembalikan loss. - eval_on_start (
bool, opsional, defaultnyaFalse) — Apakah akan melakukan langkah evaluasi (pemeriksaan kewajaran) sebelum pelatihan untuk memastikan langkah validasi berjalan dengan benar. - eval_do_concat_batches (
bool, opsional, defaultnyaTrue) — Apakah akan menggabungkan (concat) input/losses/labels/predictions secara rekursif di antara batch. JikaFalse, maka data tersebut akan disimpan sebagai daftar, dengan setiap batch dipertahankan terpisah. - eval_use_gather_object (
bool, opsional, defaultFalse) — 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 dalamcompute_metricsfungsi jika diperlukan untuk perhitungan metrik. Opsi yang mungkin ditambahkan keinclude_for_metricsdaftar:"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, defaultFalse) — Jika diset keTrue, evaluasi akan memanggil compute_metrics di akhir setiap batch untuk mengakumulasi statistik alih-alih menyimpan semua eval logits di memori. Ketika diset keTrue, Anda harus meneruskan fungsi compute_metrics yang mengambil argumen booleancompute_result, yang ketika diteruskanTrue, 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, defaultFalse) — 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 menggunakanfrom_pretraineddengan opsi ini diset keTrue. - save_strategy (
stratauSaveStrategy, 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 setiapsave_steps."best": Penyimpanan dilakukan setiap kalibest_metricbaru tercapai.
- save_steps (
intataufloat, opsional, default 500) — Jumlah langkah pembaruan sebelum dua penyimpanan checkpoint jikasave_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, defaultFalse) — 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 darioutput_dir. Ketikaload_best_model_at_end=True, checkpoint terbaik selalu dipertahankan beserta yang terbaru. Misalnya,save_total_limit=5menyimpan 4 checkpoint terbaru ditambah yang terbaik - enable_jit_checkpoint (
bool, optional, defaults toFalse) — 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, setterminationGracePeriodSeconds(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, defaultFalse) — Apakah model akan didorong ke Hub setiap kali model disimpan. Jika diaktifkan,output_dirakan memulai direktori git yang disinkronkan dengan repo (ditentukan olehhub_model_id) dan kontennya akan didorong setiap kali penyimpanan dipicu (tergantung padasave_strategyAnda). 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 denganhf auth login. - hub_private_repo (
bool, opsional) — Apakah membuat repo menjadi privat. JikaNone(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 menjadiuser_name/output_dir_namedengan output_dir_name sebagai nama darioutput_dir. - hub_strategy (
stratauHubStrategy, 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, defaultFalse) — Kecuali iniTrue,Trainerakan 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, defaultFalse) — Muat checkpoint terbaik di akhir pelatihan. Memerlukaneval_strategyuntuk disetel. Ketika diaktifkan, checkpoint terbaik selalu disimpan (lihatsave_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 saatload_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_betterakan secara bawaan menjadiTruekecuali namanya diakhiri dengan"loss". Contoh:"accuracy","f1","eval_bleu". - greater_is_better (
bool, opsional) — Apakah nilai metrik yang lebih tinggi lebih baik. Nilai default berdasarkanmetric_for_best_model:Truejika nama metrik tidak diakhiri dengan"loss",Falseselain itu.
Melanjutkan Pelatihan
- ignore_data_skip (
bool, opsional, defaultFalse) — Saat melanjutkan pelatihan, lewati proses fast-forward melalui dataset untuk mencapai keadaan sebelumnya. JikaTrue, pelatihan dimulai dari awal dataset (pelanjutan lebih cepat tetapi hasilnya tidak akan cocok dengan pelatihan yang terputus). JikaFalse, data yang sudah dilihat akan dilewati (pelanjutan lebih lambat tetapi kelanjutan yang persis). - restore_callback_states_from_checkpoint (
bool, opsional, defaultFalse) — Pulihkan status callback dari checkpoint saat melanjutkan. JikaTrue, callback yang diteruskan ke Trainer akan ditimpa jika callback tersebut ada di checkpoint.
Reproduktibilitas
- full_determinism (
bool, opsional, defaultFalse) — JikaTrue, 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_inituntuk 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 denganseed. Hal ini dapat digunakan untuk memastikan reproduktibilitas pengambilan sampel data, terlepas dari seed model.
Konfigurasi Perangkat Keras
- use_cpu (
bool, opsional, defaultFalse) — Apakah akan menggunakan cpu. Jika diset ke False, kami akan menggunakan perangkat/backend torch yang tersedia.
Konfigurasi Accelerate
- accelerator_config (
str,dict, atauAcceleratorConfig, 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
AcceleratorConfigOpsi utama: split_batches(bool, defaultnyaFalse): Apakah batch akan dipecah di antara perangkat. JikaTrue, ukuran batch aktual sama di semua perangkat (total harus habis dibagi num_processes). JikaFalse, setiap perangkat mendapatkan ukuran batch yang ditentukan.dispatch_batches(bool): JikaTrue, hanya proses utama yang mengiterasi dataloader dan mendistribusikan batch ke perangkat. Defaultnya adalahTrueuntukIterableDataset,Falseuntuk kasus lainnya.even_batches(bool, defaultnyaTrue): Duplikat sampel dari awal dataset untuk memastikan semua worker mendapatkan ukuran batch yang sama.use_seedable_sampler(bool, defaultnyaTrue): Gunakan sampler acak yang sepenuhnya dapat di-seed untuk reproduktibilitas.use_configured_state(bool, defaultFalse): GunakanAcceleratorState/PartialStateyang sudah diinisialisasi sebelumnya alih-alih membuat yang baru. Hal ini dapat menyebabkan masalah dengan penyetelan hiperparameter.
- Path ke file konfigurasi JSON:
- parallelism_config (
ParallelismConfig, opsional) — Konfigurasi paralelisme untuk sesi pelatihan. Memerlukan Accelerate1.10.1
Dataloader
- dataloader_drop_last (
bool, opsional, defaultFalse) — 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, defaultnyaTrue) — Apakah Anda ingin mengunci memori di data loader atau tidak. Akan default keTrue. - dataloader_persistent_workers (
bool, opsional, defaultnyaFalse) — 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 menjadiFalse. - 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 dengandataloader_num_workers > 1, di mana defaultnya adalah"fork". Gunakan"spawn"saat streaming dari sumber yang objeknya tidak aman untuk fork (mis. HDFS viapyarrow). Di bawah"spawn", kodecollate_fnatau dataset kustom apa pun harus dapat diimpor pada level modul (tanpa lambda/closure). - dataloader_in_order (
bool, opsional, defaultTrue) — JikaTrue, data loader menghasilkan batch sesuai urutan worker yang dikirim. Atur keFalseuntuk menghasilkan batch segera setelah siap, yang dapat mengurangi latensi ekor untuk workload streamingIterableDataset. Memerlukan PyTorch >= 2.6. - remove_unused_columns (
bool, opsional, defaultTrue) — 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 dariXxxForQuestionAnswering, di mana dalam hal itu juga akan menyertakan kunci["start_positions", "end_positions"]. Anda hanya perlu menentukanlabel_namesjika Anda menggunakan nama label kustom atau jikaforwardmodel 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": MenggunakanRandomSampler(default)."sequential": MenggunakanSequentialSampler."group_by_length": MenggunakanLengthGroupedSampleruntuk mengelompokkan sampel dengan panjang yang kurang lebih sama bersama-sama (untuk meminimalkan padding dan menjadi lebih efisien)."batch_rebalance": MenggunakanBatchRebalanceSampleruntuk 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 kecualitrain_sampling_strategyadalah"group_by_length"atau"batch_rebalance"dan dataset adalah instance dariDataset.
DDP (DistributedDataParallel)
- ddp_find_unused_parameters (
bool, opsional) — Saat menggunakan pelatihan terdistribusi, nilai flagfind_unused_parametersyang diteruskan keDistributedDataParallel. Akan menjadiFalsejika gradient checkpointing digunakan,Trueselain itu. - ddp_bucket_cap_mb (
int, opsional) — Saat menggunakan pelatihan terdistribusi, nilai flagbucket_cap_mbyang diteruskan keDistributedDataParallel. - ddp_broadcast_buffers (
bool, opsional) — Saat menggunakan pelatihan terdistribusi, nilai flagbroadcast_buffersyang diteruskan keDistributedDataParallel. Akan menjadiFalsejika gradient checkpointing digunakan,Trueselain itu. - ddp_static_graph (
bool, opsional) — Saat menggunakan pelatihan terdistribusi, nilai flagstatic_graphyang diteruskan keDistributedDataParallel. - 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 panggilantorch.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, defaultNone) — Aktifkan PyTorch Fully Sharded Data Parallel (FSDP) untuk pelatihan terdistribusi. BerikanTrueuntuk mengaktifkan FSDP. - fsdp_config (
strataudict, opsional) — Pengaturan konfigurasi untuk saatfsdpdiaktifkan. Berikan path ke file konfigurasi JSON, sepertifsdp_config.json, atau dict yang sudah dimuat.Kunci yang didukung:
- versi (
int, opsional, default2): Versi FSDP yang akan digunakan (2untuk FSDP2,1untuk FSDP1 legacy). - reshard_after_forward (
bool, opsional, defaultTrue): Apakah akan melakukan resharding parameter setelah forward pass. Atur keFalseuntuk 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, defaultFalse): Offload parameter dan gradien ke CPU saat tidak digunakan untuk menghemat memori GPU. - activation_checkpointing (
bool, opsional, defaultFalse): Atur keTrueuntuk mengurangi memori dengan menghitung ulang aktivasi selama backward pass. Saat menggunakan FSDP, lebih disarankan menggunakan ini daripada argumen pelatihanactivation_checkpointing, yang memperkenalkan all-gather yang redundan dalam backward pass. - cpu_ram_efficient_loading (
bool, opsional, defaultFalse): Atur keTrueuntuk 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, misalnyaLlamaDecoderLayer. Biasanya tidak diperlukan: kebijakan pembungkusan akan kembali ke_no_split_modulesmodel, yang mencakup sebagian besar model transformers. - min_num_params (
int, opsional, default0): Jumlah minimum parameter per modul untuk auto-wrapping berbasis ukuran (digunakan denganauto_wrap_policy="SIZE_BASED_WRAP"). - xla (
bool, opsional, defaultFalse): 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, defaultFalse): Atur keTrueuntuk menggunakan gradient checkpointing pada setiap lapisan XLA FSDP yang dibungkus secara bersarang. Memerlukanxla=Truedan kebijakan auto-wrapping (min_num_paramsatautransformer_layer_cls_to_wrap).
- versi (
DeepSpeed
- deepspeed (
strordict, 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.
- Path ke file konfigurasi JSON DeepSpeed:
Debugging & Profiling (Eksperimental)
- debug (
stratau daftarDebugOption, 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, defaultnyaTrue) — 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, defaultFalse) — 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 keTruejikaeval_strategyberbeda dari"no". Argumen ini tidak digunakan secara langsung oleh Trainer, melainkan ditujukan untuk digunakan oleh skrip pelatihan/evaluasi Anda. - do_predict (
bool, opsional, defaultFalse) — 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, defaultnyaFalse) — 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, defaultFalse) — Apakah akan menggunakan generate untuk menghitung metrik generatif (ROUGE, BLEU). - generation_max_length (
int, opsional) —max_lengthyang digunakan pada setiap loop evaluasi saatpredict_with_generate=True. Akan secara default menggunakan nilaimax_lengthdari konfigurasi model. - generation_num_beams (
int, opsional) —num_beamsyang digunakan pada setiap loop evaluasi saatpredict_with_generate=True. Akan secara default menggunakan nilainum_beamsdari konfigurasi model. - generation_config (
stratauPathatau GenerationConfig, opsional) — Memungkinkan untuk memuat GenerationConfig darifrom_pretrainedmetode. 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.
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.