模型简介
模型特点
模型能力
使用案例
🚀 Vikhr-Nemo-12B-Instruct-R-21-09-24
Vikhr-Nemo 是我们的旗舰单模态大语言模型(Large Language Model,简称 LLM),由 VikhrModels 团队对 mistralai/Mistral-Nemo-Instruct-2407 进行改进而来,主要适配俄语和英语。该模型的训练包含多个阶段,包括 SFT 和 SMPO(我们自主研发的 DPO 变体),更多细节可查看 “该模型的构建方式” 部分。
此模型针对多种应用场景进行了优化,涵盖推理、摘要生成、代码处理、角色扮演和对话支持等。Vikhr-Nemo 具备多语言生成能力和高效的检索增强生成(RAG)功能。在我们的指令性和 RAG 基准测试中,该模型取得了优异成绩,因此我们认为在某些任务(如 RAG)中,它的表现不逊色于 OpenAI 的 gpt-4o-mini。
所有用于训练的代码均可在我们 GitHub 上的 effective_llm_alignment 仓库中找到,主要数据集则可在我们的 Hugging Face 个人资料 中获取。
✨ 主要特性
- 多语言高质量生成:借助 Grandmaster-PRO-MAX 数据集和基础模型,该模型在俄语、英语及其他部分语言上均能实现高质量的文本生成。
- 系统提示支持:支持使用系统提示来调控回复风格。
- 长上下文处理:基于基础模型,支持处理长达 128k 个标记的上下文。
- Grounded RAG 模式:模型具备特殊的 “documents” 角色和工作模式,能够搜索与用户问题相关的文档标识符,并利用这些文档进行问题解答,这一功能的灵感源自 Command-R 模型的类似能力。
📚 详细文档
指标与质量评估
该模型在我们的俄语开源 SbS 基准测试 ru-arena-general(包含 50 个主题,每个主题 10 个问题)和基于 Grounded-RAG-v2 测试集的 RAG 基准测试 中接受了评估,评审模型分别为 gpt-4-1106-preview 和 gpt-4o。
Ru-Arena-General 测试结果
以 gpt-3.5-turbo-0125 的回复作为参考,因此其胜率为 50%。以下仅展示部分排行榜内容,更多详情可查看基准测试仓库。
需要注意的是,竞技场中有 180 个样本泄露到了训练集中,感谢 Илье 提供的信息!
模型名称 | 胜率 | 95% 置信区间 | 平均标记数 |
---|---|---|---|
gpt-4-1106-preview | 90.9 | (-1.3, 1.0) | 541 |
gpt-4o-mini | 83.9 | (-1.8, 1.1) | 448 |
vikhr-nemo-12b-instruct-r-21-09-24(180 个样本泄露) | 79.8 | (-2.2, 1.9) | 627 |
gemma-2-9b-it-sppo-iter3 | 73.6 | (-1.6, 2.2) | 509 |
gemma-2-9b-it | 69.2 | (-2.5, 1.9) | 459 |
t-lite-instruct-0.1 | 64.7 | (-2.1, 1.7) | 810 |
vikhr-llama3.1-8b-instruct-r-21-09-24 | 63.4 | (-2.1, 2.5) | 618 |
suzume-llama-3-8B-multilingual-orpo-borda-half | 57.1 | (-1.9, 2.2) | 682 |
mistral-nemo-instruct-2407 | 50.5 | (-2.7, 2.6) | 403 |
gpt-3.5-turbo-0125 | 50.0 | (0.0, 0.0) | 220 |
c4ai-command-r-v01 | 49.0 | (-1.7, 2.2) | 529 |
meta-llama-3.1-8b-instruct | 43.1 | (-2.8, 2.3) | 628 |
RAG 基准测试结果
测试集总共有 200 个示例,其中 100 个为领域内(in_domain)问题,100 个为领域外(out_of_domain)问题。
在评估过程中,评审模型 gpt-4o 会根据文档内容和 gpt-4-1106-preview 的参考回复,综合考虑回复的相关性和事实完整性。
更多提示信息和评估细节可查看基准测试代码的 Colab 版本。
- 领域内问题:与提供的文档内容有一定关联的问题。
- 领域外问题:特意设置为与提供的文档内容无关的问题。
模型名称 | 问题类型 | 评审正确百分比 | 平均回复匹配 Rouge-L 得分 | 平均绝对索引差异 |
---|---|---|---|---|
gpt-4o | 领域内 | 73% | 0.34 | NaN |
gpt-4o | 领域外 | 81% | 0.20 | NaN |
Vikhr-Nemo-12B-Instruct-R-21-09-24 | 领域内 | 68% | 0.41 | 0 |
Vikhr-Nemo-12B-Instruct-R-21-09-24 | 领域外 | 92% | 0.52 | 0 |
gpt-4o-mini | 领域内 | 65% | 0.33 | NaN |
gpt-4o-mini | 领域外 | 73% | 0.18 | NaN |
gpt-3.5-turbo-0125 | 领域内 | 49% | 0.28 | NaN |
gpt-3.5-turbo-0125 | 领域外 | 76% | 0.20 | NaN |
该模型的构建方式
指令性 SFT 阶段
在 SFT 训练阶段,我们准备了一个大型(包含 150k 条指令)的指令性合成数据集 Vikhrmodels/GrandMaster-PRO-MAX。该数据集的特色在于内置了思维链(Chain-Of-Thought,简称 CoT),我们使用了经过修改的 gpt-4-turbo 提示来收集这些思维链,更多细节可查看数据集卡片。
此外,为了实现检索增强生成的接地性(RAG Grounding),我们还准备了另一个合成数据集 Vikhrmodels/Grounded-RAG-RU-v2(包含 50k 个对话),其构建流程较为复杂,无法在此简要描述,详细信息可查看该数据集的卡片。
SMPO 对齐阶段
为了进一步提升回复质量,我们采用了以下流程:
- 训练奖励模型:训练了一个自定义的奖励模型(目前暂不公开)。
- 数据筛选:使用奖励模型对原始的 Vikhrmodels/GrandMaster-PRO-MAX 数据集进行去重和筛选,得到约 10k 个高质量且多样化的对话。
- 拒绝采样:使用筛选后的数据集和奖励模型,基于 SFT 检查点进行拒绝采样(生成 7 个假设,仅保留 2 个最差的作为拒绝样本)。
- 模型微调:使用步骤 3 得到的数据集,通过我们的 SMPO 方法对 SFT 检查点进行微调。SMPO 方法的设计旨在提高拒绝采样条件下偏好训练的稳定性,并达到所需的边际效果。
SMPO、拒绝采样等方法的实现代码可在我们 GitHub 上的 effective_llm_alignment 库中找到。
选择 SMPO 而非其他策略优化(PO)方法,是经过大量经典方法实验后得出的结论,目的是更好地控制收敛过程。虽然通过精心调整其他方法(如 SimPO)也能取得类似效果,但我们致力于稳定这一过程,并整合其他方法的最佳实践。
如何使用 RAG
“documents” 角色是一个包含文档内容描述的字典列表,使用 json.dumps(array, ensure_ascii=False)
进行处理(具体示例如下)。
文档内容可以采用 3 种不同的格式:Markdown、HTML 和 纯文本。每个文档的内容可以是长度不超过 4k 个字符的文本块。
[
{
"doc_id": (0..5),
"title": "(null or str)",
"content": "(html or markdown or plain text)"
}
]
基于类 OpenAI API 的正确使用示例
启动 vLLM 服务器:vllm serve --dtype half --max-model-len 32000 -tp 1 Vikhrmodels/Vikhr-Nemo-12B-Instruct-R-21-09-24 --api-key token-abc123
GROUNDED_SYSTEM_PROMPT = "Your task is to answer the user's questions using only the information from the provided documents. Give two answers to each question: one with a list of relevant document identifiers and the second with the answer to the question itself, using documents with these identifiers."
documents = [
{
"doc_id": 0,
"title": "全球变暖:冰川",
"content": "在过去 50 年里,全球冰川的体积减少了 30%"
},
{
"doc_id": 1,
"title": "全球变暖:海平面",
"content": "自 1880 年以来,全球海平面上升了 20 厘米,并且每年仍以 3.3 毫米的速度继续上升"
}
]
sample_history = [
{'role': 'system', 'content': GROUNDED_SYSTEM_PROMPT},
{'role': 'documents', 'content': json.dumps(documents, ensure_ascii=False)},
{'role': 'user', 'content': '全球变暖'}
]
relevant_indexes = llm_client.chat.completions.create(
model=llm_model,
messages=sample_history,
temperature=0.0,
max_tokens=2048
).choices[0].message.content
print('Using documents: ' + relevant_indexes + '\n----')
final_answer = llm_client.chat.completions.create(
model=llm_model,
messages=sample_history + [{'role': 'assistant', 'content': relevant_indexes}],
temperature=0.3,
max_tokens=2048
).choices[0].message.content
print(final_answer)
代码执行后的输出结果大致如下:
Using documents: {"relevant_doc_ids": [0, 1]}
----
全球变暖是指地球大气和海洋的平均温度长期上升的现象。这一现象对我们的星球产生了诸多影响,根据我所掌握的数据,可以总结出两个关键方面:
1. **冰川体积减少**:在过去 50 年里,全球冰川的体积显著减少。数据显示,冰川体积减少了 30%。这可能是由于气温升高导致冰川融化,而冰川融化正是全球变暖的一个明显迹象。
2. **海平面上升**:全球海平面也在上升,这与冰川和冰盖的融化以及海水受热膨胀有关。自 1880 年以来,海平面已经上升了 20 厘米,并且这一趋势仍在持续,每年上升约 3.3 毫米。
这些变化对生态系统、气候和人类社会都产生了严重影响。冰川融化导致海平面上升,可能会引发沿海地区和岛屿的洪水泛滥,同时也会改变水资源分布和气候模式。
通过模型的第一个回复 relevant_indexes
(JSON 格式),可以判断模型是否在文档中找到了相关信息。如果没有找到,模型会返回一个空数组,并在生成第二个回复时表明未在知识库中找到相关信息。
🔧 技术细节
注意事项与限制
- 回复安全性:模型的回复安全性较低,主要侧重于正确、完整地执行指令。在使用过程中,请务必自行进行测试。部分问题可以通过系统提示和在用户提示中强调安全性来解决。
- 系统提示使用:系统提示并非用于描述角色,建议用于指定回复风格(如 “仅以 JSON 格式回复”)。此外,建议使用 英语 编写系统提示,因为训练数据集中采用了这种方式,但系统提示的语言不会影响回复语言。
- RAG 模式要求:RAG 模式 必须 使用 “如何使用 RAG” 部分中描述的系统提示
GROUNDED_SYSTEM_PROMPT
。此外,模型有时可能会在回复中加入一些自身知识库中的通用信息。 - 参数设置建议:建议使用较低的温度参数(0.1 - 0.5)和 top_k 参数(30 - 50)。当温度设置为 1.0 时,可能会出现随机的生成缺陷。
作者
- Sergei Bratchikov,NLP Wanderer,Vikhr 团队
- Konstantin Korolev,Vikhr 团队
- Aleksandr Nikolich,Vikhr 团队
引用信息
@inproceedings{nikolich2024vikhr,
title={Vikhr: Constructing a State-of-the-art Bilingual Open-Source Instruction-Following Large Language Model for {Russian}},
author={Aleksandr Nikolich and Konstantin Korolev and Sergei Bratchikov and Igor Kiselev and Artem Shelmanov },
booktitle = {Proceedings of the 4rd Workshop on Multilingual Representation Learning (MRL) @ EMNLP-2024},
year={2024},
publisher = {Association for Computational Linguistics},
url={https://arxiv.org/pdf/2405.13929}
}
📄 许可证
本项目采用 Apache-2.0 许可证。



