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

Dưới đây là các hàm và lớp liên quan đến triển khai FP8 cơ bản

TERecipeKwargs

lớp 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 )

Tham số

  • use_autocast_during_eval (bool, tuỳ chọn, mặc định là False) — Có sử dụng FP8 autocast trong chế độ eval hay không. Thông thường, các chỉ số tốt hơn được tìm thấy khi giá trị này là False.
  • margin (int, tùy chọn, mặc định là 0) — Khoảng cách (margin) được sử dụng cho việc điều chỉnh tỷ lệ gradient.
  • interval (int, tùy chọn, mặc định là 1) — Khoảng thời gian để xác định tần suất tính lại hệ số tỷ lệ.
  • fp8_format (str, tùy chọn, mặc định là “HYBRID”) — Định dạng cần sử dụng cho công thức FP8. Phải là một trong HYBRID, E4M3 hoặc E5M2. (Thường dùng HYBRID cho huấn luyện, E4M3 hoặc E5M2 cho đánh giá)
  • amax_history_len (int, tùy chọn, mặc định là 1024) — Chiều dài của lịch sử được sử dụng để tính hệ số tỷ lệ
  • amax_compute_algo (str, tuỳ chọn, mặc định là “most_recent”) — Thuật toán được sử dụng để tính hệ số tỷ lệ. Phải là một trong max hoặc most_recent.
  • override_linear_precision (tuple gồm ba bool, không bắt buộc, mặc định là (False, False, False)) — Có thực hiện các GEMM fprop, dgrad và wgrad ở độ chính xác cao hơn hay không.

Sử dụng đối tượng này trong Accelerator của bạn để tùy chỉnh việc khởi tạo công thức cho huấn luyện độ chính xác hỗn hợp FP8 với transformer-engine.

Để biết thêm thông tin về các args, vui lòng tham khảo tài liệu API.

from accelerate import Accelerator
from accelerate.utils import TERecipeKwargs

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

AORecipeKwargs

lớp 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 )

Tham số

  • config (torchao.float8.Float8LinearConfig, tuỳ chọn, mặc định là None) — Cấu hình cho việc huấn luyện FP8. Nếu None, một cấu hình mặc định sẽ được tạo với các giá trị hợp lý cho hầu hết các trường hợp sử dụng:
    • pad_inner_dim=True: Lấp đầy các chiều của ma trận để có thể chia hết cho 16, yêu cầu bắt buộc cho các thao tác torch._scaled_mm nhằm ngăn ngừa lỗi thời gian chạy.
    • enable_fsdp_float8_all_gather=True: Bật FP8 all-gather cho FSDP2. Điều này giúp tiết kiệm băng thông bộ nhớ bằng cách chuyển đổi kiểu dữ liệu của các tham số trước thao tác all-gather, tiết kiệm 50% băng thông so với BF16.

    Bạn có thể ghi đè các giá trị mặc định này bằng cách cung cấp một instance Float8LinearConfig của riêng bạn.

  • module_filter_func (Callable, tuỳ chọn, mặc định là None) — Hàm tuỳ chọn, phải nhận vào một module và tên lớp, và trả về một giá trị boolean chỉ ra liệu module có nên được chuyển đổi sang FP8 hay không. Mặc định là accelerate.utils.ao.filter_linear_layers. Xem nó để có một ví dụ.

Sử dụng đối tượng này trong Accelerator của bạn để tùy chỉnh việc khởi tạo công thức cho huấn luyện độ chính xác hỗn hợp FP8 với FP8 của torchao.

convert_model

accelerate.utils.convert_model

< >

( modelto_transformer_engine = True_convert_linear = True_convert_ln = True )

Chuyển đổi đệ quy các lớp linear và layernorm của một mô hình thành phần tương ứng của transformers_engine.

has_transformer_engine_layers

accelerate.utils.has_transformer_engine_layers

< >

( model )

Trả về việc một mô hình nhất định có chứa lớp transformer_engine hay không.

contextual_fp8_autocast

accelerate.utils.contextual_fp8_autocast

< >

( model_forwardfp8_recipeuse_during_eval = False )

Wrapper cho phương thức forward của model để áp dụng FP8 autocast. Có nhận biết ngữ cảnh, nghĩa là mặc định sẽ tắt FP8 autocast trong chế độ eval, điều này thường tốt hơn cho các chỉ số chính xác hơn.

apply_fp8_autowrap

accelerate.utils.apply_fp8_autowrap

< >

( modelfp8_recipe_handler )

Áp dụng trình quản lý ngữ cảnh FP8 cho phương thức forward của mô hình

Update on GitHub