Open guozhiyao opened 2 months ago
@Jintao-Huang @tastelikefeet 能麻烦帮忙看下这个问题吗?
这个问题可以复现,我这里正在看
我这里复现了一下,实验结果发现streaming=true/false的情况下模型训练速度差不多,并没有发现cpu被打满的情况 我这里是双卡A100的环境,参数如下:
"--nproc_per_node=2",
"llm_sft.py",
"--model_type", "internvl2-8b",
"--sft_type", "lora",
"--preprocess_num_proc", "24",
"--model_id_or_path", "/mnt/workspace/yzhao/tastelikefeet/InternVL2-8B",
"--dataset", "llava-pretrain#400",
"--eval_steps", "10000",
"--save_steps", "10000",
"--batch_size", "2",
"--dataloader_num_workers", "4",
"--lazy_tokenize", "false",
"--streaming", "true",
"--max_steps", "10000",
"--ignore_args_error", "true",
之前cpu被打满是因为有其他进程占用,杀死后发现CPU在15%左右,GPU利用率大概在90%以上
我这里复现了一下,实验结果发现streaming=true/false的情况下模型训练速度差不多,并没有发现cpu被打满的情况 我这里是双卡A100的环境,参数如下:
"--nproc_per_node=2", "llm_sft.py", "--model_type", "internvl2-8b", "--sft_type", "lora", "--preprocess_num_proc", "24", "--model_id_or_path", "/mnt/workspace/yzhao/tastelikefeet/InternVL2-8B", "--dataset", "llava-pretrain#400", "--eval_steps", "10000", "--save_steps", "10000", "--batch_size", "2", "--dataloader_num_workers", "4", "--lazy_tokenize", "false", "--streaming", "true", "--max_steps", "10000", "--ignore_args_error", "true",
之前cpu被打满是因为有其他进程占用,杀死后发现CPU在15%左右,GPU利用率大概在90%以上
那我这种有可能是什么原因导致的呢?
@tastelikefeet 然后我看我这训练速度会随卡数发生变化。16张A100训练'train_speed(iter/s)': 0.021858
,64张A100训练'train_speed(iter/s)': 0.002796
.
测试了下,用2张A100训练,'train_speed(iter/s)': 0.313754
会变正常很多,但是卡数越多,效率越低。 @tastelikefeet
我也遇到了同样的问题。环境是8块H100,训练命令如下。同样的数据文件,下载到了本地。不加streaming在1.3 it/s, 加了streaming后速度慢了5-6倍。 NPROC_PER_NODE=8 \ MASTER_PORT=8888 \ swift sft \ --model_type internvl2-4b \ --model_id_or_path /mnt/bn/gecom-scl-cvnlp-public-v2/jnyang/models/InternVL2-4B \ --num_train_epochs 20 \ --sft_type full \ --max_length 8000 \ --dataset test_image_anno_6w_v2_mini.jsonl \ --output_dir debug_dummy_speed \ --report_to wandb \ --use_flash_attn True \ --streaming True \ --max_steps 10000
我的训练集数据量很大,有上百万,直接读取训练会OOM,所以使用streaming模式读取数据,但是发现训练速度很慢。
发现gpu的利用率很低
cpu直接被打满了
训练参数
这种情况要怎么设置来提高训练速度呢?