ymcui/Chinese-LLaMA-Alpaca-3

使用原生llama3模型和使用Chinese-LLaMA-Alpaca-3模型推理的差异和问题

yaoyonstudio opened this issue · 4 comments

提交前必须检查以下项目

  • 请确保使用的是仓库最新代码(git pull)
  • 已阅读项目文档FAQ章节并且已在Issue中对问题进行了搜索,没有找到相似问题和解决方案。
  • 第三方插件问题:例如llama.cpptext-generation-webui等,建议优先去对应的项目中查找解决方案。

问题类型

模型推理

基础模型

Llama-3-Chinese-8B-Instruct(指令模型)

操作系统

macOS

详细描述问题

我在MacOS中,使用MLX框架分别加载原生的Meta-Llama-3-8B-Instruct模型和llama-3-chinese-8b-instruct-v2模型,使用相同的prompt和参数(包括max_tokens等),模型推理出现以下差异和问题:

  1. 使用llama-3-chinese-8b-instruct-v2模型推理速度比原生的Meta-Llama-3-8B-Instruct模型要慢很多,根据几次测试的情况评估,约慢3倍左右(使用verbose=True的推理生成速度及最终生成的时间综合主观评估)。

  2. 使用llama-3-chinese-8b-instruct-v2模型推理会出现一直生成文本不停止的情况,而且最后生成的文本是重复的。而使用原生的Meta-Llama-3-8B-Instruct模型,则不会出现这种情况。我不确定我的判断是否准确,但我的第一感觉是,llama-3-chinese-8b-instruct-v2模型推理时会去“对齐”(或者是“强制适配”)我设置的max_tokens。

使用llama-3-chinese-8b-instruct-v2模型推理截图:
llama-3-chinese-8b-instruct-v2_mlx

使用原生的Meta-Llama-3-8B-Instruct模型推理截图:
Meta-Llama-3-8B-Instruct_mlx

不清楚这种在同平台同框架同参数下模型推理的差异是否正常?第二个问题文本生成不停止的情况是否与模型有关?

依赖情况(代码类问题务必提供)

# 请在此处粘贴依赖情况(请粘贴在本代码块里)

运行日志或截图

# 请在此处粘贴运行日志(请粘贴在本代码块里)
  1. 推理慢的问题不清楚,模型结构、超参都是一样的,在其他框架下测也没有显著速度差异;
  2. 重复生成的问题多半是EOS token的问题,不太清楚你用的这个框架是否正确设置了模板和EOS token。同样,在其他框架,比如我们提供的inferece_hf.py或者llama.cpp/ollama下没出现这个问题。

经过排查,我发现llama-3-chinese-8b-instruct-v2模型和原生Meta-Llama-3-8B-Instruct的special_tokens_map.json文件不一致。

llama-3-chinese-8b-instruct-v2模型既然以原生的Meta-Llama-3-8B-Instruct模型为基座,为什么不保持一致。

我在推理时,要手动设置tokenizer的配置,增加eos token的设置,就不会产生上面第2个问题。

但是推理慢的问题依旧有,我后面使用时继续观察。

官方分别在16天、19天前更新过config,我们的v2模型是5/8发布的,自然是没能用到新的config。
你自行替换就行了,不必这么大的怨念 :)

误会了,只是说明情况,并无怨念。

谢谢你们的付出。