Transformers documentation
Utilitas untuk Trainer
Utilitas untuk Trainer
Halaman ini mencantumkan semua fungsi utilitas yang digunakan oleh Trainer.
Sebagian besar dari itu hanya berguna jika Anda sedang mempelajari kode Trainer di pustaka tersebut.
Utilitas
kelas transformers.EvalPrediction
< source >( predictions: numpy.ndarray | tuple[numpy.ndarray]label_ids: numpy.ndarray | tuple[numpy.ndarray]inputs: numpy.ndarray | tuple[numpy.ndarray] | None = Nonelosses: numpy.ndarray | tuple[numpy.ndarray] | None = None )
Output evaluasi (selalu berisi label), untuk digunakan dalam menghitung metrik.
kelas transformers.IntervalStrategy
< source >( valuenames = Nonemodule = Nonequalname = Nonetype = Nonestart = 1boundary = None )
Fungsi bantu untuk perilaku yang dapat direproduksi selama pelatihan terdistribusi. Lihat https://pytorch.org/docs/stable/notes/randomness.html untuk pytorch
transformers.set_seed
< source >( seed: intdeterministic: bool = False )
Fungsi bantu untuk perilaku yang dapat direproduksi guna mengatur seed di random, numpy, torch (jika terinstal).
transformers.torch_distributed_zero_first
< source >( local_rank: int )
Decorator untuk membuat semua proses dalam pelatihan terdistribusi menunggu setiap local_master untuk melakukan sesuatu.
Internal Callbacks
kelas transformers.trainer_callback.CallbackHandler
< source >( callbacksmodelprocessing_classoptimizerlr_scheduler )
Kelas internal yang hanya memanggil daftar callback secara berurutan.
Parser Argumen Trainer
kelas transformers.HfArgumentParser
< source >( dataclass_types: typing.Union[transformers.hf_argparser.DataClassType, collections.abc.Iterable[transformers.hf_argparser.DataClassType], NoneType] = None**kwargs )
Subkelas dari argparse.ArgumentParser ini menggunakan type hints pada dataclasses untuk menghasilkan argumen.
The class is designed to play well with the native argparse. In particular, you can add more (non-dataclass backed)
arguments to the parser after initialization and you’ll get the output back after parsing as an additional
namespace. Optional: To create sub argument groups use the _argument_group_name attribute in the dataclass.
parse_args_into_dataclasses
< source >( args = Nonereturn_remaining_strings = Falselook_for_args_file = Trueargs_filename = Noneargs_file_flag = None ) → Tuple consisting of
Parameter
- args — Daftar string untuk diurai. Nilai default diambil dari sys.argv. (sama seperti argparse.ArgumentParser)
- return_remaining_strings — Jika true, juga kembalikan daftar string argumen yang tersisa.
- look_for_args_file — Jika true, akan mencari file “.args” dengan nama dasar yang sama dengan skrip entry point untuk proses ini, dan akan menambahkan konten potensialnya ke argumen baris perintah.
- args_filename — Jika bukan None, file ini akan digunakan alih-alih file “.args” yang ditentukan dalam argumen sebelumnya.
- args_file_flag — Jika bukan None, akan mencari file dalam argumen baris perintah yang ditentukan dengan flag ini. Flag dapat ditentukan beberapa kali dan prioritas ditentukan oleh urutannya (yang terakhir menang).
Mengembalikan
Tuple yang terdiri dari
- instance dataclass dalam urutan yang sama seperti yang diteruskan ke inisialisator.
- jika berlaku, namespace tambahan untuk argumen (yang tidak didukung dataclass) lainnya yang ditambahkan ke parser setelah inisialisasi.
- Daftar potensial string argumen yang tersisa. (sama seperti argparse.ArgumentParser.parse_known_args)
Parse argumen command-line menjadi instance dari tipe dataclass yang ditentukan.
Ini bergantung pada ArgumentParser.parse_known_args dari argparse. Lihat dokumentasi di:
docs.python.org/3/library/argparse.html#argparse.ArgumentParser.parse_args
parse_dict
< source >( args: dictallow_extra_keys: bool = False ) → Tuple consisting of
Parameter
- args (
dict) — dict yang berisi nilai konfigurasi - allow_extra_keys (
bool, opsional, defaultnyaFalse) — Defaultnya False. Jika False, akan melempar pengecualian jika dict berisi kunci yang tidak diurai.
Mengembalikan
Tuple yang terdiri dari
- instance dataclass dalam urutan yang sama seperti yang diteruskan ke inisialisator.
Metode bantu alternatif yang sama sekali tidak menggunakan argparse, melainkan menggunakan dict dan mengisi tipe dataclass.
parse_json_file
< source >( json_file: str | os.PathLikeallow_extra_keys: bool = False ) → Tuple consisting of
Parameter
- json_file (
stratauos.PathLike) — Nama file dari file json yang akan diurai - allow_extra_keys (
bool, opsional, defaultnyaFalse) — Defaultnya False. Jika False, akan melempar pengecualian jika file json berisi kunci yang tidak diurai.
Mengembalikan
Tuple yang terdiri dari
- instance dataclass dalam urutan yang sama seperti yang diteruskan ke inisialisator.
Metode bantu alternatif yang sama sekali tidak menggunakan argparse, melainkan memuat file json dan mengisi tipe dataclass.
parse_yaml_file
< source >( yaml_file: str | os.PathLikeallow_extra_keys: bool = False ) → Tuple consisting of
Parameter
- yaml_file (
stratauos.PathLike) — Nama file dari file yaml yang akan diurai - allow_extra_keys (
bool, opsional, defaultnyaFalse) — Defaultnya False. Jika False, akan melempar pengecualian jika file json berisi kunci yang tidak diurai.
Mengembalikan
Tuple yang terdiri dari
- instance dataclass dalam urutan yang sama seperti yang diteruskan ke inisialisator.
Metode bantu alternatif yang sama sekali tidak menggunakan argparse, melainkan memuat file yaml dan mengisi tipe dataclass.
Utilitas Debug
kelas transformers.debug_utils.DebugUnderflowOverflow
< source >( modelmax_frames_to_save = 21trace_batch_nums = Noneabort_after_batch_num = None )
Parameter
- model (
nn.Module) — Model yang akan di-debug. - max_frames_to_save (
int, opsional, default 21) — Jumlah frame ke belakang yang akan direkam - trace_batch_nums(
list[int], opsional, defaultnya[]) — Nomor batch mana yang akan ditelusuri (mematikan deteksi) - abort_after_batch_num (`int“, opsional) — Apakah akan mengakhiri setelah nomor batch tertentu selesai
Kelas debug ini membantu mendeteksi dan memahami di mana model mulai menjadi sangat besar atau sangat kecil, dan yang lebih penting lagi elemen bobot dan aktivasi nan atau inf.
Terdapat 2 mode kerja:
- Deteksi underflow/overflow (default)
- Pelacakan min/maks absolut batch tertentu tanpa deteksi
Mode 1: Deteksi underflow/overflow
Untuk mengaktifkan deteksi underflow/overflow, inisialisasi objek dengan model:
debug_overflow = DebugUnderflowOverflow(model)
lalu jalankan pelatihan seperti biasa dan jika nan atau inf terdeteksi pada setidaknya satu elemen bobot, input, atau output, modul ini akan melempar pengecualian dan mencetak max_frames_to_save frame yang mengarah ke kejadian ini,
masing-masing frame melaporkan
- nama modul yang sepenuhnya memenuhi syarat ditambah nama kelas yang
forward-nya dijalankan - nilai min dan max absolut dari semua elemen untuk setiap bobot modul, serta input dan output
Sebagai contoh, berikut adalah header dan beberapa frame terakhir dalam laporan deteksi untuk google/mt5-small yang dijalankan dalam fp16
presisi campuran :
Detected inf/nan during batch_number=0
Last 21 forward frames:
abs min abs max metadata
[...]
encoder.block.2.layer.1.DenseReluDense.wi_0 Linear
2.17e-07 4.50e+00 weight
1.79e-06 4.65e+00 input[0]
2.68e-06 3.70e+01 output
encoder.block.2.layer.1.DenseReluDense.wi_1 Linear
8.08e-07 2.66e+01 weight
1.79e-06 4.65e+00 input[0]
1.27e-04 2.37e+02 output
encoder.block.2.layer.1.DenseReluDense.wo Linear
1.01e-06 6.44e+00 weight
0.00e+00 9.74e+03 input[0]
3.18e-04 6.27e+04 output
encoder.block.2.layer.1.DenseReluDense T5DenseGatedGeluDense
1.79e-06 4.65e+00 input[0]
3.18e-04 6.27e+04 output
encoder.block.2.layer.1.dropout Dropout
3.18e-04 6.27e+04 input[0]
0.00e+00 inf outputAnda dapat melihat di sini bahwa T5DenseGatedGeluDense.forward menghasilkan aktivasi output, di mana nilai absolut maksimumnya sekitar 62,7K, yang sangat mendekati batas atas fp16 yaitu 64K. Pada frame berikutnya terdapat Dropout yang menormalisasi ulang bobot setelah menolkan beberapa elemen, sehingga mendorong nilai absolut maksimum melebihi 64K, dan kita mengalami overflow.
Seperti yang dapat Anda lihat, frame sebelumnya adalah yang perlu kita periksa ketika angka mulai menjadi sangat besar untuk angka fp16.
Pelacakan dilakukan dalam hook maju, yang dipanggil segera setelah forward selesai.
Secara default, 21 frame terakhir yang dicetak. Anda dapat mengubah default ini untuk menyesuaikan dengan kebutuhan Anda. Sebagai contoh:
debug_overflow = DebugUnderflowOverflow(model, max_frames_to_save=100)Untuk memvalidasi bahwa Anda telah mengatur fitur debugging ini dengan benar, dan Anda bermaksud menggunakannya dalam pelatihan yang mungkin memakan waktu berjam-jam untuk selesai, jalankan terlebih dahulu dengan pelacakan normal yang diaktifkan untuk beberapa batch, seperti yang dijelaskan di bagian berikutnya.
Mode 2. Pelacakan min/maks absolut batch tertentu tanpa deteksi
Mode kerja kedua adalah pelacakan per-batch dengan fitur deteksi underflow/overflow dimatikan.
Misalnya, Anda ingin memantau nilai minimum dan maksimum absolut untuk semua bahan dari setiap panggilan forward dari
batch yang diberikan, dan hanya lakukan itu untuk batch 1 dan 3. Kemudian Anda menginstansiasi kelas ini sebagai :
debug_overflow = DebugUnderflowOverflow(model, trace_batch_nums=[1, 3])Dan sekarang batch penuh 1 dan 3 akan ditelusuri menggunakan format yang sama seperti yang dijelaskan di atas. Batch menggunakan indeks 0.
Ini berguna jika Anda tahu bahwa program mulai berperilaku tidak normal setelah nomor batch tertentu, sehingga Anda dapat langsung melompat ke area tersebut.
Penghentian dini:
Anda juga dapat menentukan nomor batch setelah mana pelatihan akan dihentikan, dengan:
debug_overflow = DebugUnderflowOverflow(model, trace_batch_nums=[1, 3], abort_after_batch_num=3)Fitur ini terutama berguna dalam mode tracing, tetapi Anda dapat menggunakannya untuk mode apa pun.
Kinerja:
Karena modul ini mengukur min/`max absolut dari setiap bobot model pada setiap forward, proses pelatihan akan melambat. Oleh karena itu, ingatlah untuk mematikannya setelah kebutuhan debugging terpenuhi.