Spotlight WeekというのでどうやってAndroidのアプリにAIを入れるかというのを紹介してくれているので、その一つの動画になります。
https://android-developers.googleblog.com/2024/09/welcome-to-ai-on-android-spotlight-week.html
https://www.youtube.com/watch?v=EpKghZYqVW4
一旦Gemini Nanoは以下のブログで動かしてみました。
https://qiita.com/takahirom/items/1c5f133ae0cfeb9b9517
ちょっと知識を入れていきます。
この記事を元にAIに生成してもらった図はこちら。
On device AIのメリット
- 外に送られるべきでないユーザーデータをデバイス内で処理できる
- インターネットにアクセスできなくても利用できる
- レイテンシーを改善できる
- 追加コストが発生しない
Gemini Nano
Gemini Nanoとは
Gemini NanoはSystem ServiceのAI Coreによって動く。
Gemini NanoはGoogleの一番小さいGeminiのモデル。
AI CoreとGemini Nano
AI CoreはアプリとGemini Nanoモデル、ハードウェアアクセラレーターのインタラクションを行う。
なので、アプリはGoogle AI Edge SDKを触るだけでOK
アプリコード <-> Google AI Edge SDK <-> AICore <-> ハードウェア
現状
text to textをAndroid開発者コミュニティに提供した。
Gemini Nano 2が来て、multi modalが可能になった。(つまり今公開されているtext to textのみのAPIは機能制限されているということっぽい)
Talk backやPixel screenshotはこれが使われている。
かなりGemini Nano 1と比べて色々良くなった。パラフレーズやスマートリプライなどで顕著に良くなった。
Sample app
https://github.com/android/ai-samples
サンプルでModelダウンロードしたり色々できる。
またパラメーターをいじれる。
Templature, TopK, MaxOutputTokensがいじれる。
Templatureはランダムネス。多様なアウトプットが得られる。
TopKはトークンのランキングで何番目まで考慮するか。
MaxOutputTokensは返すトークン数。
色々いじって何がうまく動くのか見るのが良い。
val generationConfig = generationConfig {
...
temperature = 0.2f
topK = 16
candidateCount = 1
maxOutputTokens = 256
}
Download callbackで、ダウンロードが終わったことや、デバッグなどで使える。
複数行の場合にcontent objectを使うこともできる。(多分ここで画像とかも渡せるようになりそう)
content {
text("xxxxxx")
text("xxxxxx")
}
Tips
- Gemini Nanoはスレートレスなので、前の回答とかは覚えていないので、そのコンテキストをpromptに与える必要がある。
- プロンプトでサンプルの回答を与えてそれを元に回答させて精度を高める。
- もっと要求を詳細に指定する。(通常のLLMよりかなり小さいため。)
Media Pipe Tasks LLM Inference API
Gemma-2B modelのようなOpen Modelも人気になってきている。
ちょっと以下で入門してきました。
https://qiita.com/takahirom/items/bd41a215cdd8f8307331
MediaPipeはかなり抽象化してくれるのでシンプルに処理できて、Gemma-2B modelのようなOpen Modelを使うことができる。
TopKやTemperatureの他にModelのパスやLora weightのパスも設定できる。
もっとコントロールできるstarting tokenとend tokenなどがあるがここでは説明しない。
https://youtu.be/EpKghZYqVW4?t=531 より
まとめで、使い分けとして言われていたもの
Gemini Nano
開発者にon device gen AIソリューションを提供する。モデルをダウンロードしたり、メンテナンスすることなしに可能になる。Androidの基盤でのモデルになる。
Media Pipe Tasks LLM Inference API
オープンモデルを実験したいリサーチャー向けにMedia Pipe Tasks LLM Inference APIは良い。