deepspeed的参数很多,都可以在ds_config里面配置,字典格式,但是英文文档让人看着总感觉不习惯,所以,看完英文文档的同时,将其部分翻译成中文文档,以供后续训练的时候观看。
deepspeed的参数
train_batch_size = train_micro_batch_size_per_gpu * gradient_accumulation *GPU train_batch_size:int 如果同时提供了train_micro_batch_size_per_gpu和gradient_accumulation_steps,则可以省略 train_micro_batch_size_per_gpu:int gradient_accumulation_steps:int 会累计梯度,降低通信频率,但是会造成更大的内存
优化器:
"optimizer": {
"type": "Adam",
"params": {
"lr": 0.001,
"betas": [
0.8,
0.999
],
"eps": 1e-8,
"weight_decay": 3e-7
}
}
#one bit Adam
"optimizer": {
"type": "OneBitAdam",
"params": {
"lr": 0.001,
"betas": [
0.8,
0.999
],
"eps": 1e-8,
"weight_decay": 3e-7,
"freeze_step": 400, 冻结步骤
"cuda_aware": false, 指示底层 MPI 库支持 CUDA-Aware 通信
"comm_backend_name": "nccl" 通讯后端名称
}
}
# 0/1Adam
"optimizer": {
"type": "ZeroOneAdam",
"params": {
"lr": 1e-3,
"weight_decay": 0.01,
"bias_correction": false,
"var_freeze_step": 1000, 更新方差的最新步骤
"var_update_scaler": 16,更新方差的间隔
"local_step_scaler": 1000,根据学习率策略缩放局部步长的区间
"local_step_clipper": 16,具有学习率策略的局部步长的最大间隔
"cuda_aware": false,指示底层 MPI 库支持 CUDA-Aware 通信
"comm_backend_name": "nccl"指示要使用哪个后端实现
}
}
1 Bit Adam 的另一个例子
"optimizer": {
"type": "OneBitLamb",
"params": {
"lr": 11e-3,
"weight_decay": 0.01,
"bias_correction": false,
"max_coeff": 0.3, 原始 LAMB 算法的缩放系数上限和 1 位 LAMB 的预热阶段
"min_coeff": 0.01,原始 LAMB 算法和 1 位 LAMB 预热阶段的缩放系数下限
"freeze_step": 1000, 原始 LAMB 算法和 1 位 LAMB 预热阶段的缩放系数下限
"cuda_aware": false,
"comm_backend_name": "nccl",
"coeff_beta": 0.9,
"factor_max": 4.0,
"factor_min": 0.5,
"factor_threshold": 0.1
}
}
调度器
调度器的链接Learning Rate Schedulers — DeepSpeed 0.10.4 documentation
"scheduler": {
"type": "WarmupLR",
"params": {
"warmup_min_lr": 0,
"wa

本文主要介绍了DeepSpeed的参数配置,这些参数可在ds_config里以字典格式配置。文中详细阐述了优化器、调度器、FP16训练、BF16、自动混合精度训练等内容,还提及了ZeRO内存优化、优化器卸载、参数卸载等优化方法,以及训练过程记录等要点。
最低0.47元/天 解锁文章
503

被折叠的 条评论
为什么被折叠?



