MiniCPM4-8B:エッジデバイス向けの超高効率大型言語モデル

この記事は約10分で読めます。
Speech to Text - DolphinVoiceの音声認識API・SDK
Dolphin Voiceは音声認識、音声LLM、音声合成APIなど20以上の言語に対応した最先端の音声ソリューションを提供します。今すぐAPIをお試しください。

現在、人工知能分野において、大型言語モデル(LLMs)の応用がますます広がっています。しかし、ほとんどのモデルは、エッジデバイス上でのデプロイにあたり、効率や性能の課題に直面しています。このような課題を解決するために、OpenBMB チームは MiniCPM4 シリーズモデルを開発しました。その中でも、エッジコンピューティング分野で特に注目を集める MiniCPM4-8B について、本記事ではその特長、技術優位性、実際の応用例などを詳しくご紹介します。

1. MiniCPM4 シリーズの概要

MiniCPM4 シリーズモデルは、エッジデバイスを対象に設計されたもので、ローカライズされた言語処理タスクを効率的に実行します。シリーズには、以下のモデルが含まれています。

  • MiniCPM4-8B :フラッグシップモデルで、80 億のパラメータを備え、8 兆のトークンでトレーニングされています。一般的なエッジチップ上で、生成速度を 5 倍以上向上させることが可能です。
  • MiniCPM4-0.5B :5 億のパラメータを備え、1 兆のトークンでトレーニングされています。リソースに制限のあるデバイスに適しています。
  • そのほかにも、特定のタスク向けに最適化されたバージョンとして、MiniCPM4-8B-Eagle-FRSpec、MiniCPM4-8B-Eagle-FRSpec-QAT-cpmcu、MiniCPM4-8B-Eagle-vLLM、MiniCPM4-8B-marlin-Eagle-vLLM などがあります。さらに、BitCPM4-0.5B と BitCPM4-1B は、極端三値量子化技術を採用することで、モデルのパラメータビット幅を大幅に圧縮し、ストレージや計算量を減らすことが可能です。

2. 技術優位性

(1)効率的なモデルアーキテクチャ

MiniCPM4-8B は、InfLLM v2 トレーニング可能なスパースアテンションメカニズムを採用しています。128K の長文を処理する際、各トークンは、128K のトークンの不到 5% とのみ関連性を計算する必要があるため、長文処理の計算負荷が大幅に減少します。このようなアーキテクチャにより、モデルは長文シーケンスをより効率的に処理し、従来のモデルが長文処理で直面していたボトルネックを突破します。

(2)効率的な学習アルゴリズム

  1. モデル・ウィンド・トンネル 2.0 :ダウンストリームタスクのパフォーマンスのスケーリング予測手法を導入することで、より正確なモデルトレーニング構成の検索を可能にし、トレーニング効率とモデル性能を向上させます。
  2. BitCPM 極端三値量子化 :モデルのパラメータビット幅を 3 つの値に圧縮し、モデルのビット幅を 90% 程度極端に圧縮します。これにより、モデルのストレージスペースや計算量が大幅に削減されますが、モデルの性能は保証されています。
  3. 効率的なトレーニングエンジニアリングの最適化 :FP8 の低精度計算技術とマルチトークン予測トレーニング戦略を組み合わせることで、トレーニングスピードとリソースの利用率が向上します。

(3)高品質なトレーニングデータ

  1. UltraClean :効率的なデータ検証に基づくイテレーティブなデータクリーニング戦略を構築し、高品質な中英語の事前トレーニングデータセット UltraFinweb をオープンソース化し、トレーニングデータの正確性と関連性を確保します。
  2. UltraChat v2 :大規模な高品質な監督微調整データセットを構築し、知識集約型、推論集約型、指示に従う型、長文理解型、ツール呼び出し型など、複数の次元をカバーしています。これにより、モデルはさまざまなタスクをよりよく理解し、実行できるようになります。

(4)効率的な推論システム

  1. CPM.cu :OpenBMB が開発した軽量級の効率的な CUDA 推論フレームワークで、スパースアテンション、モデル量子化、投機的サンプリング技術を統合しています。これにより、MiniCPM4 の効率的なアドバンテージを十分に発揮し、効率的なプリフィルとデコーディングが実現します。これにより、モデルの推論プロセスが加速されます。
  2. ArkInfer :クロスプラットフォームデプロイメントシステムで、複数のバックエンド環境での効率的なデプロイをサポートし、柔軟なクロスプラットフォームのアダプテーション能力を提供します。これにより、モデルは異なる種類のデバイス上で安定して実行可能です。

3. 使用方法

(1)CPM.cu を使った推論

MiniCPM4 の推論には、CPM.cu の使用が推奨されています。インストール手順は次の通りです。

  1. cpm.cu リポジトリをクローンする:git clone https://github.com/OpenBMB/cpm.cu.git --recursive
  2. cpm.cu ディレクトリに移動する:cd cpm.cu
  3. インストールする:python3 setup.py install

LongRoPE を有効にするには、config.json ファイルの rope_scaling フィールドを変更して、長文の加速効果を実現します。変更が完了したら、python3 tests/test_generate.py を実行して推論を開始します。

(2)Transformers を使った推論

Transformers ライブラリを使用した推論のコード例は次の通りです。

from modelscope import AutoModelForCausalLM, AutoTokenizer
import torch
torch.manual_seed(0)

path = 'OpenBMB/MiniCPM4-8B'
device = "cuda"
tokenizer = AutoTokenizer.from_pretrained(path)
model = AutoModelForCausalLM.from_pretrained(path, torch_dtype=torch.bfloat16, device_map=device, trust_remote_code=True)

# チャットインターフェースを使えるようにする
# responds, history = model.chat(tokenizer, "人工知能に関する記事を書いてください。", temperature=0.7, top_p=0.7)
# print(responds)

# generate インターフェースも使えます
messages = [
    {"role": "user", "content": "人工知能に関する記事を書いてください。"},
]
model_inputs = tokenizer.apply_chat_template(messages, return_tensors="pt", add_generation_prompt=True).to(device)

model_outputs = model.generate(
    model_inputs,
    max_new_tokens=1024,
    top_p=0.7,
    temperature=0.7
)
output_token_ids = [
    model_outputs[i][len(model_inputs[i]):] for i in range(len(model_inputs))
]

responses = tokenizer.batch_decode(output_token_ids, skip_special_tokens=True)[0]
print(responses)

InfLLM v2 スパースアテンションメカニズムを使用するには、まず infllmv2_cuda_impl ライブラリをインストールし、config.json に sparse_config フィールドを追加します。

(3)SGLang を使った推論

OpenBMB のフォークバージョンの SGLang をインストールした後、次のコマンドを実行して推論サーバーを起動し、chat インターフェースを使用して推論を行います。

(4)vLLM を使った推論

最新バージョンの vLLM をインストールした後、次のコードを使用して推論を行います。

from modelscope import AutoTokenizer
from vllm import LLM, SamplingParams

model_name = "OpenBMB/MiniCPM4-8B"
prompt = [{"role": "user", "content": "北京市内の観光スポットを 5 つ推薦してください。"}]

tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
input_text = tokenizer.apply_chat_template(prompt, tokenize=False, add_generation_prompt=True)

llm = LLM(
    model=model_name,
    trust_remote_code=True,
    max_num_batched_tokens=32768,
    dtype="bfloat16",
    gpu_memory_utilization=0.8,
)
sampling_params = SamplingParams(top_p=0.7, temperature=0.7, max_tokens=1024, repetition_penalty=1.02)

outputs = llm.generate(prompts=input_text, sampling_params=sampling_params)

print(outputs[0].outputs[0].text)

4. パフォーマンス

MiniCPM4 は、複数の評価項目において卓越したパフォーマンスを発揮しています。エッジチップ(例:Jetson AGX Orin 以及 RTX 4090)上で、同サイズのモデルと比較して、長文処理タスクにおいて、MiniCPM4 の処理スピードはより速く、テキストの長さが増すごとに、その効率優位性はより顕著となります。例えば、Jetson AGX Orin プラットフォーム上で、Qwen3-8B と比較して、MiniCPM4 のデコードスピードは約 7 倍向上しています。

包括的な評価において、MiniCPM4 の 8B および 0.5B パラメータスケールのバージョンは、それぞれのカテゴリーでトップクラスのパフォーマンスを実現しています。さらに、長文評価においても、MiniCPM4 は優れたパフォーマンスを示しています。32K の長文で事前トレーニングされ、YaRN テクノロジーによって長さを拡張したミニ CPM4 は、128K の長文の「針をヘイスタックから見つける」タスクで、優れたパフォーマンスを発揮しています。これにより、ミニ CPM4 が超長文を処理する際の強力な能力が証明されています。

5. 応用シナリオ

MiniCPM4-8B の高性能により、以下のシナリオで幅広く活用可能です。

  • スマートアシスタント :ユーザーのリクエストに迅速に応え、正確な情報検索や問題解決を提供し、ユーザー体験を向上させます。
  • コンテンツ生成 :エッジデバイス上で高品質な記事やレポートなどのテキストコンテンツを生成し、ユーザーのクリエイティブニーズや効率性を満たします。
  • 長文分析 :ドキュメント分析や知識抽出など、長文処理が必要なシナリオに適しており、業界のテキストデータ処理を強力にサポートします。
  • エッジコンピューティング :IoT デバイスやモバイル端末などのエッジコンピューティング環境で、ローカルな智能言語処理タスクを実現し、クラウドへの依存を減らし、データのセキュリティ性和処理スピードを向上させます。

6. まとめ

MiniCPM4-8B は、OpenBMB チームが開発した、エッジデバイス向けの超高効率大型言語モデルです。モデルアーキテクチャ、学習アルゴリズム、トレーニングデータ、推論システムの 4 つの重要な次元における体系的なovation により、ミニ CPM4 は、同規模のモデルと同等の性能を維持しながら、究極的な効率向上を実現しています。長文処理、マルチタスクの適応性、クロスプラットフォームデプロイメント能力などの優位性により、ミニ CPM4 は、エッジコンピューティングやローカルな智能アプリケーションの理想的な選択肢となっています。技術の絶えず発展と応用シナリオの拡大に伴い、ミニ CPM4-8B は、より多くの分野でその価値を発揮し、人工知能技術のさらなる普及と応用を推進すると期待されています。

MiniCPM4-8B に興味を持ち、プロジェクトで使用を検討されている方は、ModelScope をご覧ください。詳細な情報やモデルリソースを確認いただけます。