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
24
ローカル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
18
WhisperKit がだいぶ良いので紹介する
shu223
0
46
Animating Shapes with Simple Equations
shu223
0
8
ARKit in visionOS
shu223
0
3
Core ML版Stable DiffusionをiOSで快適に動かす
shu223
0
28
iOSではじめるフォトグラメトリ #iOSDC
shu223
0
8
MLOps for Core ML #iOSDC 2022
shu223
0
9
slidify-sample
shu223
1
1.1k
機械学習のブルーオーシャン Core ML by 堤 修一 #iOSDC Japan 2020
shu223
12
5.5k
Other Decks in Technology
See All in Technology
AI研修【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
130
[NIKKEI Tech Talk] KDDI/KAG Scrum & Community for Engineering Training
curanosuke
2
220
AIアシスタントの活用で品質の向上と開発ワークフローのスピードアップ
nagix
1
190
CEL(Common Expression Language)で書いた条件にマッチしたIAM Policyを見つける / iam-policy-finder
fujiwara3
0
710
ここがすごいよ! AWS Systems Manager!
saichan11
0
1.8k
スレットハンティングについて知っておきたいこと
hacket
0
130
AIエージェントを現場に導入する目線とは
masahiro_nishimi
1
1.5k
DevIO2024_レガシー運用からの脱却 -クラウド活用の実践事例とベストプラクティス-
jun2882
0
210
たくさん本を読んだけど 1年後には綺麗サッパリ!を乗り越えて 学習の鬼になるぞ👹
yum3
0
160
LINE WORKSへ簡単通知!Incoming Webhookアプリの紹介
mmclsntr
0
110
エンジニアリングマネージャーはどう学んでいくのか #devsumi / How Do Engineering Managers Continue to Learn and Grow?
expajp
4
1.3k
ゆめみのアクセシビリティの現在地と今後
ryokatsuse
3
290
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
34
1.9k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
17
8.7k
Embracing the Ebb and Flow
colly
81
4.3k
GitHub's CSS Performance
jonrohan
1026
450k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
26
2.1k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
105
6.8k
RailsConf 2023
tenderlove
16
720
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
155
14k
Leading Effective Engineering Teams 2024
addyosmani
3
300
A Philosophy of Restraint
colly
200
16k
Why Our Code Smells
bkeepers
PRO
332
56k
Teambox: Starting and Learning
jrom
130
8.6k
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σόΠεͰಈ͔͢ʹʮݱঢ়ͰʯσΧ͗͢Δ͠ॏ͗͢ Δ • ͕ɺେ͍ʹر͋Δʂ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ