🚀 MiniCPM
MiniCPMは、面壁と清華大学自然言語処理研究所が共同でオープンソース化した一連のエンド側大規模言語モデルです。主体の言語モデルであるMiniCPM - 1Bは、非語彙埋め込みパラメータがわずか12億(1.2B)です。このモデルは、様々なタスクで高い性能を発揮し、エンド側での利用に最適化されています。
MiniCPM 技術レポート Technical Report |
OmniLMM マルチモーダルモデル Multi-modal Model |
CPM - C 千億モデル試用 ~100B Model Trial
✨ 主な機能
- 高性能:SFT後、MiniCPMは公開された総合評価セットで、Mistral - 7Bに匹敵する性能を発揮し(中国語、数学、コード能力はより優れています)、全体的な性能はLlama2 - 13B、MPT - 30B、Falcon - 40Bなどのモデルを上回っています。
- ユーザー体感に近い評価での優位性:DPO後、MiniCPM - 2Bは現在最もユーザー体感に近い評価セットであるMTBenchで、Llama2 - 70B - Chat、Vicuna - 33B、Mistral - 7B - Instruct - v0.1、Zephyr - 7B - alphaなどの多くの代表的なオープンソース大規模言語モデルを上回っています。
- マルチモーダルモデルの高性能:MiniCPM - 2Bをベースに構築されたエンド側マルチモーダル大規模言語モデルであるMiniCPM - Vは、同規模のモデルの中で最高の性能を達成し、Phi - 2をベースに構築された既存のマルチモーダル大規模言語モデルを上回り、一部の評価セットでは9.6B Qwen - VL - Chatと同等またはそれ以上の性能を発揮します。
- エンド側でのデプロイ可能性:Int4量子化後、MiniCPMは携帯電話でのデプロイと推論が可能で、ストリーミング出力速度は人間の話す速度よりもわずかに速くなります。MiniCPM - Vは、マルチモーダル大規模言語モデルを携帯電話で初めて動作させることに成功しました。
- 低コストの開発:1枚の1080/2080で効率的なパラメータ微調整が可能で、1枚の3090/4090で全パラメータ微調整が可能です。これにより、1台のマシンでMiniCPMを持続的にトレーニングでき、二次開発コストが低く抑えられます。
📦 インストール
transformers>=4.36.0
と accelerate
をインストールした後、以下のコードを実行します。
- 注意:
from_pretrained
でモデルのデータ型を明示的に指定する必要があります。そうしないと、大きな計算誤差が発生します。
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
torch.manual_seed(0)
path = 'openbmb/MiniCPM-2B-sft-bf16'
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)
💻 使用例
基本的な使用法
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
torch.manual_seed(0)
path = 'openbmb/MiniCPM-2B-sft-bf16'
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)
期待される出力
山东省最高的山是泰山,海拔1545米。
相对于黄山(海拔1864米),泰山海拔较低,相差约319米。
📚 ドキュメント
評価結果
詳細な評価結果はgithubリポジトリにあります。
⚠️ 重要提示
Huggingfaceを使用した生成品質はvLLMよりもわずかに劣ることがわかっています。したがって、テストにはvLLMの使用をおすすめします。現在、原因を調査中です。
制限事項
- モデル規模による制限:モデル規模の制限により、モデルは幻覚的な問題を引き起こす可能性があります。特に、DPOモデルはより長い応答を生成するため、幻覚が発生しやすくなります。我々は、MiniCPMモデルの反復改善を継続して行います。
- トレーニングデータによる影響:学術研究用途でのモデルの汎用性を保つため、モデルには何らかのアイデンティティトレーニングを行っていません。また、トレーニングデータの一部としてShareGPTのオープンソースコーパスを使用しているため、モデルはGPTシリーズモデルに似たアイデンティティ情報を出力する可能性があります。
- プロンプトによる影響:モデル規模の制限により、モデルの出力はプロンプトに大きく影響され、複数回の試行で不一致な結果が生じる可能性があります。
- モデル容量による制限:モデル容量の制限により、モデルの知識記憶は正確ではない場合があります。今後、RAG方法を組み合わせてモデルの知識記憶能力を強化する予定です。
📦 モデルダウンロード
📄 ライセンス
モデルライセンス
- このリポジトリのコードは Apache - 2.0 ライセンスに基づいてオープンソース化されています。
- MiniCPMモデルの重みの使用は、「通用模型许可协议 - 来源说明 - 宣传限制 - 商业授权」 に従う必要があります。
- MiniCPMのモデルと重みは、学術研究に完全に無料で利用できます。
- モデルを商用目的で利用する場合は、cpm@modelbest.cnに連絡して使用許可証を取得してください。登録後、無料での商用利用も許可されます。
声明
- 言語モデルとして、MiniCPMは大量のテキストを学習することでコンテンツを生成しますが、個人の意見や価値判断を理解または表現する能力はありません。MiniCPMが生成するコンテンツは、モデル開発者の見解や立場を代表するものではありません。
- したがって、MiniCPMが生成するコンテンツを使用する際には、ユーザー自身が評価と検証の責任を負う必要があります。
- MinCPMのオープンソースモデルを使用することによって生じるすべての問題(データセキュリティ問題、公共の世論リスク、またはモデルの誤用、乱用、拡散、不適切な利用によるリスクや問題を含む)について、我々は一切の責任を負いません。
引用
- MiniCPMがあなたの研究に役立った場合は、以下の技術レポートを引用してください。
@inproceedings{minicpm2024,
title={MiniCPM:Unveiling the Potential of End-side Large Language Models},
booktitle={OpenBMB Blog},
year={2024}
}