🚀 MiniCPM
MiniCPMは、ModelBest社と清華大学自然言語処理研究室が共同でオープンソース化したシリーズのエンドサイド大規模言語モデルです。主体となる言語モデルであるMiniCPM - 2Bは、非語彙埋め込みパラメータがわずか24億(2.4B)です。このモデルは、多くの面で優れた性能を発揮し、エンドサイドでの利用に適しています。
🚀 クイックスタート
MiniCPMは、面壁と清華大学自然言語処理研究室が共同でオープンソース化したエンドサイド大規模言語モデルのシリーズです。主体の言語モデルMiniCPM - 2Bは、非語彙埋め込みパラメータが2.4Bと少なく、多くの面で優れた性能を示します。
関連リンク
✨ 主な機能
性能面
- SFT後:公開された総合評価セットで、Mistral - 7Bと同等の性能を発揮し、中国語、数学、コーディング能力では上回ります。全体的な性能は、Llama2 - 13B、MPT - 30B、Falcon - 40Bなどのモデルを上回ります。
- DPO後:MTBenchという現在最もユーザー体験に近い評価セットで、Llama2 - 70B - Chat、Vicuna - 33B、Mistral - 7B - Instruct - v0.1、Zephyr - 7B - alphaなどの多くの代表的なオープンソース大規模言語モデルを上回ります。
モデル種類
- MiniCPM - V:MiniCPM - 2Bをベースに構築されたエンドサイド多モーダル大規模言語モデルで、同規模のモデルの中で最高の性能を達成し、Phi - 2をベースに構築された既存の多モーダル大規模言語モデルを上回り、一部の評価セットでは9.6BのQwen - VL - Chatと同等以上の性能を発揮します。
デプロイ面
- モバイルデバイス対応:Int4量子化後、MiniCPMはスマートフォンでのデプロイと推論が可能で、ストリーミング出力速度は人間の話す速度よりも若干速いです。MiniCPM - Vは、多モーダル大規模言語モデルをスマートフォンで初めて動作させました。
- 開発コスト:開発コストが低く、1枚の1080/2080 GPUで効率的なパラメータ微調整が可能で、1枚の3090/4090 GPUで全パラメータの微調整が可能です。
オープンソース内容
- MiniCPM - 2Bのモデルパラメータを学術研究と限定的な商用に完全にオープンソース化し、学習過程のすべてのチェックポイントと大部分の非専有データをモデルのメカニズム研究に提供します。
- MiniCPM - 2B - SFT/DPO:MiniCPM - 2Bをベースにした命令微調整と人間の嗜好に基づくバージョン。
- MiniCPM - V:MiniCPM - 2Bをベースにした多モーダルモデルで、同パラメータレベルのPhi - 2をベースにした多モーダルモデルを上回る能力を持ちます。
- MiniCPM - 2B - SFT/DPO - Int4:MiniCPM - 2B - SFT/DPOのInt4量子化バージョン。
- MiniCPMモバイルアプリ:MLC - LLM、LLMFarmをベースに開発されたMiniCPMのスマートフォンアプリで、テキストおよび多モーダルモデルの推論が可能です。
📚 ドキュメント
評価結果
詳細な評価結果はgithubリポジトリにあります。
⚠️ 重要提示
Huggingfaceでの生成品質はvLLMよりも若干劣ることがわかっています。したがって、テストにはvLLMの使用を推奨します。現在原因を調査中です。
制限事項
- モデル規模の制限:モデル規模の制限により、幻覚的な問題が発生する可能性があります。特にDPOモデルは長い応答を生成するため、幻覚が発生しやすくなります。当社はMiniCPMモデルの改善を継続して行います。
- アイデンティティトレーニングの欠如:学術研究用途でのモデルの汎用性を保つため、モデルにアイデンティティトレーニングを行っていません。また、学習データの一部としてShareGPTのオープンソースコーパスを使用しているため、モデルはGPTシリーズモデルに似たアイデンティティ情報を出力する可能性があります。
- プロンプトの影響:モデル規模の制限により、モデルの出力はプロンプトに大きく影響され、複数回の試行で結果が不一致になる可能性があります。
- 知識記憶の不正確さ:モデル容量の制限により、モデルの知識記憶は不正確です。今後はRAG手法を組み合わせて、モデルの知識記憶能力を強化する予定です。
📦 インストール
モデルを使用するには、transformers>=4.36.0
とaccelerate
をインストールする必要があります。
💻 使用例
基本的な使用法
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
torch.manual_seed(0)
path = 'openbmb/MiniCPM-2B-sft-fp32'
tokenizer = AutoTokenizer.from_pretrained(path)
model = AutoModelForCausalLM.from_pretrained(path, torch_dtype=torch.float32, device_map='cuda', trust_remote_code=True)
responds, history = model.chat(tokenizer, "山东省最高的山是哪座山, 它比黄山高还是矮?差距多少?", temperature=0.8, top_p=0.8)
print(responds)
期待される出力
山东省最高的山是泰山,海拔1545米。
相对于黄山(海拔1864米),泰山海拔较低,相差约319米。
📄 ライセンス
モデルライセンス
声明
- MiniCPMは言語モデルであり、大量のテキストを学習して内容を生成しますが、個人の意見や価値判断を理解または表現する能力はありません。MiniCPMが生成する内容は、モデル開発者の意見や立場を代表するものではありません。
- したがって、ユーザーはMiniCPMが生成した内容を使用する際に、その評価と検証に責任を負う必要があります。
- MiniCPMのオープンソースモデルを使用することによって生じるすべての問題、データセキュリティ問題、公共の世論リスク、またはモデルが誤用、乱用、拡散、または不適切に利用されることによるすべてのリスクと問題について、当社は一切の責任を負いません。
モデルダウンロード
工作引用
MiniCPMがあなたの研究に役立った場合は、以下の技術報告を引用してください。
@inproceedings{minicpm2024,
title={MiniCPM:Unveiling the Potential of End-side Large Language Models},
booktitle={OpenBMB Blog},
year={2024}
}