Profile MiniCPM-o native storage and probe InternVLA AMD NPU

This commit is contained in:
tzhouam committed 2026-09-24 04:51:30 +08:00
1 parent e5c4449a8f
commit 36ef53d9b1
93 files changed
+27428 -5

No files matched your search

@@ -0,0 +1,136 @@
#!/usr/bin/env python3
"""Export the real fixed-shape InternVLA Cosmos encoder for an NPU placement probe.
The export and CPU numerical gate are component evidence only. This script does
not claim VitisAI placement or a complete InternVLA action-policy request.
"""
from __future__ import annotations
import argparse
import hashlib
import importlib.util
import json
import sys
import time
import traceback
import types
from pathlib import Path
def sha256(path: Path) -> str:
digest = hashlib.sha256()
with path.open("rb") as source:
for block in iter(lambda: source.read(8 << 20), b""):
digest.update(block)
return digest.hexdigest()
def main() -> None:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--encoder", type=Path, required=True)
parser.add_argument("--output", type=Path, required=True)
parser.add_argument("--fixtures", type=Path, required=True)
parser.add_argument("--report", type=Path, required=True)
args = parser.parse_args()
import numpy as np
import onnx
import onnxruntime as ort
import torch
encoder = args.encoder.resolve(strict=True)
source_dir = Path(__file__).resolve().parents[3] / "vllm_omni" / "diffusion" / "models" / "internvla_a1"
package = types.ModuleType("internvla_cosmos_onnx_export")
package.__path__ = [str(source_dir)]
sys.modules[package.__name__] = package
spec = importlib.util.spec_from_file_location(f"{package.__name__}.model_cosmos", source_dir / "model_cosmos.py")
if spec is None or spec.loader is None:
raise RuntimeError("cannot load pinned Cosmos source")
module = importlib.util.module_from_spec(spec)
sys.modules[spec.name] = module
spec.loader.exec_module(module)
class LatentOnly(torch.nn.Module):
def __init__(self, inner: torch.nn.Module) -> None:
super().__init__()
self.inner = inner
def forward(self, pixels: torch.Tensor) -> torch.Tensor:
result = self.inner(pixels)
return result if isinstance(result, torch.Tensor) else result[0]
model = LatentOnly(module.load_cosmos_component(encoder, component="encoder", device="cpu")).eval()
fixtures = {
"ramp": torch.linspace(-1, 1, 6 * 3 * 256 * 256, dtype=torch.float32).view(6, 3, 256, 256),
"pattern": torch.zeros((6, 3, 256, 256), dtype=torch.float32),
}
fixtures["pattern"][:, 0, 64:192, 64:192] = 0.75
fixtures["pattern"][:, 1, 32:96, 32:96] = -0.5
report = {
"scope": "real InternVLA Cosmos CI8x8 encoder; fixed [6,3,256,256] FP32; component only",
"encoder_sha256": sha256(encoder),
"source_sha256": {name: sha256(source_dir / name) for name in ("model_cosmos.py", "cosmos_ci_torch.py")},
"torch": torch.__version__, "onnx": onnx.__version__, "onnxruntime": ort.__version__,
"input_shape": [6, 3, 256, 256], "input_dtype": "float32",
"output_shape": [6, 16, 32, 32], "opset": 21,
}
try:
args.output.parent.mkdir(parents=True, exist_ok=True)
started = time.perf_counter()
torch.onnx.export(
model, (fixtures["ramp"],), args.output,
input_names=["pixels"], output_names=["latent"], opset_version=21,
dynamo=True, external_data=True, optimize=False, verify=False,
)
report["export_s"] = time.perf_counter() - started
graph = onnx.load(str(args.output), load_external_data=True)
onnx.checker.check_model(graph)
session = ort.InferenceSession(str(args.output), providers=["CPUExecutionProvider"])
if [item.name for item in session.get_inputs()] != ["pixels"]:
raise RuntimeError("ONNX input name differs from fixed contract")
report["cpu_parity"] = {}
fixture_arrays = {}
with torch.no_grad():
for name, pixels in fixtures.items():
source = model(pixels).detach().float().cpu().numpy()
actual = session.run(["latent"], {"pixels": pixels.numpy()})[0]
if source.shape != (6, 16, 32, 32) or actual.shape != source.shape:
raise RuntimeError("Cosmos latent shape differs from fixed contract")
if not np.isfinite(actual).all():
raise RuntimeError("ONNX Cosmos latent contains nonfinite values")
diff = actual - source
report["cpu_parity"][name] = {
"max_abs": float(np.max(np.abs(diff))),
"relative_l2": float(np.linalg.norm(diff) / np.linalg.norm(source)),
}
fixture_arrays[f"{name}_pixels"] = pixels.numpy()
fixture_arrays[f"{name}_reference"] = source
args.fixtures.parent.mkdir(parents=True, exist_ok=True)
np.savez_compressed(args.fixtures, **fixture_arrays)
report["fixtures"] = {"path": str(args.fixtures.resolve()),
"sha256": sha256(args.fixtures), "bytes": args.fixtures.stat().st_size}
data_files = sorted(args.output.parent.glob(args.output.name + ".data*"))
report["artifact"] = {
"onnx": {"path": str(args.output.resolve()), "sha256": sha256(args.output),
"bytes": args.output.stat().st_size},
"external_data": [
{"path": str(path.resolve()), "sha256": sha256(path), "bytes": path.stat().st_size}
for path in data_files
],
}
report["node_op_types"] = sorted({node.op_type for node in graph.graph.node})
report["status"] = "passed"
except BaseException as exc:
report["status"] = "failed"
report["error"] = f"{type(exc).__name__}: {exc}"
report["traceback"] = traceback.format_exc()
raise
finally:
args.report.parent.mkdir(parents=True, exist_ok=True)
args.report.write_text(json.dumps(report, indent=2) + "\n", encoding="utf-8")
print(json.dumps({key: value for key, value in report.items() if key != "traceback"}, indent=2))
if __name__ == "__main__":
main()
@@ -0,0 +1,187 @@
#!/usr/bin/env python3
"""Probe real InternVLA Cosmos encoder ONNX placement on the HX370 AMD NPU.
This is a fixed-shape component probe. A successful output without VitisAI
node events is a CPU fallback, not NPU support or a policy E2E result.
"""
from __future__ import annotations
import argparse
import hashlib
import json
import os
import platform
import time
import traceback
from pathlib import Path
def sha256(path: Path) -> str:
digest = hashlib.sha256()
with path.open("rb") as source:
for block in iter(lambda: source.read(8 << 20), b""):
digest.update(block)
return digest.hexdigest()
def compare(reference, actual) -> dict:
import numpy as np
if actual.shape != reference.shape or actual.dtype != np.float32 or not np.isfinite(actual).all():
raise ValueError("Cosmos latent shape, dtype or finiteness differs from contract")
diff = actual.astype(np.float64) - reference.astype(np.float64)
return {
"max_abs": float(np.max(np.abs(diff))),
"relative_l2": float(np.linalg.norm(diff) / np.linalg.norm(reference.astype(np.float64))),
}
def main() -> None:
parser = argparse.ArgumentParser(description=__doc__)
for name in ("model", "fixtures", "export-report", "quantized", "ep-dir", "output-report"):
parser.add_argument(f"--{name}", type=Path, required=True)
parser.add_argument("--prequantized", action="store_true")
parser.add_argument("--cpu-only", action="store_true", help="Run numerical gate without loading VitisAI")
parser.add_argument("--candidate-sha256")
parser.add_argument("--candidate-layout", default="Conv+MatMul A16W8 QDQ")
parser.add_argument("--op-types", default="Conv,MatMul")
parser.add_argument("--per-channel", action="store_true")
parser.add_argument("--max-relative-l2", type=float, default=1e-3)
args = parser.parse_args()
if args.prequantized and not args.candidate_sha256:
parser.error("prequantized candidate requires a pinned SHA256")
if args.max_relative_l2 <= 0:
parser.error("numerical gate must be positive")
op_types = args.op_types.split(",")
if not op_types or any(name not in {"Conv", "MatMul"} for name in op_types):
parser.error("quantized op types must be Conv, MatMul or both")
import numpy as np
import onnx
import onnxruntime as ort
from onnxruntime.quantization import (
CalibrationDataReader, CalibrationMethod, QuantFormat, QuantType, quantize_static,
)
source = args.model.resolve(strict=True)
fixture_path = args.fixtures.resolve(strict=True)
export = json.loads(args.export_report.read_text(encoding="utf-8"))
if export.get("status") != "passed":
raise RuntimeError("source Cosmos ONNX export lacks a passed CPU gate")
if sha256(source) != export["artifact"]["onnx"]["sha256"]:
raise RuntimeError("Cosmos ONNX hash differs from pinned export")
external = source.with_name(source.name + ".data")
if (sha256(external) != export["artifact"]["external_data"][0]["sha256"]
or sha256(fixture_path) != export["fixtures"]["sha256"]):
raise RuntimeError("Cosmos external weights or fixture hash differs from pinned export")
model = onnx.load(str(source), load_external_data=True)
if [item.name for item in model.graph.input] != ["pixels"]:
raise RuntimeError("Cosmos ONNX input differs from fixed layout")
with np.load(fixture_path, allow_pickle=False) as data:
cases = [(name, np.asarray(data[f"{name}_pixels"]), np.asarray(data[f"{name}_reference"]))
for name in ("ramp", "pattern")]
if any(pixels.shape != (6, 3, 256, 256) or reference.shape != (6, 16, 32, 32)
for _, pixels, reference in cases):
raise RuntimeError("Cosmos fixture layout differs from fixed contract")
report = {
"scope": "real InternVLA Cosmos CI8x8 fixed-shape encoder component only; no action-policy E2E claim",
"hardware": "Ryzen AI 9 HX 370 AMD NPU", "os": platform.platform(),
"onnx": onnx.__version__, "onnxruntime": ort.__version__,
"source_sha256": sha256(source), "external_weights_sha256": sha256(external),
"fixtures_sha256": sha256(fixture_path), "input_shape": [6, 3, 256, 256],
"output_shape": [6, 16, 32, 32],
"quantization": args.candidate_layout,
"quantized_op_types": op_types, "per_channel": args.per_channel,
"max_relative_l2_gate": args.max_relative_l2,
}
try:
cpu = ort.InferenceSession(str(source), providers=["CPUExecutionProvider"])
report["source_cpu_parity"] = {
name: compare(reference, cpu.run(["latent"], {"pixels": pixels})[0])
for name, pixels, reference in cases
}
class Reader(CalibrationDataReader):
def __init__(self) -> None:
self._iter = iter({"pixels": pixels} for _, pixels, _ in cases)
def get_next(self):
return next(self._iter, None)
if args.prequantized:
args.quantized.resolve(strict=True)
if sha256(args.quantized) != args.candidate_sha256.lower():
raise RuntimeError("prequantized candidate hash differs from pinned SHA256")
else:
args.quantized.parent.mkdir(parents=True, exist_ok=True)
started = time.perf_counter()
quantize_static(
str(source), str(args.quantized), Reader(),
quant_format=QuantFormat.QDQ, activation_type=QuantType.QUInt16,
weight_type=QuantType.QInt8, per_channel=args.per_channel,
op_types_to_quantize=op_types, calibrate_method=CalibrationMethod.MinMax,
)
report["quantize_s"] = time.perf_counter() - started
report["quantized_sha256"] = sha256(args.quantized)
report["quantized_bytes"] = args.quantized.stat().st_size
candidate_cpu = ort.InferenceSession(str(args.quantized), providers=["CPUExecutionProvider"])
report["quantized_cpu_parity"] = {
name: compare(reference, candidate_cpu.run(["latent"], {"pixels": pixels})[0])
for name, pixels, reference in cases
}
if any(row["relative_l2"] > args.max_relative_l2
for row in report["quantized_cpu_parity"].values()):
raise RuntimeError("quantized Cosmos artifact failed the CPU numerical gate before NPU compilation")
if args.cpu_only:
report["status"] = "passed_cpu_component"
return
ep_dir = args.ep_dir.resolve(strict=True)
os.environ["PATH"] = str(ep_dir) + os.pathsep + os.environ.get("PATH", "")
os.add_dll_directory(str(ep_dir))
ort.register_execution_provider_library("vitisai", str(ep_dir / "onnxruntime_vitisai_ep.dll"))
devices = [device for device in ort.get_ep_devices()
if device.ep_name == "vitisai" and str(device.device.type).endswith("NPU")]
report["npu_devices"] = len(devices)
if not devices:
raise RuntimeError("VitisAI EP did not expose an NPU device")
options = ort.SessionOptions()
options.add_provider_for_devices(devices, {})
options.enable_profiling = True
options.profile_file_prefix = str(args.output_report.with_suffix("")) + "_profile"
started = time.perf_counter()
session = ort.InferenceSession(str(args.quantized), sess_options=options)
report["session_load_s"] = time.perf_counter() - started
report["session_providers"] = session.get_providers()
rows = []
for name, pixels, reference in cases:
started = time.perf_counter()
actual = session.run(["latent"], {"pixels": pixels})[0]
rows.append({"fixture": name, "wall_s": time.perf_counter() - started,
**compare(reference, actual)})
report["npu_rows"] = rows
profile_path = Path(session.end_profiling())
report["profile_path"] = str(profile_path)
events = json.loads(profile_path.read_text(encoding="utf-8"))
providers = [(event.get("args") or {}).get("provider")
for event in events if event.get("cat") == "Node"]
report["npu_node_events"] = providers.count("vitisai")
report["cpu_node_events"] = providers.count("CPUExecutionProvider")
if report["npu_node_events"] == 0:
raise RuntimeError("quantized Cosmos graph returned output but no NPU node executed")
report["status"] = "passed_component"
except BaseException as exc:
report["status"] = "failed"
report["error"] = f"{type(exc).__name__}: {exc}"
report["traceback"] = traceback.format_exc()
raise
finally:
args.output_report.parent.mkdir(parents=True, exist_ok=True)
args.output_report.write_text(json.dumps(report, indent=2) + "\n", encoding="utf-8")
print(json.dumps({key: value for key, value in report.items() if key != "traceback"}, indent=2))
if __name__ == "__main__":
main()
@@ -8,15 +8,20 @@ The [WSL RTX 5090 Laptop Omni CUDA policy profile](evidence/internvla_omni_cuda/
The [native Windows RTX 5090 Laptop Omni CUDA policy profile](evidence/internvla_omni_windows_cuda/README.md) separately ran the same patterned fixture and real checkpoint. One warmup plus 20/20 serial terminal action requests had complete-request wall p50/p95 0.746/0.806 s, excluding 147.77 s startup that included loading weights from a WSL UNC path. A 16 GiB host/16 GiB VRAM reservation, 8 GiB VRAM pre-launch refusal, in-flight abort, and public action entrypoint passed. Relative L2 was 2.340% versus its separate native CPU output and 1.555% versus the WSL CUDA action chunk; there is no task tolerance. These OS runs are not a paired speed comparison or robot-task qualification.
For the AMD NPU route, the [real InternVLA Cosmos encoder export](evidence/internvla_cosmos_amd_npu/README.md) matched its source on two fixed inputs under ORT CPU (relative L2 below 2.3e-6). Conv+MatMul A16W8 QDQ failed a 0.1% numerical gate by a wide margin and its VitisAI compilation emitted a missing-scale fatal assertion. MatMul-only A16W8 retained CPU parity but both original and preprocessed candidates hit a separate compiler assertion. No NPU node executed and no full policy ran on that placement. These are artifact-specific failures, not a model-wide or hardware-wide rejection.
A further [native Windows CPU Omni policy profile](evidence/internvla_omni_windows_cpu/README.md) ran the same patterned synthetic fixture with the real Place_Markpen checkpoint: one warmup plus 20/20 identical finite action chunks, nearest-rank complete-request wall p50/p95 4.878/4.902 s, and 135.60 s startup. The public action entrypoint, pre-launch 8 GiB refusal and in-flight abort passed with a 16 GiB host-RAM reservation and zero ledger residue. The native action chunk differed from the WSL CPU output by 2.1795% relative L2; no robot-task tolerance exists. The earlier one-forward native CPU result used a zero-input fixture and must not be compared as the same profile.
The matching [native Windows CPU+Radeon Omni policy profile](evidence/internvla_omni_windows_hybrid/README.md) kept the BF16 action policy on CPU and ran only the pinned FP32 six-frame Cosmos encoder through a native DirectML worker. It returned 20/20 identical finite action chunks after one warmup at nearest-rank complete-request wall p50/p95 4.575/4.725 s, versus the separate native CPU baseline 4.878/4.902 s; startup was 140.31 s versus 135.60 s. Hybrid-vs-CPU action relative L2 difference was 2.4391% without a task tolerance. Native hybrid pre-launch refusal, in-flight abort and public `AsyncOmni.generate` action output passed with a 16 GiB shared-RAM reservation. The output device was verified as Radeon 890M, not every internal graph op. This is a synthetic integration pass, not robot-task E2E or sustained benefit.
A later [native Windows Radeon MiniCPM-o Omni profile](evidence/minicpmo_omni_radeon_profile20/README.md) completed one warmup and 20 serial **combined spoken-question+image → text+speech** requests with the same pinned GGUF set and patched C++ CLI. All 20 answered the red-square question and emitted complete speech; the first measured WAV independently transcribed with WER 0 using pinned Whisper tiny.en. Nearest-rank complete-request wall p50/p95 was **87.27/91.45 s**, much slower than the earlier 18.27 s single cold Omni request. A separate cold rerun after the profile took 88.01 s. All 21 successful new worker logs report Radeon Vulkan0 37/37 language layers, CPU Token2Wav and repeated `PrefetchVirtualMemory` warnings. The 21 GiB shared-RAM budget fit the pre-load available-RAM check and cancellation released it. A later one-request CPU-only control with the same fixture took 73.63 s and also logged prefetch warnings despite 32.28 GB OS-available before load. The CPU control was not a matched-condition comparison; no full memory/power trace identifies the regression's cause. This advances repeated functional evidence while weakening any claim of predictable Radeon performance under current memory conditions.
The [native-storage follow-up](evidence/minicpmo_omni_native_weights_io/README.md) used the same ten hashed GGUF weights copied to Windows NTFS. Native Windows CPU and Radeon+CPU both passed one warmup and 20 serial combined requests through Omni at nearest-rank complete-request p50/p95 **23.62/23.88 s** and **16.35/17.20 s**, respectively, with no prefetch warnings. First measured WAVs matched the expected sentence using pinned local ASR; both paths passed in-flight abort with a zero resource ledger. Four sequential one-request controls using native versus WSL UNC weights associate UNC I/O with the older slowdown, but cache, run order and power were not controlled. The slow UNC profile remains valid for its storage path; the CPU/Radeon profiles are not a paired speedup experiment. An initial 21 GiB Radeon repeat was correctly refused at admission under temporarily low available RAM and preserved as failure evidence.
| Device / model | Verified depth | Observed output and time | Remaining gate |
|---|---|---|---|
| Native Windows HX370 Radeon 890M / InternVLA-A1 Cosmos CI8x8 encoder | Component C; unchanged Omni encoder source in separate DirectML/PyTorch 2.4 environment, not an Omni full-policy stage | One warmup + 20 serial patterned 256×256 image encodes, including upload/readback: Radeon p50/p95 26.56/27.49 ms versus CPU 156.49/158.71 ms; relative L2 error 4.73e-07. Encoder weights and output device checked. | Complete policy/action and real-observation parity; policy/controller runtime compatibility, bounded handoff, shared-RAM admission and end-to-end benefit. [Raw evidence](evidence/internvla_cosmos_radeon890m/README.md). |
| Native Windows HX370 AMD NPU / InternVLA-A1 Cosmos CI8x8 encoder | Real fixed-shape FP32 ONNX export passed ORT CPU source parity; tested A16W8 NPU artifacts did not reach inference | Source-vs-ORT CPU relative L2 8.74e-7/2.29e-6. Conv+MatMul A16W8 gave 11.77%/5.03% CPU error and a VitisAI missing-scale fatal assertion; MatMul-only retained CPU parity but compiler asserted on original and preprocessed graphs. No NPU node event or complete policy result exists. | Build a supported whole-encoder/coarse-stage quantized artifact with representative calibration, then verify NPU placement, policy quality and complete-request benefit; [raw evidence](evidence/internvla_cosmos_amd_npu/README.md). |
| WSL HX370 CPU policy + Radeon 890M DirectML Cosmos / InternVLA-A1 Place_Markpen | Complete synthetic action-policy path through Omni diffusion and its external graph worker; FP32 encoder to BF16 policy, not robot-task qualification | One warmup pair + 20 alternating measured CPU/hybrid complete requests returned finite `[1,50,32]` actions. Hybrid wall p50/p95 2.952/3.322 s versus CPU 3.178/3.266 s; 16/20 paired faster but the hybrid tail regressed. Action relative L2 difference 0.9007%, cosine 0.999959. The selected Radeon adapter and graph hash were checked. | Real observations/reference actions, units/timestamps, integrated admission/cancellation, loading peak and sustained tail/power; [raw evidence](evidence/internvla_cosmos_radeon890m/README.md). |
| WSL HX370 + RTX 5090 Laptop / InternVLA-A1 Place_Markpen | Admitted Omni whole-policy BF16 CUDA stage (P for one patterned synthetic action request; not robot-task E2E) | One warmup + 20/20 identical finite action chunks; complete-request p50/p95 0.382/0.399 s, startup 43.82 s. Verified CUDA policy/Cosmos placement and 7.86 GB peak PyTorch VRAM reservation; 16 GiB host plus 16 GiB VRAM admitted, 8 GiB VRAM refused before launch, public action and cancellation passed. Action relative L2 versus separate CPU output 2.006% without task tolerance. | Real observations/reference actions, physical metadata, post-cancel restart, loading peak, concurrency and sustained power/thermal behavior; [raw evidence](evidence/internvla_omni_cuda/README.md). |
| Native Windows HX370 + RTX 5090 Laptop / InternVLA-A1 Place_Markpen | Admitted Omni whole-policy BF16 CUDA stage (P for one patterned synthetic action request; not robot-task E2E) | One warmup + 20/20 identical finite action chunks; complete-request p50/p95 0.746/0.806 s, startup 147.77 s. Verified CUDA policy/Cosmos placement and 7.86 GB peak PyTorch VRAM reservation; 16 GiB host plus 16 GiB VRAM admitted, 8 GiB VRAM refused before launch, public action and cancellation passed. Action relative L2 versus separate native CPU output 2.340% without task tolerance. | Real observations/reference actions, physical metadata, post-cancel restart, loading peak, concurrency and sustained power/thermal behavior; [raw evidence](evidence/internvla_omni_windows_cuda/README.md). |
@@ -0,0 +1,25 @@
# InternVLA Cosmos encoder export and HX370 AMD NPU candidates
**A real encoder ONNX export passed CPU numerical checks; no tested artifact executed on the AMD NPU.** The source is the pinned InternVLA-A1 Place_Markpen Cosmos CI8x8 encoder checkpoint, SHA256 `520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5`. The unchanged Omni source module was exported at fixed FP32 `[6,3,256,256]` input to `[6,16,32,32]` latent using PyTorch 2.13.0+cpu, opset 21, ONNX IR 10. The [export report](export_report.json) pins the model/source hashes, ONNX graph SHA256 `fee79864e393df35475ba243e14b4995c5651aa33e7e182cd1fda726425668b7`, 124.65 MB external-data SHA256 `b9bc3411c10f05daec2ff977698ee100979ef756ed7f0d685275403517558b58`, fixture hash and package versions. The large graph/weights and fixtures remain outside Git under `/home/zhout/project/edge_infer/models/InternVLA-cosmos-onnx/`; copies used for Windows probing are under `C:\Users\zhout\w2\internvla_cosmos_npu\`. They are not deployable from this checkout alone.
Two deterministic fixed-shape fixtures (a ramp and a patterned patch) compared ONNX Runtime CPU output with the real source module. Relative L2 differences were **8.74e-7** and **2.29e-6**, respectively. This proves the FP32 graph preserves these two encoder outputs on CPU; it does not prove action quality, real-image quality or NPU execution. The [export log](export.log) and [`export_internvla_cosmos_onnx.py`](../../../../experiments/export_internvla_cosmos_onnx.py) reproduce this boundary.
The [A16W8 QDQ sweep](quant_sweep.json) used QUInt16 activations, QInt8 weights and MinMax calibration on those two fixtures. Quantizing Conv+MatMul per tensor changed the full encoder output by **11.77%/5.03% relative L2** (ramp/pattern); the [native Windows CPU gate](conv_matmul_cpu_report.json) now rejects that artifact before NPU compilation. Per-channel Conv+MatMul improved the error to **3.14%/2.77%**, still above the explicit 0.1% component gate. MatMul-only QDQ left Conv on FP32 CPU and retained source-level CPU parity (**9.46e-7/2.34e-6**; [native CPU report](matmul_cpu_report.json)); that is a different, much smaller candidate, not a qualified NPU route. ONNX Runtime preprocessing with symbolic inference failed on this export's Constant handling; skipping symbolic inference produced a valid graph but did not improve the candidate's numerical results ([preprocessing sweep](preprocessed_quant_sweep.json)).
The original full Conv+MatMul artifact reached VitisAI session compilation but emitted a native **`Attrs doesn't contain attribute scale`** fatal assertion; its process remained in the crash path and was interrupted after several minutes ([readable log](probe.log), [unaltered log](probe.log.raw.bin)). MatMul-only A16W8 and the preprocessed MatMul-only version each exited with a native LLVM **`SmallVector` index assertion** during compilation ([logs](matmul_probe.log), [preprocessed log](preprocessed_matmul_probe.log), with unaltered `.raw.bin` copies). The [attempt record](compiler_attempts.json) pins candidate hashes, numerical results and process outcomes. None produced a live inference session or profiler node attribution. These failures constrain these exact A16W8 graph layouts and VitisAI EP 1.8.63.0 on the Ryzen AI 9 HX 370; they do **not** prove the model or NPU inherently unsupported. The host was Windows 11 build 26200 with AMD NPU driver 32.0.203.329, ONNX Runtime 1.30.0 and ONNX 1.22.0. The previous [Spark output-head NPU component](../spark_amd_npu_output_head/README.md) remains a separate proven placement case.
The next viable experiment is to produce a model-aware, VitisAI-supported **whole encoder or coarse substage** artifact with a representative calibration set, then pass CPU numerical and policy-action tolerances before measuring NPU node placement, same-device handoff, full-policy latency and shared-RAM admission. A small MatMul partition inside this encoder would not by itself establish an end-to-end benefit. The matrix therefore remains **NOT E2E** for InternVLA on AMD NPU.
Reproduce the CPU export from this checkout:
```bash
ROOT=/home/zhout/project/edge_infer
EVIDENCE=benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu
"$ROOT/.venvs/omni-cpu/bin/python" benchmarks/edge_harness/experiments/export_internvla_cosmos_onnx.py \
--encoder "$ROOT/models/Cosmos-Tokenizer-CI8x8/encoder.safetensors" \
--output "$ROOT/models/InternVLA-cosmos-onnx/cosmos_encoder.onnx" \
--fixtures "$ROOT/models/InternVLA-cosmos-onnx/fixtures.npz" \
--report "$EVIDENCE/export_report.json"
```
The Windows [`probe_internvla_cosmos_amd_npu.py`](../../../../experiments/probe_internvla_cosmos_amd_npu.py) validates copied artifact hashes, runs the CPU numerical gate first, then registers the installed VitisAI EP and requires actual NPU node events. Use `--cpu-only` to stop after numerical validation; use `--prequantized --candidate-sha256` to pin a prepared layout. Native compiler assertions may terminate the process before it can write a JSON report, so the raw logs and candidate hashes above are the authoritative failure record.
@@ -0,0 +1,58 @@
{
"scope": "artifact-specific native Windows VitisAI attempts on real InternVLA Cosmos encoder; no NPU execution established",
"fixture_order": [
"ramp",
"pattern"
],
"cpu_gate_max_relative_l2": 0.001,
"rows": [
{
"candidate": "Conv+MatMul per-tensor A16W8 QDQ",
"sha256": "54a05fafd3055a9e46566819cfe2c55d3667bd3d2003a791092940bb65c88bea",
"cpu_relative_l2": [
0.11774751015264003,
0.050279947518114286
],
"npu_outcome": "VitisAI native fatal assertion: Attrs does not contain attribute scale; process interrupted after extended crash path",
"process_exit": "interrupt after fatal; not a completed inference",
"log": "probe.log",
"npu_node_events": null
},
{
"candidate": "MatMul-only A16W8 QDQ",
"sha256": "e136dcba6253db452def10350932b6b6d492acb0b4b9e16bffc00d94eeebf2d0",
"cpu_relative_l2": [
9.461636356105624e-07,
2.341125601892923e-06
],
"npu_outcome": "VitisAI native LLVM SmallVector index assertion during session compilation",
"process_exit": 3,
"log": "matmul_probe.log",
"npu_node_events": null
},
{
"candidate": "preprocessed MatMul-only A16W8 QDQ",
"sha256": "56b24cfe5c4866a780865d9eda6eb866223fb6bfaab50eb66315f5d64766f1a1",
"cpu_relative_l2": [
9.461636356105624e-07,
2.341125601892923e-06
],
"npu_outcome": "VitisAI native LLVM SmallVector index assertion during session compilation",
"process_exit": 3,
"log": "preprocessed_matmul_probe.log",
"npu_node_events": null
},
{
"candidate": "Conv+MatMul per-channel A16W8 QDQ",
"sha256": "6d59ebfa2d9fec3b360e4be4acb7743d0d8e52b5bb348cbd1479740f2793bb6c",
"cpu_relative_l2": [
0.03143759133734766,
0.02772901072216827
],
"npu_outcome": "not submitted: failed 0.001 relative-L2 CPU gate",
"process_exit": null,
"log": null,
"npu_node_events": null
}
]
}
@@ -0,0 +1,59 @@
{
"scope": "real InternVLA Cosmos CI8x8 fixed-shape encoder component only; no action-policy E2E claim",
"hardware": "Ryzen AI 9 HX 370 AMD NPU",
"os": "Windows-11-10.0.26200-SP0",
"onnx": "1.22.0",
"onnxruntime": "1.30.0",
"source_sha256": "fee79864e393df35475ba243e14b4995c5651aa33e7e182cd1fda726425668b7",
"external_weights_sha256": "b9bc3411c10f05daec2ff977698ee100979ef756ed7f0d685275403517558b58",
"fixtures_sha256": "dcbaf1391ca914d4bbccc1cb384daf05666e771d9cdae90c4f069ec8fcf05368",
"input_shape": [
6,
3,
256,
256
],
"output_shape": [
6,
16,
32,
32
],
"quantization": "Conv+MatMul A16W8 QDQ, per-tensor",
"quantized_op_types": [
"Conv",
"MatMul"
],
"per_channel": false,
"max_relative_l2_gate": 0.001,
"source_cpu_parity": {
"ramp": {
"max_abs": 1.5974044799804688e-05,
"relative_l2": 8.73707802280739e-07
},
"pattern": {
"max_abs": 2.8371810913085938e-05,
Traceback (most recent call last):
"relative_l2": 2.2867125923021193e-06
}
},
"quantized_sha256": "54a05fafd3055a9e46566819cfe2c55d3667bd3d2003a791092940bb65c88bea",
"quantized_bytes": 31781947,
"quantized_cpu_parity": {
"ramp": {
"max_abs": 1.5696761906147003,
"relative_l2": 0.11774751015264003
},
"pattern": {
"max_abs": 0.7318163514137268,
"relative_l2": 0.050279947518114286
}
},
"status": "failed",
"error": "RuntimeError: quantized Cosmos artifact failed the CPU numerical gate before NPU compilation"
}
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\experiments\probe_internvla_cosmos_amd_npu.py", line 187, in <module>
main()
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\experiments\probe_internvla_cosmos_amd_npu.py", line 136, in main
raise RuntimeError("quantized Cosmos artifact failed the CPU numerical gate before NPU compilation")
RuntimeError: quantized Cosmos artifact failed the CPU numerical gate before NPU compilation
@@ -0,0 +1,54 @@
{
"scope": "real InternVLA Cosmos CI8x8 fixed-shape encoder component only; no action-policy E2E claim",
"hardware": "Ryzen AI 9 HX 370 AMD NPU",
"os": "Windows-11-10.0.26200-SP0",
"onnx": "1.22.0",
"onnxruntime": "1.30.0",
"source_sha256": "fee79864e393df35475ba243e14b4995c5651aa33e7e182cd1fda726425668b7",
"external_weights_sha256": "b9bc3411c10f05daec2ff977698ee100979ef756ed7f0d685275403517558b58",
"fixtures_sha256": "dcbaf1391ca914d4bbccc1cb384daf05666e771d9cdae90c4f069ec8fcf05368",
"input_shape": [
6,
3,
256,
256
],
"output_shape": [
6,
16,
32,
32
],
"quantization": "Conv+MatMul A16W8 QDQ, per-tensor",
"quantized_op_types": [
"Conv",
"MatMul"
],
"per_channel": false,
"max_relative_l2_gate": 0.001,
"source_cpu_parity": {
"ramp": {
"max_abs": 1.5974044799804688e-05,
"relative_l2": 8.73707802280739e-07
},
"pattern": {
"max_abs": 2.8371810913085938e-05,
"relative_l2": 2.2867125923021193e-06
}
},
"quantized_sha256": "54a05fafd3055a9e46566819cfe2c55d3667bd3d2003a791092940bb65c88bea",
"quantized_bytes": 31781947,
"quantized_cpu_parity": {
"ramp": {
"max_abs": 1.5696761906147003,
"relative_l2": 0.11774751015264003
},
"pattern": {
"max_abs": 0.7318163514137268,
"relative_l2": 0.050279947518114286
}
},
"status": "failed",
"error": "RuntimeError: quantized Cosmos artifact failed the CPU numerical gate before NPU compilation",
"traceback": "Traceback (most recent call last):\n File \"\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\experiments\\probe_internvla_cosmos_amd_npu.py\", line 136, in main\n raise RuntimeError(\"quantized Cosmos artifact failed the CPU numerical gate before NPU compilation\")\nRuntimeError: quantized Cosmos artifact failed the CPU numerical gate before NPU compilation\n"
}
@@ -0,0 +1,88 @@
/home/zhout/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/copyreg.py:99: FutureWarning: `isinstance(treespec, LeafSpec)` is deprecated, use `isinstance(treespec, TreeSpec) and treespec.is_leaf()` instead.
return cls.__new__(cls, *args)
[torch.onnx] Obtain model graph for `LatentOnly([...]` with `torch.export.export(..., strict=False)`...
[torch.onnx] Obtain model graph for `LatentOnly([...]` with `torch.export.export(..., strict=False)`... ✅
[torch.onnx] Run decompositions...
[torch.onnx] Run decompositions... ✅
[torch.onnx] Translate the graph into ONNX...
[torch.onnx] Translate the graph into ONNX... ✅
{
"scope": "real InternVLA Cosmos CI8x8 encoder; fixed [6,3,256,256] FP32; component only",
"encoder_sha256": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5",
"source_sha256": {
"model_cosmos.py": "81f523767d356f16856fa35521bc637ac5df9fc8383ca11fc9a58875eb4c97c7",
"cosmos_ci_torch.py": "a88015b3854b8da730b89c6a35eb3b23721608797208847d9b4cb9a8b8d60f5e"
},
"torch": "2.13.0+cpu",
"onnx": "1.22.0",
"onnxruntime": "1.29.0",
"input_shape": [
6,
3,
256,
256
],
"input_dtype": "float32",
"output_shape": [
6,
16,
32,
32
],
"opset": 21,
"export_s": 2.1051182380178943,
"cpu_parity": {
"ramp": {
"max_abs": 1.5974044799804688e-05,
"relative_l2": 8.737077337173105e-07
},
"pattern": {
"max_abs": 2.8371810913085938e-05,
"relative_l2": 2.2867118332214886e-06
}
},
"fixtures": {
"path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-onnx/fixtures.npz",
"sha256": "dcbaf1391ca914d4bbccc1cb384daf05666e771d9cdae90c4f069ec8fcf05368",
"bytes": 2081321
},
"artifact": {
"onnx": {
"path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-onnx/cosmos_encoder.onnx",
"sha256": "fee79864e393df35475ba243e14b4995c5651aa33e7e182cd1fda726425668b7",
"bytes": 502735
},
"external_data": [
{
"path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-onnx/cosmos_encoder.onnx.data",
"sha256": "b9bc3411c10f05daec2ff977698ee100979ef756ed7f0d685275403517558b58",
"bytes": 124649472
}
]
},
"node_op_types": [
"Add",
"Cast",
"CastLike",
"Concat",
"Constant",
"Conv",
"Div",
"Expand",
"GroupNormalization",
"Identity",
"MatMul",
"Mul",
"Pad",
"Pow",
"Reshape",
"Shape",
"Sigmoid",
"Slice",
"Softmax",
"Tile",
"Transpose",
"Unsqueeze"
],
"status": "passed"
}
@@ -0,0 +1,80 @@
{
"scope": "real InternVLA Cosmos CI8x8 encoder; fixed [6,3,256,256] FP32; component only",
"encoder_sha256": "520a3b878e72ee872faccb1211b5d622d194c0fdd177f2f6df097586b8fa98e5",
"source_sha256": {
"model_cosmos.py": "81f523767d356f16856fa35521bc637ac5df9fc8383ca11fc9a58875eb4c97c7",
"cosmos_ci_torch.py": "a88015b3854b8da730b89c6a35eb3b23721608797208847d9b4cb9a8b8d60f5e"
},
"torch": "2.13.0+cpu",
"onnx": "1.22.0",
"onnxruntime": "1.29.0",
"input_shape": [
6,
3,
256,
256
],
"input_dtype": "float32",
"output_shape": [
6,
16,
32,
32
],
"opset": 21,
"export_s": 2.1051182380178943,
"cpu_parity": {
"ramp": {
"max_abs": 1.5974044799804688e-05,
"relative_l2": 8.737077337173105e-07
},
"pattern": {
"max_abs": 2.8371810913085938e-05,
"relative_l2": 2.2867118332214886e-06
}
},
"fixtures": {
"path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-onnx/fixtures.npz",
"sha256": "dcbaf1391ca914d4bbccc1cb384daf05666e771d9cdae90c4f069ec8fcf05368",
"bytes": 2081321
},
"artifact": {
"onnx": {
"path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-onnx/cosmos_encoder.onnx",
"sha256": "fee79864e393df35475ba243e14b4995c5651aa33e7e182cd1fda726425668b7",
"bytes": 502735
},
"external_data": [
{
"path": "/home/zhout/project/edge_infer/models/InternVLA-cosmos-onnx/cosmos_encoder.onnx.data",
"sha256": "b9bc3411c10f05daec2ff977698ee100979ef756ed7f0d685275403517558b58",
"bytes": 124649472
}
]
},
"node_op_types": [
"Add",
"Cast",
"CastLike",
"Concat",
"Constant",
"Conv",
"Div",
"Expand",
"GroupNormalization",
"Identity",
"MatMul",
"Mul",
"Pad",
"Pow",
"Reshape",
"Shape",
"Sigmoid",
"Slice",
"Softmax",
"Tile",
"Transpose",
"Unsqueeze"
],
"status": "passed"
}
@@ -0,0 +1,52 @@
{
"scope": "real InternVLA Cosmos CI8x8 fixed-shape encoder component only; no action-policy E2E claim",
"hardware": "Ryzen AI 9 HX 370 AMD NPU",
"os": "Windows-11-10.0.26200-SP0",
"onnx": "1.22.0",
"onnxruntime": "1.30.0",
"source_sha256": "fee79864e393df35475ba243e14b4995c5651aa33e7e182cd1fda726425668b7",
"external_weights_sha256": "b9bc3411c10f05daec2ff977698ee100979ef756ed7f0d685275403517558b58",
"fixtures_sha256": "dcbaf1391ca914d4bbccc1cb384daf05666e771d9cdae90c4f069ec8fcf05368",
"input_shape": [
6,
3,
256,
256
],
"output_shape": [
6,
16,
32,
32
],
"quantization": "MatMul-only A16W8 QDQ; Conv remains FP32",
"quantized_op_types": [
"Conv",
"MatMul"
],
"per_channel": false,
"max_relative_l2_gate": 0.001,
"source_cpu_parity": {
"ramp": {
"max_abs": 1.5974044799804688e-05,
"relative_l2": 8.73707802280739e-07
},
"pattern": {
"max_abs": 2.8371810913085938e-05,
"relative_l2": 2.2867125923021193e-06
}
},
"quantized_sha256": "e136dcba6253db452def10350932b6b6d492acb0b4b9e16bffc00d94eeebf2d0",
"quantized_bytes": 125116328,
"quantized_cpu_parity": {
"ramp": {
"max_abs": 1.6927719116210938e-05,
"relative_l2": 9.461636356105624e-07
},
"pattern": {
"max_abs": 2.8371810913085938e-05,
"relative_l2": 2.341125601892923e-06
}
},
"status": "passed_cpu_component"
}
@@ -0,0 +1,52 @@
{
"scope": "real InternVLA Cosmos CI8x8 fixed-shape encoder component only; no action-policy E2E claim",
"hardware": "Ryzen AI 9 HX 370 AMD NPU",
"os": "Windows-11-10.0.26200-SP0",
"onnx": "1.22.0",
"onnxruntime": "1.30.0",
"source_sha256": "fee79864e393df35475ba243e14b4995c5651aa33e7e182cd1fda726425668b7",
"external_weights_sha256": "b9bc3411c10f05daec2ff977698ee100979ef756ed7f0d685275403517558b58",
"fixtures_sha256": "dcbaf1391ca914d4bbccc1cb384daf05666e771d9cdae90c4f069ec8fcf05368",
"input_shape": [
6,
3,
256,
256
],
"output_shape": [
6,
16,
32,
32
],
"quantization": "MatMul-only A16W8 QDQ; Conv remains FP32",
"quantized_op_types": [
"Conv",
"MatMul"
],
"per_channel": false,
"max_relative_l2_gate": 0.001,
"source_cpu_parity": {
"ramp": {
"max_abs": 1.5974044799804688e-05,
"relative_l2": 8.73707802280739e-07
},
"pattern": {
"max_abs": 2.8371810913085938e-05,
"relative_l2": 2.2867125923021193e-06
}
},
"quantized_sha256": "e136dcba6253db452def10350932b6b6d492acb0b4b9e16bffc00d94eeebf2d0",
"quantized_bytes": 125116328,
"quantized_cpu_parity": {
"ramp": {
"max_abs": 1.6927719116210938e-05,
"relative_l2": 9.461636356105624e-07
},
"pattern": {
"max_abs": 2.8371810913085938e-05,
"relative_l2": 2.341125601892923e-06
}
},
"status": "passed_cpu_component"
}
@@ -0,0 +1,6 @@
WARNING: Logging before InitGoogleLogging() is written to STDERR
I20260924 04:09:19.598042 44928 register_dynamicdispatch.cpp:49] Running DynamicDispatchOpRegister::register_ops
I20260924 04:09:19.598042 44928 register_castavx.cpp:48] Running CastAvxOpRegister::register_ops
Assertion failed: idx < size(), file C:\Develop\ar\w\vitis_flexml\vitis_flexml\third-party\llvm-project\llvm\include\llvm/ADT/SmallVector.h, line 291
Assertion failed: idx < size(), file C:\Develop\ar\w\vitis_flexml\vitis_flexml\third-party\llvm-project\llvm\include\llvm/ADT/SmallVector.h, line 291
Assertion failed: idx < size(), file C:\Develop\ar\w\vitis_flex
@@ -0,0 +1,6 @@
WARNING: Logging before InitGoogleLogging() is written to STDERR
I20260924 04:11:12.553153 59632 register_dynamicdispatch.cpp:49] Running DynamicDispatchOpRegister::register_ops
I20260924 04:11:12.553153 59632 register_castavx.cpp:48] Running CastAvxOpRegister::register_ops
Assertion failed: idx < size(), file C:\Develop\ar\w\vitis_flexml\vitis_flexml\third-party\llvm-project\llvm\include\llvm/ADT/SmallVector.h, line 291
Assertion failed: idx < size(), file C:\Develop\ar\w\vitis_flexml\vitis_flexml\third-party\llvm-project\llvm\include\llvm/ADT/SmallVector.h, line 291
Assertion failed: idx < size(), file C:\Develop\ar\w\vitis_flexml\vitis_flexml\third-part
@@ -0,0 +1,67 @@
{
"scope": "real InternVLA Cosmos encoder ORT-preprocessed variants, CPU numerical gate only",
"source_sha256": "fee79864e393df35475ba243e14b4995c5651aa33e7e182cd1fda726425668b7",
"preprocessed_sha256": "0afad264b4190add3cf78da6b532244980bafc22973cd9400272714bc96b3f44",
"preprocessed_external_data_sha256": "78ed8c64a8dbee23fdf3809be2cdaf6755e0e1945f364becc590a61ff0081ae3",
"rows": [
{
"name": "source",
"op_types": null,
"sha256": "0afad264b4190add3cf78da6b532244980bafc22973cd9400272714bc96b3f44",
"bytes": 507690,
"checks": [
{
"name": "ramp",
"max_abs": 1.5974044799804688e-05,
"relative_l2": 8.73707802280739e-07
},
{
"name": "pattern",
"max_abs": 2.8371810913085938e-05,
"relative_l2": 2.2867125923021193e-06
}
]
},
{
"name": "matmul_only",
"op_types": [
"MatMul"
],
"sha256": "56b24cfe5c4866a780865d9eda6eb866223fb6bfaab50eb66315f5d64766f1a1",
"bytes": 125116373,
"checks": [
{
"name": "ramp",
"max_abs": 1.6927719116210938e-05,
"relative_l2": 9.461636356105624e-07
},
{
"name": "pattern",
"max_abs": 2.8371810913085938e-05,
"relative_l2": 2.341125601892923e-06
}
]
},
{
"name": "conv_matmul",
"op_types": [
"Conv",
"MatMul"
],
"sha256": "012daec335fb8b96012b6098b69fd727662b87e4eb56fc432ae14ffaa6403963",
"bytes": 31918052,
"checks": [
{
"name": "ramp",
"max_abs": 0.6511603593826294,
"relative_l2": 0.03143759133734766
},
{
"name": "pattern",
"max_abs": 0.6570447683334351,
"relative_l2": 0.02772901072216827
}
]
}
]
}
@@ -0,0 +1,51 @@
WARNING:root:Please consider to run pre-processing before quantization. Refer to example: https://github.com/microsoft/onnxruntime-inference-examples/blob/main/quantization/image_classification/cpu/ReadMe.md
WARNING:root:Expected bias 'val_26' to be an initializer
WARNING:root:Expected bias 'val_31' to be an initializer
WARNING:root:Expected bias 'val_37' to be an initializer
WARNING:root:Expected bias 'val_42' to be an initializer
WARNING:root:Expected bias 'val_47' to be an initializer
WARNING:root:Expected bias 'val_52' to be an initializer
WARNING:root:Expected bias 'val_76' to be an initializer
WARNING:root:Expected bias 'val_81' to be an initializer
WARNING:root:Expected bias 'val_86' to be an initializer
WARNING:root:Expected bias 'val_91' to be an initializer
WARNING:root:Expected bias 'val_96' to be an initializer
WARNING:root:Expected bias 'val_101' to be an initializer
WARNING:root:Please consider pre-processing before quantization. See https://github.com/microsoft/onnxruntime-inference-examples/blob/main/quantization/image_classification/cpu/ReadMe.md
WARNING: Logging before InitGoogleLogging() is written to STDERR
I20260924 04:00:48.821516 63408 register_dynamicdispatch.cpp:49] Running DynamicDispatchOpRegister::register_ops
I20260924 04:00:48.821516 63408 register_castavx.cpp:48] Running CastAvxOpRegister::register_ops
F20260924 04:01:03.346521 63408 attrs_imp.cpp:38] Check failed: attrs_.count(key) > 0 Attrs doesn't contain attribute scale
2026-09-24 04:01:03.3468623 [F:onnxruntime:, attrs_imp.cpp:38 attrs_imp.cpp] Check failed: attrs_.count(key) > 0 Attrs doesn't contain attribute scale
2026-09-24 04:01:03.3820522 [W:onnxruntime:, pass_main.cpp:419 pass_main.cpp] Unexcepted exception: (Exception type: struct vaip_core::GlogFatalException) public: int __cdecl vaip_core::TarWriter::write(class vaip_core::IStreamReader const & __ptr64,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const & __ptr64) __ptr64
xir_deserialize_cif
xir_deserialize_cif
public: int __cdecl vaip_core::TarWriter::write(class vaip_core::IStreamReader const & __ptr64,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const & __ptr64) __ptr64
xir_deserialize_cif
xir_deserialize_cif
xir_deserialize_cif
xir_deserialize_cif
xir_deserialize_cif
public: int __cdecl vaip_core::TarWriter::write(class vaip_core::IStreamReader const & __ptr64,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const & __ptr64) __ptr64
xir_deserialize_cif
xir_deserialize_cif
xir_deserialize_cif
public: int __cdecl vaip_core::TarWriter::write(class vaip_core::IStreamReader const & __ptr64,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const & __ptr64) __ptr64
public: int __cdecl vaip_core::TarWriter::write(class vaip_core::IStreamReader const & __ptr64,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const & __ptr64) __ptr64
public: int __cdecl vaip_core::TarWriter::write(class vaip_core::IStreamReader const & __ptr64,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const & __ptr64) __ptr64
public: int __cdecl vaip_core::TarWriter::write(class vaip_core::IStreamReader const & __ptr64,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const & __ptr64) __ptr64
ReleaseEpFactory
public: class vaip_core::TryFuseProto * __ptr64 __cdecl vaip_core::DpuSubgraphEntryProto::mutable_try_fuse(void) __ptr64
public: class vaip_core::TryFuseProto * __ptr64 __cdecl vaip_core::DpuSubgraphEntryProto::mutable_try_fuse(void) __ptr64
public: class vaip_cxx::Model & __ptr64 __cdecl vaip_cxx::Model::set_metadata(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const & __ptr64,class std::basic_string<char,struct std::char_traits<char>,class std::al
class std::shared_ptr<class vaip_core::PassContext> __cdecl vaip_core::load_context(class std::filesystem::path const & __ptr64)
public: static void __cdecl vaip_core::IPass::run_passes(class std::vector<class std::shared_ptr<class vaip_core::IPass>,class std::allocator<class std::shared_ptr<class vaip_core::IPass> > >,struct onnxruntime::Graph & __ptr64)
class std::vector<class std::unique_ptr<class vaip_core::ExecutionProvider,struct std::default_delete<class vaip_core::ExecutionProvider> >,class std::allocator<class std::unique_ptr<class vaip_core::ExecutionProvider,struct std::default_delete<class vai
public: class vaip_cxx::ModelConstRef __cdecl vaip_cxx::Model::ref(void)const __ptr64
class std::vector<class std::unique_ptr<class vaip_core::ExecutionProvider,struct std::default_delete<class vaip_core::ExecutionProvider> >,class std::allocator<class std::unique_ptr<class vaip_core::ExecutionProvider,struct std::default_delete<class vai
class std::vector<class std::unique_ptr<class vaip_core::ExecutionProvider,struct std::default_delete<class vaip_core::ExecutionProvider> >,class std::allocator<class std::unique_ptr<class vaip_core::ExecutionProvider,struct std::default_delete<class vai
compile_onnx_model_vitisai_ep_v4
morphizen_main
morphizen_main
PyInit_onnxruntime_pybind11_state
PyInit_onnxruntime_pybind11_state
@@ -0,0 +1,108 @@
{
"scope": "A16W8 QDQ layout sweep on real InternVLA Cosmos fixed encoder; CPU numerics only, no NPU placement",
"source_sha256": "fee79864e393df35475ba243e14b4995c5651aa33e7e182cd1fda726425668b7",
"fixtures_sha256": "dcbaf1391ca914d4bbccc1cb384daf05666e771d9cdae90c4f069ec8fcf05368",
"rows": [
{
"name": "matmul_only",
"ops": [
"MatMul"
],
"per_channel": false,
"quantize_s": 3.3563553370186128,
"fixtures": [
{
"name": "ramp",
"finite": true,
"max_abs": 1.6927719116210938e-05,
"relative_l2": 9.461636356105624e-07
},
{
"name": "pattern",
"finite": true,
"max_abs": 2.8371810913085938e-05,
"relative_l2": 2.341125601892923e-06
}
],
"sha256": "e136dcba6253db452def10350932b6b6d492acb0b4b9e16bffc00d94eeebf2d0",
"bytes": 125116328,
"status": "passed_cpu_probe"
},
{
"name": "conv_only",
"ops": [
"Conv"
],
"per_channel": false,
"quantize_s": 3.55796918598935,
"fixtures": [
{
"name": "ramp",
"finite": true,
"max_abs": 1.5696761906147003,
"relative_l2": 0.11774746477319055
},
{
"name": "pattern",
"finite": true,
"max_abs": 0.7318163514137268,
"relative_l2": 0.050280111016770226
}
],
"sha256": "2f43d5f17dd1edae16ee28e6e3c9d26b29a521c38c2cdefc1de326788d967c77",
"bytes": 31779976,
"status": "passed_cpu_probe"
},
{
"name": "both_per_channel",
"ops": [
"Conv",
"MatMul"
],
"per_channel": true,
"quantize_s": 3.8076898910221644,
"fixtures": [
{
"name": "ramp",
"finite": true,
"max_abs": 0.6511603593826294,
"relative_l2": 0.03143759133734766
},
{
"name": "pattern",
"finite": true,
"max_abs": 0.6570447683334351,
"relative_l2": 0.02772901072216827
}
],
"sha256": "6d59ebfa2d9fec3b360e4be4acb7743d0d8e52b5bb348cbd1479740f2793bb6c",
"bytes": 31918007,
"status": "passed_cpu_probe"
},
{
"name": "matmul_per_channel",
"ops": [
"MatMul"
],
"per_channel": true,
"quantize_s": 3.0269019000115804,
"fixtures": [
{
"name": "ramp",
"finite": true,
"max_abs": 1.6927719116210938e-05,
"relative_l2": 9.461636356105624e-07
},
{
"name": "pattern",
"finite": true,
"max_abs": 2.8371810913085938e-05,
"relative_l2": 2.341125601892923e-06
}
],
"sha256": "e136dcba6253db452def10350932b6b6d492acb0b4b9e16bffc00d94eeebf2d0",
"bytes": 125116328,
"status": "passed_cpu_probe"
}
]
}
@@ -0,0 +1,22 @@
{
"scope": "real InternVLA Cosmos fixed encoder A16W8 QDQ on CPU; no NPU placement or action-policy E2E claim",
"quantized_sha256": "54a05fafd3055a9e46566819cfe2c55d3667bd3d2003a791092940bb65c88bea",
"fixtures_sha256": "dcbaf1391ca914d4bbccc1cb384daf05666e771d9cdae90c4f069ec8fcf05368",
"providers": [
"CPUExecutionProvider"
],
"rows": [
{
"fixture": "ramp",
"finite": true,
"max_abs": 1.5696761906147003,
"relative_l2": 0.11774751015264003
},
{
"fixture": "pattern",
"finite": true,
"max_abs": 0.7318163514137268,
"relative_l2": 0.050279947518114286
}
]
}
@@ -0,0 +1,26 @@
# MiniCPM-o native Windows model-storage comparison
The native Windows MiniCPM-o GGUF Omni path completes the combined synthetic spoken-question + JPEG to text + speech workload with the model weights on local NTFS. A four-run sequential storage comparison associates the earlier severe slowdown with loading those weights through the WSL UNC path. It does not isolate causality: OS file cache, thermal state, and run order were not controlled. The original slow UNC results remain valid for that deployment path.
The ten source GGUF artifacts (8,872,306,371 bytes total) were copied without conversion from `/home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf` to `C:\Users\zhout\w2\minicpmo_local_gguf`. The [comparison summary](io_comparison.json) covers four requests; the individual JSON reports pin the revision `db25077c33951fe163b42986fba0132e279872a2`, all ten artifact SHA256 hashes, the CPU or Radeon CLI SHA256, input hashes, a 21 GiB explicit shared-RAM capacity/demand, actual placement, terminal event, output and zero shutdown ledger. The same fixture and CLI were used within each storage pair. Each condition started a new Omni controller and executed one C++ model session.
The host was an AMD Ryzen AI 9 HX 370 laptop running Windows 11 build 26200 with Radeon 890M graphics driver `32.0.22018.6001`; the Windows controller environment had installed vLLM `0.29.0+cu134` and vLLM-Omni `0.29.0`. The whole-session model used the pinned Q4_K_M language and F16 auxiliary GGUF artifacts through the separately SHA-pinned native CPU/Vulkan CLI builds. The input was a 448×448 synthetic JPEG and 3.084 s, 16 kHz spoken question, with a 2,048-token context, at most 96 new tokens, serial concurrency one and a fresh C++ worker per request. Timing includes the complete request, worker loading and handoff but excludes controller startup; power and thermal conditions were not captured. This is not a GPU-only graph: Token2Wav remained on CPU.
| Windows placement and storage | Controller startup | Complete request | Worker load | Prefetch warnings |
|---|---:|---:|---:|---:|
| CPU, native NTFS | 9.02 s | 21.16 s | 12.75 s | 0 |
| CPU, WSL UNC | 52.36 s | 79.20 s | 40.90 s | 2 |
| CPU + Radeon 890M, native NTFS | 9.05 s | 16.89 s | 4.90 s | 0 |
| CPU + Radeon 890M, WSL UNC | 50.66 s | 90.63 s | 27.53 s | 2 |
All four requests answered “The square in the image is red.” and produced complete nonzero 24 kHz WAV files. The CPU native-weight route additionally passed [one warmup plus 20 serial measured complete requests](cpu_native_profile20.json): nearest-rank wall p50/p95 **23.62/23.88 s**, 20/20 correct texts and nonzero 1.60–2.88 s WAVs, no prefetch warning in [22 worker logs](cpu_native_profile20_worker_logs/), and no stale output or resource reservation after in-flight abort. Controller startup was 9.23 s, excluded from those request times; maximum sampled worker RSS was 13.10 GB. The first measured [WAV](cpu_native_profile20.wav) exactly matched the expected sentence using pinned Whisper tiny.en ([ASR proxy](cpu_native_profile20_asr.json), WER 0).
The Radeon+CPU native-weight route also passed [one warmup plus 20 serial measured requests](radeon_native_profile20.json): nearest-rank wall p50/p95 **16.35/17.20 s**, 20/20 expected texts and nonzero 2.08–2.88 s WAVs, no prefetch warning in [22 worker logs](radeon_native_profile20_worker_logs/), and no stale output or reservation after abort. All 21 successful worker logs identify Radeon 890M Vulkan0 language (37/37 layers) and vision, with CPU Token2Wav; the abort log does not establish a successful placement. Controller startup was 8.75 s, excluded from request times; maximum sampled worker RSS was 15.30 GB. The first measured [WAV](radeon_native_profile20.wav) exactly matched the sentence using [pinned ASR](radeon_native_profile20_asr.json), WER 0. These two one-output ASR results are only speech-intelligibility proxies. The CPU and Radeon runs were sequential, not randomized or thermal/power-matched, so their latency values do not establish an iGPU speedup.
An initial Radeon repeat was correctly [refused](radeon_native_profile20_refusal.json) before model load when the 21 GiB shared-RAM reservation no longer fit available memory after controller startup. The original [driver trace](radeon_native_profile20_refusal_driver.log) is retained. After reclaiming file cache, the identical 21 GiB configuration admitted and completed the profile above; this is evidence of explicit admission behavior, not an invitation to overcommit memory.
The four one-request [CPU-native](cpu_native.json), [CPU-UNC](cpu_unc.json), [Radeon-native](radeon_native.json), and [Radeon-UNC](radeon_unc.json) reports have companion driver and copied worker logs in this directory. The earlier [UNC Radeon 20-request profile](../minicpmo_omni_radeon_profile20/README.md) remains the measured result for that storage path: p50/p95 87.27/91.45 s and prefetch warnings on each worker. Local NTFS is a supported deployment choice here, but no general placement speedup is inferred from comparing the separate CPU and Radeon samples. The synthetic fixture does not establish general image/audio quality, playable streaming, concurrency, loading-peak admission or sustained power/thermal behavior.
The checked-in Windows log copies have line endings and trailing whitespace normalized for review; the native worker-log directories remain under `C:\Users\zhout\w2\minicpmo_io_{cpu,radeon}_native_profile20_logs`. The JSON reports are the primary timing records, and the source GGUF weights remain outside Git.
To reproduce, use [`probe_omni_minicpmo_cpp.py`](../../../../experiments/probe_omni_minicpmo_cpp.py) with the pinned fixtures and artifact report in [`minicpmo_cpp_radeon890m_prompted`](../minicpmo_cpp_radeon890m_prompted/), `--model-dir C:\Users\zhout\w2\minicpmo_local_gguf`, an exact pinned CLI executable/hash, `--capacity-gib 21 --reserve-gib 21`, and `--warmups 1 --repeats 20 --abort-check`. The [older Radeon profile README](../minicpmo_omni_radeon_profile20/README.md) contains the complete PowerShell invocation; change only the model directory and output paths for this test. Do not compare the native and UNC numbers as a randomized benchmark.
@@ -0,0 +1,173 @@
{
"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": "29247187ddf3b13591cd14cc070e5e25c6bb7547296acc5e8a74e2945811d725",
"reference_sha256": "cf4bb5cd9acbfbf67596d4a53310652b61ef4b7ede1d54eb03ef4882ca40223a",
"input_sha256": {
"audio_wav": "14ee147cbf2ce9afd9e32c8c8228d7cfe11985cd7e63456b2ad33871492aefcc",
"image_jpeg": "22c7ccea466a3f551c512045e6316c7597408d4e0a20205502f55784d977aa8d"
},
"memory_budget": {
"capacities": {
"host_ram": 22548578304
},
"demands": {
"host_ram": 22548578304
}
},
"profile_count": 1,
"warmup_count": 0,
"host_available_bytes_before": 31848599552,
"startup_s": 9.01500210002996,
"execution_plan_at_start": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "797fb63250834af5b8486621226b8762",
"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": "29247187ddf3b13591cd14cc070e5e25c6bb7547296acc5e8a74e2945811d725",
"requested_placement": "cpu",
"ggml_vk_visible_devices": null,
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": [],
"measured": [
{
"text": "The square in the image is red.",
"wall_s": 21.163147200015374,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 48000,
"duration_s": 2.0,
"pcm_sha256": "5fb727830d0b771c5735cf657d54222c8f5612c6da88e6ea64e328ee5dea9da9"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "797fb63250834af5b8486621226b8762",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 21.14202359993942,
"peak_sampled_rss_bytes": 13105098752,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_logs\\minicpmo-1-999557dffc144f04ab437c3b640dba46.log"
}
}
],
"complete_request": {
"text": "The square in the image is red.",
"wall_s": 21.163147200015374,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 48000,
"duration_s": 2.0,
"pcm_sha256": "5fb727830d0b771c5735cf657d54222c8f5612c6da88e6ea64e328ee5dea9da9"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "797fb63250834af5b8486621226b8762",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 21.14202359993942,
"peak_sampled_rss_bytes": 13105098752,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_logs\\minicpmo-1-999557dffc144f04ab437c3b640dba46.log"
}
},
"nearest_rank_p50_wall_s": 21.163147200015374,
"nearest_rank_p95_wall_s": 21.163147200015374,
"output_wav": "\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\results\\e2e_expansion_20260923\\evidence\\minicpmo_omni_native_weights_io\\cpu_native.wav",
"execution_plan_after_request": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "797fb63250834af5b8486621226b8762",
"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": "29247187ddf3b13591cd14cc070e5e25c6bb7547296acc5e8a74e2945811d725",
"requested_placement": "cpu",
"ggml_vk_visible_devices": null,
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": 56708,
"peak_sampled_rss_bytes": 13105098752,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_logs\\minicpmo-1-999557dffc144f04ab437c3b640dba46.log"
}
},
"status": "passed",
"ledger_after_shutdown": {
"capacities": {
"host_ram": 22548578304
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
}
@@ -0,0 +1,165 @@
INFO 09-24 04:17:56 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed.
INFO 09-24 04:17:56 [patch.py:510] inductor factorable-divisibility patch: installed.
INFO 09-24 04:17:59 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn
WARNING 09-24 04:17:59 [stage_init_utils.py:1887] [stage_init] Failed to load transfer config: [Errno 13] Permission denied: 'C:\\Users\\zhout'
{
"scope": "MiniCPM-o GGUF complete audio+image\u2192text+speech through Omni StageRuntime/StagePool",
"placement": "cpu",
"model_revision": "db25077c33951fe163b42986fba0132e279872a2",
"cli_sha256": "29247187ddf3b13591cd14cc070e5e25c6bb7547296acc5e8a74e2945811d725",
"reference_sha256": "cf4bb5cd9acbfbf67596d4a53310652b61ef4b7ede1d54eb03ef4882ca40223a",
"input_sha256": {
"audio_wav": "14ee147cbf2ce9afd9e32c8c8228d7cfe11985cd7e63456b2ad33871492aefcc",
"image_jpeg": "22c7ccea466a3f551c512045e6316c7597408d4e0a20205502f55784d977aa8d"
},
"memory_budget": {
"capacities": {
"host_ram": 22548578304
},
"demands": {
"host_ram": 22548578304
}
},
"profile_count": 1,
"warmup_count": 0,
"host_available_bytes_before": 31848599552,
"startup_s": 9.01500210002996,
"execution_plan_at_start": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "797fb63250834af5b8486621226b8762",
"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": "29247187ddf3b13591cd14cc070e5e25c6bb7547296acc5e8a74e2945811d725",
"requested_placement": "cpu",
"ggml_vk_visible_devices": null,
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": [],
"measured": [
{
"text": "The square in the image is red.",
"wall_s": 21.163147200015374,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 48000,
"duration_s": 2.0,
"pcm_sha256": "5fb727830d0b771c5735cf657d54222c8f5612c6da88e6ea64e328ee5dea9da9"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "797fb63250834af5b8486621226b8762",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 21.14202359993942,
"peak_sampled_rss_bytes": 13105098752,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_logs\\minicpmo-1-999557dffc144f04ab437c3b640dba46.log"
}
}
],
"complete_request": {
"text": "The square in the image is red.",
"wall_s": 21.163147200015374,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 48000,
"duration_s": 2.0,
"pcm_sha256": "5fb727830d0b771c5735cf657d54222c8f5612c6da88e6ea64e328ee5dea9da9"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "797fb63250834af5b8486621226b8762",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 21.14202359993942,
"peak_sampled_rss_bytes": 13105098752,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_logs\\minicpmo-1-999557dffc144f04ab437c3b640dba46.log"
}
},
"nearest_rank_p50_wall_s": 21.163147200015374,
"nearest_rank_p95_wall_s": 21.163147200015374,
"output_wav": "\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\results\\e2e_expansion_20260923\\evidence\\minicpmo_omni_native_weights_io\\cpu_native.wav",
"execution_plan_after_request": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "797fb63250834af5b8486621226b8762",
"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": "29247187ddf3b13591cd14cc070e5e25c6bb7547296acc5e8a74e2945811d725",
"requested_placement": "cpu",
"ggml_vk_visible_devices": null,
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": 56708,
"peak_sampled_rss_bytes": 13105098752,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_logs\\minicpmo-1-999557dffc144f04ab437c3b640dba46.log"
}
},
"status": "passed",
"ledger_after_shutdown": {
"capacities": {
"host_ram": 22548578304
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
}
@@ -0,0 +1,727 @@
{
"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": "29247187ddf3b13591cd14cc070e5e25c6bb7547296acc5e8a74e2945811d725",
"reference_sha256": "cf4bb5cd9acbfbf67596d4a53310652b61ef4b7ede1d54eb03ef4882ca40223a",
"input_sha256": {
"audio_wav": "14ee147cbf2ce9afd9e32c8c8228d7cfe11985cd7e63456b2ad33871492aefcc",
"image_jpeg": "22c7ccea466a3f551c512045e6316c7597408d4e0a20205502f55784d977aa8d"
},
"memory_budget": {
"capacities": {
"host_ram": 22548578304
},
"demands": {
"host_ram": 22548578304
}
},
"profile_count": 20,
"warmup_count": 1,
"host_available_bytes_before": 23579480064,
"startup_s": 9.227718599955551,
"execution_plan_at_start": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"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": "29247187ddf3b13591cd14cc070e5e25c6bb7547296acc5e8a74e2945811d725",
"requested_placement": "cpu",
"ggml_vk_visible_devices": null,
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": 24.470191000029445,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 61440,
"duration_s": 2.56,
"pcm_sha256": "b623d109a96823251214bc9108c6ecc1cbd959d95a706dd1765ed44b3e1396fd"
},
"stage_event": {
"request_id": "minicpmo-warmup-0",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 24.44817290001083,
"peak_sampled_rss_bytes": 13103550464,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-1-0caf373d5d6748bfba17bc79b0fdf092.log"
}
}
],
"measured": [
{
"text": "The square in the image is red.",
"wall_s": 23.394862000015564,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 52800,
"duration_s": 2.2,
"pcm_sha256": "eb68b09e3deaa3c6f0d2a99a96c76cba958bda1bdf32c3cdf7d4c824e2512ed8"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 2,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.38540779997129,
"peak_sampled_rss_bytes": 13103669248,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-2-a68a4bb2c9c844d09284f99713f42ee3.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.796761499950662,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 62400,
"duration_s": 2.6,
"pcm_sha256": "47278e99d28a1ee4f9d286af800ab4d5f2305ee6fd8bcf0439ffdcddf3ddf6bd"
},
"stage_event": {
"request_id": "minicpmo-measured-1",
"stage_id": 0,
"epoch": 3,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.78645650006365,
"peak_sampled_rss_bytes": 13103607808,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-3-2d52a8a1746649cf86ef6bd0d3b084be.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.850380199961364,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 69120,
"duration_s": 2.88,
"pcm_sha256": "110c54bce1e963cc6116a08da159426c2bd59aab7f3d437625d5fbf0479f0ae1"
},
"stage_event": {
"request_id": "minicpmo-measured-2",
"stage_id": 0,
"epoch": 4,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.839218000066467,
"peak_sampled_rss_bytes": 13103464448,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-4-b46c9bf60d5442aa90a5b54449102ae5.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.753635700093582,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 66240,
"duration_s": 2.76,
"pcm_sha256": "ed375eb8ebd01c9b15d00bc4cf8828a2272715d94fc9a4592418bedb03079b61"
},
"stage_event": {
"request_id": "minicpmo-measured-3",
"stage_id": 0,
"epoch": 5,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.744324499974027,
"peak_sampled_rss_bytes": 13103575040,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-5-f21754fc03f3477d85b4e6c6b2e6a0fc.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.58140080003068,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 59520,
"duration_s": 2.48,
"pcm_sha256": "51266e42d98ef601f0f3374f3fa05c4103c50c19986eb9de02e1e2c7f92ef07e"
},
"stage_event": {
"request_id": "minicpmo-measured-4",
"stage_id": 0,
"epoch": 6,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.572613300057128,
"peak_sampled_rss_bytes": 13103710208,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-6-699e00987db54dc78cb7c8fbcbfdb18a.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.262896099942736,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 55680,
"duration_s": 2.32,
"pcm_sha256": "7c4857b8a31b822bea5f1bba414f40783da235946505e943558fdda2484c44a7"
},
"stage_event": {
"request_id": "minicpmo-measured-5",
"stage_id": 0,
"epoch": 7,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.254388200002722,
"peak_sampled_rss_bytes": 13103624192,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-7-9fd31face69845ba8950d00209640d98.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.707535000052303,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 61440,
"duration_s": 2.56,
"pcm_sha256": "24bb28ec1f42d54a064392acf5e49c37197577b8e882eec9f918c566e7e8b80b"
},
"stage_event": {
"request_id": "minicpmo-measured-6",
"stage_id": 0,
"epoch": 8,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.69719089998398,
"peak_sampled_rss_bytes": 13103656960,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-8-32008986f26448b8b6252c832b04ff80.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.619812299963087,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 54720,
"duration_s": 2.28,
"pcm_sha256": "96558f1cebd610121986bf7b32bab102e004f8c6a690f454f58da02cd03405be"
},
"stage_event": {
"request_id": "minicpmo-measured-7",
"stage_id": 0,
"epoch": 9,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.614285299903713,
"peak_sampled_rss_bytes": 13103632384,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-9-f3b0764945534992b4be5776816d7dc3.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.87777569994796,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 67200,
"duration_s": 2.8,
"pcm_sha256": "95c93f4ea852f75da052a962ebb061c895ef0e43915867ed4c270104d8f2b49e"
},
"stage_event": {
"request_id": "minicpmo-measured-8",
"stage_id": 0,
"epoch": 10,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.864101100014523,
"peak_sampled_rss_bytes": 13103677440,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-10-b23dd68a31c84ee4b759b3cfffdef482.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.517970300046727,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 60480,
"duration_s": 2.52,
"pcm_sha256": "5e82218b9a7be6663a6c410abf2af8034bcad3021d8826af344c1dfdba1c7b10"
},
"stage_event": {
"request_id": "minicpmo-measured-9",
"stage_id": 0,
"epoch": 11,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.50602660002187,
"peak_sampled_rss_bytes": 13103689728,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-11-a35d11dac08243a493702a4447415115.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.392010999959894,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 55680,
"duration_s": 2.32,
"pcm_sha256": "78e503ccc35be5748c8628b6c2f0f1c05763981c852bc8a0cf150c245c9699bd"
},
"stage_event": {
"request_id": "minicpmo-measured-10",
"stage_id": 0,
"epoch": 12,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.382912799948826,
"peak_sampled_rss_bytes": 13103501312,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-12-07599db1769b4335b84c8d82a45fcfd6.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.86784219997935,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 56640,
"duration_s": 2.36,
"pcm_sha256": "29dd8eaa311d7e54fac1f1eb8d6bcb69e75054b6d0746870d19f5ea81b819193"
},
"stage_event": {
"request_id": "minicpmo-measured-11",
"stage_id": 0,
"epoch": 13,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.859692300087772,
"peak_sampled_rss_bytes": 13103624192,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-13-e1314e7f64944d46a6541d51980f34cf.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 22.873880599974655,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 58560,
"duration_s": 2.44,
"pcm_sha256": "0c8626dab5f9fb5426b5aced6b94b7952232c5fef0b840d64f19893424f10784"
},
"stage_event": {
"request_id": "minicpmo-measured-12",
"stage_id": 0,
"epoch": 14,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 22.86469610000495,
"peak_sampled_rss_bytes": 13103603712,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-14-896ac8c055d94cae8c7747ff435a8198.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.422426000004634,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 52800,
"duration_s": 2.2,
"pcm_sha256": "3ebf596dc1ad6b726819eaa4395152baf5e0eb51f99177a7caa43a74fb197d3d"
},
"stage_event": {
"request_id": "minicpmo-measured-13",
"stage_id": 0,
"epoch": 15,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.41397989995312,
"peak_sampled_rss_bytes": 13103411200,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-15-f9cfe6f742844074aa4c9149e342ceca.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.663394100032747,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 53760,
"duration_s": 2.24,
"pcm_sha256": "2e18d7256f76582001f1a00b08d1d213fb7000e150d7a75e0cddcd6cb917f131"
},
"stage_event": {
"request_id": "minicpmo-measured-14",
"stage_id": 0,
"epoch": 16,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.653667400009,
"peak_sampled_rss_bytes": 13103333376,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-16-5d4b9ec6bf45471f9eec2d5b960e4231.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 21.519943799939938,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 38400,
"duration_s": 1.6,
"pcm_sha256": "8881f07d8d8745f4a1deb775870d9cca00cf9d4b464ce6610f596f9156cad640"
},
"stage_event": {
"request_id": "minicpmo-measured-15",
"stage_id": 0,
"epoch": 17,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 21.510163799976,
"peak_sampled_rss_bytes": 13097029632,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-17-16244117244f4373919d880ce2705353.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 24.11228250002023,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 62400,
"duration_s": 2.6,
"pcm_sha256": "94f6219561065b8b576e2d5e12875d68d63274c8108a9bb0cef71c8c9e951240"
},
"stage_event": {
"request_id": "minicpmo-measured-16",
"stage_id": 0,
"epoch": 18,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 24.105954200029373,
"peak_sampled_rss_bytes": 13103681536,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-18-c45d0a1e943c4f0d846be2bce30985d2.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.48929900000803,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 53760,
"duration_s": 2.24,
"pcm_sha256": "f9296c61be98c3104d2f95752750697c69ae34be4fc1699009ebef24be7dfdb8"
},
"stage_event": {
"request_id": "minicpmo-measured-17",
"stage_id": 0,
"epoch": 19,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.480017599998973,
"peak_sampled_rss_bytes": 13103583232,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-19-6180ec6c09e34f7fa7611e0d5d479866.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.647962899995036,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 59520,
"duration_s": 2.48,
"pcm_sha256": "e708d4f82685aa0065a5e83dc737945de704f1d1a3cb32d25c104df4f0dc4398"
},
"stage_event": {
"request_id": "minicpmo-measured-18",
"stage_id": 0,
"epoch": 20,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.636080999975093,
"peak_sampled_rss_bytes": 13103517696,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-20-9204a77eb20c45d8ab6ea187abad6757.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.825408999924548,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 61440,
"duration_s": 2.56,
"pcm_sha256": "d79ccd04952208ffbf4d9ec2954907e4a75f944201d03dd3165637413c3e2fb8"
},
"stage_event": {
"request_id": "minicpmo-measured-19",
"stage_id": 0,
"epoch": 21,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.81448940001428,
"peak_sampled_rss_bytes": 13103603712,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-21-f535a20e7d41454fb0ba4cfe35b2b8e6.log"
}
}
],
"complete_request": {
"text": "The square in the image is red.",
"wall_s": 23.394862000015564,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 52800,
"duration_s": 2.2,
"pcm_sha256": "eb68b09e3deaa3c6f0d2a99a96c76cba958bda1bdf32c3cdf7d4c824e2512ed8"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 2,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.38540779997129,
"peak_sampled_rss_bytes": 13103669248,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-2-a68a4bb2c9c844d09284f99713f42ee3.log"
}
},
"nearest_rank_p50_wall_s": 23.619812299963087,
"nearest_rank_p95_wall_s": 23.87777569994796,
"output_wav": "\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\results\\e2e_expansion_20260923\\evidence\\minicpmo_omni_native_weights_io\\cpu_native_profile20.wav",
"execution_plan_after_request": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"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": "29247187ddf3b13591cd14cc070e5e25c6bb7547296acc5e8a74e2945811d725",
"requested_placement": "cpu",
"ggml_vk_visible_devices": null,
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": 62336,
"peak_sampled_rss_bytes": 13103603712,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-21-f535a20e7d41454fb0ba4cfe35b2b8e6.log"
}
},
"abort_check": {
"stale_output": false,
"ledger": {
"capacities": {
"host_ram": 22548578304
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
},
"status": "passed",
"ledger_after_shutdown": {
"capacities": {
"host_ram": 22548578304
},
"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": "5.14.1",
"torch": "2.13.0+cpu",
"wav_sha256": "069782f1379e8f5c8064d5205d9b8f74f3ec95a09ba8183a9e0156387ea9e812",
"input_sample_rate": 24000,
"input_duration_s": 2.2,
"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": 0.8092725099995732,
"asr_inference_s": 0.3029969170456752
}
@@ -0,0 +1,719 @@
INFO 09-24 04:27:37 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed.
INFO 09-24 04:27:37 [patch.py:510] inductor factorable-divisibility patch: installed.
INFO 09-24 04:27:41 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn
WARNING 09-24 04:27:41 [stage_init_utils.py:1887] [stage_init] Failed to load transfer config: [Errno 13] Permission denied: 'C:\\Users\\zhout'
{
"scope": "MiniCPM-o GGUF complete audio+image\u2192text+speech through Omni StageRuntime/StagePool",
"placement": "cpu",
"model_revision": "db25077c33951fe163b42986fba0132e279872a2",
"cli_sha256": "29247187ddf3b13591cd14cc070e5e25c6bb7547296acc5e8a74e2945811d725",
"reference_sha256": "cf4bb5cd9acbfbf67596d4a53310652b61ef4b7ede1d54eb03ef4882ca40223a",
"input_sha256": {
"audio_wav": "14ee147cbf2ce9afd9e32c8c8228d7cfe11985cd7e63456b2ad33871492aefcc",
"image_jpeg": "22c7ccea466a3f551c512045e6316c7597408d4e0a20205502f55784d977aa8d"
},
"memory_budget": {
"capacities": {
"host_ram": 22548578304
},
"demands": {
"host_ram": 22548578304
}
},
"profile_count": 20,
"warmup_count": 1,
"host_available_bytes_before": 23579480064,
"startup_s": 9.227718599955551,
"execution_plan_at_start": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"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": "29247187ddf3b13591cd14cc070e5e25c6bb7547296acc5e8a74e2945811d725",
"requested_placement": "cpu",
"ggml_vk_visible_devices": null,
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": 24.470191000029445,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 61440,
"duration_s": 2.56,
"pcm_sha256": "b623d109a96823251214bc9108c6ecc1cbd959d95a706dd1765ed44b3e1396fd"
},
"stage_event": {
"request_id": "minicpmo-warmup-0",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 24.44817290001083,
"peak_sampled_rss_bytes": 13103550464,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-1-0caf373d5d6748bfba17bc79b0fdf092.log"
}
}
],
"measured": [
{
"text": "The square in the image is red.",
"wall_s": 23.394862000015564,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 52800,
"duration_s": 2.2,
"pcm_sha256": "eb68b09e3deaa3c6f0d2a99a96c76cba958bda1bdf32c3cdf7d4c824e2512ed8"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 2,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.38540779997129,
"peak_sampled_rss_bytes": 13103669248,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-2-a68a4bb2c9c844d09284f99713f42ee3.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.796761499950662,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 62400,
"duration_s": 2.6,
"pcm_sha256": "47278e99d28a1ee4f9d286af800ab4d5f2305ee6fd8bcf0439ffdcddf3ddf6bd"
},
"stage_event": {
"request_id": "minicpmo-measured-1",
"stage_id": 0,
"epoch": 3,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.78645650006365,
"peak_sampled_rss_bytes": 13103607808,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-3-2d52a8a1746649cf86ef6bd0d3b084be.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.850380199961364,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 69120,
"duration_s": 2.88,
"pcm_sha256": "110c54bce1e963cc6116a08da159426c2bd59aab7f3d437625d5fbf0479f0ae1"
},
"stage_event": {
"request_id": "minicpmo-measured-2",
"stage_id": 0,
"epoch": 4,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.839218000066467,
"peak_sampled_rss_bytes": 13103464448,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-4-b46c9bf60d5442aa90a5b54449102ae5.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.753635700093582,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 66240,
"duration_s": 2.76,
"pcm_sha256": "ed375eb8ebd01c9b15d00bc4cf8828a2272715d94fc9a4592418bedb03079b61"
},
"stage_event": {
"request_id": "minicpmo-measured-3",
"stage_id": 0,
"epoch": 5,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.744324499974027,
"peak_sampled_rss_bytes": 13103575040,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-5-f21754fc03f3477d85b4e6c6b2e6a0fc.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.58140080003068,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 59520,
"duration_s": 2.48,
"pcm_sha256": "51266e42d98ef601f0f3374f3fa05c4103c50c19986eb9de02e1e2c7f92ef07e"
},
"stage_event": {
"request_id": "minicpmo-measured-4",
"stage_id": 0,
"epoch": 6,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.572613300057128,
"peak_sampled_rss_bytes": 13103710208,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-6-699e00987db54dc78cb7c8fbcbfdb18a.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.262896099942736,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 55680,
"duration_s": 2.32,
"pcm_sha256": "7c4857b8a31b822bea5f1bba414f40783da235946505e943558fdda2484c44a7"
},
"stage_event": {
"request_id": "minicpmo-measured-5",
"stage_id": 0,
"epoch": 7,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.254388200002722,
"peak_sampled_rss_bytes": 13103624192,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-7-9fd31face69845ba8950d00209640d98.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.707535000052303,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 61440,
"duration_s": 2.56,
"pcm_sha256": "24bb28ec1f42d54a064392acf5e49c37197577b8e882eec9f918c566e7e8b80b"
},
"stage_event": {
"request_id": "minicpmo-measured-6",
"stage_id": 0,
"epoch": 8,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.69719089998398,
"peak_sampled_rss_bytes": 13103656960,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-8-32008986f26448b8b6252c832b04ff80.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.619812299963087,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 54720,
"duration_s": 2.28,
"pcm_sha256": "96558f1cebd610121986bf7b32bab102e004f8c6a690f454f58da02cd03405be"
},
"stage_event": {
"request_id": "minicpmo-measured-7",
"stage_id": 0,
"epoch": 9,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.614285299903713,
"peak_sampled_rss_bytes": 13103632384,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-9-f3b0764945534992b4be5776816d7dc3.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.87777569994796,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 67200,
"duration_s": 2.8,
"pcm_sha256": "95c93f4ea852f75da052a962ebb061c895ef0e43915867ed4c270104d8f2b49e"
},
"stage_event": {
"request_id": "minicpmo-measured-8",
"stage_id": 0,
"epoch": 10,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.864101100014523,
"peak_sampled_rss_bytes": 13103677440,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-10-b23dd68a31c84ee4b759b3cfffdef482.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.517970300046727,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 60480,
"duration_s": 2.52,
"pcm_sha256": "5e82218b9a7be6663a6c410abf2af8034bcad3021d8826af344c1dfdba1c7b10"
},
"stage_event": {
"request_id": "minicpmo-measured-9",
"stage_id": 0,
"epoch": 11,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.50602660002187,
"peak_sampled_rss_bytes": 13103689728,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-11-a35d11dac08243a493702a4447415115.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.392010999959894,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 55680,
"duration_s": 2.32,
"pcm_sha256": "78e503ccc35be5748c8628b6c2f0f1c05763981c852bc8a0cf150c245c9699bd"
},
"stage_event": {
"request_id": "minicpmo-measured-10",
"stage_id": 0,
"epoch": 12,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.382912799948826,
"peak_sampled_rss_bytes": 13103501312,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-12-07599db1769b4335b84c8d82a45fcfd6.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.86784219997935,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 56640,
"duration_s": 2.36,
"pcm_sha256": "29dd8eaa311d7e54fac1f1eb8d6bcb69e75054b6d0746870d19f5ea81b819193"
},
"stage_event": {
"request_id": "minicpmo-measured-11",
"stage_id": 0,
"epoch": 13,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.859692300087772,
"peak_sampled_rss_bytes": 13103624192,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-13-e1314e7f64944d46a6541d51980f34cf.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 22.873880599974655,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 58560,
"duration_s": 2.44,
"pcm_sha256": "0c8626dab5f9fb5426b5aced6b94b7952232c5fef0b840d64f19893424f10784"
},
"stage_event": {
"request_id": "minicpmo-measured-12",
"stage_id": 0,
"epoch": 14,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 22.86469610000495,
"peak_sampled_rss_bytes": 13103603712,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-14-896ac8c055d94cae8c7747ff435a8198.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.422426000004634,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 52800,
"duration_s": 2.2,
"pcm_sha256": "3ebf596dc1ad6b726819eaa4395152baf5e0eb51f99177a7caa43a74fb197d3d"
},
"stage_event": {
"request_id": "minicpmo-measured-13",
"stage_id": 0,
"epoch": 15,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.41397989995312,
"peak_sampled_rss_bytes": 13103411200,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-15-f9cfe6f742844074aa4c9149e342ceca.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.663394100032747,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 53760,
"duration_s": 2.24,
"pcm_sha256": "2e18d7256f76582001f1a00b08d1d213fb7000e150d7a75e0cddcd6cb917f131"
},
"stage_event": {
"request_id": "minicpmo-measured-14",
"stage_id": 0,
"epoch": 16,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.653667400009,
"peak_sampled_rss_bytes": 13103333376,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-16-5d4b9ec6bf45471f9eec2d5b960e4231.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 21.519943799939938,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 38400,
"duration_s": 1.6,
"pcm_sha256": "8881f07d8d8745f4a1deb775870d9cca00cf9d4b464ce6610f596f9156cad640"
},
"stage_event": {
"request_id": "minicpmo-measured-15",
"stage_id": 0,
"epoch": 17,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 21.510163799976,
"peak_sampled_rss_bytes": 13097029632,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-17-16244117244f4373919d880ce2705353.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 24.11228250002023,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 62400,
"duration_s": 2.6,
"pcm_sha256": "94f6219561065b8b576e2d5e12875d68d63274c8108a9bb0cef71c8c9e951240"
},
"stage_event": {
"request_id": "minicpmo-measured-16",
"stage_id": 0,
"epoch": 18,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 24.105954200029373,
"peak_sampled_rss_bytes": 13103681536,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-18-c45d0a1e943c4f0d846be2bce30985d2.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.48929900000803,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 53760,
"duration_s": 2.24,
"pcm_sha256": "f9296c61be98c3104d2f95752750697c69ae34be4fc1699009ebef24be7dfdb8"
},
"stage_event": {
"request_id": "minicpmo-measured-17",
"stage_id": 0,
"epoch": 19,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.480017599998973,
"peak_sampled_rss_bytes": 13103583232,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-19-6180ec6c09e34f7fa7611e0d5d479866.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.647962899995036,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 59520,
"duration_s": 2.48,
"pcm_sha256": "e708d4f82685aa0065a5e83dc737945de704f1d1a3cb32d25c104df4f0dc4398"
},
"stage_event": {
"request_id": "minicpmo-measured-18",
"stage_id": 0,
"epoch": 20,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.636080999975093,
"peak_sampled_rss_bytes": 13103517696,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-20-9204a77eb20c45d8ab6ea187abad6757.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 23.825408999924548,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 61440,
"duration_s": 2.56,
"pcm_sha256": "d79ccd04952208ffbf4d9ec2954907e4a75f944201d03dd3165637413c3e2fb8"
},
"stage_event": {
"request_id": "minicpmo-measured-19",
"stage_id": 0,
"epoch": 21,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.81448940001428,
"peak_sampled_rss_bytes": 13103603712,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-21-f535a20e7d41454fb0ba4cfe35b2b8e6.log"
}
}
],
"complete_request": {
"text": "The square in the image is red.",
"wall_s": 23.394862000015564,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 52800,
"duration_s": 2.2,
"pcm_sha256": "eb68b09e3deaa3c6f0d2a99a96c76cba958bda1bdf32c3cdf7d4c824e2512ed8"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 2,
"seq": 1,
"kind": "audio",
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 23.38540779997129,
"peak_sampled_rss_bytes": 13103669248,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-2-a68a4bb2c9c844d09284f99713f42ee3.log"
}
},
"nearest_rank_p50_wall_s": 23.619812299963087,
"nearest_rank_p95_wall_s": 23.87777569994796,
"output_wav": "\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\results\\e2e_expansion_20260923\\evidence\\minicpmo_omni_native_weights_io\\cpu_native_profile20.wav",
"execution_plan_after_request": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "e28a825aa2224d3ba1be158a4064aa05",
"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": "29247187ddf3b13591cd14cc070e5e25c6bb7547296acc5e8a74e2945811d725",
"requested_placement": "cpu",
"ggml_vk_visible_devices": null,
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": 62336,
"peak_sampled_rss_bytes": 13103603712,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_native_profile20_logs\\minicpmo-21-f535a20e7d41454fb0ba4cfe35b2b8e6.log"
}
},
"abort_check": {
"stale_output": false,
"ledger": {
"capacities": {
"host_ram": 22548578304
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
},
"status": "passed",
"ledger_after_shutdown": {
"capacities": {
"host_ram": 22548578304
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
}
@@ -0,0 +1,469 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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 C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:27:50.307 === omni_init start
04:27:50.308 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:27:50.308 === omni_init: loading new LLM model
04:27:52.188 === omni_init: loading TTS model
04:27:52.188 TTS model: loading with n_gpu_layers=0
04:27:52.419 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:27:52.419 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:27:52.730 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:27:52.734 TTS: head_code loaded, verifying first few values:
04:27:52.734 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:27:52.734 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:27:52.734 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:27:52.769 TTS: weights loaded successfully
04:27:52.769 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:27:52.773 Projector: loaded successfully
04:27:52.774 === omni_init: loading APM model
04:27:52.919 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:27:53.147 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:27:53.147 Token2Wav: all model files found, initializing session...
04:27:53.148 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:27:53.148 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:27:53.485 Token2Wav: initialized successfully
04:27:53.485 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:27:53.485 Token2Wav: 使用 C++ 实现
04:27:53.485 === omni_init success: ctx_llama = 00000151151a6c50
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-1-hzkb3rhz\fixture_
Count: 2
04:27:53.485 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:27:53.485 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-1-hzkb3rhz\fixture_0000.wav
04:27:54.507 system prompt ref_audio embedding: n_pos=20
04:27:56.850 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:27:56.850 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:27:56.850 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:27:56.850 n_past = 72
04:27:56.850
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.36506 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3261.49 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3280.20 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3280.21 ms by vision ( 3280.21 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-1-hzkb3rhz\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
04:28:03.454 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-1-hzkb3rhz\fixture_0001.wav
04:28:03.820 stream_prefill(index=1): user audio embedding: n_pos=31
04:28:05.442
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 8.5893 s
04:28:05.442 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:28:05.442 stream_decode: create tts thread (simplex mode)
04:28:05.442 stream_decode: create t2w thread
04:28:05.442 wait prefill done
04:28:05.442 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:28:05.442 T2W thread (C++) started
<user>
<assistant>04:28:05.445 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:28:05.445 TTS thread started
04:28:05.933 📍 [单工TTS] assistant prompt 完成, n_past=182
04:28:05.933 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:28:06.728 LLM: detected end token, set llm_generation_done=true
04:28:06.728 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]
04:28:06.728 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:28:06.728 📍 轮次 1 结束,记录边界于 n_past=191
04:28:06.728 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]
04:28:06.728 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:28:06.728 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
04:28:06.728 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:28:06.728 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:28:06.729 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:28:06.763 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:28:06.763 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:28:06.764 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:28:06.764 TTS Simplex: first chunk - cleared KV cache
04:28:06.764 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:28:06.864 TTS Simplex: prefill completed, n_past_tts=9
04:28:06.864 TTS Simplex: sampler created
04:28:06.864 TTS simplex: is_audio_bos=true (first audio token)
04:28:06.898 TTS Simplex Phase1: token 1/500: rel_id=767
04:28:06.909 TTS Simplex Phase1: token 2/500: rel_id=1950
04:28:06.924 TTS Simplex Phase1: token 3/500: rel_id=4137
04:28:06.936 TTS Simplex Phase1: token 4/500: rel_id=4137
04:28:06.951 TTS Simplex Phase1: token 5/500: rel_id=4218
04:28:07.050 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:28:07.04:183 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
28:07.04:183 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
28:07.183 TTS Simplex Phase1: token 25/500: rel_id=1720
04:28:07.183 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:28:07.339 TTS Simplex Phase1: EOS token at step 40
04:28:07.339 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:28:07.339 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=48
04:28:07.346 TTS Simplex Phase2: text_eos_embed injected, n_past=49
04:28:07.354 TTS Simplex Phase2: audio_bos injected, n_past=50, starting final generation
04:28:07.471 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:28:07.601 TTS Simplex Phase2: EOS at step 23 (final end)
04:28:07.601 TTS Simplex: chunk 结束,tts_token_buffer 剩余 11 tokens (保留等下一个 chunk)
04:28:07.601 TTS Simplex: is_final_text_chunk=true, flush 剩余 11 tokens 从 tts_token_buffer
04:28:07.601 TTS Simplex: generated 61 audio tokens for chunk 0
04:28:07.601 TTS Simplex: chunk 0 first tokens: [767 1950 4137 4137 4218 ], last tokens: [4218 4218 4137 2031 6082 ]
04:28:07.601 TTS Simplex: updated tts_n_past_accumulated=73, total_generated_tokens=61
04:28:07.602 TTS: finished processing all chunks
04:28:07.602 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:28:07.602 TTS: sent is_final=true to T2W queue (turn end)
04:28:09.471 🎉 首响时间 (First Audio Response): 4028ms
04:28:09.471 T2W线程: wav_0.wav | 0.84s audio | 2286.2ms inference | RTF=2.72 | t=4028ms
04:28:11.670 T2W线程: wav_1.wav | 1.00s audio | 2199.0ms inference | RTF=2.20 | t=6228ms
04:28:13.769 T2W线程: wav_2.wav | 0.72s audio | 2097.9ms inference | RTF=2.91 | t=8326ms
04:28:13.769 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:28:13.769 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:28:13.789 omni_stop_threads: stop signals sent
04:28:13.789 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1965.614ms vocoder=320.504ms total=2286.141ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1817.539ms vocoder=381.421ms total=2198.971ms audio=24000
[timing] call=2 tokens=14 final=1 token2mel=1853.613ms vocoder=244.221ms total=2097.851ms audio=17280
Audio generation completed.
llama_perf_context_print: load time = 13744.49 ms
llama_perf_context_print: prompt eval time = 12446.95 ms / 182 tokens ( 68.39 ms per token, 14.62 tokens per second)
llama_perf_context_print: eval time = 791.45 ms / 9 runs ( 87.94 ms per token, 11.37 tokens per second)
llama_perf_context_print: total time = 21599.75 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 x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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 C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:31:23.545 === omni_init start
04:31:23.546 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:31:23.546 === omni_init: loading new LLM model
04:31:25.521 === omni_init: loading TTS model
04:31:25.521 TTS model: loading with n_gpu_layers=0
04:31:25.760 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:31:25.760 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:31:26.082 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:31:26.086 TTS: head_code loaded, verifying first few values:
04:31:26.086 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:31:26.086 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:31:26.086 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:31:26.116 TTS: weights loaded successfully
04:31:26.116 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:31:26.121 Projector: loaded successfully
04:31:26.121 === omni_init: loading APM model
04:31:26.278 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:31:26.524 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:31:26.524 Token2Wav: all model files found, initializing session...
04:31:26.524 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:31:26.524 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:31:26.867 Token2Wav: initialized successfully
04:31:26.867 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:31:26.867 Token2Wav: 使用 C++ 实现
04:31:26.867 === omni_init success: ctx_llama = 000002bd290d6c50
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-10-jo9cgnya\fixture_
Count: 2
04:31:26.868 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:31:26.868 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-10-jo9cgnya\fixture_0000.wav
04:31:27.869 system prompt ref_audio embedding: n_pos=20
04:31:30.255 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:31:30.255 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:31:30.255 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:31:30.255 n_past = 72
04:31:30.255
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.38745 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3108.12 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3126.69 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3126.70 ms by vision ( 3126.70 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-10-jo9cgnya\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
04:31:36.268 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-10-jo9cgnya\fixture_0001.wav
04:31:36.558 stream_prefill(index=1): user audio embedding: n_pos=31
04:31:38.091
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.83451 s
04:31:38.091 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:31:38.091 stream_decode: create tts thread (simplex mode)
04:31:38.091 stream_decode: create t2w thread
04:31:38.091 wait prefill done
04:31:38.091 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:31:38.091 T2W thread (C++) started
<user>
<assistant>04:31:38.095 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:31:38.096 TTS thread started
04:31:38.585 📍 [单工TTS] assistant prompt 完成, n_past=182
04:31:38.585 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:31:39.380 LLM: detected end token, set llm_generation_done=true
04:31:39.380 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]
04:31:39.380 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:31:39.380 📍 轮次 1 结束,记录边界于 n_past=191
04:31:39.381 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]
04:31:39.381 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:31:39.381 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
04:31:39.381 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:31:39.381 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:31:39.381 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:31:39.422 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:31:39.422 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:31:39.422 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:31:39.422 TTS Simplex: first chunk - cleared KV cache
04:31:39.422 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:31:39.514 TTS Simplex: prefill completed, n_past_tts=9
04:31:39.514 TTS Simplex: sampler created
04:31:39.514 TTS simplex: is_audio_bos=true (first audio token)
04:31:39.547 TTS Simplex Phase1: token 1/500: rel_id=758
04:31:39.561 TTS Simplex Phase1: token 2/500: rel_id=4137
04:31:39.572 TTS Simplex Phase1: token 3/500: rel_id=4137
04:31:39.585 TTS Simplex Phase1: token 4/500: rel_id=4137
04:31:39.599 TTS Simplex Phase1: token 5/500: rel_id=4137
04:31:39.710 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:31:39.832 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:31:39.832 TTS Simplex Phase1: token 25/500: rel_id=2007
04:31:39.832 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:31:39.832 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:31:40.029 TTS Simplex Phase1: EOS token at step 44
04:31:40.029 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:31:40.029 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=52
04:31:40.037 TTS Simplex Phase2: text_eos_embed injected, n_past=53
04:31:40.045 TTS Simplex Phase2: audio_bos injected, n_past=54, starting final generation
04:31:40.124 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:31:40.320 TTS Simplex Phase2: EOS at step 25 (final end)
04:31:40.320 TTS Simplex: chunk 结束,tts_token_buffer 剩余 17 tokens (保留等下一个 chunk)
04:31:40.320 TTS Simplex: is_final_text_chunk=true, flush 剩余 17 tokens 从 tts_token_buffer
04:31:40.320 TTS Simplex: generated 67 audio tokens for chunk 0
04:31:40.320 TTS Simplex: chunk 0 first tokens: [758 4137 4137 4137 4137 ], last tokens: [2031 4218 4137 4137 4137 ]
04:31:40.320 TTS Simplex: updated tts_n_past_accumulated=79, total_generated_tokens=67
04:31:40.321 TTS: finished processing all chunks
04:31:40.321 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:31:40.321 TTS: sent is_final=true to T2W queue (turn end)
04:31:42.164 🎉 首响时间 (First Audio Response): 4073ms
04:31:42.164 T2W线程: wav_0.wav | 0.84s audio | 2330.6ms inference | RTF=2.77 | t=4073ms
04:31:44.374 T2W线程: wav_1.wav | 1.00s audio | 2209.5ms inference | RTF=2.21 | t=6283ms
04:31:46.546 T2W线程: wav_2.wav | 0.96s audio | 2171.1ms inference | RTF=2.26 | t=8455ms
04:31:46.547 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:31:46.547 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:31:46.56604: omni_stop_threads: stop signals sent
31:46.566 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1990.516ms vocoder=340.074ms total=2330.609ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1825.852ms vocoder=383.572ms total=2209.434ms audio=24000
[timing] call=2 tokens=20 final=1 token2mel=1847.212ms vocoder=323.841ms total=2171.062ms audio=23040
Audio generation completed.
llama_perf_context_print: load time = 13062.95 ms
llama_perf_context_print: prompt eval time = 11716.87 ms / 182 tokens ( 64.38 ms per token, 15.53 tokens per second)
llama_perf_context_print: eval time = 792.73 ms / 9 runs ( 88.08 ms per token, 11.35 tokens per second)
llama_perf_context_print: total time = 21043.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 x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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 C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:31:47.428 === omni_init start
04:31:47.428 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:31:47.428 === omni_init: loading new LLM model
04:31:49.406 === omni_init: loading TTS model
04:31:49.406 TTS model: loading with n_gpu_layers=0
04:31:49.649 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:31:49.649 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:31:49.978 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:31:49.981 TTS: head_code loaded, verifying first few values:
04:31:49.981 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:31:49.981 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:31:49.981 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:31:50.011 TTS: weights loaded successfully
04:31:50.011 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:31:50.016 Projector: loaded successfully
04:31:50.016 === omni_init: loading APM model
04:31:50.174 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:31:50.429 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:31:50.429 Token2Wav: all model files found, initializing session...
04:31:50.429 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:31:50.429 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:31:50.788 Token2Wav: initialized successfully
04:31:50.788 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:31:50.788 Token2Wav: 使用 C++ 实现
04:31:50.788 === omni_init success: ctx_llama = 000001f3e1cb6c50
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-11-v4h7bahf\fixture_
Count: 2
04:31:50.788 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:31:50.788 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-11-v4h7bahf\fixture_0000.wav
04:31:51.751 system prompt ref_audio embedding: n_pos=20
04:31:54.071 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:31:54.071 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:31:54.071 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:31:54.071 n_past = 72
04:31:54.071
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.2828 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3093.31 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3114.01 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3114.01 ms by vision ( 3114.01 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-11-v4h7bahf\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
04:31:59.974 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-11-v4h7bahf\fixture_0001.wav
04:32:00.273 stream_prefill(index=1): user audio embedding: n_pos=31
04:32:01.717
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.64452 s
04:32:01.717 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:32:01.717 stream_decode: create tts thread (simplex mode)
04:32:01.717 stream_decode: create t2w thread
04:32:01.717 wait prefill done
04:32:01.717 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:32:01.717 T2W thread (C++) started
<user>
<assistant>04:32:01.721 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:32:01.722 TTS thread started
04:32:02.206 📍 [单工TTS] assistant prompt 完成, n_past=182
04:32:02.206 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:32:03.008 LLM: detected end token, set llm_generation_done=true
04:32:03.008 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]
04:32:03.008 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:32:03.008 📍 轮次 1 结束,记录边界于 n_past=191
04:32:03.008 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]
04:32:03.008 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:32:03.008 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
04:32:03.008 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:32:03.008 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:32:03.009 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:32:03.044 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:32:03.044 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:32:03.044 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:32:03.044 TTS Simplex: first chunk - cleared KV cache
04:32:03.044 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:32:03.139 TTS Simplex: prefill completed, n_past_tts=9
04:32:03.139 TTS Simplex: sampler created
04:32:03.139 TTS simplex: is_audio_bos=true (first audio token)
04:32:03.169 TTS Simplex Phase1: token 1/500: rel_id=758
04:32:03.180 TTS Simplex Phase1: token 2/500: rel_id=4218
04:32:03.191 TTS Simplex Phase1: token 3/500: rel_id=4218
04:32:03.204 TTS Simplex Phase1: token 4/500: rel_id=4218
04:32:03.216 TTS Simplex Phase1: token 5/500: rel_id=4218
04:32:03.348 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:32:03.452 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:32:03.452 TTS Simplex Phase1: token 25/500: rel_id=4634
04:32:03.452 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:32:03.452 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:32:03.633 TTS Simplex Phase1: EOS token at step 42
04:32:03.633 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:32:03.633 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=50
04:32:03.640 TTS Simplex Phase2: text_eos_embed injected, n_past=51
04:32:03.647 TTS Simplex Phase2: audio_bos injected, n_past=52, starting final generation
04:32:03.745 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:32:03.865 TTS Simplex Phase2: EOS at step 20 (final end)
04:32:03.865 TTS Simplex: chunk 结束,tts_token_buffer 剩余 10 tokens (保留等下一个 chunk)
04:32:03.865 TTS Simplex: is_final_text_chunk=true, flush 剩余 10 tokens 从 tts_token_buffer
04:32:03.865 TTS Simplex: generated 60 audio tokens for chunk 0
04:32:03.865 TTS Simplex: chunk 0 first tokens: [758 4218 4218 4218 4218 ], last tokens: [733 1464 4218 4218 6082 ]
04:32:03.865 TTS Simplex: updated tts_n_past_accumulated=72, total_generated_tokens=60
04:32:03.866 TTS: finished processing all chunks
04:32:03.866 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:32:03.867 TTS: sent is_final=true to T2W queue (turn end)
04:32:05.755 🎉 首响时间 (First Audio Response): 4038ms
04:32:05.755 T2W线程: wav_0.wav | 0.84s audio | 2302.3ms inference | RTF=2.74 | t=4038ms
04:32:07.947 T2W线程: wav_1.wav | 1.00s audio | 2191.5ms inference | RTF=2.19 | t=6230ms
04:32:10.018 T2W线程: wav_2.wav | 0.68s audio | 2069.6ms inference | RTF=3.04 | t=8300ms
04:32:10.018 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:32:10.018 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:32:10.113 omni_stop_threads: stop signals sent
04:32:10.113 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1979.120ms vocoder=323.153ms total=2302.287ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1814.072ms vocoder=377.439ms total=2191.520ms audio=24000
[timing] call=2 tokens=13 final=1 token2mel=1834.114ms vocoder=235.443ms total=2069.573ms audio=16320
Audio generation completed.
llama_perf_context_print: load time = 12799.79 ms
llama_perf_context_print: prompt eval time = 11417.26 ms / 182 tokens ( 62.73 ms per token, 15.94 tokens per second)
llama_perf_context_print: eval time = 799.01 ms / 9 runs ( 88.78 ms per token, 11.26 tokens per second)
llama_perf_context_print: total time = 20705.82 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 x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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 C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:32:10.944 === omni_init start
04:32:10.945 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:32:10.945 === omni_init: loading new LLM model
04:32:12.887 === omni_init: loading TTS model
04:32:12.887 TTS model: loading with n_gpu_layers=0
04:32:13.124 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:32:13.124 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:32:13.442 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:32:13.445 TTS: head_code loaded, verifying first few values:
04:32:13.445 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:32:13.445 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:32:13.445 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:32:13.474 TTS: weights loaded successfully
04:32:13.474 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:32:13.479 Projector: loaded successfully
04:32:13.479 === omni_init: loading APM model
04:32:13.634 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:32:13.884 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:32:13.884 Token2Wav: all model files found, initializing session...
04:32:13.884 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:32:13.884 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:32:14.211 Token2Wav: initialized successfully
04:32:14.211 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:32:14.211 Token2Wav: 使用 C++ 实现
04:32:14.211 === omni_init success: ctx_llama = 000001ebdcd66c50
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-12-hfypdv9c\fixture_
Count: 2
04:32:14.211 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:32:14.211 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-12-hfypdv9c\fixture_0000.wav
04:32:15.199 system prompt ref_audio embedding: n_pos=20
04:32:17.405 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:32:17.405 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:32:17.405 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:32:17.405 n_past = 72
04:32:17.405
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.19431 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3065.03 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3084.11 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3084.11 ms by vision ( 3084.11 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-12-hfypdv9c\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
04:32:23.315 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-12-hfypdv9c\fixture_0001.wav
04:32:23.607 stream_prefill(index=1): user audio embedding: n_pos=31
04:32:25.094
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.68726 s
04:32:25.094 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:32:25.094 stream_decode: create tts thread (simplex mode)
04:32:25.094 stream_decode: create t2w thread
04:32:25.094 wait prefill done
04:32:25.094 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:32:25.094 T2W thread (C++) started
<user>
<assistant>04:32:25.098 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:32:25.099 TTS thread started
04:32:25.610 📍 [单工TTS] assistant prompt 完成, n_past=182
04:32:25.610 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:32:26.420 LLM: detected end token, set llm_generation_done=true
04:32:26.420 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]
04:32:26.420 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:32:26.420 📍 轮次 1 结束,记录边界于 n_past=191
04:32:26.420 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]
04:32:26.420 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:32:26.420 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
04:32:26.420 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:32:26.420 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:32:26.421 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:32:26.454 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:32:26.454 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:32:26.454 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:32:26.454 TTS Simplex: first chunk - cleared KV cache
04:32:26.454 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:32:26.552 TTS Simplex: prefill completed, n_past_tts=9
04:32:26.552 TTS Simplex: sampler created
04:32:26.552 TTS simplex: is_audio_bos=true (first audio token)
04:32:26.586 TTS Simplex Phase1: token 1/500: rel_id=767
04:32:26.601 TTS Simplex Phase1: token 2/500: rel_id=4218
04:32:26.614 TTS Simplex Phase1: token 3/500: rel_id=4137
04:32:26.625 TTS Simplex Phase1: token 4/500: rel_id=4137
04:32:26.638 TTS Simplex Phase1: token 5/500: rel_id=1950
04:32:26.755 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:32:26.874 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:32:26.874 TTS Simplex Phase1: token 25/500: rel_id=4486
04:32:26.874 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:32:26.874 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:32:27.033 TTS Simplex Phase1: EOS token at step 40
04:32:27.033 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:32:27.033 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=48
04:32:27.041 TTS Simplex Phase2: text_eos_embed injected, n_past=49
04:32:27.049 TTS Simplex Phase2: audio_bos injected, n_past=50, starting final generation
04:32:27.171 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:32:27.239 TTS Simplex Phase2: EOS at step 17 (final end)
04:32:27.239 TTS Simplex: chunk 结束,tts_token_buffer 剩余 5 tokens (保留等下一个 chunk)
04:32:27.239 TTS Simplex: is_final_text_chunk=true, flush 剩余 5 tokens 从 tts_token_buffer
04:32:27.239 TTS Simplex: generated 55 audio tokens for chunk 0
04:32:27.239 TTS Simplex: chunk 0 first tokens: [767 4218 4137 4137 1950 ], last tokens: [2919 3894 4137 4218 6079 ]
04:32:27.239 TTS Simplex: updated tts_n_past_accumulated=67, total_generated_tokens=55
04:32:27.240 TTS: finished processing all chunks
04:32:27.240 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:32:27.240 TTS: sent is_final=true to T2W queue (turn end)
04:32:29.195 🎉 首响时间 (First Audio Response): 4100ms
04:32:29.195 T2W线程: wav_0.wav | 0.84s audio | 2319.9ms inference | RTF=2.76 | t=4100ms
04:32:31.395 T2W线程: wav_1.wav | 1.00s audio | 2199.3ms inference | RTF=2.20 | t=6301ms
04:32:33.424 T2W线程: wav_2.wav | 0.48s audio | 2027.8ms inference | RTF=4.22 | t=8329ms
04:32:33.424 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:32:33.424 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:32:33.508 omni_stop_threads: stop signals sent
04:32:33.508 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1989.948ms vocoder=329.863ms total=2319.824ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1813.767ms vocoder=385.536ms total=2199.313ms audio=24000
[timing] call=2 tokens=8 final=1 token2mel=1859.536ms vocoder=168.180ms total=2027.738ms audio=11520
Audio generation completed.
llama_perf_context_print: load time = 12721.57 ms
llama_perf_context_print: prompt eval time = 11397.96 ms / 182 tokens ( 62.63 ms per token, 15.97 tokens per second)
llama_perf_context_print: eval time = 807.39 ms / 9 runs ( 89.71 ms per token, 11.15 tokens per second)
llama_perf_context_print: total time = 20620.15 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 x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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 C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:32:34.332 === omni_init start
04:32:34.333 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:32:34.333 === omni_init: loading new LLM model
04:32:36.301 === omni_init: loading TTS model
04:32:36.301 TTS model: loading with n_gpu_layers=0
04:32:36.547 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:32:36.547 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:32:36.865 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:32:36.869 TTS: head_code loaded, verifying first few values:
04:32:36.869 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:32:36.869 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:32:36.869 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:32:36.904 TTS: weights loaded successfully
04:32:36.904 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:32:36.910 Projector: loaded successfully
04:32:36.910 === omni_init: loading APM model
04:32:37.064 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:32:37.304 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:32:37.304 Token2Wav: all model files found, initializing session...
04:32:37.304 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:32:37.304 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:32:37.638 Token2Wav: initialized successfully
04:32:37.638 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:32:37.638 Token2Wav: 使用 C++ 实现
04:32:37.639 === omni_init success: ctx_llama = 00000246d09a6c50
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-13-jvj6qff5\fixture_
Count: 2
04:32:37.639 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:32:37.639 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-13-jvj6qff5\fixture_0000.wav
04:32:38.664 system prompt ref_audio embedding: n_pos=20
04:32:41.165 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:32:41.165 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:32:41.165 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:32:41.165 n_past = 72
04:32:41.165
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.52606 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3099.00 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3118.54 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3118.54 ms by vision ( 3118.54 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-13-jvj6qff5\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
04:32:47.151 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-13-jvj6qff5\fixture_0001.wav
04:32:47.441 stream_prefill(index=1): user audio embedding: n_pos=31
04:32:49.051
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.88534 s
04:32:49.051 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:32:49.051 stream_decode: create tts thread (simplex mode)
04:32:49.051 stream_decode: create t2w thread
04:32:49.051 wait prefill done
04:32:49.052 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:32:49.052 T2W thread (C++) started
<user>
<assistant>04:32:49.055 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:32:49.055 TTS thread started
04:32:49.602 📍 [单工TTS] assistant prompt 完成, n_past=182
04:32:49.602 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:32:50.397 LLM: detected end token, set llm_generation_done=true
04:32:50.397 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]
04:32:50.397 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:32:50.397 📍 轮次 1 结束,记录边界于 n_past=191
04:32:50.397 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]
04:32:50.398 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:32:50.398 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
04:32:50.398 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:32:50.398 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:32:50.398 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:32:50.431 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:32:50.431 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:32:50.431 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:32:50.431 TTS Simplex: first chunk - cleared KV cache
04:32:50.431 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:32:50.521 TTS Simplex: prefill completed, n_past_tts=9
04:32:50.521 TTS Simplex: sampler created
04:32:50.521 TTS simplex: is_audio_bos=true (first audio token)
04:32:50.552 TTS Simplex Phase1: token 1/500: rel_id=1496
04:32:50.564 TTS Simplex Phase1: token 2/500: rel_id=4218
04:32:50.574 TTS Simplex Phase1: token 3/500: rel_id=6405
04:32:50.585 TTS Simplex Phase1: token 4/500: rel_id=6405
04:32:50.597 TTS Simplex Phase1: token 5/500: rel_id=4218
04:32:50.737 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:32:50.836 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:32:50.836 TTS Simplex Phase1: token 25/500: rel_id=62
04:32:50.836 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:32:50.836 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:32:50.950 TTS Simplex Phase1: EOS token at step 36
04:32:50.950 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:32:50.950 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=44
04:32:50.957 TTS Simplex Phase2: text_eos_embed injected, n_past=45
04:32:50.965 TTS Simplex Phase2: audio_bos injected, n_past=46, starting final generation
04:32:51.126 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:32:51.202 TTS Simplex Phase2: EOS at step 22 (final end)
04:32:51.202 TTS Simplex: chunk 结束,tts_token_buffer 剩余 6 tokens (保留等下一个 chunk)
04:32:51.202 TTS Simplex: is_final_text_chunk=true, flush 剩余 6 tokens 从 tts_token_buffer
04:32:51.202 TTS Simplex: generated 56 audio tokens for chunk 0
04:32:51.202 TTS Simplex: chunk 0 first tokens: [1496 4218 6405 6405 4218 ], last tokens: [729 4218 4218 4218 4137 ]
04:32:51.202 TTS Simplex: updated tts_n_past_accumulated=68, total_generated_tokens=56
04:32:51.203 TTS: finished processing all chunks
04:32:51.204 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:32:51.204 TTS: sent is_final=true to T2W queue (turn end)
04:32:53.138 🎉 首响时间 (First Audio Response): 4086ms
04:32:53.138 T2W线程: wav_0.wav | 0.84s audio | 2300.3ms inference | RTF=2.74 | t=4086ms
04:32:55.336 T2W线程: wav_1.wav | 1.00s audio | 2198.2ms inference | RTF=2.20 | t=6285ms
04:32:57.375 T2W线程: wav_2.wav | 0.52s audio | 2038.0ms inference | RTF=3.92 | t=8323ms
04:32:57.375 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:32:57.376 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:32:57.378 omni_stop_threads: stop signals sent
tts thread end
04:32:57.385 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1975.473ms vocoder=324.741ms total=2300.231ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1817.711ms vocoder=380.426ms total=2198.148ms audio=24000
[timing] call=2 tokens=9 final=1 token2mel=1855.209ms vocoder=182.722ms total=2037.942ms audio=12480
Audio generation completed.
llama_perf_context_print: load time = 13299.76 ms
llama_perf_context_print: prompt eval time = 11962.83 ms / 182 tokens ( 65.73 ms per token, 15.21 tokens per second)
llama_perf_context_print: eval time = 792.50 ms / 9 runs ( 88.06 ms per token, 11.36 tokens per second)
llama_perf_context_print: total time = 21082.17 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
t2w thread end
@@ -0,0 +1,469 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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 C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:32:58.203 === omni_init start
04:32:58.203 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:32:58.203 === omni_init: loading new LLM model
04:33:00.168 === omni_init: loading TTS model
04:33:00.168 TTS model: loading with n_gpu_layers=0
04:33:00.406 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:33:00.406 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:33:00.721 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:33:00.725 TTS: head_code loaded, verifying first few values:
04:33:00.725 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:33:00.725 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:33:00.725 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:33:00.753 TTS: weights loaded successfully
04:33:00.753 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:33:00.758 Projector: loaded successfully
04:33:00.759 === omni_init: loading APM model
04:33:00.920 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:33:01.165 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:33:01.165 Token2Wav: all model files found, initializing session...
04:33:01.165 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:33:01.165 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:33:01.530 Token2Wav: initialized successfully
04:33:01.530 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:33:01.530 Token2Wav: 使用 C++ 实现
04:33:01.530 === omni_init success: ctx_llama = 000001fc8d0f6c50
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-14-c6wg7yfo\fixture_
Count: 2
04:33:01.530 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:33:01.531 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-14-c6wg7yfo\fixture_0000.wav
04:33:02.537 system prompt ref_audio embedding: n_pos=20
04:33:04.651 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:33:04.651 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:33:04.652 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:33:04.652 n_past = 72
04:33:04.652
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.12108 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3001.51 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3020.74 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3020.74 ms by vision ( 3020.74 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-14-c6wg7yfo\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
04:33:10.239 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-14-c6wg7yfo\fixture_0001.wav
04:33:10.545 stream_prefill(index=1): user audio embedding: n_pos=31
04:33:11.941
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.28841 s
04:33:11.941 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:33:11.942 stream_decode: create tts thread (simplex mode)
04:33:11.942 stream_decode: create t2w thread
04:33:11.942 wait prefill done
04:33:11.942 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:33:11.942 T2W thread (C++) started
<user>
<assistant>04:33:11.946 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:33:11.946 TTS thread started
04:33:12.388 📍 [单工TTS] assistant prompt 完成, n_past=182
04:33:12.388 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:33:13.183 LLM: detected end token, set llm_generation_done=true
04:33:13.183 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]
04:33:13.183 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:33:13.183 📍 轮次 1 结束,记录边界于 n_past=191
04:33:13.183 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]
04:33:13.183 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:33:13.183 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
04:33:13.184 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:33:13.184 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:33:13.184 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:33:13.231 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:33:13.231 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:33:13.231 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:33:13.231 TTS Simplex: first chunk - cleared KV cache
04:33:13.231 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:33:13.325 TTS Simplex: prefill completed, n_past_tts=9
04:33:13.325 TTS Simplex: sampler created
04:33:13.325 TTS simplex: is_audio_bos=true (first audio token)
04:33:13.355 TTS Simplex Phase1: token 1/500: rel_id=875
04:33:13.368 TTS Simplex Phase1: token 2/500: rel_id=4299
04:33:13.379 TTS Simplex Phase1: token 3/500: rel_id=4218
04:33:13.391 TTS Simplex Phase1: token 4/500: rel_id=4218
04:33:13.403 TTS Simplex Phase1: token 5/500: rel_id=4218
04:33:13.494 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:33:13.633 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:33:13.633 TTS Simplex Phase1: token 25/500: rel_id=2330
04:33:13.633 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:33:13.633 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:33:13.853 TTS Simplex Phase1: EOS token at step 46
04:33:13.853 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:33:13.853 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=54
04:33:13.860 TTS Simplex Phase2: text_eos_embed injected, n_past=55
04:33:13.869 TTS Simplex Phase2: audio_bos injected, n_past=56, starting final generation
04:33:13.921 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:33:14.018 TTS Simplex Phase2: EOS at step 14 (final end)
04:33:14.018 TTS Simplex: chunk 结束,tts_token_buffer 剩余 8 tokens (保留等下一个 chunk)
04:33:14.018 TTS Simplex: is_final_text_chunk=true, flush 剩余 8 tokens 从 tts_token_buffer
04:33:14.018 TTS Simplex: generated 58 audio tokens for chunk 0
04:33:14.018 TTS Simplex: chunk 0 first tokens: [875 4299 4218 4218 4218 ], last tokens: [2325 742 1488 4218 4218 ]
04:33:14.018 TTS Simplex: updated tts_n_past_accumulated=70, total_generated_tokens=58
04:33:14.019 TTS: finished processing all chunks
04:33:14.019 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:33:14.019 TTS: sent is_final=true to T2W queue (turn end)
04:33:15.935 🎉 首响时间 (First Audio Response): 3993ms
04:33:15.935 T2W线程: wav_0.wav | 0.84s audio | 2300.9ms inference | RTF=2.74 | t=3993ms
04:33:18.151 T2W线程: wav_1.wav | 1.00s audio | 2215.0ms inference | RTF=2.22 | t=6209ms
04:33:20.215 T2W线程: wav_2.wav | 0.60s audio | 2064.1ms inference | RTF=3.44 | t=8273ms
04:33:20.216 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:33:20.216 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:33:04:20.244 omni_stop_threads: stop signals sent
33:20.244 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1972.706ms vocoder=328.140ms total=2300.859ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1834.053ms vocoder=380.921ms total=2214.984ms audio=24000
[timing] call=2 tokens=11 final=1 token2mel=1857.147ms vocoder=206.868ms total=2064.046ms audio=14400
Audio generation completed.
llama_perf_context_print: load time = 12218.62 ms
llama_perf_context_print: prompt eval time = 10856.04 ms / 182 tokens ( 59.65 ms per token, 16.76 tokens per second)
llama_perf_context_print: eval time = 793.08 ms / 9 runs ( 88.12 ms per token, 11.35 tokens per second)
llama_perf_context_print: total time = 20074.33 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 x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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 C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:33:21.078 === omni_init start
04:33:21.078 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:33:21.078 === omni_init: loading new LLM model
04:33:23.029 === omni_init: loading TTS model
04:33:23.029 TTS model: loading with n_gpu_layers=0
04:33:23.277 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:33:23.277 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:33:23.598 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:33:23.602 TTS: head_code loaded, verifying first few values:
04:33:23.602 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:33:23.602 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:33:23.602 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:33:23.630 TTS: weights loaded successfully
04:33:23.630 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:33:23.636 Projector: loaded successfully
04:33:23.636 === omni_init: loading APM model
04:33:23.793 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:33:24.049 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:33:24.049 Token2Wav: all model files found, initializing session...
04:33:24.049 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:33:24.049 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:33:24.382 Token2Wav: initialized successfully
04:33:24.382 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:33:24.382 Token2Wav: 使用 C++ 实现
04:33:24.382 === omni_init success: ctx_llama = 0000023c67ee6c50
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-15-yp286zk6\fixture_
Count: 2
04:33:24.383 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:33:24.383 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-15-yp286zk6\fixture_0000.wav
04:33:25.369 system prompt ref_audio embedding: n_pos=20
04:33:27.574 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:33:27.574 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:33:27.574 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:33:27.574 n_past = 72
04:33:27.574
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.19143 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3073.38 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3091.88 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3091.89 ms by vision ( 3091.89 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-15-yp286zk6\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
04:33:33.456 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-15-yp286zk6\fixture_0001.wav
04:33:33.756 stream_prefill(index=1): user audio embedding: n_pos=31
04:33:35.292
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.71656 s
04:33:35.292 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:33:35.292 stream_decode: create tts thread (simplex mode)
04:33:35.292 stream_decode: create t2w thread
04:33:35.292 wait prefill done
04:33:35.292 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:33:35.292 T2W thread (C++) started
<user>
<assistant>04:33:35.296 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:33:35.296 TTS thread started
04:33:35.806 📍 [单工TTS] assistant prompt 完成, n_past=182
04:33:35.806 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:33:36.612 LLM: detected end token, set llm_generation_done=true
04:33:36.613 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]
04:33:36.613 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:33:36.613 📍 轮次 1 结束,记录边界于 n_past=191
04:33:36.613 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]
04:33:36.613 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:33:36.613 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
04:33:36.613 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:33:36.613 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:33:36.620 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:33:36.656 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:33:36.656 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:33:36.656 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:33:36.656 TTS Simplex: first chunk - cleared KV cache
04:33:36.656 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:33:36.752 TTS Simplex: prefill completed, n_past_tts=9
04:33:36.752 TTS Simplex: sampler created
04:33:36.752 TTS simplex: is_audio_bos=true (first audio token)
04:33:36.782 TTS Simplex Phase1: token 1/500: rel_id=1496
04:33:36.794 TTS Simplex Phase1: token 2/500: rel_id=4137
04:33:36.805 TTS Simplex Phase1: token 3/500: rel_id=4218
04:33:36.819 TTS Simplex Phase1: token 4/500: rel_id=4218
04:33:36.831 TTS Simplex Phase1: token 5/500: rel_id=4218
04:33:36.935 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:33:37.070 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:33:37.070 TTS Simplex Phase1: token 25/500: rel_id=2582
04:33:37.070 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:33:37.070 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:33:37.249 TTS Simplex Phase1: EOS token at step 42
04:33:37.249 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:33:37.249 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=50
04:33:37.256 TTS Simplex Phase2: text_eos_embed injected, n_past=51
04:33:37.263 TTS Simplex Phase2: audio_bos injected, n_past=52, starting final generation
04:33:37.362 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:33:37.393 TTS Simplex Phase2: EOS at step 12 (final end)
04:33:37.393 TTS Simplex: chunk 结束,tts_token_buffer 剩余 2 tokens (保留等下一个 chunk)
04:33:37.393 TTS Simplex: is_final_text_chunk=true, flush 剩余 2 tokens 从 tts_token_buffer
04:33:37.393 TTS Simplex: generated 52 audio tokens for chunk 0
04:33:37.393 TTS Simplex: chunk 0 first tokens: [1496 4137 4218 4218 4218 ], last tokens: [1491 4218 4218 4137 1950 ]
04:33:37.393 TTS Simplex: updated tts_n_past_accumulated=64, total_generated_tokens=52
04:33:37.403 TTS: finished processing all chunks
04:33:37.403 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:33:37.403 TTS: sent is_final=true to T2W queue (turn end)
04:33:39.389 🎉 首响时间 (First Audio Response): 4097ms
04:33:39.389 T2W线程: wav_0.wav | 0.84s audio | 2318.0ms inference | RTF=2.76 | t=4097ms
04:33:41.599 T2W线程: wav_1.wav | 1.00s audio | 2208.5ms inference | RTF=2.21 | t=6306ms
04:33:43.589 T2W线程: wav_2.wav | 0.36s audio | 1989.7ms inference | RTF=5.53 | t=8296ms
04:33:43.589 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:33:43.589 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:33:43.685 omni_stop_threads: stop signals sent
04:33:43.685 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1984.824ms vocoder=333.154ms total=2317.991ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1833.013ms vocoder=375.446ms total=2208.473ms audio=24000
[timing] call=2 tokens=5 final=1 token2mel=1860.047ms vocoder=129.588ms total=1989.647ms audio=8640
Audio generation completed.
llama_perf_context_print: load time = 12775.92 ms
llama_perf_context_print: prompt eval time = 11422.19 ms / 182 tokens ( 62.76 ms per token, 15.93 tokens per second)
llama_perf_context_print: eval time = 803.84 ms / 9 runs ( 89.32 ms per token, 11.20 tokens per second)
llama_perf_context_print: total time = 20654.61 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 x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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 C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:33:44.499 === omni_init start
04:33:44.499 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:33:44.499 === omni_init: loading new LLM model
04:33:46.448 === omni_init: loading TTS model
04:33:46.448 TTS model: loading with n_gpu_layers=0
04:33:46.692 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:33:46.692 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:33:47.011 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:33:47.014 TTS: head_code loaded, verifying first few values:
04:33:47.014 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:33:47.014 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:33:47.014 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:33:47.043 TTS: weights loaded successfully
04:33:47.043 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:33:47.048 Projector: loaded successfully
04:33:47.048 === omni_init: loading APM model
04:33:47.203 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:33:47.456 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:33:47.457 Token2Wav: all model files found, initializing session...
04:33:47.457 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:33:47.457 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:33:47.801 Token2Wav: initialized successfully
04:33:47.801 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:33:47.801 Token2Wav: 使用 C++ 实现
04:33:47.801 === omni_init success: ctx_llama = 000001c83ebf6c50
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-16-68vom599\fixture_
Count: 2
04:33:47.801 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:33:47.801 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-16-68vom599\fixture_0000.wav
04:33:48.828 system prompt ref_audio embedding: n_pos=20
04:33:51.261 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:33:51.261 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:33:51.261 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:33:51.261 n_past = 72
04:33:51.261
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.46 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3053.94 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3072.67 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3072.68 ms by vision ( 3072.68 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-16-68vom599\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
04:33:57.083 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-16-68vom599\fixture_0001.wav
04:33:57.378 stream_prefill(index=1): user audio embedding: n_pos=31
04:33:58.990
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.72668 s
04:33:58.990 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:33:58.990 stream_decode: create tts thread (simplex mode)
04:33:58.990 stream_decode: create t2w thread
04:33:58.990 wait prefill done
04:33:58.990 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:33:58.990 T2W thread (C++) started
<user>
<assistant>04:33:58.993 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:33:58.993 TTS thread started
04:33:59.472 📍 [单工TTS] assistant prompt 完成, n_past=182
04:33:59.472 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:34:00.285 LLM: detected end token, set llm_generation_done=true
04:34:00.285 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]
04:34:00.285 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:34:00.285 📍 轮次 1 结束,记录边界于 n_past=191
04:34:00.285 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]
04:34:00.285 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:34:00.285 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
04:34:00.285 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:34:00.285 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:34:00.286 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:34:00.321 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:34:00.321 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:34:00.321 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:34:00.321 TTS Simplex: first chunk - cleared KV cache
04:34:00.321 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:34:00.421 TTS Simplex: prefill completed, n_past_tts=9
04:34:00.421 TTS Simplex: sampler created
04:34:00.421 TTS simplex: is_audio_bos=true (first audio token)
04:34:00.454 TTS Simplex Phase1: token 1/500: rel_id=1490
04:34:00.466 TTS Simplex Phase1: token 2/500: rel_id=4299
04:34:00.476 TTS Simplex Phase1: token 3/500: rel_id=4299
04:34:00.488 TTS Simplex Phase1: token 4/500: rel_id=4218
04:34:00.502 TTS Simplex Phase1: token 5/500: rel_id=1833
04:34:00.613 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:34:00.741 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:34:00.741 TTS Simplex Phase1: token 25/500: rel_id=1763
04:34:00.741 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:34:00.742 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:34:00.865 TTS Simplex Phase1: EOS token at step 37
04:34:00.865 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:34:00.865 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=45
04:34:00.872 TTS Simplex Phase2: text_eos_embed injected, n_past=46
04:34:00.880 TTS Simplex Phase2: audio_bos injected, n_past=47, starting final generation
04:34:01.028 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:34:01.070 TTS Simplex Phase2: EOS at step 18 (final end)
04:34:01.070 TTS Simplex: chunk 结束,tts_token_buffer 剩余 3 tokens (保留等下一个 chunk)
04:34:01.070 TTS Simplex: is_final_text_chunk=true, flush 剩余 3 tokens 从 tts_token_buffer
04:34:01.070 TTS Simplex: generated 53 audio tokens for chunk 0
04:34:01.070 TTS Simplex: chunk 0 first tokens: [1490 4299 4299 4218 1833 ], last tokens: [60 2932 3975 4299 4218 ]
04:34:01.070 TTS Simplex: updated tts_n_past_accumulated=65, total_generated_tokens=53
04:34:01.080 TTS: finished processing all chunks
04:34:01.081 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:34:01.081 TTS: sent is_final=true to T2W queue (turn end)
04:34:03.048 🎉 首响时间 (First Audio Response): 4058ms
04:34:03.048 T2W线程: wav_0.wav | 0.84s audio | 2305.6ms inference | RTF=2.74 | t=4058ms
04:34:05.255 T2W线程: wav_1.wav | 1.00s audio | 2205.6ms inference | RTF=2.21 | t=6264ms
04:34:07.253 T2W线程: wav_2.wav | 0.40s audio | 1997.4ms inference | RTF=4.99 | t=8262ms
04:34:07.253 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:34:07.253 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:04:34:07.345 T2W(C++) 线程: 停止
34[timing] call=0 tokens=28 final=0 token2mel=1974.158ms vocoder=331.402ms total=2305.574ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1831.797ms vocoder=373.730ms total=2205.537ms audio=24000
[timing] call=2 tokens=6 final=1 token2mel=1849.905ms vocoder=147.495ms total=1997.417ms audio=9600
Audio generation completed.
llama_perf_context_print: load time = 13022.55 ms
llama_perf_context_print: prompt eval time = 11669.43 ms / 182 tokens ( 64.12 ms per token, 15.60 tokens per second)
llama_perf_context_print: eval time = 811.13 ms / 9 runs ( 90.13 ms per token, 11.10 tokens per second)
llama_perf_context_print: total time = 20895.67 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
:07.345 omni_stop_threads: stop signals sent
tts thread end
t2w thread end
@@ -0,0 +1,466 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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 C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:34:08.164 === omni_init start
04:34:08.164 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:34:08.164 === omni_init: loading new LLM model
04:34:10.149 === omni_init: loading TTS model
04:34:10.149 TTS model: loading with n_gpu_layers=0
04:34:10.386 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:34:10.386 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:34:10.708 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:34:10.711 TTS: head_code loaded, verifying first few values:
04:34:10.711 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:34:10.711 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:34:10.711 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:34:10.741 TTS: weights loaded successfully
04:34:10.741 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:34:10.746 Projector: loaded successfully
04:34:10.746 === omni_init: loading APM model
04:34:10.911 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:34:11.157 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:34:11.157 Token2Wav: all model files found, initializing session...
04:34:11.157 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:34:11.157 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:34:11.533 Token2Wav: initialized successfully
04:34:11.533 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:34:11.533 Token2Wav: 使用 C++ 实现
04:34:11.533 === omni_init success: ctx_llama = 00000267d4096c50
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-17-zlb601z3\fixture_
Count: 2
04:34:11.534 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:34:11.534 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-17-zlb601z3\fixture_0000.wav
04:34:12.533 system prompt ref_audio embedding: n_pos=20
04:34:14.841 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:34:14.841 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:34:14.841 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:34:14.841 n_past = 72
04:34:14.841
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.3078 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 2974.64 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 2993.47 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 2993.48 ms by vision ( 2993.48 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-17-zlb601z3\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
04:34:20.726 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-17-zlb601z3\fixture_0001.wav
04:34:21.043 stream_prefill(index=1): user audio embedding: n_pos=31
04:34:22.592
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.74928 s
04:34:22.592 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:34:22.592 stream_decode: create tts thread (simplex mode)
04:34:22.592 stream_decode: create t2w thread
04:34:22.592 wait prefill done
04:34:22.592 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:34:22.592 T2W thread (C++) started
<user>
<assistant>04:34:22.597 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:34:22.597 TTS thread started
04:34:23.098 📍 [单工TTS] assistant prompt 完成, n_past=182
04:34:23.098 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:34:23.905 LLM: detected end token, set llm_generation_done=true
04:34:23.905 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]
04:34:23.905 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:34:23.905 📍 轮次 1 结束,记录边界于 n_past=191
04:34:23.905 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]
04:34:23.905 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:34:23.905 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
04:34:23.905 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:34:23.905 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:34:23.907 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:34:23.938 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:34:23.939 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:34:23.939 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:34:23.939 TTS Simplex: first chunk - cleared KV cache
04:34:23.939 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:34:24.033 TTS Simplex: prefill completed, n_past_tts=9
04:34:24.033 TTS Simplex: sampler created
04:34:24.033 TTS simplex: is_audio_bos=true (first audio token)
04:34:24.065 TTS Simplex Phase1: token 1/500: rel_id=1733
04:34:24.079 TTS Simplex Phase1: token 2/500: rel_id=1749
04:34:24.094 TTS Simplex Phase1: token 3/500: rel_id=74
04:34:24.108 TTS Simplex Phase1: token 4/500: rel_id=2980
04:34:24.122 TTS Simplex Phase1: token 5/500: rel_id=4753
04:34:24.260 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:34:24.354 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:34:24.354 TTS Simplex Phase1: token 25/500: rel_id=4532
04:34:24.354 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:34:24.354 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:34:24.424 TTS Simplex Phase1: EOS token at step 32
04:34:24.424 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:34:24.424 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=40
04:34:24.432 TTS Simplex Phase2: text_eos_embed injected, n_past=41
04:34:24.440 TTS Simplex Phase2: audio_bos injected, n_past=42, starting final generation
04:34:24.517 TTS Simplex Phase2: EOS at step 7 (final end)
04:34:24.517 TTS Simplex: chunk 结束,tts_token_buffer 剩余 12 tokens (保留等下一个 chunk)
04:34:24.517 TTS Simplex: is_final_text_chunk=true, flush 剩余 12 tokens 从 tts_token_buffer
04:34:24.517 TTS Simplex: generated 37 audio tokens for chunk 0
04:34:24.517 TTS Simplex: chunk 0 first tokens: [1733 1749 74 2980 4753 ], last tokens: [2276 8 67 1533 2956 ]
04:34:24.517 TTS Simplex: updated tts_n_past_accumulated=49, total_generated_tokens=37
04:34:24.518 TTS: finished processing all chunks
04:34:24.519 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:34:24.519 TTS: sent is_final=true to T2W queue (turn end)
04:34:26.674 🎉 首响时间 (First Audio Response): 4081ms
04:34:26.674 T2W线程: wav_0.wav | 0.84s audio | 2318.6ms inference | RTF=2.76 | t=4081ms
04:34:28.777 T2W线程: wav_1.wav | 0.76s audio | 2102.3ms inference | RTF=2.77 | t=6184ms
04:34:28.777 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=1)
04:34:28.777 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:34:28.862 omni_stop_threads: stop signals sent
04:34:28.862 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1966.037ms vocoder=352.515ms total=2318.568ms audio=20160
[timing] call=1 tokens=15 final=1 token2mel=1841.461ms vocoder=260.828ms total=2102.303ms audio=18240
Audio generation completed.
llama_perf_context_print: load time = 12948.02 ms
llama_perf_context_print: prompt eval time = 11562.46 ms / 182 tokens ( 63.53 ms per token, 15.74 tokens per second)
llama_perf_context_print: eval time = 804.64 ms / 9 runs ( 89.40 ms per token, 11.19 tokens per second)
llama_perf_context_print: total time = 18712.33 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 x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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 C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:34:29.682 === omni_init start
04:34:29.683 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:34:29.683 === omni_init: loading new LLM model
04:34:31.663 === omni_init: loading TTS model
04:34:31.663 TTS model: loading with n_gpu_layers=0
04:34:31.905 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:34:31.905 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:34:32.230 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:34:32.233 TTS: head_code loaded, verifying first few values:
04:34:32.233 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:34:32.233 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:34:32.233 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:34:32.262 TTS: weights loaded successfully
04:34:32.262 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:34:32.268 Projector: loaded successfully
04:34:32.268 === omni_init: loading APM model
04:34:32.434 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:34:32.697 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:34:32.697 Token2Wav: all model files found, initializing session...
04:34:32.697 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:34:32.697 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:34:33.048 Token2Wav: initialized successfully
04:34:33.048 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:34:33.048 Token2Wav: 使用 C++ 实现
04:34:33.048 === omni_init success: ctx_llama = 00000211adc56c50
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-18-xh638bj9\fixture_
Count: 2
04:34:33.048 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:34:33.048 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-18-xh638bj9\fixture_0000.wav
04:34:34.070 system prompt ref_audio embedding: n_pos=20
04:34:36.519 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:34:36.519 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:34:36.519 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:34:36.519 n_past = 72
04:34:36.519
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.47148 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3031.51 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3050.32 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3050.32 ms by vision ( 3050.32 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-18-xh638bj9\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
04:34:42.591 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-18-xh638bj9\fixture_0001.wav
04:34:42.895 stream_prefill(index=1): user audio embedding: n_pos=31
04:34:44.498
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.97677 s
04:34:44.498 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:34:44.498 stream_decode: create tts thread (simplex mode)
04:34:44.498 stream_decode: create t2w thread
04:34:44.498 wait prefill done
04:34:44.498 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:34:44.498 T2W thread (C++) started
<user>
<assistant>04:34:44.502 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:34:44.502 TTS thread started
04:34:45.019 📍 [单工TTS] assistant prompt 完成, n_past=182
04:34:45.019 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:34:45.836 LLM: detected end token, set llm_generation_done=true
04:34:45.836 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]
04:34:45.837 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:34:45.837 📍 轮次 1 结束,记录边界于 n_past=191
04:34:45.837 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]
04:34:45.837 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:34:45.837 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
04:34:45.837 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:34:45.837 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:34:45.838 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:34:45.872 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:34:45.872 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:34:45.872 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:34:45.872 TTS Simplex: first chunk - cleared KV cache
04:34:45.872 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:34:45.971 TTS Simplex: prefill completed, n_past_tts=9
04:34:45.971 TTS Simplex: sampler created
04:34:45.971 TTS simplex: is_audio_bos=true (first audio token)
04:34:46.003 TTS Simplex Phase1: token 1/500: rel_id=766
04:34:46.017 TTS Simplex Phase1: token 2/500: rel_id=3648
04:34:46.032 TTS Simplex Phase1: token 3/500: rel_id=5838
04:34:46.044 TTS Simplex Phase1: token 4/500: rel_id=3651
04:34:46.056 TTS Simplex Phase1: token 5/500: rel_id=1464
04:34:46.158 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:34:46.288 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:34:46.288 TTS Simplex Phase1: token 25/500: rel_id=3911
04:34:46.288 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:34:46.289 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:34:46.434 TTS Simplex Phase1: EOS token at step 39
04:34:46.434 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:34:46.434 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=47
04:34:46.442 TTS Simplex Phase2: text_eos_embed injected, n_past=48
04:34:46.449 TTS Simplex Phase2: audio_bos injected, n_past=49, starting final generation
04:34:46.582 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:34:46.723 TTS Simplex Phase2: EOS at step 25 (final end)
04:34:46.723 TTS Simplex: chunk 结束,tts_token_buffer 剩余 12 tokens (保留等下一个 chunk)
04:34:46.723 TTS Simplex: is_final_text_chunk=true, flush 剩余 12 tokens 从 tts_token_buffer
04:34:46.723 TTS Simplex: generated 62 audio tokens for chunk 0
04:34:46.723 TTS Simplex: chunk 0 first tokens: [766 3648 5838 3651 1464 ], last tokens: [1500 4218 4218 4218 1950 ]
04:34:46.723 TTS Simplex: updated tts_n_past_accumulated=74, total_generated_tokens=62
04:34:46.724 TTS: finished processing all chunks
04:34:46.725 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:34:46.725 TTS: sent is_final=true to T2W queue (turn end)
04:34:48.597 🎉 首响时间 (First Audio Response): 4099ms
04:34:48.597 T2W线程: wav_0.wav | 0.84s audio | 2307.7ms inference | RTF=2.75 | t=4099ms
04:34:50.814 T2W线程: wav_1.wav | 1.00s audio | 2215.4ms inference | RTF=2.22 | t=6315ms
04:34:52.921 T2W线程: wav_2.wav | 0.76s audio | 2106.9ms inference | RTF=2.77 | t=8423ms
04:34:52.921 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:34:52.922 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:34:52.978 omni_stop_threads: stop signals sent
04:34:52.978 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1981.350ms vocoder=326.272ms total=2307.636ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1834.846ms vocoder=380.560ms total=2215.416ms audio=24000
[timing] call=2 tokens=15 final=1 token2mel=1854.384ms vocoder=252.494ms total=2106.894ms audio=18240
Audio generation completed.
llama_perf_context_print: load time = 13355.90 ms
llama_perf_context_print: prompt eval time = 11970.42 ms / 182 tokens ( 65.77 ms per token, 15.20 tokens per second)
llama_perf_context_print: eval time = 814.65 ms / 9 runs ( 90.52 ms per token, 11.05 tokens per second)
llama_perf_context_print: total time = 21314.37 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 x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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 C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:34:53.794 === omni_init start
04:34:53.794 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:34:53.794 === omni_init: loading new LLM model
04:34:55.742 === omni_init: loading TTS model
04:34:55.742 TTS model: loading with n_gpu_layers=0
04:34:55.981 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:34:55.981 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:34:56.297 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:34:56.301 TTS: head_code loaded, verifying first few values:
04:34:56.301 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:34:56.301 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:34:56.301 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:34:56.330 TTS: weights loaded successfully
04:34:56.330 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:34:56.335 Projector: loaded successfully
04:34:56.335 === omni_init: loading APM model
04:34:56.489 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:34:56.743 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:34:56.743 Token2Wav: all model files found, initializing session...
04:34:56.743 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:34:56.743 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:34:57.085 Token2Wav: initialized successfully
04:34:57.085 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:34:57.085 Token2Wav: 使用 C++ 实现
04:34:57.085 === omni_init success: ctx_llama = 0000029801776c50
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-19-846v9e84\fixture_
Count: 2
04:34:57.086 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:34:57.086 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-19-846v9e84\fixture_0000.wav
04:34:58.116 system prompt ref_audio embedding: n_pos=20
04:35:00.430 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:35:00.430 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:35:00.430 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:35:00.430 n_past = 72
04:35:00.430
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.34425 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 2979.11 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 2998.09 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 2998.09 ms by vision ( 2998.09 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-19-846v9e84\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
04:35:06.277 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-19-846v9e84\fixture_0001.wav
04:35:06.566 stream_prefill(index=1): user audio embedding: n_pos=31
04:35:08.115
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.68376 s
04:35:08.115 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:35:08.115 stream_decode: create tts thread (simplex mode)
04:35:08.115 stream_decode: create t2w thread
04:35:08.115 wait prefill done
04:35:08.115 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:35:08.115 T2W thread (C++) started
<user>
<assistant>04:35:08.119 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:35:08.119 TTS thread started
04:35:08.647 📍 [单工TTS] assistant prompt 完成, n_past=182
04:35:08.647 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:35:09.437 LLM: detected end token, set llm_generation_done=true
04:35:09.437 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]
04:35:09.437 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:35:09.437 📍 轮次 1 结束,记录边界于 n_past=191
04:35:09.437 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]
04:35:09.437 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:35:09.437 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
04:35:09.437 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:35:09.437 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:35:09.438 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:35:09.480 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:35:09.480 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:35:09.480 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:35:09.480 TTS Simplex: first chunk - cleared KV cache
04:35:09.480 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:35:09.582 TTS Simplex: prefill completed, n_past_tts=9
04:35:09.582 TTS Simplex: sampler created
04:35:09.582 TTS simplex: is_audio_bos=true (first audio token)
04:35:09.617 TTS Simplex Phase1: token 1/500: rel_id=1499
04:35:09.630 TTS Simplex Phase1: token 2/500: rel_id=4218
04:35:09.642 TTS Simplex Phase1: token 3/500: rel_id=4218
04:35:09.658 TTS Simplex Phase1: token 4/500: rel_id=4218
04:35:09.673 TTS Simplex Phase1: token 5/500: rel_id=4218
04:35:09.751 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:35:09.896 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:35:09.896 TTS Simplex Phase1: token 25/500: rel_id=4822
04:35:09.896 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:35:09.896 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:35:10.019 TTS Simplex Phase1: EOS token at step 37
04:35:10.019 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:35:10.019 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=45
04:35:10.026 TTS Simplex Phase2: text_eos_embed injected, n_past=46
04:35:10.034 TTS Simplex Phase2: audio_bos injected, n_past=47, starting final generation
04:35:10.185 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:35:10.231 TTS Simplex Phase2: EOS at step 18 (final end)
04:35:10.231 TTS Simplex: chunk 结束,tts_token_buffer 剩余 3 tokens (保留等下一个 chunk)
04:35:10.231 TTS Simplex: is_final_text_chunk=true, flush 剩余 3 tokens 从 tts_token_buffer
04:35:10.231 TTS Simplex: generated 53 audio tokens for chunk 0
04:35:10.231 TTS Simplex: chunk 0 first tokens: [1499 4218 4218 4218 4218 ], last tokens: [1785 4218 4218 4218 6082 ]
04:35:10.231 TTS Simplex: updated tts_n_past_accumulated=65, total_generated_tokens=53
04:35:10.232 TTS: finished processing all chunks
04:35:10.232 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:35:10.232 TTS: sent is_final=true to T2W queue (turn end)
04:35:12.202 🎉 首响时间 (First Audio Response): 4086ms
04:35:12.202 T2W线程: wav_0.wav | 0.84s audio | 2304.8ms inference | RTF=2.74 | t=4086ms
04:35:14.433 T2W线程: wav_1.wav | 1.00s audio | 2230.3ms inference | RTF=2.23 | t=6318ms
04:35:16.454 T2W线程: wav_2.wav | 0.40s audio | 2019.9ms inference | RTF=5.05 | t=8338ms
04:35:16.454 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:35:16.454 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:35:04:16.476 omni_stop_threads: stop signals sent
35:16.476 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1973.084ms vocoder=331.629ms total=2304.735ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1839.479ms vocoder=390.755ms total=2230.247ms audio=24000
[timing] call=2 tokens=6 final=1 token2mel=1874.260ms vocoder=145.621ms total=2019.891ms audio=9600
Audio generation completed.
llama_perf_context_print: load time = 12904.03 ms
llama_perf_context_print: prompt eval time = 11560.65 ms / 182 tokens ( 63.52 ms per token, 15.74 tokens per second)
llama_perf_context_print: eval time = 787.39 ms / 9 runs ( 87.49 ms per token, 11.43 tokens per second)
llama_perf_context_print: total time = 20733.10 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 x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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 C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:28:14.578 === omni_init start
04:28:14.579 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:28:14.579 === omni_init: loading new LLM model
04:28:16.580 === omni_init: loading TTS model
04:28:16.580 TTS model: loading with n_gpu_layers=0
04:28:16.819 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:28:16.819 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:28:17.140 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:28:17.144 TTS: head_code loaded, verifying first few values:
04:28:17.144 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:28:17.144 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:28:17.144 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:28:17.173 TTS: weights loaded successfully
04:28:17.173 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:28:17.178 Projector: loaded successfully
04:28:17.178 === omni_init: loading APM model
04:28:17.334 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:28:17.578 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:28:17.579 Token2Wav: all model files found, initializing session...
04:28:17.579 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:28:17.579 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:28:17.922 Token2Wav: initialized successfully
04:28:17.922 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:28:17.922 Token2Wav: 使用 C++ 实现
04:28:17.922 === omni_init success: ctx_llama = 000001efa7796c50
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-2-w2nz6pnk\fixture_
Count: 2
04:28:17.922 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:28:17.922 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-2-w2nz6pnk\fixture_0000.wav
04:28:18.882 system prompt ref_audio embedding: n_pos=20
04:28:21.267 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:28:21.267 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:28:21.267 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:28:21.267 n_past = 72
04:28:21.267
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.34471 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3035.38 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3053.64 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3053.65 ms by vision ( 3053.65 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-2-w2nz6pnk\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
04:28:27.070 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-2-w2nz6pnk\fixture_0001.wav
04:28:27.374 stream_prefill(index=1): user audio embedding: n_pos=31
04:28:28.964
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.69636 s
04:28:28.965 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:28:28.965 stream_decode: create tts thread (simplex mode)
04:28:28.965 stream_decode: create t2w thread
04:28:28.965 wait prefill done
04:28:28.965 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:28:28.965 T2W thread (C++) started
<user>
<assistant>04:28:28.968 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:28:28.969 TTS thread started
04:28:29.452 📍 [单工TTS] assistant prompt 完成, n_past=182
04:28:29.452 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:28:30.246 LLM: detected end token, set llm_generation_done=true
04:28:30.246 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]
04:28:30.247 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:28:30.247 📍 轮次 1 结束,记录边界于 n_past=191
04:28:30.247 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]
04:28:30.247 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:28:30.247 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
04:28:30.247 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:28:30.247 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:28:30.247 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:28:30.288 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:28:30.288 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:28:30.288 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:28:30.288 TTS Simplex: first chunk - cleared KV cache
04:28:30.288 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:28:30.384 TTS Simplex: prefill completed, n_past_tts=9
04:28:30.384 TTS Simplex: sampler created
04:28:30.384 TTS simplex: is_audio_bos=true (first audio token)
04:28:30.414 TTS Simplex Phase1: token 1/500: rel_id=761
04:28:30.425 TTS Simplex Phase1: token 2/500: rel_id=4218
04:28:30.436 TTS Simplex Phase1: token 3/500: rel_id=4218
04:28:30.447 TTS Simplex Phase1: token 4/500: rel_id=4137
04:28:30.459 TTS Simplex Phase1: token 5/500: rel_id=4218
04:28:30.584 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:28:30.697 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:28:30.697 TTS Simplex Phase1: token 25/500: rel_id=1295
04:28:30.697 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:28:30.697 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:28:30.700 TTS Simplex Phase1: EOS token at step 26
04:28:30.700 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:28:30.700 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=34
04:28:30.708 TTS Simplex Phase2: text_eos_embed injected, n_past=35
04:28:30.716 TTS Simplex Phase2: audio_bos injected, n_past=36, starting final generation
04:28:30.987 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:28:31.018 TTS Simplex Phase2: EOS at step 28 (final end)
04:28:31.018 TTS Simplex: chunk 结束,tts_token_buffer 剩余 2 tokens (保留等下一个 chunk)
04:28:31.018 TTS Simplex: is_final_text_chunk=true, flush 剩余 2 tokens 从 tts_token_buffer
04:28:31.018 TTS Simplex: generated 52 audio tokens for chunk 0
04:28:31.018 TTS Simplex: chunk 0 first tokens: [761 4218 4218 4137 4218 ], last tokens: [796 759 1734 4218 4137 ]
04:28:31.018 TTS Simplex: updated tts_n_past_accumulated=64, total_generated_tokens=52
04:28:31.019 TTS: finished processing all chunks
04:28:31.020 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:28:31.020 TTS: sent is_final=true to T2W queue (turn end)
04:28:32.965 🎉 首响时间 (First Audio Response): 4000ms
04:28:32.965 T2W线程: wav_0.wav | 0.84s audio | 2267.5ms inference | RTF=2.70 | t=4000ms
04:28:35.147 T2W线程: wav_1.wav | 1.00s audio | 2181.0ms inference | RTF=2.18 | t=6182ms
04:28:37.123 T2W线程: wav_2.wav | 0.36s audio | 1975.4ms inference | RTF=5.49 | t=8158ms
04:28:37.124 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:28:37.124 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:28:37.128 omni_stop_threads: stop signals sent
tts thread end
04:28:37.133 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1941.066ms vocoder=326.403ms total=2267.489ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1803.526ms vocoder=377.471ms total=2181.008ms audio=24000
[timing] call=2 tokens=5 final=1 token2mel=1834.813ms vocoder=140.594ms total=1975.417ms audio=8640
Audio generation completed.
llama_perf_context_print: load time = 12870.99 ms
llama_perf_context_print: prompt eval time = 11529.88 ms / 182 tokens ( 63.35 ms per token, 15.79 tokens per second)
llama_perf_context_print: eval time = 791.82 ms / 9 runs ( 87.98 ms per token, 11.37 tokens per second)
llama_perf_context_print: total time = 20551.67 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
t2w thread end
@@ -0,0 +1,469 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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 C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:35:17.284 === omni_init start
04:35:17.284 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:35:17.284 === omni_init: loading new LLM model
04:35:19.213 === omni_init: loading TTS model
04:35:19.213 TTS model: loading with n_gpu_layers=0
04:35:19.451 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:35:19.451 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:35:19.766 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:35:19.769 TTS: head_code loaded, verifying first few values:
04:35:19.769 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:35:19.769 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:35:19.769 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:35:19.798 TTS: weights loaded successfully
04:35:19.798 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:35:19.803 Projector: loaded successfully
04:35:19.803 === omni_init: loading APM model
04:35:19.967 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:35:20.205 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:35:20.205 Token2Wav: all model files found, initializing session...
04:35:20.205 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:35:20.205 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:35:20.530 Token2Wav: initialized successfully
04:35:20.530 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:35:20.530 Token2Wav: 使用 C++ 实现
04:35:20.530 === omni_init success: ctx_llama = 000002ad2d506c50
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-20-yne7y0xs\fixture_
Count: 2
04:35:20.530 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:35:20.530 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-20-yne7y0xs\fixture_0000.wav
04:35:21.530 system prompt ref_audio embedding: n_pos=20
04:35:23.865 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:35:23.865 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:35:23.865 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:35:23.865 n_past = 72
04:35:23.865
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.33545 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3066.96 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3085.82 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3085.83 ms by vision ( 3085.83 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-20-yne7y0xs\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
04:35:29.847 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-20-yne7y0xs\fixture_0001.wav
04:35:30.144 stream_prefill(index=1): user audio embedding: n_pos=31
04:35:31.751
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.88434 s
04:35:31.751 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:35:31.751 stream_decode: create tts thread (simplex mode)
04:35:31.751 stream_decode: create t2w thread
04:35:31.751 wait prefill done
04:35:31.751 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:35:31.752 T2W thread (C++) started
<user>
<assistant>04:35:31.756 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:35:31.756 TTS thread started
04:35:32.251 📍 [单工TTS] assistant prompt 完成, n_past=182
04:35:32.251 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:35:33.054 LLM: detected end token, set llm_generation_done=true
04:35:33.054 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]
04:35:33.054 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:35:33.054 📍 轮次 1 结束,记录边界于 n_past=191
04:35:33.054 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]
04:35:33.054 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:35:33.054 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
04:35:33.054 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:35:33.054 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:35:33.055 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:35:33.089 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:35:33.090 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:35:33.090 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:35:33.090 TTS Simplex: first chunk - cleared KV cache
04:35:33.090 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:35:33.189 TTS Simplex: prefill completed, n_past_tts=9
04:35:33.189 TTS Simplex: sampler created
04:35:33.189 TTS simplex: is_audio_bos=true (first audio token)
04:35:33.221 TTS Simplex Phase1: token 1/500: rel_id=1487
04:35:33.236 TTS Simplex Phase1: token 2/500: rel_id=4218
04:35:33.250 TTS Simplex Phase1: token 3/500: rel_id=4299
04:35:33.265 TTS Simplex Phase1: token 4/500: rel_id=2031
04:35:33.277 TTS Simplex Phase1: token 5/500: rel_id=1869
04:35:33.371 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:35:33.505 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:35:33.505 TTS Simplex Phase1: token 25/500: rel_id=2006
04:35:33.505 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:35:33.506 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:35:33.695 TTS Simplex Phase1: EOS token at step 43
04:35:33.695 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:35:33.695 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=51
04:35:33.703 TTS Simplex Phase2: text_eos_embed injected, n_past=52
04:35:33.710 TTS Simplex Phase2: audio_bos injected, n_past=53, starting final generation
04:35:33.796 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:35:33.905 TTS Simplex Phase2: EOS at step 18 (final end)
04:35:33.905 TTS Simplex: chunk 结束,tts_token_buffer 剩余 9 tokens (保留等下一个 chunk)
04:35:33.905 TTS Simplex: is_final_text_chunk=true, flush 剩余 9 tokens 从 tts_token_buffer
04:35:33.905 TTS Simplex: generated 59 audio tokens for chunk 0
04:35:33.905 TTS Simplex: chunk 0 first tokens: [1487 4218 4299 2031 1869 ], last tokens: [6 1788 4218 4299 6082 ]
04:35:33.905 TTS Simplex: updated tts_n_past_accumulated=71, total_generated_tokens=59
04:35:33.915 TTS: finished processing all chunks
04:35:33.915 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:35:33.915 TTS: sent is_final=true to T2W queue (turn end)
04:35:35.820 🎉 首响时间 (First Audio Response): 4068ms
04:35:35.820 T2W线程: wav_0.wav | 0.84s audio | 2312.9ms inference | RTF=2.75 | t=4068ms
04:35:38.037 T2W线程: wav_1.wav | 1.00s audio | 2216.5ms inference | RTF=2.22 | t=6285ms
04:35:40.113 T2W线程: wav_2.wav | 0.64s audio | 2075.4ms inference | RTF=3.24 | t=8361ms
04:35:40.113 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:35:40.113 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:35:40.126 omni_stop_threads: stop signals sent
04:35:40.126 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1978.438ms vocoder=334.386ms total=2312.837ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1832.878ms vocoder=383.595ms total=2216.483ms audio=24000
[timing] call=2 tokens=12 final=1 token2mel=1850.816ms vocoder=224.537ms total=2075.384ms audio=15360
Audio generation completed.
llama_perf_context_print: load time = 13036.48 ms
llama_perf_context_print: prompt eval time = 11720.03 ms / 182 tokens ( 64.40 ms per token, 15.53 tokens per second)
llama_perf_context_print: eval time = 800.12 ms / 9 runs ( 88.90 ms per token, 11.25 tokens per second)
llama_perf_context_print: total time = 20911.68 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 x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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 C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:35:40.942 === omni_init start
04:35:40.942 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:35:40.942 === omni_init: loading new LLM model
04:35:42.886 === omni_init: loading TTS model
04:35:42.886 TTS model: loading with n_gpu_layers=0
04:35:43.122 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:35:43.122 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:35:43.436 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:35:43.440 TTS: head_code loaded, verifying first few values:
04:35:43.440 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:35:43.440 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:35:43.440 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:35:43.469 TTS: weights loaded successfully
04:35:43.469 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:35:43.474 Projector: loaded successfully
04:35:43.474 === omni_init: loading APM model
04:35:43.627 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:35:43.873 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:35:43.873 Token2Wav: all model files found, initializing session...
04:35:43.873 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:35:43.873 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:35:44.199 Token2Wav: initialized successfully
04:35:44.199 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:35:44.199 Token2Wav: 使用 C++ 实现
04:35:44.199 === omni_init success: ctx_llama = 000001d40d4e6c50
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-21-iqxzleuj\fixture_
Count: 2
04:35:44.199 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:35:44.199 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-21-iqxzleuj\fixture_0000.wav
04:35:45.208 system prompt ref_audio embedding: n_pos=20
04:35:47.630 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:35:47.630 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:35:47.630 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:35:47.630 n_past = 72
04:35:47.630
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.43106 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3131.56 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3150.66 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3150.67 ms by vision ( 3150.67 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-21-iqxzleuj\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
04:35:53.660 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-21-iqxzleuj\fixture_0001.wav
04:35:53.981 stream_prefill(index=1): user audio embedding: n_pos=31
04:35:55.571
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.93944 s
04:35:55.571 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:35:55.571 stream_decode: create tts thread (simplex mode)
04:35:55.571 stream_decode: create t2w thread
04:35:55.571 wait prefill done
04:35:55.571 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:35:55.571 T2W thread (C++) started
<user>
<assistant>04:35:55.574 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:35:55.574 TTS thread started
04:35:56.072 📍 [单工TTS] assistant prompt 完成, n_past=182
04:35:56.073 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:35:56.885 LLM: detected end token, set llm_generation_done=true
04:35:56.885 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]
04:35:56.885 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:35:56.885 📍 轮次 1 结束,记录边界于 n_past=191
04:35:56.885 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]
04:35:56.885 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:35:56.886 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
04:35:56.886 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:35:56.886 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:35:56.886 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:35:56.928 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:35:56.928 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:35:56.928 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:35:56.928 TTS Simplex: first chunk - cleared KV cache
04:35:56.928 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:35:57.024 TTS Simplex: prefill completed, n_past_tts=9
04:35:57.024 TTS Simplex: sampler created
04:35:57.024 TTS simplex: is_audio_bos=true (first audio token)
04:35:57.055 TTS Simplex Phase1: token 1/500: rel_id=770
04:35:57.067 TTS Simplex Phase1: token 2/500: rel_id=4218
04:35:57.082 TTS Simplex Phase1: token 3/500: rel_id=4137
04:35:57.094 TTS Simplex Phase1: token 4/500: rel_id=4137
04:35:57.107 TTS Simplex Phase1: token 5/500: rel_id=4137
04:35:57.204 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:35:57.336 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:35:57.336 TTS Simplex Phase1: token 25/500: rel_id=4439
04:35:57.336 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:35:57.336 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:35:57.523 TTS Simplex Phase1: EOS token at step 43
04:35:57.523 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:35:57.523 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=51
04:35:57.531 TTS Simplex Phase2: text_eos_embed injected, n_past=52
04:35:57.538 TTS Simplex Phase2: audio_bos injected, n_past=53, starting final generation
04:35:57.624 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:35:57.753 TTS Simplex Phase2: EOS at step 20 (final end)
04:35:57.753 TTS Simplex: chunk 结束,tts_token_buffer 剩余 11 tokens (保留等下一个 chunk)
04:35:57.753 TTS Simplex: is_final_text_chunk=true, flush 剩余 11 tokens 从 tts_token_buffer
04:35:57.753 TTS Simplex: generated 61 audio tokens for chunk 0
04:35:57.753 TTS Simplex: chunk 0 first tokens: [770 4218 4137 4137 4137 ], last tokens: [1707 4137 4218 4218 3894 ]
04:35:57.753 TTS Simplex: updated tts_n_past_accumulated=73, total_generated_tokens=61
04:35:57.755 TTS: finished processing all chunks
04:35:57.755 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:35:57.755 TTS: sent is_final=true to T2W queue (turn end)
04:35:59.639 🎉 首响时间 (First Audio Response): 4067ms
04:35:59.639 T2W线程: wav_0.wav | 0.84s audio | 2301.2ms inference | RTF=2.74 | t=4067ms
04:36:01.841 T2W线程: wav_1.wav | 1.00s audio | 2201.6ms inference | RTF=2.20 | t=6270ms
04:36:03.951 T2W线程: wav_2.wav | 0.72s audio | 2108.9ms inference | RTF=2.93 | t=8379ms
04:36:03.951 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:36:03.951 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:04:36:36:03.964 omni_stop_threads: stop signals sent
03.964 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1973.491ms vocoder=327.671ms total=2301.179ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1815.234ms vocoder=386.386ms total=2201.630ms audio=24000
[timing] call=2 tokens=14 final=1 token2mel=1863.202ms vocoder=245.703ms total=2108.920ms audio=17280
Audio generation completed.
llama_perf_context_print: load time = 13185.37 ms
llama_perf_context_print: prompt eval time = 11872.49 ms / 182 tokens ( 65.23 ms per token, 15.33 tokens per second)
llama_perf_context_print: eval time = 810.38 ms / 9 runs ( 90.04 ms per token, 11.11 tokens per second)
llama_perf_context_print: total time = 21076.80 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
@@ -0,0 +1,469 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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 C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:28:37.976 === omni_init start
04:28:37.976 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:28:37.976 === omni_init: loading new LLM model
04:28:39.939 === omni_init: loading TTS model
04:28:39.939 TTS model: loading with n_gpu_layers=0
04:28:40.181 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:28:40.181 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:28:40.506 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:28:40.510 TTS: head_code loaded, verifying first few values:
04:28:40.510 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:28:40.510 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:28:40.510 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:28:40.539 TTS: weights loaded successfully
04:28:40.539 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:28:40.544 Projector: loaded successfully
04:28:40.544 === omni_init: loading APM model
04:28:40.700 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:28:40.957 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:28:40.957 Token2Wav: all model files found, initializing session...
04:28:40.957 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:28:40.957 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:28:41.306 Token2Wav: initialized successfully
04:28:41.306 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:28:41.306 Token2Wav: 使用 C++ 实现
04:28:41.306 === omni_init success: ctx_llama = 000001d934656c50
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-3-8fce5k7d\fixture_
Count: 2
04:28:41.306 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:28:41.306 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-3-8fce5k7d\fixture_0000.wav
04:28:42.352 system prompt ref_audio embedding: n_pos=20
04:28:44.714 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:28:44.714 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:28:44.714 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:28:44.714 n_past = 72
04:28:44.714
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.40757 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3006.12 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3025.32 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3025.32 ms by vision ( 3025.32 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-3-8fce5k7d\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
04:28:50.553 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-3-8fce5k7d\fixture_0001.wav
04:28:50.838 stream_prefill(index=1): user audio embedding: n_pos=31
04:28:52.452
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.73671 s
04:28:52.452 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:28:52.452 stream_decode: create tts thread (simplex mode)
04:28:52.452 stream_decode: create t2w thread
04:28:52.452 wait prefill done
04:28:52.452 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:28:52.452 T2W thread (C++) started
<user>
<assistant>04:28:52.455 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:28:52.456 TTS thread started
04:28:52.941 📍 [单工TTS] assistant prompt 完成, n_past=182
04:28:52.941 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:28:53.736 LLM: detected end token, set llm_generation_done=true
04:28:53.736 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]
04:28:53.736 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:28:53.736 📍 轮次 1 结束,记录边界于 n_past=191
04:28:53.736 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]
04:28:53.736 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:28:53.736 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
04:28:53.736 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:28:53.736 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:28:53.737 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:28:53.777 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:28:53.777 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:28:53.777 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:28:53.777 TTS Simplex: first chunk - cleared KV cache
04:28:53.777 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:28:53.871 TTS Simplex: prefill completed, n_past_tts=9
04:28:53.871 TTS Simplex: sampler created
04:28:53.871 TTS simplex: is_audio_bos=true (first audio token)
04:28:53.903 TTS Simplex Phase1: token 1/500: rel_id=1499
04:28:53.918 TTS Simplex Phase1: token 2/500: rel_id=4218
04:28:53.931 TTS Simplex Phase1: token 3/500: rel_id=6486
04:28:53.944 TTS Simplex Phase1: token 4/500: rel_id=4299
04:28:53.956 TTS Simplex Phase1: token 5/500: rel_id=4299
04:28:54.080 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:28:54.181 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:28:54.181 TTS Simplex Phase1: token 25/500: rel_id=1563
04:28:54.181 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:28:54.181 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:28:54.337 TTS Simplex Phase1: EOS token at step 40
04:28:54.337 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:28:54.337 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=48
04:28:54.345 TTS Simplex Phase2: text_eos_embed injected, n_past=49
04:28:54.352 TTS Simplex Phase2: audio_bos injected, n_past=50, starting final generation
04:28:54.472 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:28:54.611 TTS Simplex Phase2: EOS at step 24 (final end)
04:28:54.611 TTS Simplex: chunk 结束,tts_token_buffer 剩余 12 tokens (保留等下一个 chunk)
04:28:54.611 TTS Simplex: is_final_text_chunk=true, flush 剩余 12 tokens 从 tts_token_buffer
04:28:54.611 TTS Simplex: generated 62 audio tokens for chunk 0
04:28:54.611 TTS Simplex: chunk 0 first tokens: [1499 4218 6486 4299 4299 ], last tokens: [1785 4299 4299 4218 4218 ]
04:28:54.611 TTS Simplex: updated tts_n_past_accumulated=74, total_generated_tokens=62
04:28:54.622 TTS: finished processing all chunks
04:28:54.622 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:28:54.622 TTS: sent is_final=true to T2W queue (turn end)
04:28:56.501 🎉 首响时间 (First Audio Response): 4048ms
04:28:56.501 T2W线程: wav_0.wav | 0.84s audio | 2318.1ms inference | RTF=2.76 | t=4048ms
04:28:58.727 T2W线程: wav_1.wav | 1.00s audio | 2225.6ms inference | RTF=2.23 | t=6275ms
04:29:00.842 T2W线程: wav_2.wav | 0.76s audio | 2114.9ms inference | RTF=2.78 | t=8390ms
04:29:00.843 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:29:00.843 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:29:00.951 omni_stop_threads: stop signals sent
04:29:00.951 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1992.770ms vocoder=325.248ms total=2318.031ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1844.429ms vocoder=381.173ms total=2225.612ms audio=24000
[timing] call=2 tokens=15 final=1 token2mel=1855.761ms vocoder=259.072ms total=2114.847ms audio=18240
Audio generation completed.
llama_perf_context_print: load time = 13000.88 ms
llama_perf_context_print: prompt eval time = 11634.18 ms / 182 tokens ( 63.92 ms per token, 15.64 tokens per second)
llama_perf_context_print: eval time = 792.49 ms / 9 runs ( 88.05 ms per token, 11.36 tokens per second)
llama_perf_context_print: total time = 21010.31 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 x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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 C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:29:01.929 === omni_init start
04:29:01.929 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:29:01.929 === omni_init: loading new LLM model
04:29:03.888 === omni_init: loading TTS model
04:29:03.888 TTS model: loading with n_gpu_layers=0
04:29:04.123 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:29:04.123 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:29:04.443 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:29:04.447 TTS: head_code loaded, verifying first few values:
04:29:04.447 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:29:04.447 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:29:04.447 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:29:04.476 TTS: weights loaded successfully
04:29:04.476 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:29:04.481 Projector: loaded successfully
04:29:04.482 === omni_init: loading APM model
04:29:04.638 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:29:04.932 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:29:04.932 Token2Wav: all model files found, initializing session...
04:29:04.932 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:29:04.932 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:29:05.287 Token2Wav: initialized successfully
04:29:05.287 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:29:05.287 Token2Wav: 使用 C++ 实现
04:29:05.287 === omni_init success: ctx_llama = 0000023e624f6c50
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-4-pl88tpbs\fixture_
Count: 2
04:29:05.287 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:29:05.287 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-4-pl88tpbs\fixture_0000.wav
04:29:06.291 system prompt ref_audio embedding: n_pos=20
04:29:08.627 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:29:08.627 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:29:08.627 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:29:08.627 n_past = 72
04:29:08.627
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.34015 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3001.57 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3020.54 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3020.54 ms by vision ( 3020.54 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-4-pl88tpbs\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
04:29:14.537 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-4-pl88tpbs\fixture_0001.wav
04:29:14.842 stream_prefill(index=1): user audio embedding: n_pos=31
04:29:16.333
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.70471 s
04:29:16.333 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:29:16.333 stream_decode: create tts thread (simplex mode)
04:29:16.333 stream_decode: create t2w thread
04:29:16.333 wait prefill done
04:29:16.333 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:29:16.333 T2W thread (C++) started
<user>
<assistant>04:29:16.336 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:29:16.337 TTS thread started
04:29:16.791 📍 [单工TTS] assistant prompt 完成, n_past=182
04:29:16.791 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:29:17.580 LLM: detected end token, set llm_generation_done=true
04:29:17.580 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]
04:29:17.580 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:29:17.580 📍 轮次 1 结束,记录边界于 n_past=191
04:29:17.580 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]
04:29:17.580 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:29:17.580 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
04:29:17.580 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:29:17.580 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:29:17.581 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:29:17.621 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:29:17.621 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:29:17.621 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:29:17.621 TTS Simplex: first chunk - cleared KV cache
04:29:17.621 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:29:17.709 TTS Simplex: prefill completed, n_past_tts=9
04:29:17.709 TTS Simplex: sampler created
04:29:17.709 TTS simplex: is_audio_bos=true (first audio token)
04:29:17.740 TTS Simplex Phase1: token 1/500: rel_id=767
04:29:17.751 TTS Simplex Phase1: token 2/500: rel_id=1951
04:29:17.762 TTS Simplex Phase1: token 3/500: rel_id=4218
04:29:17.774 TTS Simplex Phase1: token 4/500: rel_id=4218
04:29:17.785 TTS Simplex Phase1: token 5/500: rel_id=4218
04:29:17.924 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:29:18.015 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:29:18.015 TTS Simplex Phase1: token 25/500: rel_id=3747
04:29:18.015 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:29:18.015 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:29:18.281 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 50, buffer=25)
04:29:18.281 TTS Simplex Phase1: token 50/500: rel_id=4923
04:29:18.317 TTS Simplex Phase1: EOS token at step 54
04:29:18.317 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:29:18.317 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=62
04:29:18.325 TTS Simplex Phase2: text_eos_embed injected, n_past=63
04:29:18.332 TTS Simplex Phase2: audio_bos injected, n_past=64, starting final generation
04:29:18.517 TTS Simplex Phase2: EOS at step 17 (final end)
04:29:18.517 TTS Simplex: chunk 结束,tts_token_buffer 剩余 19 tokens (保留等下一个 chunk)
04:29:18.517 TTS Simplex: is_final_text_chunk=true, flush 剩余 19 tokens 从 tts_token_buffer
04:29:18.517 TTS Simplex: generated 69 audio tokens for chunk 0
04:29:18.517 TTS Simplex: chunk 0 first tokens: [767 1951 4218 4218 4218 ], last tokens: [4218 4218 4218 4218 3894 ]
04:29:18.517 TTS Simplex: updated tts_n_past_accumulated=81, total_generated_tokens=69
04:29:18.527 TTS: finished processing all chunks
04:29:18.527 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:29:18.527 TTS: sent is_final=true to T2W queue (turn end)
04:29:20.335 🎉 首响时间 (First Audio Response): 4001ms
04:29:20.335 T2W线程: wav_0.wav | 0.84s audio | 2318.3ms inference | RTF=2.76 | t=4001ms
04:29:22.550 T2W线程: wav_1.wav | 1.00s audio | 2215.0ms inference | RTF=2.21 | t=6217ms
04:29:24.739 T2W线程: wav_2.wav | 1.04s audio | 2188.1ms inference | RTF=2.10 | t=8406ms
04:29:24.739 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:29:24.739 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:29:24.798 omni_stop_threads: stop signals sent
04:29:24.798 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1992.491ms vocoder=325.766ms total=2318.270ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1835.036ms vocoder=379.921ms total=2214.967ms audio=24000
[timing] call=2 tokens=22 final=1 token2mel=1853.961ms vocoder=334.123ms total=2188.094ms audio=24960
Audio generation completed.
llama_perf_context_print: load time = 12902.06 ms
llama_perf_context_print: prompt eval time = 11503.64 ms / 182 tokens ( 63.21 ms per token, 15.82 tokens per second)
llama_perf_context_print: eval time = 786.07 ms / 9 runs ( 87.34 ms per token, 11.45 tokens per second)
llama_perf_context_print: total time = 20908.13 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 x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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 C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:29:25.620 === omni_init start
04:29:25.620 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:29:25.620 === omni_init: loading new LLM model
04:29:27.628 === omni_init: loading TTS model
04:29:27.628 TTS model: loading with n_gpu_layers=0
04:29:27.869 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:29:27.869 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:29:28.190 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:29:28.194 TTS: head_code loaded, verifying first few values:
04:29:28.194 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:29:28.194 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:29:28.194 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:29:28.224 TTS: weights loaded successfully
04:29:28.224 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:29:28.229 Projector: loaded successfully
04:29:28.229 === omni_init: loading APM model
04:29:28.383 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:29:28.637 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:29:28.637 Token2Wav: all model files found, initializing session...
04:29:28.637 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:29:28.638 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:29:28.987 Token2Wav: initialized successfully
04:29:28.987 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:29:28.987 Token2Wav: 使用 C++ 实现
04:29:28.987 === omni_init success: ctx_llama = 00000172e8d46c50
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-5-viq28i_9\fixture_
Count: 2
04:29:28.987 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:29:28.987 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-5-viq28i_9\fixture_0000.wav
04:29:30.015 system prompt ref_audio embedding: n_pos=20
04:29:32.318 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:29:32.318 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:29:32.318 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:29:32.318 n_past = 72
04:29:32.318
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.33117 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3034.47 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3053.61 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3053.61 ms by vision ( 3053.61 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-5-viq28i_9\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
04:29:38.170 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-5-viq28i_9\fixture_0001.wav
04:29:38.469 stream_prefill(index=1): user audio embedding: n_pos=31
04:29:40.054
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.73486 s
04:29:40.055 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:29:40.055 stream_decode: create tts thread (simplex mode)
04:29:40.055 stream_decode: create t2w thread
04:29:40.055 wait prefill done
04:29:40.055 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:29:40.055 T2W thread (C++) started
<user>
<assistant>04:29:40.058 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:29:40.059 TTS thread started
04:29:40.574 📍 [单工TTS] assistant prompt 完成, n_past=182
04:29:40.574 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:29:41.366 LLM: detected end token, set llm_generation_done=true
04:29:41.366 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]
04:29:41.366 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:29:41.366 📍 轮次 1 结束,记录边界于 n_past=191
04:29:41.366 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]
04:29:41.366 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:29:41.366 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
04:29:41.366 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:29:41.366 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:29:41.367 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:29:41.401 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:29:41.401 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:29:41.401 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:29:41.401 TTS Simplex: first chunk - cleared KV cache
04:29:41.401 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:29:41.492 TTS Simplex: prefill completed, n_past_tts=9
04:29:41.492 TTS Simplex: sampler created
04:29:41.492 TTS simplex: is_audio_bos=true (first audio token)
04:29:41.526 TTS Simplex Phase1: token 1/500: rel_id=1490
04:29:41.538 TTS Simplex Phase1: token 2/500: rel_id=4218
04:29:41.552 TTS Simplex Phase1: token 3/500: rel_id=4299
04:29:41.566 TTS Simplex Phase1: token 4/500: rel_id=4299
04:29:41.579 TTS Simplex Phase1: token 5/500: rel_id=4299
04:29:41.690 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:29:41.807 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:29:41.807 TTS Simplex Phase1: token 25/500: rel_id=2798
04:29:41.807 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:29:41.807 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:29:41.830 TTS Simplex Phase1: EOS token at step 28
04:29:41.830 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:29:41.830 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=36
04:29:41.838 TTS Simplex Phase2: text_eos_embed injected, n_past=37
04:29:41.846 TTS Simplex Phase2: audio_bos injected, n_past=38, starting final generation
04:29:42.088 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:29:42.267 TTS Simplex Phase2: EOS at step 40 (final end)
04:29:42.267 TTS Simplex: chunk 结束,tts_token_buffer 剩余 16 tokens (保留等下一个 chunk)
04:29:42.267 TTS Simplex: is_final_text_chunk=true, flush 剩余 16 tokens 从 tts_token_buffer
04:29:42.267 TTS Simplex: generated 66 audio tokens for chunk 0
04:29:42.267 TTS Simplex: chunk 0 first tokens: [1490 4218 4299 4299 4299 ], last tokens: [1701 4299 6486 4299 4218 ]
04:29:42.267 TTS Simplex: updated tts_n_past_accumulated=78, total_generated_tokens=66
04:29:42.269 TTS: finished processing all chunks
04:29:42.269 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:29:42.269 TTS: sent is_final=true to T2W queue (turn end)
04:29:44.148 🎉 首响时间 (First Audio Response): 4093ms
04:29:44.148 T2W线程: wav_0.wav | 0.84s audio | 2339.6ms inference | RTF=2.79 | t=4093ms
04:29:46.372 T2W线程: wav_1.wav | 1.00s audio | 2223.4ms inference | RTF=2.22 | t=6317ms
04:29:48.536 T2W线程: wav_2.wav | 0.92s audio | 2163.7ms inference | RTF=2.35 | t=8481ms
04:29:48.537 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:29:48.537 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:29:48.541 omni_stop_threads: stop signals sent
04:29:48.541 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=2009.614ms vocoder=329.930ms total=2339.557ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1847.062ms vocoder=376.299ms total=2223.371ms audio=24000
[timing] call=2 tokens=19 final=1 token2mel=1858.554ms vocoder=305.126ms total=2163.691ms audio=22080
Audio generation completed.
llama_perf_context_print: load time = 12945.65 ms
llama_perf_context_print: prompt eval time = 11585.69 ms / 182 tokens ( 63.66 ms per token, 15.71 tokens per second)
llama_perf_context_print: eval time = 789.05 ms / 9 runs ( 87.67 ms per token, 11.41 tokens per second)
llama_perf_context_print: total time = 20912.47 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 x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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 C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:29:49.372 === omni_init start
04:29:49.373 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:29:49.373 === omni_init: loading new LLM model
04:29:51.330 === omni_init: loading TTS model
04:29:51.330 TTS model: loading with n_gpu_layers=0
04:29:51.570 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:29:51.570 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:29:51.889 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:29:51.893 TTS: head_code loaded, verifying first few values:
04:29:51.893 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:29:51.893 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:29:51.893 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:29:51.922 TTS: weights loaded successfully
04:29:51.922 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:29:51.927 Projector: loaded successfully
04:29:51.927 === omni_init: loading APM model
04:29:52.085 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:29:52.334 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:29:52.334 Token2Wav: all model files found, initializing session...
04:29:52.335 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:29:52.335 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:29:52.675 Token2Wav: initialized successfully
04:29:52.675 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:29:52.675 Token2Wav: 使用 C++ 实现
04:29:52.675 === omni_init success: ctx_llama = 00000220319a6c50
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-6-ei938o1c\fixture_
Count: 2
04:29:52.675 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:29:52.675 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-6-ei938o1c\fixture_0000.wav
04:29:53.753 system prompt ref_audio embedding: n_pos=20
04:29:56.130 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:29:56.130 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:29:56.131 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:29:56.131 n_past = 72
04:29:56.131
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.45575 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 2987.38 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3006.62 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3006.63 ms by vision ( 3006.63 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-6-ei938o1c\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
04:30:01.885 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-6-ei938o1c\fixture_0001.wav
04:30:02.188 stream_prefill(index=1): user audio embedding: n_pos=31
04:30:03.738
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.60634 s
04:30:03.738 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:30:03.738 stream_decode: create tts thread (simplex mode)
04:30:03.738 stream_decode: create t2w thread
04:30:03.738 wait prefill done
04:30:03.738 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:30:03.739 T2W thread (C++) started
<user>
<assistant>04:30:03.742 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:30:03.742 TTS thread started
04:30:04.238 📍 [单工TTS] assistant prompt 完成, n_past=182
04:30:04.238 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:30:05.046 LLM: detected end token, set llm_generation_done=true
04:30:05.046 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]
04:30:05.046 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:30:05.046 📍 轮次 1 结束,记录边界于 n_past=191
04:30:05.046 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]
04:30:05.046 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:30:05.046 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
04:30:05.046 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:30:05.046 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:30:05.047 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:30:05.080 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:30:05.080 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:30:05.080 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:30:05.080 TTS Simplex: first chunk - cleared KV cache
04:30:05.080 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:30:05.177 TTS Simplex: prefill completed, n_past_tts=9
04:30:05.177 TTS Simplex: sampler created
04:30:05.177 TTS simplex: is_audio_bos=true (first audio token)
04:30:05.208 TTS Simplex Phase1: token 1/500: rel_id=1490
04:30:05.220 TTS Simplex Phase1: token 2/500: rel_id=4299
04:30:05.231 TTS Simplex Phase1: token 3/500: rel_id=4299
04:30:05.242 TTS Simplex Phase1: token 4/500: rel_id=4218
04:30:05.256 TTS Simplex Phase1: token 5/500: rel_id=1806
04:30:05.380 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:30:05.487 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:30:05.487 TTS Simplex Phase1: token 25/500: rel_id=3994
04:30:05.487 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:30:05.487 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:30:05.621 TTS Simplex Phase1: EOS token at step 38
04:30:05.621 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:30:05.621 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=46
04:30:05.629 TTS Simplex Phase2: text_eos_embed injected, n_past=47
04:30:05.638 TTS Simplex Phase2: audio_bos injected, n_past=48, starting final generation
04:30:05.778 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:30:05.888 TTS Simplex Phase2: EOS at step 23 (final end)
04:30:05.888 TTS Simplex: chunk 结束,tts_token_buffer 剩余 9 tokens (保留等下一个 chunk)
04:30:05.888 TTS Simplex: is_final_text_chunk=true, flush 剩余 9 tokens 从 tts_token_buffer
04:30:05.888 TTS Simplex: generated 59 audio tokens for chunk 0
04:30:05.888 TTS Simplex: chunk 0 first tokens: [1490 4299 4299 4218 1806 ], last tokens: [735 4299 4299 6486 4218 ]
04:30:05.888 TTS Simplex: updated tts_n_past_accumulated=71, total_generated_tokens=59
04:30:05.889 TTS: finished processing all chunks
04:30:05.889 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:30:05.889 TTS: sent is_final=true to T2W queue (turn end)
04:30:07.814 🎉 首响时间 (First Audio Response): 4076ms
04:30:07.814 T2W线程: wav_0.wav | 0.84s audio | 2326.4ms inference | RTF=2.77 | t=4076ms
04:30:10.036 T2W线程: wav_1.wav | 1.00s audio | 2220.6ms inference | RTF=2.22 | t=6297ms
04:30:12.091 T2W线程: wav_2.wav | 0.64s audio | 2055.0ms inference | RTF=3.21 | t=8353ms
04:30:12.092 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:30:12.092 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:04:30:30:12.129 omni_stop_threads: stop signals sent
12.129 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1992.725ms vocoder=333.650ms total=2326.390ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1836.616ms vocoder=383.957ms total=2220.582ms audio=24000
[timing] call=2 tokens=12 final=1 token2mel=1837.356ms vocoder=217.573ms total=2054.959ms audio=15360
Audio generation completed.
llama_perf_context_print: load time = 12907.70 ms
llama_perf_context_print: prompt eval time = 11563.20 ms / 182 tokens ( 63.53 ms per token, 15.74 tokens per second)
llama_perf_context_print: eval time = 804.83 ms / 9 runs ( 89.43 ms per token, 11.18 tokens per second)
llama_perf_context_print: total time = 20798.04 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 x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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 C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:30:12.952 === omni_init start
04:30:12.953 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:30:12.953 === omni_init: loading new LLM model
04:30:14.919 === omni_init: loading TTS model
04:30:14.919 TTS model: loading with n_gpu_layers=0
04:30:15.157 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:30:15.157 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:30:15.475 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:30:15.479 TTS: head_code loaded, verifying first few values:
04:30:15.479 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:30:15.479 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:30:15.479 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:30:15.508 TTS: weights loaded successfully
04:30:15.508 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:30:15.513 Projector: loaded successfully
04:30:15.513 === omni_init: loading APM model
04:30:15.668 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:30:15.921 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:30:15.921 Token2Wav: all model files found, initializing session...
04:30:15.921 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:30:15.921 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:30:16.294 Token2Wav: initialized successfully
04:30:16.294 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:30:16.294 Token2Wav: 使用 C++ 实现
04:30:16.294 === omni_init success: ctx_llama = 00000234c0916c50
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-7-cnaux8l1\fixture_
Count: 2
04:30:16.295 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:30:16.295 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-7-cnaux8l1\fixture_0000.wav
04:30:17.287 system prompt ref_audio embedding: n_pos=20
04:30:19.552 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:30:19.552 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:30:19.552 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:30:19.552 n_past = 72
04:30:19.552
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.25701 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3010.66 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3029.27 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3029.28 ms by vision ( 3029.28 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-7-cnaux8l1\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
04:30:25.429 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-7-cnaux8l1\fixture_0001.wav
04:30:25.739 stream_prefill(index=1): user audio embedding: n_pos=31
04:30:27.140
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.58674 s
04:30:27.140 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:30:27.140 stream_decode: create tts thread (simplex mode)
04:30:27.140 stream_decode: create t2w thread
04:30:27.140 wait prefill done
04:30:27.140 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:30:27.140 T2W thread (C++) started
<user>
<assistant>04:30:27.144 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:30:27.144 TTS thread started
04:30:27.622 📍 [单工TTS] assistant prompt 完成, n_past=182
04:30:27.622 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:30:28.421 LLM: detected end token, set llm_generation_done=true
04:30:28.422 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]
04:30:28.422 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:30:28.422 📍 轮次 1 结束,记录边界于 n_past=191
04:30:28.422 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]
04:30:28.422 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:30:28.422 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
04:30:28.422 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:30:28.422 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:30:28.423 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:30:28.467 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:30:28.467 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:30:28.467 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:30:28.467 TTS Simplex: first chunk - cleared KV cache
04:30:28.467 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:30:28.560 TTS Simplex: prefill completed, n_past_tts=9
04:30:28.560 TTS Simplex: sampler created
04:30:28.560 TTS simplex: is_audio_bos=true (first audio token)
04:30:28.594 TTS Simplex Phase1: token 1/500: rel_id=2225
04:30:28.607 TTS Simplex Phase1: token 2/500: rel_id=4137
04:30:28.618 TTS Simplex Phase1: token 3/500: rel_id=4137
04:30:28.634 TTS Simplex Phase1: token 4/500: rel_id=4137
04:30:28.647 TTS Simplex Phase1: token 5/500: rel_id=1732
04:30:28.741 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:30:28.874 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:30:28.874 TTS Simplex Phase1: token 25/500: rel_id=991
04:30:28.874 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:30:28.874 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:30:29.024 TTS Simplex Phase1: EOS token at step 39
04:30:29.024 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:30:29.024 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=47
04:30:29.031 TTS Simplex Phase2: text_eos_embed injected, n_past=48
04:30:29.039 TTS Simplex Phase2: audio_bos injected, n_past=49, starting final generation
04:30:29.173 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:30:29.237 TTS Simplex Phase2: EOS at step 18 (final end)
04:30:29.237 TTS Simplex: chunk 结束,tts_token_buffer 剩余 5 tokens (保留等下一个 chunk)
04:30:29.237 TTS Simplex: is_final_text_chunk=true, flush 剩余 5 tokens 从 tts_token_buffer
04:30:29.237 TTS Simplex: generated 55 audio tokens for chunk 0
04:30:29.237 TTS Simplex: chunk 0 first tokens: [2225 4137 4137 4137 1732 ], last tokens: [759 1461 4137 4137 4137 ]
04:30:29.237 TTS Simplex: updated tts_n_past_accumulated=67, total_generated_tokens=55
04:30:29.238 TTS: finished processing all chunks
04:30:29.238 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:30:29.238 TTS: sent is_final=true to T2W queue (turn end)
04:30:31.160 🎉 首响时间 (First Audio Response): 4020ms
04:30:31.160 T2W线程: wav_0.wav | 0.84s audio | 2284.7ms inference | RTF=2.72 | t=4020ms
04:30:33.350 T2W线程: wav_1.wav | 1.00s audio | 2188.8ms inference | RTF=2.19 | t=6209ms
04:30:35.360 T2W线程: wav_2.wav | 0.48s audio | 2009.2ms inference | RTF=4.19 | t=8219ms
04:30:35.360 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:30:35.360 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:30:04:30:35.375 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1962.498ms vocoder=322.203ms total=2284.715ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1807.541ms vocoder=381.263ms total=2188.814ms audio=24000
[timing] call=2 tokens=8 final=1 token2mel=1837.396ms vocoder=171.743ms total=2009.169ms audio=11520
Audio generation completed.
llama_perf_context_print: load time = 12702.50 ms
llama_perf_context_print: prompt eval time = 11326.66 ms / 182 tokens ( 62.23 ms per token, 16.07 tokens per second)
llama_perf_context_print: eval time = 796.59 ms / 9 runs ( 88.51 ms per token, 11.30 tokens per second)
llama_perf_context_print: total time = 20455.32 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
35.375 omni_stop_threads: stop signals sent
tts thread end
t2w thread end
@@ -0,0 +1,469 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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 C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:30:36.219 === omni_init start
04:30:36.219 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:30:36.219 === omni_init: loading new LLM model
04:30:38.172 === omni_init: loading TTS model
04:30:38.172 TTS model: loading with n_gpu_layers=0
04:30:38.415 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:30:38.415 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:30:38.738 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:30:38.742 TTS: head_code loaded, verifying first few values:
04:30:38.742 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:30:38.742 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:30:38.742 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:30:38.770 TTS: weights loaded successfully
04:30:38.770 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:30:38.775 Projector: loaded successfully
04:30:38.775 === omni_init: loading APM model
04:30:38.942 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:30:39.187 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:30:39.187 Token2Wav: all model files found, initializing session...
04:30:39.187 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:30:39.187 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:30:39.526 Token2Wav: initialized successfully
04:30:39.526 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:30:39.526 Token2Wav: 使用 C++ 实现
04:30:39.526 === omni_init success: ctx_llama = 00000275a2ea6c50
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-8-zah7j9jd\fixture_
Count: 2
04:30:39.526 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:30:39.526 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-8-zah7j9jd\fixture_0000.wav
04:30:40.589 system prompt ref_audio embedding: n_pos=20
04:30:42.936 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:30:42.936 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:30:42.936 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:30:42.936 n_past = 72
04:30:42.936
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.40969 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 2987.72 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3007.03 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3007.03 ms by vision ( 3007.03 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-8-zah7j9jd\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
04:30:48.810 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-8-zah7j9jd\fixture_0001.wav
04:30:49.113 stream_prefill(index=1): user audio embedding: n_pos=31
04:30:50.703
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.76552 s
04:30:50.703 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:30:50.703 stream_decode: create tts thread (simplex mode)
04:30:50.703 stream_decode: create t2w thread
04:30:50.703 wait prefill done
04:30:50.703 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:30:50.704 T2W thread (C++) started
<user>
<assistant>04:30:50.707 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:30:50.708 TTS thread started
04:30:51.182 📍 [单工TTS] assistant prompt 完成, n_past=182
04:30:51.182 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:30:51.992 LLM: detected end token, set llm_generation_done=true
04:30:51.992 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]
04:30:51.992 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:30:51.992 📍 轮次 1 结束,记录边界于 n_past=191
04:30:51.992 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]
04:30:51.992 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:30:51.992 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
04:30:51.992 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:30:51.992 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:30:51.993 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:30:52.034 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:30:52.034 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:30:52.034 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:30:52.034 TTS Simplex: first chunk - cleared KV cache
04:30:52.034 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:30:52.131 TTS Simplex: prefill completed, n_past_tts=9
04:30:52.132 TTS Simplex: sampler created
04:30:52.132 TTS simplex: is_audio_bos=true (first audio token)
04:30:52.162 TTS Simplex Phase1: token 1/500: rel_id=761
04:30:52.173 TTS Simplex Phase1: token 2/500: rel_id=4218
04:30:52.185 TTS Simplex Phase1: token 3/500: rel_id=4218
04:30:52.197 TTS Simplex Phase1: token 4/500: rel_id=4137
04:30:52.212 TTS Simplex Phase1: token 5/500: rel_id=4218
04:30:52.317 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:30:52.446 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:30:52.446 TTS Simplex Phase1: token 25/500: rel_id=1762
04:30:52.447 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:30:52.447 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:30:52.515 TTS Simplex Phase1: EOS token at step 32
04:30:52.515 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:30:52.515 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=40
04:30:52.523 TTS Simplex Phase2: text_eos_embed injected, n_past=41
04:30:52.531 TTS Simplex Phase2: audio_bos injected, n_past=42, starting final generation
04:30:52.741 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:30:52.870 TTS Simplex Phase2: EOS at step 31 (final end)
04:30:52.870 TTS Simplex: chunk 结束,tts_token_buffer 剩余 11 tokens (保留等下一个 chunk)
04:30:52.870 TTS Simplex: is_final_text_chunk=true, flush 剩余 11 tokens 从 tts_token_buffer
04:30:52.870 TTS Simplex: generated 61 audio tokens for chunk 0
04:30:52.870 TTS Simplex: chunk 0 first tokens: [761 4218 4218 4137 4218 ], last tokens: [3975 4218 4218 4218 6082 ]
04:30:52.870 TTS Simplex: updated tts_n_past_accumulated=73, total_generated_tokens=61
04:30:52.880 TTS: finished processing all chunks
04:30:52.881 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:30:52.881 TTS: sent is_final=true to T2W queue (turn end)
04:30:54.772 🎉 首响时间 (First Audio Response): 4068ms
04:30:54.772 T2W线程: wav_0.wav | 0.84s audio | 2323.3ms inference | RTF=2.77 | t=4068ms
04:30:56.998 T2W线程: wav_1.wav | 1.00s audio | 2225.5ms inference | RTF=2.23 | t=6294ms
04:30:59.096 T2W线程: wav_2.wav | 0.72s audio | 2097.6ms inference | RTF=2.91 | t=8393ms
04:30:59.097 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:30:59.097 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:30:59.139 omni_stop_threads: stop signals sent
04:30:59.139 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1992.250ms vocoder=330.976ms total=2323.245ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1843.076ms vocoder=382.399ms total=2225.486ms audio=24000
[timing] call=2 tokens=14 final=1 token2mel=1853.170ms vocoder=244.435ms total=2097.621ms audio=17280
Audio generation completed.
llama_perf_context_print: load time = 13009.57 ms
llama_perf_context_print: prompt eval time = 11654.63 ms / 182 tokens ( 64.04 ms per token, 15.62 tokens per second)
llama_perf_context_print: eval time = 807.20 ms / 9 runs ( 89.69 ms per token, 11.15 tokens per second)
llama_perf_context_print: total time = 20965.85 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 x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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 C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:30:59.951 === omni_init start
04:30:59.951 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:30:59.951 === omni_init: loading new LLM model
04:31:01.891 === omni_init: loading TTS model
04:31:01.891 TTS model: loading with n_gpu_layers=0
04:31:02.128 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:31:02.128 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:31:02.443 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:31:02.447 TTS: head_code loaded, verifying first few values:
04:31:02.447 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:31:02.447 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:31:02.447 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:31:02.476 TTS: weights loaded successfully
04:31:02.476 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:31:02.481 Projector: loaded successfully
04:31:02.481 === omni_init: loading APM model
04:31:02.636 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:31:02.882 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:31:02.882 Token2Wav: all model files found, initializing session...
04:31:02.882 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:31:02.882 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:31:03.213 Token2Wav: initialized successfully
04:31:03.213 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:31:03.213 Token2Wav: 使用 C++ 实现
04:31:03.213 === omni_init success: ctx_llama = 00000272ac7d6c50
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-9-1ga507d4\fixture_
Count: 2
04:31:03.213 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:31:03.213 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-9-1ga507d4\fixture_0000.wav
04:31:04.241 system prompt ref_audio embedding: n_pos=20
04:31:06.566 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:31:06.566 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:31:06.566 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:31:06.566 n_past = 72
04:31:06.566
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.35327 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 3020.49 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3039.50 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3039.50 ms by vision ( 3039.50 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-9-1ga507d4\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
04:31:12.479 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_profile20_work\omni-minicpmo-9-1ga507d4\fixture_0001.wav
04:31:12.776 stream_prefill(index=1): user audio embedding: n_pos=31
04:31:14.360
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.79255 s
04:31:14.360 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:31:14.360 stream_decode: create tts thread (simplex mode)
04:31:14.360 stream_decode: create t2w thread
04:31:14.360 wait prefill done
04:31:14.360 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:31:14.360 T2W thread (C++) started
<user>
<assistant>04:31:14.365 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:31:14.365 TTS thread started
04:31:14.870 📍 [单工TTS] assistant prompt 完成, n_past=182
04:31:14.870 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:31:15.675 LLM: detected end token, set llm_generation_done=true
04:31:15.675 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]
04:31:15.675 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:31:15.675 📍 轮次 1 结束,记录边界于 n_past=191
04:31:15.675 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]
04:31:15.675 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:31:15.675 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
04:31:15.675 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:31:15.675 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:31:15.676 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:31:15.713 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:31:15.713 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:31:15.713 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:31:15.713 TTS Simplex: first chunk - cleared KV cache
04:31:15.713 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:31:15.808 TTS Simplex: prefill completed, n_past_tts=9
04:31:15.809 TTS Simplex: sampler created
04:31:15.809 TTS simplex: is_audio_bos=true (first audio token)
04:31:15.842 TTS Simplex Phase1: token 1/500: rel_id=1490
04:31:15.853 TTS Simplex Phase1: token 2/500: rel_id=4299
04:31:15.865 TTS Simplex Phase1: token 3/500: rel_id=4299
04:31:15.879 TTS Simplex Phase1: token 4/500: rel_id=4299
04:31:15.892 TTS Simplex Phase1: token 5/500: rel_id=2112
04:31:16.002 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:31:16.126 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:31:16.126 TTS Simplex Phase1: token 25/500: rel_id=539
04:31:16.126 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:31:16.126 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:31:16.150 TTS Simplex Phase1: EOS token at step 28
04:31:16.150 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:31:16.150 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=36
04:31:16.158 TTS Simplex Phase2: text_eos_embed injected, n_past=37
04:31:16.166 TTS Simplex Phase2: audio_bos injected, n_past=38, starting final generation
04:31:16.418 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:31:16.471 TTS Simplex Phase2: EOS at step 28 (final end)
04:31:16.471 TTS Simplex: chunk 结束,tts_token_buffer 剩余 4 tokens (保留等下一个 chunk)
04:31:16.471 TTS Simplex: is_final_text_chunk=true, flush 剩余 4 tokens 从 tts_token_buffer
04:31:16.471 TTS Simplex: generated 54 audio tokens for chunk 0
04:31:16.471 TTS Simplex: chunk 0 first tokens: [1490 4299 4299 4299 2112 ], last tokens: [4379 32 59 885 69 ]
04:31:16.471 TTS Simplex: updated tts_n_past_accumulated=66, total_generated_tokens=54
04:31:16.472 TTS: finished processing all chunks
04:31:16.472 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:31:16.472 TTS: sent is_final=true to T2W queue (turn end)
04:31:18.452 🎉 首响时间 (First Audio Response): 4091ms
04:31:18.452 T2W线程: wav_0.wav | 0.84s audio | 2324.6ms inference | RTF=2.77 | t=4091ms
04:31:20.676 T2W线程: wav_1.wav | 1.00s audio | 2223.3ms inference | RTF=2.22 | t=6315ms
04:31:22.697 T2W线程: wav_2.wav | 0.44s audio | 2020.8ms inference | RTF=4.59 | t=8337ms
04:31:22.698 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:31:22.698 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:31:22.741 omni_stop_threads: stop signals sent
04:31:22.741 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1988.423ms vocoder=336.179ms total=2324.615ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1845.312ms vocoder=377.937ms total=2223.264ms audio=24000
[timing] call=2 tokens=7 final=1 token2mel=1860.336ms vocoder=160.395ms total=2020.782ms audio=10560
Audio generation completed.
llama_perf_context_print: load time = 12978.06 ms
llama_perf_context_print: prompt eval time = 11656.47 ms / 182 tokens ( 64.05 ms per token, 15.61 tokens per second)
llama_perf_context_print: eval time = 802.83 ms / 9 runs ( 89.20 ms per token, 11.21 tokens per second)
llama_perf_context_print: total time = 20848.65 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 x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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 C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:18:08.618 === omni_init start
04:18:08.618 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:18:08.618 === omni_init: loading new LLM model
04:18:10.499 === omni_init: loading TTS model
04:18:10.499 TTS model: loading with n_gpu_layers=0
04:18:10.742 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:18:10.742 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:18:11.083 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:18:11.086 TTS: head_code loaded, verifying first few values:
04:18:11.086 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:18:11.086 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:18:11.086 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:18:11.111 TTS: weights loaded successfully
04:18:11.111 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:18:11.117 Projector: loaded successfully
04:18:11.117 === omni_init: loading APM model
04:18:11.290 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:18:11.510 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:18:11.510 Token2Wav: all model files found, initializing session...
04:18:11.510 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:18:11.510 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:18:11.858 Token2Wav: initialized successfully
04:18:11.858 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:18:11.858 Token2Wav: 使用 C++ 实现
04:18:11.858 === omni_init success: ctx_llama = 00000280337f1970
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_cpu_native_work\omni-minicpmo-1-uqi_gwvh\fixture_
Count: 2
04:18:11.859 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:18:11.859 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_work\omni-minicpmo-1-uqi_gwvh\fixture_0000.wav
04:18:12.788 system prompt ref_audio embedding: n_pos=20
04:18:15.105 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:18:15.105 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:18:15.105 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:18:15.105 n_past = 72
04:18:15.105
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 3.2463 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 2981.27 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3000.16 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3000.17 ms by vision ( 3000.17 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_cpu_native_work\omni-minicpmo-1-uqi_gwvh\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
04:18:20.955 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_cpu_native_work\omni-minicpmo-1-uqi_gwvh\fixture_0001.wav
04:18:21.243 stream_prefill(index=1): user audio embedding: n_pos=31
04:18:22.754
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.64771 s
04:18:22.754 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:18:22.754 stream_decode: create tts thread (simplex mode)
04:18:22.754 stream_decode: create t2w thread
04:18:22.754 wait prefill done
04:18:22.754 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:18:22.754 T2W thread (C++) started
<user>
<assistant>04:18:22.758 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:18:22.759 TTS thread started
04:18:23.246 📍 [单工TTS] assistant prompt 完成, n_past=182
04:18:23.247 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:18:24.078 LLM: detected end token, set llm_generation_done=true
04:18:24.078 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]
04:18:24.078 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:18:24.078 📍 轮次 1 结束,记录边界于 n_past=191
04:18:24.079 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]
04:18:24.079 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:18:24.079 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
04:18:24.079 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:18:24.079 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:18:24.080 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:18:24.130 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:18:24.130 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:18:24.131 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:18:24.131 TTS Simplex: first chunk - cleared KV cache
04:18:24.131 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:18:24.228 TTS Simplex: prefill completed, n_past_tts=9
04:18:24.228 TTS Simplex: sampler created
04:18:24.228 TTS simplex: is_audio_bos=true (first audio token)
04:18:24.263 TTS Simplex Phase1: token 1/500: rel_id=1487
04:18:24.275 TTS Simplex Phase1: token 2/500: rel_id=4299
04:18:24.288 TTS Simplex Phase1: token 3/500: rel_id=4299
04:18:24.299 TTS Simplex Phase1: token 4/500: rel_id=4299
04:18:24.311 TTS Simplex Phase1: token 5/500: rel_id=4299
04:18:24.394 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:18:24.537 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:18:24.537 TTS Simplex Phase1: token 25/500: rel_id=4751
04:18:24.537 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:18:24.537 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:18:24.628 TTS Simplex Phase1: EOS token at step 34
04:18:24.628 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:18:24.628 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=42
04:18:24.635 TTS Simplex Phase2: text_eos_embed injected, n_past=43
04:18:24.643 TTS Simplex Phase2: audio_bos injected, n_past=44, starting final generation
04:18:24.809 TTS Simplex Phase2: EOS at step 15 (final end)
04:18:24.809 TTS Simplex: chunk 结束,tts_token_buffer 剩余 22 tokens (保留等下一个 chunk)
04:18:24.809 TTS Simplex: is_final_text_chunk=true, flush 剩余 22 tokens 从 tts_token_buffer
04:18:24.809 TTS Simplex: generated 47 audio tokens for chunk 0
04:18:24.809 TTS Simplex: chunk 0 first tokens: [1487 4299 4299 4299 4299 ], last tokens: [4218 4299 4299 4299 3894 ]
04:18:24.809 TTS Simplex: updated tts_n_past_accumulated=59, total_generated_tokens=47
04:18:24.810 TTS: finished processing all chunks
04:18:24.810 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:18:24.810 TTS: sent is_final=true to T2W queue (turn end)
04:18:26.802 🎉 首响时间 (First Audio Response): 4048ms
04:18:26.802 T2W线程: wav_0.wav | 0.84s audio | 2264.2ms inference | RTF=2.70 | t=4048ms
04:18:29.006 T2W线程: wav_1.wav | 1.16s audio | 2203.9ms inference | RTF=1.90 | t=6252ms
04:18:29.017 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=1)
04:18:29.017 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:18:29.051 04:omni_stop_threads: stop signals sent
18:29.051 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1938.703ms vocoder=325.472ms total=2264.192ms audio=20160
[timing] call=1 tokens=25 final=1 token2mel=1825.330ms vocoder=378.499ms total=2203.839ms audio=27840
Audio generation completed.
llama_perf_context_print: load time = 12747.09 ms
llama_perf_context_print: prompt eval time = 11386.42 ms / 182 tokens ( 62.56 ms per token, 15.98 tokens per second)
llama_perf_context_print: eval time = 829.33 ms / 9 runs ( 92.15 ms per token, 10.85 tokens per second)
llama_perf_context_print: total time = 18551.67 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,173 @@
{
"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": "29247187ddf3b13591cd14cc070e5e25c6bb7547296acc5e8a74e2945811d725",
"reference_sha256": "cf4bb5cd9acbfbf67596d4a53310652b61ef4b7ede1d54eb03ef4882ca40223a",
"input_sha256": {
"audio_wav": "14ee147cbf2ce9afd9e32c8c8228d7cfe11985cd7e63456b2ad33871492aefcc",
"image_jpeg": "22c7ccea466a3f551c512045e6316c7597408d4e0a20205502f55784d977aa8d"
},
"memory_budget": {
"capacities": {
"host_ram": 22548578304
},
"demands": {
"host_ram": 22548578304
}
},
"profile_count": 1,
"warmup_count": 0,
"host_available_bytes_before": 31919353856,
"startup_s": 52.358583500026725,
"execution_plan_at_start": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "ef6160926c614dc1ab0844d2ec4796f4",
"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": "29247187ddf3b13591cd14cc070e5e25c6bb7547296acc5e8a74e2945811d725",
"requested_placement": "cpu",
"ggml_vk_visible_devices": null,
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": [],
"measured": [
{
"text": "The square in the image is red.",
"wall_s": 79.2008684000466,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 71040,
"duration_s": 2.96,
"pcm_sha256": "5a13517c275af7f5b30ad193b81846baac1b27e31bc873a9d1cd5da8b938fa6d"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "ef6160926c614dc1ab0844d2ec4796f4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 79.18261559994426,
"peak_sampled_rss_bytes": 13106364416,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_unc_logs\\minicpmo-1-553e4c830bde403ea45d753a20dbc593.log"
}
}
],
"complete_request": {
"text": "The square in the image is red.",
"wall_s": 79.2008684000466,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 71040,
"duration_s": 2.96,
"pcm_sha256": "5a13517c275af7f5b30ad193b81846baac1b27e31bc873a9d1cd5da8b938fa6d"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "ef6160926c614dc1ab0844d2ec4796f4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 79.18261559994426,
"peak_sampled_rss_bytes": 13106364416,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_unc_logs\\minicpmo-1-553e4c830bde403ea45d753a20dbc593.log"
}
},
"nearest_rank_p50_wall_s": 79.2008684000466,
"nearest_rank_p95_wall_s": 79.2008684000466,
"output_wav": "\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\results\\e2e_expansion_20260923\\evidence\\minicpmo_omni_native_weights_io\\cpu_unc.wav",
"execution_plan_after_request": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "ef6160926c614dc1ab0844d2ec4796f4",
"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": "29247187ddf3b13591cd14cc070e5e25c6bb7547296acc5e8a74e2945811d725",
"requested_placement": "cpu",
"ggml_vk_visible_devices": null,
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": 13068,
"peak_sampled_rss_bytes": 13106364416,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_unc_logs\\minicpmo-1-553e4c830bde403ea45d753a20dbc593.log"
}
},
"status": "passed",
"ledger_after_shutdown": {
"capacities": {
"host_ram": 22548578304
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
}
@@ -0,0 +1,165 @@
INFO 09-24 04:19:22 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed.
INFO 09-24 04:19:22 [patch.py:510] inductor factorable-divisibility patch: installed.
INFO 09-24 04:19:25 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn
WARNING 09-24 04:19:25 [stage_init_utils.py:1887] [stage_init] Failed to load transfer config: [Errno 13] Permission denied: 'C:\\Users\\zhout'
{
"scope": "MiniCPM-o GGUF complete audio+image\u2192text+speech through Omni StageRuntime/StagePool",
"placement": "cpu",
"model_revision": "db25077c33951fe163b42986fba0132e279872a2",
"cli_sha256": "29247187ddf3b13591cd14cc070e5e25c6bb7547296acc5e8a74e2945811d725",
"reference_sha256": "cf4bb5cd9acbfbf67596d4a53310652b61ef4b7ede1d54eb03ef4882ca40223a",
"input_sha256": {
"audio_wav": "14ee147cbf2ce9afd9e32c8c8228d7cfe11985cd7e63456b2ad33871492aefcc",
"image_jpeg": "22c7ccea466a3f551c512045e6316c7597408d4e0a20205502f55784d977aa8d"
},
"memory_budget": {
"capacities": {
"host_ram": 22548578304
},
"demands": {
"host_ram": 22548578304
}
},
"profile_count": 1,
"warmup_count": 0,
"host_available_bytes_before": 31919353856,
"startup_s": 52.358583500026725,
"execution_plan_at_start": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "ef6160926c614dc1ab0844d2ec4796f4",
"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": "29247187ddf3b13591cd14cc070e5e25c6bb7547296acc5e8a74e2945811d725",
"requested_placement": "cpu",
"ggml_vk_visible_devices": null,
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": [],
"measured": [
{
"text": "The square in the image is red.",
"wall_s": 79.2008684000466,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 71040,
"duration_s": 2.96,
"pcm_sha256": "5a13517c275af7f5b30ad193b81846baac1b27e31bc873a9d1cd5da8b938fa6d"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "ef6160926c614dc1ab0844d2ec4796f4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 79.18261559994426,
"peak_sampled_rss_bytes": 13106364416,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_unc_logs\\minicpmo-1-553e4c830bde403ea45d753a20dbc593.log"
}
}
],
"complete_request": {
"text": "The square in the image is red.",
"wall_s": 79.2008684000466,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 71040,
"duration_s": 2.96,
"pcm_sha256": "5a13517c275af7f5b30ad193b81846baac1b27e31bc873a9d1cd5da8b938fa6d"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "ef6160926c614dc1ab0844d2ec4796f4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 79.18261559994426,
"peak_sampled_rss_bytes": 13106364416,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_unc_logs\\minicpmo-1-553e4c830bde403ea45d753a20dbc593.log"
}
},
"nearest_rank_p50_wall_s": 79.2008684000466,
"nearest_rank_p95_wall_s": 79.2008684000466,
"output_wav": "\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\results\\e2e_expansion_20260923\\evidence\\minicpmo_omni_native_weights_io\\cpu_unc.wav",
"execution_plan_after_request": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "ef6160926c614dc1ab0844d2ec4796f4",
"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": "29247187ddf3b13591cd14cc070e5e25c6bb7547296acc5e8a74e2945811d725",
"requested_placement": "cpu",
"ggml_vk_visible_devices": null,
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": 13068,
"peak_sampled_rss_bytes": 13106364416,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_cpu_unc_logs\\minicpmo-1-553e4c830bde403ea45d753a20dbc593.log"
}
},
"status": "passed",
"ledger_after_shutdown": {
"capacities": {
"host_ram": 22548578304
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
}
@@ -0,0 +1,473 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from \\wsl.localhost\Ubuntu\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)
warning: PrefetchVirtualMemory failed: 内存资源不足,无法处理此命令。
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 \\wsl.localhost\Ubuntu\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
warning: PrefetchVirtualMemory failed: 内存资源不足,无法处理此命令。
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: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\models\MiniCPM-o-4_5-gguf
LLM: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\models\MiniCPM-o-4_5-gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\models\MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\models\MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\models\MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: \\wsl.localhost\Ubuntu\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: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\models\MiniCPM-o-4_5-gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:20:18.279 === omni_init start
04:20:18.280 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:20:18.280 === omni_init: loading new LLM model
04:20:46.679 === omni_init: loading TTS model
04:20:46.679 TTS model: loading with n_gpu_layers=0
04:20:50.599 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:20:50.599 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:20:56.960 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:20:56.969 TTS: head_code loaded, verifying first few values:
04:20:56.969 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:20:56.969 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:20:56.969 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:20:57.130 TTS: weights loaded successfully
04:20:57.130 Projector: loading from \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\models\MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:20:57.260 Projector: loaded successfully
04:20:57.261 === omni_init: loading APM model
04:21:01.109 APM: init from \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\models\MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:21:07.219 Token2Wav: found models in \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\models\MiniCPM-o-4_5-gguf/token2wav-gguf
04:21:07.276 Token2Wav: all model files found, initializing session...
04:21:07.276 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:21:07.277 Token2Wav: using prompt_cache from \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\models\MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
04:21:12.500 Token2Wav: initialized successfully
04:21:12.500 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:21:12.500 Token2Wav: 浣跨敤 C++ 瀹炵幇
04:21:12.500 === omni_init success: ctx_llama = 000002410e196700
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_cpu_unc_work\omni-minicpmo-1-v9uwetf1\fixture_
Count: 2
04:21:12.500 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
妯′豢闊抽�鏍锋湰鐨勯煶鑹插苟鐢熸垚鏂扮殑鍐呭�銆�
<|audio_start|>
assistant_prompt = <|audio_end|>浣犵殑浠诲姟鏄�敤杩欑�澹伴煶妯″紡鏉ュ綋涓€涓�姪鎵嬨€傝�璁ょ湡銆侀珮璐ㄩ噺鍦板洖澶嶇敤鎴风殑闂��銆傝�鐢ㄩ珮鑷�劧搴︾殑鏂瑰紡鍜岀敤鎴疯亰澶┿€�<|im_end|>
<|im_start|>user
04:21:12.500 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_cpu_unc_work\omni-minicpmo-1-v9uwetf1\fixture_0000.wav
04:21:16.844 system prompt ref_audio embedding: n_pos=20
04:21:19.190 馃敀 n_keep 璁剧疆涓� 72 (system prompt tokens)锛岃繖閮ㄥ垎姘歌繙涓嶄細琚�粦鍔ㄧ獥鍙e垹闄�
04:21:19.190 stream_prefill(index=0): system prompt 鍒濆�鍖栧畬鎴愶紝ref_audio 宸插湪鍏朵腑 prefill
04:21:19.190 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:21:19.190 n_past = 72
04:21:19.190
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 6.6898 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 2984.94 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 3003.47 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 3003.47 ms by vision ( 3003.47 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_cpu_unc_work\omni-minicpmo-1-v9uwetf1\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
04:21:25.213 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_cpu_unc_work\omni-minicpmo-1-v9uwetf1\fixture_0001.wav
04:21:25.516 stream_prefill(index=1): user audio embedding: n_pos=31
04:21:27.082
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 7.89129 s
04:21:27.082 馃搷 stream_decode 寮€濮�: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:21:27.082 stream_decode: create tts thread (simplex mode)
04:21:27.082 stream_decode: create t2w thread
04:21:27.082 wait prefill done
04:21:27.082 馃搷 [鍗曞伐TTS] 娣诲姞 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:21:27.083 T2W thread (C++) started
<user>
<assistant>04:21:27.086 TTS: 鍒涘缓鍗曞伐妯″紡杈撳嚭鐩�綍: ./tools/omni/output/round_000
04:21:27.086 TTS thread started
04:21:27.579 馃搷 [鍗曞伐TTS] assistant prompt 瀹屾垚, n_past=182
04:21:27.579 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:21:28.418 LLM: detected end token, set llm_generation_done=true
04:21:28.418 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]
04:21:28.418 馃搷 Decode 缁撴潫: n_past=191, 鍓╀綑绌洪棿=1857, 鏃犻渶婊戠獥
04:21:28.418 馃搷 杞�� 1 缁撴潫锛岃�褰曡竟鐣屼簬 n_past=191
04:21:28.418 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]
04:21:28.418 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:21:28.418 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
04:21:28.418 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:21:28.418 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:21:28.419 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:21:28.453 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:21:28.453 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:21:28.453 TTS Simplex: 鍦� prefill 鍓嶆坊鍔� audio_bos (chunk_idx=0, new_size=9)
04:21:28.453 TTS Simplex: first chunk - cleared KV cache
04:21:28.453 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:21:28.730 馃搷 涓轰笅涓€杞�噯澶�: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:21:28.851 TTS Simplex: prefill completed, n_past_tts=9
04:21:28.851 TTS Simplex: sampler created
04:21:28.851 TTS simplex: is_audio_bos=true (first audio token)
04:21:28.875 TTS Simplex Phase1: token 1/500: rel_id=1577
04:21:28.886 TTS Simplex Phase1: token 2/500: rel_id=4137
04:21:28.896 TTS Simplex Phase1: token 3/500: rel_id=4218
04:21:28.907 TTS Simplex Phase1: token 4/500: rel_id=4218
04:21:28.918 TTS Simplex Phase1: token 5/500: rel_id=4218
04:21:29.135 TTS Simplex Phase1: yield 25 tokens 鍒� T2W (step 25, buffer=25)
04:21:29.135 TTS Simplex Phase1: token 25/500: rel_id=3875
04:21:29.135 T2W绾跨▼(C++): 杞��鍒囨崲 (-1 -> 0)锛屾洿鏂拌緭鍑虹洰褰�
04:21:29.135 T2W绾跨▼(C++): 鏂拌緭鍑虹洰褰� ./tools/omni/output/round_000/tts_wav
04:21:29.192 TTS Simplex Phase1: EOS token at step 31
04:21:29.192 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:21:29.192 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=39
04:21:29.200 TTS Simplex Phase2: text_eos_embed injected, n_past=40
04:21:29.208 TTS Simplex Phase2: audio_bos injected, n_past=41, starting final generation
04:21:29.425 TTS Simplex Phase2: yield 25 tokens 鍒� T2W
04:21:29.667 TTS Simplex Phase2: EOS at step 42 (final end)
04:21:29.667 TTS Simplex: chunk 缁撴潫锛宼ts_token_buffer 鍓╀綑 21 tokens (淇濈暀绛変笅涓€涓� chunk)
04:21:29.667 TTS Simplex: is_final_text_chunk=true, flush 鍓╀綑 21 tokens 浠� tts_token_buffer
04:21:29.667 TTS Simplex: generated 71 audio tokens for chunk 0
04:21:29.667 TTS Simplex: chunk 0 first tokens: [1577 4137 4218 4218 4218 ], last tokens: [4218 4218 4218 4218 4218 ]
04:21:29.667 TTS Simplex: updated tts_n_past_accumulated=83, total_generated_tokens=71
04:21:29.668 TTS: finished processing all chunks
04:21:29.668 TTS: 鍗曞伐妯″紡杞��缁撴潫锛屼笅涓€杞� round_idx=1
04:21:29.668 TTS: sent is_final=true to T2W queue (turn end)
04:21:31.477 馃帀 棣栧搷鏃堕棿 (First Audio Response): 4394ms
04:21:31.477 T2W绾跨▼: wav_0.wav | 0.84s audio | 2340.4ms inference | RTF=2.79 | t=4394ms
04:21:33.699 T2W绾跨▼: wav_1.wav | 1.00s audio | 2221.2ms inference | RTF=2.22 | t=6616ms
04:21:35.913 T2W绾跨▼: wav_2.wav | 1.12s audio | 2213.5ms inference | RTF=1.98 | t=8830ms
04:21:35.914 T2W绾跨▼: 鍐欏叆缁撴潫鏍囪� ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:21:35.914 T2W绾跨▼: 杞��缁撴潫鍚庢洿鏂拌緭鍑虹洰褰曚负 ./tools/omni/output/round_001/tts_wav
04:04:21:21:36.01736. omni_stop_threads: stop signals sent
17 T2W(C++) 绾跨▼: 鍋滄�
[timing] call=0 tokens=28 final=0 token2mel=2011.627ms vocoder=328.681ms total=2340.329ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1835.027ms vocoder=386.083ms total=2221.141ms audio=24000
[timing] call=2 tokens=24 final=1 token2mel=1844.481ms vocoder=369.027ms total=2213.518ms audio=26880
Audio generation completed.
llama_perf_context_print: load time = 40898.86 ms
llama_perf_context_print: prompt eval time = 15078.61 ms / 182 tokens ( 82.85 ms per token, 12.07 tokens per second)
llama_perf_context_print: eval time = 836.11 ms / 9 runs ( 92.90 ms per token, 10.76 tokens per second)
llama_perf_context_print: total time = 49336.47 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,98 @@
{
"scope": "four sequential fresh-worker one-request MiniCPM-o Omni comparisons; same model/CLI hashes and synthetic fixture within CPU and Radeon pairs; uncontrolled OS cache and run order",
"rows": [
{
"condition": "cpu_native",
"placement": "cpu",
"storage": "native NTFS",
"startup_s": 9.01500210002996,
"request_wall_s": 21.163147200015374,
"worker_load_s": 12.74709,
"host_available_bytes_before": 31848599552,
"prefetch_warnings": 0,
"text": "The square in the image is red.",
"wav_duration_s": 2.0,
"ledger_after_shutdown": {
"capacities": {
"host_ram": 22548578304
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
},
{
"condition": "cpu_unc",
"placement": "cpu",
"storage": "WSL UNC",
"startup_s": 52.358583500026725,
"request_wall_s": 79.2008684000466,
"worker_load_s": 40.89886,
"host_available_bytes_before": 31919353856,
"prefetch_warnings": 2,
"text": "The square in the image is red.",
"wav_duration_s": 2.96,
"ledger_after_shutdown": {
"capacities": {
"host_ram": 22548578304
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
},
{
"condition": "radeon_native",
"placement": "radeon-hybrid",
"storage": "native NTFS",
"startup_s": 9.053687200066634,
"request_wall_s": 16.890039299963973,
"worker_load_s": 4.89595,
"host_available_bytes_before": 27048873984,
"prefetch_warnings": 0,
"text": "The square in the image is red.",
"wav_duration_s": 2.84,
"ledger_after_shutdown": {
"capacities": {
"host_ram": 22548578304
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
},
{
"condition": "radeon_unc",
"placement": "radeon-hybrid",
"storage": "WSL UNC",
"startup_s": 50.66291730001103,
"request_wall_s": 90.62775189999957,
"worker_load_s": 27.53058,
"host_available_bytes_before": 26973949952,
"prefetch_warnings": 2,
"text": "The square in the image is red.",
"wav_duration_s": 2.4,
"ledger_after_shutdown": {
"capacities": {
"host_ram": 22548578304
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
}
],
"request_wall_unc_over_native": {
"cpu": 3.742395573376207,
"radeon": 5.365751392904863
},
"interpretation": "UNC storage strongly associated with longer startup/load/request and prefetch warnings here; no isolated causal or sustained-performance claim"
}
@@ -0,0 +1,173 @@
{
"scope": "MiniCPM-o GGUF complete audio+image\u2192text+speech through Omni StageRuntime/StagePool",
"placement": "radeon-hybrid",
"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": "66a512386aafeb708f49a7394a9054d94ec777c362395c8917a3d198aef1b523",
"reference_sha256": "cf4bb5cd9acbfbf67596d4a53310652b61ef4b7ede1d54eb03ef4882ca40223a",
"input_sha256": {
"audio_wav": "14ee147cbf2ce9afd9e32c8c8228d7cfe11985cd7e63456b2ad33871492aefcc",
"image_jpeg": "22c7ccea466a3f551c512045e6316c7597408d4e0a20205502f55784d977aa8d"
},
"memory_budget": {
"capacities": {
"host_ram": 22548578304
},
"demands": {
"host_ram": 22548578304
}
},
"profile_count": 1,
"warmup_count": 0,
"host_available_bytes_before": 27048873984,
"startup_s": 9.053687200066634,
"execution_plan_at_start": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "56733b0731f44228bc06e8b1ce2e8054",
"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": "66a512386aafeb708f49a7394a9054d94ec777c362395c8917a3d198aef1b523",
"requested_placement": "radeon-hybrid",
"ggml_vk_visible_devices": "1",
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": [],
"measured": [
{
"text": "The square in the image is red.",
"wall_s": 16.890039299963973,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 68160,
"duration_s": 2.84,
"pcm_sha256": "276fd7f8780f9efcee5bb1d06ba2071adab64bae8d941fe8f25a24d1abbc532d"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "56733b0731f44228bc06e8b1ce2e8054",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.866717099910602,
"peak_sampled_rss_bytes": 15296462848,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_logs\\minicpmo-1-01a88b4d160849249b9be84280821771.log"
}
}
],
"complete_request": {
"text": "The square in the image is red.",
"wall_s": 16.890039299963973,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 68160,
"duration_s": 2.84,
"pcm_sha256": "276fd7f8780f9efcee5bb1d06ba2071adab64bae8d941fe8f25a24d1abbc532d"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "56733b0731f44228bc06e8b1ce2e8054",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.866717099910602,
"peak_sampled_rss_bytes": 15296462848,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_logs\\minicpmo-1-01a88b4d160849249b9be84280821771.log"
}
},
"nearest_rank_p50_wall_s": 16.890039299963973,
"nearest_rank_p95_wall_s": 16.890039299963973,
"output_wav": "\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\results\\e2e_expansion_20260923\\evidence\\minicpmo_omni_native_weights_io\\radeon_native.wav",
"execution_plan_after_request": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "56733b0731f44228bc06e8b1ce2e8054",
"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": "66a512386aafeb708f49a7394a9054d94ec777c362395c8917a3d198aef1b523",
"requested_placement": "radeon-hybrid",
"ggml_vk_visible_devices": "1",
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": "radeon-hybrid",
"worker_pid": 64448,
"peak_sampled_rss_bytes": 15296462848,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_logs\\minicpmo-1-01a88b4d160849249b9be84280821771.log"
}
},
"status": "passed",
"ledger_after_shutdown": {
"capacities": {
"host_ram": 22548578304
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
}
@@ -0,0 +1,165 @@
INFO 09-24 04:22:32 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed.
INFO 09-24 04:22:33 [patch.py:510] inductor factorable-divisibility patch: installed.
INFO 09-24 04:22:36 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn
WARNING 09-24 04:22:36 [stage_init_utils.py:1887] [stage_init] Failed to load transfer config: [Errno 13] Permission denied: 'C:\\Users\\zhout'
{
"scope": "MiniCPM-o GGUF complete audio+image\u2192text+speech through Omni StageRuntime/StagePool",
"placement": "radeon-hybrid",
"model_revision": "db25077c33951fe163b42986fba0132e279872a2",
"cli_sha256": "66a512386aafeb708f49a7394a9054d94ec777c362395c8917a3d198aef1b523",
"reference_sha256": "cf4bb5cd9acbfbf67596d4a53310652b61ef4b7ede1d54eb03ef4882ca40223a",
"input_sha256": {
"audio_wav": "14ee147cbf2ce9afd9e32c8c8228d7cfe11985cd7e63456b2ad33871492aefcc",
"image_jpeg": "22c7ccea466a3f551c512045e6316c7597408d4e0a20205502f55784d977aa8d"
},
"memory_budget": {
"capacities": {
"host_ram": 22548578304
},
"demands": {
"host_ram": 22548578304
}
},
"profile_count": 1,
"warmup_count": 0,
"host_available_bytes_before": 27048873984,
"startup_s": 9.053687200066634,
"execution_plan_at_start": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "56733b0731f44228bc06e8b1ce2e8054",
"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": "66a512386aafeb708f49a7394a9054d94ec777c362395c8917a3d198aef1b523",
"requested_placement": "radeon-hybrid",
"ggml_vk_visible_devices": "1",
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": [],
"measured": [
{
"text": "The square in the image is red.",
"wall_s": 16.890039299963973,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 68160,
"duration_s": 2.84,
"pcm_sha256": "276fd7f8780f9efcee5bb1d06ba2071adab64bae8d941fe8f25a24d1abbc532d"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "56733b0731f44228bc06e8b1ce2e8054",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.866717099910602,
"peak_sampled_rss_bytes": 15296462848,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_logs\\minicpmo-1-01a88b4d160849249b9be84280821771.log"
}
}
],
"complete_request": {
"text": "The square in the image is red.",
"wall_s": 16.890039299963973,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 68160,
"duration_s": 2.84,
"pcm_sha256": "276fd7f8780f9efcee5bb1d06ba2071adab64bae8d941fe8f25a24d1abbc532d"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "56733b0731f44228bc06e8b1ce2e8054",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.866717099910602,
"peak_sampled_rss_bytes": 15296462848,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_logs\\minicpmo-1-01a88b4d160849249b9be84280821771.log"
}
},
"nearest_rank_p50_wall_s": 16.890039299963973,
"nearest_rank_p95_wall_s": 16.890039299963973,
"output_wav": "\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\results\\e2e_expansion_20260923\\evidence\\minicpmo_omni_native_weights_io\\radeon_native.wav",
"execution_plan_after_request": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "56733b0731f44228bc06e8b1ce2e8054",
"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": "66a512386aafeb708f49a7394a9054d94ec777c362395c8917a3d198aef1b523",
"requested_placement": "radeon-hybrid",
"ggml_vk_visible_devices": "1",
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": "radeon-hybrid",
"worker_pid": 64448,
"peak_sampled_rss_bytes": 15296462848,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_logs\\minicpmo-1-01a88b4d160849249b9be84280821771.log"
}
},
"status": "passed",
"ledger_after_shutdown": {
"capacities": {
"host_ram": 22548578304
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
}
@@ -0,0 +1,727 @@
{
"scope": "MiniCPM-o GGUF complete audio+image\u2192text+speech through Omni StageRuntime/StagePool",
"placement": "radeon-hybrid",
"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": "66a512386aafeb708f49a7394a9054d94ec777c362395c8917a3d198aef1b523",
"reference_sha256": "cf4bb5cd9acbfbf67596d4a53310652b61ef4b7ede1d54eb03ef4882ca40223a",
"input_sha256": {
"audio_wav": "14ee147cbf2ce9afd9e32c8c8228d7cfe11985cd7e63456b2ad33871492aefcc",
"image_jpeg": "22c7ccea466a3f551c512045e6316c7597408d4e0a20205502f55784d977aa8d"
},
"memory_budget": {
"capacities": {
"host_ram": 22548578304
},
"demands": {
"host_ram": 22548578304
}
},
"profile_count": 20,
"warmup_count": 1,
"host_available_bytes_before": 31169310720,
"startup_s": 8.747939300024882,
"execution_plan_at_start": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"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": "66a512386aafeb708f49a7394a9054d94ec777c362395c8917a3d198aef1b523",
"requested_placement": "radeon-hybrid",
"ggml_vk_visible_devices": "1",
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": 16.552576799993403,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 54720,
"duration_s": 2.28,
"pcm_sha256": "637535a803bb3f1871333c9dc7ef400ff451b422a76bb3f58c68f1443b65d8cf"
},
"stage_event": {
"request_id": "minicpmo-warmup-0",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.532694500056095,
"peak_sampled_rss_bytes": 15296405504,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-1-968f0dc83e1d437eab46b88dcb2205cb.log"
}
}
],
"measured": [
{
"text": "The square in the image is red.",
"wall_s": 17.2018773999298,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 65280,
"duration_s": 2.72,
"pcm_sha256": "f892766580a0ad5ec941e1e02a795d85610ddfd310c1df953437d834cb860b96"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 2,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 17.191210399963893,
"peak_sampled_rss_bytes": 15296970752,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-2-ed7f3bd51b0c4f84ac8bb3fa2ee6c0d0.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.529372399905697,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 57600,
"duration_s": 2.4,
"pcm_sha256": "d02a199e2ae36a068e689711a9068e29956da9904f11377b9373e960e990cbb2"
},
"stage_event": {
"request_id": "minicpmo-measured-1",
"stage_id": 0,
"epoch": 3,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.51960920006968,
"peak_sampled_rss_bytes": 15296065536,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-3-e0a5df0842564938a60c97975da0e760.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.31223260005936,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 55680,
"duration_s": 2.32,
"pcm_sha256": "36ee0fcd47a3a2785af0cbc74e1ad68a51fd654213741a03044782ef3ae7d0b1"
},
"stage_event": {
"request_id": "minicpmo-measured-2",
"stage_id": 0,
"epoch": 4,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.30337189999409,
"peak_sampled_rss_bytes": 15296053248,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-4-0887229e7b3d4f26bfb29140c9d421b5.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.35642879991792,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 69120,
"duration_s": 2.88,
"pcm_sha256": "0fcf342fa934c49ef1be41924baa680e9c89874c043caea3ef42a5a7347e35e2"
},
"stage_event": {
"request_id": "minicpmo-measured-3",
"stage_id": 0,
"epoch": 5,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.345511200022884,
"peak_sampled_rss_bytes": 15297810432,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-5-b671614c1ec446f1878b0d10437ff998.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.338731799973175,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 61440,
"duration_s": 2.56,
"pcm_sha256": "4c3d4c998fd401b4797834fab4dc0ea8cfce00637090807ced696586f8fb4dab"
},
"stage_event": {
"request_id": "minicpmo-measured-4",
"stage_id": 0,
"epoch": 6,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.328630600008182,
"peak_sampled_rss_bytes": 15296004096,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-6-a38c336a57124285959e2b2815b534e9.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.347779299947433,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 61440,
"duration_s": 2.56,
"pcm_sha256": "4eb7b2a616c3fc83adb871382b78822623c0465703d6e10185a1e628d2de2142"
},
"stage_event": {
"request_id": "minicpmo-measured-5",
"stage_id": 0,
"epoch": 7,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.33827230008319,
"peak_sampled_rss_bytes": 15296856064,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-7-56b1f5261ae54da2ba2ef08f7f2c17e1.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.285854100016877,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 58560,
"duration_s": 2.44,
"pcm_sha256": "009722e58e51c131ca3f7016881371d8ade66eab1c3dc998b608772433363c0f"
},
"stage_event": {
"request_id": "minicpmo-measured-6",
"stage_id": 0,
"epoch": 8,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.280325899948366,
"peak_sampled_rss_bytes": 15295991808,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-8-e1f69f7a7351483cbb454bfa0356b1bb.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 14.076505899894983,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 49920,
"duration_s": 2.08,
"pcm_sha256": "e76f2b2faf0f50be173f666fa6edd41290f70755b1e18b3ded4137f384d3706f"
},
"stage_event": {
"request_id": "minicpmo-measured-7",
"stage_id": 0,
"epoch": 9,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 14.067735700053163,
"peak_sampled_rss_bytes": 15299522560,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-9-b7c514e44e7f4956a221dff676badbde.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.348308200016618,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 51840,
"duration_s": 2.16,
"pcm_sha256": "4b7ca518d0f99d96c36420a9d0cc9c7cc114c2845c0786a3ed2a9ae0f29efaa3"
},
"stage_event": {
"request_id": "minicpmo-measured-8",
"stage_id": 0,
"epoch": 10,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.33896249998361,
"peak_sampled_rss_bytes": 15296995328,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-10-e79695521b144aa5bcc8c8cd785da69b.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.34709819999989,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 60480,
"duration_s": 2.52,
"pcm_sha256": "0a1c11bea18d56bbdafb7ddea81954373526824ca677e1720e7d27a7f027f558"
},
"stage_event": {
"request_id": "minicpmo-measured-9",
"stage_id": 0,
"epoch": 11,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.33874079992529,
"peak_sampled_rss_bytes": 15296229376,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-11-7b59f49eec23417097046e7da996eddb.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.148105400032364,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 58560,
"duration_s": 2.44,
"pcm_sha256": "f7a3787bfd85d685eefcd4ae95023036b34b3b62ae59f1341fb5f89a95a79b52"
},
"stage_event": {
"request_id": "minicpmo-measured-10",
"stage_id": 0,
"epoch": 12,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.139469799934886,
"peak_sampled_rss_bytes": 15296348160,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-12-5aee2b7ca15749bead57e5b0c907daef.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.28885390004143,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 56640,
"duration_s": 2.36,
"pcm_sha256": "2b463a6c0d53b406d745044eed3d2c4f84daf8dc5f17700746f97b45759ee2c3"
},
"stage_event": {
"request_id": "minicpmo-measured-11",
"stage_id": 0,
"epoch": 13,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.280753499944694,
"peak_sampled_rss_bytes": 15297077248,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-13-faa6985493b84d71a3a03df276f20bfe.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.541666699922644,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 67200,
"duration_s": 2.8,
"pcm_sha256": "7d760b9f3e5bba73177b3434146faa6e70c8caf3a3b5487b01e42e08e0c723dd"
},
"stage_event": {
"request_id": "minicpmo-measured-12",
"stage_id": 0,
"epoch": 14,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.532741600065492,
"peak_sampled_rss_bytes": 15296196608,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-14-a8a5141ea1ec4efbb62f31e762ecd66e.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.35764410009142,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 63360,
"duration_s": 2.64,
"pcm_sha256": "d84ebcd349030cc7b25ad7e85189477894bcbe480d06b06c346fab42f93b17b2"
},
"stage_event": {
"request_id": "minicpmo-measured-13",
"stage_id": 0,
"epoch": 15,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.35046520002652,
"peak_sampled_rss_bytes": 15296897024,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-15-60998c19353b41e18cd9b0d63d00952c.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.266808800050057,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 55680,
"duration_s": 2.32,
"pcm_sha256": "ba427386daeb01afd0a14dcc03456c8dd3d87486907954cdf30e5f648bf411b3"
},
"stage_event": {
"request_id": "minicpmo-measured-14",
"stage_id": 0,
"epoch": 16,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.25816590001341,
"peak_sampled_rss_bytes": 15295782912,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-16-b2e35ac7b8f34cbab3398aaec4cac214.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 17.302021900075488,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 51840,
"duration_s": 2.16,
"pcm_sha256": "874935c866be9d5b45ff19936ab4055b3606c9a86488cb9812a20ed084c3a605"
},
"stage_event": {
"request_id": "minicpmo-measured-15",
"stage_id": 0,
"epoch": 17,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 17.297263100044802,
"peak_sampled_rss_bytes": 15296147456,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-17-ae72ca070d0f4933af9ed6763ab4fe3d.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.275045300018974,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 65280,
"duration_s": 2.72,
"pcm_sha256": "41ebd8607ac4bbb25bcb00239429fe106753e77bc386974668aae0f877d9aeb8"
},
"stage_event": {
"request_id": "minicpmo-measured-16",
"stage_id": 0,
"epoch": 18,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.264911900041625,
"peak_sampled_rss_bytes": 15296061440,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-18-2f52f85f9ede4ca4bd771d2f5934fedb.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.354517600033432,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 62400,
"duration_s": 2.6,
"pcm_sha256": "cb7a83adbf3fdcedb24456c1eca9b905c5e147c0f1b7c5db8cde80d549ed226a"
},
"stage_event": {
"request_id": "minicpmo-measured-17",
"stage_id": 0,
"epoch": 19,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.343158799922094,
"peak_sampled_rss_bytes": 15296081920,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-19-a34eedc5bcfa421ba23efb32d2a32bc9.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.27960309991613,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 63360,
"duration_s": 2.64,
"pcm_sha256": "02a1f9109dbd5c57374a70b219cd459a9c1f56895b910e8f3ecf772a14ae6259"
},
"stage_event": {
"request_id": "minicpmo-measured-18",
"stage_id": 0,
"epoch": 20,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.267663199920207,
"peak_sampled_rss_bytes": 15295946752,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-20-713a1fb93fe94583b25f1b14a81cf635.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.519184199976735,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 53760,
"duration_s": 2.24,
"pcm_sha256": "67f853416a0c918198eddae3c09d891249e4613c24641e3a9faf8c124dbd42dd"
},
"stage_event": {
"request_id": "minicpmo-measured-19",
"stage_id": 0,
"epoch": 21,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.513636599993333,
"peak_sampled_rss_bytes": 15296430080,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-21-46f97443dddb40d3a45baadd4a169b0a.log"
}
}
],
"complete_request": {
"text": "The square in the image is red.",
"wall_s": 17.2018773999298,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 65280,
"duration_s": 2.72,
"pcm_sha256": "f892766580a0ad5ec941e1e02a795d85610ddfd310c1df953437d834cb860b96"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 2,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 17.191210399963893,
"peak_sampled_rss_bytes": 15296970752,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-2-ed7f3bd51b0c4f84ac8bb3fa2ee6c0d0.log"
}
},
"nearest_rank_p50_wall_s": 16.34709819999989,
"nearest_rank_p95_wall_s": 17.2018773999298,
"output_wav": "\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\results\\e2e_expansion_20260923\\evidence\\minicpmo_omni_native_weights_io\\radeon_native_profile20.wav",
"execution_plan_after_request": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"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": "66a512386aafeb708f49a7394a9054d94ec777c362395c8917a3d198aef1b523",
"requested_placement": "radeon-hybrid",
"ggml_vk_visible_devices": "1",
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": "radeon-hybrid",
"worker_pid": 35284,
"peak_sampled_rss_bytes": 15296430080,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-21-46f97443dddb40d3a45baadd4a169b0a.log"
}
},
"abort_check": {
"stale_output": false,
"ledger": {
"capacities": {
"host_ram": 22548578304
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
},
"status": "passed",
"ledger_after_shutdown": {
"capacities": {
"host_ram": 22548578304
},
"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": "5.14.1",
"torch": "2.13.0+cpu",
"wav_sha256": "127c399fa76e0bb59a1e688bd20c17e6775ee85fcb98cbf7cadb21a85d9a7f8d",
"input_sample_rate": 24000,
"input_duration_s": 2.72,
"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": 0.8108224779716693,
"asr_inference_s": 0.25948807498207316
}
@@ -0,0 +1,719 @@
INFO 09-24 04:39:50 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed.
INFO 09-24 04:39:50 [patch.py:510] inductor factorable-divisibility patch: installed.
INFO 09-24 04:39:54 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn
WARNING 09-24 04:39:54 [stage_init_utils.py:1887] [stage_init] Failed to load transfer config: [Errno 13] Permission denied: 'C:\\Users\\zhout'
{
"scope": "MiniCPM-o GGUF complete audio+image\u2192text+speech through Omni StageRuntime/StagePool",
"placement": "radeon-hybrid",
"model_revision": "db25077c33951fe163b42986fba0132e279872a2",
"cli_sha256": "66a512386aafeb708f49a7394a9054d94ec777c362395c8917a3d198aef1b523",
"reference_sha256": "cf4bb5cd9acbfbf67596d4a53310652b61ef4b7ede1d54eb03ef4882ca40223a",
"input_sha256": {
"audio_wav": "14ee147cbf2ce9afd9e32c8c8228d7cfe11985cd7e63456b2ad33871492aefcc",
"image_jpeg": "22c7ccea466a3f551c512045e6316c7597408d4e0a20205502f55784d977aa8d"
},
"memory_budget": {
"capacities": {
"host_ram": 22548578304
},
"demands": {
"host_ram": 22548578304
}
},
"profile_count": 20,
"warmup_count": 1,
"host_available_bytes_before": 31169310720,
"startup_s": 8.747939300024882,
"execution_plan_at_start": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"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": "66a512386aafeb708f49a7394a9054d94ec777c362395c8917a3d198aef1b523",
"requested_placement": "radeon-hybrid",
"ggml_vk_visible_devices": "1",
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": 16.552576799993403,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 54720,
"duration_s": 2.28,
"pcm_sha256": "637535a803bb3f1871333c9dc7ef400ff451b422a76bb3f58c68f1443b65d8cf"
},
"stage_event": {
"request_id": "minicpmo-warmup-0",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.532694500056095,
"peak_sampled_rss_bytes": 15296405504,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-1-968f0dc83e1d437eab46b88dcb2205cb.log"
}
}
],
"measured": [
{
"text": "The square in the image is red.",
"wall_s": 17.2018773999298,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 65280,
"duration_s": 2.72,
"pcm_sha256": "f892766580a0ad5ec941e1e02a795d85610ddfd310c1df953437d834cb860b96"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 2,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 17.191210399963893,
"peak_sampled_rss_bytes": 15296970752,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-2-ed7f3bd51b0c4f84ac8bb3fa2ee6c0d0.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.529372399905697,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 57600,
"duration_s": 2.4,
"pcm_sha256": "d02a199e2ae36a068e689711a9068e29956da9904f11377b9373e960e990cbb2"
},
"stage_event": {
"request_id": "minicpmo-measured-1",
"stage_id": 0,
"epoch": 3,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.51960920006968,
"peak_sampled_rss_bytes": 15296065536,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-3-e0a5df0842564938a60c97975da0e760.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.31223260005936,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 55680,
"duration_s": 2.32,
"pcm_sha256": "36ee0fcd47a3a2785af0cbc74e1ad68a51fd654213741a03044782ef3ae7d0b1"
},
"stage_event": {
"request_id": "minicpmo-measured-2",
"stage_id": 0,
"epoch": 4,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.30337189999409,
"peak_sampled_rss_bytes": 15296053248,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-4-0887229e7b3d4f26bfb29140c9d421b5.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.35642879991792,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 69120,
"duration_s": 2.88,
"pcm_sha256": "0fcf342fa934c49ef1be41924baa680e9c89874c043caea3ef42a5a7347e35e2"
},
"stage_event": {
"request_id": "minicpmo-measured-3",
"stage_id": 0,
"epoch": 5,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.345511200022884,
"peak_sampled_rss_bytes": 15297810432,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-5-b671614c1ec446f1878b0d10437ff998.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.338731799973175,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 61440,
"duration_s": 2.56,
"pcm_sha256": "4c3d4c998fd401b4797834fab4dc0ea8cfce00637090807ced696586f8fb4dab"
},
"stage_event": {
"request_id": "minicpmo-measured-4",
"stage_id": 0,
"epoch": 6,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.328630600008182,
"peak_sampled_rss_bytes": 15296004096,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-6-a38c336a57124285959e2b2815b534e9.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.347779299947433,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 61440,
"duration_s": 2.56,
"pcm_sha256": "4eb7b2a616c3fc83adb871382b78822623c0465703d6e10185a1e628d2de2142"
},
"stage_event": {
"request_id": "minicpmo-measured-5",
"stage_id": 0,
"epoch": 7,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.33827230008319,
"peak_sampled_rss_bytes": 15296856064,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-7-56b1f5261ae54da2ba2ef08f7f2c17e1.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.285854100016877,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 58560,
"duration_s": 2.44,
"pcm_sha256": "009722e58e51c131ca3f7016881371d8ade66eab1c3dc998b608772433363c0f"
},
"stage_event": {
"request_id": "minicpmo-measured-6",
"stage_id": 0,
"epoch": 8,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.280325899948366,
"peak_sampled_rss_bytes": 15295991808,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-8-e1f69f7a7351483cbb454bfa0356b1bb.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 14.076505899894983,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 49920,
"duration_s": 2.08,
"pcm_sha256": "e76f2b2faf0f50be173f666fa6edd41290f70755b1e18b3ded4137f384d3706f"
},
"stage_event": {
"request_id": "minicpmo-measured-7",
"stage_id": 0,
"epoch": 9,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 14.067735700053163,
"peak_sampled_rss_bytes": 15299522560,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-9-b7c514e44e7f4956a221dff676badbde.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.348308200016618,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 51840,
"duration_s": 2.16,
"pcm_sha256": "4b7ca518d0f99d96c36420a9d0cc9c7cc114c2845c0786a3ed2a9ae0f29efaa3"
},
"stage_event": {
"request_id": "minicpmo-measured-8",
"stage_id": 0,
"epoch": 10,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.33896249998361,
"peak_sampled_rss_bytes": 15296995328,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-10-e79695521b144aa5bcc8c8cd785da69b.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.34709819999989,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 60480,
"duration_s": 2.52,
"pcm_sha256": "0a1c11bea18d56bbdafb7ddea81954373526824ca677e1720e7d27a7f027f558"
},
"stage_event": {
"request_id": "minicpmo-measured-9",
"stage_id": 0,
"epoch": 11,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.33874079992529,
"peak_sampled_rss_bytes": 15296229376,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-11-7b59f49eec23417097046e7da996eddb.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.148105400032364,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 58560,
"duration_s": 2.44,
"pcm_sha256": "f7a3787bfd85d685eefcd4ae95023036b34b3b62ae59f1341fb5f89a95a79b52"
},
"stage_event": {
"request_id": "minicpmo-measured-10",
"stage_id": 0,
"epoch": 12,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.139469799934886,
"peak_sampled_rss_bytes": 15296348160,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-12-5aee2b7ca15749bead57e5b0c907daef.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.28885390004143,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 56640,
"duration_s": 2.36,
"pcm_sha256": "2b463a6c0d53b406d745044eed3d2c4f84daf8dc5f17700746f97b45759ee2c3"
},
"stage_event": {
"request_id": "minicpmo-measured-11",
"stage_id": 0,
"epoch": 13,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.280753499944694,
"peak_sampled_rss_bytes": 15297077248,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-13-faa6985493b84d71a3a03df276f20bfe.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.541666699922644,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 67200,
"duration_s": 2.8,
"pcm_sha256": "7d760b9f3e5bba73177b3434146faa6e70c8caf3a3b5487b01e42e08e0c723dd"
},
"stage_event": {
"request_id": "minicpmo-measured-12",
"stage_id": 0,
"epoch": 14,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.532741600065492,
"peak_sampled_rss_bytes": 15296196608,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-14-a8a5141ea1ec4efbb62f31e762ecd66e.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.35764410009142,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 63360,
"duration_s": 2.64,
"pcm_sha256": "d84ebcd349030cc7b25ad7e85189477894bcbe480d06b06c346fab42f93b17b2"
},
"stage_event": {
"request_id": "minicpmo-measured-13",
"stage_id": 0,
"epoch": 15,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.35046520002652,
"peak_sampled_rss_bytes": 15296897024,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-15-60998c19353b41e18cd9b0d63d00952c.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.266808800050057,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 55680,
"duration_s": 2.32,
"pcm_sha256": "ba427386daeb01afd0a14dcc03456c8dd3d87486907954cdf30e5f648bf411b3"
},
"stage_event": {
"request_id": "minicpmo-measured-14",
"stage_id": 0,
"epoch": 16,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.25816590001341,
"peak_sampled_rss_bytes": 15295782912,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-16-b2e35ac7b8f34cbab3398aaec4cac214.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 17.302021900075488,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 51840,
"duration_s": 2.16,
"pcm_sha256": "874935c866be9d5b45ff19936ab4055b3606c9a86488cb9812a20ed084c3a605"
},
"stage_event": {
"request_id": "minicpmo-measured-15",
"stage_id": 0,
"epoch": 17,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 17.297263100044802,
"peak_sampled_rss_bytes": 15296147456,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-17-ae72ca070d0f4933af9ed6763ab4fe3d.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.275045300018974,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 65280,
"duration_s": 2.72,
"pcm_sha256": "41ebd8607ac4bbb25bcb00239429fe106753e77bc386974668aae0f877d9aeb8"
},
"stage_event": {
"request_id": "minicpmo-measured-16",
"stage_id": 0,
"epoch": 18,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.264911900041625,
"peak_sampled_rss_bytes": 15296061440,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-18-2f52f85f9ede4ca4bd771d2f5934fedb.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.354517600033432,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 62400,
"duration_s": 2.6,
"pcm_sha256": "cb7a83adbf3fdcedb24456c1eca9b905c5e147c0f1b7c5db8cde80d549ed226a"
},
"stage_event": {
"request_id": "minicpmo-measured-17",
"stage_id": 0,
"epoch": 19,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.343158799922094,
"peak_sampled_rss_bytes": 15296081920,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-19-a34eedc5bcfa421ba23efb32d2a32bc9.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.27960309991613,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 63360,
"duration_s": 2.64,
"pcm_sha256": "02a1f9109dbd5c57374a70b219cd459a9c1f56895b910e8f3ecf772a14ae6259"
},
"stage_event": {
"request_id": "minicpmo-measured-18",
"stage_id": 0,
"epoch": 20,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.267663199920207,
"peak_sampled_rss_bytes": 15295946752,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-20-713a1fb93fe94583b25f1b14a81cf635.log"
}
},
{
"text": "The square in the image is red.",
"wall_s": 16.519184199976735,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 53760,
"duration_s": 2.24,
"pcm_sha256": "67f853416a0c918198eddae3c09d891249e4613c24641e3a9faf8c124dbd42dd"
},
"stage_event": {
"request_id": "minicpmo-measured-19",
"stage_id": 0,
"epoch": 21,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 16.513636599993333,
"peak_sampled_rss_bytes": 15296430080,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-21-46f97443dddb40d3a45baadd4a169b0a.log"
}
}
],
"complete_request": {
"text": "The square in the image is red.",
"wall_s": 17.2018773999298,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 65280,
"duration_s": 2.72,
"pcm_sha256": "f892766580a0ad5ec941e1e02a795d85610ddfd310c1df953437d834cb860b96"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 2,
"seq": 1,
"kind": "audio",
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 17.191210399963893,
"peak_sampled_rss_bytes": 15296970752,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-2-ed7f3bd51b0c4f84ac8bb3fa2ee6c0d0.log"
}
},
"nearest_rank_p50_wall_s": 16.34709819999989,
"nearest_rank_p95_wall_s": 17.2018773999298,
"output_wav": "\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\results\\e2e_expansion_20260923\\evidence\\minicpmo_omni_native_weights_io\\radeon_native_profile20.wav",
"execution_plan_after_request": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "643341e04aa64492a36c8827ac99c1a4",
"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": "66a512386aafeb708f49a7394a9054d94ec777c362395c8917a3d198aef1b523",
"requested_placement": "radeon-hybrid",
"ggml_vk_visible_devices": "1",
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": "radeon-hybrid",
"worker_pid": 35284,
"peak_sampled_rss_bytes": 15296430080,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_native_profile20_logs\\minicpmo-21-46f97443dddb40d3a45baadd4a169b0a.log"
}
},
"abort_check": {
"stale_output": false,
"ledger": {
"capacities": {
"host_ram": 22548578304
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
},
"status": "passed",
"ledger_after_shutdown": {
"capacities": {
"host_ram": 22548578304
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
}
@@ -0,0 +1,46 @@
{
"scope": "MiniCPM-o GGUF complete audio+image\u2192text+speech through Omni StageRuntime/StagePool",
"placement": "radeon-hybrid",
"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": "66a512386aafeb708f49a7394a9054d94ec777c362395c8917a3d198aef1b523",
"reference_sha256": "cf4bb5cd9acbfbf67596d4a53310652b61ef4b7ede1d54eb03ef4882ca40223a",
"input_sha256": {
"audio_wav": "14ee147cbf2ce9afd9e32c8c8228d7cfe11985cd7e63456b2ad33871492aefcc",
"image_jpeg": "22c7ccea466a3f551c512045e6316c7597408d4e0a20205502f55784d977aa8d"
},
"memory_budget": {
"capacities": {
"host_ram": 22548578304
},
"demands": {
"host_ram": 22548578304
}
},
"profile_count": 20,
"warmup_count": 1,
"host_available_bytes_before": 23520821248,
"status": "failed",
"error": "ResourceUnavailable: available host/shared RAM below MiniCPM-o reservation",
"ledger_after_shutdown": {
"capacities": {
"host_ram": 22548578304
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
}
@@ -0,0 +1,108 @@
INFO 09-24 04:37:22 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed.
INFO 09-24 04:37:23 [patch.py:510] inductor factorable-divisibility patch: installed.
INFO 09-24 04:37:26 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn
WARNING 09-24 04:37:26 [stage_init_utils.py:1887] [stage_init] Failed to load transfer config: [Errno 13] Permission denied: 'C:\\Users\\zhout'
ERROR 09-24 04:37:26 [stage_runtime.py:265] [StageRuntime] Stage initialization failed; shutting down 0 initialized client(s)
ERROR 09-24 04:37:26 [stage_runtime.py:265] Traceback (most recent call last):
ERROR 09-24 04:37:26 [stage_runtime.py:265] File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\vllm_omni\engine\stage_runtime.py", line 252, in initialize
ERROR 09-24 04:37:26 [stage_runtime.py:265] initialized_clients = self._initialize_stage_replicas(stage_plans, self._stage_init_timeout)
ERROR 09-24 04:37:26 [stage_runtime.py:265] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR 09-24 04:37:26 [stage_runtime.py:265] File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\vllm_omni\engine\stage_runtime.py", line 589, in _initialize_stage_replicas
ERROR 09-24 04:37:26 [stage_runtime.py:265] raise primary_exc
ERROR 09-24 04:37:26 [stage_runtime.py:265] File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\vllm_omni\engine\stage_runtime.py", line 550, in _init_group
ERROR 09-24 04:37:26 [stage_runtime.py:265] client = self._initialize_replica(
ERROR 09-24 04:37:26 [stage_runtime.py:265] ^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR 09-24 04:37:26 [stage_runtime.py:265] File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\vllm_omni\engine\stage_runtime.py", line 817, in _initialize_replica
ERROR 09-24 04:37:26 [stage_runtime.py:265] return create_graph_client(
ERROR 09-24 04:37:26 [stage_runtime.py:265] ^^^^^^^^^^^^^^^^^^^^
ERROR 09-24 04:37:26 [stage_runtime.py:265] File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\vllm_omni\engine\backends\__init__.py", line 27, in create_graph_client
ERROR 09-24 04:37:26 [stage_runtime.py:265] return MiniCPMOCppStageClient(metadata, backend, ledger, reservation)
ERROR 09-24 04:37:26 [stage_runtime.py:265] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR 09-24 04:37:26 [stage_runtime.py:265] File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\vllm_omni\engine\backends\minicpmo_cpp.py", line 186, in __init__
ERROR 09-24 04:37:26 [stage_runtime.py:265] raise ResourceUnavailable("available host/shared RAM below MiniCPM-o reservation")
ERROR 09-24 04:37:26 [stage_runtime.py:265] vllm_omni.engine.resource_ledger.ResourceUnavailable: available host/shared RAM below MiniCPM-o reservation
{
"scope": "MiniCPM-o GGUF complete audio+image\u2192text+speech through Omni StageRuntime/StagePool",
"placement": "radeon-hybrid",
"model_revision": "db25077c33951fe163b42986fba0132e279872a2",
"cli_sha256": "66a512386aafeb708f49a7394a9054d94ec777c362395c8917a3d198aef1b523",
"reference_sha256": "cf4bb5cd9acbfbf67596d4a53310652b61ef4b7ede1d54eb03ef4882ca40223a",
"input_sha256": {
"audio_wav": "14ee147cbf2ce9afd9e32c8c8228d7cfe11985cd7e63456b2ad33871492aefcc",
"image_jpeg": "22c7ccea466a3f551c512045e6316c7597408d4e0a20205502f55784d977aa8d"
},
"memory_budget": {
"capacities": {
"host_ram": 22548578304
},
"demands": {
"host_ram": 22548578304
}
},
"profile_count": 20,
"warmup_count": 1,
"host_available_bytes_before": 23520821248,
"status": "failed",
"error": "ResourceUnavailable: available host/shared RAM below MiniCPM-o reservation",
"ledger_after_shutdown": {
"capacities": {
"host_ram": 22548578304
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
}
Traceback (most recent call last):
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\experiments\probe_omni_minicpmo_cpp.py", line 187, in <module>
asyncio.run(main())
File "C:\Users\zhout\AppData\Local\Programs\Python\Python312\Lib\asyncio\runners.py", line 195, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "C:\Users\zhout\AppData\Local\Programs\Python\Python312\Lib\asyncio\runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\zhout\AppData\Local\Programs\Python\Python312\Lib\asyncio\base_events.py", line 691, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\experiments\probe_omni_minicpmo_cpp.py", line 101, in main
runtime.initialize()
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\vllm_omni\engine\stage_runtime.py", line 278, in initialize
raise exc
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\vllm_omni\engine\stage_runtime.py", line 252, in initialize
initialized_clients = self._initialize_stage_replicas(stage_plans, self._stage_init_timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\vllm_omni\engine\stage_runtime.py", line 589, in _initialize_stage_replicas
raise primary_exc
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\vllm_omni\engine\stage_runtime.py", line 550, in _init_group
client = self._initialize_replica(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\vllm_omni\engine\stage_runtime.py", line 817, in _initialize_replica
return create_graph_client(
^^^^^^^^^^^^^^^^^^^^
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\vllm_omni\engine\backends\__init__.py", line 27, in create_graph_client
return MiniCPMOCppStageClient(metadata, backend, ledger, reservation)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\vllm_omni\engine\backends\minicpmo_cpp.py", line 186, in __init__
raise ResourceUnavailable("available host/shared RAM below MiniCPM-o reservation")
vllm_omni.engine.resource_ledger.ResourceUnavailable: available host/shared RAM below MiniCPM-o reservation
@@ -0,0 +1,480 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 30720 MiB free
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 36 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 37/37 layers to GPU
load_tensors: Vulkan0 model buffer size = 4454.74 MiB
load_tensors: CPU_Mapped model buffer size = 333.43 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: Vulkan_Host output buffer size = 0.58 MiB
llama_kv_cache: Vulkan0 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: Vulkan0 compute buffer size = 304.38 MiB
llama_context: Vulkan_Host compute buffer size = 12.01 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 2
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 25673 MiB free
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 0 repeating layers to GPU
load_tensors: offloaded 0/21 layers to GPU
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: Vulkan0 compute buffer size = 30.75 MiB
llama_context: Vulkan_Host compute buffer size = 7.01 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 216 (with bs=512), 1 (with bs=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 Vulkan0 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: Vulkan0 compute buffer size = 100.30 MiB
alloc_compute_meta: CPU compute buffer size = 18.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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: 99
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:40:02.555 === omni_init start
04:40:02.555 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:40:02.555 === omni_init: loading new LLM model
04:40:05.267 === omni_init: loading TTS model
04:40:05.267 TTS model: loading with n_gpu_layers=0
04:40:05.515 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:40:05.515 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:40:05.934 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:40:05.939 TTS: head_code loaded, verifying first few values:
04:40:05.939 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:40:05.939 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:40:05.939 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:40:05.983 TTS: weights loaded successfully
04:40:05.983 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:40:05.990 Projector: loaded successfully
04:40:05.990 === omni_init: loading APM model
04:40:06.215 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:40:07.086 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:40:07.086 Token2Wav: all model files found, initializing session...
04:40:07.086 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:40:07.087 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:40:07.424 Token2Wav: initialized successfully
04:40:07.424 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:40:07.424 Token2Wav: 使用 C++ 实现
04:40:07.424 === omni_init success: ctx_llama = 000001fab871e540
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-1-tkig9x0m\fixture_
Count: 2
04:40:07.424 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:40:07.424 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-1-tkig9x0m\fixture_0000.wav
04:40:07.772 system prompt ref_audio embedding: n_pos=20
04:40:08.271 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:40:08.271 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:40:08.271 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:40:08.271 n_past = 72
04:40:08.271
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 0.847024 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 584.77 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 603.17 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 603.17 ms by vision ( 603.17 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-1-tkig9x0m\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
04:40:09.395 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-1-tkig9x0m\fixture_0001.wav
04:40:09.698 stream_prefill(index=1): user audio embedding: n_pos=31
04:40:10.013
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 1.74024 s
04:40:10.013 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:40:10.013 stream_decode: create tts thread (simplex mode)
04:40:10.013 stream_decode: create t2w thread
04:40:10.013 wait prefill done
04:40:10.013 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:40:10.013 T2W thread (C++) started
<user>
<assistant>04:40:10.017 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:40:10.018 TTS thread started
04:40:10.175 📍 [单工TTS] assistant prompt 完成, n_past=182
04:40:10.175 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:40:10.690 LLM: detected end token, set llm_generation_done=true
04:40:10.691 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]
04:40:10.691 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:40:10.691 📍 轮次 1 结束,记录边界于 n_past=191
04:40:10.691 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]
04:40:10.691 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:40:10.691 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
04:40:10.691 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:40:10.691 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:40:10.692 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:40:10.722 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:40:10.722 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:40:10.722 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:40:10.722 TTS Simplex: first chunk - cleared KV cache
04:40:10.722 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:40:10.788 TTS Simplex: prefill completed, n_past_tts=9
04:40:10.788 TTS Simplex: sampler created
04:40:10.788 TTS simplex: is_audio_bos=true (first audio token)
04:40:10.789 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:40:10.815 TTS Simplex Phase1: token 1/500: rel_id=1496
04:40:10.826 TTS Simplex Phase1: token 2/500: rel_id=4137
04:40:10.837 TTS Simplex Phase1: token 3/500: rel_id=4137
04:40:10.848 TTS Simplex Phase1: token 4/500: rel_id=4137
04:40:10.860 TTS Simplex Phase1: token 5/500: rel_id=4218
04:40:11.082 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:40:11.082 TTS Simplex Phase1: token 25/500: rel_id=2465
04:40:11.082 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:40:11.082 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:40:11.357 TTS Simplex Phase1: EOS token at step 50
04:40:11.357 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:40:11.357 TTS Simplex Phase1: token 50/500: rel_id=6561
04:40:11.357 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=58
04:40:11.366 TTS Simplex Phase2: text_eos_embed injected, n_past=59
04:40:11.374 TTS Simplex Phase2: audio_bos injected, n_past=60, starting final generation
04:40:11.385 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:40:11.441 TTS Simplex Phase2: EOS at step 6 (final end)
04:40:11.441 TTS Simplex: chunk 结束,tts_token_buffer 剩余 4 tokens (保留等下一个 chunk)
04:40:11.441 TTS Simplex: is_final_text_chunk=true, flush 剩余 4 tokens 从 tts_token_buffer
04:40:11.441 TTS Simplex: generated 54 audio tokens for chunk 0
04:40:11.441 TTS Simplex: chunk 0 first tokens: [1496 4137 4137 4137 4218 ], last tokens: [6324 6324 6324 6324 5845 ]
04:40:11.441 TTS Simplex: updated tts_n_past_accumulated=66, total_generated_tokens=54
04:40:11.451 TTS: finished processing all chunks
04:40:11.451 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:40:11.451 TTS: sent is_final=true to T2W queue (turn end)
04:40:13.408 🎉 首响时间 (First Audio Response): 3394ms
04:40:13.408 T2W线程: wav_0.wav | 0.84s audio | 2323.8ms inference | RTF=2.77 | t=3394ms
04:40:15.649 T2W线程: wav_1.wav | 1.00s audio | 2240.3ms inference | RTF=2.24 | t=5635ms
04:40:17.674 T2W线程: wav_2.wav | 0.44s audio | 2025.1ms inference | RTF=4.60 | t=7661ms
04:40:17.674 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:40:17.674 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:40:17.719 omni_stop_threads: stop signals sent
04:40:17.719 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1986.120ms vocoder=337.585ms total=2323.723ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1850.436ms vocoder=389.811ms total=2240.262ms audio=24000
[timing] call=2 tokens=7 final=1 token2mel=1859.670ms vocoder=165.389ms total=2025.069ms audio=10560
Audio generation completed.
llama_perf_context_print: load time = 4784.06 ms
llama_perf_context_print: prompt eval time = 2750.15 ms / 182 tokens ( 15.11 ms per token, 66.18 tokens per second)
llama_perf_context_print: eval time = 512.57 ms / 9 runs ( 56.95 ms per token, 17.56 tokens per second)
llama_perf_context_print: total time = 12327.96 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,480 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 30720 MiB free
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 36 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 37/37 layers to GPU
load_tensors: Vulkan0 model buffer size = 4454.74 MiB
load_tensors: CPU_Mapped model buffer size = 333.43 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: Vulkan_Host output buffer size = 0.58 MiB
llama_kv_cache: Vulkan0 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: Vulkan0 compute buffer size = 304.38 MiB
llama_context: Vulkan_Host compute buffer size = 12.01 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 2
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 25673 MiB free
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 0 repeating layers to GPU
load_tensors: offloaded 0/21 layers to GPU
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: Vulkan0 compute buffer size = 30.75 MiB
llama_context: Vulkan_Host compute buffer size = 7.01 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 216 (with bs=512), 1 (with bs=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 Vulkan0 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: Vulkan0 compute buffer size = 100.30 MiB
alloc_compute_meta: CPU compute buffer size = 18.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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: 99
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:42:28.548 === omni_init start
04:42:28.548 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:42:28.548 === omni_init: loading new LLM model
04:42:31.077 === omni_init: loading TTS model
04:42:31.077 TTS model: loading with n_gpu_layers=0
04:42:31.327 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:42:31.327 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:42:31.701 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:42:31.707 TTS: head_code loaded, verifying first few values:
04:42:31.707 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:42:31.708 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:42:31.708 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:42:31.758 TTS: weights loaded successfully
04:42:31.758 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:42:31.767 Projector: loaded successfully
04:42:31.767 === omni_init: loading APM model
04:42:32.000 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:42:32.780 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:42:32.780 Token2Wav: all model files found, initializing session...
04:42:32.780 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:42:32.780 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:42:33.119 Token2Wav: initialized successfully
04:42:33.119 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:42:33.119 Token2Wav: 使用 C++ 实现
04:42:33.119 === omni_init success: ctx_llama = 000002602f66e520
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-10-awu6x534\fixture_
Count: 2
04:42:33.119 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:42:33.119 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-10-awu6x534\fixture_0000.wav
04:42:33.482 system prompt ref_audio embedding: n_pos=20
04:42:33.985 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:42:33.985 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:42:33.985 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:42:33.985 n_past = 72
04:42:33.985
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 0.86603 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 575.71 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 593.25 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 593.26 ms by vision ( 593.26 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-10-awu6x534\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
04:42:35.096 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-10-awu6x534\fixture_0001.wav
04:42:35.402 stream_prefill(index=1): user audio embedding: n_pos=31
04:42:35.716
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 1.72987 s
04:42:35.716 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:42:35.716 stream_decode: create tts thread (simplex mode)
04:42:35.716 stream_decode: create t2w thread
04:42:35.716 wait prefill done
04:42:35.716 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:42:35.717 T2W thread (C++) started
<user>
<assistant>04:42:35.721 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:42:35.721 TTS thread started
04:42:35.884 📍 [单工TTS] assistant prompt 完成, n_past=182
04:42:35.884 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:42:36.394 LLM: detected end token, set llm_generation_done=true
04:42:36.394 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]
04:42:36.394 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:42:36.394 📍 轮次 1 结束,记录边界于 n_past=191
04:42:36.394 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]
04:42:36.394 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:42:36.394 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
04:42:36.394 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:42:36.394 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:42:36.395 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:42:36.427 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:42:36.427 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:42:36.427 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:42:36.427 TTS Simplex: first chunk - cleared KV cache
04:42:36.427 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:42:36.487 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:42:36.492 TTS Simplex: prefill completed, n_past_tts=9
04:42:36.492 TTS Simplex: sampler created
04:42:36.492 TTS simplex: is_audio_bos=true (first audio token)
04:42:36.519 TTS Simplex Phase1: token 1/500: rel_id=1496
04:42:36.530 TTS Simplex Phase1: token 2/500: rel_id=2031
04:42:36.541 TTS Simplex Phase1: token 3/500: rel_id=4218
04:42:36.552 TTS Simplex Phase1: token 4/500: rel_id=4137
04:42:36.563 TTS Simplex Phase1: token 5/500: rel_id=4137
04:42:36.787 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:42:36.787 TTS Simplex Phase1: token 25/500: rel_id=2419
04:42:36.787 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:42:36.787 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:42:37.060 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 50, buffer=25)
04:42:37.060 TTS Simplex Phase1: token 50/500: rel_id=4218
04:42:37.074 TTS Simplex Phase1: EOS token at step 52
04:42:37.074 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:42:37.074 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=60
04:42:37.082 TTS Simplex Phase2: text_eos_embed injected, n_past=61
04:42:37.089 TTS Simplex Phase2: audio_bos injected, n_past=62, starting final generation
04:42:37.101 TTS Simplex Phase2: EOS at step 1 (final end)
04:42:37.101 TTS Simplex: chunk 结束,tts_token_buffer 剩余 1 tokens (保留等下一个 chunk)
04:42:37.101 TTS Simplex: is_final_text_chunk=true, flush 剩余 1 tokens 从 tts_token_buffer
04:42:37.101 TTS Simplex: generated 51 audio tokens for chunk 0
04:42:37.101 TTS Simplex: chunk 0 first tokens: [1496 2031 4218 4137 4137 ], last tokens: [4218 4218 4218 4218 4137 ]
04:42:37.101 TTS Simplex: updated tts_n_past_accumulated=63, total_generated_tokens=51
04:42:37.102 TTS: finished processing all chunks
04:42:37.102 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:42:37.102 TTS: sent is_final=true to T2W queue (turn end)
04:42:39.114 🎉 首响时间 (First Audio Response): 3397ms
04:42:39.114 T2W线程: wav_0.wav | 0.84s audio | 2325.8ms inference | RTF=2.77 | t=3397ms
04:42:41.341 T2W线程: wav_1.wav | 1.00s audio | 2226.2ms inference | RTF=2.23 | t=5624ms
04:42:43.349 T2W线程: wav_2.wav | 0.32s audio | 2007.2ms inference | RTF=6.27 | t=7632ms
04:42:43.349 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:42:43.349 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:42:43.436 omni_stop_threads: stop signals sent
04:42:43.436 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1990.254ms vocoder=335.462ms total=2325.735ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1852.176ms vocoder=373.989ms total=2226.177ms audio=24000
[timing] call=2 tokens=4 final=1 token2mel=1884.215ms vocoder=122.979ms total=2007.202ms audio=7680
Audio generation completed.
llama_perf_context_print: load time = 4681.16 ms
llama_perf_context_print: prompt eval time = 2764.53 ms / 182 tokens ( 15.19 ms per token, 65.83 tokens per second)
llama_perf_context_print: eval time = 506.94 ms / 9 runs ( 56.33 ms per token, 17.75 tokens per second)
llama_perf_context_print: total time = 12232.69 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,479 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 30720 MiB free
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 36 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 37/37 layers to GPU
load_tensors: Vulkan0 model buffer size = 4454.74 MiB
load_tensors: CPU_Mapped model buffer size = 333.43 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: Vulkan_Host output buffer size = 0.58 MiB
llama_kv_cache: Vulkan0 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: Vulkan0 compute buffer size = 304.38 MiB
llama_context: Vulkan_Host compute buffer size = 12.01 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 2
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 25673 MiB free
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 0 repeating layers to GPU
load_tensors: offloaded 0/21 layers to GPU
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: Vulkan0 compute buffer size = 30.75 MiB
llama_context: Vulkan_Host compute buffer size = 7.01 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 216 (with bs=512), 1 (with bs=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 Vulkan0 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: Vulkan0 compute buffer size = 100.30 MiB
alloc_compute_meta: CPU compute buffer size = 18.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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: 99
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:42:44.908 === omni_init start
04:42:44.909 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:42:44.909 === omni_init: loading new LLM model
04:42:47.456 === omni_init: loading TTS model
04:42:47.456 TTS model: loading with n_gpu_layers=0
04:42:47.722 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:42:47.722 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:42:48.098 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:42:48.103 TTS: head_code loaded, verifying first few values:
04:42:48.103 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:42:48.103 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:42:48.103 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:42:48.146 TTS: weights loaded successfully
04:42:48.146 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:42:48.154 Projector: loaded successfully
04:42:48.155 === omni_init: loading APM model
04:42:48.372 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:42:49.165 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:42:49.165 Token2Wav: all model files found, initializing session...
04:42:49.165 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:42:49.165 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:42:49.506 Token2Wav: initialized successfully
04:42:49.506 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:42:49.506 Token2Wav: 使用 C++ 实现
04:42:49.506 === omni_init success: ctx_llama = 0000025d8920e520
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-11-oq0omjc2\fixture_
Count: 2
04:42:49.506 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:42:49.506 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-11-oq0omjc2\fixture_0000.wav
04:42:49.858 system prompt ref_audio embedding: n_pos=20
04:42:50.353 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:42:50.353 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:42:50.353 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:42:50.353 n_past = 72
04:42:50.353
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 0.846615 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 593.69 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 611.61 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 611.61 ms by vision ( 611.61 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-11-oq0omjc2\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
04:42:51.489 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-11-oq0omjc2\fixture_0001.wav
04:42:51.783 stream_prefill(index=1): user audio embedding: n_pos=31
04:42:52.094
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 1.7389 s
04:42:52.094 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:42:52.094 stream_decode: create tts thread (simplex mode)
04:42:52.094 stream_decode: create t2w thread
04:42:52.094 wait prefill done
04:42:52.094 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:42:52.095 T2W thread (C++) started
<user>
<assistant>04:42:52.098 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:42:52.098 TTS thread started
04:42:52.258 📍 [单工TTS] assistant prompt 完成, n_past=182
04:42:52.258 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:42:52.799 LLM: detected end token, set llm_generation_done=true
04:42:52.799 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]
04:42:52.799 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:42:52.799 📍 轮次 1 结束,记录边界于 n_past=191
04:42:52.799 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]
04:42:52.799 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:42:52.799 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
04:42:52.800 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:42:52.800 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:42:52.801 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:42:52.843 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:42:52.843 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:42:52.843 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:42:52.843 TTS Simplex: first chunk - cleared KV cache
04:42:52.843 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:42:52.894 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:42:52.906 TTS Simplex: prefill completed, n_past_tts=9
04:42:52.906 TTS Simplex: sampler created
04:42:52.906 TTS simplex: is_audio_bos=true (first audio token)
04:42:52.932 TTS Simplex Phase1: token 1/500: rel_id=1499
04:42:52.944 TTS Simplex Phase1: token 2/500: rel_id=4218
04:42:52.954 TTS Simplex Phase1: token 3/500: rel_id=6405
04:42:52.966 TTS Simplex Phase1: token 4/500: rel_id=4218
04:42:52.977 TTS Simplex Phase1: token 5/500: rel_id=4218
04:42:53.192 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:42:53.192 TTS Simplex Phase1: token 25/500: rel_id=1907
04:42:53.192 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:42:53.192 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:42:53.359 TTS Simplex Phase1: EOS token at step 41
04:42:53.359 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:42:53.359 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=49
04:42:53.367 TTS Simplex Phase2: text_eos_embed injected, n_past=50
04:42:53.375 TTS Simplex Phase2: audio_bos injected, n_past=51, starting final generation
04:42:53.484 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:42:53.607 TTS Simplex Phase2: EOS at step 21 (final end)
04:42:53.607 TTS Simplex: chunk 结束,tts_token_buffer 剩余 10 tokens (保留等下一个 chunk)
04:42:53.607 TTS Simplex: is_final_text_chunk=true, flush 剩余 10 tokens 从 tts_token_buffer
04:42:53.607 TTS Simplex: generated 60 audio tokens for chunk 0
04:42:53.607 TTS Simplex: chunk 0 first tokens: [1499 4218 6405 4218 4218 ], last tokens: [768 1785 4218 4218 6079 ]
04:42:53.607 TTS Simplex: updated tts_n_past_accumulated=72, total_generated_tokens=60
04:42:53.617 TTS: finished processing all chunks
04:42:53.618 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:42:53.618 TTS: sent is_final=true to T2W queue (turn end)
04:42:55.510 🎉 首响时间 (First Audio Response): 3416ms
04:42:55.510 T2W线程: wav_0.wav | 0.84s audio | 2317.2ms inference | RTF=2.76 | t=3416ms
04:42:57.726 T2W线程: wav_1.wav | 1.00s audio | 2215.0ms inference | RTF=2.22 | t=5632ms
04:42:59.826 T2W线程: wav_2.wav | 0.68s audio | 2099.6ms inference | RTF=3.09 | t=7732ms
04:42:59.827 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:42:59.827 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:42:59.857 omni_stop_threads: stop signals sent
04:42:59.857 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1992.251ms vocoder=324.880ms total=2317.151ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1838.859ms vocoder=376.138ms total=2215.012ms audio=24000
[timing] call=2 tokens=13 final=1 token2mel=1861.307ms vocoder=238.289ms total=2099.610ms audio=16320
Audio generation completed.
llama_perf_context_print: load time = 4662.03 ms
llama_perf_context_print: prompt eval time = 2751.63 ms / 182 tokens ( 15.12 ms per token, 66.14 tokens per second)
llama_perf_context_print: eval time = 538.41 ms / 9 runs ( 59.82 ms per token, 16.72 tokens per second)
llama_perf_context_print: total time = 12260.30 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,479 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 30720 MiB free
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 36 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 37/37 layers to GPU
load_tensors: Vulkan0 model buffer size = 4454.74 MiB
load_tensors: CPU_Mapped model buffer size = 333.43 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: Vulkan_Host output buffer size = 0.58 MiB
llama_kv_cache: Vulkan0 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: Vulkan0 compute buffer size = 304.38 MiB
llama_context: Vulkan_Host compute buffer size = 12.01 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 2
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 25673 MiB free
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 0 repeating layers to GPU
load_tensors: offloaded 0/21 layers to GPU
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: Vulkan0 compute buffer size = 30.75 MiB
llama_context: Vulkan_Host compute buffer size = 7.01 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 216 (with bs=512), 1 (with bs=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 Vulkan0 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: Vulkan0 compute buffer size = 100.30 MiB
alloc_compute_meta: CPU compute buffer size = 18.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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: 99
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:43:01.243 === omni_init start
04:43:01.243 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:43:01.243 === omni_init: loading new LLM model
04:43:03.792 === omni_init: loading TTS model
04:43:03.792 TTS model: loading with n_gpu_layers=0
04:43:04.040 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:43:04.040 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:43:04.397 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:43:04.404 TTS: head_code loaded, verifying first few values:
04:43:04.404 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:43:04.404 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:43:04.404 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:43:04.447 TTS: weights loaded successfully
04:43:04.447 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:43:04.454 Projector: loaded successfully
04:43:04.454 === omni_init: loading APM model
04:43:04.666 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:43:05.498 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:43:05.498 Token2Wav: all model files found, initializing session...
04:43:05.498 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:43:05.498 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:43:05.836 Token2Wav: initialized successfully
04:43:05.836 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:43:05.836 Token2Wav: 使用 C++ 实现
04:43:05.836 === omni_init success: ctx_llama = 000001db6f94e540
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-12-0n5r_p4p\fixture_
Count: 2
04:43:05.836 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:43:05.836 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-12-0n5r_p4p\fixture_0000.wav
04:43:06.193 system prompt ref_audio embedding: n_pos=20
04:43:06.683 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:43:06.683 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:43:06.683 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:43:06.683 n_past = 72
04:43:06.683
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 0.847569 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 577.15 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 595.77 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 595.78 ms by vision ( 595.78 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-12-0n5r_p4p\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
04:43:07.793 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-12-0n5r_p4p\fixture_0001.wav
04:43:08.096 stream_prefill(index=1): user audio embedding: n_pos=31
04:43:08.404
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 1.71911 s
04:43:08.404 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:43:08.404 stream_decode: create tts thread (simplex mode)
04:43:08.404 stream_decode: create t2w thread
04:43:08.404 wait prefill done
04:43:08.404 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:43:08.404 T2W thread (C++) started
<user>
<assistant>04:43:08.407 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:43:08.409 TTS thread started
04:43:08.562 📍 [单工TTS] assistant prompt 完成, n_past=182
04:43:08.563 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:43:09.072 LLM: detected end token, set llm_generation_done=true
04:43:09.072 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]
04:43:09.072 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:43:09.072 📍 轮次 1 结束,记录边界于 n_past=191
04:43:09.072 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]
04:43:09.072 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:43:09.073 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
04:43:09.073 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:43:09.073 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:43:09.073 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:43:09.104 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:43:09.104 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:43:09.104 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:43:09.104 TTS Simplex: first chunk - cleared KV cache
04:43:09.104 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:43:09.167 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:43:09.174 TTS Simplex: prefill completed, n_past_tts=9
04:43:09.174 TTS Simplex: sampler created
04:43:09.174 TTS simplex: is_audio_bos=true (first audio token)
04:43:09.201 TTS Simplex Phase1: token 1/500: rel_id=770
04:43:09.212 TTS Simplex Phase1: token 2/500: rel_id=4137
04:43:09.223 TTS Simplex Phase1: token 3/500: rel_id=4218
04:43:09.234 TTS Simplex Phase1: token 4/500: rel_id=4218
04:43:09.246 TTS Simplex Phase1: token 5/500: rel_id=4218
04:43:09.473 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:43:09.473 TTS Simplex Phase1: token 25/500: rel_id=3667
04:43:09.473 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:43:09.473 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:43:09.655 TTS Simplex Phase1: EOS token at step 42
04:43:09.655 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:43:09.655 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=50
04:43:09.664 TTS Simplex Phase2: text_eos_embed injected, n_past=51
04:43:09.672 TTS Simplex Phase2: audio_bos injected, n_past=52, starting final generation
04:43:09.773 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:43:09.877 TTS Simplex Phase2: EOS at step 18 (final end)
04:43:09.877 TTS Simplex: chunk 结束,tts_token_buffer 剩余 8 tokens (保留等下一个 chunk)
04:43:09.877 TTS Simplex: is_final_text_chunk=true, flush 剩余 8 tokens 从 tts_token_buffer
04:43:09.877 TTS Simplex: generated 58 audio tokens for chunk 0
04:43:09.877 TTS Simplex: chunk 0 first tokens: [770 4137 4218 4218 4218 ], last tokens: [1038 42 1465 4218 4137 ]
04:43:09.877 TTS Simplex: updated tts_n_past_accumulated=70, total_generated_tokens=58
04:43:09.887 TTS: finished processing all chunks
04:43:09.887 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:43:09.887 TTS: sent is_final=true to T2W queue (turn end)
04:43:11.826 🎉 首响时间 (First Audio Response): 3422ms
04:43:11.826 T2W线程: wav_0.wav | 0.84s audio | 2351.6ms inference | RTF=2.80 | t=3422ms
04:43:14.064 T2W线程: wav_1.wav | 1.00s audio | 2236.8ms inference | RTF=2.24 | t=5659ms
04:43:16.134 T2W线程: wav_2.wav | 0.60s audio | 2070.1ms inference | RTF=3.45 | t=7730ms
04:43:16.135 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:43:16.135 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:43:16.228 omni_stop_threads: stop signals sent
04:43:16.228 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=2022.830ms vocoder=328.752ms total=2351.600ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1857.879ms vocoder=378.906ms total=2236.799ms audio=24000
[timing] call=2 tokens=11 final=1 token2mel=1864.578ms vocoder=205.536ms total=2070.126ms audio=14400
Audio generation completed.
llama_perf_context_print: load time = 4646.06 ms
llama_perf_context_print: prompt eval time = 2726.08 ms / 182 tokens ( 14.98 ms per token, 66.76 tokens per second)
llama_perf_context_print: eval time = 507.39 ms / 9 runs ( 56.38 ms per token, 17.74 tokens per second)
llama_perf_context_print: total time = 12311.29 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,479 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 30720 MiB free
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 36 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 37/37 layers to GPU
load_tensors: Vulkan0 model buffer size = 4454.74 MiB
load_tensors: CPU_Mapped model buffer size = 333.43 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: Vulkan_Host output buffer size = 0.58 MiB
llama_kv_cache: Vulkan0 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: Vulkan0 compute buffer size = 304.38 MiB
llama_context: Vulkan_Host compute buffer size = 12.01 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 2
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 25673 MiB free
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 0 repeating layers to GPU
load_tensors: offloaded 0/21 layers to GPU
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: Vulkan0 compute buffer size = 30.75 MiB
llama_context: Vulkan_Host compute buffer size = 7.01 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 216 (with bs=512), 1 (with bs=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 Vulkan0 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: Vulkan0 compute buffer size = 100.30 MiB
alloc_compute_meta: CPU compute buffer size = 18.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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: 99
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:43:17.389 === omni_init start
04:43:17.390 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:43:17.390 === omni_init: loading new LLM model
04:43:19.922 === omni_init: loading TTS model
04:43:19.922 TTS model: loading with n_gpu_layers=0
04:43:20.175 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:43:20.175 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:43:20.529 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:43:20.535 TTS: head_code loaded, verifying first few values:
04:43:20.535 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:43:20.535 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:43:20.535 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:43:20.579 TTS: weights loaded successfully
04:43:20.579 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:43:20.586 Projector: loaded successfully
04:43:20.586 === omni_init: loading APM model
04:43:20.800 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:43:21.623 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:43:21.623 Token2Wav: all model files found, initializing session...
04:43:21.624 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:43:21.624 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:43:21.966 Token2Wav: initialized successfully
04:43:21.966 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:43:21.966 Token2Wav: 使用 C++ 实现
04:43:21.966 === omni_init success: ctx_llama = 0000022bed8c1b80
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-13-kh1mj0jg\fixture_
Count: 2
04:43:21.966 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:43:21.967 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-13-kh1mj0jg\fixture_0000.wav
04:43:22.338 system prompt ref_audio embedding: n_pos=20
04:43:22.829 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:43:22.829 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:43:22.829 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:43:22.829 n_past = 72
04:43:22.829
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 0.862913 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 586.81 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 604.49 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 604.49 ms by vision ( 604.49 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-13-kh1mj0jg\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
04:43:23.964 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-13-kh1mj0jg\fixture_0001.wav
04:43:24.271 stream_prefill(index=1): user audio embedding: n_pos=31
04:43:24.586
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 1.75482 s
04:43:24.586 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:43:24.586 stream_decode: create tts thread (simplex mode)
04:43:24.586 stream_decode: create t2w thread
04:43:24.586 wait prefill done
04:43:24.586 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:43:24.587 T2W thread (C++) started
<user>
<assistant>04:43:24.590 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:43:24.590 TTS thread started
04:43:24.748 📍 [单工TTS] assistant prompt 完成, n_past=182
04:43:24.748 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:43:25.262 LLM: detected end token, set llm_generation_done=true
04:43:25.262 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]
04:43:25.262 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:43:25.262 📍 轮次 1 结束,记录边界于 n_past=191
04:43:25.263 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]
04:43:25.263 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:43:25.263 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
04:43:25.263 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:43:25.263 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:43:25.263 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:43:25.300 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:43:25.300 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:43:25.300 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:43:25.300 TTS Simplex: first chunk - cleared KV cache
04:43:25.300 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:43:25.357 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:43:25.366 TTS Simplex: prefill completed, n_past_tts=9
04:43:25.366 TTS Simplex: sampler created
04:43:25.366 TTS simplex: is_audio_bos=true (first audio token)
04:43:25.392 TTS Simplex Phase1: token 1/500: rel_id=1487
04:43:25.403 TTS Simplex Phase1: token 2/500: rel_id=4299
04:43:25.415 TTS Simplex Phase1: token 3/500: rel_id=6486
04:43:25.426 TTS Simplex Phase1: token 4/500: rel_id=6405
04:43:25.438 TTS Simplex Phase1: token 5/500: rel_id=4218
04:43:25.666 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:43:25.666 TTS Simplex Phase1: token 25/500: rel_id=4564
04:43:25.666 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:43:25.666 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:43:25.828 TTS Simplex Phase1: EOS token at step 40
04:43:25.828 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:43:25.828 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=48
04:43:25.836 TTS Simplex Phase2: text_eos_embed injected, n_past=49
04:43:25.844 TTS Simplex Phase2: audio_bos injected, n_past=50, starting final generation
04:43:25.964 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:43:26.045 TTS Simplex Phase2: EOS at step 18 (final end)
04:43:26.045 TTS Simplex: chunk 结束,tts_token_buffer 剩余 6 tokens (保留等下一个 chunk)
04:43:26.045 TTS Simplex: is_final_text_chunk=true, flush 剩余 6 tokens 从 tts_token_buffer
04:43:26.045 TTS Simplex: generated 56 audio tokens for chunk 0
04:43:26.045 TTS Simplex: chunk 0 first tokens: [1487 4299 6486 6405 4218 ], last tokens: [57 735 1869 4299 4218 ]
04:43:26.045 TTS Simplex: updated tts_n_past_accumulated=68, total_generated_tokens=56
04:43:26.046 TTS: finished processing all chunks
04:43:26.046 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:43:26.046 TTS: sent is_final=true to T2W queue (turn end)
04:43:27.986 🎉 首响时间 (First Audio Response): 3400ms
04:43:27.986 T2W线程: wav_0.wav | 0.84s audio | 2319.1ms inference | RTF=2.76 | t=3400ms
04:43:30.239 T2W线程: wav_1.wav | 1.00s audio | 2251.7ms inference | RTF=2.25 | t=5652ms
04:43:32.319 T2W线程: wav_2.wav | 0.52s audio | 2079.1ms inference | RTF=4.00 | t=7732ms
04:43:32.319 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:43:32.319 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:43:32.426 omni_stop_threads: stop signals sent
04:43:32.426 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1991.395ms vocoder=327.597ms total=2319.017ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1869.274ms vocoder=382.432ms total=2251.718ms audio=24000
[timing] call=2 tokens=9 final=1 token2mel=1890.698ms vocoder=188.337ms total=2079.045ms audio=12480
Audio generation completed.
llama_perf_context_print: load time = 4701.39 ms
llama_perf_context_print: prompt eval time = 2781.25 ms / 182 tokens ( 15.28 ms per token, 65.44 tokens per second)
llama_perf_context_print: eval time = 511.54 ms / 9 runs ( 56.84 ms per token, 17.59 tokens per second)
llama_perf_context_print: total time = 12379.09 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,480 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 30720 MiB free
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 36 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 37/37 layers to GPU
load_tensors: Vulkan0 model buffer size = 4454.74 MiB
load_tensors: CPU_Mapped model buffer size = 333.43 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: Vulkan_Host output buffer size = 0.58 MiB
llama_kv_cache: Vulkan0 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: Vulkan0 compute buffer size = 304.38 MiB
llama_context: Vulkan_Host compute buffer size = 12.01 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 2
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 25673 MiB free
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 0 repeating layers to GPU
load_tensors: offloaded 0/21 layers to GPU
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: Vulkan0 compute buffer size = 30.75 MiB
llama_context: Vulkan_Host compute buffer size = 7.01 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 216 (with bs=512), 1 (with bs=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 Vulkan0 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: Vulkan0 compute buffer size = 100.30 MiB
alloc_compute_meta: CPU compute buffer size = 18.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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: 99
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:43:33.678 === omni_init start
04:43:33.679 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:43:33.679 === omni_init: loading new LLM model
04:43:36.257 === omni_init: loading TTS model
04:43:36.257 TTS model: loading with n_gpu_layers=0
04:43:36.505 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:43:36.505 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:43:36.880 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:43:36.885 TTS: head_code loaded, verifying first few values:
04:43:36.885 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:43:36.885 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:43:36.885 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:43:36.928 TTS: weights loaded successfully
04:43:36.929 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:43:36.936 Projector: loaded successfully
04:43:36.936 === omni_init: loading APM model
04:43:37.149 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:43:38.013 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:43:38.014 Token2Wav: all model files found, initializing session...
04:43:38.014 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:43:38.014 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:43:38.368 Token2Wav: initialized successfully
04:43:38.368 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:43:38.368 Token2Wav: 使用 C++ 实现
04:43:38.368 === omni_init success: ctx_llama = 000001be9c3ce520
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-14-efgpdxn9\fixture_
Count: 2
04:43:38.368 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:43:38.368 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-14-efgpdxn9\fixture_0000.wav
04:43:38.721 system prompt ref_audio embedding: n_pos=20
04:43:39.218 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:43:39.218 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:43:39.218 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:43:39.218 n_past = 72
04:43:39.218
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 0.850108 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 582.07 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 602.45 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 602.45 ms by vision ( 602.45 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-14-efgpdxn9\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
04:43:40.340 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-14-efgpdxn9\fixture_0001.wav
04:43:40.635 stream_prefill(index=1): user audio embedding: n_pos=31
04:43:40.949
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 1.7298 s
04:43:40.949 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:43:40.949 stream_decode: create tts thread (simplex mode)
04:43:40.949 stream_decode: create t2w thread
04:43:40.950 wait prefill done
04:43:40.950 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:43:40.950 T2W thread (C++) started
<user>
<assistant>04:43:40.955 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:43:40.956 TTS thread started
04:43:41.115 📍 [单工TTS] assistant prompt 完成, n_past=182
04:43:41.115 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:43:41.628 LLM: detected end token, set llm_generation_done=true
04:43:41.628 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]
04:43:41.628 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:43:41.628 📍 轮次 1 结束,记录边界于 n_past=191
04:43:41.628 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]
04:43:41.628 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:43:41.628 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
04:43:41.628 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:43:41.628 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:43:41.629 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:43:41.661 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:43:41.661 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:43:41.661 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:43:41.662 TTS Simplex: first chunk - cleared KV cache
04:43:41.662 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:43:41.723 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:43:41.728 TTS Simplex: prefill completed, n_past_tts=9
04:43:41.728 TTS Simplex: sampler created
04:43:41.728 TTS simplex: is_audio_bos=true (first audio token)
04:43:41.756 TTS Simplex Phase1: token 1/500: rel_id=1490
04:43:41.767 TTS Simplex Phase1: token 2/500: rel_id=1950
04:43:41.778 TTS Simplex Phase1: token 3/500: rel_id=4218
04:43:41.789 TTS Simplex Phase1: token 4/500: rel_id=4218
04:43:41.800 TTS Simplex Phase1: token 5/500: rel_id=4218
04:43:42.022 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:43:42.022 TTS Simplex Phase1: token 25/500: rel_id=1286
04:43:42.022 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:43:42.022 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:43:42.301 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 50, buffer=25)
04:43:42.301 TTS Simplex Phase1: token 50/500: rel_id=2142
04:43:42.471 TTS Simplex Phase1: EOS token at step 66
04:43:42.471 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:43:42.471 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=74
04:43:42.480 TTS Simplex Phase2: text_eos_embed injected, n_past=75
04:43:42.487 TTS Simplex Phase2: audio_bos injected, n_past=76, starting final generation
04:43:42.522 TTS Simplex Phase2: EOS at step 3 (final end)
04:43:42.522 TTS Simplex: chunk 结束,tts_token_buffer 剩余 17 tokens (保留等下一个 chunk)
04:43:42.522 TTS Simplex: is_final_text_chunk=true, flush 剩余 17 tokens 从 tts_token_buffer
04:43:42.522 TTS Simplex: generated 67 audio tokens for chunk 0
04:43:42.522 TTS Simplex: chunk 0 first tokens: [1490 1950 4218 4218 4218 ], last tokens: [4218 4218 6082 4137 4137 ]
04:43:42.522 TTS Simplex: updated tts_n_past_accumulated=79, total_generated_tokens=67
04:43:42.531 TTS: finished processing all chunks
04:43:42.532 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:43:42.532 TTS: sent is_final=true to T2W queue (turn end)
04:43:44.361 🎉 首响时间 (First Audio Response): 3411ms
04:43:44.361 T2W线程: wav_0.wav | 0.84s audio | 2338.5ms inference | RTF=2.78 | t=3411ms
04:43:46.612 T2W线程: wav_1.wav | 1.00s audio | 2249.5ms inference | RTF=2.25 | t=5662ms
04:43:48.814 T2W线程: wav_2.wav | 0.96s audio | 2202.1ms inference | RTF=2.29 | t=7864ms
04:43:48.815 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:43:48.815 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:43:48.886 T2W(C++) 线程: 停止
04[timing] call=0 tokens=28 final=0 token2mel=2009.928ms vocoder=328.524ms total=2338.468ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1860.192ms vocoder=389.268ms total=2249.470ms audio=24000
[timing] call=2 tokens=20 final=1 token2mel=1887.152ms vocoder=314.888ms total=2202.053ms audio=23040
Audio generation completed.
llama_perf_context_print: load time = 4724.51 ms
llama_perf_context_print: prompt eval time = 2746.06 ms / 182 tokens ( 15.09 ms per token, 66.28 tokens per second)
llama_perf_context_print: eval time = 510.40 ms / 9 runs ( 56.71 ms per token, 17.63 tokens per second)
llama_perf_context_print: total time = 12494.78 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
:43:48.886 omni_stop_threads: stop signals sent
tts thread end
t2w thread end
@@ -0,0 +1,479 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 30720 MiB free
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 36 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 37/37 layers to GPU
load_tensors: Vulkan0 model buffer size = 4454.74 MiB
load_tensors: CPU_Mapped model buffer size = 333.43 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: Vulkan_Host output buffer size = 0.58 MiB
llama_kv_cache: Vulkan0 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: Vulkan0 compute buffer size = 304.38 MiB
llama_context: Vulkan_Host compute buffer size = 12.01 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 2
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 25673 MiB free
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 0 repeating layers to GPU
load_tensors: offloaded 0/21 layers to GPU
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: Vulkan0 compute buffer size = 30.75 MiB
llama_context: Vulkan_Host compute buffer size = 7.01 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 216 (with bs=512), 1 (with bs=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 Vulkan0 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: Vulkan0 compute buffer size = 100.30 MiB
alloc_compute_meta: CPU compute buffer size = 18.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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: 99
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:43:50.218 === omni_init start
04:43:50.219 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:43:50.219 === omni_init: loading new LLM model
04:43:52.740 === omni_init: loading TTS model
04:43:52.740 TTS model: loading with n_gpu_layers=0
04:43:52.992 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:43:52.992 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:43:53.341 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:43:53.346 TTS: head_code loaded, verifying first few values:
04:43:53.347 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:43:53.347 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:43:53.347 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:43:53.390 TTS: weights loaded successfully
04:43:53.391 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:43:53.397 Projector: loaded successfully
04:43:53.397 === omni_init: loading APM model
04:43:53.616 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:43:54.438 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:43:54.438 Token2Wav: all model files found, initializing session...
04:43:54.438 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:43:54.438 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:43:54.799 Token2Wav: initialized successfully
04:43:54.799 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:43:54.799 Token2Wav: 使用 C++ 实现
04:43:54.799 === omni_init success: ctx_llama = 0000017e67d7e520
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-15-o0e32b10\fixture_
Count: 2
04:43:54.799 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:43:54.799 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-15-o0e32b10\fixture_0000.wav
04:43:55.148 system prompt ref_audio embedding: n_pos=20
04:43:55.648 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:43:55.648 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:43:55.648 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:43:55.648 n_past = 72
04:43:55.648
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 0.848541 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 595.20 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 614.15 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 614.15 ms by vision ( 614.15 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-15-o0e32b10\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
04:43:56.780 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-15-o0e32b10\fixture_0001.wav
04:43:57.079 stream_prefill(index=1): user audio embedding: n_pos=31
04:43:57.393
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 1.74393 s
04:43:57.393 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:43:57.393 stream_decode: create tts thread (simplex mode)
04:43:57.394 stream_decode: create t2w thread
04:43:57.394 wait prefill done
04:43:57.394 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:43:57.394 T2W thread (C++) started
<user>
<assistant>04:43:57.397 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:43:57.398 TTS thread started
04:43:57.555 📍 [单工TTS] assistant prompt 完成, n_past=182
04:43:57.555 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:43:58.072 LLM: detected end token, set llm_generation_done=true
04:43:58.072 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]
04:43:58.072 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:43:58.072 📍 轮次 1 结束,记录边界于 n_past=191
04:43:58.072 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]
04:43:58.072 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:43:58.072 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
04:43:58.072 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:43:58.072 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:43:58.074 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:43:58.115 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:43:58.115 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:43:58.115 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:43:58.115 TTS Simplex: first chunk - cleared KV cache
04:43:58.115 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:43:58.165 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:43:58.180 TTS Simplex: prefill completed, n_past_tts=9
04:43:58.180 TTS Simplex: sampler created
04:43:58.180 TTS simplex: is_audio_bos=true (first audio token)
04:43:58.206 TTS Simplex Phase1: token 1/500: rel_id=137
04:43:58.216 TTS Simplex Phase1: token 2/500: rel_id=2031
04:43:58.227 TTS Simplex Phase1: token 3/500: rel_id=1950
04:43:58.238 TTS Simplex Phase1: token 4/500: rel_id=2031
04:43:58.249 TTS Simplex Phase1: token 5/500: rel_id=2031
04:43:58.467 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:43:58.467 TTS Simplex Phase1: token 25/500: rel_id=6097
04:43:58.467 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:43:58.467 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:43:58.707 TTS Simplex Phase1: EOS token at step 47
04:43:58.707 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:43:58.707 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=55
04:43:58.715 TTS Simplex Phase2: text_eos_embed injected, n_past=56
04:43:58.723 TTS Simplex Phase2: audio_bos injected, n_past=57, starting final generation
04:43:58.768 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:43:58.920 TTS Simplex Phase2: EOS at step 18 (final end)
04:43:58.920 TTS Simplex: chunk 结束,tts_token_buffer 剩余 13 tokens (保留等下一个 chunk)
04:43:58.920 TTS Simplex: is_final_text_chunk=true, flush 剩余 13 tokens 从 tts_token_buffer
04:43:58.920 TTS Simplex: generated 63 audio tokens for chunk 0
04:43:58.920 TTS Simplex: chunk 0 first tokens: [137 2031 1950 2031 2031 ], last tokens: [2031 2031 1950 4218 6081 ]
04:43:58.920 TTS Simplex: updated tts_n_past_accumulated=75, total_generated_tokens=63
04:43:58.931 TTS: finished processing all chunks
04:43:58.931 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:43:58.931 TTS: sent is_final=true to T2W queue (turn end)
04:44:00.815 🎉 首响时间 (First Audio Response): 3421ms
04:44:00.815 T2W线程: wav_0.wav | 0.84s audio | 2347.1ms inference | RTF=2.79 | t=3421ms
04:44:03.046 T2W线程: wav_1.wav | 1.00s audio | 2230.6ms inference | RTF=2.23 | t=5653ms
04:44:05.205 T2W线程: wav_2.wav | 0.80s audio | 2158.2ms inference | RTF=2.70 | t=7811ms
04:44:05.206 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:44:05.206 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:44:05.314 04omni_stop_threads: stop signals sent
:44:05.314 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=2016.424ms vocoder=330.656ms total=2347.095ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1840.202ms vocoder=390.403ms total=2230.617ms audio=24000
[timing] call=2 tokens=16 final=1 token2mel=1883.088ms vocoder=275.110ms total=2158.209ms audio=19200
Audio generation completed.
llama_perf_context_print: load time = 4693.09 ms
llama_perf_context_print: prompt eval time = 2754.46 ms / 182 tokens ( 15.13 ms per token, 66.07 tokens per second)
llama_perf_context_print: eval time = 514.36 ms / 9 runs ( 57.15 ms per token, 17.50 tokens per second)
llama_perf_context_print: total time = 12452.37 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,480 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 30720 MiB free
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 36 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 37/37 layers to GPU
load_tensors: Vulkan0 model buffer size = 4454.74 MiB
load_tensors: CPU_Mapped model buffer size = 333.43 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: Vulkan_Host output buffer size = 0.58 MiB
llama_kv_cache: Vulkan0 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: Vulkan0 compute buffer size = 304.38 MiB
llama_context: Vulkan_Host compute buffer size = 12.01 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 2
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 25673 MiB free
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 0 repeating layers to GPU
load_tensors: offloaded 0/21 layers to GPU
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: Vulkan0 compute buffer size = 30.75 MiB
llama_context: Vulkan_Host compute buffer size = 7.01 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 216 (with bs=512), 1 (with bs=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 Vulkan0 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: Vulkan0 compute buffer size = 100.30 MiB
alloc_compute_meta: CPU compute buffer size = 18.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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: 99
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:44:06.579 === omni_init start
04:44:06.579 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:44:06.579 === omni_init: loading new LLM model
04:44:09.145 === omni_init: loading TTS model
04:44:09.145 TTS model: loading with n_gpu_layers=0
04:44:09.391 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:44:09.391 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:44:09.750 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:44:09.755 TTS: head_code loaded, verifying first few values:
04:44:09.755 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:44:09.755 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:44:09.755 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:44:09.799 TTS: weights loaded successfully
04:44:09.799 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:44:09.806 Projector: loaded successfully
04:44:09.807 === omni_init: loading APM model
04:44:10.031 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:44:10.857 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:44:10.857 Token2Wav: all model files found, initializing session...
04:44:10.857 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:44:10.858 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:44:11.202 Token2Wav: initialized successfully
04:44:11.202 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:44:11.202 Token2Wav: 使用 C++ 实现
04:44:11.202 === omni_init success: ctx_llama = 000002c0f01bd910
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-16-kkll65vz\fixture_
Count: 2
04:44:11.203 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:44:11.203 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-16-kkll65vz\fixture_0000.wav
04:44:11.547 system prompt ref_audio embedding: n_pos=20
04:44:12.037 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:44:12.037 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:44:12.037 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:44:12.037 n_past = 72
04:44:12.037
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 0.83464 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 584.14 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 602.50 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 602.51 ms by vision ( 602.51 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-16-kkll65vz\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
04:44:13.163 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-16-kkll65vz\fixture_0001.wav
04:44:13.451 stream_prefill(index=1): user audio embedding: n_pos=31
04:44:13.764
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 1.72472 s
04:44:13.764 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:44:13.764 stream_decode: create tts thread (simplex mode)
04:44:13.764 stream_decode: create t2w thread
04:44:13.764 wait prefill done
04:44:13.764 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:44:13.764 T2W thread (C++) started
<user>
<assistant>04:44:13.769 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:44:13.769 TTS thread started
04:44:13.927 📍 [单工TTS] assistant prompt 完成, n_past=182
04:44:13.927 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:44:14.445 LLM: detected end token, set llm_generation_done=true
04:44:14.445 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]
04:44:14.445 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:44:14.445 📍 轮次 1 结束,记录边界于 n_past=191
04:44:14.446 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]
04:44:14.446 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:44:14.446 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
04:44:14.446 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:44:14.446 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:44:14.446 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:44:14.484 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:44:14.484 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:44:14.484 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:44:14.484 TTS Simplex: first chunk - cleared KV cache
04:44:14.484 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:44:14.538 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:44:14.550 TTS Simplex: prefill completed, n_past_tts=9
04:44:14.550 TTS Simplex: sampler created
04:44:14.550 TTS simplex: is_audio_bos=true (first audio token)
04:44:14.577 TTS Simplex Phase1: token 1/500: rel_id=1487
04:44:14.588 TTS Simplex Phase1: token 2/500: rel_id=4299
04:44:14.600 TTS Simplex Phase1: token 3/500: rel_id=6405
04:44:14.610 TTS Simplex Phase1: token 4/500: rel_id=6405
04:44:14.621 TTS Simplex Phase1: token 5/500: rel_id=4218
04:44:14.844 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:44:14.844 TTS Simplex Phase1: token 25/500: rel_id=1978
04:44:14.844 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:44:14.844 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:44:15.117 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 50, buffer=25)
04:44:15.117 TTS Simplex Phase1: token 50/500: rel_id=6486
04:44:15.153 TTS Simplex Phase1: EOS token at step 54
04:44:15.153 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:44:15.153 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=62
04:44:15.160 TTS Simplex Phase2: text_eos_embed injected, n_past=63
04:44:15.168 TTS Simplex Phase2: audio_bos injected, n_past=64, starting final generation
04:44:15.200 TTS Simplex Phase2: EOS at step 3 (final end)
04:44:15.201 TTS Simplex: chunk 结束,tts_token_buffer 剩余 5 tokens (保留等下一个 chunk)
04:44:15.201 TTS Simplex: is_final_text_chunk=true, flush 剩余 5 tokens 从 tts_token_buffer
04:44:15.201 TTS Simplex: generated 55 audio tokens for chunk 0
04:44:15.201 TTS Simplex: chunk 0 first tokens: [1487 4299 6405 6405 4218 ], last tokens: [6405 6405 4218 4299 6081 ]
04:44:15.201 TTS Simplex: updated tts_n_past_accumulated=67, total_generated_tokens=55
04:44:15.202 TTS: finished processing all chunks
04:44:15.202 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:44:15.202 TTS: sent is_final=true to T2W queue (turn end)
04:44:17.177 🎉 首响时间 (First Audio Response): 3413ms
04:44:17.177 T2W线程: wav_0.wav | 0.84s audio | 2331.4ms inference | RTF=2.78 | t=3413ms
04:44:19.412 T2W线程: wav_1.wav | 1.00s audio | 2234.7ms inference | RTF=2.23 | t=5648ms
04:44:21.453 T2W线程: wav_2.wav | 0.48s audio | 2040.0ms inference | RTF=4.25 | t=7689ms
04:44:21.453 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:44:21.453 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:44:21.521 omni_stop_threads: stop signals sent
04:44:21.521 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=2004.930ms vocoder=326.438ms total=2331.395ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1860.418ms vocoder=374.249ms total=2234.679ms audio=24000
[timing] call=2 tokens=8 final=1 token2mel=1867.704ms vocoder=172.265ms total=2039.978ms audio=11520
Audio generation completed.
llama_perf_context_print: load time = 4658.25 ms
llama_perf_context_print: prompt eval time = 2723.76 ms / 182 tokens ( 14.97 ms per token, 66.82 tokens per second)
llama_perf_context_print: eval time = 515.51 ms / 9 runs ( 57.28 ms per token, 17.46 tokens per second)
llama_perf_context_print: total time = 12251.92 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,479 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 30720 MiB free
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 36 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 37/37 layers to GPU
load_tensors: Vulkan0 model buffer size = 4454.74 MiB
load_tensors: CPU_Mapped model buffer size = 333.43 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: Vulkan_Host output buffer size = 0.58 MiB
llama_kv_cache: Vulkan0 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: Vulkan0 compute buffer size = 304.38 MiB
llama_context: Vulkan_Host compute buffer size = 12.01 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 2
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 25673 MiB free
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 0 repeating layers to GPU
load_tensors: offloaded 0/21 layers to GPU
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: Vulkan0 compute buffer size = 30.75 MiB
llama_context: Vulkan_Host compute buffer size = 7.01 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 216 (with bs=512), 1 (with bs=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 Vulkan0 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: Vulkan0 compute buffer size = 100.30 MiB
alloc_compute_meta: CPU compute buffer size = 18.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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: 99
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:44:23.070 === omni_init start
04:44:23.070 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:44:23.070 === omni_init: loading new LLM model
04:44:26.068 === omni_init: loading TTS model
04:44:26.068 TTS model: loading with n_gpu_layers=0
04:44:26.856 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:44:26.856 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:44:27.296 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:44:27.303 TTS: head_code loaded, verifying first few values:
04:44:27.303 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:44:27.303 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:44:27.303 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:44:27.350 TTS: weights loaded successfully
04:44:27.350 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:44:27.358 Projector: loaded successfully
04:44:27.358 === omni_init: loading APM model
04:44:27.573 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:44:28.068 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:44:28.068 Token2Wav: all model files found, initializing session...
04:44:28.068 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:44:28.069 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:44:28.417 Token2Wav: initialized successfully
04:44:28.417 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:44:28.417 Token2Wav: 使用 C++ 实现
04:44:28.417 === omni_init success: ctx_llama = 0000020f10c2e520
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-17-2_wxcwn7\fixture_
Count: 2
04:44:28.417 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:44:28.417 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-17-2_wxcwn7\fixture_0000.wav
04:44:28.778 system prompt ref_audio embedding: n_pos=20
04:44:29.274 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:44:29.274 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:44:29.274 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:44:29.274 n_past = 72
04:44:29.275
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 0.857099 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 602.90 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 621.16 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 621.16 ms by vision ( 621.16 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-17-2_wxcwn7\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
04:44:30.418 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-17-2_wxcwn7\fixture_0001.wav
04:44:30.713 stream_prefill(index=1): user audio embedding: n_pos=31
04:44:31.032
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 1.75561 s
04:44:31.032 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:44:31.032 stream_decode: create tts thread (simplex mode)
04:44:31.032 stream_decode: create t2w thread
04:44:31.032 wait prefill done
04:44:31.032 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:44:31.033 T2W thread (C++) started
<user>
<assistant>04:44:31.037 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:44:31.038 TTS thread started
04:44:31.195 📍 [单工TTS] assistant prompt 完成, n_past=182
04:44:31.195 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:44:31.708 LLM: detected end token, set llm_generation_done=true
04:44:31.708 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]
04:44:31.708 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:44:31.708 📍 轮次 1 结束,记录边界于 n_past=191
04:44:31.708 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]
04:44:31.709 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:44:31.709 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
04:44:31.709 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:44:31.709 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:44:31.710 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:44:31.749 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:44:31.749 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:44:31.749 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:44:31.749 TTS Simplex: first chunk - cleared KV cache
04:44:31.749 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:44:31.801 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:44:31.816 TTS Simplex: prefill completed, n_past_tts=9
04:44:31.816 TTS Simplex: sampler created
04:44:31.816 TTS simplex: is_audio_bos=true (first audio token)
04:44:31.841 TTS Simplex Phase1: token 1/500: rel_id=1759
04:44:31.853 TTS Simplex Phase1: token 2/500: rel_id=1029
04:44:31.864 TTS Simplex Phase1: token 3/500: rel_id=74
04:44:31.874 TTS Simplex Phase1: token 4/500: rel_id=4492
04:44:31.885 TTS Simplex Phase1: token 5/500: rel_id=5401
04:44:32.112 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:44:0432.112 TTS Simplex Phase1: token 25/500: rel_id=6501
:44:32.112 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:44:32.112 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:44:32.275 TTS Simplex Phase1: EOS token at step 40
04:44:32.275 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:44:32.275 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=48
04:44:32.283 TTS Simplex Phase2: text_eos_embed injected, n_past=49
04:44:32.291 TTS Simplex Phase2: audio_bos injected, n_past=50, starting final generation
04:44:32.417 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:44:32.439 TTS Simplex Phase2: EOS at step 13 (final end)
04:44:32.439 TTS Simplex: chunk 结束,tts_token_buffer 剩余 1 tokens (保留等下一个 chunk)
04:44:32.439 TTS Simplex: is_final_text_chunk=true, flush 剩余 1 tokens 从 tts_token_buffer
04:44:32.439 TTS Simplex: generated 51 audio tokens for chunk 0
04:44:32.439 TTS Simplex: chunk 0 first tokens: [1759 1029 74 4492 5401 ], last tokens: [737 35 804 1776 742 ]
04:44:32.439 TTS Simplex: updated tts_n_past_accumulated=63, total_generated_tokens=51
04:44:32.450 TTS: finished processing all chunks
04:44:32.450 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:44:32.450 TTS: sent is_final=true to T2W queue (turn end)
04:44:34.446 🎉 首响时间 (First Audio Response): 3413ms
04:44:34.446 T2W线程: wav_0.wav | 0.84s audio | 2332.6ms inference | RTF=2.78 | t=3413ms
04:44:36.694 T2W线程: wav_1.wav | 1.00s audio | 2247.4ms inference | RTF=2.25 | t=5661ms
04:44:38.691 T2W线程: wav_2.wav | 0.32s audio | 1996.6ms inference | RTF=6.24 | t=7659ms
04:44:38.692 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:44:38.692 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:44:38.770 omni_stop_threads: stop signals sent
04:44:38.770 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=2004.303ms vocoder=328.279ms total=2332.605ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1868.319ms vocoder=379.098ms total=2247.428ms audio=24000
[timing] call=2 tokens=4 final=1 token2mel=1877.415ms vocoder=119.179ms total=1996.604ms audio=7680
Audio generation completed.
llama_perf_context_print: load time = 4593.22 ms
llama_perf_context_print: prompt eval time = 2776.62 ms / 182 tokens ( 15.26 ms per token, 65.55 tokens per second)
llama_perf_context_print: eval time = 511.06 ms / 9 runs ( 56.78 ms per token, 17.61 tokens per second)
llama_perf_context_print: total time = 12167.94 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,479 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 30720 MiB free
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 36 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 37/37 layers to GPU
load_tensors: Vulkan0 model buffer size = 4454.74 MiB
load_tensors: CPU_Mapped model buffer size = 333.43 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: Vulkan_Host output buffer size = 0.58 MiB
llama_kv_cache: Vulkan0 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: Vulkan0 compute buffer size = 304.38 MiB
llama_context: Vulkan_Host compute buffer size = 12.01 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 2
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 25673 MiB free
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 0 repeating layers to GPU
load_tensors: offloaded 0/21 layers to GPU
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: Vulkan0 compute buffer size = 30.75 MiB
llama_context: Vulkan_Host compute buffer size = 7.01 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 216 (with bs=512), 1 (with bs=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 Vulkan0 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: Vulkan0 compute buffer size = 100.30 MiB
alloc_compute_meta: CPU compute buffer size = 18.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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: 99
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:44:40.148 === omni_init start
04:44:40.148 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:44:40.148 === omni_init: loading new LLM model
04:44:42.683 === omni_init: loading TTS model
04:44:42.683 TTS model: loading with n_gpu_layers=0
04:44:42.934 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:44:42.934 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:44:43.287 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:44:43.293 TTS: head_code loaded, verifying first few values:
04:44:43.293 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:44:43.293 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:44:43.293 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:44:43.335 TTS: weights loaded successfully
04:44:43.335 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:44:43.342 Projector: loaded successfully
04:44:43.343 === omni_init: loading APM model
04:44:43.556 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:44:44.389 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:44:44.390 Token2Wav: all model files found, initializing session...
04:44:44.390 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:44:44.390 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:44:44.729 Token2Wav: initialized successfully
04:44:44.729 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:44:44.729 Token2Wav: 使用 C++ 实现
04:44:44.730 === omni_init success: ctx_llama = 0000023309a6e520
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-18-lnb554gx\fixture_
Count: 2
04:44:44.730 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:44:44.730 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-18-lnb554gx\fixture_0000.wav
04:44:45.092 system prompt ref_audio embedding: n_pos=20
04:44:45.587 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:44:45.587 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:44:45.587 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:44:45.587 n_past = 72
04:44:45.587
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 0.857765 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 593.66 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 611.85 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 611.85 ms by vision ( 611.85 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-18-lnb554gx\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
04:44:46.720 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-18-lnb554gx\fixture_0001.wav
04:44:47.024 stream_prefill(index=1): user audio embedding: n_pos=31
04:44:47.335
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 1.74624 s
04:44:47.335 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:44:47.335 stream_decode: create tts thread (simplex mode)
04:44:47.335 stream_decode: create t2w thread
04:44:47.335 wait prefill done
04:44:47.335 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:44:47.336 T2W thread (C++) started
<user>
<assistant>04:44:47.338 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:44:47.339 TTS thread started
04:44:47.495 📍 [单工TTS] assistant prompt 完成, n_past=182
04:44:47.495 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:44:48.010 LLM: detected end token, set llm_generation_done=true
04:44:48.010 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]
04:44:48.010 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:44:48.010 📍 轮次 1 结束,记录边界于 n_past=191
04:44:48.010 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]
04:44:48.010 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:44:48.010 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
04:44:48.010 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:44:48.010 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:44:48.011 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:44:48.040 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:44:48.040 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:44:48.040 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:44:48.040 TTS Simplex: first chunk - cleared KV cache
04:44:48.040 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:44:48.105 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:44:48.106 TTS Simplex: prefill completed, n_past_tts=9
04:44:48.106 TTS Simplex: sampler created
04:44:48.106 TTS simplex: is_audio_bos=true (first audio token)
04:44:48.133 TTS Simplex Phase1: token 1/500: rel_id=1487
04:44:48.144 TTS Simplex Phase1: token 2/500: rel_id=4218
04:44:48.156 TTS Simplex Phase1: token 3/500: rel_id=1734
04:44:48.167 TTS Simplex Phase1: token 4/500: rel_id=2031
04:44:48.178 TTS Simplex Phase1: token 5/500: rel_id=4218
04:44:48.402 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:44:48.402 TTS Simplex Phase1: token 25/500: rel_id=1725
04:44:48.402 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:44:48.402 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:44:48.598 TTS Simplex Phase1: EOS token at step 43
04:44:48.598 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:44:48.598 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=51
04:44:48.606 TTS Simplex Phase2: text_eos_embed injected, n_past=52
04:44:48.614 TTS Simplex Phase2: audio_bos injected, n_past=53, starting final generation
04:44:48.704 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:44:48.881 TTS Simplex Phase2: EOS at step 24 (final end)
04:44:48.881 TTS Simplex: chunk 结束,tts_token_buffer 剩余 15 tokens (保留等下一个 chunk)
04:44:48.881 TTS Simplex: is_final_text_chunk=true, flush 剩余 15 tokens 从 tts_token_buffer
04:44:48.881 TTS Simplex: generated 65 audio tokens for chunk 0
04:44:48.881 TTS Simplex: chunk 0 first tokens: [1487 4218 1734 2031 4218 ], last tokens: [4218 4218 4218 4218 6082 ]
04:44:48.881 TTS Simplex: updated tts_n_past_accumulated=77, total_generated_tokens=65
04:44:48.891 TTS: finished processing all chunks
04:44:48.892 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:44:48.892 TTS: sent is_final=true to T2W queue (turn end)
04:44:50.759 🎉 首响时间 (First Audio Response): 3423ms
04:44:50.759 T2W线程: wav_0.wav | 0.84s audio | 2355.6ms inference | RTF=2.80 | t=3423ms
04:44:53.013 T2W线程: wav_1.wav | 1.00s audio | 2253.5ms inference | RTF=2.25 | t=5678ms
04:44:55.193 T2W线程: wav_2.wav | 0.88s audio | 2179.0ms inference | RTF=2.48 | t=7857ms
04:44:55.194 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:44:55.194 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:44:55.252 omni_stop_threads: stop signals sent
04:44:55.252 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=2022.343ms vocoder=333.200ms total=2355.562ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1863.749ms vocoder=389.696ms total=2253.461ms audio=24000
[timing] call=2 tokens=18 final=1 token2mel=1885.573ms vocoder=293.405ms total=2178.989ms audio=21120
Audio generation completed.
llama_perf_context_print: load time = 4685.53 ms
llama_perf_context_print: prompt eval time = 2764.09 ms / 182 tokens ( 15.19 ms per token, 65.84 tokens per second)
llama_perf_context_print: eval time = 511.81 ms / 9 runs ( 56.87 ms per token, 17.58 tokens per second)
llama_perf_context_print: total time = 12442.01 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,480 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 30720 MiB free
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 36 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 37/37 layers to GPU
load_tensors: Vulkan0 model buffer size = 4454.74 MiB
load_tensors: CPU_Mapped model buffer size = 333.43 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: Vulkan_Host output buffer size = 0.58 MiB
llama_kv_cache: Vulkan0 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: Vulkan0 compute buffer size = 304.38 MiB
llama_context: Vulkan_Host compute buffer size = 12.01 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 2
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 25673 MiB free
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 0 repeating layers to GPU
load_tensors: offloaded 0/21 layers to GPU
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: Vulkan0 compute buffer size = 30.75 MiB
llama_context: Vulkan_Host compute buffer size = 7.01 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 216 (with bs=512), 1 (with bs=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 Vulkan0 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: Vulkan0 compute buffer size = 100.30 MiB
alloc_compute_meta: CPU compute buffer size = 18.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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: 99
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:44:56.425 === omni_init start
04:44:56.426 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:44:56.426 === omni_init: loading new LLM model
04:44:58.973 === omni_init: loading TTS model
04:44:58.973 TTS model: loading with n_gpu_layers=0
04:44:59.231 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:44:59.231 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:44:59.596 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:44:59.602 TTS: head_code loaded, verifying first few values:
04:44:59.602 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:44:59.602 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:44:59.602 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:44:59.648 TTS: weights loaded successfully
04:44:59.648 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:44:59.655 Projector: loaded successfully
04:44:59.655 === omni_init: loading APM model
04:44:59.865 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:45:00.678 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:45:00.678 Token2Wav: all model files found, initializing session...
04:45:00.678 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:45:00.678 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:45:01.014 Token2Wav: initialized successfully
04:45:01.014 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:45:01.014 Token2Wav: 使用 C++ 实现
04:45:01.014 === omni_init success: ctx_llama = 0000016ef941e520
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-19-4uxdkiiq\fixture_
Count: 2
04:45:01.014 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:45:01.014 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-19-4uxdkiiq\fixture_0000.wav
04:45:01.356 system prompt ref_audio embedding: n_pos=20
04:45:01.850 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:45:01.850 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:45:01.850 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:45:01.850 n_past = 72
04:45:01.850
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 0.835873 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 580.96 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 599.47 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 599.48 ms by vision ( 599.48 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-19-4uxdkiiq\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
04:45:02.966 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-19-4uxdkiiq\fixture_0001.wav
04:45:03.266 stream_prefill(index=1): user audio embedding: n_pos=31
04:45:03.580
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 1.72919 s
04:45:03.581 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:45:03.581 stream_decode: create tts thread (simplex mode)
04:45:03.581 stream_decode: create t2w thread
04:45:03.581 wait prefill done
04:45:03.581 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:45:03.581 T2W thread (C++) started
<user>
<assistant>04:45:03.583 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:45:03.584 TTS thread started
04:45:03.739 📍 [单工TTS] assistant prompt 完成, n_past=182
04:45:03.739 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:45:04.259 LLM: detected end token, set llm_generation_done=true
04:45:04.259 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]
04:45:04.259 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:45:04.259 📍 轮次 1 结束,记录边界于 n_past=191
04:45:04.259 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]
04:45:04.259 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:45:04.259 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
04:45:04.259 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:45:04.259 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:45:04.260 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:45:04.300 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:45:04.300 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:45:04.300 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:45:04.300 TTS Simplex: first chunk - cleared KV cache
04:45:04.300 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:45:04.352 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:45:04.364 TTS Simplex: prefill completed, n_past_tts=9
04:45:04.364 TTS Simplex: sampler created
04:45:04.364 TTS simplex: is_audio_bos=true (first audio token)
04:45:04.390 TTS Simplex Phase1: token 1/500: rel_id=1487
04:45:04.401 TTS Simplex Phase1: token 2/500: rel_id=1950
04:45:04.412 TTS Simplex Phase1: token 3/500: rel_id=4218
04:45:04.423 TTS Simplex Phase1: token 4/500: rel_id=4137
04:45:04.434 TTS Simplex Phase1: token 5/500: rel_id=4137
04:45:04.655 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:45:04.655 TTS Simplex Phase1: token 25/500: rel_id=6180
04:45:04.655 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:45:04.655 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:45:04.932 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 50, buffer=25)
04:45:04.932 TTS Simplex Phase1: token 50/500: rel_id=4542
04:45:05.046 TTS Simplex Phase1: EOS token at step 61
04:45:05.046 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:45:05.046 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=69
04:45:05.054 TTS Simplex Phase2: text_eos_embed injected, n_past=70
04:45:05.061 TTS Simplex Phase2: audio_bos injected, n_past=71, starting final generation
04:45:05.093 TTS Simplex Phase2: EOS at step 3 (final end)
04:45:05.093 TTS Simplex: chunk 结束,tts_token_buffer 剩余 12 tokens (保留等下一个 chunk)
04:45:05.093 TTS Simplex: is_final_text_chunk=true, flush 剩余 12 tokens 从 tts_token_buffer
04:45:05.093 TTS Simplex: generated 62 audio tokens for chunk 0
04:45:05.093 TTS Simplex: chunk 0 first tokens: [1487 1950 4218 4137 4137 ], last tokens: [4218 4218 4137 4137 3895 ]
04:45:05.093 TTS Simplex: updated tts_n_past_accumulated=74, total_generated_tokens=62
04:45:05.094 TTS: finished processing all chunks
04:45:05.094 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:45:05.094 TTS: sent is_final=true to T2W queue (turn end)
04:45:06.996 🎉 首响时间 (First Audio Response): 3415ms
04:45:06.996 T2W线程: wav_0.wav | 0.84s audio | 2340.0ms inference | RTF=2.79 | t=3415ms
04:45:09.224 T2W线程: wav_1.wav | 1.00s audio | 2227.4ms inference | RTF=2.23 | t=5643ms
04:45:11.363 T2W线程: wav_2.wav | 0.76s audio | 2137.7ms inference | RTF=2.81 | t=7782ms
04:45:11.363 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:45:11.363 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:04:45:45:11.408 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=2009.672ms vocoder=330.333ms total=2340.019ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1846.609ms vocoder=380.774ms total=2227.395ms audio=24000
[timing] call=2 tokens=15 final=1 token2mel=1878.792ms vocoder=258.897ms total=2137.700ms audio=18240
Audio generation completed.
llama_perf_context_print: load time = 4639.39 ms
llama_perf_context_print: prompt eval time = 2724.49 ms / 182 tokens ( 14.97 ms per token, 66.80 tokens per second)
llama_perf_context_print: eval time = 517.55 ms / 9 runs ( 57.51 ms per token, 17.39 tokens per second)
llama_perf_context_print: total time = 12308.13 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
11.408 omni_stop_threads: stop signals sent
tts thread end
t2w thread end
@@ -0,0 +1,479 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 30720 MiB free
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 36 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 37/37 layers to GPU
load_tensors: Vulkan0 model buffer size = 4454.74 MiB
load_tensors: CPU_Mapped model buffer size = 333.43 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: Vulkan_Host output buffer size = 0.58 MiB
llama_kv_cache: Vulkan0 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: Vulkan0 compute buffer size = 304.38 MiB
llama_context: Vulkan_Host compute buffer size = 12.01 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 2
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 25673 MiB free
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 0 repeating layers to GPU
load_tensors: offloaded 0/21 layers to GPU
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: Vulkan0 compute buffer size = 30.75 MiB
llama_context: Vulkan_Host compute buffer size = 7.01 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 216 (with bs=512), 1 (with bs=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 Vulkan0 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: Vulkan0 compute buffer size = 100.30 MiB
alloc_compute_meta: CPU compute buffer size = 18.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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: 99
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:40:19.267 === omni_init start
04:40:19.268 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:40:19.268 === omni_init: loading new LLM model
04:40:22.280 === omni_init: loading TTS model
04:40:22.280 TTS model: loading with n_gpu_layers=0
04:40:22.744 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:40:22.744 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:40:23.179 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:40:23.183 TTS: head_code loaded, verifying first few values:
04:40:23.183 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:40:23.183 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:40:23.183 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:40:23.230 TTS: weights loaded successfully
04:40:23.230 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:40:23.237 Projector: loaded successfully
04:40:23.238 === omni_init: loading APM model
04:40:23.454 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:40:23.998 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:40:23.999 Token2Wav: all model files found, initializing session...
04:40:23.999 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:40:23.999 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:40:24.354 Token2Wav: initialized successfully
04:40:24.354 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:40:24.354 Token2Wav: 使用 C++ 实现
04:40:24.354 === omni_init success: ctx_llama = 00000247f94b4cd0
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-2-4tyj265x\fixture_
Count: 2
04:40:24.354 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:40:24.354 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-2-4tyj265x\fixture_0000.wav
04:40:24.705 system prompt ref_audio embedding: n_pos=20
04:40:25.204 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:40:25.204 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:40:25.204 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:40:25.204 n_past = 72
04:40:25.204
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 0.849625 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 585.26 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 603.39 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 603.39 ms by vision ( 603.39 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-2-4tyj265x\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
04:40:26.337 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-2-4tyj265x\fixture_0001.wav
04:40:26.643 stream_prefill(index=1): user audio embedding: n_pos=31
04:40:26.963
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 1.7576 s
04:40:26.963 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:40:26.963 stream_decode: create tts thread (simplex mode)
04:40:26.963 stream_decode: create t2w thread
04:40:26.963 wait prefill done
04:40:26.963 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:40:26.964 T2W thread (C++) started
<user>
<assistant>04:40:26.968 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:40:26.968 TTS thread started
04:40:27.136 📍 [单工TTS] assistant prompt 完成, n_past=182
04:40:27.136 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:40:27.687 LLM: detected end token, set llm_generation_done=true
04:40:27.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]
04:40:27.687 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:40:27.687 📍 轮次 1 结束,记录边界于 n_past=191
04:40:27.687 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]
04:40:27.687 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:40:27.687 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
04:40:27.687 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:40:27.687 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:40:27.688 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:40:27.718 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:40:27.718 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:40:27.718 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:40:27.718 TTS Simplex: first chunk - cleared KV cache
04:40:27.718 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:40:27.781 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:40:27.786 TTS Simplex: prefill completed, n_past_tts=9
04:40:27.786 TTS Simplex: sampler created
04:40:27.786 TTS simplex: is_audio_bos=true (first audio token)
04:40:27.812 TTS Simplex Phase1: token 1/500: rel_id=770
04:40:27.822 TTS Simplex Phase1: token 2/500: rel_id=4218
04:40:27.833 TTS Simplex Phase1: token 3/500: rel_id=4218
04:40:27.843 TTS Simplex Phase1: token 4/500: rel_id=4137
04:40:27.853 TTS Simplex Phase1: token 5/500: rel_id=4218
04:40:28.076 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:40:28.076 TTS Simplex Phase1: token 25/500: rel_id=1763
04:40:28.076 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:40:28.076 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:40:28.167 TTS Simplex Phase1: EOS token at step 34
04:40:28.167 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:40:28.167 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=42
04:40:28.176 TTS Simplex Phase2: text_eos_embed injected, n_past=43
04:40:28.184 TTS Simplex Phase2: audio_bos injected, n_past=44, starting final generation
04:40:28.380 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:40:28.558 TTS Simplex Phase2: EOS at step 33 (final end)
04:40:28.558 TTS Simplex: chunk 结束,tts_token_buffer 剩余 15 tokens (保留等下一个 chunk)
04:40:28.558 TTS Simplex: is_final_text_chunk=true, flush 剩余 15 tokens 从 tts_token_buffer
04:40:28.558 TTS Simplex: generated 65 audio tokens for chunk 0
04:40:28.558 TTS Simplex: chunk 0 first tokens: [770 4218 4218 4137 4218 ], last tokens: [741 735 4218 4218 4218 ]
04:40:28.558 TTS Simplex: updated tts_n_past_accumulated=77, total_generated_tokens=65
04:40:28.568 TTS: finished processing all chunks
04:40:28.568 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:40:28.568 TTS: sent is_final=true to T2W queue (turn end)
04:40:30.412 🎉 首响时间 (First Audio Response): 3448ms
04:40:30.412 T2W线程: wav_0.wav | 0.84s audio | 2334.9ms inference | RTF=2.78 | t=3448ms
04:40:32.621 T2W线程: wav_1.wav | 1.00s audio | 2208.1ms inference | RTF=2.21 | t=5657ms
04:40:34.763 T2W线程: wav_2.wav | 0.88s audio | 2141.5ms inference | RTF=2.43 | t=7799ms
04:40:34.763 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:40:34.763 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:40:34.866 omni_stop_threads: stop signals sent
04:40:34.866 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=2007.458ms vocoder=327.414ms total=2334.891ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1825.684ms vocoder=382.374ms total=2208.070ms audio=24000
[timing] call=2 tokens=18 final=1 token2mel=1847.092ms vocoder=294.393ms total=2141.496ms audio=21120
Audio generation completed.
llama_perf_context_print: load time = 4289.39 ms
llama_perf_context_print: prompt eval time = 2780.61 ms / 182 tokens ( 15.28 ms per token, 65.45 tokens per second)
llama_perf_context_print: eval time = 548.28 ms / 9 runs ( 60.92 ms per token, 16.41 tokens per second)
llama_perf_context_print: total time = 12019.50 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,479 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 30720 MiB free
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 36 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 37/37 layers to GPU
load_tensors: Vulkan0 model buffer size = 4454.74 MiB
load_tensors: CPU_Mapped model buffer size = 333.43 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: Vulkan_Host output buffer size = 0.58 MiB
llama_kv_cache: Vulkan0 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: Vulkan0 compute buffer size = 304.38 MiB
llama_context: Vulkan_Host compute buffer size = 12.01 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 2
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 25673 MiB free
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 0 repeating layers to GPU
load_tensors: offloaded 0/21 layers to GPU
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: Vulkan0 compute buffer size = 30.75 MiB
llama_context: Vulkan_Host compute buffer size = 7.01 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 216 (with bs=512), 1 (with bs=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 Vulkan0 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: Vulkan0 compute buffer size = 100.30 MiB
alloc_compute_meta: CPU compute buffer size = 18.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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: 99
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:45:12.779 === omni_init start
04:45:12.779 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:45:12.779 === omni_init: loading new LLM model
04:45:15.307 === omni_init: loading TTS model
04:45:15.307 TTS model: loading with n_gpu_layers=0
04:45:15.559 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:45:15.559 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:45:15.926 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:45:15.931 TTS: head_code loaded, verifying first few values:
04:45:15.931 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:45:15.931 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:45:15.931 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:45:15.981 TTS: weights loaded successfully
04:45:15.981 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:45:15.989 Projector: loaded successfully
04:45:15.989 === omni_init: loading APM model
04:45:16.218 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:45:17.111 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:45:17.111 Token2Wav: all model files found, initializing session...
04:45:17.111 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:45:17.111 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:45:17.455 Token2Wav: initialized successfully
04:45:17.455 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:45:17.455 Token2Wav: 使用 C++ 实现
04:45:17.455 === omni_init success: ctx_llama = 0000023e2a41e520
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-20-7luqrx94\fixture_
Count: 2
04:45:17.455 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:45:17.455 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-20-7luqrx94\fixture_0000.wav
04:45:17.815 system prompt ref_audio embedding: n_pos=20
04:45:18.319 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:45:18.319 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:45:18.319 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:45:18.319 n_past = 72
04:45:18.319
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 0.863415 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 584.11 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 602.75 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 602.76 ms by vision ( 602.76 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-20-7luqrx94\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
04:45:19.447 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-20-7luqrx94\fixture_0001.wav
04:45:19.747 stream_prefill(index=1): user audio embedding: n_pos=31
04:45:20.064
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 1.74434 s
04:45:20.065 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:45:20.065 stream_decode: create tts thread (simplex mode)
04:45:20.065 stream_decode: create t2w thread
04:45:20.065 wait prefill done
04:45:20.065 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:45:20.065 T2W thread (C++) started
<user>
<assistant>04:45:20.068 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:45:20.069 TTS thread started
04:45:20.227 📍 [单工TTS] assistant prompt 完成, n_past=182
04:45:20.227 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:45:20.738 LLM: detected end token, set llm_generation_done=true
04:45:20.738 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]
04:45:20.738 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:45:20.738 📍 轮次 1 结束,记录边界于 n_past=191
04:45:20.738 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]
04:45:20.738 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:45:20.738 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
04:45:20.738 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:45:20.738 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:45:20.739 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:45:20.777 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:45:20.777 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:45:20.778 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:45:20.778 TTS Simplex: first chunk - cleared KV cache
04:45:20.778 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:45:20.833 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:45:20.842 TTS Simplex: prefill completed, n_past_tts=9
04:45:20.842 TTS Simplex: sampler created
04:45:20.842 TTS simplex: is_audio_bos=true (first audio token)
04:45:20.868 TTS Simplex Phase1: token 1/500: rel_id=929
04:45:20.879 TTS Simplex Phase1: token 2/500: rel_id=1950
04:45:20.890 TTS Simplex Phase1: token 3/500: rel_id=4218
04:45:20.902 TTS Simplex Phase1: token 4/500: rel_id=4218
04:45:20.913 TTS Simplex Phase1: token 5/500: rel_id=4137
04:45:21.137 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:45:21.137 TTS Simplex Phase1: token 25/500: rel_id=3667
04:45:21.137 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:45:21.137 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:45:21.152 TTS Simplex Phase1: EOS token at step 27
04:45:21.152 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:45:21.152 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=35
04:45:21.160 TTS Simplex Phase2: text_eos_embed injected, n_past=36
04:45:21.169 TTS Simplex Phase2: audio_bos injected, n_past=37, starting final generation
04:45:21.433 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:45:21.586 TTS Simplex Phase2: EOS at step 38 (final end)
04:45:21.586 TTS Simplex: chunk 结束,tts_token_buffer 剩余 13 tokens (保留等下一个 chunk)
04:45:21.586 TTS Simplex: is_final_text_chunk=true, flush 剩余 13 tokens 从 tts_token_buffer
04:45:21.586 TTS Simplex: generated 63 audio tokens for chunk 0
04:45:21.586 TTS Simplex: chunk 0 first tokens: [929 1950 4218 4218 4137 ], last tokens: [1785 4218 4218 4218 3903 ]
04:45:21.586 TTS Simplex: updated tts_n_past_accumulated=75, total_generated_tokens=63
04:45:21.596 TTS: finished processing all chunks
04:45:21.596 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:45:21.597 TTS: sent is_final=true to T2W queue (turn end)
04:45:23.486 🎉 首响时间 (First Audio Response): 3421ms
04:45:23.486 T2W线程: wav_0.wav | 0.84s audio | 2348.3ms inference | RTF=2.80 | t=3421ms
04:45:25.703 T2W线程: wav_1.wav | 1.00s audio | 2215.9ms inference | RTF=2.22 | t=5638ms
04:45:27.841 T2W线程: wav_2.wav | 0.80s audio | 2137.6ms inference | RTF=2.67 | t=7776ms
04:45:27.842 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:45:27.842 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:45:27.905 omni_stop_threads: stop signals sent
04:45:27.905 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=2014.358ms vocoder=333.911ms total=2348.288ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1835.129ms vocoder=380.787ms total=2215.928ms audio=24000
[timing] call=2 tokens=16 final=1 token2mel=1876.123ms vocoder=261.423ms total=2137.557ms audio=19200
Audio generation completed.
llama_perf_context_print: load time = 4794.00 ms
llama_perf_context_print: prompt eval time = 2771.33 ms / 182 tokens ( 15.23 ms per token, 65.67 tokens per second)
llama_perf_context_print: eval time = 507.60 ms / 9 runs ( 56.40 ms per token, 17.73 tokens per second)
llama_perf_context_print: total time = 12471.33 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,479 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 30720 MiB free
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 36 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 37/37 layers to GPU
load_tensors: Vulkan0 model buffer size = 4454.74 MiB
load_tensors: CPU_Mapped model buffer size = 333.43 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: Vulkan_Host output buffer size = 0.58 MiB
llama_kv_cache: Vulkan0 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: Vulkan0 compute buffer size = 304.38 MiB
llama_context: Vulkan_Host compute buffer size = 12.01 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 2
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 25673 MiB free
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 0 repeating layers to GPU
load_tensors: offloaded 0/21 layers to GPU
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: Vulkan0 compute buffer size = 30.75 MiB
llama_context: Vulkan_Host compute buffer size = 7.01 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 216 (with bs=512), 1 (with bs=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 Vulkan0 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: Vulkan0 compute buffer size = 100.30 MiB
alloc_compute_meta: CPU compute buffer size = 18.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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: 99
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:45:29.066 === omni_init start
04:45:29.066 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:45:29.066 === omni_init: loading new LLM model
04:45:31.589 === omni_init: loading TTS model
04:45:31.589 TTS model: loading with n_gpu_layers=0
04:45:32.330 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:45:32.330 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:45:32.771 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:45:32.777 TTS: head_code loaded, verifying first few values:
04:45:32.777 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:45:32.777 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:45:32.777 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:45:32.824 TTS: weights loaded successfully
04:45:32.824 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:45:32.830 Projector: loaded successfully
04:45:32.830 === omni_init: loading APM model
04:45:33.054 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:45:33.529 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:45:33.530 Token2Wav: all model files found, initializing session...
04:45:33.530 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:45:33.530 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:45:33.873 Token2Wav: initialized successfully
04:45:33.873 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:45:33.873 Token2Wav: 使用 C++ 实现
04:45:33.873 === omni_init success: ctx_llama = 000001d37ad0e520
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-21-2ayx24lq\fixture_
Count: 2
04:45:33.873 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:45:33.874 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-21-2ayx24lq\fixture_0000.wav
04:45:34.227 system prompt ref_audio embedding: n_pos=20
04:45:34.722 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:45:34.722 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:45:34.722 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:45:34.722 n_past = 72
04:45:34.722
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 0.848367 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 588.45 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 606.22 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 606.22 ms by vision ( 606.22 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-21-2ayx24lq\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
04:45:35.846 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-21-2ayx24lq\fixture_0001.wav
04:45:36.138 stream_prefill(index=1): user audio embedding: n_pos=31
04:45:36.456
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 1.73257 s
04:45:36.456 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:45:36.456 stream_decode: create tts thread (simplex mode)
04:45:36.456 stream_decode: create t2w thread
04:45:36.456 wait prefill done
04:45:36.456 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:45:36.457 T2W thread (C++) started
<user>
<assistant>04:45:36.460 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:45:36.460 TTS thread started
04:45:36.618 📍 [单工TTS] assistant prompt 完成, n_past=182
04:45:36.618 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:45:37.133 LLM: detected end token, set llm_generation_done=true
04:45:37.133 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]
04:45:37.133 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:45:37.133 📍 轮次 1 结束,记录边界于 n_past=191
04:45:37.133 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]
04:45:37.133 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:45:37.133 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
04:45:37.133 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:45:37.133 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:45:37.134 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:45:37.165 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:45:37.165 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:45:37.165 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:45:37.165 TTS Simplex: first chunk - cleared KV cache
04:45:37.165 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:45:37.230 TTS Simplex: prefill completed, n_past_tts=9
04:45:37.230 TTS Simplex: sampler created
04:45:37.230 TTS simplex: is_audio_bos=true (first audio token)
04:45:37.232 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:45:37.258 TTS Simplex Phase1: token 1/500: rel_id=770
04:45:37.269 TTS Simplex Phase1: token 2/500: rel_id=1950
04:45:37.279 TTS Simplex Phase1: token 3/500: rel_id=4137
04:45:37.290 TTS Simplex Phase1: token 4/500: rel_id=4218
04:45:37.301 TTS Simplex Phase1: token 5/500: rel_id=4137
04:45:37.521 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:45:37.521 TTS Simplex Phase1: token 25/500: rel_id=314
04:45:37.521 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:45:37.521 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:45:37.535 TTS Simplex Phase1: EOS token at step 27
04:45:37.535 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:45:37.535 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=35
04:45:37.543 TTS Simplex Phase2: text_eos_embed injected, n_past=36
04:45:37.551 TTS Simplex Phase2: audio_bos injected, n_past=37, starting final generation
04:45:37.820 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:45:37.865 TTS Simplex Phase2: EOS at step 28 (final end)
04:45:37.865 TTS Simplex: chunk 结束,tts_token_buffer 剩余 3 tokens (保留等下一个 chunk)
04:45:37.865 TTS Simplex: is_final_text_chunk=true, flush 剩余 3 tokens 从 tts_token_buffer
04:45:37.865 TTS Simplex: generated 53 audio tokens for chunk 0
04:45:37.865 TTS Simplex: chunk 0 first tokens: [770 1950 4137 4218 4137 ], last tokens: [732 736 1707 4218 4137 ]
04:45:37.865 TTS Simplex: updated tts_n_past_accumulated=65, total_generated_tokens=53
04:45:37.876 TTS: finished processing all chunks
04:45:37.876 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:45:37.876 TTS: sent is_final=true to T2W queue (turn end)
04:45:39.845 🎉 首响时间 (First Audio Response): 3389ms
04:45:39.845 T2W线程: wav_0.wav | 0.84s audio | 2322.6ms inference | RTF=2.76 | t=3389ms
04:45:42.082 T2W线程: wav_1.wav | 1.00s audio | 2235.9ms inference | RTF=2.24 | t=5625ms
04:45:44.105 T2W线程: wav_2.wav | 0.40s audio | 2023.0ms inference | RTF=5.06 | t=7649ms
04:45:44.106 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:45:44.106 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:45:44.177 omni_stop_threads: stop signals sent
04:45:44.177 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=2000.304ms vocoder=322.225ms total=2322.543ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1852.748ms vocoder=383.162ms total=2235.932ms audio=24000
[timing] call=2 tokens=6 final=1 token2mel=1877.882ms vocoder=145.101ms total=2022.995ms audio=9600
Audio generation completed.
llama_perf_context_print: load time = 4900.61 ms
llama_perf_context_print: prompt eval time = 2743.51 ms / 182 tokens ( 15.07 ms per token, 66.34 tokens per second)
llama_perf_context_print: eval time = 512.14 ms / 9 runs ( 56.90 ms per token, 17.57 tokens per second)
llama_perf_context_print: total time = 12459.63 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
@@ -0,0 +1,479 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 30720 MiB free
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 36 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 37/37 layers to GPU
load_tensors: Vulkan0 model buffer size = 4454.74 MiB
load_tensors: CPU_Mapped model buffer size = 333.43 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: Vulkan_Host output buffer size = 0.58 MiB
llama_kv_cache: Vulkan0 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: Vulkan0 compute buffer size = 304.38 MiB
llama_context: Vulkan_Host compute buffer size = 12.01 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 2
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 25673 MiB free
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 0 repeating layers to GPU
load_tensors: offloaded 0/21 layers to GPU
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: Vulkan0 compute buffer size = 30.75 MiB
llama_context: Vulkan_Host compute buffer size = 7.01 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 216 (with bs=512), 1 (with bs=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 Vulkan0 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: Vulkan0 compute buffer size = 100.30 MiB
alloc_compute_meta: CPU compute buffer size = 18.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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: 99
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:40:36.298 === omni_init start
04:40:36.298 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:40:36.298 === omni_init: loading new LLM model
04:40:38.823 === omni_init: loading TTS model
04:40:38.823 TTS model: loading with n_gpu_layers=0
04:40:39.075 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:40:39.075 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:40:39.428 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:40:39.434 TTS: head_code loaded, verifying first few values:
04:40:39.434 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:40:39.434 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:40:39.434 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:40:39.478 TTS: weights loaded successfully
04:40:39.478 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:40:39.486 Projector: loaded successfully
04:40:39.487 === omni_init: loading APM model
04:40:39.707 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:40:40.675 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:40:40.675 Token2Wav: all model files found, initializing session...
04:40:40.675 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:40:40.675 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:40:41.028 Token2Wav: initialized successfully
04:40:41.028 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:40:41.028 Token2Wav: 使用 C++ 实现
04:40:41.028 === omni_init success: ctx_llama = 0000023ef4afe520
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-3-pjyk_c2o\fixture_
Count: 2
04:40:41.028 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:40:41.028 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-3-pjyk_c2o\fixture_0000.wav
04:40:41.396 system prompt ref_audio embedding: n_pos=20
04:40:41.883 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:40:41.883 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:40:41.883 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:40:41.883 n_past = 72
04:40:41.883
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 0.855299 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 586.86 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 604.64 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 604.65 ms by vision ( 604.65 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-3-pjyk_c2o\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
04:40:43.005 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-3-pjyk_c2o\fixture_0001.wav
04:40:43.296 stream_prefill(index=1): user audio embedding: n_pos=31
04:40:43.606
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 1.72064 s
04:40:43.606 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:40:43.606 stream_decode: create tts thread (simplex mode)
04:40:43.606 stream_decode: create t2w thread
04:40:43.606 wait prefill done
04:40:43.606 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:40:43.607 T2W thread (C++) started
<user>
<assistant>04:40:43.612 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:40:43.612 TTS thread started
04:40:43.769 📍 [单工TTS] assistant prompt 完成, n_past=182
04:40:43.769 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:40:44.290 LLM: detected end token, set llm_generation_done=true
04:40:44.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]
04:40:44.290 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:40:44.290 📍 轮次 1 结束,记录边界于 n_past=191
04:40:44.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]
04:40:44.290 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:40:44.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
04:40:44.290 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:40:44.290 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:40:44.291 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:40:44.329 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:40:44.329 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:40:44.329 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:40:44.329 TTS Simplex: first chunk - cleared KV cache
04:40:44.329 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:40:44.382 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:40:44.396 TTS Simplex: prefill completed, n_past_tts=9
04:40:44.396 TTS Simplex: sampler created
04:40:44.396 TTS simplex: is_audio_bos=true (first audio token)
04:40:44.422 TTS Simplex Phase1: token 1/500: rel_id=1487
04:40:44.434 TTS Simplex Phase1: token 2/500: rel_id=4218
04:40:44.445 TTS Simplex Phase1: token 3/500: rel_id=6405
04:40:44.456 TTS Simplex Phase1: token 4/500: rel_id=4218
04:40:44.468 TTS Simplex Phase1: token 5/500: rel_id=4137
04:40:44.692 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:40:44.692 TTS Simplex Phase1: token 25/500: rel_id=2456
04:40:44.692 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:40:44.692 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:40:44.829 TTS Simplex Phase1: EOS token at step 38
04:40:44.829 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:40:44.829 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=46
04:40:44.837 TTS Simplex Phase2: text_eos_embed injected, n_past=47
04:40:44.845 TTS Simplex Phase2: audio_bos injected, n_past=48, starting final generation
04:40:44.991 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:40:45.082 TTS Simplex Phase2: EOS at step 21 (final end)
04:40:45.082 TTS Simplex: chunk 结束,tts_token_buffer 剩余 7 tokens (保留等下一个 chunk)
04:40:45.082 TTS Simplex: is_final_text_chunk=true, flush 剩余 7 tokens 从 tts_token_buffer
04:40:45.082 TTS Simplex: generated 57 audio tokens for chunk 0
04:40:45.082 TTS Simplex: chunk 0 first tokens: [1487 4218 6405 4218 4137 ], last tokens: [4218 4218 4218 4218 3894 ]
04:40:45.082 TTS Simplex: updated tts_n_past_accumulated=69, total_generated_tokens=57
04:40:45.083 TTS: finished processing all chunks
04:40:45.083 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:40:45.083 TTS: sent is_final=true to T2W queue (turn end)
04:40:47.034 🎉 首响时间 (First Audio Response): 3427ms
04:40:47.034 T2W线程: wav_0.wav | 0.84s audio | 2339.9ms inference | RTF=2.79 | t=3427ms
04:40:49.251 T2W线程: wav_1.wav | 1.00s audio | 2217.0ms inference | RTF=2.22 | t=5645ms
04:40:51.302 T2W线程: wav_2.wav | 0.56s audio | 2050.1ms inference | RTF=3.66 | t=7695ms
04:40:51.302 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:40:51.302 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:40:51.335 omni_stop_threads: stop signals sent
04:40:51.335 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=2009.361ms vocoder=330.509ms total=2339.894ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1830.169ms vocoder=386.840ms total=2217.022ms audio=24000
[timing] call=2 tokens=10 final=1 token2mel=1855.374ms vocoder=194.739ms total=2050.124ms audio=13440
Audio generation completed.
llama_perf_context_print: load time = 4822.24 ms
llama_perf_context_print: prompt eval time = 2740.69 ms / 182 tokens ( 15.06 ms per token, 66.41 tokens per second)
llama_perf_context_print: eval time = 517.39 ms / 9 runs ( 57.49 ms per token, 17.39 tokens per second)
llama_perf_context_print: total time = 12388.40 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,479 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 30720 MiB free
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 36 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 37/37 layers to GPU
load_tensors: Vulkan0 model buffer size = 4454.74 MiB
load_tensors: CPU_Mapped model buffer size = 333.43 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: Vulkan_Host output buffer size = 0.58 MiB
llama_kv_cache: Vulkan0 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: Vulkan0 compute buffer size = 304.38 MiB
llama_context: Vulkan_Host compute buffer size = 12.01 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 2
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 25673 MiB free
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 0 repeating layers to GPU
load_tensors: offloaded 0/21 layers to GPU
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: Vulkan0 compute buffer size = 30.75 MiB
llama_context: Vulkan_Host compute buffer size = 7.01 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 216 (with bs=512), 1 (with bs=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 Vulkan0 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: Vulkan0 compute buffer size = 100.30 MiB
alloc_compute_meta: CPU compute buffer size = 18.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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: 99
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:40:52.829 === omni_init start
04:40:52.829 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:40:52.829 === omni_init: loading new LLM model
04:40:55.373 === omni_init: loading TTS model
04:40:55.373 TTS model: loading with n_gpu_layers=0
04:40:55.617 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:40:55.617 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:40:55.975 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:40:55.980 TTS: head_code loaded, verifying first few values:
04:40:55.980 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:40:55.980 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:40:55.980 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:40:56.026 TTS: weights loaded successfully
04:40:56.026 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:40:56.034 Projector: loaded successfully
04:40:56.034 === omni_init: loading APM model
04:40:56.247 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:40:57.093 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:40:57.093 Token2Wav: all model files found, initializing session...
04:40:57.093 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:40:57.093 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:40:57.435 Token2Wav: initialized successfully
04:40:57.435 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:40:57.435 Token2Wav: 使用 C++ 实现
04:40:57.435 === omni_init success: ctx_llama = 0000017f1a1ce520
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-4-cgr0os0r\fixture_
Count: 2
04:40:57.436 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:40:57.436 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-4-cgr0os0r\fixture_0000.wav
04:40:57.781 system prompt ref_audio embedding: n_pos=20
04:40:58.273 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:40:58.273 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:40:58.273 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:40:58.273 n_past = 72
04:40:58.273
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 0.837163 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 594.38 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 613.22 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 613.23 ms by vision ( 613.23 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-4-cgr0os0r\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
04:40:59.410 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-4-cgr0os0r\fixture_0001.wav
04:40:59.683 stream_prefill(index=1): user audio embedding: n_pos=31
04:40:59.996
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 1.72087 s
04:40:59.996 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:40:59.996 stream_decode: create tts thread (simplex mode)
04:40:59.996 stream_decode: create t2w thread
04:40:59.996 wait prefill done
04:40:59.996 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:40:59.996 T2W thread (C++) started
<user>
<assistant>04:40:59.999 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:41:00.000 TTS thread started
04:41:00.155 📍 [单工TTS] assistant prompt 完成, n_past=182
04:41:00.156 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:41:00.669 LLM: detected end token, set llm_generation_done=true
04:41:00.669 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]
04:41:00.669 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:41:00.669 📍 轮次 1 结束,记录边界于 n_past=191
04:41:00.669 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]
04:41:00.669 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:41:00.669 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
04:41:00.669 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:41:00.669 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:41:00.670 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:41:00.709 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:41:00.709 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:41:00.709 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:41:00.709 TTS Simplex: first chunk - cleared KV cache
04:41:00.709 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:41:00.763 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:41:00.778 TTS Simplex: prefill completed, n_past_tts=9
04:41:00.778 TTS Simplex: sampler created
04:41:00.778 TTS simplex: is_audio_bos=true (first audio token)
04:41:00.807 TTS Simplex Phase1: token 1/500: rel_id=770
04:41:00.817 TTS Simplex Phase1: token 2/500: rel_id=4218
04:41:00.828 TTS Simplex Phase1: token 3/500: rel_id=4218
04:41:00.839 TTS Simplex Phase1: token 4/500: rel_id=4218
04:41:00.849 TTS Simplex Phase1: token 5/500: rel_id=4218
04:41:01.068 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:41:01.068 TTS Simplex Phase1: token 25/500: rel_id=35
04:41:01.068 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:41:01.068 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:41:01.093 TTS Simplex Phase1: EOS token at step 28
04:41:01.093 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:41:01.093 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=36
04:41:01.101 TTS Simplex Phase2: text_eos_embed injected, n_past=37
04:41:01.109 TTS Simplex Phase2: audio_bos injected, n_past=38, starting final generation
04:41:01.372 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:41:01.438 TTS Simplex Phase2: EOS at step 29 (final end)
04:41:01.438 TTS Simplex: chunk 结束,tts_token_buffer 剩余 5 tokens (保留等下一个 chunk)
04:41:01.438 TTS Simplex: is_final_text_chunk=true, flush 剩余 5 tokens 从 tts_token_buffer
04:41:01.438 TTS Simplex: generated 55 audio tokens for chunk 0
04:41:01.438 TTS Simplex: chunk 0 first tokens: [770 4218 4218 4218 4218 ], last tokens: [4570 4786 8 769 789 ]
04:41:01.438 TTS Simplex: updated tts_n_past_accumulated=67, total_generated_tokens=55
04:41:01.439 TTS: finished processing all chunks
04:41:01.439 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:41:01.439 TTS: sent is_final=true to T2W queue (turn end)
04:41:03.418 🎉 首响时间 (First Audio Response): 3422ms
04:41:03.418 T2W线程: wav_0.wav | 0.84s audio | 2349.3ms inference | RTF=2.80 | t=3422ms
04:41:05.668 T2W线程: wav_1.wav | 1.00s audio | 2249.2ms inference | RTF=2.25 | t=5672ms
04:41:07.718 T2W线程: wav_2.wav | 0.48s audio | 2049.4ms inference | RTF=4.27 | t=7722ms
04:41:07.719 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:41:07.719 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:41:07.730 omni_stop_threads: stop signals sent
04:41:07.730 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=2019.406ms vocoder=329.888ms total=2349.318ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1864.032ms vocoder=385.171ms total=2249.217ms audio=24000
[timing] call=2 tokens=8 final=1 token2mel=1881.624ms vocoder=167.791ms total=2049.425ms audio=11520
Audio generation completed.
llama_perf_context_print: load time = 4635.61 ms
llama_perf_context_print: prompt eval time = 2718.86 ms / 182 tokens ( 14.94 ms per token, 66.94 tokens per second)
llama_perf_context_print: eval time = 510.22 ms / 9 runs ( 56.69 ms per token, 17.64 tokens per second)
llama_perf_context_print: total time = 12210.14 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,479 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 30720 MiB free
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 36 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 37/37 layers to GPU
load_tensors: Vulkan0 model buffer size = 4454.74 MiB
load_tensors: CPU_Mapped model buffer size = 333.43 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: Vulkan_Host output buffer size = 0.58 MiB
llama_kv_cache: Vulkan0 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: Vulkan0 compute buffer size = 304.38 MiB
llama_context: Vulkan_Host compute buffer size = 12.01 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 2
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 25673 MiB free
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 0 repeating layers to GPU
load_tensors: offloaded 0/21 layers to GPU
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: Vulkan0 compute buffer size = 30.75 MiB
llama_context: Vulkan_Host compute buffer size = 7.01 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 216 (with bs=512), 1 (with bs=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 Vulkan0 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: Vulkan0 compute buffer size = 100.30 MiB
alloc_compute_meta: CPU compute buffer size = 18.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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: 99
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:41:09.140 === omni_init start
04:41:09.140 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:41:09.140 === omni_init: loading new LLM model
04:41:11.708 === omni_init: loading TTS model
04:41:11.708 TTS model: loading with n_gpu_layers=0
04:41:11.971 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:41:11.971 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:41:12.356 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:41:12.360 TTS: head_code loaded, verifying first few values:
04:41:12.360 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:41:12.360 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:41:12.360 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:41:12.404 TTS: weights loaded successfully
04:41:12.404 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:41:12.411 Projector: loaded successfully
04:41:12.412 === omni_init: loading APM model
04:41:12.631 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:41:13.418 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:41:13.419 Token2Wav: all model files found, initializing session...
04:41:13.419 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:41:13.419 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:41:13.764 Token2Wav: initialized successfully
04:41:13.764 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:41:13.764 Token2Wav: 使用 C++ 实现
04:41:13.764 === omni_init success: ctx_llama = 000001ea9df7e540
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-5-bw23q87p\fixture_
Count: 2
04:41:13.764 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:41:13.764 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-5-bw23q87p\fixture_0000.wav
04:41:14.118 system prompt ref_audio embedding: n_pos=20
04:41:14.612 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:41:14.612 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:41:14.612 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:41:14.612 n_past = 72
04:41:14.612
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 0.847623 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 585.33 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 603.29 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 603.30 ms by vision ( 603.30 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-5-bw23q87p\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
04:41:15.732 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-5-bw23q87p\fixture_0001.wav
04:41:16.030 stream_prefill(index=1): user audio embedding: n_pos=31
04:41:16.343
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 1.72975 s
04:41:16.343 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:41:16.343 stream_decode: create tts thread (simplex mode)
04:41:16.343 stream_decode: create t2w thread
04:41:16.343 wait prefill done
04:41:16.343 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:41:16.344 T2W thread (C++) started
<user>
<assistant>04:41:16.347 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:41:16.347 TTS thread started
04:41:16.508 📍 [单工TTS] assistant prompt 完成, n_past=182
04:41:16.508 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:41:17.029 LLM: detected end token, set llm_generation_done=true
04:41:17.030 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]
04:41:17.030 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:41:17.030 📍 轮次 1 结束,记录边界于 n_past=191
04:41:17.030 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]
04:41:17.030 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:41:17.030 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
04:41:17.030 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:41:17.030 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:41:17.031 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:41:17.064 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:41:17.064 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:41:17.064 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:41:17.064 TTS Simplex: first chunk - cleared KV cache
04:41:17.064 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:41:17.123 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:41:17.131 TTS Simplex: prefill completed, n_past_tts=9
04:41:17.131 TTS Simplex: sampler created
04:41:17.131 TTS simplex: is_audio_bos=true (first audio token)
04:41:17.157 TTS Simplex Phase1: token 1/500: rel_id=1490
04:41:17.169 TTS Simplex Phase1: token 2/500: rel_id=4299
04:41:17.180 TTS Simplex Phase1: token 3/500: rel_id=6486
04:41:17.191 TTS Simplex Phase1: token 4/500: rel_id=6486
04:41:17.202 TTS Simplex Phase1: token 5/500: rel_id=6486
04:41:17.421 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:41:17.421 TTS Simplex Phase1: token 25/500: rel_id=3018
04:41:17.421 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:41:17.421 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:41:17.649 TTS Simplex Phase1: EOS token at step 46
04:41:17.649 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:41:17.649 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=54
04:41:17.656 TTS Simplex Phase2: text_eos_embed injected, n_past=55
04:41:17.664 TTS Simplex Phase2: audio_bos injected, n_past=56, starting final generation
04:41:17.719 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:41:17.940 TTS Simplex Phase2: EOS at step 25 (final end)
04:41:17.940 TTS Simplex: chunk 结束,tts_token_buffer 剩余 19 tokens (保留等下一个 chunk)
04:41:17.940 TTS Simplex: is_final_text_chunk=true, flush 剩余 19 tokens 从 tts_token_buffer
04:41:17.940 TTS Simplex: generated 69 audio tokens for chunk 0
04:41:17.940 TTS Simplex: chunk 0 first tokens: [1490 4299 6486 6486 6486 ], last tokens: [6486 6486 6405 4299 6162 ]
04:41:17.940 TTS Simplex: updated tts_n_past_accumulated=81, total_generated_tokens=69
04:41:17.941 TTS: finished processing all chunks
04:41:17.941 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:41:17.941 TTS: sent is_final=true to T2W queue (turn end)
04:41:19.783 🎉 首响时间 (First Audio Response): 3439ms
04:41:19.783 T2W线程: wav_0.wav | 0.84s audio | 2361.0ms inference | RTF=2.81 | t=3439ms
04:41:22.012 T2W线程: wav_1.wav | 1.00s audio | 2228.3ms inference | RTF=2.23 | t=5668ms
04:41:24.259 T2W线程: wav_2.wav | 1.04s audio | 2246.2ms inference | RTF=2.16 | t=7915ms
04:41:24.259 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:41:24.259 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:41:24.306 omni_stop_threads: stop signals sent
04:41:24.306 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=2026.902ms vocoder=334.007ms total=2360.931ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1847.798ms vocoder=380.501ms total=2228.320ms audio=24000
[timing] call=2 tokens=22 final=1 token2mel=1902.331ms vocoder=343.868ms total=2246.210ms audio=24960
Audio generation completed.
llama_perf_context_print: load time = 4671.97 ms
llama_perf_context_print: prompt eval time = 2743.18 ms / 182 tokens ( 15.07 ms per token, 66.35 tokens per second)
llama_perf_context_print: eval time = 519.19 ms / 9 runs ( 57.69 ms per token, 17.33 tokens per second)
llama_perf_context_print: total time = 12469.76 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,479 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 30720 MiB free
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 36 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 37/37 layers to GPU
load_tensors: Vulkan0 model buffer size = 4454.74 MiB
load_tensors: CPU_Mapped model buffer size = 333.43 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: Vulkan_Host output buffer size = 0.58 MiB
llama_kv_cache: Vulkan0 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: Vulkan0 compute buffer size = 304.38 MiB
llama_context: Vulkan_Host compute buffer size = 12.01 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 2
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 25673 MiB free
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 0 repeating layers to GPU
load_tensors: offloaded 0/21 layers to GPU
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: Vulkan0 compute buffer size = 30.75 MiB
llama_context: Vulkan_Host compute buffer size = 7.01 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 216 (with bs=512), 1 (with bs=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 Vulkan0 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: Vulkan0 compute buffer size = 100.30 MiB
alloc_compute_meta: CPU compute buffer size = 18.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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: 99
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:41:25.509 === omni_init start
04:41:25.510 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:41:25.510 === omni_init: loading new LLM model
04:41:28.047 === omni_init: loading TTS model
04:41:28.047 TTS model: loading with n_gpu_layers=0
04:41:28.305 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:41:28.305 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:41:28.675 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:41:28.680 TTS: head_code loaded, verifying first few values:
04:41:28.680 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:41:28.680 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:41:28.681 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:41:28.726 TTS: weights loaded successfully
04:41:28.726 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:41:28.734 Projector: loaded successfully
04:41:28.734 === omni_init: loading APM model
04:41:28.960 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:41:29.799 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:41:29.799 Token2Wav: all model files found, initializing session...
04:41:29.799 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:41:29.799 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:41:30.174 Token2Wav: initialized successfully
04:41:30.174 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:41:30.174 Token2Wav: 使用 C++ 实现
04:41:30.174 === omni_init success: ctx_llama = 00000180e470e520
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-6-zsgyps0a\fixture_
Count: 2
04:41:30.175 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:41:30.175 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-6-zsgyps0a\fixture_0000.wav
04:41:30.528 system prompt ref_audio embedding: n_pos=20
04:41:31.021 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:41:31.021 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:41:31.021 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:41:31.021 n_past = 72
04:41:31.021
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 0.846559 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 576.04 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 593.80 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 593.81 ms by vision ( 593.81 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-6-zsgyps0a\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
04:41:32.131 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-6-zsgyps0a\fixture_0001.wav
04:41:32.435 stream_prefill(index=1): user audio embedding: n_pos=31
04:41:32.743
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 1.72045 s
04:41:32.743 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:41:32.743 stream_decode: create tts thread (simplex mode)
04:41:32.743 stream_decode: create t2w thread
04:41:32.743 wait prefill done
04:41:32.743 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:41:32.743 T2W thread (C++) started
<user>
<assistant>04:41:32.747 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:41:32.748 TTS thread started
04:41:32.904 📍 [单工TTS] assistant prompt 完成, n_past=182
04:41:32.904 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:41:33.418 LLM: detected end token, set llm_generation_done=true
04:41:33.418 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]
04:41:33.418 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:41:33.418 📍 轮次 1 结束,记录边界于 n_past=191
04:41:33.418 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]
04:41:33.418 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:41:33.418 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
04:41:33.418 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:41:33.418 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:41:33.419 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:41:33.458 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:41:33.458 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:41:33.458 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:41:33.458 TTS Simplex: first chunk - cleared KV cache
04:41:33.458 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:41:33.512 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:41:33.526 TTS Simplex: prefill completed, n_past_tts=9
04:41:33.526 TTS Simplex: sampler created
04:41:33.526 TTS simplex: is_audio_bos=true (first audio token)
04:41:33.551 TTS Simplex Phase1: token 1/500: rel_id=1496
04:41:33.562 TTS Simplex Phase1: token 2/500: rel_id=4299
04:41:33.573 TTS Simplex Phase1: token 3/500: rel_id=6486
04:41:33.583 TTS Simplex Phase1: token 4/500: rel_id=4299
04:41:33.596 TTS Simplex Phase1: token 5/500: rel_id=4299
04:41:33.817 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:41:33.817 TTS Simplex Phase1: token 25/500: rel_id=3669
04:41:33.817 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:41:33.818 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:41:33.976 TTS Simplex Phase1: EOS token at step 40
04:41:33.976 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:41:33.976 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=48
04:41:33.984 TTS Simplex Phase2: text_eos_embed injected, n_past=49
04:41:33.993 TTS Simplex Phase2: audio_bos injected, n_past=50, starting final generation
04:41:34.113 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:41:34.247 TTS Simplex Phase2: EOS at step 23 (final end)
04:41:34.247 TTS Simplex: chunk 结束,tts_token_buffer 剩余 11 tokens (保留等下一个 chunk)
04:41:34.247 TTS Simplex: is_final_text_chunk=true, flush 剩余 11 tokens 从 tts_token_buffer
04:41:34.247 TTS Simplex: generated 61 audio tokens for chunk 0
04:41:34.247 TTS Simplex: chunk 0 first tokens: [1496 4299 6486 4299 4299 ], last tokens: [4299 6486 6486 6486 6405 ]
04:41:34.247 TTS Simplex: updated tts_n_past_accumulated=73, total_generated_tokens=61
04:41:34.249 TTS: finished processing all chunks
04:41:34.249 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:41:34.249 TTS: sent is_final=true to T2W queue (turn end)
04:41:36.153 🎉 首响时间 (First Audio Response): 3410ms
04:41:36.153 T2W线程: wav_0.wav | 0.84s audio | 2333.9ms inference | RTF=2.78 | t=3410ms
04:41:38.379 T2W线程: wav_1.wav | 1.00s audio | 2225.7ms inference | RTF=2.23 | t=5636ms
04:41:40.487 T2W线程: wav_2.wav | 0.72s audio | 2106.8ms inference | RTF=2.93 | t=7744ms
04:41:40.487 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:41:40.487 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:41:40.490 omni_stop_threads: stop signals sent
tts thread end
04:41:40.498 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=2010.658ms vocoder=323.148ms total=2333.827ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1844.441ms vocoder=381.269ms total=2225.721ms audio=24000
[timing] call=2 tokens=14 final=1 token2mel=1867.693ms vocoder=239.087ms total=2106.791ms audio=17280
Audio generation completed.
llama_perf_context_print: load time = 4721.01 ms
llama_perf_context_print: prompt eval time = 2728.14 ms / 182 tokens ( 14.99 ms per token, 66.71 tokens per second)
llama_perf_context_print: eval time = 511.22 ms / 9 runs ( 56.80 ms per token, 17.60 tokens per second)
llama_perf_context_print: total time = 12314.33 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
t2w thread end
@@ -0,0 +1,479 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 30720 MiB free
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 36 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 37/37 layers to GPU
load_tensors: Vulkan0 model buffer size = 4454.74 MiB
load_tensors: CPU_Mapped model buffer size = 333.43 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: Vulkan_Host output buffer size = 0.58 MiB
llama_kv_cache: Vulkan0 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: Vulkan0 compute buffer size = 304.38 MiB
llama_context: Vulkan_Host compute buffer size = 12.01 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 2
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 25673 MiB free
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 0 repeating layers to GPU
load_tensors: offloaded 0/21 layers to GPU
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: Vulkan0 compute buffer size = 30.75 MiB
llama_context: Vulkan_Host compute buffer size = 7.01 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 216 (with bs=512), 1 (with bs=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 Vulkan0 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: Vulkan0 compute buffer size = 100.30 MiB
alloc_compute_meta: CPU compute buffer size = 18.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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: 99
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:41:41.837 === omni_init start
04:41:41.838 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:41:41.838 === omni_init: loading new LLM model
04:41:44.385 === omni_init: loading TTS model
04:41:44.385 TTS model: loading with n_gpu_layers=0
04:41:44.632 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:41:44.632 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:41:44.986 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:41:44.991 TTS: head_code loaded, verifying first few values:
04:41:44.991 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:41:44.991 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:41:44.991 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:41:45.034 TTS: weights loaded successfully
04:41:45.035 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:41:45.041 Projector: loaded successfully
04:41:45.042 === omni_init: loading APM model
04:41:45.255 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:41:46.139 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:41:46.139 Token2Wav: all model files found, initializing session...
04:41:46.139 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:41:46.139 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:41:46.514 Token2Wav: initialized successfully
04:41:46.514 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:41:46.514 Token2Wav: 使用 C++ 实现
04:41:46.514 === omni_init success: ctx_llama = 000001ecbe7be520
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-7-ij2fefqo\fixture_
Count: 2
04:41:46.515 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:41:46.515 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-7-ij2fefqo\fixture_0000.wav
04:41:46.866 system prompt ref_audio embedding: n_pos=20
04:41:47.354 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:41:47.354 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:41:47.354 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:41:47.354 n_past = 72
04:41:47.354
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 0.83945 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 581.35 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 600.42 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 600.43 ms by vision ( 600.43 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-7-ij2fefqo\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
04:41:48.476 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-7-ij2fefqo\fixture_0001.wav
04:41:48.808 stream_prefill(index=1): user audio embedding: n_pos=31
04:41:49.113
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 1.75704 s
04:41:49.113 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:41:49.114 stream_decode: create tts thread (simplex mode)
04:41:49.114 stream_decode: create t2w thread
04:41:49.114 wait prefill done
04:41:49.114 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:41:49.114 T2W thread (C++) started
<user>
<assistant>04:41:49.117 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:41:49.118 TTS thread started
04:41:49.274 📍 [单工TTS] assistant prompt 完成, n_past=182
04:41:49.274 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:41:49.791 LLM: detected end token, set llm_generation_done=true
04:41:49.791 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]
04:41:49.791 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:41:49.791 📍 轮次 1 结束,记录边界于 n_past=191
04:41:49.791 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]
04:41:49.791 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:41:49.791 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
04:41:49.791 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:41:49.791 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:41:49.792 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:41:49.831 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:41:49.831 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:41:49.832 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:41:49.832 TTS Simplex: first chunk - cleared KV cache
04:41:49.832 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:41:49.886 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:41:49.897 TTS Simplex: prefill completed, n_past_tts=9
04:41:49.897 TTS Simplex: sampler created
04:41:49.897 TTS simplex: is_audio_bos=true (first audio token)
04:41:49.922 TTS Simplex Phase1: token 1/500: rel_id=1487
04:41:49.934 TTS Simplex Phase1: token 2/500: rel_id=4218
04:41:49.945 TTS Simplex Phase1: token 3/500: rel_id=4299
04:41:49.956 TTS Simplex Phase1: token 4/500: rel_id=6405
04:41:49.967 TTS Simplex Phase1: token 5/500: rel_id=6405
04:41:50.194 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:41:50.194 TTS Simplex Phase1: token 25/500: rel_id=341
04:41:50.194 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:41:50.194 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:41:50.411 TTS Simplex Phase1: EOS token at step 45
04:41:50.411 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:41:50.411 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=53
04:41:50.419 TTS Simplex Phase2: text_eos_embed injected, n_past=54
04:41:50.428 TTS Simplex Phase2: audio_bos injected, n_past=55, starting final generation
04:41:50.495 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:41:50.630 TTS Simplex Phase2: EOS at step 18 (final end)
04:41:50.630 TTS Simplex: chunk 结束,tts_token_buffer 剩余 11 tokens (保留等下一个 chunk)
04:41:50.630 TTS Simplex: is_final_text_chunk=true, flush 剩余 11 tokens 从 tts_token_buffer
04:41:50.630 TTS Simplex: generated 61 audio tokens for chunk 0
04:41:50.630 TTS Simplex: chunk 0 first tokens: [1487 4218 4299 6405 6405 ], last tokens: [2922 1461 4218 4299 3894 ]
04:41:50.630 TTS Simplex: updated tts_n_past_accumulated=73, total_generated_tokens=61
04:41:50.631 TTS: finished processing all chunks
04:41:50.631 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:41:50.631 TTS: sent is_final=true to T2W queue (turn end)
04:41:52.536 🎉 首响时间 (First Audio Response): 3422ms
04:41:52.536 T2W线程: wav_0.wav | 0.84s audio | 2340.3ms inference | RTF=2.79 | t=3422ms
04:41:54.766 T2W线程: wav_1.wav | 1.00s audio | 2229.9ms inference | RTF=2.23 | t=5652ms
04:41:56.877 T2W线程: wav_2.wav | 0.72s audio | 2110.1ms inference | RTF=2.93 | t=7763ms
04:41:56.877 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:41:56.877 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:41:56.960 omni_stop_threads: stop signals sent
04:41:56.960 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=2009.159ms vocoder=331.075ms total=2340.261ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1847.349ms vocoder=382.561ms total=2229.923ms audio=24000
[timing] call=2 tokens=14 final=1 token2mel=1871.498ms vocoder=238.589ms total=2110.105ms audio=17280
Audio generation completed.
llama_perf_context_print: load time = 4748.34 ms
llama_perf_context_print: prompt eval time = 2758.81 ms / 182 tokens ( 15.16 ms per token, 65.97 tokens per second)
llama_perf_context_print: eval time = 513.07 ms / 9 runs ( 57.01 ms per token, 17.54 tokens per second)
llama_perf_context_print: total time = 12433.90 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,479 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 30720 MiB free
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 36 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 37/37 layers to GPU
load_tensors: Vulkan0 model buffer size = 4454.74 MiB
load_tensors: CPU_Mapped model buffer size = 333.43 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: Vulkan_Host output buffer size = 0.58 MiB
llama_kv_cache: Vulkan0 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: Vulkan0 compute buffer size = 304.38 MiB
llama_context: Vulkan_Host compute buffer size = 12.01 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 2
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 25673 MiB free
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 0 repeating layers to GPU
load_tensors: offloaded 0/21 layers to GPU
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: Vulkan0 compute buffer size = 30.75 MiB
llama_context: Vulkan_Host compute buffer size = 7.01 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 216 (with bs=512), 1 (with bs=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 Vulkan0 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: Vulkan0 compute buffer size = 100.30 MiB
alloc_compute_meta: CPU compute buffer size = 18.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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: 99
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:41:58.185 === omni_init start
04:41:58.185 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:41:58.185 === omni_init: loading new LLM model
04:42:00.722 === omni_init: loading TTS model
04:42:00.722 TTS model: loading with n_gpu_layers=0
04:42:00.975 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:42:00.975 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:42:01.336 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:42:01.341 TTS: head_code loaded, verifying first few values:
04:42:01.341 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:42:01.341 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:42:01.341 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:42:01.384 TTS: weights loaded successfully
04:42:01.384 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:42:01.392 Projector: loaded successfully
04:42:01.392 === omni_init: loading APM model
04:42:01.610 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:42:02.451 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:42:02.451 Token2Wav: all model files found, initializing session...
04:42:02.451 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:42:02.451 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:42:02.799 Token2Wav: initialized successfully
04:42:02.799 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:42:02.799 Token2Wav: 使用 C++ 实现
04:42:02.799 === omni_init success: ctx_llama = 000002201097e520
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-8-55dmn6tg\fixture_
Count: 2
04:42:02.799 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:42:02.799 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-8-55dmn6tg\fixture_0000.wav
04:42:03.143 system prompt ref_audio embedding: n_pos=20
04:42:03.641 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:42:03.641 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:42:03.641 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:42:03.641 n_past = 72
04:42:03.641
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 0.841898 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 581.12 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 599.07 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 599.08 ms by vision ( 599.08 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-8-55dmn6tg\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
04:42:04.763 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-8-55dmn6tg\fixture_0001.wav
04:42:05.063 stream_prefill(index=1): user audio embedding: n_pos=31
04:42:05.382
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 1.73907 s
04:42:05.382 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:42:05.382 stream_decode: create tts thread (simplex mode)
04:42:05.382 stream_decode: create t2w thread
04:42:05.382 wait prefill done
04:42:05.382 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:42:05.382 T2W thread (C++) started
<user>
<assistant>04:42:05.385 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:42:05.385 TTS thread started
04:42:05.540 📍 [单工TTS] assistant prompt 完成, n_past=182
04:42:05.540 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:42:06.053 LLM: detected end token, set llm_generation_done=true
04:42:06.053 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]
04:42:06.053 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:42:06.053 📍 轮次 1 结束,记录边界于 n_past=191
04:42:06.053 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]
04:42:06.053 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:42:06.053 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
04:42:06.053 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:42:06.053 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:42:06.054 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:42:06.093 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:42:06.093 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:42:06.093 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:42:06.093 TTS Simplex: first chunk - cleared KV cache
04:42:06.093 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:42:06.145 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:42:06.157 TTS Simplex: prefill completed, n_past_tts=9
04:42:06.158 TTS Simplex: sampler created
04:42:06.158 TTS simplex: is_audio_bos=true (first audio token)
04:42:06.185 TTS Simplex Phase1: token 1/500: rel_id=1496
04:42:06.196 TTS Simplex Phase1: token 2/500: rel_id=4137
04:42:06.208 TTS Simplex Phase1: token 3/500: rel_id=4218
04:42:06.218 TTS Simplex Phase1: token 4/500: rel_id=4218
04:42:06.230 TTS Simplex Phase1: token 5/500: rel_id=4218
04:42:06.455 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:42:06.455 TTS Simplex Phase1: token 25/500: rel_id=76
04:42:06.455 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:42:06.455 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:42:06.596 TTS Simplex Phase1: EOS token at step 38
04:42:06.596 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:42:06.596 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=46
04:42:06.604 TTS Simplex Phase2: text_eos_embed injected, n_past=47
04:42:06.612 TTS Simplex Phase2: audio_bos injected, n_past=48, starting final generation
04:42:06.758 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:42:06.857 TTS Simplex Phase2: EOS at step 22 (final end)
04:42:06.857 TTS Simplex: chunk 结束,tts_token_buffer 剩余 8 tokens (保留等下一个 chunk)
04:42:06.857 TTS Simplex: is_final_text_chunk=true, flush 剩余 8 tokens 从 tts_token_buffer
04:42:06.857 TTS Simplex: generated 58 audio tokens for chunk 0
04:42:06.857 TTS Simplex: chunk 0 first tokens: [1496 4137 4218 4218 4218 ], last tokens: [4218 4218 4218 4218 4137 ]
04:42:06.857 TTS Simplex: updated tts_n_past_accumulated=70, total_generated_tokens=58
04:42:06.858 TTS: finished processing all chunks
04:42:06.858 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:42:06.858 TTS: sent is_final=true to T2W queue (turn end)
04:42:08.807 🎉 首响时间 (First Audio Response): 3424ms
04:42:08.807 T2W线程: wav_0.wav | 0.84s audio | 2349.3ms inference | RTF=2.80 | t=3424ms
04:42:11.044 T2W线程: wav_1.wav | 1.00s audio | 2236.8ms inference | RTF=2.24 | t=5662ms
04:42:13.138 T2W线程: wav_2.wav | 0.60s audio | 2093.5ms inference | RTF=3.49 | t=7756ms
04:42:13.139 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:42:13.139 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:42:13.211 omni_stop_threads: stop signals sent
04:42:13.211 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=2019.131ms vocoder=330.166ms total=2349.314ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1851.666ms vocoder=385.109ms total=2236.785ms audio=24000
[timing] call=2 tokens=11 final=1 token2mel=1885.004ms vocoder=208.503ms total=2093.515ms audio=14400
Audio generation completed.
llama_perf_context_print: load time = 4689.57 ms
llama_perf_context_print: prompt eval time = 2740.50 ms / 182 tokens ( 15.06 ms per token, 66.41 tokens per second)
llama_perf_context_print: eval time = 510.45 ms / 9 runs ( 56.72 ms per token, 17.63 tokens per second)
llama_perf_context_print: total time = 12359.99 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,476 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 30720 MiB free
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 36 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 37/37 layers to GPU
load_tensors: Vulkan0 model buffer size = 4454.74 MiB
load_tensors: CPU_Mapped model buffer size = 333.43 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: Vulkan_Host output buffer size = 0.58 MiB
llama_kv_cache: Vulkan0 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: Vulkan0 compute buffer size = 304.38 MiB
llama_context: Vulkan_Host compute buffer size = 12.01 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 2
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 25673 MiB free
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 0 repeating layers to GPU
load_tensors: offloaded 0/21 layers to GPU
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: Vulkan0 compute buffer size = 30.75 MiB
llama_context: Vulkan_Host compute buffer size = 7.01 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 216 (with bs=512), 1 (with bs=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 Vulkan0 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: Vulkan0 compute buffer size = 100.30 MiB
alloc_compute_meta: CPU compute buffer size = 18.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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: 99
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:42:14.469 === omni_init start
04:42:14.470 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:42:14.470 === omni_init: loading new LLM model
04:42:17.006 === omni_init: loading TTS model
04:42:17.006 TTS model: loading with n_gpu_layers=0
04:42:17.255 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:42:17.255 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:42:17.618 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:42:17.623 TTS: head_code loaded, verifying first few values:
04:42:17.623 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:42:17.623 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:42:17.623 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:42:17.668 TTS: weights loaded successfully
04:42:17.668 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:42:17.676 Projector: loaded successfully
04:42:17.676 === omni_init: loading APM model
04:42:17.902 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:42:18.719 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:42:18.719 Token2Wav: all model files found, initializing session...
04:42:18.719 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:42:18.720 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:42:19.060 Token2Wav: initialized successfully
04:42:19.060 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:42:19.060 Token2Wav: 使用 C++ 实现
04:42:19.060 === omni_init success: ctx_llama = 000002a16f95e520
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-9-n3_88zhm\fixture_
Count: 2
04:42:19.060 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:42:19.060 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-9-n3_88zhm\fixture_0000.wav
04:42:19.404 system prompt ref_audio embedding: n_pos=20
04:42:19.904 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:42:19.904 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:42:19.904 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:42:19.904 n_past = 72
04:42:19.904
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 0.843519 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 583.13 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 600.85 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 600.85 ms by vision ( 600.85 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-9-n3_88zhm\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
04:42:21.024 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_profile20_work\omni-minicpmo-9-n3_88zhm\fixture_0001.wav
04:42:21.323 stream_prefill(index=1): user audio embedding: n_pos=31
04:42:21.637
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 1.73202 s
04:42:21.637 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:42:21.638 stream_decode: create tts thread (simplex mode)
04:42:21.638 stream_decode: create t2w thread
04:42:21.638 wait prefill done
04:42:21.638 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:42:21.638 T2W thread (C++) started
<user>
<assistant>04:42:21.642 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:42:21.643 TTS thread started
04:42:21.802 📍 [单工TTS] assistant prompt 完成, n_past=182
04:42:21.802 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:42:22.322 LLM: detected end token, set llm_generation_done=true
04:42:22.322 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]
04:42:22.322 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:42:22.322 📍 轮次 1 结束,记录边界于 n_past=191
04:42:22.322 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]
04:42:22.322 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:42:22.322 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
04:42:22.322 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:42:22.322 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:42:22.323 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:42:22.362 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:42:22.362 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:42:22.362 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:42:22.362 TTS Simplex: first chunk - cleared KV cache
04:42:22.362 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:42:22.417 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:42:22.429 TTS Simplex: prefill completed, n_past_tts=9
04:42:22.429 TTS Simplex: sampler created
04:42:22.429 TTS simplex: is_audio_bos=true (first audio token)
04:42:22.455 TTS Simplex Phase1: token 1/500: rel_id=1496
04:42:22.466 TTS Simplex Phase1: token 2/500: rel_id=1950
04:42:22.477 TTS Simplex Phase1: token 3/500: rel_id=4137
04:42:22.489 TTS Simplex Phase1: token 4/500: rel_id=4218
04:42:22.500 TTS Simplex Phase1: token 5/500: rel_id=4218
04:42:22.722 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:42:22.722 TTS Simplex Phase1: token 25/500: rel_id=2014
04:42:22.722 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:42:22.722 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:42:22.824 TTS Simplex Phase1: EOS token at step 35
04:42:22.824 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:42:22.824 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=43
04:42:22.833 TTS Simplex Phase2: text_eos_embed injected, n_past=44
04:42:22.840 TTS Simplex Phase2: audio_bos injected, n_past=45, starting final generation
04:42:23.014 TTS Simplex Phase2: EOS at step 16 (final end)
04:42:23.014 TTS Simplex: chunk 结束,tts_token_buffer 剩余 24 tokens (保留等下一个 chunk)
04:42:23.014 TTS Simplex: is_final_text_chunk=true, flush 剩余 24 tokens 从 tts_token_buffer
04:42:23.014 TTS Simplex: generated 49 audio tokens for chunk 0
04:42:23.014 TTS Simplex: chunk 0 first tokens: [1496 1950 4137 4218 4218 ], last tokens: [27 1461 4218 4218 4137 ]
04:42:23.014 TTS Simplex: updated tts_n_past_accumulated=61, total_generated_tokens=49
04:42:23.024 TTS: finished processing all chunks
04:42:23.024 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:42:23.024 TTS: sent is_final=true to T2W queue (turn end)
04:42:25.032 🎉 首响时间 (First Audio Response): 3394ms
04:42:25.032 T2W线程: wav_0.wav | 0.84s audio | 2309.0ms inference | RTF=2.75 | t=3394ms
04:42:27.310 T2W线程: wav_1.wav | 1.24s audio | 2276.8ms inference | RTF=1.84 | t=5672ms
04:42:27.310 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=1)
04:42:27.310 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:04:42:42:2727..376376 omni_stop_threads: stop signals sent
T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=1976.272ms vocoder=332.657ms total=2308.947ms audio=20160
[timing] call=1 tokens=27 final=1 token2mel=1872.795ms vocoder=403.997ms total=2276.803ms audio=29760
Audio generation completed.
llama_perf_context_print: load time = 4672.34 ms
llama_perf_context_print: prompt eval time = 2740.67 ms / 182 tokens ( 15.06 ms per token, 66.41 tokens per second)
llama_perf_context_print: eval time = 517.92 ms / 9 runs ( 57.55 ms per token, 17.38 tokens per second)
llama_perf_context_print: total time = 10246.41 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,479 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 30720 MiB free
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 36 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 37/37 layers to GPU
load_tensors: Vulkan0 model buffer size = 4454.74 MiB
load_tensors: CPU_Mapped model buffer size = 333.43 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: Vulkan_Host output buffer size = 0.58 MiB
llama_kv_cache: Vulkan0 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: Vulkan0 compute buffer size = 304.38 MiB
llama_context: Vulkan_Host compute buffer size = 12.01 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 2
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 25673 MiB free
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\minicpmo_local_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: offloading 0 repeating layers to GPU
load_tensors: offloaded 0/21 layers to GPU
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: Vulkan0 compute buffer size = 30.75 MiB
llama_context: Vulkan_Host compute buffer size = 7.01 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 216 (with bs=512), 1 (with bs=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 Vulkan0 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: Vulkan0 compute buffer size = 100.30 MiB
alloc_compute_meta: CPU compute buffer size = 18.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: C:\Users\zhout\w2\minicpmo_local_gguf
LLM: C:\Users\zhout\w2\minicpmo_local_gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: C:\Users\zhout\w2\minicpmo_local_gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: C:\Users\zhout\w2\minicpmo_local_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: 99
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: C:\Users\zhout\w2\minicpmo_local_gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:22:45.413 === omni_init start
04:22:45.413 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:22:45.413 === omni_init: loading new LLM model
04:22:48.283 === omni_init: loading TTS model
04:22:48.283 TTS model: loading with n_gpu_layers=0
04:22:48.632 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:22:48.632 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:22:49.134 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:22:49.139 TTS: head_code loaded, verifying first few values:
04:22:49.140 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:22:49.140 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:22:49.140 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:22:49.190 TTS: weights loaded successfully
04:22:49.190 Projector: loading from C:\Users\zhout\w2\minicpmo_local_gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:22:49.199 Projector: loaded successfully
04:22:49.200 === omni_init: loading APM model
04:22:49.454 APM: init from C:\Users\zhout\w2\minicpmo_local_gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:22:50.176 Token2Wav: found models in C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf
04:22:50.176 Token2Wav: all model files found, initializing session...
04:22:50.176 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:22:50.176 Token2Wav: using prompt_cache from C:\Users\zhout\w2\minicpmo_local_gguf/token2wav-gguf/prompt_cache.gguf
04:22:50.549 Token2Wav: initialized successfully
04:22:50.549 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:22:50.549 Token2Wav: 使用 C++ 实现
04:22:50.549 === omni_init success: ctx_llama = 0000020ec520fd80
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_radeon_native_work\omni-minicpmo-1-hw2mtevu\fixture_
Count: 2
04:22:50.549 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
模仿音频样本的音色并生成新的内容。
<|audio_start|>
assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|>
<|im_start|>user
04:22:50.549 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_work\omni-minicpmo-1-hw2mtevu\fixture_0000.wav
04:22:50.902 system prompt ref_audio embedding: n_pos=20
04:22:51.395 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除
04:22:51.395 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill
04:22:51.395 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:22:51.395 n_past = 72
04:22:51.395
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 0.84546 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 587.25 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 605.75 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 605.75 ms by vision ( 605.75 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_radeon_native_work\omni-minicpmo-1-hw2mtevu\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
04:22:52.523 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_radeon_native_work\omni-minicpmo-1-hw2mtevu\fixture_0001.wav
04:22:52.834 stream_prefill(index=1): user audio embedding: n_pos=31
04:22:53.153
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 1.75472 s
04:22:53.153 📍 stream_decode 开始: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:22:53.153 stream_decode: create tts thread (simplex mode)
04:22:53.153 stream_decode: create t2w thread
04:22:53.153 wait prefill done
04:22:53.153 📍 [单工TTS] 添加 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:22:53.154 T2W thread (C++) started
<user>
<assistant>04:22:53.158 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000
04:22:53.158 TTS thread started
04:22:53.315 📍 [单工TTS] assistant prompt 完成, n_past=182
04:22:53.315 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:22:53.823 LLM: detected end token, set llm_generation_done=true
04:22:53.823 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]
04:22:53.823 📍 Decode 结束: n_past=191, 剩余空间=1857, 无需滑窗
04:22:53.823 📍 轮次 1 结束,记录边界于 n_past=191
04:22:53.823 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]
04:22:53.823 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:22:53.823 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
04:22:53.823 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:22:53.823 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:22:53.824 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:22:53.856 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:22:53.856 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:22:53.856 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=9)
04:22:53.856 TTS Simplex: first chunk - cleared KV cache
04:22:53.856 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:22:53.919 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:22:53.927 TTS Simplex: prefill completed, n_past_tts=9
04:22:53.927 TTS Simplex: sampler created
04:22:53.927 TTS simplex: is_audio_bos=true (first audio token)
04:22:53.953 TTS Simplex Phase1: token 1/500: rel_id=770
04:22:53.964 TTS Simplex Phase1: token 2/500: rel_id=4137
04:22:53.976 TTS Simplex Phase1: token 3/500: rel_id=4137
04:22:53.988 TTS Simplex Phase1: token 4/500: rel_id=4137
04:22:53.999 TTS Simplex Phase1: token 5/500: rel_id=4218
04:22:54.219 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25)
04:22:54.219 TTS Simplex Phase1: token 25/500: rel_id=6059
04:22:54.219 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录
04:22:54.219 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav
04:22:54.300 TTS Simplex Phase1: EOS token at step 33
04:22:54.300 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:22:54.300 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=41
04:22:54.307 TTS Simplex Phase2: text_eos_embed injected, n_past=42
04:22:54.314 TTS Simplex Phase2: audio_bos injected, n_past=43, starting final generation
04:22:54.515 TTS Simplex Phase2: yield 25 tokens 到 T2W
04:22:54.729 TTS Simplex Phase2: EOS at step 37 (final end)
04:22:54.729 TTS Simplex: chunk 结束,tts_token_buffer 剩余 18 tokens (保留等下一个 chunk)
04:22:54.729 TTS Simplex: is_final_text_chunk=true, flush 剩余 18 tokens 从 tts_token_buffer
04:22:54.729 TTS Simplex: generated 68 audio tokens for chunk 0
04:22:54.729 TTS Simplex: chunk 0 first tokens: [770 4137 4137 4137 4218 ], last tokens: [735 4218 4218 4218 6082 ]
04:22:54.729 TTS Simplex: updated tts_n_past_accumulated=80, total_generated_tokens=68
04:22:54.739 TTS: finished processing all chunks
04:22:54.739 TTS: 单工模式轮次结束,下一轮 round_idx=1
04:22:54.739 TTS: sent is_final=true to T2W queue (turn end)
04:22:56.559 🎉 首响时间 (First Audio Response): 3406ms
04:22:56.559 T2W线程: wav_0.wav | 0.84s audio | 2339.2ms inference | RTF=2.78 | t=3406ms
04:22:58.798 T2W线程: wav_1.wav | 1.00s audio | 2238.4ms inference | RTF=2.24 | t=5645ms
04:23:01.007 T2W线程: wav_2.wav | 1.00s audio | 2207.8ms inference | RTF=2.21 | t=7854ms
04:23:01.008 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:23:01.008 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav
04:23:01.103 omni_stop_threads: stop signals sent
04:23:01.103 T2W(C++) 线程: 停止
[timing] call=0 tokens=28 final=0 token2mel=2010.160ms vocoder=328.996ms total=2339.192ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1846.934ms vocoder=391.459ms total=2238.404ms audio=24000
[timing] call=2 tokens=21 final=1 token2mel=1878.426ms vocoder=329.360ms total=2207.801ms audio=24000
Audio generation completed.
llama_perf_context_print: load time = 4895.95 ms
llama_perf_context_print: prompt eval time = 2764.93 ms / 182 tokens ( 15.19 ms per token, 65.82 tokens per second)
llama_perf_context_print: eval time = 505.42 ms / 9 runs ( 56.16 ms per token, 17.81 tokens per second)
llama_perf_context_print: total time = 12684.33 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -0,0 +1,173 @@
{
"scope": "MiniCPM-o GGUF complete audio+image\u2192text+speech through Omni StageRuntime/StagePool",
"placement": "radeon-hybrid",
"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": "66a512386aafeb708f49a7394a9054d94ec777c362395c8917a3d198aef1b523",
"reference_sha256": "cf4bb5cd9acbfbf67596d4a53310652b61ef4b7ede1d54eb03ef4882ca40223a",
"input_sha256": {
"audio_wav": "14ee147cbf2ce9afd9e32c8c8228d7cfe11985cd7e63456b2ad33871492aefcc",
"image_jpeg": "22c7ccea466a3f551c512045e6316c7597408d4e0a20205502f55784d977aa8d"
},
"memory_budget": {
"capacities": {
"host_ram": 22548578304
},
"demands": {
"host_ram": 22548578304
}
},
"profile_count": 1,
"warmup_count": 0,
"host_available_bytes_before": 26973949952,
"startup_s": 50.66291730001103,
"execution_plan_at_start": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "82ddd6b3e0d748928c97eba9a7c88eb7",
"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": "66a512386aafeb708f49a7394a9054d94ec777c362395c8917a3d198aef1b523",
"requested_placement": "radeon-hybrid",
"ggml_vk_visible_devices": "1",
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": [],
"measured": [
{
"text": "The square in the image is red.",
"wall_s": 90.62775189999957,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 57600,
"duration_s": 2.4,
"pcm_sha256": "0012ed9e1f07d465456fc14d77ac880145a06e4cc051e0f4407bc9ccded09982"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "82ddd6b3e0d748928c97eba9a7c88eb7",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 90.60842179995961,
"peak_sampled_rss_bytes": 15296385024,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_unc_logs\\minicpmo-1-4b59fa7bf21a4be39d915d3a9761a496.log"
}
}
],
"complete_request": {
"text": "The square in the image is red.",
"wall_s": 90.62775189999957,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 57600,
"duration_s": 2.4,
"pcm_sha256": "0012ed9e1f07d465456fc14d77ac880145a06e4cc051e0f4407bc9ccded09982"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "82ddd6b3e0d748928c97eba9a7c88eb7",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 90.60842179995961,
"peak_sampled_rss_bytes": 15296385024,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_unc_logs\\minicpmo-1-4b59fa7bf21a4be39d915d3a9761a496.log"
}
},
"nearest_rank_p50_wall_s": 90.62775189999957,
"nearest_rank_p95_wall_s": 90.62775189999957,
"output_wav": "\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\results\\e2e_expansion_20260923\\evidence\\minicpmo_omni_native_weights_io\\radeon_unc.wav",
"execution_plan_after_request": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "82ddd6b3e0d748928c97eba9a7c88eb7",
"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": "66a512386aafeb708f49a7394a9054d94ec777c362395c8917a3d198aef1b523",
"requested_placement": "radeon-hybrid",
"ggml_vk_visible_devices": "1",
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": "radeon-hybrid",
"worker_pid": 25828,
"peak_sampled_rss_bytes": 15296385024,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_unc_logs\\minicpmo-1-4b59fa7bf21a4be39d915d3a9761a496.log"
}
},
"status": "passed",
"ledger_after_shutdown": {
"capacities": {
"host_ram": 22548578304
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
}
@@ -0,0 +1,165 @@
INFO 09-24 04:23:52 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed.
INFO 09-24 04:23:52 [patch.py:510] inductor factorable-divisibility patch: installed.
INFO 09-24 04:23:55 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn
WARNING 09-24 04:23:55 [stage_init_utils.py:1887] [stage_init] Failed to load transfer config: [Errno 13] Permission denied: 'C:\\Users\\zhout'
{
"scope": "MiniCPM-o GGUF complete audio+image\u2192text+speech through Omni StageRuntime/StagePool",
"placement": "radeon-hybrid",
"model_revision": "db25077c33951fe163b42986fba0132e279872a2",
"cli_sha256": "66a512386aafeb708f49a7394a9054d94ec777c362395c8917a3d198aef1b523",
"reference_sha256": "cf4bb5cd9acbfbf67596d4a53310652b61ef4b7ede1d54eb03ef4882ca40223a",
"input_sha256": {
"audio_wav": "14ee147cbf2ce9afd9e32c8c8228d7cfe11985cd7e63456b2ad33871492aefcc",
"image_jpeg": "22c7ccea466a3f551c512045e6316c7597408d4e0a20205502f55784d977aa8d"
},
"memory_budget": {
"capacities": {
"host_ram": 22548578304
},
"demands": {
"host_ram": 22548578304
}
},
"profile_count": 1,
"warmup_count": 0,
"host_available_bytes_before": 26973949952,
"startup_s": 50.66291730001103,
"execution_plan_at_start": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "82ddd6b3e0d748928c97eba9a7c88eb7",
"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": "66a512386aafeb708f49a7394a9054d94ec777c362395c8917a3d198aef1b523",
"requested_placement": "radeon-hybrid",
"ggml_vk_visible_devices": "1",
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": [],
"measured": [
{
"text": "The square in the image is red.",
"wall_s": 90.62775189999957,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 57600,
"duration_s": 2.4,
"pcm_sha256": "0012ed9e1f07d465456fc14d77ac880145a06e4cc051e0f4407bc9ccded09982"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "82ddd6b3e0d748928c97eba9a7c88eb7",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 90.60842179995961,
"peak_sampled_rss_bytes": 15296385024,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_unc_logs\\minicpmo-1-4b59fa7bf21a4be39d915d3a9761a496.log"
}
}
],
"complete_request": {
"text": "The square in the image is red.",
"wall_s": 90.62775189999957,
"audio_metadata": {
"sample_rate_hz": 24000,
"channels": 1,
"pcm_frames": 57600,
"duration_s": 2.4,
"pcm_sha256": "0012ed9e1f07d465456fc14d77ac880145a06e4cc051e0f4407bc9ccded09982"
},
"stage_event": {
"request_id": "minicpmo-measured-0",
"stage_id": 0,
"epoch": 1,
"seq": 1,
"kind": "audio",
"worker_generation": "82ddd6b3e0d748928c97eba9a7c88eb7",
"buffers": [],
"terminal": true,
"error": null
},
"metrics": {
"minicpmo_whole_request_wall_s": 90.60842179995961,
"peak_sampled_rss_bytes": 15296385024,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_unc_logs\\minicpmo-1-4b59fa7bf21a4be39d915d3a9761a496.log"
}
},
"nearest_rank_p50_wall_s": 90.62775189999957,
"nearest_rank_p95_wall_s": 90.62775189999957,
"output_wav": "\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\results\\e2e_expansion_20260923\\evidence\\minicpmo_omni_native_weights_io\\radeon_unc.wav",
"execution_plan_after_request": {
"backend": "external.minicpmo.gguf.v1",
"stage_id": 0,
"worker_generation": "82ddd6b3e0d748928c97eba9a7c88eb7",
"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": "66a512386aafeb708f49a7394a9054d94ec777c362395c8917a3d198aef1b523",
"requested_placement": "radeon-hybrid",
"ggml_vk_visible_devices": "1",
"shared_ram_reservation": {
"host_ram": 22548578304
},
"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": "radeon-hybrid",
"worker_pid": 25828,
"peak_sampled_rss_bytes": 15296385024,
"worker_log": "C:\\Users\\zhout\\w2\\minicpmo_io_radeon_unc_logs\\minicpmo-1-4b59fa7bf21a4be39d915d3a9761a496.log"
}
},
"status": "passed",
"ledger_after_shutdown": {
"capacities": {
"host_ram": 22548578304
},
"reserved": {
"host_ram": 0
},
"owners": [],
"quarantined": []
}
}
@@ -0,0 +1,483 @@
build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 30720 MiB free
llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from \\wsl.localhost\Ubuntu\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)
warning: PrefetchVirtualMemory failed: 内存资源不足,无法处理此命令。
load_tensors: offloading 36 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 37/37 layers to GPU
load_tensors: Vulkan0 model buffer size = 4454.74 MiB
load_tensors: CPU_Mapped model buffer size = 333.43 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: Vulkan_Host output buffer size = 0.58 MiB
llama_kv_cache: Vulkan0 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: Vulkan0 compute buffer size = 304.38 MiB
llama_context: Vulkan_Host compute buffer size = 12.01 MiB
llama_context: graph nodes = 1267
llama_context: graph splits = 2
llama_model_load_from_file_impl: using device Vulkan0 (AMD Radeon(TM) 890M Graphics) (unknown id) - 25673 MiB free
llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from \\wsl.localhost\Ubuntu\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
warning: PrefetchVirtualMemory failed: 内存资源不足,无法处理此命令。
load_tensors: offloading 0 repeating layers to GPU
load_tensors: offloaded 0/21 layers to GPU
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: Vulkan0 compute buffer size = 30.75 MiB
llama_context: Vulkan_Host compute buffer size = 7.01 MiB
llama_context: graph nodes = 613
llama_context: graph splits = 216 (with bs=512), 1 (with bs=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 Vulkan0 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: Vulkan0 compute buffer size = 100.30 MiB
alloc_compute_meta: CPU compute buffer size = 18.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: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\models\MiniCPM-o-4_5-gguf
LLM: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\models\MiniCPM-o-4_5-gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK]
Vision: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\models\MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK]
Audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\models\MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK]
TTS: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\models\MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK]
Projector: \\wsl.localhost\Ubuntu\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: 99
Token2Wav device: cpu
Vision backend: metal
TTS bin dir: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\models\MiniCPM-o-4_5-gguf/tts
Ref audio: \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\results\e2e_expansion_20260923\evidence\minicpmo_cpp_radeon890m_prompted\fixture_0000.wav
04:24:46.632 === omni_init start
04:24:46.632 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output
04:24:46.632 === omni_init: loading new LLM model
04:25:36.642 === omni_init: loading TTS model
04:25:36.642 TTS model: loading with n_gpu_layers=0
04:25:40.096 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05
04:25:40.096 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)...
04:25:45.901 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768]
04:25:45.909 TTS: head_code loaded, verifying first few values:
04:25:45.909 head_code_weight[0] = 0.01361084 (expect ~0.01385498)
04:25:45.909 head_code_weight[1] = -0.01660156 (expect ~-0.01647949)
04:25:45.909 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391)
04:25:46.056 TTS: weights loaded successfully
04:25:46.056 Projector: loading from \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\models\MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf
04:25:46.159 Projector: loaded successfully
04:25:46.160 === omni_init: loading APM model
04:25:49.369 APM: init from \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\models\MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf
04:25:55.816 Token2Wav: found models in \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\models\MiniCPM-o-4_5-gguf/token2wav-gguf
04:25:55.873 Token2Wav: all model files found, initializing session...
04:25:55.873 Token2Wav: non-CUDA backend, vocoder using CPU for better performance
04:25:55.873 Token2Wav: using prompt_cache from \\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\models\MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf
04:26:00.587 Token2Wav: initialized successfully
04:26:00.587 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav
04:26:00.587 Token2Wav: 浣跨敤 C++ 瀹炵幇
04:26:00.587 === omni_init success: ctx_llama = 000002235145fe80
=== Running test case ===
Audio prefix: C:\Users\zhout\w2\minicpmo_io_radeon_unc_work\omni-minicpmo-1-xkuxf0p0\fixture_
Count: 2
04:26:00.587 stream_prefill: n_past = 0
voice_clone_prompt = <|im_start|>system
妯′豢闊抽�鏍锋湰鐨勯煶鑹插苟鐢熸垚鏂扮殑鍐呭�銆�
<|audio_start|>
assistant_prompt = <|audio_end|>浣犵殑浠诲姟鏄�敤杩欑�澹伴煶妯″紡鏉ュ綋涓€涓�姪鎵嬨€傝�璁ょ湡銆侀珮璐ㄩ噺鍦板洖澶嶇敤鎴风殑闂��銆傝�鐢ㄩ珮鑷�劧搴︾殑鏂瑰紡鍜岀敤鎴疯亰澶┿€�<|im_end|>
<|im_start|>user
04:26:00.587 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_io_radeon_unc_work\omni-minicpmo-1-xkuxf0p0\fixture_0000.wav
04:26:01.031 system prompt ref_audio embedding: n_pos=20
04:26:01.527 馃敀 n_keep 璁剧疆涓� 72 (system prompt tokens)锛岃繖閮ㄥ垎姘歌繙涓嶄細琚�粦鍔ㄧ獥鍙e垹闄�
04:26:01.527 stream_prefill(index=0): system prompt 鍒濆�鍖栧畬鎴愶紝ref_audio 宸插湪鍏朵腑 prefill
04:26:01.527 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding)
04:26:01.527 n_past = 72
04:26:01.527
c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048
prefill 0 (audio) : 0.939236 s
encode_image_with_vision_chunks: step 1 of 1 encoded in 1126.13 ms
encode_image_with_vision_chunks: all 1 chunks encoded in 1144.51 ms (grid: 1x1)
encode_image_with_vision_chunks: image encoded in 1144.51 ms by vision ( 1144.51 ms per chunk, 64 total tokens)
omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_io_radeon_unc_work\omni-minicpmo-1-xkuxf0p0\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
04:26:03.193 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_io_radeon_unc_work\omni-minicpmo-1-xkuxf0p0\fixture_0001.wav
04:26:03.516 stream_prefill(index=1): user audio embedding: n_pos=31
04:26:04.320
c++ finish stream_prefill(index=1). n_past=172, n_keep=72, n_ctx=2048
prefill 1 (audio+vision) : 2.79225 s
04:26:04.321 馃搷 stream_decode 寮€濮�: n_past=172, n_keep=72, n_ctx=2048, duplex_mode=0
04:26:04.321 stream_decode: create tts thread (simplex mode)
04:26:04.321 stream_decode: create t2w thread
04:26:04.321 wait prefill done
04:26:04.321 馃搷 [鍗曞伐TTS] 娣诲姞 assistant prompt: "<|im_end|>
<|im_start|>assistant
<think>
</think>
<|tts_bos|>", n_past=172
04:26:04.321 T2W thread (C++) started
<user>
<assistant>04:26:04.325 TTS: 鍒涘缓鍗曞伐妯″紡杈撳嚭鐩�綍: ./tools/omni/output/round_000
04:26:04.325 TTS thread started
04:26:04.484 馃搷 [鍗曞伐TTS] assistant prompt 瀹屾垚, n_past=182
04:26:04.484 LLM decode: max_tgt_len = 96, n_predict = 96, n_ctx = 2048
04:26:05.017 LLM: detected end token, set llm_generation_done=true
04:26:05.017 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]
04:26:05.017 馃搷 Decode 缁撴潫: n_past=191, 鍓╀綑绌洪棿=1857, 鏃犻渶婊戠獥
04:26:05.017 馃搷 杞�� 1 缁撴潫锛岃�褰曡竟鐣屼簬 n_past=191
04:26:05.017 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]
04:26:05.017 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=8
04:26:05.017 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
04:26:05.017 TTS: DEBUG before has_llm_data - token_ids.size=8, hidden_states.size=32768, n_embd=4096
04:26:05.017 TTS: has_llm_data=1, token_ids=8, hidden_states=32768, n_embd=4096, llm_finish=1
04:26:05.018 TTS: n_tokens_orig=8, n_tokens_filtered=8 (filtered 0 special tokens)
04:26:05.048 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt
04:26:05.048 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=8, tts_n_embd=768)
04:26:05.048 TTS Simplex: 鍦� prefill 鍓嶆坊鍔� audio_bos (chunk_idx=0, new_size=9)
04:26:05.048 TTS Simplex: first chunk - cleared KV cache
04:26:05.048 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer
04:26:05.109 馃搷 涓轰笅涓€杞�噯澶�: eval <|im_end|>\n<|im_start|>user\n, n_past=196
04:26:06.751 TTS Simplex: prefill completed, n_past_tts=9
04:26:06.751 TTS Simplex: sampler created
04:26:06.751 TTS simplex: is_audio_bos=true (first audio token)
04:26:06.778 TTS Simplex Phase1: token 1/500: rel_id=761
04:26:06.789 TTS Simplex Phase1: token 2/500: rel_id=4218
04:26:06.801 TTS Simplex Phase1: token 3/500: rel_id=4218
04:26:06.813 TTS Simplex Phase1: token 4/500: rel_id=4218
04:26:06.824 TTS Simplex Phase1: token 5/500: rel_id=4218
04:26:07.049 TTS Simplex Phase1: yield 25 tokens 鍒� T2W (step 25, buffer=25)
04:26:07.049 TTS Simplex Phase1: token 25/500: rel_id=3912
04:26:07.049 T2W绾跨▼(C++): 杞��鍒囨崲 (-1 -> 0)锛屾洿鏂拌緭鍑虹洰褰�
04:26:07.049 T2W绾跨▼(C++): 鏂拌緭鍑虹洰褰� ./tools/omni/output/round_000/tts_wav
04:26:07.109 TTS Simplex Phase1: EOS token at step 31
04:26:07.109 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed
04:26:07.109 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=39
04:26:07.116 TTS Simplex Phase2: text_eos_embed injected, n_past=40
04:26:07.124 TTS Simplex Phase2: audio_bos injected, n_past=41, starting final generation
04:26:07.345 TTS Simplex Phase2: yield 25 tokens 鍒� T2W
04:26:07.436 TTS Simplex Phase2: EOS at step 28 (final end)
04:26:07.436 TTS Simplex: chunk 缁撴潫锛宼ts_token_buffer 鍓╀綑 7 tokens (淇濈暀绛変笅涓€涓� chunk)
04:26:07.436 TTS Simplex: is_final_text_chunk=true, flush 鍓╀綑 7 tokens 浠� tts_token_buffer
04:26:07.436 TTS Simplex: generated 57 audio tokens for chunk 0
04:26:07.436 TTS Simplex: chunk 0 first tokens: [761 4218 4218 4218 4218 ], last tokens: [69 732 3975 4218 4218 ]
04:26:07.436 TTS Simplex: updated tts_n_past_accumulated=69, total_generated_tokens=57
04:26:07.446 TTS: finished processing all chunks
04:26:07.446 TTS: 鍗曞伐妯″紡杞��缁撴潫锛屼笅涓€杞� round_idx=1
04:26:07.446 TTS: sent is_final=true to T2W queue (turn end)
04:26:09.453 馃帀 棣栧搷鏃堕棿 (First Audio Response): 5132ms
04:26:09.453 T2W绾跨▼: wav_0.wav | 0.84s audio | 2402.1ms inference | RTF=2.86 | t=5132ms
04:26:11.736 T2W绾跨▼: wav_1.wav | 1.00s audio | 2282.8ms inference | RTF=2.28 | t=7415ms
04:26:13.828 T2W绾跨▼: wav_2.wav | 0.56s audio | 2091.4ms inference | RTF=3.73 | t=9507ms
04:26:13.829 T2W绾跨▼: 鍐欏叆缁撴潫鏍囪� ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=2)
04:26:13.829 T2W绾跨▼: 杞��缁撴潫鍚庢洿鏂拌緭鍑虹洰褰曚负 ./tools/omni/output/round_001/tts_wav
04:26:13.925 omni_stop_threads: stop signals sent
04:26:13.925 T2W(C++) 绾跨▼: 鍋滄�
[timing] call=0 tokens=28 final=0 token2mel=2069.445ms vocoder=332.635ms total=2402.097ms audio=20160
[timing] call=1 tokens=28 final=0 token2mel=1896.779ms vocoder=386.014ms total=2282.803ms audio=24000
[timing] call=2 tokens=10 final=1 token2mel=1892.416ms vocoder=198.989ms total=2091.415ms audio=13440
Audio generation completed.
llama_perf_context_print: load time = 27530.58 ms
llama_perf_context_print: prompt eval time = 3895.86 ms / 182 tokens ( 21.41 ms per token, 46.72 tokens per second)
llama_perf_context_print: eval time = 529.95 ms / 9 runs ( 58.88 ms per token, 16.98 tokens per second)
llama_perf_context_print: total time = 36971.45 ms / 191 tokens
llama_perf_context_print: graphs reused = 10
Token2Wav (C++): session released
tts thread end
t2w thread end
@@ -3,6 +3,8 @@
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.
The WSL CPU and CPU+Radeon InternVLA cells also have [bounded Omni complete-policy profiles](../../../e2e_expansion_20260923/evidence/internvla_omni_policy/README.md): one warmup and 20 serial patterned synthetic requests per placement, plus admission refusal, cancellation and a public hybrid `AsyncOmni.generate` request. The [WSL RTX 5090 Laptop CUDA](../../../e2e_expansion_20260923/evidence/internvla_omni_cuda/README.md) and [native Windows RTX CUDA](../../../e2e_expansion_20260923/evidence/internvla_omni_windows_cuda/README.md) cells now have the same scoped Omni whole-policy pattern with 20 serial requests each, explicit host/VRAM admission, refusal, cancellation and public action requests. Separate native Windows [CPU](../../../e2e_expansion_20260923/evidence/internvla_omni_windows_cpu/README.md) and [CPU+Radeon](../../../e2e_expansion_20260923/evidence/internvla_omni_windows_hybrid/README.md) Omni profiles add 20 serial patterned requests per placement, refusal, cancellation and public action requests. These advance only the synthetic action-policy path. Real observations/reference actions, physical action units/order/step time, task quality, loading peak and sustained power/thermal behavior remain unverified. The earlier [Cosmos component and direct hybrid results](../../../e2e_expansion_20260923/evidence/internvla_cosmos_radeon890m/README.md) remain separate experiments. A new [20-request native Radeon MiniCPM-o profile](../../../e2e_expansion_20260923/evidence/minicpmo_omni_radeon_profile20/README.md) passed the scoped combined input/output path but exposed a large memory-sensitive latency regression versus its earlier one-request smoke; its row below supersedes the smoke for repeated-request timing.
A [follow-up MiniCPM-o storage experiment](../../../e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/README.md) copied the same ten GGUF weights to native NTFS. One warmup plus 20 complete requests passed on Windows CPU (p50/p95 23.62/23.88 s) and Radeon+CPU (16.35/17.20 s), with no prefetch warnings. Separate one-request UNC controls were much slower; the original UNC 20-request Radeon profile remains valid for that path. Run order and OS cache were not controlled, so no causal or cross-placement speedup claim follows. A [real InternVLA Cosmos encoder NPU artifact attempt](../../../e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/README.md) passed fixed-shape CPU export parity but its tested A16W8 candidates failed the CPU numerical gate or VitisAI compilation; the AMD NPU cell remains NOT E2E.
## Configuration × model
@@ -17,10 +19,10 @@ 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: Omni CPU text → complete WAV | NOT E2E | scoped E2E: Omni GGUF combined image+audio → text+speech | synthetic policy pass: Omni CPU |
| 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 (unstable latency) | synthetic policy pass: Omni CPU |
| 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 (native-storage 20-run profile) | synthetic policy pass: Omni CPU |
| PC HX370 + RTX 5090 Laptop / WSL | profile completed | profile completed | scoped E2E: text + image | scoped E2E: text/image/audio → speech | synthetic policy pass: admitted Omni CUDA |
| PC HX370 + RTX 5090 Laptop / Windows | profile completed | profile completed | NOT E2E | scoped E2E: text/image/audio → speech | synthetic policy pass: admitted Omni CUDA |
| PC HX370 + Radeon 890M / Windows worker | scoped E2E: Omni Spark text | scoped E2E: Omni Radeon talker/codec + CPU predictor | NOT E2E | scoped E2E: Omni Radeon+CPU image+audio → text+speech (unstable latency) | synthetic policy pass: Omni CPU+Radeon Cosmos (WSL/native Windows) |
| PC HX370 + Radeon 890M / Windows worker | scoped E2E: Omni Spark text | scoped E2E: Omni Radeon talker/codec + CPU predictor | NOT E2E | scoped E2E: Omni Radeon+CPU image+audio → text+speech (native-storage 20-run profile) | synthetic policy pass: Omni CPU+Radeon Cosmos (WSL/native Windows) |
| PC HX370 + AMD NPU / Windows worker | NOT E2E (output-head component passed) | NOT E2E | NOT E2E | NOT E2E | NOT E2E |
| PC CPU+iGPU+NPU +/- discrete GPU, joint model execution | NOT E2E | NOT E2E | NOT E2E | NOT E2E | NOT E2E |
| PC Snapdragon X Elite CRD / AI Hub | NOT E2E | NOT E2E | NOT E2E | NOT E2E | NOT E2E |
@@ -41,7 +43,7 @@ NOT E2E means no complete device/model workload was verified. “Scoped E2E” i
| 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). |
| PC HX370: CPU / native Windows | Qwen3.8-27B | NOT_E2E_PROFILEABLE | The installed native Windows vLLM extension lacks cpu_attn_reshape_and_cache and cpu_attn_get_scheduler_metadata. The separate ORT CPU graph worker is not a whole-model text/TTS adapter; a qualified CPU build/binding is missing. | Supply and validate the missing matching artifact/backend, then run the complete specified workload. |
| PC HX370: CPU / native Windows | MiniCPM-o 4.5 | SCOPED_E2E_OMNI_COMPLETE_REQUEST; PERFORMANCE_UNSTABLE | The pinned Q4_K_M/F16 GGUF set ran combined synthetic JPEG+spoken-question → text+speech requests through a bounded Omni whole-session graph stage on native Windows CPU. The earlier cold request answered “The square in the image is red.” and produced 2.24 s of 24 kHz speech in 24.34 s; the later one-request control with the same fixture and a 21 GiB budget also answered correctly but took 73.63 s and produced 1.96 s of speech. Its pinned Whisper tiny.en transcript had WER 0.143 (one-output intelligibility proxy). OS-available RAM before the later load was 32.28 GB, sampled worker RSS peaked at 13.10 GB, and the worker logged two `PrefetchVirtualMemory failed` warnings. The stage verified hashes and CPU placement, rejected insufficient RAM before launch, emitted a terminal audio event, and released the ledger after in-flight cancellation. These separate one-request runs do not form a latency distribution or establish the slowdown's cause. This is a whole-request C++ worker under Omni control, not native vLLM execution or playable streaming; one synthetic quality case is not general qualification. | Measure repeated CPU latency and OS memory/power with matched Radeon conditions; validate real image/audio suites, playable streaming, post-cancel restart, loading peak and sustained thermal behavior. [Later CPU control](../../../e2e_expansion_20260923/evidence/minicpmo_omni_radeon_profile20/README.md), [earlier Omni raw evidence](../../../e2e_expansion_20260923/evidence/minicpmo_omni_cpp/README.md), [standalone prompted evidence](../../../e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_prompted/README.md), [failed first run](../../../e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/README.md). |
| PC HX370: CPU / native Windows | MiniCPM-o 4.5 | SCOPED_E2E_OMNI_COMPLETE_REQUEST; NATIVE_STORAGE_PROFILED | The pinned Q4_K_M/F16 GGUF combined synthetic JPEG+spoken-question → text+speech route passed one warmup and 20/20 serial complete requests with weights on native NTFS: nearest-rank p50/p95 23.62/23.88 s, excluding 9.23 s controller startup; every request returned the expected red-square sentence and nonzero 1.60–2.88 s 24 kHz speech. The first measured WAV exactly matched pinned Whisper tiny.en ASR (WER 0, one-output intelligibility proxy). CPU placement and ten weight hashes were verified; a 21 GiB shared-RAM demand was admitted, sampled worker RSS peaked at 13.10 GB, no worker logged a prefetch warning, and in-flight cancellation left no stale output or reservation. A same-artifact one-request control from WSL UNC weights took 79.20 s, versus 21.16 s from native weights, with 40.90 vs 12.75 s worker load and two vs zero prefetch warnings. That sequential comparison associates UNC storage with the older slowdown but does not isolate causality or prove stable cross-placement speedup. The older UNC CPU result remains valid for that path. This is a whole-request C++ worker under Omni control, not native vLLM execution or playable streaming; the synthetic fixture is not general quality qualification. | Validate real image/audio suites, playable streaming, concurrent admission, post-cancel restart, loading peak and sustained thermal/power behavior; [native/UNC raw evidence](../../../e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/README.md), [earlier UNC CPU control](../../../e2e_expansion_20260923/evidence/minicpmo_omni_radeon_profile20/README.md), [earlier Omni evidence](../../../e2e_expansion_20260923/evidence/minicpmo_omni_cpp/README.md). |
| PC HX370: CPU / native Windows | InternVLA-A1 | SYNTHETIC_POLICY_PASS_OMNI; NOT_TASK_E2E | The real Place_Markpen checkpoint now runs through an admitted native Windows Omni StageRuntime whole-policy stage with the policy and output on CPU. One warmup plus 20 serial patterned synthetic camera/state/noise requests returned identical finite `[1,50,32]` action chunks; nearest-rank complete-request wall p50/p95 was 4.878/4.902 s, excluding 135.60 s startup. A separate public `AsyncOmni.generate` request returned a terminal action event with the same hash. The stage verified checkpoint/interpreter hashes, used a 16 GiB host-RAM capacity and demand within observed Windows availability, refused 8 GiB before worker launch, and after in-flight abort emitted no stale output and released the ledger. Compared with the WSL CPU Omni output for this fixture, action relative L2 difference was 2.1795% and cosine 0.999764, without a task tolerance. The earlier one-forward zero-input policy result is a different fixture. | Validate real observations/reference actions, physical units/order/step time and deadlines, loading peak, post-cancel restart, concurrency and sustained power/thermal behavior; [native Omni evidence](../../../e2e_expansion_20260923/evidence/internvla_omni_windows_cpu/README.md), [earlier direct policy evidence](../../../e2e_expansion_20260923/README.md). |
| PC HX370 + RTX 5090 Laptop / WSL | Spark-X2.5 | PROFILE_COMPLETED | not fully qualified: reference-quality and remaining reliability/performance gates must be reviewed | Broaden only with a named workload/device/precision qualification. |
| PC HX370 + RTX 5090 Laptop / WSL | Qwen3-TTS 0.6B CustomVoice | PROFILE_COMPLETED | not fully qualified: reference-quality and remaining reliability/performance gates must be reviewed | Resolve and measure playback stalls; run quality, interruption and thermal tests. |
@@ -56,13 +58,13 @@ NOT E2E means no complete device/model workload was verified. “Scoped E2E” i
| PC HX370 + Radeon 890M / Windows worker | Spark-X2.5 | SCOPED_E2E_OMNI_COMPLETE_REQUEST | The same pinned Spark-X2.5-1.7B Q4_K_M GGUF completed text prefill/decode through a bounded Omni whole-session stage with llama.cpp Vulkan1. The log identifies Radeon 890M and 29/29 layers offloaded there, rather than RTX 5090; an intentionally wrong device name was refused. `Paris` and `1511` passed; one warmup plus 20 serial complete requests were 20/20 correct, nearest-rank wall p50/p95 2.10/2.14 s. A public AsyncOmni request passed; an oversized context was rejected with a later correct request; in-flight cancellation produced no stale output and released the ledger. The prior standalone run was 2.18/2.20 s. No streaming, restart-after-cancel, GPU-memory peak or sustained power/thermal check is claimed. | Qualify public configuration, broader text/token quality, streaming and cancellation recovery, shared-RAM/GPU peak and sustained use; [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 + Radeon 890M / Windows worker | Qwen3-TTS 0.6B CustomVoice | SCOPED_E2E_OMNI_COMPLETE_REQUEST_HYBRID | The pinned Q8_0 CustomVoice talker, F16 codec and punctuation GGUFs completed two named text-to-WAV requests through an Omni whole-session CrispASR stage on native Windows. The runtime log identifies Radeon 890M Vulkan0 for talker/codec and the 432 MB code predictor pinned to CPU FP32; this is not all-Radeon or NPU execution. Both PCM hashes exactly match the earlier standalone outputs. Whisper tiny.en transcribed the first Omni WAV and both standalone WAVs exactly (WER 0 as an intelligibility proxy). One warmup plus 20 serial complete Omni requests for 2.56 s of audio had identical PCM and nearest-rank wall p50/p95 3.298/3.336 s (RTF 1.29/1.30). A public AsyncOmni audio request passed; cancellation drained the worker without stale output or remaining reservation. The earlier standalone profile was 3.310/3.345 s. The default Vulkan configuration previously fell back to CPU, all-Vulkan ran away to a 360-frame cap, and DirectML failed waveform quality. No playable stream, post-cancel restart, loading peak, broad speech quality or sustained power/thermal run is claimed. | Validate playable streaming, restart/recovery, broader voice quality, shared-RAM/GPU peak, concurrency and sustained real-time behavior before wider qualification; [Omni raw evidence](../../../e2e_expansion_20260923/evidence/qwen_tts_omni_hybrid/README.md), [standalone evidence](../../../e2e_expansion_20260923/evidence/qwen_tts_radeon890m_joint/README.md), [failed DirectML route](../../../e2e_expansion_20260923/evidence/qwen_tts_radeon890m_directml/README.md). |
| PC HX370 + Radeon 890M / Windows worker | Qwen3.8-27B | NOT_E2E_PROFILEABLE | FP32 448x448 vision tower: DirectML 85/113 nodes; normalized max error 9.095e-06 versus torch CPU. Historical component path, not full 27B or current graph-stage image-to-text integration. | Recover the hashed tower bundle and qualify its current Omni graph handoff with the language stage. |
| PC HX370 + Radeon 890M / Windows worker | MiniCPM-o 4.5 | SCOPED_E2E_OMNI_COMPLETE_REQUEST_HYBRID; PERFORMANCE_UNSTABLE | The pinned GGUF set ran a combined synthetic spoken-question+JPEG → text+speech workload through a bounded Omni whole-session graph stage. All 21 successful worker logs in a new serial profile verified Radeon 890M Vulkan0 language (37/37 layers) and vision, with CPU TTS/Token2Wav/vocoder; each request launched a fresh C++ model session. After one warmup, 20/20 requests answered “The square in the image is red.” and produced nonzero 2.08–3.00 s 24 kHz speech with terminal audio events. Nearest-rank complete-request wall p50/p95 was **87.27/91.45 s**, range 69.91–97.90 s, excluding 51.92 s controller startup. A separate cold rerun was 88.01 s. The first measured WAV transcribed exactly with pinned Whisper tiny.en (WER 0, one-output intelligibility proxy). A 21 GiB shared-RAM demand/capacity fit the 23.80 GB OS-available pre-load sample; maximum sampled worker RSS was 15.30 GB. Every successful new worker logged `PrefetchVirtualMemory failed` twice. The older one-cold-request Omni result was 18.27 s under a 24 GiB reservation/30 GiB declared ceiling and had no prefetch warning. The cause of the roughly fivefold regression is unqualified. A later CPU-only control with the same fixture also slowed to 73.63 s and logged prefetch warnings despite 32.28 GB OS-available before load; it was not a matched-condition comparison. OS memory/power time series and shared-iGPU allocation traces are still missing. In-flight cancellation left no stale output or reservation. This is CPU+iGPU joint execution, not all-Radeon, NPU, general quality or sustained performance qualification. | Measure Windows available/commit/pagefile and GPU shared-memory over matched CPU/Radeon runs; isolate UNC weight I/O, then validate real multimodal quality, playable streaming, post-cancel restart, loading peak, concurrency and sustained thermal behavior. [20-request Omni evidence](../../../e2e_expansion_20260923/evidence/minicpmo_omni_radeon_profile20/README.md), [earlier single-request Omni evidence](../../../e2e_expansion_20260923/evidence/minicpmo_omni_cpp/README.md). |
| PC HX370 + Radeon 890M / Windows worker | MiniCPM-o 4.5 | SCOPED_E2E_OMNI_COMPLETE_REQUEST_HYBRID; NATIVE_STORAGE_PROFILED | The pinned Q4_K_M/F16 GGUF combined synthetic spoken-question+JPEG → text+speech route passed one warmup and 20/20 serial complete requests through a bounded Omni whole-session stage with weights on native NTFS. Nearest-rank wall p50/p95 was **16.35/17.20 s**, range 14.08–17.30 s, excluding 8.75 s startup; all requests returned the red-square sentence and nonzero 2.08–2.88 s 24 kHz speech with terminal audio events. The first WAV exactly matched pinned Whisper tiny.en ASR (WER 0, one-output intelligibility proxy). All 21 successful worker logs identified Radeon 890M Vulkan0 language (37/37 layers) and vision plus CPU Token2Wav, with zero prefetch warnings; sampled RSS peaked at 15.30 GB. The 21 GiB shared-RAM reservation admitted after file-cache reclaim; an initial identical attempt was explicitly refused before model load when available RAM had fallen below reservation. Cancellation left no stale output or reservation. A sequential same-artifact one-request UNC control took 90.63 s versus 16.89 s native and logged two prefetch warnings; the previous UNC 20-request profile remains p50/p95 87.27/91.45 s for that path. Storage is strongly associated with the slowdown, but OS cache/run order are uncontrolled and the separate CPU/Radeon profiles are not a qualified iGPU speedup comparison. This is CPU+iGPU joint execution, not all-Radeon, NPU, general quality, playable streaming or sustained thermal/power qualification. | Validate real multimodal quality, playable streaming, post-cancel restart, concurrency, loading peak and sustained power/thermal behavior; capture matched OS/shared-iGPU memory traces. [Native/UNC raw evidence](../../../e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/README.md), [earlier UNC 20-request evidence](../../../e2e_expansion_20260923/evidence/minicpmo_omni_radeon_profile20/README.md). |
| PC HX370 + Radeon 890M / Windows worker | InternVLA-A1 | SYNTHETIC_POLICY_PASS_HYBRID_OMNI; NOT_TASK_E2E | The real Place_Markpen checkpoint ran in admitted Omni whole-policy stages on both WSL CPU+Radeon and native Windows CPU+Radeon. In each, the BF16 Qwen3-VL/flow action policy stayed on CPU and a pinned six-frame FP32 Cosmos encoder used Omni's external DirectML worker; the selected Radeon 890M and graph output device were verified, without internal per-op attribution. Each placement returned 20/20 identical finite `[1,50,32]` actions after one warmup. WSL hybrid complete-request p50/p95 was 3.120/3.197 s versus its separate CPU baseline 3.175/3.219 s, with action relative L2 difference 2.305%. Native Windows hybrid was 4.575/4.725 s versus its separate CPU baseline 4.878/4.902 s, with action relative L2 difference 2.4391%. Native hybrid startup was 140.31 s versus CPU 135.60 s. These are separate one-fixture serial runs, not paired speedup or task-quality proof. FP32 encoder is an explicit precision change after DirectML BF16 aborted. Both stages verified hashes, reserved 16 GiB shared host RAM, rejected insufficient demand before launch, emitted terminal actions through public `AsyncOmni.generate`, and released reservations after in-flight cancellation/shutdown. An initial WSL hybrid shutdown quarantined 16 GiB; the lifecycle fix and reruns cleared it. The older direct hybrid zero-input profile is a different experiment. | Validate real observations/reference actions, physical units/order/step time, post-cancel restart, loading peak, concurrency and sustained tail/power before deployment; [WSL Omni evidence](../../../e2e_expansion_20260923/evidence/internvla_omni_policy/README.md), [native Windows Omni evidence](../../../e2e_expansion_20260923/evidence/internvla_omni_windows_hybrid/README.md), [earlier direct component evidence](../../../e2e_expansion_20260923/evidence/internvla_cosmos_radeon890m/README.md). |
| PC HX370 + AMD NPU / Windows worker | Spark-X2.5 | COMPONENT_PASS; NOT_E2E_PROFILEABLE | The real 1.7B output head (RMS norm and full 131,072-logit projection) ran through Omni `external.graph.v1` with VitisAI: one fused NPU partition and seven CPU nodes per request. The A16W8 graph matched top-1 on four captured activations (full-logit SNR 55.43–56.81 dB). One warmup plus 20 serial repeated-input component requests gave p50/p95 10.21/12.44 ms, versus 17.97/20.29 ms for the original FP32 output head on the same Omni CPU stage. NPU startup was 18.21 s versus 4.48 s for FP32 CPU, and NPU worker peak RSS was 3.52 GiB versus 2.06 GiB. No full prefill/decode/KV/sampling, real handoff, power, or sustained run was verified. | Measure an actual vLLM-to-output-head handoff and whole-generation cost, state/cancellation, memory admission and quality before considering a split plan; [component evidence](../../../e2e_expansion_20260923/evidence/spark_amd_npu_output_head/README.md). |
| PC HX370 + AMD NPU / Windows worker | Qwen3-TTS 0.6B CustomVoice | NOT_E2E_PROFILEABLE | No placement- and quality-verified whole-model graph bundle/stateful adapter for this model on this AMD route. Small backend graphs do not establish model support. | Supply and validate the missing matching artifact/backend, then run the complete specified workload. |
| PC HX370 + AMD NPU / Windows worker | Qwen3.8-27B | NOT_E2E_PROFILEABLE | The tested A16W8 whole-vision-tower export failed NPU placement. This conclusion is specific to that export, not all future Qwen/NPU combinations. | Validate a supported export or smaller useful component, including same-checkpoint numerical quality. |
| PC HX370 + AMD NPU / Windows worker | MiniCPM-o 4.5 | NOT_E2E_PROFILEABLE | No placement- and quality-verified whole-model graph bundle/stateful adapter for this model on this AMD route. Small backend graphs do not establish model support. | Supply and validate the missing matching artifact/backend, then run the complete specified workload. |
| PC HX370 + AMD NPU / Windows worker | InternVLA-A1 | NOT_E2E_PROFILEABLE | No placement- and quality-verified whole-model graph bundle/stateful adapter for this model on this AMD route. Small backend graphs do not establish model support. | Supply and validate the missing matching artifact/backend, then run the complete specified workload. |
| PC HX370 + AMD NPU / Windows worker | InternVLA-A1 | COMPONENT_EXPORT_CPU_PASS; NPU_ARTIFACTS_REJECTED; NOT_E2E_PROFILEABLE | The real Place_Markpen Cosmos CI8x8 encoder exported to fixed FP32 [6,3,256,256] -> [6,16,32,32] ONNX; ORT CPU matched the source on two fixtures with relative L2 8.74e-7/2.29e-6. A16W8 Conv+MatMul QDQ changed encoder output by 11.77%/5.03% on CPU and the VitisAI compiler emitted a missing-scale fatal assertion. MatMul-only A16W8 retained near-source CPU parity, but its original and ORT-preprocessed graphs each hit a native SmallVector compiler assertion. No VitisAI node executed, so this is not NPU component placement or complete InternVLA policy support. Failures are specific to these artifacts and EP 1.8.63.0. | Produce a VitisAI-supported whole-encoder or coarse substage artifact with representative calibration and numerical/policy tolerances; then verify actual NPU nodes, same-device handoff, full-policy behavior and memory/power before changing this disposition. [raw export and failure evidence](../../../e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/README.md). |
| PC CPU+iGPU+NPU +/- discrete GPU, joint model execution | Spark-X2.5 | NOT_E2E_PROFILEABLE | No qualifying same-model multi-accelerator deployment/artifact plan or overlap/recovery evidence. Individual routes are not a joint pipeline. | Supply and validate the missing matching artifact/backend, then run the complete specified workload. |
| PC CPU+iGPU+NPU +/- discrete GPU, joint model execution | Qwen3-TTS 0.6B CustomVoice | NOT_E2E_PROFILEABLE | No qualifying same-model multi-accelerator deployment/artifact plan or overlap/recovery evidence. Individual routes are not a joint pipeline. | Supply and validate the missing matching artifact/backend, then run the complete specified workload. |
| PC CPU+iGPU+NPU +/- discrete GPU, joint model execution | Qwen3.8-27B | NOT_E2E_PROFILEABLE | No qualifying same-model multi-accelerator deployment/artifact plan or overlap/recovery evidence. Individual routes are not a joint pipeline. | Supply and validate the missing matching artifact/backend, then run the complete specified workload. |