Kwargs 处理程序
以下对象可以传递给主 Accelerator,以自定义如何创建与分布式训练或混合精度相关的某些 PyTorch 对象。
AutocastKwargs
在您的 Accelerator 中使用此对象来自定义 torch.autocast
的行为。有关每个参数的更多信息,请参阅此 上下文管理器 的文档。
DistributedDataParallelKwargs
class accelerate.DistributedDataParallelKwargs
< 源代码 >( dim: int = 0 broadcast_buffers: bool = True bucket_cap_mb: int = 25 find_unused_parameters: bool = False check_reduction: bool = False gradient_as_bucket_view: bool = False static_graph: bool = False comm_hook: DDPCommunicationHookType = <DDPCommunicationHookType.NO: 'no'> comm_wrapper: Literal = <DDPCommunicationHookType.NO: 'no'> comm_state_option: dict = <factory> )
在您的 Accelerator 中使用此对象来自定义您的模型如何包装在 torch.nn.parallel.DistributedDataParallel
中。有关每个参数的更多信息,请参阅此 包装器 的文档。
gradient_as_bucket_view
仅在 PyTorch 1.7.0 及更高版本中可用。
static_graph
仅在 PyTorch 1.11.0 及更高版本中可用。
FP8RecipeKwargs
class accelerate.utils.FP8RecipeKwargs
< 源代码 >( backend: Literal = None use_autocast_during_eval: bool = None opt_level: Literal = None margin: int = None interval: int = None fp8_format: Literal = None amax_history_len: int = None amax_compute_algo: Literal = None override_linear_precision: Tuple = None )
参数
- backend (
str
, 可选) — 要使用的 FP8 引擎。必须是"msamp"
(MS-AMP) 或"te"
(TransformerEngine) 之一。如果未传递,将使用环境中可用的任何一个,优先考虑 MS-AMP。 - use_autocast_during_eval (
bool
, 可选, 默认为False
) — 是否在评估模式下使用 FP8 自动转换。通常,当此值为False
时,会获得更好的指标。 - margin (
int
, 可选, 默认为 0) — 用于梯度缩放的边距。 - interval (
int
, 可选, 默认为 1) — 用于重新计算缩放因子的频率。 - fp8_format (
str
, 可选, 默认为 “HYBRID”) — 用于 FP8 食谱的格式。 必须是HYBRID
或E4M3
之一。 (通常训练使用HYBRID
,评估使用E4M3
) - amax_history_len (
int
, 可选, 默认为 1024) — 用于计算缩放因子的历史记录长度 - amax_compute_algo (
str
, 可选, 默认为 “most_recent”) — 用于计算缩放因子的算法。 必须是max
或most_recent
之一。 - override_linear_precision (三个
bool
的tuple
, 可选, 默认为(False, False, False)
) — 是否以更高精度执行fprop
、dgrad
和wgrad
GEMM。 - optimization_level (
str
),O1
、O2
之一。 (默认值为O2
) — 使用 MS-AMP 时应使用哪种级别的 8 位集体通信。 通常情况下:- O1: 权重梯度和
all_reduce
通信以 fp8 完成,降低了 GPU 内存使用量和通信带宽 - O2: 一阶优化器状态为 8 位,二阶状态为 FP16。 仅在使用 Adam 或 AdamW 时可用。 这可以保持准确性,并可能节省最多的内存。
- 03: 特别是对于 DeepSpeed,实现功能,以便模型的权重和主权重存储在 FP8 中。 如果选择了
fp8
并且启用了 deepspeed,则默认情况下将使用它。 (目前不可用)。
- O1: 权重梯度和
在您的 Accelerator 中使用此对象,以使用 transformer-engine
或 ms-amp
自定义 FP8 混合精度训练的食谱初始化。
ProfileKwargs
class accelerate.ProfileKwargs
< 源代码 >( activities: Optional = None schedule_option: Optional = None on_trace_ready: Optional = None record_shapes: bool = False profile_memory: bool = False with_stack: bool = False with_flops: bool = False with_modules: bool = False output_trace_dir: Optional = None )
参数
- on_trace_ready (
Callable
, 可选, 默认为None
) — 在分析过程中,每当调度返回ProfilerAction.RECORD_AND_SAVE
时调用的可调用对象。 - record_shapes (
bool
, 可选, 默认为False
) — 保存有关操作符输入形状的信息。 - profile_memory (
bool
, 可选, 默认为False
) — 跟踪张量内存分配/释放 - with_stack (
bool
, 可选, 默认为False
) — 为操作符记录源信息(文件和行号)。 - with_flops (
bool
, 可选, 默认为False
) — 使用公式估计特定操作符的 FLOPS - with_modules (
bool
, 可选, 默认为False
) — 记录对应于操作符调用栈的模块层次结构(包括函数名称)。 - output_trace_dir (
str
, 可选, 默认为None
) — 以 Chrome JSON 格式导出收集的跟踪。 Chrome 使用 ‘chrome://tracing’ 查看 json 文件。 默认为 None,表示分析不存储 json 文件。
在你的 Accelerator 中使用此对象来自定义分析器的初始化。 请参阅此 上下文管理器 的文档,以了解有关每个参数的更多信息。
torch.profiler
仅在 PyTorch 1.8.1 及更高版本中可用。
示例
from accelerate import Accelerator
from accelerate.utils import ProfileKwargs
kwargs = ProfileKwargs(activities=["cpu", "cuda"])
accelerator = Accelerator(kwargs_handlers=[kwargs])
使用当前配置构建分析器对象。
GradScalerKwargs
在您的 Accelerator 中使用此对象来自定义混合精度的行为,特别是如何创建使用的 torch.cuda.amp.GradScaler
。有关每个参数的更多信息,请参阅此 缩放器 的文档。
GradScaler
仅在 PyTorch 1.5.0 及更高版本中可用。
InitProcessGroupKwargs
class accelerate.InitProcessGroupKwargs
< 源代码 >( backend: Optional = 'nccl' init_method: Optional = None timeout: Optional = None )
在您的 Accelerator 中使用此对象来自定义分布式进程的初始化。有关每个参数的更多信息,请参阅此 方法 的文档。
注意:如果 timeout
设置为 None
,则默认值将基于 backend
的设置方式。
KwargsHandler
实现数据类 to_kwargs()
方法的内部混合。
返回一个字典,其中包含与该类默认值不同的属性和值。