MacBook Pro&iPhoneでMiniCPMを試してみる...
「エンドサイドの大規模言語モデルの可能性を明らかにする」と宣うMiniCPMと、「大規模言語モデル (LLM) で動作する iOS および MacOS アプリ」であるLLMFarmをMiniCPM向けにカスタマイズした「LLMFarm-MiniCPM」を試します。
試したマシンは、MacBook Pro M3 Proチップ、メモリ18GBです。
iPhoneは、iPhone SE (2世代) 、メモリは3GBです。動くかしら。
0. 前説
MiniCPMのリポジトリとは別に、iOSとAndroidそれぞれに対応するリポジトリが用意されています。
・iOS用 : OpenBMB/LLMFarm-MiniCPM: MiniCPM on iOS.
・Android用 : OpenBMB/mlc-MiniCPM: MiniCPM on Android platform.
今回はmacOSとiOSアプリで試します。
1. 量子化モデルの作成
venv環境構築
python3 -m venv minicpm
cd $_
source bin/activate
pip install huggingface_hub
llama.cppのビルド
git clone https://github.com/OpenBMB/llama.cpp.git
cd llama.cpp && make -j8
モデルのダウンロード
pythonを立ち上げて、以下を流し込んでダウンロードです。
from huggingface_hub import snapshot_download
REPO_ID = "openbmb/MiniCPM-2B-sft-bf16"
snapshot_download(repo_id=REPO_ID, revision="main")
量子化モデルへの変換
llama.cppに「拡張子.safetensorsのファイルが見当たらない」と怒られるので、Hugging Faceのキャッシュディレクトリに馳せ参じて、
hf_model_dir=~/.cache/huggingface/hub/models--openbmb--MiniCPM-2B-sft-bf16/snapshots/fe1d74027ebdd81cef5f815fa3a2d432a6b5de2a
cd ${hf_model_dir}
ln -s pytorch_model.bin pytorch_model.safetensors
とシンボリックリンクを作成します。
python convert.py ${hf_model_dir} --vocab-type hfft --outtype f32
./quantize ${hf_model_dir}/ggml-model-f32.gguf ./models/minicpm-q4_1.gguf q4_1
minicpm-q4_1.ggufファイルできました。
% ls -l models
(snip)
-rw-r--r-- 1 noguchi staff 2095418560 Feb 6 12:19 minicpm-q4_1.gguf
2. ビルド
ビルドに必要となるソースをクローン&アップデートします。
git clone https://github.com/OpenBMB/LLMFarm-MiniCPM.git
cd LLMFarm-MiniCPM && git submodule update --init --recursive
Xcodeを起動し、LLMFarm.xcodeproj ファイルを読み込みます。
プロジェクト「LLMFarm」を選び、ターゲット「LLMFarm」を選択します。「Setting Siging & Capabilities」を選択し、Release内のTeam、BundleIdentifierを適切に設定します(伏せている箇所)。
テストしたいデバイスを選択して、
ビルドします(以下のボタンを押下です)。
3. 試してみる
macOS
こちらは普通に動きました。
iOS
起動した!
続いて右上のハンバーガー「・・・」をタップして、モデル追加画面に遷移します。
以下は、モデルを選択したあとの画面。続いてBackをタップします。
トップ画面に戻るので、右上のプラスをタップします。
Add Chatの画面に戦します。ここで「Select model」をタップして、追加したモデル「minicpm-q4_1.gguf」を選択します。
そして、「こんにちは」と入力してエンターすると・・・
modelLoadError発生!
やはり、iPhone SE (2世代)の 3GBでは無理でした・・・。
まとめ
iPhone SEでは動かず
メモリ3GBのiPhoneではモデルロード時にエラーが発生しました。これはつまり、4GB以上のiPhoneを購入せよ、ということでしょうか。
これはリベンジせねば・・・。
ファインチューニングについて
フルパラメータチューニング用のコードは未公開のため、公開され次第RTX 4090で試してみたいと思います。
この記事が気に入ったらサポートをしてみませんか?