库名称:transformers
模型名称:Vikhrmodels/Vikhr-YandexGPT-5-Lite-8B-it
数据集:
- Vikhrmodels/GrandMaster-PRO-MAX
- Vikhrmodels/Grounded-RAG-RU-v2
基础模型:
- yandex/YandexGPT-5-Lite-8B-pretrain
语言:
- ru
- en
许可证:other
许可证名称:yandexgpt-5-lite-8b-pretrain
许可证链接:LICENSE
Vikhr-YandexGPT-5-Lite-8B-it
基于YandexGPT-5-Lite-8B-pretrain的指令模型,使用俄语数据集GrandMaster-PRO-MAX和Grounded-RAG-RU-v2通过SFT方法训练而成。
量化版本:
特点:
立即试用:

训练:
Vikhr-YandexGPT-5-Lite-8B-it是通过SFT(监督微调)方法创建的。
指令SFT部分
在SFT训练阶段,我们准备了一个大型(15万条指令)的合成指令数据集Vikhrmodels/GrandMaster-PRO-MAX。其特点是内置了CoT(思维链),我们使用修改后的gpt-4-turbo提示来收集这些数据,详情请见数据集卡片。
此外,为了实现RAG Grounding,我们准备了另一个合成数据集Vikhrmodels/Grounded-RAG-RU-v2(5万条对话),其构建流程较为复杂,无法在此简短描述,详细信息请参考其卡片。
训练配置
运行代码示例:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Vikhrmodels/Vikhr-YandexGPT-5-Lite-8B-it"
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
input_text = "写一段关于电影《回到未来》的简短描述。"
messages = [
{"role": "user", "content": input_text},
]
input_ids = tokenizer.apply_chat_template(messages, truncation=True, add_generation_prompt=True, return_tensors="pt")
output = model.generate(
input_ids,
max_length=1512,
temperature=0.7,
)
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)
模型回答:
《回到未来》(英文名:"Back to the Future")是一部1985年上映的美国科幻电影,由罗伯特·泽米吉斯执导,鲍勃·盖尔编剧。主演包括迈克尔·J·福克斯、克里斯托弗·洛伊德和莉娅·汤普森。
影片讲述了1985年的普通青少年马蒂·麦克弗莱意外穿越到1955年的故事,这得益于他的科学家朋友埃米特·布朗博士的发明。马蒂必须在过去帮助年轻的布朗博士发明时间机器。
在冒险过程中,马蒂遇到了年轻的布朗博士及其家人,并爱上了一个在未来将成为他母亲的女孩。马蒂不仅要纠正过去的错误,还要防止可能改变未来的灾难发生。
影片获得了多项奖项,成为经典之作,并衍生出两部续集和大量至今仍流行的梗和台词。
如何使用RAG
documents角色是一个包含文档内容描述的字典列表,使用json.dumps(array, ensure_ascii=False)
(见下方示例)。
文档内容可以以3种不同格式呈现:Markdown、HTML或纯文本。每个文档的内容可以是长度不超过4千字符的文本块。
[
{
"doc_id": (0..5),
"title": "(null或str)",
"content": "(html或markdown或纯文本)"
}
]
正确使用OpenAI-like API的示例
启动vLLM服务器:vllm serve --dtype half --max-model-len 32000 -tp 1 Vikhrmodels/Vikhr-YandexGPT-5-Lite-8B-it --api-key token-abc123
GROUNDED_SYSTEM_PROMPT = "你的任务是仅使用提供的文档信息回答用户问题。为每个问题提供两个答案:一个是相关文档标识符列表,另一个是使用这些标识符文档的问题答案本身。"
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('使用文档:' + 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)
执行代码后的回答大致如下:
使用文档:{"relevant_doc_ids": [0, 1]}
全球变暖是指地球大气和海洋平均温度的长期上升。这一现象对地球有许多影响,基于现有数据,可以指出两个关键方面:
-
冰川体积减少:过去50年全球冰川体积显著减少。数据显示冰川体积减少了30%。这可能是由于气温上升导致冰川融化,这是全球变暖的迹象之一。
-
海平面上升:全球海平面也在上升,这与冰川和冰盖融化以及水温上升导致的水体膨胀有关。自1880年以来,海平面上升了20厘米,并继续以每年3.3毫米的速度上升。
这些变化对生态系统、气候和人类社会有严重影响。冰川融化导致海平面上升,可能淹没沿海地区和岛屿,同时改变水资源和气候模式。
通过模型的第一个回答relevant_indexes
(JSON),可以判断模型是否在文档中找到了相关信息。如果模型返回空数组,则表示未找到信息,此时在生成第二个回答时会说明无法在知识库中找到相关信息。
注意事项和限制
- 模型的回答安全性较低,旨在正确完整地执行指令,使用时请自行测试。部分问题可以通过系统提示和用户提示中强调安全性来缓解。
- 系统提示不适用于描述角色,建议用于指定回答风格(如"仅以json格式回答")。此外,建议使用英语编写系统提示,因为这是数据集中的做法,系统提示的语言不会影响回答的语言。
- RAG模式必须包含如何使用RAG部分描述的
GROUNDED_SYSTEM_PROMPT
系统提示。有时模型可能会在回答中加入文档外的通用知识。
- 建议使用较低的温度(0.1-0.5)和top_k(30-50)。温度设为1.0时可能会出现随机生成缺陷。
作者
@inproceedings{nikolich2024vikhr,
title={Vikhr: 推进开源双语指令跟随大语言模型在俄语和英语中的应用},
author={Aleksandr Nikolich and Konstantin Korolev and Sergei Bratchikov and Nikolay Kompanets and Igor Kiselev and Artem Shelmanov},
booktitle={第四届多语言表示学习研讨会论文集 (MRL) @ EMNLP-2024},
year={2024},
publisher={计算语言学协会},
url={https://arxiv.org/pdf/2405.13929}
}