[ PROMPT_NODE_22284 ]
custom-plugins
[ SKILL_DOCUMENTATION ]
# Accelerate 自定义插件
## 概述
Accelerate 允许创建**自定义插件**,以扩展内置选项(DDP, FSDP, DeepSpeed)之外的分布式训练策略。
## 插件架构
### 基础插件结构
python
from accelerate.utils import DistributedDataParallelKwargs
from dataclasses import dataclass
@dataclass
class CustomPlugin:
"""自定义训练插件。"""
# 插件配置
param1: int = 1
param2: str = "default"
def __post_init__(self):
# 验证逻辑
if self.param1 = 1")
### 使用自定义插件
python
from accelerate import Accelerator
# 创建插件
custom_plugin = CustomPlugin(param1=4, param2="value")
# 传递给 Accelerator
accelerator = Accelerator(
custom_plugin=custom_plugin # 并非真实参数,仅作示例
)
## 内置插件示例
### 1. GradScalerKwargs (FP16 配置)
python
from accelerate.utils import GradScalerKwargs
# 为 FP16 配置梯度缩放器
scaler_kwargs = GradScalerKwargs(
init_scale=2.**16, # 初始损失缩放
growth_factor=2.0, # 缩放增长率
backoff_factor=0.5, # 缩放回退率
growth_interval=2000, # 增加缩放的步数间隔
enabled=True # 启用缩放器
)
accelerator = Accelerator(
mixed_precision='fp16',
kwargs_handlers=[scaler_kwargs] # 作为 kwargs 处理程序传递
)
**用例**: 微调 FP16 梯度缩放行为
### 2. DistributedDataParallelKwargs
python
from accelerate.utils import DistributedDataParallelKwargs
# 配置 DDP 行为
ddp_kwargs = DistributedDataParallelKwargs(
bucket_cap_mb=25, # 梯度桶大小
find_unused_parameters=False, # 查找未使用的参数(较慢)
check_reduction=False, # 检查梯度归约
gradient_as_bucket_view=True, # 内存优化
static_graph=False # 静态计算图
)
accelerator = Accelerator(
kwargs_handlers=[ddp_kwargs]
)
**用例**: 针对特定模型优化 DDP 性能
### 3. FP8RecipeKwargs (H100 FP8)
python
from accelerate.utils import FP8RecipeKwargs
# 配置 FP8 训练 (H100)
fp8_recipe = FP8RecipeKwargs(
backend="te", # TransformerEngine 后端
margin=0, # 缩放边距
interval=1, # 缩放间隔
fp8_format="HYBRID",