オンデバイスで動作する生成AIモデルに対して、独自のエージェントスキルを構築し、アプリに新しい機能を追加する方法を解説する。Google AI EdgeのツールスイートやLiteRT LLM APIを活用することで、ネットワークの遅延なく、プライバシーを保護しながら、モデルをモバイルやIoT機器などのエッジデバイス上で効率的に実行できる。具体的なスキルのアーキテクチャや作成手順に加えて、デバイス上で動作するタイマーとタスクプランナーのカスタムスキルを実装するワークショップの実践的な手順が含まれている。

オンデバイス生成AIとGoogle AI Edgeの紹介
皆さんこんにちは。私はGoogle AI Edgeチームでデベロッパーリレーションエンジニアをしているアーロン・ウォルシュです。そして私と一緒に登壇するのはレザ・ヘイダリです。こんにちは、私はLiteRT LLMを担当しているソフトウェアエンジニアです。本日は、オンデバイスの生成AI向けに独自のエージェントスキルを作成する方法についてお教えします。まずは質問ですが、これまでにクラウド上でモデルを実行したことがある方はどれくらいいますか。素晴らしいですね。では、デバイス上でモデルを実行したことがある方はどれくらいでしょうか。いいですね、素晴らしいです。LiteRTやGoogle AI Edgeスタックに馴染みのある方はいますか。わかりました、それでは皆さんに新しいことをお教えできそうです。ご存知ない方のために説明しますと、Google AI Edgeは、Android、iOS、ウェブブラウザ、デスクトップ、さらにはIoTデバイスなど、あらゆるエッジプラットフォーム上でモデルをシームレスに実行するために設計されたツールとAPIのスイートです。皆さんはここに来られているので、デバイス上でモデルを実行することの利点についてすでに期待を持たれていることと思います。しかし、認識を合わせるために、そもそもエッジAIがなぜ役立つのかについてもう少し詳しくお話ししましょう。
エッジAIの利点
第一に、デバイス上でデータを処理することでネットワークの遅延がなくなるため、レイテンシが大幅に低下します。これは、レイテンシがユーザー体験を左右するリアルタイムアプリケーションにとって極めて重要です。第二に、機密データがデバイスから離れることがなく、外部サーバーを経由する必要がないため、プライバシーの面で大きな利点があります。第三に、オフライン機能が実現されるため、飛行機の中であってもどこでも同じようにアプリを実行できます。そして最後に、計算の負荷がデバイスに移行するため、開発者はデータセンターのコストを削減、あるいは排除できるというメリットがあります。また、Google AI Edgeは単なる一つのツールではなく、未加工のモデルから高度に最適化されたオンデバイスのデプロイメントに至るまで、開発者を導くように設計されたエンドツーエンドのパイプラインです。
Google AI Edgeのパイプライン
これが実際にどのように機能するのかを見ていきましょう。まずはモデルの準備から始まります。ローカルで何かを実行する前に、モデルを変換する必要があります。そこでAI Edge Torchの出番です。これはモデルを我々のランタイムが必要とする正確なフォーマットにシームレスに変換してくれます。そして、そのモデルがモバイルのメモリ制限内に確実に収まるように、品質を犠牲にすることなくモデルのサイズを縮小するAI Edge Quantizerを用意しています。モデルの準備ができたら、次はいよいよ実行です。オンデバイススタックの中心にあるのはLiteRTであり、これはCPU、GPU、NPUのすべてで古典的な機械学習モデルをシームレスに実行できるコア実行エンジンです。しかし、生成AIの実行は独自の対応が必要になることを私たちは理解しています。だからこそ、LiteRT LLM APIを構築しました。私たちは専用の抽象化レイヤーを提供したかったのです。そうすることで、KVキャッシング、コンテキストウィンドウの管理、テキスト生成ループなど、LLM特有のあらゆる処理をこちらで引き受け、皆さんが優れたユーザー体験の構築に専念できるようにしました。そして最後に、テストしていないものをリリースしたくはないはずです。Edge Portalを使用すれば、実際の物理デバイスのフリート全体でモデルを実行し、ベンチマークを行うことができます。これにより、実際の環境でモデルがどのように機能するかを正確に確認できます。そして、もしボトルネックを見つけた場合は、Model Explorerを使用してアーキテクチャを視覚的にデバッグし、本番環境に送られる前に問題を特定して修正することができます。
LiteRT LLM APIの詳細
このセッションでは生成AIについて話しているので、LiteRT LLM APIについてもう少し深く掘り下げてみましょう。先ほど触れたように、これは高性能なデスクトップからRaspberry Piや小型のIoTデバイスまで、多岐にわたるハードウェア全体でLLMのパイプラインを効率的に構築しデプロイするためのフレームワークです。これにより、複数のモデルファイルを前処理および後処理とともにコンパイルして、単一の効率的なアセットにまとめることができます。オープンソースであり、モジュール形式のコンポーネントを備えているため、特定のユースケースに最適なパイプラインを構築するために必要なピースを正確に選び出すことができます。そして、そのカスタムSDKをアプリに簡単にパッケージ化し、強力でオーダーメイドのAI体験を提供することが可能です。LiteRT LLMは、Google Chrome、Google Home、Google Meet、そしておそらく皆さんのアプリなど、おなじみの製品で見られる多くの重要なLLM機能を支えてきました。次に、LiteRT LLMを非常に多用途なものにしている主要な機能について話しましょう。第一に、先ほども述べたように、真のクロスプラットフォームサポートを備えています。そのため、モデルを一度記述すれば、Android、iOS、デスクトップ、ウェブ、IoTなど、あらゆる環境にデプロイできます。高レベルで開発者フレンドリーなAPIを提供しているため、ソリューションを簡単に構築してデプロイできます。KotlinやSwiftのネイティブバインディングがあり、Flutterのようなハイブリッド開発用のプラグインも用意されています。さらに深い制御が必要な方のために、高度なカスタマイズが可能な強力なC++ APIも提供されています。そして重要な点として、CPU、GPU、NPUのすべてにわたる強力なハードウェアアクセラレーションにより、最高のパフォーマンスを保証します。これらすべては、非常に効率的なLiteRTランタイムによって駆動されています。このユニークな組み合わせにより、移植性、柔軟性、そしてスピードが手に入るのです。
エージェントスキルとは何か
さて、Google AI Edgeスタックについて少しお話ししたので、次はスキルとそれがなぜ役立つのかについて詳しく話しましょう。エージェントスキルとは、エージェントに新しい能力や専門知識を与えるための、シンプルでオープンなフォーマットです。モデル、特にエッジデバイスで実行するような小規模なモデルは、体験を完璧なものにするために特別な指示を必要とすることがあります。エージェントスキルは、主に3つの方法でこの問題に対処するのに役立ちます。第一に、反復的なプロンプトの指示を減らすことができるため、同じプロンプトを何度も入力し続ける必要がなくなります。保存しておいて後で再実行するだけで済みます。第二に、モデルがリアルタイムで動的に新しい機能を発見し、獲得できるようになります。第三に、モデルが特定のドメイン知識にアクセスできるようになります。次に、スキルのフォーマットを見てみましょう。スキルは、指示、実行可能なコード、および参照資料を含むディレクトリです。これは新しいチームメンバーに渡すようなオンボーディングガイドのように構成されています。それではレザ、スキルのアーキテクチャについてもう少し深く掘り下げるのを手伝ってくれませんか。
スキルのアーキテクチャ
わかりました、アーロンありがとう。では、スキルの構造を見てみると、メタデータフィールドから始まります。これはどのようなスキルを扱っているかを示しています。次にスキルの名前があり、これはモデルが説明とともにスキルをロードするために使用するIDのようなものです。説明は基本的に、このスキルがモデルにどのような機能を追加するかを伝えています。そして、この高レベルな情報の下に、モデルがこのスキルを実行するために従う必要のある詳細な指示があります。この情報は、スキルのルート構造にあるskill.mdと名付けたマークアップファイル内の、スキルの高レベルな構造へと向かいます。次の部分には、モデルのインタラクションがあります。これはこのスキルがどのように使用されるかの例です。このケースでは、マップナビゲーションスキルを使用しています。ユーザーがある場所を見せてくれないかと尋ねます。モデルはそれの検索に成功し、この特定のユーザーのクエリにはマップナビゲーションを使う必要があると認識します。そしてご覧の通り、スキルをロードします。skill.mdをモデルに返し、モデルは関数呼び出しでスキルを呼び出します。これがユーザーが探している場所であり、関数を実行します。そして結果は、ユーザーが求めた場所のウェブビューになります。
カスタムスキルのデモ
さて、ここからはセッションのワークショップパートに入ります。皆さんに参加していただく部分です。まずは簡単なデモから始めますので、携帯電話の画面に切り替えてもらえますか。このデモでは、ここにあるギャラリーアプリを使用します。アプリを開いたら、エージェントスキルを選択します。ここには、デバイス上で実行している2つのバージョンのGeminiモデルがあります。今のところ私はGemma 2Bのバージョンを使用しており、モデルが初期化されます。そして下部にスキルタブがあります。ここをクリックすると、すでに存在する組み込みのスキルが表示されます。そしてこちらが、今日私たちが一緒に構築するカスタムスキルです。これはタスクプランナーおよびタイマーと呼ばれます。LLMは私たちが物理世界で理解しているような時間の概念を持っていません。ですので、これはモデルの機能を拡張して時間感覚を持たせるためのものです。それではプロンプトを送信してみましょう。私はモデルに、夕食を作り、ワールドカップのハイライトを見て、プレゼンテーションのスライドの準備をするといういくつかのアクティビティを行いたいと伝えています。計画を立てるのを手伝ってほしいと頼みます。するとモデルは、スキルをロードする必要があることを認識します。スキルがロードされているのを見ると、その後に関数呼び出しを行います。そして下部には、私たちのスキルの一部であるタイマーのレンダリングされたUIがあります。リセット可能な機能するタイマーがいくつかあるのがわかります。
ワークショップの手順
これが私たちが一緒に構築するスキルです。そのためにギャラリーアプリを使用します。まだアプリをダウンロードしていない場合は、今が良いタイミングでしょう。アプリではGemma 2Bモデルを使用します。ですので、アプリをインストールして、必ずモデルをダウンロードしてください。ダウンロードには1分ほどかかります。皆さんがダウンロードしている間に、先ほどデモしたスキルについて見てみましょう。これは何でしょうか。タスクプランナーおよびタイマーというのがスキルの名前です。これはスキルが提供する機能の説明を提供します。そしてその下に、モデルが発行する必要がある関数呼び出しの構造を含む詳細な指示があります。これには、タスクID、タスク名、そして返される関数呼び出しに含める必要がある分数が含まれます。このスクリプト内には、ロジックを拡張するために追加している決定論的なコードがあります。これは基本的にJSONを解析し、ウェブUIがレンダリングされるための呼び出しを発行し、必要な引数を渡します。最後にアセット内には、あそこにレンダリングされている美しいタイマーを提供するHTMLコードがあります。以上が、先ほど見たスキルの基本のすべてです。それでは、Colabを用意しています。そのColabへのリンクもあそこにあります。そのColabについて簡単に説明させてください。ノートパソコンの画面にすぐに切り替えられますか。またこのスライドに戻ってきます。Colabでは、先ほど定義したスキルの名前の構造を再び提供しています。マークアップの説明であるskill.mdファイルです。そして、隠しロジックとウェブビューのHTMLがあります。ノートパソコンのローカルでこの構造を作成することから始めます。これらのファイルを作成したら、ここに用意しています。ローカルにコピーアンドペーストできます。そしてこの構造を作成します。いくつかのHTMLコードがあり、それをAndroidデバイスにプッシュします。このスキルを追加する方法についてのステップバイステップのガイドもここにあります。基本的にエージェントスキルを開き、スキルをクリックし、プラスボタンをクリックして、ローカルファイルからインポートします。そしてこれが私たちが使用するサンプルのプロンプトです。これは導入のスキルとして優れています。これを使い始めて、エンドツーエンドの流れを体験することをお勧めします。また、皆さんのお気に入りのAI、おそらくGeminiに入力できるプロンプトも用意しました。いくつかの一連の質問をしてきます。構築しようとしているスキルを説明すれば、HTMLを含め、すべてのボイラープレートコードを作成するのを手伝ってくれます。また、Androidデバイスを持っていなくても大丈夫です。iOSデバイス向けの回避策もいくつか用意していますので、ワークショップに参加できます。これがColabへのリンクです。これらがAndroidデバイスの前提条件です。それでは構築を始めましょう。助けが必要な場合は手を挙げてください。私たち2人が歩き回ります。また、素晴らしいGDEの皆さんも歩き回っており、こちらに来て助けてくれます。それでは構築に入り、10分ほど時間を取ってから、簡単なまとめをして締めくくります。
ワークショップのまとめ
さて皆さん、そろそろこのワークショップを締めくくりたいと思います。ご参加いただきありがとうございます。一緒に構築していただき感謝します。皆さんが作ったものを見るのは本当に楽しいです。このワークショップから持ち帰っていただきたい点がいくつかあります。Google AI Edgeは、効率的なオンデバイスLLMのデプロイメントのためのクロスプラットフォームのツールライブラリであり、モバイルからウェブ、デスクトップ、Raspberry Piまで、多岐にわたるプラットフォームで使用できます。LiteRT LLMがそのためのAPIになります。小規模なモデルは熟練度を高めており、モデルはより良くなり、より小さくなり、物事を行うのがより上手になっています。そして今日私たちが作成したようなエージェントスキルは、その有用性をアプリと結びつけ、アプリ内のオンデバイスモデルのための新しい機能のロックを解除する方法です。そして最後に、すでに多くの方がこれを行っていることを願っていますが、AI Edgeギャラリーアプリをダウンロードしてください。これには新しいモデルをテストする方法があり、あらゆる種類の機能が含まれています。そして最も良い点は、これが完全にオープンソースであることです。ギャラリーアプリで見たものが気に入ったら、自分で再作成することができます。AI EdgeギャラリーのGitHubページに行き、ソースコードを自分で確認するだけです。そのソースコードを、お気に入りのエージェンティックなコーディングエージェント、できればGeminiに読み込ませることで、分析させ、これらのLiteRT LLMの実装のいくつかをあなたのために再作成させることができます。本当にありがとうございました。ここから多くのものを得ていただけたなら幸いです。すべてオンラインで利用可能なので、ご自身の時間でColabを行うことができます。そして非常に重要なことですが、質問やフィードバックがあれば、ぜひお聞かせください。GitHubのIssueでいつでもコメントできますし、私たちも近くにいますので挨拶に来てください。皆さんの質問には喜んでお答えします。本日はご参加いただき、改めて感謝申し上げます。


コメント