🚀 Xwin-LM: 強力で安定した再現可能な大規模言語モデルのアライメント
Xwin-LMは、大規模言語モデルのアライメント技術を開発・オープンソース化することを目指しています。これには、教師付き微調整(SFT)、報酬モデル(RM)、棄却サンプリング、人間のフィードバックによる強化学習(RLHF)などが含まれます。初回リリースのモデルはLlama2ベースモデルをベースに構築され、AlpacaEvalで1位にランクインしました。特に、このベンチマークで初めてGPT-4を上回ったモデルです。本プロジェクトは継続的に更新されます。
🚀 クイックスタート
Xwin-LMを使って大規模言語モデルのアライメントを強化しましょう!
✨ 主な機能
- 大規模言語モデルのアライメント技術の開発とオープンソース化
- 教師付き微調整(SFT)、報酬モデル(RM)、棄却サンプリング、人間のフィードバックによる強化学習(RLHF)などの技術を提供
- Llama2ベースモデルを使用した高性能なモデルをリリース
- AlpacaEvalでの高い勝率
📚 ドキュメント
ニュース
モデルカード
ベンチマーク
以下の表は、Xwin-LMのAlpacaEvalでの性能を示しています。ここでは、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(勝率 %) |
|
Text-Davinci-003との対戦 |
ChatGPTとの対戦 |
GPT4との対戦 |
Xwin-LM-70B-V0.1 |
95.57 |
87.50 |
60.61 |
GPT-4 |
95.28 |
84.66 |
50.00 |
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 |
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」と言います。 |
Xwin-LMの自然言語処理基礎タスクでの性能
以下の表は、Open LLM Leaderboardの自然言語処理基礎タスクにおける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 |
推論
会話テンプレート
望ましい結果を得るために、モデルを推論に使用する際は、会話テンプレートに厳密に従ってください。当社のモデルは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 := "好奇心旺盛なユーザーと人工知能アシスタントの会話。 "
"アシスタントは、ユーザーの質問に役立つ、詳細な、礼儀正しい回答を提供します。 "
"ユーザー: こんにちは、手伝ってくれますか? "
"アシスタント:"
)
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 := "好奇心旺盛なユーザーと人工知能アシスタントの会話。 "
"アシスタントは、ユーザーの質問に役立つ、詳細な、礼儀正しい回答を提供します。 "
"ユーザー: こんにちは、手伝ってくれますか? "
"アシスタント:"
)
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