🐨

LLMFarmという端末上で簡単にAIモデルを動かせるアプリがあったので紹介

に公開

LLMFarmとは

iOS、Mac OSの端末でオンデバイス上で自然言語モデルを動かすことができるアプリです。
llama.cppを応用して作成されているそうです。

https://llmfarm.tech/

特徴

1. オープンソース

アプリのソースコードがGitHubに公開されてます。
App Storeからインストールして使用することもできますが、GitHubからクローンして自分好みにカスタマイズすることもできます。

https://github.com/guinmoon/LLMFarm

2. 使える言語モデルの種類

llama.cppが対応しているモデルは全て使用できるっぽいです。
ですので「LLaMa」「Gemma」「Phi」シリーズなど、10以上の種類のモデルに対応してます。

3. マルチモーダルにも対応

一部SLMのマルチモーダルにも対応してるそうです。

4. 簡易的なRAGも構築が可能

pdfとtxt形式の二つであればドキュメントを追加できてRAGを構築することができるようです。

シミュレーターで立ち上げてみる

せっかくなのでGit Cloneしてローカル環境のエミュレーター上に立ち上げてみます。
iPhone16のios18.1で起動します。


立ち上がった。
すでに一つありますが、新しくモデルをダウンロードします。


アプリ右上の「・・・」ボタンをクリック。
すでに端末に入ってるModelは「Models」に表示されます。「Download」ボタンをクリック。


今回は「Phi-3.5-mini-128k」を使います。
ちなみに量子化方式も選択できるみたい。
ダウンロードは2,30秒で完了します。


トップ画面に戻って右上の「+」ボタンをクリック。
ここで新しくモデル・プロンプトを設定できます。


「select model」から先ほどダウンロードしたPhiモデルを選択。


モデルのアイコン(生成AIで作ったのかな?)も好みのものに選択できる。
とりあえず登録完了。


一旦プロンプトを入れずにチャットしてみました。
日本語はまだ全然厳しいようですが、回答速度はめちゃくちゃ速い。


ちゃんとシステムプロンプトを入れてみた。
システムプロンプトの書き方もルールがあるっぽいので、それに合わせます。
日本語から英語に翻訳するAIアシスタントにしてみました。
https://llmfarm.tech/docs/prompt_format


かなり時間がかかりましたが、ちゃんと英語に翻訳して返ってきました。ちなみに英文も合ってます。
プロンプト次第では言うことちゃんと守ってくれそう。


と思ったら、2ラリー目から狂い始めました。
システムプロンプトがあまり効いてなさそう??

メモリ使用量を見てみる

気になるのはメモリ使用量。
今まで使ったことないのですが、XcodeのInstrumentsというのがあるので、計測してみます。

計測しました。

SLMが推論しているときは相当メモリ使ってます。一時的に1500%ほどになるけど、これって絶対負荷高すぎるよな...(他のアプリでも計測したが高くても400%ほど)
チャットの入力もかなり時差が発生したから、iPhone16の通常スペックだと厳しいのかもしれない。


シミュレータ上なので感じれませんが、おそらく実機でやるとめっちゃ熱持つんじゃないかな?

最後に

すでにローカルSLMを動かせるアプリがあるとは驚きでした。
おそらく自分でFine Tuningしたモデルも動かせそうです。

ヘッドウォータース

Discussion