Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ローカルLLM on iOS の現状まとめ
Search
shu223
March 05, 2024
Technology
0
52
ローカルLLM on iOS の現状まとめ
「Mobile勉強会 Wantedly × チームラボ × Sansan #13」での発表資料です。
発表動画:
https://youtu.be/yyYVFpxbO1Q
shu223
March 05, 2024
Tweet
Share
More Decks by shu223
See All by shu223
GPT-4o with iOS
shu223
0
29
WhisperKit がだいぶ良いので紹介する
shu223
0
95
Animating Shapes with Simple Equations
shu223
0
17
ARKit in visionOS
shu223
0
7
Core ML版Stable DiffusionをiOSで快適に動かす
shu223
0
52
iOSではじめるフォトグラメトリ #iOSDC
shu223
0
18
MLOps for Core ML #iOSDC 2022
shu223
0
11
slidify-sample
shu223
1
1.2k
機械学習のブルーオーシャン Core ML by 堤 修一 #iOSDC Japan 2020
shu223
12
5.6k
Other Decks in Technology
See All in Technology
The Role of Developer Relations in AI Product Success.
giftojabu1
0
140
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
300k
誰も全体を知らない ~ ロールの垣根を超えて引き上げる開発生産性 / Boosting Development Productivity Across Roles
kakehashi
1
230
データプロダクトの定義からはじめる、データコントラクト駆動なデータ基盤
chanyou0311
2
330
iOS/Androidで同じUI体験をネ イティブで作成する際に気をつ けたい落とし穴
fumiyasac0921
1
110
TypeScriptの次なる大進化なるか!? 条件型を返り値とする関数の型推論
uhyo
2
1.7k
10XにおけるData Contractの導入について: Data Contract事例共有会
10xinc
6
660
TanStack Routerに移行するのかい しないのかい、どっちなんだい! / Are you going to migrate to TanStack Router or not? Which one is it?
kaminashi
0
600
Why App Signing Matters for Your Android Apps - Android Bangkok Conference 2024
akexorcist
0
130
Application Development WG Intro at AppDeveloperCon
salaboy
0
190
初心者向けAWS Securityの勉強会mini Security-JAWSを9ヶ月ぐらい実施してきての近況
cmusudakeisuke
0
130
CDCL による厳密解法を採用した MILP ソルバー
imai448
3
150
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Adopting Sorbet at Scale
ufuk
73
9.1k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
Building Applications with DynamoDB
mza
90
6.1k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Writing Fast Ruby
sferik
627
61k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Visualization
eitanlees
145
15k
Transcript
ϩʔΧϧLLM on iOS ͷݱঢ়·ͱΊ అ मҰʢ@shu223ʣ
ࣗݾհ • అ मҰ • @shu223 (GitHub, Qiita, Zenn, note,
𝕏, YouTube, Podcast, etc...) • ॻ੶ʢۀग़൛4ɺݸਓग़൛ଟ @BOOTHʣ:
ຊͷΞδΣϯμ • iOSΦϯσόΠεͰLLMΛಈ͔͢ํ๏ • ࣗͷΞϓϦʹΈࠐΉ • ݱঢ়ͱࠓޙͷల
༻ޠઆ໌ • ʲLLMʳ: Large Language Models / େنݴޠϞσϧ • ʲϩʔΧϧLLMʳ:
ϩʔΧϧڥͰಈ͘LLM • ʲΦϯσόΠεॲཧʳ: ॲཧ͕σόΠε෦Ͱ͍݁ͯ͠Δ ʢΫϥυ֎෦αʔόʔʹґଘ͠ͳ͍ʣ
ϩʔΧϧLLM on iOS • ΦϯσόΠεͰॲཧͯ͠·͢ • APIୟ͍͍ͯ·ͤΜ • iPhone 15
Pro༻ • ഒ࠶ੜ͍ͯ͠·ͤΜ • 8.6 tokens/sec
ϩʔΧϧLLMͷϝϦοτ • ΦϑϥΠϯͰಈ͘ • ϓϥΠόγʔ͕कΒΕΔʢσʔλ͕Ͳ͜ʹΞοϓ͞Εͳ ͍ʣ • ͲΕ͚ͩͬͯແྉ ϞόΠϧελϯυΞϩʔϯͰ࠷ઌͷػೳ͕ಈ࡞͢Δ͜ͱ ʹৗʹϩϚϯ͕͋Δ
iOSΦϯσόΠεͰLLM Λಈ͔͢ํ๏
iOSͰϩʔΧϧLLMΛಈ͔͢ํ๏ େ͖͚ͯ͘2ͭ • llama.cpp • Core ML
iOSͰϩʔΧϧLLMΛಈ͔͢ํ๏ େ͖͚ͯ͘2ͭ • llama.cpp • Core ML
llama.cpp • LLM͕ߴʹಈ͘ϥϯλΠϜ • C/C++ • Georgi Gerganov (GG) ͞Μ͕։ൃ
• GGML → GGUFϑΥʔϚοτ
llama.cpp ͱ Apple Silicon • Apple Silicon͚ʹARM NEONɺAccelerateɺMetalϑ ϨʔϜϫʔΫͰ࠷దԽ •
ʮϩʔΧϧLLMΛಈ͔ͤΔmacOSΞϓϦʯͷଟ͕͘ llama.cppΛ෦Ͱར༻ • Ollama, LM Studio, LLMFarm, etc... • GGUFϑΥʔϚοτͷϞσϧΛ༻͢Δ
llama.cpp ͱ iOS • "Apple Slicon͚࠷దԽ" MγϦʔζ͚ͩͰͳ͘ɺiPhone ͷAγϦʔζର
iOSͰϩʔΧϧLLMΛಈ͔͢ํ๏ େ͖͚ͯ͘2ͭ • llama.cpp • Core ML
Core MLͱ • ػցֶशϞσϧΛiOS, macOS, etc. ʹΈࠐΉͨΊͷApple ͷϑϨʔϜϫʔΫ, ϞσϧϑΥʔϚοτ •
CPUɾGPUɾNeural EngineΛར༻͠ɺϝϞϦ༗ྔͱిྗ ফඅྔΛ࠷খݶʹ͑ͭͭύϑΥʔϚϯεΛ࠷େݶʹߴΊΔ Α͏ʹઃܭ͞Ε͍ͯΔ
Neural EngineAPI͕ͳ͍ • Core MLΛར༻ͨ͠߹ͷΈNeural EngineΛར༻Ͱ͖Δ • → Apple SilliconʢiPhoneͷAγϦʔζؚΉʣͷੑೳΛ࠷
׆͔ͤΔͷCore MLʂ
Core ML vs llama.cpp • Neural Engine Λ׆͔ͤΔɺCore ML͕༗རʁ
!
LLMϞσϧΛCore MLʹม͢Δํ๏ • coremltoolsΛ͏ • ͍͠ʢྫɿcoremltoolsΛ༻͍ͨCore MLϞσϧͷม - Sansan
Tech Blog ʣ • Hugging Face͕ެ։͍ͯ͠Δมπʔϧ exporters Λ͏
! exporters • TransformersϞσϧΛCore MLʹม͢Δπʔϧ • coremltoolsΛϥοϓͨ͠ͷͰ͋Δ͕ɺมʹ͏ ৭ʑͳΛπʔϧଆͰٵऩͯ͘͠Ε͍ͯΔ • ཁ͜ͷπʔϧΛ͑coremltoolsΛͦͷ··͏ΑΓ
؆୯ʹTransformersϞσϧΛCore MLϞσϧʹมͰ͖ Δ
ʢิࢿྉʣ ! exporters ͷ͍ํ • هࣄɿ TransformersϞσϧΛCore MLʹม͢Δπʔϧ exporters Λࢼ͢
• LLMϞσϧΛCore MLʹม͢Δ͜ͱʹޭ
ʢ͘ͳ͖ͬͯͨͷͰதུʣ ͜ͷྲྀΕͰݴ͍͍ͨ͜ͱɿ Core MLϞσϧͷมπʔϧ͋ Δ͕ɺมࡁΈϞσϧ΄ͱΜͲެ։͞Ε͓ͯΒͣɺྔࢠԽ ࣗͰ৭ʑ͕ΜΔඞཁ͕͋Δ
llama.cpp ͚ͷϞσϧͲ ͏͔ʁ ΄ͱΜͲͷϩʔΧϧLLM͕৭ʑͳύλʔ ϯͰྔࢠԽ͞ΕGGUFϑΥʔϚοτͰެ ։͞Ε͍ͯΔʢTheBloke ͕༗໊ʣ
Core ML vs llama.cpp • Neural Engine Λ׆͔ͤΔɺCore ML͕༗རʁ •
֤छϩʔΧϧLLMΛʮ͙͢ʹࢼͤΔʯͰѹతʹ llama.cpp
͜͜·Ͱͷ·ͱΊ • iOSͰϩʔΧϧLLMΛಈ͔͢खஈͱͯ͠llama.cppͱCore ML͕͋Δ • ͲͪΒApple Siliconʹ࠷దԽ͞Ε͍ͯΔ͕ɺNeural EngineΛ׆͔ͤΔͷCore MLͷΈ •
llama.cppྔࢠԽࡁΈɾมࡁΈͷϞσϧͷબࢶ͕๛ ʹ͋Δ
ࣗͷΞϓϦʹΈࠐΉ
llama.cpp • खܰʹΞϓϦʹΈࠐΊΔΑ͏ʹຊՈϦϙδτϦʹSwift Package͕༻ҙ͞Ε͍ͯΔ • ͦͷSwift Packageͷ͍ํΛࣔ͢αϯϓϧಉϦϙδτϦʹ ༻ҙ͞Ε͍ͯΔ • examples/llama.swiftui
Core ML • ! exporters Ͱมͨ͠Core MLϞσϧΛΞϓϦͰಈ͔ͨ͢ ΊͷϥούʔϥΠϒϥϦͱͯ͠ swift-transformers ͱ͍͏
Swift Package͕༻ҙ͞Ε͍ͯΔ • ͦͷαϯϓϧΞϓϦެ։͞Ε͍ͯΔ
iOSΦϯσόΠεͰಈ͘ LLMϞσϧͷݱঢ়
Ϟσϧͷ୳͠ํ • Hugging Face HubͰ୳͢ʢGGUF / Core MLʣ • LLMFarm
ͷ͜͜ ɾɾɾಈ࡞ݕূࡁΈϞσϧ͕αΠζͱڞʹ ϦετΞοϓ͞Ε͍ͯΔ • llama.cpp ͷ README ͷ "Supported models" ɺ͜ ͜ɾɾɾ֤छϞσϧͷiPhoneͰͷϕϯνϚʔΫ
ࢼͯ͠ΈͨϞσϧͷྫ • Mistral 7B v0.1 ʢൺֱతখ͞ͳαΠζͰ༏लʣ • Q3_K_S (3.16GB) •
Q4_K_S (4.14GB) • Calm 2 7B Chat ʢຊޠLLMʣ • Q3_K_S (3.47GB) • Q4_K_S (3.12GB) • Q4_K_M (3.47GB)ɾɾɾiPhone 15 ProͰΫϥογϡ
σϞ
Mistral 7B v0.1 • Q4_K_S • 4-bitྔࢠԽ • 4.14GB •
ϩʔσΟϯά 15ඵ • ςΩετੜ 8.66 t/s
Calm2 7B Chat • Q3_K_S • 3-bitྔࢠԽ • 3.12GB •
ϩʔσΟϯά 25ඵ • ςΩετੜ 1.89 t/s
ݱঢ়ͷॴײ ʢ˞1,2ճࢼ͚ͨͩ͠ͷॴײͰ͢ʣ • ճ༰ ! • ਪ !
ͱ͍͑
ݱঢ়ͰϓϩμΫτͰͷ࣮༻ݫͦ͠͏ • αΠζͷɿ 3-bit or 4-bit ྔࢠԽͨ͠ϞσϧͰ3GBʙ • ΞϓϦʹΈࠐΉΘ͚ʹ͍͔ͳ͍ʗϢʔβʔʹμϯϩ ʔυͤ͞ΔΘ͚ʹ͍͔ͳ͍
• ॲཧͷɿ Ϟσϧͷϩʔυʹ͕͔͔࣌ؒΔʗਪ ·ͩݫ͍͠ → APIΛୟ͍ͨํ͕͍ • ༻ϝϞϦྔͷɿ GBඞཁ
ࠓޙͷల
ϫΫϫΫ͔͠ͳ͍ • Ϟσϧੑೳɿ ΑΓগͳ͍ύϥϝʔλͰߴੑೳͳϞσϧ͕ ʑੜ·Ε͍ͯΔ • ྔࢠԽख๏ɿ ʑਐԽɺBitNetͳΔͷొ • σόΠεੑೳɿ
ϝϞϦ༰ྔGPUɾNeural Engineͷੑೳ ʑਐԽ • มࡁΈϞσϧͷଟ༷ੑɾɾɾCore MLมࡁΈͷLLMॆ ࣮ͯ͘͠Δʢͣʣ
ΦϯσόΠεͰLLM͕αΫαΫಈ͍ۙ͘ʂ
Wrap up • iOSͰϩʔΧϧLLMΛಈ͔͢खஈେ͖͘2௨Γ • llama.cppɿ ྔࢠԽࡁΈɾมࡁΈϞσϧͷબࢶ͕๛ • Core MLɿ
Neural Engine͏ • iOSσόΠεͰಈ͔͢ʹʮݱঢ়ͰʯσΧ͗͢Δ͠ॏ͗͢ Δ • ͕ɺେ͍ʹر͋Δʂ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ