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
49
ローカル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
28
WhisperKit がだいぶ良いので紹介する
shu223
0
90
Animating Shapes with Simple Equations
shu223
0
16
ARKit in visionOS
shu223
0
6
Core ML版Stable DiffusionをiOSで快適に動かす
shu223
0
49
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
最速最小からはじめるデータプロダクト / Data Product MVP
amaotone
5
740
AWSコンテナ本出版から3年経った今、もし改めて執筆し直すなら / If I revise our container book
iselegant
15
4k
現地でMeet Upをやる場合の注意点〜反省点を添えて〜
shotashiratori
0
520
ABEMA のコンテンツ制作を最適化!生成 AI x クラウド映像編集システム / abema-ai-editor
cyberagentdevelopers
PRO
1
180
Vueで Webコンポーネントを作って Reactで使う / 20241030-cloudsign-vuefes_after_night
bengo4com
4
2.5k
[AWS JAPAN 生成AIハッカソン] Dialog の紹介
yoshimi0227
0
150
Gradle: The Build System That Loves To Hate You
aurimas
2
150
生成AIと知識グラフの相互利用に基づく文書解析
koujikozaki
1
140
バクラクにおける可観測性向上の取り組み
yuu26
3
420
Shift-from-React-to-Vue
calm1205
3
1.3k
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
27
12k
Figma Dev Modeで進化するデザインとエンジニアリングの協働 / figma-with-engineering
cyberagentdevelopers
PRO
1
430
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
53
9k
Making Projects Easy
brettharned
115
5.9k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
14
1.9k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
22k
Intergalactic Javascript Robots from Outer Space
tanoku
268
27k
Thoughts on Productivity
jonyablonski
67
4.3k
Docker and Python
trallard
40
3.1k
Scaling GitHub
holman
458
140k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
32
1.8k
A Modern Web Designer's Workflow
chriscoyier
692
190k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.8k
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σόΠεͰಈ͔͢ʹʮݱঢ়ͰʯσΧ͗͢Δ͠ॏ͗͢ Δ • ͕ɺେ͍ʹر͋Δʂ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ