Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Google の LLM ライブラリ を Android アプリで 使うには?

takahirom
November 30, 2024
1.1k

Google の LLM ライブラリ を Android アプリで 使うには?

DevFest Tokyo 2024

takahirom

November 30, 2024
Tweet

Transcript

  1. Androidで使えるGoogleのLLMライブラリ Google AI Client SDK MediaPipe Tasks Inference API Vertex

    AI in Firebase Gemini Nano with the Google AI Edge SDK LiteRT (元 TensorFlowLite)
  2. スコア(logits)から単語が出るまで スタート LLMモデル Temperature による割り算 TopK, TopPに よるフィルタリ ング ソフトマックス関数

    による確率分布の 作成 確率で次のトー クンを 選ぶ 出力 トークンたちの スコア(logits) 割り算された スコア トークンたちの 確率分布 今のトークン 次の トークン フィルタリングされたス コア
  3. ソフトマックス関数とは eはだいたい 2.7   は例えば “頑張る” の スコア(logit) の 2.0 など

    2.7 の 2.0 乗を 計算すると 7.4 ぐらい “頑張る”や”成長する” などのスコア (logits)で 分子と同じ計算して それを合計 (Σ)した値 22.29 ぐらいになる
  4. ソフトマックス関数とは eはだいたい 2.7   は例えば “頑張る” の スコア(logit) の 2.0 など

    2.7 の 2.0 乗を 計算すると 7.4 ぐらい “頑張る”や”成長する” などのスコア(logits)で分 子と同じ計算して それを合計(Σ)した値 22.29 ぐらいになる 7.4 / 22.29 = 0.33 33% ぐらいの確率で ”頑張る” を出す
  5. なんでソフトマックス関数なの? (1/2) • スコア(logits) はマイナス になりえる。 • eはだいたい2.7 • がマイナスになったときでも

      にするとプラスになるため、確 率を計算しやすい • 乗数の計算の例 ◦ 2^2 = 4 ◦ 2^1 = 2 ◦ 2^0 = 1 ◦ 2^-1 = 1/2  -1でも 結果はプラスに!
  6. 確率分布からトークンを選ぶ スタート ソフトマックス関数 による確率分布の 作成 確率で次の トークン を選ぶ 出力 トークンたちの

    スコア(logits) トークンたちの 確率分布 今のトークン 次の トークン “来年は” “もっと” “成長する” 27.1%で 選ばれた場合 LLM モデル
  7. で、Temperatureって? (1/5) スタート Temperatureによ る割り算 ソフトマックス関数 による確率分布の 作成 確率で次の トークン

    を選ぶ 出力 トークンたちの スコア(logits) 割り算された スコア トークンたちの 確率分布 今のトークン 次の トークン “来年は” “もっと” LLM モデル
  8. で、Temperatureって? (3/5) 2.0 / 0.1 = 20.0 になり、 20.0 -

    5.0 で 15.0も差がつきま す。 ソフトマックス関数 は指数関数的に差を つけるので、 スコアが大きい”頑張 る”が87.6%にもな り、圧倒的に出やす くなります 。 Temperature = 0.1で計算してみましょう。 15.0 87.6% ÷0.1
  9. で、Temperatureって? (4/5) 2.0 / 2.0 = 1.0 になり、 1.0 -

    0.3 で 0.7 しか差がつきませ ん。 ソフトマックス関数 は指数関数的に確率 に差をつける ので、 差が小さい ことで、 確率が均等に なりま Temperature = 2.0で計算してみましょう。 0.7 14.0% ÷2.0
  10. TopK, TopPは? スタート LLM モデル Temperature による割り算 TopK, TopPに よるフィルタリ

    ング ソフトマックス関数 による確率分布の 作成 確率で次のトー クンを 選ぶ 出力 トークンたちの スコア(logits) 割り算された スコア トークンたちの 確率分布 今のトークン 次の トークン フィルタリングされ たスコア “来年は” “もっと”
  11. Androidで使えるGoogleのLLMライブラリ Google AI Client SDK MediaPipe Tasks Inference API Vertex

    AI in Firebase Gemini Nano with the Google AI Edge SDK LiteRT (元 TensorFlowLite)
  12. Androidで使えるGoogleのLLMライブラリ On device Cloud Google AI Client SDK MediaPipe Tasks

    Inference API Vertex AI in Firebase Gemini Nano with the Google AI Edge SDK LiteRT (元 TensorFlowLite)
  13. On device と Cloud の違いは? On device • サーバーにデータを送信しないた めプライバシーに配慮できる

    • 即時に実行されて速くなりえる • オフラインで動く • API利用料など追加コストが発生し ない
  14. On device と Cloud の違いは? On device Cloud • サーバーにデータを送信しないた

    めプライバシーに配慮できる • 即時に実行されて速くなりえる • オフラインで動く • API利用料など追加コストが発生し ない • より進んだ大規模なLLMモデルが 利用できる • ほぼすべての端末で利用できる • Image to Textなど利用できる 機能が多い • 比較的ライブラリが安定 している
  15. Gemini Nano with the Google AI Edge SDK(1/2) https://developer.android.com/ai/gemini-nano より

    Google AI Edge SDKを アプリで使い Android OSにある AICoreにアクセスする。 AICoreがGemini Nanoや ハードウェアとの連携を行 う。 Gemini NanoはGoogle のLLMをOn deviceで実 現できる軽量モデル
  16. Gemini Nano with the Google AI Edge SDK(2/2) Gemini Nano

    with the Google AI Edge SDK 強み 注意が必要な点 AI CoreというAndroid OSに 搭載された仕組みを使う。 • モデルのダウンロードなどの 管理をOSに任せられる • ライブラリステータスが実験的 ◦ Pixel 9 シリーズでしか動かない (このために 買いました) ◦ ユーザーの合意が必要 • 現状、SDKのインターフェースとしては Text to Textのみ対応 On device
  17. MediaPipe Tasks Inference API 強み 注意が必要な点 一般的な機械学習のユースケースに 対応するライブラリ Gemma※ などのオープンモデルな

    どを指定する MediaPipe Tasks Inference API • 現状のGemini Nanoと比べると、端末の制限 が明示的には設定されていない (minSdkVersion 24(Android 7.0以上) • LoRA modelを使ったカスタマイズが可能 • ステータスが実験的 On device ※ GemmaはGoogleの軽量・高性能なオープンソースLLMモデル
  18. LiteRT (元TensorFlowLite) On device 強み 注意が必要な点 最近TensorFlow Liteから名前が変わった。 tflite形式と言われる形式のモデルを使う •

    おそらく低レベルAPIによる 柔軟性がありそう。 • LLMでの利用方法があまり言及されていない • 現状はAPIのレベルが低い • おそらくGemmaのtfliteモデルは未公開 ◦ オープンモデルGemmaをtfliteの形式に変換しようとしたが、メモ リが最低100GB必要なようで動作を確認することを断念しました 󰢛 ※ LiteRT (元 TensorFlowLite) ※ https://medium.com/@kennethan/running-gemma2-2b-instruct-model-with-mediapipe-on-litert-tflite-ec0d088 9dd89
  19. Google AI Client SDK 強み 注意が必要な点 GeminiのAPIを直接呼び出す • シンプルにGeminiのAPIを呼び出せる •

    マルチモーダルインプットや JsonSchemaへの対応、 FunctionCallingなど進んだ機能が利用 できる • APIキーの盗難のリスク • プロトタイプのみにおすすめ Google AI Client SDK Cloud
  20. Vertex AI in Firebase 強み 注意が必要な 点 Firebaseを使ってGoogleのGemini APIへのアクセスができる •

    安定している。 GA (Generally Available) • マルチモーダルインプットやJsonSchemaへの 対応、FunctionCallingなど進んだ機能が利用 できる • 直接GeminiのAPIキーなどを持つ形ではない ため、比較的セキュリティリスクが低い • セキュリティの面からFirebase App Checkと一緒に使うことが 推奨 Cloud Vertex AI in Firebase
  21. ライブラリたちをまとめると 項目 Gemini Nano with Google AI Edge SDK MediaPipe

    Tasks Inference API LiteRT (旧TensorFlow Lite) Google AI Client SDK Vertex AI in Firebase AIタイプ オンデバイス オンデバイス オンデバイス クラウド クラウド ステータス Experimental(実験的)、 ユーザーの合意が必要。 Experimental(実験的)、開 発中 最近名前が変わったが昔から ある。LLM対応の事例少。 プロトタイプのみ利用可 能 Generally Available(利用 可能) モデル Gemini Nano オープンモデル(Gemma, Llamaなど) オープンモデル Geminiモデル Geminiモデル モーダリティ Text to Text Text to Text、Text to Image など Text to Textなど Text to Text、Image & Text to Text Text to Text、Image & Text to Text その他の機能 OS管理でモデルのダウン ロード/管理が簡単 LoRAサポート、モデルパス設 定可能、(顔認識などその他の 機械学習機能) モデルの最適化・変換対応、 (顔認識などその他の機械学習 機能) JSON出力サポート、API キー必要 JSON出力サポート 対応デバイス Pixel 9シリーズのみ対応 minSdkVersion 24(Android 7.0以上)、8GB 以上のRAM推奨 不明 ほぼ全デバイス ほぼ全デバイス プライバシーと セキュリティ オンデバイス処理によるプラ イバシー保護 オンデバイス処理によるプライ バシー保護 オンデバイス処理によるプライ バシー保護 APIキー盗難、悪用リス クあり Firebase利用でセキュア (Firebase App Checkとの 併用が推奨されている ) API利用料 なし なし なし あり あり
  22. 考えること • 現状はOn device AIは実験的なものが多い。 ◦ ただ、プライバシーが尊重できるなどは魅力的。 • 現状はAndroidのGoogleのライブラリでは Cloudでは

    Vertex AI in Firebase一択になりそう。 • ただ、GCP, AWSとかクラウドサーバーとかからアクセ スしても良い かも?
  23. 考えること • 現状はOn device AIは実験的なものが多い。 ◦ ただ、プライバシーが尊重できるなどは魅力的。 • 現状はAndroidのGoogleのライブラリでは Cloudでは

    Vertex AI in Firebase一択になりそう。 • ただ、GCP, AWSとかクラウドサーバーとかからアクセ スしても良い かも? → これをふまえてどうしていく?
  24. (1)Cloud AIの選択から始める 他のクラウドサーバー • 自由度が高い ◦ OpenAIなどの別の LLMを呼び出したり、 RAGを使うなど高度 なカスタマイズが可

    能。 Vertex AI in Firebase • 初期のセットアップ、継 続的なメンテナンスが比 較的少ない。 • 自動でスケールしてくれ る。 OR
  25. (1)Cloud AIの選択から始める 他のクラウドサーバー • 自由度が高い ◦ OpenAIなどの別の LLMを呼び出したり、 RAGを使うなど高度 なカスタマイズが可

    能。 Vertex AI in Firebase • 初期のセットアップ、継 続的なメンテナンスが比 較的少ない。 • 自動でスケールしてくれ る。 OR →どっちが合っているかは場合による
  26. どうしていくべきか? まとめ Vertex AI in Firebaseか クラウドサーバーかを選 ぶ Vertex AI

    in Firebase を導入する クラウドサーバーで 実装 On deviceに置き換え可 能なようにアプリを実装す る 置き換え可能なものは On deviceに置き換え On device AIが安定 ◦ 初期のセットアップ楽、 継続的なメンテナンス少 ◦ 自動スケール ◦ 自由度が高い
  27. 参考情報 1. Temperature, TopKなどの変更などを試せるコード a. Python計算コード i. https://gist.github.com/takahirom/448d2c1e3abb0f76a9bbe4b2983052e7 b. Kotlinでの計算コード

    i. https://gist.github.com/takahirom/6ec47fb00ab3fcc8289f281a3fc912cc c. こちらのリンクでは Web上で、これから説明する Temperatureなどを変更したり、数式の コードなどを確認することができます。 i. https://pl.kotl.in/KBMhIIdWR 2. 各種ライブラリへのリンク a. Qiita: Androidで利用できるGoogleのLLMライブラリを比較する i. https://qiita.com/takahirom/items/c3a57b386de3900f5a51
  28. まとめ 1. LLMを使いこなすための 3つの重要パラメーター ◦ Temperature: 確率分布を調整 ◦ TopK: 上位K個のトークンを選択

    ◦ TopP: 確率の合計が一定値以下のトークンを選択 2. GoogleのLLMライブラリを比較 ◦ オンデバイス AI: 高速、プライバシー保護、オフライン対応 ◦ クラウドAI: 高性能なモデル、多機能、広範な端末対応 3. アプリ実装のポイント ◦ クラウド: Vertex AI in Firebase(簡単で安全)or 自社サーバー(自由度が高い) ◦ オンデバイス : プライバシー保護や低遅延が求められる場合に適しているが、現 状は実験的な段階であるため選択には留意が必要 ◦ 将来を見据えた設計 : オンデバイスへの切り替えを考慮したアーキテクチャ