Flutterでllama.cppを試す(調査メモ)
こちらはFlutter大学 Advent Calendar 2024 17日目の記事になります。
llama.cpp
通常Local PC上でLlama3のような言語モデルを動かす場合llama.cppというC/C++で書かれたライブラリ及びこちらをラップしたものを利用するケースが多いと思います。
iOSやAndroidデバイス上で動かす場合もこちらを利用するケースが多く、記事も上がっていますがFlutter上で利用する記事はあまり見ない状況です。
10月頃から少しずつスクラップにして調べていましたが、現状わかっているところを記事にまとめました。
package
Flutterにおいても同様でllama.cppをラップしたライブラリを利用します。
pub.dev上に上がっていて最近もアップデートされているものだと以下のpackageがあります。
llama.cppのrepositoryのBindings項目からもリンクされています
llama_cpp_dart
動作やソースを確認したところllama_cpp_dartはiOSとAndroidで対応が異なります。
iOS
cloneしてきたllama.cppから自分でbuildしたlibllama.dylib
を適切なディレクトリに配置する必要があります。
buildする際は以下を利用するのが良さそうです。
- https://github.com/netdur/llama_cpp_dart/blob/main/darwin/run_build.sh
- https://github.com/netdur/llama_cpp_dart/blob/main/darwin/ios-arm64.toolchain.cmake
./run_build.sh /path/to/llama.cpp <DEVELOPMENT_TEAM_ID>
build後にXCode上で ios/Runner/
配下などにlibllama.dylibを配置すると思われます(調査中)
Android
こちらは自分でbuildする必要がなく、Flutterアプリケーションbuild時にPackage内でbuildが走るようですが、現在 llama.cppがsubmoduleとして含まれておらず、手動でCMakeLists.txtが含まれる /Users/<UserName>/.pub-cache/hosted/pub.dev/llama_cpp_dart-0.0.8/src/
にcloneしてくる必要があります。
サンプルアプリケーション
試していますが、ドキュメントが不足しているのもあり筆者の環境ではまだ動作がうまくいっていないです...。
fcllama
iOS
Please run pod install or pod update in your iOS project.
Android
You need install cmake 3.31.0、android sdk 35 and ndk 28.0.12674087. No additional operation required .
こちらは上記設定以外iOS/Androidともに特別な対応は必要なさそうです。
/android/build.gradle
/android/app/build.gradle
などを適宜修正してください。
サンプルアプリケーション
上記サンプルアプリケーションを動かしてみたのですが、言語モデルをダウンロードする機構があるもののloadingが終わらない状態、そのため自分で gemma-2-baku-2b-it-Q4_K_M.gguf などのモデルを追加してみましたがアプリそのものが落ちてしまうような結果でした。
おわりに
以上、動作を確認するところまでを記事にしたかったのですが、現在iOS/Androidともにbuildが通らない/モデル読み込み時にアプリが落ちるといった状況でした。
llama.cppの頻繁な更新にラップしたライブラリが追従できていなかったり、ドキュメントが不足しているためbuild後の配置方法がわからないなどもう少し時間がかかりそうです🥺
確認するところまでできたら適宜追記を行うか続きの記事を上げようと思います!
Discussion