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
35
ローカル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
24
WhisperKit がだいぶ良いので紹介する
shu223
0
74
Animating Shapes with Simple Equations
shu223
0
13
ARKit in visionOS
shu223
0
5
Core ML版Stable DiffusionをiOSで快適に動かす
shu223
0
43
iOSではじめるフォトグラメトリ #iOSDC
shu223
0
13
MLOps for Core ML #iOSDC 2022
shu223
0
10
slidify-sample
shu223
1
1.2k
機械学習のブルーオーシャン Core ML by 堤 修一 #iOSDC Japan 2020
shu223
12
5.5k
Other Decks in Technology
See All in Technology
とあるOSSを継続可能にするための取り組みについて / OSS Refactoring Process
bun913
1
210
Privacy Sandbox on Android / DroidKaigi 2024
7pairs
1
280
eBPFのこれまでとこれから
yutarohayakawa
10
3.2k
AIで変わるテスト自動化:最新ツールの多様なアプローチ/ 20240910 Takahiro Kaneyama
shift_evolve
0
250
プログラム検証入門
riru
6
880
【株式会社ELYZA】|GENIAC成果報告会 自社開発モデルプレゼンテーション
elyza
1
340
スタッフエンジニアの道: The Staff Engineer’s Path
snoozer05
PRO
44
14k
Functional TypeScript
naoya
11
4.8k
技術的負債解消の取り組みと専門チームのお話
bengo4com
0
340
Analytics-Backed App Widget Development - Served with Jetpack Glance
miyabigouji
0
630
OSTという文化を組織に根付かせてみた
sansantech
PRO
2
400
不動産売買取引におけるAIの可能性とプロダクトでのAI活用
zabio3
0
270
Featured
See All Featured
Visualization
eitanlees
142
15k
Designing the Hi-DPI Web
ddemaree
278
34k
Thoughts on Productivity
jonyablonski
66
4.2k
VelocityConf: Rendering Performance Case Studies
addyosmani
322
23k
Adopting Sorbet at Scale
ufuk
73
8.9k
Building a Modern Day E-commerce SEO Strategy
aleyda
36
6.8k
Ruby is Unlike a Banana
tanoku
96
11k
10 Git Anti Patterns You Should be Aware of
lemiorhan
653
58k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
225
22k
Become a Pro
speakerdeck
PRO
22
4.9k
GraphQLとの向き合い方2022年版
quramy
43
13k
Git: the NoSQL Database
bkeepers
PRO
425
64k
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σόΠεͰಈ͔͢ʹʮݱঢ়ͰʯσΧ͗͢Δ͠ॏ͗͢ Δ • ͕ɺେ͍ʹر͋Δʂ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ