Accelerate documentation

FP8

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

and get access to the augmented documentation experience

to get started

FP8

Berikut adalah fungsi dan kelas yang berkaitan dengan implementasi FP8 yang mendasarinya

TERecipeKwargs

kelas accelerate.utils.TERecipeKwargs

< >

( 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, default False) — Apakah akan menggunakan FP8 autocast selama mode eval. Umumnya metrik yang lebih baik ditemukan ketika ini False.
  • 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 dari HYBRID, E4M3 atau E5M2. (Umumnya HYBRID untuk pelatihan, E4M3 atau E5M2 untuk 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 berupa max atau most_recent.
  • override_linear_precision (tuple dari tiga bool, opsional, default ke (False, False, False)) — Apakah akan mengeksekusi GEMM fprop, dgrad, dan wgrad dalam 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.

from accelerate import Accelerator
from accelerate.utils import TERecipeKwargs

kwargs = TERecipeKwargs(fp8_format="HYBRID")
accelerator = Accelerator(mixed_precision="fp8", kwargs_handlers=[kwargs])

AORecipeKwargs

kelas accelerate.utils.AORecipeKwargs

< >

( 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 ke None) — Konfigurasi untuk pelatihan FP8. Jika None, 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 operasi torch._scaled_mm guna 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 Float8LinearConfig Anda sendiri.

  • module_filter_func (Callable, opsional, default ke None) — Fungsi opsional yang harus menerima modul dan nama layer, serta mengembalikan nilai boolean yang menunjukkan apakah modul tersebut harus dikonversi ke FP8. Default-nya adalah accelerate.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

< >

( 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

accelerate.utils.has_transformer_engine_layers

< >

( model )

Mengembalikan apakah model tertentu memiliki lapisan transformer_engine atau tidak.

contextual_fp8_autocast

accelerate.utils.contextual_fp8_autocast

< >

( 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

accelerate.utils.apply_fp8_autowrap

< >

( modelfp8_recipe_handler )

Menerapkan context manager FP8 ke metode forward model

Update on GitHub