---
title: iOSで生成AIを扱う方法のまとめ
tags:  #ios #coreml #swift #ml #ios18 #llm  
author: [Shuichi Tsutsumi](https://convert.docswell.com/user/shu223)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/5JG3MPY1EL.jpg?width=480
description: Mobile勉強会 Wantedly × チームラボ × Sansan #15 での発表資料です。 https://sansan.connpass.com/event/321922/
published: July 23, 24
canonical: https://convert.docswell.com/s/shu223/5WWE84-gen-ai-ios
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/5JG3MPY1EL.jpg)

iOSで生成AIを扱う方法
のまとめ
堤 修一 （@shu223）


# Page. 2

![Page Image](https://bcdn.docswell.com/page/47Q5R2MNEP.jpg)

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


# Page. 3

![Page Image](https://bcdn.docswell.com/page/KE498LV3J1.jpg)

本日の発表内容
iOSオンデバイスで動く生成AIモデルを自分のアプリに組み込む
実装方法のまとめ
• ローカルLLM
• 画像生成（Text-to-Image）
• 音声認識（Audio-to-Text）
• and more!


# Page. 4

![Page Image](https://bcdn.docswell.com/page/L71K2L3ZEG.jpg)

サンプルコード
iOS×生成AIのサンプル集
「iOS-GenAI-Sampler」


# Page. 5

![Page Image](https://bcdn.docswell.com/page/G7WDRVP6E2.jpg)

1. ローカルLLM


# Page. 6

![Page Image](https://bcdn.docswell.com/page/4JZGR4KR73.jpg)

ローカルLLM on iOS
• LLMがオンデバイスで動かせる
• いくら使っても無料
• セキュア／プライバシー保護
• 最近のモデルは軽量でも優秀
• 同じ実装で最新モデルも動かせる


# Page. 7

![Page Image](https://bcdn.docswell.com/page/YE6YR3Q1JV.jpg)

ローカルLLMをiOSアプリに組み込む
ggerganov/llama.cpp のSwift Package を利用する
• llama.cppとは
• LLMが高速に動くランタイム
• C/C++製
• Apple Siliconに最適化（Metal利用）


# Page. 8

![Page Image](https://bcdn.docswell.com/page/GE5G8LRLE4.jpg)

実装のポイント
• llama.cppのSwift PackageはほぼC++のコードしかない
• → サンプルのLibLlama.swiftを参考にラッパーを書く
1
• GGUFフォーマットのモデルの取得が必要
2
• DownloadButtonにHugging FaceからのDLロジック
1
2
LlamaContext が実際に llama ライブラリを叩いている部分
極小モデルでも1GB以上はあり、アプリバンドルに含めるには大きすぎる。


# Page. 9

![Page Image](https://bcdn.docswell.com/page/972YKLD37R.jpg)

モバイルデバイス向けおすすめモデル
• Gemma 2B
• Google製の商用利用可能な軽量LLM、2024年2月リリース
• 量子化モデル： Q4 (1.5GB), Q8 (2.67 GB)
• Phi-3-mini
• Microsoft製LLM、2024年4月リリース、38億パラメータ
• 量子化モデル： Q4 (2.2 GB)


# Page. 10

![Page Image](https://bcdn.docswell.com/page/DJYGNQ28JM.jpg)

more
• ローカルLLM on iOS の現状まとめ
• 記事（Zenn）
• スライド
• 動画
• llama.cppの公式Swift Packageの使い方を調べたメモ llama.swiftuiのコードリーディング


# Page. 11

![Page Image](https://bcdn.docswell.com/page/V7NGXK89E8.jpg)

2. 画像生成（Text-to-Image）


# Page. 12

![Page Image](https://bcdn.docswell.com/page/YJ9W8VK3J3.jpg)

Core ML Stable Diffusion
• オンデバイス画像生成
• 多様なモデル
• v2.1モデル（速い）
• XLモデル（高解像度）
• その他派生モデルも同様の実装で
動かせる


# Page. 13

![Page Image](https://bcdn.docswell.com/page/GJ8N8PRLED.jpg)

Core ML Stable Diffusionをアプリに組み込む
apple/ml-stable-diffusion のSwift Packageを利用する
import StableDiffusion
...
let pipeline = try StableDiffusionPipeline(resourcesAt: url)
try pipeline.loadResources()
let image = try pipeline.generateImages(prompt: prompt).first


# Page. 14

![Page Image](https://bcdn.docswell.com/page/LJLPR1KQER.jpg)

詳細
• Stable DiffusionをCore MLモデルに変換する
• Core ML Stable Diffusionを自分のiOSアプリに組み込む手順


# Page. 15

![Page Image](https://bcdn.docswell.com/page/47M4RW8KEW.jpg)

3. 音声認識（Audio-to-Text）


# Page. 16

![Page Image](https://bcdn.docswell.com/page/P7RWRY56E9.jpg)

WhisperKit
• オンデバイス音声認識
• Apple Siliconに最適化された
whisper.cppのCore ML版よりもさら
に2〜3倍速い
• 音声・動画ファイルからの書き起こ
し／マイク入力のリアルタイム認識


# Page. 17

![Page Image](https://bcdn.docswell.com/page/PJXPRGKDEX.jpg)

標準の音声認識フレームワークSpeechとの比較
• WhisperKit
15分の音声ファイルを51秒で書き起こし
• Speech
15分の音声ファイルを6分で書き起こし


# Page. 18

![Page Image](https://bcdn.docswell.com/page/3JKDR45D7D.jpg)

WhisperKitをアプリに組み込む
argmaxinc/WhisperKit のSwift Packageを利用する
let pipe = try? await WhisperKit()
let transcription = try? await pipe!.transcribe(audioPath: path)?.text


# Page. 19

![Page Image](https://bcdn.docswell.com/page/LE3R8LKP75.jpg)

実装のポイント
• 公式サンプル が、FatViewControllerならぬ非常にFatな
SwiftUIビュー...
• 1つのビューの中にHugging Faceからのモデルダウンロー
ドも音声処理ロジックもすべて入っている
• GenAI Samplerではリファクタリングして使いまわしやす
くする予定


# Page. 20

![Page Image](https://bcdn.docswell.com/page/8EDYMN33EG.jpg)

詳細
• iOS/macOSオンデバイスで爆速で動作する音声認識モデル
WhisperKit
• WhisperKit がだいぶ良いので紹介する
• WhisperKitサンプルのソースコードを読む


# Page. 21

![Page Image](https://bcdn.docswell.com/page/V7P6R54PJ8.jpg)

その他GenAI-Samplerに実装済みのサンプル
• iOS 18のTranslationフレー
ムワーク
• 標準・無料のオンデバイ
ス翻訳
• GPT-4oを用いたマルチモー
ダル入力のサンプル
• リアルタイム動画理解


# Page. 22

![Page Image](https://bcdn.docswell.com/page/2JV3RPXVEQ.jpg)

Upcoming Features
!
• ローカルLLM on iOSの
llama.cpp以外の実装手段
• MLX,
ML)
Exporters (Core
• Apple Intelligence
(Genmoji, Writing Tools,
Image Playground)
• Stable Diffusion派生モデル
• RAG
• Google Gemini (iOS SDK)
• OpenAIのEmbeddings
• OpenAI APIの音声・動画
リアルタイム入出力（サポ
• 標準のNatural
ート待ち）
API利用
Languageフレームワー
ク利用


# Page. 23

![Page Image](https://bcdn.docswell.com/page/5EG3MPV17L.jpg)

⭐
いただけると嬉しいです
shu223/iOS-GenAI-Sampler on GitHub


# Page. 24

![Page Image](https://bcdn.docswell.com/page/4JQ5R26N7P.jpg)

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


