wangzhaode / llm-export

llm-export can export llm model to onnx.
Apache License 2.0
187 stars 21 forks source link

转换chatglm3-6b模型失败 #12

Closed 791136190 closed 8 months ago

791136190 commented 8 months ago

命令用的:"--path", "models/chatglm3-6b", "--type", "chatglm3-6b", "--export_split", "--onnx_path", "onnx/chatglm3-6b" 报错如下,看着是因为kv cache只有一组数据

not enough values to unpack (expected 2, got 1) File "/root/.cache/huggingface/modules/transformers_modules/chatglm3-6b/modeling_chatglm.py", line 413, in forward cache_k, cache_v = kv_cache

wangzhaode commented 8 months ago

好的 我看一下

wangzhaode commented 8 months ago

你看下llm_model/chatgglm3-6b下的python文件是否拷贝到--path指定的文件夹下

791136190 commented 8 months ago

应该是拷贝了,不然的话if pytorch_major_version >= 2 and False:这里会不一样。我看了一下应该history的kv需要一个tuple,但是只输入了一组导致的,我在另外一个工程里面单独实现了导出,但是在你的工程里面加进去会有很其它问题,就没尝试了

wangzhaode commented 8 months ago

好吧 llm-export会把pastkv改成torch.tensor并且第一个维度是2; 所以对源文件进行了修改,看你的错误好像是没有修改或者后续又被改掉了导致的

791136190 commented 8 months ago

我今天又重新pull了代码并测试,还是一样的报错。cache_k, cache_v = kv_cache unpack失败。下面是我的一些pip包版本,会有关系吗?我是通过pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple安装的指定依赖 但是我注释掉了MNN==2.8.0,因为我暂时只需要onnx的文件测试

image

791136190 commented 8 months ago

还有一个问题,在 class Chatglm2_6b中设置的self.past_kv_shape = [len(self.blocks), 1, 0, 2, 32, 80]是这样的,但是chatglm2-2b的kv_channels配置是128,这是设置为80是怎么跑出结果的?

wangzhaode commented 8 months ago

我看了下确实是搞错了 这个shape写错了 是在支持phi-2的时候不小心把这个shape也改成phi-2的了,这个应该是: self.past_kv_shape = [28, 2, 0, 1, 2, 128]

你先修改了就可以导出了

wangzhaode commented 8 months ago

我修复下

791136190 commented 8 months ago

我看了下确实是搞错了 这个shape写错了 是在支持phi-2的时候不小心把这个shape也改成phi-2的了,这个应该是: self.past_kv_shape = [28, 2, 0, 1, 2, 128]

你先修改了就可以导出了

嗯。我先修改尝试一下。感谢回复

wangzhaode commented 8 months ago

d91c83fa87b4a39f3596bc5f5f9e7cd63b337849

已修复