DeepSpeed
DeepSpeed,由零冗余优化器 (ZeRO) 提供支持,是一个用于在 GPU 上训练和拟合非常大型模型的优化库。它提供多种 ZeRO 阶段,每个阶段通过对优化器状态、梯度、参数进行分区并在 CPU 或 NVMe 上进行卸载来逐步节省更多 GPU 内存。DeepSpeed 集成了 训练器 类,大多数设置会自动为您处理。
但是,如果您想在没有 训练器 的情况下使用 DeepSpeed,Transformers 提供一个 HfDeepSpeedConfig
类。
HfDeepSpeedConfig
class transformers.integrations.HfDeepSpeedConfig
< 源代码 >( config_file_or_dict )
此对象包含一个 DeepSpeed 配置字典,可以快速查询诸如零阶段之类的东西。
此对象的 weakref
被存储在模块的全局变量中,以便能够从诸如 Trainer 对象不可用(例如 from_pretrained
和 _get_resized_embeddings
)的区域访问配置。 因此,在程序仍在运行时,此对象必须保持活动状态。
Trainer 使用 HfTrainerDeepSpeedConfig
子类。 该子类具有将配置与 TrainingArguments 的值同步的逻辑,方法是替换特殊占位符值:"auto"
。 缺少此特殊逻辑,DeepSpeed 配置将不会以任何方式修改。