Accelerate documentation
FP8
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
< 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 )
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 trongHYBRID,E4M3hoặcE5M2. (Thường dùngHYBRIDcho huấn luyện,E4M3hoặcE5M2cho đá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 trongmaxhoặcmost_recent. - override_linear_precision (
tuplegồm babool, không bắt buộc, mặc định là(False, False, False)) — Có thực hiện các GEMMfprop,dgradvà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.
AORecipeKwargs
lớp 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 )
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ếuNone, 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áctorch._scaled_mmnhằ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
Float8LinearConfigcủ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
< source >( 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
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
< source >( 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
Áp dụng trình quản lý ngữ cảnh FP8 cho phương thức forward của mô hình