license: apache-2.0
datasets:
- Vikhrmodels/GrandMaster-PRO-MAX
- Vikhrmodels/Grounded-RAG-RU-v2
language:
- en
- ru
base_model:
- mistralai/Mistral-Nemo-Instruct-2407
library_name: transformers
英文版说明文件
Vikhr-Nemo-12B-Instruct-R-21-09-24
模型描述
Vikhr-Nemo是我们旗舰级的单模态大语言模型(LLM),是mistralai/Mistral-Nemo-Instruct-2407的增强版本,由VikhrModels团队针对俄语和英语优化。训练过程包含多个阶段,包括监督微调(SFT)和我们自研的SMPO(DPO改进版本,详见*"模型开发流程"*章节)。
该模型专为多样化场景设计,涵盖逻辑推理、文本摘要、代码生成、角色扮演和对话交互。支持多语言生成,并具备高性能的检索增强生成(RAG)能力。在我们的指令遵循和RAG基准测试中表现最佳,部分任务(如RAG)性能可媲美OpenAI的gpt-4o-mini。
完整训练代码已开源至GitHub仓库effective_llm_alignment,主要数据集可在HF主页获取。
核心特性
- 优质双语生成:基于Grandmaster-PRO-MAX数据集和基础模型,在俄英及其他语言表现优异
- 系统提示支持:通过系统指令灵活调控回答风格
- 超长上下文:继承基础模型的128k tokens上下文窗口
- 锚定RAG模式:内置特殊角色
documents
,可自动检索相关文档ID并基于内容生成回答(灵感来自Command-R的同名功能)
性能评估
模型在俄语开源对比基准ru-arena-general(50主题×10问题,裁判gpt-4-1106-preview)和基于Grounded-RAG-v2测试集的RAG基准(裁判gpt-4o)中进行测试。
Ru-Arena-General结果
基准答案来自gpt-3.5-turbo-0125,故其胜率为50%。注:180个测试样本意外混入训练集(感谢Ilya提供信息)。
模型名称 |
胜率 |
95%置信区间 |
平均token数 |
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个)。评估标准:gpt-4o根据文档内容和gpt-4-1106-preview参考答案判断回答的相关性与事实完整性。
领域内问题:与文档内容相关 | 领域外问题:与文档无关
问题类型 |
裁判正确率 |
平均ROUGE-L |
平均位置差 |
领域内 |
73% |
0.34 |
NaN |
领域外 |
81% |
0.20 |
NaN |
问题类型 |
裁判正确率 |
平均ROUGE-L |
平均位置差 |
领域内 |
68% |
0.41 |
0 |
领域外 |
92% |
0.52 |
0 |
问题类型 |
裁判正确率 |
平均ROUGE-L |
平均位置差 |
领域内 |
65% |
0.33 |
NaN |
领域外 |
73% |
0.18 |
NaN |
问题类型 |
裁判正确率 |
平均ROUGE-L |
平均位置差 |
领域内 |
49% |
0.28 |
NaN |
领域外 |
76% |
0.20 |
NaN |
开发流程
监督微调阶段
使用15万条合成指令数据集GrandMaster-PRO-MAX,其特点是通过改进的gpt-4-turbo提示工程内置思维链(CoT)标注。针对RAG场景,另构建5万对话数据集Grounded-RAG-RU-v2,具体构建流程详见数据集卡片。
SMPO对齐阶段
优化流程:
- 训练定制奖励模型(暂未开源)
- 通过RM筛选原数据集,保留1万条高质量多样化对话
- 对SFT检查点进行拒绝采样(生成7个假设,保留2个最差作为负样本)
- 使用SMPO方法(专为拒绝采样场景设计)进行偏好优化,确保训练稳定性
技术细节详见effective_llm_alignment库。相比传统PO方法,SMPO在收敛控制方面表现更优,经调参后其他方法(如SimPO)也可达到类似效果。
RAG使用指南
documents
角色需传入JSON序列化数组(使用json.dumps(array, ensure_ascii=False)
),文档内容支持Markdown/HTML/纯文本格式,单文档不超过4k字符。
[
{
"doc_id": "0-5",
"title": "可选标题",
"content": "HTML/Markdown/纯文本内容"
}
]
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 = "请仅基于提供文档回答用户问题。每个问题需生成两个回答:先列出相关文档ID,再基于这些文档生成最终答案。"
documents = [
{
"doc_id": 0,
"title": "全球变暖:冰川",
"content": "过去50年全球冰川体积减少30%"
},
{
"doc_id": 1,
"title": "全球变暖:海平面",
"content": "1880年以来海平面上升20厘米,目前每年上升3.3毫米"
}
]
典型输出:
使用文档: {"relevant_doc_ids": [0, 1]}
----
全球变暖指地球大气和海洋长期升温的现象。根据文档:
1. 冰川消退:过去50年全球冰川减少30%
2. 海平面上升:自1880年已上升20厘米(年增3.3毫米)
这些变化对生态系统和人类社会产生深远影响...
通过首轮响应的relevant_doc_ids
可判断是否找到相关信息(空数组表示未找到)。
注意事项
- 低安全级别:建议通过系统提示加强安全约束
- 系统提示规范:建议用英语编写风格指令(如"answer only in json")
- 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: 构建最先进的双语开源指令跟随大语言模型},
author={Aleksandr Nikolich and Konstantin Korolev and Sergei Bratchikov and Igor Kiselev and Artem Shelmanov},
booktitle={第4届多语言表示学习研讨会论文集(MRL)@EMNLP-2024},
year={2024},
publisher={计算语言学协会},
url={https://arxiv.org/pdf/2405.13929}
}