Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mistral持续预训练的脚本是否支持pp>=2? #183

Closed
kobayashikanna01 opened this issue Apr 17, 2024 · 4 comments
Closed

Mistral持续预训练的脚本是否支持pp>=2? #183

kobayashikanna01 opened this issue Apr 17, 2024 · 4 comments

Comments

@kobayashikanna01
Copy link

我在使用最新版的Pai-Megatron-Patch对Mistral-7b-v0.1进行持续预训练。

当我设置tp=1/pp=2或者tp=1/pp=4或者tp=2/pp=2时,均出现了下述错误:

File "/my_workspace/Pai-Megatron-Patch/megatron_patch/model/mistral/modeling_attn_mask_utils.py", line 198, in _prepare_4d_causal_attention_mask    
attention_mask, input_shape[-1], key_value_length, dtype=inputs_embeds.dtype                                                                   AttributeError: 'NoneType' object has no attribute 'dtype'

我的机器有8块显卡,我在_prepare_4d_causal_attention_mask函数内打印了:print(attention_mask.device,input_shape,inputs_embeds)
得到如下结果:

cuda:0 (1, 2048) 一个Tensor
cuda:1 (1, 2048) 一个Tensor
cuda:2 (1, 2048) 一个Tensor
cuda:3 (1, 2048) 一个Tensor
cuda:0 (1, 2048) None
cuda:1 (1, 2048) None
cuda:2 (1, 2048) None
cuda:3 (1, 2048) None

我自始至终未能看到来自cuda:4~cuda:7的输出。

当我设置tp=2 or 4/pp=1时,不会遇到这个错误。

我希望确认一下,目前Pai-Megatron-Patch是否能支持在pp>=2的情况下训练Mistral-7b?

@jerryli1981
Copy link
Collaborator

收到,请问您是按照Quick Start中的Mistral的流程测试的,然后在convert的时候发现PP>1有问题是吧?

@jerryli1981
Copy link
Collaborator

我刚测试了下,我跑如下的PP=2的convert脚本并没有报错,您是不是再参考下QS里面的流程
sh model_convertor.sh ../../../ /mnt/mistral-ckpts/Mistral-7B-v0.1 /mnt/mistral-ckpts/Mistral-7B-v0.1-tp4-pp2 4 2 mistral-7b 0 false

@kobayashikanna01
Copy link
Author

收到,请问您是按照Quick Start中的Mistral的流程测试的,然后在convert的时候发现PP>1有问题是吧?

您好,我是按照Megatron-LM-Dense模型训练流程的教程执行的。

转成mg格式的指令是sh model_convertor.sh ../../../ /mnt/mistral-ckpts/Mistral-7B-v0.1 /mnt/mistral-ckpts/Mistral-7B-v0.1-tp1-pp4 1 4 mistral-7b 0 false

但是启动训练脚本会出错。

====

同时,我还发现一个问题,目前我没法确定原因:
我在tp=4,pp=1的配置下,检验持续预训练的正确性。我使用的是Mistral-7B模型,数据只用了SlimPajama随机挑选的30G子集。batch_size我设置的是1M tokens,seq_len和padding_len均为4096。warmup 100步。

我发现:训练时前几步返回的loss 在4.0~5.0,但是能在50步之内下降到1.7左右。我通过打印token_id和word_emb,确认分词结果、加载模型参数均为正确。
我不能确定前几步loss值显著偏高的原因。

@jerryli1981
Copy link
Collaborator

PP>1问题已修复,烦请pull下最新的代码,这是PR,烦请Review:#185

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants