Unleashing Foundation Models #tryswift

2.7K Views

July 16, 25

スライド概要

[try! Swift Tokyo WWDC Recap 2025 · Luma](https://lu.ma/kd101ho8?tk=KDBUW9) での発表資料です。

profile-image

フリーランスiOSエンジニア 「エンジニアと人生」コミュニティ主宰

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

Unleashing Foundation Models 堤 修一 @shu223

2.

自己紹介 • • • 堤 修一 @shu223 (GitHub, Zenn, Qiita, note, Docswell, 𝕏, YouTube, Podcast, etc...) 書籍(商業出版4冊、個人出版多数 @BOOTH):

3.

みなさんに質問

4.

以下のいずれかにあてはまる人? Foundation Modelsについて • WWDCのセッションのいずれかを見た • Apple JapanのRecapイベントで話を聞いた • その他Recapイベントで話を聞いた/スライドや記事を見た

5.

本トークで話さないこと • Foundation Modelsとは • Foundation Modelsの基礎 • Guided generation • Streaming • Stateful sessions

6.

本トークで話すこと Foundation Modelsの可能性を最大限引き出す2つの機能 • Tool calling • Custom Adpters

7.

Tool calling

8.

Foundation Modelsの制約:モダリティ • テキストのin/outのみ • 音声入出力、画像理解や画像生成機能はない

9.

10.

Tool calling (ツール呼び出し)とは モデルがアプリ内で定義したコードを自律的に実行できる機能

11.

例: GetWeatherTool: 天気を取得するツール

12.

ツールの実装

14.

@Generable struct Arguments { ... } func call(with arguments: Arguments) async throws -> ToolOutput { // ここに任意のコードを書ける! let output = ToolOutput(...) return output } → iOSでできることはほぼ何でもできる!

15.

デモ: Foundation Modelsのマルチモーダル 化 Speech + Foundation Models + Image Playground API ! 「パンダが三輪車に乗っている画像を作って」 ! リクエストから画像生成

16.

デモの実装解説

17.
[beta]
ツール
import ImagePlayground
struct ImageGenerationTool: Tool {
...
@Generable
struct Arguments {
@Guide(description: "...")
let imageDescription: String
...
}
func call(arguments: Arguments) async throws -> ToolOutput {
try! await imageService.generateImage(from: ImageDescription(...))
return ToolOutput(GeneratedContent(properties: [...]))
}
}

18.

セッション let tool = ImageGenerationTool(imageService: imageService) // 画像生成をリクエストされたら画像説明文を作成してツール使って生成してねという指示 let instructions = Instructions { ... } session = LanguageModelSession( tools: [tool], instructions: instructions )

19.

他にも • Core Bluetoothを使って外部ハードウェア連携 • Wi-Fi Awareを使ってP2P通信 • VisionやSound Analysisを使って画像処理や音声処理 • etc...

20.

Custom adapters

21.

Foundation Modelsのモデルスペック • 30億のパラメータ • 各パラメーターは2ビットに量子化 1 (Foundation Modelフレームワークの紹介 - WWDC25 より) 1

22.

Foundation Modelsのベン チマーク Llama 3.2(30億パラメータ)やGemma 2B (20億パラメータ)といった同程度のサイ ズのモデルと比べてもやや劣る 2 2 Apple Foundation Models Framework - Benchmarks, Adapter Training - Datawizz より

23.

カスタムアダプター適用で性能が大幅に向上 • 全ベンチマークで、アダプター を使用した場合、はるかに大き なモデルよりも優れた性能を発 揮 • 一部のケースではGPT-4.1や4o を含む大規模な最先端モデルを も上回った 3 3 Apple Foundation Models Framework - Benchmarks, Adapter Training - Datawizz より

24.

そもそもアダプターって? 特定のユースケースに対応するようにチューニングされた追加ア ダプターを利用できる let session = LanguageModelSession( model: SystemLanguageModel(useCase: .contentTagging) )

25.

Built-in Adapters たくさんある?

26.

Built-in Adapters general と contentTagging の2つしかない 4 4 https://developer.apple.com/documentation/foundationmodels/systemlanguagemodel/usecase

27.

Built-in Adapters こういうことのようだ

28.

カスタムアダプター WWDC25のセッションでの言及 これだけ 高度に専門化されたユースケースとカスタムデータセットを持つ ML 実 践者の方は、 アダプタトレーニングツールキットを使用して、カスタム アダプタをトレーニングすることもできます。 ただし、Apple がモデルを継続的に改善していくため、再トレーニング が必要になるという重要な責任が伴う点にご注意ください。 詳細については、開発者向けウェブサイトをご覧ください。

29.

解説ページ カスタムアダプターの専用ページが用意されている: Foundation Models adapter training - Apple Developer

30.

カスタムアダプターの作成

31.

カスタムアダプター概要 • LoRA(Low-Rank Adaptation)を使用 • ベースモデルの重みは固定、アダプターの重みのみ更新 • 必要なデータ量の目安: • 基本的なタスク: 100〜1,000サンプル • 複雑なタスク: 5,000サンプル以上

32.

Adapter Training Toolkit アダプタートレーニングツールキットを使用すると、デバイス上 のシステム LLM の機能を専門化するためのアダプターをトレー ニングし、そのアダプターを Foundation Models フレームワー クと組み合わせて使用できる

33.

ツールキットのダウンロード • ライセンスへの同意が必要 • 約2GBある

34.

ツールキットの中身 └── adapter_training_toolkit_v0_2_0 ├── assets: モデルアセット(base-model.pt、tokenizer等) ├── docs: スキーマドキュメント ├── examples: 学習用サンプルコードとデータセット └── export: `.fmadapter`パッケージのエクスポートユーティリティ → カスタムアダプター作成に必要なサンプルデータやコードが一通り入ってい る

35.

学習 python -m examples.train_adapter \ --train-data /path/to/train.jsonl \ --eval-data /path/to/valid.jsonl \ --epochs 5 \ --learning-rate 1e-3 \ --batch-size 4 \ --checkpoint-dir /path/to/my_checkpoints/

36.

エクスポート .fmadapter パッケージフォーマットでエクスポート python -m export.export_fmadapter \ --adapter-name my_adapter \ --base-checkpoint /path/to/my_checkpoints/adapter-final.pt \ --draft-checkpoint /path/to/my_checkpoints/draft-model-final.pt \ --output-dir /path/to/my_exports/

37.

カスタムアダプターの実体 • 実体は .fmadapter ファイル • Xcodeでプレビューできる

38.

カスタムアダプターの利用方法 SystemLanguageModel.Adapter を初期化して、 let adapter = try SystemLanguageModel.Adapter(fileURL: localURL) let adaptedModel = SystemLanguageModel(adapter: adapter) let session = LanguageModelSession(model: adaptedModel)

39.

Foundation Models Framework Adapter Entitlement • アダプターをアプリにデプロイするには、Apple Developer Program のメンバーシップのアカウント所有者が Foundation Models Framework アダプター エンタイトルメントをリクエ ストする必要がある • アダプターのトレーニングやローカルテストにはこのエンタ イトルメントは不要

40.

アダプターファイルの取り扱い 重要:アダプターファイルは通常の資産として含めるには大きすぎるため、アプ リの Xcode ターゲットに .fmadapter ファイルを含めないでください。 アダプターをアセットパックとしてバンドルアプリを使用する各ユーザーは、自 分のデバイスと互換性のある特定のアダプターのみが必要となるため、アダプ ターアセットをサーバーにホストし、Background Assets フレームワークを使用 してダウンロードを管理することをおすすめします。アダプターアセットのホス ティングには、独自のサーバーを使用するか、Appleにアダプターアセットのホ スティングを依頼することができます。 Background Assets フレームワークには、Foundation Models アダプター専用の アセットパックの種類があります。

41.

カスタムアダプターのデモ 演劇のシナリオを生成するデモ

42.

デモの実装 - アダプターの適用 let model: SystemLanguageModel switch currentModelType { case .base: model = SystemLanguageModel(useCase: .general) case .oneEpoch: model = SystemLanguageModel(adapter: oneEpochAdapter) case .fiveEpochs: model = SystemLanguageModel(adapter: fiveEpochAdapter) } let session = LanguageModelSession(model: model)

43.

注意点 アダプターは、単一の特定のシステムモデルバージョンと互換性があり ます。異なるシステムモデルバージョンを使用する OS バージョンを搭 載したデバイスでアプリを使用するユーザーをサポートするには、シス テムモデルの各バージョンに対して異なるアダプターをトレーニングす る必要があります。 → 先ほどデモで用いたアダプターの学習時間はMBPで10分程度。学習 データさえ用意できればシステムモデルのアップデートに追従するのも 現実的に不可能ではないかも?

44.

まとめ • Tool callingでiOSでできることはほぼ何でもできる • マルチモーダル化(音声入出力、画像入出力)、外部デバイス連 携、etc... • Custom Adaptersで性能を大幅向上 • GPT-4.1や4o等の大規模な最先端モデルをも超える性能も実現可 能 軽量かつシンプル、それでいて奥深い設計思想

45.

ご清聴ありがとうございました!