Apple Intelligence と AI/ML パート抜粋 - Platforms State of the Union
本記事は、WWDC24の "Platforms State of the Union" (通称 PSoU)の "Apple Intelligence" と "Generative Tools" のパートを抜粋して記事形式で整理しなおしたものです [1]。
Apple Intelligence
Apple Intelligenceはパーソナル・インテリジェンス・システムであり、私たちのプラットフォームにパワフルなジェネレーティブ・モデルをもたらします。iOS、iPadOS、macOSは、ユーザーの個人的なコンテキストを豊富に認識しながら、言語と画像を理解・生成し、ユーザーの行動を支援するためのパワフルな新機能を手に入れました。
システム全体の機能やアプリに深く統合され、プライバシーを一から考慮して構築されている。
何年もの間、私たちのプラットフォームは、Apple Siliconのパワーを最大限に活用し、デバイス上で機械学習タスクを実行する最前線に立ってきました。
低レイテンシーを実現し、より良いユーザー体験を提供できるからです。そしてもちろん、ユーザーの個人的なデータや活動を非公開にするのにも役立ちます。新しいジェネレーティブAIモデルは非常にエキサイティングでパワフルで、ローカルで実行できる限界に挑戦しています。
Foundation model
Apple Intelligenceは、オンデバイスの基盤モデルから始まります。
これは非常に高性能な大規模言語モデルです。私たちは、私たちが望む体験に十分パワフルでありながら、デバイス上で実行するには十分小さい、スイートスポットを探していました。その基礎モデルから出発して、解決しなければならない3つの重要な課題がありました。
- 多くのタスクや機能に対して優れたものにすること
- iPhoneのようなデバイスに収まるように十分に小さくすること
- 可能な限り最高の推論パフォーマンスとエネルギー効率を実現すること
私たちが使う最初のテクニックはファインチューニングです。これは、私たちのモデルに対してさまざまなトレーニングパスを実行し、それぞれが、テキストの要約、校正、メールの返信の生成など、与えられたタスクに最適であることを教えるというものです。このプロセスの結果、それぞれ1つのことに関しては優れているが、他のことに関してはそれほど優れていないように訓練された、異なるモデルのセットが出来上がる。
ファインチューニングのより効率的なアプローチは、アダプターと呼ばれる新しい技術を活用する。
アダプターとは、共通の基礎モデルの上にオーバーレイされる、モデルの重みの小さなコレクションである。アダプターは動的にロードしたり入れ替えたりすることができ、基礎モデルに、その場のタスクに即して自らを特化させる能力を与える。Apple Intelligenceには、特定の機能ごとにファインチューニングされた幅広いアダプタのセットが含まれている。これは、基盤モデルの機能を拡張する効率的な方法です。
次のステップはモデルの圧縮です。私たちは最先端の量子化技術を活用し、モデルの品質を維持しながら、16ビットのパラメータ・モデルを、Apple Intelligenceがサポートするデバイスに適合するように、パラメータあたり平均4ビット以下にまで圧縮しました。
最後に、推論のパフォーマンスと効率に焦点を当て、プロンプトを処理して応答を生成する最短時間を得るためにモデルを最適化しました。投機的デコーディング、コンテクスト・プルーニング、グループ・クエリー・アテンションなど、さまざまな技術を採用し、ニューラル・エンジンを最大限に活用できるようにチューニングした。
我々はまた、Genmojiの異なるスタイル用のアダプタを使用して画像を生成するDiffusionモデルにも同様のプロセスを適用した。これがデバイス上のApple Intelligenceです。パワフルで、直感的で、統合された言語モデルとDiffusionモデルは、素晴らしいパフォーマンスを発揮し、手に収まるほど小さなデバイス上で動作する。
Private Cloud Compute
それでも、より複雑なデータを推論するためには、より大きなモデルを必要とする、より高度な機能もある。
そこで私たちは、Apple Intelligenceをクラウドに拡張し、より大規模な基礎モデルを実行するためのプライベートクラウドコンピューティングを導入しました。
これらのモデルはユーザーの個人情報を処理するため、私たちはクラウドコンピューティングを再考し、デバイスのプライバシーアプローチをサーバーにまで拡張する必要がありました。プライベートクラウド・コンピューティングは、AIを個人で処理するために特別に設計されている。
これは、業界をリードする私たちのオペレーティング・システムのセキュリティ研究に基づき、iOSの基盤のハード化したサブセットを使用した新しいOS上で実行されます。
プライバシーのリスク全体を軽減するために、永続的なデータストレージなど、専用のAIサーバーでは厳密には必要のない機能は省いています。
このセキュアな基盤の上に、サーバーの管理に通常使用されるツールを完全に置き換えた。
私たちのツールは、リモート・シェル経由など、ユーザー・データへのアクセスを可能にする特権アクセスを防止するように設計されています。
そして最後に、Private Cloud Computeにはインテリジェンスを強化する完全な機械学習スタックが含まれています。その結果、Apple Siliconをベースとした前例のないクラウドセキュリティ基盤が誕生した。
- 重要な暗号鍵を保護するセキュアなエンクレーブから始まります
- セキュアブートは、iOSと同様にOSの署名と検証を保証します
- Trusted Execution Monitorは、署名され検証されたコードのみが実行されるようにします。
- 認証により、ユーザーのデバイスは、リクエストを送信する前に、プライベート・クラウドのコンピュート・クラスターの身元と構成を安全に検証できる。
各リクエストに対して、ユーザーのデバイスはプライベートクラウド・コンピュートクラスターとのエンドツーエンドの暗号化された接続を確立する。
選択されたクラスターだけがリクエストデータを復号化することができ、レスポンスが返された後は保持されず、アップルがアクセスできることもない。
しかし、我々はさらに進んでいる。
私たちは、Private Cloud Computeのすべての本番ビルドの仮想イメージを公開し、セキュリティ研究者が検査できるようにすることを約束します。
第二に、我々はユーザーのデバイスが、検査のために公開された署名されたビルドを実行しているプライベートクラウドのコンピュートクラスタとしか通信しないようにしている。これは、Apple Siliconの強力な暗号証明メカニズムで検証されている。
私たちは、これがクラウドAIコンピュート用に大規模に展開された、これまでで最も高度なセキュリティ・アーキテクチャであると考えています。
Apple Intelligence
Apple Intelligenceは、私たちすべてを結びつけるパーソナル・インテリジェンス・システムです。
Apple Intelligenceには、デバイス上のセマンティック・インデックスが含まれており、アプリ間の個人情報を整理することができる、
また、アプリの能力を理解し、ユーザーに代わってそれらを利用することができる App Intents Toolbox も含まれている。
ユーザーがリクエストすると、Apple Intelligenceは、
デバイス上のインテリジェンス・スタックを通じて、またはプライベート・クラウドのコンピュートを使って、そのリクエストの処理方法をオーケストレーションする。
Apple Intelligenceは、セマンティックインデックスを利用して、各リクエストを関連する個人的なコンテキストに基づかせ、アプリの高度なツールボックスを使用して、ユーザーのためにアクションを実行します。
- それが可能にする機能で絶対に偉大であることに特化されています
- 最高のパフォーマンスとエネルギー効率で構築されています
- プライバシーとセキュリティーを基本に設計されています
それがApple Intelligenceです。
私たちは、あなたのアプリケーションにこれらの機能をもたらす新しいAPIと、システム体験により深く統合するためにあなたのアプリケーションがApple Intelligenceにその機能を公開する新しい方法を用意しています。
Generative Tools
まずは言語と画像の機能である、
ライティングツール、Genmoji、そしてImage Playgroundからはじめましょう。
Writing Tools
system-wide な Writing Tools は、Sebが先ほど話したモデルを使用して、ユーザーが文章を書き直したり、校正したり、要約したりするのを支援します。テキストフィールドをレンダリングするために標準的なUIフレームワークのいずれかを使用している場合、あなたのアプリは自動的にライティングツールを取得します。
また、新しい TextViewDeleagte
APIを使えば、Writing Toolsがアクティブになっている間のアプリの動作をカスタマイズできます。
例えば、Apple Intelligenceがテキストを処理している間、競合を避けるために同期を一時停止することができます。例えば、Weeblyのようなアプリの場合
Writing Toolsは、中小企業のオーナーが新しいウェブサイトにぴったりの言葉を見つけるのを助けてくれます。
Genmoji
Genmojiは、ユーザーがどんな瞬間にもマッチする新しい絵文字を作成できる、まったく新しいコミュニケーションの方法を切り開く。
インライン画像付きの標準的なテキストシステムをすでにお使いなら、とても便利です。たった1つのプロパティを設定するだけで、
キーボードからGenmoji以外のテキストを表示できるようになります。
GenmojiはEmojiとは異なる方法で扱われます。Emojiが単なるテキストであるのに対し、Genmojiは AttributedString
を使って扱われます。
AttributedString
は、リッチテキストをグラフィックで表現するために長年使われてきたデータ型です。
Image Playground API
Appleのインテリジェンスは、アプリ全体で楽しくオリジナルな画像を作成するための、驚くべき新しいシステム全体の機能も提供します。新しいImage Playground APIは、一貫性のある、遊び心のある、使いやすい体験を提供します。
このAPIを採用すると、メッセージ、Keynote、そして新しいImage Playgroundアプリから、ユーザーが慣れ親しんでいるのと同じエクスペリエンスにアクセスできるようになります。また、画像はユーザーのデバイス上で作成されるため、ユーザーは好きなだけ画像を試して作成することができます。また、独自のアプリでこのエクスペリエンスを提供するために、独自のテキスト画像モデルやサーバーのセットアップや支払いを心配する必要もありません。それでは、簡単に始められる方法を見てみましょう。
ライブコーディング
ここでは、XcodeでDestination Videoというアプリを作っています。新しいImage Playground APIを使って、ユーザーが自分のプロフィールに楽しいアバター写真を追加できるようにしたい。
私は、Image Playgroundシートをセットアップするために私のプロフィールボタンにSwift UIコードの簡単なビットを追加することによってそれを行うつもりです。
今、私は新しい画像を保存するためにいくつかのコードを追加するつもりです。
最後に、ユーザーにデフォルトのアバターを提供するために、テキストの説明を追加します。
それでは、「Build and Run」をタップして、私のiPadでどんなものができたか見てみましょう。
これが私のプロフィールボタンです。
これをタップすると、画像のプレイグラウンド・ビューがポップアップします。
そして、プロフィールに使える気まぐれなアバターができた。
そして、ユーザーは泡をタップしたり、私たちが提供したプロンプトを編集して、好きなものを作ることができる。
Writing Tools、Genmoji、Image Playgroundは、Apple Intelligenceの3つの強力な新機能です。これらをあなたのアプリケーションに組み込めば、ユーザーを喜ばせることができるでしょう。
Siri
Apple Intelligenceをあなたのアプリケーションに取り入れる方法はもう一つあります。
Apple Intelligenceを搭載した今年、Siriは、先ほど説明した新しい文章作成と画像生成の機能を活用したものも含め、アプリケーション内やアプリケーション間で何百もの新しいアクションを実行できるようになります。これは、App Intentsの大幅な強化によって可能になりました。
App Intentsは、Siri、ショートカット、その他のシステムエクスペリエンス用の一連のアクションを定義できるフレームワークです。そして今、App Intentsは、あなたのアプリケーションがAppleのインテリジェンスを活用するためのパワフルな方法です。
まずはこれらのドメインをサポートします、
時間をかけて、さらに追加していきます。
また、既存のSiriKitドメインに対応するアプリがあれば、Siriの強化された会話機能の恩恵を受けることもできます。例えば、言葉につまらなくても正しく応答したり、会話の前の部分を参照したりできます。また、アプリが追加作業なしで利用できるSiriの新機能が2つあります。まず、Siriはアプリのメニューから任意の項目を呼び出すことができるようになります。
そのため、スライドデッキをレビューしているユーザーが、「発表者のノートを表示」と言ったり、もっと会話的に「スピーカーのノートを見たい」と言ったりすると、Siriは何をすればよいかを知ることができます。第二に、Siriは、標準的なテキストシステムを使用するあらゆるアプリケーションで表示されるテキストにアクセスできるようになります。
これにより、ユーザーは画面上に表示されているテキストを直接参照して操作できるようになります。つまり、あるユーザーがおじいちゃんの誕生日を祝うリマインダーを見ているときに、「FaceTimeしてあげて」と言えばいいのだ。
これがSiriを使ったアクションだ。
App entities
次に、Apple IntelligenceがSiriにパーソナルコンテキストの理解をどのように搭載しているかについて説明しましょう。
Apple Intelligenceは、写真、メッセージ、ファイル、カレンダーイベントなどのセマンティックインデックスにアクセスできるようになりました。
Siriは、アプリのエンティティをインデックスに含めることができる新しいSpotlight APIを使って、アプリのデータも検索できるようになります。そして、アプリのインテントとアプリのエンティティが一緒になると、ユーザーがシステム全体のコンテンツをアプリがサポートするアクションに結びつけるための新しい方法が解き放たれます。
例えば、ユーザは、Notesアプリで取ったメモの要約を、Superhumanで下書きしたEメールに取り込むことができます。
下書きしたEメールがインデックスのアプリエンティティとして定義されているため、ユーザーは会話形式でEメールを参照できます。また、SiriはノートのコンテンツをSuperhumanアプリのユーザーが望む場所に持ってくることができます。新しいApp IntentsとApp Entitiesを構築する場合でも、既存のSiriKitを統合する場合でも、Apple Intelligenceは、Siriがあなたのアプリのデータと機能に、これまでよりもずっと深く、自然にアクセスできるようにします。App Intentsを使ってアプリの機能を公開することが、この統合の鍵です。ユーザーは、ショートカットアプリですぐにあなたのアプリのインテントを使えるようになります。また、時間の経過とともに、Siriは、サポートされているドメインに該当するアプリインテントを呼び出す機能を獲得します。現在、2つのドメインのアプリインテントスキーマが利用可能です。さらに、ソフトウェア・アップデートでは、アプリ内アクションとパーソナル・コンテキストの理解を提供する予定です。
他のオンデバイスML/AIの活用
Apple Intelligenceが提供する言語と画像の機能、そして新しいSiri。また、独自のモデルを実行したり、AIアクセラレーションハードウェアを活用するためにスタックへの低レベルのアクセスをお探しなら、アプリ内でデバイス上の機械学習とAIを使用する方法は他にもたくさんあります。
当社のビルトイン機械学習フレームワークは、多くのカテゴリーにわたってインテリジェンス機能を提供します。
これらには
- 自然言語処理
- 音声分析
- 音声理解
- ビジョン・インテリジェンス
などのAPIも含まれます、
ビジョン・フレームワークは今年、全く新しいSwift APIを手に入れた。
これらのフレームワークには、あなたが利用できる非常に多くの機能があります、
(WWDC24で発表されたVisionの新機能についてまとめた記事です)
また、CreateMLを使用してこれらを拡張し、トレーニング用の追加データを取り込むこともできます。たとえば、独自の画像データセットをお持ちの場合は、そのデータを使ってCreate MLの画像モデルを拡張し、分類や物体検出を向上させることができます。
Import and run AI models directly
私たちのフレームワーク以外にも、他の場所で開発・訓練された大規模な言語モデルやDiffusionモデルなど、デバイスAIモデルをインポートして実行することもできます。
Whisper、Stable Diffusion、Mistralなど、様々なモデルを私たちのデバイス上で実行することができます。わずか数ステップで、あなたのアプリでモデルを実行できるようになります。
どのPyTorchモデルからでも始めることができます。
その後、Core MLツールを使い、Core MLフォーマットに変換します。
Core ML Toolsは、LLMの量子化や効率的なキーバリューキャッシュなど、Apple Intelligenceで使用されているテクニックの多くを活用し、モデルを最適化するための多くの方法を提供します。
その後、Core MLフレームワークを使用して、アプリ内でモデルを実行します。
Core MLは、CPU、GPU、ニューラルエンジン全体でハードウェアアクセラレーションによる実行を最適化し、モデルのパフォーマンスをさらに最適化するための新しいツールが多数含まれています。Core MLは、iOS、iPadOS、macOS上のアプリの一部としてAIモデルを実行するために最も一般的に使用されているフレームワークです。
あなたのアプリが機械学習タスク以外のワークロードが多い場合、全体的なパフォーマンスを管理するために機械学習タスクが実行されるタイミングをよりコントロールしたいと思うかもしれません。
たとえば、アプリケーションに大きなグラフィックス作業負荷がある場合、Metalは、Metal Performance Shaders を使用して、機械学習タスクと他の作業負荷をシーケンス化する方法を提供し、最高のGPUパフォーマンスを得ることができます。
また、CPU上でリアルタイムの信号処理を実行している場合、Accelerateフレームワークには、機械学習タスク用のBNNSグラフが含まれており、レイテンシとメモリ管理をより厳密に制御することができます。
では、これを実際に使って、新しい最適化によってモデルの実行がどのように向上するかを見てみましょう。Hugging Face にある Mistral 7B パラメータモデルを使用します。
これは Core ML フォーマットに変換され、Swift Transformers パッケージを使用して構築されたテストアプリで実行されています。
macOS Sonoma上では、これは16ビットモデルとして実行されています。
macOS Sequoiaでは、Core MLで最新の4ビット量子化とステートフルKVキャッシュ技術を適用しています。
モデルに簡単な質問を与えました。
MLモデルの量子化とは何か?これらの最適化により、モデルは5倍以上の速さで回答を生成し、ピーク時の9倍近いメモリ節約を実現できることがわかります。量子化は強力なテクニックですが、出力品質に影響を与える可能性があるので、テストとチューニングを追加することをお勧めします。
Train AI models
トレーニングモデルなど、最新の進歩を試している人にとって、Macほど最適な場所はありません。
PyTorch、TensorFlow、JAX、MLXのいずれを使用している場合でも、モデルをトレーニングする際にApple Siliconのハードウェアアクセラレーションとユニファイドメモリをフルに活用できます。機械学習とAIに関する私たちの取り組みは、共同作業です。私たちは、研究コミュニティの他の人たちと協力して最先端の研究を進めており、その成果はオンラインでご覧いただけます。
私たちは、AI モデルとデバイス上での最適化に対する新しいアプローチで、サンプルコードとデータセットを含む数百の論文を発表してきました。また、私たちが研究に使用しているツールの多くをオープンソースとして共有しています。Appleのプラットフォームには、オンデバイスAIを活用する方法がたくさんあります。そして、機械学習技術は急速に進歩しており、アップルはこの分野における最先端の研究を推し進め続けています。さて、セブの話に戻ろう。これは旅の始まりです。Apple Intelligenceは、あなたの最もパーソナルなデバイスのためのパワフルなインテリジェンスです。私たちはこれからも、ジェネレーティブ・インテリジェンスをアップル・プラットフォームの中核に取り入れ、あなたのアプリケーションに統合できる新しい機能を公開していきます。ジェネレーティブ・インテリジェンスは、私たち全員がコードを書く方法も変えていきます。私たちは、デベロッパツールに驚くような新しいインテリジェンス機能を追加していきます。
Apple Intelligence関連セッションのまとめ
Apple Intelligence関連セッションを下記記事にまとめています。
- "Design App Intents for system experiences" (システムエクスペリエンスのためのApp Intents設計)
- App Intentsのコンセプトや設計の考え方について学びたいという方は本記事からどうぞ
- "Bring your app’s core features to users with App Intents" (App Intentsでアプリのコア機能をユーザーに提供する)
- App Intentsを実装を通して学びたい方にはこちらがおすすめ
- "Bring your app to Siri"
- Apple Intelligenceについてより具体的に触れられていておもしろいです
- "What’s new in App Intents"(App Intentsの新機能)
-
個人的には動画よりも記事で読むほうがスクロールしながら読みたい部分を拾い読みできて楽なので、このような形式にしておくことにしました。 ↩︎
Discussion