ymcui / Chinese-LLaMA-Alpaca-3

中文羊驼大模型三期项目 (Chinese Llama-3 LLMs) developed from Meta Llama 3
Apache License 2.0
1.57k stars 142 forks source link

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

Closed yaoyonstudio closed 4 months ago

yaoyonstudio commented 4 months ago

提交前必须检查以下项目

问题类型

模型推理

基础模型

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

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

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

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

运行日志或截图

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

经过排查,我发现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个问题。

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

ymcui commented 4 months ago

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

yaoyonstudio commented 4 months ago

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

谢谢你们的付出。