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