Vikhrmodels 发布俄英版Nemo——Vikhr-Nemo-12B-Instruct-R-21-09-24

Vikhr-Nemo 是我们的旗舰单模态 LLM(大语言模型),它是 VikhrModels 团队对 mistralai/Mistral-Nemo-Instruct-2407 的改进版本,主要适用于俄语和英语。 在训练过程中,我们使用了多个阶段,包括 SFT 和 SMPO(我们自己的 DPO 变体),更多信息请参阅 "如何创建该模型 "部分。

该模型针对各种使用情况进行了优化,包括标音、摘要、代码、角色扮演和对话维护。 Vikhr-Nemo 具有多语言生成功能和高性能 RAG 功能。 该模型在我们的教学和 RAG 基准测试中取得了最佳成绩,因此我们相信它在某些任务(如 RAG)中的表现不亚于 OpenAI 的 gpt-4o-mini。

所有使用的训练代码都可以在 GitHub 上的 effective_llm_alignment 代码库中找到,主要数据集可以在 HF 上的个人资料中找到。

特点

  1. 得益于 Grandmaster-PRO-MAX 数据集和原始模型,可生成高质量的俄语、英语和其他语言版本
  2. 支持调整回复风格的系统选项
  3. 借助源模型,最多可支持 128k 个上下文标记
  4. Grounded RAG 模式–受 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%。

这只是排行榜的一部分,更多详情请查看基准软件库。

Model NameWinrate95% CIAverage # Tokens
gpt-4-1106-preview90.9(-1.3, 1.0)541
gpt-4o-mini83.9(-1.8, 1.1)448
vikhr-nemo-12b-instruct-r-21-09-2479.8(-2.2, 1.9)627
gemma-2-9b-it-sppo-iter373.6(-1.6, 2.2)509
gemma-2-9b-it69.2(-2.5, 1.9)459
t-lite-instruct-0.164.7(-2.1, 1.7)810
vikhr-llama3.1-8b-instruct-r-21-09-2463.4(-2.1, 2.5)618
suzume-llama-3-8B-multilingual-orpo-borda-half57.1(-1.9, 2.2)682
mistral-nemo-instruct-240750.5(-2.7, 2.6)403
gpt-3.5-turbo-012550.0(0.0, 0.0)220
c4ai-command-r-v0149.0(-1.7, 2.2)529
meta-llama-3.1-8b-instruct43.1(-2.8, 2.3)628

RAG 基准测试结果

测试集的总规模为 200 个示例,其中域内问题 100 个,域外问题 100 个。

在此,为进行质量评估,指示模范评委 gpt-4o 根据文件和 gpt-4-1106-preview 的参考答案来考虑答案的相关性和事实完整性。

有关提示和分数的详细信息,请参阅 collab 上的基准代码。

in_domain–与所提交文件的内容有一定关系的问题 out_of_domain–与所提交文件的内容没有具体关系的问题。

question_typegpt-4o
judge_correct_percentavg_answer_match_rougeLavg_abs_indexes_diff
in_domain73%0.34NaN
out_of_domain81%0.20NaN
question_typeVikhr-Nemo-12B-Instruct-R-21-09-24
judge_correct_percentavg_answer_match_rougeLavg_abs_indexes_diff
in_domain68%0.410
out_of_domain92%0.520
question_typegpt-4o-mini
judge_correct_percentavg_answer_match_rougeLavg_abs_indexes_diff
in_domain65%0.33NaN
out_of_domain73%0.18NaN
question_typegpt-3.5-turbo-0125
judge_correct_percentavg_answer_match_rougeLavg_abs_indexes_diff
in_domain49%0.28NaN
out_of_domain76%0.20NaN

该模型是如何创建的

指导性 SFT 部分

在模型训练的 SFT 阶段,我们准备了一个大型(15 万条指令)教学合成数据集 Vikhrmodels/GrandMaster-PRO-MAX。 该数据集的特点是内嵌 CoT(Chain-Of-Thought,思维链),为了收集该数据集,我们使用了 gpt-4-turbo 的修改版 promet,详情请参见数据集卡片。

此外,为了制作 RAG Grounding,我们还准备了另一个合成数据集–Vikhrmodels/Grounded-RAG-RU-v2(50k 对话)。

与 SMPO 为进一步提高答复的质量。

进一步提高响应质量 、 我们 使用了以下 管道 :

  1. 我们训练了一个自定义奖励模型(暂不公开)
  2. 使用 RM 模型对原始 Vikhrmodels/GrandMaster-PRO-MAX 数据集进行了重复和过滤,获得了约 10k 个质量最高、最多样化的对话。
  3. 我们使用接收到的数据集和奖励模型进行了带有 SFT 检查点的拒绝采样。(我们生成了 7 个假设,只将最差的 2 个假设作为拒绝假设)
  4. 我们使用 SMPO 方法,使用第 3 阶段生成的数据集进一步训练了 SFT 检查点。SMPO 的设计和选择是为了在拒绝采样条件下提高偏好训练的稳定性,并达到所需的余量。

SMPP、剔除采样等功能的实现可在 GitHub 上的 efficie_lm_alignment 库中找到

使用 SMP 而不是其他 PO 方法的想法是在使用经典方法进行大量实验后产生的,必要时可以更好地控制收敛过程。如果仔细配置其他方法(例如 SimPO),也能获得类似的结果,但我们试图简化这一过程,并结合其他方法的最佳实践。

如何使用 RAG

文档角色是描述文档内容的字典列表,使用 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-like 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": "Уровень мирового океана повысился на 20 см с 1880 года и продолжает расти на 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 模式需要使用 GROUNDED_SYSTEM_PROMPT 系统提示,详情请参见 如何使用 RAG 部分。 此外,有时模型还可以根据文档中的内容添加其知识中的一般信息。
  • 最好使用低温模型(0.1-0.5),同时使用 top_k(30-50),在temperature 为 1.0 时会发现随机生成缺陷。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值