Profile MiniCPM-o GGUF Omni complete path on WSL CPU

This commit is contained in:
tzhouam committed 2026-09-24 00:21:11 +08:00
1 parent fa5aadca6f
commit 10ae2818c7
41 files changed
+13150 -7

No files matched your search

@@ -11,6 +11,7 @@ import argparse
import asyncio
import hashlib
import json
import math
import time
import wave
from pathlib import Path
@@ -28,7 +29,11 @@ async def main() -> None:
parser.add_argument("--capacity-gib", type=int, default=30)
parser.add_argument("--abort-check", action="store_true")
parser.add_argument("--expect-admission-refusal", action="store_true")
parser.add_argument("--warmups", type=int, default=0)
parser.add_argument("--repeats", type=int, default=1)
args = parser.parse_args()
if args.warmups < 0 or args.repeats < 1:
parser.error("warmups must be nonnegative and repeats must be positive")
from vllm_omni.config.stage_config import DeployConfig, StageDeployConfig, merge_pipeline_deploy
from vllm_omni.engine.stage_runtime import StageRuntime
@@ -70,7 +75,8 @@ async def main() -> None:
"artifact_sha256": backend["artifact_sha256"],
"cli_sha256": args.cli_sha256, "reference_sha256": reference_hash,
"input_sha256": {key: hashlib.sha256(value).hexdigest() for key, value in inputs.items()},
"memory_budget": budget, "profile_count": 1, "warmup_count": 0}
"memory_budget": budget, "profile_count": args.repeats,
"warmup_count": args.warmups}
try:
started = time.perf_counter()
if args.expect_admission_refusal:
@@ -118,15 +124,29 @@ async def main() -> None:
output.release_stage_buffers()
await asyncio.sleep(0)
result = await request_one("minicpmo-1")
pcm = result.pop("pcm")
report["warmups"] = []
for index in range(args.warmups):
item = await request_one(f"minicpmo-warmup-{index}")
item.pop("pcm")
report["warmups"].append(item)
measured = []
report["measured"] = measured
for index in range(args.repeats):
item = await request_one(f"minicpmo-measured-{index}")
if index == 0:
pcm = item["pcm"]
report["complete_request"] = {key: value for key, value in item.items() if key != "pcm"}
item.pop("pcm")
measured.append(item)
walls = sorted(item["wall_s"] for item in measured)
report["nearest_rank_p50_wall_s"] = walls[math.ceil(0.50 * len(walls)) - 1]
report["nearest_rank_p95_wall_s"] = walls[math.ceil(0.95 * len(walls)) - 1]
args.output_wav.parent.mkdir(parents=True, exist_ok=True)
with wave.open(str(args.output_wav), "wb") as out:
out.setnchannels(1)
out.setsampwidth(2)
out.setframerate(24000)
out.writeframes(pcm)
report["complete_request"] = result
report["output_wav"] = str(args.output_wav)
report["execution_plan_after_request"] = dict(pool.stage_client.execution_plan)
if args.abort_check:
@@ -0,0 +1,56 @@
#!/usr/bin/env python3
"""Sample host RAM/swap and a named process tree during a local profile."""
from __future__ import annotations
import argparse
import json
import time
from pathlib import Path
import psutil
def main() -> None:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--pid", type=int, required=True)
parser.add_argument("--output", type=Path, required=True)
parser.add_argument("--interval-s", type=float, default=0.5)
parser.add_argument("--max-seconds", type=float, default=1800)
args = parser.parse_args()
if not 0.1 <= args.interval_s <= 10 or args.max_seconds <= 0:
parser.error("invalid sample interval or duration")
root = psutil.Process(args.pid)
birth = root.create_time()
deadline = time.monotonic() + args.max_seconds
args.output.parent.mkdir(parents=True, exist_ok=True)
with args.output.open("w", encoding="utf-8") as out:
while time.monotonic() < deadline:
try:
if not root.is_running() or root.create_time() != birth or root.status() == psutil.STATUS_ZOMBIE:
break
tree = [root, *root.children(recursive=True)]
rss = 0
for process in tree:
try:
rss += process.memory_info().rss
except (psutil.NoSuchProcess, psutil.AccessDenied):
pass
ram = psutil.virtual_memory()
swap = psutil.swap_memory()
out.write(json.dumps({
"epoch_s": time.time(),
"available_ram_bytes": ram.available,
"used_swap_bytes": swap.used,
"summed_process_tree_rss_bytes": rss,
"process_count": len(tree),
}) + "\n")
out.flush()
except psutil.NoSuchProcess:
break
time.sleep(args.interval_s)
if __name__ == "__main__":
main()
@@ -4,6 +4,7 @@ This extends the [60-cell device × model matrix](../e2e_profiling_20260922/evid
| Device / model | Verified depth | Observed output and time | Remaining gate |
|---|---|---|---|
| WSL HX370 CPU / MiniCPM-o 4.5 Q4_K_M/F16 GGUF | Scoped complete-request Omni C++ whole-session graph stage (P for one synthetic combined spoken-question+image input; CPU-only model execution) | All 20 measured requests after one warmup answered the red-square question correctly with complete nonzero 24 kHz speech. Nearest-rank complete-request wall p50/p95 22.67/24.83 s; audio duration 1.60–2.92 s, maximum sampled worker RSS 13.70 GB. One WAV independently transcribed exactly (Whisper tiny.en WER 0). 24 GiB admission, 8 GiB refusal and cancellation with zero remaining ledger passed. | Real multimodal suites, playable streaming, speech alignment, post-cancel restart, loading peak, concurrency and sustained power; [raw evidence](evidence/minicpmo_omni_wsl_cpu/README.md). |
| Native Windows HX370 CPU / MiniCPM-o 4.5 Q4_K_M/F16 GGUF | Scoped complete-request Omni C++ whole-session graph stage (P for one synthetic combined audio+image input) | Correct red-square answer, 2.24 s 24 kHz WAV; one cold request 24.34 s, sampled RSS 13.11 GB. 24 GiB admission, 8 GiB refusal and in-flight cancellation with zero remaining reservation passed. | Real multimodal suites, playable streaming, repeated latency, loading peak, post-cancel restart and sustained power; [raw evidence](evidence/minicpmo_omni_cpp/README.md). |
| Native Windows HX370 CPU+Radeon 890M / same MiniCPM-o GGUF | Scoped complete-request Omni hybrid graph stage (P for one synthetic combined audio+image input) | Correct red-square answer, 2.60 s 24 kHz WAV; one cold request 18.27 s, sampled RSS 15.57 GB. Log verifies Radeon language+vision and CPU TTS/Token2Wav; cancellation drained without stale output or reservation. | Real multimodal suites, playable streaming, repeated/concurrent latency, loading peak and sustained power; [raw evidence](evidence/minicpmo_omni_cpp/README.md). |
| Native Windows HX370 CPU+Radeon 890M / Qwen3-TTS 0.6B CustomVoice Q8_0 GGUF plus F16 codec | Scoped complete standalone CrispASR text-to-WAV path with Vulkan talker/codec and CPU FP32 code predictor (P for two named sentences; outside Omni; **not** all-Radeon or NPU) | Two 24 kHz WAVs of 2.56 s and 3.20 s; independently pinned Whisper tiny.en ASR WER 0 on both. One warmup + 20 serial measured resident-server requests for the first prompt had client wall p50/p95 3.310/3.345 s, all PCM hashes identical; RTF 1.29/1.31. The default Vulkan setting fell back to CPU, while all-Vulkan talker+predictor hit a 360-frame runaway cap. | Explicit Omni hybrid stage binding, quality and playback gates, loading-peak admission, cancellation, broader prompts, concurrency and sustained power/thermal behavior; [joint raw evidence](evidence/qwen_tts_radeon890m_joint/README.md), [failed DirectML attempt](evidence/qwen_tts_radeon890m_directml/README.md). |
@@ -0,0 +1,65 @@
# WSL CPU MiniCPM-o GGUF complete-request Omni stage
This record exercises the same pinned MiniCPM-o 4.5 Q4_K_M/F16 GGUF set and
spoken red-square input as the [native Windows CPU/Radeon Omni runs](../minicpmo_omni_cpp/README.md),
but on the HX370's Ubuntu 26.04 WSL2 CPU route. The Linux C++ CLI was rebuilt
from `tc-mb/llama.cpp-omni` commit
`5202b7b2f4d11f50b9f996161e7a2f8b8571b890` with the
[recorded bounded-generation patch](../minicpmo_omni_cpp/llama_cpp_omni_bounded.patch).
Its SHA256 is `5c41298e2a234f76f10342e8b3b3aee7c93f77ea246c121f259ea89c682a6e42`;
the Release build has `GGML_CUDA=OFF`, `GGML_VULKAN=OFF`, `GGML_OPENMP=ON`.
The installed Python environment has vLLM 0.29.0 and PyTorch 2.13.0+cu130,
but the external GGUF process is CPU-only. The runtime uses the current Omni
source checkout via an explicit `PYTHONPATH`.
The [first complete-request report](report.json) and [worker logs](single_logs/)
verify all ten GGUF hashes, 2,048 context tokens, a 96-token generation limit,
CPU placement (`-ngl 0`, CPU vision and Token2Wav), index-1 audio and image
prefill, and the audio completion marker. The spoken question asks the color
of the synthetic 448×448 red square. The stage answered “The square in the
image is red.” and returned a complete, nonzero [2.52 s, 24 kHz WAV](output.wav)
in 25.77 s complete-request wall time. This was one cold sample, not a latency
distribution. The worker's maximum 100 ms sampled RSS was 13.70 GB; this is
not a proven loading peak. A 24 GiB host-RAM reservation from a declared
30 GiB WSL capacity includes weights, workspace/state and headroom. A subsequent
in-flight cancellation returned no stale output and left the ledger at zero.
The separate [serial profile](profile20.json) excluded one warmup and measured
20 complete requests at concurrency one. **All 20** answered the same correct
sentence, returned contiguous nonzero 24 kHz speech and one terminal audio
event, and passed the input/output checks. Nearest-rank complete-request wall
p50/p95 was **22.67/24.83 s**, with a 19.15–30.87 s range. Speech duration
varied from 1.60 to 2.92 s, and all 20 PCM hashes differed; this run did not
establish deterministic speech or alignment across outputs. The
[first measured WAV](profile20_first.wav) was independently transcribed by
pinned Whisper tiny.en as the exact sentence (WER 0) in the
[ASR report](profile20_first_asr.json), an intelligibility proxy for that one
output only. The [22 worker logs](profile20_logs/) retain the warmup,
20 measured requests and in-flight cancellation. The stage returned no stale
output after cancellation and the ledger again ended at zero.
Maximum per-request 100 ms sampled worker RSS across the measured requests was
13.70 GB. The separate [0.5 s host samples](host_memory_samples.jsonl)
started after the first few requests and saw available WSL RAM no lower than
22.55 GB and swap use between 0.994 and 1.060 GB. These samples cover only
part of the run and do not establish a loading peak or unique model RAM;
summed process-tree RSS can double-count shared pages. The [8 GiB admission
test](low_budget_report.json) was refused before worker launch and left no
reservation. No power mode or thermal history was captured.
The [first launch failed](driver_wrong_source.log) before model loading: the
Python environment selected an older editable Omni checkout without this
stage. Setting `PYTHONPATH` to the current checkout fixed the setup; the
[successful driver log](driver.log) is retained. The single synthetic visual
question does not qualify real image/audio understanding, speech alignment,
playable streaming, video input, post-cancel restart, concurrency, loading
peak or sustained power/thermal behavior. No power condition was controlled.
Reproduce with
[`probe_omni_minicpmo_cpp.py`](../../../../experiments/probe_omni_minicpmo_cpp.py)
using `--placement cpu`, the model revision and ten hashes in the JSON report,
and the fixture linked from the Windows evidence above. The CLI build uses the
patch and source commit named here. Use `--abort-check` to verify cancellation.
For the serial profile, add `--warmups 1 --repeats 20`; the
[host-memory sampler](../../../../experiments/sample_host_memory.py) accepts
the profile driver's PID and writes JSONL snapshots while it runs.
@@ -0,0 +1,146 @@
INFO 09-23 23:05:35 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed.
INFO 09-23 23:05:36 [patch.py:510] inductor factorable-divisibility patch: installed.
INFO 09-23 23:05:36 [patch.py:589] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms.
INFO 09-23 23:05:36 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn
WARNING 09-23 23:05:36 [stage_init_utils.py:1887] [stage_init] Failed to load transfer config: [Errno 21] Is a directory: '/home/zhout/project/edge_infer/vllm-omni-edge'
{
"scope": "MiniCPM-o GGUF complete audio+image\u2192text+speech through Omni StageRuntime/StagePool",
"placement": "cpu",
"model_revision": "db25077c33951fe163b42986fba0132e279872a2",
"cli_sha256": "5c41298e2a234f76f10342e8b3b3aee7c93f77ea246c121f259ea89c682a6e42",
"reference_sha256": "cf4bb5cd9acbfbf67596d4a53310652b61ef4b7ede1d54eb03ef4882ca40223a",
"input_sha256": {
"audio_wav": "14ee147cbf2ce9afd9e32c8c8228d7cfe11985cd7e63456b2ad33871492aefcc",
"image_jpeg": "22c7ccea466a3f551c512045e6316c7597408d4e0a20205502f55784d977aa8d"
},
"memory_budget": {
"capacities": {
"host_ram": 32212254720
},
"demands": {
"host_ram": 25769803776
}
},
"profile_count": 1,
"warmup_count": 0,
"startup_s": 8.223868511035107,
"execution_plan_at_start": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "d3c2ac96ca6044aca82c16a2d2729d60",
"model_revision": "db25077c33951fe163b42986fba0132e279872a2",
"artifact_sha256": {
"MiniCPM-o-4_5-Q4_K_M.gguf": "1237a97ee081b8abebc47aa7dad565701e8f5f904cdc92f6723ac4281bbc0932",
"audio/MiniCPM-o-4_5-audio-F16.gguf": "d5b188ac7feaf98e17175c3f9bd14bf269301bfd187439fdaa3e3a494fc32ef7",
"vision/MiniCPM-o-4_5-vision-F16.gguf": "1453678cc4e4fe18de241952962e234f265cb8dda780773526103ab8ba82f421",
"tts/MiniCPM-o-4_5-tts-F16.gguf": "c7be3748a863dd6966ae7eed42600b7f41ca67affb03729ff245247f0e5ea088",
"tts/MiniCPM-o-4_5-projector-F16.gguf": "4b1b5b377358a5e594a304ff6ea5d52df606a9ba7d886c4299d232f0c67dd1fd",
"token2wav-gguf/encoder.gguf": "7f8d265da594eaf5e1de2db8f5f1867dbcb0bb75ef5878fadf2952347116f4d0",
"token2wav-gguf/flow_matching.gguf": "eda6069f3edeb5dd3a87fbf2aedb2ddd1b46f3273926c4fcf09b24476a39cab8",
"token2wav-gguf/flow_extra.gguf": "c67611aa7d02500fe395a7798bf0bfdfb55c74d37ba93934ca74d82b4e63f78d",
"token2wav-gguf/hifigan2.gguf": "1b8b3bf5d8d3066aeee4324fdcdd41aefce170d0ee907645858de408d82835c2",
"token2wav-gguf/prompt_cache.gguf": "81fe6f541ebe0b67db06a1e395df928da47991dc9637c2cf47d6c59d5b979f2c"
},
"cli_sha256": "5c41298e2a234f76f10342e8b3b3aee7c93f77ea246c121f259ea89c682a6e42",
"requested_placement": "cpu",
"ggml_vk_visible_devices": null,
"shared_ram_reservation": {
"host_ram": 25769803776
},
"weights_bytes": 8872297088,
"memory_overhead_bytes": 12884901888,
"context_tokens": 2048,
"max_new_tokens": 96,
"request_capacity": 1,
"stateful_session": "C++-owned within one request; discarded after completion",
"placement_evidence": "pending first request"
},
"complete_request": {
"text": "The square in the image is red.",
"wall_s": 25.769782793009654,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 60480,
"duration_s": 2.52,
"pcm_sha256": "e36c6f1b6c6199514fc6d2111e4521ab3d090957f614eec9f9aabc7c0c73b4e0"
},
"stage_event": {
"request_id": "minicpmo-1",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "d3c2ac96ca6044aca82c16a2d2729d60",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 25.747626426978968,
"peak_sampled_rss_bytes": 13699469312,
"worker_log": "/tmp/minicpmo_omni_wsl_logs/minicpmo-1-c9bc3c5416e24a758c3327c06e9630b4.log"
}
},
"output_wav": "benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_wsl_cpu/output.wav",
"execution_plan_after_request": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "d3c2ac96ca6044aca82c16a2d2729d60",
"model_revision": "db25077c33951fe163b42986fba0132e279872a2",
"artifact_sha256": {
"MiniCPM-o-4_5-Q4_K_M.gguf": "1237a97ee081b8abebc47aa7dad565701e8f5f904cdc92f6723ac4281bbc0932",
"audio/MiniCPM-o-4_5-audio-F16.gguf": "d5b188ac7feaf98e17175c3f9bd14bf269301bfd187439fdaa3e3a494fc32ef7",
"vision/MiniCPM-o-4_5-vision-F16.gguf": "1453678cc4e4fe18de241952962e234f265cb8dda780773526103ab8ba82f421",
"tts/MiniCPM-o-4_5-tts-F16.gguf": "c7be3748a863dd6966ae7eed42600b7f41ca67affb03729ff245247f0e5ea088",
"tts/MiniCPM-o-4_5-projector-F16.gguf": "4b1b5b377358a5e594a304ff6ea5d52df606a9ba7d886c4299d232f0c67dd1fd",
"token2wav-gguf/encoder.gguf": "7f8d265da594eaf5e1de2db8f5f1867dbcb0bb75ef5878fadf2952347116f4d0",
"token2wav-gguf/flow_matching.gguf": "eda6069f3edeb5dd3a87fbf2aedb2ddd1b46f3273926c4fcf09b24476a39cab8",
"token2wav-gguf/flow_extra.gguf": "c67611aa7d02500fe395a7798bf0bfdfb55c74d37ba93934ca74d82b4e63f78d",
"token2wav-gguf/hifigan2.gguf": "1b8b3bf5d8d3066aeee4324fdcdd41aefce170d0ee907645858de408d82835c2",
"token2wav-gguf/prompt_cache.gguf": "81fe6f541ebe0b67db06a1e395df928da47991dc9637c2cf47d6c59d5b979f2c"
},
"cli_sha256": "5c41298e2a234f76f10342e8b3b3aee7c93f77ea246c121f259ea89c682a6e42",
"requested_placement": "cpu",
"ggml_vk_visible_devices": null,
"shared_ram_reservation": {
"host_ram": 25769803776
},
"weights_bytes": 8872297088,
"memory_overhead_bytes": 12884901888,
"context_tokens": 2048,
"max_new_tokens": 96,
"request_capacity": 1,
"stateful_session": "C++-owned within one request; discarded after completion",
"placement_evidence": {
"observed": "cpu",
"worker_pid": 3632560,
"peak_sampled_rss_bytes": 13699469312,
"worker_log": "/tmp/minicpmo_omni_wsl_logs/minicpmo-1-c9bc3c5416e24a758c3327c06e9630b4.log"
}
},
"abort_check": {
"stale_output": false,
"ledger": {
"capacities": {
"host_ram": 32212254720
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
},
"status": "passed",
"ledger_after_shutdown": {
"capacities": {
"host_ram": 32212254720
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
}
@@ -0,0 +1,18 @@
INFO 09-23 23:04:46 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed.
INFO 09-23 23:04:46 [patch.py:510] inductor factorable-divisibility patch: installed.
INFO 09-23 23:04:46 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms.
Traceback (most recent call last):
File "/home/zhout/project/edge_infer/vllm-omni-edge/benchmarks/edge_harness/experiments/probe_omni_minicpmo_cpp.py", line 158, in <module>
asyncio.run(main())
File "/home/zhout/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/asyncio/runners.py", line 195, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "/home/zhout/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zhout/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/home/zhout/project/edge_infer/vllm-omni-edge/benchmarks/edge_harness/experiments/probe_omni_minicpmo_cpp.py", line 35, in main
from vllm_omni.model_executor.models.minicpmo_4_5.pipeline import MINICPMO_4_5_GGUF_WHOLE_PIPELINE
ImportError: cannot import name 'MINICPMO_4_5_GGUF_WHOLE_PIPELINE' from 'vllm_omni.model_executor.models.minicpmo_4_5.pipeline' (/home/zhout/project/edge_infer/vllm-omni-029/vllm_omni/model_executor/models/minicpmo_4_5/pipeline.py)
@@ -0,0 +1,756 @@
{"epoch_s": 1790176142.5003617, "available_ram_bytes": 22674579456, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14815870976, "process_count": 2}
{"epoch_s": 1790176143.0020676, "available_ram_bytes": 22676983808, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14815870976, "process_count": 2}
{"epoch_s": 1790176143.5038755, "available_ram_bytes": 22675492864, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14819872768, "process_count": 2}
{"epoch_s": 1790176144.0058217, "available_ram_bytes": 27341783040, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 9542782976, "process_count": 2}
{"epoch_s": 1790176144.5076349, "available_ram_bytes": 30506795008, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 6418010112, "process_count": 2}
{"epoch_s": 1790176145.0089488, "available_ram_bytes": 29606309888, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 7304900608, "process_count": 2}
{"epoch_s": 1790176145.510101, "available_ram_bytes": 28471427072, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 8441970688, "process_count": 2}
{"epoch_s": 1790176146.011239, "available_ram_bytes": 27085058048, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 9798557696, "process_count": 2}
{"epoch_s": 1790176146.5123742, "available_ram_bytes": 25987350528, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 11517923328, "process_count": 2}
{"epoch_s": 1790176147.0136125, "available_ram_bytes": 25755373568, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 11638079488, "process_count": 2}
{"epoch_s": 1790176147.5146902, "available_ram_bytes": 25350955008, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 12044840960, "process_count": 2}
{"epoch_s": 1790176148.0161345, "available_ram_bytes": 24477736960, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 13000593408, "process_count": 2}
{"epoch_s": 1790176148.5172844, "available_ram_bytes": 24007344128, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 13475020800, "process_count": 2}
{"epoch_s": 1790176149.0191238, "available_ram_bytes": 23653937152, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 13831745536, "process_count": 2}
{"epoch_s": 1790176149.5204508, "available_ram_bytes": 23251173376, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14234923008, "process_count": 2}
{"epoch_s": 1790176150.0221162, "available_ram_bytes": 23322955776, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14049058816, "process_count": 2}
{"epoch_s": 1790176150.5247614, "available_ram_bytes": 23325122560, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14064484352, "process_count": 2}
{"epoch_s": 1790176151.027015, "available_ram_bytes": 23325327360, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14064484352, "process_count": 2}
{"epoch_s": 1790176151.529507, "available_ram_bytes": 23323549696, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14067576832, "process_count": 2}
{"epoch_s": 1790176152.0315056, "available_ram_bytes": 23333576704, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14067576832, "process_count": 2}
{"epoch_s": 1790176152.5330355, "available_ram_bytes": 23209656320, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14203535360, "process_count": 2}
{"epoch_s": 1790176153.034771, "available_ram_bytes": 23209504768, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14203535360, "process_count": 2}
{"epoch_s": 1790176153.5368226, "available_ram_bytes": 23209504768, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14203535360, "process_count": 2}
{"epoch_s": 1790176154.0380385, "available_ram_bytes": 23217827840, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14203535360, "process_count": 2}
{"epoch_s": 1790176154.5398805, "available_ram_bytes": 23217827840, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14203535360, "process_count": 2}
{"epoch_s": 1790176155.0413387, "available_ram_bytes": 23227482112, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14203535360, "process_count": 2}
{"epoch_s": 1790176155.5426028, "available_ram_bytes": 23227482112, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14203535360, "process_count": 2}
{"epoch_s": 1790176156.0444348, "available_ram_bytes": 23225008128, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14208208896, "process_count": 2}
{"epoch_s": 1790176156.5464423, "available_ram_bytes": 23232606208, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14208208896, "process_count": 2}
{"epoch_s": 1790176157.0484626, "available_ram_bytes": 23233064960, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14208208896, "process_count": 2}
{"epoch_s": 1790176157.5499735, "available_ram_bytes": 23233916928, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14209146880, "process_count": 2}
{"epoch_s": 1790176158.051171, "available_ram_bytes": 23222722560, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14215684096, "process_count": 2}
{"epoch_s": 1790176158.552845, "available_ram_bytes": 23230894080, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14215684096, "process_count": 2}
{"epoch_s": 1790176159.054931, "available_ram_bytes": 23232393216, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14215684096, "process_count": 2}
{"epoch_s": 1790176159.5563288, "available_ram_bytes": 23232397312, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14215688192, "process_count": 2}
{"epoch_s": 1790176160.0580423, "available_ram_bytes": 23242498048, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14215688192, "process_count": 2}
{"epoch_s": 1790176160.5600765, "available_ram_bytes": 23241867264, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14218203136, "process_count": 2}
{"epoch_s": 1790176161.062116, "available_ram_bytes": 23185903616, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14270394368, "process_count": 2}
{"epoch_s": 1790176161.5643501, "available_ram_bytes": 23119847424, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14337740800, "process_count": 2}
{"epoch_s": 1790176162.0655162, "available_ram_bytes": 23038189568, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14422593536, "process_count": 2}
{"epoch_s": 1790176162.566641, "available_ram_bytes": 22963974144, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14505799680, "process_count": 2}
{"epoch_s": 1790176163.0683424, "available_ram_bytes": 22766768128, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14702403584, "process_count": 2}
{"epoch_s": 1790176163.5701342, "available_ram_bytes": 22664331264, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14808817664, "process_count": 2}
{"epoch_s": 1790176164.072165, "available_ram_bytes": 22670442496, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14808649728, "process_count": 2}
{"epoch_s": 1790176164.5733454, "available_ram_bytes": 22663389184, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14808649728, "process_count": 2}
{"epoch_s": 1790176165.0751052, "available_ram_bytes": 22664933376, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14808649728, "process_count": 2}
{"epoch_s": 1790176165.5768106, "available_ram_bytes": 22620545024, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14816907264, "process_count": 2}
{"epoch_s": 1790176166.0779772, "available_ram_bytes": 22626705408, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14815961088, "process_count": 2}
{"epoch_s": 1790176166.5795472, "available_ram_bytes": 22627266560, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14815961088, "process_count": 2}
{"epoch_s": 1790176167.0809007, "available_ram_bytes": 22627274752, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14815961088, "process_count": 2}
{"epoch_s": 1790176167.5820758, "available_ram_bytes": 22627299328, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14818250752, "process_count": 2}
{"epoch_s": 1790176168.0831244, "available_ram_bytes": 29844152320, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 1120501760, "process_count": 2}
{"epoch_s": 1790176168.584528, "available_ram_bytes": 30150369280, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 6738575360, "process_count": 2}
{"epoch_s": 1790176169.085691, "available_ram_bytes": 29027721216, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 7865548800, "process_count": 2}
{"epoch_s": 1790176169.586792, "available_ram_bytes": 27797315584, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 9096503296, "process_count": 2}
{"epoch_s": 1790176170.0880148, "available_ram_bytes": 26890514432, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 10587774976, "process_count": 2}
{"epoch_s": 1790176170.589201, "available_ram_bytes": 25395986432, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 12072620032, "process_count": 2}
{"epoch_s": 1790176171.090352, "available_ram_bytes": 25211949056, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 12258598912, "process_count": 2}
{"epoch_s": 1790176171.5915215, "available_ram_bytes": 24023076864, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 13446111232, "process_count": 2}
{"epoch_s": 1790176172.092802, "available_ram_bytes": 23471513600, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 13987008512, "process_count": 2}
{"epoch_s": 1790176172.594544, "available_ram_bytes": 23279181824, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14049087488, "process_count": 2}
{"epoch_s": 1790176173.0968902, "available_ram_bytes": 23287779328, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14055682048, "process_count": 2}
{"epoch_s": 1790176173.5986056, "available_ram_bytes": 23284424704, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14064480256, "process_count": 2}
{"epoch_s": 1790176174.1002011, "available_ram_bytes": 23297351680, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14067572736, "process_count": 2}
{"epoch_s": 1790176174.6023293, "available_ram_bytes": 23297064960, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14067572736, "process_count": 2}
{"epoch_s": 1790176175.1039977, "available_ram_bytes": 23264399360, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14106230784, "process_count": 2}
{"epoch_s": 1790176175.6053622, "available_ram_bytes": 23182651392, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14203498496, "process_count": 2}
{"epoch_s": 1790176176.1071289, "available_ram_bytes": 23189790720, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14203498496, "process_count": 2}
{"epoch_s": 1790176176.6088455, "available_ram_bytes": 23192752128, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14203498496, "process_count": 2}
{"epoch_s": 1790176177.1108015, "available_ram_bytes": 23201849344, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14203498496, "process_count": 2}
{"epoch_s": 1790176177.612448, "available_ram_bytes": 23204651008, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14203498496, "process_count": 2}
{"epoch_s": 1790176178.1141129, "available_ram_bytes": 23205707776, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14203498496, "process_count": 2}
{"epoch_s": 1790176178.6154943, "available_ram_bytes": 23217328128, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14203564032, "process_count": 2}
{"epoch_s": 1790176179.117559, "available_ram_bytes": 23213277184, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14208172032, "process_count": 2}
{"epoch_s": 1790176179.6194355, "available_ram_bytes": 23216762880, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14208172032, "process_count": 2}
{"epoch_s": 1790176180.1211433, "available_ram_bytes": 23223930880, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14208172032, "process_count": 2}
{"epoch_s": 1790176180.623041, "available_ram_bytes": 23224328192, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14212763648, "process_count": 2}
{"epoch_s": 1790176181.1248689, "available_ram_bytes": 23221399552, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14215647232, "process_count": 2}
{"epoch_s": 1790176181.6266937, "available_ram_bytes": 23231909888, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14215647232, "process_count": 2}
{"epoch_s": 1790176182.1278923, "available_ram_bytes": 23231139840, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14215700480, "process_count": 2}
{"epoch_s": 1790176182.6295714, "available_ram_bytes": 23233077248, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14215708672, "process_count": 2}
{"epoch_s": 1790176183.131847, "available_ram_bytes": 23239553024, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14215708672, "process_count": 2}
{"epoch_s": 1790176183.6337316, "available_ram_bytes": 23240486912, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14218223616, "process_count": 2}
{"epoch_s": 1790176184.135443, "available_ram_bytes": 23157743616, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14309957632, "process_count": 2}
{"epoch_s": 1790176184.636565, "available_ram_bytes": 23053856768, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14412521472, "process_count": 2}
{"epoch_s": 1790176185.1382823, "available_ram_bytes": 22954958848, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14511792128, "process_count": 2}
{"epoch_s": 1790176185.6397161, "available_ram_bytes": 22766252032, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14702424064, "process_count": 2}
{"epoch_s": 1790176186.1409092, "available_ram_bytes": 22668484608, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14808682496, "process_count": 2}
{"epoch_s": 1790176186.6420503, "available_ram_bytes": 22667874304, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14808682496, "process_count": 2}
{"epoch_s": 1790176187.1437473, "available_ram_bytes": 22675140608, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14808682496, "process_count": 2}
{"epoch_s": 1790176187.6451082, "available_ram_bytes": 22674710528, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14810972160, "process_count": 2}
{"epoch_s": 1790176188.146883, "available_ram_bytes": 24338857984, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 12503502848, "process_count": 2}
{"epoch_s": 1790176188.648014, "available_ram_bytes": 30625542144, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 1130131456, "process_count": 2}
{"epoch_s": 1790176189.1491652, "available_ram_bytes": 30013915136, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 6895292416, "process_count": 2}
{"epoch_s": 1790176189.6503284, "available_ram_bytes": 28908077056, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 8001323008, "process_count": 2}
{"epoch_s": 1790176190.151605, "available_ram_bytes": 27642961920, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 9270734848, "process_count": 2}
{"epoch_s": 1790176190.6526332, "available_ram_bytes": 26601775104, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 10899648512, "process_count": 2}
{"epoch_s": 1790176191.153678, "available_ram_bytes": 25723228160, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 11768741888, "process_count": 2}
{"epoch_s": 1790176191.654909, "available_ram_bytes": 25306763264, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 12025753600, "process_count": 2}
{"epoch_s": 1790176192.1561432, "available_ram_bytes": 24939622400, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 12547379200, "process_count": 2}
{"epoch_s": 1790176192.6572113, "available_ram_bytes": 24139173888, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 13346824192, "process_count": 2}
{"epoch_s": 1790176193.158828, "available_ram_bytes": 23738286080, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 13756448768, "process_count": 2}
{"epoch_s": 1790176193.6599967, "available_ram_bytes": 23307161600, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14042554368, "process_count": 2}
{"epoch_s": 1790176194.1619174, "available_ram_bytes": 23315279872, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14049005568, "process_count": 2}
{"epoch_s": 1790176194.6634758, "available_ram_bytes": 23306166272, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14064521216, "process_count": 2}
{"epoch_s": 1790176195.1653128, "available_ram_bytes": 23315599360, "used_swap_bytes": 1060024320, "summed_process_tree_rss_bytes": 14067613696, "process_count": 2}
{"epoch_s": 1790179773.2998362, "available_ram_bytes": 23325376512, "used_swap_bytes": 1004175360, "summed_process_tree_rss_bytes": 14067613696, "process_count": 2}
{"epoch_s": 1790179773.8015027, "available_ram_bytes": 23336529920, "used_swap_bytes": 1004175360, "summed_process_tree_rss_bytes": 14067613696, "process_count": 2}
{"epoch_s": 1790179774.3029912, "available_ram_bytes": 23201714176, "used_swap_bytes": 1004175360, "summed_process_tree_rss_bytes": 14203473920, "process_count": 2}
{"epoch_s": 1790179774.8045206, "available_ram_bytes": 23210090496, "used_swap_bytes": 1004175360, "summed_process_tree_rss_bytes": 14203473920, "process_count": 2}
{"epoch_s": 1790179775.3063877, "available_ram_bytes": 23210819584, "used_swap_bytes": 1004175360, "summed_process_tree_rss_bytes": 14203473920, "process_count": 2}
{"epoch_s": 1790179775.8083756, "available_ram_bytes": 23219269632, "used_swap_bytes": 1004175360, "summed_process_tree_rss_bytes": 14203473920, "process_count": 2}
{"epoch_s": 1790179776.310674, "available_ram_bytes": 23221141504, "used_swap_bytes": 1004175360, "summed_process_tree_rss_bytes": 14203473920, "process_count": 2}
{"epoch_s": 1790179776.8129992, "available_ram_bytes": 23223971840, "used_swap_bytes": 1004118016, "summed_process_tree_rss_bytes": 14203473920, "process_count": 2}
{"epoch_s": 1790179777.3154614, "available_ram_bytes": 23224680448, "used_swap_bytes": 1004118016, "summed_process_tree_rss_bytes": 14203473920, "process_count": 2}
{"epoch_s": 1790179777.8175633, "available_ram_bytes": 23236747264, "used_swap_bytes": 1004118016, "summed_process_tree_rss_bytes": 14203473920, "process_count": 2}
{"epoch_s": 1790179868.2454317, "available_ram_bytes": 23240101888, "used_swap_bytes": 1003732992, "summed_process_tree_rss_bytes": 14203473920, "process_count": 2}
{"epoch_s": 1790179868.7470412, "available_ram_bytes": 23250452480, "used_swap_bytes": 1003732992, "summed_process_tree_rss_bytes": 14203473920, "process_count": 2}
{"epoch_s": 1790179869.2486935, "available_ram_bytes": 23227088896, "used_swap_bytes": 994148352, "summed_process_tree_rss_bytes": 14203473920, "process_count": 2}
{"epoch_s": 1790179869.7503724, "available_ram_bytes": 23231844352, "used_swap_bytes": 993955840, "summed_process_tree_rss_bytes": 14208147456, "process_count": 2}
{"epoch_s": 1790179870.251937, "available_ram_bytes": 23233871872, "used_swap_bytes": 993947648, "summed_process_tree_rss_bytes": 14208147456, "process_count": 2}
{"epoch_s": 1790179870.754319, "available_ram_bytes": 23242219520, "used_swap_bytes": 993947648, "summed_process_tree_rss_bytes": 14208147456, "process_count": 2}
{"epoch_s": 1790179871.2566402, "available_ram_bytes": 23242670080, "used_swap_bytes": 993947648, "summed_process_tree_rss_bytes": 14208147456, "process_count": 2}
{"epoch_s": 1790179871.758013, "available_ram_bytes": 23253180416, "used_swap_bytes": 993947648, "summed_process_tree_rss_bytes": 14208147456, "process_count": 2}
{"epoch_s": 1790179872.2598677, "available_ram_bytes": 23251058688, "used_swap_bytes": 993947648, "summed_process_tree_rss_bytes": 14212739072, "process_count": 2}
{"epoch_s": 1790179872.7615247, "available_ram_bytes": 23255511040, "used_swap_bytes": 993947648, "summed_process_tree_rss_bytes": 14215622656, "process_count": 2}
{"epoch_s": 1790179873.2632506, "available_ram_bytes": 23255318528, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14215622656, "process_count": 2}
{"epoch_s": 1790179873.76496, "available_ram_bytes": 23262711808, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14215622656, "process_count": 2}
{"epoch_s": 1790179874.266579, "available_ram_bytes": 23263563776, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14215630848, "process_count": 2}
{"epoch_s": 1790179874.768119, "available_ram_bytes": 23269302272, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14215630848, "process_count": 2}
{"epoch_s": 1790179875.269994, "available_ram_bytes": 23269675008, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14215630848, "process_count": 2}
{"epoch_s": 1790179875.7725782, "available_ram_bytes": 23275347968, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14215630848, "process_count": 2}
{"epoch_s": 1790179876.2845216, "available_ram_bytes": 23276658688, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14218145792, "process_count": 2}
{"epoch_s": 1790179876.7864006, "available_ram_bytes": 23256293376, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14244859904, "process_count": 2}
{"epoch_s": 1790179877.2880774, "available_ram_bytes": 23258157056, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14250659840, "process_count": 2}
{"epoch_s": 1790179877.7896185, "available_ram_bytes": 23250558976, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14261481472, "process_count": 2}
{"epoch_s": 1790179878.2912893, "available_ram_bytes": 23233871872, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14277545984, "process_count": 2}
{"epoch_s": 1790179878.7930279, "available_ram_bytes": 23219871744, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14296698880, "process_count": 2}
{"epoch_s": 1790179879.2944005, "available_ram_bytes": 23203098624, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14307311616, "process_count": 2}
{"epoch_s": 1790179879.7955213, "available_ram_bytes": 23171325952, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14346539008, "process_count": 2}
{"epoch_s": 1790179880.29668, "available_ram_bytes": 23106404352, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14406471680, "process_count": 2}
{"epoch_s": 1790179880.7983618, "available_ram_bytes": 23040942080, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14476496896, "process_count": 2}
{"epoch_s": 1790179881.2997856, "available_ram_bytes": 22949965824, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14563934208, "process_count": 2}
{"epoch_s": 1790179881.802127, "available_ram_bytes": 22762328064, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14757724160, "process_count": 2}
{"epoch_s": 1790179882.3034465, "available_ram_bytes": 22703251456, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14808592384, "process_count": 2}
{"epoch_s": 1790179882.8046474, "available_ram_bytes": 22704197632, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14808592384, "process_count": 2}
{"epoch_s": 1790179883.3065717, "available_ram_bytes": 22705201152, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14808592384, "process_count": 2}
{"epoch_s": 1790179883.8082256, "available_ram_bytes": 22707302400, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14808592384, "process_count": 2}
{"epoch_s": 1790179884.311713, "available_ram_bytes": 22666747904, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14816845824, "process_count": 2}
{"epoch_s": 1790179884.812903, "available_ram_bytes": 22667288576, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14815903744, "process_count": 2}
{"epoch_s": 1790179885.3147826, "available_ram_bytes": 22668103680, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14815903744, "process_count": 2}
{"epoch_s": 1790179885.816869, "available_ram_bytes": 22654681088, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14815903744, "process_count": 2}
{"epoch_s": 1790179886.3187156, "available_ram_bytes": 22654365696, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14819880960, "process_count": 2}
{"epoch_s": 1790179886.820493, "available_ram_bytes": 27628154880, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 9199665152, "process_count": 2}
{"epoch_s": 1790179887.322043, "available_ram_bytes": 30466781184, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 6425063424, "process_count": 2}
{"epoch_s": 1790179887.8231769, "available_ram_bytes": 29502230528, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 7389069312, "process_count": 2}
{"epoch_s": 1790179888.3248558, "available_ram_bytes": 28749537280, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 8180084736, "process_count": 2}
{"epoch_s": 1790179888.8267837, "available_ram_bytes": 27799805952, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 9131778048, "process_count": 2}
{"epoch_s": 1790179889.3282325, "available_ram_bytes": 27025154048, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 9877331968, "process_count": 2}
{"epoch_s": 1790179889.8297727, "available_ram_bytes": 26183655424, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 11324829696, "process_count": 2}
{"epoch_s": 1790179890.3312953, "available_ram_bytes": 25275969536, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 12233904128, "process_count": 2}
{"epoch_s": 1790179890.8324351, "available_ram_bytes": 25247268864, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 12265930752, "process_count": 2}
{"epoch_s": 1790179891.333612, "available_ram_bytes": 24257142784, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 13251993600, "process_count": 2}
{"epoch_s": 1790179891.8349512, "available_ram_bytes": 23828701184, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 13684248576, "process_count": 2}
{"epoch_s": 1790179892.336097, "available_ram_bytes": 23374880768, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14134996992, "process_count": 2}
{"epoch_s": 1790179892.8376987, "available_ram_bytes": 23324745728, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14049017856, "process_count": 2}
{"epoch_s": 1790179893.3397183, "available_ram_bytes": 23323545600, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14064459776, "process_count": 2}
{"epoch_s": 1790179893.8410776, "available_ram_bytes": 23323959296, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14064459776, "process_count": 2}
{"epoch_s": 1790179894.3422878, "available_ram_bytes": 23320571904, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14067552256, "process_count": 2}
{"epoch_s": 1790179894.8434289, "available_ram_bytes": 23328575488, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14067617792, "process_count": 2}
{"epoch_s": 1790179895.3445425, "available_ram_bytes": 23204040704, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14203412480, "process_count": 2}
{"epoch_s": 1790179895.8462114, "available_ram_bytes": 23204040704, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14203412480, "process_count": 2}
{"epoch_s": 1790179896.34773, "available_ram_bytes": 23212298240, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14203412480, "process_count": 2}
{"epoch_s": 1790179896.8489065, "available_ram_bytes": 23212556288, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14203412480, "process_count": 2}
{"epoch_s": 1790179897.350155, "available_ram_bytes": 23220813824, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14203412480, "process_count": 2}
{"epoch_s": 1790179897.8518147, "available_ram_bytes": 23221268480, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14203412480, "process_count": 2}
{"epoch_s": 1790179898.3535826, "available_ram_bytes": 23214559232, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14208086016, "process_count": 2}
{"epoch_s": 1790179898.8548405, "available_ram_bytes": 23214911488, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14208086016, "process_count": 2}
{"epoch_s": 1790179899.3566906, "available_ram_bytes": 23214911488, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14208086016, "process_count": 2}
{"epoch_s": 1790179899.8583972, "available_ram_bytes": 23223742464, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14208086016, "process_count": 2}
{"epoch_s": 1790179900.3606796, "available_ram_bytes": 23220289536, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14215561216, "process_count": 2}
{"epoch_s": 1790179900.8622127, "available_ram_bytes": 23219695616, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14215561216, "process_count": 2}
{"epoch_s": 1790179901.3643394, "available_ram_bytes": 23227953152, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14215561216, "process_count": 2}
{"epoch_s": 1790179901.8660183, "available_ram_bytes": 23229267968, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14215565312, "process_count": 2}
{"epoch_s": 1790179902.368171, "available_ram_bytes": 23229267968, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14215565312, "process_count": 2}
{"epoch_s": 1790179902.8704312, "available_ram_bytes": 23229538304, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14215565312, "process_count": 2}
{"epoch_s": 1790179903.3724554, "available_ram_bytes": 23230341120, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14218084352, "process_count": 2}
{"epoch_s": 1790179903.8746629, "available_ram_bytes": 23206715392, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14250598400, "process_count": 2}
{"epoch_s": 1790179904.3761482, "available_ram_bytes": 23190687744, "used_swap_bytes": 993943552, "summed_process_tree_rss_bytes": 14267187200, "process_count": 2}
{"epoch_s": 1790179904.8775342, "available_ram_bytes": 23157944320, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14294069248, "process_count": 2}
{"epoch_s": 1790179905.3786852, "available_ram_bytes": 23125819392, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14330413056, "process_count": 2}
{"epoch_s": 1790179905.880113, "available_ram_bytes": 23035342848, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14419591168, "process_count": 2}
{"epoch_s": 1790179906.3818493, "available_ram_bytes": 22936281088, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14515978240, "process_count": 2}
{"epoch_s": 1790179906.8834062, "available_ram_bytes": 22747029504, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14702284800, "process_count": 2}
{"epoch_s": 1790179907.385946, "available_ram_bytes": 22637649920, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14808698880, "process_count": 2}
{"epoch_s": 1790179907.887151, "available_ram_bytes": 22644842496, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14808530944, "process_count": 2}
{"epoch_s": 1790179908.3890116, "available_ram_bytes": 22644588544, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14808530944, "process_count": 2}
{"epoch_s": 1790179908.8904567, "available_ram_bytes": 22644502528, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14808530944, "process_count": 2}
{"epoch_s": 1790179909.3926132, "available_ram_bytes": 22599946240, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14816784384, "process_count": 2}
{"epoch_s": 1790179909.8943157, "available_ram_bytes": 22598569984, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14815842304, "process_count": 2}
{"epoch_s": 1790179910.3954725, "available_ram_bytes": 22599147520, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14815842304, "process_count": 2}
{"epoch_s": 1790179910.8976178, "available_ram_bytes": 22599147520, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14818131968, "process_count": 2}
{"epoch_s": 1790179911.3987856, "available_ram_bytes": 23529906176, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 13248405504, "process_count": 2}
{"epoch_s": 1790179911.8998268, "available_ram_bytes": 30668857344, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 1134469120, "process_count": 2}
{"epoch_s": 1790179912.401471, "available_ram_bytes": 29911949312, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 6907289600, "process_count": 2}
{"epoch_s": 1790179912.9032269, "available_ram_bytes": 29294559232, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 7527669760, "process_count": 2}
{"epoch_s": 1790179913.4042966, "available_ram_bytes": 28277940224, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 8398823424, "process_count": 2}
{"epoch_s": 1790179913.9058142, "available_ram_bytes": 27586519040, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 9217327104, "process_count": 2}
{"epoch_s": 1790179914.4068706, "available_ram_bytes": 26893832192, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 10492592128, "process_count": 2}
{"epoch_s": 1790179914.9079518, "available_ram_bytes": 25916145664, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 11475496960, "process_count": 2}
{"epoch_s": 1790179915.4090345, "available_ram_bytes": 26092519424, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 11301920768, "process_count": 2}
{"epoch_s": 1790179915.9107673, "available_ram_bytes": 25184006144, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 12264374272, "process_count": 2}
{"epoch_s": 1790179916.4120471, "available_ram_bytes": 24634933248, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 12822650880, "process_count": 2}
{"epoch_s": 1790179916.913621, "available_ram_bytes": 24339521536, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 13111488512, "process_count": 2}
{"epoch_s": 1790179917.4151325, "available_ram_bytes": 23916605440, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 13540147200, "process_count": 2}
{"epoch_s": 1790179917.9163327, "available_ram_bytes": 23429824512, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14013816832, "process_count": 2}
{"epoch_s": 1790179918.418135, "available_ram_bytes": 23281741824, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14048837632, "process_count": 2}
{"epoch_s": 1790179918.9196637, "available_ram_bytes": 23282368512, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14055526400, "process_count": 2}
{"epoch_s": 1790179919.421172, "available_ram_bytes": 23276019712, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14064324608, "process_count": 2}
{"epoch_s": 1790179919.9229057, "available_ram_bytes": 23283036160, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14067417088, "process_count": 2}
{"epoch_s": 1790179920.424753, "available_ram_bytes": 23284035584, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14067417088, "process_count": 2}
{"epoch_s": 1790179920.9263556, "available_ram_bytes": 23170039808, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203310080, "process_count": 2}
{"epoch_s": 1790179921.4275563, "available_ram_bytes": 23170887680, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203310080, "process_count": 2}
{"epoch_s": 1790179921.9291363, "available_ram_bytes": 23186944000, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203310080, "process_count": 2}
{"epoch_s": 1790179922.430884, "available_ram_bytes": 23196319744, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203310080, "process_count": 2}
{"epoch_s": 1790179922.9321866, "available_ram_bytes": 23199612928, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203310080, "process_count": 2}
{"epoch_s": 1790179923.4339936, "available_ram_bytes": 23208517632, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203310080, "process_count": 2}
{"epoch_s": 1790179923.93569, "available_ram_bytes": 23203323904, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14207983616, "process_count": 2}
{"epoch_s": 1790179924.4380658, "available_ram_bytes": 23211143168, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14207983616, "process_count": 2}
{"epoch_s": 1790179924.9395866, "available_ram_bytes": 23214252032, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14207983616, "process_count": 2}
{"epoch_s": 1790179925.4416406, "available_ram_bytes": 23222632448, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14209257472, "process_count": 2}
{"epoch_s": 1790179925.943631, "available_ram_bytes": 23217672192, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14215458816, "process_count": 2}
{"epoch_s": 1790179926.444872, "available_ram_bytes": 23225262080, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14215458816, "process_count": 2}
{"epoch_s": 1790179926.946508, "available_ram_bytes": 23227981824, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14215467008, "process_count": 2}
{"epoch_s": 1790179927.4479668, "available_ram_bytes": 23235284992, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14215467008, "process_count": 2}
{"epoch_s": 1790179927.9504895, "available_ram_bytes": 23235956736, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14215467008, "process_count": 2}
{"epoch_s": 1790179928.4520671, "available_ram_bytes": 23238447104, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14217981952, "process_count": 2}
{"epoch_s": 1790179928.9537845, "available_ram_bytes": 23164559360, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14287679488, "process_count": 2}
{"epoch_s": 1790179929.4550607, "available_ram_bytes": 23065767936, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14381031424, "process_count": 2}
{"epoch_s": 1790179929.9562871, "available_ram_bytes": 22960394240, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14485188608, "process_count": 2}
{"epoch_s": 1790179930.4576468, "available_ram_bytes": 22828445696, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14613569536, "process_count": 2}
{"epoch_s": 1790179930.9598074, "available_ram_bytes": 22655852544, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14795276288, "process_count": 2}
{"epoch_s": 1790179931.4610255, "available_ram_bytes": 22642044928, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14808428544, "process_count": 2}
{"epoch_s": 1790179931.9627457, "available_ram_bytes": 22641913856, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14808428544, "process_count": 2}
{"epoch_s": 1790179932.4640324, "available_ram_bytes": 22643662848, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14808428544, "process_count": 2}
{"epoch_s": 1790179932.9660275, "available_ram_bytes": 22606458880, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14816686080, "process_count": 2}
{"epoch_s": 1790179933.467179, "available_ram_bytes": 22606520320, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14815739904, "process_count": 2}
{"epoch_s": 1790179933.9683595, "available_ram_bytes": 22606520320, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14815739904, "process_count": 2}
{"epoch_s": 1790179934.469613, "available_ram_bytes": 22607646720, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14815739904, "process_count": 2}
{"epoch_s": 1790179934.9712286, "available_ram_bytes": 22607798272, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14799843328, "process_count": 2}
{"epoch_s": 1790179935.4729364, "available_ram_bytes": 29794443264, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 1120501760, "process_count": 2}
{"epoch_s": 1790179935.974277, "available_ram_bytes": 29940146176, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 6911000576, "process_count": 2}
{"epoch_s": 1790179936.4754574, "available_ram_bytes": 28884811776, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 7967580160, "process_count": 2}
{"epoch_s": 1790179936.9765418, "available_ram_bytes": 27854106624, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 8983195648, "process_count": 2}
{"epoch_s": 1790179937.47773, "available_ram_bytes": 26753085440, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 10672975872, "process_count": 2}
{"epoch_s": 1790179937.9789422, "available_ram_bytes": 25184595968, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 12245266432, "process_count": 2}
{"epoch_s": 1790179938.4803038, "available_ram_bytes": 25049767936, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 12376666112, "process_count": 2}
{"epoch_s": 1790179938.981708, "available_ram_bytes": 24180596736, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 13244522496, "process_count": 2}
{"epoch_s": 1790179939.4829538, "available_ram_bytes": 23677968384, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 13748465664, "process_count": 2}
{"epoch_s": 1790179939.9846215, "available_ram_bytes": 23191195648, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14151593984, "process_count": 2}
{"epoch_s": 1790179940.4869766, "available_ram_bytes": 23269494784, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14049046528, "process_count": 2}
{"epoch_s": 1790179940.9893384, "available_ram_bytes": 23266512896, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14055641088, "process_count": 2}
{"epoch_s": 1790179941.4915214, "available_ram_bytes": 23267520512, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14064439296, "process_count": 2}
{"epoch_s": 1790179941.9928286, "available_ram_bytes": 23272984576, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14067531776, "process_count": 2}
{"epoch_s": 1790179942.4943907, "available_ram_bytes": 23273902080, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14067531776, "process_count": 2}
{"epoch_s": 1790179942.996217, "available_ram_bytes": 23163183104, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14176845824, "process_count": 2}
{"epoch_s": 1790179943.4978957, "available_ram_bytes": 23142182912, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203457536, "process_count": 2}
{"epoch_s": 1790179943.999462, "available_ram_bytes": 23152001024, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203457536, "process_count": 2}
{"epoch_s": 1790179944.5014915, "available_ram_bytes": 23155871744, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203457536, "process_count": 2}
{"epoch_s": 1790179945.0026834, "available_ram_bytes": 23155871744, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203457536, "process_count": 2}
{"epoch_s": 1790179945.5042672, "available_ram_bytes": 23160623104, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203457536, "process_count": 2}
{"epoch_s": 1790179946.0057132, "available_ram_bytes": 23169142784, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203457536, "process_count": 2}
{"epoch_s": 1790179946.50697, "available_ram_bytes": 23169675264, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14208131072, "process_count": 2}
{"epoch_s": 1790179947.0085921, "available_ram_bytes": 23170871296, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14208131072, "process_count": 2}
{"epoch_s": 1790179947.5106068, "available_ram_bytes": 23174070272, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14208131072, "process_count": 2}
{"epoch_s": 1790179948.0122714, "available_ram_bytes": 23179345920, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14212722688, "process_count": 2}
{"epoch_s": 1790179948.5143309, "available_ram_bytes": 23180648448, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14215606272, "process_count": 2}
{"epoch_s": 1790179949.0162606, "available_ram_bytes": 23180906496, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14215606272, "process_count": 2}
{"epoch_s": 1790179949.5177581, "available_ram_bytes": 23182422016, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14215610368, "process_count": 2}
{"epoch_s": 1790179950.0194323, "available_ram_bytes": 23190679552, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14215610368, "process_count": 2}
{"epoch_s": 1790179950.5209594, "available_ram_bytes": 23195533312, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14215610368, "process_count": 2}
{"epoch_s": 1790179951.0230954, "available_ram_bytes": 23195906048, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14218125312, "process_count": 2}
{"epoch_s": 1790179951.5242722, "available_ram_bytes": 23143432192, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14277525504, "process_count": 2}
{"epoch_s": 1790179952.0255759, "available_ram_bytes": 23086358528, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14337662976, "process_count": 2}
{"epoch_s": 1790179952.5266979, "available_ram_bytes": 23006597120, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14426841088, "process_count": 2}
{"epoch_s": 1790179953.0277877, "available_ram_bytes": 22924677120, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14508605440, "process_count": 2}
{"epoch_s": 1790179953.5294564, "available_ram_bytes": 22744465408, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14702325760, "process_count": 2}
{"epoch_s": 1790179954.0314891, "available_ram_bytes": 22634737664, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14808739840, "process_count": 2}
{"epoch_s": 1790179954.5326881, "available_ram_bytes": 22643240960, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14808571904, "process_count": 2}
{"epoch_s": 1790179955.0344136, "available_ram_bytes": 22642515968, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14808571904, "process_count": 2}
{"epoch_s": 1790179955.5357828, "available_ram_bytes": 22652284928, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14808571904, "process_count": 2}
{"epoch_s": 1790179956.0376525, "available_ram_bytes": 22611398656, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14816825344, "process_count": 2}
{"epoch_s": 1790179956.5389132, "available_ram_bytes": 22618075136, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14815883264, "process_count": 2}
{"epoch_s": 1790179957.040057, "available_ram_bytes": 22618075136, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14815883264, "process_count": 2}
{"epoch_s": 1790179957.5415456, "available_ram_bytes": 22616387584, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14818172928, "process_count": 2}
{"epoch_s": 1790179958.0427742, "available_ram_bytes": 23420264448, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 13387522048, "process_count": 2}
{"epoch_s": 1790179958.5438435, "available_ram_bytes": 30698733568, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 1120509952, "process_count": 1}
{"epoch_s": 1790179959.0450594, "available_ram_bytes": 29698166784, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 7142805504, "process_count": 2}
{"epoch_s": 1790179959.5461907, "available_ram_bytes": 28841345024, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 8009080832, "process_count": 2}
{"epoch_s": 1790179960.0472882, "available_ram_bytes": 27516268544, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 9334882304, "process_count": 2}
{"epoch_s": 1790179960.5485647, "available_ram_bytes": 26329661440, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 11099095040, "process_count": 2}
{"epoch_s": 1790179961.0500772, "available_ram_bytes": 25156517888, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 12272304128, "process_count": 2}
{"epoch_s": 1790179961.5514734, "available_ram_bytes": 25497653248, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 11936714752, "process_count": 2}
{"epoch_s": 1790179962.05295, "available_ram_bytes": 24581529600, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 12853751808, "process_count": 2}
{"epoch_s": 1790179962.5548205, "available_ram_bytes": 24057499648, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 13382266880, "process_count": 2}
{"epoch_s": 1790179963.0561912, "available_ram_bytes": 23553744896, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 13875949568, "process_count": 2}
{"epoch_s": 1790179963.5581121, "available_ram_bytes": 23256633344, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14049103872, "process_count": 2}
{"epoch_s": 1790179964.0599968, "available_ram_bytes": 23256829952, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14049103872, "process_count": 2}
{"epoch_s": 1790179964.5620654, "available_ram_bytes": 23259783168, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14064492544, "process_count": 2}
{"epoch_s": 1790179965.0635405, "available_ram_bytes": 23256055808, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14067585024, "process_count": 2}
{"epoch_s": 1790179965.5654068, "available_ram_bytes": 23259635712, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14067585024, "process_count": 2}
{"epoch_s": 1790179966.0672014, "available_ram_bytes": 23137484800, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203510784, "process_count": 2}
{"epoch_s": 1790179966.5691442, "available_ram_bytes": 23148818432, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203510784, "process_count": 2}
{"epoch_s": 1790179967.0713513, "available_ram_bytes": 23148818432, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203510784, "process_count": 2}
{"epoch_s": 1790179967.5729809, "available_ram_bytes": 23161438208, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203510784, "process_count": 2}
{"epoch_s": 1790179968.0745997, "available_ram_bytes": 23161438208, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203510784, "process_count": 2}
{"epoch_s": 1790179968.5760887, "available_ram_bytes": 23172317184, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203510784, "process_count": 2}
{"epoch_s": 1790179969.078215, "available_ram_bytes": 23173869568, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203576320, "process_count": 2}
{"epoch_s": 1790179969.5794466, "available_ram_bytes": 23177912320, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14208184320, "process_count": 2}
{"epoch_s": 1790179970.0813243, "available_ram_bytes": 23179247616, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14208184320, "process_count": 2}
{"epoch_s": 1790179970.582963, "available_ram_bytes": 23187812352, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14208184320, "process_count": 2}
{"epoch_s": 1790179971.0846612, "available_ram_bytes": 23185375232, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14212775936, "process_count": 2}
{"epoch_s": 1790179971.5864465, "available_ram_bytes": 23192899584, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14215659520, "process_count": 2}
{"epoch_s": 1790179972.0883868, "available_ram_bytes": 23192899584, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14215659520, "process_count": 2}
{"epoch_s": 1790179972.590318, "available_ram_bytes": 23193165824, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14215667712, "process_count": 2}
{"epoch_s": 1790179973.091707, "available_ram_bytes": 23193165824, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14215675904, "process_count": 2}
{"epoch_s": 1790179973.5936568, "available_ram_bytes": 23201423360, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14215675904, "process_count": 2}
{"epoch_s": 1790179974.095297, "available_ram_bytes": 23178608640, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14238707712, "process_count": 2}
{"epoch_s": 1790179974.5966687, "available_ram_bytes": 23104131072, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14317170688, "process_count": 2}
{"epoch_s": 1790179975.0985038, "available_ram_bytes": 22996783104, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14416850944, "process_count": 2}
{"epoch_s": 1790179975.5997863, "available_ram_bytes": 22913581056, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14518575104, "process_count": 2}
{"epoch_s": 1790179976.1009853, "available_ram_bytes": 22731685888, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14702428160, "process_count": 2}
{"epoch_s": 1790179976.6022224, "available_ram_bytes": 22619607040, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14808674304, "process_count": 2}
{"epoch_s": 1790179977.10385, "available_ram_bytes": 22626947072, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14808674304, "process_count": 2}
{"epoch_s": 1790179977.6057234, "available_ram_bytes": 22626791424, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14808674304, "process_count": 2}
{"epoch_s": 1790179978.1070578, "available_ram_bytes": 22626791424, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14808674304, "process_count": 2}
{"epoch_s": 1790179978.6083467, "available_ram_bytes": 22596415488, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14815985664, "process_count": 2}
{"epoch_s": 1790179979.109676, "available_ram_bytes": 22596206592, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14815985664, "process_count": 2}
{"epoch_s": 1790179979.6110694, "available_ram_bytes": 22607548416, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14815985664, "process_count": 2}
{"epoch_s": 1790179980.1124272, "available_ram_bytes": 22607548416, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14818275328, "process_count": 2}
{"epoch_s": 1790179980.6139767, "available_ram_bytes": 24684523520, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 12107288576, "process_count": 2}
{"epoch_s": 1790179981.1153445, "available_ram_bytes": 30654029824, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 1172725760, "process_count": 2}
{"epoch_s": 1790179981.6165292, "available_ram_bytes": 29481775104, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 7360471040, "process_count": 2}
{"epoch_s": 1790179982.1182015, "available_ram_bytes": 28366864384, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 8477831168, "process_count": 2}
{"epoch_s": 1790179982.6198947, "available_ram_bytes": 27289911296, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 9546162176, "process_count": 2}
{"epoch_s": 1790179983.1209853, "available_ram_bytes": 26308960256, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 11111636992, "process_count": 2}
{"epoch_s": 1790179983.6222572, "available_ram_bytes": 26069757952, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 11193389056, "process_count": 2}
{"epoch_s": 1790179984.1233697, "available_ram_bytes": 24764063744, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 12661469184, "process_count": 2}
{"epoch_s": 1790179984.6245377, "available_ram_bytes": 24242323456, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 13078142976, "process_count": 2}
{"epoch_s": 1790179985.1256971, "available_ram_bytes": 23641505792, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 13803155456, "process_count": 2}
{"epoch_s": 1790179985.6270704, "available_ram_bytes": 23258349568, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14049148928, "process_count": 2}
{"epoch_s": 1790179986.1288078, "available_ram_bytes": 23258177536, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14049148928, "process_count": 2}
{"epoch_s": 1790179986.6305003, "available_ram_bytes": 23255883776, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14064541696, "process_count": 2}
{"epoch_s": 1790179987.1324377, "available_ram_bytes": 23252643840, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14067634176, "process_count": 2}
{"epoch_s": 1790179987.6346376, "available_ram_bytes": 23265054720, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14067634176, "process_count": 2}
{"epoch_s": 1790179988.1358156, "available_ram_bytes": 23130869760, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203559936, "process_count": 2}
{"epoch_s": 1790179988.6374528, "available_ram_bytes": 23130243072, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203559936, "process_count": 2}
{"epoch_s": 1790179989.1386688, "available_ram_bytes": 23130243072, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203559936, "process_count": 2}
{"epoch_s": 1790179989.6405244, "available_ram_bytes": 23130099712, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203559936, "process_count": 2}
{"epoch_s": 1790179990.1423943, "available_ram_bytes": 23130382336, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203559936, "process_count": 2}
{"epoch_s": 1790179990.6439273, "available_ram_bytes": 23138639872, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203559936, "process_count": 2}
{"epoch_s": 1790179991.1455832, "available_ram_bytes": 23138639872, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14203625472, "process_count": 2}
{"epoch_s": 1790179991.6471303, "available_ram_bytes": 23143153664, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14208233472, "process_count": 2}
{"epoch_s": 1790179992.1488435, "available_ram_bytes": 23143153664, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14208233472, "process_count": 2}
{"epoch_s": 1790179992.6500976, "available_ram_bytes": 23151079424, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14208233472, "process_count": 2}
{"epoch_s": 1790179993.1520216, "available_ram_bytes": 23148531712, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14215708672, "process_count": 2}
{"epoch_s": 1790179993.653971, "available_ram_bytes": 23148048384, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14215708672, "process_count": 2}
{"epoch_s": 1790179994.1553724, "available_ram_bytes": 23153041408, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14215708672, "process_count": 2}
{"epoch_s": 1790179994.6571426, "available_ram_bytes": 23153041408, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14215761920, "process_count": 2}
{"epoch_s": 1790179995.1585522, "available_ram_bytes": 23153041408, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14215770112, "process_count": 2}
{"epoch_s": 1790179995.6603756, "available_ram_bytes": 23166398464, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14218280960, "process_count": 2}
{"epoch_s": 1790179996.1622329, "available_ram_bytes": 23108997120, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14274805760, "process_count": 2}
{"epoch_s": 1790179996.6634274, "available_ram_bytes": 23018360832, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14364188672, "process_count": 2}
{"epoch_s": 1790179997.1646073, "available_ram_bytes": 22911184896, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14466547712, "process_count": 2}
{"epoch_s": 1790179997.6659007, "available_ram_bytes": 22765002752, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14610214912, "process_count": 2}
{"epoch_s": 1790179998.1676111, "available_ram_bytes": 22604320768, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14787391488, "process_count": 2}
{"epoch_s": 1790179998.6688375, "available_ram_bytes": 22570790912, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14808735744, "process_count": 2}
{"epoch_s": 1790179999.170333, "available_ram_bytes": 22570831872, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14808735744, "process_count": 2}
{"epoch_s": 1790179999.6718087, "available_ram_bytes": 22584422400, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14808735744, "process_count": 2}
{"epoch_s": 1790180000.173854, "available_ram_bytes": 22567907328, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14801543168, "process_count": 2}
{"epoch_s": 1790180000.675061, "available_ram_bytes": 22546833408, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14816047104, "process_count": 2}
{"epoch_s": 1790180001.1764462, "available_ram_bytes": 22555140096, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14816047104, "process_count": 2}
{"epoch_s": 1790180001.677814, "available_ram_bytes": 22559666176, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14816047104, "process_count": 2}
{"epoch_s": 1790180002.1795573, "available_ram_bytes": 22546165760, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 14820110336, "process_count": 2}
{"epoch_s": 1790180002.6806998, "available_ram_bytes": 27616645120, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 9146576896, "process_count": 2}
{"epoch_s": 1790180003.1824646, "available_ram_bytes": 30353174528, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 6465896448, "process_count": 2}
{"epoch_s": 1790180003.6837807, "available_ram_bytes": 29047214080, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 7756943360, "process_count": 2}
{"epoch_s": 1790180004.1848967, "available_ram_bytes": 27742638080, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 9065787392, "process_count": 2}
{"epoch_s": 1790180004.6861517, "available_ram_bytes": 26811883520, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 10585853952, "process_count": 2}
{"epoch_s": 1790180005.1873634, "available_ram_bytes": 25250799616, "used_swap_bytes": 993841152, "summed_process_tree_rss_bytes": 12140949504, "process_count": 2}
{"epoch_s": 1790180005.688601, "available_ram_bytes": 25064411136, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 12334608384, "process_count": 2}
{"epoch_s": 1790180006.1898963, "available_ram_bytes": 23443111936, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 13951717376, "process_count": 2}
{"epoch_s": 1790180006.6916227, "available_ram_bytes": 23213449216, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14049103872, "process_count": 2}
{"epoch_s": 1790180007.194067, "available_ram_bytes": 23217618944, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14055698432, "process_count": 2}
{"epoch_s": 1790180007.6962433, "available_ram_bytes": 23219474432, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14064496640, "process_count": 2}
{"epoch_s": 1790180008.198428, "available_ram_bytes": 23216635904, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14067589120, "process_count": 2}
{"epoch_s": 1790180008.7005308, "available_ram_bytes": 23225667584, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14067589120, "process_count": 2}
{"epoch_s": 1790180009.202022, "available_ram_bytes": 23191695360, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14112030720, "process_count": 2}
{"epoch_s": 1790180009.7038503, "available_ram_bytes": 23110090752, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203514880, "process_count": 2}
{"epoch_s": 1790180010.2061756, "available_ram_bytes": 23110909952, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203514880, "process_count": 2}
{"epoch_s": 1790180010.7077038, "available_ram_bytes": 23118331904, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203514880, "process_count": 2}
{"epoch_s": 1790180011.209691, "available_ram_bytes": 23124205568, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203514880, "process_count": 2}
{"epoch_s": 1790180011.7112947, "available_ram_bytes": 23135166464, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203514880, "process_count": 2}
{"epoch_s": 1790180012.2125065, "available_ram_bytes": 23135166464, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203514880, "process_count": 2}
{"epoch_s": 1790180012.7142992, "available_ram_bytes": 23136350208, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203580416, "process_count": 2}
{"epoch_s": 1790180013.2160594, "available_ram_bytes": 23141163008, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203580416, "process_count": 2}
{"epoch_s": 1790180013.7173123, "available_ram_bytes": 23147040768, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14208188416, "process_count": 2}
{"epoch_s": 1790180014.2191913, "available_ram_bytes": 23147040768, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14208188416, "process_count": 2}
{"epoch_s": 1790180014.7212603, "available_ram_bytes": 23147970560, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14208188416, "process_count": 2}
{"epoch_s": 1790180015.223296, "available_ram_bytes": 23148740608, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14212780032, "process_count": 2}
{"epoch_s": 1790180015.7250853, "available_ram_bytes": 23156920320, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215663616, "process_count": 2}
{"epoch_s": 1790180016.2266965, "available_ram_bytes": 23156604928, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215663616, "process_count": 2}
{"epoch_s": 1790180016.7282631, "available_ram_bytes": 23157014528, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215716864, "process_count": 2}
{"epoch_s": 1790180017.2298706, "available_ram_bytes": 23160696832, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215725056, "process_count": 2}
{"epoch_s": 1790180017.7314003, "available_ram_bytes": 23163359232, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215725056, "process_count": 2}
{"epoch_s": 1790180018.234233, "available_ram_bytes": 23164035072, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14218240000, "process_count": 2}
{"epoch_s": 1790180018.7354624, "available_ram_bytes": 23102046208, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14283612160, "process_count": 2}
{"epoch_s": 1790180019.2369788, "available_ram_bytes": 23027871744, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14355881984, "process_count": 2}
{"epoch_s": 1790180019.73859, "available_ram_bytes": 22936756224, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14458216448, "process_count": 2}
{"epoch_s": 1790180020.2399106, "available_ram_bytes": 22829150208, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14564028416, "process_count": 2}
{"epoch_s": 1790180020.7419918, "available_ram_bytes": 22625218560, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14775877632, "process_count": 2}
{"epoch_s": 1790180021.2435613, "available_ram_bytes": 22584717312, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808686592, "process_count": 2}
{"epoch_s": 1790180021.7446773, "available_ram_bytes": 22591041536, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808686592, "process_count": 2}
{"epoch_s": 1790180022.2465367, "available_ram_bytes": 22598909952, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808686592, "process_count": 2}
{"epoch_s": 1790180022.7484438, "available_ram_bytes": 22585090048, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14791991296, "process_count": 2}
{"epoch_s": 1790180023.2500544, "available_ram_bytes": 22554296320, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14815997952, "process_count": 2}
{"epoch_s": 1790180023.7512045, "available_ram_bytes": 22568910848, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14815997952, "process_count": 2}
{"epoch_s": 1790180024.2525845, "available_ram_bytes": 22568910848, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14815997952, "process_count": 2}
{"epoch_s": 1790180024.7547817, "available_ram_bytes": 22565183488, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14820024320, "process_count": 2}
{"epoch_s": 1790180025.255872, "available_ram_bytes": 26187706368, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 10552406016, "process_count": 2}
{"epoch_s": 1790180025.757855, "available_ram_bytes": 30537056256, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 6283083776, "process_count": 2}
{"epoch_s": 1790180026.2596657, "available_ram_bytes": 29259800576, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 7569633280, "process_count": 2}
{"epoch_s": 1790180026.7611222, "available_ram_bytes": 28359692288, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 8468258816, "process_count": 2}
{"epoch_s": 1790180027.2629712, "available_ram_bytes": 27517210624, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 9313210368, "process_count": 2}
{"epoch_s": 1790180027.7641137, "available_ram_bytes": 26413236224, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 10996486144, "process_count": 2}
{"epoch_s": 1790180028.2654567, "available_ram_bytes": 25157976064, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 12252721152, "process_count": 2}
{"epoch_s": 1790180028.7672176, "available_ram_bytes": 24969801728, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 12450398208, "process_count": 2}
{"epoch_s": 1790180029.2690165, "available_ram_bytes": 24069861376, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 13348106240, "process_count": 2}
{"epoch_s": 1790180029.7702968, "available_ram_bytes": 23582801920, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 13839085568, "process_count": 2}
{"epoch_s": 1790180030.2722337, "available_ram_bytes": 23237746688, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14049075200, "process_count": 2}
{"epoch_s": 1790180030.7746165, "available_ram_bytes": 23246331904, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14049075200, "process_count": 2}
{"epoch_s": 1790180031.276931, "available_ram_bytes": 23242448896, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14064496640, "process_count": 2}
{"epoch_s": 1790180031.7788842, "available_ram_bytes": 23250866176, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14064496640, "process_count": 2}
{"epoch_s": 1790180032.2811744, "available_ram_bytes": 23248257024, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14067589120, "process_count": 2}
{"epoch_s": 1790180032.7827866, "available_ram_bytes": 23261011968, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14067589120, "process_count": 2}
{"epoch_s": 1790180033.284531, "available_ram_bytes": 23126315008, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203547648, "process_count": 2}
{"epoch_s": 1790180033.7863536, "available_ram_bytes": 23126446080, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203547648, "process_count": 2}
{"epoch_s": 1790180034.2884157, "available_ram_bytes": 23126818816, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203547648, "process_count": 2}
{"epoch_s": 1790180034.7903585, "available_ram_bytes": 23128530944, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203547648, "process_count": 2}
{"epoch_s": 1790180035.2919114, "available_ram_bytes": 23140155392, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203547648, "process_count": 2}
{"epoch_s": 1790180035.793967, "available_ram_bytes": 23144161280, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203547648, "process_count": 2}
{"epoch_s": 1790180036.2954032, "available_ram_bytes": 23150313472, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203613184, "process_count": 2}
{"epoch_s": 1790180036.796843, "available_ram_bytes": 23147220992, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14208221184, "process_count": 2}
{"epoch_s": 1790180037.298081, "available_ram_bytes": 23154790400, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14208221184, "process_count": 2}
{"epoch_s": 1790180037.7992208, "available_ram_bytes": 23155265536, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14208221184, "process_count": 2}
{"epoch_s": 1790180038.3012452, "available_ram_bytes": 23165374464, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14212812800, "process_count": 2}
{"epoch_s": 1790180038.8030918, "available_ram_bytes": 23164256256, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215696384, "process_count": 2}
{"epoch_s": 1790180039.3049123, "available_ram_bytes": 23167406080, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215696384, "process_count": 2}
{"epoch_s": 1790180039.8068466, "available_ram_bytes": 23180496896, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215704576, "process_count": 2}
{"epoch_s": 1790180040.3086576, "available_ram_bytes": 23191920640, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215704576, "process_count": 2}
{"epoch_s": 1790180040.810928, "available_ram_bytes": 23191920640, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215704576, "process_count": 2}
{"epoch_s": 1790180041.3125293, "available_ram_bytes": 23161004032, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14248570880, "process_count": 2}
{"epoch_s": 1790180041.8137271, "available_ram_bytes": 23129677824, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14287917056, "process_count": 2}
{"epoch_s": 1790180042.3148062, "available_ram_bytes": 23057743872, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14367002624, "process_count": 2}
{"epoch_s": 1790180042.8161454, "available_ram_bytes": 22975053824, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14455214080, "process_count": 2}
{"epoch_s": 1790180043.318138, "available_ram_bytes": 22867935232, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14558240768, "process_count": 2}
{"epoch_s": 1790180043.8199563, "available_ram_bytes": 22710165504, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14721323008, "process_count": 2}
{"epoch_s": 1790180044.3213813, "available_ram_bytes": 22633635840, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808678400, "process_count": 2}
{"epoch_s": 1790180044.8230984, "available_ram_bytes": 22633361408, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808678400, "process_count": 2}
{"epoch_s": 1790180045.3250556, "available_ram_bytes": 22637981696, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808678400, "process_count": 2}
{"epoch_s": 1790180045.8270006, "available_ram_bytes": 22629781504, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14810968064, "process_count": 2}
{"epoch_s": 1790180046.3280437, "available_ram_bytes": 22800314368, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14605975552, "process_count": 2}
{"epoch_s": 1790180046.829152, "available_ram_bytes": 29671096320, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 1120518144, "process_count": 2}
{"epoch_s": 1790180047.3303888, "available_ram_bytes": 29951459328, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 6883553280, "process_count": 2}
{"epoch_s": 1790180047.8315663, "available_ram_bytes": 28787150848, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 8056152064, "process_count": 2}
{"epoch_s": 1790180048.3330727, "available_ram_bytes": 27771760640, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 9106735104, "process_count": 2}
{"epoch_s": 1790180048.8343332, "available_ram_bytes": 26708344832, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 10757492736, "process_count": 2}
{"epoch_s": 1790180049.3354745, "available_ram_bytes": 25767149568, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 11702153216, "process_count": 2}
{"epoch_s": 1790180049.837385, "available_ram_bytes": 25565872128, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 11900923904, "process_count": 2}
{"epoch_s": 1790180050.3392477, "available_ram_bytes": 24286093312, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 13161897984, "process_count": 2}
{"epoch_s": 1790180050.8405807, "available_ram_bytes": 23749353472, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 13705564160, "process_count": 2}
{"epoch_s": 1790180051.34207, "available_ram_bytes": 23270531072, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14184624128, "process_count": 2}
{"epoch_s": 1790180051.844166, "available_ram_bytes": 23273148416, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14049247232, "process_count": 2}
{"epoch_s": 1790180052.3458622, "available_ram_bytes": 23268315136, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14055907328, "process_count": 2}
{"epoch_s": 1790180052.8472757, "available_ram_bytes": 23265054720, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14064705536, "process_count": 2}
{"epoch_s": 1790180053.349606, "available_ram_bytes": 23271579648, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14067798016, "process_count": 2}
{"epoch_s": 1790180053.8510172, "available_ram_bytes": 23271579648, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14067798016, "process_count": 2}
{"epoch_s": 1790180054.3531678, "available_ram_bytes": 23242399744, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14166736896, "process_count": 2}
{"epoch_s": 1790180054.854847, "available_ram_bytes": 23217426432, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203723776, "process_count": 2}
{"epoch_s": 1790180055.3567157, "available_ram_bytes": 23217963008, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203723776, "process_count": 2}
{"epoch_s": 1790180055.8579981, "available_ram_bytes": 23217963008, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203723776, "process_count": 2}
{"epoch_s": 1790180056.3593967, "available_ram_bytes": 23217963008, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203723776, "process_count": 2}
{"epoch_s": 1790180056.861432, "available_ram_bytes": 23218933760, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203723776, "process_count": 2}
{"epoch_s": 1790180057.3632452, "available_ram_bytes": 23218933760, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203723776, "process_count": 2}
{"epoch_s": 1790180057.8650901, "available_ram_bytes": 23216324608, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14208331776, "process_count": 2}
{"epoch_s": 1790180058.367001, "available_ram_bytes": 23218913280, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14208331776, "process_count": 2}
{"epoch_s": 1790180058.8690398, "available_ram_bytes": 23220047872, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14208331776, "process_count": 2}
{"epoch_s": 1790180059.370662, "available_ram_bytes": 23224905728, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14209605632, "process_count": 2}
{"epoch_s": 1790180059.872423, "available_ram_bytes": 23225774080, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215806976, "process_count": 2}
{"epoch_s": 1790180060.3737862, "available_ram_bytes": 23234277376, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215806976, "process_count": 2}
{"epoch_s": 1790180060.8751416, "available_ram_bytes": 23234277376, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215811072, "process_count": 2}
{"epoch_s": 1790180061.3773022, "available_ram_bytes": 23237419008, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215815168, "process_count": 2}
{"epoch_s": 1790180061.8786318, "available_ram_bytes": 23238606848, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215815168, "process_count": 2}
{"epoch_s": 1790180062.3806567, "available_ram_bytes": 23246286848, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14218330112, "process_count": 2}
{"epoch_s": 1790180062.882427, "available_ram_bytes": 23190454272, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14274846720, "process_count": 2}
{"epoch_s": 1790180063.3841507, "available_ram_bytes": 23132622848, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14327775232, "process_count": 2}
{"epoch_s": 1790180063.885586, "available_ram_bytes": 23066726400, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14405529600, "process_count": 2}
{"epoch_s": 1790180064.3867018, "available_ram_bytes": 22992527360, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14481903616, "process_count": 2}
{"epoch_s": 1790180064.887966, "available_ram_bytes": 22865604608, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14610255872, "process_count": 2}
{"epoch_s": 1790180065.3896685, "available_ram_bytes": 22708527104, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14775959552, "process_count": 2}
{"epoch_s": 1790180065.8909125, "available_ram_bytes": 22675238912, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808776704, "process_count": 2}
{"epoch_s": 1790180066.3925376, "available_ram_bytes": 22674956288, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808776704, "process_count": 2}
{"epoch_s": 1790180066.8940053, "available_ram_bytes": 22678859776, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808776704, "process_count": 2}
{"epoch_s": 1790180067.3955534, "available_ram_bytes": 22673502208, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14792073216, "process_count": 2}
{"epoch_s": 1790180067.8967292, "available_ram_bytes": 22650974208, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14816088064, "process_count": 2}
{"epoch_s": 1790180068.398575, "available_ram_bytes": 22651023360, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14816088064, "process_count": 2}
{"epoch_s": 1790180068.9003847, "available_ram_bytes": 22654652416, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14816088064, "process_count": 2}
{"epoch_s": 1790180069.4019253, "available_ram_bytes": 22654652416, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14820032512, "process_count": 2}
{"epoch_s": 1790180069.903146, "available_ram_bytes": 27837562880, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 8988045312, "process_count": 2}
{"epoch_s": 1790180070.4048138, "available_ram_bytes": 30345068544, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 6544285696, "process_count": 2}
{"epoch_s": 1790180070.9063983, "available_ram_bytes": 29081493504, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 7808143360, "process_count": 2}
{"epoch_s": 1790180071.4079542, "available_ram_bytes": 27820781568, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 9070321664, "process_count": 2}
{"epoch_s": 1790180071.9097698, "available_ram_bytes": 26977652736, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 9877364736, "process_count": 2}
{"epoch_s": 1790180072.4112747, "available_ram_bytes": 25681707008, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 11784867840, "process_count": 2}
{"epoch_s": 1790180072.9123921, "available_ram_bytes": 25533751296, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 11935031296, "process_count": 2}
{"epoch_s": 1790180073.4135802, "available_ram_bytes": 24699461632, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 12772081664, "process_count": 2}
{"epoch_s": 1790180073.914841, "available_ram_bytes": 24179494912, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 13286969344, "process_count": 2}
{"epoch_s": 1790180074.4159987, "available_ram_bytes": 23626153984, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 13836169216, "process_count": 2}
{"epoch_s": 1790180074.9172964, "available_ram_bytes": 23279992832, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14049034240, "process_count": 2}
{"epoch_s": 1790180075.4184766, "available_ram_bytes": 23285952512, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14055755776, "process_count": 2}
{"epoch_s": 1790180075.919971, "available_ram_bytes": 23279415296, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14064553984, "process_count": 2}
{"epoch_s": 1790180076.4215882, "available_ram_bytes": 23277043712, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14067646464, "process_count": 2}
{"epoch_s": 1790180076.9236088, "available_ram_bytes": 23283752960, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14067646464, "process_count": 2}
{"epoch_s": 1790180077.4255779, "available_ram_bytes": 23150538752, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203510784, "process_count": 2}
{"epoch_s": 1790180077.927155, "available_ram_bytes": 23156707328, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203510784, "process_count": 2}
{"epoch_s": 1790180078.4287627, "available_ram_bytes": 23157010432, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203510784, "process_count": 2}
{"epoch_s": 1790180078.9305642, "available_ram_bytes": 23161286656, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203510784, "process_count": 2}
{"epoch_s": 1790180079.4326067, "available_ram_bytes": 23161286656, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203510784, "process_count": 2}
{"epoch_s": 1790180079.9347186, "available_ram_bytes": 23173738496, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203510784, "process_count": 2}
{"epoch_s": 1790180080.4365733, "available_ram_bytes": 23171780608, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14208184320, "process_count": 2}
{"epoch_s": 1790180080.9382734, "available_ram_bytes": 23175335936, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14208184320, "process_count": 2}
{"epoch_s": 1790180081.4398205, "available_ram_bytes": 23175749632, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14208184320, "process_count": 2}
{"epoch_s": 1790180081.9416888, "available_ram_bytes": 23178584064, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14208184320, "process_count": 2}
{"epoch_s": 1790180082.4430034, "available_ram_bytes": 23173984256, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215659520, "process_count": 2}
{"epoch_s": 1790180082.9450893, "available_ram_bytes": 23184015360, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215659520, "process_count": 2}
{"epoch_s": 1790180083.4469008, "available_ram_bytes": 23185645568, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215659520, "process_count": 2}
{"epoch_s": 1790180083.9483182, "available_ram_bytes": 23185645568, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215663616, "process_count": 2}
{"epoch_s": 1790180084.449663, "available_ram_bytes": 23195836416, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215663616, "process_count": 2}
{"epoch_s": 1790180084.9517589, "available_ram_bytes": 23198081024, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14218182656, "process_count": 2}
{"epoch_s": 1790180085.453907, "available_ram_bytes": 23197753344, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14290763776, "process_count": 2}
{"epoch_s": 1790180085.9551184, "available_ram_bytes": 23123951616, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14393327616, "process_count": 2}
{"epoch_s": 1790180086.456377, "available_ram_bytes": 23025147904, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14495481856, "process_count": 2}
{"epoch_s": 1790180086.9579372, "available_ram_bytes": 22837006336, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14679830528, "process_count": 2}
{"epoch_s": 1790180087.4598887, "available_ram_bytes": 22706708480, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808797184, "process_count": 2}
{"epoch_s": 1790180087.9618795, "available_ram_bytes": 22700249088, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808629248, "process_count": 2}
{"epoch_s": 1790180088.4630897, "available_ram_bytes": 22700630016, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808629248, "process_count": 2}
{"epoch_s": 1790180088.964292, "available_ram_bytes": 22701400064, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808629248, "process_count": 2}
{"epoch_s": 1790180089.4661238, "available_ram_bytes": 22665289728, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14816882688, "process_count": 2}
{"epoch_s": 1790180089.967958, "available_ram_bytes": 22665248768, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14815940608, "process_count": 2}
{"epoch_s": 1790180090.4695494, "available_ram_bytes": 22666088448, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14815940608, "process_count": 2}
{"epoch_s": 1790180090.97075, "available_ram_bytes": 22666629120, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14815940608, "process_count": 2}
{"epoch_s": 1790180091.4718428, "available_ram_bytes": 22888005632, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14562283520, "process_count": 2}
{"epoch_s": 1790180091.9733298, "available_ram_bytes": 30290145280, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 1120522240, "process_count": 2}
{"epoch_s": 1790180092.474445, "available_ram_bytes": 29857157120, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 6987898880, "process_count": 2}
{"epoch_s": 1790180092.976038, "available_ram_bytes": 28545331200, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 8296738816, "process_count": 2}
{"epoch_s": 1790180093.47723, "available_ram_bytes": 27249070080, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 9568960512, "process_count": 2}
{"epoch_s": 1790180093.9783888, "available_ram_bytes": 26234630144, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 11187376128, "process_count": 2}
{"epoch_s": 1790180094.4797084, "available_ram_bytes": 26039885824, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 11384451072, "process_count": 2}
{"epoch_s": 1790180094.9809656, "available_ram_bytes": 24801697792, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 12629778432, "process_count": 2}
{"epoch_s": 1790180095.4822993, "available_ram_bytes": 24017436672, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 13409570816, "process_count": 2}
{"epoch_s": 1790180095.9839036, "available_ram_bytes": 23505354752, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 13934301184, "process_count": 2}
{"epoch_s": 1790180096.4860759, "available_ram_bytes": 23259066368, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14049140736, "process_count": 2}
{"epoch_s": 1790180096.9883158, "available_ram_bytes": 23259066368, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14049140736, "process_count": 2}
{"epoch_s": 1790180097.4898002, "available_ram_bytes": 23264202752, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14055792640, "process_count": 2}
{"epoch_s": 1790180097.992284, "available_ram_bytes": 23256748032, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14064590848, "process_count": 2}
{"epoch_s": 1790180098.494676, "available_ram_bytes": 23258378240, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14064590848, "process_count": 2}
{"epoch_s": 1790180098.9964411, "available_ram_bytes": 23255769088, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14067683328, "process_count": 2}
{"epoch_s": 1790180099.4980946, "available_ram_bytes": 23256543232, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14067683328, "process_count": 2}
{"epoch_s": 1790180100.0000045, "available_ram_bytes": 23138029568, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203609088, "process_count": 2}
{"epoch_s": 1790180100.501756, "available_ram_bytes": 23138668544, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203609088, "process_count": 2}
{"epoch_s": 1790180101.0038073, "available_ram_bytes": 23138668544, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203609088, "process_count": 2}
{"epoch_s": 1790180101.505895, "available_ram_bytes": 23148285952, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203609088, "process_count": 2}
{"epoch_s": 1790180102.0079017, "available_ram_bytes": 23148285952, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203609088, "process_count": 2}
{"epoch_s": 1790180102.5096228, "available_ram_bytes": 23149850624, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203609088, "process_count": 2}
{"epoch_s": 1790180103.0111113, "available_ram_bytes": 23149850624, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203674624, "process_count": 2}
{"epoch_s": 1790180103.5129225, "available_ram_bytes": 23161032704, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14208282624, "process_count": 2}
{"epoch_s": 1790180104.0142295, "available_ram_bytes": 23161196544, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14208282624, "process_count": 2}
{"epoch_s": 1790180104.515979, "available_ram_bytes": 23161503744, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14208282624, "process_count": 2}
{"epoch_s": 1790180105.017592, "available_ram_bytes": 23159267328, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14212874240, "process_count": 2}
{"epoch_s": 1790180105.519307, "available_ram_bytes": 23157260288, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215757824, "process_count": 2}
{"epoch_s": 1790180106.0211256, "available_ram_bytes": 23157260288, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215757824, "process_count": 2}
{"epoch_s": 1790180106.5223768, "available_ram_bytes": 23158415360, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215766016, "process_count": 2}
{"epoch_s": 1790180107.0241888, "available_ram_bytes": 23158415360, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215766016, "process_count": 2}
{"epoch_s": 1790180107.5262907, "available_ram_bytes": 23173816320, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215766016, "process_count": 2}
{"epoch_s": 1790180108.0285652, "available_ram_bytes": 23177588736, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14218280960, "process_count": 2}
{"epoch_s": 1790180108.5305219, "available_ram_bytes": 23120158720, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14274797568, "process_count": 2}
{"epoch_s": 1790180109.0322523, "available_ram_bytes": 23079071744, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14314340352, "process_count": 2}
{"epoch_s": 1790180109.534356, "available_ram_bytes": 22996525056, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14406922240, "process_count": 2}
{"epoch_s": 1790180110.036219, "available_ram_bytes": 22897446912, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14502993920, "process_count": 2}
{"epoch_s": 1790180110.537992, "available_ram_bytes": 22699552768, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14702481408, "process_count": 2}
{"epoch_s": 1790180111.0395548, "available_ram_bytes": 22588764160, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808895488, "process_count": 2}
{"epoch_s": 1790180111.5408125, "available_ram_bytes": 22600404992, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808727552, "process_count": 2}
{"epoch_s": 1790180112.0425568, "available_ram_bytes": 22600273920, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808727552, "process_count": 2}
{"epoch_s": 1790180112.5444922, "available_ram_bytes": 22600404992, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808727552, "process_count": 2}
{"epoch_s": 1790180113.0461993, "available_ram_bytes": 22564622336, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14816980992, "process_count": 2}
{"epoch_s": 1790180113.5477188, "available_ram_bytes": 22563295232, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14816038912, "process_count": 2}
{"epoch_s": 1790180114.0491395, "available_ram_bytes": 22563295232, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14816038912, "process_count": 2}
{"epoch_s": 1790180114.550405, "available_ram_bytes": 22563295232, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14816038912, "process_count": 2}
{"epoch_s": 1790180115.0525167, "available_ram_bytes": 22563295232, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14820102144, "process_count": 2}
{"epoch_s": 1790180115.5540361, "available_ram_bytes": 27864313856, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 8880992256, "process_count": 2}
{"epoch_s": 1790180116.0556593, "available_ram_bytes": 30273368064, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 6523912192, "process_count": 2}
{"epoch_s": 1790180116.5658941, "available_ram_bytes": 28985417728, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 7812251648, "process_count": 2}
{"epoch_s": 1790180117.067093, "available_ram_bytes": 27979042816, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 8822386688, "process_count": 2}
{"epoch_s": 1790180117.5681438, "available_ram_bytes": 26921791488, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 9844543488, "process_count": 2}
{"epoch_s": 1790180118.069974, "available_ram_bytes": 26171473920, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 11202068480, "process_count": 2}
{"epoch_s": 1790180118.5713816, "available_ram_bytes": 26080444416, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 11284840448, "process_count": 2}
{"epoch_s": 1790180119.0734305, "available_ram_bytes": 24800526336, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 12573151232, "process_count": 2}
{"epoch_s": 1790180119.5748253, "available_ram_bytes": 24122380288, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 13248434176, "process_count": 2}
{"epoch_s": 1790180120.0764496, "available_ram_bytes": 23627718656, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 13744422912, "process_count": 2}
{"epoch_s": 1790180120.5777917, "available_ram_bytes": 23157239808, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14218919936, "process_count": 2}
{"epoch_s": 1790180121.0792432, "available_ram_bytes": 23202254848, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14049116160, "process_count": 2}
{"epoch_s": 1790180121.5808513, "available_ram_bytes": 23213629440, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14049116160, "process_count": 2}
{"epoch_s": 1790180122.0832043, "available_ram_bytes": 23207665664, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14064504832, "process_count": 2}
{"epoch_s": 1790180122.5852277, "available_ram_bytes": 23207608320, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14064504832, "process_count": 2}
{"epoch_s": 1790180123.0866923, "available_ram_bytes": 23206490112, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14067597312, "process_count": 2}
{"epoch_s": 1790180123.5882876, "available_ram_bytes": 23224147968, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14067597312, "process_count": 2}
{"epoch_s": 1790180124.09024, "available_ram_bytes": 23193534464, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14094471168, "process_count": 2}
{"epoch_s": 1790180124.5918798, "available_ram_bytes": 23135215616, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203555840, "process_count": 2}
{"epoch_s": 1790180125.0936174, "available_ram_bytes": 23135215616, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203555840, "process_count": 2}
{"epoch_s": 1790180125.595323, "available_ram_bytes": 23143571456, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203555840, "process_count": 2}
{"epoch_s": 1790180126.097259, "available_ram_bytes": 23149780992, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203555840, "process_count": 2}
{"epoch_s": 1790180126.5985465, "available_ram_bytes": 23150542848, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203555840, "process_count": 2}
{"epoch_s": 1790180127.100305, "available_ram_bytes": 23150542848, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203555840, "process_count": 2}
{"epoch_s": 1790180127.6019535, "available_ram_bytes": 23161880576, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14208229376, "process_count": 2}
{"epoch_s": 1790180128.1036627, "available_ram_bytes": 23161880576, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14208229376, "process_count": 2}
{"epoch_s": 1790180128.6052778, "available_ram_bytes": 23168450560, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14208229376, "process_count": 2}
{"epoch_s": 1790180129.106795, "available_ram_bytes": 23166959616, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14212820992, "process_count": 2}
{"epoch_s": 1790180129.6086318, "available_ram_bytes": 23174275072, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215704576, "process_count": 2}
{"epoch_s": 1790180130.1103463, "available_ram_bytes": 23174275072, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215704576, "process_count": 2}
{"epoch_s": 1790180130.611488, "available_ram_bytes": 23182786560, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215712768, "process_count": 2}
{"epoch_s": 1790180131.1136029, "available_ram_bytes": 23187152896, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215712768, "process_count": 2}
{"epoch_s": 1790180131.6151264, "available_ram_bytes": 23196160000, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215712768, "process_count": 2}
{"epoch_s": 1790180132.1168327, "available_ram_bytes": 23195365376, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14218227712, "process_count": 2}
{"epoch_s": 1790180132.6187072, "available_ram_bytes": 23154823168, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14257393664, "process_count": 2}
{"epoch_s": 1790180133.119828, "available_ram_bytes": 23121883136, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14293692416, "process_count": 2}
{"epoch_s": 1790180133.6211233, "available_ram_bytes": 23047729152, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14367010816, "process_count": 2}
{"epoch_s": 1790180134.1222575, "available_ram_bytes": 22965370880, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14453305344, "process_count": 2}
{"epoch_s": 1790180134.6234617, "available_ram_bytes": 22866022400, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14552481792, "process_count": 2}
{"epoch_s": 1790180135.125171, "available_ram_bytes": 22717673472, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14702428160, "process_count": 2}
{"epoch_s": 1790180135.6270065, "available_ram_bytes": 22621495296, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808674304, "process_count": 2}
{"epoch_s": 1790180136.1287675, "available_ram_bytes": 22621495296, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808674304, "process_count": 2}
{"epoch_s": 1790180136.6300004, "available_ram_bytes": 22622408704, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808674304, "process_count": 2}
{"epoch_s": 1790180137.131496, "available_ram_bytes": 22622408704, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808674304, "process_count": 2}
{"epoch_s": 1790180137.6332994, "available_ram_bytes": 22576193536, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14815985664, "process_count": 2}
{"epoch_s": 1790180138.1343749, "available_ram_bytes": 22578802688, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14815985664, "process_count": 2}
{"epoch_s": 1790180138.6361399, "available_ram_bytes": 22579412992, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14815985664, "process_count": 2}
{"epoch_s": 1790180139.137722, "available_ram_bytes": 22577922048, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14818275328, "process_count": 2}
{"epoch_s": 1790180139.638899, "available_ram_bytes": 24266231808, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 12510797824, "process_count": 2}
{"epoch_s": 1790180140.1400008, "available_ram_bytes": 30636867584, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 1152167936, "process_count": 2}
{"epoch_s": 1790180140.6410885, "available_ram_bytes": 29683666944, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 7116427264, "process_count": 2}
{"epoch_s": 1790180141.1422915, "available_ram_bytes": 28637032448, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 8166146048, "process_count": 2}
{"epoch_s": 1790180141.643411, "available_ram_bytes": 27398197248, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 9407901696, "process_count": 2}
{"epoch_s": 1790180142.1444883, "available_ram_bytes": 26410905600, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 10981896192, "process_count": 2}
{"epoch_s": 1790180142.64564, "available_ram_bytes": 25535807488, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 11846844416, "process_count": 2}
{"epoch_s": 1790180143.1467931, "available_ram_bytes": 25234460672, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 12153491456, "process_count": 2}
{"epoch_s": 1790180143.6479642, "available_ram_bytes": 25125949440, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 12270006272, "process_count": 2}
{"epoch_s": 1790180144.1496143, "available_ram_bytes": 24046264320, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 13351030784, "process_count": 2}
{"epoch_s": 1790180144.6507487, "available_ram_bytes": 23395622912, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14013259776, "process_count": 2}
{"epoch_s": 1790180145.15267, "available_ram_bytes": 23241039872, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14048882688, "process_count": 2}
{"epoch_s": 1790180145.6543403, "available_ram_bytes": 23241404416, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14055477248, "process_count": 2}
{"epoch_s": 1790180146.156591, "available_ram_bytes": 23234965504, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14064275456, "process_count": 2}
{"epoch_s": 1790180146.6582088, "available_ram_bytes": 23241682944, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14067367936, "process_count": 2}
{"epoch_s": 1790180147.1606534, "available_ram_bytes": 23249580032, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14067367936, "process_count": 2}
{"epoch_s": 1790180147.6629229, "available_ram_bytes": 23249293312, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14067367936, "process_count": 2}
{"epoch_s": 1790180148.1654754, "available_ram_bytes": 23116079104, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203326464, "process_count": 2}
{"epoch_s": 1790180148.6677437, "available_ram_bytes": 23124135936, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203326464, "process_count": 2}
{"epoch_s": 1790180149.169954, "available_ram_bytes": 23131070464, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203326464, "process_count": 2}
{"epoch_s": 1790180149.6721582, "available_ram_bytes": 23131070464, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203326464, "process_count": 2}
{"epoch_s": 1790180150.1740234, "available_ram_bytes": 23140184064, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203326464, "process_count": 2}
{"epoch_s": 1790180150.6759796, "available_ram_bytes": 23150477312, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203326464, "process_count": 2}
{"epoch_s": 1790180151.1775672, "available_ram_bytes": 23150993408, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203326464, "process_count": 2}
{"epoch_s": 1790180151.6791773, "available_ram_bytes": 23169650688, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14203392000, "process_count": 2}
{"epoch_s": 1790180152.1803722, "available_ram_bytes": 23164624896, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14208000000, "process_count": 2}
{"epoch_s": 1790180152.68165, "available_ram_bytes": 23167606784, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14208000000, "process_count": 2}
{"epoch_s": 1790180153.1829247, "available_ram_bytes": 23167873024, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14208000000, "process_count": 2}
{"epoch_s": 1790180153.6845937, "available_ram_bytes": 23177834496, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14212591616, "process_count": 2}
{"epoch_s": 1790180154.1862566, "available_ram_bytes": 23174938624, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215475200, "process_count": 2}
{"epoch_s": 1790180154.6879034, "available_ram_bytes": 23177568256, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215475200, "process_count": 2}
{"epoch_s": 1790180155.1897864, "available_ram_bytes": 23177281536, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215475200, "process_count": 2}
{"epoch_s": 1790180155.6918178, "available_ram_bytes": 23193673728, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215479296, "process_count": 2}
{"epoch_s": 1790180156.1935894, "available_ram_bytes": 23193780224, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14215479296, "process_count": 2}
{"epoch_s": 1790180156.6953588, "available_ram_bytes": 23204642816, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14216048640, "process_count": 2}
{"epoch_s": 1790180157.197019, "available_ram_bytes": 23166492672, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14258606080, "process_count": 2}
{"epoch_s": 1790180157.6987557, "available_ram_bytes": 23095590912, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14330327040, "process_count": 2}
{"epoch_s": 1790180158.1999187, "available_ram_bytes": 22997098496, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14416621568, "process_count": 2}
{"epoch_s": 1790180158.7010546, "available_ram_bytes": 22925561856, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14502711296, "process_count": 2}
{"epoch_s": 1790180159.2022262, "available_ram_bytes": 22738501632, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14690295808, "process_count": 2}
{"epoch_s": 1790180159.7040324, "available_ram_bytes": 22636675072, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808612864, "process_count": 2}
{"epoch_s": 1790180160.2057953, "available_ram_bytes": 22635835392, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808444928, "process_count": 2}
{"epoch_s": 1790180160.7078283, "available_ram_bytes": 22643920896, "used_swap_bytes": 993800192, "summed_process_tree_rss_bytes": 14808444928, "process_count": 2}
{"epoch_s": 1790180161.2098587, "available_ram_bytes": 22644359168, "used_swap_bytes": 993796096, "summed_process_tree_rss_bytes": 14808444928, "process_count": 2}
{"epoch_s": 1790180161.711978, "available_ram_bytes": 22605262848, "used_swap_bytes": 993796096, "summed_process_tree_rss_bytes": 14816698368, "process_count": 2}
{"epoch_s": 1790180162.2137554, "available_ram_bytes": 22604165120, "used_swap_bytes": 993796096, "summed_process_tree_rss_bytes": 14815756288, "process_count": 2}
{"epoch_s": 1790180162.7149982, "available_ram_bytes": 22612729856, "used_swap_bytes": 993796096, "summed_process_tree_rss_bytes": 14815756288, "process_count": 2}
{"epoch_s": 1790180163.2163022, "available_ram_bytes": 22612860928, "used_swap_bytes": 993796096, "summed_process_tree_rss_bytes": 14818045952, "process_count": 2}
{"epoch_s": 1790180163.7179615, "available_ram_bytes": 23417827328, "used_swap_bytes": 993796096, "summed_process_tree_rss_bytes": 13393735680, "process_count": 2}
{"epoch_s": 1790180164.2191293, "available_ram_bytes": 30702952448, "used_swap_bytes": 993796096, "summed_process_tree_rss_bytes": 1120526336, "process_count": 2}
{"epoch_s": 1790180164.720271, "available_ram_bytes": 30000238592, "used_swap_bytes": 993796096, "summed_process_tree_rss_bytes": 6724067328, "process_count": 2}
{"epoch_s": 1790180165.2215667, "available_ram_bytes": 29057486848, "used_swap_bytes": 993796096, "summed_process_tree_rss_bytes": 7788085248, "process_count": 2}
{"epoch_s": 1790180165.7226799, "available_ram_bytes": 28083924992, "used_swap_bytes": 993796096, "summed_process_tree_rss_bytes": 8764235776, "process_count": 2}
{"epoch_s": 1790180166.2241468, "available_ram_bytes": 26941489152, "used_swap_bytes": 993796096, "summed_process_tree_rss_bytes": 9872142336, "process_count": 2}
{"epoch_s": 1790180166.7253475, "available_ram_bytes": 26444382208, "used_swap_bytes": 993796096, "summed_process_tree_rss_bytes": 10992971776, "process_count": 2}
{"epoch_s": 1790180167.2264473, "available_ram_bytes": 25562210304, "used_swap_bytes": 993796096, "summed_process_tree_rss_bytes": 11866451968, "process_count": 2}
{"epoch_s": 1790180167.7275913, "available_ram_bytes": 25191059456, "used_swap_bytes": 993796096, "summed_process_tree_rss_bytes": 12242944000, "process_count": 2}
{"epoch_s": 1790180168.2288418, "available_ram_bytes": 25179340800, "used_swap_bytes": 993796096, "summed_process_tree_rss_bytes": 12255801344, "process_count": 2}
{"epoch_s": 1790180168.730426, "available_ram_bytes": 24161157120, "used_swap_bytes": 993796096, "summed_process_tree_rss_bytes": 13278720000, "process_count": 2}
{"epoch_s": 1790180169.2315853, "available_ram_bytes": 23633608704, "used_swap_bytes": 993796096, "summed_process_tree_rss_bytes": 13807501312, "process_count": 2}
{"epoch_s": 1790180169.7334878, "available_ram_bytes": 23253360640, "used_swap_bytes": 993796096, "summed_process_tree_rss_bytes": 14049050624, "process_count": 2}
{"epoch_s": 1790180170.2353427, "available_ram_bytes": 23254859776, "used_swap_bytes": 993796096, "summed_process_tree_rss_bytes": 14055673856, "process_count": 2}
{"epoch_s": 1790180170.7373133, "available_ram_bytes": 23259938816, "used_swap_bytes": 993796096, "summed_process_tree_rss_bytes": 14064472064, "process_count": 2}
{"epoch_s": 1790180171.238921, "available_ram_bytes": 23258181632, "used_swap_bytes": 993796096, "summed_process_tree_rss_bytes": 14067564544, "process_count": 2}
{"epoch_s": 1790180171.740754, "available_ram_bytes": 23267573760, "used_swap_bytes": 993796096, "summed_process_tree_rss_bytes": 14067564544, "process_count": 2}
{"epoch_s": 1790180172.24258, "available_ram_bytes": 23158276096, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14203547648, "process_count": 2}
{"epoch_s": 1790180172.7442913, "available_ram_bytes": 23158407168, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14203547648, "process_count": 2}
{"epoch_s": 1790180173.246062, "available_ram_bytes": 23159918592, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14203547648, "process_count": 2}
{"epoch_s": 1790180173.7479053, "available_ram_bytes": 23168684032, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14203547648, "process_count": 2}
{"epoch_s": 1790180174.2497227, "available_ram_bytes": 23169159168, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14203547648, "process_count": 2}
{"epoch_s": 1790180174.7516866, "available_ram_bytes": 23169159168, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14203547648, "process_count": 2}
{"epoch_s": 1790180175.2540984, "available_ram_bytes": 23164805120, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14208221184, "process_count": 2}
{"epoch_s": 1790180175.7561116, "available_ram_bytes": 23179116544, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14208221184, "process_count": 2}
{"epoch_s": 1790180176.257492, "available_ram_bytes": 23178944512, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14208221184, "process_count": 2}
{"epoch_s": 1790180176.759248, "available_ram_bytes": 23178944512, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14208221184, "process_count": 2}
{"epoch_s": 1790180177.2610254, "available_ram_bytes": 23173566464, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14215696384, "process_count": 2}
{"epoch_s": 1790180177.7628276, "available_ram_bytes": 23181680640, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14215696384, "process_count": 2}
{"epoch_s": 1790180178.264957, "available_ram_bytes": 23181938688, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14215704576, "process_count": 2}
{"epoch_s": 1790180178.7671225, "available_ram_bytes": 23186952192, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14215704576, "process_count": 2}
{"epoch_s": 1790180179.2687712, "available_ram_bytes": 23187230720, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14215704576, "process_count": 2}
{"epoch_s": 1790180179.7704957, "available_ram_bytes": 23194923008, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14218223616, "process_count": 2}
{"epoch_s": 1790180180.2721372, "available_ram_bytes": 23108292608, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14296776704, "process_count": 2}
{"epoch_s": 1790180180.7739651, "available_ram_bytes": 23009452032, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14396252160, "process_count": 2}
{"epoch_s": 1790180181.275083, "available_ram_bytes": 22902575104, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14498611200, "process_count": 2}
{"epoch_s": 1790180181.7770166, "available_ram_bytes": 22699974656, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14702424064, "process_count": 2}
{"epoch_s": 1790180182.278595, "available_ram_bytes": 22598914048, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14808842240, "process_count": 2}
{"epoch_s": 1790180182.780568, "available_ram_bytes": 22596182016, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14808670208, "process_count": 2}
{"epoch_s": 1790180183.2824786, "available_ram_bytes": 22596702208, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14808670208, "process_count": 2}
{"epoch_s": 1790180183.7844079, "available_ram_bytes": 22606143488, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14808670208, "process_count": 2}
{"epoch_s": 1790180184.2871275, "available_ram_bytes": 22565715968, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14816927744, "process_count": 2}
{"epoch_s": 1790180184.7883496, "available_ram_bytes": 22565634048, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14815981568, "process_count": 2}
{"epoch_s": 1790180185.290269, "available_ram_bytes": 22567600128, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14815981568, "process_count": 2}
{"epoch_s": 1790180185.792061, "available_ram_bytes": 22567485440, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 14818271232, "process_count": 2}
{"epoch_s": 1790180186.2935228, "available_ram_bytes": 23523688448, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 13236531200, "process_count": 2}
{"epoch_s": 1790180186.794616, "available_ram_bytes": 30660202496, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 1120530432, "process_count": 1}
{"epoch_s": 1790180187.296297, "available_ram_bytes": 30657941504, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 1121316864, "process_count": 1}
{"epoch_s": 1790180187.797423, "available_ram_bytes": 30667931648, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 1121660928, "process_count": 1}
{"epoch_s": 1790180188.2987688, "available_ram_bytes": 30667788288, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 1120927744, "process_count": 1}
{"epoch_s": 1790180188.7998242, "available_ram_bytes": 30674092032, "used_swap_bytes": 993767424, "summed_process_tree_rss_bytes": 1154506752, "process_count": 1}
@@ -0,0 +1,57 @@
INFO 09-24 00:17:15 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed.
INFO 09-24 00:17:16 [patch.py:510] inductor factorable-divisibility patch: installed.
INFO 09-24 00:17:16 [patch.py:589] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms.
INFO 09-24 00:17:16 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn
WARNING 09-24 00:17:16 [stage_init_utils.py:1887] [stage_init] Failed to load transfer config: [Errno 21] Is a directory: '/home/zhout/project/edge_infer/vllm-omni-edge'
ERROR 09-24 00:17:21 [stage_runtime.py:265] [StageRuntime] Stage initialization failed; shutting down 0 initialized client(s)
ERROR 09-24 00:17:21 [stage_runtime.py:265] Traceback (most recent call last):
ERROR 09-24 00:17:21 [stage_runtime.py:265] File "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/engine/stage_runtime.py", line 252, in initialize
ERROR 09-24 00:17:21 [stage_runtime.py:265] initialized_clients = self._initialize_stage_replicas(stage_plans, self._stage_init_timeout)
ERROR 09-24 00:17:21 [stage_runtime.py:265] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR 09-24 00:17:21 [stage_runtime.py:265] File "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/engine/stage_runtime.py", line 589, in _initialize_stage_replicas
ERROR 09-24 00:17:21 [stage_runtime.py:265] raise primary_exc
ERROR 09-24 00:17:21 [stage_runtime.py:265] File "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/engine/stage_runtime.py", line 550, in _init_group
ERROR 09-24 00:17:21 [stage_runtime.py:265] client = self._initialize_replica(
ERROR 09-24 00:17:21 [stage_runtime.py:265] ^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR 09-24 00:17:21 [stage_runtime.py:265] File "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/engine/stage_runtime.py", line 817, in _initialize_replica
ERROR 09-24 00:17:21 [stage_runtime.py:265] return create_graph_client(
ERROR 09-24 00:17:21 [stage_runtime.py:265] ^^^^^^^^^^^^^^^^^^^^
ERROR 09-24 00:17:21 [stage_runtime.py:265] File "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/engine/backends/__init__.py", line 27, in create_graph_client
ERROR 09-24 00:17:21 [stage_runtime.py:265] return MiniCPMOCppStageClient(metadata, backend, ledger, reservation)
ERROR 09-24 00:17:21 [stage_runtime.py:265] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR 09-24 00:17:21 [stage_runtime.py:265] File "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/engine/backends/minicpmo_cpp.py", line 208, in __init__
ERROR 09-24 00:17:21 [stage_runtime.py:265] raise ResourceUnavailable("MiniCPM-o weights, state/workspace, I/O and headroom exceed reservation")
ERROR 09-24 00:17:21 [stage_runtime.py:265] vllm_omni.engine.resource_ledger.ResourceUnavailable: MiniCPM-o weights, state/workspace, I/O and headroom exceed reservation
{
"scope": "MiniCPM-o GGUF complete audio+image\u2192text+speech through Omni StageRuntime/StagePool",
"placement": "cpu",
"model_revision": "db25077c33951fe163b42986fba0132e279872a2",
"cli_sha256": "5c41298e2a234f76f10342e8b3b3aee7c93f77ea246c121f259ea89c682a6e42",
"reference_sha256": "cf4bb5cd9acbfbf67596d4a53310652b61ef4b7ede1d54eb03ef4882ca40223a",
"input_sha256": {
"audio_wav": "14ee147cbf2ce9afd9e32c8c8228d7cfe11985cd7e63456b2ad33871492aefcc",
"image_jpeg": "22c7ccea466a3f551c512045e6316c7597408d4e0a20205502f55784d977aa8d"
},
"memory_budget": {
"capacities": {
"host_ram": 32212254720
},
"demands": {
"host_ram": 8589934592
}
},
"profile_count": 1,
"warmup_count": 0,
"admission_refusal": "ResourceUnavailable: MiniCPM-o weights, state/workspace, I/O and headroom exceed reservation",
"status": "passed",
"ledger_after_shutdown": {
"capacities": {
"host_ram": 32212254720
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
}
@@ -0,0 +1,45 @@
{
"scope": "MiniCPM-o GGUF complete audio+image\u2192text+speech through Omni StageRuntime/StagePool",
"placement": "cpu",
"model_revision": "db25077c33951fe163b42986fba0132e279872a2",
"artifact_sha256": {
"MiniCPM-o-4_5-Q4_K_M.gguf": "1237a97ee081b8abebc47aa7dad565701e8f5f904cdc92f6723ac4281bbc0932",
"audio/MiniCPM-o-4_5-audio-F16.gguf": "d5b188ac7feaf98e17175c3f9bd14bf269301bfd187439fdaa3e3a494fc32ef7",
"vision/MiniCPM-o-4_5-vision-F16.gguf": "1453678cc4e4fe18de241952962e234f265cb8dda780773526103ab8ba82f421",
"tts/MiniCPM-o-4_5-tts-F16.gguf": "c7be3748a863dd6966ae7eed42600b7f41ca67affb03729ff245247f0e5ea088",
"tts/MiniCPM-o-4_5-projector-F16.gguf": "4b1b5b377358a5e594a304ff6ea5d52df606a9ba7d886c4299d232f0c67dd1fd",
"token2wav-gguf/encoder.gguf": "7f8d265da594eaf5e1de2db8f5f1867dbcb0bb75ef5878fadf2952347116f4d0",
"token2wav-gguf/flow_matching.gguf": "eda6069f3edeb5dd3a87fbf2aedb2ddd1b46f3273926c4fcf09b24476a39cab8",
"token2wav-gguf/flow_extra.gguf": "c67611aa7d02500fe395a7798bf0bfdfb55c74d37ba93934ca74d82b4e63f78d",
"token2wav-gguf/hifigan2.gguf": "1b8b3bf5d8d3066aeee4324fdcdd41aefce170d0ee907645858de408d82835c2",
"token2wav-gguf/prompt_cache.gguf": "81fe6f541ebe0b67db06a1e395df928da47991dc9637c2cf47d6c59d5b979f2c"
},
"cli_sha256": "5c41298e2a234f76f10342e8b3b3aee7c93f77ea246c121f259ea89c682a6e42",
"reference_sha256": "cf4bb5cd9acbfbf67596d4a53310652b61ef4b7ede1d54eb03ef4882ca40223a",
"input_sha256": {
"audio_wav": "14ee147cbf2ce9afd9e32c8c8228d7cfe11985cd7e63456b2ad33871492aefcc",
"image_jpeg": "22c7ccea466a3f551c512045e6316c7597408d4e0a20205502f55784d977aa8d"
},
"memory_budget": {
"capacities": {
"host_ram": 32212254720
},
"demands": {
"host_ram": 8589934592
}
},
"profile_count": 1,
"warmup_count": 0,
"admission_refusal": "ResourceUnavailable: MiniCPM-o weights, state/workspace, I/O and headroom exceed reservation",
"status": "passed",
"ledger_after_shutdown": {
"capacities": {
"host_ram": 32212254720
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
}
@@ -0,0 +1,726 @@
{
"scope": "MiniCPM-o GGUF complete audio+image\u2192text+speech through Omni StageRuntime/StagePool",
"placement": "cpu",
"model_revision": "db25077c33951fe163b42986fba0132e279872a2",
"artifact_sha256": {
"MiniCPM-o-4_5-Q4_K_M.gguf": "1237a97ee081b8abebc47aa7dad565701e8f5f904cdc92f6723ac4281bbc0932",
"audio/MiniCPM-o-4_5-audio-F16.gguf": "d5b188ac7feaf98e17175c3f9bd14bf269301bfd187439fdaa3e3a494fc32ef7",
"vision/MiniCPM-o-4_5-vision-F16.gguf": "1453678cc4e4fe18de241952962e234f265cb8dda780773526103ab8ba82f421",
"tts/MiniCPM-o-4_5-tts-F16.gguf": "c7be3748a863dd6966ae7eed42600b7f41ca67affb03729ff245247f0e5ea088",
"tts/MiniCPM-o-4_5-projector-F16.gguf": "4b1b5b377358a5e594a304ff6ea5d52df606a9ba7d886c4299d232f0c67dd1fd",
"token2wav-gguf/encoder.gguf": "7f8d265da594eaf5e1de2db8f5f1867dbcb0bb75ef5878fadf2952347116f4d0",
"token2wav-gguf/flow_matching.gguf": "eda6069f3edeb5dd3a87fbf2aedb2ddd1b46f3273926c4fcf09b24476a39cab8",
"token2wav-gguf/flow_extra.gguf": "c67611aa7d02500fe395a7798bf0bfdfb55c74d37ba93934ca74d82b4e63f78d",
"token2wav-gguf/hifigan2.gguf": "1b8b3bf5d8d3066aeee4324fdcdd41aefce170d0ee907645858de408d82835c2",
"token2wav-gguf/prompt_cache.gguf": "81fe6f541ebe0b67db06a1e395df928da47991dc9637c2cf47d6c59d5b979f2c"
},
"cli_sha256": "5c41298e2a234f76f10342e8b3b3aee7c93f77ea246c121f259ea89c682a6e42",
"reference_sha256": "cf4bb5cd9acbfbf67596d4a53310652b61ef4b7ede1d54eb03ef4882ca40223a",
"input_sha256": {
"audio_wav": "14ee147cbf2ce9afd9e32c8c8228d7cfe11985cd7e63456b2ad33871492aefcc",
"image_jpeg": "22c7ccea466a3f551c512045e6316c7597408d4e0a20205502f55784d977aa8d"
},
"memory_budget": {
"capacities": {
"host_ram": 32212254720
},
"demands": {
"host_ram": 25769803776
}
},
"profile_count": 20,
"warmup_count": 1,
"startup_s": 4.810570983972866,
"execution_plan_at_start": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"model_revision": "db25077c33951fe163b42986fba0132e279872a2",
"artifact_sha256": {
"MiniCPM-o-4_5-Q4_K_M.gguf": "1237a97ee081b8abebc47aa7dad565701e8f5f904cdc92f6723ac4281bbc0932",
"audio/MiniCPM-o-4_5-audio-F16.gguf": "d5b188ac7feaf98e17175c3f9bd14bf269301bfd187439fdaa3e3a494fc32ef7",
"vision/MiniCPM-o-4_5-vision-F16.gguf": "1453678cc4e4fe18de241952962e234f265cb8dda780773526103ab8ba82f421",
"tts/MiniCPM-o-4_5-tts-F16.gguf": "c7be3748a863dd6966ae7eed42600b7f41ca67affb03729ff245247f0e5ea088",
"tts/MiniCPM-o-4_5-projector-F16.gguf": "4b1b5b377358a5e594a304ff6ea5d52df606a9ba7d886c4299d232f0c67dd1fd",
"token2wav-gguf/encoder.gguf": "7f8d265da594eaf5e1de2db8f5f1867dbcb0bb75ef5878fadf2952347116f4d0",
"token2wav-gguf/flow_matching.gguf": "eda6069f3edeb5dd3a87fbf2aedb2ddd1b46f3273926c4fcf09b24476a39cab8",
"token2wav-gguf/flow_extra.gguf": "c67611aa7d02500fe395a7798bf0bfdfb55c74d37ba93934ca74d82b4e63f78d",
"token2wav-gguf/hifigan2.gguf": "1b8b3bf5d8d3066aeee4324fdcdd41aefce170d0ee907645858de408d82835c2",
"token2wav-gguf/prompt_cache.gguf": "81fe6f541ebe0b67db06a1e395df928da47991dc9637c2cf47d6c59d5b979f2c"
},
"cli_sha256": "5c41298e2a234f76f10342e8b3b3aee7c93f77ea246c121f259ea89c682a6e42",
"requested_placement": "cpu",
"ggml_vk_visible_devices": null,
"shared_ram_reservation": {
"host_ram": 25769803776
},
"weights_bytes": 8872297088,
"memory_overhead_bytes": 12884901888,
"context_tokens": 2048,
"max_new_tokens": 96,
"request_capacity": 1,
"stateful_session": "C++-owned within one request; discarded after completion",
"placement_evidence": "pending first request"
},
"warmups": [
{
"text": "The square in the image is red.",
"wall_s": 25.354166724020615,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 71040,
"duration_s": 2.96,
"pcm_sha256": "ed1e390fd938a02abcbf0f86f8fcb0a23583954b74bb140f1f75cdc6cd8e5a78"
},
"stage_event": {
"request_id": "minicpmo-warmup-0",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 25.346508098009508,
"peak_sampled_rss_bytes": 13699346432,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-1-d8b163749f0e4683aca7899dbfff65fd.log"
}
}
],
"complete_request": {
"text": "The square in the image is red.",
"wall_s": 19.150184509984683,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 48000,
"duration_s": 2.0,
"pcm_sha256": "878bda7a3c7e9dbe6730095a3cb36172dc3dfe4d730f10fde9496ea439c855fb"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 2,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 19.14088644599542,
"peak_sampled_rss_bytes": 13698719744,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-2-fb76d726749f44759c9ac56077a5da31.log"
}
},
"measured": [
{
"text": "The square in the image is red.",
"wall_s": 19.150184509984683,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 48000,
"duration_s": 2.0,
"pcm_sha256": "878bda7a3c7e9dbe6730095a3cb36172dc3dfe4d730f10fde9496ea439c855fb"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 2,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 19.14088644599542,
"peak_sampled_rss_bytes": 13698719744,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-2-fb76d726749f44759c9ac56077a5da31.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 21.663129427994136,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 70080,
"duration_s": 2.92,
"pcm_sha256": "b7508f3b8a45e5ecb95deefb910a70a1039f6c2f486487706da2a6b33d13e433"
},
"stage_event": {
"request_id": "minicpmo-measured-1",
"stage_id": 0,
"epoch": 3,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 21.659611514944118,
"peak_sampled_rss_bytes": 13699510272,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-3-8a569c9c4f124041898d9c98527f4f2b.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 21.225499626016244,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 59520,
"duration_s": 2.48,
"pcm_sha256": "9cea7224f50dd55b52d32ed5da308397f1d64debcae9800f29ec379e52085324"
},
"stage_event": {
"request_id": "minicpmo-measured-2",
"stage_id": 0,
"epoch": 4,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 21.220281650021207,
"peak_sampled_rss_bytes": 13699334144,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-4-042e886efca144f5ba884e7d9622487d.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.08687804301735,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 62400,
"duration_s": 2.6,
"pcm_sha256": "b5ddd41730796542fbd0dcf0398dcd56ba0752af771a39ba0ee032e7346b2c23"
},
"stage_event": {
"request_id": "minicpmo-measured-3",
"stage_id": 0,
"epoch": 5,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.076925281027798,
"peak_sampled_rss_bytes": 13699379200,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-5-9de83da7d4ad46e591a94499b5caebf0.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.883253135019913,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 60480,
"duration_s": 2.52,
"pcm_sha256": "396bbdf022974f9713ffbb3dbe37bec3a32ed12c4ea388d741409ec001212b15"
},
"stage_event": {
"request_id": "minicpmo-measured-4",
"stage_id": 0,
"epoch": 6,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.87929545500083,
"peak_sampled_rss_bytes": 13699448832,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-6-a9097953844646a3b18e816b77032a93.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 20.457199305004906,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 38400,
"duration_s": 1.6,
"pcm_sha256": "4e98bb6bc827d2033d9c4f76a6fee49621037c3ac91a227ec92d57fb3f01b297"
},
"stage_event": {
"request_id": "minicpmo-measured-5",
"stage_id": 0,
"epoch": 7,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 20.449729025014676,
"peak_sampled_rss_bytes": 13692182528,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-7-b1800272e7fd4f2c88022c79e1fb0b73.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 30.871680101030506,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 59520,
"duration_s": 2.48,
"pcm_sha256": "68c5a90e835ff7e208c1627d6e2e9e7300dc7c6326ae5f79bde41d1de6cca0b3"
},
"stage_event": {
"request_id": "minicpmo-measured-6",
"stage_id": 0,
"epoch": 8,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 30.867184494039975,
"peak_sampled_rss_bytes": 13699379200,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-8-c6b3c2f5b34e44d09fafd36c533110b2.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 24.82860793202417,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 59520,
"duration_s": 2.48,
"pcm_sha256": "e49dc3ca9debee47e91c8bbff8ff3a60a8f092bc857b384cd36dc98bf062467b"
},
"stage_event": {
"request_id": "minicpmo-measured-7",
"stage_id": 0,
"epoch": 9,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 24.81576943397522,
"peak_sampled_rss_bytes": 13699313664,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-9-aa984533676940ce89c396b8a1a3508b.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.672656088951044,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 63360,
"duration_s": 2.64,
"pcm_sha256": "904f4202472ab5e797d416025518db395f264d41cddf1d3b3e1b0e0d2f89a9ee"
},
"stage_event": {
"request_id": "minicpmo-measured-8",
"stage_id": 0,
"epoch": 10,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.662863618985284,
"peak_sampled_rss_bytes": 13699252224,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-10-4da7faa2e610416abbc3a37c41d4ca4b.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 22.979588018963113,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 61440,
"duration_s": 2.56,
"pcm_sha256": "3bf5df389bcf42ee8a4ce174ca576b4cbb7263247b3ddd74ef447cdd158db8db"
},
"stage_event": {
"request_id": "minicpmo-measured-9",
"stage_id": 0,
"epoch": 11,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 22.974179223994724,
"peak_sampled_rss_bytes": 13699371008,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-11-34b3ae80ea1d4482833642b6ed7d339e.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 22.489389165013563,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 55680,
"duration_s": 2.32,
"pcm_sha256": "3b9e2ac145bc167d957081758c10e306063e39b76aec3e3440dc6e5405252913"
},
"stage_event": {
"request_id": "minicpmo-measured-10",
"stage_id": 0,
"epoch": 12,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 22.483644073014148,
"peak_sampled_rss_bytes": 13699420160,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-12-10f83c01ac4a49fea9c7ab151dac6e28.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 21.88300958601758,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 70080,
"duration_s": 2.92,
"pcm_sha256": "fbc0b4a0f4b11c1e2a26209c383d20a931d34b824872f544d61f9249d1f759f3"
},
"stage_event": {
"request_id": "minicpmo-measured-11",
"stage_id": 0,
"epoch": 13,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 21.873040759004653,
"peak_sampled_rss_bytes": 13699600384,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-13-7f9990b414ba4fac9520eeef0ebe486a.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 22.669943516957574,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 65280,
"duration_s": 2.72,
"pcm_sha256": "3c18f343479cba78c4a38a186269566dae817647ccc022868c7c7fb024debd3c"
},
"stage_event": {
"request_id": "minicpmo-measured-12",
"stage_id": 0,
"epoch": 14,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 22.666209709015675,
"peak_sampled_rss_bytes": 13699514368,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-14-e4dba66509024020b59895885f98e501.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 21.33673663699301,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 50880,
"duration_s": 2.12,
"pcm_sha256": "4f50f09fd2a0379b1d618c6858ff26b28e7fce0ee0ad185d236fd2cd82d4c5a4"
},
"stage_event": {
"request_id": "minicpmo-measured-13",
"stage_id": 0,
"epoch": 15,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 21.324215419008397,
"peak_sampled_rss_bytes": 13703643136,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-15-ddd865763d4e4a95bd5bf384518d11e6.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.206920797005296,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 55680,
"duration_s": 2.32,
"pcm_sha256": "9594e16a35aac96cbaef01b2a12908b38d79841d2c7b7e9884ac2bcd83cfb1c7"
},
"stage_event": {
"request_id": "minicpmo-measured-14",
"stage_id": 0,
"epoch": 16,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.19829757302068,
"peak_sampled_rss_bytes": 13699510272,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-16-0b6dd1b25a13476989bb721ea60365bb.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 21.9044453749666,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 59520,
"duration_s": 2.48,
"pcm_sha256": "e675ce84487666a46c324515676ae12608a7376cd0158bc88d618fa8569bb3ca"
},
"stage_event": {
"request_id": "minicpmo-measured-15",
"stage_id": 0,
"epoch": 17,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 21.89142888702918,
"peak_sampled_rss_bytes": 13699391488,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-17-cf105256b99942efae7acfc99c3f23a4.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.752620821003802,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 70080,
"duration_s": 2.92,
"pcm_sha256": "5b350937d8d502ae985fada8b1e2914b7b885d93c8962d180dcfeb855e9eebb6"
},
"stage_event": {
"request_id": "minicpmo-measured-16",
"stage_id": 0,
"epoch": 18,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.74432648898801,
"peak_sampled_rss_bytes": 13699579904,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-18-1b039e5398ea45f48e7699610bde2956.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 24.298291172948666,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 65280,
"duration_s": 2.72,
"pcm_sha256": "90b6085fab059e7f9a9eb50d1935e517d7b6ea1473e4d4ffb0f429997b0ad66e"
},
"stage_event": {
"request_id": "minicpmo-measured-17",
"stage_id": 0,
"epoch": 19,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 24.284687713021412,
"peak_sampled_rss_bytes": 13699481600,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-19-95341a3235cd4069b2dc6c742ca21e31.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 24.150624626956414,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 60480,
"duration_s": 2.52,
"pcm_sha256": "aed89a40e2dab6d05f07e5f327f3ea6e1998bc79ddb1eaa3567390ecbce494d5"
},
"stage_event": {
"request_id": "minicpmo-measured-18",
"stage_id": 0,
"epoch": 20,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 24.143880530027673,
"peak_sampled_rss_bytes": 13699219456,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-20-1c8c34a5d99745f3b94f5a9c4d9dc3c7.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 22.574850575008895,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 62400,
"duration_s": 2.6,
"pcm_sha256": "d82977b3294e4cae43ffe355c029f25779aac81eb6e7a6fc2544c32008ea4ecc"
},
"stage_event": {
"request_id": "minicpmo-measured-19",
"stage_id": 0,
"epoch": 21,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 22.562000848003663,
"peak_sampled_rss_bytes": 13699457024,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-21-851c57e533d64d23974e29a5c6b8fc6a.log"
}
}
],
"nearest_rank_p50_wall_s": 22.669943516957574,
"nearest_rank_p95_wall_s": 24.82860793202417,
"output_wav": "benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_wsl_cpu/profile20_first.wav",
"execution_plan_after_request": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"model_revision": "db25077c33951fe163b42986fba0132e279872a2",
"artifact_sha256": {
"MiniCPM-o-4_5-Q4_K_M.gguf": "1237a97ee081b8abebc47aa7dad565701e8f5f904cdc92f6723ac4281bbc0932",
"audio/MiniCPM-o-4_5-audio-F16.gguf": "d5b188ac7feaf98e17175c3f9bd14bf269301bfd187439fdaa3e3a494fc32ef7",
"vision/MiniCPM-o-4_5-vision-F16.gguf": "1453678cc4e4fe18de241952962e234f265cb8dda780773526103ab8ba82f421",
"tts/MiniCPM-o-4_5-tts-F16.gguf": "c7be3748a863dd6966ae7eed42600b7f41ca67affb03729ff245247f0e5ea088",
"tts/MiniCPM-o-4_5-projector-F16.gguf": "4b1b5b377358a5e594a304ff6ea5d52df606a9ba7d886c4299d232f0c67dd1fd",
"token2wav-gguf/encoder.gguf": "7f8d265da594eaf5e1de2db8f5f1867dbcb0bb75ef5878fadf2952347116f4d0",
"token2wav-gguf/flow_matching.gguf": "eda6069f3edeb5dd3a87fbf2aedb2ddd1b46f3273926c4fcf09b24476a39cab8",
"token2wav-gguf/flow_extra.gguf": "c67611aa7d02500fe395a7798bf0bfdfb55c74d37ba93934ca74d82b4e63f78d",
"token2wav-gguf/hifigan2.gguf": "1b8b3bf5d8d3066aeee4324fdcdd41aefce170d0ee907645858de408d82835c2",
"token2wav-gguf/prompt_cache.gguf": "81fe6f541ebe0b67db06a1e395df928da47991dc9637c2cf47d6c59d5b979f2c"
},
"cli_sha256": "5c41298e2a234f76f10342e8b3b3aee7c93f77ea246c121f259ea89c682a6e42",
"requested_placement": "cpu",
"ggml_vk_visible_devices": null,
"shared_ram_reservation": {
"host_ram": 25769803776
},
"weights_bytes": 8872297088,
"memory_overhead_bytes": 12884901888,
"context_tokens": 2048,
"max_new_tokens": 96,
"request_capacity": 1,
"stateful_session": "C++-owned within one request; discarded after completion",
"placement_evidence": {
"observed": "cpu",
"worker_pid": 3633536,
"peak_sampled_rss_bytes": 13699457024,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-21-851c57e533d64d23974e29a5c6b8fc6a.log"
}
},
"abort_check": {
"stale_output": false,
"ledger": {
"capacities": {
"host_ram": 32212254720
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
},
"status": "passed",
"ledger_after_shutdown": {
"capacities": {
"host_ram": 32212254720
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
}
@@ -0,0 +1,719 @@
INFO 09-23 23:07:08 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed.
INFO 09-23 23:07:08 [patch.py:510] inductor factorable-divisibility patch: installed.
INFO 09-23 23:07:08 [patch.py:589] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms.
INFO 09-23 23:07:09 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn
WARNING 09-23 23:07:09 [stage_init_utils.py:1887] [stage_init] Failed to load transfer config: [Errno 21] Is a directory: '/home/zhout/project/edge_infer/vllm-omni-edge'
{
"scope": "MiniCPM-o GGUF complete audio+image\u2192text+speech through Omni StageRuntime/StagePool",
"placement": "cpu",
"model_revision": "db25077c33951fe163b42986fba0132e279872a2",
"cli_sha256": "5c41298e2a234f76f10342e8b3b3aee7c93f77ea246c121f259ea89c682a6e42",
"reference_sha256": "cf4bb5cd9acbfbf67596d4a53310652b61ef4b7ede1d54eb03ef4882ca40223a",
"input_sha256": {
"audio_wav": "14ee147cbf2ce9afd9e32c8c8228d7cfe11985cd7e63456b2ad33871492aefcc",
"image_jpeg": "22c7ccea466a3f551c512045e6316c7597408d4e0a20205502f55784d977aa8d"
},
"memory_budget": {
"capacities": {
"host_ram": 32212254720
},
"demands": {
"host_ram": 25769803776
}
},
"profile_count": 20,
"warmup_count": 1,
"startup_s": 4.810570983972866,
"execution_plan_at_start": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"model_revision": "db25077c33951fe163b42986fba0132e279872a2",
"artifact_sha256": {
"MiniCPM-o-4_5-Q4_K_M.gguf": "1237a97ee081b8abebc47aa7dad565701e8f5f904cdc92f6723ac4281bbc0932",
"audio/MiniCPM-o-4_5-audio-F16.gguf": "d5b188ac7feaf98e17175c3f9bd14bf269301bfd187439fdaa3e3a494fc32ef7",
"vision/MiniCPM-o-4_5-vision-F16.gguf": "1453678cc4e4fe18de241952962e234f265cb8dda780773526103ab8ba82f421",
"tts/MiniCPM-o-4_5-tts-F16.gguf": "c7be3748a863dd6966ae7eed42600b7f41ca67affb03729ff245247f0e5ea088",
"tts/MiniCPM-o-4_5-projector-F16.gguf": "4b1b5b377358a5e594a304ff6ea5d52df606a9ba7d886c4299d232f0c67dd1fd",
"token2wav-gguf/encoder.gguf": "7f8d265da594eaf5e1de2db8f5f1867dbcb0bb75ef5878fadf2952347116f4d0",
"token2wav-gguf/flow_matching.gguf": "eda6069f3edeb5dd3a87fbf2aedb2ddd1b46f3273926c4fcf09b24476a39cab8",
"token2wav-gguf/flow_extra.gguf": "c67611aa7d02500fe395a7798bf0bfdfb55c74d37ba93934ca74d82b4e63f78d",
"token2wav-gguf/hifigan2.gguf": "1b8b3bf5d8d3066aeee4324fdcdd41aefce170d0ee907645858de408d82835c2",
"token2wav-gguf/prompt_cache.gguf": "81fe6f541ebe0b67db06a1e395df928da47991dc9637c2cf47d6c59d5b979f2c"
},
"cli_sha256": "5c41298e2a234f76f10342e8b3b3aee7c93f77ea246c121f259ea89c682a6e42",
"requested_placement": "cpu",
"ggml_vk_visible_devices": null,
"shared_ram_reservation": {
"host_ram": 25769803776
},
"weights_bytes": 8872297088,
"memory_overhead_bytes": 12884901888,
"context_tokens": 2048,
"max_new_tokens": 96,
"request_capacity": 1,
"stateful_session": "C++-owned within one request; discarded after completion",
"placement_evidence": "pending first request"
},
"warmups": [
{
"text": "The square in the image is red.",
"wall_s": 25.354166724020615,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 71040,
"duration_s": 2.96,
"pcm_sha256": "ed1e390fd938a02abcbf0f86f8fcb0a23583954b74bb140f1f75cdc6cd8e5a78"
},
"stage_event": {
"request_id": "minicpmo-warmup-0",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 25.346508098009508,
"peak_sampled_rss_bytes": 13699346432,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-1-d8b163749f0e4683aca7899dbfff65fd.log"
}
}
],
"complete_request": {
"text": "The square in the image is red.",
"wall_s": 19.150184509984683,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 48000,
"duration_s": 2.0,
"pcm_sha256": "878bda7a3c7e9dbe6730095a3cb36172dc3dfe4d730f10fde9496ea439c855fb"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 2,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 19.14088644599542,
"peak_sampled_rss_bytes": 13698719744,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-2-fb76d726749f44759c9ac56077a5da31.log"
}
},
"measured": [
{
"text": "The square in the image is red.",
"wall_s": 19.150184509984683,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 48000,
"duration_s": 2.0,
"pcm_sha256": "878bda7a3c7e9dbe6730095a3cb36172dc3dfe4d730f10fde9496ea439c855fb"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 2,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 19.14088644599542,
"peak_sampled_rss_bytes": 13698719744,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-2-fb76d726749f44759c9ac56077a5da31.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 21.663129427994136,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 70080,
"duration_s": 2.92,
"pcm_sha256": "b7508f3b8a45e5ecb95deefb910a70a1039f6c2f486487706da2a6b33d13e433"
},
"stage_event": {
"request_id": "minicpmo-measured-1",
"stage_id": 0,
"epoch": 3,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 21.659611514944118,
"peak_sampled_rss_bytes": 13699510272,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-3-8a569c9c4f124041898d9c98527f4f2b.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 21.225499626016244,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 59520,
"duration_s": 2.48,
"pcm_sha256": "9cea7224f50dd55b52d32ed5da308397f1d64debcae9800f29ec379e52085324"
},
"stage_event": {
"request_id": "minicpmo-measured-2",
"stage_id": 0,
"epoch": 4,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 21.220281650021207,
"peak_sampled_rss_bytes": 13699334144,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-4-042e886efca144f5ba884e7d9622487d.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.08687804301735,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 62400,
"duration_s": 2.6,
"pcm_sha256": "b5ddd41730796542fbd0dcf0398dcd56ba0752af771a39ba0ee032e7346b2c23"
},
"stage_event": {
"request_id": "minicpmo-measured-3",
"stage_id": 0,
"epoch": 5,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.076925281027798,
"peak_sampled_rss_bytes": 13699379200,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-5-9de83da7d4ad46e591a94499b5caebf0.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.883253135019913,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 60480,
"duration_s": 2.52,
"pcm_sha256": "396bbdf022974f9713ffbb3dbe37bec3a32ed12c4ea388d741409ec001212b15"
},
"stage_event": {
"request_id": "minicpmo-measured-4",
"stage_id": 0,
"epoch": 6,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.87929545500083,
"peak_sampled_rss_bytes": 13699448832,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-6-a9097953844646a3b18e816b77032a93.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 20.457199305004906,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 38400,
"duration_s": 1.6,
"pcm_sha256": "4e98bb6bc827d2033d9c4f76a6fee49621037c3ac91a227ec92d57fb3f01b297"
},
"stage_event": {
"request_id": "minicpmo-measured-5",
"stage_id": 0,
"epoch": 7,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 20.449729025014676,
"peak_sampled_rss_bytes": 13692182528,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-7-b1800272e7fd4f2c88022c79e1fb0b73.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 30.871680101030506,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 59520,
"duration_s": 2.48,
"pcm_sha256": "68c5a90e835ff7e208c1627d6e2e9e7300dc7c6326ae5f79bde41d1de6cca0b3"
},
"stage_event": {
"request_id": "minicpmo-measured-6",
"stage_id": 0,
"epoch": 8,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 30.867184494039975,
"peak_sampled_rss_bytes": 13699379200,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-8-c6b3c2f5b34e44d09fafd36c533110b2.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 24.82860793202417,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 59520,
"duration_s": 2.48,
"pcm_sha256": "e49dc3ca9debee47e91c8bbff8ff3a60a8f092bc857b384cd36dc98bf062467b"
},
"stage_event": {
"request_id": "minicpmo-measured-7",
"stage_id": 0,
"epoch": 9,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 24.81576943397522,
"peak_sampled_rss_bytes": 13699313664,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-9-aa984533676940ce89c396b8a1a3508b.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.672656088951044,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 63360,
"duration_s": 2.64,
"pcm_sha256": "904f4202472ab5e797d416025518db395f264d41cddf1d3b3e1b0e0d2f89a9ee"
},
"stage_event": {
"request_id": "minicpmo-measured-8",
"stage_id": 0,
"epoch": 10,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.662863618985284,
"peak_sampled_rss_bytes": 13699252224,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-10-4da7faa2e610416abbc3a37c41d4ca4b.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 22.979588018963113,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 61440,
"duration_s": 2.56,
"pcm_sha256": "3bf5df389bcf42ee8a4ce174ca576b4cbb7263247b3ddd74ef447cdd158db8db"
},
"stage_event": {
"request_id": "minicpmo-measured-9",
"stage_id": 0,
"epoch": 11,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 22.974179223994724,
"peak_sampled_rss_bytes": 13699371008,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-11-34b3ae80ea1d4482833642b6ed7d339e.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 22.489389165013563,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 55680,
"duration_s": 2.32,
"pcm_sha256": "3b9e2ac145bc167d957081758c10e306063e39b76aec3e3440dc6e5405252913"
},
"stage_event": {
"request_id": "minicpmo-measured-10",
"stage_id": 0,
"epoch": 12,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 22.483644073014148,
"peak_sampled_rss_bytes": 13699420160,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-12-10f83c01ac4a49fea9c7ab151dac6e28.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 21.88300958601758,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 70080,
"duration_s": 2.92,
"pcm_sha256": "fbc0b4a0f4b11c1e2a26209c383d20a931d34b824872f544d61f9249d1f759f3"
},
"stage_event": {
"request_id": "minicpmo-measured-11",
"stage_id": 0,
"epoch": 13,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 21.873040759004653,
"peak_sampled_rss_bytes": 13699600384,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-13-7f9990b414ba4fac9520eeef0ebe486a.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 22.669943516957574,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 65280,
"duration_s": 2.72,
"pcm_sha256": "3c18f343479cba78c4a38a186269566dae817647ccc022868c7c7fb024debd3c"
},
"stage_event": {
"request_id": "minicpmo-measured-12",
"stage_id": 0,
"epoch": 14,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 22.666209709015675,
"peak_sampled_rss_bytes": 13699514368,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-14-e4dba66509024020b59895885f98e501.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 21.33673663699301,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 50880,
"duration_s": 2.12,
"pcm_sha256": "4f50f09fd2a0379b1d618c6858ff26b28e7fce0ee0ad185d236fd2cd82d4c5a4"
},
"stage_event": {
"request_id": "minicpmo-measured-13",
"stage_id": 0,
"epoch": 15,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 21.324215419008397,
"peak_sampled_rss_bytes": 13703643136,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-15-ddd865763d4e4a95bd5bf384518d11e6.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.206920797005296,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 55680,
"duration_s": 2.32,
"pcm_sha256": "9594e16a35aac96cbaef01b2a12908b38d79841d2c7b7e9884ac2bcd83cfb1c7"
},
"stage_event": {
"request_id": "minicpmo-measured-14",
"stage_id": 0,
"epoch": 16,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.19829757302068,
"peak_sampled_rss_bytes": 13699510272,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-16-0b6dd1b25a13476989bb721ea60365bb.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 21.9044453749666,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 59520,
"duration_s": 2.48,
"pcm_sha256": "e675ce84487666a46c324515676ae12608a7376cd0158bc88d618fa8569bb3ca"
},
"stage_event": {
"request_id": "minicpmo-measured-15",
"stage_id": 0,
"epoch": 17,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 21.89142888702918,
"peak_sampled_rss_bytes": 13699391488,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-17-cf105256b99942efae7acfc99c3f23a4.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.752620821003802,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 70080,
"duration_s": 2.92,
"pcm_sha256": "5b350937d8d502ae985fada8b1e2914b7b885d93c8962d180dcfeb855e9eebb6"
},
"stage_event": {
"request_id": "minicpmo-measured-16",
"stage_id": 0,
"epoch": 18,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.74432648898801,
"peak_sampled_rss_bytes": 13699579904,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-18-1b039e5398ea45f48e7699610bde2956.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 24.298291172948666,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 65280,
"duration_s": 2.72,
"pcm_sha256": "90b6085fab059e7f9a9eb50d1935e517d7b6ea1473e4d4ffb0f429997b0ad66e"
},
"stage_event": {
"request_id": "minicpmo-measured-17",
"stage_id": 0,
"epoch": 19,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 24.284687713021412,
"peak_sampled_rss_bytes": 13699481600,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-19-95341a3235cd4069b2dc6c742ca21e31.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 24.150624626956414,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 60480,
"duration_s": 2.52,
"pcm_sha256": "aed89a40e2dab6d05f07e5f327f3ea6e1998bc79ddb1eaa3567390ecbce494d5"
},
"stage_event": {
"request_id": "minicpmo-measured-18",
"stage_id": 0,
"epoch": 20,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 24.143880530027673,
"peak_sampled_rss_bytes": 13699219456,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-20-1c8c34a5d99745f3b94f5a9c4d9dc3c7.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 22.574850575008895,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 62400,
"duration_s": 2.6,
"pcm_sha256": "d82977b3294e4cae43ffe355c029f25779aac81eb6e7a6fc2544c32008ea4ecc"
},
"stage_event": {
"request_id": "minicpmo-measured-19",
"stage_id": 0,
"epoch": 21,
"seq": 1,
"kind": "audio",
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 22.562000848003663,
"peak_sampled_rss_bytes": 13699457024,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-21-851c57e533d64d23974e29a5c6b8fc6a.log"
}
}
],
"nearest_rank_p50_wall_s": 22.669943516957574,
"nearest_rank_p95_wall_s": 24.82860793202417,
"output_wav": "benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_wsl_cpu/profile20_first.wav",
"execution_plan_after_request": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "b4b38bae9b0b4fbda83a8cf096b4d071",
"model_revision": "db25077c33951fe163b42986fba0132e279872a2",
"artifact_sha256": {
"MiniCPM-o-4_5-Q4_K_M.gguf": "1237a97ee081b8abebc47aa7dad565701e8f5f904cdc92f6723ac4281bbc0932",
"audio/MiniCPM-o-4_5-audio-F16.gguf": "d5b188ac7feaf98e17175c3f9bd14bf269301bfd187439fdaa3e3a494fc32ef7",
"vision/MiniCPM-o-4_5-vision-F16.gguf": "1453678cc4e4fe18de241952962e234f265cb8dda780773526103ab8ba82f421",
"tts/MiniCPM-o-4_5-tts-F16.gguf": "c7be3748a863dd6966ae7eed42600b7f41ca67affb03729ff245247f0e5ea088",
"tts/MiniCPM-o-4_5-projector-F16.gguf": "4b1b5b377358a5e594a304ff6ea5d52df606a9ba7d886c4299d232f0c67dd1fd",
"token2wav-gguf/encoder.gguf": "7f8d265da594eaf5e1de2db8f5f1867dbcb0bb75ef5878fadf2952347116f4d0",
"token2wav-gguf/flow_matching.gguf": "eda6069f3edeb5dd3a87fbf2aedb2ddd1b46f3273926c4fcf09b24476a39cab8",
"token2wav-gguf/flow_extra.gguf": "c67611aa7d02500fe395a7798bf0bfdfb55c74d37ba93934ca74d82b4e63f78d",
"token2wav-gguf/hifigan2.gguf": "1b8b3bf5d8d3066aeee4324fdcdd41aefce170d0ee907645858de408d82835c2",
"token2wav-gguf/prompt_cache.gguf": "81fe6f541ebe0b67db06a1e395df928da47991dc9637c2cf47d6c59d5b979f2c"
},
"cli_sha256": "5c41298e2a234f76f10342e8b3b3aee7c93f77ea246c121f259ea89c682a6e42",
"requested_placement": "cpu",
"ggml_vk_visible_devices": null,
"shared_ram_reservation": {
"host_ram": 25769803776
},
"weights_bytes": 8872297088,
"memory_overhead_bytes": 12884901888,
"context_tokens": 2048,
"max_new_tokens": 96,
"request_capacity": 1,
"stateful_session": "C++-owned within one request; discarded after completion",
"placement_evidence": {
"observed": "cpu",
"worker_pid": 3633536,
"peak_sampled_rss_bytes": 13699457024,
"worker_log": "/tmp/minicpmo_omni_wsl_profile_logs/minicpmo-21-851c57e533d64d23974e29a5c6b8fc6a.log"
}
},
"abort_check": {
"stale_output": false,
"ledger": {
"capacities": {
"host_ram": 32212254720
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
},
"status": "passed",
"ledger_after_shutdown": {
"capacities": {
"host_ram": 32212254720
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
}
@@ -0,0 +1,16 @@
{
"scope": "local Whisper tiny.en ASR proxy for generated speech; no perceptual quality claim",
"asr_model": "openai/whisper-tiny.en",
"asr_revision": "87c7102498dcde7456f24cfd30239ca606ed9063",
"asr_weights_sha256": "db59695928ded6043adaef491a53ef4e12da9611184d77c53baa691a60b958ad",
"transformers": "4.57.3",
"torch": "2.4.1+cpu",
"wav_sha256": "25e83ba6488a08bc90c6021230381375d4177cd88c8367a7937b488cc3197029",
"input_sample_rate": 24000,
"input_duration_s": 2.0,
"reference_text": "The square in the image is red.",
"transcript": "The square in the image is red.",
"word_error_rate": 0.0,
"asr_load_s": 1.1057805999880657,
"asr_inference_s": 0.9375752999912947
}
@@ -0,0 +1,469 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 25: general.quantization_version u32 = 2
llama_model_loader: - kv 26: general.file_type u32 = 15
llama_model_loader: - type f32: 145 tensors
llama_model_loader: - type q4_K: 217 tensors
llama_model_loader: - type q6_K: 37 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = Q4_K - Medium
print_info: file size = 4.68 GiB (4.90 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = qwen3
print_info: vocab_only = 0
print_info: n_ctx_train = 40960
print_info: n_embd = 4096
print_info: n_layer = 36
print_info: n_head = 32
print_info: n_head_kv = 8
print_info: n_rot = 128
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 128
print_info: n_embd_head_v = 128
print_info: n_gqa = 4
print_info: n_embd_k_gqa = 1024
print_info: n_embd_v_gqa = 1024
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 12288
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = -1
print_info: rope type = 2
print_info: rope scaling = linear
print_info: freq_base_train = 1000000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 40960
print_info: rope_finetuned = unknown
print_info: model type = 8B
print_info: model params = 8.19 B
print_info: general.name = Llm
print_info: vocab type = BPE
print_info: n_vocab = 151748
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: CPU_REPACK model buffer size = 3199.50 MiB
load_tensors: CPU_Mapped model buffer size = 4761.17 MiB
.....................................................................................
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 1000000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.58 MiB
llama_kv_cache: CPU KV buffer size = 288.00 MiB
llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 304.38 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 1
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = llama
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Tts
llama_model_loader: - kv 3: general.size_label str = 445M
llama_model_loader: - kv 4: llama.block_count u32 = 20
llama_model_loader: - kv 5: llama.context_length u32 = 4096
llama_model_loader: - kv 6: llama.embedding_length u32 = 768
llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072
llama_model_loader: - kv 8: llama.attention.head_count u32 = 12
llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12
llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000
llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: llama.attention.key_length u32 = 64
llama_model_loader: - kv 13: llama.attention.value_length u32 = 64
llama_model_loader: - kv 14: general.file_type u32 = 1
llama_model_loader: - kv 15: llama.vocab_size u32 = 158626
llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64
llama_model_loader: - kv 17: general.quantization_version u32 = 2
llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false
llama_model_loader: - type f32: 50 tensors
llama_model_loader: - type f16: 143 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = F16
print_info: file size = 1.07 GiB (20.70 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = llama
print_info: vocab_only = 0
print_info: n_ctx_train = 4096
print_info: n_embd = 768
print_info: n_layer = 20
print_info: n_head = 12
print_info: n_head_kv = 12
print_info: n_rot = 64
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 64
print_info: n_embd_head_v = 64
print_info: n_gqa = 1
print_info: n_embd_k_gqa = 768
print_info: n_embd_v_gqa = 768
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 3072
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = 0
print_info: rope type = 0
print_info: rope scaling = linear
print_info: freq_base_train = 10000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 4096
print_info: rope_finetuned = unknown
print_info: model type = ?B
print_info: model params = 444.94 M
print_info: general.name = Tts
print_info: vocab type = BPE
print_info: n_vocab = 158626
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: CPU_Mapped model buffer size = 592.48 MiB
..............................................................
llama_init_from_model: model default pooling_type is [0], but [-1] was specified
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 10000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.61 MiB
llama_kv_cache: CPU KV buffer size = 120.00 MiB
llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 25.51 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 1
vision_model_loader: model name:
vision_model_loader: description: image encoder for MiniCPM-V
vision_model_loader: GGUF version: 3
vision_model_loader: alignment: 32
vision_model_loader: n_tensors: 455
vision_model_loader: n_kv: 20
vision_ctx: vision using CPU backend
load_hparams: model_type: 0
load_hparams: n_embd: 1152
load_hparams: n_head: 16
load_hparams: n_ff: 4304
load_hparams: n_layer: 27
load_hparams: ffn_op: gelu
load_hparams: projection_dim: 0
--- vision hparams ---
load_hparams: image_size: 448
load_hparams: patch_size: 14
load_hparams: minicpmv_version: 100045
load_hparams: proj_scale_factor: 0
load_hparams: n_wa_pattern: 0
load_hparams: model size: 1044.36 MiB
load_hparams: metadata size: 0.16 MiB
load_tensors: ffn up/down are swapped
alloc_compute_meta: CPU compute buffer size = 100.30 MiB
init tts....init t2w....voc_hg2_model: CPU backend using 8 threads
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000
audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 20]
audition_audio_batch_encode: Final output: 20 tokens x 4096 dims
=== Model Paths ===
Base dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf
LLM: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK]
===================
=== Initializing Omni Context ===
Media type: 2 (omni: audio+vision)
TTS enabled: yes
Context size: 2048
GPU layers: 0
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts
Ref audio: /mnt/c/Users/zhout/w2/minicpmo_cpp_cpu_v3/fixture_0000.wav
23:07:13.818 === omni_init start
23:07:13.818 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
23:07:13.818 === omni_init: loading new LLM model
23:07:16.824 === omni_init: loading TTS model
23:07:16.824 TTS model: loading with n_gpu_layers=0
23:07:17.059 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
23:07:17.059 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
23:07:18.279 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
23:07:18.296 TTS: head_code loaded, verifying first few values:
23:07:18.296 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
23:07:18.296 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
23:07:18.296 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
23:07:18.369 TTS: weights loaded successfully
23:07:18.369 Projector: loading from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
23:07:18.379 Projector: loaded successfully
23:07:18.379 === omni_init: loading APM model
23:07:18.620 APM: init from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
23:07:19.356 Token2Wav: found models in /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf
23:07:19.356 Token2Wav: all model files found, initializing session...
23:07:19.356 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
23:07:19.356 Token2Wav: using prompt_cache from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
23:07:20.766 Token2Wav: initialized successfully
23:07:20.766 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
23:07:20.766 Token2Wav: 使用 C++ 实现
23:07:20.766 === omni_init success: ctx_llama = 0x620623536060
=== Running test case ===
Audio prefix: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-1-ac0lsik6/fixture_
Count: 2
23:07:20.766 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
23:07:20.766 system prompt ref_audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-1-ac0lsik6/fixture_0000.wav
23:07:21.654 system prompt ref_audio embedding: n_pos=20
23:07:23.458 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
23:07:23.458 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
23:07:23.458 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
23:07:23.458 n_past = 72
23:07:23.458
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 2.69155 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3326.59 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3346.51 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3346.51 ms by vision ( 3346.51 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-1-ac0lsik6/fixture_0001.jpg
stream_prefill: prefilled 1 vision chunks (64 tokens each)
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=49339
audition_audio_preprocess: Audio not aligned to 100ms (49339 samples = 3083.7ms), padded with silence to 49600 samples (3100ms)
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=310, n_mel=80, total_size=24800
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=310, n_mel=80, total_elements=24800
audition_audio_batch_encode: Before incrementing iter: input_frames=310, n_tokens=155, current_iter=1, current_total=155, new_total=310, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=310, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 31]
audition_audio_batch_encode: Final output: 31 tokens x 4096 dims
23:07:28.639 stream_prefill(index=1): processing user audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-1-ac0lsik6/fixture_0001.wav
23:07:28.946 stream_prefill(index=1): user audio embedding: n_pos=31
23:07:30.131
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 6.6726 s
23:07:30.131 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
23:07:30.131 stream_decode: create tts thread (simplex mode)
23:07:30.131 stream_decode: create t2w thread
23:07:30.131 wait prefill done
23:07:30.131 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
23:07:30.131 T2W thread (C++) started
<user>
<assistant>23:07:30.134 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
23:07:30.134 TTS thread started
23:07:30.531 📍 [单工TTS] assistant prompt 完成, n_past=182
23:07:30.531 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
23:07:31.450 LLM: detected end token, set llm_generation_done=true
23:07:31.450 LLM->TTS: text='The square in the image is red.', n_tokens=8, hidden_size=32768, n_embd=4096, token_ids=[785 9334 304 279 2168 374 2518 13]
23:07:31.450 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
23:07:31.450 📍 轮次 1 结束,记录边界于 n_past=191
23:07:31.450 TTS<-LLM: chunk_idx=0, text='The square in the image is red.', n_tokens=8, hidden_size=32768, token_ids=[785 9334 304 279 2168 374 2518 13]
23:07:31.450 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
23:07:31.450 TTS: before empty check - response.empty=0, response='The square in the image is red.', llm_finish=1
Waiting for audio generation to complete...
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty
TTS: no valid WAV files to merge
[timing] call=0 tokens=28 final=0 token2mel=2463.790ms vocoder=304.083ms total=2767.886ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1674.097ms vocoder=321.994ms total=1996.109ms audio=24000
[timing] call=2 tokens=24 final=1 token2mel=1671.922ms vocoder=303.297ms total=1975.229ms audio=26880
Audio generation completed.
23:07:31.450 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
23:07:31.450 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
23:07:31.451 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
23:07:31.460 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
23:07:31.460 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
23:07:31.460 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
23:07:31.460 TTS Simplex: first chunk - cleared KV cache
23:07:31.460 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
23:07:31.478 TTS Simplex: prefill completed, n_past_tts=9
23:07:31.479 TTS Simplex: sampler created
23:07:31.479 TTS simplex: is_audio_bos=true (first audio token)
23:07:31.507 TTS Simplex Phase1: token 1/500: rel_id=3008
23:07:31.519 TTS Simplex Phase1: token 2/500: rel_id=4299
23:07:31.530 TTS Simplex Phase1: token 3/500: rel_id=4218
23:07:31.541 TTS Simplex Phase1: token 4/500: rel_id=4218
23:07:31.551 TTS Simplex Phase1: token 5/500: rel_id=4218
23:07:31.775 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
23:07:31.784 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
23:07:31.784 TTS Simplex Phase1: token 25/500: rel_id=1691
23:07:31.784 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
23:07:31.784 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
23:07:31.891 TTS Simplex Phase1: EOS token at step 36
23:07:31.892 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
23:07:31.892 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=44
23:07:31.898 TTS Simplex Phase2: text_eos_embed injected, n_past=45
23:07:31.904 TTS Simplex Phase2: audio_bos injected, n_past=46, starting final generation
23:07:32.049 TTS Simplex Phase2: yield 25 tokens 到 T2W
23:07:32.284 TTS Simplex Phase2: EOS at step 37 (final end)
23:07:32.284 TTS Simplex: chunk 结束,tts_token_buffer 剩余 21 tokens (保留等下一个 chunk)
23:07:32.284 TTS Simplex: is_final_text_chunk=true, flush 剩余 21 tokens 从 tts_token_buffer
23:07:32.284 TTS Simplex: generated 71 audio tokens for chunk 0
23:07:32.284 TTS Simplex: chunk 0 first tokens: [3008 4299 4218 4218 4218 ], last tokens: [43 6 4218 4218 1716 ]
23:07:32.284 TTS Simplex: updated tts_n_past_accumulated=83, total_generated_tokens=71
23:07:32.284 TTS: finished processing all chunks
23:07:32.284 TTS: 单工模式轮次结束,下一轮 round_idx=1
23:07:32.284 TTS: sent is_final=true to T2W queue (turn end)
23:07:34.552 🎉 首响时间 (First Audio Response): 4421ms
23:07:34.552 T2W线程: wav_0.wav | 0.84s audio | 2768.1ms inference | RTF=3.30 | t=4421ms
23:07:36.549 T2W线程: wav_1.wav | 1.00s audio | 1996.2ms inference | RTF=2.00 | t=6417ms
23:07:38.524 T2W线程: wav_2.wav | 1.12s audio | 1975.3ms inference | RTF=1.76 | t=8393ms
23:07:38.524 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
23:07:38.524 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
23:07:38.588 omni_stop_threads: stop signals sent
23:07:38.588 T2W(C++) 线程: 停止
llama_perf_context_print: load time = 16712.61 ms
llama_perf_context_print: prompt eval time = 9764.18 ms / 182 tokens ( 53.65 ms per token, 18.64 tokens per second)
llama_perf_context_print: eval time = 916.66 ms / 9 runs ( 101.85 ms per token, 9.82 tokens per second)
llama_perf_context_print: total time = 24769.65 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,469 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 25: general.quantization_version u32 = 2
llama_model_loader: - kv 26: general.file_type u32 = 15
llama_model_loader: - type f32: 145 tensors
llama_model_loader: - type q4_K: 217 tensors
llama_model_loader: - type q6_K: 37 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = Q4_K - Medium
print_info: file size = 4.68 GiB (4.90 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = qwen3
print_info: vocab_only = 0
print_info: n_ctx_train = 40960
print_info: n_embd = 4096
print_info: n_layer = 36
print_info: n_head = 32
print_info: n_head_kv = 8
print_info: n_rot = 128
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 128
print_info: n_embd_head_v = 128
print_info: n_gqa = 4
print_info: n_embd_k_gqa = 1024
print_info: n_embd_v_gqa = 1024
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 12288
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = -1
print_info: rope type = 2
print_info: rope scaling = linear
print_info: freq_base_train = 1000000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 40960
print_info: rope_finetuned = unknown
print_info: model type = 8B
print_info: model params = 8.19 B
print_info: general.name = Llm
print_info: vocab type = BPE
print_info: n_vocab = 151748
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: CPU_REPACK model buffer size = 3199.50 MiB
load_tensors: CPU_Mapped model buffer size = 4761.17 MiB
.....................................................................................
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 1000000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.58 MiB
llama_kv_cache: CPU KV buffer size = 288.00 MiB
llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 304.38 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 1
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = llama
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Tts
llama_model_loader: - kv 3: general.size_label str = 445M
llama_model_loader: - kv 4: llama.block_count u32 = 20
llama_model_loader: - kv 5: llama.context_length u32 = 4096
llama_model_loader: - kv 6: llama.embedding_length u32 = 768
llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072
llama_model_loader: - kv 8: llama.attention.head_count u32 = 12
llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12
llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000
llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: llama.attention.key_length u32 = 64
llama_model_loader: - kv 13: llama.attention.value_length u32 = 64
llama_model_loader: - kv 14: general.file_type u32 = 1
llama_model_loader: - kv 15: llama.vocab_size u32 = 158626
llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64
llama_model_loader: - kv 17: general.quantization_version u32 = 2
llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false
llama_model_loader: - type f32: 50 tensors
llama_model_loader: - type f16: 143 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = F16
print_info: file size = 1.07 GiB (20.70 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = llama
print_info: vocab_only = 0
print_info: n_ctx_train = 4096
print_info: n_embd = 768
print_info: n_layer = 20
print_info: n_head = 12
print_info: n_head_kv = 12
print_info: n_rot = 64
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 64
print_info: n_embd_head_v = 64
print_info: n_gqa = 1
print_info: n_embd_k_gqa = 768
print_info: n_embd_v_gqa = 768
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 3072
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = 0
print_info: rope type = 0
print_info: rope scaling = linear
print_info: freq_base_train = 10000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 4096
print_info: rope_finetuned = unknown
print_info: model type = ?B
print_info: model params = 444.94 M
print_info: general.name = Tts
print_info: vocab type = BPE
print_info: n_vocab = 158626
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: CPU_Mapped model buffer size = 592.48 MiB
..............................................................
llama_init_from_model: model default pooling_type is [0], but [-1] was specified
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 10000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.61 MiB
llama_kv_cache: CPU KV buffer size = 120.00 MiB
llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 25.51 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 1
vision_model_loader: model name:
vision_model_loader: description: image encoder for MiniCPM-V
vision_model_loader: GGUF version: 3
vision_model_loader: alignment: 32
vision_model_loader: n_tensors: 455
vision_model_loader: n_kv: 20
vision_ctx: vision using CPU backend
load_hparams: model_type: 0
load_hparams: n_embd: 1152
load_hparams: n_head: 16
load_hparams: n_ff: 4304
load_hparams: n_layer: 27
load_hparams: ffn_op: gelu
load_hparams: projection_dim: 0
--- vision hparams ---
load_hparams: image_size: 448
load_hparams: patch_size: 14
load_hparams: minicpmv_version: 100045
load_hparams: proj_scale_factor: 0
load_hparams: n_wa_pattern: 0
load_hparams: model size: 1044.36 MiB
load_hparams: metadata size: 0.16 MiB
load_tensors: ffn up/down are swapped
alloc_compute_meta: CPU compute buffer size = 100.30 MiB
init tts....init t2w....voc_hg2_model: CPU backend using 8 threads
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000
audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 20]
audition_audio_batch_encode: Final output: 20 tokens x 4096 dims
=== Model Paths ===
Base dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf
LLM: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK]
===================
=== Initializing Omni Context ===
Media type: 2 (omni: audio+vision)
TTS enabled: yes
Context size: 2048
GPU layers: 0
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts
Ref audio: /mnt/c/Users/zhout/w2/minicpmo_cpp_cpu_v3/fixture_0000.wav
00:11:51.893 === omni_init start
00:11:51.893 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
00:11:51.893 === omni_init: loading new LLM model
00:11:54.248 === omni_init: loading TTS model
00:11:54.248 TTS model: loading with n_gpu_layers=0
00:11:54.491 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
00:11:54.491 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
00:11:55.277 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
00:11:55.286 TTS: head_code loaded, verifying first few values:
00:11:55.286 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
00:11:55.286 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
00:11:55.286 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
00:11:55.357 TTS: weights loaded successfully
00:11:55.357 Projector: loading from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
00:11:55.368 Projector: loaded successfully
00:11:55.368 === omni_init: loading APM model
00:11:55.764 APM: init from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
00:11:56.817 Token2Wav: found models in /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf
00:11:56.817 Token2Wav: all model files found, initializing session...
00:11:56.817 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
00:11:56.817 Token2Wav: using prompt_cache from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
00:11:58.113 Token2Wav: initialized successfully
00:11:58.113 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
00:11:58.113 Token2Wav: 使用 C++ 实现
00:11:58.113 === omni_init success: ctx_llama = 0x641d9bbaa060
=== Running test case ===
Audio prefix: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-10-0l8cfhk9/fixture_
Count: 2
00:11:58.113 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
00:11:58.113 system prompt ref_audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-10-0l8cfhk9/fixture_0000.wav
00:11:59.054 system prompt ref_audio embedding: n_pos=20
00:12:00.533 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
00:12:00.533 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
00:12:00.533 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
00:12:00.533 n_past = 72
00:12:00.533
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 2.42059 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3063.90 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3082.62 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3082.62 ms by vision ( 3082.62 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-10-0l8cfhk9/fixture_0001.jpg
stream_prefill: prefilled 1 vision chunks (64 tokens each)
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=49339
audition_audio_preprocess: Audio not aligned to 100ms (49339 samples = 3083.7ms), padded with silence to 49600 samples (3100ms)
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=310, n_mel=80, total_size=24800
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=310, n_mel=80, total_elements=24800
audition_audio_batch_encode: Before incrementing iter: input_frames=310, n_tokens=155, current_iter=1, current_total=155, new_total=310, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=310, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 31]
audition_audio_batch_encode: Final output: 31 tokens x 4096 dims
00:12:05.431 stream_prefill(index=1): processing user audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-10-0l8cfhk9/fixture_0001.wav
00:12:05.772 stream_prefill(index=1): user audio embedding: n_pos=31
00:12:06.904
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 6.37036 s
00:12:06.904 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
00:12:06.904 stream_decode: create tts thread (simplex mode)
00:12:06.904 stream_decode: create t2w thread
00:12:06.904 wait prefill done
00:12:06.904 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
00:12:06.904 T2W thread (C++) started
<user>
<assistant>00:12:06.909 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
00:12:06.910 TTS thread started
00:12:07.312 📍 [单工TTS] assistant prompt 完成, n_past=182
00:12:07.313 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
00:12:08.221 LLM: detected end token, set llm_generation_done=true
00:12:08.221 LLM->TTS: text='The square in the image is red.', n_tokens=8, hidden_size=32768, n_embd=4096, token_ids=[785 9334 304 279 2168 374 2518 13]
00:12:08.222 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
00:12:08.222 📍 轮次 1 结束,记录边界于 n_past=191
00:12:08.222 TTS<-LLM: chunk_idx=0, text='The square in the image is red.', n_tokens=8, hidden_size=32768, token_ids=[785 9334 304 279 2168 374 2518 13]
00:12:08.222 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
00:12:08.222 TTS: before empty check - response.empty=0, response='The square in the image is red.', llm_finish=1
Waiting for audio generation to complete...
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty
TTS: no valid WAV files to merge
[timing] call=0 tokens=28 final=0 token2mel=2225.880ms vocoder=289.870ms total=2515.761ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1651.561ms vocoder=312.783ms total=1964.362ms audio=24000
[timing] call=2 tokens=16 final=1 token2mel=1632.689ms vocoder=209.991ms total=1842.691ms audio=19200
Audio generation completed.
00:12:08.222 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
00:12:08.222 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
00:12:08.223 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
00:12:08.245 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
00:12:08.245 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
00:12:08.245 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
00:12:08.245 TTS Simplex: first chunk - cleared KV cache
00:12:08.245 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
00:12:08.264 TTS Simplex: prefill completed, n_past_tts=9
00:12:08.264 TTS Simplex: sampler created
00:12:08.264 TTS simplex: is_audio_bos=true (first audio token)
00:12:08.295 TTS Simplex Phase1: token 1/500: rel_id=785
00:12:08.308 TTS Simplex Phase1: token 2/500: rel_id=4218
00:12:08.320 TTS Simplex Phase1: token 3/500: rel_id=4137
00:12:08.332 TTS Simplex Phase1: token 4/500: rel_id=4137
00:12:08.344 TTS Simplex Phase1: token 5/500: rel_id=4137
00:12:08.557 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
00:12:08.571 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
00:12:08.571 TTS Simplex Phase1: token 25/500: rel_id=1844
00:12:08.571 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
00:12:08.571 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
00:12:08.810 TTS Simplex Phase1: EOS token at step 48
00:12:08.810 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
00:12:08.810 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=56
00:12:08.817 TTS Simplex Phase2: text_eos_embed injected, n_past=57
00:12:08.824 TTS Simplex Phase2: audio_bos injected, n_past=58, starting final generation
00:12:08.853 TTS Simplex Phase2: yield 25 tokens 到 T2W
00:12:09.002 TTS Simplex Phase2: EOS at step 17 (final end)
00:12:09.002 TTS Simplex: chunk 结束,tts_token_buffer 剩余 13 tokens (保留等下一个 chunk)
00:12:09.002 TTS Simplex: is_final_text_chunk=true, flush 剩余 13 tokens 从 tts_token_buffer
00:12:09.002 TTS Simplex: generated 63 audio tokens for chunk 0
00:12:09.002 TTS Simplex: chunk 0 first tokens: [785 4218 4137 4137 4137 ], last tokens: [4218 4137 4137 4137 6082 ]
00:12:09.002 TTS Simplex: updated tts_n_past_accumulated=75, total_generated_tokens=63
00:12:09.002 TTS: finished processing all chunks
00:12:09.002 TTS: 单工模式轮次结束,下一轮 round_idx=1
00:12:09.002 TTS: sent is_final=true to T2W queue (turn end)
00:12:11.087 🎉 首响时间 (First Audio Response): 4183ms
00:12:11.087 T2W线程: wav_0.wav | 0.84s audio | 2515.8ms inference | RTF=3.00 | t=4183ms
00:12:13.052 T2W线程: wav_1.wav | 1.00s audio | 1964.4ms inference | RTF=1.96 | t=6147ms
00:12:14.895 T2W线程: wav_2.wav | 0.80s audio | 1842.7ms inference | RTF=2.30 | t=7990ms
00:12:14.895 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
00:12:14.895 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
00:12:14.969 omni_stop_threads: stop signals sent
00:12:14.969 T2W(C++) 线程: 停止
llama_perf_context_print: load time = 15418.43 ms
llama_perf_context_print: prompt eval time = 9199.25 ms / 182 tokens ( 50.55 ms per token, 19.78 tokens per second)
llama_perf_context_print: eval time = 906.43 ms / 9 runs ( 100.71 ms per token, 9.93 tokens per second)
llama_perf_context_print: total time = 23075.35 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,469 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 25: general.quantization_version u32 = 2
llama_model_loader: - kv 26: general.file_type u32 = 15
llama_model_loader: - type f32: 145 tensors
llama_model_loader: - type q4_K: 217 tensors
llama_model_loader: - type q6_K: 37 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = Q4_K - Medium
print_info: file size = 4.68 GiB (4.90 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = qwen3
print_info: vocab_only = 0
print_info: n_ctx_train = 40960
print_info: n_embd = 4096
print_info: n_layer = 36
print_info: n_head = 32
print_info: n_head_kv = 8
print_info: n_rot = 128
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 128
print_info: n_embd_head_v = 128
print_info: n_gqa = 4
print_info: n_embd_k_gqa = 1024
print_info: n_embd_v_gqa = 1024
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 12288
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = -1
print_info: rope type = 2
print_info: rope scaling = linear
print_info: freq_base_train = 1000000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 40960
print_info: rope_finetuned = unknown
print_info: model type = 8B
print_info: model params = 8.19 B
print_info: general.name = Llm
print_info: vocab type = BPE
print_info: n_vocab = 151748
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: CPU_REPACK model buffer size = 3199.50 MiB
load_tensors: CPU_Mapped model buffer size = 4761.17 MiB
.....................................................................................
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 1000000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.58 MiB
llama_kv_cache: CPU KV buffer size = 288.00 MiB
llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 304.38 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 1
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = llama
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Tts
llama_model_loader: - kv 3: general.size_label str = 445M
llama_model_loader: - kv 4: llama.block_count u32 = 20
llama_model_loader: - kv 5: llama.context_length u32 = 4096
llama_model_loader: - kv 6: llama.embedding_length u32 = 768
llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072
llama_model_loader: - kv 8: llama.attention.head_count u32 = 12
llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12
llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000
llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: llama.attention.key_length u32 = 64
llama_model_loader: - kv 13: llama.attention.value_length u32 = 64
llama_model_loader: - kv 14: general.file_type u32 = 1
llama_model_loader: - kv 15: llama.vocab_size u32 = 158626
llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64
llama_model_loader: - kv 17: general.quantization_version u32 = 2
llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false
llama_model_loader: - type f32: 50 tensors
llama_model_loader: - type f16: 143 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = F16
print_info: file size = 1.07 GiB (20.70 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = llama
print_info: vocab_only = 0
print_info: n_ctx_train = 4096
print_info: n_embd = 768
print_info: n_layer = 20
print_info: n_head = 12
print_info: n_head_kv = 12
print_info: n_rot = 64
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 64
print_info: n_embd_head_v = 64
print_info: n_gqa = 1
print_info: n_embd_k_gqa = 768
print_info: n_embd_v_gqa = 768
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 3072
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = 0
print_info: rope type = 0
print_info: rope scaling = linear
print_info: freq_base_train = 10000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 4096
print_info: rope_finetuned = unknown
print_info: model type = ?B
print_info: model params = 444.94 M
print_info: general.name = Tts
print_info: vocab type = BPE
print_info: n_vocab = 158626
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: CPU_Mapped model buffer size = 592.48 MiB
..............................................................
llama_init_from_model: model default pooling_type is [0], but [-1] was specified
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 10000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.61 MiB
llama_kv_cache: CPU KV buffer size = 120.00 MiB
llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 25.51 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 1
vision_model_loader: model name:
vision_model_loader: description: image encoder for MiniCPM-V
vision_model_loader: GGUF version: 3
vision_model_loader: alignment: 32
vision_model_loader: n_tensors: 455
vision_model_loader: n_kv: 20
vision_ctx: vision using CPU backend
load_hparams: model_type: 0
load_hparams: n_embd: 1152
load_hparams: n_head: 16
load_hparams: n_ff: 4304
load_hparams: n_layer: 27
load_hparams: ffn_op: gelu
load_hparams: projection_dim: 0
--- vision hparams ---
load_hparams: image_size: 448
load_hparams: patch_size: 14
load_hparams: minicpmv_version: 100045
load_hparams: proj_scale_factor: 0
load_hparams: n_wa_pattern: 0
load_hparams: model size: 1044.36 MiB
load_hparams: metadata size: 0.16 MiB
load_tensors: ffn up/down are swapped
alloc_compute_meta: CPU compute buffer size = 100.30 MiB
init tts....init t2w....voc_hg2_model: CPU backend using 8 threads
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000
audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 20]
audition_audio_batch_encode: Final output: 20 tokens x 4096 dims
=== Model Paths ===
Base dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf
LLM: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK]
===================
=== Initializing Omni Context ===
Media type: 2 (omni: audio+vision)
TTS enabled: yes
Context size: 2048
GPU layers: 0
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts
Ref audio: /mnt/c/Users/zhout/w2/minicpmo_cpp_cpu_v3/fixture_0000.wav
00:12:15.565 === omni_init start
00:12:15.565 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
00:12:15.565 === omni_init: loading new LLM model
00:12:17.276 === omni_init: loading TTS model
00:12:17.276 TTS model: loading with n_gpu_layers=0
00:12:17.445 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
00:12:17.445 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
00:12:17.991 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
00:12:18.000 TTS: head_code loaded, verifying first few values:
00:12:18.000 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
00:12:18.000 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
00:12:18.000 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
00:12:18.073 TTS: weights loaded successfully
00:12:18.073 Projector: loading from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
00:12:18.084 Projector: loaded successfully
00:12:18.084 === omni_init: loading APM model
00:12:18.334 APM: init from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
00:12:18.820 Token2Wav: found models in /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf
00:12:18.820 Token2Wav: all model files found, initializing session...
00:12:18.820 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
00:12:18.820 Token2Wav: using prompt_cache from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
00:12:19.991 Token2Wav: initialized successfully
00:12:19.991 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
00:12:19.991 Token2Wav: 使用 C++ 实现
00:12:19.991 === omni_init success: ctx_llama = 0x605da1ce8060
=== Running test case ===
Audio prefix: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-11-ig9ealus/fixture_
Count: 2
00:12:19.991 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
00:12:19.991 system prompt ref_audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-11-ig9ealus/fixture_0000.wav
00:12:21.117 system prompt ref_audio embedding: n_pos=20
00:12:22.823 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
00:12:22.823 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
00:12:22.823 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
00:12:22.823 n_past = 72
00:12:22.823
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 2.83203 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3189.23 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3211.34 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3211.34 ms by vision ( 3211.34 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-11-ig9ealus/fixture_0001.jpg
stream_prefill: prefilled 1 vision chunks (64 tokens each)
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=49339
audition_audio_preprocess: Audio not aligned to 100ms (49339 samples = 3083.7ms), padded with silence to 49600 samples (3100ms)
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=310, n_mel=80, total_size=24800
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=310, n_mel=80, total_elements=24800
audition_audio_batch_encode: Before incrementing iter: input_frames=310, n_tokens=155, current_iter=1, current_total=155, new_total=310, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=310, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 31]
audition_audio_batch_encode: Final output: 31 tokens x 4096 dims
00:12:27.878 stream_prefill(index=1): processing user audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-11-ig9ealus/fixture_0001.wav
00:12:28.256 stream_prefill(index=1): user audio embedding: n_pos=31
00:12:29.404
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 6.5807 s
00:12:29.404 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
00:12:29.404 stream_decode: create tts thread (simplex mode)
00:12:29.404 stream_decode: create t2w thread
00:12:29.404 wait prefill done
00:12:29.404 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
00:12:29.404 T2W thread (C++) started
<user>
<assistant>00:12:29.407 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
00:12:29.407 TTS thread started
00:12:29.816 📍 [单工TTS] assistant prompt 完成, n_past=182
00:12:29.816 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
00:12:30.729 LLM: detected end token, set llm_generation_done=true
00:12:30.729 LLM->TTS: text='The square in the image is red.', n_tokens=8, hidden_size=32768, n_embd=4096, token_ids=[785 9334 304 279 2168 374 2518 13]
00:12:30.729 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
00:12:30.729 📍 轮次 1 结束,记录边界于 n_past=191
00:12:30.729 TTS<-LLM: chunk_idx=0, text='The square in the image is red.', n_tokens=8, hidden_size=32768, token_ids=[785 9334 304 279 2168 374 2518 13]
00:12:30.729 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
00:12:30.729 TTS: before empty check - response.empty=0, response='The square in the image is red.', llm_finish=1
Waiting for audio generation to complete...
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty
TTS: no valid WAV files to merge
[timing] call=0 tokens=28 final=0 token2mel=2716.365ms vocoder=302.632ms total=3019.006ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1685.347ms vocoder=325.910ms total=2011.273ms audio=24000
[timing] call=2 tokens=14 final=1 token2mel=1653.113ms vocoder=218.273ms total=1871.395ms audio=17280
Audio generation completed.
00:12:30.729 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
00:12:30.729 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
00:12:30.730 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
00:12:30.742 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
00:12:30.742 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
00:12:30.742 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
00:12:30.742 TTS Simplex: first chunk - cleared KV cache
00:12:30.742 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
00:12:30.761 TTS Simplex: prefill completed, n_past_tts=9
00:12:30.761 TTS Simplex: sampler created
00:12:30.761 TTS simplex: is_audio_bos=true (first audio token)
00:12:30.789 TTS Simplex Phase1: token 1/500: rel_id=1472
00:12:30.799 TTS Simplex Phase1: token 2/500: rel_id=4299
00:12:30.810 TTS Simplex Phase1: token 3/500: rel_id=4299
00:12:30.822 TTS Simplex Phase1: token 4/500: rel_id=4218
00:12:30.833 TTS Simplex Phase1: token 5/500: rel_id=4218
00:12:31.063 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
00:12:31.071 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
00:12:31.071 TTS Simplex Phase1: token 25/500: rel_id=5934
00:12:31.071 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
00:12:31.071 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
00:12:31.216 TTS Simplex Phase1: EOS token at step 40
00:12:31.216 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
00:12:31.216 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=48
00:12:31.223 TTS Simplex Phase2: text_eos_embed injected, n_past=49
00:12:31.231 TTS Simplex Phase2: audio_bos injected, n_past=50, starting final generation
00:12:31.342 TTS Simplex Phase2: yield 25 tokens 到 T2W
00:12:31.468 TTS Simplex Phase2: EOS at step 23 (final end)
00:12:31.468 TTS Simplex: chunk 结束,tts_token_buffer 剩余 11 tokens (保留等下一个 chunk)
00:12:31.468 TTS Simplex: is_final_text_chunk=true, flush 剩余 11 tokens 从 tts_token_buffer
00:12:31.468 TTS Simplex: generated 61 audio tokens for chunk 0
00:12:31.468 TTS Simplex: chunk 0 first tokens: [1472 4299 4299 4218 4218 ], last tokens: [4299 4218 4218 4218 6079 ]
00:12:31.468 TTS Simplex: updated tts_n_past_accumulated=73, total_generated_tokens=61
00:12:31.468 TTS: finished processing all chunks
00:12:31.468 TTS: 单工模式轮次结束,下一轮 round_idx=1
00:12:31.468 TTS: sent is_final=true to T2W queue (turn end)
00:12:34.090 🎉 首响时间 (First Audio Response): 4686ms
00:12:34.090 T2W线程: wav_0.wav | 0.84s audio | 3019.1ms inference | RTF=3.59 | t=4686ms
00:12:36.102 T2W线程: wav_1.wav | 1.00s audio | 2011.3ms inference | RTF=2.01 | t=6697ms
00:12:37.973 T2W线程: wav_2.wav | 0.72s audio | 1871.4ms inference | RTF=2.60 | t=8569ms
00:12:37.973 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
00:12:37.973 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
00:12:37.974 omni_stop_threads: stop signals sent
00:12:37.974 T2W(C++) 线程: 停止
llama_perf_context_print: load time = 14250.71 ms
llama_perf_context_print: prompt eval time = 9824.83 ms / 182 tokens ( 53.98 ms per token, 18.52 tokens per second)
llama_perf_context_print: eval time = 909.55 ms / 9 runs ( 101.06 ms per token, 9.90 tokens per second)
llama_perf_context_print: total time = 22408.83 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,469 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 25: general.quantization_version u32 = 2
llama_model_loader: - kv 26: general.file_type u32 = 15
llama_model_loader: - type f32: 145 tensors
llama_model_loader: - type q4_K: 217 tensors
llama_model_loader: - type q6_K: 37 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = Q4_K - Medium
print_info: file size = 4.68 GiB (4.90 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = qwen3
print_info: vocab_only = 0
print_info: n_ctx_train = 40960
print_info: n_embd = 4096
print_info: n_layer = 36
print_info: n_head = 32
print_info: n_head_kv = 8
print_info: n_rot = 128
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 128
print_info: n_embd_head_v = 128
print_info: n_gqa = 4
print_info: n_embd_k_gqa = 1024
print_info: n_embd_v_gqa = 1024
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 12288
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = -1
print_info: rope type = 2
print_info: rope scaling = linear
print_info: freq_base_train = 1000000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 40960
print_info: rope_finetuned = unknown
print_info: model type = 8B
print_info: model params = 8.19 B
print_info: general.name = Llm
print_info: vocab type = BPE
print_info: n_vocab = 151748
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: CPU_REPACK model buffer size = 3199.50 MiB
load_tensors: CPU_Mapped model buffer size = 4761.17 MiB
.....................................................................................
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 1000000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.58 MiB
llama_kv_cache: CPU KV buffer size = 288.00 MiB
llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 304.38 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 1
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = llama
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Tts
llama_model_loader: - kv 3: general.size_label str = 445M
llama_model_loader: - kv 4: llama.block_count u32 = 20
llama_model_loader: - kv 5: llama.context_length u32 = 4096
llama_model_loader: - kv 6: llama.embedding_length u32 = 768
llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072
llama_model_loader: - kv 8: llama.attention.head_count u32 = 12
llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12
llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000
llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: llama.attention.key_length u32 = 64
llama_model_loader: - kv 13: llama.attention.value_length u32 = 64
llama_model_loader: - kv 14: general.file_type u32 = 1
llama_model_loader: - kv 15: llama.vocab_size u32 = 158626
llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64
llama_model_loader: - kv 17: general.quantization_version u32 = 2
llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false
llama_model_loader: - type f32: 50 tensors
llama_model_loader: - type f16: 143 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = F16
print_info: file size = 1.07 GiB (20.70 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = llama
print_info: vocab_only = 0
print_info: n_ctx_train = 4096
print_info: n_embd = 768
print_info: n_layer = 20
print_info: n_head = 12
print_info: n_head_kv = 12
print_info: n_rot = 64
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 64
print_info: n_embd_head_v = 64
print_info: n_gqa = 1
print_info: n_embd_k_gqa = 768
print_info: n_embd_v_gqa = 768
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 3072
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = 0
print_info: rope type = 0
print_info: rope scaling = linear
print_info: freq_base_train = 10000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 4096
print_info: rope_finetuned = unknown
print_info: model type = ?B
print_info: model params = 444.94 M
print_info: general.name = Tts
print_info: vocab type = BPE
print_info: n_vocab = 158626
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: CPU_Mapped model buffer size = 592.48 MiB
..............................................................
llama_init_from_model: model default pooling_type is [0], but [-1] was specified
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 10000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.61 MiB
llama_kv_cache: CPU KV buffer size = 120.00 MiB
llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 25.51 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 1
vision_model_loader: model name:
vision_model_loader: description: image encoder for MiniCPM-V
vision_model_loader: GGUF version: 3
vision_model_loader: alignment: 32
vision_model_loader: n_tensors: 455
vision_model_loader: n_kv: 20
vision_ctx: vision using CPU backend
load_hparams: model_type: 0
load_hparams: n_embd: 1152
load_hparams: n_head: 16
load_hparams: n_ff: 4304
load_hparams: n_layer: 27
load_hparams: ffn_op: gelu
load_hparams: projection_dim: 0
--- vision hparams ---
load_hparams: image_size: 448
load_hparams: patch_size: 14
load_hparams: minicpmv_version: 100045
load_hparams: proj_scale_factor: 0
load_hparams: n_wa_pattern: 0
load_hparams: model size: 1044.36 MiB
load_hparams: metadata size: 0.16 MiB
load_tensors: ffn up/down are swapped
alloc_compute_meta: CPU compute buffer size = 100.30 MiB
init tts....init t2w....voc_hg2_model: CPU backend using 8 threads
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000
audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 20]
audition_audio_batch_encode: Final output: 20 tokens x 4096 dims
=== Model Paths ===
Base dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf
LLM: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK]
===================
=== Initializing Omni Context ===
Media type: 2 (omni: audio+vision)
TTS enabled: yes
Context size: 2048
GPU layers: 0
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts
Ref audio: /mnt/c/Users/zhout/w2/minicpmo_cpp_cpu_v3/fixture_0000.wav
00:12:38.546 === omni_init start
00:12:38.546 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
00:12:38.546 === omni_init: loading new LLM model
00:12:40.217 === omni_init: loading TTS model
00:12:40.217 TTS model: loading with n_gpu_layers=0
00:12:40.384 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
00:12:40.384 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
00:12:41.056 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
00:12:41.069 TTS: head_code loaded, verifying first few values:
00:12:41.069 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
00:12:41.069 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
00:12:41.069 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
00:12:41.146 TTS: weights loaded successfully
00:12:41.146 Projector: loading from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
00:12:41.158 Projector: loaded successfully
00:12:41.158 === omni_init: loading APM model
00:12:41.561 APM: init from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
00:12:42.254 Token2Wav: found models in /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf
00:12:42.254 Token2Wav: all model files found, initializing session...
00:12:42.254 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
00:12:42.254 Token2Wav: using prompt_cache from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
00:12:43.435 Token2Wav: initialized successfully
00:12:43.435 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
00:12:43.435 Token2Wav: 使用 C++ 实现
00:12:43.435 === omni_init success: ctx_llama = 0x6121c8f90060
=== Running test case ===
Audio prefix: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-12-q8httepa/fixture_
Count: 2
00:12:43.435 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
00:12:43.435 system prompt ref_audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-12-q8httepa/fixture_0000.wav
00:12:44.420 system prompt ref_audio embedding: n_pos=20
00:12:45.869 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
00:12:45.869 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
00:12:45.869 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
00:12:45.869 n_past = 72
00:12:45.869
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 2.43383 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3150.09 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3169.10 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3169.10 ms by vision ( 3169.10 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-12-q8httepa/fixture_0001.jpg
stream_prefill: prefilled 1 vision chunks (64 tokens each)
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=49339
audition_audio_preprocess: Audio not aligned to 100ms (49339 samples = 3083.7ms), padded with silence to 49600 samples (3100ms)
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=310, n_mel=80, total_size=24800
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=310, n_mel=80, total_elements=24800
audition_audio_batch_encode: Before incrementing iter: input_frames=310, n_tokens=155, current_iter=1, current_total=155, new_total=310, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=310, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 31]
audition_audio_batch_encode: Final output: 31 tokens x 4096 dims
00:12:50.875 stream_prefill(index=1): processing user audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-12-q8httepa/fixture_0001.wav
00:12:51.197 stream_prefill(index=1): user audio embedding: n_pos=31
00:12:52.355
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 6.48619 s
00:12:52.355 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
00:12:52.356 stream_decode: create tts thread (simplex mode)
00:12:52.356 stream_decode: create t2w thread
00:12:52.356 wait prefill done
00:12:52.356 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
00:12:52.356 T2W thread (C++) started
<user>
<assistant>00:12:52.360 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
00:12:52.360 TTS thread started
00:12:52.775 📍 [单工TTS] assistant prompt 完成, n_past=182
00:12:52.775 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
00:12:53.713 LLM: detected end token, set llm_generation_done=true
00:12:53.713 LLM->TTS: text='The square in the image is red.', n_tokens=8, hidden_size=32768, n_embd=4096, token_ids=[785 9334 304 279 2168 374 2518 13]
00:12:53.713 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
00:12:53.713 📍 轮次 1 结束,记录边界于 n_past=191
00:12:53.713 TTS<-LLM: chunk_idx=0, text='The square in the image is red.', n_tokens=8, hidden_size=32768, token_ids=[785 9334 304 279 2168 374 2518 13]
00:12:53.713 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
00:12:53.713 TTS: before empty check - response.empty=0, response='The square in the image is red.', llm_finish=1
Waiting for audio generation to complete...
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty
TTS: no valid WAV files to merge
[timing] call=0 tokens=28 final=0 token2mel=2222.160ms vocoder=294.567ms total=2516.736ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1670.615ms vocoder=315.087ms total=1985.720ms audio=24000
[timing] call=2 tokens=8 final=1 token2mel=1652.414ms vocoder=141.048ms total=1793.471ms audio=11520
Audio generation completed.
00:12:53.713 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
00:12:53.713 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
00:12:53.714 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
00:12:53.726 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
00:12:53.726 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
00:12:53.726 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
00:12:53.726 TTS Simplex: first chunk - cleared KV cache
00:12:53.726 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
00:12:53.744 TTS Simplex: prefill completed, n_past_tts=9
00:12:53.744 TTS Simplex: sampler created
00:12:53.744 TTS simplex: is_audio_bos=true (first audio token)
00:12:53.805 TTS Simplex Phase1: token 1/500: rel_id=757
00:12:53.815 TTS Simplex Phase1: token 2/500: rel_id=4137
00:12:53.826 TTS Simplex Phase1: token 3/500: rel_id=4218
00:12:53.838 TTS Simplex Phase1: token 4/500: rel_id=4137
00:12:53.849 TTS Simplex Phase1: token 5/500: rel_id=4137
00:12:54.036 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
00:12:54.074 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
00:12:54.074 TTS Simplex Phase1: token 25/500: rel_id=4606
00:12:54.074 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
00:12:54.074 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
00:12:54.252 TTS Simplex Phase1: EOS token at step 43
00:12:54.252 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
00:12:54.252 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=51
00:12:54.260 TTS Simplex Phase2: text_eos_embed injected, n_past=52
00:12:54.269 TTS Simplex Phase2: audio_bos injected, n_past=53, starting final generation
00:12:54.356 TTS Simplex Phase2: yield 25 tokens 到 T2W
00:12:54.419 TTS Simplex Phase2: EOS at step 14 (final end)
00:12:54.419 TTS Simplex: chunk 结束,tts_token_buffer 剩余 5 tokens (保留等下一个 chunk)
00:12:54.419 TTS Simplex: is_final_text_chunk=true, flush 剩余 5 tokens 从 tts_token_buffer
00:12:54.419 TTS Simplex: generated 55 audio tokens for chunk 0
00:12:54.419 TTS Simplex: chunk 0 first tokens: [757 4137 4218 4137 4137 ], last tokens: [735 2031 4218 4218 6082 ]
00:12:54.419 TTS Simplex: updated tts_n_past_accumulated=67, total_generated_tokens=55
00:12:54.419 TTS: finished processing all chunks
00:12:54.419 TTS: 单工模式轮次结束,下一轮 round_idx=1
00:12:54.419 TTS: sent is_final=true to T2W queue (turn end)
00:12:56.591 🎉 首响时间 (First Audio Response): 4235ms
00:12:56.591 T2W线程: wav_0.wav | 0.84s audio | 2516.8ms inference | RTF=3.00 | t=4235ms
00:12:58.577 T2W线程: wav_1.wav | 1.00s audio | 1985.8ms inference | RTF=1.99 | t=6221ms
00:13:00.371 T2W线程: wav_2.wav | 0.48s audio | 1793.5ms inference | RTF=3.74 | t=8015ms
00:13:00.371 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
00:13:00.371 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
00:13:00.448 omni_stop_threads: stop signals sent
00:13:00.448 T2W(C++) 线程: 停止
llama_perf_context_print: load time = 14227.85 ms
llama_perf_context_print: prompt eval time = 9339.12 ms / 182 tokens ( 51.31 ms per token, 19.49 tokens per second)
llama_perf_context_print: eval time = 935.65 ms / 9 runs ( 103.96 ms per token, 9.62 tokens per second)
llama_perf_context_print: total time = 21901.78 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,469 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 25: general.quantization_version u32 = 2
llama_model_loader: - kv 26: general.file_type u32 = 15
llama_model_loader: - type f32: 145 tensors
llama_model_loader: - type q4_K: 217 tensors
llama_model_loader: - type q6_K: 37 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = Q4_K - Medium
print_info: file size = 4.68 GiB (4.90 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = qwen3
print_info: vocab_only = 0
print_info: n_ctx_train = 40960
print_info: n_embd = 4096
print_info: n_layer = 36
print_info: n_head = 32
print_info: n_head_kv = 8
print_info: n_rot = 128
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 128
print_info: n_embd_head_v = 128
print_info: n_gqa = 4
print_info: n_embd_k_gqa = 1024
print_info: n_embd_v_gqa = 1024
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 12288
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = -1
print_info: rope type = 2
print_info: rope scaling = linear
print_info: freq_base_train = 1000000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 40960
print_info: rope_finetuned = unknown
print_info: model type = 8B
print_info: model params = 8.19 B
print_info: general.name = Llm
print_info: vocab type = BPE
print_info: n_vocab = 151748
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: CPU_REPACK model buffer size = 3199.50 MiB
load_tensors: CPU_Mapped model buffer size = 4761.17 MiB
.....................................................................................
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 1000000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.58 MiB
llama_kv_cache: CPU KV buffer size = 288.00 MiB
llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 304.38 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 1
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = llama
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Tts
llama_model_loader: - kv 3: general.size_label str = 445M
llama_model_loader: - kv 4: llama.block_count u32 = 20
llama_model_loader: - kv 5: llama.context_length u32 = 4096
llama_model_loader: - kv 6: llama.embedding_length u32 = 768
llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072
llama_model_loader: - kv 8: llama.attention.head_count u32 = 12
llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12
llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000
llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: llama.attention.key_length u32 = 64
llama_model_loader: - kv 13: llama.attention.value_length u32 = 64
llama_model_loader: - kv 14: general.file_type u32 = 1
llama_model_loader: - kv 15: llama.vocab_size u32 = 158626
llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64
llama_model_loader: - kv 17: general.quantization_version u32 = 2
llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false
llama_model_loader: - type f32: 50 tensors
llama_model_loader: - type f16: 143 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = F16
print_info: file size = 1.07 GiB (20.70 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = llama
print_info: vocab_only = 0
print_info: n_ctx_train = 4096
print_info: n_embd = 768
print_info: n_layer = 20
print_info: n_head = 12
print_info: n_head_kv = 12
print_info: n_rot = 64
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 64
print_info: n_embd_head_v = 64
print_info: n_gqa = 1
print_info: n_embd_k_gqa = 768
print_info: n_embd_v_gqa = 768
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 3072
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = 0
print_info: rope type = 0
print_info: rope scaling = linear
print_info: freq_base_train = 10000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 4096
print_info: rope_finetuned = unknown
print_info: model type = ?B
print_info: model params = 444.94 M
print_info: general.name = Tts
print_info: vocab type = BPE
print_info: n_vocab = 158626
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: CPU_Mapped model buffer size = 592.48 MiB
..............................................................
llama_init_from_model: model default pooling_type is [0], but [-1] was specified
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 10000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.61 MiB
llama_kv_cache: CPU KV buffer size = 120.00 MiB
llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 25.51 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 1
vision_model_loader: model name:
vision_model_loader: description: image encoder for MiniCPM-V
vision_model_loader: GGUF version: 3
vision_model_loader: alignment: 32
vision_model_loader: n_tensors: 455
vision_model_loader: n_kv: 20
vision_ctx: vision using CPU backend
load_hparams: model_type: 0
load_hparams: n_embd: 1152
load_hparams: n_head: 16
load_hparams: n_ff: 4304
load_hparams: n_layer: 27
load_hparams: ffn_op: gelu
load_hparams: projection_dim: 0
--- vision hparams ---
load_hparams: image_size: 448
load_hparams: patch_size: 14
load_hparams: minicpmv_version: 100045
load_hparams: proj_scale_factor: 0
load_hparams: n_wa_pattern: 0
load_hparams: model size: 1044.36 MiB
load_hparams: metadata size: 0.16 MiB
load_tensors: ffn up/down are swapped
alloc_compute_meta: CPU compute buffer size = 100.30 MiB
init tts....init t2w....voc_hg2_model: CPU backend using 8 threads
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000
audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 20]
audition_audio_batch_encode: Final output: 20 tokens x 4096 dims
=== Model Paths ===
Base dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf
LLM: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK]
===================
=== Initializing Omni Context ===
Media type: 2 (omni: audio+vision)
TTS enabled: yes
Context size: 2048
GPU layers: 0
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts
Ref audio: /mnt/c/Users/zhout/w2/minicpmo_cpp_cpu_v3/fixture_0000.wav
00:13:01.035 === omni_init start
00:13:01.035 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
00:13:01.035 === omni_init: loading new LLM model
00:13:02.712 === omni_init: loading TTS model
00:13:02.712 TTS model: loading with n_gpu_layers=0
00:13:02.887 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
00:13:02.887 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
00:13:03.543 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
00:13:03.552 TTS: head_code loaded, verifying first few values:
00:13:03.552 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
00:13:03.552 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
00:13:03.552 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
00:13:03.627 TTS: weights loaded successfully
00:13:03.627 Projector: loading from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
00:13:03.638 Projector: loaded successfully
00:13:03.638 === omni_init: loading APM model
00:13:03.886 APM: init from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
00:13:04.620 Token2Wav: found models in /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf
00:13:04.620 Token2Wav: all model files found, initializing session...
00:13:04.620 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
00:13:04.620 Token2Wav: using prompt_cache from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
00:13:05.515 Token2Wav: initialized successfully
00:13:05.515 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
00:13:05.515 Token2Wav: 使用 C++ 实现
00:13:05.515 === omni_init success: ctx_llama = 0x56ab71187060
=== Running test case ===
Audio prefix: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-13-1qav49xf/fixture_
Count: 2
00:13:05.515 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
00:13:05.515 system prompt ref_audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-13-1qav49xf/fixture_0000.wav
00:13:06.344 system prompt ref_audio embedding: n_pos=20
00:13:07.886 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
00:13:07.886 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
00:13:07.886 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
00:13:07.886 n_past = 72
00:13:07.886
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 2.37051 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3068.39 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3087.46 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3087.46 ms by vision ( 3087.46 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-13-1qav49xf/fixture_0001.jpg
stream_prefill: prefilled 1 vision chunks (64 tokens each)
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=49339
audition_audio_preprocess: Audio not aligned to 100ms (49339 samples = 3083.7ms), padded with silence to 49600 samples (3100ms)
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=310, n_mel=80, total_size=24800
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=310, n_mel=80, total_elements=24800
audition_audio_batch_encode: Before incrementing iter: input_frames=310, n_tokens=155, current_iter=1, current_total=155, new_total=310, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=310, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 31]
audition_audio_batch_encode: Final output: 31 tokens x 4096 dims
00:13:12.774 stream_prefill(index=1): processing user audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-13-1qav49xf/fixture_0001.wav
00:13:13.082 stream_prefill(index=1): user audio embedding: n_pos=31
00:13:14.251
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 6.36542 s
00:13:14.251 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
00:13:14.251 stream_decode: create tts thread (simplex mode)
00:13:14.251 stream_decode: create t2w thread
00:13:14.251 wait prefill done
00:13:14.251 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
00:13:14.252 T2W thread (C++) started
<user>
<assistant>00:13:14.256 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
00:13:14.256 TTS thread started
00:13:14.678 📍 [单工TTS] assistant prompt 完成, n_past=182
00:13:14.678 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
00:13:15.605 LLM: detected end token, set llm_generation_done=true
00:13:15.605 LLM->TTS: text='The square in the image is red.', n_tokens=8, hidden_size=32768, n_embd=4096, token_ids=[785 9334 304 279 2168 374 2518 13]
00:13:15.605 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
00:13:15.605 📍 轮次 1 结束,记录边界于 n_past=191
00:13:15.605 TTS<-LLM: chunk_idx=0, text='The square in the image is red.', n_tokens=8, hidden_size=32768, token_ids=[785 9334 304 279 2168 374 2518 13]
00:13:15.605 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
00:13:15.605 TTS: before empty check - response.empty=0, response='The square in the image is red.', llm_finish=1
Waiting for audio generation to complete...
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty
TTS: no valid WAV files to merge
[timing] call=0 tokens=28 final=0 token2mel=2148.004ms vocoder=283.707ms total=2431.721ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1657.637ms vocoder=316.081ms total=1973.737ms audio=24000
[timing] call=2 tokens=23 final=1 token2mel=1658.905ms vocoder=290.288ms total=1949.205ms audio=25920
Audio generation completed.
00:13:15.605 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
00:13:15.605 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
00:13:15.606 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
00:13:15.615 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
00:13:15.615 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
00:13:15.615 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
00:13:15.615 TTS Simplex: first chunk - cleared KV cache
00:13:15.615 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
00:13:15.632 TTS Simplex: prefill completed, n_past_tts=9
00:13:15.632 TTS Simplex: sampler created
00:13:15.632 TTS simplex: is_audio_bos=true (first audio token)
00:13:15.660 TTS Simplex Phase1: token 1/500: rel_id=1496
00:13:15.671 TTS Simplex Phase1: token 2/500: rel_id=3888
00:13:15.684 TTS Simplex Phase1: token 3/500: rel_id=3648
00:13:15.695 TTS Simplex Phase1: token 4/500: rel_id=3648
00:13:15.705 TTS Simplex Phase1: token 5/500: rel_id=4218
00:13:15.933 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
00:13:15.933 TTS Simplex Phase1: token 25/500: rel_id=4579
00:13:15.933 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
00:13:15.933 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
00:13:15.933 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
00:13:16.153 TTS Simplex Phase1: EOS token at step 46
00:13:16.153 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
00:13:16.153 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=54
00:13:16.160 TTS Simplex Phase2: text_eos_embed injected, n_past=55
00:13:16.167 TTS Simplex Phase2: audio_bos injected, n_past=56, starting final generation
00:13:16.221 TTS Simplex Phase2: yield 25 tokens 到 T2W
00:13:16.433 TTS Simplex Phase2: EOS at step 26 (final end)
00:13:16.433 TTS Simplex: chunk 结束,tts_token_buffer 剩余 20 tokens (保留等下一个 chunk)
00:13:16.433 TTS Simplex: is_final_text_chunk=true, flush 剩余 20 tokens 从 tts_token_buffer
00:13:16.433 TTS Simplex: generated 70 audio tokens for chunk 0
00:13:16.433 TTS Simplex: chunk 0 first tokens: [1496 3888 3648 3648 4218 ], last tokens: [4218 4218 4218 4218 4137 ]
00:13:16.433 TTS Simplex: updated tts_n_past_accumulated=82, total_generated_tokens=70
00:13:16.433 TTS: finished processing all chunks
00:13:16.433 TTS: 单工模式轮次结束,下一轮 round_idx=1
00:13:16.433 TTS: sent is_final=true to T2W queue (turn end)
00:13:18.365 🎉 首响时间 (First Audio Response): 4113ms
00:13:18.365 T2W线程: wav_0.wav | 0.84s audio | 2431.8ms inference | RTF=2.89 | t=4113ms
00:13:20.339 T2W线程: wav_1.wav | 1.00s audio | 1973.8ms inference | RTF=1.97 | t=6087ms
00:13:22.288 T2W线程: wav_2.wav | 1.08s audio | 1949.3ms inference | RTF=1.80 | t=8036ms
00:13:22.288 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
00:13:22.288 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
00:13:22.344 omni_stop_threads: stop signals sent
00:13:22.344 T2W(C++) 线程: 停止
llama_perf_context_print: load time = 13642.34 ms
llama_perf_context_print: prompt eval time = 9162.95 ms / 182 tokens ( 50.35 ms per token, 19.86 tokens per second)
llama_perf_context_print: eval time = 924.22 ms / 9 runs ( 102.69 ms per token, 9.74 tokens per second)
llama_perf_context_print: total time = 21308.77 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,469 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 25: general.quantization_version u32 = 2
llama_model_loader: - kv 26: general.file_type u32 = 15
llama_model_loader: - type f32: 145 tensors
llama_model_loader: - type q4_K: 217 tensors
llama_model_loader: - type q6_K: 37 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = Q4_K - Medium
print_info: file size = 4.68 GiB (4.90 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = qwen3
print_info: vocab_only = 0
print_info: n_ctx_train = 40960
print_info: n_embd = 4096
print_info: n_layer = 36
print_info: n_head = 32
print_info: n_head_kv = 8
print_info: n_rot = 128
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 128
print_info: n_embd_head_v = 128
print_info: n_gqa = 4
print_info: n_embd_k_gqa = 1024
print_info: n_embd_v_gqa = 1024
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 12288
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = -1
print_info: rope type = 2
print_info: rope scaling = linear
print_info: freq_base_train = 1000000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 40960
print_info: rope_finetuned = unknown
print_info: model type = 8B
print_info: model params = 8.19 B
print_info: general.name = Llm
print_info: vocab type = BPE
print_info: n_vocab = 151748
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: CPU_REPACK model buffer size = 3199.50 MiB
load_tensors: CPU_Mapped model buffer size = 4761.17 MiB
.....................................................................................
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 1000000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.58 MiB
llama_kv_cache: CPU KV buffer size = 288.00 MiB
llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 304.38 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 1
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = llama
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Tts
llama_model_loader: - kv 3: general.size_label str = 445M
llama_model_loader: - kv 4: llama.block_count u32 = 20
llama_model_loader: - kv 5: llama.context_length u32 = 4096
llama_model_loader: - kv 6: llama.embedding_length u32 = 768
llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072
llama_model_loader: - kv 8: llama.attention.head_count u32 = 12
llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12
llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000
llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: llama.attention.key_length u32 = 64
llama_model_loader: - kv 13: llama.attention.value_length u32 = 64
llama_model_loader: - kv 14: general.file_type u32 = 1
llama_model_loader: - kv 15: llama.vocab_size u32 = 158626
llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64
llama_model_loader: - kv 17: general.quantization_version u32 = 2
llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false
llama_model_loader: - type f32: 50 tensors
llama_model_loader: - type f16: 143 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = F16
print_info: file size = 1.07 GiB (20.70 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = llama
print_info: vocab_only = 0
print_info: n_ctx_train = 4096
print_info: n_embd = 768
print_info: n_layer = 20
print_info: n_head = 12
print_info: n_head_kv = 12
print_info: n_rot = 64
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 64
print_info: n_embd_head_v = 64
print_info: n_gqa = 1
print_info: n_embd_k_gqa = 768
print_info: n_embd_v_gqa = 768
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 3072
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = 0
print_info: rope type = 0
print_info: rope scaling = linear
print_info: freq_base_train = 10000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 4096
print_info: rope_finetuned = unknown
print_info: model type = ?B
print_info: model params = 444.94 M
print_info: general.name = Tts
print_info: vocab type = BPE
print_info: n_vocab = 158626
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: CPU_Mapped model buffer size = 592.48 MiB
..............................................................
llama_init_from_model: model default pooling_type is [0], but [-1] was specified
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 10000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.61 MiB
llama_kv_cache: CPU KV buffer size = 120.00 MiB
llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 25.51 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 1
vision_model_loader: model name:
vision_model_loader: description: image encoder for MiniCPM-V
vision_model_loader: GGUF version: 3
vision_model_loader: alignment: 32
vision_model_loader: n_tensors: 455
vision_model_loader: n_kv: 20
vision_ctx: vision using CPU backend
load_hparams: model_type: 0
load_hparams: n_embd: 1152
load_hparams: n_head: 16
load_hparams: n_ff: 4304
load_hparams: n_layer: 27
load_hparams: ffn_op: gelu
load_hparams: projection_dim: 0
--- vision hparams ---
load_hparams: image_size: 448
load_hparams: patch_size: 14
load_hparams: minicpmv_version: 100045
load_hparams: proj_scale_factor: 0
load_hparams: n_wa_pattern: 0
load_hparams: model size: 1044.36 MiB
load_hparams: metadata size: 0.16 MiB
load_tensors: ffn up/down are swapped
alloc_compute_meta: CPU compute buffer size = 100.30 MiB
init tts....init t2w....voc_hg2_model: CPU backend using 8 threads
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000
audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 20]
audition_audio_batch_encode: Final output: 20 tokens x 4096 dims
=== Model Paths ===
Base dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf
LLM: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK]
===================
=== Initializing Omni Context ===
Media type: 2 (omni: audio+vision)
TTS enabled: yes
Context size: 2048
GPU layers: 0
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts
Ref audio: /mnt/c/Users/zhout/w2/minicpmo_cpp_cpu_v3/fixture_0000.wav
00:13:22.918 === omni_init start
00:13:22.918 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
00:13:22.918 === omni_init: loading new LLM model
00:13:24.533 === omni_init: loading TTS model
00:13:24.533 TTS model: loading with n_gpu_layers=0
00:13:24.695 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
00:13:24.695 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
00:13:25.233 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
00:13:25.242 TTS: head_code loaded, verifying first few values:
00:13:25.242 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
00:13:25.242 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
00:13:25.242 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
00:13:25.312 TTS: weights loaded successfully
00:13:25.312 Projector: loading from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
00:13:25.322 Projector: loaded successfully
00:13:25.322 === omni_init: loading APM model
00:13:25.573 APM: init from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
00:13:25.917 Token2Wav: found models in /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf
00:13:25.917 Token2Wav: all model files found, initializing session...
00:13:25.917 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
00:13:25.917 Token2Wav: using prompt_cache from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
00:13:26.433 Token2Wav: initialized successfully
00:13:26.433 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
00:13:26.433 Token2Wav: 使用 C++ 实现
00:13:26.433 === omni_init success: ctx_llama = 0x57135c220060
=== Running test case ===
Audio prefix: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-14-oqvnicam/fixture_
Count: 2
00:13:26.433 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
00:13:26.433 system prompt ref_audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-14-oqvnicam/fixture_0000.wav
00:13:27.263 system prompt ref_audio embedding: n_pos=20
00:13:29.125 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
00:13:29.125 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
00:13:29.125 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
00:13:29.125 n_past = 72
00:13:29.125
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 2.69242 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3507.26 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3528.14 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3528.14 ms by vision ( 3528.14 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-14-oqvnicam/fixture_0001.jpg
stream_prefill: prefilled 1 vision chunks (64 tokens each)
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=49339
audition_audio_preprocess: Audio not aligned to 100ms (49339 samples = 3083.7ms), padded with silence to 49600 samples (3100ms)
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=310, n_mel=80, total_size=24800
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=310, n_mel=80, total_elements=24800
audition_audio_batch_encode: Before incrementing iter: input_frames=310, n_tokens=155, current_iter=1, current_total=155, new_total=310, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=310, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 31]
audition_audio_batch_encode: Final output: 31 tokens x 4096 dims
00:13:34.827 stream_prefill(index=1): processing user audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-14-oqvnicam/fixture_0001.wav
00:13:35.290 stream_prefill(index=1): user audio embedding: n_pos=31
00:13:36.506
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.38085 s
00:13:36.506 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
00:13:36.507 stream_decode: create tts thread (simplex mode)
00:13:36.507 stream_decode: create t2w thread
00:13:36.507 wait prefill done
00:13:36.507 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
00:13:36.507 T2W thread (C++) started
<user>
<assistant>00:13:36.511 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
00:13:36.511 TTS thread started
00:13:36.952 📍 [单工TTS] assistant prompt 完成, n_past=182
00:13:36.952 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
00:13:37.897 LLM: detected end token, set llm_generation_done=true
00:13:37.897 LLM->TTS: text='The square in the image is red.', n_tokens=8, hidden_size=32768, n_embd=4096, token_ids=[785 9334 304 279 2168 374 2518 13]
00:13:37.897 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
00:13:37.897 📍 轮次 1 结束,记录边界于 n_past=191
00:13:37.897 TTS<-LLM: chunk_idx=0, text='The square in the image is red.', n_tokens=8, hidden_size=32768, token_ids=[785 9334 304 279 2168 374 2518 13]
00:13:37.897 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
00:13:37.897 TTS: before empty check - response.empty=0, response='The square in the image is red.', llm_finish=1
Waiting for audio generation to complete...
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty
TTS: no valid WAV files to merge
[timing] call=0 tokens=28 final=0 token2mel=2461.362ms vocoder=297.055ms total=2758.427ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1658.467ms vocoder=318.833ms total=1977.317ms audio=24000
[timing] call=2 tokens=18 final=1 token2mel=1644.292ms vocoder=240.052ms total=1884.354ms audio=21120
Audio generation completed.
00:13:37.897 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
00:13:37.897 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
00:13:37.897 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
00:13:37.907 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
00:13:37.907 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
00:13:37.907 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
00:13:37.907 TTS Simplex: first chunk - cleared KV cache
00:13:37.907 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
00:13:37.927 TTS Simplex: prefill completed, n_past_tts=9
00:13:37.927 TTS Simplex: sampler created
00:13:37.927 TTS simplex: is_audio_bos=true (first audio token)
00:13:37.955 TTS Simplex Phase1: token 1/500: rel_id=1487
00:13:37.968 TTS Simplex Phase1: token 2/500: rel_id=1950
00:13:37.980 TTS Simplex Phase1: token 3/500: rel_id=4218
00:13:37.991 TTS Simplex Phase1: token 4/500: rel_id=4137
00:13:38.004 TTS Simplex Phase1: token 5/500: rel_id=4218
00:13:38.236 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
00:13:38.247 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
00:13:38.247 TTS Simplex Phase1: token 25/500: rel_id=6553
00:13:38.247 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
00:13:38.247 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
00:13:38.442 TTS Simplex Phase1: EOS token at step 44
00:13:38.442 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
00:13:38.442 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=52
00:13:38.449 TTS Simplex Phase2: text_eos_embed injected, n_past=53
00:13:38.457 TTS Simplex Phase2: audio_bos injected, n_past=54, starting final generation
00:13:38.527 TTS Simplex Phase2: yield 25 tokens 到 T2W
00:13:38.691 TTS Simplex Phase2: EOS at step 23 (final end)
00:13:38.691 TTS Simplex: chunk 结束,tts_token_buffer 剩余 15 tokens (保留等下一个 chunk)
00:13:38.691 TTS Simplex: is_final_text_chunk=true, flush 剩余 15 tokens 从 tts_token_buffer
00:13:38.691 TTS Simplex: generated 65 audio tokens for chunk 0
00:13:38.691 TTS Simplex: chunk 0 first tokens: [1487 1950 4218 4137 4218 ], last tokens: [4218 4218 4218 4218 6078 ]
00:13:38.691 TTS Simplex: updated tts_n_past_accumulated=77, total_generated_tokens=65
00:13:38.691 TTS: finished processing all chunks
00:13:38.691 TTS: 单工模式轮次结束,下一轮 round_idx=1
00:13:38.691 TTS: sent is_final=true to T2W queue (turn end)
00:13:41.006 🎉 首响时间 (First Audio Response): 4499ms
00:13:41.006 T2W线程: wav_0.wav | 0.84s audio | 2758.5ms inference | RTF=3.28 | t=4499ms
00:13:42.983 T2W线程: wav_1.wav | 1.00s audio | 1977.4ms inference | RTF=1.98 | t=6476ms
00:13:44.868 T2W线程: wav_2.wav | 0.88s audio | 1884.4ms inference | RTF=2.14 | t=8361ms
00:13:44.868 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
00:13:44.868 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
00:13:44.947 omni_stop_threads: stop signals sent
00:13:44.948 T2W(C++) 线程: 停止
llama_perf_context_print: load time = 14033.25 ms
llama_perf_context_print: prompt eval time = 10518.90 ms / 182 tokens ( 57.80 ms per token, 17.30 tokens per second)
llama_perf_context_print: eval time = 941.94 ms / 9 runs ( 104.66 ms per token, 9.55 tokens per second)
llama_perf_context_print: total time = 22029.31 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,466 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 25: general.quantization_version u32 = 2
llama_model_loader: - kv 26: general.file_type u32 = 15
llama_model_loader: - type f32: 145 tensors
llama_model_loader: - type q4_K: 217 tensors
llama_model_loader: - type q6_K: 37 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = Q4_K - Medium
print_info: file size = 4.68 GiB (4.90 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = qwen3
print_info: vocab_only = 0
print_info: n_ctx_train = 40960
print_info: n_embd = 4096
print_info: n_layer = 36
print_info: n_head = 32
print_info: n_head_kv = 8
print_info: n_rot = 128
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 128
print_info: n_embd_head_v = 128
print_info: n_gqa = 4
print_info: n_embd_k_gqa = 1024
print_info: n_embd_v_gqa = 1024
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 12288
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = -1
print_info: rope type = 2
print_info: rope scaling = linear
print_info: freq_base_train = 1000000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 40960
print_info: rope_finetuned = unknown
print_info: model type = 8B
print_info: model params = 8.19 B
print_info: general.name = Llm
print_info: vocab type = BPE
print_info: n_vocab = 151748
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: CPU_REPACK model buffer size = 3199.50 MiB
load_tensors: CPU_Mapped model buffer size = 4761.17 MiB
.....................................................................................
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 1000000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.58 MiB
llama_kv_cache: CPU KV buffer size = 288.00 MiB
llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 304.38 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 1
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = llama
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Tts
llama_model_loader: - kv 3: general.size_label str = 445M
llama_model_loader: - kv 4: llama.block_count u32 = 20
llama_model_loader: - kv 5: llama.context_length u32 = 4096
llama_model_loader: - kv 6: llama.embedding_length u32 = 768
llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072
llama_model_loader: - kv 8: llama.attention.head_count u32 = 12
llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12
llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000
llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: llama.attention.key_length u32 = 64
llama_model_loader: - kv 13: llama.attention.value_length u32 = 64
llama_model_loader: - kv 14: general.file_type u32 = 1
llama_model_loader: - kv 15: llama.vocab_size u32 = 158626
llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64
llama_model_loader: - kv 17: general.quantization_version u32 = 2
llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false
llama_model_loader: - type f32: 50 tensors
llama_model_loader: - type f16: 143 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = F16
print_info: file size = 1.07 GiB (20.70 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = llama
print_info: vocab_only = 0
print_info: n_ctx_train = 4096
print_info: n_embd = 768
print_info: n_layer = 20
print_info: n_head = 12
print_info: n_head_kv = 12
print_info: n_rot = 64
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 64
print_info: n_embd_head_v = 64
print_info: n_gqa = 1
print_info: n_embd_k_gqa = 768
print_info: n_embd_v_gqa = 768
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 3072
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = 0
print_info: rope type = 0
print_info: rope scaling = linear
print_info: freq_base_train = 10000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 4096
print_info: rope_finetuned = unknown
print_info: model type = ?B
print_info: model params = 444.94 M
print_info: general.name = Tts
print_info: vocab type = BPE
print_info: n_vocab = 158626
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: CPU_Mapped model buffer size = 592.48 MiB
..............................................................
llama_init_from_model: model default pooling_type is [0], but [-1] was specified
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 10000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.61 MiB
llama_kv_cache: CPU KV buffer size = 120.00 MiB
llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 25.51 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 1
vision_model_loader: model name:
vision_model_loader: description: image encoder for MiniCPM-V
vision_model_loader: GGUF version: 3
vision_model_loader: alignment: 32
vision_model_loader: n_tensors: 455
vision_model_loader: n_kv: 20
vision_ctx: vision using CPU backend
load_hparams: model_type: 0
load_hparams: n_embd: 1152
load_hparams: n_head: 16
load_hparams: n_ff: 4304
load_hparams: n_layer: 27
load_hparams: ffn_op: gelu
load_hparams: projection_dim: 0
--- vision hparams ---
load_hparams: image_size: 448
load_hparams: patch_size: 14
load_hparams: minicpmv_version: 100045
load_hparams: proj_scale_factor: 0
load_hparams: n_wa_pattern: 0
load_hparams: model size: 1044.36 MiB
load_hparams: metadata size: 0.16 MiB
load_tensors: ffn up/down are swapped
alloc_compute_meta: CPU compute buffer size = 100.30 MiB
init tts....init t2w....voc_hg2_model: CPU backend using 8 threads
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000
audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 20]
audition_audio_batch_encode: Final output: 20 tokens x 4096 dims
=== Model Paths ===
Base dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf
LLM: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK]
===================
=== Initializing Omni Context ===
Media type: 2 (omni: audio+vision)
TTS enabled: yes
Context size: 2048
GPU layers: 0
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts
Ref audio: /mnt/c/Users/zhout/w2/minicpmo_cpp_cpu_v3/fixture_0000.wav
00:13:45.589 === omni_init start
00:13:45.589 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
00:13:45.589 === omni_init: loading new LLM model
00:13:47.445 === omni_init: loading TTS model
00:13:47.446 TTS model: loading with n_gpu_layers=0
00:13:47.621 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
00:13:47.621 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
00:13:48.276 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
00:13:48.284 TTS: head_code loaded, verifying first few values:
00:13:48.284 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
00:13:48.284 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
00:13:48.284 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
00:13:48.356 TTS: weights loaded successfully
00:13:48.356 Projector: loading from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
00:13:48.367 Projector: loaded successfully
00:13:48.367 === omni_init: loading APM model
00:13:48.616 APM: init from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
00:13:48.982 Token2Wav: found models in /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf
00:13:48.982 Token2Wav: all model files found, initializing session...
00:13:48.982 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
00:13:48.982 Token2Wav: using prompt_cache from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
00:13:50.206 Token2Wav: initialized successfully
00:13:50.206 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
00:13:50.206 Token2Wav: 使用 C++ 实现
00:13:50.206 === omni_init success: ctx_llama = 0x5ee3d0cbd060
=== Running test case ===
Audio prefix: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-15-3w7n9yzv/fixture_
Count: 2
00:13:50.206 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
00:13:50.206 system prompt ref_audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-15-3w7n9yzv/fixture_0000.wav
00:13:51.187 system prompt ref_audio embedding: n_pos=20
00:13:53.018 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
00:13:53.018 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
00:13:53.018 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
00:13:53.018 n_past = 72
00:13:53.018
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 2.81138 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3085.75 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3106.27 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3106.27 ms by vision ( 3106.27 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-15-3w7n9yzv/fixture_0001.jpg
stream_prefill: prefilled 1 vision chunks (64 tokens each)
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=49339
audition_audio_preprocess: Audio not aligned to 100ms (49339 samples = 3083.7ms), padded with silence to 49600 samples (3100ms)
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=310, n_mel=80, total_size=24800
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=310, n_mel=80, total_elements=24800
audition_audio_batch_encode: Before incrementing iter: input_frames=310, n_tokens=155, current_iter=1, current_total=155, new_total=310, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=310, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 31]
audition_audio_batch_encode: Final output: 31 tokens x 4096 dims
00:13:58.029 stream_prefill(index=1): processing user audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-15-3w7n9yzv/fixture_0001.wav
00:13:58.383 stream_prefill(index=1): user audio embedding: n_pos=31
00:13:59.542
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 6.52384 s
00:13:59.542 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
00:13:59.542 stream_decode: create tts thread (simplex mode)
00:13:59.542 stream_decode: create t2w thread
00:13:59.542 wait prefill done
00:13:59.542 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
00:13:59.542 T2W thread (C++) started
<user>
<assistant>00:13:59.546 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
00:13:59.546 TTS thread started
00:13:59.954 📍 [单工TTS] assistant prompt 完成, n_past=182
00:13:59.954 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
00:14:00.870 LLM: detected end token, set llm_generation_done=true
00:14:00.871 LLM->TTS: text='The square in the image is red.', n_tokens=8, hidden_size=32768, n_embd=4096, token_ids=[785 9334 304 279 2168 374 2518 13]
00:14:00.871 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
00:14:00.871 📍 轮次 1 结束,记录边界于 n_past=191
00:14:00.871 TTS<-LLM: chunk_idx=0, text='The square in the image is red.', n_tokens=8, hidden_size=32768, token_ids=[785 9334 304 279 2168 374 2518 13]
00:14:00.871 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
00:14:00.871 TTS: before empty check - response.empty=0, response='The square in the image is red.', llm_finish=1
Waiting for audio generation to complete...
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty
TTS: no valid WAV files to merge
[timing] call=0 tokens=28 final=0 token2mel=2665.036ms vocoder=322.488ms total=2987.532ms audio=20160
[timing] call=1 tokens=28 final=1 token2mel=1665.871ms vocoder=351.205ms total=2017.128ms audio=30720
Audio generation completed.
00:14:00.871 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
00:14:00.871 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
00:14:00.872 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
00:14:00.886 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
00:14:00.886 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
00:14:00.886 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
00:14:00.886 TTS Simplex: first chunk - cleared KV cache
00:14:00.886 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
00:14:00.904 TTS Simplex: prefill completed, n_past_tts=9
00:14:00.904 TTS Simplex: sampler created
00:14:00.904 TTS simplex: is_audio_bos=true (first audio token)
00:14:00.931 TTS Simplex Phase1: token 1/500: rel_id=1513
00:14:00.941 TTS Simplex Phase1: token 2/500: rel_id=2112
00:14:00.952 TTS Simplex Phase1: token 3/500: rel_id=63
00:14:00.964 TTS Simplex Phase1: token 4/500: rel_id=4528
00:14:00.977 TTS Simplex Phase1: token 5/500: rel_id=4440
00:14:01.204 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
00:14:01.220 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
00:14:01.220 TTS Simplex Phase1: token 25/500: rel_id=2367
00:14:01.220 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
00:14:01.220 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
00:14:01.381 TTS Simplex Phase1: EOS token at step 41
00:14:01.381 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
00:14:01.381 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=49
00:14:01.387 TTS Simplex Phase2: text_eos_embed injected, n_past=50
00:14:01.394 TTS Simplex Phase2: audio_bos injected, n_past=51, starting final generation
00:14:01.496 TTS Simplex Phase2: yield 25 tokens 到 T2W
00:14:01.506 TTS Simplex Phase2: EOS at step 11 (final end)
00:14:01.506 TTS Simplex: chunk 结束,tts_token_buffer 剩余 0 tokens (保留等下一个 chunk)
00:14:01.506 TTS Simplex: generated 50 audio tokens for chunk 0
00:14:01.506 TTS Simplex: chunk 0 first tokens: [1513 2112 63 4528 4440 ], last tokens: [66 66 769 3732 4218 ]
00:14:01.506 TTS Simplex: updated tts_n_past_accumulated=62, total_generated_tokens=50
00:14:01.507 TTS: finished processing all chunks
00:14:01.507 TTS: 单工模式轮次结束,下一轮 round_idx=1
00:14:01.507 TTS: sent is_final=true to T2W queue (turn end)
00:14:04.208 🎉 首响时间 (First Audio Response): 4666ms
00:14:04.208 T2W线程: wav_0.wav | 0.84s audio | 2987.6ms inference | RTF=3.56 | t=4666ms
00:14:06.226 T2W线程: wav_1.wav | 1.28s audio | 2017.2ms inference | RTF=1.58 | t=6683ms
00:14:06.226 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=1)
00:14:06.226 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
00:14:06.313 omni_stop_threads: stop signals sent
00:14:06.313 T2W(C++) 线程: 停止
llama_perf_context_print: load time = 14363.88 ms
llama_perf_context_print: prompt eval time = 9747.15 ms / 182 tokens ( 53.56 ms per token, 18.67 tokens per second)
llama_perf_context_print: eval time = 914.10 ms / 9 runs ( 101.57 ms per token, 9.85 tokens per second)
llama_perf_context_print: total time = 20723.58 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,469 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 25: general.quantization_version u32 = 2
llama_model_loader: - kv 26: general.file_type u32 = 15
llama_model_loader: - type f32: 145 tensors
llama_model_loader: - type q4_K: 217 tensors
llama_model_loader: - type q6_K: 37 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = Q4_K - Medium
print_info: file size = 4.68 GiB (4.90 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = qwen3
print_info: vocab_only = 0
print_info: n_ctx_train = 40960
print_info: n_embd = 4096
print_info: n_layer = 36
print_info: n_head = 32
print_info: n_head_kv = 8
print_info: n_rot = 128
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 128
print_info: n_embd_head_v = 128
print_info: n_gqa = 4
print_info: n_embd_k_gqa = 1024
print_info: n_embd_v_gqa = 1024
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 12288
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = -1
print_info: rope type = 2
print_info: rope scaling = linear
print_info: freq_base_train = 1000000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 40960
print_info: rope_finetuned = unknown
print_info: model type = 8B
print_info: model params = 8.19 B
print_info: general.name = Llm
print_info: vocab type = BPE
print_info: n_vocab = 151748
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: CPU_REPACK model buffer size = 3199.50 MiB
load_tensors: CPU_Mapped model buffer size = 4761.17 MiB
.....................................................................................
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 1000000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.58 MiB
llama_kv_cache: CPU KV buffer size = 288.00 MiB
llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 304.38 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 1
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = llama
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Tts
llama_model_loader: - kv 3: general.size_label str = 445M
llama_model_loader: - kv 4: llama.block_count u32 = 20
llama_model_loader: - kv 5: llama.context_length u32 = 4096
llama_model_loader: - kv 6: llama.embedding_length u32 = 768
llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072
llama_model_loader: - kv 8: llama.attention.head_count u32 = 12
llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12
llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000
llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: llama.attention.key_length u32 = 64
llama_model_loader: - kv 13: llama.attention.value_length u32 = 64
llama_model_loader: - kv 14: general.file_type u32 = 1
llama_model_loader: - kv 15: llama.vocab_size u32 = 158626
llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64
llama_model_loader: - kv 17: general.quantization_version u32 = 2
llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false
llama_model_loader: - type f32: 50 tensors
llama_model_loader: - type f16: 143 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = F16
print_info: file size = 1.07 GiB (20.70 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = llama
print_info: vocab_only = 0
print_info: n_ctx_train = 4096
print_info: n_embd = 768
print_info: n_layer = 20
print_info: n_head = 12
print_info: n_head_kv = 12
print_info: n_rot = 64
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 64
print_info: n_embd_head_v = 64
print_info: n_gqa = 1
print_info: n_embd_k_gqa = 768
print_info: n_embd_v_gqa = 768
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 3072
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = 0
print_info: rope type = 0
print_info: rope scaling = linear
print_info: freq_base_train = 10000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 4096
print_info: rope_finetuned = unknown
print_info: model type = ?B
print_info: model params = 444.94 M
print_info: general.name = Tts
print_info: vocab type = BPE
print_info: n_vocab = 158626
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: CPU_Mapped model buffer size = 592.48 MiB
..............................................................
llama_init_from_model: model default pooling_type is [0], but [-1] was specified
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 10000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.61 MiB
llama_kv_cache: CPU KV buffer size = 120.00 MiB
llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 25.51 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 1
vision_model_loader: model name:
vision_model_loader: description: image encoder for MiniCPM-V
vision_model_loader: GGUF version: 3
vision_model_loader: alignment: 32
vision_model_loader: n_tensors: 455
vision_model_loader: n_kv: 20
vision_ctx: vision using CPU backend
load_hparams: model_type: 0
load_hparams: n_embd: 1152
load_hparams: n_head: 16
load_hparams: n_ff: 4304
load_hparams: n_layer: 27
load_hparams: ffn_op: gelu
load_hparams: projection_dim: 0
--- vision hparams ---
load_hparams: image_size: 448
load_hparams: patch_size: 14
load_hparams: minicpmv_version: 100045
load_hparams: proj_scale_factor: 0
load_hparams: n_wa_pattern: 0
load_hparams: model size: 1044.36 MiB
load_hparams: metadata size: 0.16 MiB
load_tensors: ffn up/down are swapped
alloc_compute_meta: CPU compute buffer size = 100.30 MiB
init tts....init t2w....voc_hg2_model: CPU backend using 8 threads
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000
audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 20]
audition_audio_batch_encode: Final output: 20 tokens x 4096 dims
=== Model Paths ===
Base dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf
LLM: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK]
===================
=== Initializing Omni Context ===
Media type: 2 (omni: audio+vision)
TTS enabled: yes
Context size: 2048
GPU layers: 0
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts
Ref audio: /mnt/c/Users/zhout/w2/minicpmo_cpp_cpu_v3/fixture_0000.wav
00:14:06.926 === omni_init start
00:14:06.926 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
00:14:06.926 === omni_init: loading new LLM model
00:14:08.595 === omni_init: loading TTS model
00:14:08.595 TTS model: loading with n_gpu_layers=0
00:14:08.776 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
00:14:08.776 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
00:14:09.524 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
00:14:09.533 TTS: head_code loaded, verifying first few values:
00:14:09.533 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
00:14:09.533 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
00:14:09.533 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
00:14:09.603 TTS: weights loaded successfully
00:14:09.603 Projector: loading from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
00:14:09.614 Projector: loaded successfully
00:14:09.614 === omni_init: loading APM model
00:14:09.857 APM: init from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
00:14:10.306 Token2Wav: found models in /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf
00:14:10.306 Token2Wav: all model files found, initializing session...
00:14:10.306 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
00:14:10.306 Token2Wav: using prompt_cache from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
00:14:11.408 Token2Wav: initialized successfully
00:14:11.408 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
00:14:11.408 Token2Wav: 使用 C++ 实现
00:14:11.408 === omni_init success: ctx_llama = 0x58c23e484060
=== Running test case ===
Audio prefix: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-16-1771emjm/fixture_
Count: 2
00:14:11.408 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
00:14:11.408 system prompt ref_audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-16-1771emjm/fixture_0000.wav
00:14:12.384 system prompt ref_audio embedding: n_pos=20
00:14:14.173 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
00:14:14.173 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
00:14:14.173 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
00:14:14.173 n_past = 72
00:14:14.173
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 2.76454 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3267.44 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3289.85 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3289.85 ms by vision ( 3289.85 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-16-1771emjm/fixture_0001.jpg
stream_prefill: prefilled 1 vision chunks (64 tokens each)
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=49339
audition_audio_preprocess: Audio not aligned to 100ms (49339 samples = 3083.7ms), padded with silence to 49600 samples (3100ms)
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=310, n_mel=80, total_size=24800
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=310, n_mel=80, total_elements=24800
audition_audio_batch_encode: Before incrementing iter: input_frames=310, n_tokens=155, current_iter=1, current_total=155, new_total=310, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=310, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 31]
audition_audio_batch_encode: Final output: 31 tokens x 4096 dims
00:14:19.359 stream_prefill(index=1): processing user audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-16-1771emjm/fixture_0001.wav
00:14:19.725 stream_prefill(index=1): user audio embedding: n_pos=31
00:14:20.865
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 6.69192 s
00:14:20.865 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
00:14:20.865 stream_decode: create tts thread (simplex mode)
00:14:20.865 stream_decode: create t2w thread
00:14:20.865 wait prefill done
00:14:20.865 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
00:14:20.865 T2W thread (C++) started
<user>
<assistant>00:14:20.869 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
00:14:20.871 TTS thread started
00:14:21.264 📍 [单工TTS] assistant prompt 完成, n_past=182
00:14:21.264 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
00:14:22.186 LLM: detected end token, set llm_generation_done=true
00:14:22.186 LLM->TTS: text='The square in the image is red.', n_tokens=8, hidden_size=32768, n_embd=4096, token_ids=[785 9334 304 279 2168 374 2518 13]
00:14:22.186 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
00:14:22.186 📍 轮次 1 结束,记录边界于 n_past=191
00:14:22.186 TTS<-LLM: chunk_idx=0, text='The square in the image is red.', n_tokens=8, hidden_size=32768, token_ids=[785 9334 304 279 2168 374 2518 13]
00:14:22.186 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
00:14:22.186 TTS: before empty check - response.empty=0, response='The square in the image is red.', llm_finish=1
Waiting for audio generation to complete...
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty
TTS: no valid WAV files to merge
[timing] call=0 tokens=28 final=0 token2mel=2792.562ms vocoder=313.458ms total=3106.031ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1662.436ms vocoder=332.565ms total=1995.086ms audio=24000
[timing] call=2 tokens=8 final=1 token2mel=1663.135ms vocoder=132.932ms total=1796.075ms audio=11520
Audio generation completed.
00:14:22.186 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
00:14:22.186 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
00:14:22.187 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
00:14:22.201 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
00:14:22.201 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
00:14:22.201 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
00:14:22.201 TTS Simplex: first chunk - cleared KV cache
00:14:22.201 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
00:14:22.219 TTS Simplex: prefill completed, n_past_tts=9
00:14:22.219 TTS Simplex: sampler created
00:14:22.219 TTS simplex: is_audio_bos=true (first audio token)
00:14:22.270 TTS Simplex Phase1: token 1/500: rel_id=3683
00:14:22.284 TTS Simplex Phase1: token 2/500: rel_id=4137
00:14:22.294 TTS Simplex Phase1: token 3/500: rel_id=4137
00:14:22.304 TTS Simplex Phase1: token 4/500: rel_id=4137
00:14:22.314 TTS Simplex Phase1: token 5/500: rel_id=4137
00:14:22.507 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
00:14:22.539 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
00:14:22.539 TTS Simplex Phase1: token 25/500: rel_id=3481
00:14:22.539 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
00:14:22.539 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
00:14:22.621 TTS Simplex Phase1: EOS token at step 34
00:14:22.621 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
00:14:22.621 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=42
00:14:22.628 TTS Simplex Phase2: text_eos_embed injected, n_past=43
00:14:22.635 TTS Simplex Phase2: audio_bos injected, n_past=44, starting final generation
00:14:22.817 TTS Simplex Phase2: yield 25 tokens 到 T2W
00:14:22.877 TTS Simplex Phase2: EOS at step 23 (final end)
00:14:22.877 TTS Simplex: chunk 结束,tts_token_buffer 剩余 5 tokens (保留等下一个 chunk)
00:14:22.877 TTS Simplex: is_final_text_chunk=true, flush 剩余 5 tokens 从 tts_token_buffer
00:14:22.877 TTS Simplex: generated 55 audio tokens for chunk 0
00:14:22.877 TTS Simplex: chunk 0 first tokens: [3683 4137 4137 4137 4137 ], last tokens: [4218 4137 4137 4137 3894 ]
00:14:22.877 TTS Simplex: updated tts_n_past_accumulated=67, total_generated_tokens=55
00:14:22.877 TTS: finished processing all chunks
00:14:22.877 TTS: 单工模式轮次结束,下一轮 round_idx=1
00:14:22.877 TTS: sent is_final=true to T2W queue (turn end)
00:14:25.646 🎉 首响时间 (First Audio Response): 4781ms
00:14:25.646 T2W线程: wav_0.wav | 0.84s audio | 3106.1ms inference | RTF=3.70 | t=4781ms
00:14:27.641 T2W线程: wav_1.wav | 1.00s audio | 1995.1ms inference | RTF=2.00 | t=6776ms
00:14:29.437 T2W线程: wav_2.wav | 0.48s audio | 1796.1ms inference | RTF=3.74 | t=8572ms
00:14:29.438 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
00:14:29.438 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
00:14:29.521 omni_stop_threads: stop signals sent
00:14:29.521 T2W(C++) 线程: 停止
llama_perf_context_print: load time = 14337.33 ms
llama_perf_context_print: prompt eval time = 9855.36 ms / 182 tokens ( 54.15 ms per token, 18.47 tokens per second)
llama_perf_context_print: eval time = 919.30 ms / 9 runs ( 102.14 ms per token, 9.79 tokens per second)
llama_perf_context_print: total time = 22595.21 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,469 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 25: general.quantization_version u32 = 2
llama_model_loader: - kv 26: general.file_type u32 = 15
llama_model_loader: - type f32: 145 tensors
llama_model_loader: - type q4_K: 217 tensors
llama_model_loader: - type q6_K: 37 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = Q4_K - Medium
print_info: file size = 4.68 GiB (4.90 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = qwen3
print_info: vocab_only = 0
print_info: n_ctx_train = 40960
print_info: n_embd = 4096
print_info: n_layer = 36
print_info: n_head = 32
print_info: n_head_kv = 8
print_info: n_rot = 128
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 128
print_info: n_embd_head_v = 128
print_info: n_gqa = 4
print_info: n_embd_k_gqa = 1024
print_info: n_embd_v_gqa = 1024
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 12288
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = -1
print_info: rope type = 2
print_info: rope scaling = linear
print_info: freq_base_train = 1000000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 40960
print_info: rope_finetuned = unknown
print_info: model type = 8B
print_info: model params = 8.19 B
print_info: general.name = Llm
print_info: vocab type = BPE
print_info: n_vocab = 151748
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: CPU_REPACK model buffer size = 3199.50 MiB
load_tensors: CPU_Mapped model buffer size = 4761.17 MiB
.....................................................................................
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 1000000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.58 MiB
llama_kv_cache: CPU KV buffer size = 288.00 MiB
llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 304.38 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 1
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = llama
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Tts
llama_model_loader: - kv 3: general.size_label str = 445M
llama_model_loader: - kv 4: llama.block_count u32 = 20
llama_model_loader: - kv 5: llama.context_length u32 = 4096
llama_model_loader: - kv 6: llama.embedding_length u32 = 768
llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072
llama_model_loader: - kv 8: llama.attention.head_count u32 = 12
llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12
llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000
llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: llama.attention.key_length u32 = 64
llama_model_loader: - kv 13: llama.attention.value_length u32 = 64
llama_model_loader: - kv 14: general.file_type u32 = 1
llama_model_loader: - kv 15: llama.vocab_size u32 = 158626
llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64
llama_model_loader: - kv 17: general.quantization_version u32 = 2
llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false
llama_model_loader: - type f32: 50 tensors
llama_model_loader: - type f16: 143 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = F16
print_info: file size = 1.07 GiB (20.70 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = llama
print_info: vocab_only = 0
print_info: n_ctx_train = 4096
print_info: n_embd = 768
print_info: n_layer = 20
print_info: n_head = 12
print_info: n_head_kv = 12
print_info: n_rot = 64
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 64
print_info: n_embd_head_v = 64
print_info: n_gqa = 1
print_info: n_embd_k_gqa = 768
print_info: n_embd_v_gqa = 768
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 3072
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = 0
print_info: rope type = 0
print_info: rope scaling = linear
print_info: freq_base_train = 10000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 4096
print_info: rope_finetuned = unknown
print_info: model type = ?B
print_info: model params = 444.94 M
print_info: general.name = Tts
print_info: vocab type = BPE
print_info: n_vocab = 158626
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: CPU_Mapped model buffer size = 592.48 MiB
..............................................................
llama_init_from_model: model default pooling_type is [0], but [-1] was specified
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 10000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.61 MiB
llama_kv_cache: CPU KV buffer size = 120.00 MiB
llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 25.51 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 1
vision_model_loader: model name:
vision_model_loader: description: image encoder for MiniCPM-V
vision_model_loader: GGUF version: 3
vision_model_loader: alignment: 32
vision_model_loader: n_tensors: 455
vision_model_loader: n_kv: 20
vision_ctx: vision using CPU backend
load_hparams: model_type: 0
load_hparams: n_embd: 1152
load_hparams: n_head: 16
load_hparams: n_ff: 4304
load_hparams: n_layer: 27
load_hparams: ffn_op: gelu
load_hparams: projection_dim: 0
--- vision hparams ---
load_hparams: image_size: 448
load_hparams: patch_size: 14
load_hparams: minicpmv_version: 100045
load_hparams: proj_scale_factor: 0
load_hparams: n_wa_pattern: 0
load_hparams: model size: 1044.36 MiB
load_hparams: metadata size: 0.16 MiB
load_tensors: ffn up/down are swapped
alloc_compute_meta: CPU compute buffer size = 100.30 MiB
init tts....init t2w....voc_hg2_model: CPU backend using 8 threads
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000
audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 20]
audition_audio_batch_encode: Final output: 20 tokens x 4096 dims
=== Model Paths ===
Base dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf
LLM: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK]
===================
=== Initializing Omni Context ===
Media type: 2 (omni: audio+vision)
TTS enabled: yes
Context size: 2048
GPU layers: 0
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts
Ref audio: /mnt/c/Users/zhout/w2/minicpmo_cpp_cpu_v3/fixture_0000.wav
00:14:30.132 === omni_init start
00:14:30.132 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
00:14:30.132 === omni_init: loading new LLM model
00:14:31.791 === omni_init: loading TTS model
00:14:31.791 TTS model: loading with n_gpu_layers=0
00:14:31.960 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
00:14:31.960 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
00:14:32.582 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
00:14:32.591 TTS: head_code loaded, verifying first few values:
00:14:32.591 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
00:14:32.591 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
00:14:32.591 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
00:14:32.665 TTS: weights loaded successfully
00:14:32.665 Projector: loading from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
00:14:32.675 Projector: loaded successfully
00:14:32.675 === omni_init: loading APM model
00:14:32.922 APM: init from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
00:14:33.817 Token2Wav: found models in /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf
00:14:33.817 Token2Wav: all model files found, initializing session...
00:14:33.817 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
00:14:33.817 Token2Wav: using prompt_cache from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
00:14:34.800 Token2Wav: initialized successfully
00:14:34.800 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
00:14:34.800 Token2Wav: 使用 C++ 实现
00:14:34.800 === omni_init success: ctx_llama = 0x62f6e0768060
=== Running test case ===
Audio prefix: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-17-li4xyb6k/fixture_
Count: 2
00:14:34.800 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
00:14:34.800 system prompt ref_audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-17-li4xyb6k/fixture_0000.wav
00:14:35.557 system prompt ref_audio embedding: n_pos=20
00:14:37.006 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
00:14:37.006 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
00:14:37.006 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
00:14:37.006 n_past = 72
00:14:37.006
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 2.20565 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3077.22 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3097.04 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3097.04 ms by vision ( 3097.04 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-17-li4xyb6k/fixture_0001.jpg
stream_prefill: prefilled 1 vision chunks (64 tokens each)
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=49339
audition_audio_preprocess: Audio not aligned to 100ms (49339 samples = 3083.7ms), padded with silence to 49600 samples (3100ms)
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=310, n_mel=80, total_size=24800
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=310, n_mel=80, total_elements=24800
audition_audio_batch_encode: Before incrementing iter: input_frames=310, n_tokens=155, current_iter=1, current_total=155, new_total=310, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=310, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 31]
audition_audio_batch_encode: Final output: 31 tokens x 4096 dims
00:14:41.955 stream_prefill(index=1): processing user audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-17-li4xyb6k/fixture_0001.wav
00:14:42.278 stream_prefill(index=1): user audio embedding: n_pos=31
00:14:43.462
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 6.4563 s
00:14:43.462 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
00:14:43.463 stream_decode: create tts thread (simplex mode)
00:14:43.463 stream_decode: create t2w thread
00:14:43.463 wait prefill done
00:14:43.463 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
00:14:43.463 T2W thread (C++) started
<user>
<assistant>00:14:43.467 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
00:14:43.467 TTS thread started
00:14:43.888 📍 [单工TTS] assistant prompt 完成, n_past=182
00:14:43.888 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
00:14:44.812 LLM: detected end token, set llm_generation_done=true
00:14:44.812 LLM->TTS: text='The square in the image is red.', n_tokens=8, hidden_size=32768, n_embd=4096, token_ids=[785 9334 304 279 2168 374 2518 13]
00:14:44.812 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
00:14:44.812 📍 轮次 1 结束,记录边界于 n_past=191
00:14:44.813 TTS<-LLM: chunk_idx=0, text='The square in the image is red.', n_tokens=8, hidden_size=32768, token_ids=[785 9334 304 279 2168 374 2518 13]
00:14:44.813 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
00:14:44.813 TTS: before empty check - response.empty=0, response='The square in the image is red.', llm_finish=1
Waiting for audio generation to complete...
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty
TTS: no valid WAV files to merge
[timing] call=0 tokens=28 final=0 token2mel=2092.981ms vocoder=284.861ms total=2377.855ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1679.034ms vocoder=324.703ms total=2003.754ms audio=24000
[timing] call=2 tokens=12 final=1 token2mel=1661.795ms vocoder=177.705ms total=1839.508ms audio=15360
Audio generation completed.
00:14:44.813 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
00:14:44.813 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
00:14:44.813 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
00:14:44.825 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
00:14:44.825 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
00:14:44.825 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
00:14:44.825 TTS Simplex: first chunk - cleared KV cache
00:14:44.825 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
00:14:44.842 TTS Simplex: prefill completed, n_past_tts=9
00:14:44.842 TTS Simplex: sampler created
00:14:44.842 TTS simplex: is_audio_bos=true (first audio token)
00:14:44.867 TTS Simplex Phase1: token 1/500: rel_id=3683
00:14:44.877 TTS Simplex Phase1: token 2/500: rel_id=1950
00:14:44.888 TTS Simplex Phase1: token 3/500: rel_id=3894
00:14:44.901 TTS Simplex Phase1: token 4/500: rel_id=4137
00:14:44.915 TTS Simplex Phase1: token 5/500: rel_id=4137
00:14:45.143 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
00:14:45.147 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
00:14:45.147 TTS Simplex Phase1: token 25/500: rel_id=74
00:14:45.147 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
00:14:45.147 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
00:14:45.264 TTS Simplex Phase1: EOS token at step 37
00:14:45.264 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
00:14:45.264 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=45
00:14:45.271 TTS Simplex Phase2: text_eos_embed injected, n_past=46
00:14:45.277 TTS Simplex Phase2: audio_bos injected, n_past=47, starting final generation
00:14:45.426 TTS Simplex Phase2: yield 25 tokens 到 T2W
00:14:45.522 TTS Simplex Phase2: EOS at step 24 (final end)
00:14:45.522 TTS Simplex: chunk 结束,tts_token_buffer 剩余 9 tokens (保留等下一个 chunk)
00:14:45.522 TTS Simplex: is_final_text_chunk=true, flush 剩余 9 tokens 从 tts_token_buffer
00:14:45.522 TTS Simplex: generated 59 audio tokens for chunk 0
00:14:45.522 TTS Simplex: chunk 0 first tokens: [3683 1950 3894 4137 4137 ], last tokens: [4137 4218 4218 4218 3894 ]
00:14:45.522 TTS Simplex: updated tts_n_past_accumulated=71, total_generated_tokens=59
00:14:45.522 TTS: finished processing all chunks
00:14:45.522 TTS: 单工模式轮次结束,下一轮 round_idx=1
00:14:45.522 TTS: sent is_final=true to T2W queue (turn end)
00:14:47.525 🎉 首响时间 (First Audio Response): 4062ms
00:14:47.525 T2W线程: wav_0.wav | 0.84s audio | 2377.9ms inference | RTF=2.83 | t=4062ms
00:14:49.529 T2W线程: wav_1.wav | 1.00s audio | 2003.8ms inference | RTF=2.00 | t=6066ms
00:14:51.369 T2W线程: wav_2.wav | 0.64s audio | 1839.5ms inference | RTF=2.87 | t=7906ms
00:14:51.369 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
00:14:51.369 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
00:14:51.456 omni_stop_threads: stop signals sent
00:14:51.456 T2W(C++) 线程: 停止
llama_perf_context_print: load time = 13755.67 ms
llama_perf_context_print: prompt eval time = 9087.74 ms / 182 tokens ( 49.93 ms per token, 20.03 tokens per second)
llama_perf_context_print: eval time = 921.58 ms / 9 runs ( 102.40 ms per token, 9.77 tokens per second)
llama_perf_context_print: total time = 21323.69 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,469 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 25: general.quantization_version u32 = 2
llama_model_loader: - kv 26: general.file_type u32 = 15
llama_model_loader: - type f32: 145 tensors
llama_model_loader: - type q4_K: 217 tensors
llama_model_loader: - type q6_K: 37 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = Q4_K - Medium
print_info: file size = 4.68 GiB (4.90 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = qwen3
print_info: vocab_only = 0
print_info: n_ctx_train = 40960
print_info: n_embd = 4096
print_info: n_layer = 36
print_info: n_head = 32
print_info: n_head_kv = 8
print_info: n_rot = 128
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 128
print_info: n_embd_head_v = 128
print_info: n_gqa = 4
print_info: n_embd_k_gqa = 1024
print_info: n_embd_v_gqa = 1024
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 12288
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = -1
print_info: rope type = 2
print_info: rope scaling = linear
print_info: freq_base_train = 1000000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 40960
print_info: rope_finetuned = unknown
print_info: model type = 8B
print_info: model params = 8.19 B
print_info: general.name = Llm
print_info: vocab type = BPE
print_info: n_vocab = 151748
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: CPU_REPACK model buffer size = 3199.50 MiB
load_tensors: CPU_Mapped model buffer size = 4761.17 MiB
.....................................................................................
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 1000000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.58 MiB
llama_kv_cache: CPU KV buffer size = 288.00 MiB
llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 304.38 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 1
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = llama
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Tts
llama_model_loader: - kv 3: general.size_label str = 445M
llama_model_loader: - kv 4: llama.block_count u32 = 20
llama_model_loader: - kv 5: llama.context_length u32 = 4096
llama_model_loader: - kv 6: llama.embedding_length u32 = 768
llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072
llama_model_loader: - kv 8: llama.attention.head_count u32 = 12
llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12
llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000
llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: llama.attention.key_length u32 = 64
llama_model_loader: - kv 13: llama.attention.value_length u32 = 64
llama_model_loader: - kv 14: general.file_type u32 = 1
llama_model_loader: - kv 15: llama.vocab_size u32 = 158626
llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64
llama_model_loader: - kv 17: general.quantization_version u32 = 2
llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false
llama_model_loader: - type f32: 50 tensors
llama_model_loader: - type f16: 143 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = F16
print_info: file size = 1.07 GiB (20.70 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = llama
print_info: vocab_only = 0
print_info: n_ctx_train = 4096
print_info: n_embd = 768
print_info: n_layer = 20
print_info: n_head = 12
print_info: n_head_kv = 12
print_info: n_rot = 64
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 64
print_info: n_embd_head_v = 64
print_info: n_gqa = 1
print_info: n_embd_k_gqa = 768
print_info: n_embd_v_gqa = 768
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 3072
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = 0
print_info: rope type = 0
print_info: rope scaling = linear
print_info: freq_base_train = 10000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 4096
print_info: rope_finetuned = unknown
print_info: model type = ?B
print_info: model params = 444.94 M
print_info: general.name = Tts
print_info: vocab type = BPE
print_info: n_vocab = 158626
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: CPU_Mapped model buffer size = 592.48 MiB
..............................................................
llama_init_from_model: model default pooling_type is [0], but [-1] was specified
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 10000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.61 MiB
llama_kv_cache: CPU KV buffer size = 120.00 MiB
llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 25.51 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 1
vision_model_loader: model name:
vision_model_loader: description: image encoder for MiniCPM-V
vision_model_loader: GGUF version: 3
vision_model_loader: alignment: 32
vision_model_loader: n_tensors: 455
vision_model_loader: n_kv: 20
vision_ctx: vision using CPU backend
load_hparams: model_type: 0
load_hparams: n_embd: 1152
load_hparams: n_head: 16
load_hparams: n_ff: 4304
load_hparams: n_layer: 27
load_hparams: ffn_op: gelu
load_hparams: projection_dim: 0
--- vision hparams ---
load_hparams: image_size: 448
load_hparams: patch_size: 14
load_hparams: minicpmv_version: 100045
load_hparams: proj_scale_factor: 0
load_hparams: n_wa_pattern: 0
load_hparams: model size: 1044.36 MiB
load_hparams: metadata size: 0.16 MiB
load_tensors: ffn up/down are swapped
alloc_compute_meta: CPU compute buffer size = 100.30 MiB
init tts....init t2w....voc_hg2_model: CPU backend using 8 threads
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000
audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 20]
audition_audio_batch_encode: Final output: 20 tokens x 4096 dims
=== Model Paths ===
Base dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf
LLM: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK]
===================
=== Initializing Omni Context ===
Media type: 2 (omni: audio+vision)
TTS enabled: yes
Context size: 2048
GPU layers: 0
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts
Ref audio: /mnt/c/Users/zhout/w2/minicpmo_cpp_cpu_v3/fixture_0000.wav
00:14:52.036 === omni_init start
00:14:52.037 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
00:14:52.037 === omni_init: loading new LLM model
00:14:53.547 === omni_init: loading TTS model
00:14:53.547 TTS model: loading with n_gpu_layers=0
00:14:53.789 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
00:14:53.789 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
00:14:54.319 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
00:14:54.328 TTS: head_code loaded, verifying first few values:
00:14:54.328 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
00:14:54.328 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
00:14:54.328 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
00:14:54.400 TTS: weights loaded successfully
00:14:54.401 Projector: loading from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
00:14:54.411 Projector: loaded successfully
00:14:54.411 === omni_init: loading APM model
00:14:54.692 APM: init from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
00:14:55.218 Token2Wav: found models in /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf
00:14:55.218 Token2Wav: all model files found, initializing session...
00:14:55.218 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
00:14:55.218 Token2Wav: using prompt_cache from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
00:14:56.341 Token2Wav: initialized successfully
00:14:56.341 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
00:14:56.341 Token2Wav: 使用 C++ 实现
00:14:56.341 === omni_init success: ctx_llama = 0x58ab1fe04060
=== Running test case ===
Audio prefix: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-18-uaqr3b4v/fixture_
Count: 2
00:14:56.341 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
00:14:56.341 system prompt ref_audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-18-uaqr3b4v/fixture_0000.wav
00:14:57.655 system prompt ref_audio embedding: n_pos=20
00:14:59.577 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
00:14:59.577 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
00:14:59.577 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
00:14:59.577 n_past = 72
00:14:59.577
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.23684 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3344.78 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3365.30 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3365.30 ms by vision ( 3365.30 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-18-uaqr3b4v/fixture_0001.jpg
stream_prefill: prefilled 1 vision chunks (64 tokens each)
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=49339
audition_audio_preprocess: Audio not aligned to 100ms (49339 samples = 3083.7ms), padded with silence to 49600 samples (3100ms)
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=310, n_mel=80, total_size=24800
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=310, n_mel=80, total_elements=24800
audition_audio_batch_encode: Before incrementing iter: input_frames=310, n_tokens=155, current_iter=1, current_total=155, new_total=310, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=310, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 31]
audition_audio_batch_encode: Final output: 31 tokens x 4096 dims
00:15:04.789 stream_prefill(index=1): processing user audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-18-uaqr3b4v/fixture_0001.wav
00:15:05.195 stream_prefill(index=1): user audio embedding: n_pos=31
00:15:06.369
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 6.79164 s
00:15:06.369 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
00:15:06.370 stream_decode: create tts thread (simplex mode)
00:15:06.370 stream_decode: create t2w thread
00:15:06.370 wait prefill done
00:15:06.370 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
00:15:06.370 T2W thread (C++) started
<user>
<assistant>00:15:06.373 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
00:15:06.373 TTS thread started
00:15:06.791 📍 [单工TTS] assistant prompt 完成, n_past=182
00:15:06.791 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
00:15:07.731 LLM: detected end token, set llm_generation_done=true
00:15:07.731 LLM->TTS: text='The square in the image is red.', n_tokens=8, hidden_size=32768, n_embd=4096, token_ids=[785 9334 304 279 2168 374 2518 13]
00:15:07.731 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
00:15:07.731 📍 轮次 1 结束,记录边界于 n_past=191
00:15:07.732 TTS<-LLM: chunk_idx=0, text='The square in the image is red.', n_tokens=8, hidden_size=32768, token_ids=[785 9334 304 279 2168 374 2518 13]
00:15:07.732 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
00:15:07.732 TTS: before empty check - response.empty=0, response='The square in the image is red.', llm_finish=1
Waiting for audio generation to complete...
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty
TTS: no valid WAV files to merge
[timing] call=0 tokens=28 final=0 token2mel=2702.918ms vocoder=320.974ms total=3023.905ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1680.396ms vocoder=329.392ms total=2009.807ms audio=24000
[timing] call=2 tokens=23 final=1 token2mel=1659.657ms vocoder=284.885ms total=1944.556ms audio=25920
Audio generation completed.
00:15:07.732 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
00:15:07.732 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
00:15:07.732 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
00:15:07.748 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
00:15:07.748 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
00:15:07.748 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
00:15:07.748 TTS Simplex: first chunk - cleared KV cache
00:15:07.748 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
00:15:07.766 TTS Simplex: prefill completed, n_past_tts=9
00:15:07.766 TTS Simplex: sampler created
00:15:07.766 TTS simplex: is_audio_bos=true (first audio token)
00:15:07.823 TTS Simplex Phase1: token 1/500: rel_id=770
00:15:07.836 TTS Simplex Phase1: token 2/500: rel_id=4137
00:15:07.851 TTS Simplex Phase1: token 3/500: rel_id=4218
00:15:07.865 TTS Simplex Phase1: token 4/500: rel_id=4218
00:15:07.881 TTS Simplex Phase1: token 5/500: rel_id=4137
00:15:08.066 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
00:15:08.112 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
00:15:08.112 TTS Simplex Phase1: token 25/500: rel_id=944
00:15:08.112 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
00:15:08.112 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
00:15:08.350 TTS Simplex Phase1: EOS token at step 49
00:15:08.350 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
00:15:08.350 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=57
00:15:08.358 TTS Simplex Phase2: text_eos_embed injected, n_past=58
00:15:08.366 TTS Simplex Phase2: audio_bos injected, n_past=59, starting final generation
00:15:08.385 TTS Simplex Phase2: yield 25 tokens 到 T2W
00:15:08.599 TTS Simplex Phase2: EOS at step 23 (final end)
00:15:08.599 TTS Simplex: chunk 结束,tts_token_buffer 剩余 20 tokens (保留等下一个 chunk)
00:15:08.599 TTS Simplex: is_final_text_chunk=true, flush 剩余 20 tokens 从 tts_token_buffer
00:15:08.599 TTS Simplex: generated 70 audio tokens for chunk 0
00:15:08.599 TTS Simplex: chunk 0 first tokens: [770 4137 4218 4218 4137 ], last tokens: [1725 1806 4218 4218 3894 ]
00:15:08.599 TTS Simplex: updated tts_n_past_accumulated=82, total_generated_tokens=70
00:15:08.599 TTS: finished processing all chunks
00:15:08.599 TTS: 单工模式轮次结束,下一轮 round_idx=1
00:15:08.599 TTS: sent is_final=true to T2W queue (turn end)
00:15:11.136 🎉 首响时间 (First Audio Response): 4766ms
00:15:11.136 T2W线程: wav_0.wav | 0.84s audio | 3024.0ms inference | RTF=3.60 | t=4766ms
00:15:13.147 T2W线程: wav_1.wav | 1.00s audio | 2010.0ms inference | RTF=2.01 | t=6777ms
00:15:15.091 T2W线程: wav_2.wav | 1.08s audio | 1944.6ms inference | RTF=1.80 | t=8722ms
00:15:15.091 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
00:15:15.091 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
00:15:15.181 omni_stop_threads: stop signals sent
00:15:15.181 T2W(C++) 线程: 停止
llama_perf_context_print: load time = 14753.82 ms
llama_perf_context_print: prompt eval time = 10450.01 ms / 182 tokens ( 57.42 ms per token, 17.42 tokens per second)
llama_perf_context_print: eval time = 937.61 ms / 9 runs ( 104.18 ms per token, 9.60 tokens per second)
llama_perf_context_print: total time = 23143.91 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,469 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 25: general.quantization_version u32 = 2
llama_model_loader: - kv 26: general.file_type u32 = 15
llama_model_loader: - type f32: 145 tensors
llama_model_loader: - type q4_K: 217 tensors
llama_model_loader: - type q6_K: 37 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = Q4_K - Medium
print_info: file size = 4.68 GiB (4.90 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = qwen3
print_info: vocab_only = 0
print_info: n_ctx_train = 40960
print_info: n_embd = 4096
print_info: n_layer = 36
print_info: n_head = 32
print_info: n_head_kv = 8
print_info: n_rot = 128
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 128
print_info: n_embd_head_v = 128
print_info: n_gqa = 4
print_info: n_embd_k_gqa = 1024
print_info: n_embd_v_gqa = 1024
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 12288
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = -1
print_info: rope type = 2
print_info: rope scaling = linear
print_info: freq_base_train = 1000000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 40960
print_info: rope_finetuned = unknown
print_info: model type = 8B
print_info: model params = 8.19 B
print_info: general.name = Llm
print_info: vocab type = BPE
print_info: n_vocab = 151748
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: CPU_REPACK model buffer size = 3199.50 MiB
load_tensors: CPU_Mapped model buffer size = 4761.17 MiB
.....................................................................................
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 1000000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.58 MiB
llama_kv_cache: CPU KV buffer size = 288.00 MiB
llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 304.38 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 1
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = llama
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Tts
llama_model_loader: - kv 3: general.size_label str = 445M
llama_model_loader: - kv 4: llama.block_count u32 = 20
llama_model_loader: - kv 5: llama.context_length u32 = 4096
llama_model_loader: - kv 6: llama.embedding_length u32 = 768
llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072
llama_model_loader: - kv 8: llama.attention.head_count u32 = 12
llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12
llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000
llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: llama.attention.key_length u32 = 64
llama_model_loader: - kv 13: llama.attention.value_length u32 = 64
llama_model_loader: - kv 14: general.file_type u32 = 1
llama_model_loader: - kv 15: llama.vocab_size u32 = 158626
llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64
llama_model_loader: - kv 17: general.quantization_version u32 = 2
llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false
llama_model_loader: - type f32: 50 tensors
llama_model_loader: - type f16: 143 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = F16
print_info: file size = 1.07 GiB (20.70 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = llama
print_info: vocab_only = 0
print_info: n_ctx_train = 4096
print_info: n_embd = 768
print_info: n_layer = 20
print_info: n_head = 12
print_info: n_head_kv = 12
print_info: n_rot = 64
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 64
print_info: n_embd_head_v = 64
print_info: n_gqa = 1
print_info: n_embd_k_gqa = 768
print_info: n_embd_v_gqa = 768
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 3072
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = 0
print_info: rope type = 0
print_info: rope scaling = linear
print_info: freq_base_train = 10000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 4096
print_info: rope_finetuned = unknown
print_info: model type = ?B
print_info: model params = 444.94 M
print_info: general.name = Tts
print_info: vocab type = BPE
print_info: n_vocab = 158626
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: CPU_Mapped model buffer size = 592.48 MiB
..............................................................
llama_init_from_model: model default pooling_type is [0], but [-1] was specified
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 10000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.61 MiB
llama_kv_cache: CPU KV buffer size = 120.00 MiB
llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 25.51 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 1
vision_model_loader: model name:
vision_model_loader: description: image encoder for MiniCPM-V
vision_model_loader: GGUF version: 3
vision_model_loader: alignment: 32
vision_model_loader: n_tensors: 455
vision_model_loader: n_kv: 20
vision_ctx: vision using CPU backend
load_hparams: model_type: 0
load_hparams: n_embd: 1152
load_hparams: n_head: 16
load_hparams: n_ff: 4304
load_hparams: n_layer: 27
load_hparams: ffn_op: gelu
load_hparams: projection_dim: 0
--- vision hparams ---
load_hparams: image_size: 448
load_hparams: patch_size: 14
load_hparams: minicpmv_version: 100045
load_hparams: proj_scale_factor: 0
load_hparams: n_wa_pattern: 0
load_hparams: model size: 1044.36 MiB
load_hparams: metadata size: 0.16 MiB
load_tensors: ffn up/down are swapped
alloc_compute_meta: CPU compute buffer size = 100.30 MiB
init tts....init t2w....voc_hg2_model: CPU backend using 8 threads
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000
audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 20]
audition_audio_batch_encode: Final output: 20 tokens x 4096 dims
=== Model Paths ===
Base dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf
LLM: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK]
===================
=== Initializing Omni Context ===
Media type: 2 (omni: audio+vision)
TTS enabled: yes
Context size: 2048
GPU layers: 0
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts
Ref audio: /mnt/c/Users/zhout/w2/minicpmo_cpp_cpu_v3/fixture_0000.wav
00:15:15.791 === omni_init start
00:15:15.791 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
00:15:15.791 === omni_init: loading new LLM model
00:15:17.536 === omni_init: loading TTS model
00:15:17.536 TTS model: loading with n_gpu_layers=0
00:15:17.701 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
00:15:17.701 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
00:15:18.437 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
00:15:18.446 TTS: head_code loaded, verifying first few values:
00:15:18.446 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
00:15:18.446 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
00:15:18.446 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
00:15:18.520 TTS: weights loaded successfully
00:15:18.520 Projector: loading from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
00:15:18.531 Projector: loaded successfully
00:15:18.531 === omni_init: loading APM model
00:15:18.837 APM: init from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
00:15:19.465 Token2Wav: found models in /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf
00:15:19.465 Token2Wav: all model files found, initializing session...
00:15:19.465 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
00:15:19.465 Token2Wav: using prompt_cache from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
00:15:20.611 Token2Wav: initialized successfully
00:15:20.611 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
00:15:20.611 Token2Wav: 使用 C++ 实现
00:15:20.611 === omni_init success: ctx_llama = 0x6252c49b3060
=== Running test case ===
Audio prefix: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-19-_08mezj1/fixture_
Count: 2
00:15:20.611 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
00:15:20.611 system prompt ref_audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-19-_08mezj1/fixture_0000.wav
00:15:22.033 system prompt ref_audio embedding: n_pos=20
00:15:24.021 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
00:15:24.021 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
00:15:24.021 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
00:15:24.022 n_past = 72
00:15:24.022
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.41022 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3155.49 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3176.38 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3176.38 ms by vision ( 3176.38 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-19-_08mezj1/fixture_0001.jpg
stream_prefill: prefilled 1 vision chunks (64 tokens each)
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=49339
audition_audio_preprocess: Audio not aligned to 100ms (49339 samples = 3083.7ms), padded with silence to 49600 samples (3100ms)
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=310, n_mel=80, total_size=24800
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=310, n_mel=80, total_elements=24800
audition_audio_batch_encode: Before incrementing iter: input_frames=310, n_tokens=155, current_iter=1, current_total=155, new_total=310, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=310, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 31]
audition_audio_batch_encode: Final output: 31 tokens x 4096 dims
00:15:29.074 stream_prefill(index=1): processing user audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-19-_08mezj1/fixture_0001.wav
00:15:29.442 stream_prefill(index=1): user audio embedding: n_pos=31
00:15:30.600
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 6.57822 s
00:15:30.600 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
00:15:30.600 stream_decode: create tts thread (simplex mode)
00:15:30.600 stream_decode: create t2w thread
00:15:30.600 wait prefill done
00:15:30.600 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
00:15:30.600 T2W thread (C++) started
<user>
<assistant>00:15:30.605 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
00:15:30.605 TTS thread started
00:15:31.030 📍 [单工TTS] assistant prompt 完成, n_past=182
00:15:31.030 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
00:15:31.969 LLM: detected end token, set llm_generation_done=true
00:15:31.969 LLM->TTS: text='The square in the image is red.', n_tokens=8, hidden_size=32768, n_embd=4096, token_ids=[785 9334 304 279 2168 374 2518 13]
00:15:31.969 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
00:15:31.969 📍 轮次 1 结束,记录边界于 n_past=191
00:15:31.970 TTS<-LLM: chunk_idx=0, text='The square in the image is red.', n_tokens=8, hidden_size=32768, token_ids=[785 9334 304 279 2168 374 2518 13]
00:15:31.970 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
00:15:31.970 TTS: before empty check - response.empty=0, response='The square in the image is red.', llm_finish=1
Waiting for audio generation to complete...
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty
TTS: no valid WAV files to merge
[timing] call=0 tokens=28 final=0 token2mel=2901.097ms vocoder=309.321ms total=3210.428ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1673.555ms vocoder=312.792ms total=1986.363ms audio=24000
[timing] call=2 tokens=18 final=1 token2mel=1665.235ms vocoder=242.846ms total=1908.091ms audio=21120
Audio generation completed.
00:15:31.970 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
00:15:31.970 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
00:15:31.970 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
00:15:31.983 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
00:15:31.983 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
00:15:31.983 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
00:15:31.983 TTS Simplex: first chunk - cleared KV cache
00:15:31.983 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
00:15:32.001 TTS Simplex: prefill completed, n_past_tts=9
00:15:32.001 TTS Simplex: sampler created
00:15:32.001 TTS simplex: is_audio_bos=true (first audio token)
00:15:32.028 TTS Simplex Phase1: token 1/500: rel_id=1487
00:15:32.039 TTS Simplex Phase1: token 2/500: rel_id=4138
00:15:32.051 TTS Simplex Phase1: token 3/500: rel_id=4218
00:15:32.063 TTS Simplex Phase1: token 4/500: rel_id=4218
00:15:32.075 TTS Simplex Phase1: token 5/500: rel_id=4137
00:15:32.289 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
00:15:32.307 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
00:15:32.307 TTS Simplex Phase1: token 25/500: rel_id=4395
00:15:32.307 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
00:15:32.307 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
00:15:32.521 TTS Simplex Phase1: EOS token at step 46
00:15:32.521 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
00:15:32.522 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=54
00:15:32.528 TTS Simplex Phase2: text_eos_embed injected, n_past=55
00:15:32.535 TTS Simplex Phase2: audio_bos injected, n_past=56, starting final generation
00:15:32.589 TTS Simplex Phase2: yield 25 tokens 到 T2W
00:15:32.752 TTS Simplex Phase2: EOS at step 21 (final end)
00:15:32.752 TTS Simplex: chunk 结束,tts_token_buffer 剩余 15 tokens (保留等下一个 chunk)
00:15:32.752 TTS Simplex: is_final_text_chunk=true, flush 剩余 15 tokens 从 tts_token_buffer
00:15:32.752 TTS Simplex: generated 65 audio tokens for chunk 0
00:15:32.752 TTS Simplex: chunk 0 first tokens: [1487 4138 4218 4218 4137 ], last tokens: [4137 4218 4218 4218 6082 ]
00:15:32.752 TTS Simplex: updated tts_n_past_accumulated=77, total_generated_tokens=65
00:15:32.753 TTS: finished processing all chunks
00:15:32.753 TTS: 单工模式轮次结束,下一轮 round_idx=1
00:15:32.753 TTS: sent is_final=true to T2W queue (turn end)
00:15:35.518 🎉 首响时间 (First Audio Response): 4918ms
00:15:35.518 T2W线程: wav_0.wav | 0.84s audio | 3210.5ms inference | RTF=3.82 | t=4918ms
00:15:37.505 T2W线程: wav_1.wav | 1.00s audio | 1986.4ms inference | RTF=1.99 | t=6904ms
00:15:39.413 T2W线程: wav_2.wav | 0.88s audio | 1908.1ms inference | RTF=2.17 | t=8813ms
00:15:39.413 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
00:15:39.413 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
00:15:39.504 omni_stop_threads: stop signals sent
00:15:39.504 T2W(C++) 线程: 停止
llama_perf_context_print: load time = 15238.37 ms
llama_perf_context_print: prompt eval time = 10418.16 ms / 182 tokens ( 57.24 ms per token, 17.47 tokens per second)
llama_perf_context_print: eval time = 936.82 ms / 9 runs ( 104.09 ms per token, 9.61 tokens per second)
llama_perf_context_print: total time = 23712.94 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,466 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 25: general.quantization_version u32 = 2
llama_model_loader: - kv 26: general.file_type u32 = 15
llama_model_loader: - type f32: 145 tensors
llama_model_loader: - type q4_K: 217 tensors
llama_model_loader: - type q6_K: 37 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = Q4_K - Medium
print_info: file size = 4.68 GiB (4.90 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = qwen3
print_info: vocab_only = 0
print_info: n_ctx_train = 40960
print_info: n_embd = 4096
print_info: n_layer = 36
print_info: n_head = 32
print_info: n_head_kv = 8
print_info: n_rot = 128
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 128
print_info: n_embd_head_v = 128
print_info: n_gqa = 4
print_info: n_embd_k_gqa = 1024
print_info: n_embd_v_gqa = 1024
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 12288
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = -1
print_info: rope type = 2
print_info: rope scaling = linear
print_info: freq_base_train = 1000000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 40960
print_info: rope_finetuned = unknown
print_info: model type = 8B
print_info: model params = 8.19 B
print_info: general.name = Llm
print_info: vocab type = BPE
print_info: n_vocab = 151748
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: CPU_REPACK model buffer size = 3199.50 MiB
load_tensors: CPU_Mapped model buffer size = 4761.17 MiB
.....................................................................................
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 1000000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.58 MiB
llama_kv_cache: CPU KV buffer size = 288.00 MiB
llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 304.38 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 1
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = llama
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Tts
llama_model_loader: - kv 3: general.size_label str = 445M
llama_model_loader: - kv 4: llama.block_count u32 = 20
llama_model_loader: - kv 5: llama.context_length u32 = 4096
llama_model_loader: - kv 6: llama.embedding_length u32 = 768
llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072
llama_model_loader: - kv 8: llama.attention.head_count u32 = 12
llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12
llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000
llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: llama.attention.key_length u32 = 64
llama_model_loader: - kv 13: llama.attention.value_length u32 = 64
llama_model_loader: - kv 14: general.file_type u32 = 1
llama_model_loader: - kv 15: llama.vocab_size u32 = 158626
llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64
llama_model_loader: - kv 17: general.quantization_version u32 = 2
llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false
llama_model_loader: - type f32: 50 tensors
llama_model_loader: - type f16: 143 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = F16
print_info: file size = 1.07 GiB (20.70 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = llama
print_info: vocab_only = 0
print_info: n_ctx_train = 4096
print_info: n_embd = 768
print_info: n_layer = 20
print_info: n_head = 12
print_info: n_head_kv = 12
print_info: n_rot = 64
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 64
print_info: n_embd_head_v = 64
print_info: n_gqa = 1
print_info: n_embd_k_gqa = 768
print_info: n_embd_v_gqa = 768
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 3072
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = 0
print_info: rope type = 0
print_info: rope scaling = linear
print_info: freq_base_train = 10000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 4096
print_info: rope_finetuned = unknown
print_info: model type = ?B
print_info: model params = 444.94 M
print_info: general.name = Tts
print_info: vocab type = BPE
print_info: n_vocab = 158626
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: CPU_Mapped model buffer size = 592.48 MiB
..............................................................
llama_init_from_model: model default pooling_type is [0], but [-1] was specified
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 10000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.61 MiB
llama_kv_cache: CPU KV buffer size = 120.00 MiB
llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 25.51 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 1
vision_model_loader: model name:
vision_model_loader: description: image encoder for MiniCPM-V
vision_model_loader: GGUF version: 3
vision_model_loader: alignment: 32
vision_model_loader: n_tensors: 455
vision_model_loader: n_kv: 20
vision_ctx: vision using CPU backend
load_hparams: model_type: 0
load_hparams: n_embd: 1152
load_hparams: n_head: 16
load_hparams: n_ff: 4304
load_hparams: n_layer: 27
load_hparams: ffn_op: gelu
load_hparams: projection_dim: 0
--- vision hparams ---
load_hparams: image_size: 448
load_hparams: patch_size: 14
load_hparams: minicpmv_version: 100045
load_hparams: proj_scale_factor: 0
load_hparams: n_wa_pattern: 0
load_hparams: model size: 1044.36 MiB
load_hparams: metadata size: 0.16 MiB
load_tensors: ffn up/down are swapped
alloc_compute_meta: CPU compute buffer size = 100.30 MiB
init tts....init t2w....voc_hg2_model: CPU backend using 8 threads
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000
audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 20]
audition_audio_batch_encode: Final output: 20 tokens x 4096 dims
=== Model Paths ===
Base dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf
LLM: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK]
===================
=== Initializing Omni Context ===
Media type: 2 (omni: audio+vision)
TTS enabled: yes
Context size: 2048
GPU layers: 0
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts
Ref audio: /mnt/c/Users/zhout/w2/minicpmo_cpp_cpu_v3/fixture_0000.wav
23:07:39.169 === omni_init start
23:07:39.170 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
23:07:39.170 === omni_init: loading new LLM model
23:07:40.757 === omni_init: loading TTS model
23:07:40.757 TTS model: loading with n_gpu_layers=0
23:07:40.921 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
23:07:40.921 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
23:07:41.447 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
23:07:41.456 TTS: head_code loaded, verifying first few values:
23:07:41.456 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
23:07:41.456 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
23:07:41.456 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
23:07:41.528 TTS: weights loaded successfully
23:07:41.528 Projector: loading from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
23:07:41.542 Projector: loaded successfully
23:07:41.542 === omni_init: loading APM model
23:07:41.793 APM: init from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
23:07:42.144 Token2Wav: found models in /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf
23:07:42.144 Token2Wav: all model files found, initializing session...
23:07:42.144 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
23:07:42.144 Token2Wav: using prompt_cache from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
23:07:42.880 Token2Wav: initialized successfully
23:07:42.880 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
23:07:42.880 Token2Wav: 使用 C++ 实现
23:07:42.880 === omni_init success: ctx_llama = 0x5a25386e2060
=== Running test case ===
Audio prefix: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-2-y5l9jeod/fixture_
Count: 2
23:07:42.880 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
23:07:42.880 system prompt ref_audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-2-y5l9jeod/fixture_0000.wav
23:07:43.633 system prompt ref_audio embedding: n_pos=20
23:07:45.191 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
23:07:45.192 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
23:07:45.192 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
23:07:45.192 n_past = 72
23:07:45.192
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 2.31107 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3079.04 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3098.06 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3098.06 ms by vision ( 3098.06 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-2-y5l9jeod/fixture_0001.jpg
stream_prefill: prefilled 1 vision chunks (64 tokens each)
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=49339
audition_audio_preprocess: Audio not aligned to 100ms (49339 samples = 3083.7ms), padded with silence to 49600 samples (3100ms)
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=310, n_mel=80, total_size=24800
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=310, n_mel=80, total_elements=24800
audition_audio_batch_encode: Before incrementing iter: input_frames=310, n_tokens=155, current_iter=1, current_total=155, new_total=310, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=310, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 31]
audition_audio_batch_encode: Final output: 31 tokens x 4096 dims
23:07:50.113 stream_prefill(index=1): processing user audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-2-y5l9jeod/fixture_0001.wav
23:07:50.455 stream_prefill(index=1): user audio embedding: n_pos=31
23:07:51.658
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 6.46677 s
23:07:51.658 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
23:07:51.659 stream_decode: create tts thread (simplex mode)
23:07:51.659 stream_decode: create t2w thread
23:07:51.659 wait prefill done
23:07:51.659 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
23:07:51.659 T2W thread (C++) started
<user>
<assistant>23:07:51.662 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
23:07:51.662 TTS thread started
23:07:52.089 📍 [单工TTS] assistant prompt 完成, n_past=182
23:07:52.089 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
23:07:53.009 LLM: detected end token, set llm_generation_done=true
23:07:53.009 LLM->TTS: text='The square in the image is red.', n_tokens=8, hidden_size=32768, n_embd=4096, token_ids=[785 9334 304 279 2168 374 2518 13]
23:07:53.009 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
23:07:53.009 📍 轮次 1 结束,记录边界于 n_past=191
23:07:53.009 TTS<-LLM: chunk_idx=0, text='The square in the image is red.', n_tokens=8, hidden_size=32768, token_ids=[785 9334 304 279 2168 374 2518 13]
23:07:53.009 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
23:07:53.009 TTS: before empty check - response.empty=0, response='The square in the image is red.', llm_finish=1
Waiting for audio generation to complete...
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty
TTS: no valid WAV files to merge
[timing] call=0 tokens=28 final=0 token2mel=2075.545ms vocoder=275.495ms total=2351.054ms audio=20160
[timing] call=1 tokens=25 final=1 token2mel=1635.063ms vocoder=321.162ms total=1956.240ms audio=27840
Audio generation completed.
23:07:53.009 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
23:07:53.009 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
23:07:53.010 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
23:07:53.020 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
23:07:53.020 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
23:07:53.020 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
23:07:53.020 TTS Simplex: first chunk - cleared KV cache
23:07:53.020 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
23:07:53.035 TTS Simplex: prefill completed, n_past_tts=9
23:07:53.035 TTS Simplex: sampler created
23:07:53.035 TTS simplex: is_audio_bos=true (first audio token)
23:07:53.063 TTS Simplex Phase1: token 1/500: rel_id=770
23:07:53.074 TTS Simplex Phase1: token 2/500: rel_id=1950
23:07:53.085 TTS Simplex Phase1: token 3/500: rel_id=4137
23:07:53.098 TTS Simplex Phase1: token 4/500: rel_id=4218
23:07:53.113 TTS Simplex Phase1: token 5/500: rel_id=2031
23:07:53.328 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
23:07:53.349 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
23:07:53.350 TTS Simplex Phase1: token 25/500: rel_id=6501
23:07:53.350 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
23:07:53.350 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
23:07:53.432 TTS Simplex Phase1: EOS token at step 34
23:07:53.432 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
23:07:53.432 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=42
23:07:53.439 TTS Simplex Phase2: text_eos_embed injected, n_past=43
23:07:53.446 TTS Simplex Phase2: audio_bos injected, n_past=44, starting final generation
23:07:53.602 TTS Simplex Phase2: EOS at step 15 (final end)
23:07:53.602 TTS Simplex: chunk 结束,tts_token_buffer 剩余 22 tokens (保留等下一个 chunk)
23:07:53.602 TTS Simplex: is_final_text_chunk=true, flush 剩余 22 tokens 从 tts_token_buffer
23:07:53.602 TTS Simplex: generated 47 audio tokens for chunk 0
23:07:53.602 TTS Simplex: chunk 0 first tokens: [770 1950 4137 4218 2031 ], last tokens: [759 735 2031 4218 3894 ]
23:07:53.602 TTS Simplex: updated tts_n_past_accumulated=59, total_generated_tokens=47
23:07:53.603 TTS: finished processing all chunks
23:07:53.603 TTS: 单工模式轮次结束,下一轮 round_idx=1
23:07:53.603 TTS: sent is_final=true to T2W queue (turn end)
23:07:55.701 🎉 首响时间 (First Audio Response): 4042ms
23:07:55.701 T2W线程: wav_0.wav | 0.84s audio | 2351.1ms inference | RTF=2.80 | t=4042ms
23:07:57.657 T2W线程: wav_1.wav | 1.16s audio | 1956.3ms inference | RTF=1.69 | t=5998ms
23:07:57.657 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=1)
23:07:57.657 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
23:07:57.736 omni_stop_threads: stop signals sent
23:07:57.736 T2W(C++) 线程: 停止
llama_perf_context_print: load time = 12918.53 ms
llama_perf_context_print: prompt eval time = 9207.98 ms / 182 tokens ( 50.59 ms per token, 19.77 tokens per second)
llama_perf_context_print: eval time = 917.96 ms / 9 runs ( 102.00 ms per token, 9.80 tokens per second)
llama_perf_context_print: total time = 18566.38 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,469 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 25: general.quantization_version u32 = 2
llama_model_loader: - kv 26: general.file_type u32 = 15
llama_model_loader: - type f32: 145 tensors
llama_model_loader: - type q4_K: 217 tensors
llama_model_loader: - type q6_K: 37 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = Q4_K - Medium
print_info: file size = 4.68 GiB (4.90 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = qwen3
print_info: vocab_only = 0
print_info: n_ctx_train = 40960
print_info: n_embd = 4096
print_info: n_layer = 36
print_info: n_head = 32
print_info: n_head_kv = 8
print_info: n_rot = 128
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 128
print_info: n_embd_head_v = 128
print_info: n_gqa = 4
print_info: n_embd_k_gqa = 1024
print_info: n_embd_v_gqa = 1024
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 12288
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = -1
print_info: rope type = 2
print_info: rope scaling = linear
print_info: freq_base_train = 1000000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 40960
print_info: rope_finetuned = unknown
print_info: model type = 8B
print_info: model params = 8.19 B
print_info: general.name = Llm
print_info: vocab type = BPE
print_info: n_vocab = 151748
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: CPU_REPACK model buffer size = 3199.50 MiB
load_tensors: CPU_Mapped model buffer size = 4761.17 MiB
.....................................................................................
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 1000000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.58 MiB
llama_kv_cache: CPU KV buffer size = 288.00 MiB
llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 304.38 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 1
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = llama
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Tts
llama_model_loader: - kv 3: general.size_label str = 445M
llama_model_loader: - kv 4: llama.block_count u32 = 20
llama_model_loader: - kv 5: llama.context_length u32 = 4096
llama_model_loader: - kv 6: llama.embedding_length u32 = 768
llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072
llama_model_loader: - kv 8: llama.attention.head_count u32 = 12
llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12
llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000
llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: llama.attention.key_length u32 = 64
llama_model_loader: - kv 13: llama.attention.value_length u32 = 64
llama_model_loader: - kv 14: general.file_type u32 = 1
llama_model_loader: - kv 15: llama.vocab_size u32 = 158626
llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64
llama_model_loader: - kv 17: general.quantization_version u32 = 2
llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false
llama_model_loader: - type f32: 50 tensors
llama_model_loader: - type f16: 143 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = F16
print_info: file size = 1.07 GiB (20.70 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = llama
print_info: vocab_only = 0
print_info: n_ctx_train = 4096
print_info: n_embd = 768
print_info: n_layer = 20
print_info: n_head = 12
print_info: n_head_kv = 12
print_info: n_rot = 64
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 64
print_info: n_embd_head_v = 64
print_info: n_gqa = 1
print_info: n_embd_k_gqa = 768
print_info: n_embd_v_gqa = 768
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 3072
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = 0
print_info: rope type = 0
print_info: rope scaling = linear
print_info: freq_base_train = 10000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 4096
print_info: rope_finetuned = unknown
print_info: model type = ?B
print_info: model params = 444.94 M
print_info: general.name = Tts
print_info: vocab type = BPE
print_info: n_vocab = 158626
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: CPU_Mapped model buffer size = 592.48 MiB
..............................................................
llama_init_from_model: model default pooling_type is [0], but [-1] was specified
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 10000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.61 MiB
llama_kv_cache: CPU KV buffer size = 120.00 MiB
llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 25.51 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 1
vision_model_loader: model name:
vision_model_loader: description: image encoder for MiniCPM-V
vision_model_loader: GGUF version: 3
vision_model_loader: alignment: 32
vision_model_loader: n_tensors: 455
vision_model_loader: n_kv: 20
vision_ctx: vision using CPU backend
load_hparams: model_type: 0
load_hparams: n_embd: 1152
load_hparams: n_head: 16
load_hparams: n_ff: 4304
load_hparams: n_layer: 27
load_hparams: ffn_op: gelu
load_hparams: projection_dim: 0
--- vision hparams ---
load_hparams: image_size: 448
load_hparams: patch_size: 14
load_hparams: minicpmv_version: 100045
load_hparams: proj_scale_factor: 0
load_hparams: n_wa_pattern: 0
load_hparams: model size: 1044.36 MiB
load_hparams: metadata size: 0.16 MiB
load_tensors: ffn up/down are swapped
alloc_compute_meta: CPU compute buffer size = 100.30 MiB
init tts....init t2w....voc_hg2_model: CPU backend using 8 threads
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000
audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 20]
audition_audio_batch_encode: Final output: 20 tokens x 4096 dims
=== Model Paths ===
Base dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf
LLM: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK]
===================
=== Initializing Omni Context ===
Media type: 2 (omni: audio+vision)
TTS enabled: yes
Context size: 2048
GPU layers: 0
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts
Ref audio: /mnt/c/Users/zhout/w2/minicpmo_cpp_cpu_v3/fixture_0000.wav
00:15:40.087 === omni_init start
00:15:40.087 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
00:15:40.087 === omni_init: loading new LLM model
00:15:41.786 === omni_init: loading TTS model
00:15:41.786 TTS model: loading with n_gpu_layers=0
00:15:41.971 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
00:15:41.971 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
00:15:43.212 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
00:15:43.221 TTS: head_code loaded, verifying first few values:
00:15:43.221 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
00:15:43.221 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
00:15:43.221 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
00:15:43.295 TTS: weights loaded successfully
00:15:43.295 Projector: loading from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
00:15:43.306 Projector: loaded successfully
00:15:43.306 === omni_init: loading APM model
00:15:43.554 APM: init from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
00:15:43.943 Token2Wav: found models in /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf
00:15:43.943 Token2Wav: all model files found, initializing session...
00:15:43.943 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
00:15:43.943 Token2Wav: using prompt_cache from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
00:15:44.871 Token2Wav: initialized successfully
00:15:44.871 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
00:15:44.871 Token2Wav: 使用 C++ 实现
00:15:44.871 === omni_init success: ctx_llama = 0x5f21d5187060
=== Running test case ===
Audio prefix: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-20-komq74f6/fixture_
Count: 2
00:15:44.872 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
00:15:44.872 system prompt ref_audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-20-komq74f6/fixture_0000.wav
00:15:45.778 system prompt ref_audio embedding: n_pos=20
00:15:47.751 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
00:15:47.751 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
00:15:47.751 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
00:15:47.751 n_past = 72
00:15:47.751
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 2.87975 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3539.64 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3563.16 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3563.16 ms by vision ( 3563.16 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-20-komq74f6/fixture_0001.jpg
stream_prefill: prefilled 1 vision chunks (64 tokens each)
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=49339
audition_audio_preprocess: Audio not aligned to 100ms (49339 samples = 3083.7ms), padded with silence to 49600 samples (3100ms)
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=310, n_mel=80, total_size=24800
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=310, n_mel=80, total_elements=24800
audition_audio_batch_encode: Before incrementing iter: input_frames=310, n_tokens=155, current_iter=1, current_total=155, new_total=310, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=310, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 31]
audition_audio_batch_encode: Final output: 31 tokens x 4096 dims
00:15:53.557 stream_prefill(index=1): processing user audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-20-komq74f6/fixture_0001.wav
00:15:54.182 stream_prefill(index=1): user audio embedding: n_pos=31
00:15:55.329
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.57799 s
00:15:55.330 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
00:15:55.330 stream_decode: create tts thread (simplex mode)
00:15:55.330 stream_decode: create t2w thread
00:15:55.330 wait prefill done
00:15:55.330 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
00:15:55.330 T2W thread (C++) started
<user>
<assistant>00:15:55.334 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
00:15:55.334 TTS thread started
00:15:55.748 📍 [单工TTS] assistant prompt 完成, n_past=182
00:15:55.749 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
00:15:56.687 LLM: detected end token, set llm_generation_done=true
00:15:56.687 LLM->TTS: text='The square in the image is red.', n_tokens=8, hidden_size=32768, n_embd=4096, token_ids=[785 9334 304 279 2168 374 2518 13]
00:15:56.687 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
00:15:56.687 📍 轮次 1 结束,记录边界于 n_past=191
00:15:56.688 TTS<-LLM: chunk_idx=0, text='The square in the image is red.', n_tokens=8, hidden_size=32768, token_ids=[785 9334 304 279 2168 374 2518 13]
00:15:56.688 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
00:15:56.688 TTS: before empty check - response.empty=0, response='The square in the image is red.', llm_finish=1
Waiting for audio generation to complete...
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty
TTS: no valid WAV files to merge
[timing] call=0 tokens=28 final=0 token2mel=2450.853ms vocoder=290.417ms total=2741.282ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1645.873ms vocoder=326.067ms total=1971.958ms audio=24000
[timing] call=2 tokens=13 final=1 token2mel=1646.666ms vocoder=183.781ms total=1830.460ms audio=16320
Audio generation completed.
00:15:56.688 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
00:15:56.688 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
00:15:56.689 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
00:15:56.705 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
00:15:56.705 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
00:15:56.705 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
00:15:56.705 TTS Simplex: first chunk - cleared KV cache
00:15:56.705 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
00:15:56.724 TTS Simplex: prefill completed, n_past_tts=9
00:15:56.724 TTS Simplex: sampler created
00:15:56.724 TTS simplex: is_audio_bos=true (first audio token)
00:15:56.751 TTS Simplex Phase1: token 1/500: rel_id=3677
00:15:56.762 TTS Simplex Phase1: token 2/500: rel_id=4218
00:15:56.773 TTS Simplex Phase1: token 3/500: rel_id=6405
00:15:56.785 TTS Simplex Phase1: token 4/500: rel_id=3975
00:15:56.797 TTS Simplex Phase1: token 5/500: rel_id=4299
00:15:57.016 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
00:15:57.025 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
00:15:57.025 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
00:15:57.025 TTS Simplex Phase1: token 25/500: rel_id=1043
00:15:57.025 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
00:15:57.144 TTS Simplex Phase1: EOS token at step 37
00:15:57.144 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
00:15:57.144 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=45
00:15:57.152 TTS Simplex Phase2: text_eos_embed injected, n_past=46
00:15:57.159 TTS Simplex Phase2: audio_bos injected, n_past=47, starting final generation
00:15:57.313 TTS Simplex Phase2: yield 25 tokens 到 T2W
00:15:57.427 TTS Simplex Phase2: EOS at step 25 (final end)
00:15:57.427 TTS Simplex: chunk 结束,tts_token_buffer 剩余 10 tokens (保留等下一个 chunk)
00:15:57.427 TTS Simplex: is_final_text_chunk=true, flush 剩余 10 tokens 从 tts_token_buffer
00:15:57.427 TTS Simplex: generated 60 audio tokens for chunk 0
00:15:57.427 TTS Simplex: chunk 0 first tokens: [3677 4218 6405 3975 4299 ], last tokens: [4299 6486 6486 6405 4218 ]
00:15:57.427 TTS Simplex: updated tts_n_past_accumulated=72, total_generated_tokens=60
00:15:57.428 TTS: finished processing all chunks
00:15:57.428 TTS: 单工模式轮次结束,下一轮 round_idx=1
00:15:57.428 TTS: sent is_final=true to T2W queue (turn end)
00:15:59.766 🎉 首响时间 (First Audio Response): 4436ms
00:15:59.766 T2W线程: wav_0.wav | 0.84s audio | 2741.3ms inference | RTF=3.26 | t=4436ms
00:16:01.739 T2W线程: wav_1.wav | 1.00s audio | 1972.0ms inference | RTF=1.97 | t=6409ms
00:16:03.569 T2W线程: wav_2.wav | 0.68s audio | 1830.5ms inference | RTF=2.69 | t=8239ms
00:16:03.569 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
00:16:03.569 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
00:16:03.628 omni_stop_threads: stop signals sent
00:16:03.628 T2W(C++) 线程: 停止
llama_perf_context_print: load time = 15661.50 ms
llama_perf_context_print: prompt eval time = 10877.53 ms / 182 tokens ( 59.77 ms per token, 16.73 tokens per second)
llama_perf_context_print: eval time = 934.95 ms / 9 runs ( 103.88 ms per token, 9.63 tokens per second)
llama_perf_context_print: total time = 23541.25 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,469 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 25: general.quantization_version u32 = 2
llama_model_loader: - kv 26: general.file_type u32 = 15
llama_model_loader: - type f32: 145 tensors
llama_model_loader: - type q4_K: 217 tensors
llama_model_loader: - type q6_K: 37 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = Q4_K - Medium
print_info: file size = 4.68 GiB (4.90 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = qwen3
print_info: vocab_only = 0
print_info: n_ctx_train = 40960
print_info: n_embd = 4096
print_info: n_layer = 36
print_info: n_head = 32
print_info: n_head_kv = 8
print_info: n_rot = 128
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 128
print_info: n_embd_head_v = 128
print_info: n_gqa = 4
print_info: n_embd_k_gqa = 1024
print_info: n_embd_v_gqa = 1024
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 12288
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = -1
print_info: rope type = 2
print_info: rope scaling = linear
print_info: freq_base_train = 1000000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 40960
print_info: rope_finetuned = unknown
print_info: model type = 8B
print_info: model params = 8.19 B
print_info: general.name = Llm
print_info: vocab type = BPE
print_info: n_vocab = 151748
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: CPU_REPACK model buffer size = 3199.50 MiB
load_tensors: CPU_Mapped model buffer size = 4761.17 MiB
.....................................................................................
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 1000000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.58 MiB
llama_kv_cache: CPU KV buffer size = 288.00 MiB
llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 304.38 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 1
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = llama
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Tts
llama_model_loader: - kv 3: general.size_label str = 445M
llama_model_loader: - kv 4: llama.block_count u32 = 20
llama_model_loader: - kv 5: llama.context_length u32 = 4096
llama_model_loader: - kv 6: llama.embedding_length u32 = 768
llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072
llama_model_loader: - kv 8: llama.attention.head_count u32 = 12
llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12
llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000
llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: llama.attention.key_length u32 = 64
llama_model_loader: - kv 13: llama.attention.value_length u32 = 64
llama_model_loader: - kv 14: general.file_type u32 = 1
llama_model_loader: - kv 15: llama.vocab_size u32 = 158626
llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64
llama_model_loader: - kv 17: general.quantization_version u32 = 2
llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false
llama_model_loader: - type f32: 50 tensors
llama_model_loader: - type f16: 143 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = F16
print_info: file size = 1.07 GiB (20.70 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = llama
print_info: vocab_only = 0
print_info: n_ctx_train = 4096
print_info: n_embd = 768
print_info: n_layer = 20
print_info: n_head = 12
print_info: n_head_kv = 12
print_info: n_rot = 64
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 64
print_info: n_embd_head_v = 64
print_info: n_gqa = 1
print_info: n_embd_k_gqa = 768
print_info: n_embd_v_gqa = 768
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 3072
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = 0
print_info: rope type = 0
print_info: rope scaling = linear
print_info: freq_base_train = 10000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 4096
print_info: rope_finetuned = unknown
print_info: model type = ?B
print_info: model params = 444.94 M
print_info: general.name = Tts
print_info: vocab type = BPE
print_info: n_vocab = 158626
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: CPU_Mapped model buffer size = 592.48 MiB
..............................................................
llama_init_from_model: model default pooling_type is [0], but [-1] was specified
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 10000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.61 MiB
llama_kv_cache: CPU KV buffer size = 120.00 MiB
llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 25.51 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 1
vision_model_loader: model name:
vision_model_loader: description: image encoder for MiniCPM-V
vision_model_loader: GGUF version: 3
vision_model_loader: alignment: 32
vision_model_loader: n_tensors: 455
vision_model_loader: n_kv: 20
vision_ctx: vision using CPU backend
load_hparams: model_type: 0
load_hparams: n_embd: 1152
load_hparams: n_head: 16
load_hparams: n_ff: 4304
load_hparams: n_layer: 27
load_hparams: ffn_op: gelu
load_hparams: projection_dim: 0
--- vision hparams ---
load_hparams: image_size: 448
load_hparams: patch_size: 14
load_hparams: minicpmv_version: 100045
load_hparams: proj_scale_factor: 0
load_hparams: n_wa_pattern: 0
load_hparams: model size: 1044.36 MiB
load_hparams: metadata size: 0.16 MiB
load_tensors: ffn up/down are swapped
alloc_compute_meta: CPU compute buffer size = 100.30 MiB
init tts....init t2w....voc_hg2_model: CPU backend using 8 threads
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000
audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 20]
audition_audio_batch_encode: Final output: 20 tokens x 4096 dims
=== Model Paths ===
Base dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf
LLM: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK]
===================
=== Initializing Omni Context ===
Media type: 2 (omni: audio+vision)
TTS enabled: yes
Context size: 2048
GPU layers: 0
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts
Ref audio: /mnt/c/Users/zhout/w2/minicpmo_cpp_cpu_v3/fixture_0000.wav
00:16:04.238 === omni_init start
00:16:04.238 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
00:16:04.238 === omni_init: loading new LLM model
00:16:06.125 === omni_init: loading TTS model
00:16:06.125 TTS model: loading with n_gpu_layers=0
00:16:06.316 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
00:16:06.316 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
00:16:07.777 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
00:16:07.805 TTS: head_code loaded, verifying first few values:
00:16:07.805 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
00:16:07.805 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
00:16:07.805 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
00:16:07.882 TTS: weights loaded successfully
00:16:07.882 Projector: loading from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
00:16:07.893 Projector: loaded successfully
00:16:07.893 === omni_init: loading APM model
00:16:08.137 APM: init from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
00:16:08.550 Token2Wav: found models in /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf
00:16:08.550 Token2Wav: all model files found, initializing session...
00:16:08.550 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
00:16:08.550 Token2Wav: using prompt_cache from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
00:16:09.643 Token2Wav: initialized successfully
00:16:09.644 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
00:16:09.644 Token2Wav: 使用 C++ 实现
00:16:09.644 === omni_init success: ctx_llama = 0x5c84c899f060
=== Running test case ===
Audio prefix: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-21-hxdvj2gb/fixture_
Count: 2
00:16:09.644 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
00:16:09.644 system prompt ref_audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-21-hxdvj2gb/fixture_0000.wav
00:16:10.364 system prompt ref_audio embedding: n_pos=20
00:16:11.828 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
00:16:11.828 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
00:16:11.828 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
00:16:11.828 n_past = 72
00:16:11.828
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 2.18406 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3106.00 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3125.28 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3125.28 ms by vision ( 3125.28 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-21-hxdvj2gb/fixture_0001.jpg
stream_prefill: prefilled 1 vision chunks (64 tokens each)
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=49339
audition_audio_preprocess: Audio not aligned to 100ms (49339 samples = 3083.7ms), padded with silence to 49600 samples (3100ms)
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=310, n_mel=80, total_size=24800
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=310, n_mel=80, total_elements=24800
audition_audio_batch_encode: Before incrementing iter: input_frames=310, n_tokens=155, current_iter=1, current_total=155, new_total=310, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=310, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 31]
audition_audio_batch_encode: Final output: 31 tokens x 4096 dims
00:16:16.756 stream_prefill(index=1): processing user audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-21-hxdvj2gb/fixture_0001.wav
00:16:17.070 stream_prefill(index=1): user audio embedding: n_pos=31
00:16:18.220
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 6.39251 s
00:16:18.220 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
00:16:18.220 stream_decode: create tts thread (simplex mode)
00:16:18.220 stream_decode: create t2w thread
00:16:18.220 wait prefill done
00:16:18.220 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
00:16:18.221 T2W thread (C++) started
<user>
<assistant>00:16:18.224 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
00:16:18.224 TTS thread started
00:16:18.628 📍 [单工TTS] assistant prompt 完成, n_past=182
00:16:18.628 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
00:16:19.548 LLM: detected end token, set llm_generation_done=true
00:16:19.548 LLM->TTS: text='The square in the image is red.', n_tokens=8, hidden_size=32768, n_embd=4096, token_ids=[785 9334 304 279 2168 374 2518 13]
00:16:19.548 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
00:16:19.548 📍 轮次 1 结束,记录边界于 n_past=191
00:16:19.548 TTS<-LLM: chunk_idx=0, text='The square in the image is red.', n_tokens=8, hidden_size=32768, token_ids=[785 9334 304 279 2168 374 2518 13]
00:16:19.548 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
00:16:19.548 TTS: before empty check - response.empty=0, response='The square in the image is red.', llm_finish=1
Waiting for audio generation to complete...
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty
TTS: no valid WAV files to merge
[timing] call=0 tokens=28 final=0 token2mel=2126.911ms vocoder=287.710ms total=2414.631ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1668.609ms vocoder=315.393ms total=1984.016ms audio=24000
[timing] call=2 tokens=15 final=1 token2mel=1662.411ms vocoder=231.086ms total=1893.506ms audio=18240
Audio generation completed.
00:16:19.548 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
00:16:19.548 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
00:16:19.548 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
00:16:19.558 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
00:16:19.558 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
00:16:19.558 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
00:16:19.558 TTS Simplex: first chunk - cleared KV cache
00:16:19.558 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
00:16:19.576 TTS Simplex: prefill completed, n_past_tts=9
00:16:19.576 TTS Simplex: sampler created
00:16:19.576 TTS simplex: is_audio_bos=true (first audio token)
00:16:19.606 TTS Simplex Phase1: token 1/500: rel_id=1487
00:16:19.619 TTS Simplex Phase1: token 2/500: rel_id=4218
00:16:19.632 TTS Simplex Phase1: token 3/500: rel_id=6405
00:16:19.644 TTS Simplex Phase1: token 4/500: rel_id=6405
00:16:19.658 TTS Simplex Phase1: token 5/500: rel_id=4218
00:16:19.897 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
00:16:19.914 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
00:16:19.914 TTS Simplex Phase1: token 25/500: rel_id=3670
00:16:19.914 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
00:16:19.914 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
00:16:20.134 TTS Simplex Phase1: EOS token at step 47
00:16:20.134 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
00:16:20.134 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=55
00:16:20.140 TTS Simplex Phase2: text_eos_embed injected, n_past=56
00:16:20.147 TTS Simplex Phase2: audio_bos injected, n_past=57, starting final generation
00:16:20.187 TTS Simplex Phase2: yield 25 tokens 到 T2W
00:16:20.321 TTS Simplex Phase2: EOS at step 17 (final end)
00:16:20.321 TTS Simplex: chunk 结束,tts_token_buffer 剩余 12 tokens (保留等下一个 chunk)
00:16:20.321 TTS Simplex: is_final_text_chunk=true, flush 剩余 12 tokens 从 tts_token_buffer
00:16:20.321 TTS Simplex: generated 62 audio tokens for chunk 0
00:16:20.321 TTS Simplex: chunk 0 first tokens: [1487 4218 6405 6405 4218 ], last tokens: [4299 6486 6405 6405 4218 ]
00:16:20.321 TTS Simplex: updated tts_n_past_accumulated=74, total_generated_tokens=62
00:16:20.321 TTS: finished processing all chunks
00:16:20.321 TTS: 单工模式轮次结束,下一轮 round_idx=1
00:16:20.321 TTS: sent is_final=true to T2W queue (turn end)
00:16:22.329 🎉 首响时间 (First Audio Response): 4108ms
00:16:22.329 T2W线程: wav_0.wav | 0.84s audio | 2414.7ms inference | RTF=2.87 | t=4108ms
00:16:24.313 T2W线程: wav_1.wav | 1.00s audio | 1984.1ms inference | RTF=1.98 | t=6092ms
00:16:26.207 T2W线程: wav_2.wav | 0.76s audio | 1893.5ms inference | RTF=2.49 | t=7986ms
00:16:26.207 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
00:16:26.207 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
00:16:26.208 omni_stop_threads: stop signals sent
00:16:26.208 T2W(C++) 线程: 停止
llama_perf_context_print: load time = 14389.49 ms
llama_perf_context_print: prompt eval time = 8984.59 ms / 182 tokens ( 49.37 ms per token, 20.26 tokens per second)
llama_perf_context_print: eval time = 916.94 ms / 9 runs ( 101.88 ms per token, 9.82 tokens per second)
llama_perf_context_print: total time = 21969.55 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,21 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
@@ -0,0 +1,470 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 25: general.quantization_version u32 = 2
llama_model_loader: - kv 26: general.file_type u32 = 15
llama_model_loader: - type f32: 145 tensors
llama_model_loader: - type q4_K: 217 tensors
llama_model_loader: - type q6_K: 37 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = Q4_K - Medium
print_info: file size = 4.68 GiB (4.90 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = qwen3
print_info: vocab_only = 0
print_info: n_ctx_train = 40960
print_info: n_embd = 4096
print_info: n_layer = 36
print_info: n_head = 32
print_info: n_head_kv = 8
print_info: n_rot = 128
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 128
print_info: n_embd_head_v = 128
print_info: n_gqa = 4
print_info: n_embd_k_gqa = 1024
print_info: n_embd_v_gqa = 1024
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 12288
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = -1
print_info: rope type = 2
print_info: rope scaling = linear
print_info: freq_base_train = 1000000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 40960
print_info: rope_finetuned = unknown
print_info: model type = 8B
print_info: model params = 8.19 B
print_info: general.name = Llm
print_info: vocab type = BPE
print_info: n_vocab = 151748
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: CPU_REPACK model buffer size = 3199.50 MiB
load_tensors: CPU_Mapped model buffer size = 4761.17 MiB
.....................................................................................
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 1000000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.58 MiB
llama_kv_cache: CPU KV buffer size = 288.00 MiB
llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 304.38 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 1
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = llama
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Tts
llama_model_loader: - kv 3: general.size_label str = 445M
llama_model_loader: - kv 4: llama.block_count u32 = 20
llama_model_loader: - kv 5: llama.context_length u32 = 4096
llama_model_loader: - kv 6: llama.embedding_length u32 = 768
llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072
llama_model_loader: - kv 8: llama.attention.head_count u32 = 12
llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12
llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000
llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: llama.attention.key_length u32 = 64
llama_model_loader: - kv 13: llama.attention.value_length u32 = 64
llama_model_loader: - kv 14: general.file_type u32 = 1
llama_model_loader: - kv 15: llama.vocab_size u32 = 158626
llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64
llama_model_loader: - kv 17: general.quantization_version u32 = 2
llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false
llama_model_loader: - type f32: 50 tensors
llama_model_loader: - type f16: 143 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = F16
print_info: file size = 1.07 GiB (20.70 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = llama
print_info: vocab_only = 0
print_info: n_ctx_train = 4096
print_info: n_embd = 768
print_info: n_layer = 20
print_info: n_head = 12
print_info: n_head_kv = 12
print_info: n_rot = 64
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 64
print_info: n_embd_head_v = 64
print_info: n_gqa = 1
print_info: n_embd_k_gqa = 768
print_info: n_embd_v_gqa = 768
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 3072
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = 0
print_info: rope type = 0
print_info: rope scaling = linear
print_info: freq_base_train = 10000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 4096
print_info: rope_finetuned = unknown
print_info: model type = ?B
print_info: model params = 444.94 M
print_info: general.name = Tts
print_info: vocab type = BPE
print_info: n_vocab = 158626
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: CPU_Mapped model buffer size = 592.48 MiB
..............................................................
llama_init_from_model: model default pooling_type is [0], but [-1] was specified
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 10000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.61 MiB
llama_kv_cache: CPU KV buffer size = 120.00 MiB
llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 25.51 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 1
vision_model_loader: model name:
vision_model_loader: description: image encoder for MiniCPM-V
vision_model_loader: GGUF version: 3
vision_model_loader: alignment: 32
vision_model_loader: n_tensors: 455
vision_model_loader: n_kv: 20
vision_ctx: vision using CPU backend
load_hparams: model_type: 0
load_hparams: n_embd: 1152
load_hparams: n_head: 16
load_hparams: n_ff: 4304
load_hparams: n_layer: 27
load_hparams: ffn_op: gelu
load_hparams: projection_dim: 0
--- vision hparams ---
load_hparams: image_size: 448
load_hparams: patch_size: 14
load_hparams: minicpmv_version: 100045
load_hparams: proj_scale_factor: 0
load_hparams: n_wa_pattern: 0
load_hparams: model size: 1044.36 MiB
load_hparams: metadata size: 0.16 MiB
load_tensors: ffn up/down are swapped
alloc_compute_meta: CPU compute buffer size = 100.30 MiB
init tts....init t2w....voc_hg2_model: CPU backend using 8 threads
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000
audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 20]
audition_audio_batch_encode: Final output: 20 tokens x 4096 dims
=== Model Paths ===
Base dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf
LLM: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK]
===================
=== Initializing Omni Context ===
Media type: 2 (omni: audio+vision)
TTS enabled: yes
Context size: 2048
GPU layers: 0
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts
Ref audio: /mnt/c/Users/zhout/w2/minicpmo_cpp_cpu_v3/fixture_0000.wav
23:07:58.320 === omni_init start
23:07:58.320 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
23:07:58.320 === omni_init: loading new LLM model
23:07:59.961 === omni_init: loading TTS model
23:07:59.961 TTS model: loading with n_gpu_layers=0
23:08:00.170 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
23:08:00.170 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
23:08:00.691 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
23:08:00.700 TTS: head_code loaded, verifying first few values:
23:08:00.700 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
23:08:00.700 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
23:08:00.700 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
23:08:00.770 TTS: weights loaded successfully
23:08:00.770 Projector: loading from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
23:08:00.780 Projector: loaded successfully
23:08:00.780 === omni_init: loading APM model
23:08:01.022 APM: init from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
23:08:01.367 Token2Wav: found models in /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf
23:08:01.368 Token2Wav: all model files found, initializing session...
23:08:01.368 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
23:08:01.368 Token2Wav: using prompt_cache from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
23:08:02.327 Token2Wav: initialized successfully
23:08:02.327 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
23:08:02.327 Token2Wav: 使用 C++ 实现
23:08:02.327 === omni_init success: ctx_llama = 0x56dc229c9060
=== Running test case ===
Audio prefix: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-3-hs4qhzmg/fixture_
Count: 2
23:08:02.327 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
23:08:02.327 system prompt ref_audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-3-hs4qhzmg/fixture_0000.wav
23:08:03.094 system prompt ref_audio embedding: n_pos=20
23:08:04.575 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
23:08:04.575 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
23:08:04.575 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
23:08:04.575 n_past = 72
23:08:04.575
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 2.24824 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3133.17 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3152.85 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3152.86 ms by vision ( 3152.86 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-3-hs4qhzmg/fixture_0001.jpg
stream_prefill: prefilled 1 vision chunks (64 tokens each)
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=49339
audition_audio_preprocess: Audio not aligned to 100ms (49339 samples = 3083.7ms), padded with silence to 49600 samples (3100ms)
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=310, n_mel=80, total_size=24800
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=310, n_mel=80, total_elements=24800
audition_audio_batch_encode: Before incrementing iter: input_frames=310, n_tokens=155, current_iter=1, current_total=155, new_total=310, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=310, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 31]
audition_audio_batch_encode: Final output: 31 tokens x 4096 dims
23:08:09.614 stream_prefill(index=1): processing user audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-3-hs4qhzmg/fixture_0001.wav
23:08:09.951 stream_prefill(index=1): user audio embedding: n_pos=31
23:08:11.124
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 6.54809 s
23:08:11.124 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
23:08:11.124 stream_decode: create tts thread (simplex mode)
23:08:11.124 stream_decode: create t2w thread
23:08:11.124 wait prefill done
23:08:11.124 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
23:08:11.124 T2W thread (C++) started
<user>
<assistant>23:08:11.127 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
23:08:11.128 TTS thread started
23:08:11.534 📍 [单工TTS] assistant prompt 完成, n_past=182
23:08:11.534 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
23:08:12.460 LLM: detected end token, set llm_generation_done=true
23:08:12.460 LLM->TTS: text='The square in the image is red.', n_tokens=8, hidden_size=32768, n_embd=4096, token_ids=[785 9334 304 279 2168 374 2518 13]
23:08:12.460 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
23:08:12.460 📍 轮次 1 结束,记录边界于 n_past=191
23:08:12.460 TTS<-LLM: chunk_idx=0, text='The square in the image is red.', n_tokens=8, hidden_size=32768, token_ids=[785 9334 304 279 2168 374 2518 13]
23:08:12.460 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
23:08:12.460 TTS: before empty check - response.empty=0, response='The square in the image is red.', llm_finish=1
Waiting for audio generation to complete...
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty
TTS: no valid WAV files to merge
[timing] call=0 tokens=28 final=0 token2mel=2242.268ms vocoder=345.874ms total=2588.152ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1684.614ms vocoder=326.433ms total=2011.064ms audio=24000
[timing] call=2 tokens=23 final=1 token2mel=1676.504ms vocoder=294.113ms total=1970.627ms audio=25920
Audio generation completed.
23:08:12.460 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
23:08:12.460 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
23:08:12.461 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
23:08:12.471 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
23:08:12.471 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
23:08:12.471 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
23:08:12.471 TTS Simplex: first chunk - cleared KV cache
23:08:12.471 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
23:08:12.489 TTS Simplex: prefill completed, n_past_tts=9
23:08:12.489 TTS Simplex: sampler created
23:08:12.489 TTS simplex: is_audio_bos=true (first audio token)
23:08:12.519 TTS Simplex Phase1: token 1/500: rel_id=740
23:08:12.530 TTS Simplex Phase1: token 2/500: rel_id=4218
23:08:12.542 TTS Simplex Phase1: token 3/500: rel_id=4218
23:08:12.555 TTS Simplex Phase1: token 4/500: rel_id=4137
23:08:12.565 TTS Simplex Phase1: token 5/500: rel_id=4218
23:08:12.785 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
23:08:12.787 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
23:08:12.787 TTS Simplex Phase1: token 25/500: rel_id=1844
23:08:12.787 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
23:08:12.787 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
23:08:13.055 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 50, buffer=25)
23:08:13.055 TTS Simplex Phase1: token 50/500: rel_id=4606
23:08:13.114 TTS Simplex Phase1: EOS token at step 56
23:08:13.115 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
23:08:13.115 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=64
23:08:13.122 TTS Simplex Phase2: text_eos_embed injected, n_past=65
23:08:13.128 TTS Simplex Phase2: audio_bos injected, n_past=66, starting final generation
23:08:13.300 TTS Simplex Phase2: EOS at step 16 (final end)
23:08:13.300 TTS Simplex: chunk 结束,tts_token_buffer 剩余 20 tokens (保留等下一个 chunk)
23:08:13.300 TTS Simplex: is_final_text_chunk=true, flush 剩余 20 tokens 从 tts_token_buffer
23:08:13.300 TTS Simplex: generated 70 audio tokens for chunk 0
23:08:13.300 TTS Simplex: chunk 0 first tokens: [740 4218 4218 4137 4218 ], last tokens: [39 741 4218 4218 4137 ]
23:08:13.300 TTS Simplex: updated tts_n_past_accumulated=82, total_generated_tokens=70
23:08:13.300 TTS: finished processing all chunks
23:08:13.300 TTS: 单工模式轮次结束,下一轮 round_idx=1
23:08:13.300 TTS: sent is_final=true to T2W queue (turn end)
23:08:15.375 🎉 首响时间 (First Audio Response): 4251ms
23:08:15.375 T2W线程: wav_0.wav | 0.84s audio | 2588.2ms inference | RTF=3.08 | t=4251ms
23:08:17.387 T2W线程: wav_1.wav | 1.00s audio | 2011.1ms inference | RTF=2.01 | t=6263ms
23:08:19.358 T2W线程: wav_2.wav | 1.08s audio | 1970.7ms inference | RTF=1.82 | t=8234ms
23:08:19.358 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
23:08:19.358 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
23:08:19.396 omni_stop_threads: stop signals sent
23:08:19.396 T2W(C++) 线程: 停止
llama_perf_context_print: load time = 13212.40 ms
llama_perf_context_print: prompt eval time = 9206.06 ms / 182 tokens ( 50.58 ms per token, 19.77 tokens per second)
llama_perf_context_print: eval time = 923.94 ms / 9 runs ( 102.66 ms per token, 9.74 tokens per second)
llama_perf_context_print: total time = 21075.53 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,469 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 25: general.quantization_version u32 = 2
llama_model_loader: - kv 26: general.file_type u32 = 15
llama_model_loader: - type f32: 145 tensors
llama_model_loader: - type q4_K: 217 tensors
llama_model_loader: - type q6_K: 37 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = Q4_K - Medium
print_info: file size = 4.68 GiB (4.90 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = qwen3
print_info: vocab_only = 0
print_info: n_ctx_train = 40960
print_info: n_embd = 4096
print_info: n_layer = 36
print_info: n_head = 32
print_info: n_head_kv = 8
print_info: n_rot = 128
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 128
print_info: n_embd_head_v = 128
print_info: n_gqa = 4
print_info: n_embd_k_gqa = 1024
print_info: n_embd_v_gqa = 1024
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 12288
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = -1
print_info: rope type = 2
print_info: rope scaling = linear
print_info: freq_base_train = 1000000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 40960
print_info: rope_finetuned = unknown
print_info: model type = 8B
print_info: model params = 8.19 B
print_info: general.name = Llm
print_info: vocab type = BPE
print_info: n_vocab = 151748
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: CPU_REPACK model buffer size = 3199.50 MiB
load_tensors: CPU_Mapped model buffer size = 4761.17 MiB
.....................................................................................
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 1000000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.58 MiB
llama_kv_cache: CPU KV buffer size = 288.00 MiB
llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 304.38 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 1
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = llama
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Tts
llama_model_loader: - kv 3: general.size_label str = 445M
llama_model_loader: - kv 4: llama.block_count u32 = 20
llama_model_loader: - kv 5: llama.context_length u32 = 4096
llama_model_loader: - kv 6: llama.embedding_length u32 = 768
llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072
llama_model_loader: - kv 8: llama.attention.head_count u32 = 12
llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12
llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000
llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: llama.attention.key_length u32 = 64
llama_model_loader: - kv 13: llama.attention.value_length u32 = 64
llama_model_loader: - kv 14: general.file_type u32 = 1
llama_model_loader: - kv 15: llama.vocab_size u32 = 158626
llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64
llama_model_loader: - kv 17: general.quantization_version u32 = 2
llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false
llama_model_loader: - type f32: 50 tensors
llama_model_loader: - type f16: 143 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = F16
print_info: file size = 1.07 GiB (20.70 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = llama
print_info: vocab_only = 0
print_info: n_ctx_train = 4096
print_info: n_embd = 768
print_info: n_layer = 20
print_info: n_head = 12
print_info: n_head_kv = 12
print_info: n_rot = 64
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 64
print_info: n_embd_head_v = 64
print_info: n_gqa = 1
print_info: n_embd_k_gqa = 768
print_info: n_embd_v_gqa = 768
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 3072
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = 0
print_info: rope type = 0
print_info: rope scaling = linear
print_info: freq_base_train = 10000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 4096
print_info: rope_finetuned = unknown
print_info: model type = ?B
print_info: model params = 444.94 M
print_info: general.name = Tts
print_info: vocab type = BPE
print_info: n_vocab = 158626
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: CPU_Mapped model buffer size = 592.48 MiB
..............................................................
llama_init_from_model: model default pooling_type is [0], but [-1] was specified
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 10000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.61 MiB
llama_kv_cache: CPU KV buffer size = 120.00 MiB
llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 25.51 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 1
vision_model_loader: model name:
vision_model_loader: description: image encoder for MiniCPM-V
vision_model_loader: GGUF version: 3
vision_model_loader: alignment: 32
vision_model_loader: n_tensors: 455
vision_model_loader: n_kv: 20
vision_ctx: vision using CPU backend
load_hparams: model_type: 0
load_hparams: n_embd: 1152
load_hparams: n_head: 16
load_hparams: n_ff: 4304
load_hparams: n_layer: 27
load_hparams: ffn_op: gelu
load_hparams: projection_dim: 0
--- vision hparams ---
load_hparams: image_size: 448
load_hparams: patch_size: 14
load_hparams: minicpmv_version: 100045
load_hparams: proj_scale_factor: 0
load_hparams: n_wa_pattern: 0
load_hparams: model size: 1044.36 MiB
load_hparams: metadata size: 0.16 MiB
load_tensors: ffn up/down are swapped
alloc_compute_meta: CPU compute buffer size = 100.30 MiB
init tts....init t2w....voc_hg2_model: CPU backend using 8 threads
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000
audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 20]
audition_audio_batch_encode: Final output: 20 tokens x 4096 dims
=== Model Paths ===
Base dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf
LLM: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK]
===================
=== Initializing Omni Context ===
Media type: 2 (omni: audio+vision)
TTS enabled: yes
Context size: 2048
GPU layers: 0
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts
Ref audio: /mnt/c/Users/zhout/w2/minicpmo_cpp_cpu_v3/fixture_0000.wav
23:08:19.981 === omni_init start
23:08:19.982 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
23:08:19.982 === omni_init: loading new LLM model
23:08:21.564 === omni_init: loading TTS model
23:08:21.564 TTS model: loading with n_gpu_layers=0
23:08:21.754 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
23:08:21.754 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
23:08:22.277 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
23:08:22.287 TTS: head_code loaded, verifying first few values:
23:08:22.287 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
23:08:22.287 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
23:08:22.287 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
23:08:22.359 TTS: weights loaded successfully
23:08:22.359 Projector: loading from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
23:08:22.369 Projector: loaded successfully
23:08:22.370 === omni_init: loading APM model
23:08:22.612 APM: init from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
23:08:23.011 Token2Wav: found models in /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf
23:08:23.011 Token2Wav: all model files found, initializing session...
23:08:23.011 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
23:08:23.011 Token2Wav: using prompt_cache from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
23:08:23.990 Token2Wav: initialized successfully
23:08:23.990 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
23:08:23.990 Token2Wav: 使用 C++ 实现
23:08:23.990 === omni_init success: ctx_llama = 0x5f9f4ecef060
=== Running test case ===
Audio prefix: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-4-48llk7_7/fixture_
Count: 2
23:08:23.990 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
23:08:23.990 system prompt ref_audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-4-48llk7_7/fixture_0000.wav
23:08:24.761 system prompt ref_audio embedding: n_pos=20
23:08:26.214 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
23:08:26.214 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
23:08:26.214 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
23:08:26.214 n_past = 72
23:08:26.214
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 2.22357 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3062.37 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3082.26 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3082.26 ms by vision ( 3082.26 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-4-48llk7_7/fixture_0001.jpg
stream_prefill: prefilled 1 vision chunks (64 tokens each)
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=49339
audition_audio_preprocess: Audio not aligned to 100ms (49339 samples = 3083.7ms), padded with silence to 49600 samples (3100ms)
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=310, n_mel=80, total_size=24800
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=310, n_mel=80, total_elements=24800
audition_audio_batch_encode: Before incrementing iter: input_frames=310, n_tokens=155, current_iter=1, current_total=155, new_total=310, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=310, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 31]
audition_audio_batch_encode: Final output: 31 tokens x 4096 dims
23:08:31.132 stream_prefill(index=1): processing user audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-4-48llk7_7/fixture_0001.wav
23:08:31.440 stream_prefill(index=1): user audio embedding: n_pos=31
23:08:32.649
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 6.43496 s
23:08:32.649 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
23:08:32.649 stream_decode: create tts thread (simplex mode)
23:08:32.649 stream_decode: create t2w thread
23:08:32.649 wait prefill done
23:08:32.649 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
23:08:32.649 T2W thread (C++) started
<user>
<assistant>23:08:32.652 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
23:08:32.652 TTS thread started
23:08:33.060 📍 [单工TTS] assistant prompt 完成, n_past=182
23:08:33.060 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
23:08:33.986 LLM: detected end token, set llm_generation_done=true
23:08:33.986 LLM->TTS: text='The square in the image is red.', n_tokens=8, hidden_size=32768, n_embd=4096, token_ids=[785 9334 304 279 2168 374 2518 13]
23:08:33.986 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
23:08:33.986 📍 轮次 1 结束,记录边界于 n_past=191
23:08:33.986 TTS<-LLM: chunk_idx=0, text='The square in the image is red.', n_tokens=8, hidden_size=32768, token_ids=[785 9334 304 279 2168 374 2518 13]
23:08:33.986 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
23:08:33.986 TTS: before empty check - response.empty=0, response='The square in the image is red.', llm_finish=1
Waiting for audio generation to complete...
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty
TTS: no valid WAV files to merge
[timing] call=0 tokens=28 final=0 token2mel=2129.181ms vocoder=279.023ms total=2408.216ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1674.759ms vocoder=321.046ms total=1995.820ms audio=24000
[timing] call=2 tokens=12 final=1 token2mel=1665.271ms vocoder=191.011ms total=1856.292ms audio=15360
Audio generation completed.
23:08:33.986 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
23:08:33.986 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
23:08:33.986 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
23:08:33.996 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
23:08:33.996 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
23:08:33.996 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
23:08:33.996 TTS Simplex: first chunk - cleared KV cache
23:08:33.996 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
23:08:34.012 TTS Simplex: prefill completed, n_past_tts=9
23:08:34.012 TTS Simplex: sampler created
23:08:34.012 TTS simplex: is_audio_bos=true (first audio token)
23:08:34.037 TTS Simplex Phase1: token 1/500: rel_id=1487
23:08:34.048 TTS Simplex Phase1: token 2/500: rel_id=1950
23:08:34.059 TTS Simplex Phase1: token 3/500: rel_id=4218
23:08:34.071 TTS Simplex Phase1: token 4/500: rel_id=4137
23:08:34.083 TTS Simplex Phase1: token 5/500: rel_id=4137
23:08:34.296 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
23:08:34.313 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
23:08:34.313 TTS Simplex Phase1: token 25/500: rel_id=4939
23:08:34.313 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
23:08:34.313 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
23:08:34.533 TTS Simplex Phase1: EOS token at step 47
23:08:34.534 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
23:08:34.534 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=55
23:08:34.540 TTS Simplex Phase2: text_eos_embed injected, n_past=56
23:08:34.548 TTS Simplex Phase2: audio_bos injected, n_past=57, starting final generation
23:08:34.590 TTS Simplex Phase2: yield 25 tokens 到 T2W
23:08:34.693 TTS Simplex Phase2: EOS at step 14 (final end)
23:08:34.694 TTS Simplex: chunk 结束,tts_token_buffer 剩余 9 tokens (保留等下一个 chunk)
23:08:34.694 TTS Simplex: is_final_text_chunk=true, flush 剩余 9 tokens 从 tts_token_buffer
23:08:34.694 TTS Simplex: generated 59 audio tokens for chunk 0
23:08:34.694 TTS Simplex: chunk 0 first tokens: [1487 1950 4218 4137 4137 ], last tokens: [4218 4218 4137 4218 6081 ]
23:08:34.694 TTS Simplex: updated tts_n_past_accumulated=71, total_generated_tokens=59
23:08:34.694 TTS: finished processing all chunks
23:08:34.694 TTS: 单工模式轮次结束,下一轮 round_idx=1
23:08:34.694 TTS: sent is_final=true to T2W queue (turn end)
23:08:36.722 🎉 首响时间 (First Audio Response): 4073ms
23:08:36.722 T2W线程: wav_0.wav | 0.84s audio | 2408.3ms inference | RTF=2.87 | t=4073ms
23:08:38.718 T2W线程: wav_1.wav | 1.00s audio | 1995.9ms inference | RTF=2.00 | t=6069ms
23:08:40.575 T2W线程: wav_2.wav | 0.64s audio | 1856.3ms inference | RTF=2.90 | t=7925ms
23:08:40.575 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
23:08:40.575 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
23:08:40.607 omni_stop_threads: stop signals sent
23:08:40.607 T2W(C++) 线程: 停止
llama_perf_context_print: load time = 13078.14 ms
llama_perf_context_print: prompt eval time = 9069.99 ms / 182 tokens ( 49.84 ms per token, 20.07 tokens per second)
llama_perf_context_print: eval time = 922.80 ms / 9 runs ( 102.53 ms per token, 9.75 tokens per second)
llama_perf_context_print: total time = 20625.01 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,470 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 25: general.quantization_version u32 = 2
llama_model_loader: - kv 26: general.file_type u32 = 15
llama_model_loader: - type f32: 145 tensors
llama_model_loader: - type q4_K: 217 tensors
llama_model_loader: - type q6_K: 37 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = Q4_K - Medium
print_info: file size = 4.68 GiB (4.90 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = qwen3
print_info: vocab_only = 0
print_info: n_ctx_train = 40960
print_info: n_embd = 4096
print_info: n_layer = 36
print_info: n_head = 32
print_info: n_head_kv = 8
print_info: n_rot = 128
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 128
print_info: n_embd_head_v = 128
print_info: n_gqa = 4
print_info: n_embd_k_gqa = 1024
print_info: n_embd_v_gqa = 1024
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 12288
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = -1
print_info: rope type = 2
print_info: rope scaling = linear
print_info: freq_base_train = 1000000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 40960
print_info: rope_finetuned = unknown
print_info: model type = 8B
print_info: model params = 8.19 B
print_info: general.name = Llm
print_info: vocab type = BPE
print_info: n_vocab = 151748
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: CPU_REPACK model buffer size = 3199.50 MiB
load_tensors: CPU_Mapped model buffer size = 4761.17 MiB
.....................................................................................
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 1000000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.58 MiB
llama_kv_cache: CPU KV buffer size = 288.00 MiB
llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 304.38 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 1
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = llama
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Tts
llama_model_loader: - kv 3: general.size_label str = 445M
llama_model_loader: - kv 4: llama.block_count u32 = 20
llama_model_loader: - kv 5: llama.context_length u32 = 4096
llama_model_loader: - kv 6: llama.embedding_length u32 = 768
llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072
llama_model_loader: - kv 8: llama.attention.head_count u32 = 12
llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12
llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000
llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: llama.attention.key_length u32 = 64
llama_model_loader: - kv 13: llama.attention.value_length u32 = 64
llama_model_loader: - kv 14: general.file_type u32 = 1
llama_model_loader: - kv 15: llama.vocab_size u32 = 158626
llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64
llama_model_loader: - kv 17: general.quantization_version u32 = 2
llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false
llama_model_loader: - type f32: 50 tensors
llama_model_loader: - type f16: 143 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = F16
print_info: file size = 1.07 GiB (20.70 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = llama
print_info: vocab_only = 0
print_info: n_ctx_train = 4096
print_info: n_embd = 768
print_info: n_layer = 20
print_info: n_head = 12
print_info: n_head_kv = 12
print_info: n_rot = 64
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 64
print_info: n_embd_head_v = 64
print_info: n_gqa = 1
print_info: n_embd_k_gqa = 768
print_info: n_embd_v_gqa = 768
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 3072
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = 0
print_info: rope type = 0
print_info: rope scaling = linear
print_info: freq_base_train = 10000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 4096
print_info: rope_finetuned = unknown
print_info: model type = ?B
print_info: model params = 444.94 M
print_info: general.name = Tts
print_info: vocab type = BPE
print_info: n_vocab = 158626
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: CPU_Mapped model buffer size = 592.48 MiB
..............................................................
llama_init_from_model: model default pooling_type is [0], but [-1] was specified
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 10000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.61 MiB
llama_kv_cache: CPU KV buffer size = 120.00 MiB
llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 25.51 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 1
vision_model_loader: model name:
vision_model_loader: description: image encoder for MiniCPM-V
vision_model_loader: GGUF version: 3
vision_model_loader: alignment: 32
vision_model_loader: n_tensors: 455
vision_model_loader: n_kv: 20
vision_ctx: vision using CPU backend
load_hparams: model_type: 0
load_hparams: n_embd: 1152
load_hparams: n_head: 16
load_hparams: n_ff: 4304
load_hparams: n_layer: 27
load_hparams: ffn_op: gelu
load_hparams: projection_dim: 0
--- vision hparams ---
load_hparams: image_size: 448
load_hparams: patch_size: 14
load_hparams: minicpmv_version: 100045
load_hparams: proj_scale_factor: 0
load_hparams: n_wa_pattern: 0
load_hparams: model size: 1044.36 MiB
load_hparams: metadata size: 0.16 MiB
load_tensors: ffn up/down are swapped
alloc_compute_meta: CPU compute buffer size = 100.30 MiB
init tts....init t2w....voc_hg2_model: CPU backend using 8 threads
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000
audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 20]
audition_audio_batch_encode: Final output: 20 tokens x 4096 dims
=== Model Paths ===
Base dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf
LLM: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK]
===================
=== Initializing Omni Context ===
Media type: 2 (omni: audio+vision)
TTS enabled: yes
Context size: 2048
GPU layers: 0
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts
Ref audio: /mnt/c/Users/zhout/w2/minicpmo_cpp_cpu_v3/fixture_0000.wav
23:08:41.207 === omni_init start
23:08:41.207 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
23:08:41.207 === omni_init: loading new LLM model
23:08:42.776 === omni_init: loading TTS model
23:08:42.776 TTS model: loading with n_gpu_layers=0
23:08:42.947 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
23:08:42.947 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
23:08:43.464 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
23:08:43.472 TTS: head_code loaded, verifying first few values:
23:08:43.472 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
23:08:43.472 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
23:08:43.472 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
23:08:43.544 TTS: weights loaded successfully
23:08:43.544 Projector: loading from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
23:08:43.555 Projector: loaded successfully
23:08:43.555 === omni_init: loading APM model
23:08:43.792 APM: init from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
23:08:44.133 Token2Wav: found models in /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf
23:08:44.133 Token2Wav: all model files found, initializing session...
23:08:44.133 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
23:08:44.133 Token2Wav: using prompt_cache from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
23:08:44.835 Token2Wav: initialized successfully
23:08:44.835 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
23:08:44.835 Token2Wav: 使用 C++ 实现
23:08:44.835 === omni_init success: ctx_llama = 0x597e81cd6060
=== Running test case ===
Audio prefix: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-5-fqu5rixn/fixture_
Count: 2
23:08:44.835 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
23:08:44.835 system prompt ref_audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-5-fqu5rixn/fixture_0000.wav
23:08:45.755 system prompt ref_audio embedding: n_pos=20
23:08:47.639 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
23:08:47.639 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
23:08:47.639 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
23:08:47.639 n_past = 72
23:08:47.639
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 2.80401 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3380.72 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3412.96 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3412.96 ms by vision ( 3412.96 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-5-fqu5rixn/fixture_0001.jpg
stream_prefill: prefilled 1 vision chunks (64 tokens each)
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=49339
audition_audio_preprocess: Audio not aligned to 100ms (49339 samples = 3083.7ms), padded with silence to 49600 samples (3100ms)
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=310, n_mel=80, total_size=24800
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=310, n_mel=80, total_elements=24800
audition_audio_batch_encode: Before incrementing iter: input_frames=310, n_tokens=155, current_iter=1, current_total=155, new_total=310, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=310, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 31]
audition_audio_batch_encode: Final output: 31 tokens x 4096 dims
23:08:53.181 stream_prefill(index=1): processing user audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-5-fqu5rixn/fixture_0001.wav
23:08:53.689 stream_prefill(index=1): user audio embedding: n_pos=31
23:08:54.853
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.21386 s
23:08:54.853 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
23:08:54.853 stream_decode: create tts thread (simplex mode)
23:08:54.853 stream_decode: create t2w thread
23:08:54.853 wait prefill done
23:08:54.853 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
23:08:54.853 T2W thread (C++) started
<user>
<assistant>23:08:54.858 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
23:08:54.858 TTS thread started
23:08:55.264 📍 [单工TTS] assistant prompt 完成, n_past=182
23:08:55.264 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
23:08:56.186 LLM: detected end token, set llm_generation_done=true
23:08:56.186 LLM->TTS: text='The square in the image is red.', n_tokens=8, hidden_size=32768, n_embd=4096, token_ids=[785 9334 304 279 2168 374 2518 13]
23:08:56.186 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
23:08:56.186 📍 轮次 1 结束,记录边界于 n_past=191
23:08:56.187 TTS<-LLM: chunk_idx=0, text='The square in the image is red.', n_tokens=8, hidden_size=32768, token_ids=[785 9334 304 279 2168 374 2518 13]
23:08:56.187 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
23:08:56.187 TTS: before empty check - response.empty=0, response='The square in the image is red.', llm_finish=1
Waiting for audio generation to complete...
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty
TTS: no valid WAV files to merge
[timing] call=0 tokens=28 final=0 token2mel=2824.244ms vocoder=391.568ms total=3215.824ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1665.315ms vocoder=327.941ms total=1993.274ms audio=24000
[timing] call=2 tokens=15 final=1 token2mel=1668.026ms vocoder=207.792ms total=1875.829ms audio=18240
Audio generation completed.
23:08:56.187 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
23:08:56.187 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
23:08:56.188 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
23:08:56.204 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
23:08:56.204 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
23:08:56.204 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
23:08:56.204 TTS Simplex: first chunk - cleared KV cache
23:08:56.204 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
23:08:56.223 TTS Simplex: prefill completed, n_past_tts=9
23:08:56.223 TTS Simplex: sampler created
23:08:56.223 TTS simplex: is_audio_bos=true (first audio token)
23:08:56.251 TTS Simplex Phase1: token 1/500: rel_id=758
23:08:56.263 TTS Simplex Phase1: token 2/500: rel_id=4218
23:08:56.275 TTS Simplex Phase1: token 3/500: rel_id=4137
23:08:56.286 TTS Simplex Phase1: token 4/500: rel_id=4137
23:08:56.297 TTS Simplex Phase1: token 5/500: rel_id=4137
23:08:56.505 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
23:08:56.520 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
23:08:56.520 TTS Simplex Phase1: token 25/500: rel_id=5021
23:08:56.520 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
23:08:56.520 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
23:08:56.780 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 50, buffer=25)
23:08:56.780 TTS Simplex Phase1: token 50/500: rel_id=4567
23:08:56.909 TTS Simplex Phase1: EOS token at step 63
23:08:56.909 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
23:08:56.909 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=71
23:08:56.916 TTS Simplex Phase2: text_eos_embed injected, n_past=72
23:08:56.924 TTS Simplex Phase2: audio_bos injected, n_past=73, starting final generation
23:08:56.935 TTS Simplex Phase2: EOS at step 1 (final end)
23:08:56.935 TTS Simplex: chunk 结束,tts_token_buffer 剩余 12 tokens (保留等下一个 chunk)
23:08:56.935 TTS Simplex: is_final_text_chunk=true, flush 剩余 12 tokens 从 tts_token_buffer
23:08:56.935 TTS Simplex: generated 62 audio tokens for chunk 0
23:08:56.935 TTS Simplex: chunk 0 first tokens: [758 4218 4137 4137 4137 ], last tokens: [1464 4218 4218 4137 6082 ]
23:08:56.935 TTS Simplex: updated tts_n_past_accumulated=74, total_generated_tokens=62
23:08:56.935 TTS: finished processing all chunks
23:08:56.935 TTS: 单工模式轮次结束,下一轮 round_idx=1
23:08:56.935 TTS: sent is_final=true to T2W queue (turn end)
23:08:59.736 🎉 首响时间 (First Audio Response): 4883ms
23:08:59.736 T2W线程: wav_0.wav | 0.84s audio | 3215.9ms inference | RTF=3.83 | t=4883ms
23:09:01.730 T2W线程: wav_1.wav | 1.00s audio | 1993.3ms inference | RTF=1.99 | t=6876ms
23:09:03.606 T2W线程: wav_2.wav | 0.76s audio | 1875.9ms inference | RTF=2.47 | t=8752ms
23:09:03.606 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
23:09:03.606 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
23:09:03.619 omni_stop_threads: stop signals sent
23:09:03.619 T2W(C++) 线程: 停止
llama_perf_context_print: load time = 14056.06 ms
llama_perf_context_print: prompt eval time = 10429.56 ms / 182 tokens ( 57.31 ms per token, 17.45 tokens per second)
llama_perf_context_print: eval time = 917.31 ms / 9 runs ( 101.92 ms per token, 9.81 tokens per second)
llama_perf_context_print: total time = 22410.72 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,469 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 25: general.quantization_version u32 = 2
llama_model_loader: - kv 26: general.file_type u32 = 15
llama_model_loader: - type f32: 145 tensors
llama_model_loader: - type q4_K: 217 tensors
llama_model_loader: - type q6_K: 37 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = Q4_K - Medium
print_info: file size = 4.68 GiB (4.90 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = qwen3
print_info: vocab_only = 0
print_info: n_ctx_train = 40960
print_info: n_embd = 4096
print_info: n_layer = 36
print_info: n_head = 32
print_info: n_head_kv = 8
print_info: n_rot = 128
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 128
print_info: n_embd_head_v = 128
print_info: n_gqa = 4
print_info: n_embd_k_gqa = 1024
print_info: n_embd_v_gqa = 1024
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 12288
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = -1
print_info: rope type = 2
print_info: rope scaling = linear
print_info: freq_base_train = 1000000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 40960
print_info: rope_finetuned = unknown
print_info: model type = 8B
print_info: model params = 8.19 B
print_info: general.name = Llm
print_info: vocab type = BPE
print_info: n_vocab = 151748
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: CPU_REPACK model buffer size = 3199.50 MiB
load_tensors: CPU_Mapped model buffer size = 4761.17 MiB
.....................................................................................
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 1000000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.58 MiB
llama_kv_cache: CPU KV buffer size = 288.00 MiB
llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 304.38 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 1
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = llama
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Tts
llama_model_loader: - kv 3: general.size_label str = 445M
llama_model_loader: - kv 4: llama.block_count u32 = 20
llama_model_loader: - kv 5: llama.context_length u32 = 4096
llama_model_loader: - kv 6: llama.embedding_length u32 = 768
llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072
llama_model_loader: - kv 8: llama.attention.head_count u32 = 12
llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12
llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000
llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: llama.attention.key_length u32 = 64
llama_model_loader: - kv 13: llama.attention.value_length u32 = 64
llama_model_loader: - kv 14: general.file_type u32 = 1
llama_model_loader: - kv 15: llama.vocab_size u32 = 158626
llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64
llama_model_loader: - kv 17: general.quantization_version u32 = 2
llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false
llama_model_loader: - type f32: 50 tensors
llama_model_loader: - type f16: 143 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = F16
print_info: file size = 1.07 GiB (20.70 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = llama
print_info: vocab_only = 0
print_info: n_ctx_train = 4096
print_info: n_embd = 768
print_info: n_layer = 20
print_info: n_head = 12
print_info: n_head_kv = 12
print_info: n_rot = 64
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 64
print_info: n_embd_head_v = 64
print_info: n_gqa = 1
print_info: n_embd_k_gqa = 768
print_info: n_embd_v_gqa = 768
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 3072
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = 0
print_info: rope type = 0
print_info: rope scaling = linear
print_info: freq_base_train = 10000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 4096
print_info: rope_finetuned = unknown
print_info: model type = ?B
print_info: model params = 444.94 M
print_info: general.name = Tts
print_info: vocab type = BPE
print_info: n_vocab = 158626
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: CPU_Mapped model buffer size = 592.48 MiB
..............................................................
llama_init_from_model: model default pooling_type is [0], but [-1] was specified
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 10000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.61 MiB
llama_kv_cache: CPU KV buffer size = 120.00 MiB
llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 25.51 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 1
vision_model_loader: model name:
vision_model_loader: description: image encoder for MiniCPM-V
vision_model_loader: GGUF version: 3
vision_model_loader: alignment: 32
vision_model_loader: n_tensors: 455
vision_model_loader: n_kv: 20
vision_ctx: vision using CPU backend
load_hparams: model_type: 0
load_hparams: n_embd: 1152
load_hparams: n_head: 16
load_hparams: n_ff: 4304
load_hparams: n_layer: 27
load_hparams: ffn_op: gelu
load_hparams: projection_dim: 0
--- vision hparams ---
load_hparams: image_size: 448
load_hparams: patch_size: 14
load_hparams: minicpmv_version: 100045
load_hparams: proj_scale_factor: 0
load_hparams: n_wa_pattern: 0
load_hparams: model size: 1044.36 MiB
load_hparams: metadata size: 0.16 MiB
load_tensors: ffn up/down are swapped
alloc_compute_meta: CPU compute buffer size = 100.30 MiB
init tts....init t2w....voc_hg2_model: CPU backend using 8 threads
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000
audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 20]
audition_audio_batch_encode: Final output: 20 tokens x 4096 dims
=== Model Paths ===
Base dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf
LLM: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK]
===================
=== Initializing Omni Context ===
Media type: 2 (omni: audio+vision)
TTS enabled: yes
Context size: 2048
GPU layers: 0
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts
Ref audio: /mnt/c/Users/zhout/w2/minicpmo_cpp_cpu_v3/fixture_0000.wav
23:09:04.294 === omni_init start
23:09:04.294 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
23:09:04.294 === omni_init: loading new LLM model
23:09:06.020 === omni_init: loading TTS model
23:09:06.020 TTS model: loading with n_gpu_layers=0
23:09:06.189 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
23:09:06.189 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
23:09:06.769 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
23:09:06.777 TTS: head_code loaded, verifying first few values:
23:09:06.777 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
23:09:06.777 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
23:09:06.777 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
23:09:06.852 TTS: weights loaded successfully
23:09:06.852 Projector: loading from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
23:09:06.867 Projector: loaded successfully
23:09:06.867 === omni_init: loading APM model
23:09:07.342 APM: init from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
23:09:08.065 Token2Wav: found models in /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf
23:09:08.065 Token2Wav: all model files found, initializing session...
23:09:08.065 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
23:09:08.065 Token2Wav: using prompt_cache from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
23:09:09.536 Token2Wav: initialized successfully
23:09:09.536 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
23:09:09.536 Token2Wav: 使用 C++ 实现
23:09:09.536 === omni_init success: ctx_llama = 0x5a48e24b1060
=== Running test case ===
Audio prefix: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-6-nvgkaq7t/fixture_
Count: 2
23:09:09.536 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
23:09:09.536 system prompt ref_audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-6-nvgkaq7t/fixture_0000.wav
23:09:10.468 system prompt ref_audio embedding: n_pos=20
23:09:12.314 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
23:09:12.314 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
23:09:12.314 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
23:09:12.314 n_past = 72
23:09:12.314
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 2.77747 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3304.66 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3325.93 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3325.93 ms by vision ( 3325.93 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-6-nvgkaq7t/fixture_0001.jpg
stream_prefill: prefilled 1 vision chunks (64 tokens each)
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=49339
audition_audio_preprocess: Audio not aligned to 100ms (49339 samples = 3083.7ms), padded with silence to 49600 samples (3100ms)
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=310, n_mel=80, total_size=24800
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=310, n_mel=80, total_elements=24800
audition_audio_batch_encode: Before incrementing iter: input_frames=310, n_tokens=155, current_iter=1, current_total=155, new_total=310, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=310, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 31]
audition_audio_batch_encode: Final output: 31 tokens x 4096 dims
23:09:17.539 stream_prefill(index=1): processing user audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-6-nvgkaq7t/fixture_0001.wav
23:09:17.929 stream_prefill(index=1): user audio embedding: n_pos=31
23:09:19.089
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 6.77488 s
23:09:19.089 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
23:09:19.089 stream_decode: create tts thread (simplex mode)
23:09:19.089 stream_decode: create t2w thread
23:09:19.089 wait prefill done
23:09:19.089 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
23:09:19.089 T2W thread (C++) started
<user>
<assistant>23:09:19.094 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
23:09:19.094 TTS thread started
23:09:19.511 📍 [单工TTS] assistant prompt 完成, n_past=182
23:09:19.511 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
23:09:20.430 LLM: detected end token, set llm_generation_done=true
23:09:20.430 LLM->TTS: text='The square in the image is red.', n_tokens=8, hidden_size=32768, n_embd=4096, token_ids=[785 9334 304 279 2168 374 2518 13]
23:09:20.430 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
23:09:20.430 📍 轮次 1 结束,记录边界于 n_past=191
23:09:20.430 TTS<-LLM: chunk_idx=0, text='The square in the image is red.', n_tokens=8, hidden_size=32768, token_ids=[785 9334 304 279 2168 374 2518 13]
23:09:20.430 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
23:09:20.430 TTS: before empty check - response.empty=0, response='The square in the image is red.', llm_finish=1
Waiting for audio generation to complete...
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty
TTS: no valid WAV files to merge
[timing] call=0 tokens=28 final=0 token2mel=2559.197ms vocoder=305.696ms total=2864.902ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1684.831ms vocoder=322.610ms total=2007.458ms audio=24000
[timing] call=2 tokens=13 final=1 token2mel=1678.337ms vocoder=188.463ms total=1866.809ms audio=16320
Audio generation completed.
23:09:20.430 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
23:09:20.430 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
23:09:20.431 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
23:09:20.439 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
23:09:20.439 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
23:09:20.439 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
23:09:20.439 TTS Simplex: first chunk - cleared KV cache
23:09:20.439 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
23:09:20.456 TTS Simplex: prefill completed, n_past_tts=9
23:09:20.456 TTS Simplex: sampler created
23:09:20.456 TTS simplex: is_audio_bos=true (first audio token)
23:09:20.492 TTS Simplex Phase1: token 1/500: rel_id=1496
23:09:20.503 TTS Simplex Phase1: token 2/500: rel_id=1950
23:09:20.515 TTS Simplex Phase1: token 3/500: rel_id=4137
23:09:20.528 TTS Simplex Phase1: token 4/500: rel_id=4218
23:09:20.543 TTS Simplex Phase1: token 5/500: rel_id=4218
23:09:20.773 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
23:09:20.783 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
23:09:20.783 TTS Simplex Phase1: token 25/500: rel_id=3669
23:09:20.783 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
23:09:20.783 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
23:09:20.920 TTS Simplex Phase1: EOS token at step 39
23:09:20.920 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
23:09:20.920 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=47
23:09:20.927 TTS Simplex Phase2: text_eos_embed injected, n_past=48
23:09:20.934 TTS Simplex Phase2: audio_bos injected, n_past=49, starting final generation
23:09:21.063 TTS Simplex Phase2: yield 25 tokens 到 T2W
23:09:21.178 TTS Simplex Phase2: EOS at step 23 (final end)
23:09:21.178 TTS Simplex: chunk 结束,tts_token_buffer 剩余 10 tokens (保留等下一个 chunk)
23:09:21.178 TTS Simplex: is_final_text_chunk=true, flush 剩余 10 tokens 从 tts_token_buffer
23:09:21.178 TTS Simplex: generated 60 audio tokens for chunk 0
23:09:21.178 TTS Simplex: chunk 0 first tokens: [1496 1950 4137 4218 4218 ], last tokens: [1701 4218 4218 4218 4137 ]
23:09:21.178 TTS Simplex: updated tts_n_past_accumulated=72, total_generated_tokens=60
23:09:21.178 TTS: finished processing all chunks
23:09:21.178 TTS: 单工模式轮次结束,下一轮 round_idx=1
23:09:21.178 TTS: sent is_final=true to T2W queue (turn end)
23:09:23.648 🎉 首响时间 (First Audio Response): 4559ms
23:09:23.648 T2W线程: wav_0.wav | 0.84s audio | 2865.0ms inference | RTF=3.41 | t=4559ms
23:09:25.656 T2W线程: wav_1.wav | 1.00s audio | 2007.5ms inference | RTF=2.01 | t=6566ms
23:09:27.523 T2W线程: wav_2.wav | 0.68s audio | 1866.9ms inference | RTF=2.75 | t=8433ms
23:09:27.523 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
23:09:27.523 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
23:09:27.585 omni_stop_threads: stop signals sent
23:09:27.585 T2W(C++) 线程: 停止
llama_perf_context_print: load time = 15217.09 ms
llama_perf_context_print: prompt eval time = 9974.56 ms / 182 tokens ( 54.81 ms per token, 18.25 tokens per second)
llama_perf_context_print: eval time = 916.02 ms / 9 runs ( 101.78 ms per token, 9.83 tokens per second)
llama_perf_context_print: total time = 23291.89 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,466 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 25: general.quantization_version u32 = 2
llama_model_loader: - kv 26: general.file_type u32 = 15
llama_model_loader: - type f32: 145 tensors
llama_model_loader: - type q4_K: 217 tensors
llama_model_loader: - type q6_K: 37 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = Q4_K - Medium
print_info: file size = 4.68 GiB (4.90 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = qwen3
print_info: vocab_only = 0
print_info: n_ctx_train = 40960
print_info: n_embd = 4096
print_info: n_layer = 36
print_info: n_head = 32
print_info: n_head_kv = 8
print_info: n_rot = 128
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 128
print_info: n_embd_head_v = 128
print_info: n_gqa = 4
print_info: n_embd_k_gqa = 1024
print_info: n_embd_v_gqa = 1024
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 12288
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = -1
print_info: rope type = 2
print_info: rope scaling = linear
print_info: freq_base_train = 1000000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 40960
print_info: rope_finetuned = unknown
print_info: model type = 8B
print_info: model params = 8.19 B
print_info: general.name = Llm
print_info: vocab type = BPE
print_info: n_vocab = 151748
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: CPU_REPACK model buffer size = 3199.50 MiB
load_tensors: CPU_Mapped model buffer size = 4761.17 MiB
.....................................................................................
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 1000000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.58 MiB
llama_kv_cache: CPU KV buffer size = 288.00 MiB
llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 304.38 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 1
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = llama
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Tts
llama_model_loader: - kv 3: general.size_label str = 445M
llama_model_loader: - kv 4: llama.block_count u32 = 20
llama_model_loader: - kv 5: llama.context_length u32 = 4096
llama_model_loader: - kv 6: llama.embedding_length u32 = 768
llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072
llama_model_loader: - kv 8: llama.attention.head_count u32 = 12
llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12
llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000
llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: llama.attention.key_length u32 = 64
llama_model_loader: - kv 13: llama.attention.value_length u32 = 64
llama_model_loader: - kv 14: general.file_type u32 = 1
llama_model_loader: - kv 15: llama.vocab_size u32 = 158626
llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64
llama_model_loader: - kv 17: general.quantization_version u32 = 2
llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false
llama_model_loader: - type f32: 50 tensors
llama_model_loader: - type f16: 143 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = F16
print_info: file size = 1.07 GiB (20.70 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = llama
print_info: vocab_only = 0
print_info: n_ctx_train = 4096
print_info: n_embd = 768
print_info: n_layer = 20
print_info: n_head = 12
print_info: n_head_kv = 12
print_info: n_rot = 64
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 64
print_info: n_embd_head_v = 64
print_info: n_gqa = 1
print_info: n_embd_k_gqa = 768
print_info: n_embd_v_gqa = 768
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 3072
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = 0
print_info: rope type = 0
print_info: rope scaling = linear
print_info: freq_base_train = 10000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 4096
print_info: rope_finetuned = unknown
print_info: model type = ?B
print_info: model params = 444.94 M
print_info: general.name = Tts
print_info: vocab type = BPE
print_info: n_vocab = 158626
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: CPU_Mapped model buffer size = 592.48 MiB
..............................................................
llama_init_from_model: model default pooling_type is [0], but [-1] was specified
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 10000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.61 MiB
llama_kv_cache: CPU KV buffer size = 120.00 MiB
llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 25.51 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 1
vision_model_loader: model name:
vision_model_loader: description: image encoder for MiniCPM-V
vision_model_loader: GGUF version: 3
vision_model_loader: alignment: 32
vision_model_loader: n_tensors: 455
vision_model_loader: n_kv: 20
vision_ctx: vision using CPU backend
load_hparams: model_type: 0
load_hparams: n_embd: 1152
load_hparams: n_head: 16
load_hparams: n_ff: 4304
load_hparams: n_layer: 27
load_hparams: ffn_op: gelu
load_hparams: projection_dim: 0
--- vision hparams ---
load_hparams: image_size: 448
load_hparams: patch_size: 14
load_hparams: minicpmv_version: 100045
load_hparams: proj_scale_factor: 0
load_hparams: n_wa_pattern: 0
load_hparams: model size: 1044.36 MiB
load_hparams: metadata size: 0.16 MiB
load_tensors: ffn up/down are swapped
alloc_compute_meta: CPU compute buffer size = 100.30 MiB
init tts....init t2w....voc_hg2_model: CPU backend using 8 threads
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000
audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 20]
audition_audio_batch_encode: Final output: 20 tokens x 4096 dims
=== Model Paths ===
Base dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf
LLM: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK]
===================
=== Initializing Omni Context ===
Media type: 2 (omni: audio+vision)
TTS enabled: yes
Context size: 2048
GPU layers: 0
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts
Ref audio: /mnt/c/Users/zhout/w2/minicpmo_cpp_cpu_v3/fixture_0000.wav
23:09:28.180 === omni_init start
23:09:28.180 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
23:09:28.180 === omni_init: loading new LLM model
23:09:29.927 === omni_init: loading TTS model
23:09:29.927 TTS model: loading with n_gpu_layers=0
23:09:30.096 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
23:09:30.096 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
23:09:30.655 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
23:09:30.664 TTS: head_code loaded, verifying first few values:
23:09:30.664 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
23:09:30.664 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
23:09:30.664 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
23:09:30.736 TTS: weights loaded successfully
23:09:30.736 Projector: loading from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
23:09:30.747 Projector: loaded successfully
23:09:30.747 === omni_init: loading APM model
23:09:30.999 APM: init from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
23:09:31.371 Token2Wav: found models in /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf
23:09:31.371 Token2Wav: all model files found, initializing session...
23:09:31.371 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
23:09:31.371 Token2Wav: using prompt_cache from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
23:09:32.375 Token2Wav: initialized successfully
23:09:32.375 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
23:09:32.375 Token2Wav: 使用 C++ 实现
23:09:32.375 === omni_init success: ctx_llama = 0x6053a3436060
=== Running test case ===
Audio prefix: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-7-jph1pif7/fixture_
Count: 2
23:09:32.375 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
23:09:32.375 system prompt ref_audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-7-jph1pif7/fixture_0000.wav
23:09:33.219 system prompt ref_audio embedding: n_pos=20
23:09:35.026 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
23:09:35.026 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
23:09:35.026 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
23:09:35.026 n_past = 72
23:09:35.026
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 2.6509 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3357.87 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3380.84 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3380.85 ms by vision ( 3380.85 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-7-jph1pif7/fixture_0001.jpg
stream_prefill: prefilled 1 vision chunks (64 tokens each)
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=49339
audition_audio_preprocess: Audio not aligned to 100ms (49339 samples = 3083.7ms), padded with silence to 49600 samples (3100ms)
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=310, n_mel=80, total_size=24800
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=310, n_mel=80, total_elements=24800
audition_audio_batch_encode: Before incrementing iter: input_frames=310, n_tokens=155, current_iter=1, current_total=155, new_total=310, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=310, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 31]
audition_audio_batch_encode: Final output: 31 tokens x 4096 dims
23:09:40.482 stream_prefill(index=1): processing user audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-7-jph1pif7/fixture_0001.wav
23:09:40.816 stream_prefill(index=1): user audio embedding: n_pos=31
23:09:41.977
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 6.95108 s
23:09:41.977 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
23:09:41.978 stream_decode: create tts thread (simplex mode)
23:09:41.978 stream_decode: create t2w thread
23:09:41.978 wait prefill done
23:09:41.978 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
23:09:41.978 T2W thread (C++) started
<user>
<assistant>23:09:41.982 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
23:09:41.982 TTS thread started
23:09:42.401 📍 [单工TTS] assistant prompt 完成, n_past=182
23:09:42.401 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
23:09:43.290 LLM: detected end token, set llm_generation_done=true
23:09:43.290 LLM->TTS: text='The square in the image is red.', n_tokens=8, hidden_size=32768, n_embd=4096, token_ids=[785 9334 304 279 2168 374 2518 13]
23:09:43.290 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
23:09:43.290 📍 轮次 1 结束,记录边界于 n_past=191
23:09:43.290 TTS<-LLM: chunk_idx=0, text='The square in the image is red.', n_tokens=8, hidden_size=32768, token_ids=[785 9334 304 279 2168 374 2518 13]
23:09:43.290 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
23:09:43.290 TTS: before empty check - response.empty=0, response='The square in the image is red.', llm_finish=1
Waiting for audio generation to complete...
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty
TTS: no valid WAV files to merge
[timing] call=0 tokens=28 final=0 token2mel=2189.934ms vocoder=284.759ms total=2474.706ms audio=20160
[timing] call=1 tokens=15 final=1 token2mel=1651.507ms vocoder=201.101ms total=1852.622ms audio=18240
Audio generation completed.
23:09:43.290 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
23:09:43.290 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
23:09:43.291 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
23:09:43.303 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
23:09:43.303 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
23:09:43.303 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
23:09:43.303 TTS Simplex: first chunk - cleared KV cache
23:09:43.303 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
23:09:43.321 TTS Simplex: prefill completed, n_past_tts=9
23:09:43.321 TTS Simplex: sampler created
23:09:43.321 TTS simplex: is_audio_bos=true (first audio token)
23:09:43.384 TTS Simplex Phase1: token 1/500: rel_id=785
23:09:43.395 TTS Simplex Phase1: token 2/500: rel_id=4137
23:09:43.407 TTS Simplex Phase1: token 3/500: rel_id=4218
23:09:43.418 TTS Simplex Phase1: token 4/500: rel_id=4218
23:09:43.430 TTS Simplex Phase1: token 5/500: rel_id=4218
23:09:43.587 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
23:09:43.658 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
23:09:43.658 TTS Simplex Phase1: token 25/500: rel_id=2208
23:09:43.658 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
23:09:43.658 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
23:09:43.710 TTS Simplex Phase1: EOS token at step 31
23:09:43.710 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
23:09:43.710 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=39
23:09:43.717 TTS Simplex Phase2: text_eos_embed injected, n_past=40
23:09:43.725 TTS Simplex Phase2: audio_bos injected, n_past=41, starting final generation
23:09:43.808 TTS Simplex Phase2: EOS at step 8 (final end)
23:09:43.808 TTS Simplex: chunk 结束,tts_token_buffer 剩余 12 tokens (保留等下一个 chunk)
23:09:43.808 TTS Simplex: is_final_text_chunk=true, flush 剩余 12 tokens 从 tts_token_buffer
23:09:43.808 TTS Simplex: generated 37 audio tokens for chunk 0
23:09:43.808 TTS Simplex: chunk 0 first tokens: [785 4137 4218 4218 4218 ], last tokens: [2125 116 134 2490 3138 ]
23:09:43.808 TTS Simplex: updated tts_n_past_accumulated=49, total_generated_tokens=37
23:09:43.808 TTS: finished processing all chunks
23:09:43.808 TTS: 单工模式轮次结束,下一轮 round_idx=1
23:09:43.808 TTS: sent is_final=true to T2W queue (turn end)
23:09:46.133 🎉 首响时间 (First Audio Response): 4155ms
23:09:46.133 T2W线程: wav_0.wav | 0.84s audio | 2474.8ms inference | RTF=2.95 | t=4155ms
23:09:47.986 T2W线程: wav_1.wav | 0.76s audio | 1852.7ms inference | RTF=2.44 | t=6008ms
23:09:47.986 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=1)
23:09:47.986 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
23:09:47.995 omni_stop_threads: stop signals sent
23:09:47.995 T2W(C++) 线程: 停止
llama_perf_context_print: load time = 14220.24 ms
llama_perf_context_print: prompt eval time = 10025.90 ms / 182 tokens ( 55.09 ms per token, 18.15 tokens per second)
llama_perf_context_print: eval time = 885.96 ms / 9 runs ( 98.44 ms per token, 10.16 tokens per second)
llama_perf_context_print: total time = 19814.25 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,469 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 25: general.quantization_version u32 = 2
llama_model_loader: - kv 26: general.file_type u32 = 15
llama_model_loader: - type f32: 145 tensors
llama_model_loader: - type q4_K: 217 tensors
llama_model_loader: - type q6_K: 37 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = Q4_K - Medium
print_info: file size = 4.68 GiB (4.90 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = qwen3
print_info: vocab_only = 0
print_info: n_ctx_train = 40960
print_info: n_embd = 4096
print_info: n_layer = 36
print_info: n_head = 32
print_info: n_head_kv = 8
print_info: n_rot = 128
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 128
print_info: n_embd_head_v = 128
print_info: n_gqa = 4
print_info: n_embd_k_gqa = 1024
print_info: n_embd_v_gqa = 1024
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 12288
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = -1
print_info: rope type = 2
print_info: rope scaling = linear
print_info: freq_base_train = 1000000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 40960
print_info: rope_finetuned = unknown
print_info: model type = 8B
print_info: model params = 8.19 B
print_info: general.name = Llm
print_info: vocab type = BPE
print_info: n_vocab = 151748
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: CPU_REPACK model buffer size = 3199.50 MiB
load_tensors: CPU_Mapped model buffer size = 4761.17 MiB
.....................................................................................
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 1000000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.58 MiB
llama_kv_cache: CPU KV buffer size = 288.00 MiB
llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 304.38 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 1
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = llama
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Tts
llama_model_loader: - kv 3: general.size_label str = 445M
llama_model_loader: - kv 4: llama.block_count u32 = 20
llama_model_loader: - kv 5: llama.context_length u32 = 4096
llama_model_loader: - kv 6: llama.embedding_length u32 = 768
llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072
llama_model_loader: - kv 8: llama.attention.head_count u32 = 12
llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12
llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000
llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: llama.attention.key_length u32 = 64
llama_model_loader: - kv 13: llama.attention.value_length u32 = 64
llama_model_loader: - kv 14: general.file_type u32 = 1
llama_model_loader: - kv 15: llama.vocab_size u32 = 158626
llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64
llama_model_loader: - kv 17: general.quantization_version u32 = 2
llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false
llama_model_loader: - type f32: 50 tensors
llama_model_loader: - type f16: 143 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = F16
print_info: file size = 1.07 GiB (20.70 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = llama
print_info: vocab_only = 0
print_info: n_ctx_train = 4096
print_info: n_embd = 768
print_info: n_layer = 20
print_info: n_head = 12
print_info: n_head_kv = 12
print_info: n_rot = 64
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 64
print_info: n_embd_head_v = 64
print_info: n_gqa = 1
print_info: n_embd_k_gqa = 768
print_info: n_embd_v_gqa = 768
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 3072
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = 0
print_info: rope type = 0
print_info: rope scaling = linear
print_info: freq_base_train = 10000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 4096
print_info: rope_finetuned = unknown
print_info: model type = ?B
print_info: model params = 444.94 M
print_info: general.name = Tts
print_info: vocab type = BPE
print_info: n_vocab = 158626
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: CPU_Mapped model buffer size = 592.48 MiB
..............................................................
llama_init_from_model: model default pooling_type is [0], but [-1] was specified
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 10000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.61 MiB
llama_kv_cache: CPU KV buffer size = 120.00 MiB
llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 25.51 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 1
vision_model_loader: model name:
vision_model_loader: description: image encoder for MiniCPM-V
vision_model_loader: GGUF version: 3
vision_model_loader: alignment: 32
vision_model_loader: n_tensors: 455
vision_model_loader: n_kv: 20
vision_ctx: vision using CPU backend
load_hparams: model_type: 0
load_hparams: n_embd: 1152
load_hparams: n_head: 16
load_hparams: n_ff: 4304
load_hparams: n_layer: 27
load_hparams: ffn_op: gelu
load_hparams: projection_dim: 0
--- vision hparams ---
load_hparams: image_size: 448
load_hparams: patch_size: 14
load_hparams: minicpmv_version: 100045
load_hparams: proj_scale_factor: 0
load_hparams: n_wa_pattern: 0
load_hparams: model size: 1044.36 MiB
load_hparams: metadata size: 0.16 MiB
load_tensors: ffn up/down are swapped
alloc_compute_meta: CPU compute buffer size = 100.30 MiB
init tts....init t2w....voc_hg2_model: CPU backend using 8 threads
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000
audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 20]
audition_audio_batch_encode: Final output: 20 tokens x 4096 dims
=== Model Paths ===
Base dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf
LLM: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK]
===================
=== Initializing Omni Context ===
Media type: 2 (omni: audio+vision)
TTS enabled: yes
Context size: 2048
GPU layers: 0
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts
Ref audio: /mnt/c/Users/zhout/w2/minicpmo_cpp_cpu_v3/fixture_0000.wav
23:09:48.637 === omni_init start
23:09:48.637 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
23:09:48.637 === omni_init: loading new LLM model
23:09:50.355 === omni_init: loading TTS model
23:09:50.355 TTS model: loading with n_gpu_layers=0
23:09:50.538 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
23:09:50.538 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
23:09:51.622 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
23:09:51.639 TTS: head_code loaded, verifying first few values:
23:09:51.639 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
23:09:51.639 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
23:09:51.639 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
23:09:51.713 TTS: weights loaded successfully
23:09:51.713 Projector: loading from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
23:09:51.725 Projector: loaded successfully
23:09:51.725 === omni_init: loading APM model
23:09:51.973 APM: init from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
23:09:52.404 Token2Wav: found models in /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf
23:09:52.404 Token2Wav: all model files found, initializing session...
23:09:52.404 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
23:09:52.404 Token2Wav: using prompt_cache from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
23:09:53.658 Token2Wav: initialized successfully
23:09:53.658 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
23:09:53.658 Token2Wav: 使用 C++ 实现
23:09:53.658 === omni_init success: ctx_llama = 0x5f3829138060
=== Running test case ===
Audio prefix: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-8-tnubi3t4/fixture_
Count: 2
23:09:53.658 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
23:09:53.658 system prompt ref_audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-8-tnubi3t4/fixture_0000.wav
23:09:54.414 system prompt ref_audio embedding: n_pos=20
00:09:33.984 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
00:09:33.984 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
00:09:33.984 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
00:09:33.984 n_past = 72
00:09:33.984
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3580.33 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 5378.26 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 5399.20 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 5399.20 ms by vision ( 5399.20 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-8-tnubi3t4/fixture_0001.jpg
stream_prefill: prefilled 1 vision chunks (64 tokens each)
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=49339
audition_audio_preprocess: Audio not aligned to 100ms (49339 samples = 3083.7ms), padded with silence to 49600 samples (3100ms)
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=310, n_mel=80, total_size=24800
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=310, n_mel=80, total_elements=24800
audition_audio_batch_encode: Before incrementing iter: input_frames=310, n_tokens=155, current_iter=1, current_total=155, new_total=310, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=310, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 31]
audition_audio_batch_encode: Final output: 31 tokens x 4096 dims
00:11:11.976 stream_prefill(index=1): processing user audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-8-tnubi3t4/fixture_0001.wav
00:11:12.364 stream_prefill(index=1): user audio embedding: n_pos=31
00:11:13.802
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 99.8182 s
00:11:13.803 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
00:11:13.803 stream_decode: create tts thread (simplex mode)
00:11:13.803 stream_decode: create t2w thread
00:11:13.803 wait prefill done
00:11:13.803 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
00:11:13.803 T2W thread (C++) started
<user>
<assistant>00:11:13.807 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
00:11:13.807 TTS thread started
00:11:14.414 📍 [单工TTS] assistant prompt 完成, n_past=182
00:11:14.414 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
00:11:16.095 LLM: detected end token, set llm_generation_done=true
00:11:16.095 LLM->TTS: text='The square in the image is red.', n_tokens=8, hidden_size=32768, n_embd=4096, token_ids=[785 9334 304 279 2168 374 2518 13]
00:11:16.095 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
00:11:16.095 📍 轮次 1 结束,记录边界于 n_past=191
00:11:16.095 TTS<-LLM: chunk_idx=0, text='The square in the image is red.', n_tokens=8, hidden_size=32768, token_ids=[785 9334 304 279 2168 374 2518 13]
00:11:16.095 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
00:11:16.095 TTS: before empty check - response.empty=0, response='The square in the image is red.', llm_finish=1
Waiting for audio generation to complete...
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty
TTS: no valid WAV files to merge
[timing] call=0 tokens=28 final=0 token2mel=5220.230ms vocoder=392.863ms total=5613.108ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1858.360ms vocoder=332.517ms total=2190.899ms audio=24000
[timing] call=2 tokens=12 final=1 token2mel=1777.741ms vocoder=195.763ms total=1973.515ms audio=15360
Audio generation completed.
00:11:16.095 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
00:11:16.095 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
00:11:16.095 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
00:11:16.121 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
00:11:16.121 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
00:11:16.121 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
00:11:16.121 TTS Simplex: first chunk - cleared KV cache
00:11:16.121 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
00:11:16.148 TTS Simplex: prefill completed, n_past_tts=9
00:11:16.148 TTS Simplex: sampler created
00:11:16.148 TTS simplex: is_audio_bos=true (first audio token)
00:11:16.194 TTS Simplex Phase1: token 1/500: rel_id=1568
00:11:16.208 TTS Simplex Phase1: token 2/500: rel_id=4299
00:11:16.224 TTS Simplex Phase1: token 3/500: rel_id=4299
00:11:16.239 TTS Simplex Phase1: token 4/500: rel_id=4299
00:11:16.254 TTS Simplex Phase1: token 5/500: rel_id=4299
00:11:16.568 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
00:11:16.631 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
00:11:16.631 TTS Simplex Phase1: token 25/500: rel_id=69
00:11:16.631 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
00:11:16.631 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
00:11:17.001 TTS Simplex Phase1: EOS token at step 47
00:11:17.001 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
00:11:17.001 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=55
00:11:17.012 TTS Simplex Phase2: text_eos_embed injected, n_past=56
00:11:17.022 TTS Simplex Phase2: audio_bos injected, n_past=57, starting final generation
00:11:17.090 TTS Simplex Phase2: yield 25 tokens 到 T2W
00:11:17.219 TTS Simplex Phase2: EOS at step 14 (final end)
00:11:17.220 TTS Simplex: chunk 结束,tts_token_buffer 剩余 9 tokens (保留等下一个 chunk)
00:11:17.220 TTS Simplex: is_final_text_chunk=true, flush 剩余 9 tokens 从 tts_token_buffer
00:11:17.220 TTS Simplex: generated 59 audio tokens for chunk 0
00:11:17.220 TTS Simplex: chunk 0 first tokens: [1568 4299 4299 4299 4299 ], last tokens: [3975 4299 4299 4299 6162 ]
00:11:17.220 TTS Simplex: updated tts_n_past_accumulated=71, total_generated_tokens=59
00:11:17.220 TTS: finished processing all chunks
00:11:17.220 TTS: 单工模式轮次结束,下一轮 round_idx=1
00:11:17.220 TTS: sent is_final=true to T2W queue (turn end)
00:11:22.245 🎉 首响时间 (First Audio Response): 8442ms
00:11:22.245 T2W线程: wav_0.wav | 0.84s audio | 5613.2ms inference | RTF=6.68 | t=8442ms
00:11:24.436 T2W线程: wav_1.wav | 1.00s audio | 2190.9ms inference | RTF=2.19 | t=10633ms
00:11:26.410 T2W线程: wav_2.wav | 0.64s audio | 1973.6ms inference | RTF=3.08 | t=12607ms
00:11:26.410 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
00:11:26.410 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
00:11:26.485 omni_stop_threads: stop signals sent
00:11:26.485 T2W(C++) 线程: 停止
llama_perf_context_print: load time = 18217.98 ms
llama_perf_context_print: prompt eval time = 13197.33 ms / 182 tokens ( 72.51 ms per token, 13.79 tokens per second)
llama_perf_context_print: eval time = 1676.20 ms / 9 runs ( 186.25 ms per token, 5.37 tokens per second)
llama_perf_context_print: total time = 30289.54 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,469 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 25: general.quantization_version u32 = 2
llama_model_loader: - kv 26: general.file_type u32 = 15
llama_model_loader: - type f32: 145 tensors
llama_model_loader: - type q4_K: 217 tensors
llama_model_loader: - type q6_K: 37 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = Q4_K - Medium
print_info: file size = 4.68 GiB (4.90 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = qwen3
print_info: vocab_only = 0
print_info: n_ctx_train = 40960
print_info: n_embd = 4096
print_info: n_layer = 36
print_info: n_head = 32
print_info: n_head_kv = 8
print_info: n_rot = 128
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 128
print_info: n_embd_head_v = 128
print_info: n_gqa = 4
print_info: n_embd_k_gqa = 1024
print_info: n_embd_v_gqa = 1024
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 12288
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = -1
print_info: rope type = 2
print_info: rope scaling = linear
print_info: freq_base_train = 1000000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 40960
print_info: rope_finetuned = unknown
print_info: model type = 8B
print_info: model params = 8.19 B
print_info: general.name = Llm
print_info: vocab type = BPE
print_info: n_vocab = 151748
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: CPU_REPACK model buffer size = 3199.50 MiB
load_tensors: CPU_Mapped model buffer size = 4761.17 MiB
.....................................................................................
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 1000000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.58 MiB
llama_kv_cache: CPU KV buffer size = 288.00 MiB
llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 304.38 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 1
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = llama
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Tts
llama_model_loader: - kv 3: general.size_label str = 445M
llama_model_loader: - kv 4: llama.block_count u32 = 20
llama_model_loader: - kv 5: llama.context_length u32 = 4096
llama_model_loader: - kv 6: llama.embedding_length u32 = 768
llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072
llama_model_loader: - kv 8: llama.attention.head_count u32 = 12
llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12
llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000
llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: llama.attention.key_length u32 = 64
llama_model_loader: - kv 13: llama.attention.value_length u32 = 64
llama_model_loader: - kv 14: general.file_type u32 = 1
llama_model_loader: - kv 15: llama.vocab_size u32 = 158626
llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64
llama_model_loader: - kv 17: general.quantization_version u32 = 2
llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false
llama_model_loader: - type f32: 50 tensors
llama_model_loader: - type f16: 143 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = F16
print_info: file size = 1.07 GiB (20.70 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = llama
print_info: vocab_only = 0
print_info: n_ctx_train = 4096
print_info: n_embd = 768
print_info: n_layer = 20
print_info: n_head = 12
print_info: n_head_kv = 12
print_info: n_rot = 64
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 64
print_info: n_embd_head_v = 64
print_info: n_gqa = 1
print_info: n_embd_k_gqa = 768
print_info: n_embd_v_gqa = 768
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 3072
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = 0
print_info: rope type = 0
print_info: rope scaling = linear
print_info: freq_base_train = 10000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 4096
print_info: rope_finetuned = unknown
print_info: model type = ?B
print_info: model params = 444.94 M
print_info: general.name = Tts
print_info: vocab type = BPE
print_info: n_vocab = 158626
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: CPU_Mapped model buffer size = 592.48 MiB
..............................................................
llama_init_from_model: model default pooling_type is [0], but [-1] was specified
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 10000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.61 MiB
llama_kv_cache: CPU KV buffer size = 120.00 MiB
llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 25.51 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 1
vision_model_loader: model name:
vision_model_loader: description: image encoder for MiniCPM-V
vision_model_loader: GGUF version: 3
vision_model_loader: alignment: 32
vision_model_loader: n_tensors: 455
vision_model_loader: n_kv: 20
vision_ctx: vision using CPU backend
load_hparams: model_type: 0
load_hparams: n_embd: 1152
load_hparams: n_head: 16
load_hparams: n_ff: 4304
load_hparams: n_layer: 27
load_hparams: ffn_op: gelu
load_hparams: projection_dim: 0
--- vision hparams ---
load_hparams: image_size: 448
load_hparams: patch_size: 14
load_hparams: minicpmv_version: 100045
load_hparams: proj_scale_factor: 0
load_hparams: n_wa_pattern: 0
load_hparams: model size: 1044.36 MiB
load_hparams: metadata size: 0.16 MiB
load_tensors: ffn up/down are swapped
alloc_compute_meta: CPU compute buffer size = 100.30 MiB
init tts....init t2w....voc_hg2_model: CPU backend using 8 threads
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000
audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 20]
audition_audio_batch_encode: Final output: 20 tokens x 4096 dims
=== Model Paths ===
Base dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf
LLM: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK]
===================
=== Initializing Omni Context ===
Media type: 2 (omni: audio+vision)
TTS enabled: yes
Context size: 2048
GPU layers: 0
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts
Ref audio: /mnt/c/Users/zhout/w2/minicpmo_cpp_cpu_v3/fixture_0000.wav
00:11:27.066 === omni_init start
00:11:27.066 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
00:11:27.066 === omni_init: loading new LLM model
00:11:29.136 === omni_init: loading TTS model
00:11:29.136 TTS model: loading with n_gpu_layers=0
00:11:29.393 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
00:11:29.393 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
00:11:30.393 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
00:11:30.402 TTS: head_code loaded, verifying first few values:
00:11:30.402 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
00:11:30.402 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
00:11:30.402 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
00:11:30.475 TTS: weights loaded successfully
00:11:30.475 Projector: loading from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
00:11:30.486 Projector: loaded successfully
00:11:30.486 === omni_init: loading APM model
00:11:30.739 APM: init from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
00:11:31.132 Token2Wav: found models in /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf
00:11:31.132 Token2Wav: all model files found, initializing session...
00:11:31.132 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
00:11:31.132 Token2Wav: using prompt_cache from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
00:11:32.431 Token2Wav: initialized successfully
00:11:32.431 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
00:11:32.431 Token2Wav: 使用 C++ 实现
00:11:32.431 === omni_init success: ctx_llama = 0x64f3335b7060
=== Running test case ===
Audio prefix: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-9-rdxbt1uw/fixture_
Count: 2
00:11:32.431 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
00:11:32.431 system prompt ref_audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-9-rdxbt1uw/fixture_0000.wav
00:11:33.220 system prompt ref_audio embedding: n_pos=20
00:11:34.834 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
00:11:34.835 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
00:11:34.835 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
00:11:34.835 n_past = 72
00:11:34.835
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 2.40309 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3112.56 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3133.29 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3133.29 ms by vision ( 3133.29 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-9-rdxbt1uw/fixture_0001.jpg
stream_prefill: prefilled 1 vision chunks (64 tokens each)
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=49339
audition_audio_preprocess: Audio not aligned to 100ms (49339 samples = 3083.7ms), padded with silence to 49600 samples (3100ms)
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=310, n_mel=80, total_size=24800
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=310, n_mel=80, total_elements=24800
audition_audio_batch_encode: Before incrementing iter: input_frames=310, n_tokens=155, current_iter=1, current_total=155, new_total=310, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=310, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 31]
audition_audio_batch_encode: Final output: 31 tokens x 4096 dims
00:11:39.872 stream_prefill(index=1): processing user audio: /tmp/minicpmo_omni_wsl_profile_work/omni-minicpmo-9-rdxbt1uw/fixture_0001.wav
00:11:40.205 stream_prefill(index=1): user audio embedding: n_pos=31
00:11:41.561
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 6.72681 s
00:11:41.561 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
00:11:41.562 stream_decode: create tts thread (simplex mode)
00:11:41.562 stream_decode: create t2w thread
00:11:41.562 wait prefill done
00:11:41.562 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
00:11:41.562 T2W thread (C++) started
<user>
<assistant>00:11:41.566 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
00:11:41.566 TTS thread started
00:11:42.048 📍 [单工TTS] assistant prompt 完成, n_past=182
00:11:42.048 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
00:11:43.150 LLM: detected end token, set llm_generation_done=true
00:11:43.150 LLM->TTS: text='The square in the image is red.', n_tokens=8, hidden_size=32768, n_embd=4096, token_ids=[785 9334 304 279 2168 374 2518 13]
00:11:43.150 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
00:11:43.150 📍 轮次 1 结束,记录边界于 n_past=191
00:11:43.151 TTS<-LLM: chunk_idx=0, text='The square in the image is red.', n_tokens=8, hidden_size=32768, token_ids=[785 9334 304 279 2168 374 2518 13]
00:11:43.151 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
00:11:43.151 TTS: before empty check - response.empty=0, response='The square in the image is red.', llm_finish=1
Waiting for audio generation to complete...
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty
TTS: no valid WAV files to merge
[timing] call=0 tokens=28 final=0 token2mel=3542.727ms vocoder=322.704ms total=3865.443ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1690.666ms vocoder=316.051ms total=2006.735ms audio=24000
[timing] call=2 tokens=12 final=1 token2mel=1634.169ms vocoder=174.114ms total=1808.292ms audio=15360
Audio generation completed.
00:11:43.151 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
00:11:43.151 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
00:11:43.152 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
00:11:43.162 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
00:11:43.162 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
00:11:43.162 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
00:11:43.162 TTS Simplex: first chunk - cleared KV cache
00:11:43.162 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
00:11:43.182 TTS Simplex: prefill completed, n_past_tts=9
00:11:43.182 TTS Simplex: sampler created
00:11:43.182 TTS simplex: is_audio_bos=true (first audio token)
00:11:43.220 TTS Simplex Phase1: token 1/500: rel_id=1579
00:11:43.234 TTS Simplex Phase1: token 2/500: rel_id=1959
00:11:43.249 TTS Simplex Phase1: token 3/500: rel_id=1707
00:11:43.262 TTS Simplex Phase1: token 4/500: rel_id=2031
00:11:43.275 TTS Simplex Phase1: token 5/500: rel_id=2031
00:11:43.509 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
00:11:43.553 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
00:11:43.553 TTS Simplex Phase1: token 25/500: rel_id=72
00:11:43.553 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
00:11:43.553 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
00:11:43.740 TTS Simplex Phase1: EOS token at step 42
00:11:43.740 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
00:11:43.740 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=50
00:11:43.748 TTS Simplex Phase2: text_eos_embed injected, n_past=51
00:11:43.759 TTS Simplex Phase2: audio_bos injected, n_past=52, starting final generation
00:11:43.860 TTS Simplex Phase2: yield 25 tokens 到 T2W
00:11:43.977 TTS Simplex Phase2: EOS at step 19 (final end)
00:11:43.977 TTS Simplex: chunk 结束,tts_token_buffer 剩余 9 tokens (保留等下一个 chunk)
00:11:43.977 TTS Simplex: is_final_text_chunk=true, flush 剩余 9 tokens 从 tts_token_buffer
00:11:43.977 TTS Simplex: generated 59 audio tokens for chunk 0
00:11:43.977 TTS Simplex: chunk 0 first tokens: [1579 1959 1707 2031 2031 ], last tokens: [732 2031 4218 4218 4137 ]
00:11:43.977 TTS Simplex: updated tts_n_past_accumulated=71, total_generated_tokens=59
00:11:43.977 TTS: finished processing all chunks
00:11:43.977 TTS: 单工模式轮次结束,下一轮 round_idx=1
00:11:43.977 TTS: sent is_final=true to T2W queue (turn end)
00:11:47.419 🎉 首响时间 (First Audio Response): 5857ms
00:11:47.419 T2W线程: wav_0.wav | 0.84s audio | 3865.5ms inference | RTF=4.60 | t=5857ms
00:11:49.426 T2W线程: wav_1.wav | 1.00s audio | 2006.8ms inference | RTF=2.01 | t=7864ms
00:11:51.234 T2W线程: wav_2.wav | 0.64s audio | 1808.3ms inference | RTF=2.83 | t=9672ms
00:11:51.235 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
00:11:51.235 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
00:11:5100:11:51..322322 T2W(C++) 线程: 停止
llama_perf_context_print: load time = 14982.67 ms
llama_perf_context_print: prompt eval time = 9617.48 ms / 182 tokens ( 52.84 ms per token, 18.92 tokens per second)
llama_perf_context_print: eval time = 1097.54 ms / 9 runs ( 121.95 ms per token, 8.20 tokens per second)
llama_perf_context_print: total time = 24256.67 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
omni_stop_threads: stop signals sent
tts thread end
t2w thread end
@@ -0,0 +1,153 @@
{
"scope": "MiniCPM-o GGUF complete audio+image\u2192text+speech through Omni StageRuntime/StagePool",
"placement": "cpu",
"model_revision": "db25077c33951fe163b42986fba0132e279872a2",
"artifact_sha256": {
"MiniCPM-o-4_5-Q4_K_M.gguf": "1237a97ee081b8abebc47aa7dad565701e8f5f904cdc92f6723ac4281bbc0932",
"audio/MiniCPM-o-4_5-audio-F16.gguf": "d5b188ac7feaf98e17175c3f9bd14bf269301bfd187439fdaa3e3a494fc32ef7",
"vision/MiniCPM-o-4_5-vision-F16.gguf": "1453678cc4e4fe18de241952962e234f265cb8dda780773526103ab8ba82f421",
"tts/MiniCPM-o-4_5-tts-F16.gguf": "c7be3748a863dd6966ae7eed42600b7f41ca67affb03729ff245247f0e5ea088",
"tts/MiniCPM-o-4_5-projector-F16.gguf": "4b1b5b377358a5e594a304ff6ea5d52df606a9ba7d886c4299d232f0c67dd1fd",
"token2wav-gguf/encoder.gguf": "7f8d265da594eaf5e1de2db8f5f1867dbcb0bb75ef5878fadf2952347116f4d0",
"token2wav-gguf/flow_matching.gguf": "eda6069f3edeb5dd3a87fbf2aedb2ddd1b46f3273926c4fcf09b24476a39cab8",
"token2wav-gguf/flow_extra.gguf": "c67611aa7d02500fe395a7798bf0bfdfb55c74d37ba93934ca74d82b4e63f78d",
"token2wav-gguf/hifigan2.gguf": "1b8b3bf5d8d3066aeee4324fdcdd41aefce170d0ee907645858de408d82835c2",
"token2wav-gguf/prompt_cache.gguf": "81fe6f541ebe0b67db06a1e395df928da47991dc9637c2cf47d6c59d5b979f2c"
},
"cli_sha256": "5c41298e2a234f76f10342e8b3b3aee7c93f77ea246c121f259ea89c682a6e42",
"reference_sha256": "cf4bb5cd9acbfbf67596d4a53310652b61ef4b7ede1d54eb03ef4882ca40223a",
"input_sha256": {
"audio_wav": "14ee147cbf2ce9afd9e32c8c8228d7cfe11985cd7e63456b2ad33871492aefcc",
"image_jpeg": "22c7ccea466a3f551c512045e6316c7597408d4e0a20205502f55784d977aa8d"
},
"memory_budget": {
"capacities": {
"host_ram": 32212254720
},
"demands": {
"host_ram": 25769803776
}
},
"profile_count": 1,
"warmup_count": 0,
"startup_s": 8.223868511035107,
"execution_plan_at_start": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "d3c2ac96ca6044aca82c16a2d2729d60",
"model_revision": "db25077c33951fe163b42986fba0132e279872a2",
"artifact_sha256": {
"MiniCPM-o-4_5-Q4_K_M.gguf": "1237a97ee081b8abebc47aa7dad565701e8f5f904cdc92f6723ac4281bbc0932",
"audio/MiniCPM-o-4_5-audio-F16.gguf": "d5b188ac7feaf98e17175c3f9bd14bf269301bfd187439fdaa3e3a494fc32ef7",
"vision/MiniCPM-o-4_5-vision-F16.gguf": "1453678cc4e4fe18de241952962e234f265cb8dda780773526103ab8ba82f421",
"tts/MiniCPM-o-4_5-tts-F16.gguf": "c7be3748a863dd6966ae7eed42600b7f41ca67affb03729ff245247f0e5ea088",
"tts/MiniCPM-o-4_5-projector-F16.gguf": "4b1b5b377358a5e594a304ff6ea5d52df606a9ba7d886c4299d232f0c67dd1fd",
"token2wav-gguf/encoder.gguf": "7f8d265da594eaf5e1de2db8f5f1867dbcb0bb75ef5878fadf2952347116f4d0",
"token2wav-gguf/flow_matching.gguf": "eda6069f3edeb5dd3a87fbf2aedb2ddd1b46f3273926c4fcf09b24476a39cab8",
"token2wav-gguf/flow_extra.gguf": "c67611aa7d02500fe395a7798bf0bfdfb55c74d37ba93934ca74d82b4e63f78d",
"token2wav-gguf/hifigan2.gguf": "1b8b3bf5d8d3066aeee4324fdcdd41aefce170d0ee907645858de408d82835c2",
"token2wav-gguf/prompt_cache.gguf": "81fe6f541ebe0b67db06a1e395df928da47991dc9637c2cf47d6c59d5b979f2c"
},
"cli_sha256": "5c41298e2a234f76f10342e8b3b3aee7c93f77ea246c121f259ea89c682a6e42",
"requested_placement": "cpu",
"ggml_vk_visible_devices": null,
"shared_ram_reservation": {
"host_ram": 25769803776
},
"weights_bytes": 8872297088,
"memory_overhead_bytes": 12884901888,
"context_tokens": 2048,
"max_new_tokens": 96,
"request_capacity": 1,
"stateful_session": "C++-owned within one request; discarded after completion",
"placement_evidence": "pending first request"
},
"complete_request": {
"text": "The square in the image is red.",
"wall_s": 25.769782793009654,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 60480,
"duration_s": 2.52,
"pcm_sha256": "e36c6f1b6c6199514fc6d2111e4521ab3d090957f614eec9f9aabc7c0c73b4e0"
},
"stage_event": {
"request_id": "minicpmo-1",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "d3c2ac96ca6044aca82c16a2d2729d60",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 25.747626426978968,
"peak_sampled_rss_bytes": 13699469312,
"worker_log": "/tmp/minicpmo_omni_wsl_logs/minicpmo-1-c9bc3c5416e24a758c3327c06e9630b4.log"
}
},
"output_wav": "benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_wsl_cpu/output.wav",
"execution_plan_after_request": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "d3c2ac96ca6044aca82c16a2d2729d60",
"model_revision": "db25077c33951fe163b42986fba0132e279872a2",
"artifact_sha256": {
"MiniCPM-o-4_5-Q4_K_M.gguf": "1237a97ee081b8abebc47aa7dad565701e8f5f904cdc92f6723ac4281bbc0932",
"audio/MiniCPM-o-4_5-audio-F16.gguf": "d5b188ac7feaf98e17175c3f9bd14bf269301bfd187439fdaa3e3a494fc32ef7",
"vision/MiniCPM-o-4_5-vision-F16.gguf": "1453678cc4e4fe18de241952962e234f265cb8dda780773526103ab8ba82f421",
"tts/MiniCPM-o-4_5-tts-F16.gguf": "c7be3748a863dd6966ae7eed42600b7f41ca67affb03729ff245247f0e5ea088",
"tts/MiniCPM-o-4_5-projector-F16.gguf": "4b1b5b377358a5e594a304ff6ea5d52df606a9ba7d886c4299d232f0c67dd1fd",
"token2wav-gguf/encoder.gguf": "7f8d265da594eaf5e1de2db8f5f1867dbcb0bb75ef5878fadf2952347116f4d0",
"token2wav-gguf/flow_matching.gguf": "eda6069f3edeb5dd3a87fbf2aedb2ddd1b46f3273926c4fcf09b24476a39cab8",
"token2wav-gguf/flow_extra.gguf": "c67611aa7d02500fe395a7798bf0bfdfb55c74d37ba93934ca74d82b4e63f78d",
"token2wav-gguf/hifigan2.gguf": "1b8b3bf5d8d3066aeee4324fdcdd41aefce170d0ee907645858de408d82835c2",
"token2wav-gguf/prompt_cache.gguf": "81fe6f541ebe0b67db06a1e395df928da47991dc9637c2cf47d6c59d5b979f2c"
},
"cli_sha256": "5c41298e2a234f76f10342e8b3b3aee7c93f77ea246c121f259ea89c682a6e42",
"requested_placement": "cpu",
"ggml_vk_visible_devices": null,
"shared_ram_reservation": {
"host_ram": 25769803776
},
"weights_bytes": 8872297088,
"memory_overhead_bytes": 12884901888,
"context_tokens": 2048,
"max_new_tokens": 96,
"request_capacity": 1,
"stateful_session": "C++-owned within one request; discarded after completion",
"placement_evidence": {
"observed": "cpu",
"worker_pid": 3632560,
"peak_sampled_rss_bytes": 13699469312,
"worker_log": "/tmp/minicpmo_omni_wsl_logs/minicpmo-1-c9bc3c5416e24a758c3327c06e9630b4.log"
}
},
"abort_check": {
"stale_output": false,
"ledger": {
"capacities": {
"host_ram": 32212254720
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
},
"status": "passed",
"ledger_after_shutdown": {
"capacities": {
"host_ram": 32212254720
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
}
@@ -0,0 +1,469 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 25: general.quantization_version u32 = 2
llama_model_loader: - kv 26: general.file_type u32 = 15
llama_model_loader: - type f32: 145 tensors
llama_model_loader: - type q4_K: 217 tensors
llama_model_loader: - type q6_K: 37 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = Q4_K - Medium
print_info: file size = 4.68 GiB (4.90 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = qwen3
print_info: vocab_only = 0
print_info: n_ctx_train = 40960
print_info: n_embd = 4096
print_info: n_layer = 36
print_info: n_head = 32
print_info: n_head_kv = 8
print_info: n_rot = 128
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 128
print_info: n_embd_head_v = 128
print_info: n_gqa = 4
print_info: n_embd_k_gqa = 1024
print_info: n_embd_v_gqa = 1024
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 12288
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = -1
print_info: rope type = 2
print_info: rope scaling = linear
print_info: freq_base_train = 1000000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 40960
print_info: rope_finetuned = unknown
print_info: model type = 8B
print_info: model params = 8.19 B
print_info: general.name = Llm
print_info: vocab type = BPE
print_info: n_vocab = 151748
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: CPU_REPACK model buffer size = 3199.50 MiB
load_tensors: CPU_Mapped model buffer size = 4761.17 MiB
.....................................................................................
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 1000000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.58 MiB
llama_kv_cache: CPU KV buffer size = 288.00 MiB
llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 304.38 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 1
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = llama
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Tts
llama_model_loader: - kv 3: general.size_label str = 445M
llama_model_loader: - kv 4: llama.block_count u32 = 20
llama_model_loader: - kv 5: llama.context_length u32 = 4096
llama_model_loader: - kv 6: llama.embedding_length u32 = 768
llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072
llama_model_loader: - kv 8: llama.attention.head_count u32 = 12
llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12
llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000
llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: llama.attention.key_length u32 = 64
llama_model_loader: - kv 13: llama.attention.value_length u32 = 64
llama_model_loader: - kv 14: general.file_type u32 = 1
llama_model_loader: - kv 15: llama.vocab_size u32 = 158626
llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64
llama_model_loader: - kv 17: general.quantization_version u32 = 2
llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644
llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645
llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244
llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643
llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false
llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>...
llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false
llama_model_loader: - type f32: 50 tensors
llama_model_loader: - type f16: 143 tensors
print_info: file format = GGUF V3 (latest)
print_info: file type = F16
print_info: file size = 1.07 GiB (20.70 BPW)
load: printing all EOG tokens:
load: - 151643 ('<|endoftext|>')
load: - 151645 ('<|im_end|>')
load: - 151662 ('<|fim_pad|>')
load: - 151663 ('<|repo_name|>')
load: - 151664 ('<|file_sep|>')
load: special tokens cache size = 106
load: token to piece cache size = 0.9319 MB
print_info: arch = llama
print_info: vocab_only = 0
print_info: n_ctx_train = 4096
print_info: n_embd = 768
print_info: n_layer = 20
print_info: n_head = 12
print_info: n_head_kv = 12
print_info: n_rot = 64
print_info: n_swa = 0
print_info: is_swa_any = 0
print_info: n_embd_head_k = 64
print_info: n_embd_head_v = 64
print_info: n_gqa = 1
print_info: n_embd_k_gqa = 768
print_info: n_embd_v_gqa = 768
print_info: f_norm_eps = 0.0e+00
print_info: f_norm_rms_eps = 1.0e-06
print_info: f_clamp_kqv = 0.0e+00
print_info: f_max_alibi_bias = 0.0e+00
print_info: f_logit_scale = 0.0e+00
print_info: f_attn_scale = 0.0e+00
print_info: n_ff = 3072
print_info: n_expert = 0
print_info: n_expert_used = 0
print_info: causal attn = 1
print_info: pooling type = 0
print_info: rope type = 0
print_info: rope scaling = linear
print_info: freq_base_train = 10000.0
print_info: freq_scale_train = 1
print_info: n_ctx_orig_yarn = 4096
print_info: rope_finetuned = unknown
print_info: model type = ?B
print_info: model params = 444.94 M
print_info: general.name = Tts
print_info: vocab type = BPE
print_info: n_vocab = 158626
print_info: n_merges = 151387
print_info: BOS token = 151644 '<|im_start|>'
print_info: EOS token = 151645 '<|im_end|>'
print_info: EOT token = 151645 '<|im_end|>'
print_info: UNK token = 128244 '<unk>'
print_info: PAD token = 151643 '<|endoftext|>'
print_info: LF token = 198 'Ċ'
print_info: FIM PRE token = 151659 '<|fim_prefix|>'
print_info: FIM SUF token = 151661 '<|fim_suffix|>'
print_info: FIM MID token = 151660 '<|fim_middle|>'
print_info: FIM PAD token = 151662 '<|fim_pad|>'
print_info: FIM REP token = 151663 '<|repo_name|>'
print_info: FIM SEP token = 151664 '<|file_sep|>'
print_info: EOG token = 151643 '<|endoftext|>'
print_info: EOG token = 151645 '<|im_end|>'
print_info: EOG token = 151662 '<|fim_pad|>'
print_info: EOG token = 151663 '<|repo_name|>'
print_info: EOG token = 151664 '<|file_sep|>'
print_info: max token length = 256
load_tensors: loading model tensors, this can take a while... (mmap = true)
load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately
load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately
load_tensors: CPU_Mapped model buffer size = 592.48 MiB
..............................................................
llama_init_from_model: model default pooling_type is [0], but [-1] was specified
llama_context: constructing llama_context
llama_context: n_seq_max = 1
llama_context: n_ctx = 2048
llama_context: n_ctx_per_seq = 2048
llama_context: n_batch = 2048
llama_context: n_ubatch = 512
llama_context: causal_attn = 1
llama_context: flash_attn = auto
llama_context: kv_unified = false
llama_context: freq_base = 10000.0
llama_context: freq_scale = 1
llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized
llama_context: CPU output buffer size = 0.61 MiB
llama_kv_cache: CPU KV buffer size = 120.00 MiB
llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB
llama_context: Flash Attention was auto, set to enabled
llama_context: CPU compute buffer size = 25.51 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 1
vision_model_loader: model name:
vision_model_loader: description: image encoder for MiniCPM-V
vision_model_loader: GGUF version: 3
vision_model_loader: alignment: 32
vision_model_loader: n_tensors: 455
vision_model_loader: n_kv: 20
vision_ctx: vision using CPU backend
load_hparams: model_type: 0
load_hparams: n_embd: 1152
load_hparams: n_head: 16
load_hparams: n_ff: 4304
load_hparams: n_layer: 27
load_hparams: ffn_op: gelu
load_hparams: projection_dim: 0
--- vision hparams ---
load_hparams: image_size: 448
load_hparams: patch_size: 14
load_hparams: minicpmv_version: 100045
load_hparams: proj_scale_factor: 0
load_hparams: n_wa_pattern: 0
load_hparams: model size: 1044.36 MiB
load_hparams: metadata size: 0.16 MiB
load_tensors: ffn up/down are swapped
alloc_compute_meta: CPU compute buffer size = 100.30 MiB
init tts....init t2w....voc_hg2_model: CPU backend using 8 threads
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000
audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 20]
audition_audio_batch_encode: Final output: 20 tokens x 4096 dims
=== Model Paths ===
Base dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf
LLM: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK]
===================
=== Initializing Omni Context ===
Media type: 2 (omni: audio+vision)
TTS enabled: yes
Context size: 2048
GPU layers: 0
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts
Ref audio: /mnt/c/Users/zhout/w2/minicpmo_cpp_cpu_v3/fixture_0000.wav
23:05:45.158 === omni_init start
23:05:45.158 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
23:05:45.158 === omni_init: loading new LLM model
23:05:48.884 === omni_init: loading TTS model
23:05:48.884 TTS model: loading with n_gpu_layers=0
23:05:49.164 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
23:05:49.164 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
23:05:50.583 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
23:05:50.601 TTS: head_code loaded, verifying first few values:
23:05:50.601 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
23:05:50.601 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
23:05:50.601 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
23:05:50.671 TTS: weights loaded successfully
23:05:50.671 Projector: loading from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
23:05:50.683 Projector: loaded successfully
23:05:50.683 === omni_init: loading APM model
23:05:50.939 APM: init from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
23:05:51.749 Token2Wav: found models in /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf
23:05:51.749 Token2Wav: all model files found, initializing session...
23:05:51.749 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
23:05:51.749 Token2Wav: using prompt_cache from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
23:05:53.483 Token2Wav: initialized successfully
23:05:53.483 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
23:05:53.483 Token2Wav: 使用 C++ 实现
23:05:53.483 === omni_init success: ctx_llama = 0x56f33904d060
=== Running test case ===
Audio prefix: /tmp/minicpmo_omni_wsl_work/omni-minicpmo-1-h5pevmpv/fixture_
Count: 2
23:05:53.483 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
23:05:53.483 system prompt ref_audio: /tmp/minicpmo_omni_wsl_work/omni-minicpmo-1-h5pevmpv/fixture_0000.wav
23:05:54.375 system prompt ref_audio embedding: n_pos=20
23:05:55.882 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
23:05:55.882 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
23:05:55.882 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
23:05:55.882 n_past = 72
23:05:55.882
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 2.39898 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3060.64 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3079.52 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3079.53 ms by vision ( 3079.53 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from /tmp/minicpmo_omni_wsl_work/omni-minicpmo-1-h5pevmpv/fixture_0001.jpg
stream_prefill: prefilled 1 vision chunks (64 tokens each)
audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=49339
audition_audio_preprocess: Audio not aligned to 100ms (49339 samples = 3083.7ms), padded with silence to 49600 samples (3100ms)
audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins
audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201
audition_audio_preprocess: Generated 1 mel spectrogram chunk(s)
audition_audio_preprocess: Mel spectrogram ready - n_len=310, n_mel=80, total_size=24800
build_whisper: Whisper encoder graph built (projector output, pre-pooling)
audition_audio_batch_encode: Audio input data - n_step=310, n_mel=80, total_elements=24800
audition_audio_batch_encode: Before incrementing iter: input_frames=310, n_tokens=155, current_iter=1, current_total=155, new_total=310, max_tokens=1500
audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=310, max_tokens=1500)
audition_audio_batch_encode: Final output shape: [4096, 31]
audition_audio_batch_encode: Final output: 31 tokens x 4096 dims
23:06:00.870 stream_prefill(index=1): processing user audio: /tmp/minicpmo_omni_wsl_work/omni-minicpmo-1-h5pevmpv/fixture_0001.wav
23:06:01.183 stream_prefill(index=1): user audio embedding: n_pos=31
23:06:02.334
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 6.45189 s
23:06:02.334 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
23:06:02.334 stream_decode: create tts thread (simplex mode)
23:06:02.334 stream_decode: create t2w thread
23:06:02.334 wait prefill done
23:06:02.334 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
23:06:02.334 T2W thread (C++) started
<user>
<assistant>23:06:02.338 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
23:06:02.338 TTS thread started
23:06:02.749 📍 [单工TTS] assistant prompt 完成, n_past=182
23:06:02.749 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
23:06:03.672 LLM: detected end token, set llm_generation_done=true
23:06:03.672 LLM->TTS: text='The square in the image is red.', n_tokens=8, hidden_size=32768, n_embd=4096, token_ids=[785 9334 304 279 2168 374 2518 13]
23:06:03.672 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
23:06:03.672 📍 轮次 1 结束,记录边界于 n_past=191
23:06:03.672 TTS<-LLM: chunk_idx=0, text='The square in the image is red.', n_tokens=8, hidden_size=32768, token_ids=[785 9334 304 279 2168 374 2518 13]
23:06:03.672 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
23:06:03.672 TTS: before empty check - response.empty=0, response='The square in the image is red.', llm_finish=1
Waiting for audio generation to complete...
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty
TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty
TTS: no valid WAV files to merge
[timing] call=0 tokens=28 final=0 token2mel=2134.762ms vocoder=276.670ms total=2411.444ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1670.511ms vocoder=315.479ms total=1986.008ms audio=24000
[timing] call=2 tokens=13 final=1 token2mel=1654.652ms vocoder=184.253ms total=1838.913ms audio=16320
Audio generation completed.
23:06:03.672 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
23:06:03.672 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
23:06:03.673 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
23:06:03.681 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
23:06:03.681 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
23:06:03.681 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
23:06:03.681 TTS Simplex: first chunk - cleared KV cache
23:06:03.681 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
23:06:03.700 TTS Simplex: prefill completed, n_past_tts=9
23:06:03.700 TTS Simplex: sampler created
23:06:03.700 TTS simplex: is_audio_bos=true (first audio token)
23:06:03.727 TTS Simplex Phase1: token 1/500: rel_id=1487
23:06:03.742 TTS Simplex Phase1: token 2/500: rel_id=4218
23:06:03.754 TTS Simplex Phase1: token 3/500: rel_id=3894
23:06:03.766 TTS Simplex Phase1: token 4/500: rel_id=4218
23:06:03.777 TTS Simplex Phase1: token 5/500: rel_id=4218
23:06:04.007 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
23:06:04.009 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
23:06:04.009 TTS Simplex Phase1: token 25/500: rel_id=3666
23:06:04.009 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
23:06:04.009 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
23:06:04.165 TTS Simplex Phase1: EOS token at step 41
23:06:04.165 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
23:06:04.165 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=49
23:06:04.172 TTS Simplex Phase2: text_eos_embed injected, n_past=50
23:06:04.179 TTS Simplex Phase2: audio_bos injected, n_past=51, starting final generation
23:06:04.281 TTS Simplex Phase2: yield 25 tokens 到 T2W
23:06:04.393 TTS Simplex Phase2: EOS at step 21 (final end)
23:06:04.393 TTS Simplex: chunk 结束,tts_token_buffer 剩余 10 tokens (保留等下一个 chunk)
23:06:04.393 TTS Simplex: is_final_text_chunk=true, flush 剩余 10 tokens 从 tts_token_buffer
23:06:04.393 TTS Simplex: generated 60 audio tokens for chunk 0
23:06:04.393 TTS Simplex: chunk 0 first tokens: [1487 4218 3894 4218 4218 ], last tokens: [1461 4218 4218 4218 4137 ]
23:06:04.393 TTS Simplex: updated tts_n_past_accumulated=72, total_generated_tokens=60
23:06:04.393 TTS: finished processing all chunks
23:06:04.393 TTS: 单工模式轮次结束,下一轮 round_idx=1
23:06:04.393 TTS: sent is_final=true to T2W queue (turn end)
23:06:06.421 🎉 首响时间 (First Audio Response): 4087ms
23:06:06.421 T2W线程: wav_0.wav | 0.84s audio | 2411.5ms inference | RTF=2.87 | t=4087ms
23:06:08.407 T2W线程: wav_1.wav | 1.00s audio | 1986.1ms inference | RTF=1.99 | t=6073ms
23:06:10.246 T2W线程: wav_2.wav | 0.68s audio | 1839.0ms inference | RTF=2.70 | t=7912ms
23:06:10.246 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
23:06:10.246 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
23:06:10.317 omni_stop_threads: stop signals sent
23:06:10.317 T2W(C++) 线程: 停止
llama_perf_context_print: load time = 17590.37 ms
llama_perf_context_print: prompt eval time = 9265.81 ms / 182 tokens ( 50.91 ms per token, 19.64 tokens per second)
llama_perf_context_print: eval time = 920.50 ms / 9 runs ( 102.28 ms per token, 9.78 tokens per second)
llama_perf_context_print: total time = 25159.78 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,21 @@
build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = qwen3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Llm
llama_model_loader: - kv 3: general.size_label str = 8.2B
llama_model_loader: - kv 4: qwen3.block_count u32 = 36
llama_model_loader: - kv 5: qwen3.context_length u32 = 40960
llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096
llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288
llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32
llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8
llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000
llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001
llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128
llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128
llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2
llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2
llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
@@ -1,6 +1,6 @@
# E2E check and profiling
All 60 pairings have a disposition. The timing tables below remain the 2026-09-22 measurements. The configuration matrix and affected per-cell reasons incorporate the [2026-09-23 scoped recovery runs](../../../e2e_recovery_20260923/README.md) and [WSL CPU/native Windows expansion](../../../e2e_expansion_20260923/README.md). The expansion adds separate 20-request serial MiniCPM-o text-to-speech profiles on WSL CPU and native Windows GPU, a Spark output-head component profile on the HX370 AMD NPU, complete Spark text-request profiles through standalone llama.cpp and a bounded Omni whole-session stage on native Windows CPU and Radeon 890M, native Windows CPU Qwen3-TTS text-to-WAV profiles through both standalone PyTorch and a bounded Omni whole-session stage, and a hybrid CPU+Radeon 890M Qwen3-TTS profile likewise repeated through a bounded Omni whole-session stage. A pinned GGUF MiniCPM-o route adds combined image+audio to text+speech runs on WSL CPU, native Windows CPU and native Windows Radeon 890M+CPU. The latter two now also pass one bounded complete request through an Omni graph stage, including in-flight cancellation and ledger release. These are scoped synthetic cases, not full release qualification.
All 60 pairings have a disposition. The timing tables below remain the 2026-09-22 measurements. The configuration matrix and affected per-cell reasons incorporate the [2026-09-23 scoped recovery runs](../../../e2e_recovery_20260923/README.md) and [WSL CPU/native Windows expansion](../../../e2e_expansion_20260923/README.md). The expansion adds separate 20-request serial MiniCPM-o text-to-speech profiles on WSL CPU and native Windows GPU, a Spark output-head component profile on the HX370 AMD NPU, complete Spark text-request profiles through standalone llama.cpp and a bounded Omni whole-session stage on native Windows CPU and Radeon 890M, native Windows CPU Qwen3-TTS text-to-WAV profiles through both standalone PyTorch and a bounded Omni whole-session stage, and a hybrid CPU+Radeon 890M Qwen3-TTS profile likewise repeated through a bounded Omni whole-session stage. A pinned GGUF MiniCPM-o route adds combined image+audio to text+speech runs on WSL CPU, native Windows CPU and native Windows Radeon 890M+CPU. All three now pass a bounded complete request through an Omni graph stage; the WSL CPU path additionally passed one warmup plus 20 serial measured requests. These are scoped synthetic cases, not full release qualification.
## Configuration × model
@@ -8,7 +8,7 @@ NOT E2E means no complete device/model workload was verified. “Scoped E2E” i
| Device | Spark-X2.5 | Qwen3-TTS 0.6B CustomVoice | Qwen3.8-27B | MiniCPM-o 4.5 | InternVLA-A1 |
|---|---|---|---|---|---|
| PC HX370: CPU / WSL | profile completed | scoped E2E: short stream | NOT E2E | scoped E2E: text/image/audio → speech | synthetic policy pass |
| PC HX370: CPU / WSL | profile completed | scoped E2E: short stream | NOT E2E | scoped E2E: Omni GGUF combined image+audio → text+speech | synthetic policy pass |
| PC HX370: CPU / native Windows | scoped E2E: Omni Spark text | scoped E2E: Omni CPU text → complete WAV | NOT E2E | scoped E2E: Omni GGUF image+audio → text+speech | synthetic policy pass |
| PC HX370 + RTX 5090 Laptop / WSL | profile completed | profile completed | scoped E2E: text + image | scoped E2E: text/image/audio → speech | synthetic policy pass |
| PC HX370 + RTX 5090 Laptop / Windows | profile completed | profile completed | NOT E2E | scoped E2E: text/image/audio → speech | synthetic policy pass |
@@ -28,7 +28,7 @@ NOT E2E means no complete device/model workload was verified. “Scoped E2E” i
| PC HX370: CPU / WSL | Spark-X2.5 | PROFILE_COMPLETED | not fully qualified: reference-quality and remaining reliability/performance gates must be reviewed | Qualify a matching vLLM 0.29 CPU build and token parity separately. |
| PC HX370: CPU / WSL | Qwen3-TTS 0.6B CustomVoice | SCOPED_E2E | The 2026-09-23 compatibility fix enabled real-weight two-frame PCM and four short-stream requests, including cancellation recovery. One measured request generated 3.04 s of audio in 17.02 s (RTF 5.60) with four simulated playback underruns. The CPU wheel remains vLLM 0.28 versus Omni 0.29. | Qualify a matching CPU runtime, speech quality, uninterrupted playback and sustained load; [recovery evidence](../../../e2e_recovery_20260923/README.md). |
| PC HX370: CPU / WSL | Qwen3.8-27B | NOT_E2E_PROFILEABLE | No compatible CPU artifact/deployment for this model was found in the checked model roots. Available Qwen 27B FP8/NVFP4 CUDA artifacts do not establish a CPU route. | Supply and validate the missing matching artifact/backend, then run the complete specified workload. |
| PC HX370: CPU / WSL | MiniCPM-o 4.5 | SCOPED_E2E | The verified BF16 checkpoint completed real three-stage text, one synthetic image and one synthetic audio input to text+speech on the vLLM 0.28 CPU backend in separate bounded plans. The 448×448 red square was described correctly with a nonzero 5.2 s WAV in one 37.70 s request; the 2 s/440 Hz tone was described as “A loud and high pitched beep” with a nonzero 2.16 s WAV in one 17.30 s request. CPU wording/token IDs differ from the WSL GPU runs, with no task-quality threshold established. A separate 1-warmup/20-measured serial **text** run had request wall p50 21.86 s/p95 22.97 s. WSL swap reached 5.75 GB during that text profile; manual snapshots in the multimodal runs showed heavy swap use but do not prove peak memory. Both multimodal runs force-killed stage 0 at shutdown and reported shared-memory cleanup warnings. Separately, a pinned Q4_K_M/F16 GGUF set ran one **combined** synthetic image+tone input to text and 9.24 s of speech through standalone C++ on WSL CPU in 40.70 s, with 13,369,604 KiB (~12.75 GiB) maximum RSS; its generic response did not establish input-grounded quality, and its optional WAV merger used the wrong chunk filename. The actual ten WAV chunks were verified and assembled without changing PCM. | Validate real image/audio suites, speech intelligibility, video input, concurrency, interruption, admission/loading peak, clean shutdown and sustained thermal behavior; check the C++ GGUF route's semantic quality and Omni binding separately. [vLLM CPU evidence](../../../e2e_expansion_20260923/README.md), [C++ CPU raw evidence](../../../e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/README.md). |
| PC HX370: CPU / WSL | MiniCPM-o 4.5 | SCOPED_E2E_OMNI_COMPLETE_REQUEST | The BF16/vLLM 0.28 three-stage path previously passed separate text, synthetic red-square image and synthetic 440 Hz audio inputs to text+speech; its 20-request serial **text-only** profile was p50/p95 21.86/22.97 s with swap and shutdown warnings. A separate pinned Q4_K_M/F16 GGUF worker now runs a **combined spoken question+image → text+speech** request through a bounded Omni StageRuntime/StagePool graph stage on WSL CPU, with installed vLLM 0.29 for the controller and CPU-only C++ model execution. All 20 measured requests after one warmup answered “The square in the image is red.”, emitted complete nonzero speech and a terminal audio event; nearest-rank complete-request wall p50/p95 was 22.67/24.83 s, speech duration 1.60–2.92 s, and maximum sampled worker RSS 13.70 GB. The first measured WAV independently transcribed exactly with pinned Whisper tiny.en (WER 0, one-output intelligibility proxy). Ten weight hashes and CPU placement were verified; 24 GiB shared RAM was reserved, 8 GiB was refused before launch, and in-flight cancellation left no stale output or reservation. Host RAM/swap samples covered only part of the profile. One synthetic fixture and variable speech PCM do not establish general quality, playable streaming, loading peak or sustained performance. | Validate real image/audio suites, speech alignment and quality, video input, concurrent admission, post-cancel restart, loading peak and sustained thermal behavior; [GGUF Omni raw evidence](../../../e2e_expansion_20260923/evidence/minicpmo_omni_wsl_cpu/README.md), [BF16/vLLM CPU evidence](../../../e2e_expansion_20260923/README.md), [earlier standalone GGUF run](../../../e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/README.md). |
| PC HX370: CPU / WSL | InternVLA-A1 | SYNTHETIC_POLICY_PASS | The Place_Markpen checkpoint strict-loaded in CPU-only PyTorch and produced finite `[1, 50, 32]` actions from zero observations/noise in one 3.25 s forward. Compared with the same CUDA checkpoint/input, relative L2 error was 1.30% and cosine similarity 0.999917; no task-quality tolerance is established. | Validate real observations against reference actions, units/timestamps, repeated latency and memory before robot-task qualification; [CPU evidence](../../../e2e_expansion_20260923/README.md). |
| PC HX370: CPU / native Windows | Spark-X2.5 | SCOPED_E2E_OMNI_COMPLETE_REQUEST | The pinned Spark-X2.5-1.7B Q4_K_M GGUF ran in native Windows llama.cpp CPU (`-dev none -ngl 0`) as a whole-session Omni StageRuntime/StagePool backend. `Paris` and the correct `1511` inventory answer passed; one warmup plus 20 serial complete requests were 20/20 correct, nearest-rank wall p50/p95 6.93/7.05 s. The public AsyncOmni short request passed. The stage verifies artifact hashes and CPU placement (0/29 layers offloaded), reserves 4 GiB host RAM, emits a terminal text event and releases reservation after in-flight cancellation. The separate prior standalone profile was 6.65/6.86 s. No vLLM CPU attention repair, incremental stream, restart-after-cancel, loading peak or sustained power/thermal gate is claimed. | Validate broader text/token quality, streaming and cancellation recovery, memory peak and sustained load; [Omni raw evidence](../../../e2e_expansion_20260923/evidence/spark_omni_llamacpp/README.md), [standalone evidence](../../../e2e_expansion_20260923/evidence/spark_radeon890m_llamacpp/README.md). |
| PC HX370: CPU / native Windows | Qwen3-TTS 0.6B CustomVoice | SCOPED_E2E_OMNI_COMPLETE_REQUEST | The pinned 0.6B CustomVoice BF16/SDPA checkpoint ran wholly on CPU through an isolated Qwen wrapper worker owned by one bounded Omni StageRuntime stage. Two named 24 kHz WAVs matched the earlier standalone PCM SHA256 values exactly. One warmup + 20 serial complete Omni requests for 4.56 s of audio had 20/20 identical PCM and nearest-rank wall p50/p95 15.32/15.60 s (RTF 3.36/3.42); independent Whisper tiny.en ASR gave WER 0.20 on the first Omni WAV, an intelligibility proxy only. A public AsyncOmni audio request passed. The stage verified pinned weights/interpreter and CPU placement, reserved 10 GiB host RAM, rejected an insufficient 4 GiB demand before worker launch, and after in-flight cancellation emitted no stale output and returned the ledger to zero. Sampled process-tree private memory peaked at 5.39 GB, not a loading peak. Native vLLM CPU attention operators remain absent; playable streaming, post-cancel restart, broader speech quality, loading peak and sustained power/thermal behavior remain unverified. | Validate playable streaming and restart/recovery, broader voice quality, peak memory, concurrency and sustained behavior; [Omni raw evidence](../../../e2e_expansion_20260923/evidence/qwen_tts_omni_cpu/README.md), [standalone baseline](../../../e2e_expansion_20260923/evidence/qwen_tts_native_cpu/README.md). |
+12
View File
@@ -85,6 +85,18 @@ does not stream playable chunks, post-cancel restart is untested, and the
single synthetic case does not establish broad multimodal quality, loading
peak, concurrency, video, mobile artifacts or sustained power behavior.
The same [GGUF Omni whole-session stage on WSL CPU](../../benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_wsl_cpu/README.md)
now passes a combined spoken visual question to text+speech on CPU-only C++
execution. One warmup plus 20 serial complete requests all returned the correct
red-square answer and complete speech, with nearest-rank wall p50/p95
22.67/24.83 s. The first measured WAV independently transcribed exactly with
pinned Whisper tiny.en; the 20 speech durations varied, so this is one scoped
intelligibility check rather than a quality or alignment qualification. A
24 GiB WSL shared-RAM reservation, 8 GiB refusal and in-flight cancellation
with zero remaining ledger passed. This closes the WSL CPU GGUF Omni stage
binding for the named input, while real input suites, video, playable streaming,
loading peak, concurrency and sustained behavior remain M4 work.
Native Windows HX370 CPU now also completes two Qwen3-TTS CustomVoice
text-to-WAV requests through Qwen's standalone PyTorch wrapper using the pinned
0.6B checkpoint. A separate 1-warmup/20-measured serial profile of one short