导读
随着llama3的发布,业界越来越多的针对其中文能力的微调版本也不断涌现出来,我们在ModelScope魔搭社区上,搜集到几款比较受欢迎的llama3中文版本模型,来从多个维度评测一下,其对齐后的中文能力到底如何? 微调后是否产生了灾难性遗忘问题。
模型列表
- Meta-Llama-3-8B-Instruct
- 模型链接:
https://modelscope.cn/models/LLM-Research/Meta-Llama-3-8B-Instruct/summary
- 模型描述:原生llama3 8b模型
- Llama3_Chinese_Sft
- 模型链接: https://modelscope.cn/models/zhuangxialie/Llama3_Chinese_Sft/summary
- GitHub:https://github.com/CrazyBoyM/llama3-Chinese-chat
- 模型描述:基于170k+高质量多轮中文对话数据微调的模型,base model + 中文sft数据。
- 训练数据分布:参考数据集链接:https://modelscope.cn/datasets/baicai003/Llama3-Chinese-dataset/summary
- Llama3-Chinese-8B-Instruct-Agent-v1
- 模型链接:
https://modelscope.cn/models/swift/Llama3-Chinese-8B-Instruct-Agent-v1/summary
- 模型描述:使用Llama3-8b-instruct基模型进行训练,适配中文通用场景,且支持ReACT格式的Agent调用。
- 训练数据:包含中国传统知识、豆瓣、弱智吧、知乎等中文互联网信息,混合了魔搭通用Agent训练数据集、ms-bench和alpaca-en等数据,使其具有不错的中文能力和agent能力。
- OpenBuddy openbuddy-llama3-8b-v21.1-8k
- 模型链接:
https://modelscope.cn/models/OpenBuddy/openbuddy-llama3-8b-v21.1-8k/summary
- 官方网址和Demo:https://openbuddy.ai
- 模型描述:OpenBuddy开源的一款llama3中文微调版本模型。
基础能力评测
简介
我们从英文知识推理、中文学科考试、数理逻辑几个维度来评测llama3中文微调模型的整体能力。
ARC (英文知识推理)
AI2 的推理挑战 (ARC) 数据集是一个多项选择问答数据集,包含从 3 年级到 9 年级的科学考试的问题。数据集分为两个部分:Easy 和 Challenge,后者包含更难的部分需要推理的问题。大多数问题有 4 个答案选择,只有不到 1% 的问题有 3 个或 5 个答案选择。ARC 包括 1430 万非结构化文本段落的支持 KB。
C-Eval (中文学科考试)
C-Eval是全面的中文基础模型评估套件,涵盖了52个不同学科的13948个多项选择题,分为四个难度级别。学科领域涵盖STEM、Humanities、Social Science和Other。用于评估模型的中文综合学科能力。
GSM8K
GSM8K 是由人类问题作者创建的8.5K 高质量语言多样化小学数学单词问题的数据集。 数据集分为7.5K 训练问题和1K 测试问题。 这些问题需要2 到8 个步骤来解决,解决方案主要涉及使用基本算术运算(+ − ×÷) 执行一系列基本计算以得出最终答案。 一个聪明的中学生应该能够解决所有问题。
执行评测任务
我们使用Eval-Scope评测工具执行评测任务,Eval-Scope 是摩搭社区开源的一款轻量化LLM评测工具,支持多种基准评测任务,以及竞技场模式评测和LLM Serving性能评测等。
1.1 安装
git clone https://github.com/modelscope/eval-scope cd eval-scope pip install -e .
1.2 实验设置
我们分别在C-Eval、ARC、GSM8K这几个benchmark上,分别测试其中文学科能力、英文知识推理能力、英文数理逻辑能力,其中,后两者着重评测几个中文版本微调模型的灾难性遗忘情况。
其中,GSM8K和ARC采用0-shot,C-Eval采用5-shot;评价指标均为加权平均准确率。
评测命令示例:
python3 llmuses/run.py --model LLM-Research/Meta-Llama-3-8B-Instruct --template-type llama3 --datasets arc ceval gsm8k --dataset-args '{"gsm8k": {"few_shot_num": 0}}'
1.3实验结果
基础能力评测汇总 (百分制)
评测结果解读
1.中文能力增强
从上表中可以看到,在中文学科测试C-Eval数据集上,相对于原生模型的效果,几个中文微调后的模型均有不同程度的轻微下降;导致这种情况的原因可能是:
- 中文数据集分布与C-Eval差异较大,不包含或很少包含学科考试类的语料
- 训练不够充分,导致中文能力未能进一步加强
主观使用的感受来看,这些中文版模型基本都能正常回答中文指令,而不像原生模型那样,常会存在中文问题、英文回复的情况。
2.知识灾难性遗忘
从ARC-Challenge、GSM8K这两个英文数据集来看,整体表现各不一样。对于ARC基准,各个模型的遗忘相对较轻微,表现最好的Llama3-Chinese-8B-Instruct-Agent-v1,几乎没有太大的遗忘情况;但从GSM8K的情况来看,平均得分就要相对低很多,最高可以达到34pt的降幅,即便是表现最好的openbuddy-llama3-8b-v21.1-8k,也有7.7pt的分数下降,猜测有以下几个方面的原因:
- 训练数据集的分布与其差异很大,可能会导致模型在GSM8K上的能力严重退化
- GSM8K是英文构成,且均为复杂的数理逻辑,对模型的指令理解和遵循能力相对很敏感,很容易导致预测结果异常
- 训练不足
3.中文Agent能力
待测模型中,Llama3-Chinese-8B-Instruct-Agent-v1模型针对Agent中文能力做了增强,从主观使用体验上来看,其已经具有初步的基于中文多轮交互的工具调用能力。下面是使用示例:(结合ModelScope-Agent)
天气查询
模型可以按照system要求对查询进行补全。
文生图
主观能力评测
简介
我们使用AlignBench: 多维度中文对齐评测基准,来综合评价中文版llama3模型在多个维度下的主观题表现。AlignBench,这是一个用于评估中文大语言模型对齐性能的全面、多维度的评测基准。其构建了人类参与的数据构建流程,来保证评测数据的动态更新。AlignBench 采用多维度、规则校准的模型评价方法(LLM-as-Judge),并且结合思维链(Chain-of-Thought)生成对模型回复的多维度分析和最终的综合评分,增强了评测的高可靠性和可解释性。
AlignBench涵盖的任务类型为:基本任务、中文理解、综合问答、文本写作、逻辑推理、数学计算、角色扮演、专业能力。
Overall Framework
数据示例
{"question_id": 24, "category": "专业能力", "subcategory": "地理", "question": "请列出地球上最高的五座山峰,以及它们的海拔高度的平均值。", "reference": "地球上最高的五座山峰和它们的海拔高度分别为:\n\n1. 珠穆朗玛峰:8848米\n2. 喀喇昆仑山脉的乔戈里峰(K2):8611米\n3. 喜马拉雅山脉的干城章嘉峰:8586 米\n4. 喜马拉雅山脉的洛子峰:8516米\n5. 喜马拉雅山脉的马卡鲁峰:8485米\n\n它们的海拔高度平均值为 (8848+8611+8586+8516+8485)/5 = 8609.2米。\n"}
AlignBench相关信息:
paper: https://arxiv.org/abs/2311.18743
github: https://github.com/THUDM/AlignBench
实验设置
1.模型推理参数
- do_sample: True
- temperature: 0.75
- max_new_tokens: 256
2.AlignBench Judge-model
我们采用ZhipuAI GLM4模型服务,作为自动评测裁判员模型,来综合评价多个中文对齐后的llama3 8B模型。依据AlignBench的多维度定义,作为裁判员模型的打分依据。参考下面描述(每个维度得分范围均为 0~10):
- 事实正确性:回答中提供的信息是否准确无误,是否基于可信的事实和数据。
- 满足用户需求:回答是否满足了用户提出问题的目的和需求,是否对问题进行了全面而恰当的回应。
- 清晰度:回答是否表达清晰、易懂,是否使用了简洁的语言和结构,以便用户可以轻松理解。
- 完备性:回答是否提供了足够的信息和细节,以满足用户的需求,是否遗漏了重要的方面。
实验结果
我们以Meta-Llama-3-8B-Instruct原生模型来举例说明,其中,GLM4作为裁判员模型参与评估该模型的输出,参考以下示例数据:
Judge输出示例(Meta-Llama-3-8B-Instruct原生模型)
{ "question_id": 1, "category": "专业能力", "subcategory": "音乐", "question": "高音单簧管和高音萨克斯的调性相同吗?如果相同,请说出他们的调性,如果不同,请分别说出他们的调性", "reference": "高音单簧管和高音萨克斯的调性不同。高音单簧管的调性通常为E♭,而高音萨克斯的调性则为B♭。\n", "model_id": "llama3_8b_instruct_origin", "answer_id": "1_llama3_8b_instruct_origin", "answer": "🎶\n\nHigh-range clarinet (E-flat clarinet) and high-range saxophone (soprano saxophone) do share the same key: F major.\n\nIn fact, the E-flat clarinet is often used in classical music to play the melodic lines that are typically written for the soprano saxophone. This is because both instruments have a similar range and timbre, making them suitable substitutes for each other.\n\nHere are the ranges of the two instruments:\n\n* E-flat clarinet: E-flat3 to G5 (approximately F4 to A5)\n* Soprano saxophone: C4 to E5 (approximately F4 to A5)\n\nAs you can see, both instruments have a similar range, with the E-flat clarinet extending slightly higher. However, for most purposes, the soprano saxophone is more commonly used in jazz and popular music, while the E-flat clarinet is more commonly used in classical music. 🎵", "dimensions": [ "事实正确性", "满足用户需求", "清晰度", "完备性" ], "judge_prompt": "...", "judgment": "根据您提供的参考答案和AI助手的答案,以下是对AI助手回答的评价和打分:\n\n1. 事实正确性:\n AI助手的答案中提到高音单簧管和高音萨克斯有相同的调性,均为F大调,这与事实不符。如参考答案所述,高音单簧管的调性为E♭,而高音萨克斯的调性为B♭。因此,事实正确性存在严重错误。\n 打分:1\n\n2. 满足用户需求:\n 用户询问高音单簧管和高音萨克斯的调性是否相同,并请求如果不同,分别说明调性。AI助手的答案没有直接回答用户的问题,反而提供了错误的信息,因此没有满足用户的需求。\n 打分:2\n\n3. 清晰度:\n AI助手的答案在描述乐器时使用了专业术语,并尝试解释乐器的音域和用途,但因为它提供了错误的调性信息,导致整个答案的清晰度受损。\n 打分:4\n\n4. 完备性:\n AI助手在答案中提供了两种乐器的音域信息,但是遗漏了正确的调性信息,这是用户提问中的重要部分。因此,在完备性方面表现不足。\n 打分:3\n\n综合以上评价,以下是对AI助手回答的综合打分:\n{'事实正确性': 1, '满足用户需求': 2, '清晰度': 4, '完备性': 3, '综合得分': 3}\n\n根据评分规则,AI助手的回答存在本质性的事实错误,并且没有满足用户的基本需求,因此综合得分较低。", "rating": { "事实正确性": 1, "满足用户需求": 2, "清晰度": 4, "完备性": 3, "综合得分": 3 }, "score": 3} { "question_id": 1, "category": "专业能力", "subcategory": "音乐", "question": "高音单簧管和高音萨克斯的调性相同吗?如果相同,请说出他们的调性,如果不同,请分别说出他们的调性", "reference": "高音单簧管和高音萨克斯的调性不同。高音单簧管的调性通常为E♭,而高音萨克斯的调性则为B♭。\n", "model_id": "llama3_8b_instruct_origin", "answer_id": "1_llama3_8b_instruct_origin", "answer": "🎶\n\nHigh-range clarinet (E-flat clarinet) and high-range saxophone (soprano saxophone) do share the same key: F major.\n\nIn fact, the E-flat clarinet is often used in classical music to play the melodic lines that are typically written for the soprano saxophone. This is because both instruments have a similar range and timbre, making them suitable substitutes for each other.\n\nHere are the ranges of the two instruments:\n\n* E-flat clarinet: E-flat3 to G5 (approximately F4 to A5)\n* Soprano saxophone: C4 to E5 (approximately F4 to A5)\n\nAs you can see, both instruments have a similar range, with the E-flat clarinet extending slightly higher. However, for most purposes, the soprano saxophone is more commonly used in jazz and popular music, while the E-flat clarinet is more commonly used in classical music. 🎵", "dimensions": [ "事实正确性", "满足用户需求", "清晰度", "完备性" ], "judge_prompt": "...", "judgment": "根据您提供的参考答案和AI助手的答案,以下是对AI助手回答的评价和打分:\n\n1. 事实正确性:\n AI助手的答案中提到高音单簧管和高音萨克斯有相同的调性,均为F大调,这与事实不符。如参考答案所述,高音单簧管的调性为E♭,而高音萨克斯的调性为B♭。因此,事实正确性存在严重错误。\n 打分:1\n\n2. 满足用户需求:\n 用户询问高音单簧管和高音萨克斯的调性是否相同,并请求如果不同,分别说明调性。AI助手的答案没有直接回答用户的问题,反而提供了错误的信息,因此没有满足用户的需求。\n 打分:2\n\n3. 清晰度:\n AI助手的答案在描述乐器时使用了专业术语,并尝试解释乐器的音域和用途,但因为它提供了错误的调性信息,导致整个答案的清晰度受损。\n 打分:4\n\n4. 完备性:\n AI助手在答案中提供了两种乐器的音域信息,但是遗漏了正确的调性信息,这是用户提问中的重要部分。因此,在完备性方面表现不足。\n 打分:3\n\n综合以上评价,以下是对AI助手回答的综合打分:\n{'事实正确性': 1, '满足用户需求': 2, '清晰度': 4, '完备性': 3, '综合得分': 3}\n\n根据评分规则,AI助手的回答存在本质性的事实错误,并且没有满足用户的基本需求,因此综合得分较低。", "rating": { "事实正确性": 1, "满足用户需求": 2, "清晰度": 4, "完备性": 3, "综合得分": 3 }, "score": 3 }
从上述结果可见,原生的llama3模型在回答“专业能力”问题时,直接采用英文作为回复,即便其英文回答跟答案相关,但从裁判员模型来看,该模型在“事实正确性”这个维度得分并不高,其在该题目上的综合评分也只有3分(10分满分)。
Judge输出示例(Llama3-Chinese-8B-Instruct-Agent-v1)
{ "category": "专业能力", "subcategory": "音乐", "question": "高音单簧管和高音萨克斯的调性相同吗?如果相同,请说出他们的调性,如果不同,请分别说出他们的调性", "reference": "高音单簧管和高音萨克斯的调性不同。高音单簧管的调性通常为E♭,而高音萨克斯的调性则为B♭。\n", "model_id": "llama3_chinese_8b_instruct_agent_v1", "answer": "高音单簧管和高音萨克斯的调性不同。高音单簧管的调性是Bb调,而高音萨克斯的调性是B调。", "dimensions": [ "事实正确性", "满足用户需求", "清晰度", "完备性" ], "judge_prompt": "...", "judgment": "首先,我将AI助手的答案与参考答案进行比较。\n\n在事实正确性方面,AI助手的回答中高音单簧管的调性被错误地标注为Bb调,而实际上它是E♭调。此外,高音萨克斯的调性被标注为B调,而正确的应该是B♭调。因此,在这一点上,AI助手的答案有明显的错误。\n\n接下来,我将从不同的维度对AI助手的答案进行评价。\n\n1. 事实正确性:由于AI助手在调性上提供了错误的信息,这一维度的准确性受到影响。打分:(2)\n {'事实正确性': 2}\n\n2. 满足用户需求:用户询问了高音单簧管和高音萨克斯的调性,并希望得到准确的答案。尽管AI助手提供了答案,但由于信息不准确,未能完全满足用户的需求。打分:(3)\n {'满足用户需求': 3}\n\n3. 清晰度:AI助手的回答在表达上是清晰的,结构也相对简洁,易于理解。打分:(7)\n {'清晰度': 7}\n\n4. 完备性:AI助手的回答虽然简洁,但遗漏了正确的高音单簧管的调性信息,没有提供完整的信息。打分:(4)\n {'完备性': 4}\n\n综合以上各维度的评估,考虑到事实正确性和满足用户需求的重要性,AI助手的回答整体质量不高。综合打分:(4)\n {'综合得分': 4}\n\n根据以上流程和评分规则,以下是AI助手答案的最终打分结果:\n{'事实正确性': 2, '满足用户需求': 3, '清晰度': 7, '完备性': 4, '综合得分': 4}", "rating": { "事实正确性": 2, "满足用户需求": 3, "清晰度": 7, "完备性": 4, "综合得分": 4 }, "score": 4 }
- 综合得分
综上可见,在中文主观题评测任务中,只有openbuddy-llama3-8b-v21.1-8k综合得分略微超过llama3 8b原生模型,其它模型均不同程度出现了中文能力上的损失。
从主观、客观的实验结果来看,现有的Llama3 中文版本,在实际会话场景中,中文指令跟随能力上,已经相较于原生模型有了较大的改进(大部分场景下至少能说中文了);但是在某些专项任务中,中文微调后的模型在多个维度能力指标出现了不同程度的下降,也提示我们,在数据覆盖、配比,以及训练参数设置等环节,仍需要进一步加强。