🚀 Xwin-LM: 強力で安定した再現可能な大規模言語モデルのアライメント
Xwin-LMは、大規模言語モデルのアライメント技術を開発し、オープンソース化することを目指しています。これには、教師付き微調整(SFT)、報酬モデル(RM)、棄却サンプリング、人間のフィードバックによる強化学習(RLHF)などが含まれます。初回リリースのモデルはLlama2をベースに構築され、AlpacaEvalで1位を獲得しました。特に、このベンチマークで初めてGPT - 4を上回ったモデルです。本プロジェクトは継続的に更新されます。
🚀 クイックスタート
Xwin-LMを使って大規模言語モデルのアライメントを強化しましょう!
✨ 主な機能
- 大規模言語モデルのアライメント技術の開発とオープンソース化。
- Llama2ベースのモデルで、AlpacaEvalベンチマークで高い勝率を達成。
- 継続的な更新による性能向上。
📚 ドキュメント
ニュース
- 💥 [2023年10月12日] Xwin-LM-7B-V0.2 と Xwin-LM-13B-V0.2 がリリースされました。比較データとRLトレーニング(PPO)が改善されています。GPT - 4に対する勝率はそれぞれ59.83%(7Bモデル)と70.36%(13Bモデル)に大幅に向上しています。70Bモデルは近日リリース予定です。
- 💥 [2023年9月] Xwin-LM-70B-V0.1 をリリースしました。AlpacaEval ベンチマークでDavinci - 003に対する勝率が95.57%を達成し、AlpacaEvalで1位にランクインしました。AlpacaEvalで初めてGPT - 4を上回ったモデルです。また、GPT - 4に対する勝率は60.61です。
- 🔍 [2023年9月] RLHFはXwin-LM-V0.1リリースの高い性能において重要な役割を果たしています!
- 💥 [2023年9月] Xwin-LM-13B-V0.1 をリリースしました。AlpacaEval で91.76%の勝率を達成し、すべての13Bモデルの中で1位にランクインしました。
- 💥 [2023年9月] Xwin-LM-7B-V0.1 をリリースしました。AlpacaEval で87.82%の勝率を達成し、すべての7Bモデルの中で1位にランクインしました。
モデルカード
ベンチマーク
以下の表は、AlpacaEval でのXwin-LMの性能を示しています。ここでは、805の質問にわたってText - Davinci - 003に対する勝率を評価しています。包括的な評価のために、ChatGPTおよびGPT - 4に対する勝率も初めて提示しています。Xwin-LMモデルファミリーはすべての指標で新たな最先端性能を確立しています。特に、Xwin-LM-70B-V0.1は初めてGPT - 4を上回り、Text - Davinci - 003に対する勝率は95.57%、GPT - 4に対する勝率は**60.61%**を達成しています。
モデル |
AlpacaEval(勝率 %) |
AlpacaEval(勝率 %) |
AlpacaEval(勝率 %) |
|
v.s. Text - Davinci - 003 |
v.s. ChatGPT |
v.s. GPT4 |
Xwin-LM-70B-V0.1 |
95.57 |
87.50 |
60.61 |
GPT - 4 |
95.28 |
84.66 |
50.00 |
Xwin-LM-13B-V0.2 |
93.22 |
87.14 |
70.36 |
WizardLM-70B-V1.0 |
92.91 |
80.19 |
46.70 |
Llama - 2 - 70B - Chat |
92.66 |
81.97 |
51.19 |
Xwin-LM-13B-V0.1 |
91.76 |
81.79 |
55.30 |
ChatGPT |
89.37 |
50.00 |
16.60 |
Xwin-LM-7B-V0.2 |
89.31 |
79.60 |
59.83 |
WizardLM-13B-V1.2 |
89.17 |
75.75 |
41.91 |
Xwin-LM-7B-V0.1 |
87.35 |
76.40 |
47.57 |
Llama - 2 - 13B - Chat |
81.09 |
64.22 |
30.92 |
プロンプト |
GPT4の応答 |
Xwin-LMの応答 |
私はりんごの上に皿を置き、その皿を台所から食堂に持ってきました。りんごは今どこにありますか? |
あなたが皿を台所から食堂に移動させたとき、りんごは皿の下にあったので、りんごは今食堂にあります。 |
りんごはまだ台所にあります。あなたは皿だけを移動させたからです。りんごは皿の下にあるので、りんごを食堂に持っていきたい場合は、りんごを直接移動させるか、りんごを皿の上に置いてから皿を食堂に移動させる必要があります。 |
次の質問に答えてください。 フランス語で「こんばんは」はどう言いますか? |
フランス語で「こんばんは」は「bonsoir」と言います。 |
フランス語で「こんばんは」は「bonsoir」と訳されます。この挨拶は夕方や夜に使われ、通常は午後6時以降です。これは「bon」(良い)と「soir」(夕方)の組み合わせです。発音は「bone - swahr」と言います。 |
次の表は、Open LLM Leaderboard のNLP基礎タスクにおけるXwin-LMと他の大規模言語モデルの比較を提供しています。
モデル |
MMLU 5 - shot |
ARC 25 - shot |
TruthfulQA 0 - shot |
HellaSwag 10 - shot |
平均 |
Text - davinci - 003 |
56.9 |
85.2 |
59.3 |
82.2 |
70.9 |
Vicuna - 13b 1.1 |
51.3 |
53.0 |
51.8 |
80.1 |
59.1 |
Guanaco 30B |
57.6 |
63.7 |
50.7 |
85.1 |
64.3 |
WizardLM - 7B 1.0 |
42.7 |
51.6 |
44.7 |
77.7 |
54.2 |
WizardLM - 13B 1.0 |
52.3 |
57.2 |
50.5 |
81.0 |
60.2 |
WizardLM - 30B 1.0 |
58.8 |
62.5 |
52.4 |
83.3 |
64.2 |
Llama - 2 - 7B - Chat |
48.3 |
52.9 |
45.6 |
78.6 |
56.4 |
Llama - 2 - 13B - Chat |
54.6 |
59.0 |
44.1 |
81.9 |
59.9 |
Llama - 2 - 70B - Chat |
63.9 |
64.6 |
52.8 |
85.9 |
66.8 |
Xwin-LM-7B-V0.1 |
49.7 |
56.2 |
48.1 |
79.5 |
58.4 |
Xwin-LM-13B-V0.1 |
56.6 |
62.4 |
45.5 |
83.0 |
61.9 |
Xwin-LM-70B-V0.1 |
69.6 |
70.5 |
60.1 |
87.1 |
71.8 |
Xwin-LM-7B-V0.2 |
50.0 |
56.4 |
49.5 |
78.9 |
58.7 |
Xwin-LM-13B-V0.2 |
56.6 |
61.5 |
43.8 |
82.9 |
61.2 |
💻 使用例
会話テンプレート
推論にモデルを使用する際には、望ましい結果を得るために会話テンプレートに厳密に従ってください。当社のモデルはVicunaが確立したプロンプト形式を採用しており、複数ターンの会話をサポートしています。
好奇心旺盛なユーザーと人工知能アシスタントの会話。アシスタントは、ユーザーの質問に役立つ、詳細な、礼儀正しい回答を提供します。ユーザー: こんにちは! アシスタント: こんにちは。</s>ユーザー: あなたは誰ですか? アシスタント: 私はXwin-LMです。</s>......
HuggingFaceの例
from transformers import AutoTokenizer, AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("Xwin-LM/Xwin-LM-7B-V0.1")
tokenizer = AutoTokenizer.from_pretrained("Xwin-LM/Xwin-LM-7B-V0.1")
(
prompt := "A chat between a curious user and an artificial intelligence assistant. "
"The assistant gives helpful, detailed, and polite answers to the user's questions. "
"USER: Hello, can you help me? "
"ASSISTANT:"
)
inputs = tokenizer(prompt, return_tensors="pt")
samples = model.generate(**inputs, max_new_tokens=4096, temperature=0.7)
output = tokenizer.decode(samples[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True)
print(output)
vLLMの例
Xwin-LMはLlama2をベースにしているため、vLLMを使用した高速推論もサポートしています。詳細なインストール手順については、vLLMを参照してください。
from vllm import LLM, SamplingParams
(
prompt := "A chat between a curious user and an artificial intelligence assistant. "
"The assistant gives helpful, detailed, and polite answers to the user's questions. "
"USER: Hello, can you help me? "
"ASSISTANT:"
)
sampling_params = SamplingParams(temperature=0.7, max_tokens=4096)
llm = LLM(model="Xwin-LM/Xwin-LM-7B-V0.1")
outputs = llm.generate([prompt,], sampling_params)
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(generated_text)
今後の予定
- [ ] ソースコードのリリース
- [ ] 数学や推論など、より多くの機能のリリース
引用
このリポジトリのデータまたはコードを使用する場合は、以下のように引用してください。
@software{xwin-lm,
title = {Xwin-LM},
author = {Xwin-LM Team},
url = {https://github.com/Xwin-LM/Xwin-LM},
version = {pre-release},
year = {2023},
month = {9},
}
謝辞
Llama 2、FastChat、AlpacaFarm、およびvLLMに感謝します。
📄 ライセンス
Llama2ライセンス