1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

A walkthrough for Android’s on-device GenAI solutionsを見るメモ

Posted at

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に生成してもらった図はこちら。

image.png

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などがあるがここでは説明しない。

image.png

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は良い。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?