Qwen2会有110B和chat版本吗

#11
by aabbccddwasd - opened

在B站评测里发现qwen2 72b对某些问题的回答弱于1.5的110b 这和跑分数据不符
有人认为这事因为qwen2没有到chat版本 我觉得有可能 我也觉得参数量是个问题 110b对72b
我想知道qwen2是否有chat和110b版本 如果有 什么时候发布
还有想知道instruct版和chat版有何区别

Same here, I'm on the same scenary, Qwen1.5 100b performs much way better on following complex instructions, and when I use it with guidance frameworks for force to JSON output 1.5 100b performs a lot better.

Is there any plans to release a Qwen2 110b version?

best regards, and keep going! great job

Qwen org

chat or instruct is the same thing; no plans for 110b right now; the recipes for post-training were different, which may affect certain scenarios

any badcases you can share?

chat or instruct is the same thing; no plans for 110b right now; the recipes for post-training were different, which may affect certain scenarios

any badcases you can share?

比如这个问题 天气预报说本周星期三会下雨,昨天果然下雨了,今天星期几?
qwen2 72b回答错误 qwen1.5 110b回答正确

我没有实测 但是有人实测了 这个视频https://www.bilibili.com/video/BV1v1421C76G/?spm_id_from=333.337.search-card.all.click&vd_source=165ee36afc214ab03391592086dab0d9

chat or instruct is the same thing; no plans for 110b right now; the recipes for post-training were different, which may affect certain scenarios

any badcases you can share?

no particular cases, but in RAG applications 110b follow better prompt instructions, and trends to not hallucinate, instead 72b did not follow prompt instruction and trends to use internal knowledge and hallucinate when context text in the RAG its not useful for the user question, 110b trends to notify that the context did not answer the question, 72b trends to answer the question even when context text is not useful.

so 110b its better in follow instructions and reason capabilities,

推理能力成谜~
“天气预报说本周星期三会下雨,昨天果然下雨了,今天星期几?”
这个问题在我本地部署的7B上回答是星期四
image.png

但是在qwen2 72b instruct,解释了好长一段,回答却是错误的,。
image.png

人工提醒进行纠正后才能正确回答
image.png

在57B,经过纠正和引导都无法正确回答
image.png

对于星期几那个问题,我进一步测试发现如果让qwen2多答几次是有概率答对的,但是110b基本不会错,而且我测试的qwen2是8bit版本

对于星期几那个问题,我进一步测试发现如果让qwen2多答几次是有概率答对的,但是110b基本不会错,而且我测试的qwen2是8bit版本

我也发现qwen2文本理解能力和推理能力都不如110b,但是qwen2有更大的prompt engineering空间,110b很多时候对prompt的具体要求不敏感,无法通过设计prompt更好优化输出

对于星期几那个问题,我进一步测试发现如果让qwen2多答几次是有概率答对的,但是110b基本不会错,而且我测试的qwen2是8bit版本

我也发现qwen2文本理解能力和推理能力都不如110b,但是qwen2有更大的prompt engineering空间,110b很多时候对prompt的具体要求不敏感,无法通过设计prompt更好优化输出

能不能细讲下 我现在的需求对于prompt遵循能力要求很强 具体是模型要按格式输出我让他输出的东西 目前来看110B表现不错 不会出现一个地方死活调不通的情况
我看上面有人说Qwen2复杂指令遵循能力很差并且经常幻觉 你说的prompt engineering空间是指哪一方面的

对于星期几那个问题,我进一步测试发现如果让qwen2多答几次是有概率答对的,但是110b基本不会错,而且我测试的qwen2是8bit版本

我也发现qwen2文本理解能力和推理能力都不如110b,但是qwen2有更大的prompt engineering空间,110b很多时候对prompt的具体要求不敏感,无法通过设计prompt更好优化输出

能不能细讲下 我现在的需求对于prompt遵循能力要求很强 具体是模型要按格式输出我让他输出的东西 目前来看110B表现不错 不会出现一个地方死活调不通的情况
我看上面有人说Qwen2复杂指令遵循能力很差并且经常幻觉 你说的prompt engineering空间是指哪一方面的

我是指当你改变你的prompt的时候,对输出影响会比较大。比如说我希望不生成一些特定风格的输出,如果用qwen2的话,通过改变prompt可能可以达成想要的效果,但是qwen1.5-110b在遵循指令上表现比较差。如果你的需求是按具体格式的话,你是否尝试过使用extra_body 参数?

对于星期几那个问题,我进一步测试发现如果让qwen2多答几次是有概率答对的,但是110b基本不会错,而且我测试的qwen2是8bit版本

我也发现qwen2文本理解能力和推理能力都不如110b,但是qwen2有更大的prompt engineering空间,110b很多时候对prompt的具体要求不敏感,无法通过设计prompt更好优化输出

能不能细讲下 我现在的需求对于prompt遵循能力要求很强 具体是模型要按格式输出我让他输出的东西 目前来看110B表现不错 不会出现一个地方死活调不通的情况
我看上面有人说Qwen2复杂指令遵循能力很差并且经常幻觉 你说的prompt engineering空间是指哪一方面的

我是指当你改变你的prompt的时候,对输出影响会比较大。比如说我希望不生成一些特定风格的输出,如果用qwen2的话,通过改变prompt可能可以达成想要的效果,但是qwen1.5-110b在遵循指令上表现比较差。如果你的需求是按具体格式的话,你是否尝试过使用extra_body 参数?

能否详细讲解下extra_body参数,我在网上没找到关于这个的详细资料

对于星期几那个问题,我进一步测试发现如果让qwen2多答几次是有概率答对的,但是110b基本不会错,而且我测试的qwen2是8bit版本

我也发现qwen2文本理解能力和推理能力都不如110b,但是qwen2有更大的prompt engineering空间,110b很多时候对prompt的具体要求不敏感,无法通过设计prompt更好优化输出

能不能细讲下 我现在的需求对于prompt遵循能力要求很强 具体是模型要按格式输出我让他输出的东西 目前来看110B表现不错 不会出现一个地方死活调不通的情况
我看上面有人说Qwen2复杂指令遵循能力很差并且经常幻觉 你说的prompt engineering空间是指哪一方面的

我是指当你改变你的prompt的时候,对输出影响会比较大。比如说我希望不生成一些特定风格的输出,如果用qwen2的话,通过改变prompt可能可以达成想要的效果,但是qwen1.5-110b在遵循指令上表现比较差。如果你的需求是按具体格式的话,你是否尝试过使用extra_body 参数?

能否详细讲解下extra_body参数,我在网上没找到关于这个的详细资料

是vllm部署之后才有的参数 https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html。比如你需要你的输出是[Positive, Negative] 中的一个, 或者一个json格式 都可以用这个, 详情看guided_choice, guided_json, guided_regex etc...

对于星期几那个问题,我进一步测试发现如果让qwen2多答几次是有概率答对的,但是110b基本不会错,而且我测试的qwen2是8bit版本

我也发现qwen2文本理解能力和推理能力都不如110b,但是qwen2有更大的prompt engineering空间,110b很多时候对prompt的具体要求不敏感,无法通过设计prompt更好优化输出

能不能细讲下 我现在的需求对于prompt遵循能力要求很强 具体是模型要按格式输出我让他输出的东西 目前来看110B表现不错 不会出现一个地方死活调不通的情况
我看上面有人说Qwen2复杂指令遵循能力很差并且经常幻觉 你说的prompt engineering空间是指哪一方面的

我是指当你改变你的prompt的时候,对输出影响会比较大。比如说我希望不生成一些特定风格的输出,如果用qwen2的话,通过改变prompt可能可以达成想要的效果,但是qwen1.5-110b在遵循指令上表现比较差。如果你的需求是按具体格式的话,你是否尝试过使用extra_body 参数?

能否详细讲解下extra_body参数,我在网上没找到关于这个的详细资料

是vllm部署之后才有的参数 https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html。比如你需要你的输出是[Positive, Negative] 中的一个, 或者一个json格式 都可以用这个, 详情看guided_choice, guided_json, guided_regex etc...
我简单看了下,感觉不一定能承担我的任务,我因为需要同时与用户对话和输出json还要流式输出所以用的思路是用[-answer_start-][-answer_end-]包裹输出内容,同时后面跟着一段json,我并不确定vllm是否能达成这个要求,我目前手写了一段prompt,可以用,不过可以试试vllm

对于星期几那个问题,我进一步测试发现如果让qwen2多答几次是有概率答对的,但是110b基本不会错,而且我测试的qwen2是8bit版本

我也发现qwen2文本理解能力和推理能力都不如110b,但是qwen2有更大的prompt engineering空间,110b很多时候对prompt的具体要求不敏感,无法通过设计prompt更好优化输出

能不能细讲下 我现在的需求对于prompt遵循能力要求很强 具体是模型要按格式输出我让他输出的东西 目前来看110B表现不错 不会出现一个地方死活调不通的情况
我看上面有人说Qwen2复杂指令遵循能力很差并且经常幻觉 你说的prompt engineering空间是指哪一方面的

llama.cpp可以要求模型按照GBNF描述的语法来约束生成结果,也可以按照指定的Json schema来生成,这是通过控制模型的采样过程实现的,所以基本上可以达到100%的成功率

对于星期几那个问题,我进一步测试发现如果让qwen2多答几次是有概率答对的,但是110b基本不会错,而且我测试的qwen2是8bit版本

我也发现qwen2文本理解能力和推理能力都不如110b,但是qwen2有更大的prompt engineering空间,110b很多时候对prompt的具体要求不敏感,无法通过设计prompt更好优化输出

能不能细讲下 我现在的需求对于prompt遵循能力要求很强 具体是模型要按格式输出我让他输出的东西 目前来看110B表现不错 不会出现一个地方死活调不通的情况
我看上面有人说Qwen2复杂指令遵循能力很差并且经常幻觉 你说的prompt engineering空间是指哪一方面的

llama.cpp可以要求模型按照GBNF描述的语法来约束生成结果,也可以按照指定的Json schema来生成,这是通过控制模型的采样过程实现的,所以基本上可以达到100%的成功率

谢谢提醒,但是lamma.cpp比vllm慢的太多导致速度已经变得不能接受了,,,
vllm在理论上能否通过同样的原理实现这一功能?

可以的,修改大模型生成的最后一个环节,叫做decode或者sampling,需要修改源代码.
不过也有使用agent框架来实现强格式输出的办法,我现在使用dspy框架( https://github.com/stanfordnlp/dspy )和阿里云Qwen2-72B-Instruct dashscope API,
虽然这种方式最终效果不如在大模型采样环节进行控制,但实现复杂精细输出成功率很高。
dspy框架也是使用Pydantic定义输入输出类型,转换为json schema来指示大模型生成, dspy的prompt自动生成机制大幅提升了生成准确率。
当然,也可以使用另外一些开源框架控制输出格式(比如guidance或者outlines),避免修改推理框架代码,不过这几个框架我没有实际项目经验。

最后还要提醒的是,有时候大模型产生幻觉,可能是json schema描述的不够精确,比如需要指定生成period时,period可以从'daily', 'weekly'和'monthly'三选一,这时简单的声明period为string类型还不够,还需要在json schema中说明peroid为enum: ['daily', 'weekly', 'monthly'],这样大模型基本上不会再产生幻觉,为period生成一个不存在的值。

可以的,修改大模型生成的最后一个环节,叫做decode或者sampling,需要修改源代码.
不过也有使用agent框架来实现强格式输出的办法,我现在使用dspy框架( https://github.com/stanfordnlp/dspy )和阿里云Qwen2-72B-Instruct dashscope API,
虽然这种方式最终效果不如在大模型采样环节进行控制,但实现复杂精细输出成功率很高。
dspy框架也是使用Pydantic定义输入输出类型,转换为json schema来指示大模型生成, dspy的prompt自动生成机制大幅提升了生成准确率。
当然,也可以使用另外一些开源框架控制输出格式(比如guidance或者outlines),避免修改推理框架代码,不过这几个框架我没有实际项目经验。

最后还要提醒的是,有时候大模型产生幻觉,可能是json schema描述的不够精确,比如需要指定生成period时,period可以从'daily', 'weekly'和'monthly'三选一,这时简单的声明period为string类型还不够,还需要在json schema中说明peroid为enum: ['daily', 'weekly', 'monthly'],这样大模型基本上不会再产生幻觉,为period生成一个不存在的值。

感谢 听起来非常有用 而且不会带来过大的开发难度或者造成性能损失

Sign up or log in to comment