Transformers documentation

Accelerate

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

and get access to the augmented documentation experience

to get started

Accelerate

Accelerate cung cấp một giao diện thống nhất cho các backend huấn luyện phân tán như FSDP hoặc DeepSpeed. Nó phát hiện môi trường của bạn (số lượng GPU, backend phân tán, độ chính xác hỗn hợp, v.v.) và tự động cấu hình huấn luyện, dù bạn đang dùng 1 GPU với DDP hay 8 GPU với FSDP.

Accelerate bọc model trong wrapper phân tán phù hợp, di chuyển nó sang thiết bị đúng và tạo optimizer tương thích. Trong quá trình huấn luyện, Accelerate sử dụng phương thức backward của riêng nó để xử lý việc scale gradient cho mixed precision. Trainer gọi các API Accelerate phù hợp và ủy thác toàn bộ cơ chế phân tán cho Accelerate.

Cấu hình Accelerate cho Trainer bằng cách sử dụng tệp cấu hình Accelerate hoặc TrainingArguments.

Tệp cấu hình Accelerate

Chạy lệnh accelerate config và trả lời các câu hỏi về phần cứng và cấu hình huấn luyện của bạn. Thao tác này sẽ tạo tệp default_config.yaml trong bộ nhớ đệm. Ví dụ bên dưới dành cho FSDP.

compute_environment: LOCAL_MACHINE
distributed_type: FSDP
fsdp_config:
  fsdp_version: 2
  fsdp_reshard_after_forward: true
  fsdp_cpu_offload: false
  fsdp_auto_wrap_policy: TRANSFORMER_BASED_WRAP
  fsdp_cpu_ram_efficient_loading: true
  fsdp_activation_checkpointing: false
  fsdp_state_dict_type: SHARDED_STATE_DICT
  fsdp_transformer_layer_cls_to_wrap: LlamaDecoderLayer
mixed_precision: bf16
num_machines: 1
num_processes: 4

Chạy accelerate launch với một script dựa trên Trainer, và Accelerate sẽ đọc tệp cấu hình để thiết lập huấn luyện. Các đối số fsdp_config và deepspeed là không cần thiết vì tệp cấu hình Accelerate đã bao gồm các cài đặt tương tự.

accelerate launch train.py

accelerator_config chấp nhận các cài đặt không có đối số cấp cao riêng. Ví dụ, đặt non_blocking=True cùng với dataloader_pin_memory() để chồng chéo việc truyền dữ liệu với tính toán nhằm tăng thông lượng GPU.

from transformers import TrainingArguments

TrainingArguments(
    ...,
    dataloader_pin_memory=True,
    accelerator_config={
        "non_blocking": True,
    },
)

TrainingArguments

Truyền cấu hình cụ thể cho backend vào TrainingArguments. Phương thức create_accelerator_and_postprocess() sẽ đọc các cài đặt và cấu hình quá trình huấn luyện.

FSDP
DeepSpeed
DDP

Truyền tệp cấu hình JSON hoặc dict vào ~TrainingArguments.fsdp_config. Xem FSDP để có hướng dẫn đầy đủ và tham chiếu cấu hình.

from transformers import TrainingArguments

TrainingArguments(
    ...,
    fsdp=True,
    fsdp_config="path/to/fsdp.json",
)

Các bước tiếp theo

  • Xem DDP để huấn luyện song song dữ liệu khi mô hình của bạn vừa trên một GPU.
  • Xem FSDP để chia nhỏ tham số, gradient và trạng thái optimizer trên các GPU.
  • Xem DeepSpeed để tìm hiểu về tối ưu hóa ZeRO và offloading.
Update on GitHub