怎么样改电脑内存配置参数(如何通过优化训练参数降低大模型内存使用)
之前文章介绍过关于不同精度数据类型下内存用量评估:
https://www.toutiao.com/article/7220269709047005711。
现在拿微调LLaMA-7B大模型训练参数配置json文件示例开启训练参数优化:
{
"model_type":"Llama",
"model_name_or_path":"decapoda-research/llama-7b-hf",
"data_path":"data_dir/datasets_dev.json",
"output_dir":"trained_models/Llama",
"batch_size":8,
"per_device_train_batch_size":1,
"num_epochs":2,
"learning_rate":2e-5,
"cutoff_len":1024,
"val_set_size":1000,
"val_set_rate":0.1,
"save_steps":1000,
"eval_steps":1000,
"warmup_steps":10,
"logging_steps":10,
"gradient_accumulation_steps":16
}
看哪些需要内存:
几个核心参数调优:
1.Batchsizes
batch_size一般建议为8,请根据实际硬件与数据类型合理评估,例如fp16一般建议batch_size=8,A100的GPU设置为64。
batch_size,per_device_train_batch_size,gradient_accumulation_steps结合合理使用
三者关系公式:gradient_accumulation_steps=model_config['batch_size']//model_config['per_device_train_batch_size']if"gradient_accumulation_steps"notinmodel_configelsemodel_config['gradient_accumulation_steps']
A100的不同batch_size的基准性能测试
RTX-3090的不同batch_size基准性能测试
2.GradientAccumulation
梯度累积有点"积硅步之千里"味道,使用内存显著减少,训练速度比正常普通的稍微慢点。如下图:使用gradient_accumulation_steps=4内存从不使用的14.9GB降到8.6GB,速度从8.86到7.75
3.GradientCheckpointing
开启gradient_checkpointing=True的话比上面不开启的8681MB降到6775MB,训练速度从7.75到5.99,一般开启后慢大约20%。