🚀 MiniCPM
MiniCPM 是面壁與清華大學自然語言處理實驗室共同開源的系列端側語言大模型。主體語言模型 MiniCPM - 2B 僅有 24 億(2.4B)的非詞嵌入參數量,卻在多項評測中表現出色,還能在手機上進行部署推理,二次開發成本較低。
🚀 快速開始
安裝transformers>=4.36.0
以及accelerate
後,運行以下代碼:
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
torch.manual_seed(0)
path = 'openbmb/MiniCPM-2B-dpo-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米。
⚠️ 重要提示
需要在from_pretrained
中明確指明模型的數據類型,否則會引起較大計算誤差。
✨ 主要特性
- 性能卓越:經過 SFT 後,MiniCPM 在公開綜合性評測集上與 Mistral - 7B 相近(中文、數學、代碼能力更優),整體性能超越 Llama2 - 13B、MPT - 30B、Falcon - 40B 等模型。經過 DPO 後,在當前最接近用戶體感的評測集 MTBench 上,MiniCPM - 2B 超越了 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 也首次跑通了多模態大模型在手機上的部署。
- 開發成本低:一張 1080/2080 可高效參數微調,一張 3090/4090 可全參數微調,一臺機器可持續訓練 MiniCPM,二次開發成本較低。
📦 安裝指南
安裝transformers>=4.36.0
以及accelerate
。
💻 使用示例
基礎用法
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
torch.manual_seed(0)
path = 'openbmb/MiniCPM-2B-dpo-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)
📚 詳細文檔
評測結果
詳細的評測結果位於github倉庫。
⚠️ 重要提示
我們發現使用 Huggingface 生成質量略差於 vLLM,因此推薦使用 vLLM 進行測試。我們正在排查原因。
侷限性
- 受限於模型規模,模型可能出現幻覺性問題。其中由於 DPO 模型生成的回覆內容更長,更容易出現幻覺。我們也將持續進行 MiniCPM 模型的迭代改進。
- 為了保證在學術研究用途上模型的通用性,我們未對模型進行任何身份認同訓練。同時由於我們用 ShareGPT 開源語料作為部分訓練數據,模型可能會輸出類似 GPT 系列模型的身份認同信息。
- 受限於模型規模,模型的輸出受到提示詞(prompt)的影響較大,可能多次嘗試產生不一致的結果。
- 受限於模型容量,模型的知識記憶較不準確,後續我們將結合 RAG 方法來增強模型的知識記憶能力。
📄 許可證
模型協議
聲明
- 作為一個語言模型,MiniCPM 通過學習大量的文本來生成內容,但它無法理解、表達個人觀點或價值判斷,它所輸出的任何內容都不代表模型開發者的觀點和立場。
- 因此用戶在使用 MiniCPM 生成的內容時,應自行負責對其進行評估和驗證。
- 如果由於使用 MinCPM 開源模型而導致的任何問題,包括但不限於數據安全問題、公共輿論風險,或模型被誤導、濫用、傳播或不當利用所帶來的任何風險和問題,我們將不承擔任何責任。
📚 工作引用
如果覺得 MiniCPM 有助於您的工作,請考慮引用下列技術報告。
@inproceedings{minicpm2024,
title={MiniCPM:Unveiling the Potential of End-side Large Language Models},
booktitle={OpenBMB Blog},
year={2024}
}
📦 模型下載