🚀 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 (Supervised Fine-Tuning) 手法を用いて作成されました。
指示型SFT部分
SFT段階の学習では、大規模な(150kの指示を含む)指示型合成データセット Vikhrmodels/GrandMaster-PRO-MAX を用意しました。このデータセットの特徴は、組み込まれたCoT (Chain-Of-Thought) で、これを収集するためにgpt-4-turbo用の修正プロンプトを使用しました。詳細はデータセットのページを参照してください。
また、RAG Groundingを行うために、別の合成データセット Vikhrmodels/Grounded-RAG-RU-v2(50kの対話)を用意しました。その収集パイプラインは短い説明には難しいため、詳細はデータセットのページを参照してください。
学習設定
💻 使用例
基本的な使用法
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年にタイムトラベルしてしまう物語を描いています。マーティは過去にいる若くて天真爛漫なブラウン博士を助け、タイムマシンを発明させなければなりません。
冒険の中で、マーティは若いブラウン博士とその家族に会い、将来自分の母になる少女に恋をします。マーティは過去の誤りを修正するだけでなく、未来を変える可能性のある大災害を防がなければなりません。
この映画は多くの賞を受賞し、カルチャーとなり、2つの続編と多くのネットミームや引用文を生み出し、今でも人気があります。
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-YandexGPT-5-Lite-8B-it --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]}
地球温暖化とは、地球の大気と海洋の平均温度が長期的に上昇する現象です。この現象は、私たちの惑星に多くの影響を及ぼします。利用可能なデータに基づいて、2つの主要な側面を挙げることができます。
-
氷河の減少: 過去50年間で、世界中の氷河の体積が30%減少しています。これは、地球温暖化の兆候の1つである温度上昇による氷河の融解に関連している可能性があります。
-
海面の上昇: 世界の海洋の水位も上昇しており、これは氷河や氷床の融解、および温度上昇に伴う水の膨張に関連しています。1880年以来、海面は20センチ上昇しており、このプロセスは続いており、毎年3.3ミリメートルの上昇が見られます。
これらの変化は、生態系、気候、人間社会に深刻な影響を及ぼします。氷河の融解は海面の上昇を引き起こし、これは沿岸地域や島嶼の浸水、および水資源や気候パターンの変化につながる可能性があります。
モデルの最初の応答 relevant_indexes
(JSON) を使用することで、モデルがドキュメント内に情報を見つけたかどうかを判断できます。モデルは、情報がない場合は空の配列を返すように学習されており、その場合、知識ベース内に情報を見つけることができなかったと応答します(2番目の応答を生成する際)。
🔧 技術詳細
注意事項と制限事項
- モデルは回答の安全性が低いレベルであり、指示を正確かつ完全に実行することに重点が置かれています。使用時にはこの点を考慮し、独自にテストしてください。一部はシステムプロンプトやユーザープロンプトでの安全性の重要性に関する追加指示によって改善できます。
- システムプロンプトはキャラクターの説明には使用されません。回答のスタイルを指定する(例: "answer only in json format")ために使用することをお勧めします。また、英語で記述することをおすすめします。これはデータセットの形式に合わせたもので、システムプロンプトで英語を使用しても回答の言語には影響しません。
- RAGモードでは、RAGの使用方法セクションで説明されている
GROUNDED_SYSTEM_PROMPT
システムプロンプトが必須です。また、モデルはドキュメント内の情報に加えて、自身の知識からの一般的な情報を回答に追加することがあります。
- モデルは低い温度 (0.1 - 0.5) で使用することをおすすめします。また、top_k (30 - 50) を使用することもおすすめします。温度が1.0の場合、生成にランダムな欠陥が見られることがあります。
📄 ライセンス
このモデルは、yandexgpt-5-lite-8b-pretrain ライセンスの下で提供されています。
👥 作者
@inproceedings{nikolich2024vikhr,
title={Vikhr: Advancing Open-Source Bilingual Instruction-Following Large Language Models for Russian and English},
author={Aleksandr Nikolich and Konstantin Korolev and Sergei Bratchikov and Nikolay Kompanets and Igor Kiselev and Artem Shelmanov},
booktitle={Proceedings of the 4th Workshop on Multilingual Representation Learning (MRL) @ EMNLP-2024},
year={2024},
publisher={Association for Computational Linguistics},
url={https://arxiv.org/pdf/2405.13929}
}