Commit Graph

1804 Commits

Author SHA1 Message Date
Han Yin 6a5bc94ff1 [WIP] lib: move GgufMetadata into the lib submodule 2025-10-28 11:39:17 -07:00
Han Yin 4b3f6ef8d7 misc: rename LlamaAndroid related class to InferenceEngine prefixes 2025-10-28 11:39:17 -07:00
Han Yin 72822f0236 misc: reorg the pkg structure 2025-10-28 11:39:17 -07:00
Han Yin b59c59e5c3 core: add back OpenMP due to huge perf loss on TG128 2025-10-28 11:39:17 -07:00
Han Yin 53ac8af67a core: swap out hardcoded LlamaAndroid library loading 2025-10-28 11:39:17 -07:00
Han Yin 1b79db877d core: implement cpu_detector native lib 2025-10-28 11:39:17 -07:00
Han Yin 98c8f5e59e [WIP] llama: enable KleidiAI and disable tier 4 due to `+sve+sve2` bug caused by `ggml_add_cpu_backend_variant_impl` as explained below
```CMake
if (NOT SME_ENABLED MATCHES -1)
...
    set(PRIVATE_ARCH_FLAGS "-fno-tree-vectorize;${PRIVATE_ARCH_FLAGS}+sve+sve2")
...
```
2025-10-28 11:39:17 -07:00
Han Yin ead41ff655 [WIP] llama: disable OpenMP in ABI split since most SoCs are big.LITTLE 2025-10-28 11:39:17 -07:00
Han Yin 3884bbcb86 [WIP] llama: ABI split where five tiers are built sequentially. 2025-10-28 11:39:17 -07:00
Han Yin 75d1abe24a [WIP] llama: ABI split builds five .so artifacts.
However, all .so are performing on SVE level
2025-10-28 11:39:17 -07:00
Han Yin eab502a735 llama: migrate C/CXX flags into CMakeList 2025-10-28 11:39:17 -07:00
Han Yin 512fe1be4e UI: disable landscape mode; prevent duplicated benchmark running 2025-10-28 11:39:17 -07:00
Han Yin a4c66c4baf nit: print current pp & tg in llama-bench 2025-10-28 11:39:17 -07:00
Han Yin bbf0420bac ui: add "clear results" action to Benchmark screen 2025-10-28 11:39:17 -07:00
Han Yin 49df3aea9a UI: map language codes into country Emojis 2025-10-28 11:39:17 -07:00
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