見出し画像

iPhone単体でオンデバイスLLMを試してみた。LLMFarm

こんにちはIZAIエンジニアチームです。
今回は、「LLMFarm」というiPhone上でLLMを動かせるOSSを、iPhone 15 Proを使って試してみます。
https://github.com/guinmoon/LLMFarm

必要なもの・・・iPhoneのみ

「LLMFarm」は、数GB程度の軽量なモデルをiOS/M系Silicon で実行可能にするプロジェクトで、ggml』と『llama.cppをベースにしています。TestFlight経由でiOSアプリが配布されているので、誰でも簡単に手元のiPhoneでローカルLLMを動かせます。早速手順に従って試してみましょう



1. TestFlightをインストール


TestFlightって?・・・ベータ版アプリケーション配布用アプリ。
iOSアプリケーションは通常、AppStoreの審査を通過しなければリリースはできませんが、TestFlightではベータ版を開発者やテスター向けにクローズドに提供できます
※今回のLLMFarmはレポジトリのオーナーのguimoon氏が配布しています。感謝。

2. LLMFarmをインストール


TestFlight経由でLLMFarmがインストールできます。

3. モデルをダウンロード


今回はLLMFarm経由でMistral-7B-v0.1のQ3_K_S(3ビットに量子化したモデル)をインストールしてみます。

(※iPhone 15 ProはRAMが8GBあるので動きますが、その他の機種の場合はクラッシュしたり動作しない可能性があります。その場合はメモリ使用量が小さいPhi-3-mini 等を試してみてください。)

  1. 画面右上の詳細ボタンをタップ

  2. settingをタップ

  3. Download modelsをタップ

  4. Mistral-7B-v0.1を選択する

  5. Q3_K_Sを選択する

  6. ダウンロードする

Tips:
PC経由でHugging Faceからモデルをダウンロード後、ThunderboltケーブルでiPhoneへ転送する方が速いです。

4. チャットの設定


4-1. Mistral用Prompt templateの設定

対話型モデルでは、会話の開始と終了に特殊なトークンが設定されています。モデル毎にトークンの形式は異なるのでそれぞれで設定する必要があります。以下はMistral用の設定です。(設定しなくても動きます。)

  1. Promptをタップ

  2. 以下の開始プロンプトを設定する

<s>[INST] {{prompt}} [/INST]

4-2. GPUとメモリの設定(任意)

高速化のため、以下の設定が推奨されています。

  1. Prediction optionsをタップ

  2. Metalを有効にする
    (Metal: Apple Silicon用低レベルAPI。推論にGPUが使えるようになります。任意です。)

  3. MLockを有効にする
    (モデルをメモリ内にロックでき、メモリマップ時にモデルがストレージに勝手にスワップアウトされないようになります。高速化の反面、メモリが足りないとクラッシュします。任意です。)

5.チャットしてみる


お疲れ様です。これでやっとオンデバイスでLLMを動かすことができます。
試しに機内モードにして、オフラインで動くことを確認してみましょう。

↓チャットの様子。GPT-4のような性能はないですが、手元で動くだけで楽しいです。
https://www.youtube.com/shorts/b752jnDKROw






番外編 Hugging Faceのモデルを使う

Gemma-7BやPhi-3など、GGUF形式で配布されているモデルであれば、実行できます。(RAMが足りれば。)

手順 

1. Hugging Face上でgguf形式の好きなモデルをダウンロード

2. LLMFarmの[import from file…]からインポート

iPhoneのストレージに保存した.guff拡張子のファイルを選択して、LLMFarm上で展開してください。

3. 完了

お疲れ様です。これでHugging Face上の好きなモデルをiPhone上で動かせます。




最後に


以上、参考になった方はいいねコメント頂けると嬉しいです。
株式会社IZAIでは、自然言語処理・音声合成・ロボティクス技術の研究開発・サービス提供をしております。興味をお持ちいただいた方はお気軽にお問い合わせください。それではまた。

この記事が参加している募集

#AIとやってみた

28,199件

この記事が気に入ったらサポートをしてみませんか?