Closed yuyun2000 closed 7 months ago
忘记说了,感谢各位大佬这么令人难以控制发出卧槽的项目
@WaitDumplings my dear dalao ,可以抽点时间看看吗,看你昨晚四点才休息,还是人在USA,有时差
我又看了一下代码,你们的Qwen似乎运行的是Qwen2Attention,而我跑的Qwen0.5B运行的是Qwen2SdpaAttention,这导致你们在Qwen2Attention里面的改动都没有运行,我在0.5B上强行使用Qwen2Attention结果是混乱的,我试一下1.8B的模型
这周处理一下,最近确实没太多时间。
好好,我刚试了一下1.8B也是相同的错误,辛苦大佬
你是不是从HF下成Qwen1.5-1.8B了。。。我们都是做Chat(Qwen1.5-1.8B-Chat)的适配的
我是用的是0.5B-chat和1.8B-chat,我发现不带chat的他的回复有问题,可能是解码方式带来的
可能是内部会进入不同的分支,我们目前是在1.8B的那条分支上做的修改,其它模型还没测试(应该差不多)。所以1.8B-Chat没有问题对吧?
1.8B-chat 在4.38.2版本中也是进入的Qwen2SdpaAttention,所以和0.5Bchat报错相同,我不清楚为什么你会进入原始的Qwen2Attention中,而且我之前试过强制使用Qwen2Attention进行推理,结果十分不对,我也很不理解 刚才我又尝试了一下这样设置:
QWEN2_ATTENTION_CLASSES = {
"eager": Qwen2Attention,
"flash_attention_2": Qwen2Attention,
"sdpa": Qwen2Attention,
}
也就是他只能使用原始的attention,生成的结果很不对
您这边是不是修改了config.json。您直接把仓库compile/files里对应的文件cp到下载好的模型文件(config.json) 以及实际用的那个transformers下的对应路径(modeling_qwen2.py)下。大概率是您config的architecture设置成的sdpa. 最后对齐一下版本(torch==2.0.1, transformers==4.38.2)
我们的配置文件中这个内容是一致的:
"architectures": [
"Qwen2ForCausalLM"
]
我现在统一版本再试一下
最稳妥的方法是在我们提供的docker里做,可能是你本地python版本环境比较多,最后进入的是别的分支。在docker里可以确保不会有问题。
使用torch=2.0.1可以正确转换,之前的2.2.1会报错。感谢回复哈哈
所以torch 版本不一样他的计算过程也不一样吗,都是同一条公式?
所以torch 版本不一样他的计算过程也不一样吗,都是同一条公式?
是的,你说的对,sdpa是新版的torch才支持的,反正很复杂就是了
torch版本不一致会导致modeling_xxx.py 里面进入不同的if else分支.
On Wed, Jul 3, 2024 at 4:52 PM Xuanwu Yun @.***> wrote:
所以torch 版本不一样他的计算过程也不一样吗,都是同一条公式?
是的,你说的对,sdpa是新版的torch才支持的,反正很复杂就是了
— Reply to this email directly, view it on GitHub https://github.com/sophgo/LLM-TPU/issues/3#issuecomment-2205455746, or unsubscribe https://github.com/notifications/unsubscribe-auth/AVLFO26FGAGCSP7ZUE4JZBLZKO3S7AVCNFSM6AAAAABEVKB7COVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMBVGQ2TKNZUGY . You are receiving this because you were mentioned.Message ID: @.***>
torch版本不一致会导致modeling_xxx.py 里面进入不同的if else分支. … On Wed, Jul 3, 2024 at 4:52 PM Xuanwu Yun @.> wrote: 所以torch 版本不一样他的计算过程也不一样吗,都是同一条公式? 是的,你说的对,sdpa是新版的torch才支持的,反正很复杂就是了 — Reply to this email directly, view it on GitHub <#3 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AVLFO26FGAGCSP7ZUE4JZBLZKO3S7AVCNFSM6AAAAABEVKB7COVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMBVGQ2TKNZUGY . You are receiving this because you were mentioned.Message ID: @.>
难道,你也喜欢吃饺子?
例程中1.8B和7B的模型混起来了,建议修改一下,我转换的是0.5B模型,目前还是卡在了导出onnx阶段
报错1 pos不匹配 已解决
报错如下:
我不是很清楚是是不是1.8B和0.5B的区别,但是我更倾向于是他修改的代码有问题,来看一下shape 修改后的函数如下:
看一下原函数的过程
看来是修改的多了两个转置?删掉看一下,删掉后这一点不再报错了
报错2 第一个block未输出cache
导出的第一个block没有kv的输出,相关代码端改成这样也能跑过去,但是感觉不太对 class QwenBlock(torch.nn.Module):
报错3 要输入huggingface上的cache列表
报错为
我看了因为这个类是huggingface上的DynamicCache,但是输入的是默认元组,所以没有这个方法?我不是很清楚为什么有这些问题 感觉不太是因为0.5B和1.8B的原因,因为他的配置文件基本相同,只有linear的通道数不一样,所以你们可以帮我检查一下吗