ameva-runtime 2.5.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.
- ameva_runtime-2.5.0/LICENSE +17 -0
- ameva_runtime-2.5.0/MANIFEST.in +6 -0
- ameva_runtime-2.5.0/PKG-INFO +98 -0
- ameva_runtime-2.5.0/README.md +121 -0
- ameva_runtime-2.5.0/README.pypi.md +47 -0
- ameva_runtime-2.5.0/profiles/validated-vulkan-profiles.json +214 -0
- ameva_runtime-2.5.0/pyproject.toml +136 -0
- ameva_runtime-2.5.0/python/ameva_runtime/__init__.py +71 -0
- ameva_runtime-2.5.0/python/ameva_runtime/_version.py +8 -0
- ameva_runtime-2.5.0/python/ameva_runtime/adapters/__init__.py +51 -0
- ameva_runtime-2.5.0/python/ameva_runtime/adapters/base.py +247 -0
- ameva_runtime-2.5.0/python/ameva_runtime/adapters/bitnet.py +289 -0
- ameva_runtime-2.5.0/python/ameva_runtime/adapters/diffusion.py +226 -0
- ameva_runtime-2.5.0/python/ameva_runtime/adapters/llamacpp.py +303 -0
- ameva_runtime-2.5.0/python/ameva_runtime/adapters/stt.py +164 -0
- ameva_runtime-2.5.0/python/ameva_runtime/adapters/tts.py +232 -0
- ameva_runtime-2.5.0/python/ameva_runtime/adapters/vision.py +271 -0
- ameva_runtime-2.5.0/python/ameva_runtime/cli.py +343 -0
- ameva_runtime-2.5.0/python/ameva_runtime/core.py +329 -0
- ameva_runtime-2.5.0/python/ameva_runtime/detector.py +217 -0
- ameva_runtime-2.5.0/python/ameva_runtime/doctor.py +196 -0
- ameva_runtime-2.5.0/python/ameva_runtime/exceptions.py +90 -0
- ameva_runtime-2.5.0/python/ameva_runtime/installer.py +309 -0
- ameva_runtime-2.5.0/python/ameva_runtime/platform.py +87 -0
- ameva_runtime-2.5.0/python/ameva_runtime/protocol.py +136 -0
- ameva_runtime-2.5.0/python/ameva_runtime/router.py +301 -0
- ameva_runtime-2.5.0/python/ameva_runtime/vulkan/__init__.py +79 -0
- ameva_runtime-2.5.0/python/ameva_runtime/vulkan/adapters/__init__.py +34 -0
- ameva_runtime-2.5.0/python/ameva_runtime/vulkan/bindings.py +124 -0
- ameva_runtime-2.5.0/python/ameva_runtime/vulkan/cli.py +132 -0
- ameva_runtime-2.5.0/python/ameva_runtime/vulkan/core.py +272 -0
- ameva_runtime-2.5.0/python/ameva_runtime/vulkan/doctor.py +919 -0
- ameva_runtime-2.5.0/python/ameva_runtime/vulkan/exceptions.py +32 -0
- ameva_runtime-2.5.0/python/ameva_runtime/vulkan/platform.py +270 -0
- ameva_runtime-2.5.0/python/ameva_runtime/vulkan/profiles/__init__.py +0 -0
- ameva_runtime-2.5.0/python/ameva_runtime/vulkan/profiles/validated-vulkan-profiles.json +214 -0
- ameva_runtime-2.5.0/python/ameva_runtime/vulkan/protocol.py +22 -0
- ameva_runtime-2.5.0/python/ameva_runtime/vulkan/py.typed +0 -0
- ameva_runtime-2.5.0/python/ameva_runtime.egg-info/PKG-INFO +98 -0
- ameva_runtime-2.5.0/python/ameva_runtime.egg-info/SOURCES.txt +44 -0
- ameva_runtime-2.5.0/python/ameva_runtime.egg-info/dependency_links.txt +1 -0
- ameva_runtime-2.5.0/python/ameva_runtime.egg-info/entry_points.txt +6 -0
- ameva_runtime-2.5.0/python/ameva_runtime.egg-info/requires.txt +26 -0
- ameva_runtime-2.5.0/python/ameva_runtime.egg-info/top_level.txt +1 -0
- ameva_runtime-2.5.0/setup.cfg +4 -0
- ameva_runtime-2.5.0/setup.py +38 -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,98 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ameva-runtime
|
|
3
|
+
Version: 2.5.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-compute,mobile-gpu,hardware-acceleration,hardware-abstraction-layer,adreno-gpu,arm-mali,snapdragon-8-elite,exynos,termux,on-device-ai,edge-ai,tensor-acceleration,spir-v,compute-shaders,zero-silent-fallback,llamacpp,whisper-cpp,sherpa-onnx,stable-diffusion,vision-language-models,bitnet,gguf,ncnn,bionic-loader,arm64,aarch64,cgroup-management,cpu-neon,thermal-throttling,power-efficiency,smart-router,hardware-orchestration,multi-modal-ai,subgroup-operations,gemm-acceleration,mobile-vlm,speech-to-text,text-to-speech,image-generation,edge-inference,unprivileged-userspace,termux-wake-lock,phantom-process-killer,android-ai-runtime,valhall-gpu,adreno-830,mali-g68,ameva-foundation,uno-km,open-source-ai
|
|
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.2.0; extra == "stt"
|
|
30
|
+
Provides-Extra: diffusion
|
|
31
|
+
Requires-Dist: termux-diffusion>=1.5.0; extra == "diffusion"
|
|
32
|
+
Provides-Extra: bitnet
|
|
33
|
+
Requires-Dist: termux-bitnet>=1.2.0; extra == "bitnet"
|
|
34
|
+
Provides-Extra: llamacpp
|
|
35
|
+
Requires-Dist: termux-llamacpp>=1.3.0; extra == "llamacpp"
|
|
36
|
+
Provides-Extra: tts
|
|
37
|
+
Requires-Dist: termux-tts>=1.4.0; extra == "tts"
|
|
38
|
+
Provides-Extra: vision
|
|
39
|
+
Requires-Dist: termux-vision>=1.2.0; extra == "vision"
|
|
40
|
+
Provides-Extra: all
|
|
41
|
+
Requires-Dist: termux-stt>=1.2.0; extra == "all"
|
|
42
|
+
Requires-Dist: termux-diffusion>=1.5.0; extra == "all"
|
|
43
|
+
Requires-Dist: termux-bitnet>=1.2.0; extra == "all"
|
|
44
|
+
Requires-Dist: termux-llamacpp>=1.3.0; extra == "all"
|
|
45
|
+
Requires-Dist: termux-tts>=1.4.0; extra == "all"
|
|
46
|
+
Requires-Dist: termux-vision>=1.2.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
|
+
[](https://pypi.org/project/ameva-runtime/)
|
|
55
|
+
[](https://pypi.org/project/ameva-runtime/)
|
|
56
|
+
[](https://github.com/uno-km/ameva-runtime)
|
|
57
|
+
|
|
58
|
+
> Next-Gen Unified On-Device Hardware Orchestration & 6-Modality AI Acceleration Runtime (with BitNet 1.58-bit Vulkan Compute) for Mobile & Edge
|
|
59
|
+
|
|
60
|
+
## Installation
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
pip install ameva-runtime
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Quickstart
|
|
67
|
+
|
|
68
|
+
```python
|
|
69
|
+
import ameva_runtime as ameva
|
|
70
|
+
from ameva_runtime import vulkan
|
|
71
|
+
|
|
72
|
+
# Inspect hardware
|
|
73
|
+
profile = ameva.detect_hardware()
|
|
74
|
+
print(f"Target: {profile.soc_name} | {profile.gpu_vendor}")
|
|
75
|
+
|
|
76
|
+
# Run diagnostics
|
|
77
|
+
doc = vulkan.Doctor()
|
|
78
|
+
report = doc.run_self_test()
|
|
79
|
+
print(f"Passed: {report.passed_stages}/{report.total_stages}")
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Empirical Benchmarks
|
|
83
|
+
|
|
84
|
+
- **Galaxy S25 (Adreno 830)**:
|
|
85
|
+
- BitNet 1.58-bit LLM: **17.558 t/s (12.58x speedup)**, Prompt Eval **205.9 ms**.
|
|
86
|
+
- Qwen2.5-0.5B LLM: **35.80 t/s** (25/25 VRAM layers).
|
|
87
|
+
- Whisper STT: **4,401 ms**, TTS: RTF **0.264x** (medium) / **0.993x** (high-fp16).
|
|
88
|
+
- **Galaxy A35 (Mali-G68 MP5)**:
|
|
89
|
+
- BitNet 1.58-bit LLM: **3.471 t/s (5.94x speedup)**, Prompt Eval **1,552.8 ms**.
|
|
90
|
+
- Qwen2.5-0.5B LLM: **4.44 t/s** (+26.9% vs NEON).
|
|
91
|
+
- Whisper STT: **360.60s (2.26x speedup)**, TTS: RTF **1.146x**.
|
|
92
|
+
|
|
93
|
+
## Documentation
|
|
94
|
+
- [Official Documentation](https://uno-km.vercel.app/lib/vulkan/)
|
|
95
|
+
- [GitHub Repository](https://github.com/uno-km/ameva-runtime)
|
|
96
|
+
|
|
97
|
+
## License
|
|
98
|
+
Apache-2.0 License. Copyright (c) 2026 Eunho Kim (@uno-km).
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# AMEVA-Runtime
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/ameva-runtime/)
|
|
4
|
+
[](https://pypi.org/project/ameva-runtime/)
|
|
5
|
+
[](https://www.npmjs.com/package/@ameva/runtime)
|
|
6
|
+
[](https://github.com/uno-km/ameva-runtime/releases/tag/v2.5.0)
|
|
7
|
+
[](https://github.com/uno-km/ameva-runtime)
|
|
8
|
+
<img src="https://img.shields.io/badge/BitNet%201.58b-Vulkan%20Compute%20Accelerated-purple.svg?logo=vulkan&logoColor=white" alt="BitNet Vulkan">
|
|
9
|
+
|
|
10
|
+
> Next-Gen Unified On-Device Hardware Orchestration & 6-Modality AI Acceleration Runtime (with BitNet 1.58-bit Vulkan Compute) for Mobile & Edge
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Architecture & Overview
|
|
15
|
+
|
|
16
|
+
AMEVA-Runtime is a hardware abstraction layer (HAL) and compute orchestration engine engineered specifically for mobile ARM64 devices (Android Termux, Linux Edge). It continuously inspects underlying silicon topology (/dev/kgsl-3d0, /dev/mali0) to route tensor execution across Qualcomm Adreno, ARM Mali, and ARM Cortex CPU-NEON backends.
|
|
17
|
+
|
|
18
|
+
### 6-Modality Acceleration Matrix
|
|
19
|
+
|
|
20
|
+
| Modality | Engine Integration | Status (v2.5.0) | Hardware Acceleration Mechanism |
|
|
21
|
+
| :--- | :--- | :---: | :--- |
|
|
22
|
+
| **1. LLM (Text)** | Llama.cpp & Termux-BitNet (1.58-bit i2_s) | **Production (v2.5.0)** | Vulkan 25/25 layer VRAM offload (Adreno 35.8 t/s) & BitNet 1.58-bit full pipeline (Adreno 17.56 t/s, Mali 3.47 t/s) |
|
|
23
|
+
| **2. STT (Speech)** | Whisper.cpp (Large-v3-Turbo) | **Production** | Vulkan compute shader acceleration (Adreno 4.4s, Mali 2.26x speedup) |
|
|
24
|
+
| **3. TTS (Audio)** | Sherpa-NCNN / Piper | **Production** | Pure Vulkan GPU neural synthesis (Adreno RTF 0.264x, Mali RTF 1.146x) |
|
|
25
|
+
| **4. Vision (VLM)** | CLIP / MobileVLM / LLaVA | **In Development** | GGML Vulkan vision encoder tensor bindings |
|
|
26
|
+
| **5. Diffusion (Image)** | Stable Diffusion v1.5 / FLUX.1 | **In Development** | On-device Vulkan UNet & DiT tensor offload |
|
|
27
|
+
| **6. Train (Training)** | On-Device LoRA / QLoRA | **In Development** | Mobile Vulkan gradient descent backpropagation |
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Empirical Physical Device Benchmarks
|
|
32
|
+
|
|
33
|
+
Tested on physical devices running Android 16 under Termux ARM64:
|
|
34
|
+
|
|
35
|
+
### 1. LLM Generation (Qwen2.5-0.5B-Instruct Q4_K_M)
|
|
36
|
+
| Target Device | Hardware Architecture | Active Backend | Layers in VRAM | Generation Speed | Prompt Processing | Speedup |
|
|
37
|
+
| :--- | :--- | :---: | :---: | :---: | :---: | :---: |
|
|
38
|
+
| **Galaxy S25** | Snapdragon 8 Elite / Adreno 830 | Vulkan 1.3 | **25/25 (100%)** | **35.80 t/s** (27.9 ms/t) | 4.53 t/s | **35.8x (vs CPU)** |
|
|
39
|
+
| **Galaxy A35** | Exynos 1380 / ARM Mali-G68 MP5 | Vulkan 1.3 | **25/25 (100%)** | **4.44 t/s** (225 ms/t) | 6.12 t/s | **+26.9% (vs NEON)** |
|
|
40
|
+
| **Galaxy A35** | Cortex-A78 CPU-NEON (3 Threads) | CPU-NEON | 0/25 | 3.55 t/s (281 ms/t) | 8.05 t/s | Baseline |
|
|
41
|
+
|
|
42
|
+
### 2. Speech-to-Text (Whisper Large-v3-Turbo Q5_0, 548MB)
|
|
43
|
+
| Target Device | Hardware Architecture | Backend Mode | Latency (1-min audio) | GPU Load | CPU Load | Speedup |
|
|
44
|
+
| :--- | :--- | :---: | :---: | :---: | :---: | :---: |
|
|
45
|
+
| **Galaxy A35** | Exynos 1380 / Mali-G68 MP5 | Vulkan GPU | **360.60 s (6m 00s)** | **949 MHz (100%)** | 20~30% | **2.26x (56% time saved)** |
|
|
46
|
+
| **Galaxy A35** | Cortex-A78 x4 Cores | CPU-NEON | 816.48 s (13m 36s) | 0% | 291% | Baseline |
|
|
47
|
+
|
|
48
|
+
### 3. Text-to-Speech (Termux-TTS v1.3.0 Vulkan)
|
|
49
|
+
| Target Device | Hardware Architecture | Model Tier | Audio Length | Compute Time | Real-Time Factor (RTF) | Status |
|
|
50
|
+
| :--- | :--- | :--- | :---: | :---: | :---: | :---: |
|
|
51
|
+
| **Galaxy S25** | Snapdragon 8 Elite / Adreno 830 | `lessac-high-fp16` | 6.70 s | **6.65 s** | **0.993x** | Real-time Studio |
|
|
52
|
+
| **Galaxy S25** | Snapdragon 8 Elite / Adreno 830 | `lessac-medium` | 4.59 s | **1.21 s** | **0.264x** | 3.79x Faster than RT |
|
|
53
|
+
| **Galaxy A35** | Exynos 1380 / Mali-G68 MP5 | `lessac-medium` | 4.52 s | **5.18 s** | **1.146x** | Validated |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
### 4. BitNet 1.58-bit LLM (Microsoft BitNet b1.58 2B-4T i2_s)
|
|
58
|
+
| Target Device | Hardware Architecture | Active Backend | Generation Speed | Prompt Latency | Speedup | Status |
|
|
59
|
+
| :--- | :--- | :---: | :---: | :---: | :---: | :---: |
|
|
60
|
+
| **Galaxy S25** | Snapdragon 8 Elite / Adreno 830 | **AMEVA Vulkan GPU** | **17.558 t/s** | **205.9 ms** | **12.58x** | **Verified (Ground Truth)** |
|
|
61
|
+
| Galaxy S25 | Snapdragon 8 Elite / Oryon CPU | Native CPU (4 Threads) | 1.396 t/s | 2,041.0 ms | 1.00x | Baseline |
|
|
62
|
+
| **Galaxy A35** | Exynos 1380 / Mali-G68 MP5 | **AMEVA Vulkan GPU** | **3.471 t/s** | **1,552.8 ms** | **5.94x** | **Verified (Ground Truth)** |
|
|
63
|
+
| Galaxy A35 | Exynos 1380 / Cortex-A78 CPU | Native CPU (4 Threads) | 0.584 t/s | 8,775.0 ms | 1.00x | Baseline |
|
|
64
|
+
|
|
65
|
+
## Root-Cause Driver Solutions
|
|
66
|
+
|
|
67
|
+
1. **ARM Mali-G68 Valhall Integer Truncation**: Enforced medium tile matmul kernel dispatch (`loadstride_b = 4 > 0`), permanently eliminating shader zero-stride infinite loops on subgroup-16 hardware.
|
|
68
|
+
2. **Qualcomm Adreno 830 JIT Register Bug**: Bounded vector column specialization (`mul_mat_vec_max_cols = 2`), preventing compiler crash `VK_ERROR_UNKNOWN (-13)`.
|
|
69
|
+
3. **Zero-Silent-Fallback**: Guaranteed fail-fast architecture without silent CPU degradation upon GPU driver faults.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Installation
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# Python SDK
|
|
77
|
+
pip install ameva-runtime
|
|
78
|
+
|
|
79
|
+
# Node.js / TypeScript
|
|
80
|
+
npm install @ameva/runtime
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Quickstart
|
|
86
|
+
|
|
87
|
+
### Python SDK
|
|
88
|
+
```python
|
|
89
|
+
import ameva_runtime as ameva
|
|
90
|
+
from ameva_runtime import vulkan
|
|
91
|
+
|
|
92
|
+
# 1. Inspect on-device silicon topology
|
|
93
|
+
profile = ameva.detect_hardware()
|
|
94
|
+
print(f"SoC: {profile.soc_name} | GPU: {profile.gpu_vendor}")
|
|
95
|
+
|
|
96
|
+
# 2. Run hardware self-test
|
|
97
|
+
doc = vulkan.Doctor()
|
|
98
|
+
report = doc.run_self_test()
|
|
99
|
+
print(f"GPU: {report.device_name} (Passed: {report.passed_stages}/{report.total_stages})")
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Node.js / TypeScript
|
|
103
|
+
```typescript
|
|
104
|
+
import { Doctor, createContext } from '@ameva/runtime';
|
|
105
|
+
|
|
106
|
+
const doc = new Doctor();
|
|
107
|
+
const report = await doc.runSelfTest();
|
|
108
|
+
console.log(`Vulkan GPU: ${report.deviceName}`);
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Official Documentation & Benchmarks
|
|
114
|
+
- [Official Architecture & API Reference](https://uno-km.vercel.app/lib/vulkan/)
|
|
115
|
+
- [Ecosystem Metrics & Registry Stats](https://uno-km.vercel.app/foundation/metrics)
|
|
116
|
+
- [AMEVA Open-Source Foundation Portal](https://uno-km.vercel.app/foundation/index.html)
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## License
|
|
121
|
+
Licensed under the Apache-2.0 License. Copyright (c) 2026 Eunho Kim ([@uno-km](https://github.com/uno-km)).
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# AMEVA-Runtime (Python)
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/ameva-runtime/)
|
|
4
|
+
[](https://pypi.org/project/ameva-runtime/)
|
|
5
|
+
[](https://github.com/uno-km/ameva-runtime)
|
|
6
|
+
|
|
7
|
+
> Next-Gen Unified On-Device Hardware Orchestration & 6-Modality AI Acceleration Runtime (with BitNet 1.58-bit Vulkan Compute) for Mobile & Edge
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
pip install ameva-runtime
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Quickstart
|
|
16
|
+
|
|
17
|
+
```python
|
|
18
|
+
import ameva_runtime as ameva
|
|
19
|
+
from ameva_runtime import vulkan
|
|
20
|
+
|
|
21
|
+
# Inspect hardware
|
|
22
|
+
profile = ameva.detect_hardware()
|
|
23
|
+
print(f"Target: {profile.soc_name} | {profile.gpu_vendor}")
|
|
24
|
+
|
|
25
|
+
# Run diagnostics
|
|
26
|
+
doc = vulkan.Doctor()
|
|
27
|
+
report = doc.run_self_test()
|
|
28
|
+
print(f"Passed: {report.passed_stages}/{report.total_stages}")
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Empirical Benchmarks
|
|
32
|
+
|
|
33
|
+
- **Galaxy S25 (Adreno 830)**:
|
|
34
|
+
- BitNet 1.58-bit LLM: **17.558 t/s (12.58x speedup)**, Prompt Eval **205.9 ms**.
|
|
35
|
+
- Qwen2.5-0.5B LLM: **35.80 t/s** (25/25 VRAM layers).
|
|
36
|
+
- Whisper STT: **4,401 ms**, TTS: RTF **0.264x** (medium) / **0.993x** (high-fp16).
|
|
37
|
+
- **Galaxy A35 (Mali-G68 MP5)**:
|
|
38
|
+
- BitNet 1.58-bit LLM: **3.471 t/s (5.94x speedup)**, Prompt Eval **1,552.8 ms**.
|
|
39
|
+
- Qwen2.5-0.5B LLM: **4.44 t/s** (+26.9% vs NEON).
|
|
40
|
+
- Whisper STT: **360.60s (2.26x speedup)**, TTS: RTF **1.146x**.
|
|
41
|
+
|
|
42
|
+
## Documentation
|
|
43
|
+
- [Official Documentation](https://uno-km.vercel.app/lib/vulkan/)
|
|
44
|
+
- [GitHub Repository](https://github.com/uno-km/ameva-runtime)
|
|
45
|
+
|
|
46
|
+
## License
|
|
47
|
+
Apache-2.0 License. Copyright (c) 2026 Eunho Kim (@uno-km).
|
|
@@ -0,0 +1,214 @@
|
|
|
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
|
+
"enforce_medium_matmul": true
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"model": "SM-A546N",
|
|
22
|
+
"codename": "a54x",
|
|
23
|
+
"market_name": "Samsung Galaxy A54 5G",
|
|
24
|
+
"soc": "Exynos 1380 (s5e8835)",
|
|
25
|
+
"gpu": "ARM Mali-G68 MP5",
|
|
26
|
+
"android_version": 14,
|
|
27
|
+
"api_level": 34,
|
|
28
|
+
"loader_path": "/system/lib64/libvulkan.so",
|
|
29
|
+
"v10_matmul_max_error": 9.39369e-05,
|
|
30
|
+
"status": "VERIFIED_INHERITED",
|
|
31
|
+
"source_profile": "SM-A356N",
|
|
32
|
+
"active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
|
|
33
|
+
"memory_alignment_bytes": 128
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"model": "SM-M546B",
|
|
37
|
+
"codename": "m54x",
|
|
38
|
+
"market_name": "Samsung Galaxy M54 5G",
|
|
39
|
+
"soc": "Exynos 1380 (s5e8835)",
|
|
40
|
+
"gpu": "ARM Mali-G68 MP5",
|
|
41
|
+
"android_version": 14,
|
|
42
|
+
"api_level": 34,
|
|
43
|
+
"loader_path": "/system/lib64/libvulkan.so",
|
|
44
|
+
"v10_matmul_max_error": 9.39369e-05,
|
|
45
|
+
"status": "VERIFIED_INHERITED",
|
|
46
|
+
"source_profile": "SM-A356N",
|
|
47
|
+
"active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
|
|
48
|
+
"memory_alignment_bytes": 128
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"model": "SM-A536N",
|
|
52
|
+
"codename": "a53x",
|
|
53
|
+
"market_name": "Samsung Galaxy A53 5G",
|
|
54
|
+
"soc": "Exynos 1280 (s5e8825)",
|
|
55
|
+
"gpu": "ARM Mali-G68 MP4",
|
|
56
|
+
"android_version": 14,
|
|
57
|
+
"api_level": 34,
|
|
58
|
+
"loader_path": "/system/lib64/libvulkan.so",
|
|
59
|
+
"v10_matmul_max_error": 9.45e-05,
|
|
60
|
+
"status": "VERIFIED_INHERITED",
|
|
61
|
+
"source_profile": "SM-A356N",
|
|
62
|
+
"active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
|
|
63
|
+
"memory_alignment_bytes": 128
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"model": "SM-A336N",
|
|
67
|
+
"codename": "a33x",
|
|
68
|
+
"market_name": "Samsung Galaxy A33 5G",
|
|
69
|
+
"soc": "Exynos 1280 (s5e8825)",
|
|
70
|
+
"gpu": "ARM Mali-G68 MP4",
|
|
71
|
+
"android_version": 14,
|
|
72
|
+
"api_level": 34,
|
|
73
|
+
"loader_path": "/system/lib64/libvulkan.so",
|
|
74
|
+
"v10_matmul_max_error": 9.45e-05,
|
|
75
|
+
"status": "VERIFIED_INHERITED",
|
|
76
|
+
"source_profile": "SM-A356N",
|
|
77
|
+
"active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
|
|
78
|
+
"memory_alignment_bytes": 128
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"model": "SM-G991N",
|
|
82
|
+
"codename": "o1s",
|
|
83
|
+
"market_name": "Samsung Galaxy S21 5G",
|
|
84
|
+
"soc": "Exynos 2100",
|
|
85
|
+
"gpu": "ARM Mali-G78 MP14",
|
|
86
|
+
"android_version": 15,
|
|
87
|
+
"api_level": 35,
|
|
88
|
+
"loader_path": "/system/lib64/libvulkan.so",
|
|
89
|
+
"v10_matmul_max_error": 9.39e-05,
|
|
90
|
+
"status": "VERIFIED_PRODUCTION",
|
|
91
|
+
"active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
|
|
92
|
+
"memory_alignment_bytes": 128
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"model": "SM-G996N",
|
|
96
|
+
"codename": "t2s",
|
|
97
|
+
"market_name": "Samsung Galaxy S21+ 5G",
|
|
98
|
+
"soc": "Exynos 2100",
|
|
99
|
+
"gpu": "ARM Mali-G78 MP14",
|
|
100
|
+
"android_version": 15,
|
|
101
|
+
"api_level": 35,
|
|
102
|
+
"loader_path": "/system/lib64/libvulkan.so",
|
|
103
|
+
"v10_matmul_max_error": 9.39e-05,
|
|
104
|
+
"status": "VERIFIED_INHERITED",
|
|
105
|
+
"source_profile": "SM-G991N",
|
|
106
|
+
"active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
|
|
107
|
+
"memory_alignment_bytes": 128
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"model": "SM-G998N",
|
|
111
|
+
"codename": "p3s",
|
|
112
|
+
"market_name": "Samsung Galaxy S21 Ultra 5G",
|
|
113
|
+
"soc": "Exynos 2100",
|
|
114
|
+
"gpu": "ARM Mali-G78 MP14",
|
|
115
|
+
"android_version": 15,
|
|
116
|
+
"api_level": 35,
|
|
117
|
+
"loader_path": "/system/lib64/libvulkan.so",
|
|
118
|
+
"v10_matmul_max_error": 9.39e-05,
|
|
119
|
+
"status": "VERIFIED_INHERITED",
|
|
120
|
+
"source_profile": "SM-G991N",
|
|
121
|
+
"active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
|
|
122
|
+
"memory_alignment_bytes": 128
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"model": "SM-G981N",
|
|
126
|
+
"codename": "z3s",
|
|
127
|
+
"market_name": "Samsung Galaxy S20 5G (Exynos)",
|
|
128
|
+
"soc": "Exynos 990",
|
|
129
|
+
"gpu": "ARM Mali-G77 MP11",
|
|
130
|
+
"android_version": 13,
|
|
131
|
+
"api_level": 33,
|
|
132
|
+
"loader_path": "/system/lib64/libvulkan.so",
|
|
133
|
+
"v10_matmul_max_error": 1.12e-04,
|
|
134
|
+
"status": "VERIFIED_INHERITED",
|
|
135
|
+
"source_profile": "SM-G991N",
|
|
136
|
+
"active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
|
|
137
|
+
"memory_alignment_bytes": 128
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"model": "SM-G986N",
|
|
141
|
+
"codename": "y2s",
|
|
142
|
+
"market_name": "Samsung Galaxy S20+ 5G (Exynos)",
|
|
143
|
+
"soc": "Exynos 990",
|
|
144
|
+
"gpu": "ARM Mali-G77 MP11",
|
|
145
|
+
"android_version": 13,
|
|
146
|
+
"api_level": 33,
|
|
147
|
+
"loader_path": "/system/lib64/libvulkan.so",
|
|
148
|
+
"v10_matmul_max_error": 1.12e-04,
|
|
149
|
+
"status": "VERIFIED_INHERITED",
|
|
150
|
+
"source_profile": "SM-G991N",
|
|
151
|
+
"active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
|
|
152
|
+
"memory_alignment_bytes": 128
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"model": "SM-G988N",
|
|
156
|
+
"codename": "z3s",
|
|
157
|
+
"market_name": "Samsung Galaxy S20 Ultra 5G (Exynos)",
|
|
158
|
+
"soc": "Exynos 990",
|
|
159
|
+
"gpu": "ARM Mali-G77 MP11",
|
|
160
|
+
"android_version": 13,
|
|
161
|
+
"api_level": 33,
|
|
162
|
+
"loader_path": "/system/lib64/libvulkan.so",
|
|
163
|
+
"v10_matmul_max_error": 1.12e-04,
|
|
164
|
+
"status": "VERIFIED_INHERITED",
|
|
165
|
+
"source_profile": "SM-G991N",
|
|
166
|
+
"active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
|
|
167
|
+
"memory_alignment_bytes": 128
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"model": "SM-S931N",
|
|
171
|
+
"codename": "pa1q",
|
|
172
|
+
"market_name": "Samsung Galaxy S25",
|
|
173
|
+
"soc": "Qualcomm Snapdragon 8 Elite (SM8750)",
|
|
174
|
+
"gpu": "Qualcomm Adreno 830",
|
|
175
|
+
"android_version": 16,
|
|
176
|
+
"api_level": 36,
|
|
177
|
+
"loader_path": "/system/lib64/libvulkan.so",
|
|
178
|
+
"v10_matmul_max_error": 1.24e-05,
|
|
179
|
+
"status": "VERIFIED_PRODUCTION",
|
|
180
|
+
"active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
|
|
181
|
+
"subgroup_control_bypass": true
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"model": "SM-S928N",
|
|
185
|
+
"codename": "e3q",
|
|
186
|
+
"market_name": "Samsung Galaxy S24 Ultra",
|
|
187
|
+
"soc": "Qualcomm Snapdragon 8 Gen 3 (SM8650-AC)",
|
|
188
|
+
"gpu": "Qualcomm Adreno 750",
|
|
189
|
+
"android_version": 14,
|
|
190
|
+
"api_level": 34,
|
|
191
|
+
"loader_path": "/system/lib64/libvulkan.so",
|
|
192
|
+
"v10_matmul_max_error": 1.35e-05,
|
|
193
|
+
"status": "VERIFIED_INHERITED",
|
|
194
|
+
"source_profile": "SM-S931N",
|
|
195
|
+
"active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
|
|
196
|
+
"subgroup_control_bypass": true
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"model": "SM-S911N",
|
|
200
|
+
"codename": "dm1q",
|
|
201
|
+
"market_name": "Samsung Galaxy S23",
|
|
202
|
+
"soc": "Qualcomm Snapdragon 8 Gen 2 (SM8550-AC)",
|
|
203
|
+
"gpu": "Qualcomm Adreno 740",
|
|
204
|
+
"android_version": 14,
|
|
205
|
+
"api_level": 34,
|
|
206
|
+
"loader_path": "/system/lib64/libvulkan.so",
|
|
207
|
+
"v10_matmul_max_error": 1.40e-05,
|
|
208
|
+
"status": "VERIFIED_INHERITED",
|
|
209
|
+
"source_profile": "SM-S931N",
|
|
210
|
+
"active_modalities": ["stt", "diffusion", "vision", "bitnet", "llamacpp", "tts", "train"],
|
|
211
|
+
"subgroup_control_bypass": true
|
|
212
|
+
}
|
|
213
|
+
]
|
|
214
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "ameva-runtime"
|
|
7
|
+
dynamic = ["version"]
|
|
8
|
+
description = "Unified Next-Gen Hardware Orchestration & AI Acceleration Runtime for Mobile & Edge"
|
|
9
|
+
|
|
10
|
+
readme = "README.pypi.md"
|
|
11
|
+
requires-python = ">=3.8"
|
|
12
|
+
license = { text = "Apache-2.0" }
|
|
13
|
+
authors = [{ name = "Eunho Kim", email = "contact@uno-km.com" }]
|
|
14
|
+
keywords = [
|
|
15
|
+
"vulkan-compute",
|
|
16
|
+
"mobile-gpu",
|
|
17
|
+
"hardware-acceleration",
|
|
18
|
+
"hardware-abstraction-layer",
|
|
19
|
+
"adreno-gpu",
|
|
20
|
+
"arm-mali",
|
|
21
|
+
"snapdragon-8-elite",
|
|
22
|
+
"exynos",
|
|
23
|
+
"termux",
|
|
24
|
+
"on-device-ai",
|
|
25
|
+
"edge-ai",
|
|
26
|
+
"tensor-acceleration",
|
|
27
|
+
"spir-v",
|
|
28
|
+
"compute-shaders",
|
|
29
|
+
"zero-silent-fallback",
|
|
30
|
+
"llamacpp",
|
|
31
|
+
"whisper-cpp",
|
|
32
|
+
"sherpa-onnx",
|
|
33
|
+
"stable-diffusion",
|
|
34
|
+
"vision-language-models",
|
|
35
|
+
"bitnet",
|
|
36
|
+
"gguf",
|
|
37
|
+
"ncnn",
|
|
38
|
+
"bionic-loader",
|
|
39
|
+
"arm64",
|
|
40
|
+
"aarch64",
|
|
41
|
+
"cgroup-management",
|
|
42
|
+
"cpu-neon",
|
|
43
|
+
"thermal-throttling",
|
|
44
|
+
"power-efficiency",
|
|
45
|
+
"smart-router",
|
|
46
|
+
"hardware-orchestration",
|
|
47
|
+
"multi-modal-ai",
|
|
48
|
+
"subgroup-operations",
|
|
49
|
+
"gemm-acceleration",
|
|
50
|
+
"mobile-vlm",
|
|
51
|
+
"speech-to-text",
|
|
52
|
+
"text-to-speech",
|
|
53
|
+
"image-generation",
|
|
54
|
+
"edge-inference",
|
|
55
|
+
"unprivileged-userspace",
|
|
56
|
+
"termux-wake-lock",
|
|
57
|
+
"phantom-process-killer",
|
|
58
|
+
"android-ai-runtime",
|
|
59
|
+
"valhall-gpu",
|
|
60
|
+
"adreno-830",
|
|
61
|
+
"mali-g68",
|
|
62
|
+
"ameva-foundation",
|
|
63
|
+
"uno-km",
|
|
64
|
+
"open-source-ai"
|
|
65
|
+
]
|
|
66
|
+
classifiers = [
|
|
67
|
+
"Development Status :: 5 - Production/Stable",
|
|
68
|
+
"Intended Audience :: Developers",
|
|
69
|
+
"License :: OSI Approved :: Apache Software License",
|
|
70
|
+
"Operating System :: POSIX :: Linux",
|
|
71
|
+
"Operating System :: Android",
|
|
72
|
+
"Programming Language :: Python :: 3",
|
|
73
|
+
"Programming Language :: Python :: 3.8",
|
|
74
|
+
"Programming Language :: Python :: 3.9",
|
|
75
|
+
"Programming Language :: Python :: 3.10",
|
|
76
|
+
"Programming Language :: Python :: 3.11",
|
|
77
|
+
"Programming Language :: Python :: 3.12",
|
|
78
|
+
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
79
|
+
]
|
|
80
|
+
|
|
81
|
+
[project.scripts]
|
|
82
|
+
ameva = "ameva_runtime.cli:main"
|
|
83
|
+
ameva-run = "ameva_runtime.cli:main"
|
|
84
|
+
ameva-gpu = "ameva_runtime.cli:legacy_gpu_main"
|
|
85
|
+
ameva-doctor = "ameva_runtime.cli:main"
|
|
86
|
+
ameva-vulkan = "ameva_runtime.cli:main"
|
|
87
|
+
|
|
88
|
+
[project.urls]
|
|
89
|
+
Homepage = "https://uno-km.vercel.app/lib/vulkan/"
|
|
90
|
+
Repository = "https://github.com/uno-km/ameva-runtime"
|
|
91
|
+
Documentation = "https://uno-km.vercel.app/lib/vulkan/"
|
|
92
|
+
|
|
93
|
+
[project.optional-dependencies]
|
|
94
|
+
stt = ["termux-stt>=1.2.0"]
|
|
95
|
+
diffusion = ["termux-diffusion>=1.5.0"]
|
|
96
|
+
bitnet = ["termux-bitnet>=1.2.0"]
|
|
97
|
+
llamacpp = ["termux-llamacpp>=1.3.0"]
|
|
98
|
+
tts = ["termux-tts>=1.4.0"]
|
|
99
|
+
vision = ["termux-vision>=1.2.0"]
|
|
100
|
+
all = [
|
|
101
|
+
"termux-stt>=1.2.0",
|
|
102
|
+
"termux-diffusion>=1.5.0",
|
|
103
|
+
"termux-bitnet>=1.2.0",
|
|
104
|
+
"termux-llamacpp>=1.3.0",
|
|
105
|
+
"termux-tts>=1.4.0",
|
|
106
|
+
"termux-vision>=1.2.0",
|
|
107
|
+
]
|
|
108
|
+
|
|
109
|
+
[tool.pytest.ini_options]
|
|
110
|
+
pythonpath = ["python"]
|
|
111
|
+
testpaths = ["python/tests"]
|
|
112
|
+
|
|
113
|
+
[tool.setuptools]
|
|
114
|
+
package-dir = {"" = "python"}
|
|
115
|
+
|
|
116
|
+
[tool.setuptools.packages.find]
|
|
117
|
+
where = ["python"]
|
|
118
|
+
include = ["ameva_runtime*"]
|
|
119
|
+
exclude = ["tests*", "*tests*"]
|
|
120
|
+
|
|
121
|
+
[tool.setuptools.dynamic]
|
|
122
|
+
version = {attr = "ameva_runtime._version.__version__"}
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
[tool.setuptools.package-data]
|
|
128
|
+
"ameva_runtime" = [
|
|
129
|
+
"py.typed",
|
|
130
|
+
]
|
|
131
|
+
"ameva_runtime.vulkan" = [
|
|
132
|
+
"profiles/*.json",
|
|
133
|
+
"lib/*.so",
|
|
134
|
+
"lib/*.dll",
|
|
135
|
+
"py.typed",
|
|
136
|
+
]
|