🚀 Kyara:大規模言語モデルの微調整における知識適応型検索強化
Kyara(知識適応型検索強化)は、知識検索プロセスを通じて言語モデルを改善する実験的なプロジェクトです。このプロジェクトは、特に繁体字中国語のような比較的資源が少ない言語に対して、モデルの知識適応能力と言語理解能力を強化することに注力しています。モデルの訓練に使用される大量の英語コーパスと比較して、繁体字中国語のデータは相対的に不足していますが、Kyaraはこの言語の限られたコーパスを拡張することでこのギャップを埋めます。
Kyaraの有効性を検証するために、Gemma - 2 - 2b - it
を全パラメータ微調整し、Kyaraモデルの最初のバージョンを作成しました。ベンチマークセクションで詳細に示されているように、初期の評価結果は、Kyaraが様々なベンチマークテストで元のGemma - 2 - 2b - it
を上回り、中国語評価で顕著な改善を示しています。
🚀 クイックスタート
KyaraはGemma2と同じアーキテクチャを採用し、同じ推論と訓練方法を使用しています。我々はKaggle上にJupyter Notebookを作成し、Kyaraの基本機能を展示しています。サービスレベルのデプロイには、より高いスループットと堅牢性を実現するために、Sglangまたはvllmの使用をおすすめします。
✨ 主な機能
検索強化生成(実験的)
Kyaraの訓練方法により、我々は教師付き微調整(SFT)段階で検索強化生成(RAG)に関連する内容を組み込んでいます。タスクテンプレートを構築するには、以下の例を参考にしてください。
📚 ドキュメント
ベンチマーク
汎用ベンチマーク
以下の評価はゼロショットベースで行われています。
指標 |
Kyara - 2b - it |
Gemma - 2 - 2b - it |
TMMLUPlus |
41.98 |
36.73 |
- STEM |
43.73 |
37.84 |
- 人文科学 |
38.72 |
33.40 |
- その他 |
40.61 |
36.00 |
- 社会科学 |
44.88 |
39.69 |
MMLU - Redux |
55.44 |
51.94 |
GSM8K |
54.21 |
51.63 |
MATH - L5 |
8.88 |
4.3 |
CRUX |
22.75 |
21.5 |
ZebraLogic |
5.2 |
4.2 |
中国語推論ベンチマーク |
4.21 |
3.44 |
TMMLUPlusの各グループの集約方法はマクロ平均で、公式実装に従っています。
[Open - LLMランキング](https://huggingface.co/spaces/open - llm - leaderboard/open_llm_leaderboard)
現在のところ、Kyara - 2b - itはOpenLLMランキングのすべての2b規模のモデルの中でトップを占めています。
アライメントベンチマーク
指標 |
Kyara |
Gemma - 2 - 2b - it |
ChatGPT - 3.5 - 1106 |
[AlpacaEval - LC](https://github.com/tatsu - lab/alpaca_eval) |
35.35 |
32.37 |
19.30 |
[AlpacaEval](https://github.com/tatsu - lab/alpaca_eval) |
43.34 |
32.94 |
9.20 |
[MT - Bench - TW](https://huggingface.co/datasets/MediaTek - Research/TCEval - v2) |
7.43 |
6.35 |
7.10 |
[MT - Bench](https://huggingface.co/spaces/lmsys/mt - bench) |
8.28 |
8.17 |
8.32 |
[Chatbot - Arena - Hard](https://github.com/lm - sys/arena - hard - auto) |
22.60 |
19.4 |
18.87 |
カテゴリ |
Kyara - 2b - it - CHT |
Kyara - 2b - it - CHS |
Gemma - 2 - 2b - it |
ChatGPT - 3.5 - 0613 |
基礎言語能力 |
6.72 |
6.54 |
6.42 |
6.92 |
高度な中国語理解 |
5.78 |
5.24 |
5.03 |
5.91 |
オープンエンド問題 |
8.16 |
7.79 |
7.52 |
6.47 |
執筆能力 |
7.90 |
7.24 |
7.76 |
7.28 |
論理推論 |
5.26 |
4.27 |
4.20 |
4.79 |
数学能力 |
5.99 |
5.44 |
5.05 |
5.38 |
タスク指向のロールプレイ |
8.07 |
8.00 |
7.42 |
7.00 |
専門知識 |
6.97 |
6.86 |
5.79 |
6.81 |
推論平均スコア |
5.62 |
4.85 |
4.63 |
5.00 |
中国語平均スコア |
7.26 |
6.94 |
6.66 |
6.73 |
総合スコア |
6.44 |
5.90 |
5.64 |
5.91 |
ここで、接尾辞CHTとCHSはそれぞれ繁体字中国語と簡体字中国語を表します。AlignBenchで繁体字中国語のパフォーマンスを評価するために、OpenCCを使用し、s2tw
を設定してすべての問題を簡体字中国語から繁体字中国語に変換しています。
方法
データセットの概要
合計で360万件の会話、約451億個のトークンを収集しました。以下は言語分布と会話ターンの概要です。
- 言語:

- 会話ターン:

データセットの構築
Kyaraのデータ構築は英語と中国語の2つの部分に分かれています。
- 英語部分:[teknium/OpenHermes - 2.5](https://huggingface.co/datasets/teknium/OpenHermes - 2.5)や[arcee - ai/The - Tome](https://huggingface.co/datasets/arcee - ai/The - Tome)など、複数の高品質なオープンソースデータセットを統合し、意味的な重複を排除して類似する例を削除しました。
- 中国語部分:構築プロセスは以下の通りです。
- 基礎データセット:検索強化に基づく知識注入:オープンな中国語知識コーパスを使用して知識検索システムを開発し、QDrantと統合しました。教師付き微調整(SFT)ペアを構築するために、以下のプロセスに従います。
- 知識ベースからドキュメントをサンプリングし、これらのテキストに基づいてユーザーが提起する可能性のある知識密集型の質問を生成します。
- (オプション)Evol - Instructを使用して命令の複雑さを増やします。
- 生成された命令にクエリ拡張を適用し、追加の上位K個のドキュメントを検索し、それぞれの関連性を評価します。
- 関連するドキュメントについては、大規模言語モデルを使用して問題に関連する重要な情報を要約します。
- 関連しないドキュメントについては、無視します。
- 大規模言語モデルに、元のドキュメントとK個の補足参照に基づいて詳細で包括的な応答を生成させます。
さらに、大規模言語モデルに高品質なドキュメントに対するユーザープロンプトを生成させ、(生成されたプロンプト、元のドキュメント)をSFTの例として使用します。
- 中国語数学データセット:
- データセット:[zake7749/kyara - chinese - math - sft - s0 - 30K](https://huggingface.co/datasets/zake7749/kyara - chinese - math - sft - s0 - 30K)
上述の戦略は広範な知識ベースのテキストを生成できますが、主に情報検索タスクに適しており、数学や推論関連の内容の構築にはあまり効果的ではありません。この問題を解決するために、[PersonaHub](https://huggingface.co/datasets/proj - persona/PersonaHub)に基づいて50,000個の数学問題を生成しました。その後、
Gemini - 1.5 - Flash
を使用して計算と推論に明らかな誤りがあるデータをフィルタリングし、[kyara - chinese - math - sft - s0 - 30K](https://huggingface.co/datasets/zake7749/kyara - chinese - math - sft - s0 - 30K)を作成しました。
- 高品質データセット:モデル最適化:基礎データセットを使用して教師付き学習を完了した後、高品質なサブセットで大規模言語モデルを再度微調整します。主に以下の3つの問題を解決するためです。
- 基礎データセットの一部の応答は小さなモデルによって生成されており、命令に従う能力が不十分な場合があります。
- 前のステップでは、知識の多様性と言語の適応性を導入するためにさまざまな大規模言語モデルを使用しました。しかし、異なる大規模言語モデルは応答テンプレートと推論方法に微妙な違いがあり、訓練されたチャットモデルが時々不安定になることがわかりました。そこで、単一の強力な大規模言語モデルを使用して生成された質問と回答のペアを含む高品質な小さなデータセットを導入しました。
- 基礎データセットには、生成されたクエリと元のドキュメントからなる質問と回答のペアが含まれています。これらのデータは知識が豊富ですが、命令に従う能力は比較的弱いです。
データの多様性と品質をバランスさせるために、InsTagに類似した戦略を使用してデータを分類しました。その後、[ArmoRM](https://huggingface.co/RLHFlow/ArmoRM - Llama3 - 8B - v0.1)と大規模言語モデルの評価器を使用してデータの品質を評価し、最終的に各カテゴリから最適な訓練データを抽出し、約500Kの第1段階のデータセットを作成してKyara - SFTモデルを再度微調整しました。
嗜好学習
Kyaraには嗜好学習を導入しており、これによりモデルの応答が人間の嗜好により適合し、プログラミングスキルと数学的推論能力が強化されます。
Kyaraの嗜好学習戦略は直接嗜好最適化(DPO)を採用し、2つのカスタム中国語データセットと2つの英語データセットを統合しています。
- [argilla/ultrafeedback - binarized - preferences](https://huggingface.co/datasets/argilla/ultrafeedback - binarized - preferences)
- [xinlai/Math - Step - DPO - 10K](https://huggingface.co/datasets/xinlai/Math - Step - DPO - 10K)
以下は中国語データセットの構築戦略の要約です。
- 中国語DPO:
- SPIN/SPPO:元の設計に従い、Kyara - SFTを使用して高品質データセットに対する一連の対比データを生成します。
- RLAIF:
- データセット:[zake7749/kyara - chinese - preference - dpo - s0 - 30K](https://huggingface.co/datasets/zake7749/kyara - chinese - preference - dpo - s0 - 30K)
Magpie - Align/Magpie - Qwen2 - Pro - 200K - Chinese
、hfl/stem_zh_instruction
、FreedomIntelligence/Evol - Instruct - Chinese - GPT4
から中国語のプロンプトを抽出し、同じプロンプトを4つの異なる大規模言語モデルに配布します。これらのモデルには以下が含まれます。
- GPT - 4o
- GPT - 4 - 0618
- ChatGPT - 3.5 - 0513
- Claude - Sonnet - 3.5
- Yi - Large
- Mixtral 8x22B
- Gemini - Flash
- Qwen2 - 72B - Instruct
- DeepSeek V2
応答を生成した後、大規模言語モデルに以下のプロンプトを使用してどちらの応答が良いかを判断させます。
**[タスク]**
公正な評価者として、以下の2つのAIアシスタントによるユーザーの質問に対する応答の品質を評価してください。あなたの評価は正確性と有用性を考慮に入れる必要があります。
1. まず、ユーザーの問題を段階的に独立して解決してください。
2. 次に、2つのアシスタントの回答をあなたの回答と比較してください。誤りを特定して修正してください。
3. 応答の長さが評価に影響を与えないようにしてください。
4. できるだけ客観的に判断してください。
説明を提供した後、以下の形式で最終判定を出力してください。アシスタントAが良い場合は "[[A]]" を、アシスタントBが良い場合は "[[B]]" を、引き分けまたはAとBがどちらも良くない場合は "[[C]]" を出力してください。
AとBの回答が正確性、有用性、関連性の点で非常に類似しており、「明確な」勝者がいない場合は、引き分けと判定して [[C]] を出力してください。
**[ユーザーの質問]**
{prompt}
---
**[アシスタントAの回答]**
{answer}
---
**[アシスタントBの回答]**
{prediction}
---
最後に、すべての4つのデータセットを統合してDPO訓練を行います。
📄 ライセンス
このプロジェクトはGemmaライセンスを採用しています。
関連リンク

- 🤗 [Hugging Face](https://huggingface.co/zake7749/gemma - 2 - 2b - it - chinese - kyara - dpo)
- 🚀 Github
- 📑 [論文](https://hf - mirror.com/api/resolve - cache/models/zake7749/gemma - 2 - 2b - it - chinese - kyara - dpo/2ca8e31c1587a53aa662ca8a676d2cf5499d4157/README.md?download=true&etag=%22f4bc372d020c1121d25a910432097c6bcaf7891f%22)
- 📖 英語ドキュメント
- 📖 中国語ドキュメント
- 💻 [Kaggle Notebook](https://www.kaggle.com/code/zake7749/kyara - a - compact - yet - powerful - chinese - llm)
プロジェクト画像