diff --git a/benchmarks/edge_harness/experiments/export_internvla_cosmos_onnx.py b/benchmarks/edge_harness/experiments/export_internvla_cosmos_onnx.py new file mode 100644 index 000000000..e2732beca --- /dev/null +++ b/benchmarks/edge_harness/experiments/export_internvla_cosmos_onnx.py @@ -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() diff --git a/benchmarks/edge_harness/experiments/probe_internvla_cosmos_amd_npu.py b/benchmarks/edge_harness/experiments/probe_internvla_cosmos_amd_npu.py new file mode 100644 index 000000000..e1c717cee --- /dev/null +++ b/benchmarks/edge_harness/experiments/probe_internvla_cosmos_amd_npu.py @@ -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() diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/README.md b/benchmarks/edge_harness/results/e2e_expansion_20260923/README.md index d38acb56f..cfc36d0ec 100644 --- a/benchmarks/edge_harness/results/e2e_expansion_20260923/README.md +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/README.md @@ -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). | diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/README.md b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/README.md new file mode 100644 index 000000000..97a2d22a7 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/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. diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/compiler_attempts.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/compiler_attempts.json new file mode 100644 index 000000000..3eae5b386 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/compiler_attempts.json @@ -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 + } + ] +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/conv_matmul_cpu.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/conv_matmul_cpu.log new file mode 100644 index 000000000..18374185c --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/conv_matmul_cpu.log @@ -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 + 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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/conv_matmul_cpu_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/conv_matmul_cpu_report.json new file mode 100644 index 000000000..79080bea4 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/conv_matmul_cpu_report.json @@ -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" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/export.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/export.log new file mode 100644 index 000000000..74f193d08 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/export.log @@ -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" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/export_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/export_report.json new file mode 100644 index 000000000..cfeb2ebbe --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/export_report.json @@ -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" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/matmul_cpu.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/matmul_cpu.log new file mode 100644 index 000000000..2d83cf6e4 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/matmul_cpu.log @@ -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" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/matmul_cpu_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/matmul_cpu_report.json new file mode 100644 index 000000000..2d83cf6e4 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/matmul_cpu_report.json @@ -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" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/matmul_probe.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/matmul_probe.log new file mode 100644 index 000000000..1dcf548e3 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/matmul_probe.log @@ -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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/matmul_probe.log.raw.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/matmul_probe.log.raw.bin new file mode 100644 index 000000000..85e6f2a8b Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/matmul_probe.log.raw.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/preprocessed_matmul_probe.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/preprocessed_matmul_probe.log new file mode 100644 index 000000000..4e3f3697d --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/preprocessed_matmul_probe.log @@ -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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/preprocessed_matmul_probe.log.raw.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/preprocessed_matmul_probe.log.raw.bin new file mode 100644 index 000000000..ba929a14b Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/preprocessed_matmul_probe.log.raw.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/preprocessed_quant_sweep.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/preprocessed_quant_sweep.json new file mode 100644 index 000000000..87510b5bf --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/preprocessed_quant_sweep.json @@ -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 + } + ] + } + ] +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/probe.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/probe.log new file mode 100644 index 000000000..267aaefec --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/internvla_cosmos_amd_npu/probe.log @@ -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,class std::allocator > 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,class std::allocator > 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,class std::allocator > 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,class std::allocator > const & __ptr64) __ptr64 +public: int __cdecl vaip_core::TarWriter::write(class vaip_core::IStreamReader const & __ptr64,class std::basic_string,class std::allocator > const & __ptr64) __ptr64 +public: int __cdecl vaip_core::TarWriter::write(class vaip_core::IStreamReader const & __ptr64,class std::basic_string,class std::allocator > const & __ptr64) __ptr64 +public: int __cdecl vaip_core::TarWriter::write(class vaip_core::IStreamReader const & __ptr64,class std::basic_string,class std::allocator > 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,class std::allocator > const & __ptr64,class std::basic_string,class std::al +class std::shared_ptr __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::allocator > >,struct onnxruntime::Graph & __ptr64) +class std::vector >,class std::allocator >,class std::allocator >,class std::allocator... +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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:28:05.442 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-10-b23dd68a31c84ee4b759b3cfffdef482.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-10-b23dd68a31c84ee4b759b3cfffdef482.log new file mode 100644 index 000000000..34e510da2 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-10-b23dd68a31c84ee4b759b3cfffdef482.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:31:38.091 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-11-a35d11dac08243a493702a4447415115.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-11-a35d11dac08243a493702a4447415115.log new file mode 100644 index 000000000..8cb869da5 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-11-a35d11dac08243a493702a4447415115.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:32:01.717 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-12-07599db1769b4335b84c8d82a45fcfd6.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-12-07599db1769b4335b84c8d82a45fcfd6.log new file mode 100644 index 000000000..7fe52b2b9 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-12-07599db1769b4335b84c8d82a45fcfd6.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:32:25.094 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-13-e1314e7f64944d46a6541d51980f34cf.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-13-e1314e7f64944d46a6541d51980f34cf.log new file mode 100644 index 000000000..f79b2acad --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-13-e1314e7f64944d46a6541d51980f34cf.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:32:49.052 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-14-896ac8c055d94cae8c7747ff435a8198.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-14-896ac8c055d94cae8c7747ff435a8198.log new file mode 100644 index 000000000..f60c61fe0 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-14-896ac8c055d94cae8c7747ff435a8198.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:33:11.942 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-15-f9cfe6f742844074aa4c9149e342ceca.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-15-f9cfe6f742844074aa4c9149e342ceca.log new file mode 100644 index 000000000..1ddd18d0e --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-15-f9cfe6f742844074aa4c9149e342ceca.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:33:35.292 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-16-5d4b9ec6bf45471f9eec2d5b960e4231.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-16-5d4b9ec6bf45471f9eec2d5b960e4231.log new file mode 100644 index 000000000..218754428 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-16-5d4b9ec6bf45471f9eec2d5b960e4231.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:33:58.990 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-17-16244117244f4373919d880ce2705353.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-17-16244117244f4373919d880ce2705353.log new file mode 100644 index 000000000..7e5053f8d --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-17-16244117244f4373919d880ce2705353.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:34:22.592 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-18-c45d0a1e943c4f0d846be2bce30985d2.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-18-c45d0a1e943c4f0d846be2bce30985d2.log new file mode 100644 index 000000000..3dda23d50 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-18-c45d0a1e943c4f0d846be2bce30985d2.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:34:44.498 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-19-6180ec6c09e34f7fa7611e0d5d479866.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-19-6180ec6c09e34f7fa7611e0d5d479866.log new file mode 100644 index 000000000..28fd3e5a0 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-19-6180ec6c09e34f7fa7611e0d5d479866.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:35:08.115 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-2-a68a4bb2c9c844d09284f99713f42ee3.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-2-a68a4bb2c9c844d09284f99713f42ee3.log new file mode 100644 index 000000000..ceda6abd9 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-2-a68a4bb2c9c844d09284f99713f42ee3.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:28:28.965 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-20-9204a77eb20c45d8ab6ea187abad6757.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-20-9204a77eb20c45d8ab6ea187abad6757.log new file mode 100644 index 000000000..c803ea78c --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-20-9204a77eb20c45d8ab6ea187abad6757.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:35:31.752 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-21-f535a20e7d41454fb0ba4cfe35b2b8e6.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-21-f535a20e7d41454fb0ba4cfe35b2b8e6.log new file mode 100644 index 000000000..d619b0833 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-21-f535a20e7d41454fb0ba4cfe35b2b8e6.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:35:55.571 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-22-78aa2446463146da8e5581b22e606a32.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-22-78aa2446463146da8e5581b22e606a32.log new file mode 100644 index 000000000..7536419e6 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-22-78aa2446463146da8e5581b22e606a32.log @@ -0,0 +1 @@ +build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-3-2d52a8a1746649cf86ef6bd0d3b084be.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-3-2d52a8a1746649cf86ef6bd0d3b084be.log new file mode 100644 index 000000000..0d4106ace --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-3-2d52a8a1746649cf86ef6bd0d3b084be.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:28:52.452 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-4-b46c9bf60d5442aa90a5b54449102ae5.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-4-b46c9bf60d5442aa90a5b54449102ae5.log new file mode 100644 index 000000000..6ab690056 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-4-b46c9bf60d5442aa90a5b54449102ae5.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:29:16.333 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-5-f21754fc03f3477d85b4e6c6b2e6a0fc.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-5-f21754fc03f3477d85b4e6c6b2e6a0fc.log new file mode 100644 index 000000000..abee1b35e --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-5-f21754fc03f3477d85b4e6c6b2e6a0fc.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:29:40.055 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-6-699e00987db54dc78cb7c8fbcbfdb18a.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-6-699e00987db54dc78cb7c8fbcbfdb18a.log new file mode 100644 index 000000000..e787fbc34 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-6-699e00987db54dc78cb7c8fbcbfdb18a.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:30:03.739 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-7-9fd31face69845ba8950d00209640d98.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-7-9fd31face69845ba8950d00209640d98.log new file mode 100644 index 000000000..a6c5c1705 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-7-9fd31face69845ba8950d00209640d98.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:30:27.140 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-8-32008986f26448b8b6252c832b04ff80.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-8-32008986f26448b8b6252c832b04ff80.log new file mode 100644 index 000000000..3bdd26aba --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-8-32008986f26448b8b6252c832b04ff80.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:30:50.704 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-9-f3b0764945534992b4be5776816d7dc3.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-9-f3b0764945534992b4be5776816d7dc3.log new file mode 100644 index 000000000..7dbe5d61d --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_profile20_worker_logs/minicpmo-9-f3b0764945534992b4be5776816d7dc3.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:31:14.360 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_worker.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_worker.log new file mode 100644 index 000000000..3177ed9f9 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_native_worker.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:18:22.754 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_unc.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_unc.json new file mode 100644 index 000000000..44b42cfe8 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_unc.json @@ -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": [] + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_unc.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_unc.wav new file mode 100644 index 000000000..bbb1e55cc Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_unc.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_unc_driver.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_unc_driver.log new file mode 100644 index 000000000..ac1445f31 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_unc_driver.log @@ -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": [] + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_unc_worker.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_unc_worker.log new file mode 100644 index 000000000..833b33cbc --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/cpu_unc_worker.log @@ -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 '' +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 '' +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),这部分永远不会被滑动窗口删除 +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 + + + + +<|tts_bos|>", n_past=172 +04:21:27.083 T2W thread (C++) started + +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 结束,tts_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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/io_comparison.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/io_comparison.json new file mode 100644 index 000000000..58e5abbb8 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/io_comparison.json @@ -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" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native.json new file mode 100644 index 000000000..e16fc9238 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native.json @@ -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": [] + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native.wav new file mode 100644 index 000000000..987a30970 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_driver.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_driver.log new file mode 100644 index 000000000..c1a2d8d0c --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_driver.log @@ -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": [] + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20.json new file mode 100644 index 000000000..69f4ea20f --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20.json @@ -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": [] + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20.wav new file mode 100644 index 000000000..2ac2febde Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_asr.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_asr.json new file mode 100644 index 000000000..78404ccb0 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_asr.json @@ -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 +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_driver.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_driver.log new file mode 100644 index 000000000..4f910f68f --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_driver.log @@ -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": [] + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_refusal.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_refusal.json new file mode 100644 index 000000000..77cf94963 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_refusal.json @@ -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": [] + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_refusal_driver.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_refusal_driver.log new file mode 100644 index 000000000..8d946e242 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_refusal_driver.log @@ -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 + 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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-1-968f0dc83e1d437eab46b88dcb2205cb.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-1-968f0dc83e1d437eab46b88dcb2205cb.log new file mode 100644 index 000000000..8743aab9e --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-1-968f0dc83e1d437eab46b88dcb2205cb.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:40:10.013 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-10-e79695521b144aa5bcc8c8cd785da69b.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-10-e79695521b144aa5bcc8c8cd785da69b.log new file mode 100644 index 000000000..3750c2046 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-10-e79695521b144aa5bcc8c8cd785da69b.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:42:35.717 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-11-7b59f49eec23417097046e7da996eddb.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-11-7b59f49eec23417097046e7da996eddb.log new file mode 100644 index 000000000..421199372 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-11-7b59f49eec23417097046e7da996eddb.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:42:52.095 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-12-5aee2b7ca15749bead57e5b0c907daef.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-12-5aee2b7ca15749bead57e5b0c907daef.log new file mode 100644 index 000000000..0fffac886 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-12-5aee2b7ca15749bead57e5b0c907daef.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:43:08.404 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-13-faa6985493b84d71a3a03df276f20bfe.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-13-faa6985493b84d71a3a03df276f20bfe.log new file mode 100644 index 000000000..964c524cf --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-13-faa6985493b84d71a3a03df276f20bfe.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:43:24.587 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-14-a8a5141ea1ec4efbb62f31e762ecd66e.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-14-a8a5141ea1ec4efbb62f31e762ecd66e.log new file mode 100644 index 000000000..3a22cb577 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-14-a8a5141ea1ec4efbb62f31e762ecd66e.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:43:40.950 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-15-60998c19353b41e18cd9b0d63d00952c.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-15-60998c19353b41e18cd9b0d63d00952c.log new file mode 100644 index 000000000..eed5cf4c3 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-15-60998c19353b41e18cd9b0d63d00952c.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:43:57.394 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-16-b2e35ac7b8f34cbab3398aaec4cac214.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-16-b2e35ac7b8f34cbab3398aaec4cac214.log new file mode 100644 index 000000000..abe0d122e --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-16-b2e35ac7b8f34cbab3398aaec4cac214.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:44:13.764 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-17-ae72ca070d0f4933af9ed6763ab4fe3d.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-17-ae72ca070d0f4933af9ed6763ab4fe3d.log new file mode 100644 index 000000000..98355fe55 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-17-ae72ca070d0f4933af9ed6763ab4fe3d.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:44:31.033 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-18-2f52f85f9ede4ca4bd771d2f5934fedb.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-18-2f52f85f9ede4ca4bd771d2f5934fedb.log new file mode 100644 index 000000000..2bce104b6 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-18-2f52f85f9ede4ca4bd771d2f5934fedb.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:44:47.336 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-19-a34eedc5bcfa421ba23efb32d2a32bc9.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-19-a34eedc5bcfa421ba23efb32d2a32bc9.log new file mode 100644 index 000000000..3d348b37b --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-19-a34eedc5bcfa421ba23efb32d2a32bc9.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:45:03.581 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-2-ed7f3bd51b0c4f84ac8bb3fa2ee6c0d0.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-2-ed7f3bd51b0c4f84ac8bb3fa2ee6c0d0.log new file mode 100644 index 000000000..3af494650 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-2-ed7f3bd51b0c4f84ac8bb3fa2ee6c0d0.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:40:26.964 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-20-713a1fb93fe94583b25f1b14a81cf635.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-20-713a1fb93fe94583b25f1b14a81cf635.log new file mode 100644 index 000000000..d34357532 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-20-713a1fb93fe94583b25f1b14a81cf635.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:45:20.065 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-21-46f97443dddb40d3a45baadd4a169b0a.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-21-46f97443dddb40d3a45baadd4a169b0a.log new file mode 100644 index 000000000..c44a6f54a --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-21-46f97443dddb40d3a45baadd4a169b0a.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:45:36.457 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-22-bf7c422233f2476da86293fa9bcdc108.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-22-bf7c422233f2476da86293fa9bcdc108.log new file mode 100644 index 000000000..7536419e6 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-22-bf7c422233f2476da86293fa9bcdc108.log @@ -0,0 +1 @@ +build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-3-e0a5df0842564938a60c97975da0e760.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-3-e0a5df0842564938a60c97975da0e760.log new file mode 100644 index 000000000..fcc57471f --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-3-e0a5df0842564938a60c97975da0e760.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:40:43.607 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-4-0887229e7b3d4f26bfb29140c9d421b5.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-4-0887229e7b3d4f26bfb29140c9d421b5.log new file mode 100644 index 000000000..02337e131 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-4-0887229e7b3d4f26bfb29140c9d421b5.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:40:59.996 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-5-b671614c1ec446f1878b0d10437ff998.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-5-b671614c1ec446f1878b0d10437ff998.log new file mode 100644 index 000000000..d74184ace --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-5-b671614c1ec446f1878b0d10437ff998.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:41:16.344 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-6-a38c336a57124285959e2b2815b534e9.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-6-a38c336a57124285959e2b2815b534e9.log new file mode 100644 index 000000000..81b81beee --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-6-a38c336a57124285959e2b2815b534e9.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:41:32.743 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-7-56b1f5261ae54da2ba2ef08f7f2c17e1.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-7-56b1f5261ae54da2ba2ef08f7f2c17e1.log new file mode 100644 index 000000000..bc3753b07 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-7-56b1f5261ae54da2ba2ef08f7f2c17e1.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:41:49.114 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-8-e1f69f7a7351483cbb454bfa0356b1bb.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-8-e1f69f7a7351483cbb454bfa0356b1bb.log new file mode 100644 index 000000000..09d912370 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-8-e1f69f7a7351483cbb454bfa0356b1bb.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:42:05.382 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-9-b7c514e44e7f4956a221dff676badbde.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-9-b7c514e44e7f4956a221dff676badbde.log new file mode 100644 index 000000000..b6f682fda --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_profile20_worker_logs/minicpmo-9-b7c514e44e7f4956a221dff676badbde.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:42:21.638 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_worker.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_worker.log new file mode 100644 index 000000000..c11dfb652 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_native_worker.log @@ -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 '' +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 '' +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 + + + + +<|tts_bos|>", n_past=172 +04:22:53.154 T2W thread (C++) started + +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 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_unc.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_unc.json new file mode 100644 index 000000000..ecfcb92d8 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_unc.json @@ -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": [] + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_unc.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_unc.wav new file mode 100644 index 000000000..355146737 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_unc.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_unc_driver.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_unc_driver.log new file mode 100644 index 000000000..5c3a443f6 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_unc_driver.log @@ -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": [] + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_unc_worker.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_unc_worker.log new file mode 100644 index 000000000..76462a23d --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_omni_native_weights_io/radeon_unc_worker.log @@ -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 '' +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 '' +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),这部分永远不会被滑动窗口删除 +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 + + + + +<|tts_bos|>", n_past=172 +04:26:04.321 T2W thread (C++) started + +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 结束,tts_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 diff --git a/benchmarks/edge_harness/results/e2e_profiling_20260922/evidence/summary/README.md b/benchmarks/edge_harness/results/e2e_profiling_20260922/evidence/summary/README.md index c30c189e4..03db20807 100644 --- a/benchmarks/edge_harness/results/e2e_profiling_20260922/evidence/summary/README.md +++ b/benchmarks/edge_harness/results/e2e_profiling_20260922/evidence/summary/README.md @@ -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. |