🚀 MiniCPM-2B-128k
MiniCPMは、ModelBest Inc.とTsinghuaNLPによって開発されたエンドサイズの大規模言語モデルで、埋め込みを除いてわずか24億(2.4B)のパラメータを持ちます。MiniCPM-2B-128kは、MiniCPM-2Bをベースにした長文脈拡張の試みで、30億パラメータ未満の最初の長文脈(>=128k)モデルです。以前のバージョンと比較した改善点は以下の通りです。
- 128kのコンテキストをサポートし、総合的な長文評価InfiniteBenchで70億パラメータ以下のモデルで最高のスコアを達成しますが、4k以内のコンテキストでは性能が低下します。
- コミュニティ開発者の便宜のため、モデルはアライメント時に{}指令テンプレートをchatml形式(user\n{}\nassistant\n)に更新しました。これにより、vllm openai互換サーバーモードでのデプロイと使用が容易になります。
- 並列メカニズムの要件により、tie_embeddingを削除し、語彙を127,660に拡張しました。
詳細については、GitHubリポジトリとブログを参照してください。
🚀 クイックスタート
MiniCPMは、面壁と清華大学自然言語処理研究室が共同でオープンソース化したシリーズのエンドユーザー向け大規模言語モデルです。メインの言語モデルであるMiniCPM-2Bは、埋め込みを除いてわずか24億(2.4B)のパラメータを持っています。MiniCPM-2B-128kは、MiniCPM-2Bをベースにした長文脈拡張の試みで、30億パラメータ未満の最初の長文脈モデルです。
✨ 主な機能
- 長文脈サポート:128kのコンテキストをサポートし、総合的な長文評価InfiniteBenchで70億パラメータ以下のモデルで最高のスコアを達成します。
- 指令テンプレート更新:アライメント時に{}指令テンプレートをchatml形式(user\n{}\nassistant\n)に更新し、vllm openai互換サーバーモードでのデプロイと使用を容易にします。
- 語彙拡張:並列メカニズムの要件により、tie_embeddingを削除し、語彙を127,660に拡張しました。
📚 ドキュメント
評価結果
モデル |
平均 |
コードと数学を除く平均 |
パスキー |
数字文字列 |
kv検索 |
英語の長文選択 |
中国語の長文QA |
英語の長文QA |
英語の長文要約 |
英語の長対話QA |
数学計算 |
数学検索 |
コードデバッグ |
コード実行 |
LWM-Text-128k |
24.45 |
33.62 |
100 |
97.8 |
0.6 |
28.82 |
15.93 |
14.31 |
9.99 |
1.5 |
0 |
3.43 |
20.05 |
1 |
Yarn-Mistral-7b-128k |
19.84 |
27.36 |
92.71 |
|
0 |
27.95 |
15.49 |
9.55 |
9.06 |
7.5 |
0 |
17.14 |
0.76 |
1.25 |
Mistral-7B-Instruct-v0.2(ABF 1000w) |
27.75 |
36.9 |
100 |
78.98 |
3.6 |
37.12 |
11.74 |
17.37 |
21.12 |
9.5 |
0 |
29.43 |
17.51 |
0 |
Yi-6B-200k |
22.15 |
32.54 |
100 |
94.92 |
0 |
36.68 |
15.07 |
9.2 |
0.92 |
3.5 |
0 |
4.29 |
0.51 |
0.75 |
chatglm3-6b-128k |
25.58 |
36.57 |
89.93 |
99.66 |
5.2 |
46.29 |
10.7 |
8.38 |
25.91 |
6.5 |
0 |
8 |
5.33 |
1 |
MiniCPM-2.4B-128k |
27.32 |
37.68 |
98.31 |
99.83 |
9 |
29.69 |
23.06 |
16.33 |
15.73 |
9.5 |
0 |
4.29 |
22.08 |
0 |
⚠️ 重要提示
Huggingfaceでの生成品質はvLLMよりもわずかに低く、速度も大幅に遅いことがわかりました。したがって、ベンチマークテストにはvLLMの使用をおすすめします。
局限性
- モデル規模の制限により、モデルは幻覚的な問題を引き起こす可能性があります。DPOモデルはより長い応答を生成する傾向があるため、幻覚が発生しやすくなります。私たちは、MiniCPMモデルの反復改善を続けます。
- 学術研究目的でのモデルの汎用性を確保するため、モデルに対して何らかのアイデンティティトレーニングを行っていません。同時に、ShareGPTのオープンソースコーパスをトレーニングデータの一部として使用しているため、モデルはGPTシリーズのモデルと同様のアイデンティティ情報を出力する可能性があります。
- モデル規模の制限により、モデルの出力はプロンプトワードの影響を大きく受け、複数回の試行で結果が不一致になる可能性があります。
- モデル容量の制限により、モデルの知識記憶は正確ではありません。将来的には、RAG方法を組み合わせてモデルの知識記憶能力を強化する予定です。
💻 使用例
基本的な使用法
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
torch.manual_seed(0)
path = 'openbmb/MiniCPM-2B-128k'
tokenizer = AutoTokenizer.from_pretrained(path)
model = AutoModelForCausalLM.from_pretrained(path, torch_dtype=torch.bfloat16, device_map='cuda', trust_remote_code=True)
responds, history = model.chat(tokenizer, "山东省最高的山是哪座山, 它比黄山高还是矮?差距多少?", temperature=0.8, top_p=0.8)
print(responds)