Model Overview
Model Features
Model Capabilities
Use Cases
🚀 MiniCPM-V-2_6-RK3588-1.1.4
このバージョンのMiniCPM-V-2_6は、['w8a8', 'w8a8_g128', 'w8a8_g256', 'w8a8_g512']量子化を使用してRK3588 NPU上で実行するように変換されています。このモデルは、以下のLoRAで最適化されています。
互換性のあるRKLLMバージョン: 1.1.4
📚 詳細ドキュメント
有用なリンク
- 公式RKLLM GitHub
- RockhipNPU Reddit
- EZRKNN-LLM
- これらの方々によるほぼすべてのもの: marty1885 と happyme531
- 変換に使用: https://github.com/c0zaut/ez-er-rkllm-toolkit
ベースモデル、MiniCPM-V-2_6の元のモデルカード
あなたの携帯電話で単一画像、複数画像、ビデオに対応するGPT-4VレベルのMLLM
MiniCPM-V 2.6
MiniCPM-V 2.6は、MiniCPM-Vシリーズの最新かつ最も高性能なモデルです。このモデルは、SigLip-400MとQwen2-7Bをベースに構築され、合計80億個のパラメータを持っています。MiniCPM-Llama3-V 2.5に比べて大幅な性能向上を示し、複数画像とビデオの理解に新機能を導入しています。MiniCPM-V 2.6の注目すべき特徴は以下の通りです。
-
🔥 卓越した性能 MiniCPM-V 2.6は、最新バージョンのOpenCompassで平均65.2点を達成し、8つの人気ベンチマークに対する包括的な評価を行っています。わずか80億個のパラメータで、GPT-4o mini、GPT-4V、Gemini 1.5 Pro、Claude 3.5 Sonnetなどの広く使用されている独自モデルを上回り、単一画像の理解において優れた性能を発揮します。
-
🖼️ 複数画像の理解と文脈内学習 MiniCPM-V 2.6は、複数の画像に対する会話と推論も行うことができます。Mantis-Eval、BLINK、Mathverse mv、Sciverse mvなどの人気の複数画像ベンチマークで最先端の性能を達成し、文脈内学習能力も有望です。
-
🎬 ビデオの理解 MiniCPM-V 2.6は、ビデオ入力も受け付けることができ、会話を行い、時空間情報に対する高密度なキャプションを提供します。字幕の有無に関係なく、Video-MMEでGPT-4V、Claude 3.5 Sonnet、LLaVA-NeXT-Video-34Bを上回ります。
-
💪 強力なOCR能力など MiniCPM-V 2.6は、任意のアスペクト比で最大180万画素(例:1344x1344)の画像を処理できます。OCRBenchで最先端の性能を達成し、GPT-4o、GPT-4V、Gemini 1.5 Proなどの独自モデルを上回ります。最新のRLAIF-VとVisCPM技術に基づいており、信頼性の高い動作を特徴とし、Object HalBenchでGPT-4oとGPT-4Vよりも大幅に低い幻覚率を示し、英語、中国語、ドイツ語、フランス語、イタリア語、韓国語などの多言語対応をサポートしています。
-
🚀 優れた効率性 MiniCPM-V 2.6は、サイズが小さいだけでなく、最先端のトークン密度(すなわち、各ビジュアルトークンにエンコードされる画素数)も示します。180万画素の画像を処理する際に、たった640個のトークンしか生成せず、ほとんどのモデルよりも75%少なくなります。これにより、推論速度、最初のトークンの待ち時間、メモリ使用量、電力消費が直接改善されます。その結果、MiniCPM-V 2.6は、iPadなどのエンドデバイスでリアルタイムのビデオ理解を効率的にサポートできます。
-
💫 使いやすさ MiniCPM-V 2.6は、さまざまな方法で簡単に使用できます。
評価

OpenCompass、MME、MMVet、OCRBench、MMMU、MathVista、MMB、AI2D、TextVQA、DocVQA、HallusionBench、Object HalBenchでの単一画像の結果
* このベンチマークは、連鎖思考プロンプトを使用して評価しています。
+ トークン密度: 最大解像度で各ビジュアルトークンにエンコードされる画素数、すなわち、最大解像度での画素数 / ビジュアルトークン数。
注: 独自モデルの場合、公式APIドキュメントで定義された画像エンコーディングの課金戦略に基づいてトークン密度を計算しており、これは上限の推定値です。
Mantis Eval、BLINK Val、Mathverse mv、Sciverse mv、MIRBでの複数画像の結果
Video-MMEとVideo-ChatGPTでのビデオの結果
TextVQA、VizWiz、VQAv2、OK-VQAでのフェデレーション学習の結果を表示するには、ここをクリックしてください。
+ SFTなしの事前学習チェックポイントを評価しています。
例





さらに多くのケースを表示するには、ここをクリックしてください。


MiniCPM-V 2.6をエンドデバイスにデプロイしています。デモビデオは、iPad Proで編集なしで生の画面録画です。




デモ
MiniCPM-V 2.6のデモを試すには、ここをクリックしてください。
💻 使用例
基本的な使用法
NVIDIA GPU上でHuggingface transformersを使用した推論。Python 3.10でテストされた要件:
Pillow==10.1.0
torch==2.1.2
torchvision==0.16.2
transformers==4.40.0
sentencepiece==0.1.99
decord
# test.py
import torch
from PIL import Image
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained('openbmb/MiniCPM-V-2_6', trust_remote_code=True,
attn_implementation='sdpa', torch_dtype=torch.bfloat16) # sdpa or flash_attention_2, no eager
model = model.eval().cuda()
tokenizer = AutoTokenizer.from_pretrained('openbmb/MiniCPM-V-2_6', trust_remote_code=True)
image = Image.open('xx.jpg').convert('RGB')
question = 'What is in the image?'
msgs = [{'role': 'user', 'content': [image, question]}]
res = model.chat(
image=None,
msgs=msgs,
tokenizer=tokenizer
)
print(res)
## if you want to use streaming, please make sure sampling=True and stream=True
## the model.chat will return a generator
res = model.chat(
image=None,
msgs=msgs,
tokenizer=tokenizer,
sampling=True,
stream=True
)
generated_text = ""
for new_text in res:
generated_text += new_text
print(new_text, flush=True, end='')
高度な使用法
複数画像での会話
複数画像入力でMiniCPM-V 2.6を実行するPythonコードを表示するには、ここをクリックしてください。
```python import torch from PIL import Image from transformers import AutoModel, AutoTokenizermodel = AutoModel.from_pretrained('openbmb/MiniCPM-V-2_6', trust_remote_code=True, attn_implementation='sdpa', torch_dtype=torch.bfloat16) # sdpa or flash_attention_2, no eager model = model.eval().cuda() tokenizer = AutoTokenizer.from_pretrained('openbmb/MiniCPM-V-2_6', trust_remote_code=True)
image1 = Image.open('image1.jpg').convert('RGB') image2 = Image.open('image2.jpg').convert('RGB') question = 'Compare image 1 and image 2, tell me about the differences between image 1 and image 2.'
msgs = [{'role': 'user', 'content': [image1, image2, question]}]
answer = model.chat( image=None, msgs=msgs, tokenizer=tokenizer ) print(answer)
</details>
#### 文脈内フェデレーション学習
<details>
<summary> フェデレーション入力でMiniCPM-V 2.6を実行するPythonコードを表示するには、ここをクリックしてください。 </summary>
```python
import torch
from PIL import Image
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained('openbmb/MiniCPM-V-2_6', trust_remote_code=True,
attn_implementation='sdpa', torch_dtype=torch.bfloat16) # sdpa or flash_attention_2, no eager
model = model.eval().cuda()
tokenizer = AutoTokenizer.from_pretrained('openbmb/MiniCPM-V-2_6', trust_remote_code=True)
question = "production date"
image1 = Image.open('example1.jpg').convert('RGB')
answer1 = "2023.08.04"
image2 = Image.open('example2.jpg').convert('RGB')
answer2 = "2007.04.24"
image_test = Image.open('test.jpg').convert('RGB')
msgs = [
{'role': 'user', 'content': [image1, question]}, {'role': 'assistant', 'content': [answer1]},
{'role': 'user', 'content': [image2, question]}, {'role': 'assistant', 'content': [answer2]},
{'role': 'user', 'content': [image_test, question]}
]
answer = model.chat(
image=None,
msgs=msgs,
tokenizer=tokenizer
)
print(answer)
ビデオでの会話
ビデオ入力でMiniCPM-V 2.6を実行するPythonコードを表示するには、ここをクリックしてください。
```python import torch from PIL import Image from transformers import AutoModel, AutoTokenizer from decord import VideoReader, cpu # pip install decordmodel = AutoModel.from_pretrained('openbmb/MiniCPM-V-2_6', trust_remote_code=True, attn_implementation='sdpa', torch_dtype=torch.bfloat16) # sdpa or flash_attention_2, no eager model = model.eval().cuda() tokenizer = AutoTokenizer.from_pretrained('openbmb/MiniCPM-V-2_6', trust_remote_code=True)
MAX_NUM_FRAMES=64 # if cuda OOM set a smaller number
def encode_video(video_path): def uniform_sample(l, n): gap = len(l) / n idxs = [int(i * gap + gap / 2) for i in range(n)] return [l[i] for i in idxs]
vr = VideoReader(video_path, ctx=cpu(0))
sample_fps = round(vr.get_avg_fps() / 1) # FPS
frame_idx = [i for i in range(0, len(vr), sample_fps)]
if len(frame_idx) > MAX_NUM_FRAMES:
frame_idx = uniform_sample(frame_idx, MAX_NUM_FRAMES)
frames = vr.get_batch(frame_idx).asnumpy()
frames = [Image.fromarray(v.astype('uint8')) for v in frames]
print('num frames:', len(frames))
return frames
video_path ="video_test.mp4" frames = encode_video(video_path) question = "Describe the video" msgs = [ {'role': 'user', 'content': frames + [question]}, ]
Set decode params for video
params={} params["use_image_id"] = False params["max_slice_nums"] = 2 # use 1 if cuda OOM and video resolution > 448*448
answer = model.chat( image=None, msgs=msgs, tokenizer=tokenizer, **params ) print(answer)
</details>
詳細な使用方法については、[GitHub](https://github.com/OpenBMB/MiniCPM-V)を参照してください。
### llama.cppでの推論
MiniCPM-V 2.6は、llama.cppで実行できます。詳細については、[llama.cpp](https://github.com/OpenBMB/llama.cpp/tree/minicpm-v2.5/examples/minicpmv)のフォークを参照してください。
### Int4量子化バージョン
より低いGPUメモリ(7GB)使用量のためにInt4量子化バージョンをダウンロードしてください: [MiniCPM-V-2_6-int4](https://huggingface.co/openbmb/MiniCPM-V-2_6-int4)。
## 📄 ライセンス
### モデルライセンス
* このリポジトリのコードは、[Apache-2.0](https://github.com/OpenBMB/MiniCPM/blob/main/LICENSE)ライセンスの下で公開されています。
* MiniCPM-Vシリーズのモデルウェイトの使用は、[MiniCPM Model License.md](https://github.com/OpenBMB/MiniCPM/blob/main/MiniCPM%20Model%20License.md)に厳密に従わなければなりません。
* MiniCPMのモデルとウェイトは、学術研究に完全に無料で使用できます。["アンケート"](https://modelbest.feishu.cn/share/base/form/shrcnpV5ZT9EJ6xYjh3Kx0J6v8g)に記入して登録すると、MiniCPM-V 2.6のウェイトも無料で商用利用できます。
### 声明
* LMMとして、MiniCPM-V 2.6は大量のマルチモーダルコーパスを学習することでコンテンツを生成しますが、理解したり、個人的な意見を表明したり、価値判断を行ったりすることはできません。MiniCPM-V 2.6によって生成されるものは、開発者や提供者の意見や立場を代表するものではありません。








