模型简介
模型特点
模型能力
使用案例
🚀 Kyara:用于大语言模型微调的知识自适应检索增强
Kyara(知识自适应检索增强)是一个旨在通过知识检索过程改进语言模型的实验项目。该项目致力于增强模型的知识适应能力和语言理解能力,尤其针对像繁体中文这样资源相对较少的语言。由于与用于模型训练的大量英文语料相比,繁体中文数据相对匮乏,Kyara通过扩展该语言有限的语料库来弥补这一差距。
为验证Kyara的有效性,我们对Gemma - 2 - 2b - it
进行了全参数微调,得到了Kyara模型的第一个版本。如基准测试部分详细所示,初步评估结果表明,Kyara在各种基准测试中均优于原始的Gemma - 2 - 2b - it
,在中文评估中表现出显著的改进。
🚀 快速开始
Kyara采用与Gemma2相同的架构,使用相同的推理和训练方法。我们在Kaggle上创建了一个Jupyter Notebook来展示Kyara的基本功能。对于服务级部署,我们建议使用Sglang或vllm以实现更高的吞吐量和鲁棒性。
✨ 主要特性
检索增强生成(实验性)
得益于Kyara的训练方法,我们在监督微调(SFT)阶段融入了与检索增强生成(RAG)相关的内容。你可以参考以下示例来构建任务模板。
📚 详细文档
基准测试
通用基准测试
以下评估基于零样本。
指标 | Kyara - 2b - it | Gemma - 2 - 2b - it |
---|---|---|
TMMLUPlus | 41.98 | 36.73 |
- STEM | 43.73 | 37.84 |
- 人文科学 | 38.72 | 33.40 |
- 其他 | 40.61 | 36.00 |
- 社会科学 | 44.88 | 39.69 |
MMLU - Redux | 55.44 | 51.94 |
GSM8K | 54.21 | 51.63 |
MATH - L5 | 8.88 | 4.3 |
CRUX | 22.75 | 21.5 |
ZebraLogic | 5.2 | 4.2 |
中文推理基准测试 | 4.21 | 3.44 |
TMMLUPlus中各分组的聚合方法为宏平均,遵循官方实现中的做法。
[Open - LLM排行榜](https://huggingface.co/spaces/open - llm - leaderboard/open_llm_leaderboard)
截至目前,Kyara - 2b - it在OpenLLM排行榜的所有2b规模模型中处于领先地位。
对齐基准测试
指标 | Kyara | Gemma - 2 - 2b - it | ChatGPT - 3.5 - 1106 |
---|---|---|---|
[AlpacaEval - LC](https://github.com/tatsu - lab/alpaca_eval) | 35.35 | 32.37 | 19.30 |
[AlpacaEval](https://github.com/tatsu - lab/alpaca_eval) | 43.34 | 32.94 | 9.20 |
[MT - Bench - TW](https://huggingface.co/datasets/MediaTek - Research/TCEval - v2) | 7.43 | 6.35 | 7.10 |
[MT - Bench](https://huggingface.co/spaces/lmsys/mt - bench) | 8.28 | 8.17 | 8.32 |
[Chatbot - Arena - Hard](https://github.com/lm - sys/arena - hard - auto) | 22.60 | 19.4 | 18.87 |
AlignBench
类别 | Kyara - 2b - it - CHT | Kyara - 2b - it - CHS | Gemma - 2 - 2b - it | ChatGPT - 3.5 - 0613 |
---|---|---|---|---|
基础语言能力 | 6.72 | 6.54 | 6.42 | 6.92 |
高级中文理解 | 5.78 | 5.24 | 5.03 | 5.91 |
开放式问题 | 8.16 | 7.79 | 7.52 | 6.47 |
写作能力 | 7.90 | 7.24 | 7.76 | 7.28 |
逻辑推理 | 5.26 | 4.27 | 4.20 | 4.79 |
数学能力 | 5.99 | 5.44 | 5.05 | 5.38 |
面向任务的角色扮演 | 8.07 | 8.00 | 7.42 | 7.00 |
专业知识 | 6.97 | 6.86 | 5.79 | 6.81 |
推理平均得分 | 5.62 | 4.85 | 4.63 | 5.00 |
中文平均得分 | 7.26 | 6.94 | 6.66 | 6.73 |
总体得分 | 6.44 | 5.90 | 5.64 | 5.91 |
其中,后缀CHT和CHS分别代表繁体中文和简体中文。为了在AlignBench中评估繁体中文的性能,我们使用OpenCC并配置s2tw
将所有问题从简体中文转换为繁体中文。
方法
数据集概述
我们总共收集了360万条对话,约451亿个标记。以下是语言分布和对话轮次的概述。
- 语言:
- 对话轮次:
数据集构建
Kyara的数据构建分为两部分:英文和中文。
- 英文部分:我们整合了多个高质量的开源数据集,如[teknium/OpenHermes - 2.5](https://huggingface.co/datasets/teknium/OpenHermes - 2.5)和[arcee - ai/The - Tome](https://huggingface.co/datasets/arcee - ai/The - Tome),并进行语义去重以去除相似的示例。
- 中文部分:构建过程如下:
- 基础数据集:基于检索增强的知识注入:我们使用开放的中文知识语料库开发了一个知识搜索系统,并与QDrant集成。为了构建监督微调(SFT)对,我们遵循以下过程:
- 从知识库中采样文档,并根据这些文本生成用户可能提出的知识密集型问题。
- (可选)使用Evol - Instruct增加指令复杂度。
- 对生成的指令应用查询扩展,以检索额外的前K个文档,并分别评估它们的相关性:
- 对于相关文档,使用大语言模型总结与问题相关的关键信息。
- 对于不相关文档,忽略它们。
- 让大语言模型根据原始文档和K个补充参考生成详细而全面的响应。 此外,我们还会让大语言模型为高质量文档生成用户提示,并将(生成的提示,原始文档)作为一个SFT示例。
- 中文数学数据集:
- 数据集:[zake7749/kyara - chinese - math - sft - s0 - 30K](https://huggingface.co/datasets/zake7749/kyara - chinese - math - sft - s0 - 30K)
虽然上述策略可以生成广泛的基于知识的文本,但它主要适用于信息检索任务,在构建数学和推理相关内容方面效果不佳。为了解决这个问题,我们基于[PersonaHub](https://huggingface.co/datasets/proj - persona/PersonaHub)生成了50,000道数学问题。然后,我们使用
Gemini - 1.5 - Flash
过滤掉计算和推理有明显错误的数据,从而创建了[kyara - chinese - math - sft - s0 - 30K](https://huggingface.co/datasets/zake7749/kyara - chinese - math - sft - s0 - 30K)。
- 数据集:[zake7749/kyara - chinese - math - sft - s0 - 30K](https://huggingface.co/datasets/zake7749/kyara - chinese - math - sft - s0 - 30K)
虽然上述策略可以生成广泛的基于知识的文本,但它主要适用于信息检索任务,在构建数学和推理相关内容方面效果不佳。为了解决这个问题,我们基于[PersonaHub](https://huggingface.co/datasets/proj - persona/PersonaHub)生成了50,000道数学问题。然后,我们使用
- 高质量数据集:模型优化:在使用基础数据集完成监督学习后,我们将在高质量子集上再次对大语言模型进行微调,主要是为了解决以下三个问题:
- 基础数据集中的一些响应是由小模型生成的,有时在遵循指令方面表现不佳。
- 我们在之前的步骤中使用了各种大语言模型来引入知识多样性和语言适应性。然而,我们发现不同大语言模型在响应模板和推理方法上存在细微差异,导致训练的聊天模型偶尔不稳定。因此,我们引入了一个高质量的小数据集,使用单个强大的大语言模型生成问答对。
- 基础数据集包括一些由生成的查询和原始文档组成的问答对。虽然这些数据知识丰富,但在遵循指令方面相对较弱。 为了平衡数据多样性和质量,我们采用了类似于InsTag的策略对数据进行分类。然后,我们使用[ArmoRM](https://huggingface.co/RLHFlow/ArmoRM - Llama3 - 8B - v0.1)和一个大语言模型评判器来评估数据质量,最终从每个类别中提取最佳训练数据,创建了约500K的第一阶段数据集,用于再次微调Kyara - SFT模型。
- 基础数据集:基于检索增强的知识注入:我们使用开放的中文知识语料库开发了一个知识搜索系统,并与QDrant集成。为了构建监督微调(SFT)对,我们遵循以下过程:
偏好学习
我们在Kyara中引入了偏好学习,这使得模型的响应能够更好地符合人类偏好,同时增强编程技能和数学推理能力。 Kyara的偏好学习策略采用直接偏好优化(DPO),将两个自定义的中文数据集与两个英文数据集集成。
- [argilla/ultrafeedback - binarized - preferences](https://huggingface.co/datasets/argilla/ultrafeedback - binarized - preferences)
- [xinlai/Math - Step - DPO - 10K](https://huggingface.co/datasets/xinlai/Math - Step - DPO - 10K)
以下是中文数据集的构建策略总结:
- 中文DPO:
- SPIN/SPPO:我们遵循原始设计,使用Kyara - SFT为高质量数据集生成一组对比数据。
- RLAIF:
- 数据集:[zake7749/kyara - chinese - preference - dpo - s0 - 30K](https://huggingface.co/datasets/zake7749/kyara - chinese - preference - dpo - s0 - 30K)
我们从
Magpie - Align/Magpie - Qwen2 - Pro - 200K - Chinese
、hfl/stem_zh_instruction
和FreedomIntelligence/Evol - Instruct - Chinese - GPT4
中提取中文提示,并将相同的提示分发给四个不同的大语言模型。这些模型包括:- GPT - 4o
- GPT - 4 - 0618
- ChatGPT - 3.5 - 0513
- Claude - Sonnet - 3.5
- Yi - Large
- Mixtral 8x22B
- Gemini - Flash
- Qwen2 - 72B - Instruct
- DeepSeek V2 在生成响应后,我们让大语言模型使用以下提示来判断哪个响应更好:
- 数据集:[zake7749/kyara - chinese - preference - dpo - s0 - 30K](https://huggingface.co/datasets/zake7749/kyara - chinese - preference - dpo - s0 - 30K)
我们从
**[任务]**
请作为公正的评判者,评估以下两个AI助手对用户问题的响应质量。你的评估应考虑正确性和有用性。
1. 首先,逐步独立解决用户的问题。
2. 然后,将两个助手的答案与你的答案进行比较。识别并纠正任何错误。
3. 不要让响应的长度影响你的评估。
4. 尽可能客观。
在提供解释后,严格按照以下格式输出最终裁决:如果助手A更好,则输出 "[[A]]";如果助手B更好,则输出 "[[B]]";如果平局或A和B都不好,则输出 "[[C]]"。
如果A和B的答案在正确性、有用性和相关性方面非常相似,即没有“明显”的获胜者,则判定为平局并输出 [[C]]。
**[用户问题]**
{prompt}
---
**[助手A的答案]**
{answer}
---
**[助手B的答案]**
{prediction}
---
最后,将所有四个数据集合并进行DPO训练。
📄 许可证
本项目采用Gemma许可证。
相关链接
- 🤗 [Hugging Face](https://huggingface.co/zake7749/gemma - 2 - 2b - it - chinese - kyara - dpo)
- 🚀 Github
- 📑 [论文](https://hf - mirror.com/api/resolve - cache/models/zake7749/gemma - 2 - 2b - it - chinese - kyara - dpo/2ca8e31c1587a53aa662ca8a676d2cf5499d4157/README.md?download=true&etag=%22f4bc372d020c1121d25a910432097c6bcaf7891f%22)
- 📖 英文文档
- 📖 中文文档
- 💻 [Kaggle Notebook](https://www.kaggle.com/code/zake7749/kyara - a - compact - yet - powerful - chinese - llm)
项目图片




