Han Yin
0c7e1fc7a2
[WIP] UI: replace the HuggingFace stub in Model Management screen with actual API call
2025-10-28 11:39:17 -07:00
Han Yin
cfbd271c84
data: update Model data repository to support fetching HuggingFace models
2025-10-28 11:39:17 -07:00
Han Yin
48fa0b23dc
data: implement HuggingFace data model, data source with Retrofit API
2025-10-28 11:39:17 -07:00
Han Yin
4b2f769ba8
deps: introduce Retrofit2
2025-10-28 11:39:17 -07:00
Han Yin
fe6eafe154
data: update & enhance system prompt presets
2025-10-28 11:39:17 -07:00
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
46859c10f0
LLama: update engine state after handling the cancellation of sendUserPrompt
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
37f3e1c415
Feature: use local llama_context for benchmarking; support context init with custom context size
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
e1bc87610e
Perf: allocate `llama_batch` on stack with `llama_batch_init`
2025-10-28 11:39:16 -07:00
Han Yin
2b52563737
Polish: better logging & documentation
2025-10-28 11:39:16 -07:00
Han Yin
ec502cfde9
Feature: implement infinite conversation via context shifting
2025-10-28 11:39:16 -07:00
Han Yin
4e515727b4
Abort on system prompt too long; Truncate user prompt if too long.
2025-10-28 11:39:16 -07:00
Han Yin
4809112ec5
Polish: adopt common naming; init modularization;
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
1b0754c0f5
Perf: optimize performance with ARM features
2025-10-28 11:39:16 -07:00
Han Yin
bb5b824208
Polish: populate backend names in `benchModel`
2025-10-28 11:39:16 -07:00
Han Yin
c14c11dcbd
Feature: decode system and user prompt in batches
2025-10-28 11:39:16 -07:00
Han Yin
02465137ca
Bug fix: null system prompt state update; Safeguard empty user prompt
2025-10-28 11:39:16 -07:00
Han Yin
7bbb53aaf8
Clang-tidy linting: make functions & global variables static
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
0ade7fb4d7
Polish binding: Remove verbose setup JNI APIs; Update state machine states.
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
Han Yin
d4ab3832cf
Use common sampler
2025-10-28 11:39:15 -07:00
Han Yin
1f255d4bca
Tidy & clean LLamaAndroid binding
2025-10-28 11:39:15 -07:00
Daniel Bevenius
56b4795842
model-conversion : add support for SentenceTransformers ( #16387 )
...
* model-conversion : add support for SentenceTransformers
This commit adds support for models that use SentenceTransformer layers.
The motivation for this is that if converted model includes any of the
numbered layers specified in the original models repository then these
changes enable these models to be used and verified. Currently the
model-conversion only support the base model output without any of
the additional transformation layers.
Usage:
Convert the model that also includes the SentenceTransformer layers:
```console
(venv) $ export EMBEDDING_MODEL_PATH="~/google/embeddinggemma-300M"
(venv) make embedding-convert-model
```
Verify the produced embeddings from the converted model against the
original model embeddings:
```console
(venv) make embedding-verify-logits-st
```
The original model can be run using SentenceTransformer:
```console
(venv) make embedding-run-original-model-st
```
Run the converted model using "SentenceTransformer" layers whic
enables pooling and normalization:
```console
(venv) make embedding-run-converted-model-st
```
* add model-conversion example requirements
* add support for -st flag in embedding model conversion
This commit add support for the -st flag in the embedding model
conversion script. This will enable models to be converted using
sentence transformers dense layers.
2025-10-09 14:35:22 +02:00