Han Yin
81ad468c78
UI: allow hide or show model card on Conversation & Benchmark screens; fix message arrangement
2025-10-28 11:39:17 -07:00
Han Yin
43d9d300aa
data: update system prompt presets
2025-10-28 11:39:17 -07:00
Han Yin
27edf0775d
UI: polish Conversation screen
2025-10-28 11:39:17 -07:00
Han Yin
379be5d6c3
pkg: restructure system metrics into a separate file
2025-10-28 11:39:17 -07:00
Han Yin
b1831c4053
pkg: restructure TopBarApps into separate files in a child package
2025-10-28 11:39:17 -07:00
Han Yin
3c539dc146
pkg: restructure BottomAppBars into separate files in a child package
2025-10-28 11:39:17 -07:00
Han Yin
0bcb182d17
feature: implement Conversation screen's bottom app bar
2025-10-28 11:39:17 -07:00
Han Yin
d3011d48e6
nit: disable mode selection's radio buttons when loading model
2025-10-28 11:39:17 -07:00
Han Yin
0dec7fb2a3
ui: polish Benchmark screen; implement its bottom app bar's rerun and share
2025-10-28 11:39:17 -07:00
Han Yin
32f37a4316
[WIP] ui: polish Benchmark screen; implement its bottom app bar
2025-10-28 11:39:17 -07:00
Han Yin
ec907d01ba
ui: add filter off icon to "Clear filters" menu item
2025-10-28 11:39:17 -07:00
Han Yin
9e4ba94d66
ui: show empty models info in Model Management screen
2025-10-28 11:39:17 -07:00
Han Yin
dd0367b970
feature: support filtering in Model Management screen
2025-10-28 11:39:17 -07:00
Han Yin
d97e28a6d8
UI: animate FAB on model preselection states
2025-10-28 11:39:17 -07:00
Han Yin
05c620cc52
data: move Model related actions (query, filter, sort) into ModelInfo file
2025-10-28 11:39:17 -07:00
Han Yin
ef3791207b
UI: extract InfoView out into a separate file for reusability
2025-10-28 11:39:17 -07:00
Han Yin
73330596ae
nit: move scaffold related UI components into a separate package
2025-10-28 11:39:17 -07:00
Han Yin
77edad5a01
feature: support searching on Model Selection screen
2025-10-28 11:39:17 -07:00
Han Yin
2b3ba770dd
UI: finally support theme modes; remove hardcoded color schemes, default to dynamic color scheme implementation
2025-10-28 11:39:17 -07:00
Han Yin
a8dc825aef
UI: handle back press on Model Selection screen
2025-10-28 11:39:17 -07:00
Han Yin
d1b018e375
UI: show a Snack bar to warn user that system prompt is not always supported
2025-10-28 11:39:17 -07:00
Han Yin
56a7272858
UI: polish model cards on Benchmark and Conversation screens to show model loading metrics
2025-10-28 11:39:17 -07:00
Han Yin
10ca2fa834
util: extract formatting helper functions from FileUtils into a new FormatUtils
2025-10-28 11:39:17 -07:00
Han Yin
d7afcc41d5
UI: polish ModelLoading screen
2025-10-28 11:39:17 -07:00
Han Yin
57b5001f5c
nit: revert accidental committing of debug code
2025-10-28 11:39:17 -07:00
Han Yin
ec47fa3d14
nit: allow deselect model on Model Selection screen
2025-10-28 11:39:17 -07:00
Han Yin
6b74c49e6b
UI: polish model card
2025-10-28 11:39:17 -07:00
Han Yin
c12ef7a779
UI: update ModelSelectionScreen with a preselect mechanism
2025-10-28 11:39:17 -07:00
Han Yin
b81a0c6e6d
UI: refactor ModelCard UI to show GGUF metadata
2025-10-28 11:39:17 -07:00
Han Yin
9056f27a91
nit: rename lastUsed field to dateLastUsed; add dateAdded field
2025-10-28 11:39:17 -07:00
Han Yin
7540c2a8b9
nit: refactor data.local package structure
2025-10-28 11:39:17 -07:00
Han Yin
7ed79319e5
GGUF: make GgufMetadata serializable in order to be compatible with Room
2025-10-28 11:39:17 -07:00
Han Yin
8ae0c3d2fa
DB: introduce Kotlin serialization extension's library and plugin; add Room runtime library
2025-10-28 11:39:17 -07:00
Han Yin
67499727ef
gguf: add GGUF metadata data holder and its corresponding extractor implementation
2025-10-28 11:39:17 -07:00
Han Yin
a9466c0370
navigation: sink model loading state management from AppContent down into ModelLoadingScreen; pass ModelLoadingMetrics to Benchmark and Conversation screens
2025-10-28 11:39:17 -07:00
Han Yin
8a682ff85d
core: throw Exception instead of returning null if model fails to load
2025-10-28 11:39:17 -07:00
Han Yin
f313362ced
nit: polish ModelLoadingScreen UI
2025-10-28 11:39:17 -07:00
Han Yin
1d508f367e
UI: update AppContent to pass in correct navigation callbacks
2025-10-28 11:39:17 -07:00
Han Yin
0d65c4b06b
nit: extract app name into a constant value; remove unused onBackPressed callbacks
2025-10-28 11:39:17 -07:00
Han Yin
9f1d26ac95
UI: migrate ConversationViewModel onto ModelLoadingViewModel; update & refine ConversationScreen
2025-10-28 11:39:17 -07:00
Han Yin
cb508be782
UI: migrate ModelLoadingScreen onto ModelLoadingViewModel; update & refine ModelLoadingScreen
2025-10-28 11:39:17 -07:00
Han Yin
f61c512223
UI: expose a single facade ModelUnloadDialogHandler; move UnloadModelState into ModelUnloadingViewModel.kt
2025-10-28 11:39:17 -07:00
Han Yin
c5a3ac7eb1
UI: Introduce an abstract ViewModel to handle additional model unloading logics
2025-10-28 11:39:17 -07:00
Han Yin
e1c77c6bbd
LLama: add a new Initializing state; ; add two extension properties; rename LibraryLoaded state to Initialized
2025-10-28 11:39:17 -07:00
Han Yin
ba40d689a1
UI: implement BenchmarkScreen's individual back handling
2025-10-28 11:39:17 -07:00
Han Yin
8203ddb97a
UI: refactor back handling by removing centralized BackHandlerSetup and UnloadModelConfirmationDialog from AppContent
2025-10-28 11:39:17 -07:00
Han Yin
c08d02d233
LLama: add ModelUnloadingState to engine State; add missing state checks in stub engine; fix instrumentation engine's error messages
2025-10-28 11:39:17 -07:00
Han Yin
481ba6e9d3
UI: remove code duplication in sort menu
2025-10-28 11:39:17 -07:00
Han Yin
41615be5ae
UI: fix the typo `totalGb` in `StorageMetrics`
2025-10-28 11:39:17 -07:00
Han Yin
69f2bd62f9
UI: replace ugly optional as casts in AppScaffold with extension functions
2025-10-28 11:39:17 -07:00
Han Yin
e269da655f
UI: combine TopBarConfig and BottomBarConfig into each route's ScaffoldConfig
2025-10-28 11:39:17 -07:00
Han Yin
225c5435c5
UI: refactor BottomBarConfig.ModelsManagement APIs
2025-10-28 11:39:17 -07:00
Han Yin
63fc56d603
UI: centralize the AppScaffold and modularize its configs
2025-10-28 11:39:17 -07:00
Han Yin
72e97b93c5
feature: check for available space before copying local model
2025-10-28 11:39:16 -07:00
Han Yin
65d4a57a8b
LLama: refactor loadModel by splitting the system prompt setting into a separate method
2025-10-28 11:39:16 -07:00
Han Yin
9f77155535
VM: handle the cancellation of ongoing token generation
2025-10-28 11:39:16 -07:00
Han Yin
06448a60a5
UI: update UI ongoing model import's cancellation
2025-10-28 11:39:16 -07:00
Han Yin
9ba74a9d3d
data: allow canceling the ongoing model import
2025-10-28 11:39:16 -07:00
Han Yin
d70b8fe323
core: swap in LLamaAndroid and mark stub engine for testing only
2025-10-28 11:39:16 -07:00
Han Yin
c2426a42e5
UI: unify Model Card components
2025-10-28 11:39:16 -07:00
Han Yin
434933f5b3
UI: show model card in Conversation screen
2025-10-28 11:39:16 -07:00
Han Yin
9769467723
UI: show model card in Model Loading screen
2025-10-28 11:39:16 -07:00
Han Yin
9cfa74f754
core: break down InferenceManager due to Interface Segregation Principle
2025-10-28 11:39:16 -07:00
Han Yin
286ed05f13
vm: merge SystemPromptViewModel into ModelLoadingViewModel
2025-10-28 11:39:16 -07:00
Han Yin
23d411d86e
vm: split mono MainViewModel into separate individual ViewModels
2025-10-28 11:39:16 -07:00
Han Yin
32d778bb8e
core: extract conversation and benchmark logics into InferenceManager; add logs and missing state updates in stub InferenceEngine
2025-10-28 11:39:16 -07:00
Han Yin
51b120f464
data: pass through getModelById from ModelDao into ModelRepository
2025-10-28 11:39:16 -07:00
Han Yin
59f5caa699
Util: split FileUtils from ModelUtils; extract copy methods into FileUtils
2025-10-28 11:39:16 -07:00
Han Yin
4913ad0dae
nit: tidy SystemPromptViewModel
2025-10-28 11:39:16 -07:00
Han Yin
2614f91226
UI: replace model selection screen's data stubbing; add empty view
2025-10-28 11:39:16 -07:00
Han Yin
6b48f7473f
UI: extract a shared ModelCard component
2025-10-28 11:39:16 -07:00
Han Yin
0d41e75ca5
UI: add a confirmation step when user picks a file; refactor model import overlay into AlertDialog
2025-10-28 11:39:16 -07:00
Han Yin
1bebd1bb07
util: extract file size formatting into ModelUtils
2025-10-28 11:39:16 -07:00
Han Yin
561fe0222f
UI: handle back navigation when user is in multi-selection mode
2025-10-28 11:39:16 -07:00
Han Yin
2d6b8856f6
UI: implement multiple models deletion; update Models Management screen
2025-10-28 11:39:16 -07:00
Han Yin
025e3d2417
UI: enrich ModelManagementState; extract filename to show correct importing UI
2025-10-28 11:39:16 -07:00
Han Yin
adfbfe3ffb
data: add a util file for extracting file name & size and model metadata
2025-10-28 11:39:16 -07:00
Han Yin
290a6bfebe
bugfix: use List instead of Collection for ModelDao's deletion
2025-10-28 11:39:16 -07:00
Han Yin
5de0b5d6d0
data: import local model with file picker
2025-10-28 11:39:16 -07:00
Han Yin
a3ebdac58f
UI: polish sort order menu
2025-10-28 11:39:16 -07:00
Han Yin
760d66c97d
UI: replace Models Management screen's stubbing with instrumentation
2025-10-28 11:39:16 -07:00
Han Yin
bc93c384a7
data: introduce Model entity and DAO; update DI module
2025-10-28 11:39:16 -07:00
Han Yin
f5e2edda87
data: [WIP] prepare for ModelRepository refactor & impl
2025-10-28 11:39:16 -07:00
Han Yin
b6cc8f0c01
DI: abstract the protocol of SystemPromptRepository; update AppModule
2025-10-28 11:39:16 -07:00
Han Yin
eebc05b559
UI: polish UI for ModelsManagementScreen; inject ModelsManagementVieModel
2025-10-28 11:39:16 -07:00
Han Yin
6e82bb37d3
Feature: Introduce ModelRepository and ModelsManagementViewModel; update AppModule
2025-10-28 11:39:16 -07:00
Han Yin
aedf442632
DI: Optimize AppModule
2025-10-28 11:39:16 -07:00
Han Yin
d60bba9b8f
UI: navigation with more natural animated transitions
2025-10-28 11:39:16 -07:00
Han Yin
511df35704
bugfix: wait for model to load before navigating to benchmark screen; use NavigationActions instead of raw navController
2025-10-28 11:39:16 -07:00
Han Yin
ea11ee3c94
UI: optimize AppContent's composing
2025-10-28 11:39:16 -07:00
Han Yin
0afd087f35
DI: replace manual DI with Hilt DI
2025-10-28 11:39:16 -07:00
Han Yin
a1f6e7e476
DI: make viewmodels Hilt injectable
2025-10-28 11:39:16 -07:00
Han Yin
564b095427
DI: make app Hilt injectable
2025-10-28 11:39:16 -07:00
Han Yin
65741a7e64
DI: introduce Hilt plugin + processor + lib dependencies
2025-10-28 11:39:16 -07:00
Han Yin
af0d68d611
nit: combine temperatureMetrics and useFahrenheit
2025-10-28 11:39:16 -07:00
Han Yin
5e4972e93e
UI: refactor top app bars
2025-10-28 11:39:16 -07:00
Han Yin
2a41c0e354
vm: replace token metrics stubs with actual implementation
2025-10-28 11:39:16 -07:00
Han Yin
e47e3b77ee
UI: locks user in alert dialog when model is unloading
2025-10-28 11:39:16 -07:00
Han Yin
6b341b0fbe
bugfix: handle user quitting on model loading
2025-10-28 11:39:16 -07:00
Han Yin
e8b84c6ebf
UI: code polish
2025-10-28 11:39:16 -07:00
Han Yin
fddf060d92
data: code polish
2025-10-28 11:39:16 -07:00
Han Yin
3b499ac7e4
UI: polish conversation screen
2025-10-28 11:39:16 -07:00
Han Yin
64ebdc67a6
UI: update app name to be more Arm
2025-10-28 11:39:16 -07:00
Han Yin
55681847e9
UI: rename `ModeSelection` to `ModelLoading` for better clarity
2025-10-28 11:39:16 -07:00
Han Yin
75c986afc5
bugfix: properly handle user's quitting conversation screen while tokens in generation
2025-10-28 11:39:16 -07:00
Han Yin
4848bf93d0
data: introduce repo for System Prompt; flow data from Room to VM
2025-10-28 11:39:16 -07:00
Han Yin
5596d5203b
DB: setup Room database
2025-10-28 11:39:16 -07:00
Han Yin
4046cd16fd
Deps: bump Kotlin plugin; introduce KSP; apply in :app subproject
2025-10-28 11:39:16 -07:00
Han Yin
5868eaa66b
UI: polish system prompt setup UI
2025-10-28 11:39:16 -07:00
Han Yin
a7ee3d305f
UI: split a nested parent settings screen into separate child settings screens
2025-10-28 11:39:16 -07:00
Han Yin
65c09b2b32
UI: allow drawer's gesture control only on Home and Settings screens; enable alert dialog on back navigation inside conversation and benchmark
2025-10-28 11:39:16 -07:00
Han Yin
648b97818e
UI: disable triggering drawer via gesture; enable alert dialog on back navigation inside conversation and benchmark
2025-10-28 11:39:16 -07:00
Han Yin
a7ae8b7ce0
[WIP] DI: implement simple local vm factory provider
2025-10-28 11:39:16 -07:00
Han Yin
ca2b7772ce
UI: add a new MainActivity; update manifest
2025-10-28 11:39:16 -07:00
Han Yin
7e5c80cee9
UI: implement core flow's screens
2025-10-28 11:39:16 -07:00
Han Yin
5ad65919e9
util: implement user preferences utility
2025-10-28 11:39:16 -07:00
Han Yin
46bd638c5f
util: implement performance monitor; wrap it with a viewmodel
2025-10-28 11:39:16 -07:00
Han Yin
4dd755e25b
UI: implement basic UI components
2025-10-28 11:39:16 -07:00
Han Yin
32608fb225
UI: app navigation
2025-10-28 11:39:16 -07:00
Han Yin
3f913ce440
LLM: stub a local inference engine for faster iteration
2025-10-28 11:39:16 -07:00
Han Yin
3787fbddb0
data: define data models for LLM and system prompts
2025-10-28 11:39:16 -07:00
Han Yin
697d778db7
UI: define theme, color palette, typography and shape
2025-10-28 11:39:16 -07:00
Han Yin
cbe7133742
UI: introduce new dependencies, update versions & references
2025-10-28 11:39:16 -07:00
Han Yin
44a522dbc8
UI: move existing UI src files into `legacy` package
2025-10-28 11:39:16 -07:00
Han Yin
6d2279e9cd
REWRITE JNI bridge; Update viewmodel
2025-10-28 11:39:16 -07:00
Han Yin
8bf2f4d412
Feature: chat template auto formatting
2025-10-28 11:39:16 -07:00
Han Yin
f44882aeeb
Enforce centralized dependency management; bump Gradle & deps versions
2025-10-28 11:39:16 -07:00
Han Yin
7dc9968f82
Restructure `LLamaAndroid.kt`
2025-10-28 11:39:16 -07:00
Han Yin
44720859d6
Rewrite llama-android JNI implementation
2025-10-28 11:39:15 -07:00
Elton Kola
9791f40258
android : module ( #7502 )
...
* move ndk code to a new library
* add gradle file
2024-05-25 11:11:33 +03:00
Georgi Gerganov
854d365aba
cmake : update android comments ( #7341 )
2024-05-19 11:01:01 +03:00
Georgi Gerganov
511182eabb
android : use "ci-android" branch for CI ( #7341 )
...
* android : use "ci-android" branch for CI
* ggml : disable SIMD exp and silu for 32-bit ARM
ggml-ci
* android : do not fetch, use add_subdirectory instead
* cmake : provide binary dir
2024-05-18 20:40:39 +10:00
Brian
1265c670fd
Revert "move ndk code to a new library ( #6951 )" ( #7282 )
...
This reverts commit efc8f767c8 .
2024-05-14 16:10:39 +03:00
Elton Kola
efc8f767c8
move ndk code to a new library ( #6951 )
2024-05-14 17:30:30 +10:00
Pedro Cuenca
b97bc3966e
llama : support Llama 3 HF conversion ( #6745 )
...
* Support Llama 3 conversion
The tokenizer is BPE.
* style
* Accept suggestion
Co-authored-by: Sourab Mangrulkar <13534540+pacman100@users.noreply.github.com>
* llama : add llama_token_is_eog()
ggml-ci
* llama : auto-detect more EOT tokens when missing in KV data
* convert : replacing EOS token is a hack
* llama : fix codegemma EOT token + add TODOs
* llama : fix model type string for 8B model
---------
Co-authored-by: Sourab Mangrulkar <13534540+pacman100@users.noreply.github.com>
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
2024-04-21 14:50:41 +03:00
Dean
7ab7b733bb
android : fix utf8 decoding error ( #5935 )
...
* examples: fix utf8 decoding error
some models have a tokenizer that decodes an id into an incomplete utf8 sequence, need to validate and wait for next token
one example would be: https://huggingface.co/Qwen/Qwen1.5-1.8B-Chat-GGUF/resolve/main/qwen1_5-1_8b-chat-q4_0.gguf and and an example of the token is 18137
* android : minor
---------
Co-authored-by: zhangfuwen <zhangfuwen@foxmail.com>
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
2024-03-10 22:03:17 +02:00
Radosław Gryta
abbabc5e51
ggml-quants : provide ggml_vqtbl1q_u8 for 64bit compatibility ( #5711 )
...
* [ggml-quants] Provide ggml_vqtbl1q_u8 for 64bit compatibility
vqtbl1q_u8 is not part of arm v7 neon library
* [android-example] Remove abi filter after arm v7a fix
* [github-workflows] Do not skip Android armeabi-v7a build
2024-02-25 20:43:00 +02:00
bmwl
f486f6e1e5
ggml : add numa options ( #5377 )
...
* Added numa options to allow finer grained control as well as plumbing for a new mirror mode that will require numa.h
* Reverted Makefile
* Fixed include
* Removed sched.h from ggml.h, moved ggml_get_numa_affinity into ggml.c, removed trailing whitespace and fixed up a few inconsistent variables
* removed trailing whitespace
* Added numa options to allow finer grained control as well as plumbing for a new mirror mode that will require numa.h
* Reverting Makefile
* Fixed a number of issues with the move from BOOL to ggml_numa_strategies. Added a note about mirror mode note being implemented yet
* Removing MIRROR_MODE code for this PR
* Removing last bit of MIRROR_MODE code for this PR
* Removing unneeded branch in server.cpp example and moving get_numa_affinity and making it static
* Fixed lingering init_llama_backend() bool calls in tests and examples
* Remote enum llama_numa_strategies
* Revert bad merge with dynatemp flags
* add missing enum ggml_numa_strategies declaration and revert sync problem with master
* add missing enum ggml_numa_strategies declaration
* fixed ggml_init_numa variable
* Update ggml.h
Co-authored-by: Jared Van Bortel <cebtenzzre@gmail.com>
* Update READMEs with info about numa flags, change INTERLEAVE strategy name to DISTRIBUTE everywhere, implement the improved distribution strategy from @rankaiyx, fix a spelling mistake and un-merge some bad merges
* split numa init out from llama_backend_init and created llama_numa_init. Updated all code paths and samples
* Fix up some boolean vs enum comparisons
* Added #ifdefs for non-Linux OS that don't have cpu_set_t datatype
* Update ggml.h
Align enum values
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update ggml.c
Remove whitespace
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update ggml.c
align paremeters
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update examples/server/server.cpp
remove whitespace and align brace
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update common/common.cpp
Remove whitespace and align brace
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* unified ggml_numa_strategy enum and fixed text alignment in server.cpp example
* Update ggml.c
simplified return for platforms without NUMA support
Co-authored-by: Jared Van Bortel <cebtenzzre@gmail.com>
* removed redundant else from cli argument processing of --numa
* whitespace
---------
Co-authored-by: root <root@nenya.lothlorien.ca>
Co-authored-by: Jared Van Bortel <cebtenzzre@gmail.com>
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
Co-authored-by: Jared Van Bortel <jared@nomic.ai>
2024-02-16 11:31:07 +02:00
Valentin Konovalov
256d1bb0dd
android : use release cmake build type by default ( #5123 )
2024-01-25 19:05:51 +02:00
Neuman Vong
862f5e41ab
android : introduce starter project example ( #4926 )
...
* Introduce starter project for Android
Based on examples/llama.swiftui.
* Add github workflow
* Set NDK version
* Only build arm64-v8a in CI
* Sync bench code
* Rename CI prop to skip-armeabi-v7a
* Remove unused tests
2024-01-16 15:47:34 +02:00