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

Windows本地部署经过量化的模型貌似无法理解中文Prompt? #11

Closed
LainNya opened this issue Mar 30, 2023 · 37 comments
Closed

Comments

@LainNya
Copy link

LainNya commented Mar 30, 2023

你好,我在推理时遇到了问题,在尝试输入中文Prompt时,模型给出的输出经常是答非所问,但输入英文Prompt就正常输出了,请问是什么问题?我启动模型的命令是完全按照Steps3输入的。而且模型的回复也不是中文的?
image

@airaria
Copy link
Contributor

airaria commented Mar 30, 2023

从回复内容和风格看,似乎不是我们这一版模型。因为合并过程中涉及的的权重文件比较多,请确认下中间转换过程用的权重是否弄混淆了?

@LainNya
Copy link
Author

LainNya commented Mar 30, 2023

我的操作如下
1.把原版llama转换成HF格式
2.从谷歌网盘下载了Chinese-Alpaca-7B的Lora
3.对中文词表扩充, llama_model的路径为原版转换后的模型, tokenizer的路径为Chinese-Alpaca-7B的路径
4.合并权重 base_model为第三步扩充后的模型,lora_model为Chinese-Alpaca-7B的路径
我觉得我操作应该没有混淆吧 :( 我的朋友尝试了下也得出了这样的结果

@ymcui
Copy link
Owner

ymcui commented Mar 30, 2023

我的操作如下
1.把原版llama转换成HF格式
2.从谷歌网盘下载了Chinese-Alpaca-7B的Lora
3.对中文词表扩充, llama_model的路径为原版转换后的模型, tokenizer的路径为Chinese-Alpaca-7B的路径
4.合并权重 base_model为第三步扩充后的模型,lora_model为Chinese-Alpaca-7B的路径
我觉得我操作应该没有混淆吧 :( 我的朋友尝试了下也得出了这样的结果

可以把./main运行后马上输出出来的log贴一下吗(到提示符>之前)?

@airaria
Copy link
Contributor

airaria commented Mar 30, 2023

你好,我在推理时遇到了问题,在尝试输入中文Prompt时,模型给出的输出经常是答非所问,但输入英文Prompt就正常输出了,请问是什么问题?我启动模型的命令是完全按照Steps3输入的。而且模型的回复也不是中文的?
image

可以检查一下几个中间文件的SHA256 是否一致:
adapter_model.bin: 0d9b6ed8e4a7d1ae590a16c89a452a488d66ff07e45487972f61c2b6e46e36de
合并后的consolidated.00.pth: fbfccc91183169842aac8d093379f0a449b5a26c5ee7a298baf0d556f1499b90

@LainNya
Copy link
Author

LainNya commented Mar 30, 2023

我的操作如下
1.把原版llama转换成HF格式
2.从谷歌网盘下载了Chinese-Alpaca-7B的Lora
3.对中文词表扩充, llama_model的路径为原版转换后的模型, tokenizer的路径为Chinese-Alpaca-7B的路径
4.合并权重 base_model为第三步扩充后的模型,lora_model为Chinese-Alpaca-7B的路径
我觉得我操作应该没有混淆吧 :( 我的朋友尝试了下也得出了这样的结果

可以把运行后马上输出出来的log贴一下吗(到提示符之前)?./main``>

image
这是我的log日志

@LainNya
Copy link
Author

LainNya commented Mar 30, 2023

你好,我在推理时遇到了问题,在尝试输入中文Prompt时,模型给出的输出经常是答非所问,但输入英文Prompt就正常输出了,请问是什么问题?我启动模型的命令是完全按照Steps3输入的。而且模型的回复也不是中文的?
image

可以检查一下几个中间文件的SHA256 是否一致: adapter_model.bin: 0d9b6ed8e4a7d1ae590a16c89a452a488d66ff07e45487972f61c2b6e46e36de 合并后的consolidated.00.pth: fbfccc91183169842aac8d093379f0a449b5a26c5ee7a298baf0d556f1499b90

貌似我的consolidated.00.pth与你的不一致

@LainNya
Copy link
Author

LainNya commented Mar 30, 2023

我尝试重新合并和量化了下模型,这次使用的是Huggingface内的lora,但依旧是同样的结果 :(
我所使用的原版llama来源:https://github.com/facebookresearch/llama/pull/73/files
Chinese-alpaca来源:https://huggingface.co/ziqingyang/chinese-alpaca-lora-7b

@airaria
Copy link
Contributor

airaria commented Mar 30, 2023

你好,我在推理时遇到了问题,在尝试输入中文Prompt时,模型给出的输出经常是答非所问,但输入英文Prompt就正常输出了,请问是什么问题?我启动模型的命令是完全按照Steps3输入的。而且模型的回复也不是中文的?
image

可以检查一下几个中间文件的SHA256 是否一致: adapter_model.bin: 0d9b6ed8e4a7d1ae590a16c89a452a488d66ff07e45487972f61c2b6e46e36de 合并后的consolidated.00.pth: fbfccc91183169842aac8d093379f0a449b5a26c5ee7a298baf0d556f1499b90

貌似我的consolidated.00.pth与你的不一致

peft版本是0.2.0吗?同时用最新的export_state_dict_checkpoint.py试试?

@LainNya LainNya closed this as completed Mar 30, 2023
@LainNya
Copy link
Author

LainNya commented Mar 30, 2023

最新的export_state_dict_checkpoint.py生成的consolidated.00.pth sha256一致了,可以正常中文推理了:D

抱歉,我结束的太早了,貌似还是不能正常?

@LainNya LainNya reopened this Mar 30, 2023
@LainNya
Copy link
Author

LainNya commented Mar 30, 2023

image
这是我的量化后模型的sha256 f19503385fb3ab92ec96f2b6a2d733f07e368c836ba7a1d575699159156ac0e6

合并后的全量模型权重的SHA256
image

@airaria
Copy link
Contributor

airaria commented Mar 30, 2023

image 这是我的量化后模型的sha256 f19503385fb3ab92ec96f2b6a2d733f07e368c836ba7a1d575699159156ac0e6

合并后的全量模型权重的SHA256 image

我q4量化后模型的sha256的和你是一致的

@LainNya
Copy link
Author

LainNya commented Mar 30, 2023

那请问我这是什么问题呢?我现在完全不回答我的问题
image

@airaria
Copy link
Contributor

airaria commented Mar 30, 2023

那请问我这是什么问题呢?我现在完全不回答我的问题
image

你试试用llama.cpp加载原版llama看有没有问题

@LainNya
Copy link
Author

LainNya commented Mar 30, 2023

那请问我这是什么问题呢?我现在完全不回答我的问题
image

你试试用llama.cpp加载原版llama看有没有问题

我将原版llama进行了q4量化,这是它的回答,难道是llama.cpp的问题?
image

@codica
Copy link

codica commented Mar 31, 2023

我也是类似问题,会不会跟这个有关,protobuf版本太低了,因为安装过程要求只能使用3.20.x
Screenshot 2023-03-31 at 08 25 33

@LainNya
Copy link
Author

LainNya commented Mar 31, 2023

我也是类似问题,会不会跟这个有关,protobuf版本太低了,因为安装过程要求只能使用3.20.x Screenshot 2023-03-31 at 08 25 33

低版本也会导致这个问题吗?我的是3.19.0

@LainNya
Copy link
Author

LainNya commented Mar 31, 2023

image
尝试打印了下main.exe获取的值,貌似中文就没获取到,我的cpp基础很差,不知道怎么更改.
应该是在这行
image

@LainNya
Copy link
Author

LainNya commented Mar 31, 2023

大概就是这个原因,我将关闭这个提问

@LainNya LainNya closed this as completed Mar 31, 2023
@airaria
Copy link
Contributor

airaria commented Mar 31, 2023

@LainNya #20 这个或许对你有帮助。

@LainNya
Copy link
Author

LainNya commented Mar 31, 2023

@LainNya #20 这个或许对你有帮助。

我也已经发现这个问题了,Windows 平台下cmd和poweshell有问题,但我在git bash内执行就没问题了

@boholder
Copy link

boholder commented Apr 1, 2023

ggerganov/llama.cpp#646
llama.cpp 项目下对应的讨论,总之先用git-bash或WSL吧。

@ymcui 打扰下,方便把这个知识加进README吗?

@ymcui ymcui changed the title 本地部署经过量化的模型貌似无法理解中文Prompt? Windows本地部署经过量化的模型貌似无法理解中文Prompt? Apr 1, 2023
@ymcui
Copy link
Owner

ymcui commented Apr 1, 2023

ggerganov/llama.cpp#646 llama.cpp 项目下对应的讨论,总之先用git-bash或WSL吧。

@ymcui 打扰下,方便把这个知识加进README吗?

感谢提供信息,我先把这个issue PIN起来,后续加到合适的位置。

@ymcui ymcui pinned this issue Apr 1, 2023
ymcui added a commit that referenced this issue Apr 1, 2023
@hyperzlib
Copy link

hyperzlib commented Apr 4, 2023

看看readline之后有没有编码转换?CMD和PowerShell默认是GBK(CP936)编码,而Linux Shell默认是UTF-8,可能是这个问题。可以试试先chcp 65001再使用llama.cpp。

@nanmu42
Copy link

nanmu42 commented Apr 4, 2023 via email

@sgcwddhr
Copy link

sgcwddhr commented Apr 4, 2023

为什么我在git bash中也不支持中文prompt。有大佬能看看吗?
1680604452647

@sgcwddhr
Copy link

sgcwddhr commented Apr 4, 2023

@LainNya #20 这个或许对你有帮助。

我也已经发现这个问题了,Windows 平台下cmd和poweshell有问题,但我在git bash内执行就没问题了

我在git bash 中也不支持中文,什么原因
1680604605304

@LainNya
Copy link
Author

LainNya commented Apr 4, 2023

看看readline之后有没有编码转换?CMD和PowerShell默认是GBK(CP936)编码,而Linux Shell默认是UTF-8,可能是这个问题。可以试试先chcp 65001再使用llama.cpp。

已经尝试过了,依然无法正常获取

@josStorer
Copy link

josStorer commented Apr 4, 2023

我改了一下实现, 现在可以支持中文输入了, 配置开箱即用: https://github.com/josStorer/llama.cpp-unicode-windows

_getwch手动实现了unicode兼容的getline, 目前实现了输入, 退格, 左右移动光标, 以及回车, 足够常规使用 (不确定是不是最佳的解决方案, 但能解决问题)

O%BKDC3SM}TZQ8ZKQBPG4FE

@ymcui
Copy link
Owner

ymcui commented Apr 5, 2023

我改了一下实现, 现在可以支持中文输入了, 配置开箱即用: https://github.com/josStorer/llama.cpp-unicode-windows

_getwch手动实现了unicode兼容的getline, 目前实现了输入, 退格, 左右移动光标, 以及回车, 足够常规使用 (不确定是不是最佳的解决方案, 但能解决问题)

O%BKDC3SM}TZQ8ZKQBPG4FE

感谢,已添加到README中。

@boholder
Copy link

boholder commented Apr 6, 2023

我改了一下实现, 现在可以支持中文输入了, 配置开箱即用: https://github.com/josStorer/llama.cpp-unicode-windows

Nice work!

原llama.cpp 项目中已合并了 ggerganov/llama.cpp#420
解决了输入问题但没解决输出问题:

it is currently not possible to insert or display utf-8 characters at moment.
ggerganov/llama.cpp#646 (comment)

我不确定你是否方便提个pr,让原llama.cpp也支持输出UTF-8(和对UTF-8的修改)?...

@josStorer
Copy link

josStorer commented Apr 6, 2023

@boholder 我的改动不是跨平台的, 并且并不是完全兼容getline, 对于一些依赖命令行输入输出的API服务有兼容问题, 所以我觉得不适合提到官方仓库, 适合直接作为命令行体验

我在原项目问题下也提了我的解决方案, 我想仓库维护者也看到了

@boholder
Copy link

boholder commented Apr 6, 2023

@boholder 我的改动不是跨平台的, 并且并不是完全兼容getline, 对于一些依赖命令行输入输出的API服务有兼容问题, 所以我觉得不适合提到官方仓库, 适合直接作为命令行体验

我在原项目问题下也提了我的解决方案, 我想仓库维护者也看到了

原来是这样,不好意思我没了解情况。。再次谢谢你提供了解决方案。

@josStorer
Copy link

@boholder 我目前正在针对指令模式把llama做成api服务, 这个方案可以配合应用落地, 并且能够使用中文

https://github.com/josStorer/selfhostedAI 现在已经可用, 但是我还没更新使用说明

这里是一个应用API调用的示例
64J_YRL$9TRUDH0PQWG8{8

@zetaloop
Copy link

zetaloop commented Apr 8, 2023

是否考虑换用python版的llama.cpp?
python输出或许可以解决cpp版的中文支持问题

@wwwwwuxueyu
Copy link

@boholder 我目前正在针对指令模式把llama做成api服务, 这个方案可以配合应用落地, 并且能够使用中文

https://github.com/josStorer/selfhostedAI 现在已经可用, 但是我还没更新使用说明

这里是一个应用API调用的示例 64J_YRL$9TRUDH0PQWG8{8

我想请问一下 可以支持llamacpp 结合的chinesellamaaplaca模型吗?

@josStorer
Copy link

josStorer commented Apr 9, 2023

@wwwwwuxueyu 截图里用的就是这个仓库的中文模型效果, 简单问题体验还不错

@LainNya
Copy link
Author

LainNya commented Apr 10, 2023

最新的 llama.cpp 已经解决了这个问题。

@ymcui ymcui unpinned this issue Apr 10, 2023
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