Transformers documentation
Accelerate
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: 4Chạ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.pyaccelerator_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.
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",
)Truyền tệp cấu hình JSON hoặc dict vào ~TrainingArguments.deepspeed. Xem DeepSpeed để có hướng dẫn đầy đủ và tham chiếu cấu hình.
from transformers import TrainingArguments
TrainingArguments(
...,
deepspeed="path/to/ds_config.json",
)DDP được cấu hình trực tiếp thông qua các trường của TrainingArguments. Xem DDP để biết thêm chi tiết.
from transformers import TrainingArguments
TrainingArguments(
...,
ddp_backend="nccl",
ddp_find_unused_parameters=False,
ddp_bucket_cap_mb=25,
ddp_timeout=1800,
)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.