ameva-runtime 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. ameva_runtime-1.0.0/LICENSE +17 -0
  2. ameva_runtime-1.0.0/MANIFEST.in +6 -0
  3. ameva_runtime-1.0.0/PKG-INFO +123 -0
  4. ameva_runtime-1.0.0/README.md +125 -0
  5. ameva_runtime-1.0.0/README.pypi.md +72 -0
  6. ameva_runtime-1.0.0/profiles/validated-vulkan-profiles.json +213 -0
  7. ameva_runtime-1.0.0/pyproject.toml +76 -0
  8. ameva_runtime-1.0.0/python/ameva_runtime/__init__.py +64 -0
  9. ameva_runtime-1.0.0/python/ameva_runtime/adapters/__init__.py +23 -0
  10. ameva_runtime-1.0.0/python/ameva_runtime/adapters/base.py +67 -0
  11. ameva_runtime-1.0.0/python/ameva_runtime/adapters/bitnet.py +50 -0
  12. ameva_runtime-1.0.0/python/ameva_runtime/adapters/diffusion.py +50 -0
  13. ameva_runtime-1.0.0/python/ameva_runtime/adapters/llamacpp.py +88 -0
  14. ameva_runtime-1.0.0/python/ameva_runtime/adapters/stt.py +50 -0
  15. ameva_runtime-1.0.0/python/ameva_runtime/adapters/tts.py +50 -0
  16. ameva_runtime-1.0.0/python/ameva_runtime/adapters/vision.py +51 -0
  17. ameva_runtime-1.0.0/python/ameva_runtime/cli.py +302 -0
  18. ameva_runtime-1.0.0/python/ameva_runtime/core.py +305 -0
  19. ameva_runtime-1.0.0/python/ameva_runtime/detector.py +232 -0
  20. ameva_runtime-1.0.0/python/ameva_runtime/doctor.py +194 -0
  21. ameva_runtime-1.0.0/python/ameva_runtime/exceptions.py +90 -0
  22. ameva_runtime-1.0.0/python/ameva_runtime/platform.py +87 -0
  23. ameva_runtime-1.0.0/python/ameva_runtime/protocol.py +118 -0
  24. ameva_runtime-1.0.0/python/ameva_runtime/router.py +123 -0
  25. ameva_runtime-1.0.0/python/ameva_runtime.egg-info/PKG-INFO +123 -0
  26. ameva_runtime-1.0.0/python/ameva_runtime.egg-info/SOURCES.txt +52 -0
  27. ameva_runtime-1.0.0/python/ameva_runtime.egg-info/dependency_links.txt +1 -0
  28. ameva_runtime-1.0.0/python/ameva_runtime.egg-info/entry_points.txt +4 -0
  29. ameva_runtime-1.0.0/python/ameva_runtime.egg-info/requires.txt +26 -0
  30. ameva_runtime-1.0.0/python/ameva_runtime.egg-info/top_level.txt +2 -0
  31. ameva_runtime-1.0.0/python/ameva_vulkan_runtime/__init__.py +64 -0
  32. ameva_runtime-1.0.0/python/ameva_vulkan_runtime/adapters/__init__.py +34 -0
  33. ameva_runtime-1.0.0/python/ameva_vulkan_runtime/adapters/base.py +170 -0
  34. ameva_runtime-1.0.0/python/ameva_vulkan_runtime/adapters/bitnet.py +105 -0
  35. ameva_runtime-1.0.0/python/ameva_vulkan_runtime/adapters/diffusion.py +144 -0
  36. ameva_runtime-1.0.0/python/ameva_vulkan_runtime/adapters/llamacpp.py +267 -0
  37. ameva_runtime-1.0.0/python/ameva_vulkan_runtime/adapters/stt.py +109 -0
  38. ameva_runtime-1.0.0/python/ameva_vulkan_runtime/adapters/tts.py +72 -0
  39. ameva_runtime-1.0.0/python/ameva_vulkan_runtime/adapters/vision.py +165 -0
  40. ameva_runtime-1.0.0/python/ameva_vulkan_runtime/bindings.py +123 -0
  41. ameva_runtime-1.0.0/python/ameva_vulkan_runtime/cli.py +132 -0
  42. ameva_runtime-1.0.0/python/ameva_vulkan_runtime/core.py +272 -0
  43. ameva_runtime-1.0.0/python/ameva_vulkan_runtime/doctor.py +900 -0
  44. ameva_runtime-1.0.0/python/ameva_vulkan_runtime/exceptions.py +32 -0
  45. ameva_runtime-1.0.0/python/ameva_vulkan_runtime/platform.py +270 -0
  46. ameva_runtime-1.0.0/python/ameva_vulkan_runtime/profiles/validated-vulkan-profiles.json +213 -0
  47. ameva_runtime-1.0.0/python/ameva_vulkan_runtime/protocol.py +125 -0
  48. ameva_runtime-1.0.0/python/tests/test_ameva_runtime.py +171 -0
  49. ameva_runtime-1.0.0/python/tests/test_core.py +143 -0
  50. ameva_runtime-1.0.0/python/tests/test_doctor_v0_v11.py +114 -0
  51. ameva_runtime-1.0.0/python/tests/test_handle_lifecycle.py +62 -0
  52. ameva_runtime-1.0.0/python/tests/test_modalities.py +165 -0
  53. ameva_runtime-1.0.0/setup.cfg +4 -0
  54. ameva_runtime-1.0.0/setup.py +30 -0
@@ -0,0 +1,17 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ Copyright 2026 UnoKim & AMEVA Open-Source Foundation
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ http://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
@@ -0,0 +1,6 @@
1
+ include README.md
2
+ include README.pypi.md
3
+ include LICENSE
4
+ recursive-include profiles *.json
5
+ recursive-include python/ameva_vulkan_runtime/profiles *.json
6
+ recursive-include python/ameva_vulkan_runtime/lib *.so *.dll
@@ -0,0 +1,123 @@
1
+ Metadata-Version: 2.4
2
+ Name: ameva-runtime
3
+ Version: 1.0.0
4
+ Summary: Unified Next-Gen Hardware Orchestration & AI Acceleration Runtime for Mobile & Edge
5
+ Home-page: https://github.com/uno-km/ameva-runtime
6
+ Author: Eunho Kim
7
+ Author-email: Eunho Kim <contact@uno-km.com>
8
+ License: Apache-2.0
9
+ Project-URL: Homepage, https://uno-km.vercel.app/lib/vulkan/
10
+ Project-URL: Repository, https://github.com/uno-km/ameva-runtime
11
+ Project-URL: Documentation, https://uno-km.vercel.app/lib/vulkan/
12
+ Keywords: vulkan,opencl,npu,cpu-neon,android,termux,acceleration,adreno,mali,hal,ameva
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: Apache Software License
16
+ Classifier: Operating System :: POSIX :: Linux
17
+ Classifier: Operating System :: Android
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.8
20
+ Classifier: Programming Language :: Python :: 3.9
21
+ Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
24
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
25
+ Requires-Python: >=3.8
26
+ Description-Content-Type: text/markdown
27
+ License-File: LICENSE
28
+ Provides-Extra: stt
29
+ Requires-Dist: termux-stt>=1.1.1; extra == "stt"
30
+ Provides-Extra: diffusion
31
+ Requires-Dist: termux-diffusion>=1.3.1; extra == "diffusion"
32
+ Provides-Extra: bitnet
33
+ Requires-Dist: termux-bitnet>=1.0.0; extra == "bitnet"
34
+ Provides-Extra: llamacpp
35
+ Requires-Dist: termux-llamacpp>=1.0.0; extra == "llamacpp"
36
+ Provides-Extra: tts
37
+ Requires-Dist: termux-tts>=1.0.0; extra == "tts"
38
+ Provides-Extra: vision
39
+ Requires-Dist: termux-vision>=1.0.0; extra == "vision"
40
+ Provides-Extra: all
41
+ Requires-Dist: termux-stt>=1.1.1; extra == "all"
42
+ Requires-Dist: termux-diffusion>=1.3.1; extra == "all"
43
+ Requires-Dist: termux-bitnet>=1.0.0; extra == "all"
44
+ Requires-Dist: termux-llamacpp>=1.0.0; extra == "all"
45
+ Requires-Dist: termux-tts>=1.0.0; extra == "all"
46
+ Requires-Dist: termux-vision>=1.0.0; extra == "all"
47
+ Dynamic: author
48
+ Dynamic: home-page
49
+ Dynamic: license-file
50
+ Dynamic: requires-python
51
+
52
+ # AMEVA-Runtime (Python)
53
+
54
+ [![PyPI](https://img.shields.io/pypi/v/ameva-runtime.svg?style=flat-square&color=0369a1)](https://pypi.org/project/ameva-runtime/)
55
+ [![Python](https://img.shields.io/pypi/pyversions/ameva-runtime.svg?style=flat-square)](https://pypi.org/project/ameva-runtime/)
56
+ [![License](https://img.shields.io/badge/License-Apache_2.0-004499.svg?style=flat-square)](https://github.com/uno-km/ameva-runtime)
57
+
58
+ > **모바일 및 엣지 환경을 위한 차세대 통합 온디바이스 하드웨어 오케스트레이션 및 멀티모달 가속 런타임**
59
+ > *Next-Gen Unified On-Device Hardware Orchestration & Multi-Modal Acceleration Runtime for Mobile & Edge*
60
+
61
+ ## Installation
62
+
63
+ ```bash
64
+ pip install ameva-runtime
65
+ ```
66
+
67
+ ## Quickstart
68
+
69
+ ```python
70
+ import ameva_runtime as ameva
71
+
72
+ # 1. Execute LLM inference directly with optimal on-device hardware dispatch
73
+ result = ameva.run(
74
+ model="qwen2.5-0.5b",
75
+ prompt="Space in Korean is:",
76
+ max_tokens=32
77
+ )
78
+
79
+ print(f"Generated text: {result.text}")
80
+ print(f"Hardware backend: {result.backend_used} ({result.tokens_per_second:.2f} t/s)")
81
+
82
+ # 2. Preview hardware execution plan
83
+ plan = ameva.plan(model="qwen2.5-0.5b")
84
+ print(f"Route: {plan.backend} | NGL: {plan.ngl} | Threads: {plan.threads}")
85
+
86
+ ```
87
+
88
+ ## Description
89
+ AMEVA Runtime provides a unified, zero-silent-fallback hardware orchestration engine for generative AI on mobile and edge devices. It automatically resolves vendor divergence, dispatching to native Vulkan hardware offload on Qualcomm Adreno while isolating driver deadlocks on ARM Mali through deterministic Cortex-A78 CPU-NEON multi-threading.
90
+
91
+ ### Empirical Hardware Benchmarks (Qwen2.5-0.5B-Instruct)
92
+
93
+ | Device & SoC | GPU & Driver Architecture | Backend Route | Layer Offload | Generation Speed | Prompt Eval Speed | UI Freeze | Speedup |
94
+ | :--- | :--- | :---: | :---: | :---: | :---: | :---: | :---: |
95
+ | **Galaxy S25** (Snapdragon 8 Elite) | Qualcomm Adreno 830 (Vulkan 1.3) | **VULKAN** | **25/25 (100% VRAM)** | **35.80 t/s** (27.93 ms/t) | **4.53 t/s** | **0%** | **35.8x** |
96
+ | **Galaxy A35** (Exynos 1380) | ARM Mali-G68 MP5 (Vulkan 1.3) | **CPU-NEON** | **0/25 (Safe Guard)** | **3.55 t/s** (295 ms/t) | **8.05 t/s** | **0%** | Baseline |
97
+ | **Galaxy A35** (Forced Vulkan Test) | ARM Mali-G68 MP5 (vulkan.mali.so) | VULKAN | 25/25 | 0.00 t/s (Deadlock) | - | 100% (Hung) | Failed |
98
+
99
+ ### Technical Rationale for ARM Mali CPU-NEON Fallback
100
+ The proprietary ARM Mali Vulkan driver (`/vendor/lib64/hw/vulkan.mali.so` via `/dev/mali0`) enforces aggressive kernel-level dynamic power management (DVFS) tied to `SurfaceFlinger` display composition. During headless compute dispatches in terminal or CLI environments (lacking an active window swapchain), the Mali driver interprets the absence of display flips as an idle state, downclocking GPU compute cores and failing to signal in-flight completion fences. This causes host threads waiting on `vkWaitForFences` or `vkQueueWaitIdle` to deadlock indefinitely.
101
+
102
+ To guarantee rock-solid system stability and eliminate device lockups, the **AMEVA SmartRouter** automatically identifies ARM Mali GPUs, bypasses the unstable headless Vulkan path, and dispatches inference to the high-performance ARM Cortex-A78 CPU-NEON cluster.
103
+
104
+ ### CLI Quickstart
105
+ ```bash
106
+ # 1. Automatic hardware diagnosis and profile inspection
107
+ ameva-run doctor
108
+ ameva-run profile
109
+
110
+ # 2. Dry-run execution plan
111
+ ameva-run plan -m qwen2.5-0.5b
112
+
113
+ # 3. Direct model execution with automatic hardware acceleration
114
+ ameva-run exec -m qwen2.5-0.5b -p "Space in Korean is:" -n 32
115
+ ```
116
+
117
+
118
+ ## Documentation
119
+ - [Official Documentation & API Reference](https://uno-km.vercel.app/lib/ameva-vulkan-runtime/)
120
+ - [GitHub Repository](https://github.com/uno-km/ameva-runtime)
121
+
122
+ ## License
123
+ Apache-2.0 License. Copyright (c) 2026 Eunho Kim (@uno-km).
@@ -0,0 +1,125 @@
1
+ # AMEVA-Runtime
2
+
3
+ [![PyPI](https://img.shields.io/pypi/v/ameva-runtime.svg?style=flat-square&color=0369a1)](https://pypi.org/project/ameva-runtime/)
4
+ [![Python](https://img.shields.io/pypi/pyversions/ameva-runtime.svg?style=flat-square)](https://pypi.org/project/ameva-runtime/)
5
+ [![npm](https://img.shields.io/npm/v/%40ameva%2Fruntime.svg?style=flat-square&color=b91c1c)](https://www.npmjs.com/package/@ameva/runtime)
6
+ [![npm downloads](https://img.shields.io/npm/dm/%40ameva%2Fruntime.svg?style=flat-square&color=b91c1c)](https://www.npmjs.com/package/@ameva/runtime)
7
+ [![License](https://img.shields.io/badge/License-Apache_2.0-004499.svg?style=flat-square)](https://github.com/uno-km/ameva-runtime)
8
+
9
+ > **모바일 및 엣지 환경을 위한 차세대 통합 온디바이스 하드웨어 오케스트레이션 및 멀티모달 가속 런타임**
10
+ > *Next-Gen Unified On-Device Hardware Orchestration & Multi-Modal Acceleration Runtime for Mobile & Edge*
11
+
12
+ ---
13
+
14
+ ## 📌 Architecture & Overview
15
+
16
+ AMEVA Runtime은 모바일 및 엣지 단말기를 위한 침묵 폴백(Zero-Silent-Fallback) 없는 차세대 통합 하드웨어 오케스트레이션 엔진입니다. 단말기별 GPU 벤더 아키텍처를 런타임에 정밀 진단하여 Qualcomm Adreno 환경에서는 네이티브 Vulkan VRAM 오프로드(Snapdragon 8 Elite 기준 35.80 tokens/sec)를 수행하고, ARM Mali 환경에서는 커널 드라이버 락업을 원천 차단하는 ARM Cortex-A78 CPU-NEON(3.55 tokens/sec)으로 자동 라우팅합니다.
17
+
18
+ ### 실기기 추론 성능 실측 벤치마크 (Qwen2.5-0.5B-Instruct)
19
+
20
+ | 단말기 및 SoC | GPU 및 드라이버 환경 | 실행 백엔드 | GPU 레이어 적재 | 토큰 생성 속도 | 프롬프트 평가 속도 | 화면 프리즈 | 상대 가속도 |
21
+ | :--- | :--- | :---: | :---: | :---: | :---: | :---: | :---: |
22
+ | **Galaxy S25** (Snapdragon 8 Elite) | Qualcomm Adreno 830 (Vulkan 1.3) | **VULKAN** | **25/25 (100% VRAM)** | **35.80 t/s** (27.93 ms/t) | **4.53 t/s** | **0%** | **35.8배** |
23
+ | **Galaxy A35** (Exynos 1380) | ARM Mali-G68 MP5 (Vulkan 1.3) | **CPU-NEON** | **0/25 (안전 보호)** | **3.55 t/s** (295 ms/t) | **8.05 t/s** | **0%** | 기준선 |
24
+ | **Galaxy A35** (강제 Vulkan 시험) | ARM Mali-G68 MP5 (vulkan.mali.so) | VULKAN | 25/25 | 0.00 t/s (데드락) | - | 100% (먹통) | 실패 |
25
+
26
+ ### ARM Mali GPU의 CPU-NEON 안전 라우팅 사유
27
+ ARM Mali 독점 드라이버는 화면 갱신(SurfaceFlinger Swapchain)이 없는 터미널(헤드리스 CLI) 환경에서 전력 관리 절전 진입으로 인해 `vkWaitForFences` 커널 펜스 신호를 유실하는 치명적인 데드락 결함을 가지고 있습니다. AMEVA Runtime은 이를 런타임에 자동 감지하여 Cortex-A78 CPU-NEON 클러스터로 즉각 분기함으로써 화면 먹통 없는 100% 안정 구동을 보장합니다.
28
+
29
+ ### CLI 빠른 실행 가이드
30
+ ```bash
31
+ # 하드웨어 진단 및 토폴로지 프로파일 확인
32
+ ameva-run doctor
33
+ ameva-run profile
34
+
35
+ # 하드웨어 분기 계획 사전 확인
36
+ ameva-run plan -m qwen2.5-0.5b
37
+
38
+ # 최적 하드웨어 백엔드로 실제 모델 추론 실행
39
+ ameva-run exec -m qwen2.5-0.5b -p "Space in Korean is:" -n 32
40
+ ```
41
+
42
+
43
+ AMEVA Runtime provides a unified, zero-silent-fallback hardware orchestration engine for generative AI on mobile and edge devices. It automatically resolves vendor divergence, dispatching to native Vulkan hardware offload on Qualcomm Adreno while isolating driver deadlocks on ARM Mali through deterministic Cortex-A78 CPU-NEON multi-threading.
44
+
45
+ ### Empirical Hardware Benchmarks (Qwen2.5-0.5B-Instruct)
46
+
47
+ | Device & SoC | GPU & Driver Architecture | Backend Route | Layer Offload | Generation Speed | Prompt Eval Speed | UI Freeze | Speedup |
48
+ | :--- | :--- | :---: | :---: | :---: | :---: | :---: | :---: |
49
+ | **Galaxy S25** (Snapdragon 8 Elite) | Qualcomm Adreno 830 (Vulkan 1.3) | **VULKAN** | **25/25 (100% VRAM)** | **35.80 t/s** (27.93 ms/t) | **4.53 t/s** | **0%** | **35.8x** |
50
+ | **Galaxy A35** (Exynos 1380) | ARM Mali-G68 MP5 (Vulkan 1.3) | **CPU-NEON** | **0/25 (Safe Guard)** | **3.55 t/s** (295 ms/t) | **8.05 t/s** | **0%** | Baseline |
51
+ | **Galaxy A35** (Forced Vulkan Test) | ARM Mali-G68 MP5 (vulkan.mali.so) | VULKAN | 25/25 | 0.00 t/s (Deadlock) | - | 100% (Hung) | Failed |
52
+
53
+ ### Technical Rationale for ARM Mali CPU-NEON Fallback
54
+ The proprietary ARM Mali Vulkan driver (`/vendor/lib64/hw/vulkan.mali.so` via `/dev/mali0`) enforces aggressive kernel-level dynamic power management (DVFS) tied to `SurfaceFlinger` display composition. During headless compute dispatches in terminal or CLI environments (lacking an active window swapchain), the Mali driver interprets the absence of display flips as an idle state, downclocking GPU compute cores and failing to signal in-flight completion fences. This causes host threads waiting on `vkWaitForFences` or `vkQueueWaitIdle` to deadlock indefinitely.
55
+
56
+ To guarantee rock-solid system stability and eliminate device lockups, the **AMEVA SmartRouter** automatically identifies ARM Mali GPUs, bypasses the unstable headless Vulkan path, and dispatches inference to the high-performance ARM Cortex-A78 CPU-NEON cluster.
57
+
58
+ ### CLI Quickstart
59
+ ```bash
60
+ # 1. Automatic hardware diagnosis and profile inspection
61
+ ameva-run doctor
62
+ ameva-run profile
63
+
64
+ # 2. Dry-run execution plan
65
+ ameva-run plan -m qwen2.5-0.5b
66
+
67
+ # 3. Direct model execution with automatic hardware acceleration
68
+ ameva-run exec -m qwen2.5-0.5b -p "Space in Korean is:" -n 32
69
+ ```
70
+
71
+
72
+ ---
73
+
74
+ ## 🚀 Installation & Quickstart
75
+
76
+ ### Python (PyPI)
77
+ ```bash
78
+ pip install ameva-runtime
79
+ ```
80
+ ```python
81
+ import ameva_runtime as ameva
82
+
83
+ # 1. Execute LLM inference directly with optimal on-device hardware dispatch
84
+ result = ameva.run(
85
+ model="qwen2.5-0.5b",
86
+ prompt="Space in Korean is:",
87
+ max_tokens=32
88
+ )
89
+
90
+ print(f"Generated text: {result.text}")
91
+ print(f"Hardware backend: {result.backend_used} ({result.tokens_per_second:.2f} t/s)")
92
+
93
+ # 2. Preview hardware execution plan
94
+ plan = ameva.plan(model="qwen2.5-0.5b")
95
+ print(f"Route: {plan.backend} | NGL: {plan.ngl} | Threads: {plan.threads}")
96
+
97
+ ```
98
+
99
+ ### Node.js / TypeScript (npm)
100
+ ```bash
101
+ npm install @ameva/runtime
102
+ ```
103
+ ```typescript
104
+ import { createContext, Doctor } from "@ameva/runtime";
105
+
106
+ const doctor = new Doctor();
107
+ const report = await doctor.runSelfTest();
108
+ console.log(`Topology Status: ${report.overallSuccess}, Hardware: ${report.deviceName}`);
109
+
110
+ const ctx = await createContext({ device: "auto" });
111
+ console.log(`Runtime Context Initialized on ${ctx.deviceName}`);
112
+
113
+ ```
114
+
115
+ ---
116
+
117
+ ## 📖 Official Documentation & Benchmarks
118
+ - [Official Architecture & API Reference](https://uno-km.vercel.app/lib/ameva-vulkan-runtime/)
119
+ - [Ecosystem Metrics & Registry Stats](https://uno-km.vercel.app/foundation/metrics)
120
+ - [AMEVA Open-Source Foundation Portal](https://uno-km.vercel.app/foundation/index.html)
121
+
122
+ ---
123
+
124
+ ## 📄 License
125
+ Licensed under the Apache-2.0 License. Copyright (c) 2026 Eunho Kim ([@uno-km](https://github.com/uno-km)).
@@ -0,0 +1,72 @@
1
+ # AMEVA-Runtime (Python)
2
+
3
+ [![PyPI](https://img.shields.io/pypi/v/ameva-runtime.svg?style=flat-square&color=0369a1)](https://pypi.org/project/ameva-runtime/)
4
+ [![Python](https://img.shields.io/pypi/pyversions/ameva-runtime.svg?style=flat-square)](https://pypi.org/project/ameva-runtime/)
5
+ [![License](https://img.shields.io/badge/License-Apache_2.0-004499.svg?style=flat-square)](https://github.com/uno-km/ameva-runtime)
6
+
7
+ > **모바일 및 엣지 환경을 위한 차세대 통합 온디바이스 하드웨어 오케스트레이션 및 멀티모달 가속 런타임**
8
+ > *Next-Gen Unified On-Device Hardware Orchestration & Multi-Modal Acceleration Runtime for Mobile & Edge*
9
+
10
+ ## Installation
11
+
12
+ ```bash
13
+ pip install ameva-runtime
14
+ ```
15
+
16
+ ## Quickstart
17
+
18
+ ```python
19
+ import ameva_runtime as ameva
20
+
21
+ # 1. Execute LLM inference directly with optimal on-device hardware dispatch
22
+ result = ameva.run(
23
+ model="qwen2.5-0.5b",
24
+ prompt="Space in Korean is:",
25
+ max_tokens=32
26
+ )
27
+
28
+ print(f"Generated text: {result.text}")
29
+ print(f"Hardware backend: {result.backend_used} ({result.tokens_per_second:.2f} t/s)")
30
+
31
+ # 2. Preview hardware execution plan
32
+ plan = ameva.plan(model="qwen2.5-0.5b")
33
+ print(f"Route: {plan.backend} | NGL: {plan.ngl} | Threads: {plan.threads}")
34
+
35
+ ```
36
+
37
+ ## Description
38
+ AMEVA Runtime provides a unified, zero-silent-fallback hardware orchestration engine for generative AI on mobile and edge devices. It automatically resolves vendor divergence, dispatching to native Vulkan hardware offload on Qualcomm Adreno while isolating driver deadlocks on ARM Mali through deterministic Cortex-A78 CPU-NEON multi-threading.
39
+
40
+ ### Empirical Hardware Benchmarks (Qwen2.5-0.5B-Instruct)
41
+
42
+ | Device & SoC | GPU & Driver Architecture | Backend Route | Layer Offload | Generation Speed | Prompt Eval Speed | UI Freeze | Speedup |
43
+ | :--- | :--- | :---: | :---: | :---: | :---: | :---: | :---: |
44
+ | **Galaxy S25** (Snapdragon 8 Elite) | Qualcomm Adreno 830 (Vulkan 1.3) | **VULKAN** | **25/25 (100% VRAM)** | **35.80 t/s** (27.93 ms/t) | **4.53 t/s** | **0%** | **35.8x** |
45
+ | **Galaxy A35** (Exynos 1380) | ARM Mali-G68 MP5 (Vulkan 1.3) | **CPU-NEON** | **0/25 (Safe Guard)** | **3.55 t/s** (295 ms/t) | **8.05 t/s** | **0%** | Baseline |
46
+ | **Galaxy A35** (Forced Vulkan Test) | ARM Mali-G68 MP5 (vulkan.mali.so) | VULKAN | 25/25 | 0.00 t/s (Deadlock) | - | 100% (Hung) | Failed |
47
+
48
+ ### Technical Rationale for ARM Mali CPU-NEON Fallback
49
+ The proprietary ARM Mali Vulkan driver (`/vendor/lib64/hw/vulkan.mali.so` via `/dev/mali0`) enforces aggressive kernel-level dynamic power management (DVFS) tied to `SurfaceFlinger` display composition. During headless compute dispatches in terminal or CLI environments (lacking an active window swapchain), the Mali driver interprets the absence of display flips as an idle state, downclocking GPU compute cores and failing to signal in-flight completion fences. This causes host threads waiting on `vkWaitForFences` or `vkQueueWaitIdle` to deadlock indefinitely.
50
+
51
+ To guarantee rock-solid system stability and eliminate device lockups, the **AMEVA SmartRouter** automatically identifies ARM Mali GPUs, bypasses the unstable headless Vulkan path, and dispatches inference to the high-performance ARM Cortex-A78 CPU-NEON cluster.
52
+
53
+ ### CLI Quickstart
54
+ ```bash
55
+ # 1. Automatic hardware diagnosis and profile inspection
56
+ ameva-run doctor
57
+ ameva-run profile
58
+
59
+ # 2. Dry-run execution plan
60
+ ameva-run plan -m qwen2.5-0.5b
61
+
62
+ # 3. Direct model execution with automatic hardware acceleration
63
+ ameva-run exec -m qwen2.5-0.5b -p "Space in Korean is:" -n 32
64
+ ```
65
+
66
+
67
+ ## Documentation
68
+ - [Official Documentation & API Reference](https://uno-km.vercel.app/lib/ameva-vulkan-runtime/)
69
+ - [GitHub Repository](https://github.com/uno-km/ameva-runtime)
70
+
71
+ ## License
72
+ Apache-2.0 License. Copyright (c) 2026 Eunho Kim (@uno-km).
@@ -0,0 +1,213 @@
1
+ {
2
+ "schema_version": "1.0.0",
3
+ "registry_name": "AMEVA Validated Vulkan Device Profiles",
4
+ "profiles": [
5
+ {
6
+ "model": "SM-A356N",
7
+ "codename": "a35x",
8
+ "market_name": "Samsung Galaxy A35 5G",
9
+ "soc": "Exynos 1380 (s5e8835)",
10
+ "gpu": "ARM Mali-G68 MP5",
11
+ "android_version": 16,
12
+ "api_level": 36,
13
+ "loader_path": "/system/lib64/libvulkan.so",
14
+ "v10_matmul_max_error": 9.39369e-05,
15
+ "status": "VERIFIED_PRODUCTION",
16
+ "active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
17
+ "memory_alignment_bytes": 128
18
+ },
19
+ {
20
+ "model": "SM-A546N",
21
+ "codename": "a54x",
22
+ "market_name": "Samsung Galaxy A54 5G",
23
+ "soc": "Exynos 1380 (s5e8835)",
24
+ "gpu": "ARM Mali-G68 MP5",
25
+ "android_version": 14,
26
+ "api_level": 34,
27
+ "loader_path": "/system/lib64/libvulkan.so",
28
+ "v10_matmul_max_error": 9.39369e-05,
29
+ "status": "VERIFIED_INHERITED",
30
+ "source_profile": "SM-A356N",
31
+ "active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
32
+ "memory_alignment_bytes": 128
33
+ },
34
+ {
35
+ "model": "SM-M546B",
36
+ "codename": "m54x",
37
+ "market_name": "Samsung Galaxy M54 5G",
38
+ "soc": "Exynos 1380 (s5e8835)",
39
+ "gpu": "ARM Mali-G68 MP5",
40
+ "android_version": 14,
41
+ "api_level": 34,
42
+ "loader_path": "/system/lib64/libvulkan.so",
43
+ "v10_matmul_max_error": 9.39369e-05,
44
+ "status": "VERIFIED_INHERITED",
45
+ "source_profile": "SM-A356N",
46
+ "active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
47
+ "memory_alignment_bytes": 128
48
+ },
49
+ {
50
+ "model": "SM-A536N",
51
+ "codename": "a53x",
52
+ "market_name": "Samsung Galaxy A53 5G",
53
+ "soc": "Exynos 1280 (s5e8825)",
54
+ "gpu": "ARM Mali-G68 MP4",
55
+ "android_version": 14,
56
+ "api_level": 34,
57
+ "loader_path": "/system/lib64/libvulkan.so",
58
+ "v10_matmul_max_error": 9.45e-05,
59
+ "status": "VERIFIED_INHERITED",
60
+ "source_profile": "SM-A356N",
61
+ "active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
62
+ "memory_alignment_bytes": 128
63
+ },
64
+ {
65
+ "model": "SM-A336N",
66
+ "codename": "a33x",
67
+ "market_name": "Samsung Galaxy A33 5G",
68
+ "soc": "Exynos 1280 (s5e8825)",
69
+ "gpu": "ARM Mali-G68 MP4",
70
+ "android_version": 14,
71
+ "api_level": 34,
72
+ "loader_path": "/system/lib64/libvulkan.so",
73
+ "v10_matmul_max_error": 9.45e-05,
74
+ "status": "VERIFIED_INHERITED",
75
+ "source_profile": "SM-A356N",
76
+ "active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
77
+ "memory_alignment_bytes": 128
78
+ },
79
+ {
80
+ "model": "SM-G991N",
81
+ "codename": "o1s",
82
+ "market_name": "Samsung Galaxy S21 5G",
83
+ "soc": "Exynos 2100",
84
+ "gpu": "ARM Mali-G78 MP14",
85
+ "android_version": 15,
86
+ "api_level": 35,
87
+ "loader_path": "/system/lib64/libvulkan.so",
88
+ "v10_matmul_max_error": 9.39e-05,
89
+ "status": "VERIFIED_PRODUCTION",
90
+ "active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
91
+ "memory_alignment_bytes": 128
92
+ },
93
+ {
94
+ "model": "SM-G996N",
95
+ "codename": "t2s",
96
+ "market_name": "Samsung Galaxy S21+ 5G",
97
+ "soc": "Exynos 2100",
98
+ "gpu": "ARM Mali-G78 MP14",
99
+ "android_version": 15,
100
+ "api_level": 35,
101
+ "loader_path": "/system/lib64/libvulkan.so",
102
+ "v10_matmul_max_error": 9.39e-05,
103
+ "status": "VERIFIED_INHERITED",
104
+ "source_profile": "SM-G991N",
105
+ "active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
106
+ "memory_alignment_bytes": 128
107
+ },
108
+ {
109
+ "model": "SM-G998N",
110
+ "codename": "p3s",
111
+ "market_name": "Samsung Galaxy S21 Ultra 5G",
112
+ "soc": "Exynos 2100",
113
+ "gpu": "ARM Mali-G78 MP14",
114
+ "android_version": 15,
115
+ "api_level": 35,
116
+ "loader_path": "/system/lib64/libvulkan.so",
117
+ "v10_matmul_max_error": 9.39e-05,
118
+ "status": "VERIFIED_INHERITED",
119
+ "source_profile": "SM-G991N",
120
+ "active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
121
+ "memory_alignment_bytes": 128
122
+ },
123
+ {
124
+ "model": "SM-G981N",
125
+ "codename": "z3s",
126
+ "market_name": "Samsung Galaxy S20 5G (Exynos)",
127
+ "soc": "Exynos 990",
128
+ "gpu": "ARM Mali-G77 MP11",
129
+ "android_version": 13,
130
+ "api_level": 33,
131
+ "loader_path": "/system/lib64/libvulkan.so",
132
+ "v10_matmul_max_error": 1.12e-04,
133
+ "status": "VERIFIED_INHERITED",
134
+ "source_profile": "SM-G991N",
135
+ "active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
136
+ "memory_alignment_bytes": 128
137
+ },
138
+ {
139
+ "model": "SM-G986N",
140
+ "codename": "y2s",
141
+ "market_name": "Samsung Galaxy S20+ 5G (Exynos)",
142
+ "soc": "Exynos 990",
143
+ "gpu": "ARM Mali-G77 MP11",
144
+ "android_version": 13,
145
+ "api_level": 33,
146
+ "loader_path": "/system/lib64/libvulkan.so",
147
+ "v10_matmul_max_error": 1.12e-04,
148
+ "status": "VERIFIED_INHERITED",
149
+ "source_profile": "SM-G991N",
150
+ "active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
151
+ "memory_alignment_bytes": 128
152
+ },
153
+ {
154
+ "model": "SM-G988N",
155
+ "codename": "z3s",
156
+ "market_name": "Samsung Galaxy S20 Ultra 5G (Exynos)",
157
+ "soc": "Exynos 990",
158
+ "gpu": "ARM Mali-G77 MP11",
159
+ "android_version": 13,
160
+ "api_level": 33,
161
+ "loader_path": "/system/lib64/libvulkan.so",
162
+ "v10_matmul_max_error": 1.12e-04,
163
+ "status": "VERIFIED_INHERITED",
164
+ "source_profile": "SM-G991N",
165
+ "active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
166
+ "memory_alignment_bytes": 128
167
+ },
168
+ {
169
+ "model": "SM-S931N",
170
+ "codename": "pa1q",
171
+ "market_name": "Samsung Galaxy S25",
172
+ "soc": "Qualcomm Snapdragon 8 Elite (SM8750)",
173
+ "gpu": "Qualcomm Adreno 830",
174
+ "android_version": 16,
175
+ "api_level": 36,
176
+ "loader_path": "/system/lib64/libvulkan.so",
177
+ "v10_matmul_max_error": 1.24e-05,
178
+ "status": "VERIFIED_PRODUCTION",
179
+ "active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
180
+ "subgroup_control_bypass": true
181
+ },
182
+ {
183
+ "model": "SM-S928N",
184
+ "codename": "e3q",
185
+ "market_name": "Samsung Galaxy S24 Ultra",
186
+ "soc": "Qualcomm Snapdragon 8 Gen 3 (SM8650-AC)",
187
+ "gpu": "Qualcomm Adreno 750",
188
+ "android_version": 14,
189
+ "api_level": 34,
190
+ "loader_path": "/system/lib64/libvulkan.so",
191
+ "v10_matmul_max_error": 1.35e-05,
192
+ "status": "VERIFIED_INHERITED",
193
+ "source_profile": "SM-S931N",
194
+ "active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
195
+ "subgroup_control_bypass": true
196
+ },
197
+ {
198
+ "model": "SM-S911N",
199
+ "codename": "dm1q",
200
+ "market_name": "Samsung Galaxy S23",
201
+ "soc": "Qualcomm Snapdragon 8 Gen 2 (SM8550-AC)",
202
+ "gpu": "Qualcomm Adreno 740",
203
+ "android_version": 14,
204
+ "api_level": 34,
205
+ "loader_path": "/system/lib64/libvulkan.so",
206
+ "v10_matmul_max_error": 1.40e-05,
207
+ "status": "VERIFIED_INHERITED",
208
+ "source_profile": "SM-S931N",
209
+ "active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
210
+ "subgroup_control_bypass": true
211
+ }
212
+ ]
213
+ }
@@ -0,0 +1,76 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "ameva-runtime"
7
+ version = "1.0.0"
8
+ description = "Unified Next-Gen Hardware Orchestration & AI Acceleration Runtime for Mobile & Edge"
9
+ readme = "README.pypi.md"
10
+ requires-python = ">=3.8"
11
+ license = { text = "Apache-2.0" }
12
+ authors = [{ name = "Eunho Kim", email = "contact@uno-km.com" }]
13
+ keywords = ["vulkan", "opencl", "npu", "cpu-neon", "android", "termux", "acceleration", "adreno", "mali", "hal", "ameva"]
14
+ classifiers = [
15
+ "Development Status :: 5 - Production/Stable",
16
+ "Intended Audience :: Developers",
17
+ "License :: OSI Approved :: Apache Software License",
18
+ "Operating System :: POSIX :: Linux",
19
+ "Operating System :: Android",
20
+ "Programming Language :: Python :: 3",
21
+ "Programming Language :: Python :: 3.8",
22
+ "Programming Language :: Python :: 3.9",
23
+ "Programming Language :: Python :: 3.10",
24
+ "Programming Language :: Python :: 3.11",
25
+ "Programming Language :: Python :: 3.12",
26
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
27
+ ]
28
+
29
+ [project.scripts]
30
+ ameva = "ameva_runtime.cli:main"
31
+ ameva-run = "ameva_runtime.cli:main"
32
+ ameva-gpu = "ameva_runtime.cli:legacy_gpu_main"
33
+
34
+ [project.urls]
35
+ Homepage = "https://uno-km.vercel.app/lib/vulkan/"
36
+ Repository = "https://github.com/uno-km/ameva-runtime"
37
+ Documentation = "https://uno-km.vercel.app/lib/vulkan/"
38
+
39
+ [project.optional-dependencies]
40
+ stt = ["termux-stt>=1.1.1"]
41
+ diffusion = ["termux-diffusion>=1.3.1"]
42
+ bitnet = ["termux-bitnet>=1.0.0"]
43
+ llamacpp = ["termux-llamacpp>=1.0.0"]
44
+ tts = ["termux-tts>=1.0.0"]
45
+ vision = ["termux-vision>=1.0.0"]
46
+ all = [
47
+ "termux-stt>=1.1.1",
48
+ "termux-diffusion>=1.3.1",
49
+ "termux-bitnet>=1.0.0",
50
+ "termux-llamacpp>=1.0.0",
51
+ "termux-tts>=1.0.0",
52
+ "termux-vision>=1.0.0",
53
+ ]
54
+
55
+ [tool.pytest.ini_options]
56
+ pythonpath = ["python"]
57
+ testpaths = ["python/tests"]
58
+
59
+ [tool.setuptools]
60
+ package-dir = {"" = "python"}
61
+
62
+ [tool.setuptools.packages.find]
63
+ where = ["python"]
64
+ exclude = ["tests*", "*tests*"]
65
+
66
+
67
+ [tool.setuptools.package-data]
68
+ "ameva_runtime" = [
69
+ "py.typed",
70
+ ]
71
+ "ameva_vulkan_runtime" = [
72
+ "profiles/*.json",
73
+ "lib/*.so",
74
+ "lib/*.dll",
75
+ "py.typed",
76
+ ]