ms-swift icon indicating copy to clipboard operation
ms-swift copied to clipboard

单机多卡训练-显存负载不均衡

Open sunjinguo92 opened this issue 1 month ago • 2 comments

4张卡 训练中途报cuda out of memory, 4张卡会存在2张卡显存打满,其他两张空余很多, 目前通过减小batchsize 方式去控制,请问有什么方法能平衡各张卡的负载?

nproc_per_node=4 NPROC_PER_NODE=$nproc_per_node
swift sft
--model models/jina-code-embeddings-1.5b
--task_type embedding
--model_type qwen2_5
--train_type full
--dataset emd_train_data/train_data_v1.0/data_v1.0/train_and_val_data.json
--split_dataset_ratio 0.05
--eval_strategy steps
--output_dir output/train_v1.0/jina-1.5b
--eval_steps 2000
--num_train_epochs 3
--save_steps 2000
--per_device_train_batch_size 8
--per_device_eval_batch_size 4
--gradient_accumulation_steps 4
--learning_rate 1e-5
--loss_type infonce
--label_names labels
--dataloader_drop_last true
--deepspeed zero2

sunjinguo92 avatar Nov 12 '25 02:11 sunjinguo92

4张卡 训练中途报cuda out of memory, 4张卡会存在2张卡显存打满,其他两张空余很多, 目前通过减小batchsize 方式去控制,请问有什么方法能平衡各张卡的负载?

nproc_per_node=4 NPROC_PER_NODE=$nproc_per_node swift sft --model models/jina-code-embeddings-1.5b --task_type embedding --model_type qwen2_5 --train_type full --dataset emd_train_data/train_data_v1.0/data_v1.0/train_and_val_data.json --split_dataset_ratio 0.05 --eval_strategy steps --output_dir output/train_v1.0/jina-1.5b --eval_steps 2000 --num_train_epochs 3 --save_steps 2000 --per_device_train_batch_size 8 --per_device_eval_batch_size 4 --gradient_accumulation_steps 4 --learning_rate 1e-5 --loss_type infonce --label_names labels --dataloader_drop_last true --deepspeed zero2

附一下deepspeed版本

slin000111 avatar Nov 14 '25 08:11 slin000111

你好deepseed 版本 0.17.6

slin000111 @.***> 于2025年11月14日周五 16:43写道:

slin000111 left a comment (modelscope/ms-swift#6555) https://github.com/modelscope/ms-swift/issues/6555#issuecomment-3531618230

4张卡 训练中途报cuda out of memory, 4张卡会存在2张卡显存打满,其他两张空余很多, 目前通过减小batchsize 方式去控制,请问有什么方法能平衡各张卡的负载?

nproc_per_node=4 NPROC_PER_NODE=$nproc_per_node swift sft --model models/jina-code-embeddings-1.5b --task_type embedding --model_type qwen2_5 --train_type full --dataset emd_train_data/train_data_v1.0/data_v1.0/train_and_val_data.json --split_dataset_ratio 0.05 --eval_strategy steps --output_dir output/train_v1.0/jina-1.5b --eval_steps 2000 --num_train_epochs 3 --save_steps 2000 --per_device_train_batch_size 8 --per_device_eval_batch_size 4 --gradient_accumulation_steps 4 --learning_rate 1e-5 --loss_type infonce --label_names labels --dataloader_drop_last true --deepspeed zero2

附一下deepspeed版本

— Reply to this email directly, view it on GitHub https://github.com/modelscope/ms-swift/issues/6555#issuecomment-3531618230, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGV66GMQVCD4BIQ72AI5WOL34WI4NAVCNFSM6AAAAACL2UPZNSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTKMZRGYYTQMRTGA . You are receiving this because you authored the thread.Message ID: @.***>

sunjinguo92 avatar Nov 19 '25 02:11 sunjinguo92

4张卡 训练中途报cuda out of memory, 4张卡会存在2张卡显存打满,其他两张空余很多, 目前通过减小batchsize 方式去控制,请问有什么方法能平衡各张卡的负载? nproc_per_node=4 NPROC_PER_NODE=$nproc_per_node swift sft --model models/jina-code-embeddings-1.5b --task_type embedding --model_type qwen2_5 --train_type full --dataset emd_train_data/train_data_v1.0/data_v1.0/train_and_val_data.json --split_dataset_ratio 0.05 --eval_strategy steps --output_dir output/train_v1.0/jina-1.5b --eval_steps 2000 --num_train_epochs 3 --save_steps 2000 --per_device_train_batch_size 8 --per_device_eval_batch_size 4 --gradient_accumulation_steps 4 --learning_rate 1e-5 --loss_type infonce --label_names labels --dataloader_drop_last true --deepspeed zero2

附一下deepspeed版本

lora 微调的时候显存负载差距更大

Image

sunjinguo92 avatar Nov 27 '25 02:11 sunjinguo92