yongqiang commited on
Commit ·
6623625
1
Parent(s): d2d97a6
Refresh nano retrieval runtime package
Browse files- README.md +33 -15
- bin/axllm +2 -2
- config.json +2 -0
- jina_v5_omni_nano_audio_8s.axmodel +2 -2
README.md
CHANGED
|
@@ -49,11 +49,12 @@ Minimum board resources for the default package configuration:
|
|
| 49 |
| Item | Value |
|
| 50 |
|---|---:|
|
| 51 |
| Additional CMM required | `1191296 KB` (`~1.14 GiB`) |
|
| 52 |
-
| Linux RAM by process VmRSS | `
|
| 53 |
-
| Linux RAM by process PSS | `
|
| 54 |
-
| Process private
|
| 55 |
-
| Process
|
| 56 |
-
|
|
|
|
|
| 57 |
|
| 58 |
If both packaged audio profiles are enabled by adding `filename_audio_encoder_axmodel_long` back to `config.json`, the board resource profile is:
|
| 59 |
|
|
@@ -113,19 +114,34 @@ All values below were re-measured on the validated AX650 / NPU3 board.
|
|
| 113 |
Each number is the average of `3` repeated direct-runtime runs after model initialization.
|
| 114 |
These measurements exclude network overhead and client-side preprocessing outside the packaged runtime path.
|
| 115 |
|
| 116 |
-
| Scenario | Prompt |
|
| 117 |
-
|---|---|---:|---:|---:|---:|
|
| 118 |
-
| Text document | `document` | `19`
|
| 119 |
-
| Text query | `query` | `12`
|
| 120 |
-
| Image | `query` | `64`
|
| 121 |
-
| Video (`3` frames) | `query` | `192`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 122 |
|
| 123 |
Audio is different on this `3 GB` board:
|
| 124 |
|
| 125 |
- the packaged `axllm serve` path is validated and returns correct audio embeddings
|
|
|
|
| 126 |
- but the current Python direct-benchmark implementation was OOM-killed during this measurement pass
|
| 127 |
- that failure is a board-side benchmark-method issue in Linux userspace memory, not a proof that the packaged AX650 runtime path cannot run audio embeddings
|
| 128 |
-
- because of that, this README does not publish a misleading
|
| 129 |
|
| 130 |
## Current Board Precision
|
| 131 |
|
|
@@ -136,7 +152,7 @@ Current board-side `axllm serve` precision against the packaged Hugging Face ref
|
|
| 136 |
| Text | `embedding_doc` | `[1, 768]` | `0.999655` |
|
| 137 |
| Text | `red_planet_query` | `[1, 768]` | `0.999539` |
|
| 138 |
| Image | `vision_sample` | `[1, 768]` | `0.993549` |
|
| 139 |
-
| Audio | `audio_test_chunk0_8s_wav` | `[1, 768]` | `0.
|
| 140 |
| Video | `video_visual_red_panda_openai_mp4` | `[1, 768]` | `0.997040` |
|
| 141 |
|
| 142 |
Key observations:
|
|
@@ -145,8 +161,10 @@ Key observations:
|
|
| 145 |
- The previous `embedding_doc = 0.9604` result was traced to an LLM build config issue, not to the OpenAI-compatible service wrapper.
|
| 146 |
- `jina-embeddings-v5-omni-nano` uses `text_config.rope_parameters.rope_theta = 1000000.0`; the earlier `llama` build path silently fell back to `10000.0`.
|
| 147 |
- The current LLM AXModels were rebuilt after flattening `rope_theta` into `text_config.rope_theta` for `pulsar2 llm_build`.
|
| 148 |
-
- With the corrected RoPE base, the default packaged precision cases are in the `0.
|
| 149 |
-
- The default `8s` audio profile
|
|
|
|
|
|
|
| 150 |
The previous `5s` audio profile produced only about `0.94` cosine after LLM prefill, so it is not used as a default packaged precision case.
|
| 151 |
|
| 152 |
## Board Precision Validation Flow
|
|
|
|
| 49 |
| Item | Value |
|
| 50 |
|---|---:|
|
| 51 |
| Additional CMM required | `1191296 KB` (`~1.14 GiB`) |
|
| 52 |
+
| Linux RAM by process VmRSS | `84352 KB` (`~82 MiB`) |
|
| 53 |
+
| Linux RAM by process PSS | `83369 KB` (`~81 MiB`) |
|
| 54 |
+
| Process private memory | `83048 KB` (`~81 MiB`) |
|
| 55 |
+
| Process anonymous RSS | `79456 KB` (`~78 MiB`) |
|
| 56 |
+
| Process VmSize | `1572856 KB` |
|
| 57 |
+
| `/v1/models` ready time | `15 s` |
|
| 58 |
|
| 59 |
If both packaged audio profiles are enabled by adding `filename_audio_encoder_axmodel_long` back to `config.json`, the board resource profile is:
|
| 60 |
|
|
|
|
| 114 |
Each number is the average of `3` repeated direct-runtime runs after model initialization.
|
| 115 |
These measurements exclude network overhead and client-side preprocessing outside the packaged runtime path.
|
| 116 |
|
| 117 |
+
| Scenario | Prompt | LLM input tokens | Soft tokens | Output shape | Media encoder / prepare | Standalone encoder axmodel | Prepare overhead | LLM prefill | Runtime total |
|
| 118 |
+
|---|---|---:|---:|---:|---:|---:|---:|---:|---:|
|
| 119 |
+
| Text document | `document` | `19` | `-` | `[1, 768]` | `-` | `-` | `-` | `68.88 ms` | `68.88 ms` |
|
| 120 |
+
| Text query | `query` | `12` | `-` | `[1, 768]` | `-` | `-` | `-` | `61.59 ms` | `61.59 ms` |
|
| 121 |
+
| Image | `query` | `91` | `64` | `[1, 768]` | `17.24 ms` | `16.42 ms` | `0.82 ms` | `65.66 ms` | `82.91 ms` |
|
| 122 |
+
| Video (`3` frames) | `query` | `219` | `192` | `[1, 768]` | `52.49 ms` | `49.25 ms` | `3.24 ms` | `148.40 ms` | `200.89 ms` |
|
| 123 |
+
|
| 124 |
+
Standalone encoder `.axmodel` latency was measured with `ax_run_model -r 50 -w 10` on AX650:
|
| 125 |
+
|
| 126 |
+
| Encoder axmodel | Output tokens | CMM size | Pulsar2 version | Min | Max | Avg |
|
| 127 |
+
|---|---:|---:|---|---:|---:|---:|
|
| 128 |
+
| `jina_v5_omni_nano_vision_256x256.axmodel` | `64` | `109390730 Bytes` | `6.0 563427a6` | `16.343 ms` | `16.494 ms` | `16.416 ms` |
|
| 129 |
+
| `jina_v5_omni_nano_audio_8s.axmodel` | `200` | `724467726 Bytes` | `6.0 563427a6` | `209.688 ms` | `210.452 ms` | `210.087 ms` |
|
| 130 |
+
| `jina_v5_omni_nano_audio_30s.axmodel` | `750` | `1030304014 Bytes` | `6.0 563427a6` | `3783.250 ms` | `3801.552 ms` | `3792.821 ms` |
|
| 131 |
+
|
| 132 |
+
`Media encoder / prepare` is the runtime media path before LLM prefill.
|
| 133 |
+
For the direct-runtime rows above, image/video inputs were already prepared for the benchmark path, so the measured prepare overhead is small.
|
| 134 |
+
`Standalone encoder axmodel` is the bare encoder model latency reported by `ax_run_model`; it excludes real media decode, preprocessing, tokenizer work, and LLM input assembly.
|
| 135 |
+
For video rows, `Standalone encoder axmodel` is `per-frame vision encoder latency x 3`.
|
| 136 |
+
`Prepare overhead` is `Media encoder / prepare - Standalone encoder axmodel`.
|
| 137 |
|
| 138 |
Audio is different on this `3 GB` board:
|
| 139 |
|
| 140 |
- the packaged `axllm serve` path is validated and returns correct audio embeddings
|
| 141 |
+
- standalone `8s` and `30s` audio encoder `.axmodel` latency is published in the table above
|
| 142 |
- but the current Python direct-benchmark implementation was OOM-killed during this measurement pass
|
| 143 |
- that failure is a board-side benchmark-method issue in Linux userspace memory, not a proof that the packaged AX650 runtime path cannot run audio embeddings
|
| 144 |
+
- because of that, this README does not publish a misleading full audio `prepare + LLM prefill` split-latency number yet
|
| 145 |
|
| 146 |
## Current Board Precision
|
| 147 |
|
|
|
|
| 152 |
| Text | `embedding_doc` | `[1, 768]` | `0.999655` |
|
| 153 |
| Text | `red_planet_query` | `[1, 768]` | `0.999539` |
|
| 154 |
| Image | `vision_sample` | `[1, 768]` | `0.993549` |
|
| 155 |
+
| Audio | `audio_test_chunk0_8s_wav` | `[1, 768]` | `0.989693` |
|
| 156 |
| Video | `video_visual_red_panda_openai_mp4` | `[1, 768]` | `0.997040` |
|
| 157 |
|
| 158 |
Key observations:
|
|
|
|
| 161 |
- The previous `embedding_doc = 0.9604` result was traced to an LLM build config issue, not to the OpenAI-compatible service wrapper.
|
| 162 |
- `jina-embeddings-v5-omni-nano` uses `text_config.rope_parameters.rope_theta = 1000000.0`; the earlier `llama` build path silently fell back to `10000.0`.
|
| 163 |
- The current LLM AXModels were rebuilt after flattening `rope_theta` into `text_config.rope_theta` for `pulsar2 llm_build`.
|
| 164 |
+
- With the corrected RoPE base, the default packaged precision cases are in the `0.9896 ~ 0.9997` cosine range.
|
| 165 |
+
- The default `8s` audio profile was rebuilt with a clean calibration set from `audio_test_chunk0_30s.wav` and `audio_test_chunk1_30s.wav`, rather than the earlier mixed historical calibration tar.
|
| 166 |
+
- The clean-calibration `8s` audio result is still only slightly higher than the earlier mixed-calibration result (`0.989693` vs about `0.989344` cosine), so the remaining gap is not primarily explained by the audio encoder calibration tar.
|
| 167 |
+
- The default `8s` audio profile is usable but lower than the optional `30s` profile measured during adaptation: `0.989693` cosine for the packaged `audio_test_chunk0_8s_wav` case.
|
| 168 |
The previous `5s` audio profile produced only about `0.94` cosine after LLM prefill, so it is not used as a default packaged precision case.
|
| 169 |
|
| 170 |
## Board Precision Validation Flow
|
bin/axllm
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:96cf3d2d8c9ee51c11c1d06f8cba102aa294f2055718da54a354aa45f409ef1c
|
| 3 |
+
size 2406480
|
config.json
CHANGED
|
@@ -2,6 +2,8 @@
|
|
| 2 |
"system_prompt": "",
|
| 3 |
"model_name": "AXERA-TECH/jina-embeddings-v5-omni-nano-retrieval-AX650-P128-CTX2047",
|
| 4 |
"is_embedding": true,
|
|
|
|
|
|
|
| 5 |
"server_timeout_ms": 300000,
|
| 6 |
"url_tokenizer_model": "jina_v5_omni_tokenizer.txt",
|
| 7 |
"tokenizer_type": "Qwen3Omni",
|
|
|
|
| 2 |
"system_prompt": "",
|
| 3 |
"model_name": "AXERA-TECH/jina-embeddings-v5-omni-nano-retrieval-AX650-P128-CTX2047",
|
| 4 |
"is_embedding": true,
|
| 5 |
+
"jina_embedding_prompt_prefix": true,
|
| 6 |
+
"embedding_append_eos": true,
|
| 7 |
"server_timeout_ms": 300000,
|
| 8 |
"url_tokenizer_model": "jina_v5_omni_tokenizer.txt",
|
| 9 |
"tokenizer_type": "Qwen3Omni",
|
jina_v5_omni_nano_audio_8s.axmodel
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ff567748a6404d4f1479cd8256460416ab137c704b274564cd6bf7fb1e6406a6
|
| 3 |
+
size 703221861
|