Accelerate documentation
FP8
FP8
Berikut adalah fungsi dan kelas yang berkaitan dengan implementasi FP8 yang mendasarinya
TERecipeKwargs
kelas accelerate.utils.TERecipeKwargs
< source >( use_autocast_during_eval: bool | None = Nonemargin: int | None = Noneinterval: int | None = Nonefp8_format: typing.Literal['HYBRID', 'E4M3', 'E5M2'] = Noneamax_history_len: int | None = Noneamax_compute_algo: typing.Literal['max', 'most_recent'] = Noneoverride_linear_precision: tuple = Noneuse_mxfp8_block_scaling: bool | None = None )
Parameter
- use_autocast_during_eval (
bool, opsional, defaultFalse) — Apakah akan menggunakan FP8 autocast selama mode eval. Umumnya metrik yang lebih baik ditemukan ketika iniFalse. - margin (
int, opsional, default 0) — Margin yang digunakan untuk penskalaan gradien. - interval (
int, opsional, default 1) — Interval yang digunakan untuk menentukan seberapa sering faktor penskalaan dihitung ulang. - fp8_format (
str, opsional, default “HYBRID”) — Format yang digunakan untuk resep FP8. Harus salah satu dariHYBRID,E4M3atauE5M2. (UmumnyaHYBRIDuntuk pelatihan,E4M3atauE5M2untuk evaluasi) - amax_history_len (
int, opsional, default 1024) — Panjang riwayat yang digunakan untuk komputasi faktor penskalaan - amax_compute_algo (
str, opsional, default “most_recent”) — Algoritma yang digunakan untuk perhitungan faktor penskalaan. Harus berupamaxataumost_recent. - override_linear_precision (
tupledari tigabool, opsional, default ke(False, False, False)) — Apakah akan mengeksekusi GEMMfprop,dgrad, danwgraddalam presisi yang lebih tinggi.
Gunakan objek ini di Accelerator Anda untuk menyesuaikan inisialisasi resep untuk pelatihan presisi campuran FP8 dengan transformer-engine.
Untuk informasi lebih lanjut tentang args, silakan merujuk ke dokumentasi API.
AORecipeKwargs
kelas accelerate.utils.AORecipeKwargs
< source >( config: ForwardRef('Float8LinearConfig') | None = Nonemodule_filter_func: typing.Callable | None = Nonepad_inner_dim: bool | None = Noneenable_fsdp_float8_all_gather: bool | None = None )
Parameter
- config (
torchao.float8.Float8LinearConfig, opsional, default keNone) — Konfigurasi untuk pelatihan FP8. JikaNone, konfigurasi default akan dibuat dengan nilai default yang masuk akal untuk sebagian besar kasus penggunaan:pad_inner_dim=True: Menambahkan padding pada dimensi matriks agar dapat dibagi habis oleh 16, yang diperlukan untuk operasitorch._scaled_mmguna mencegah error saat runtime.enable_fsdp_float8_all_gather=True: Mengaktifkan FP8 all-gather untuk FSDP2. Ini memberikan penghematan bandwidth memori dengan meng-cast parameter sebelum operasi all-gather, menghemat 50% bandwidth dibandingkan BF16.
Anda dapat menimpa nilai bawaan ini dengan menyediakan instance
Float8LinearConfigAnda sendiri. - module_filter_func (
Callable, opsional, default keNone) — Fungsi opsional yang harus menerima modul dan nama layer, serta mengembalikan nilai boolean yang menunjukkan apakah modul tersebut harus dikonversi ke FP8. Default-nya adalahaccelerate.utils.ao.filter_linear_layers. Lihat di sana untuk contoh.
Gunakan objek ini di Accelerator Anda untuk menyesuaikan inisialisasi resep untuk pelatihan presisi campuran FP8 dengan FP8 torchao.
convert_model
accelerate.utils.convert_model
< source >( modelto_transformer_engine = True_convert_linear = True_convert_ln = True )
Mengonversi secara rekursif lapisan linear dan layernorm dari sebuah model ke padanannya di transformers_engine.
has_transformer_engine_layers
Mengembalikan apakah model tertentu memiliki lapisan transformer_engine atau tidak.
contextual_fp8_autocast
accelerate.utils.contextual_fp8_autocast
< source >( model_forwardfp8_recipeuse_during_eval = False )
Wrapper untuk metode forward sebuah model untuk menerapkan FP8 autocast. Konteks sadar, artinya secara default akan menonaktifkan FP8 autocast selama mode eval, yang umumnya lebih baik untuk metrik yang lebih akurat.
apply_fp8_autowrap
Menerapkan context manager FP8 ke metode forward model