Closed bonre closed 3 months ago
方便看一下 推理问题的 样本的回答嘛
是没有读到图片嘛
@Jintao-Huang 抱歉具体的内容不太方便展示,这里展示问题所在。 上下涂红的地方是被抹去的数据,从内容上看是读到了图片的。 问题在于,如图所示,在im_end前的内容就是预期要的推理结果, 而此时推理不会停止,在输出了\</s>以后,模型又去输出图中的内容。一直到设置的max_new_tokens才会结束。
我这里是推理正常的. 您可以尝试一下下面的案例,是否正常么
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
from swift.llm import sft_main, SftArguments, infer_main, InferArguments
infer_main(InferArguments(model_type='internlm-xcomposer2-4khd-7b-chat', dataset='coco-en-mini#2000', infer_backend='lmdeploy'))
我这里是推理正常的. 您可以尝试一下下面的案例,是否正常么
import os os.environ['CUDA_VISIBLE_DEVICES'] = '0' from swift.llm import sft_main, SftArguments, infer_main, InferArguments infer_main(InferArguments(model_type='internlm-xcomposer2-4khd-7b-chat', dataset='coco-en-mini#2000', infer_backend='lmdeploy'))
@Jintao-Huang 这段案例是正常的。 现在的问题在于,相同的merge后的模型,相同的gen_config的情况下, 使用swift集成的lmdeploy 和 使用lmdeploy 推理所得到的结果却不同。 从结果上看集成的可以推理出预期的结果,但是无法正确识别im_end; 而单独使用lmdeploy的推理结果也很符合预期,证明并不是merge后的模型被训坏了。 不太知道是哪里出了问题 :( 我这边能找出的区别就是 pipline 中的 ChatTemplateConfig 中的 model_name 可能不同?
swift是不使用lmdeploy的template的
推理的数据集没有变化,当使用的infer_backend=pt时,结果是正常的,可以识别到im_end
好的 我知道是什么原因了...
fix了,再试试呢
@Jintao-Huang 抱歉具体的内容不太方便展示,这里展示问题所在。 上下涂红的地方是被抹去的数据,从内容上看是读到了图片的。 问题在于,如图所示,在im_end前的内容就是预期要的推理结果, 而此时推理不会停止,在输出了以后,模型又去输出图中的内容。一直到设置的max_new_tokens才会结束。
@Jintao-Huang 非常感谢!这个问题已经解决了。 目前测试下来的结果,使用 swift集成 和 直接使用lmdeploy 推理的内容基本一致。 虽然配置一样结果有些许区别,但我估计是input的图片位置不同导致? 因为直接使用lmdeploy用的prompt是对齐internlm-xcomposer2的finetune指定的自定义template。 再次感谢您的工作! 方便的话可以为我解释一些BUG的原因吗?因为我看commit修改的貌似是InternVL的结构,为什么会影响IXC2呢?
加了eos_token
非常感谢贵组的工作,能够在swift中集成lmdeploy! 然而,事实上我在使用的过程中遇到了一些问题。 我使用如下脚本进行推理:
运行后能够推理模型,然而推理的结果并不理想,从log上看应该是无法正确识别\<s>这个特殊token。 我这边之前是将merge后的模型放到写好的lmdeploy的推理脚本当中进行推理,在这边推理的结果是正常的。 在这边的设置中,model_name如下:
我这边感觉,是否是因为我使用的是4khd的版本,在swift中指定了model_type,而在lmdeploy中没有找到对应的模型所导致推理效果不佳呢? lmdeploy我使用的是 0.5.3 版本,在之前的更新中,lmdeploy已经把4khd归并到Internlm-xcomposer2中, site-packages/lmdeploy/model.py中对应内容如下:
不知道这算不算BUG,还是我的设置有问题呢? 烦请能为我解答,非常感谢!@Jintao-Huang