SpongebBob / Finetune-ChatGLM2-6B

ChatGLM2-6B 全参数微调,支持多轮对话的高效微调。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

请问全参数微调需要什么配置呢?

bigbigwatermalon opened this issue · comments

我是用双卡A100 80G做全量微调,但是一直爆OOM的错误。
db_train_finetune.sh内容是:

MASTER_PORT=8888

deepspeed --num_gpus=1 --master_port $MASTER_PORT main.py
--deepspeed deepspeed.json
--do_train
--do_eval
--train_file belleMath-train5K.json
--validation_file belleMath-dev1K.json
--prompt_column conversations
--overwrite_cache
--model_name_or_path ../models/ChatGLM2_model
--output_dir ./output/adgen-chatglm-6b-ft-$LR-$DATE
--overwrite_output_dir
--max_length 64
--per_device_train_batch_size 1
--per_device_eval_batch_size 1
--gradient_accumulation_steps 12
--predict_with_generate
--num_train_epochs 3
--logging_steps 20
--save_steps 1000
--learning_rate $LR
--do_eval False
--fp16 True
--save_total_limit 5 \

deepspeed用的是项目默认的配置:
{
"optimizer": {
"type": "AdamW",
"params": {
"lr": "auto",
"weight_decay": "auto",
"torch_adam": true,
"adam_w_mode": true
}
},
"scheduler": {
"type": "WarmupDecayLR",
"params": {
"warmup_min_lr": "auto",
"warmup_max_lr": "auto",
"warmup_num_steps": "auto",
"total_num_steps": "auto"
}
},
"fp16": {
"enabled": "auto",
"loss_scale": 0,
"loss_scale_window": 1000,
"initial_scale_power": 16,
"hysteresis": 2,
"min_loss_scale": 1
},
"zero_optimization": {
"stage": 2,
"allgather_partitions": true,
"allgather_bucket_size": 2e8,
"reduce_scatter": true,
"reduce_bucket_size": "auto",
"overlap_comm": true,
"contiguous_gradients": true
},
"gradient_accumulation_steps": "auto",
"gradient_clipping": "auto",
"steps_per_print": 20,
"train_batch_size": "auto",
"train_micro_batch_size_per_gpu": "auto",
"wall_clock_breakdown": false
}

同问

commented

--num_gpus=1 这里应该设置成2

--num_gpus=1 这里应该设置成2

我改成2也是一样,我后来没有使用transformers库,就可以跑了。

--num_gpus=1 这里应该设置成2

我改成2也是一样,我后来没有使用transformers库,就可以跑了。

请教下如何修改成不需要使用transformers库来运行呢?谢谢!

你好,就是按照经典的深度学习流程,
`model_engine, optimizer, _, _ = deepspeed.initialize(config=conf,
model=model,
model_parameters=model.parameters()
)

model_engine.train()

...

outputs = model_engine.forward(input_ids=input_ids, labels=labels)

loss = outputs[0]

model_engine.backward(loss)
`

这样子来训练,完全不使用Transformers的Trainer。

你好,就是按照经典的深度学习流程, `model_engine, optimizer, _, _ = deepspeed.initialize(config=conf, model=model, model_parameters=model.parameters() )

model_engine.train()

...

outputs = model_engine.forward(input_ids=input_ids, labels=labels)

loss = outputs[0]

model_engine.backward(loss) `

这样子来训练,完全不使用Transformers的Trainer。

请问有开源的可以参考一下嘛?

你好,就是按照经典的深度学习流程, 'model_engine, optimizer, _, _ = deepspeed.initialize(config=conf, model=model, model_parameters=model.parameters() )
model_engine.火车()
...
输出 = model_engine.转发(input_ids=input_ids,标签=标签)
损耗 = 输出[0]
model_engine.向后(损失) '
这样子来训练,完全不使用Transformers的Trainer。

请问有开源的可以参考一下嘛?

https://github.com/microsoft/DeepSpeedExamples 可以参考deepspeed官网示例

你好,就是按照经典的深度学习流程, 'model_engine, optimizer, _, _ = deepspeed.initialize(config=conf, model=model, model_parameters=model.parameters() )
model_engine.火车()
...
输出 = model_engine.转发(input_ids=input_ids,标签=标签)
损耗 = 输出[0]
model_engine.向后(损失) '
这样子来训练,完全不使用Transformers的Trainer。

请问有开源的可以参考一下嘛?

https://github.com/microsoft/DeepSpeedExamples 可以参考deepspeed官网示例

有可以直接run的版本嘛?

https://github.com/microsoft/DeepSpeedExamples 可以参考deepspeed官网示例

有可以直接run的版本嘛?
这个库的rlhf step1就是微调,你可以参考一下,我最近在做rlhf,可能后续我会整理成更简单的版本库