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

4个Qwen1.5微调代码中的问题 #149

Closed
xikaluo opened this issue Mar 11, 2024 · 6 comments
Closed

4个Qwen1.5微调代码中的问题 #149

xikaluo opened this issue Mar 11, 2024 · 6 comments

Comments

@xikaluo
Copy link

xikaluo commented Mar 11, 2024

您好,我在学习和测试项目代码的时候,发现有如下的几个地方用项目原始代码跑不通,想请您看一下是否是我的使用方式有问题:

  1. 使用https://github.com/alibaba/Pai-Megatron-Patch/blob/main/toolkits/model_checkpoints_convertor/qwen/checkpoint_reshaping_and_interoperability_qwen1.5.py 将HF的模型转换为Megatron模型之后,需要手动将tokenizer的merges.txt复制过来,否则无法正确加载tokenizer

  2. https://github.com/alibaba/Pai-Megatron-Patch/blob/main/megatron_patch/tokenizer/__init__.py#L104 这里读取的vocab_size和模型实际的embed_token维度不同,会导致后续无法加载模型权重。Qwen1.5的tokenizer词数(151643)和模型的embed_tokens维度(152064)对不上

  3. 使用pipeline parallel(PP为2)时,第二个GPU上的第一个layer拿到的hidden state会多一维,检查下来发现是hidden_states = self.input_tensor 这一行读取的input_tensor的第一维多了一维。这个问题目前不知道怎么解决

  4. PP改为1后,第3个问题暂时不再出现,但是此时会在megatron_patch/training.py的第344行update_successful, grad_norm, num_zeros_in_grad = optimizer.step(args, timers)处报错RuntimeError: Unknown layout,这个问题也不知道怎么解决。

希望上述问题能得到您的回答,谢谢~

@lwmlyy
Copy link
Collaborator

lwmlyy commented Mar 13, 2024

  1. 使用transformers 4.38.1 不需要merges.txt,你可以再试下,我这边测试的是7b模型,理论上所以模型的tokenizer应该是一样的
  2. 是的,qwen-hf格式的模型emb实际维度与tokenizer.vocab_size不一致导致此问题,需要在运行设置EXTRA_VOCAB_SIZE,可参考https://github.com/alibaba/Pai-Megatron-Patch/blob/main/examples/qwen1.5/run_finetune_megatron_qwen_withGA.sh 第二行,每个模型的EXTRA_VOCAB_SIZE设置为qwen-hf中config.json中的vocab_size减去tokenizer.vocab_size。
  3. 我这边验证了开启pp时可以正常跑,确认下运行环境、gpu卡数设置(tp*pp)

@smartparrot
Copy link

smartparrot commented Mar 14, 2024

extra-vocab-size是啥意思,为什么是293呀?152064-151643=421

@yanyc428
Copy link

我这边也出现了第一个问题,transformers版本是4.38.1,测试的7b模型

@xikaluo
Copy link
Author

xikaluo commented Mar 14, 2024

  1. 使用transformers 4.38.1 不需要merges.txt,你可以再试下,我这边测试的是7b模型,理论上所以模型的tokenizer应该是一样的
  2. 是的,qwen-hf格式的模型emb实际维度与tokenizer.vocab_size不一致导致此问题,需要在运行设置EXTRA_VOCAB_SIZE,可参考https://github.com/alibaba/Pai-Megatron-Patch/blob/main/examples/qwen1.5/run_finetune_megatron_qwen_withGA.sh 第二行
  3. 我这边验证了开启pp时可以正常跑,确认下运行环境、gpu卡数设置(tp*pp)
  1. 刚才又测试了一下,在transformers 4.38.1或4.38.2的情况下,不带merges.txt时还是会报错,但是如果把 https://github.com/alibaba/Pai-Megatron-Patch/blob/main/megatron_patch/tokenizer/__init__.py#L96 这一行的use_fast注释掉就不会出错了
  2. 之前没有想到可以通过EXTRA_VOCAB_SIZE来设置,不过比较神奇的是,qwen-1.5-的7B和14B模型,vocab_size是不一样的,EXTRA_VOCAB_SIZE=293只适合于7B模型。所以理论上可能用读取参数的方式来做会比较稳妥?
  3. 拉了一个nvidia的官方docker镜像之后可以正常运行了,估计是我之前某些地方没有配置好吧

@xikaluo
Copy link
Author

xikaluo commented Mar 14, 2024

extra-vocab-size是啥意思,为什么是293呀?152064-151643=421

看我上面的回复,7B和14B的vocab_size不一样,293是7B的

@cdxzyc
Copy link

cdxzyc commented Nov 4, 2024

hello,最近在微调qwen1.5-moe,请教一下:
qwen1.5系列的微调代码是不支持自动封装template的,我目前是手动封装templete,然后使用examples中默认的--dataset LLama-Pretrain-Raw,这样会有问题嘛
{
"instruction": "<|im_start|>system\nYou are a helpful assistant<|im_end|>\n<|im_start|>user\n你好<|im_end|>\n<|im_start|>assistant\n",
"input": "",
"output": "你好我是qwen<|im_end|>"
}

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

5 participants