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
Android端末で実現するオンデバイスLLM 2025
Search
LINE Digital Frontier - TECH
September 11, 2025
Technology
72
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Android端末で実現するオンデバイスLLM 2025
「DroidKaigi2025」の登壇資料です。
https://2025.droidkaigi.jp/
LINE Digital Frontier - TECH
September 11, 2025
More Decks by LINE Digital Frontier - TECH
See All by LINE Digital Frontier - TECH
Kotlin言語仕様書へ招待 〜コード「なぜ」を読み解く〜
ldf_tech
0
1.2k
累計5000万DLサービスの裏側 – LINEマンガのKotlinで挑む大規模 Server-side ETLの最適化
ldf_tech
2
450
5000万ダウンロードを超える漫画サービスを支えるログ基盤の設計開発の全て
ldf_tech
0
2.6k
How LINE MANGA Uses ClickHouse for Real-Time AnalysisSolving Data Integration Challenges with ClickHouse
ldf_tech
0
440
会社紹介資料
ldf_tech
1
5.6k
SwiftSyntaxでUIKitとSwiftUIの使用率を完璧に計測できちゃう件について
ldf_tech
0
390
Kotlin 2.0が与えるAndroid開発の進化
ldf_tech
0
320
Road to Kotlin 〜10年続くPerl運用からの脱却〜
ldf_tech
0
130
Kotlin Collection関数をマスター
ldf_tech
1
580
Other Decks in Technology
See All in Technology
攻撃者視点で考えるDetection Engineering
cryptopeg
3
2k
2026TECHFRESH畢業分享會 - AI 時代的人生存檔點
line_developers_tw
PRO
0
1.3k
2026TECHFRESH畢業分享會 - Lightning Talk - 打造精準高效的 MCP 設計模式與測試實務
line_developers_tw
PRO
0
1.3k
【Snowflake Summit 2026 Recap!!】Snowflake Summit Deep Dive: Security & Governance
civitaspo
1
260
【NRUG vol.18】なぜ多くのオブザーバビリティ導入は失敗するのか
nrug_member
0
190
SONiCのLinuxベースを活かしたZabbix監視
sonic
0
230
AI駆動開発を通して感じた、 AI時代のデザイナーの役割変化
whisaiyo
4
2.3k
脱SaaS!FDEを支えるプロビジョニングと分離設計
knih
0
240
マルチアカウント環境での コーディングエージェントを使った障害調査が大変なので AIエージェントにReadOnly権限を付与してみた / ReadOnly AI Agents for Multi-Account AWS Incident Response
yamaguchitk333
2
110
気軽に使える"情報のハブ"としてのNotion活用 〜フロー情報の集積点 と、 Claude Code × Notion AI〜
syucream
1
150
2026TECHFRESH畢業分享會 - 葬送的通靈師:化系統與用戶雜訊成行動訊號
line_developers_tw
PRO
0
1.3k
手塩にかけりゃいいってもんじゃない
ming_ayami
0
610
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
440
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
150
Why Our Code Smells
bkeepers
PRO
340
58k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
600
The agentic SEO stack - context over prompts
schlessera
0
820
Producing Creativity
orderedlist
PRO
348
40k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
200
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Transcript
AndroidͰ࣮ݱ͢ΔΦϯσόΠεLLM 2025 2024.09.12 Masayuki Suda © LINE Digital Frontier Corporation
࣍ 01. ΠϯτϩμΫγϣϯ 04. ࣮༻ੑൺֱɾ·ͱΊ 02. ࣮ํ๏ɾϝϦοτσϝϦοτ 03. Benchmark ɾࣗݾհ
ɾηογϣϯ֓ཁ ɾ༻ޠղઆ ɾ࣮༻ੑൺֱ ɾ·ͱΊ ɾOn Device LLMಋೖྫ ɾGemini Nano ɾLlama.cpp ɾMediaPipe LLM Inference API ɾձ ɾཁ ɾߍਖ਼
ΠϯτϩμΫγϣϯ 01.
1.1 ࣗݾհ LINE Digital Frontierגࣜձࣾ ɹɹMasayukiSuda ɹɹdaasuu
1.1 ࣗݾհ LINE Digital Frontier גࣜձࣾͱ
ࠓ͢͜ͱ ςΩετॲཧ
ࠓ͢͜ͱ ࢲ;ͭ͏ͷAndroidΤϯδχΞͰ͢
αϯϓϧίʔυ https://github.com/MasayukiSuda/DroidKaigiLocalLLMSample
ͳͥΦϯσόΠεLLMͳͷ͔ʁ ɾϓϥΠόγʔอޢ ɾΦϑϥΠϯಈ࡞ ɾAPIίετݮ
ͲͷΞϓϩʔνΛબͿ͖͔ʁ ɾ࣮ͷෳࡶ͞ ɾύϑΥʔϚϯε ɾϝϞϦ༻ྔ ɾόοςϦʔফඅ ɾϥΠηϯεɾӡ༻໘ ɾରԠͷ੍
ຊηογϣϯͰѻ͏3ͭͷΞϓϩʔν 1. Gemini Nano with the Google AI Edge SDK
- GoogleͷΦϯσόΠεAI 2. Llama.cpp - ྔࢠԽLLMͷωΠςΟϒ࣮ߦ 3. MediaPipe LLM Inference API (.task) - LiteRTϕʔεͷߴϨϕϧLLM API
ൺֱ͢Δ6ͭͷ࣠ 1. Ԡ࣭ 2. ಋೖͱϏϧυखॱ 3. ϝϞϦ༻ྔ 4. ਪϨΠςϯγ 5.
όοςϦʔফඅ 6. ϥΠηϯεͱӡ༻
σϞΞϓϦͷػೳ ɾAIνϟοτ ɾϦΞϧλΠϜจষཁ ɾϦΞϧλΠϜจষߍਖ਼ ɾύϑΥʔϚϯεܭଌػೳ
AIɾػցֶशͷجຊ༻ޠ **LLMʢLarge Language Modelʣ** େنݴޠϞσϧ - େྔͷςΩετͰֶशͨ͠AI **ਪʢInferenceʣ** AI͕ೖྗΛड͚ͯ͑Λग़͢͜ͱ= ΞϓϦͰ͍͏ʮॲཧʯʮܭࢉʯ
**τʔΫϯʢTokenʣ** AI͕ཧղ͢ΔςΩετͷ࠷খ୯Ґ ྫ: ʮ͜Μʹͪʯˠ ʮ͜Μʯʮʹͪʯʮʯ **ϨΠςϯγʢLatencyʣ** Ԡ࣌ؒ = ωοτϫʔΫ௨৴ͷԆͱಉ֓͡೦
Ϟσϧ࠷దԽʹؔ͢Δ༻ޠ **ྔࢠԽʢQuantizationʣ** ϞσϧαΠζΛখ͘͢͞Δٕज़ = ը૾ѹॖʢJPEGʣͷAI൛ **ετϦʔϛϯάੜ** จষΛগͣͭ͠ϦΞϧλΠϜग़ྗ = ProgressBar Ͱͷਐḿදࣔͱྨࣅ
**ίϯςΩεταΠζ** ҰʹॲཧͰ͖ΔςΩετྔͷ্ݶ = BundleʹೖΕΒΕΔσʔλαΠζͷ੍ݶͱྨࣅ
ηογϣϯͰ͍ͬͯΔ Google Pixel 9ɿ • RAM 12G • ετϨʔδ 128G
• CPU Google Tensor G4
࣮ํ๏ɾϝϦοτσϝϦοτ 02.
Gemini Nano Gemini Nano
Gemini Nano֓ཁ • GoogleͷΦϯσόΠεੜAI • aicore-experimental Google άϧʔϓʹࢀՃ͠ɺAndroid AICore ςετ
ϓ ϩάϥϜʹΦϓτΠϯ͢Δ • AICore αʔϏεܦ༝ͰΞΫηε • ରԠɿPixel 9γϦʔζ
Gemini Nano֓ཁ https://developer.android.com/ai/gemini-nano/experimental
Gemini Nano ࣮खॱᶃ: ґଘੑ
Gemini Nano ࣮खॱᶄ: minSDK
Gemini Nano ࣮खॱᶄ: minSDK
Gemini Nano ࣮खॱᶅ: ModelΛ࡞ Temperature: ϥϯμϜੑΛ੍ޚɺ͕େ͖͍΄Ͳଟ༷ੑ্͕ঢ
Gemini Nano ࣮खॱᶅ: ModelΛ࡞ TopK: ϥϯΩϯά্ҐͷτʔΫϯ͔Βߟྀ͢ΔτʔΫϯͷ
Gemini Nano ࣮खॱᶅ: ModelΛ࡞
Gemini Nano ࣮खॱᶆ: ੜΛ։࢝
Gemini Nano ࣮ߦαϯϓϧ
Gemini Nano ϝϦοτɾσϝϦοτ ϝϦοτɿ • ߴ͍ਪ࣭ʢ࠷৽ͷGeminiٕज़ʣ • ετϦʔϛϯάੜαϙʔτ • OSϨϕϧͰͷ࠷దԽ
• GoogleΤίγεςϜ౷߹ σϝϦοτɿ • ରԠ͕ݶఆత • ΧελϚΠζੑ੍͕ݶత • ࣮ݧతػೳͰ·ͩҰൠར༻͕Ͱ͖ͳ͍ɻ • ճ͕҆ఆͤͣɺ͢Δ͜ͱ͕͋Δ
Llama.cpp Llama.cpp
Llama.cpp֓ཁ • C++ϕʔεͷLLMਪΤϯδϯ • GGUFܗࣜͷྔࢠԽϞσϧΛ༻ • JNIܦ༝ͰAndroid͔Βݺͼग़͠ • ๛ͳϞσϧબࢶ •
ΫϩεϓϥοτϑΥʔϜରԠ
Llama.cpp ࣮खॱᶃ: llama.cppΛclone Llama.cppΛclone
Llama.cpp ࣮खॱᶄ: androidͷexampleΛ։͘ examples/androidΛAndroid StudioͰ։͘
Llama.cpp ࣮खॱᶅ: minSDKΛ߹ΘͤΔ
Llama.cpp ࣮खॱᶆ: ndkͷFIlterΛઃఆ͢Δ
Llama.cpp ࣮खॱᶇ:aarΛ࡞Δ
Llama.cpp ࣮खॱᶈ:aarΛϓϩδΣΫτʹಋೖ
Llama.cpp ࣮खॱᶈ:aarΛґଘੑʹՃ͑Δ
Llama.cpp ࣮खॱᶉ: Instance ॳظԽ
Llama.cpp ࣮खॱᶊ:ਪ࣮ߦ
Llama.cpp Ϟσϧͷબࢶ ར༻ՄೳϞσϧྫɿ • TinyLlama 1.1B Q4: 640MBʢܰྔςετ༻ʣ • Llama
3.2 3B Q4_K_M: 2.3GBʢਪʣ • Qwen2.5 3B: 2GBʢଟݴޠରԠʣ • Phi-3.5 Mini: 2.2GBʢվྑ൛ʣ • Llama 3.2 1B Instruct Q4_K_M: 891MBʢߴԠʣ
Llama.cpp Ϟσϧͷબࢶ ຊޠઐ༻Ϟσϧྫɿ • Suzume-llama-3-8B-japanese-Q4_K_M • ELYZA Japanese LLaMA-2-7B Fast
Q4_K_M • LLaMA-3-8B Cosmopedia Japanese Q4_K_M
Llama.cpp demo ར༻Ϟσϧ • Llama 3.2 1B Instruct Q4_K_M: 891MB
Llama.cpp ϝϦοτɹσϝϦοτ ϝϦοτɿ • ๛ͳϞσϧબࢶ • ߴͳΧελϚΠζੑ • ΫϩεϓϥοτϑΥʔϜ •
ΞΫςΟϒͳίϛϡχςΟ • Φʔϓϯιʔε σϝϦοτɿ ɾϞσϧຖʹLicense͕ҟͳΔ ɾCPUґଘ
MediaPipe LLM Inference API MediaPipe LLM Inference API
MediaPipe Tasks Inference APIɹ֓ཁ • LiteRT (چTensorFlow Lite) ্Ͱಈ࡞ •
GemmaϑΝϛϦʔ (.taskܗࣜ) ਪ • LLMಛԽͷߴϨϕϧAPI • NNAPI / GPUਪରԠ • ϞόΠϧ͚࠷దԽ
MediaPipe Tasks Inference APIɹ࣮खॱᶃ: ґଘੑ
MediaPipe Tasks Inference APIɹ࣮खॱᶄ: .taskϑΝΠϧஔ • μϯϩʔυΛ४උ • Google Play
Asset Delivery • αϯϓϧͰassetʹஔ
MediaPipe Tasks Inference APIɹ࣮खॱᶅ: ϦϑϨΫγϣϯॳظԽ
MediaPipe Tasks Inference APIɹ࣮खॱᶆ: ςΩετੜ࣮ߦ
MediaPipe Tasks Inference APIɹϞσϧͷબࢶ ϞόΠϧσόΠε͚Ϟσϧɿ • Falcon 1B • Gemma3
• Phi2 • Stable LM
MediaPipe Tasks Inference APIɹϞσϧͷબࢶ • Gemma3 270M: 304MBʢ࠷ܰྔʣ • Gemma3
1B: 554MBʢߴੑೳɾਪʣ • Gemma3 NANO 2B: 3GBʢ࠷ߴੑೳʣ
MediaPipe Tasks Inference APIɹཁͷdemo
MediaPipe Tasks Inference API ϝϦοτɹσϝϦοτ ϝϦοτɿ • ߴϨϕϧAPIʹΑΔ؆୯ͳ࣮ • LiteRTϕʔεͷߴੑೳ
• GPU/NNAPI׆༻ • GoogleΤίγεςϜ • ܧଓతαϙʔτ σϝϦοτɿ • ΧελϚΠζͷ෯͕ڱ͍
Benchmark 03.
Benchmark Google Pixel 9ɿ • RAM 12G • ετϨʔδ 128G
• CPU Google Tensor G4
Benchmark ଌఆ߲ɿ • ࣭ɾλεΫୡ • ਪϨΠςϯγʢॳճτʔΫϯ࣌ؒɺ૯ॲཧ࣌ؒʣ • ϝϞϦ༻ྔ • όοςϦʔফඅ
Benchmark ΧςΰϦผςετέʔεɿ 1. ձʢ؆୯ͳѫࡰɺٕज़࣭ɺ࡞ʣ 2. ཁʢจɺٕज़จॻɺจهࣄʣ 3. ߍਖ਼ʢޡࣈࣈɺจ๏ɺܟޠɺϏδωεจॻʣ https://github.com/MasayukiSuda/DroidKaigiLocalLLMSample/blob/ main/TEST_PROMPT.md
Benchmark ༻ͨ͠Modelɿ Llama.cpp ɾLlama 3.2 1B Instruct Q4_K_Mʢձʣ ɾSuzume-llama-3-8B-japanese-Q4_K_Mʢཁɾߍਖ਼ʣ MediaPipe
LLM Inference API ɾgemma3-1b-it-int4.task
ձdemo Llama.cpp Gemini Nano MediaPipe LLM
ൺֱ߲ Gemini Nano Llama.cpp ʢLlama 3.2 1B Instruct Q4ʣ MediaPipe
LLM ࣭ɾλεΫୡ ˕ ⚪︎ ▲ ฏۉϝϞϦ༻ྔ 148MB 1,072MB 826MB ॳճτʔΫϯੜ࣌ؒ 298ms 798ms 560ms ૯τʔΫϯੜ࣌ؒ 64,963ms 91,054ms 20,357ms όοςϦʔফඅ 0.51% 1% 0.5% Benchmark ձͷ݁Ռ
Gemini ձɾճྫʢྑ͍ͱ͖ʣ MVVMύλʔϯͱ MVVMʢModel-View-ViewModelʣύλʔϯɺΞϓϦ։ൃͷΞʔΩςΫνϟύλʔϯͷҰͭͰ͢ɻΞϓϦΛେ͖͚ͯ͘ModelɺViewɺViewModelͷ3ͭͷίϯ ϙʔωϯτʹ͚Δ͜ͱͰɺ։ൃͷޮԽɺϞδϡʔϧԽɺςεςΟϯά͢͠͞Λ࣮͠·͢ɻ **Model:** σʔλͷιʔεͱঢ়ଶΛද͢ΫϥεͰ͢ɻσʔλϕʔεɺAPIɺ·ͨ֎෦Ϧιʔε͔ΒσʔλΛϩʔυ͠ɺϞσϧͷঢ়ଶΛߋ৽͠·͢ɻ **View:** ΞϓϦͷϢʔβʔΠϯλʔϑΣʔεɺϢʔβʔ͔ΒͷೖྗΛॲཧ͢ΔΫϥεͰ͢ɻϞσϧͷঢ়ଶʹج͍ͮͯϢʔβʔΠϯλʔϑΣʔεΛϨϯμϦϯά͠ɺ Ϣʔβʔ͔ΒͷೖྗΛॲཧ͠·͢ɻ
**ViewModel:** ViewͱModelͷհऀΫϥεͰ͢ɻViewModelɺViewͷૢ࡞ʹΑͬͯModelͷঢ়ଶ͕มԽ͢ΔΠϕϯτΛड͚औΓɺ͜ΕΒͷΠϕϯτʹΑͬͯ Modelͷঢ়ଶΛߋ৽͠·͢ɻ·ͨɺViewModelɺϢʔβʔͷೖྗΛجʹView͕ϨϯμϦϯά͢Δඞཁ͕͋ΔใΛఏڙ͠·͢ɻ ## MVVMύλʔϯΛ͏ར **1. ϞδϡʔϧԽͱςεςΟϯάͷ͢͠͞:** MVVMύλʔϯͰɺModelɺViewɺViewModelΛͦΕͧΕಠཱͨ͠ίϯϙʔωϯτͱͯ͠ѻ͏͜ͱ͕Ͱ͖·͢ɻ͜ΕɺϞδϡʔϧԽΛଅਐ͠ɺ։ൃͷޮΛߴ Ί·͢ɻ·ͨɺViewͱModelΛΞΫηεͤͣʹViewModelΛ௨ͯ͠ૢ࡞͢Δ͜ͱͰɺςεςΟϯάͷ্͢͠͞͠·͢ɻViewͱModelΛΞΫηε͢Δ ͱɺςεςΟϯά͕ෳࡶʹͳΓɺόάͷमਖ਼͘͠ͳΓ·͢ɻViewModelΛ௨ͯ͠ૢ࡞͢Δ͜ͱͰɺViewͱModelͷ૬ޓ࡞༻Λςετ͍͢͠Α͏ʹ͠·͢ɻ AndroidΞϓϦ։ൃͰMVVMύλʔϯΛ͏རʹ͍ͭͯৄ͘͠આ໌͍ͯͩ͘͠͞ɻ
Llama ձɾճྫ ### MVVMύλʔϯ MVVMύλʔϯɺModel-View-ViewModelͷόʔδϣϯͰ͢ɻ - Model:σʔλΛཧ͢ΔΫϥε - View:UIΛදࣔ͢ΔΫϥε -
ViewModel:σʔλΛཧ͠ɺUIʹม͢ΔΫϥε ### AndroidΞϓϦͰMVVMύλʔϯΛ༻͢Δར 1. **σʔλཧͷ؆ૉԽ**: MVVMύλʔϯͰɺσʔλΛཧ͢ΔΫϥεͱσʔλΛཧ͢ΔΫϥεΛ͢Δ͜ͱͰɺσʔλཧ͕؆ૉԽ͞Ε·͢ɻ 2. **UIͷ੍ޚ**: ViewModelΫϥεɺUIʹม͢Δ͜ͱͰɺUIͷ੍ޚ͕؆ૉԽ͞Ε·͢ɻ 3. **σʔλͷ҆શੑ**: ViewModelΫϥεɺσʔλͷ҆શੑΛ֬อ͢Δ͜ͱͰɺσʔλͷ҆શੑ͕ߴ·Γ·͢ɻ 4. **ϩδοΫͷࢄ**: ViewModelΫϥεɺϩδοΫͷࢄΛՄೳʹ͠ɺίʔυΛ؆ૉԽ͠·͢ɻ 5. **ςετͷ༰қੑ**: ViewModelΫϥεɺςετ͕༰қʹͳΓɺίʔυͷςετ͕؆ૉԽ͞Ε·͢ɻ 6. **σόΠεͷޓੑ**: MVVMύλʔϯͰɺσʔλΛཧ͢ΔΫϥεͱσʔλΛཧ͢ΔΫϥεΛ͢Δ͜ͱͰɺσόΠεͷޓੑ͕ߴ·Γ·͢ɻ ### AndroidΞϓϦͰMVVMύλʔϯΛ༻͢Δ߹ 1. **ModelΫϥεΛViewModelΫϥεʹม**: ModelΫϥεΛViewModelΫϥεʹม͢Δ͜ͱͰɺσʔλཧͷ؆ૉԽ͕ՄೳʹͳΓ·͢ɻ 2. **ViewModelΫϥεΛViewΫϥεʹม**: ViewModelΫϥεΛViewΫϥεʹม͢Δ͜ͱͰɺUIͷ੍ޚ͕؆ૉԽ͞Ε·͢ɻ 3. **ViewModelΫϥεΛRepositoryΫϥεʹม**: RepositoryΫϥεΛViewModelΫϥεʹม͢Δ͜ͱͰɺσʔλͷ҆શੑ͕ߴ·Γ·͢ɻ AndroidΞϓϦ։ൃͰMVVMύλʔϯΛ͏རʹ͍ͭͯৄ͘͠આ໌͍ͯͩ͘͠͞ɻ
MediaPipe LLM Inference APIɾճྫ AndroidΞϓϦ։ൃͰMVVMύλʔϯΛ͏্ͰͷརΛపఈతʹઆ໌͠·͢ʂ MVVMʢModel-View-ViewModelʣύλʔϯɺAndroidΞϓϦ։ൃʹ͓͍ͯɺUIཁૉͱͷؔੑΛؒతʹɺΑΓॊೈ͔ͭޮతʹཧ͢ΔͨΊͷΞʔΩ ςΫνϟύλʔϯͰ͢ɻ͔͠͠ɺMVVMΛ͏্ͰͷརଟذʹΓ·͢ɻ **MVVM Patternsͷར -
͜ͷ1͔ͭΒ10ͭ·Ͱઆ໌͠·͢ɿ** 1. **UI\/UX ͷ:** * MVVMύλʔϯʹΑͬͯɺUIʢϢʔβʔΠϯλʔϑΣʔεʣͰѻ͏͖ॲཧΛɺViewModelͰ͠·͢ɻ * ViewModelɺσʔλॲཧΛ͢Δ͚ͩͰɺUIཁૉʢView)ʹׯব͢ΔͷͰͳ͘ɺσʔλͰσʔλΛॲཧ͠·͢ * ͜ΕʹΑΓɺUI\/UXͷมߋʹΑͬͯɺViewModelΛมߋ͢Δ͚ͩͰɺUI͕ಈతʹߋ৽͞Ε·͢ * ͜ΕɺUI\/UXΛΑΓॊೈʹɺ؆୯ʹมߋͰ͖ΔϝϦοτ͕͋Γ·͢ 2. **σʔλۦಈ:** * ViewModelɺσʔλͷ४උɺॲཧɺͦͯ͠σʔλͷ߹ੑΛ୲͠·͢ * ViewModelͰॲཧΛཧͰ͖ΕɺUI\/UXͷมߋʹ2ճɺ2ഒɺ͞Βʹ2ഒͷॲཧΛߦ͏ඞཁ͕͋Γ·ͤΜ * ͞ΒʹɺViewModelͰσʔλΛॲཧ͢Δ͜ͱ͕Ͱ͖ΕɺUI\/UXΛ2ճɺ2ഒɺ͞Βʹ2ഒɺ͞Βʹ2ഒͷॲཧΛॲཧ͢Δඞཁ͕͋Γ·ͤΜ * ͜ΕɺίʔυͷมߋΛ2ճɺ2ഒɺ͞Βʹ2ഒɺ͞Βʹ2ഒɺ͞Βʹ2ഒɺ͞Βʹ2ഒɺ͞Βʹ2ഒɺ͞Βʹ2ഒɺ͞Βʹ2ഒɺ͞Βʹ2ഒɺ͞Βʹ2ഒɺ ͞Βʹ2ഒɺ͞Βʹ2ഒɺ͞Βʹ2ഒɺ͞Βʹ2ഒɺ͞Βʹ2ഒɺ͞Βʹ2ഒɺ͞Βʹ2ഒɺ͞Βʹ2ഒɺ͞Βʹ2ഒɺ͞Βʹ2ഒɺ͞Βʹ2ഒɺ͞Βʹ2ഒɺ͞Β ʹ2ഒɺ͞Βʹ2ഒɺ͞Βʹ2ഒɺ͞Βʹ2ഒɺ AndroidΞϓϦ։ൃͰMVVMύλʔϯΛ͏རʹ͍ͭͯৄ͘͠આ໌͍ͯͩ͘͠͞ɻ
Benchmarkɿཁprompt ҎԼͷจষΛ͘Θ͔Γ͘͢ཁ͍ͯͩ͘͠͞ɻ ॏཁͳ༰͚ͩΛ͠ɺෆཁͳࡉ෦ল͍͍ͯͩ͘͞ɻ ग़ྗຊޠͰ1ʙ3จʹ͍ͯͩ͘͠͞ɻ
Benchmarkɿཁdemo Llama.cpp Gemini Nano MediaPipe LLM
Benchmark ൺֱ߲ Gemini Nano Llama.cpp Suzume-llama-3-8B-japanese MediaPipe LLM ࣭ɾλεΫୡ ˕
˕ ˕ ฏۉϝϞϦ༻ྔ 149MB 4,558MB 832MB ॳճτʔΫϯੜ࣌ؒ 376ms 18,578ms 2,445ms ૯τʔΫϯੜ࣌ؒ 11,489ms 113,192ms 4,246ms όοςϦʔফඅ 0.11% 1% 0.01% ཁͷ݁Ռ
Gemini Nano ཁɾճྫ Android։ൃʹ͓͚ΔMVVMύλʔϯɺModel-View-ViewModelΞʔΩςΫνϟͷུͰɺ ΞϓϦέʔγϣϯͷߏΛཧ͠ɺอकੑΛ্ͤ͞ΔσβΠϯύλʔϯͰ͢ɻ ModelσʔλͱϏδωεϩδοΫΛ୲͠ɺσʔλϕʔεAPI͔ΒͷใΛཧ͠·͢ɻ ViewϢʔβʔΠϯλʔϑΣʔεΛ୲͠ɺը໘දࣔϢʔβʔͱͷ૬ޓ࡞༻Λॲཧ͠·͢ɻ ViewModelViewͱModelͷհͱͯ͠ػೳ͠ɺUIϩδοΫΛؚΈͳ͕Β View͔Βಠཱͯ͠ςετՄೳͳܗͰ࣮͞Ε·͢ɻ ͜ͷύλʔϯʹΑΓɺίʔυͷɺςελϏϦςΟͷ্ɺ
ͦͯ͠ઃఆมߋ࣌ͷσʔλอ͕࣮࣋ݱ͞Ε·͢ɻ ཁ: Android։ൃͰMVVMύλʔϯɺσʔλͱUIΛͨ͠ߏͰɺ ςετ͘͢͠ɺσʔλͷมߋΛεϜʔζʹߦ͑ΔઃܭͰ͢ɻ
Llama ཁɾճྫ Android։ൃʹ͓͚ΔMVVMύλʔϯɺModel-View-ViewModelΞʔΩςΫνϟͷུͰɺ ΞϓϦέʔγϣϯͷߏΛཧ͠ɺอकੑΛ্ͤ͞ΔσβΠϯύλʔϯͰ͢ɻ ModelσʔλͱϏδωεϩδοΫΛ୲͠ɺσʔλϕʔεAPI͔ΒͷใΛཧ͠·͢ɻ ViewϢʔβʔΠϯλʔϑΣʔεΛ୲͠ɺը໘දࣔϢʔβʔͱͷ૬ޓ࡞༻Λॲཧ͠·͢ɻ ViewModelViewͱModelͷհͱͯ͠ػೳ͠ɺUIϩδοΫΛؚΈͳ͕Β View͔Βಠཱͯ͠ςετՄೳͳܗͰ࣮͞Ε·͢ɻ ͜ͷύλʔϯʹΑΓɺίʔυͷɺςελϏϦςΟͷ্ɺ ͦͯ͠ઃఆมߋ࣌ͷσʔλอ͕࣮࣋ݱ͞Ε·͢ɻ
ग़ྗ: Android։ൃʹ͓͚ΔMVVMύλʔϯɺΞϓϦέʔγϣϯͷߏΛཧ͠ɺอकੑΛ্ͤ͞ΔσβΠϯύ λʔϯͰ͢ɻϞσϧσʔλͱϏδωεϩδοΫΛɺϏϡʔϢʔβʔΠϯλʔϑΣʔεΛɺϏϡʔϞσϧ ϏϡʔͱϞσϧΛհ͢ΔׂΛՌͨ͠·͢ɻ
MediaPipe LLM Inference APIɹཁɾճྫ Android։ൃʹ͓͚ΔMVVMύλʔϯɺσʔλΛૢ࡞͢ΔͨΊͷϞσϧΛཧ͠ɺϢʔβʔΠϯλʔϑΣʔ εΛཧ͢ΔߏΛɺModel-View-ViewModelΞʔΩςΫνϟͷུͰɺΞϓϦέʔγϣϯશମͷઃܭΛվળ ͠·͢ɻ Android։ൃʹ͓͚ΔMVVMύλʔϯɺModel-View-ViewModelΞʔΩςΫνϟͷུͰɺ ΞϓϦέʔγϣϯͷߏΛཧ͠ɺอकੑΛ্ͤ͞ΔσβΠϯύλʔϯͰ͢ɻ ModelσʔλͱϏδωεϩδοΫΛ୲͠ɺσʔλϕʔεAPI͔ΒͷใΛཧ͠·͢ɻ
ViewϢʔβʔΠϯλʔϑΣʔεΛ୲͠ɺը໘දࣔϢʔβʔͱͷ૬ޓ࡞༻Λॲཧ͠·͢ɻ ViewModelViewͱModelͷհͱͯ͠ػೳ͠ɺUIϩδοΫΛؚΈͳ͕Β View͔Βಠཱͯ͠ςετՄೳͳܗͰ࣮͞Ε·͢ɻ ͜ͷύλʔϯʹΑΓɺίʔυͷɺςελϏϦςΟͷ্ɺ ͦͯ͠ઃఆมߋ࣌ͷσʔλอ͕࣮࣋ݱ͞Ε·͢ɻ
Benchmarkɿߍਖ਼prompt ҎԼͷຊޠจΛਖ਼ࣗ͘͠વͳදݱʹߍਖ਼͍ͯͩ͘͠͞ɻ ग़ྗߍਖ਼ޙͷจষ͚ͩΛฦ͍ͯͩ͘͠͞ɻ
Benchmarkɿߍਖ਼demo Llama.cpp MediaPipe Tasks Gemini Nano
Benchmark ൺֱ߲ Gemini Nano Llama.cpp Suzume-llama-3-8B-japanese MediaPipe LLM ࣭ɾλεΫୡ ⚪︎
˕ ⚪︎ ฏۉϝϞϦ༻ྔ 168MB 4,261MB 846MB ॳճτʔΫϯੜ࣌ؒ 381ms 16,268ms 2,144ms ૯τʔΫϯੜ࣌ؒ 7,531ms 169,355ms 2,145ms όοςϦʔফඅ 0.05% 1% 0.01% ߍਖ਼ͷ݁Ռ
Gemini Nano ߍਖ਼ɾճྫʢྑ͍࣌ʣ ࢲΘࠓɺ͋ͨΒ͍͠ຊΛങ͍·ͨɻͱͯڵຯਂ͍༰ͰɺҰؾʹಡΜͰ͠·͍·ͨɻ ࢲࠓɺ৽͍͠ຊΛങ͍·ͨ͠ɻͱͯڵຯਂ͍༰ͰɺҰؾʹಡΜͰ͠·͍·ͨ͠ɻ
Llama ߍਖ਼ɾճྫ ग़ྗ: ࢲࠓɺ͋ͨΒ͍͠ຊΛങ͍·ͨ͠ɻͱͯڵຯਂ͍༰ͰɺҰؾʹಡΜͰ͠·͍·ͨ͠ɻ ղઆ: - ʮΘʯɺจ๏্ͷޡΓͰ͋Γɺলུܗͱͯ͠ʮʯʮΛʯͳͲ͕ΘΕΔ͕ɺʮΘʯਖ਼͠ ͍จ๏ͰΘΕͳ͍ͨΊɺਖ਼֬ͳදݱʹؚΊͳ͍ɻ - ʮ·ͨʯɺจ຺ʹΑͬͯʮ·ͨʯ͕ҙຯΛม͑Δ͜ͱ͕͋Δ͕ɺ͜͜Ͱʮ·ͨʯ͕ʮ͞Βʹʯ
ʮ·ͨͯ͠ʯͳͲͷҙຯΛࣔ͢͜ͱͳ͍ͨΊɺจ຺͔Βʮ·ͨʯ͕ʮ͞Βʹʯʮ·ͨͯ͠ʯ ͳͲͷҙຯΛࣔ͢߹ʹͷΈ༻͢Δͷ͕ҰൠతͰ͋Δɻ͜͜Ͱʮ·ͨʯ͕ʮ͞Βʹʯʮ·ͨ͠ ͯʯͳͲͷҙຯΛ͍ࣔͯ͠ͳ͍ͨΊɺਖ਼֬ͳදݱʹؚΊͳ͍ɻ ࢲΘࠓɺ͋ͨΒ͍͠ຊΛങ͍·ͨɻͱͯڵຯਂ͍༰ͰɺҰؾʹಡΜͰ͠·͍·ͨɻ
MediaPipe LLM Inference API ߍਖ਼ɾճྫ ࢲΘࠓɺ͋ͨΒ͍͠ຊΛങ͍·ͨɻͱͯڵຯਂ͍༰ͰɺҰؾʹಡΜͰ͠·͍·ͨɻ ࢲɺࠓ৽͍͠ຊΛങ͍ɺͱͯڵຯਂ͍༰ͰɺҰؾʹಡΈऴ͑·ͨ͠ɻ
࣮༻ੑൺֱɾ·ͱΊ 04.
࣮༻ੑൺֱ ൺֱ߲ Gemini Nano Llama.cpp MediaPipe LLM Ԡ࣭ ύʔϑΣΫτ ͨͩͨ͠·ʹ
Modelʹࠨӈ͞ΕΔ͕ ֓Ͷ ⚪︎ ཁɺߍਖ਼˕ ձݶఆత latency ˕ ⚪︎ ⚪︎ ରԠ ݶఆత ·࣮ͩݧతػೳ Android7 Ҏ߱ Android7 Ҏ߱ license Googleར༻نʹ४ڌ MIT License ※ModelͱผLicense Apache 2.0 Gemma license
͠ɺαʔϏεʹೖΕΔͳΒ
Llama.cpp, MediaPipe LLM Inference API Λ༻ͨ͠ػೳߏྫ • ϦΞϧλΠϜʹϢʔβʔʹө͢Δʹ·ͩlatencyͷෆ͕҆͋Δ • Ξτϓοτͦͷ··ϢʔβʔʹݟͤΔ͔அ͕͍͠
• ϝϞϦ༻ྔɺόοςϦʔফඅͳ͠
• ߘଈ࣌ެ։ʢUXҡ࣋ʣʗࢹͰਵ • ϩʔΧϧਪͰϓϥΠόγʔอޢˍԆ • ߘҧͷ࠷ऴஅਓ ߘࢹΛʮଈ࣌ɾʯͰ Llama.cpp, MediaPipe LLM
Inference API Λ༻ͨ͠ػೳߏྫ
ߘࢹΛʮଈ࣌ɾʯͰ
ߘࢹΛʮଈ࣌ɾʯͰ
ߘࢹΛʮଈ࣌ɾʯͰ
·ͱΊ • ςΩετॲཧͷΦϯσόΠε LLM༻్ΛߜΕ࣮༻Ͱ͖Δஈ֊ • ཁ݅ʹԠͨ͡దͳબ͕ޭͷ伴 • ٕज़ਐา͕͍Ͱͷܧଓతͳใऩू͕ඞཁ
ΞϑλʔΠϕϯτ ɾLlama.cppͷϞσϧపఈൺֱ ɾMediaPipe LLM Inference API ͷϞσϧൺֱ ɾGPUͷରԠ 10݄3 19:00ʙɹ౦ژϛουλϯຊ
11F
Special Thanks Gemini Nano Experimental https://developer.android.com/ai/gemini-nano/experimental?hl=ja Llama.cpp https://github.com/ggml-org/llama.cpp Gemma3 https://ai.google.dev/gemma/docs/core?hl=ja
MediaPipe LLM Inference API https://ai.google.dev/edge/mediapipe/solutions/genai/llm_inference/android?hl=ja
End Of doc.