From 68e0fd7cade9115b691ce004253dc66f5acef1dd Mon Sep 17 00:00:00 2001 From: tzhouam Date: Thu, 24 Sep 2026 13:37:57 +0800 Subject: [PATCH] Profile Spark BF16 on fork branch and audit S25 short vocoder --- .../audit_qwen_tts_short_vocoder.py | 143 + .../export_qwen_tts_vocoder_short_chunk.py | 191 + .../profile_qwen_tts_short_vocoder_cpu.py | 115 + .../profile_spark_bf16_omni_cpu.py | 112 + .../results/e2e_expansion_20260924/README.md | 18 + .../qwen_tts_talker_qualcomm/README.md | 2 +- .../s25/qnn_fp16_dlc/audit_report.json | 401 + .../s25/qnn_fp16_dlc/compile_report.json | 32 + .../s25/qnn_fp16_dlc/compile_submission.json | 12 + .../s25/qnn_fp16_dlc/device_output.npz | Bin 0 -> 168000 bytes .../s25/qnn_fp16_dlc/inference_report.json | 33 + .../qnn_fp16_dlc/inference_submission.json | 13 + .../qwen_tts_vocoder_qualcomm/README.md | 4 +- .../s25/qnn_fp16/compile_report.json | 32 + .../s25/qnn_fp16/compile_submission.json | 12 + .../s25/qnn_fp16/inference_report.json | 32 + .../s25/qnn_fp16/inference_submission.json | 13 + .../qnn_fp16/logs/jprl0k47p_runtime.log.gz | Bin 0 -> 132920 bytes .../s25/qnn_short_chunk/README.md | 38 + .../s25/qnn_short_chunk/compile_report.json | 32 + .../qnn_short_chunk/compile_submission.json | 13 + .../qnn_short_chunk/cpu_profile_report.json | 50 + .../qnn_short_chunk/dataset_submission.json | 16 + .../s25/qnn_short_chunk/eager_output.npz | Bin 0 -> 14818 bytes .../s25/qnn_short_chunk/export_report.json | 49 + .../s25/qnn_short_chunk/fixture.npz | Bin 0 -> 129614 bytes .../s25/qnn_short_chunk/inference_report.json | 32 + .../qnn_short_chunk/inference_submission.json | 13 + .../logs/jg9zmvqvp_runtime.log.gz | Bin 0 -> 95840 bytes .../s25/qnn_short_chunk/ort_output.npz | Bin 0 -> 14813 bytes .../qnn_short_chunk/upload_submission.json | 18 + .../s25/tflite_short_chunk/README.md | 27 + .../s25/tflite_short_chunk/audit_report.json | 86 + .../tflite_short_chunk/compile_report.json | 32 + .../compile_submission.json | 13 + .../s25/tflite_short_chunk/device_output.npz | Bin 0 -> 9294 bytes .../tflite_short_chunk/inference_report.json | 33 + .../inference_submission.json | 13 + .../tflite_short_chunk/profile_report.json | 5362 ++++++++++++ .../profile_submission.json | 13 + .../evidence/spark_bf16_wsl_cpu/README.md | 59 + .../accept_branch_report.json | 7750 +++++++++++++++++ .../spark_bf16_wsl_cpu/accept_report.json | 7750 +++++++++++++++++ .../branch_run_manifest.json | 62 + .../parity_branch_report.json | 3694 ++++++++ .../spark_bf16_wsl_cpu/parity_report.json | 3694 ++++++++ .../profile20_branch_report.json | 4193 +++++++++ .../spark_bf16_wsl_cpu/profile20_report.json | 4192 +++++++++ .../spark_bf16_wsl_cpu/weight_manifest.json | 23 + .../evidence/summary/README.md | 10 +- docs/design/omni_edge_e2e_roadmap.md | 18 + 51 files changed, 38444 insertions(+), 6 deletions(-) create mode 100644 benchmarks/edge_harness/experiments/audit_qwen_tts_short_vocoder.py create mode 100644 benchmarks/edge_harness/experiments/export_qwen_tts_vocoder_short_chunk.py create mode 100644 benchmarks/edge_harness/experiments/profile_qwen_tts_short_vocoder_cpu.py create mode 100644 benchmarks/edge_harness/experiments/profile_spark_bf16_omni_cpu.py create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/s25/qnn_fp16_dlc/audit_report.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/s25/qnn_fp16_dlc/compile_report.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/s25/qnn_fp16_dlc/compile_submission.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/s25/qnn_fp16_dlc/device_output.npz create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/s25/qnn_fp16_dlc/inference_report.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/s25/qnn_fp16_dlc/inference_submission.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_fp16/compile_report.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_fp16/compile_submission.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_fp16/inference_report.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_fp16/inference_submission.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_fp16/logs/jprl0k47p_runtime.log.gz create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/README.md create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/compile_report.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/compile_submission.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/cpu_profile_report.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/dataset_submission.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/eager_output.npz create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/export_report.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/fixture.npz create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/inference_report.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/inference_submission.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/logs/jg9zmvqvp_runtime.log.gz create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/ort_output.npz create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/upload_submission.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/README.md create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/audit_report.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/compile_report.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/compile_submission.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/device_output.npz create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/inference_report.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/inference_submission.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/profile_report.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/profile_submission.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/README.md create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/accept_branch_report.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/accept_report.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/branch_run_manifest.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/parity_branch_report.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/parity_report.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/profile20_branch_report.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/profile20_report.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/weight_manifest.json diff --git a/benchmarks/edge_harness/experiments/audit_qwen_tts_short_vocoder.py b/benchmarks/edge_harness/experiments/audit_qwen_tts_short_vocoder.py new file mode 100644 index 000000000..5d96a82c3 --- /dev/null +++ b/benchmarks/edge_harness/experiments/audit_qwen_tts_short_vocoder.py @@ -0,0 +1,143 @@ +#!/usr/bin/env python3 +"""Audit a two-frame Code2Wav S25 candidate against its local CPU export.""" + +from __future__ import annotations + +import argparse +import hashlib +import json +import math +from collections import Counter +from pathlib import Path + +import numpy as np + + +def sha256(path: Path) -> str: + with path.open("rb") as stream: + return hashlib.file_digest(stream, "sha256").hexdigest() + + +def waveform(path: Path, name: str) -> np.ndarray: + with np.load(path, allow_pickle=False) as data: + if data.files != [name]: + raise ValueError(f"{path}: expected one output named {name}") + value = np.asarray(data[name]) + if value.shape != (1, 3840) or value.dtype != np.float32 or not np.isfinite(value).all(): + raise ValueError(f"{path}: expected finite float32[1,3840], got {value.shape}/{value.dtype}") + return value + + +def compare(reference: np.ndarray, observed: np.ndarray) -> dict: + a = reference.astype(np.float64).ravel() + b = observed.astype(np.float64).ravel() + delta = float(np.linalg.norm(a - b)) + norm = float(np.linalg.norm(a)) + return { + "relative_l2": delta / norm, + "snr_db": 20 * math.log10(norm / delta) if delta else None, + "max_abs": float(np.max(np.abs(a - b))), + "reference_rms": float(np.sqrt(np.mean(a * a))), + "output_rms": float(np.sqrt(np.mean(b * b))), + "output_saturated_fraction_abs_ge_0_999": float(np.mean(np.abs(b) >= 0.999)), + } + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + for name in ("export-report", "upload-report", "dataset-report", "fixture", + "cpu-output", "eager-output", "compile-report", "inference-report", + "device-output", "output-report"): + parser.add_argument(f"--{name}", type=Path, required=True) + parser.add_argument("--profile-report", type=Path) + parser.add_argument("--expected-compile-options", default="--target_runtime qnn_dlc --qnn_options default_graph_htp_precision=FLOAT16") + parser.add_argument("--expected-run-options", default="--compute_unit npu") + args = parser.parse_args() + export = json.loads(args.export_report.read_text()) + upload = json.loads(args.upload_report.read_text()) + dataset = json.loads(args.dataset_report.read_text()) + compile_job = json.loads(args.compile_report.read_text()) + inference = json.loads(args.inference_report.read_text()) + profile = json.loads(args.profile_report.read_text()) if args.profile_report else None + if export["context_frames"] != 72 or export["chunk_frames"] != 2: + raise ValueError("export differs from the tested two-frame window") + if (upload["source_sha256"] != export["onnx_sha256"] + or compile_job["source_model_id"] != upload["source_model_id"] + or compile_job["status"] != "SUCCESS" + or compile_job["options"] != args.expected_compile_options): + raise ValueError("compile does not use the verified short-window artifact") + if (dataset["fixture_sha256"] != export["short_fixture_sha256"] + or dataset["input_shape"] != [1, 512, 74] + or dataset["sample_count"] != 1 + or sha256(args.fixture) != dataset["fixture_sha256"]): + raise ValueError("hosted input is not the retained short-window fixture") + if (inference["status"] != "SUCCESS" + or inference["model_id"] != compile_job["target_model_id"] + or inference["input_dataset_id"] != dataset["dataset_id"] + or inference["options"] != args.expected_run_options + or inference["device"] != compile_job["device"] + or inference["device"]["name"] != "Samsung Galaxy S25"): + raise ValueError("inference differs from the exact S25 target/fixture/route") + if (sha256(args.cpu_output) != export["ort_output_sha256"] + or sha256(args.eager_output) != export["eager_output_sha256"]): + raise ValueError("local CPU outputs differ from export parity evidence") + cpu = waveform(args.cpu_output, "wav") + eager = waveform(args.eager_output, "wav") + hosted = waveform(args.device_output, "output_0__0") + report = { + "scope": "one two-frame Qwen3-TTS vocoder component on hosted S25; no complete stream", + "status": "component_inference_numeric_measured", + "device": inference["device"], + "source_model_id": compile_job["source_model_id"], + "target_model_id": compile_job["target_model_id"], + "input_dataset_id": dataset["dataset_id"], + "jobs": {"compile": compile_job["job_id"], "inference": inference["job_id"]}, + "route": {"compile_options": compile_job["options"], "run_options": inference["options"]}, + "files": {name: {"bytes": path.stat().st_size, "sha256": sha256(path)} + for name, path in {"fixture": args.fixture, "ort_cpu": args.cpu_output, + "eager_cpu": args.eager_output, + "device_output": args.device_output}.items()}, + "ort_cpu_vs_device": compare(cpu, hosted), + "eager_cpu_vs_device": compare(eager, hosted), + "limits": [ + "One fixed two-frame waveform has no listening-quality tolerance.", + "The 72-frame input history, talker, predictor and stage handoff did not run on the device.", + "No persistent state, admission, cancellation or complete TTS stream was tested.", + ], + } + if profile is not None: + if (profile["status"] != "SUCCESS" + or profile["model_id"] != inference["model_id"] + or profile["device"] != inference["device"] + or profile["options"] != inference["options"] + or profile["shapes"] != {"quantized": [[1, 512, 74], "float32"]}): + raise ValueError("placement profile did not use the audited device/artifact") + execution = profile["profile"] + samples = execution["execution_summary"]["all_inference_times"] + if not samples or any(not isinstance(t, int) or t <= 0 for t in samples): + raise ValueError("placement profile has no valid timing samples") + units = Counter(row.get("compute_unit") for row in execution["execution_detail"]) + if not units: + raise ValueError("placement profile has no node placement detail") + ordered = sorted(samples) + report["jobs"]["profile"] = profile["job_id"] + report["profile"] = { + "sample_count": len(samples), + "min_us": ordered[0], + "nearest_rank_p50_us": ordered[math.ceil(0.5 * len(samples)) - 1], + "nearest_rank_p95_us": ordered[math.ceil(0.95 * len(samples)) - 1], + "reported_peak_memory_bytes": execution["execution_summary"]["estimated_inference_peak_memory"], + "compute_unit_row_counts": dict(units), + "profile_input": "Workbench generated input with audited tensor shape; the waveform inference used the retained fixture", + } + report["status"] = "component_inference_numeric_and_placement_measured" + else: + report["limits"].append("Requested accelerator execution is not verified node placement without a profile.") + args.output_report.write_text(json.dumps(report, indent=2) + "\n") + print(json.dumps({"status": report["status"], + "comparison": report["ort_cpu_vs_device"], + "profile": report.get("profile")}, indent=2)) + + +if __name__ == "__main__": + main() diff --git a/benchmarks/edge_harness/experiments/export_qwen_tts_vocoder_short_chunk.py b/benchmarks/edge_harness/experiments/export_qwen_tts_vocoder_short_chunk.py new file mode 100644 index 000000000..63330b11e --- /dev/null +++ b/benchmarks/edge_harness/experiments/export_qwen_tts_vocoder_short_chunk.py @@ -0,0 +1,191 @@ +#!/usr/bin/env python3 +"""Export and numerically gate a shorter Qwen3-TTS Code2Wav window. + +The retained 25-frame graph takes 72 context frames plus 25 new frames. This +experiment keeps the same decoder and 72-frame history while reducing the new +chunk to two frames, before any device compilation or performance claim. +""" + +from __future__ import annotations + +import argparse +import hashlib +import json +import math +import time +from pathlib import Path + +import numpy as np +import onnx +import onnxruntime as ort +import torch +from torch import nn + +from vllm_omni.edge.decoder_export import load_code2wav_decoder + + +class QuantizedWindowDecoder(nn.Module): + """The existing decoder after RVQ lookup, with an explicit context window.""" + + def __init__(self, decoder: nn.Module, chunk_frames: int) -> None: + super().__init__() + self.decoder = decoder + self.chunk_frames = chunk_frames + self.hop = int(decoder.total_upsample) + + def forward(self, quantized: torch.Tensor) -> torch.Tensor: + decoder = self.decoder + hidden = decoder.pre_conv(quantized).transpose(1, 2) + hidden = decoder.pre_transformer(inputs_embeds=hidden).last_hidden_state + hidden = hidden.permute(0, 2, 1) + for blocks in decoder.upsample: + for block in blocks: + hidden = block(hidden) + for block in decoder.decoder: + hidden = block(hidden) + return hidden.clamp(-1, 1).reshape(1, -1)[:, -self.chunk_frames * self.hop :] + + +def sha256(path: Path) -> str: + with path.open("rb") as stream: + return hashlib.file_digest(stream, "sha256").hexdigest() + + +def compare(reference: np.ndarray, output: np.ndarray) -> dict: + a = reference.astype(np.float64).ravel() + b = output.astype(np.float64).ravel() + error = float(np.linalg.norm(a - b)) + norm = float(np.linalg.norm(a)) + return { + "relative_l2": error / norm, + "snr_db": 20 * math.log10(norm / error) if error else None, + "max_abs": float(np.max(np.abs(a - b))), + "reference_rms": float(np.sqrt(np.mean(a * a))), + "output_rms": float(np.sqrt(np.mean(b * b))), + } + + +def strip_export_guards(path: Path) -> None: + graph = onnx.load(str(path)) + nodes = graph.graph.node + producers = {out: node for node in nodes for out in node.output} + rename: dict[str, str] = {} + for node in list(nodes): + if node.op_type != "Where" or node.input[0] not in producers: + continue + guard = producers[node.input[0]] + if guard.op_type != "IsNaN": + continue + source = guard.input[0] + if source not in node.input[1:]: + continue + rename[node.output[0]] = source + nodes.remove(node) + nodes.remove(guard) + for node in nodes: + for index, value in enumerate(node.input): + if value in rename: + node.input[index] = rename[value] + if node.op_type == "Reshape": + for attribute in node.attribute: + if attribute.name == "allowzero": + attribute.i = 0 + for value in graph.graph.output: + if value.name in rename: + value.name = rename[value.name] + onnx.save(graph, str(path)) + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + for name in ("model", "fixture", "long-reference", "onnx-output", "fixture-output", + "eager-output", "ort-output", "report"): + parser.add_argument(f"--{name}", type=Path, required=True) + parser.add_argument("--chunk-frames", type=int, default=2) + parser.add_argument("--context-frames", type=int, default=72) + args = parser.parse_args() + if args.chunk_frames <= 0 or args.context_frames != 72 or args.chunk_frames > 25: + raise ValueError("this fixture supports 72 history frames and 1-25 new frames") + with np.load(args.fixture, allow_pickle=False) as source: + if source.files != ["quantized"]: + raise ValueError("unexpected retained fixture") + full_input = np.asarray(source["quantized"]) + if full_input.shape != (1, 512, 97) or full_input.dtype != np.float32: + raise ValueError("retained vocoder fixture differs from expected shape/dtype") + short_input = np.ascontiguousarray(full_input[:, :, : args.context_frames + args.chunk_frames]) + if not np.isfinite(short_input).all(): + raise ValueError("fixture contains nonfinite values") + + decoder = load_code2wav_decoder(str(args.model)) + model = QuantizedWindowDecoder(decoder, args.chunk_frames).eval() + with torch.inference_mode(): + eager = model(torch.from_numpy(short_input)).detach().numpy() + expected_shape = (1, args.chunk_frames * model.hop) + if eager.shape != expected_shape or not np.isfinite(eager).all(): + raise ValueError("eager short-window output violates contract") + args.onnx_output.parent.mkdir(parents=True, exist_ok=True) + started = time.perf_counter() + program = torch.onnx.export( + model, (torch.from_numpy(short_input),), + input_names=["quantized"], output_names=["wav"], + opset_version=17, dynamo=True, optimize=True, + ) + program.save(str(args.onnx_output)) + strip_export_guards(args.onnx_output) + export_s = time.perf_counter() - started + exported_model = onnx.load(str(args.onnx_output), load_external_data=False) + options = ort.SessionOptions() + options.intra_op_num_threads = 4 + session = ort.InferenceSession(str(args.onnx_output), sess_options=options, + providers=["CPUExecutionProvider"]) + observed = np.asarray(session.run(["wav"], {"quantized": short_input})[0]) + if observed.shape != expected_shape or not np.isfinite(observed).all(): + raise ValueError("ORT short-window output violates contract") + with np.load(args.long_reference, allow_pickle=False) as reference: + if reference.files != ["wav"] or reference["wav"].shape != (1, 48000): + raise ValueError("long-window reference differs from retained CPU output") + long_prefix = np.asarray(reference["wav"][:, : expected_shape[1]]) + for path, key, value in ( + (args.fixture_output, "quantized", short_input), + (args.eager_output, "wav", eager), + (args.ort_output, "wav", observed), + ): + path.parent.mkdir(parents=True, exist_ok=True) + np.savez_compressed(path, **{key: value}) + report = { + "scope": "one synthetic first short vocoder window; no device execution or complete TTS stream", + "model_snapshot": str(args.model.resolve()), + "model_snapshot_revision": args.model.resolve().name, + "model_weight_sha256": sha256(args.model / "speech_tokenizer" / "model.safetensors"), + "torch_version": torch.__version__, + "onnx_version": onnx.__version__, + "onnxruntime_version": ort.__version__, + "actual_opsets": {entry.domain or "ai.onnx": entry.version + for entry in exported_model.opset_import}, + "source_fixture_sha256": sha256(args.fixture), + "long_cpu_reference_sha256": sha256(args.long_reference), + "context_frames": args.context_frames, + "chunk_frames": args.chunk_frames, + "input_shape": list(short_input.shape), + "output_shape": list(expected_shape), + "export_s_not_inference": export_s, + "onnx_sha256": sha256(args.onnx_output), + "short_fixture_sha256": sha256(args.fixture_output), + "eager_output_sha256": sha256(args.eager_output), + "ort_output_sha256": sha256(args.ort_output), + "ort_vs_eager": compare(eager, observed), + "short_eager_vs_25_frame_prefix": compare(long_prefix, eager), + "limits": [ + "The short-window graph still requires its prior 72 quantized frames from a model adapter.", + "Prefix agreement is tested on one retained synthetic fixture, not a speech-quality set.", + "CPU export parity does not establish target compilation, placement or memory admission.", + ], + } + 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({"ort_vs_eager": report["ort_vs_eager"], + "short_vs_long": report["short_eager_vs_25_frame_prefix"]}, indent=2)) + + +if __name__ == "__main__": + main() diff --git a/benchmarks/edge_harness/experiments/profile_qwen_tts_short_vocoder_cpu.py b/benchmarks/edge_harness/experiments/profile_qwen_tts_short_vocoder_cpu.py new file mode 100644 index 000000000..0c50de69c --- /dev/null +++ b/benchmarks/edge_harness/experiments/profile_qwen_tts_short_vocoder_cpu.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python3 +"""Profile the pinned two-frame Code2Wav ONNX artifact on local ORT CPU.""" + +from __future__ import annotations + +import argparse +import hashlib +import json +import math +import platform +import sys +import time +from pathlib import Path + +import numpy as np +import onnxruntime as ort +import psutil + + +def sha256(path: Path) -> str: + with path.open("rb") as stream: + return hashlib.file_digest(stream, "sha256").hexdigest() + + +def rank(values: list[float], fraction: float) -> float: + ordered = sorted(values) + return ordered[math.ceil(fraction * len(ordered)) - 1] + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + for name in ("export-report", "model", "fixture", "reference-output", "report"): + parser.add_argument(f"--{name}", type=Path, required=True) + parser.add_argument("--threads", type=int, default=4) + parser.add_argument("--warmups", type=int, default=1) + parser.add_argument("--repeats", type=int, default=20) + args = parser.parse_args() + if args.threads < 1 or args.warmups < 1 or args.repeats < 20: + raise ValueError("expected positive threads and at least one warmup / 20 samples") + export = json.loads(args.export_report.read_text()) + if (sha256(args.model) != export["onnx_sha256"] + or sha256(args.fixture) != export["short_fixture_sha256"] + or sha256(args.reference_output) != export["ort_output_sha256"]): + raise ValueError("model, fixture or reference differs from the audited export") + with np.load(args.fixture, allow_pickle=False) as data: + if data.files != ["quantized"]: + raise ValueError("unexpected fixture schema") + x = np.asarray(data["quantized"]) + with np.load(args.reference_output, allow_pickle=False) as data: + if data.files != ["wav"]: + raise ValueError("unexpected reference schema") + reference = np.asarray(data["wav"]) + if x.shape != (1, 512, 74) or x.dtype != np.float32 or reference.shape != (1, 3840): + raise ValueError("short-window tensor contract differs") + options = ort.SessionOptions() + options.intra_op_num_threads = args.threads + started = time.perf_counter() + session = ort.InferenceSession(str(args.model), sess_options=options, + providers=["CPUExecutionProvider"]) + load_s = time.perf_counter() - started + if session.get_providers() != ["CPUExecutionProvider"]: + raise RuntimeError("the profile did not use ORT CPU") + process = psutil.Process() + loaded_rss = process.memory_info().rss + samples: list[float] = [] + for index in range(args.warmups + args.repeats): + started = time.perf_counter() + output = np.asarray(session.run(["wav"], {"quantized": x})[0]) + elapsed = time.perf_counter() - started + if output.shape != reference.shape or not np.isfinite(output).all(): + raise ValueError("profile output violates waveform contract") + relative_l2 = float(np.linalg.norm((output - reference).astype(np.float64)) + / np.linalg.norm(reference.astype(np.float64))) + if relative_l2 > 1e-6: + raise ValueError(f"profile output drifted from its own CPU reference: {relative_l2}") + if index >= args.warmups: + samples.append(elapsed) + report = { + "scope": "one fixed two-frame Code2Wav component on HX370 WSL ORT CPU; no complete TTS stream", + "status": "component_cpu_profiled", + "platform": platform.platform(), + "cpu": next((line.split(":", 1)[1].strip() + for line in Path("/proc/cpuinfo").read_text().splitlines() + if line.startswith("model name")), platform.processor()), + "python_version": sys.version.split()[0], + "checkpoint_revision": export["model_snapshot_revision"], + "power_condition": "not recorded", + "ort_version": ort.__version__, + "provider": session.get_providers(), + "threads": args.threads, + "model_sha256": export["onnx_sha256"], + "fixture_sha256": export["short_fixture_sha256"], + "load_s": load_s, + "rss_after_load_bytes": loaded_rss, + "warmups": args.warmups, + "sample_count": len(samples), + "samples_s": samples, + "nearest_rank_p50_s": rank(samples, 0.5), + "nearest_rank_p95_s": rank(samples, 0.95), + "audio_duration_s": 3840 / 24000, + "median_component_rtf": rank(samples, 0.5) / (3840 / 24000), + "limits": [ + "The input is one retained synthetic window, and no talker or predictor ran.", + "This host CPU timing cannot be transplanted to the S25 or another SoC.", + ], + } + args.report.parent.mkdir(parents=True, exist_ok=True) + args.report.write_text(json.dumps(report, indent=2) + "\n") + print(json.dumps({k: report[k] for k in + ("sample_count", "nearest_rank_p50_s", "nearest_rank_p95_s", + "median_component_rtf")}, indent=2)) + + +if __name__ == "__main__": + main() diff --git a/benchmarks/edge_harness/experiments/profile_spark_bf16_omni_cpu.py b/benchmarks/edge_harness/experiments/profile_spark_bf16_omni_cpu.py new file mode 100644 index 000000000..f8643a980 --- /dev/null +++ b/benchmarks/edge_harness/experiments/profile_spark_bf16_omni_cpu.py @@ -0,0 +1,112 @@ +#!/usr/bin/env python3 +"""Profile serial complete Spark BF16 text requests through the Omni CPU stage.""" + +from __future__ import annotations + +import argparse +import asyncio +import hashlib +import json +import math +import time +from pathlib import Path + +from vllm_omni.edge.local.engine import LocalTextEngine +from vllm_omni.edge.local.manifest import runtime_versions +from vllm_omni.edge.local.plan import plan_text_session +from vllm_omni.edge.local.prompts import acceptance_prompts + + +def rank(values: list[float], fraction: float) -> float: + ordered = sorted(values) + return ordered[math.ceil(fraction * len(ordered)) - 1] + + +async def profile(args: argparse.Namespace) -> dict: + plan = plan_text_session( + str(args.model), max_model_len=4096, max_num_seqs=1, + max_num_batched_tokens=2048, enforce_eager=True, + ) + if not plan.admitted or plan.selected is None or plan.selected.device_id != "cpu": + raise RuntimeError("the pinned Spark BF16 run was not admitted on CPU") + name, prompt = acceptance_prompts()[0] + runs = [] + async with LocalTextEngine(plan) as engine: + for index in range(args.warmups + args.repeats): + session = engine.open_session() + started = time.perf_counter() + request_id, stream = await engine.submit( + session, prompt, max_tokens=args.max_tokens, + temperature=0.0, ignore_eos=True, + ) + async for _ in stream: + pass + wall_s = time.perf_counter() - started + record = engine.records[request_id] + if record.error or record.cancelled or not record.finished or record.output_tokens != args.max_tokens: + raise RuntimeError(f"request {index} did not complete the specified text workload") + digest = hashlib.sha256(json.dumps(record.output_token_ids).encode()).hexdigest() + runs.append({ + "kind": "warmup" if index < args.warmups else "measured", + "prompt_name": name, + "prompt_tokens": record.prompt_tokens, + "output_tokens": record.output_tokens, + "token_ids_sha256": digest, + "wall_s": wall_s, + "ttft_s": record.ttft_s, + "decode_tok_per_s": record.decode_tok_per_s, + "stream": stream.stats(), + }) + engine.close_session(session.session_id) + placement = engine.report_placement() + usage = engine.report_usage() + load_s = engine.load_seconds + measured = runs[args.warmups:] + if len({row["token_ids_sha256"] for row in runs}) != 1: + raise RuntimeError("serial greedy requests produced different token sequences") + report = { + "scope": "Spark-X2.5-1.7B dense BF16 complete text requests through Omni on WSL HX370 CPU", + "status": "scoped_e2e_profiled", + "model": str(args.model.resolve()), + "runtime": runtime_versions().to_dict(), + "plan": plan.to_dict(), + "placement": placement, + "usage": usage, + "load_s_not_request_timing": load_s, + "warmup_count": args.warmups, + "measured_count": args.repeats, + "max_new_tokens": args.max_tokens, + "runs": runs, + "nearest_rank_p50_wall_s": rank([r["wall_s"] for r in measured], 0.5), + "nearest_rank_p95_wall_s": rank([r["wall_s"] for r in measured], 0.95), + "nearest_rank_p50_ttft_s": rank([r["ttft_s"] for r in measured], 0.5), + "nearest_rank_p95_ttft_s": rank([r["ttft_s"] for r in measured], 0.95), + "limits": [ + "One short prompt and one concurrency level; the acceptance and parity suites are separate evidence.", + "The host power condition was not controlled or recorded as a sustained thermal test.", + ], + } + return report + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--model", type=Path, required=True) + parser.add_argument("--report", type=Path, required=True) + parser.add_argument("--warmups", type=int, default=1) + parser.add_argument("--repeats", type=int, default=20) + parser.add_argument("--max-tokens", type=int, default=64) + args = parser.parse_args() + if args.warmups < 1 or args.repeats < 20 or args.max_tokens < 1: + parser.error("expected at least one warmup, 20 measured requests and positive token count") + report = asyncio.run(profile(args)) + args.report.parent.mkdir(parents=True, exist_ok=True) + args.report.write_text(json.dumps(report, indent=2) + "\n") + print(json.dumps({key: report[key] for key in ( + "status", "measured_count", "nearest_rank_p50_wall_s", "nearest_rank_p95_wall_s", + "nearest_rank_p50_ttft_s", "nearest_rank_p95_ttft_s", + )}, indent=2)) + + +if __name__ == "__main__": + main() diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/README.md b/benchmarks/edge_harness/results/e2e_expansion_20260924/README.md index 190ab0d3b..74b1ae211 100644 --- a/benchmarks/edge_harness/results/e2e_expansion_20260924/README.md +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/README.md @@ -1,5 +1,23 @@ # 2026-09-24 Qualcomm component expansion +A separate [complete Spark 1.7B BF16 WSL CPU run](evidence/spark_bf16_wsl_cpu/README.md) +now uses both verified upstream weight shards in the fork-branch Omni local text +route. Twelve 128-token requests passed cancellation and exact greedy-token +parity against standalone vLLM. One warmup plus 20 serial 64-token complete +requests measured nearest-rank p50/p95 wall time **5.411/5.751 s** and +TTFT **0.129/0.146 s** on HX370 WSL CPU. This qualifies the stated text +workload only. A separate neighboring-checkout profile is retained in the +evidence directory with its own provenance. A new [S25 two-frame Code2Wav candidate](evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/README.md) +matched eager and ONNX CPU on one fixture, but its FP16 QNN DLC failed +NPU-requested inference at the Workbench device-memory limit, just as the +25-frame artifact did. Neither result is a complete mobile TTS stream. +A [separate TFLite GPU-requested two-frame inference](evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/README.md) +returned a finite unsaturated waveform at 2.325% relative L2 / 32.67 dB SNR +against local ONNX CPU on the same fixture. Its 100-sample component p50/p95 +was **0.559/1.052 s** for 0.16 s audio, with 403 CPU and 335 GPU placement +rows and a median component RTF of 3.49. Listening quality and playable +complete-stream behavior remain open. + The [Qwen3-TTS vocoder study](evidence/qwen_tts_vocoder_qualcomm/README.md) reuses a retained fixed-shape Code2Wav export and historical Workbench input to test numerical behavior on SA8775P and other Qualcomm settings. The fresh SA8775P GPU-requested inference produces a saturated waveform, while the same binary's CPU-requested output on the exact SA device matches ONNX CPU within 4.13e-6 relative L2. Its 100-sample CPU-requested component profile had p50/p95 5.384/5.534 s with all 738 execution-detail rows on CPU. A FP32-preserving GPU-option control still saturated 84.89% of samples, so that option did not repair the tested path. RB3 GPU-requested execution produces an unsaturated but 15.73%-divergent waveform; its fresh 100-sample mixed CPU/GPU component p50/p95 was 3.099/3.133 s, not a usable TTS timing claim. On the exact RB3 device, the same binary requested on CPU matched original ONNX CPU within 4.13e-6 relative L2 on the retained fixture; its 47-sample component profile measured p50/p95 12.727/13.424 s with all 738 execution-detail rows on CPU. This is a major streaming-latency blocker. A single-fixture-calibrated RB3 INT8 QNN vocoder returned a finite but 66.93%-relative-L2 divergent waveform (3.49 dB SNR) versus ONNX CPU; its 100-sample component profile was p50/p95 1.971/1.992 s with all 728 execution-detail rows on NPU; these timings describe numerically unqualified audio. X Elite ONNX CPU output matches the local ONNX Runtime reference on the retained fixture; its 94-sample component p50/p95 was 6.384/6.644 s with all execution-detail rows on CPU. Corrected X Elite DirectML inference and profile both failed during provider initialization; separate FP16 QNN DLC inference returned an unsaturated waveform at 1.138% relative L2 / 38.88 dB SNR against original ONNX CPU; its placement profile timed out during QNN graph preparation without samples. A separate SA8775P FP16 QNN vocoder compile passed, but same-fixture NPU-requested inference failed after compilation without a waveform or placement samples. Fresh S24 and S25 CPU-requested TFLite vocoder inferences matched ONNX CPU within 4.04e-6 relative L2 on the retained fixture. S25 measured 100 component samples at p50/p95 4.418/4.641 s with all 738 execution-detail rows on CPU; S24 measured 100 at 4.826/4.958 s with all 738 rows on CPU. Separate explicit INT8 and W8A16 QDQ ONNX exports checked on local ORT CPU failed the same-fixture numerical gate at 246.97% and 331.83% waveform relative L2, respectively. S25 CPU talker inference preserved token 80 and its 100-sample component profile measured p50/p95 30.161/31.301 ms with all 1,800 rows on CPU. No complete on-device TTS stream or model-quality qualification is claimed. A local HX370 x86-64 LiteRT CPU control of the identical SA/RB3 TFLite binary matched the original ONNX CPU waveform within 3.45e-6 relative L2. The SA saturation is therefore not universal to the converted artifact; the exact SA CPU control passed numerical and placement checks, while the faulty GPU delegate operation remains unidentified. diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/README.md b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/README.md index 8c77cfad2..132efeff1 100644 --- a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/README.md +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/README.md @@ -4,7 +4,7 @@ This is **one fixed-cache-bucket talker decode step**, not complete Qwen3-TTS ge The deterministic synthetic input dataset `d7dw6pgy2` has SHA256 `0bf538e1b64dfc9737dc4f925d61c6e4ffa5075a5dcd7afb1e85ac3bd2d9afea`. A local ONNX Runtime 1.29 CPU reference output has SHA256 `ee0ead70e33c02c7d3d6bcb757c5cf0fcbb9eb6fc75c34abfbe8a4479657d5be`. The fixture exercises the stated tensor shapes, but does not represent a real text-to-speech request or establish token/audio quality. -Historical FP16 QNN context-binary [S24](s24/compile_report.json), [S25](s25/compile_report.json), [SA8775P](sa8775p/compile_report.json), and [Snapdragon X Elite](xelite/compile_report.json) compile jobs succeeded. Same-fixture NPU-requested inference succeeded on all four, but **all changed the CPU reference top-1 logit** on this synthetic step: CPU token 80 versus S24/SA/X Elite 1720 and S25 412. The [S24](s24/audit_report.json), [S25](s25/audit_report.json), [SA8775P](sa8775p/audit_report.json) and [X Elite](xelite/audit_report.json) audits report logits relative L2 **9.33%/8.99%/9.43%/8.57%**, respectively, with maximum K/V relative L2 **11.23%/11.71%/11.54%/11.50%**. These FP16 artifacts are numerically unqualified for this fixture; a successful graph execution is not speech-token parity. The [RB3 compile](rb3/compile_report.json) rejected floating-point input on this device. These are artifact-specific outcomes, not full-model support claims. +Historical FP16 QNN context-binary [S24](s24/compile_report.json), [S25](s25/compile_report.json), [SA8775P](sa8775p/compile_report.json), and [Snapdragon X Elite](xelite/compile_report.json) compile jobs succeeded. Same-fixture NPU-requested inference succeeded on all four, but **all changed the CPU reference top-1 logit** on this synthetic step: CPU token 80 versus S24/SA/X Elite 1720 and S25 412. The [S24](s24/audit_report.json), [S25](s25/audit_report.json), [SA8775P](sa8775p/audit_report.json) and [X Elite](xelite/audit_report.json) audits report logits relative L2 **9.33%/8.99%/9.43%/8.57%**, respectively, with maximum K/V relative L2 **11.23%/11.71%/11.54%/11.50%**. These FP16 artifacts are numerically unqualified for this fixture; a successful graph execution is not speech-token parity. A separate [S25 FP16 QNN DLC compile](s25/qnn_fp16_dlc/compile_report.json) and [same-fixture inference](s25/qnn_fp16_dlc/inference_report.json) also executed, but the [audit](s25/qnn_fp16_dlc/audit_report.json) found 8.77% logits relative L2, 11.27% maximum new-cache relative L2 and token 1720 instead of CPU token 80. Changing from the historical context-binary conversion to this DLC artifact did not recover the numerical gate. The [RB3 compile](rb3/compile_report.json) rejected floating-point input on this device. These are artifact-specific outcomes, not full-model support claims. Explicit [X Elite ONNX CPU](xelite/cpu_fallback/compile_report.json) and [SA8775P TFLite CPU](sa8775p/cpu_fallback/compile_report.json) fallback compiles succeeded from the same source. The same-fixture [X Elite CPU-requested inference](xelite/cpu_fallback/inference_report.json) succeeded. Its [audit](xelite/cpu_fallback/audit_report.json) found logits relative L2 2.07e-5, maximum new-K/V relative L2 2.18e-5, and preserved ONNX CPU top-1 speech token 80. The [CPU-requested placement profile](xelite/cpu_fallback/profile_report.json) returned 100 decode-step component samples at nearest-rank p50/p95 **191.414/309.428 ms**, with all **1,744 execution-detail rows on CPU**. The 142.921 ms estimated-time field is the sample minimum; reported inference peak memory was 1,928,019,968 bytes. The [SA8775P TFLite CPU-requested inference](sa8775p/cpu_fallback/inference_report.json) also succeeded. Its [audit](sa8775p/cpu_fallback/audit_report.json) found logits relative L2 3.33e-5, maximum new-K/V relative L2 3.41e-5, and preserved CPU top-1 speech token 80. The [CPU-requested placement profile](sa8775p/cpu_fallback/profile_report.json) returned 100 decode-step component samples at nearest-rank p50/p95 **52.635/76.925 ms**, with all **1,800 execution-detail rows on CPU**. The 45.688 ms estimated-time field is the sample minimum; reported inference peak memory was 1,913,794,560 bytes. Both explicit CPU routes are numerically close on one decode step, not complete talker loops or TTS deployments. diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/s25/qnn_fp16_dlc/audit_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/s25/qnn_fp16_dlc/audit_report.json new file mode 100644 index 000000000..55879838c --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/s25/qnn_fp16_dlc/audit_report.json @@ -0,0 +1,401 @@ +{ + "scope": "one synthetic fixed-cache 28-layer Qwen3-TTS talker decode step; no complete TTS stream", + "status": "component_executed_numeric_measured", + "device": { + "name": "Samsung Galaxy S25", + "os": "15", + "attributes": [ + "os:android", + "framework:tflite", + "framework:onnx", + "abi:aarch64-android", + "vendor:samsung", + "format:phone", + "chipset:qualcomm-snapdragon-8-elite-for-galaxy", + "chipset:sm8750-ac", + "hexagon:v79", + "soc-model:69", + "htp-supports-fp16:true", + "htp-supports-weight-sharing:true", + "framework:qnn" + ] + }, + "compile_job_id": "jgolry1kg", + "inference_job_id": "jg9zmv98p", + "source_model_id": "mq3xre4rq", + "target_model_id": "mnlzdl4oq", + "input_dataset_id": "d7dw6pgy2", + "requested_run_options": "--compute_unit npu", + "files": { + "source_onnx": { + "bytes": 1776377476, + "sha256": "41feb08517678e94d9301e992d0df610fc60e7c9faba5600703298c86554fd22" + }, + "fixture": { + "bytes": 54591500, + "sha256": "0bf538e1b64dfc9737dc4f925d61c6e4ffa5075a5dcd7afb1e85ac3bd2d9afea" + }, + "cpu_reference": { + "bytes": 237615, + "sha256": "ee0ead70e33c02c7d3d6bcb757c5cf0fcbb9eb6fc75c34abfbe8a4479657d5be" + }, + "device_output": { + "bytes": 168000, + "sha256": "f836e59cd2572556a9b6c0092fa244a4f46a408442643e53c60e9a4093602c5e" + } + }, + "tensor_comparison": { + "logits": { + "relative_l2": 0.0876850526212223, + "max_abs_error": 1.3075941801071167, + "reference_rms": 3.7322664515389006, + "output_rms": 3.754969774544142, + "cpu_top1": 80, + "device_top1": 1720, + "top1_matches": false + }, + "k_new_0": { + "relative_l2": 0.0005230155784396237, + "max_abs_error": 0.0037479400634765625, + "reference_rms": 1.1349352034374294, + "output_rms": 1.1348859231876618 + }, + "v_new_0": { + "relative_l2": 0.000362212102381853, + "max_abs_error": 0.00020900368690490723, + "reference_rms": 0.1383137764927112, + "output_rms": 0.1383144368591086 + }, + "k_new_1": { + "relative_l2": 0.001540598700847705, + "max_abs_error": 0.0086439847946167, + "reference_rms": 1.4773734279001252, + "output_rms": 1.4772890926361812 + }, + "v_new_1": { + "relative_l2": 0.0015613755499334814, + "max_abs_error": 0.0009385757148265839, + "reference_rms": 0.162893856079411, + "output_rms": 0.16291330617946456 + }, + "k_new_2": { + "relative_l2": 0.002761054571015776, + "max_abs_error": 0.020048856735229492, + "reference_rms": 1.4749251890370425, + "output_rms": 1.4749432597408292 + }, + "v_new_2": { + "relative_l2": 0.003124315994655873, + "max_abs_error": 0.003032371401786804, + "reference_rms": 0.2996575863196337, + "output_rms": 0.29957990625185127 + }, + "k_new_3": { + "relative_l2": 0.004821709696188454, + "max_abs_error": 0.03383982181549072, + "reference_rms": 1.4529848472712377, + "output_rms": 1.4528154889915204 + }, + "v_new_3": { + "relative_l2": 0.004771549667840103, + "max_abs_error": 0.00476527214050293, + "reference_rms": 0.2917197159228712, + "output_rms": 0.2914876080010164 + }, + "k_new_4": { + "relative_l2": 0.005449794208301409, + "max_abs_error": 0.04018670320510864, + "reference_rms": 1.5413980317857385, + "output_rms": 1.5416838528549397 + }, + "v_new_4": { + "relative_l2": 0.0077393775088357925, + "max_abs_error": 0.015972793102264404, + "reference_rms": 0.41222657123793377, + "output_rms": 0.41124714948666696 + }, + "k_new_5": { + "relative_l2": 0.006980911986420664, + "max_abs_error": 0.051262855529785156, + "reference_rms": 1.6285454176549035, + "output_rms": 1.6284136449722517 + }, + "v_new_5": { + "relative_l2": 0.008944790284710817, + "max_abs_error": 0.010748535394668579, + "reference_rms": 0.32638470026742417, + "output_rms": 0.3260101745890208 + }, + "k_new_6": { + "relative_l2": 0.009914561650426496, + "max_abs_error": 0.10113561153411865, + "reference_rms": 1.8000231156167423, + "output_rms": 1.8004348379922543 + }, + "v_new_6": { + "relative_l2": 0.011895405889581826, + "max_abs_error": 0.013239093124866486, + "reference_rms": 0.2629708328253682, + "output_rms": 0.26272664367887155 + }, + "k_new_7": { + "relative_l2": 0.011574984331246546, + "max_abs_error": 0.18203949928283691, + "reference_rms": 1.6255722851184644, + "output_rms": 1.6256887782660017 + }, + "v_new_7": { + "relative_l2": 0.01222879669226326, + "max_abs_error": 0.018638402223587036, + "reference_rms": 0.348368074126628, + "output_rms": 0.3482941115788742 + }, + "k_new_8": { + "relative_l2": 0.013421898308530838, + "max_abs_error": 0.09088659286499023, + "reference_rms": 1.516512353065435, + "output_rms": 1.5161715614768887 + }, + "v_new_8": { + "relative_l2": 0.013888393822759375, + "max_abs_error": 0.01586216688156128, + "reference_rms": 0.28027916002007797, + "output_rms": 0.2806169285825688 + }, + "k_new_9": { + "relative_l2": 0.015263377070499391, + "max_abs_error": 0.10664939880371094, + "reference_rms": 1.5960043895576705, + "output_rms": 1.5967548122383879 + }, + "v_new_9": { + "relative_l2": 0.019649029067684943, + "max_abs_error": 0.024999573826789856, + "reference_rms": 0.37541008682864946, + "output_rms": 0.3752565042185322 + }, + "k_new_10": { + "relative_l2": 0.020560530259558635, + "max_abs_error": 0.15616607666015625, + "reference_rms": 1.6561161468173449, + "output_rms": 1.6555065727672071 + }, + "v_new_10": { + "relative_l2": 0.028246579911853437, + "max_abs_error": 0.033145904541015625, + "reference_rms": 0.26429778504066537, + "output_rms": 0.2649298588657518 + }, + "k_new_11": { + "relative_l2": 0.024226437534041585, + "max_abs_error": 0.14327839016914368, + "reference_rms": 1.5170462775366995, + "output_rms": 1.5164443227984858 + }, + "v_new_11": { + "relative_l2": 0.032821000942314556, + "max_abs_error": 0.026863843202590942, + "reference_rms": 0.22548908846990579, + "output_rms": 0.22610859225044458 + }, + "k_new_12": { + "relative_l2": 0.02424459703399902, + "max_abs_error": 0.13305354118347168, + "reference_rms": 1.5731131793440647, + "output_rms": 1.5728852520114331 + }, + "v_new_12": { + "relative_l2": 0.03151381616847344, + "max_abs_error": 0.02252097614109516, + "reference_rms": 0.20839677682266325, + "output_rms": 0.20901723170338624 + }, + "k_new_13": { + "relative_l2": 0.02684749384011855, + "max_abs_error": 0.17472481727600098, + "reference_rms": 1.4939452330557514, + "output_rms": 1.4929511567426517 + }, + "v_new_13": { + "relative_l2": 0.0348100900904329, + "max_abs_error": 0.028251543641090393, + "reference_rms": 0.24929462665621008, + "output_rms": 0.2498725455988227 + }, + "k_new_14": { + "relative_l2": 0.02791923833069605, + "max_abs_error": 0.15481090545654297, + "reference_rms": 1.4942429579997731, + "output_rms": 1.494004847658895 + }, + "v_new_14": { + "relative_l2": 0.041331563093406604, + "max_abs_error": 0.04944309592247009, + "reference_rms": 0.32824019866053383, + "output_rms": 0.3295947163282871 + }, + "k_new_15": { + "relative_l2": 0.032452521516218184, + "max_abs_error": 0.19741547107696533, + "reference_rms": 1.6561072116211841, + "output_rms": 1.6551009838057842 + }, + "v_new_15": { + "relative_l2": 0.0466727113355849, + "max_abs_error": 0.03767561912536621, + "reference_rms": 0.24976283574047556, + "output_rms": 0.25253061223199835 + }, + "k_new_16": { + "relative_l2": 0.04171664506917453, + "max_abs_error": 0.2883577346801758, + "reference_rms": 1.617983543941328, + "output_rms": 1.6163302517820928 + }, + "v_new_16": { + "relative_l2": 0.05475395691907811, + "max_abs_error": 0.0824914276599884, + "reference_rms": 0.3826095020438836, + "output_rms": 0.38613193762350373 + }, + "k_new_17": { + "relative_l2": 0.056294548186683446, + "max_abs_error": 0.4603831171989441, + "reference_rms": 1.6828817809060599, + "output_rms": 1.6835371322893817 + }, + "v_new_17": { + "relative_l2": 0.06025778430481221, + "max_abs_error": 0.10319685935974121, + "reference_rms": 0.4656876133547257, + "output_rms": 0.4675643428477375 + }, + "k_new_18": { + "relative_l2": 0.06067033637299982, + "max_abs_error": 0.4243013858795166, + "reference_rms": 1.5546463592216835, + "output_rms": 1.5533939819606717 + }, + "v_new_18": { + "relative_l2": 0.06991244010967108, + "max_abs_error": 0.11277598142623901, + "reference_rms": 0.5200020604619255, + "output_rms": 0.5222859980551071 + }, + "k_new_19": { + "relative_l2": 0.0641229525559854, + "max_abs_error": 0.3378424644470215, + "reference_rms": 1.5217070844504548, + "output_rms": 1.5200443294471528 + }, + "v_new_19": { + "relative_l2": 0.07749365505892926, + "max_abs_error": 0.1699829399585724, + "reference_rms": 0.5402920798790236, + "output_rms": 0.5445328063931953 + }, + "k_new_20": { + "relative_l2": 0.07900454500371618, + "max_abs_error": 0.7018804550170898, + "reference_rms": 1.6813854859968058, + "output_rms": 1.681353760733933 + }, + "v_new_20": { + "relative_l2": 0.0893259005949654, + "max_abs_error": 0.16725420951843262, + "reference_rms": 0.6088730895277438, + "output_rms": 0.6087740268479712 + }, + "k_new_21": { + "relative_l2": 0.07482362765411124, + "max_abs_error": 0.6752438545227051, + "reference_rms": 1.7370493419005983, + "output_rms": 1.7330445579916067 + }, + "v_new_21": { + "relative_l2": 0.09334181609757561, + "max_abs_error": 0.2183903455734253, + "reference_rms": 0.6072011016139925, + "output_rms": 0.607087366794611 + }, + "k_new_22": { + "relative_l2": 0.08617285484739436, + "max_abs_error": 0.9095754623413086, + "reference_rms": 1.9661056736696203, + "output_rms": 1.9646358442896732 + }, + "v_new_22": { + "relative_l2": 0.0960272875256176, + "max_abs_error": 0.2511986494064331, + "reference_rms": 0.7362191931025958, + "output_rms": 0.737060867326014 + }, + "k_new_23": { + "relative_l2": 0.09015898262872088, + "max_abs_error": 0.6080676317214966, + "reference_rms": 1.6005997999291703, + "output_rms": 1.5959975427626747 + }, + "v_new_23": { + "relative_l2": 0.1097689271525209, + "max_abs_error": 0.3053623288869858, + "reference_rms": 0.6675198669572269, + "output_rms": 0.6584432008476448 + }, + "k_new_24": { + "relative_l2": 0.08953121158633887, + "max_abs_error": 0.6620829105377197, + "reference_rms": 1.6337684549178757, + "output_rms": 1.6408286721000613 + }, + "v_new_24": { + "relative_l2": 0.11272639051542711, + "max_abs_error": 0.23123958706855774, + "reference_rms": 0.6240472225015637, + "output_rms": 0.6254292367718036 + }, + "k_new_25": { + "relative_l2": 0.07944159313144433, + "max_abs_error": 0.43733835220336914, + "reference_rms": 1.527601662385539, + "output_rms": 1.5323928692984328 + }, + "v_new_25": { + "relative_l2": 0.10095419365698416, + "max_abs_error": 0.3811544179916382, + "reference_rms": 0.9133071626950193, + "output_rms": 0.9081464219762729 + }, + "k_new_26": { + "relative_l2": 0.07294061710221367, + "max_abs_error": 0.4177415370941162, + "reference_rms": 1.4905787414732559, + "output_rms": 1.4929379627971777 + }, + "v_new_26": { + "relative_l2": 0.11269209239312523, + "max_abs_error": 0.25589676201343536, + "reference_rms": 0.7009595279765859, + "output_rms": 0.7040098493200752 + }, + "k_new_27": { + "relative_l2": 0.09138018211515632, + "max_abs_error": 0.5336480140686035, + "reference_rms": 1.5453936433107067, + "output_rms": 1.5465945575535849 + }, + "v_new_27": { + "relative_l2": 0.09594949828965257, + "max_abs_error": 0.25312620401382446, + "reference_rms": 0.6731545154533489, + "output_rms": 0.6815830406876052 + } + }, + "cache_max_relative_l2": 0.11272639051542711, + "limits": [ + "The historical source export does not attest an exact checkpoint revision.", + "The fixture is synthetic and has no token-to-audio quality tolerance.", + "No predictor, vocoder, persistent cache loop or complete TTS stream was tested.", + "Requested compute unit is not actual placement without a device profile." + ] +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/s25/qnn_fp16_dlc/compile_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/s25/qnn_fp16_dlc/compile_report.json new file mode 100644 index 000000000..55c7819cc --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/s25/qnn_fp16_dlc/compile_report.json @@ -0,0 +1,32 @@ +{ + "timestamp_utc": "2026-09-24T04:44:26.190951+00:00", + "qai_hub_version": "0.55.0", + "facility": "Qualcomm AI Hub Workbench", + "job_id": "jgolry1kg", + "url": "https://workbench.aihub.qualcomm.com/jobs/jgolry1kg/", + "status": "SUCCESS", + "status_message": "", + "options": "--target_runtime qnn_dlc --qnn_options default_graph_htp_precision=FLOAT16", + "hub_version": "aihub-2026.09.11.0", + "device": { + "name": "Samsung Galaxy S25", + "os": "15", + "attributes": [ + "os:android", + "framework:tflite", + "framework:onnx", + "abi:aarch64-android", + "vendor:samsung", + "format:phone", + "chipset:qualcomm-snapdragon-8-elite-for-galaxy", + "chipset:sm8750-ac", + "hexagon:v79", + "soc-model:69", + "htp-supports-fp16:true", + "htp-supports-weight-sharing:true", + "framework:qnn" + ] + }, + "source_model_id": "mq3xre4rq", + "target_model_id": "mnlzdl4oq" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/s25/qnn_fp16_dlc/compile_submission.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/s25/qnn_fp16_dlc/compile_submission.json new file mode 100644 index 000000000..ad507d606 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/s25/qnn_fp16_dlc/compile_submission.json @@ -0,0 +1,12 @@ +{ + "timestamp_utc": "2026-09-24T04:40:12.164649+00:00", + "facility": "Qualcomm AI Hub Workbench", + "qai_hub_version": "0.55.0", + "source_model_id": "mq3xre4rq", + "device": "Samsung Galaxy S25", + "options": "--target_runtime qnn_dlc --qnn_options default_graph_htp_precision=FLOAT16", + "kind": "compile", + "status": "SUBMITTED", + "job_id": "jgolry1kg", + "url": "https://workbench.aihub.qualcomm.com/jobs/jgolry1kg/" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/s25/qnn_fp16_dlc/device_output.npz b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/s25/qnn_fp16_dlc/device_output.npz new file mode 100644 index 0000000000000000000000000000000000000000..a80746202873516913cac241637b4a04a99da627 GIT binary patch literal 168000 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�YyKC_w?N`x7^dLElZk+ zyeKl_Yre2`zA(F9hL$h$xkT}vfKYu?pSrpDf_fC1eo9L<$?s?*tmDn6Zc`O_Y#3 zE&O_sj}x$XyvI5XxaIOx_eW{uf&_WnH9e#@U(Ly72x0l^hn-{%7xMdYd`Wl{v*qo| z?~ewg)@dF{9YS8~(n(b~Qf@93BuGq&hwZItyuDcOM_gWO`Io)b87fDJK$LBF0ELof=t}c3ws}%S&=L%hsqr5+LC+HwkTCqENb0Vs0WF3_eC%O326Q4bU$?m!6!{P)jy@k(& z6B#f0KM>&@;UP>c!pi&3IH;)emaw?b?F-AJR0f80<=6nEp#B_TEM)8jpiQ@DXeaJc z3WvHyY#S)!g&id=Jo^kgNk4G)UU_0O&g`;|b*8EcRIAU+4I3 zNCQ9T_?ChEu;tDl1vON>C`j#m?o(-hzn>7^wE=5Cejln*X^gzCwdWJpFt5fu%b;|m z2pP!LV!q~5dGZukdk|fp7%ysD`o&qdCgM!Njyp=naP=Bm)Ri6MlcCDjX4;>$IlsX; zY#Mm?{)sEzTG#~LcoKEPCY3K!5&u`LwmkP&_3Q?}`tU(x;OJaA|D&lGoqL9$_K`b)fW)i(X%naRM^i5K^=2VN5}qQN0Zf4urjT| z4y@1u#_1&6b&`HY+JhF*9s#i|<-qcXX5&M0iv6s(i#FM0b=e=!9Z)r+$mGbqu3;z_ zgs~ic14tR@eGkh$K<5RRPuBD=3#L79O2uU;GS%)l&?2Y~8u?@T@As}ILBiAsX%5Wi z+jpI{77(*M7!KyjO*$__JNmQk*kk4&qd+J7F^+dj&{%INQ(8~=NJIbSC+83h7X*8) z-}j`@D5ioxTCIB0oAHd_uTp&bHd=Tv({r728O0CzZqXF%hN~joC)p0?N^#UH)&oCl z&6`rzXXvH;shYrdt^vy`RUkhUO0?WoHwX{qZdd6#+F1L<`6J5Gn}3i;h#9H~?(i^g*72lLktNVIs+ z50|RnfpMsPrFwx?-Q9J>$)ynGN0I)(GjJt>TW#x3MACc1)l*B)2j`%}P-7p^-;TZs z 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%0AxjnOthYz=o$I9MH$&EpJvjm*mPv}L`}S-spRKf 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¨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 literal 0 HcmV?d00001 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/README.md b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/README.md new file mode 100644 index 000000000..9b03aa92c --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/README.md @@ -0,0 +1,38 @@ +# Two-frame S25 Code2Wav candidate + +The original 25-frame vocoder graph takes 72 prior frames plus 25 new frames +and produced a 48,000-sample waveform. Its FP16 QNN DLC compiled for S25 but +failed inference with a reported device-memory limit. This candidate retains +the same pinned Qwen3-TTS 0.6B CustomVoice decoder and 72-frame history, and +reduces only the new chunk to two frames: `float32[1,512,74]` in and +`float32[1,3840]` out (0.16 s at 24 kHz). The RVQ codebook lookup remains +outside this graph, as in the original HTP export. + +The [export report](export_report.json) pins the checkpoint snapshot, weight +hash, local fixture, output and ONNX artifact hashes. The ONNX file remains +outside Git under `/home/zhout/project/edge_infer/models/`. Local ONNX +Runtime CPU matched the eager decoder at **2.96e-6 relative L2**; the eager +two-frame waveform matched the first 3,840 samples of the retained 25-frame +CPU waveform at **2.83e-6 relative L2**. This is one fixed synthetic window, +not a speech-quality test. The [exporter](../../../../../../experiments/export_qwen_tts_vocoder_short_chunk.py) +reproduces the graph and parity gate. + +The [local CPU component profile](cpu_profile_report.json) used one warmup and +20 serial samples on the HX370 WSL CPU with ONNX Runtime 1.29 and four threads. +Nearest-rank p50/p95 was **1.365/1.453 s** for 0.16 s of audio; component +median RTF **8.53** is far from playable in this configuration. This CPU +number is not an S25 estimate. The [profiler](../../../../../../experiments/profile_qwen_tts_short_vocoder_cpu.py) +records the raw samples. A hosted S25 artifact must independently pass +numerical, node-placement, memory and complete-stream gates before it can be +called supported. + +The source [upload](upload_submission.json) and [one-sample dataset](dataset_submission.json) +were compiled to an [S25 FP16 QNN DLC](compile_report.json). Its +[NPU-requested same-fixture inference](inference_report.json) **failed** with +Workbench reporting that memory usage exceeded device limits. No device +waveform, node-placement rows or timing samples were returned. Reducing the +new chunk from 25 frames to two did not resolve memory admission for this +FP16 QNN artifact. This failure does not rule out a different graph layout, +precision or runtime route. The [compressed runtime log](logs/jg9zmvqvp_runtime.log.gz) +preserves the failed job trace. A separate S25 TFLite GPU candidate is tracked +under [tflite_short_chunk](../tflite_short_chunk/). diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/compile_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/compile_report.json new file mode 100644 index 000000000..cf14fc4b4 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/compile_report.json @@ -0,0 +1,32 @@ +{ + "timestamp_utc": "2026-09-24T05:01:17.953595+00:00", + "qai_hub_version": "0.55.0", + "facility": "Qualcomm AI Hub Workbench", + "job_id": "jp3z9k7x5", + "url": "https://workbench.aihub.qualcomm.com/jobs/jp3z9k7x5/", + "status": "SUCCESS", + "status_message": "", + "options": "--target_runtime qnn_dlc --qnn_options default_graph_htp_precision=FLOAT16", + "hub_version": "aihub-2026.09.11.0", + "device": { + "name": "Samsung Galaxy S25", + "os": "15", + "attributes": [ + "os:android", + "framework:tflite", + "framework:onnx", + "abi:aarch64-android", + "vendor:samsung", + "format:phone", + "chipset:qualcomm-snapdragon-8-elite-for-galaxy", + "chipset:sm8750-ac", + "hexagon:v79", + "soc-model:69", + "htp-supports-fp16:true", + "htp-supports-weight-sharing:true", + "framework:qnn" + ] + }, + "source_model_id": "mng2vv4em", + "target_model_id": "mq80223jn" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/compile_submission.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/compile_submission.json new file mode 100644 index 000000000..3e2cf3178 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/compile_submission.json @@ -0,0 +1,13 @@ +{ + "timestamp_utc": "2026-09-24T04:58:52.103377+00:00", + "facility": "Qualcomm AI Hub Workbench", + "qai_hub_version": "0.55.0", + "source_model_id": "mng2vv4em", + "source_sha256": "e563541bf77200ac4c4ca9d6e01cd7e25c09f9274233a8d82eeccc57580830d2", + "device": "Samsung Galaxy S25", + "options": "--target_runtime qnn_dlc --qnn_options default_graph_htp_precision=FLOAT16", + "kind": "compile", + "status": "SUBMITTED", + "job_id": "jp3z9k7x5", + "url": "https://workbench.aihub.qualcomm.com/jobs/jp3z9k7x5/" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/cpu_profile_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/cpu_profile_report.json new file mode 100644 index 000000000..d2d8a47a8 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/cpu_profile_report.json @@ -0,0 +1,50 @@ +{ + "scope": "one fixed two-frame Code2Wav component on HX370 WSL ORT CPU; no complete TTS stream", + "status": "component_cpu_profiled", + "platform": "Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.43", + "cpu": "AMD Ryzen AI 9 HX 370 w/ Radeon 890M", + "python_version": "3.12.13", + "checkpoint_revision": "85e237c12c027371202489a0ec509ded67b5e4b5", + "power_condition": "not recorded", + "ort_version": "1.29.0", + "provider": [ + "CPUExecutionProvider" + ], + "threads": 4, + "model_sha256": "e563541bf77200ac4c4ca9d6e01cd7e25c09f9274233a8d82eeccc57580830d2", + "fixture_sha256": "77aea3554c51b9daf808748257ebfc5e0496172c4d34c8267288be984d8a0f55", + "load_s": 0.5960357000003569, + "rss_after_load_bytes": 638189568, + "warmups": 1, + "sample_count": 20, + "samples_s": [ + 1.4534642749931663, + 1.354645981977228, + 1.3775672700139694, + 1.3591304540168494, + 1.3296460009878501, + 1.40560842998093, + 1.4525224060053006, + 1.3785532070323825, + 1.3530683669960126, + 1.3806309230276383, + 1.3724001089576632, + 1.3896296580205671, + 1.3652083780034445, + 1.374573242967017, + 1.3268145270412788, + 1.3424656029674225, + 1.3449684209772386, + 1.3345086729968898, + 1.3748839889885858, + 1.3425294969929382 + ], + "nearest_rank_p50_s": 1.3652083780034445, + "nearest_rank_p95_s": 1.4525224060053006, + "audio_duration_s": 0.16, + "median_component_rtf": 8.532552362521528, + "limits": [ + "The input is one retained synthetic window, and no talker or predictor ran.", + "This host CPU timing cannot be transplanted to the S25 or another SoC." + ] +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/dataset_submission.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/dataset_submission.json new file mode 100644 index 000000000..0070316eb --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/dataset_submission.json @@ -0,0 +1,16 @@ +{ + "timestamp_utc": "2026-09-24T04:59:30.129187+00:00", + "facility": "Qualcomm AI Hub Workbench", + "qai_hub_version": "0.55.0", + "fixture_sha256": "77aea3554c51b9daf808748257ebfc5e0496172c4d34c8267288be984d8a0f55", + "input_name": "quantized", + "input_shape": [ + 1, + 512, + 74 + ], + "input_dtype": "float32", + "sample_count": 1, + "dataset_id": "d7ovqp0w2", + "status": "UPLOADED" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/eager_output.npz b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/eager_output.npz new file mode 100644 index 0000000000000000000000000000000000000000..4d3fb5be35f5b5c2df6ee5b9a636a995d7f102bd GIT binary patch literal 14818 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 z%iCT#004kI000L70000000000004ji00000cVTueZg6=}O9ci1000010096s0001& IIRF3v0E5^);Q#;t literal 0 HcmV?d00001 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/export_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/export_report.json new file mode 100644 index 000000000..f0f8205e3 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/export_report.json @@ -0,0 +1,49 @@ +{ + "scope": "one synthetic first short vocoder window; no device execution or complete TTS stream", + "model_snapshot": "/home/zhout/.cache/huggingface/hub/models--Qwen--Qwen3-TTS-12Hz-0.6B-CustomVoice/snapshots/85e237c12c027371202489a0ec509ded67b5e4b5", + "model_weight_sha256": "836b7b357f5ea43e889936a3709af68dfe3751881acefe4ecf0dbd30ba571258", + "source_fixture_sha256": "dfca9e8d2a724a568a31b6cd18ff6a52fdc205fd34e13cbf1cd75f0f7937e82d", + "long_cpu_reference_sha256": "8de78b94b59f01e49852f7706adbd2508a9976b8e2705cfd3b94d07bb3606cb1", + "context_frames": 72, + "chunk_frames": 2, + "input_shape": [ + 1, + 512, + 74 + ], + "output_shape": [ + 1, + 3840 + ], + "export_s_not_inference": 7.429020452953409, + "onnx_sha256": "e563541bf77200ac4c4ca9d6e01cd7e25c09f9274233a8d82eeccc57580830d2", + "short_fixture_sha256": "77aea3554c51b9daf808748257ebfc5e0496172c4d34c8267288be984d8a0f55", + "eager_output_sha256": "542113d24feeb4ff58b895ce7d96fc7aa5240b046a3a0d1d3922c7ab23ea0a7c", + "ort_output_sha256": "989307db317d77be054f684211ae0c6a2fd24d93bcd74307c597fed430ba2a37", + "ort_vs_eager": { + "relative_l2": 2.9623994746865784e-06, + "snr_db": 110.56712755941491, + "max_abs": 1.3685785233974457e-06, + "reference_rms": 0.04131376905845152, + "output_rms": 0.04131374650145444 + }, + "short_eager_vs_25_frame_prefix": { + "relative_l2": 2.826486997305525e-06, + "snr_db": 110.97506016170293, + "max_abs": 1.3941898941993713e-06, + "reference_rms": 0.04131374658894702, + "output_rms": 0.04131376905845152 + }, + "limits": [ + "The short-window graph still requires its prior 72 quantized frames from a model adapter.", + "Prefix agreement is tested on one retained synthetic fixture, not a speech-quality set.", + "CPU export parity does not establish target compilation, placement or memory admission." + ], + "model_snapshot_revision": "85e237c12c027371202489a0ec509ded67b5e4b5", + "torch_version": "2.13.0+cpu", + "onnx_version": "1.22.0", + "onnxruntime_version": "1.29.0", + "actual_opsets": { + "ai.onnx": 18 + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/fixture.npz b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/fixture.npz new file mode 100644 index 0000000000000000000000000000000000000000..26cf11a4a12dd7fb774724cf36e63088a60cf9c6 GIT binary patch literal 129614 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 X1qJ{B000310RTGy008~@0RR91HT_u| literal 0 HcmV?d00001 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/inference_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/inference_report.json new file mode 100644 index 000000000..e96792945 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/inference_report.json @@ -0,0 +1,32 @@ +{ + "timestamp_utc": "2026-09-24T05:11:41.882897+00:00", + "qai_hub_version": "0.55.0", + "facility": "Qualcomm AI Hub Workbench", + "job_id": "jg9zmvqvp", + "url": "https://workbench.aihub.qualcomm.com/jobs/jg9zmvqvp/", + "status": "FAILED", + "status_message": "Failed to profile the model because memory usage exceeded device limits.", + "options": "--compute_unit npu", + "hub_version": "aihub-2026.09.11.0", + "device": { + "name": "Samsung Galaxy S25", + "os": "15", + "attributes": [ + "os:android", + "framework:tflite", + "framework:onnx", + "abi:aarch64-android", + "vendor:samsung", + "format:phone", + "chipset:qualcomm-snapdragon-8-elite-for-galaxy", + "chipset:sm8750-ac", + "hexagon:v79", + "soc-model:69", + "htp-supports-fp16:true", + "htp-supports-weight-sharing:true", + "framework:qnn" + ] + }, + "model_id": "mq80223jn", + "input_dataset_id": "d7ovqp0w2" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/inference_submission.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/inference_submission.json new file mode 100644 index 000000000..39ff3f47f --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/inference_submission.json @@ -0,0 +1,13 @@ +{ + "timestamp_utc": "2026-09-24T05:01:33.608651+00:00", + "facility": "Qualcomm AI Hub Workbench", + "qai_hub_version": "0.55.0", + "model_id": "mq80223jn", + "input_dataset_id": "d7ovqp0w2", + "device": "Samsung Galaxy S25", + "options": "--compute_unit npu", + "kind": "inference", + "status": "SUBMITTED", + "job_id": "jg9zmvqvp", + "url": "https://workbench.aihub.qualcomm.com/jobs/jg9zmvqvp/" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/logs/jg9zmvqvp_runtime.log.gz b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/logs/jg9zmvqvp_runtime.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..8d3c738a13a700ea8ec7f337d56a0d907954f643 GIT binary patch literal 95840 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�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 z0DwFI00#g700000000000Du7i0001YVRkNVaCuNm1qJ{B000310RS}s005FX00000 DosKJ0 literal 0 HcmV?d00001 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/upload_submission.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/upload_submission.json new file mode 100644 index 000000000..af611db4f --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/upload_submission.json @@ -0,0 +1,18 @@ +{ + "timestamp_utc": "2026-09-24T04:58:20.183146+00:00", + "facility": "Qualcomm AI Hub Workbench", + "qai_hub_version": "0.55.0", + "source_path_outside_git": "/home/zhout/project/edge_infer/models/qwen3tts_code2wav_c2_ctx72_20260924.onnx", + "source_sha256": "e563541bf77200ac4c4ca9d6e01cd7e25c09f9274233a8d82eeccc57580830d2", + "source_model_id": "mng2vv4em", + "input_shape": [ + 1, + 512, + 74 + ], + "output_shape": [ + 1, + 3840 + ], + "status": "UPLOADED" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/README.md b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/README.md new file mode 100644 index 000000000..de9ee0f79 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/README.md @@ -0,0 +1,27 @@ +# Two-frame S25 TFLite GPU-requested Code2Wav component + +The same pinned [72-history-plus-two-new-frame source](../qnn_short_chunk/README.md) +and [one-sample fixture](../qnn_short_chunk/dataset_submission.json) compiled +as a [TFLite artifact](compile_report.json) for Galaxy S25. A +[GPU-requested inference](inference_report.json) returned a finite, +unsaturated 3,840-sample waveform. The [audit](audit_report.json) binds the +source, fixture, target and output hashes: versus local ONNX Runtime CPU on +the same fixture, waveform relative L2 was **2.325%**, SNR **32.67 dB**, and +maximum absolute difference **0.00810**. This is a numerical measurement, +not a listening-quality qualification. The [raw output](device_output.npz) +is retained. + +The [placement profile](profile_report.json) returned **100** component +samples at nearest-rank p50/p95 **0.559/1.052 s** for **0.16 s of audio**. +Its execution detail assigned **403 rows to CPU and 335 to GPU**, so this is +a mixed CPU/GPU route, not a GPU-only result. The reported inference peak was +**379,121,664 bytes**. The [audit](audit_report.json) ties that profile to +the same S25 target and tensor shape as the waveform check; Workbench generated +the profile input, while the numerical inference used the retained fixture. +Component median real-time factor +is **3.49**, before talker, predictor, transfer or playback overhead; this +route does not meet playable streaming latency on the measured fixture. + +A complete Qwen3-TTS stream also needs a qualified talker/predictor, history +and stage handoff, co-resident memory admission, cancellation, speech-quality +checks and sustained playback. diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/audit_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/audit_report.json new file mode 100644 index 000000000..c3932a285 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/audit_report.json @@ -0,0 +1,86 @@ +{ + "scope": "one two-frame Qwen3-TTS vocoder component on hosted S25; no complete stream", + "status": "component_inference_numeric_and_placement_measured", + "device": { + "name": "Samsung Galaxy S25", + "os": "15", + "attributes": [ + "os:android", + "framework:tflite", + "framework:onnx", + "abi:aarch64-android", + "vendor:samsung", + "format:phone", + "chipset:qualcomm-snapdragon-8-elite-for-galaxy", + "chipset:sm8750-ac", + "hexagon:v79", + "soc-model:69", + "htp-supports-fp16:true", + "htp-supports-weight-sharing:true", + "framework:qnn" + ] + }, + "source_model_id": "mng2vv4em", + "target_model_id": "mq9yrr5yn", + "input_dataset_id": "d7ovqp0w2", + "jobs": { + "compile": "j56876x7g", + "inference": "j57e4zzrp", + "profile": "jpxl4jo1p" + }, + "route": { + "compile_options": "--target_runtime tflite", + "run_options": "--compute_unit gpu" + }, + "files": { + "fixture": { + "bytes": 129614, + "sha256": "77aea3554c51b9daf808748257ebfc5e0496172c4d34c8267288be984d8a0f55" + }, + "ort_cpu": { + "bytes": 14813, + "sha256": "989307db317d77be054f684211ae0c6a2fd24d93bcd74307c597fed430ba2a37" + }, + "eager_cpu": { + "bytes": 14818, + "sha256": "542113d24feeb4ff58b895ce7d96fc7aa5240b046a3a0d1d3922c7ab23ea0a7c" + }, + "device_output": { + "bytes": 9294, + "sha256": "fd62eff1aded00728b08418003a0165676b0399bca91b47398e7f54ff0e84c03" + } + }, + "ort_cpu_vs_device": { + "relative_l2": 0.02325155074513613, + "snr_db": 32.67096153711811, + "max_abs": 0.008096754550933838, + "reference_rms": 0.04131374650145444, + "output_rms": 0.041393810541143945, + "output_saturated_fraction_abs_ge_0_999": 0.0 + }, + "eager_cpu_vs_device": { + "relative_l2": 0.023249718394146676, + "snr_db": 32.67164606030534, + "max_abs": 0.008095551282167435, + "reference_rms": 0.04131376905845152, + "output_rms": 0.041393810541143945, + "output_saturated_fraction_abs_ge_0_999": 0.0 + }, + "limits": [ + "One fixed two-frame waveform has no listening-quality tolerance.", + "The 72-frame input history, talker, predictor and stage handoff did not run on the device.", + "No persistent state, admission, cancellation or complete TTS stream was tested." + ], + "profile": { + "sample_count": 100, + "min_us": 414816, + "nearest_rank_p50_us": 559081, + "nearest_rank_p95_us": 1051787, + "reported_peak_memory_bytes": 379121664, + "compute_unit_row_counts": { + "CPU": 403, + "GPU": 335 + }, + "profile_input": "Workbench generated input with audited tensor shape; the waveform inference used the retained fixture" + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/compile_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/compile_report.json new file mode 100644 index 000000000..bfe006ea8 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/compile_report.json @@ -0,0 +1,32 @@ +{ + "timestamp_utc": "2026-09-24T05:08:45.788423+00:00", + "qai_hub_version": "0.55.0", + "facility": "Qualcomm AI Hub Workbench", + "job_id": "j56876x7g", + "url": "https://workbench.aihub.qualcomm.com/jobs/j56876x7g/", + "status": "SUCCESS", + "status_message": "", + "options": "--target_runtime tflite", + "hub_version": "aihub-2026.09.11.0", + "device": { + "name": "Samsung Galaxy S25", + "os": "15", + "attributes": [ + "os:android", + "framework:tflite", + "framework:onnx", + "abi:aarch64-android", + "vendor:samsung", + "format:phone", + "chipset:qualcomm-snapdragon-8-elite-for-galaxy", + "chipset:sm8750-ac", + "hexagon:v79", + "soc-model:69", + "htp-supports-fp16:true", + "htp-supports-weight-sharing:true", + "framework:qnn" + ] + }, + "source_model_id": "mng2vv4em", + "target_model_id": "mq9yrr5yn" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/compile_submission.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/compile_submission.json new file mode 100644 index 000000000..eb6ff34b1 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/compile_submission.json @@ -0,0 +1,13 @@ +{ + "timestamp_utc": "2026-09-24T05:04:49.276829+00:00", + "facility": "Qualcomm AI Hub Workbench", + "qai_hub_version": "0.55.0", + "source_model_id": "mng2vv4em", + "source_sha256": "e563541bf77200ac4c4ca9d6e01cd7e25c09f9274233a8d82eeccc57580830d2", + "device": "Samsung Galaxy S25", + "options": "--target_runtime tflite", + "kind": "compile", + "status": "SUBMITTED", + "job_id": "j56876x7g", + "url": "https://workbench.aihub.qualcomm.com/jobs/j56876x7g/" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/device_output.npz b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/device_output.npz new file mode 100644 index 0000000000000000000000000000000000000000..9334da6abbb1aae733da9d325d043cb281ff226f GIT binary patch literal 9294 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 literal 0 HcmV?d00001 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/inference_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/inference_report.json new file mode 100644 index 000000000..91b9bfc2a --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/inference_report.json @@ -0,0 +1,33 @@ +{ + "timestamp_utc": "2026-09-24T05:14:59.315569+00:00", + "qai_hub_version": "0.55.0", + "facility": "Qualcomm AI Hub Workbench", + "job_id": "j57e4zzrp", + "url": "https://workbench.aihub.qualcomm.com/jobs/j57e4zzrp/", + "status": "SUCCESS", + "status_message": "", + "options": "--compute_unit gpu", + "hub_version": "aihub-2026.09.11.0", + "device": { + "name": "Samsung Galaxy S25", + "os": "15", + "attributes": [ + "os:android", + "framework:tflite", + "framework:onnx", + "abi:aarch64-android", + "vendor:samsung", + "format:phone", + "chipset:qualcomm-snapdragon-8-elite-for-galaxy", + "chipset:sm8750-ac", + "hexagon:v79", + "soc-model:69", + "htp-supports-fp16:true", + "htp-supports-weight-sharing:true", + "framework:qnn" + ] + }, + "model_id": "mq9yrr5yn", + "input_dataset_id": "d7ovqp0w2", + "outputs": "device_output.npz" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/inference_submission.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/inference_submission.json new file mode 100644 index 000000000..7cf6cacf4 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/inference_submission.json @@ -0,0 +1,13 @@ +{ + "timestamp_utc": "2026-09-24T05:08:59.567198+00:00", + "facility": "Qualcomm AI Hub Workbench", + "qai_hub_version": "0.55.0", + "model_id": "mq9yrr5yn", + "input_dataset_id": "d7ovqp0w2", + "device": "Samsung Galaxy S25", + "options": "--compute_unit gpu", + "kind": "inference", + "status": "SUBMITTED", + "job_id": "j57e4zzrp", + "url": "https://workbench.aihub.qualcomm.com/jobs/j57e4zzrp/" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/profile_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/profile_report.json new file mode 100644 index 000000000..f54590ff2 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/profile_report.json @@ -0,0 +1,5362 @@ +{ + "timestamp_utc": "2026-09-24T05:25:37.026028+00:00", + "qai_hub_version": "0.55.0", + "facility": "Qualcomm AI Hub Workbench", + "job_id": "jpxl4jo1p", + "url": "https://workbench.aihub.qualcomm.com/jobs/jpxl4jo1p/", + "status": "SUCCESS", + "status_message": "", + "options": "--compute_unit gpu", + "hub_version": "aihub-2026.09.11.0", + "device": { + "name": "Samsung Galaxy S25", + "os": "15", + "attributes": [ + "os:android", + "framework:tflite", + "framework:onnx", + "abi:aarch64-android", + "vendor:samsung", + "format:phone", + "chipset:qualcomm-snapdragon-8-elite-for-galaxy", + "chipset:sm8750-ac", + "hexagon:v79", + "soc-model:69", + "htp-supports-fp16:true", + "htp-supports-weight-sharing:true", + "framework:qnn" + ] + }, + "model_id": "mq9yrr5yn", + "shapes": { + "quantized": [ + [ + 1, + 512, + 74 + ], + "float32" + ] + }, + "profile": { + "execution_summary": { + "estimated_inference_time": 414816, + "estimated_inference_peak_memory": 379121664, + "first_load_time": 48063458, + "first_load_peak_memory": 816398336, + "warm_load_time": 366775, + "warm_load_peak_memory": 650743808, + "compile_time": 0, + "compile_peak_memory": 0, + "compile_memory_increase_range": [ + 0, + 0 + ], + "compile_memory_peak_range": [ + 0, + 0 + ], + "first_load_memory_increase_range": [ + 253751600, + 262921488 + ], + "first_load_memory_peak_range": [ + 707162112, + 716332000 + ], + "warm_load_memory_increase_range": [ + 227797984, + 252954080 + ], + "warm_load_memory_peak_range": [ + 536756224, + 561912320 + ], + "inference_memory_increase_range": [ + 0, + 1565088 + ], + "inference_memory_peak_range": [ + 1187840, + 30372192 + ], + "all_compile_times": [], + "all_first_load_times": [ + 48063458 + ], + "all_warm_load_times": [ + 366775 + ], + "all_inference_times": [ + 428076, + 414816, + 428081, + 452630, + 439258, + 433892, + 441200, + 438934, + 457268, + 445831, + 446290, + 447762, + 443937, + 448119, + 450453, + 446817, + 449765, + 445358, + 452893, + 451628, + 456502, + 755504, + 901376, + 901101, + 896318, + 897765, + 898252, + 908679, + 894558, + 903834, + 899086, + 895805, + 975198, + 1045863, + 1052512, + 1052800, + 1051787, + 1054664, + 1056348, + 1050748, + 1055050, + 1045280, + 823438, + 854939, + 847668, + 796222, + 832531, + 826325, + 819592, + 822499, + 839478, + 827715, + 770928, + 768040, + 580020, + 529698, + 575072, + 550653, + 566613, + 532236, + 560398, + 551642, + 538370, + 568999, + 543379, + 553029, + 565299, + 559081, + 532666, + 547240, + 523738, + 548079, + 545613, + 557505, + 550475, + 565666, + 550305, + 541737, + 532888, + 567978, + 532804, + 538733, + 537071, + 547135, + 549374, + 552069, + 558788, + 524647, + 522510, + 528608, + 552447, + 564971, + 564443, + 564612, + 564611, + 567827, + 564898, + 564127, + 567284, + 581237 + ] + }, + "execution_detail": [ + { + "name": "model/tf.compat.v1.transpose/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 37, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.pad/Pad", + "type": "PAD", + "compute_unit": "CPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "CPU", + "execution_time": 1460, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_1/Add", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 451, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 2, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reduce_mean/Mean", + "type": "MEAN", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_2/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sqrt/Sqrt", + "type": "SQRT", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reciprocal/Reciprocal", + "type": "DIV", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_1/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 1287, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_1/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 9, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_1/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 7, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_2/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_3/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_4/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.negative/Neg", + "type": "NEG", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.concat/node_cat_3", + "type": "CONCATENATION", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_3/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_3/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_1/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_1/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_2/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_4/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_5/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_6/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.negative_1/Neg", + "type": "NEG", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.concat_1/node_cat_4", + "type": "CONCATENATION", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_5/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_4/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 76, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_4/Add", + "type": "BATCH_MATMUL", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_6/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_5/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 31, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.softmax/Softmax", + "type": "SOFTMAX", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_2/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_2/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 13, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_3/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 69, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_3/MatMul", + "type": "BATCH_MATMUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_5/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_3/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 434, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_7/Mul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_6/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_8/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reduce_mean_1/Mean", + "type": "MEAN", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_7/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sqrt_1/Sqrt", + "type": "SQRT", + "compute_unit": "CPU", + "execution_time": 2, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reciprocal_1/Reciprocal", + "type": "DIV", + "compute_unit": "CPU", + "execution_time": 436, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_9/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 22, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_5/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sigmoid/Sigmoid", + "type": "LOGISTIC", + "compute_unit": "CPU", + "execution_time": 342, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_11/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_6/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 372, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_12/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_13/Mul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_8/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_14/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reduce_mean_2/Mean", + "type": "MEAN", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_9/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 2, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sqrt_2/Sqrt", + "type": "SQRT", + "compute_unit": "CPU", + "execution_time": 1001, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reciprocal_2/Reciprocal", + "type": "DIV", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_15/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_8/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 6, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_7/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 6, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_4/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_6/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_16/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_10/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_11/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.negative_2/Neg", + "type": "NEG", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.concat_2/node_cat_5", + "type": "CONCATENATION", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_17/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_10/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_8/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_5/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_7/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_18/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_12/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_13/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.negative_3/Neg", + "type": "NEG", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.concat_3/node_cat_6", + "type": "CONCATENATION", + "compute_unit": "CPU", + "execution_time": 64, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_19/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_11/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_11/Add", + "type": "BATCH_MATMUL", + "compute_unit": "CPU", + "execution_time": 30, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_20/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_12/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.softmax_1/Softmax", + "type": "SOFTMAX", + "compute_unit": "CPU", + "execution_time": 12, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_9/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 57, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_6/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_8/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_10/MatMul", + "type": "BATCH_MATMUL", + "compute_unit": "CPU", + "execution_time": 374, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_10/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_7/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_21/Mul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_13/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_22/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reduce_mean_3/Mean", + "type": "MEAN", + "compute_unit": "CPU", + "execution_time": 2, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_14/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 347, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sqrt_3/Sqrt", + "type": "SQRT", + "compute_unit": "CPU", + "execution_time": 21, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reciprocal_3/Reciprocal", + "type": "DIV", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_23/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 350, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_12/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sigmoid_1/Sigmoid", + "type": "LOGISTIC", + "compute_unit": "CPU", + "execution_time": 381, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_25/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_13/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_26/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_27/Mul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_15/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_28/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 2, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reduce_mean_4/Mean", + "type": "MEAN", + "compute_unit": "CPU", + "execution_time": 1056, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_16/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sqrt_4/Sqrt", + "type": "SQRT", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reciprocal_4/Reciprocal", + "type": "DIV", + "compute_unit": "CPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_29/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_15/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_14/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_8/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_11/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_30/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_17/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_18/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.negative_4/Neg", + "type": "NEG", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.concat_4/node_cat_7", + "type": "CONCATENATION", + "compute_unit": "CPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_31/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_17/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_15/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_9/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_12/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_32/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_19/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_20/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 62, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.negative_5/Neg", + "type": "NEG", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.concat_5/node_cat_8", + "type": "CONCATENATION", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_33/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 30, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_18/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_18/Add", + "type": "BATCH_MATMUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_34/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 12, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_19/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 56, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.softmax_2/Softmax", + "type": "SOFTMAX", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_16/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_10/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 378, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_13/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_17/MatMul", + "type": "BATCH_MATMUL", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_15/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_11/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_35/Mul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_20/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_36/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 353, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reduce_mean_5/Mean", + "type": "MEAN", + "compute_unit": "CPU", + "execution_time": 21, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_21/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sqrt_5/Sqrt", + "type": "SQRT", + "compute_unit": "CPU", + "execution_time": 356, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reciprocal_5/Reciprocal", + "type": "DIV", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_37/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 387, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_19/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 2, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sigmoid_2/Sigmoid", + "type": "LOGISTIC", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_39/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_20/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_40/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_41/Mul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_22/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 1034, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_42/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reduce_mean_6/Mean", + "type": "MEAN", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_23/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sqrt_6/Sqrt", + "type": "SQRT", + "compute_unit": "CPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reciprocal_6/Reciprocal", + "type": "DIV", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_43/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_22/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_21/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_12/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_16/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_44/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_24/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_25/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.negative_6/Neg", + "type": "NEG", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.concat_6/node_cat_9", + "type": "CONCATENATION", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_45/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_24/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_22/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_13/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_17/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_46/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 60, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_26/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_27/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.negative_7/Neg", + "type": "NEG", + "compute_unit": "CPU", + "execution_time": 30, + "execution_cycles": 0 + }, + { + "name": "model/tf.concat_7/node_cat_10", + "type": "CONCATENATION", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_47/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_25/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 11, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_25/Add", + "type": "BATCH_MATMUL", + "compute_unit": "CPU", + "execution_time": 49, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_48/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_26/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.softmax_3/Softmax", + "type": "SOFTMAX", + "compute_unit": "CPU", + "execution_time": 282, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_23/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_14/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_18/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_24/MatMul", + "type": "BATCH_MATMUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_20/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_15/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 2, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_49/Mul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 273, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_27/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 16, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_50/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reduce_mean_7/Mean", + "type": "MEAN", + "compute_unit": "CPU", + "execution_time": 272, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_28/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sqrt_7/Sqrt", + "type": "SQRT", + "compute_unit": "CPU", + "execution_time": 272, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reciprocal_7/Reciprocal", + "type": "DIV", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_51/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_26/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sigmoid_3/Sigmoid", + "type": "LOGISTIC", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_53/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_27/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_54/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 785, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_55/Mul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_29/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_56/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reduce_mean_8/Mean", + "type": "MEAN", + "compute_unit": "CPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_30/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sqrt_8/Sqrt", + "type": "SQRT", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reciprocal_8/Reciprocal", + "type": "DIV", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_57/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_29/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_28/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_16/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_21/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_58/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_31/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_32/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.negative_8/Neg", + "type": "NEG", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.concat_8/node_cat_11", + "type": "CONCATENATION", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_59/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_31/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_29/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_17/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 54, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_22/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_60/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_33/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 30, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_34/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.negative_9/Neg", + "type": "NEG", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.concat_9/node_cat_12", + "type": "CONCATENATION", + "compute_unit": "CPU", + "execution_time": 11, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_61/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 48, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_32/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_32/Add", + "type": "BATCH_MATMUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_62/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 276, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_33/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.softmax_4/Softmax", + "type": "SOFTMAX", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_30/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_18/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_23/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_31/MatMul", + "type": "BATCH_MATMUL", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_25/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 276, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_19/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 16, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_63/Mul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_34/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 275, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_64/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reduce_mean_9/Mean", + "type": "MEAN", + "compute_unit": "CPU", + "execution_time": 283, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_35/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sqrt_9/Sqrt", + "type": "SQRT", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reciprocal_9/Reciprocal", + "type": "DIV", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_65/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_33/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sigmoid_4/Sigmoid", + "type": "LOGISTIC", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_67/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 832, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_34/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_68/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_69/Mul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_36/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_70/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reduce_mean_10/Mean", + "type": "MEAN", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_37/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sqrt_10/Sqrt", + "type": "SQRT", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reciprocal_10/Reciprocal", + "type": "DIV", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_71/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_36/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_35/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_20/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_26/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_72/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_38/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_39/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.negative_10/Neg", + "type": "NEG", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.concat_10/node_cat_13", + "type": "CONCATENATION", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_73/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_38/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 49, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_36/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_21/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_27/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 30, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_74/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_40/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_41/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 10, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.negative_11/Neg", + "type": "NEG", + "compute_unit": "CPU", + "execution_time": 45, + "execution_cycles": 0 + }, + { + "name": "model/tf.concat_11/node_cat_14", + "type": "CONCATENATION", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_75/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_39/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 265, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_39/Add", + "type": "BATCH_MATMUL", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_76/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_40/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.softmax_5/Softmax", + "type": "SOFTMAX", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_37/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_22/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_28/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 268, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_38/MatMul", + "type": "BATCH_MATMUL", + "compute_unit": "CPU", + "execution_time": 16, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_30/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_23/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 267, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_77/Mul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_41/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 257, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_78/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reduce_mean_11/Mean", + "type": "MEAN", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_42/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sqrt_11/Sqrt", + "type": "SQRT", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reciprocal_11/Reciprocal", + "type": "DIV", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_79/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 2, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_40/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 731, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sigmoid_5/Sigmoid", + "type": "LOGISTIC", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_81/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_41/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_82/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_83/Mul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_43/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_84/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reduce_mean_12/Mean", + "type": "MEAN", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_44/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sqrt_12/Sqrt", + "type": "SQRT", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reciprocal_12/Reciprocal", + "type": "DIV", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_85/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_43/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_42/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_24/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_31/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_86/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_45/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_46/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.negative_12/Neg", + "type": "NEG", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.concat_12/node_cat_15", + "type": "CONCATENATION", + "compute_unit": "CPU", + "execution_time": 46, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_87/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_45/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_43/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 30, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_25/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_32/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_88/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 10, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_47/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 44, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_48/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.negative_13/Neg", + "type": "NEG", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.concat_13/node_cat_16", + "type": "CONCATENATION", + "compute_unit": "CPU", + "execution_time": 257, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_89/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_46/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_46/Add", + "type": "BATCH_MATMUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_90/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_47/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.softmax_6/Softmax", + "type": "SOFTMAX", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_44/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 259, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_26/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 14, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_33/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_45/MatMul", + "type": "BATCH_MATMUL", + "compute_unit": "CPU", + "execution_time": 259, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_35/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_27/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 255, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_91/Mul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_48/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_92/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reduce_mean_13/Mean", + "type": "MEAN", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_49/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sqrt_13/Sqrt", + "type": "SQRT", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reciprocal_13/Reciprocal", + "type": "DIV", + "compute_unit": "CPU", + "execution_time": 747, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_93/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_47/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sigmoid_6/Sigmoid", + "type": "LOGISTIC", + "compute_unit": "CPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_95/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_48/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_96/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_97/Mul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_50/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_98/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reduce_mean_14/Mean", + "type": "MEAN", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_51/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sqrt_14/Sqrt", + "type": "SQRT", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reciprocal_14/Reciprocal", + "type": "DIV", + "compute_unit": "CPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_99/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_50/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_49/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_28/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 1, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_36/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_100/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_52/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_53/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 46, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.negative_14/Neg", + "type": "NEG", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.concat_14/node_cat_17", + "type": "CONCATENATION", + "compute_unit": "CPU", + "execution_time": 8, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_101/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_52/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_50/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 9, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_29/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_37/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_102/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_54/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_55/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.negative_15/Neg", + "type": "NEG", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.concat_15/node_cat_18", + "type": "CONCATENATION", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_103/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_53/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_53/Add", + "type": "BATCH_MATMUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_104/Mul", + "type": "MUL", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_54/Add", + "type": "ADD", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.softmax_7/Softmax", + "type": "SOFTMAX", + "compute_unit": "GPU", + "execution_time": 23, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_51/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_30/Reshape", + "type": "RESHAPE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_38/transpose", + "type": "TRANSPOSE", + "compute_unit": "CPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_52/MatMul", + "type": "BATCH_MATMUL", + "compute_unit": "GPU", + "execution_time": 22, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_40/transpose", + "type": "TRANSPOSE", + "compute_unit": "GPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.reshape_31/Reshape", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_105/Mul", + "type": "FULLY_CONNECTED", + "compute_unit": "GPU", + "execution_time": 173, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_55/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_106/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 2, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reduce_mean_15/Mean", + "type": "MEAN", + "compute_unit": "GPU", + "execution_time": 28, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_56/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sqrt_15/Sqrt", + "type": "SQRT", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reciprocal_15/Reciprocal", + "type": "DIV", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_107/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_54/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "GPU", + "execution_time": 102, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sigmoid_7/Sigmoid", + "type": "LOGISTIC", + "compute_unit": "GPU", + "execution_time": 3, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_109/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.linalg.matmul_55/MatMul", + "type": "FULLY_CONNECTED", + "compute_unit": "GPU", + "execution_time": 104, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_110/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_111/Mul", + "type": "FULLY_CONNECTED", + "compute_unit": "GPU", + "execution_time": 172, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_57/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_112/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 2, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reduce_mean_16/Mean", + "type": "MEAN", + "compute_unit": "GPU", + "execution_time": 24, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_58/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sqrt_16/Sqrt", + "type": "SQRT", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reciprocal_16/Reciprocal", + "type": "DIV", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_113/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 2, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_59/Add", + "type": "FULLY_CONNECTED", + "compute_unit": "GPU", + "execution_time": 102, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.conv1d_transpose/conv1d_transpose/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.conv1d_transpose/conv1d_transpose", + "type": "TRANSPOSE_CONV", + "compute_unit": "GPU", + "execution_time": 442, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.conv1d_transpose/conv1d_transpose/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.pad_1/Pad", + "type": "PAD", + "compute_unit": "GPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/node_conv1d_1/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/node_conv1d_1/depthwise", + "type": "DEPTHWISE_CONV_2D", + "compute_unit": "GPU", + "execution_time": 12, + "execution_cycles": 0 + }, + { + "name": "model/node_conv1d_1/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reduce_mean_17/Mean", + "type": "MEAN", + "compute_unit": "GPU", + "execution_time": 7, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.squared_difference/SquaredDifference", + "type": "SQUARED_DIFFERENCE", + "compute_unit": "GPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reduce_mean_18/Mean", + "type": "MEAN", + "compute_unit": "GPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.__operators__.add/AddV2", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.rsqrt/Rsqrt", + "type": "RSQRT", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_114/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 5, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_115/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 9, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_116/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 6, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.subtract/Sub", + "type": "SUB", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.__operators__.add_1/AddV2", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_62/Add", + "type": "FULLY_CONNECTED", + "compute_unit": "GPU", + "execution_time": 1359, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.gelu/Gelu/Erfc", + "type": "GELU", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_63/Add", + "type": "FULLY_CONNECTED", + "compute_unit": "GPU", + "execution_time": 1608, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_64/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.conv1d_transpose_1/conv1d_transpose/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.conv1d_transpose_1/conv1d_transpose", + "type": "TRANSPOSE_CONV", + "compute_unit": "GPU", + "execution_time": 697, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.conv1d_transpose_1/conv1d_transpose/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.pad_2/Pad", + "type": "PAD", + "compute_unit": "GPU", + "execution_time": 13, + "execution_cycles": 0 + }, + { + "name": "model/node_conv1d_2/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/node_conv1d_2/depthwise", + "type": "DEPTHWISE_CONV_2D", + "compute_unit": "GPU", + "execution_time": 18, + "execution_cycles": 0 + }, + { + "name": "model/node_conv1d_2/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reduce_mean_19/Mean", + "type": "MEAN", + "compute_unit": "GPU", + "execution_time": 11, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.squared_difference_1/SquaredDifference", + "type": "SQUARED_DIFFERENCE", + "compute_unit": "GPU", + "execution_time": 11, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.reduce_mean_20/Mean", + "type": "MEAN", + "compute_unit": "GPU", + "execution_time": 10, + "execution_cycles": 0 + }, + { + "name": "model/tf.__operators__.add_2/AddV2", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.rsqrt_1/Rsqrt", + "type": "RSQRT", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_117/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 4, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_118/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 16, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_119/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 18, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.subtract_1/Sub", + "type": "SUB", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.__operators__.add_3/AddV2", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_67/Add", + "type": "FULLY_CONNECTED", + "compute_unit": "GPU", + "execution_time": 2638, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.gelu_1/Gelu/Erfc", + "type": "GELU", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_68/Add", + "type": "FULLY_CONNECTED", + "compute_unit": "GPU", + "execution_time": 2819, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_69/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.pad_3/Pad", + "type": "PAD", + "compute_unit": "GPU", + "execution_time": 12, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_1/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_1/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 7052, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_1/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_120/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 18, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_121/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_122/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_71/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.conv1d_transpose_2/conv1d_transpose/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.conv1d_transpose_2/conv1d_transpose", + "type": "TRANSPOSE_CONV", + "compute_unit": "GPU", + "execution_time": 26777, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.conv1d_transpose_2/conv1d_transpose/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_56/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "GPU", + "execution_time": 93, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_123/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 75, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_1/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_124/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_125/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_73/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.pad_4/Pad", + "type": "PAD", + "compute_unit": "GPU", + "execution_time": 92, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_2/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_2/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 20358, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_2/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_126/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 93, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_2/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_127/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_128/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_75/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_3/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_3/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 2930, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_3/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_77/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_129/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 103, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_3/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_130/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_131/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_78/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.pad_5/Pad", + "type": "PAD", + "compute_unit": "GPU", + "execution_time": 98, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_4/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_4/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 20375, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_4/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_132/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 102, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_4/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_133/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_134/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_80/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_5/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_5/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 2932, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_5/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_82/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_135/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 103, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_5/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_136/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_137/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_83/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.pad_6/Pad", + "type": "PAD", + "compute_unit": "GPU", + "execution_time": 94, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_6/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_6/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 20410, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_6/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_138/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 101, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_6/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_139/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_140/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_85/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_7/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_7/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 2930, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_7/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_87/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_141/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 102, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_7/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_142/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_143/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_88/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.conv1d_transpose_3/conv1d_transpose/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.conv1d_transpose_3/conv1d_transpose", + "type": "TRANSPOSE_CONV", + "compute_unit": "GPU", + "execution_time": 32963, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.conv1d_transpose_3/conv1d_transpose/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_57/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "GPU", + "execution_time": 252, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_144/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 262, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_8/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_145/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_146/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_90/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.pad_7/Pad", + "type": "PAD", + "compute_unit": "GPU", + "execution_time": 297, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_8/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_8/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 25296, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_8/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_147/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 282, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_9/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_148/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_149/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_92/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_9/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_9/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 3641, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_9/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_94/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_150/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 281, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_10/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_151/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_152/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_95/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.pad_8/Pad", + "type": "PAD", + "compute_unit": "GPU", + "execution_time": 292, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_10/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_10/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 25266, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_10/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_153/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 280, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_11/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_154/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_155/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_97/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_11/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_11/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 3640, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_11/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_99/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_156/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 278, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_12/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_157/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_158/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_100/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.pad_9/Pad", + "type": "PAD", + "compute_unit": "GPU", + "execution_time": 300, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_12/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_12/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 25304, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_12/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_159/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 281, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_13/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_160/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_161/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_102/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_13/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_13/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 3641, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_13/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_104/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_162/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 281, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_14/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_163/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_164/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_105/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.conv1d_transpose_4/conv1d_transpose/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.conv1d_transpose_4/conv1d_transpose", + "type": "TRANSPOSE_CONV", + "compute_unit": "GPU", + "execution_time": 21756, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.conv1d_transpose_4/conv1d_transpose/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_58/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "GPU", + "execution_time": 570, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_165/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 573, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_15/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_166/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_167/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_107/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.pad_10/Pad", + "type": "PAD", + "compute_unit": "GPU", + "execution_time": 540, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_14/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_14/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 28734, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_14/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_168/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 519, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_16/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_169/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_170/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_109/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_15/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_15/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 4240, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_15/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_111/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_171/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 519, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_17/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_172/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_173/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_112/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.pad_11/Pad", + "type": "PAD", + "compute_unit": "GPU", + "execution_time": 588, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_16/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_16/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 30085, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_16/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_174/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 517, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_18/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_175/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_176/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_114/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_17/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_17/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 4260, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_17/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_116/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_177/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 577, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_19/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_178/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_179/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_117/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.pad_12/Pad", + "type": "PAD", + "compute_unit": "GPU", + "execution_time": 589, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_18/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_18/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 30129, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_18/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_180/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 574, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_20/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_181/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_182/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_119/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_19/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_19/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 4257, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_19/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_121/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_183/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 576, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_21/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_184/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_185/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_122/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.conv1d_transpose_5/conv1d_transpose/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.conv1d_transpose_5/conv1d_transpose", + "type": "TRANSPOSE_CONV", + "compute_unit": "GPU", + "execution_time": 12347, + "execution_cycles": 0 + }, + { + "name": "model/tf.nn.conv1d_transpose_5/conv1d_transpose/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_59/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "GPU", + "execution_time": 871, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_186/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 881, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_22/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_187/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_188/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_124/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.pad_13/Pad", + "type": "PAD", + "compute_unit": "GPU", + "execution_time": 888, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_20/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_20/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 22578, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_20/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_189/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 870, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_23/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_190/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_191/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_126/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_21/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_21/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 3235, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_21/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_128/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_192/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 868, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_24/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_193/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_194/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_129/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.pad_14/Pad", + "type": "PAD", + "compute_unit": "GPU", + "execution_time": 887, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_22/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_22/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 22588, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_22/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_195/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 869, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_25/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_196/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_197/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_131/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_23/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_23/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 3241, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_23/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_133/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_198/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 873, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_26/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_199/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_200/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_134/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.pad_15/Pad", + "type": "PAD", + "compute_unit": "GPU", + "execution_time": 904, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_24/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_24/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 22572, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_24/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_201/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 871, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_27/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_202/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_203/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_136/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_25/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_25/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 3257, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_25/DynamicConv1D/Squeeze", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_138/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_204/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 869, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.sin_28/Sin", + "type": "SIN", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_205/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.multiply_206/Mul", + "type": "MUL", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.math.add_139/Add", + "type": "ADD", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.pad_16/Pad", + "type": "PAD", + "compute_unit": "GPU", + "execution_time": 822, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_26/DynamicConv1D/ExpandDims", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 0, + "execution_cycles": 0 + }, + { + "name": "model/dynamic_conv1d_26/DynamicConv1D", + "type": "CONV_2D", + "compute_unit": "GPU", + "execution_time": 521, + "execution_cycles": 0 + }, + { + "name": "model/tf.compat.v1.transpose_41/transpose", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 27, + "execution_cycles": 0 + }, + { + "name": "model/tf.strided_slice_60/StridedSlice", + "type": "STRIDED_SLICE", + "compute_unit": "GPU", + "execution_time": 2, + "execution_cycles": 0 + }, + { + "name": "output_0", + "type": "RESHAPE", + "compute_unit": "GPU", + "execution_time": 3, + "execution_cycles": 0 + } + ] + } +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/profile_submission.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/profile_submission.json new file mode 100644 index 000000000..5199bfa2b --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/profile_submission.json @@ -0,0 +1,13 @@ +{ + "timestamp_utc": "2026-09-24T05:16:05.792010+00:00", + "facility": "Qualcomm AI Hub Workbench", + "qai_hub_version": "0.55.0", + "target_model_id": "mq9yrr5yn", + "input_dataset_id": null, + "device": "Samsung Galaxy S25", + "options": "--compute_unit gpu", + "kind": "profile", + "status": "SUBMITTED", + "job_id": "jpxl4jo1p", + "url": "https://workbench.aihub.qualcomm.com/jobs/jpxl4jo1p/" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/README.md b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/README.md new file mode 100644 index 000000000..13d9c286e --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/README.md @@ -0,0 +1,59 @@ +# Spark-X2.5 1.7B BF16 on WSL CPU + +The complete upstream BF16 checkpoint, previously missing its two weight +shards, was downloaded outside Git from +`XHToken/Spark-X2.5-1.7B` at revision +`14d6e83c13c7add2b62a7c39b2131f4ed1cddcf8`. The +[weight manifest](weight_manifest.json) verifies both upstream LFS SHA256 +digests, file sizes and every tensor name in the checkpoint index. This is a +separate artifact from the previously tested INT8 and GGUF variants. + +On the Ryzen AI 9 HX 370 WSL CPU, the current Omni local text path admitted +the dense BF16 artifact with a 4,096-token context and an explicit 7.64 GiB +host-RAM budget. The [fork-branch acceptance run](accept_branch_report.json) completed all 12 +named prompts with 128 output tokens each, reported actual CPU placement, and +retired an in-flight cancelled request without a stale event. The separate +[fork-branch parity run](parity_branch_report.json) compared the Omni path against standalone +vLLM on the same checkpoint and found exact greedy token-ID agreement for +12/12 prompts at 128 output tokens. The installed vLLM was 0.28.0 while the +tested fork-branch Omni package identified as 0.29.0rc2.dev71, so that +version pairing and its compatibility warning must be retained with the result. +The branch acceptance run observed a 30.36 s load and approximately 6.45 GiB +process-tree RSS load delta; neither is a cold-start guarantee or an +attribution to model weights alone. +The [branch run manifest](branch_run_manifest.json) pins the imported runtime, +source-file hashes and all three raw report hashes. + +The [fork-branch 20-request complete-text profile](profile20_branch_report.json) used one warmup, +then 20 serial requests with the same 28-token prompt and 64 generated tokens +per request. Nearest-rank p50/p95 complete-request wall time was **5.411/5.751 s**; +time to first token was **0.129/0.146 s**. These are measurements of the admitted +fork-branch Omni BF16 CPU route, not mobile estimates or sustained thermal results. The +[profiler](../../../../experiments/profile_spark_bf16_omni_cpu.py) retains all +20 raw request samples and runtime provenance. A separately retained +[acceptance](accept_report.json), [parity](parity_report.json) and +[20-request profile](profile20_report.json) came from a neighboring Omni +checkout (`3834de310`, package `0.28.1.dev154`) with the same vLLM 0.28.0 +and checkpoint. Its 4.808/5.089 s wall p50/p95 and 19.88 s acceptance load +are distinct run observations, not the fork-branch timing. + +Reproduce from the repository root with the installed CPU environment, after +downloading the pinned checkpoint into the path below: + +```bash +export PYTHONPATH=/home/zhout/project/edge_infer/vllm-omni-edge +/home/zhout/project/edge_infer/.venvs/omni-cpu/bin/python -m vllm_omni.edge.local accept \ + --model /home/zhout/project/edge_infer/models/Spark-X2.5-1.7B-BF16 \ + --max-model-len 4096 --max-tokens 128 --json /tmp/spark_bf16_accept_repeat.json +/home/zhout/project/edge_infer/.venvs/omni-cpu/bin/python -m vllm_omni.edge.local parity \ + --model /home/zhout/project/edge_infer/models/Spark-X2.5-1.7B-BF16 \ + --max-model-len 4096 --max-tokens 128 --json /tmp/spark_bf16_parity_repeat.json +/home/zhout/project/edge_infer/.venvs/omni-cpu/bin/python \ + benchmarks/edge_harness/experiments/profile_spark_bf16_omni_cpu.py \ + --model /home/zhout/project/edge_infer/models/Spark-X2.5-1.7B-BF16 \ + --report /tmp/spark_bf16_profile_repeat.json +``` + +This validates one complete text path and cancellation on WSL CPU. It does +not establish native Windows BF16 execution, mobile generation, broader text +quality, sustained load, or an incremental GGUF token-stream contract. diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/accept_branch_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/accept_branch_report.json new file mode 100644 index 000000000..f94cf7c79 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/accept_branch_report.json @@ -0,0 +1,7750 @@ +{ + "masked_plan": { + "admitted": true, + "backend": "vllm:cpu", + "selected_device": { + "device_id": "cpu", + "kind": "cpu", + "vendor": "amd", + "name": "AMD Ryzen AI 9 HX 370 w/ Radeon 890M", + "backend": "vllm:cpu", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 33184976896, + "compute_capability": null, + "weight_formats": [ + "compressed-tensors:int8", + "dense", + "gptq" + ], + "evidence": "B", + "reason": "", + "masked": false, + "extra": { + "n_physical": 12, + "n_logical": 24, + "ram_available_bytes": 30851383296, + "bf16": true + } + }, + "devices": [ + { + "device_id": "npu:amd", + "kind": "npu", + "vendor": "amd", + "name": "NPU Compute Accelerator Device", + "backend": "ort:vitisai", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 0, + "compute_capability": null, + "weight_formats": [ + "onnx:a16w8" + ], + "evidence": "B", + "reason": "An MCDM device; WSL2's GPU-PV forwards WDDM display adapters only, so it has no device node here and nothing installed inside WSL reaches it. It does work from a Windows-side process -- onnxruntime>=1.25 plus the WindowsWorkload.EP.AMD.VitisAI.Framework appx, loading onnxruntime_vitisai_ep.dll (not the RyzenAI *Light* EP beside it) with its own directory on the DLL search path, against an A16W8-quantized opset-21 graph. Measured 5.3x the CPU on a 1024x2048x2048 GEMM. See vllm_omni/edge/npu_ryzenai.py.", + "masked": false, + "extra": { + "source": "wsl-interop", + "probe_route": "ryzenai-ep-windows", + "host_pool_bytes": 33184976896, + "host_pool_available_bytes": 30851383296, + "worker_route": "ort-vitisai", + "worker_interpreter": "/mnt/c/Users/zhout/npu-ep/Scripts/python.exe", + "routes": [ + { + "name": "ort-vitisai", + "interpreter": "/mnt/c/Users/zhout/npu-ep/Scripts/python.exe", + "worker": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/edge/local/external/worker_ort.py", + "ep": "vitisai", + "is_windows": true, + "available": true, + "reason": "", + "extra": null + } + ], + "executes": "exported graphs, not checkpoints", + "dedicated_vram_bytes": 0 + } + }, + { + "device_id": "gpu_integrated:amd", + "kind": "gpu_integrated", + "vendor": "amd", + "name": "AMD Radeon(TM) 890M Graphics", + "backend": "ort:dml", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 0, + "compute_capability": null, + "weight_formats": [ + "onnx:fp16", + "onnx:fp32" + ], + "evidence": "B", + "reason": "No /dev/dri under WSL2, but reachable through DirectML over /dev/dxg: pip install torch-directml in its own venv (it pins torch==2.4.1). Measured 1.12 TFLOP/s fp32 and 5-7.4 GB/s -- below the CPU on both, so route work here only when the CPU is the thing you are trying to free.", + "masked": false, + "extra": { + "source": "wsl-interop", + "probe_route": "directml", + "host_pool_bytes": 33184976896, + "host_pool_available_bytes": 30851383296, + "worker_route": "ort-dml", + "worker_interpreter": "/mnt/c/Users/zhout/dml-ep/Scripts/python.exe", + "routes": [ + { + "name": "ort-dml", + "interpreter": "/mnt/c/Users/zhout/dml-ep/Scripts/python.exe", + "worker": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/edge/local/external/worker_ort.py", + "ep": "dml", + "is_windows": true, + "available": true, + "reason": "", + "extra": null + }, + { + "name": "torch-dml", + "interpreter": "/home/zhout/project/edge_infer/.venvs/dml/bin/python", + "worker": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/edge/local/external/worker_dml.py", + "ep": "dml", + "is_windows": false, + "available": true, + "reason": "", + "extra": null + } + ], + "executes": "exported graphs, not checkpoints", + "dedicated_vram_bytes": 0 + } + }, + { + "device_id": "cpu", + "kind": "cpu", + "vendor": "amd", + "name": "AMD Ryzen AI 9 HX 370 w/ Radeon 890M", + "backend": "vllm:cpu", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 33184976896, + "compute_capability": null, + "weight_formats": [ + "compressed-tensors:int8", + "dense", + "gptq" + ], + "evidence": "B", + "reason": "", + "masked": false, + "extra": { + "n_physical": 12, + "n_logical": 24, + "ram_available_bytes": 30851383296, + "bf16": true + } + } + ], + "stage": { + "stage_id": 0, + "model_stage": "spark2_5", + "execution_type": "LLM_AR", + "input_sources": [], + "final_output": true, + "final_output_type": "text", + "owns_tokenizer": true, + "state": "kv_cache", + "streaming_granularity": "token" + }, + "engine_kwargs": { + "max_model_len": 4096, + "max_num_seqs": 1, + "max_num_batched_tokens": 2048, + "enforce_eager": true, + "enable_prefix_caching": false, + "gpu_memory_utilization": 0.27, + "kv_cache_memory_bytes": 293601280, + "dtype": "bfloat16" + }, + "reservations": [ + { + "pool": "host_ram", + "purpose": "weights", + "bytes": 3415340496, + "lifetime": "session_weights", + "reclaimable": "no", + "evidence": "D", + "note": "2 safetensors shard(s), on-disk size", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "kv_cache", + "bytes": 293601280, + "lifetime": "session", + "reclaimable": "on_evict", + "evidence": "E", + "note": "flat budget at 1x context; 96 MiB if the backend accounts 21 sliding layers separately", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "activations", + "bytes": 101187584, + "lifetime": "request", + "reclaimable": "on_release", + "evidence": "E", + "note": "2048-token prefill chunk x 12 live tensors", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "backend_workspace", + "bytes": 536870912, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "attention scratch, driver/allocator context", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "load_transient", + "bytes": 1707670248, + "lifetime": "load", + "reclaimable": "on_release", + "evidence": "E", + "note": "freed once the weights are resident; peaks with the largest shard", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "external_reserve", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "memory this engine does not own on a shared pool", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "safety_margin", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "fragmentation and allocator slack", + "actual_upper_bound_bytes": null + } + ], + "reserved_total_bytes": 8202154168, + "kv_budget": { + "bytes_total": 293601280, + "bytes_total_hybrid": 100925440, + "bytes_per_token_flat": 57344, + "token_layers_hybrid": 39424, + "token_layers_flat": 114688, + "sliding_layers": 21, + "full_layers": 7, + "window": 512, + "linear_layers": 0, + "state_bytes_per_seq": 0, + "state_bytes_total": 0, + "summary": "280 MiB flat; 96 MiB if the backend accounts 21 sliding@512 layers separately (2.91x)", + "saving_vs_flat": 2.909090909090909 + }, + "refusals": [ + { + "code": "no_exported_graph", + "device_id": "npu:amd", + "message": "npu:amd executes exported graphs (['onnx:a16w8']), not checkpoints, so a whole autoregressive text session cannot be placed on it", + "remedy": "place a single stage there instead, via vllm_omni.edge.local.external.stage.plan_external_stage; the decode loop stays on the CPU or the GPU because both of these devices read the same system memory it does" + }, + { + "code": "no_exported_graph", + "device_id": "gpu_integrated:amd", + "message": "gpu_integrated:amd executes exported graphs (['onnx:fp16', 'onnx:fp32']), not checkpoints, so a whole autoregressive text session cannot be placed on it", + "remedy": "place a single stage there instead, via vllm_omni.edge.local.external.stage.plan_external_stage; the decode loop stays on the CPU or the GPU because both of these devices read the same system memory it does" + } + ], + "fallbacks": [ + "shorter --max-model-len reduces the KV reservation linearly" + ], + "request_limits": { + "max_model_len": 4096, + "max_num_seqs": 1, + "max_num_batched_tokens": 2048 + }, + "manifest": { + "model_dir": "/home/zhout/project/edge_infer/models/Spark-X2.5-1.7B-BF16", + "model_type": "spark2_5", + "architectures": [ + "Spark2_5ForCausalLM" + ], + "dtype": "bfloat16", + "weight_format": "dense", + "quantization": null, + "config_sha256": "16aa5d3619d0d893e7157f2499675430844eb7b383c80ecc1b3e8e8928a75d52", + "tokenizer_sha256": "72b88cd03593f92c7307ac23653df70ca383df15357fca03f6c5c0b3b3ea8f17", + "tokenizer_files": [ + "tokenizer.json", + "tokenizer_config.json", + "special_tokens_map.json", + "chat_template.jinja", + "vocab.json", + "merges.txt", + "generation_config.json" + ], + "weight_files": [ + "model-00001-of-00002.safetensors", + "model-00002-of-00002.safetensors" + ], + "weight_bytes": 3415340496, + "weight_sha256": null, + "revision": null, + "runtime": { + "python": "3.12.13", + "platform": "Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.43", + "torch": "2.13.0+cpu", + "vllm": "0.28.0", + "vllm_omni": "0.29.0rc2.dev71+g00510ce38.d20260922", + "vllm_omni_file": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/__init__.py", + "vllm_file": "/home/zhout/project/edge_infer/.venvs/omni-cpu/lib/python3.12/site-packages/vllm/__init__.py", + "checkouts": { + "/home/zhout/project/edge_infer/vllm-omni-edge": "8978302a1b7b86f17f45d530c544fb87bec8990d-dirty", + "/home/zhout/project/edge_infer": "758b3af238b19e2c2abc668f23a767bb835a4a22-dirty" + } + }, + "notes": [ + "weights identified by name+size, not content; pass digest_weights=True to hash them" + ], + "artifact_id": "c777e48f9e300714" + }, + "notes": [ + "activations, workspace and the load transient are estimates (E); engine.py records the measured peak against them after the load" + ] + }, + "masked_outcome": "admitted", + "started_unix": 1790227552.1364183, + "argv": [ + "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/edge/local/__main__.py", + "accept", + "--model", + "/home/zhout/project/edge_infer/models/Spark-X2.5-1.7B-BF16", + "--max-model-len", + "4096", + "--max-tokens", + "128", + "--json", + "benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/accept_branch_report.json" + ], + "acceptance": { + "prompts": 12, + "min_tokens_required": 128, + "all_reached_min": true, + "cancel_clean": true + }, + "plan": { + "admitted": true, + "backend": "vllm:cpu", + "selected_device": { + "device_id": "cpu", + "kind": "cpu", + "vendor": "amd", + "name": "AMD Ryzen AI 9 HX 370 w/ Radeon 890M", + "backend": "vllm:cpu", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 33184976896, + "compute_capability": null, + "weight_formats": [ + "compressed-tensors:int8", + "dense", + "gptq" + ], + "evidence": "B", + "reason": "", + "masked": false, + "extra": { + "n_physical": 12, + "n_logical": 24, + "ram_available_bytes": 30845968384, + "bf16": true + } + }, + "devices": [ + { + "device_id": "npu:amd", + "kind": "npu", + "vendor": "amd", + "name": "NPU Compute Accelerator Device", + "backend": "ort:vitisai", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 0, + "compute_capability": null, + "weight_formats": [ + "onnx:a16w8" + ], + "evidence": "B", + "reason": "An MCDM device; WSL2's GPU-PV forwards WDDM display adapters only, so it has no device node here and nothing installed inside WSL reaches it. It does work from a Windows-side process -- onnxruntime>=1.25 plus the WindowsWorkload.EP.AMD.VitisAI.Framework appx, loading onnxruntime_vitisai_ep.dll (not the RyzenAI *Light* EP beside it) with its own directory on the DLL search path, against an A16W8-quantized opset-21 graph. Measured 5.3x the CPU on a 1024x2048x2048 GEMM. See vllm_omni/edge/npu_ryzenai.py.", + "masked": false, + "extra": { + "source": "wsl-interop", + "probe_route": "ryzenai-ep-windows", + "host_pool_bytes": 33184976896, + "host_pool_available_bytes": 30845968384, + "worker_route": "ort-vitisai", + "worker_interpreter": "/mnt/c/Users/zhout/npu-ep/Scripts/python.exe", + "routes": [ + { + "name": "ort-vitisai", + "interpreter": "/mnt/c/Users/zhout/npu-ep/Scripts/python.exe", + "worker": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/edge/local/external/worker_ort.py", + "ep": "vitisai", + "is_windows": true, + "available": true, + "reason": "", + "extra": null + } + ], + "executes": "exported graphs, not checkpoints", + "dedicated_vram_bytes": 0 + } + }, + { + "device_id": "gpu_integrated:amd", + "kind": "gpu_integrated", + "vendor": "amd", + "name": "AMD Radeon(TM) 890M Graphics", + "backend": "ort:dml", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 0, + "compute_capability": null, + "weight_formats": [ + "onnx:fp16", + "onnx:fp32" + ], + "evidence": "B", + "reason": "No /dev/dri under WSL2, but reachable through DirectML over /dev/dxg: pip install torch-directml in its own venv (it pins torch==2.4.1). Measured 1.12 TFLOP/s fp32 and 5-7.4 GB/s -- below the CPU on both, so route work here only when the CPU is the thing you are trying to free.", + "masked": false, + "extra": { + "source": "wsl-interop", + "probe_route": "directml", + "host_pool_bytes": 33184976896, + "host_pool_available_bytes": 30845968384, + "worker_route": "ort-dml", + "worker_interpreter": "/mnt/c/Users/zhout/dml-ep/Scripts/python.exe", + "routes": [ + { + "name": "ort-dml", + "interpreter": "/mnt/c/Users/zhout/dml-ep/Scripts/python.exe", + "worker": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/edge/local/external/worker_ort.py", + "ep": "dml", + "is_windows": true, + "available": true, + "reason": "", + "extra": null + }, + { + "name": "torch-dml", + "interpreter": "/home/zhout/project/edge_infer/.venvs/dml/bin/python", + "worker": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/edge/local/external/worker_dml.py", + "ep": "dml", + "is_windows": false, + "available": true, + "reason": "", + "extra": null + } + ], + "executes": "exported graphs, not checkpoints", + "dedicated_vram_bytes": 0 + } + }, + { + "device_id": "cpu", + "kind": "cpu", + "vendor": "amd", + "name": "AMD Ryzen AI 9 HX 370 w/ Radeon 890M", + "backend": "vllm:cpu", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 33184976896, + "compute_capability": null, + "weight_formats": [ + "compressed-tensors:int8", + "dense", + "gptq" + ], + "evidence": "B", + "reason": "", + "masked": false, + "extra": { + "n_physical": 12, + "n_logical": 24, + "ram_available_bytes": 30845968384, + "bf16": true + } + } + ], + "stage": { + "stage_id": 0, + "model_stage": "spark2_5", + "execution_type": "LLM_AR", + "input_sources": [], + "final_output": true, + "final_output_type": "text", + "owns_tokenizer": true, + "state": "kv_cache", + "streaming_granularity": "token" + }, + "engine_kwargs": { + "max_model_len": 4096, + "max_num_seqs": 1, + "max_num_batched_tokens": 2048, + "enforce_eager": true, + "enable_prefix_caching": false, + "gpu_memory_utilization": 0.27, + "kv_cache_memory_bytes": 293601280, + "dtype": "bfloat16" + }, + "reservations": [ + { + "pool": "host_ram", + "purpose": "weights", + "bytes": 3415340496, + "lifetime": "session_weights", + "reclaimable": "no", + "evidence": "D", + "note": "2 safetensors shard(s), on-disk size; the load moved +6.45 GiB of process-tree RSS, which bounds weights + backend context together and is not an attribution to the weights alone", + "actual_upper_bound_bytes": 6924705792 + }, + { + "pool": "host_ram", + "purpose": "kv_cache", + "bytes": 293601280, + "lifetime": "session", + "reclaimable": "on_evict", + "evidence": "E", + "note": "flat budget at 1x context; 96 MiB if the backend accounts 21 sliding layers separately", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "activations", + "bytes": 101187584, + "lifetime": "request", + "reclaimable": "on_release", + "evidence": "E", + "note": "2048-token prefill chunk x 12 live tensors", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "backend_workspace", + "bytes": 536870912, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "attention scratch, driver/allocator context", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "load_transient", + "bytes": 1707670248, + "lifetime": "load", + "reclaimable": "on_release", + "evidence": "E", + "note": "freed once the weights are resident; peaks with the largest shard", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "external_reserve", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "memory this engine does not own on a shared pool", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "safety_margin", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "fragmentation and allocator slack", + "actual_upper_bound_bytes": null + } + ], + "reserved_total_bytes": 8202154168, + "kv_budget": { + "bytes_total": 293601280, + "bytes_total_hybrid": 100925440, + "bytes_per_token_flat": 57344, + "token_layers_hybrid": 39424, + "token_layers_flat": 114688, + "sliding_layers": 21, + "full_layers": 7, + "window": 512, + "linear_layers": 0, + "state_bytes_per_seq": 0, + "state_bytes_total": 0, + "summary": "280 MiB flat; 96 MiB if the backend accounts 21 sliding@512 layers separately (2.91x)", + "saving_vs_flat": 2.909090909090909 + }, + "refusals": [ + { + "code": "no_exported_graph", + "device_id": "npu:amd", + "message": "npu:amd executes exported graphs (['onnx:a16w8']), not checkpoints, so a whole autoregressive text session cannot be placed on it", + "remedy": "place a single stage there instead, via vllm_omni.edge.local.external.stage.plan_external_stage; the decode loop stays on the CPU or the GPU because both of these devices read the same system memory it does" + }, + { + "code": "no_exported_graph", + "device_id": "gpu_integrated:amd", + "message": "gpu_integrated:amd executes exported graphs (['onnx:fp16', 'onnx:fp32']), not checkpoints, so a whole autoregressive text session cannot be placed on it", + "remedy": "place a single stage there instead, via vllm_omni.edge.local.external.stage.plan_external_stage; the decode loop stays on the CPU or the GPU because both of these devices read the same system memory it does" + } + ], + "fallbacks": [ + "shorter --max-model-len reduces the KV reservation linearly" + ], + "request_limits": { + "max_model_len": 4096, + "max_num_seqs": 1, + "max_num_batched_tokens": 2048 + }, + "manifest": { + "model_dir": "/home/zhout/project/edge_infer/models/Spark-X2.5-1.7B-BF16", + "model_type": "spark2_5", + "architectures": [ + "Spark2_5ForCausalLM" + ], + "dtype": "bfloat16", + "weight_format": "dense", + "quantization": null, + "config_sha256": "16aa5d3619d0d893e7157f2499675430844eb7b383c80ecc1b3e8e8928a75d52", + "tokenizer_sha256": "72b88cd03593f92c7307ac23653df70ca383df15357fca03f6c5c0b3b3ea8f17", + "tokenizer_files": [ + "tokenizer.json", + "tokenizer_config.json", + "special_tokens_map.json", + "chat_template.jinja", + "vocab.json", + "merges.txt", + "generation_config.json" + ], + "weight_files": [ + "model-00001-of-00002.safetensors", + "model-00002-of-00002.safetensors" + ], + "weight_bytes": 3415340496, + "weight_sha256": null, + "revision": null, + "runtime": { + "python": "3.12.13", + "platform": "Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.43", + "torch": "2.13.0+cpu", + "vllm": "0.28.0", + "vllm_omni": "0.29.0rc2.dev71+g00510ce38.d20260922", + "vllm_omni_file": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/__init__.py", + "vllm_file": "/home/zhout/project/edge_infer/.venvs/omni-cpu/lib/python3.12/site-packages/vllm/__init__.py", + "checkouts": { + "/home/zhout/project/edge_infer/vllm-omni-edge": "8978302a1b7b86f17f45d530c544fb87bec8990d-dirty", + "/home/zhout/project/edge_infer": "758b3af238b19e2c2abc668f23a767bb835a4a22-dirty" + } + }, + "notes": [ + "weights identified by name+size, not content; pass digest_weights=True to hash them" + ], + "artifact_id": "c777e48f9e300714" + }, + "notes": [ + "activations, workspace and the load transient are estimates (E); engine.py records the measured peak against them after the load" + ] + }, + "placement": { + "planned_device": "cpu", + "planned_backend": "vllm:cpu", + "configured": { + "device": "cpu", + "device_type": "cpu", + "dtype": "torch.bfloat16", + "quantization": null, + "max_model_len": 4096, + "enforce_eager": true, + "kv_cache_memory_bytes": 293601280, + "num_gpu_blocks": 160, + "block_size": 128 + }, + "observed": { + "nvml_device_used_delta_at_load": null, + "tree_rss_delta_at_load": 6924705792, + "per_process_gpu_attribution": null, + "per_process_gpu_attribution_reason": "NVML per-process query unavailable on this wsl2 host: No module named 'pynvml'. The load delta is a whole-card measurement." + }, + "host_compat": null + }, + "usage": { + "load_seconds": 30.35568025399698, + "reservations": [ + { + "pool": "host_ram", + "purpose": "weights", + "bytes": 3415340496, + "lifetime": "session_weights", + "reclaimable": "no", + "evidence": "D", + "note": "2 safetensors shard(s), on-disk size; the load moved +6.45 GiB of process-tree RSS, which bounds weights + backend context together and is not an attribution to the weights alone", + "actual_upper_bound_bytes": 6924705792, + "upper_bound_over_budget": 2.0275301394136602 + }, + { + "pool": "host_ram", + "purpose": "kv_cache", + "bytes": 293601280, + "lifetime": "session", + "reclaimable": "on_evict", + "evidence": "E", + "note": "flat budget at 1x context; 96 MiB if the backend accounts 21 sliding layers separately", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + }, + { + "pool": "host_ram", + "purpose": "activations", + "bytes": 101187584, + "lifetime": "request", + "reclaimable": "on_release", + "evidence": "E", + "note": "2048-token prefill chunk x 12 live tensors", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + }, + { + "pool": "host_ram", + "purpose": "backend_workspace", + "bytes": 536870912, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "attention scratch, driver/allocator context", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + }, + { + "pool": "host_ram", + "purpose": "load_transient", + "bytes": 1707670248, + "lifetime": "load", + "reclaimable": "on_release", + "evidence": "E", + "note": "freed once the weights are resident; peaks with the largest shard", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + }, + { + "pool": "host_ram", + "purpose": "external_reserve", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "memory this engine does not own on a shared pool", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + }, + { + "pool": "host_ram", + "purpose": "safety_margin", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "fragmentation and allocator slack", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + } + ], + "budgeted_peak_bytes": 8202154168, + "measured_peak": { + "pool": "host_ram", + "counter": "tree_rss", + "baseline_bytes": 807866368, + "peak_bytes": 7973199872, + "attributable_peak_bytes": 7165333504, + "budgeted_peak_bytes": 8202154168, + "budget_over_measured": 1.1446995681947256, + "admitted_without_oom": true, + "caveats": "sampled every 0.25 s, so the peak is a lower bound; the counter is shared with other processes and the baseline subtraction only removes what was there before the load, not what arrived during it. A budget above the measured peak is the intended outcome -- this budget is a safe upper bound for admission, not a prediction." + }, + "load_memory": { + "before": { + "unix": 1790227384.731798, + "nvml_device_used": null, + "nvml_device_total": null, + "tree_rss": 807866368, + "tree_pss": 806410240, + "host_available": 30843387904, + "host_total": 33184976896 + }, + "after": { + "unix": 1790227415.1799724, + "nvml_device_used": null, + "nvml_device_total": null, + "tree_rss": 7732572160, + "tree_pss": 7196845056, + "host_available": 24223023104, + "host_total": 33184976896 + }, + "nvml_device_used_delta": null, + "tree_rss_delta": 6924705792, + "peaks_during_load": { + "samples": 100, + "interval_s": 0.25, + "note": "peaks are lower bounds: anything shorter than interval_s is missed. nvml_device_used is the whole card including other processes; tree_pss includes a share of file-backed pages. These three counters are different accountings and must not be summed.", + "nvml_device_used_peak": null, + "nvml_device_used_min": null, + "tree_rss_peak": 7466074112, + "tree_pss_peak": 6933091328, + "host_available_min": 24507871232 + } + }, + "peaks": { + "samples": 437, + "interval_s": 0.25, + "note": "peaks are lower bounds: anything shorter than interval_s is missed. nvml_device_used is the whole card including other processes; tree_pss includes a share of file-backed pages. These three counters are different accountings and must not be summed.", + "nvml_device_used_peak": null, + "nvml_device_used_min": null, + "tree_rss_peak": 7973199872, + "tree_pss_peak": 7437427712, + "host_available_min": 24109338624 + }, + "requests": [ + { + "request_id": "f145fd493f3f4b55-0", + "session_id": "f145fd493f3f4b55", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 128, + "submitted_unix": 1790227415.1802092, + "first_token_unix": 1790227415.3230426, + "last_token_unix": 1790227425.686076, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227415.3230426, + 1790227415.4091625, + 1790227415.491136, + 1790227415.5877392, + 1790227415.6596658, + 1790227415.7340164, + 1790227415.819555, + 1790227415.9229302, + 1790227416.008717, + 1790227416.0876663, + 1790227416.1595006, + 1790227416.2377555, + 1790227416.3156044, + 1790227416.3961468, + 1790227416.474537, + 1790227416.565274, + 1790227416.6477609, + 1790227416.7261093, + 1790227416.8089998, + 1790227416.8932528, + 1790227416.978057, + 1790227417.064071, + 1790227417.1500802, + 1790227417.2371178, + 1790227417.3242426, + 1790227417.4069304, + 1790227417.4920926, + 1790227417.5907815, + 1790227417.667579, + 1790227417.7442493, + 1790227417.8231928, + 1790227417.8954847, + 1790227417.9698508, + 1790227418.0497203, + 1790227418.1364532, + 1790227418.2157176, + 1790227418.2995076, + 1790227418.3740418, + 1790227418.4519844, + 1790227418.5379202, + 1790227418.6232436, + 1790227418.7006881, + 1790227418.7779143, + 1790227418.8640018, + 1790227418.9335413, + 1790227419.0042908, + 1790227419.090915, + 1790227419.1687746, + 1790227419.2539015, + 1790227419.3344076, + 1790227419.4134052, + 1790227419.4908319, + 1790227419.572191, + 1790227419.6589644, + 1790227419.7475224, + 1790227419.8237934, + 1790227419.9021304, + 1790227419.9817083, + 1790227420.0668795, + 1790227420.1456246, + 1790227420.228444, + 1790227420.307726, + 1790227420.3862956, + 1790227420.4844394, + 1790227420.566257, + 1790227420.6589215, + 1790227420.7340176, + 1790227420.8164713, + 1790227420.8915412, + 1790227420.9720068, + 1790227421.0538034, + 1790227421.1276057, + 1790227421.2144227, + 1790227421.3023632, + 1790227421.3812773, + 1790227421.4658973, + 1790227421.5422447, + 1790227421.6225603, + 1790227421.707037, + 1790227421.7812622, + 1790227421.8610754, + 1790227421.9364247, + 1790227422.0166557, + 1790227422.095412, + 1790227422.171951, + 1790227422.2566051, + 1790227422.3414302, + 1790227422.428077, + 1790227422.503336, + 1790227422.5840375, + 1790227422.665587, + 1790227422.745878, + 1790227422.8304448, + 1790227422.9118013, + 1790227422.9914188, + 1790227423.0742404, + 1790227423.1493828, + 1790227423.2296376, + 1790227423.3188086, + 1790227423.3977497, + 1790227423.4786565, + 1790227423.5648, + 1790227423.6536071, + 1790227423.739873, + 1790227423.8318229, + 1790227423.911542, + 1790227423.9895418, + 1790227424.0703661, + 1790227424.1502135, + 1790227424.2290227, + 1790227424.3078148, + 1790227424.3878984, + 1790227424.47413, + 1790227424.5538385, + 1790227424.6318295, + 1790227424.7114763, + 1790227424.793925, + 1790227424.8764563, + 1790227424.9579434, + 1790227425.0284204, + 1790227425.104212, + 1790227425.1850066, + 1790227425.2655668, + 1790227425.3601966, + 1790227425.4450846, + 1790227425.522498, + 1790227425.603773, + 1790227425.686076 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris\n\nWait, the user's message is: \"What is the capital of France? Answer in one word.\" I need to provide the answer. The answer is \"Paris\". I should output just that word.\n\nBut let's see the instruction: \"Answer in one word.\" So I should respond", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 198, + 198, + 34542, + 25, + 275, + 3754, + 1045, + 5974, + 390, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 373, + 1633, + 312, + 4553, + 275, + 6787, + 27, + 614, + 6787, + 390, + 518, + 110949, + 4348, + 373, + 2029, + 6340, + 1839, + 455, + 5240, + 27, + 198, + 198, + 4023, + 1553, + 1045, + 2261, + 275, + 23220, + 39, + 518, + 47648, + 304, + 1135, + 5240, + 1848, + 4358, + 373, + 2029, + 9666 + ], + "ttft_s": 0.14283347129821777, + "decode_tok_per_s": 12.255099099722559 + }, + { + "request_id": "8384f1e154714347-1", + "session_id": "8384f1e154714347", + "epoch": 0, + "prompt_chars": 595, + "prompt_tokens": 137, + "output_tokens": 128, + "submitted_unix": 1790227425.6863406, + "first_token_unix": 1790227426.1346984, + "last_token_unix": 1790227436.4969933, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227426.1346984, + 1790227426.2159965, + 1790227426.290664, + 1790227426.3755932, + 1790227426.4647524, + 1790227426.538936, + 1790227426.6207795, + 1790227426.7057462, + 1790227426.784482, + 1790227426.8669174, + 1790227426.9494576, + 1790227427.0231435, + 1790227427.102875, + 1790227427.1763122, + 1790227427.259016, + 1790227427.3433738, + 1790227427.4168215, + 1790227427.490605, + 1790227427.5695796, + 1790227427.6538215, + 1790227427.7351344, + 1790227427.8143744, + 1790227427.8875725, + 1790227427.9711359, + 1790227428.0520587, + 1790227428.1323774, + 1790227428.2116463, + 1790227428.2855465, + 1790227428.3634946, + 1790227428.4412284, + 1790227428.521985, + 1790227428.6133363, + 1790227428.6917033, + 1790227428.7694027, + 1790227428.8508835, + 1790227428.9284518, + 1790227429.011033, + 1790227429.0813985, + 1790227429.1652186, + 1790227429.2616825, + 1790227429.3428185, + 1790227429.4228137, + 1790227429.4956517, + 1790227429.5775578, + 1790227429.6615858, + 1790227429.7468786, + 1790227429.824582, + 1790227429.9052956, + 1790227429.98773, + 1790227430.0652297, + 1790227430.1487935, + 1790227430.2357852, + 1790227430.311173, + 1790227430.3892295, + 1790227430.4666667, + 1790227430.5462902, + 1790227430.6345491, + 1790227430.7183855, + 1790227430.7975025, + 1790227430.8701763, + 1790227430.9561136, + 1790227431.0373735, + 1790227431.1148832, + 1790227431.1922414, + 1790227431.2791903, + 1790227431.3567863, + 1790227431.4288902, + 1790227431.51111, + 1790227431.5845497, + 1790227431.6645024, + 1790227431.742092, + 1790227431.8277085, + 1790227431.9007046, + 1790227431.9837196, + 1790227432.0549188, + 1790227432.1313255, + 1790227432.2115064, + 1790227432.2986894, + 1790227432.38328, + 1790227432.459245, + 1790227432.5385346, + 1790227432.6231594, + 1790227432.697557, + 1790227432.7810173, + 1790227432.8611526, + 1790227432.9348953, + 1790227433.0281155, + 1790227433.1131318, + 1790227433.20604, + 1790227433.290008, + 1790227433.371431, + 1790227433.454432, + 1790227433.5328052, + 1790227433.6071496, + 1790227433.6851835, + 1790227433.7685928, + 1790227433.8515413, + 1790227433.929524, + 1790227434.011903, + 1790227434.0938408, + 1790227434.1780417, + 1790227434.2710392, + 1790227434.3636184, + 1790227434.453008, + 1790227434.5359514, + 1790227434.6272445, + 1790227434.7265203, + 1790227434.816499, + 1790227434.8962843, + 1790227434.9826157, + 1790227435.0633702, + 1790227435.1475036, + 1790227435.2334182, + 1790227435.3227909, + 1790227435.4061806, + 1790227435.4980192, + 1790227435.5761464, + 1790227435.6547527, + 1790227435.7292976, + 1790227435.8159175, + 1790227435.9066632, + 1790227435.9947314, + 1790227436.081168, + 1790227436.163267, + 1790227436.246305, + 1790227436.3351755, + 1790227436.419135, + 1790227436.4969933 + ], + "text": "The user wants to know the weather in Shenzhen right now in Celsius. I have a function available called `get_weather` that can retrieve weather for a city. Let me call it with the city \"Shenzhen\" and unit \"celsius\".get_weathercityShenzhenunitcelsius", + "output_token_ids": [ + 1046, + 3754, + 13025, + 312, + 1843, + 275, + 14510, + 304, + 75040, + 103, + 872, + 2430, + 2343, + 304, + 423, + 108364, + 27, + 373, + 760, + 259, + 2122, + 4234, + 4848, + 2561, + 913, + 76, + 64301, + 77, + 455, + 764, + 41002, + 14510, + 396, + 259, + 6594, + 27, + 9619, + 713, + 2426, + 488, + 478, + 275, + 6594, + 518, + 64, + 872, + 103, + 872, + 15, + 317, + 9261, + 518, + 8281, + 4348, + 4, + 130977, + 913, + 76, + 64301, + 130980, + 58593, + 130981, + 130982, + 64, + 872, + 103, + 872, + 130983, + 130980, + 11220, + 130981, + 130982, + 8281, + 130983, + 130984, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1 + ], + "ttft_s": 0.44835782051086426, + "decode_tok_per_s": 12.255972356932505 + }, + { + "request_id": "a130343efd444600-2", + "session_id": "a130343efd444600", + "epoch": 0, + "prompt_chars": 6648, + "prompt_tokens": 2465, + "output_tokens": 128, + "submitted_unix": 1790227436.4973423, + "first_token_unix": 1790227442.5909264, + "last_token_unix": 1790227453.1634727, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227442.5909264, + 1790227442.6763947, + 1790227442.762277, + 1790227442.8432126, + 1790227442.934255, + 1790227443.0158498, + 1790227443.1026552, + 1790227443.183424, + 1790227443.275513, + 1790227443.3606465, + 1790227443.438327, + 1790227443.5139313, + 1790227443.5971875, + 1790227443.6816509, + 1790227443.7700617, + 1790227443.8597474, + 1790227443.948835, + 1790227444.035954, + 1790227444.1144023, + 1790227444.1958995, + 1790227444.2761023, + 1790227444.3617651, + 1790227444.4383724, + 1790227444.5244217, + 1790227444.6130426, + 1790227444.6896098, + 1790227444.7742145, + 1790227444.8768384, + 1790227444.960524, + 1790227445.0571027, + 1790227445.1342313, + 1790227445.219664, + 1790227445.3313098, + 1790227445.4213605, + 1790227445.5032904, + 1790227445.5917182, + 1790227445.6704705, + 1790227445.7475693, + 1790227445.8318024, + 1790227445.9075716, + 1790227445.9809163, + 1790227446.0667355, + 1790227446.155554, + 1790227446.2377985, + 1790227446.3168013, + 1790227446.3982131, + 1790227446.4893215, + 1790227446.5761538, + 1790227446.6561983, + 1790227446.7344937, + 1790227446.813057, + 1790227446.8970406, + 1790227446.9747014, + 1790227447.0515416, + 1790227447.137379, + 1790227447.2223854, + 1790227447.3043246, + 1790227447.38817, + 1790227447.469095, + 1790227447.5438974, + 1790227447.6207802, + 1790227447.704219, + 1790227447.7824075, + 1790227447.8664258, + 1790227447.9431996, + 1790227448.0282373, + 1790227448.10998, + 1790227448.194652, + 1790227448.2781818, + 1790227448.3606968, + 1790227448.4377756, + 1790227448.5181677, + 1790227448.6035597, + 1790227448.6894965, + 1790227448.7902584, + 1790227448.8683164, + 1790227448.955865, + 1790227449.0396595, + 1790227449.1194215, + 1790227449.1992366, + 1790227449.2837825, + 1790227449.3653705, + 1790227449.4487484, + 1790227449.5313764, + 1790227449.6138823, + 1790227449.6921582, + 1790227449.785427, + 1790227449.8734465, + 1790227449.957937, + 1790227450.0338395, + 1790227450.1205533, + 1790227450.1953638, + 1790227450.2863414, + 1790227450.3678591, + 1790227450.447087, + 1790227450.5282664, + 1790227450.6120844, + 1790227450.6890154, + 1790227450.7755725, + 1790227450.8575602, + 1790227450.936902, + 1790227451.018924, + 1790227451.1015658, + 1790227451.1737325, + 1790227451.254296, + 1790227451.3309526, + 1790227451.4164934, + 1790227451.4996786, + 1790227451.5772266, + 1790227451.6514049, + 1790227451.7369945, + 1790227451.8198695, + 1790227451.914394, + 1790227451.9995258, + 1790227452.0799923, + 1790227452.1568708, + 1790227452.2411354, + 1790227452.3186574, + 1790227452.3946478, + 1790227452.4857805, + 1790227452.563077, + 1790227452.6567242, + 1790227452.7479534, + 1790227452.8265662, + 1790227452.9052932, + 1790227452.9898558, + 1790227453.0707693, + 1790227453.1634727 + ], + "text": "We are given an inventory listing with item codes for warehouse districts 1 through 120. The question asks: \"What is the code for warehouse district 73?\" We need to find the code corresponding to district 73.\n\nLooking at the list, we see:\nItem 1: district 1 -> 1007\nItem 2: district 2 -> 1014\n...\nWe need to find the entry for district 73.\n\nLet's list the districts and their codes in order. The list is given as:\nItem 1: 1", + "output_token_ids": [ + 3066, + 599, + 4114, + 300, + 31946, + 35404, + 478, + 7006, + 27149, + 396, + 56774, + 49408, + 220, + 30, + 1953, + 220, + 30, + 31, + 29, + 27, + 614, + 5565, + 27179, + 39, + 518, + 4766, + 390, + 275, + 5760, + 396, + 56774, + 20882, + 220, + 36, + 32, + 5171, + 1994, + 1633, + 312, + 2432, + 275, + 5760, + 12610, + 312, + 20882, + 220, + 36, + 32, + 27, + 198, + 198, + 48992, + 511, + 275, + 2631, + 25, + 679, + 2261, + 39, + 198, + 5369, + 220, + 30, + 39, + 20882, + 220, + 30, + 3192, + 220, + 30, + 29, + 29, + 36, + 198, + 5369, + 220, + 31, + 39, + 20882, + 220, + 31, + 3192, + 220, + 30, + 29, + 30, + 33, + 198, + 2097, + 198, + 3066, + 1633, + 312, + 2432, + 275, + 11411, + 396, + 20882, + 220, + 36, + 32, + 27, + 198, + 198, + 13104, + 1045, + 2631, + 275, + 49408, + 317, + 1140, + 27149, + 304, + 3310, + 27, + 614, + 2631, + 390, + 4114, + 463, + 39, + 198, + 5369, + 220, + 30, + 39, + 220, + 30 + ], + "ttft_s": 6.093584060668945, + "decode_tok_per_s": 12.012243510031114 + }, + { + "request_id": "aaf59fed1b304840-3", + "session_id": "aaf59fed1b304840", + "epoch": 0, + "prompt_chars": 27, + "prompt_tokens": 5, + "output_tokens": 128, + "submitted_unix": 1790227453.1637144, + "first_token_unix": 1790227453.242828, + "last_token_unix": 1790227463.4976077, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227453.242828, + 1790227453.3213806, + 1790227453.4010324, + 1790227453.4872196, + 1790227453.5669723, + 1790227453.6419628, + 1790227453.722509, + 1790227453.8039477, + 1790227453.8774385, + 1790227453.9641995, + 1790227454.0400481, + 1790227454.1205192, + 1790227454.1982903, + 1790227454.2778168, + 1790227454.352265, + 1790227454.429257, + 1790227454.5142744, + 1790227454.594018, + 1790227454.669383, + 1790227454.7534344, + 1790227454.8343983, + 1790227454.9087684, + 1790227454.9902565, + 1790227455.0733407, + 1790227455.1526337, + 1790227455.2263634, + 1790227455.3050196, + 1790227455.3800633, + 1790227455.4579527, + 1790227455.5376172, + 1790227455.632746, + 1790227455.7133083, + 1790227455.7970946, + 1790227455.876087, + 1790227455.957149, + 1790227456.041447, + 1790227456.1222405, + 1790227456.2028172, + 1790227456.2780373, + 1790227456.358418, + 1790227456.4313517, + 1790227456.514001, + 1790227456.6026947, + 1790227456.68814, + 1790227456.7736917, + 1790227456.8616853, + 1790227456.9397671, + 1790227457.0153494, + 1790227457.0941746, + 1790227457.1818645, + 1790227457.2679276, + 1790227457.3444607, + 1790227457.417252, + 1790227457.5017204, + 1790227457.5794055, + 1790227457.6598313, + 1790227457.7426317, + 1790227457.8235512, + 1790227457.8963294, + 1790227457.9815254, + 1790227458.0636215, + 1790227458.1445668, + 1790227458.2213666, + 1790227458.305325, + 1790227458.382427, + 1790227458.487507, + 1790227458.567165, + 1790227458.6492372, + 1790227458.72812, + 1790227458.8118494, + 1790227458.8936076, + 1790227458.9698226, + 1790227459.0406513, + 1790227459.116274, + 1790227459.205335, + 1790227459.2883244, + 1790227459.366821, + 1790227459.4396806, + 1790227459.5286064, + 1790227459.6120074, + 1790227459.689372, + 1790227459.7823775, + 1790227459.8739717, + 1790227459.9576252, + 1790227460.0437899, + 1790227460.129602, + 1790227460.2087927, + 1790227460.293736, + 1790227460.3767676, + 1790227460.4775162, + 1790227460.5550694, + 1790227460.6406484, + 1790227460.7134788, + 1790227460.7888048, + 1790227460.874442, + 1790227460.9572613, + 1790227461.0319703, + 1790227461.1156619, + 1790227461.1903958, + 1790227461.2751358, + 1790227461.349358, + 1790227461.4362135, + 1790227461.5118206, + 1790227461.5913432, + 1790227461.6741674, + 1790227461.7559073, + 1790227461.8308299, + 1790227461.904044, + 1790227461.99147, + 1790227462.0719366, + 1790227462.1466875, + 1790227462.2261798, + 1790227462.305155, + 1790227462.3810966, + 1790227462.465225, + 1790227462.5439055, + 1790227462.6224935, + 1790227462.7043962, + 1790227462.7799387, + 1790227462.8622067, + 1790227462.940851, + 1790227463.0252442, + 1790227463.0986369, + 1790227463.1811557, + 1790227463.2563937, + 1790227463.34567, + 1790227463.4200563, + 1790227463.4976077 + ], + "text": " the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of", + "output_token_ids": [ + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314 + ], + "ttft_s": 0.07911348342895508, + "decode_tok_per_s": 12.384468733876467 + }, + { + "request_id": "003f8f6e470345f7-4", + "session_id": "003f8f6e470345f7", + "epoch": 0, + "prompt_chars": 30, + "prompt_tokens": 13, + "output_tokens": 128, + "submitted_unix": 1790227463.497843, + "first_token_unix": 1790227463.5976624, + "last_token_unix": 1790227473.9757867, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227463.5976624, + 1790227463.6792865, + 1790227463.7602615, + 1790227463.8349566, + 1790227463.9070349, + 1790227463.984813, + 1790227464.0703433, + 1790227464.1458402, + 1790227464.22062, + 1790227464.2964263, + 1790227464.3822937, + 1790227464.4613304, + 1790227464.5377345, + 1790227464.6291711, + 1790227464.7066522, + 1790227464.7860374, + 1790227464.8667603, + 1790227464.9501567, + 1790227465.025322, + 1790227465.1117802, + 1790227465.2023375, + 1790227465.2951453, + 1790227465.3730695, + 1790227465.4552734, + 1790227465.5374937, + 1790227465.6102674, + 1790227465.723154, + 1790227465.808786, + 1790227465.8910744, + 1790227465.9660988, + 1790227466.0455282, + 1790227466.1338055, + 1790227466.2289047, + 1790227466.310076, + 1790227466.3989792, + 1790227466.481779, + 1790227466.5655982, + 1790227466.6503665, + 1790227466.7339716, + 1790227466.8068085, + 1790227466.8849826, + 1790227466.97086, + 1790227467.0561805, + 1790227467.1389904, + 1790227467.2262123, + 1790227467.3110018, + 1790227467.3943846, + 1790227467.4776583, + 1790227467.5586324, + 1790227467.6381798, + 1790227467.7216814, + 1790227467.8070745, + 1790227467.883396, + 1790227467.965232, + 1790227468.049157, + 1790227468.126841, + 1790227468.204369, + 1790227468.3103027, + 1790227468.3935127, + 1790227468.470954, + 1790227468.5431104, + 1790227468.623575, + 1790227468.6986408, + 1790227468.7787867, + 1790227468.8661835, + 1790227468.940003, + 1790227469.018083, + 1790227469.0956705, + 1790227469.1714945, + 1790227469.2451217, + 1790227469.3222256, + 1790227469.4046786, + 1790227469.4887702, + 1790227469.5619795, + 1790227469.6332936, + 1790227469.7107944, + 1790227469.7916975, + 1790227469.8673577, + 1790227469.953721, + 1790227470.0404842, + 1790227470.1212385, + 1790227470.1987367, + 1790227470.2750564, + 1790227470.355459, + 1790227470.428105, + 1790227470.5041254, + 1790227470.584733, + 1790227470.6681845, + 1790227470.7460537, + 1790227470.837924, + 1790227470.924396, + 1790227471.0086086, + 1790227471.09435, + 1790227471.174883, + 1790227471.2787695, + 1790227471.3647869, + 1790227471.4441323, + 1790227471.5304146, + 1790227471.6073782, + 1790227471.68343, + 1790227471.791215, + 1790227471.8798833, + 1790227471.961184, + 1790227472.0429149, + 1790227472.1137533, + 1790227472.2092052, + 1790227472.2952328, + 1790227472.3757317, + 1790227472.4510124, + 1790227472.5262117, + 1790227472.609581, + 1790227472.695604, + 1790227472.7813663, + 1790227472.8608875, + 1790227472.9418235, + 1790227473.026073, + 1790227473.1121264, + 1790227473.1903152, + 1790227473.2680779, + 1790227473.3530383, + 1790227473.4310763, + 1790227473.5093956, + 1790227473.589959, + 1790227473.673955, + 1790227473.7471092, + 1790227473.8251061, + 1790227473.8979065, + 1790227473.9757867 + ], + "text": " mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission", + "output_token_ids": [ + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174 + ], + "ttft_s": 0.09981942176818848, + "decode_tok_per_s": 12.23727882794848 + }, + { + "request_id": "2b11f31c761540b6-5", + "session_id": "2b11f31c761540b6", + "epoch": 0, + "prompt_chars": 61, + "prompt_tokens": 18, + "output_tokens": 128, + "submitted_unix": 1790227473.9760249, + "first_token_unix": 1790227474.105421, + "last_token_unix": 1790227484.562463, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227474.105421, + 1790227474.1899767, + 1790227474.2632394, + 1790227474.3460598, + 1790227474.427, + 1790227474.503712, + 1790227474.583109, + 1790227474.6614375, + 1790227474.7461321, + 1790227474.8263006, + 1790227474.904069, + 1790227474.9838924, + 1790227475.0580008, + 1790227475.1360419, + 1790227475.2212386, + 1790227475.298612, + 1790227475.3805356, + 1790227475.4562535, + 1790227475.5428715, + 1790227475.6286614, + 1790227475.7073472, + 1790227475.791424, + 1790227475.8829765, + 1790227475.96857, + 1790227476.0486329, + 1790227476.1381989, + 1790227476.2161257, + 1790227476.2965722, + 1790227476.3779967, + 1790227476.4659727, + 1790227476.5463202, + 1790227476.6237748, + 1790227476.700258, + 1790227476.7891572, + 1790227476.8725061, + 1790227476.9528222, + 1790227477.0362515, + 1790227477.1235385, + 1790227477.211046, + 1790227477.2897415, + 1790227477.369355, + 1790227477.4401624, + 1790227477.512569, + 1790227477.5945475, + 1790227477.6886575, + 1790227477.7781897, + 1790227477.852196, + 1790227477.9315262, + 1790227478.0096102, + 1790227478.0848532, + 1790227478.166399, + 1790227478.2506382, + 1790227478.3274963, + 1790227478.4167895, + 1790227478.498564, + 1790227478.5778534, + 1790227478.6563947, + 1790227478.7393715, + 1790227478.8151445, + 1790227478.900262, + 1790227478.981264, + 1790227479.0586228, + 1790227479.1404657, + 1790227479.2136378, + 1790227479.2968085, + 1790227479.377837, + 1790227479.458607, + 1790227479.5344286, + 1790227479.6079044, + 1790227479.6861024, + 1790227479.7622204, + 1790227479.8376753, + 1790227479.9150314, + 1790227480.0016031, + 1790227480.0845664, + 1790227480.1630921, + 1790227480.2397811, + 1790227480.3240106, + 1790227480.400777, + 1790227480.480317, + 1790227480.5656807, + 1790227480.649037, + 1790227480.7270727, + 1790227480.8093224, + 1790227480.885504, + 1790227480.9642804, + 1790227481.049705, + 1790227481.1334329, + 1790227481.2191372, + 1790227481.2994926, + 1790227481.3811364, + 1790227481.4641206, + 1790227481.5458097, + 1790227481.635602, + 1790227481.717092, + 1790227481.7971704, + 1790227481.8770046, + 1790227481.9555197, + 1790227482.0286562, + 1790227482.1161265, + 1790227482.202015, + 1790227482.2801905, + 1790227482.3574548, + 1790227482.4428136, + 1790227482.5171795, + 1790227482.598411, + 1790227482.6782117, + 1790227482.7581565, + 1790227482.8367803, + 1790227482.9186575, + 1790227483.0073802, + 1790227483.0837884, + 1790227483.16128, + 1790227483.2448454, + 1790227483.327184, + 1790227483.4077485, + 1790227483.4851422, + 1790227483.5587418, + 1790227483.6435206, + 1790227483.7282183, + 1790227483.8149083, + 1790227483.8992095, + 1790227483.9831865, + 1790227484.0602696, + 1790227484.15275, + 1790227484.3170896, + 1790227484.4780235, + 1790227484.562463 + ], + "text": " a, b = 0, 1\n for _ in range(n):\n a, b = b, a + b\n if _ == n:\n return a\n return a\n\n\ndef main():\n n = int(input())\n print(fibonacci(n))\n\n\nif __name__ == \"__main__\":\n main()\n\n\n你的代码存在一些错误,需要修正。请详细分析错误原因,并给出修正后的代码。\n\n### 错误分析\n\n1. **输入处理错误**:\n - 原代码中 `n", + "output_token_ids": [ + 293, + 259, + 25, + 287, + 422, + 220, + 29, + 25, + 220, + 30, + 198, + 293, + 396, + 2198, + 304, + 4044, + 5738, + 2407, + 198, + 361, + 259, + 25, + 287, + 422, + 287, + 25, + 259, + 1336, + 287, + 198, + 361, + 690, + 2198, + 2126, + 292, + 39, + 198, + 462, + 948, + 259, + 198, + 293, + 948, + 259, + 198, + 198, + 198, + 3068, + 2772, + 11834, + 198, + 293, + 292, + 422, + 1455, + 16040, + 4112, + 198, + 293, + 3594, + 3836, + 41162, + 65043, + 5738, + 1771, + 198, + 198, + 198, + 556, + 7001, + 2215, + 1423, + 2126, + 51012, + 14872, + 72067, + 198, + 293, + 2772, + 663, + 198, + 198, + 198, + 3992, + 12792, + 3259, + 2651, + 8189, + 280, + 1740, + 26813, + 302, + 2118, + 8210, + 2572, + 8189, + 4366, + 280, + 1125, + 28490, + 26813, + 6922, + 12792, + 302, + 198, + 198, + 16689, + 220, + 8189, + 2572, + 198, + 198, + 30, + 27, + 7307, + 8156, + 3052, + 8189, + 47165, + 198, + 256, + 706, + 220, + 1345, + 12792, + 457, + 2561, + 91 + ], + "ttft_s": 0.1293962001800537, + "decode_tok_per_s": 12.144925903236736 + }, + { + "request_id": "aece578fb53d483e-6", + "session_id": "aece578fb53d483e", + "epoch": 0, + "prompt_chars": 43, + "prompt_tokens": 8, + "output_tokens": 128, + "submitted_unix": 1790227484.5627022, + "first_token_unix": 1790227484.6927862, + "last_token_unix": 1790227495.003865, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227484.6927862, + 1790227484.7812383, + 1790227484.8581154, + 1790227484.9379985, + 1790227485.0236158, + 1790227485.0971322, + 1790227485.1801956, + 1790227485.2675867, + 1790227485.3446908, + 1790227485.4335048, + 1790227485.5076227, + 1790227485.5834196, + 1790227485.664833, + 1790227485.7451618, + 1790227485.8278131, + 1790227485.904385, + 1790227485.984839, + 1790227486.0578334, + 1790227486.1405077, + 1790227486.222164, + 1790227486.308589, + 1790227486.391181, + 1790227486.4664505, + 1790227486.5527122, + 1790227486.637484, + 1790227486.7195153, + 1790227486.8061893, + 1790227486.8955696, + 1790227486.9717028, + 1790227487.0513594, + 1790227487.1225595, + 1790227487.2162259, + 1790227487.29972, + 1790227487.3867018, + 1790227487.4763606, + 1790227487.5564175, + 1790227487.63273, + 1790227487.711354, + 1790227487.8234422, + 1790227487.904496, + 1790227487.9834836, + 1790227488.0612926, + 1790227488.1357899, + 1790227488.2159998, + 1790227488.295325, + 1790227488.3710897, + 1790227488.457657, + 1790227488.5293562, + 1790227488.6062312, + 1790227488.6822155, + 1790227488.7601788, + 1790227488.839241, + 1790227488.922206, + 1790227489.0109496, + 1790227489.093908, + 1790227489.171909, + 1790227489.2468903, + 1790227489.3293066, + 1790227489.3997371, + 1790227489.4817665, + 1790227489.5712304, + 1790227489.6417677, + 1790227489.718522, + 1790227489.8023195, + 1790227489.8854003, + 1790227489.9638948, + 1790227490.0522833, + 1790227490.1297023, + 1790227490.2042432, + 1790227490.286771, + 1790227490.367058, + 1790227490.4446344, + 1790227490.5393794, + 1790227490.6352558, + 1790227490.7217326, + 1790227490.803621, + 1790227490.8847203, + 1790227490.9616356, + 1790227491.03881, + 1790227491.1211922, + 1790227491.2031589, + 1790227491.2857249, + 1790227491.3675144, + 1790227491.4430864, + 1790227491.5271504, + 1790227491.6059406, + 1790227491.707591, + 1790227491.7844186, + 1790227491.85986, + 1790227491.9471965, + 1790227492.022955, + 1790227492.1017437, + 1790227492.1986144, + 1790227492.275388, + 1790227492.3551245, + 1790227492.438417, + 1790227492.517692, + 1790227492.5951285, + 1790227492.6754303, + 1790227492.763127, + 1790227492.8437974, + 1790227492.9172583, + 1790227492.996233, + 1790227493.077795, + 1790227493.1523743, + 1790227493.239735, + 1790227493.3228915, + 1790227493.395355, + 1790227493.4743896, + 1790227493.5494516, + 1790227493.626281, + 1790227493.70603, + 1790227493.7946615, + 1790227493.878277, + 1790227493.9579103, + 1790227494.0380032, + 1790227494.1131423, + 1790227494.1898253, + 1790227494.2776155, + 1790227494.3658967, + 1790227494.4402819, + 1790227494.5219662, + 1790227494.5940866, + 1790227494.6704798, + 1790227494.7505877, + 1790227494.8426044, + 1790227494.9274576, + 1790227495.003865 + ], + "text": " the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that", + "output_token_ids": [ + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455 + ], + "ttft_s": 0.13008403778076172, + "decode_tok_per_s": 12.316848956868302 + }, + { + "request_id": "24258aaeda0c426c-7", + "session_id": "24258aaeda0c426c", + "epoch": 0, + "prompt_chars": 34, + "prompt_tokens": 7, + "output_tokens": 128, + "submitted_unix": 1790227495.0041287, + "first_token_unix": 1790227495.0819979, + "last_token_unix": 1790227505.4044595, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227495.0819979, + 1790227495.1630638, + 1790227495.248696, + 1790227495.3398006, + 1790227495.4266617, + 1790227495.5081837, + 1790227495.6041934, + 1790227495.6834621, + 1790227495.7703435, + 1790227495.8462436, + 1790227495.9296033, + 1790227496.0074966, + 1790227496.0959463, + 1790227496.176533, + 1790227496.2601411, + 1790227496.351617, + 1790227496.4294288, + 1790227496.5081265, + 1790227496.5818028, + 1790227496.6570315, + 1790227496.7304494, + 1790227496.8078778, + 1790227496.888663, + 1790227496.9741206, + 1790227497.0434217, + 1790227497.118677, + 1790227497.1951814, + 1790227497.2795691, + 1790227497.355144, + 1790227497.429169, + 1790227497.5116947, + 1790227497.586581, + 1790227497.6654902, + 1790227497.7484524, + 1790227497.831359, + 1790227497.9084303, + 1790227497.9929187, + 1790227498.0772142, + 1790227498.1639867, + 1790227498.2561824, + 1790227498.3440523, + 1790227498.4290478, + 1790227498.5141165, + 1790227498.589211, + 1790227498.6594212, + 1790227498.733457, + 1790227498.8153918, + 1790227498.8994534, + 1790227498.9789064, + 1790227499.059087, + 1790227499.13832, + 1790227499.2231073, + 1790227499.2994554, + 1790227499.3764112, + 1790227499.461557, + 1790227499.539409, + 1790227499.6295493, + 1790227499.7059972, + 1790227499.7811623, + 1790227499.8547723, + 1790227499.9319487, + 1790227500.0088084, + 1790227500.09632, + 1790227500.1755624, + 1790227500.2614224, + 1790227500.3423667, + 1790227500.425175, + 1790227500.5042098, + 1790227500.5868533, + 1790227500.6713147, + 1790227500.745396, + 1790227500.8311033, + 1790227500.909581, + 1790227500.9884038, + 1790227501.0666099, + 1790227501.1386287, + 1790227501.2273374, + 1790227501.3045833, + 1790227501.38763, + 1790227501.4871626, + 1790227501.5686846, + 1790227501.6467125, + 1790227501.7279258, + 1790227501.8079438, + 1790227501.8894308, + 1790227501.9662619, + 1790227502.0539386, + 1790227502.1345012, + 1790227502.2189841, + 1790227502.3059633, + 1790227502.3884652, + 1790227502.4598336, + 1790227502.5427837, + 1790227502.6226876, + 1790227502.7004743, + 1790227502.7837398, + 1790227502.8607695, + 1790227502.937314, + 1790227503.0221238, + 1790227503.1024168, + 1790227503.1862943, + 1790227503.2652152, + 1790227503.3626602, + 1790227503.4518738, + 1790227503.5305119, + 1790227503.6067095, + 1790227503.6847336, + 1790227503.7687142, + 1790227503.8512971, + 1790227503.929807, + 1790227504.007723, + 1790227504.0937533, + 1790227504.1795263, + 1790227504.2670114, + 1790227504.353487, + 1790227504.4326088, + 1790227504.5120795, + 1790227504.5980995, + 1790227504.6807008, + 1790227504.7566683, + 1790227504.834993, + 1790227504.9183404, + 1790227505.0016592, + 1790227505.0873334, + 1790227505.1610332, + 1790227505.238346, + 1790227505.3186827, + 1790227505.4044595 + ], + "text": " to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make", + "output_token_ids": [ + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996 + ], + "ttft_s": 0.07786917686462402, + "decode_tok_per_s": 12.303266881380074 + }, + { + "request_id": "9f5858aabf754e88-8", + "session_id": "9f5858aabf754e88", + "epoch": 0, + "prompt_chars": 37, + "prompt_tokens": 7, + "output_tokens": 128, + "submitted_unix": 1790227505.404698, + "first_token_unix": 1790227505.4894524, + "last_token_unix": 1790227515.831647, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227505.4894524, + 1790227505.5717547, + 1790227505.6512618, + 1790227505.7268662, + 1790227505.8051898, + 1790227505.8781092, + 1790227505.9616292, + 1790227506.0405352, + 1790227506.1176345, + 1790227506.1989563, + 1790227506.278261, + 1790227506.3519292, + 1790227506.42734, + 1790227506.5041926, + 1790227506.578597, + 1790227506.6554022, + 1790227506.7349603, + 1790227506.8125634, + 1790227506.8905249, + 1790227506.9628882, + 1790227507.0496085, + 1790227507.1273768, + 1790227507.2057266, + 1790227507.2960086, + 1790227507.3825214, + 1790227507.459698, + 1790227507.5425296, + 1790227507.6213267, + 1790227507.694158, + 1790227507.7702672, + 1790227507.855502, + 1790227507.9362993, + 1790227508.032743, + 1790227508.120216, + 1790227508.1967382, + 1790227508.2740698, + 1790227508.3546352, + 1790227508.4353092, + 1790227508.5142562, + 1790227508.5978005, + 1790227508.6756072, + 1790227508.7594037, + 1790227508.8446922, + 1790227508.9317641, + 1790227509.0120056, + 1790227509.096963, + 1790227509.1908698, + 1790227509.2669528, + 1790227509.3469892, + 1790227509.426663, + 1790227509.5109951, + 1790227509.5986917, + 1790227509.677948, + 1790227509.759123, + 1790227509.832876, + 1790227509.9124062, + 1790227509.9949465, + 1790227510.0742815, + 1790227510.1506894, + 1790227510.240724, + 1790227510.3302255, + 1790227510.4121342, + 1790227510.4931602, + 1790227510.575358, + 1790227510.6506464, + 1790227510.7450385, + 1790227510.8344412, + 1790227510.9153326, + 1790227510.98977, + 1790227511.066693, + 1790227511.1449535, + 1790227511.2408907, + 1790227511.3223104, + 1790227511.4041717, + 1790227511.4822395, + 1790227511.5692992, + 1790227511.6510193, + 1790227511.7298992, + 1790227511.8163505, + 1790227511.8907294, + 1790227511.9735117, + 1790227512.0510023, + 1790227512.1391253, + 1790227512.2175992, + 1790227512.2947392, + 1790227512.3781254, + 1790227512.4607153, + 1790227512.5507658, + 1790227512.635418, + 1790227512.7165773, + 1790227512.7987719, + 1790227512.8888295, + 1790227512.9683435, + 1790227513.0498831, + 1790227513.1260102, + 1790227513.201106, + 1790227513.285089, + 1790227513.3645787, + 1790227513.45024, + 1790227513.5304115, + 1790227513.6101892, + 1790227513.6924117, + 1790227513.7660172, + 1790227513.8462367, + 1790227513.930139, + 1790227514.0177298, + 1790227514.0977173, + 1790227514.175426, + 1790227514.2590587, + 1790227514.3570745, + 1790227514.4368308, + 1790227514.5221415, + 1790227514.6071677, + 1790227514.7075994, + 1790227514.7941365, + 1790227514.877138, + 1790227514.9572084, + 1790227515.04279, + 1790227515.1306512, + 1790227515.2090414, + 1790227515.2901156, + 1790227515.3647797, + 1790227515.4416382, + 1790227515.523271, + 1790227515.6063328, + 1790227515.6833508, + 1790227515.7622051, + 1790227515.831647 + ], + "text": " the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the", + "output_token_ids": [ + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275 + ], + "ttft_s": 0.08475446701049805, + "decode_tok_per_s": 12.279792194753194 + }, + { + "request_id": "174a7bd50add4a49-9", + "session_id": "174a7bd50add4a49", + "epoch": 0, + "prompt_chars": 23, + "prompt_tokens": 3, + "output_tokens": 128, + "submitted_unix": 1790227515.8318825, + "first_token_unix": 1790227515.9105904, + "last_token_unix": 1790227528.3424006, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227515.9105904, + 1790227515.9880009, + 1790227516.0740774, + 1790227516.1504707, + 1790227516.2346854, + 1790227516.3158247, + 1790227516.3979726, + 1790227516.477477, + 1790227516.5645285, + 1790227516.6498084, + 1790227516.7197704, + 1790227516.8042483, + 1790227516.8875067, + 1790227516.961287, + 1790227517.0367084, + 1790227517.115395, + 1790227517.1898842, + 1790227517.273255, + 1790227517.3585281, + 1790227517.428742, + 1790227517.5056903, + 1790227517.5768719, + 1790227517.6595542, + 1790227517.743301, + 1790227517.8203597, + 1790227517.8921552, + 1790227517.9697487, + 1790227518.0514908, + 1790227518.1450055, + 1790227518.2252486, + 1790227518.3000612, + 1790227518.3772132, + 1790227518.4588587, + 1790227518.536414, + 1790227518.6162574, + 1790227518.6964314, + 1790227518.7768648, + 1790227518.8542383, + 1790227518.9329224, + 1790227519.0169864, + 1790227519.0953605, + 1790227519.191803, + 1790227519.3006992, + 1790227519.3930824, + 1790227519.4871514, + 1790227519.608375, + 1790227519.7096722, + 1790227519.802014, + 1790227519.900243, + 1790227519.9831915, + 1790227520.066452, + 1790227520.1572495, + 1790227520.247289, + 1790227520.324103, + 1790227520.4047246, + 1790227520.4816906, + 1790227520.5730999, + 1790227520.656315, + 1790227520.7352314, + 1790227520.8203402, + 1790227520.9215446, + 1790227521.0151505, + 1790227521.094339, + 1790227521.1972833, + 1790227521.3169785, + 1790227521.406637, + 1790227521.4975364, + 1790227521.5948088, + 1790227521.6768286, + 1790227521.7627604, + 1790227521.8538592, + 1790227521.9369748, + 1790227522.0215802, + 1790227522.108104, + 1790227522.1987605, + 1790227522.2931974, + 1790227522.3909366, + 1790227522.4976783, + 1790227522.6211262, + 1790227522.7259858, + 1790227522.824383, + 1790227522.9445565, + 1790227523.0331326, + 1790227523.1277807, + 1790227523.2148185, + 1790227523.3029025, + 1790227523.4220278, + 1790227523.676076, + 1790227523.8673224, + 1790227524.0011694, + 1790227524.1186523, + 1790227524.2469475, + 1790227524.3564029, + 1790227524.4647405, + 1790227524.5937798, + 1790227524.7182875, + 1790227524.8404953, + 1790227524.996369, + 1790227525.2793314, + 1790227525.3796659, + 1790227525.483542, + 1790227525.6034982, + 1790227525.7285178, + 1790227525.8249655, + 1790227525.939684, + 1790227526.065627, + 1790227526.1928558, + 1790227526.3172822, + 1790227526.4704027, + 1790227526.5833316, + 1790227526.66966, + 1790227526.7709072, + 1790227526.8736007, + 1790227526.9649265, + 1790227527.0653136, + 1790227527.1712346, + 1790227527.2784247, + 1790227527.385941, + 1790227527.5265832, + 1790227527.6229653, + 1790227527.7456906, + 1790227527.8280475, + 1790227527.916759, + 1790227527.996418, + 1790227528.0787349, + 1790227528.168874, + 1790227528.2567906, + 1790227528.3424006 + ], + "text": " carbon and oxygen into carbon and oxygen and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and", + "output_token_ids": [ + 13619, + 317, + 19210, + 1464, + 13619, + 317, + 19210, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317 + ], + "ttft_s": 0.07870793342590332, + "decode_tok_per_s": 10.215728728444935 + }, + { + "request_id": "c441583439524854-10", + "session_id": "c441583439524854", + "epoch": 0, + "prompt_chars": 45, + "prompt_tokens": 9, + "output_tokens": 128, + "submitted_unix": 1790227528.342656, + "first_token_unix": 1790227528.429703, + "last_token_unix": 1790227539.8505456, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227528.429703, + 1790227528.5131965, + 1790227528.5949442, + 1790227528.6834624, + 1790227528.7795167, + 1790227528.8763647, + 1790227528.964581, + 1790227529.0473125, + 1790227529.1407397, + 1790227529.2268128, + 1790227529.3291292, + 1790227529.413708, + 1790227529.4928846, + 1790227529.577366, + 1790227529.665504, + 1790227529.7551024, + 1790227529.8568347, + 1790227529.960494, + 1790227530.0591352, + 1790227530.1510808, + 1790227530.2584991, + 1790227530.41819, + 1790227530.5330162, + 1790227530.7016604, + 1790227530.8053174, + 1790227530.9134235, + 1790227531.0371215, + 1790227531.1350508, + 1790227531.2470996, + 1790227531.3685775, + 1790227531.5059853, + 1790227531.5996146, + 1790227531.6861498, + 1790227531.785178, + 1790227531.877523, + 1790227531.9677653, + 1790227532.0489514, + 1790227532.1326911, + 1790227532.2165148, + 1790227532.2984982, + 1790227532.379859, + 1790227532.4588218, + 1790227532.5577936, + 1790227532.6462724, + 1790227532.7341332, + 1790227532.8267999, + 1790227532.90531, + 1790227532.986996, + 1790227533.0678127, + 1790227533.1470735, + 1790227533.2331362, + 1790227533.3386207, + 1790227533.4278932, + 1790227533.5183897, + 1790227533.5932927, + 1790227533.677683, + 1790227533.7643533, + 1790227533.852425, + 1790227533.9443328, + 1790227534.025804, + 1790227534.1072567, + 1790227534.1962664, + 1790227534.2877214, + 1790227534.3720038, + 1790227534.44854, + 1790227534.5383956, + 1790227534.6334994, + 1790227534.7278666, + 1790227534.9222221, + 1790227535.0113025, + 1790227535.1025288, + 1790227535.1903117, + 1790227535.277507, + 1790227535.3615432, + 1790227535.4383147, + 1790227535.5210645, + 1790227535.6037014, + 1790227535.686692, + 1790227535.76839, + 1790227535.8529272, + 1790227535.934492, + 1790227536.014878, + 1790227536.0976644, + 1790227536.193928, + 1790227536.2742755, + 1790227536.3507862, + 1790227536.4280286, + 1790227536.502691, + 1790227536.587987, + 1790227536.6746082, + 1790227536.7609544, + 1790227536.8422816, + 1790227536.915135, + 1790227536.9941897, + 1790227537.0747118, + 1790227537.1507661, + 1790227537.2361054, + 1790227537.3144853, + 1790227537.3886843, + 1790227537.469389, + 1790227537.5504248, + 1790227537.631157, + 1790227537.7112107, + 1790227537.7911115, + 1790227537.8662753, + 1790227537.9482007, + 1790227538.0310352, + 1790227538.107439, + 1790227538.1873076, + 1790227538.2717993, + 1790227538.3625355, + 1790227538.4516363, + 1790227538.5598392, + 1790227538.640588, + 1790227538.7316434, + 1790227538.8149614, + 1790227538.8981047, + 1790227538.9766793, + 1790227539.0742805, + 1790227539.1648192, + 1790227539.2634487, + 1790227539.337403, + 1790227539.4231923, + 1790227539.5062175, + 1790227539.5985274, + 1790227539.6787531, + 1790227539.7714987, + 1790227539.8505456 + ], + "text": " supports operations such as insertion, deletion, and traversal. A binary search tree is a tree where each node has at most two children, and the left and right children are such that the left subtree contains all nodes with values less than the node's value, and the right subtree contains all nodes with values greater than the node's value. A binary search tree is a data structure that supports operations such as insertion, deletion, and traversal. A binary search tree is a tree where each node has at most two children, and the left and right children are such that the left subtree contains all nodes with values less than the", + "output_token_ids": [ + 20815, + 13127, + 2129, + 463, + 54525, + 25, + 62316, + 25, + 317, + 8709, + 46267, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 9905, + 2067, + 2440, + 6795, + 1044, + 511, + 2026, + 1841, + 4672, + 25, + 317, + 275, + 3887, + 317, + 2430, + 4672, + 599, + 2129, + 455, + 275, + 3887, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 3921, + 1489, + 275, + 6795, + 1045, + 2613, + 25, + 317, + 275, + 2430, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 9063, + 1489, + 275, + 6795, + 1045, + 2613, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 1870, + 6982, + 455, + 20815, + 13127, + 2129, + 463, + 54525, + 25, + 62316, + 25, + 317, + 8709, + 46267, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 9905, + 2067, + 2440, + 6795, + 1044, + 511, + 2026, + 1841, + 4672, + 25, + 317, + 275, + 3887, + 317, + 2430, + 4672, + 599, + 2129, + 455, + 275, + 3887, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 3921, + 1489, + 275 + ], + "ttft_s": 0.08704710006713867, + "decode_tok_per_s": 11.12002011753628 + }, + { + "request_id": "4f9e9d60a6fe4786-11", + "session_id": "4f9e9d60a6fe4786", + "epoch": 0, + "prompt_chars": 38, + "prompt_tokens": 9, + "output_tokens": 128, + "submitted_unix": 1790227539.8508027, + "first_token_unix": 1790227539.9394245, + "last_token_unix": 1790227550.6523063, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227539.9394245, + 1790227540.0280204, + 1790227540.110109, + 1790227540.183301, + 1790227540.2599778, + 1790227540.34535, + 1790227540.4287336, + 1790227540.5125957, + 1790227540.600662, + 1790227540.6874962, + 1790227540.7819688, + 1790227540.887004, + 1790227540.979009, + 1790227541.0643258, + 1790227541.1444414, + 1790227541.2412765, + 1790227541.3207095, + 1790227541.3980744, + 1790227541.4809597, + 1790227541.5789206, + 1790227541.6634753, + 1790227541.7448292, + 1790227541.8228517, + 1790227541.8977368, + 1790227541.9731288, + 1790227542.058307, + 1790227542.1338499, + 1790227542.2165577, + 1790227542.2964444, + 1790227542.3890326, + 1790227542.4717007, + 1790227542.5539532, + 1790227542.6374578, + 1790227542.7177517, + 1790227542.8016515, + 1790227542.8805547, + 1790227542.9621844, + 1790227543.037114, + 1790227543.128809, + 1790227543.2135017, + 1790227543.294359, + 1790227543.3743255, + 1790227543.4549391, + 1790227543.5367763, + 1790227543.6214404, + 1790227543.6993632, + 1790227543.7795117, + 1790227543.8583786, + 1790227543.9387994, + 1790227544.021661, + 1790227544.1007962, + 1790227544.18658, + 1790227544.2718878, + 1790227544.3502817, + 1790227544.4358428, + 1790227544.5144212, + 1790227544.5953193, + 1790227544.6766965, + 1790227544.7579894, + 1790227544.8377903, + 1790227544.920493, + 1790227545.002398, + 1790227545.079955, + 1790227545.160816, + 1790227545.2452655, + 1790227545.3352704, + 1790227545.4252667, + 1790227545.5190525, + 1790227545.5946996, + 1790227545.6781342, + 1790227545.7658277, + 1790227545.8695774, + 1790227545.9919422, + 1790227546.0904489, + 1790227546.1697605, + 1790227546.2542093, + 1790227546.3409843, + 1790227546.4151647, + 1790227546.4969103, + 1790227546.577467, + 1790227546.656143, + 1790227546.7404337, + 1790227546.8179226, + 1790227546.8946981, + 1790227546.973713, + 1790227547.0433233, + 1790227547.125323, + 1790227547.2054803, + 1790227547.2888691, + 1790227547.370855, + 1790227547.4492912, + 1790227547.531287, + 1790227547.6113584, + 1790227547.6859689, + 1790227547.7701557, + 1790227547.8540354, + 1790227547.9268165, + 1790227548.0023446, + 1790227548.0843349, + 1790227548.1748888, + 1790227548.263154, + 1790227548.3456576, + 1790227548.4302967, + 1790227548.5372524, + 1790227548.7263198, + 1790227548.8107996, + 1790227548.8895211, + 1790227548.9642532, + 1790227549.0434816, + 1790227549.1220846, + 1790227549.2005532, + 1790227549.2867768, + 1790227549.3739414, + 1790227549.4550335, + 1790227549.5443702, + 1790227549.6309836, + 1790227549.7069182, + 1790227549.7859073, + 1790227549.8757632, + 1790227549.9574778, + 1790227550.0381165, + 1790227550.1295195, + 1790227550.2388115, + 1790227550.3262765, + 1790227550.4020185, + 1790227550.4871628, + 1790227550.561946, + 1790227550.6523063 + ], + "text": " 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty", + "output_token_ids": [ + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455 + ], + "ttft_s": 0.08862185478210449, + "decode_tok_per_s": 11.854886698960764 + }, + { + "request_id": "73378d2e50204c81-12", + "session_id": "73378d2e50204c81", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 9, + "submitted_unix": 1790227550.6525502, + "first_token_unix": 1790227550.7751038, + "last_token_unix": 1790227551.5374706, + "finished": false, + "cancelled": true, + "error": null, + "token_unix": [ + 1790227550.7751038, + 1790227550.858591, + 1790227550.9427638, + 1790227551.0197191, + 1790227551.1132748, + 1790227551.1963773, + 1790227551.2836378, + 1790227551.3706758, + 1790227551.5374706 + ], + "text": "We are asked: \"What is the capital", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862 + ], + "ttft_s": 0.12255358695983887, + "decode_tok_per_s": 10.493636786112576 + } + ], + "streams": { + "f145fd493f3f4b55-0": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 49, + "dropped_stale": 0, + "epoch": 0 + }, + "8384f1e154714347-1": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "a130343efd444600-2": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 42, + "dropped_stale": 0, + "epoch": 0 + }, + "aaf59fed1b304840-3": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 44, + "dropped_stale": 0, + "epoch": 0 + }, + "003f8f6e470345f7-4": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 49, + "dropped_stale": 0, + "epoch": 0 + }, + "2b11f31c761540b6-5": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 42, + "dropped_stale": 0, + "epoch": 0 + }, + "aece578fb53d483e-6": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 46, + "dropped_stale": 0, + "epoch": 0 + }, + "24258aaeda0c426c-7": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 46, + "dropped_stale": 0, + "epoch": 0 + }, + "9f5858aabf754e88-8": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 45, + "dropped_stale": 0, + "epoch": 0 + }, + "174a7bd50add4a49-9": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 45, + "dropped_stale": 0, + "epoch": 0 + }, + "c441583439524854-10": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 45, + "dropped_stale": 0, + "epoch": 0 + }, + "4f9e9d60a6fe4786-11": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 48, + "dropped_stale": 0, + "epoch": 0 + }, + "73378d2e50204c81-12": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 1, + "high_water_bytes": 26, + "dropped_stale": 1, + "epoch": 1 + } + } + }, + "requests": [ + { + "prompt": "chat_short", + "request_id": "f145fd493f3f4b55-0", + "session_id": "f145fd493f3f4b55", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 128, + "submitted_unix": 1790227415.1802092, + "first_token_unix": 1790227415.3230426, + "last_token_unix": 1790227425.686076, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227415.3230426, + 1790227415.4091625, + 1790227415.491136, + 1790227415.5877392, + 1790227415.6596658, + 1790227415.7340164, + 1790227415.819555, + 1790227415.9229302, + 1790227416.008717, + 1790227416.0876663, + 1790227416.1595006, + 1790227416.2377555, + 1790227416.3156044, + 1790227416.3961468, + 1790227416.474537, + 1790227416.565274, + 1790227416.6477609, + 1790227416.7261093, + 1790227416.8089998, + 1790227416.8932528, + 1790227416.978057, + 1790227417.064071, + 1790227417.1500802, + 1790227417.2371178, + 1790227417.3242426, + 1790227417.4069304, + 1790227417.4920926, + 1790227417.5907815, + 1790227417.667579, + 1790227417.7442493, + 1790227417.8231928, + 1790227417.8954847, + 1790227417.9698508, + 1790227418.0497203, + 1790227418.1364532, + 1790227418.2157176, + 1790227418.2995076, + 1790227418.3740418, + 1790227418.4519844, + 1790227418.5379202, + 1790227418.6232436, + 1790227418.7006881, + 1790227418.7779143, + 1790227418.8640018, + 1790227418.9335413, + 1790227419.0042908, + 1790227419.090915, + 1790227419.1687746, + 1790227419.2539015, + 1790227419.3344076, + 1790227419.4134052, + 1790227419.4908319, + 1790227419.572191, + 1790227419.6589644, + 1790227419.7475224, + 1790227419.8237934, + 1790227419.9021304, + 1790227419.9817083, + 1790227420.0668795, + 1790227420.1456246, + 1790227420.228444, + 1790227420.307726, + 1790227420.3862956, + 1790227420.4844394, + 1790227420.566257, + 1790227420.6589215, + 1790227420.7340176, + 1790227420.8164713, + 1790227420.8915412, + 1790227420.9720068, + 1790227421.0538034, + 1790227421.1276057, + 1790227421.2144227, + 1790227421.3023632, + 1790227421.3812773, + 1790227421.4658973, + 1790227421.5422447, + 1790227421.6225603, + 1790227421.707037, + 1790227421.7812622, + 1790227421.8610754, + 1790227421.9364247, + 1790227422.0166557, + 1790227422.095412, + 1790227422.171951, + 1790227422.2566051, + 1790227422.3414302, + 1790227422.428077, + 1790227422.503336, + 1790227422.5840375, + 1790227422.665587, + 1790227422.745878, + 1790227422.8304448, + 1790227422.9118013, + 1790227422.9914188, + 1790227423.0742404, + 1790227423.1493828, + 1790227423.2296376, + 1790227423.3188086, + 1790227423.3977497, + 1790227423.4786565, + 1790227423.5648, + 1790227423.6536071, + 1790227423.739873, + 1790227423.8318229, + 1790227423.911542, + 1790227423.9895418, + 1790227424.0703661, + 1790227424.1502135, + 1790227424.2290227, + 1790227424.3078148, + 1790227424.3878984, + 1790227424.47413, + 1790227424.5538385, + 1790227424.6318295, + 1790227424.7114763, + 1790227424.793925, + 1790227424.8764563, + 1790227424.9579434, + 1790227425.0284204, + 1790227425.104212, + 1790227425.1850066, + 1790227425.2655668, + 1790227425.3601966, + 1790227425.4450846, + 1790227425.522498, + 1790227425.603773, + 1790227425.686076 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris\n\nWait, the user's message is: \"What is the capital of France? Answer in one word.\" I need to provide the answer. The answer is \"Paris\". I should output just that word.\n\nBut let's see the instruction: \"Answer in one word.\" So I should respond", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 198, + 198, + 34542, + 25, + 275, + 3754, + 1045, + 5974, + 390, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 373, + 1633, + 312, + 4553, + 275, + 6787, + 27, + 614, + 6787, + 390, + 518, + 110949, + 4348, + 373, + 2029, + 6340, + 1839, + 455, + 5240, + 27, + 198, + 198, + 4023, + 1553, + 1045, + 2261, + 275, + 23220, + 39, + 518, + 47648, + 304, + 1135, + 5240, + 1848, + 4358, + 373, + 2029, + 9666 + ], + "ttft_s": 0.14283347129821777, + "decode_tok_per_s": 12.255099099722559, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 49, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "prompt": "chat_tools", + "request_id": "8384f1e154714347-1", + "session_id": "8384f1e154714347", + "epoch": 0, + "prompt_chars": 595, + "prompt_tokens": 137, + "output_tokens": 128, + "submitted_unix": 1790227425.6863406, + "first_token_unix": 1790227426.1346984, + "last_token_unix": 1790227436.4969933, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227426.1346984, + 1790227426.2159965, + 1790227426.290664, + 1790227426.3755932, + 1790227426.4647524, + 1790227426.538936, + 1790227426.6207795, + 1790227426.7057462, + 1790227426.784482, + 1790227426.8669174, + 1790227426.9494576, + 1790227427.0231435, + 1790227427.102875, + 1790227427.1763122, + 1790227427.259016, + 1790227427.3433738, + 1790227427.4168215, + 1790227427.490605, + 1790227427.5695796, + 1790227427.6538215, + 1790227427.7351344, + 1790227427.8143744, + 1790227427.8875725, + 1790227427.9711359, + 1790227428.0520587, + 1790227428.1323774, + 1790227428.2116463, + 1790227428.2855465, + 1790227428.3634946, + 1790227428.4412284, + 1790227428.521985, + 1790227428.6133363, + 1790227428.6917033, + 1790227428.7694027, + 1790227428.8508835, + 1790227428.9284518, + 1790227429.011033, + 1790227429.0813985, + 1790227429.1652186, + 1790227429.2616825, + 1790227429.3428185, + 1790227429.4228137, + 1790227429.4956517, + 1790227429.5775578, + 1790227429.6615858, + 1790227429.7468786, + 1790227429.824582, + 1790227429.9052956, + 1790227429.98773, + 1790227430.0652297, + 1790227430.1487935, + 1790227430.2357852, + 1790227430.311173, + 1790227430.3892295, + 1790227430.4666667, + 1790227430.5462902, + 1790227430.6345491, + 1790227430.7183855, + 1790227430.7975025, + 1790227430.8701763, + 1790227430.9561136, + 1790227431.0373735, + 1790227431.1148832, + 1790227431.1922414, + 1790227431.2791903, + 1790227431.3567863, + 1790227431.4288902, + 1790227431.51111, + 1790227431.5845497, + 1790227431.6645024, + 1790227431.742092, + 1790227431.8277085, + 1790227431.9007046, + 1790227431.9837196, + 1790227432.0549188, + 1790227432.1313255, + 1790227432.2115064, + 1790227432.2986894, + 1790227432.38328, + 1790227432.459245, + 1790227432.5385346, + 1790227432.6231594, + 1790227432.697557, + 1790227432.7810173, + 1790227432.8611526, + 1790227432.9348953, + 1790227433.0281155, + 1790227433.1131318, + 1790227433.20604, + 1790227433.290008, + 1790227433.371431, + 1790227433.454432, + 1790227433.5328052, + 1790227433.6071496, + 1790227433.6851835, + 1790227433.7685928, + 1790227433.8515413, + 1790227433.929524, + 1790227434.011903, + 1790227434.0938408, + 1790227434.1780417, + 1790227434.2710392, + 1790227434.3636184, + 1790227434.453008, + 1790227434.5359514, + 1790227434.6272445, + 1790227434.7265203, + 1790227434.816499, + 1790227434.8962843, + 1790227434.9826157, + 1790227435.0633702, + 1790227435.1475036, + 1790227435.2334182, + 1790227435.3227909, + 1790227435.4061806, + 1790227435.4980192, + 1790227435.5761464, + 1790227435.6547527, + 1790227435.7292976, + 1790227435.8159175, + 1790227435.9066632, + 1790227435.9947314, + 1790227436.081168, + 1790227436.163267, + 1790227436.246305, + 1790227436.3351755, + 1790227436.419135, + 1790227436.4969933 + ], + "text": "The user wants to know the weather in Shenzhen right now in Celsius. I have a function available called `get_weather` that can retrieve weather for a city. Let me call it with the city \"Shenzhen\" and unit \"celsius\".get_weathercityShenzhenunitcelsius", + "output_token_ids": [ + 1046, + 3754, + 13025, + 312, + 1843, + 275, + 14510, + 304, + 75040, + 103, + 872, + 2430, + 2343, + 304, + 423, + 108364, + 27, + 373, + 760, + 259, + 2122, + 4234, + 4848, + 2561, + 913, + 76, + 64301, + 77, + 455, + 764, + 41002, + 14510, + 396, + 259, + 6594, + 27, + 9619, + 713, + 2426, + 488, + 478, + 275, + 6594, + 518, + 64, + 872, + 103, + 872, + 15, + 317, + 9261, + 518, + 8281, + 4348, + 4, + 130977, + 913, + 76, + 64301, + 130980, + 58593, + 130981, + 130982, + 64, + 872, + 103, + 872, + 130983, + 130980, + 11220, + 130981, + 130982, + 8281, + 130983, + 130984, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1 + ], + "ttft_s": 0.44835782051086426, + "decode_tok_per_s": 12.255972356932505, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "prompt": "chat_long", + "request_id": "a130343efd444600-2", + "session_id": "a130343efd444600", + "epoch": 0, + "prompt_chars": 6648, + "prompt_tokens": 2465, + "output_tokens": 128, + "submitted_unix": 1790227436.4973423, + "first_token_unix": 1790227442.5909264, + "last_token_unix": 1790227453.1634727, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227442.5909264, + 1790227442.6763947, + 1790227442.762277, + 1790227442.8432126, + 1790227442.934255, + 1790227443.0158498, + 1790227443.1026552, + 1790227443.183424, + 1790227443.275513, + 1790227443.3606465, + 1790227443.438327, + 1790227443.5139313, + 1790227443.5971875, + 1790227443.6816509, + 1790227443.7700617, + 1790227443.8597474, + 1790227443.948835, + 1790227444.035954, + 1790227444.1144023, + 1790227444.1958995, + 1790227444.2761023, + 1790227444.3617651, + 1790227444.4383724, + 1790227444.5244217, + 1790227444.6130426, + 1790227444.6896098, + 1790227444.7742145, + 1790227444.8768384, + 1790227444.960524, + 1790227445.0571027, + 1790227445.1342313, + 1790227445.219664, + 1790227445.3313098, + 1790227445.4213605, + 1790227445.5032904, + 1790227445.5917182, + 1790227445.6704705, + 1790227445.7475693, + 1790227445.8318024, + 1790227445.9075716, + 1790227445.9809163, + 1790227446.0667355, + 1790227446.155554, + 1790227446.2377985, + 1790227446.3168013, + 1790227446.3982131, + 1790227446.4893215, + 1790227446.5761538, + 1790227446.6561983, + 1790227446.7344937, + 1790227446.813057, + 1790227446.8970406, + 1790227446.9747014, + 1790227447.0515416, + 1790227447.137379, + 1790227447.2223854, + 1790227447.3043246, + 1790227447.38817, + 1790227447.469095, + 1790227447.5438974, + 1790227447.6207802, + 1790227447.704219, + 1790227447.7824075, + 1790227447.8664258, + 1790227447.9431996, + 1790227448.0282373, + 1790227448.10998, + 1790227448.194652, + 1790227448.2781818, + 1790227448.3606968, + 1790227448.4377756, + 1790227448.5181677, + 1790227448.6035597, + 1790227448.6894965, + 1790227448.7902584, + 1790227448.8683164, + 1790227448.955865, + 1790227449.0396595, + 1790227449.1194215, + 1790227449.1992366, + 1790227449.2837825, + 1790227449.3653705, + 1790227449.4487484, + 1790227449.5313764, + 1790227449.6138823, + 1790227449.6921582, + 1790227449.785427, + 1790227449.8734465, + 1790227449.957937, + 1790227450.0338395, + 1790227450.1205533, + 1790227450.1953638, + 1790227450.2863414, + 1790227450.3678591, + 1790227450.447087, + 1790227450.5282664, + 1790227450.6120844, + 1790227450.6890154, + 1790227450.7755725, + 1790227450.8575602, + 1790227450.936902, + 1790227451.018924, + 1790227451.1015658, + 1790227451.1737325, + 1790227451.254296, + 1790227451.3309526, + 1790227451.4164934, + 1790227451.4996786, + 1790227451.5772266, + 1790227451.6514049, + 1790227451.7369945, + 1790227451.8198695, + 1790227451.914394, + 1790227451.9995258, + 1790227452.0799923, + 1790227452.1568708, + 1790227452.2411354, + 1790227452.3186574, + 1790227452.3946478, + 1790227452.4857805, + 1790227452.563077, + 1790227452.6567242, + 1790227452.7479534, + 1790227452.8265662, + 1790227452.9052932, + 1790227452.9898558, + 1790227453.0707693, + 1790227453.1634727 + ], + "text": "We are given an inventory listing with item codes for warehouse districts 1 through 120. The question asks: \"What is the code for warehouse district 73?\" We need to find the code corresponding to district 73.\n\nLooking at the list, we see:\nItem 1: district 1 -> 1007\nItem 2: district 2 -> 1014\n...\nWe need to find the entry for district 73.\n\nLet's list the districts and their codes in order. The list is given as:\nItem 1: 1", + "output_token_ids": [ + 3066, + 599, + 4114, + 300, + 31946, + 35404, + 478, + 7006, + 27149, + 396, + 56774, + 49408, + 220, + 30, + 1953, + 220, + 30, + 31, + 29, + 27, + 614, + 5565, + 27179, + 39, + 518, + 4766, + 390, + 275, + 5760, + 396, + 56774, + 20882, + 220, + 36, + 32, + 5171, + 1994, + 1633, + 312, + 2432, + 275, + 5760, + 12610, + 312, + 20882, + 220, + 36, + 32, + 27, + 198, + 198, + 48992, + 511, + 275, + 2631, + 25, + 679, + 2261, + 39, + 198, + 5369, + 220, + 30, + 39, + 20882, + 220, + 30, + 3192, + 220, + 30, + 29, + 29, + 36, + 198, + 5369, + 220, + 31, + 39, + 20882, + 220, + 31, + 3192, + 220, + 30, + 29, + 30, + 33, + 198, + 2097, + 198, + 3066, + 1633, + 312, + 2432, + 275, + 11411, + 396, + 20882, + 220, + 36, + 32, + 27, + 198, + 198, + 13104, + 1045, + 2631, + 275, + 49408, + 317, + 1140, + 27149, + 304, + 3310, + 27, + 614, + 2631, + 390, + 4114, + 463, + 39, + 198, + 5369, + 220, + 30, + 39, + 220, + 30 + ], + "ttft_s": 6.093584060668945, + "decode_tok_per_s": 12.012243510031114, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 42, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "prompt": "plain_0", + "request_id": "aaf59fed1b304840-3", + "session_id": "aaf59fed1b304840", + "epoch": 0, + "prompt_chars": 27, + "prompt_tokens": 5, + "output_tokens": 128, + "submitted_unix": 1790227453.1637144, + "first_token_unix": 1790227453.242828, + "last_token_unix": 1790227463.4976077, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227453.242828, + 1790227453.3213806, + 1790227453.4010324, + 1790227453.4872196, + 1790227453.5669723, + 1790227453.6419628, + 1790227453.722509, + 1790227453.8039477, + 1790227453.8774385, + 1790227453.9641995, + 1790227454.0400481, + 1790227454.1205192, + 1790227454.1982903, + 1790227454.2778168, + 1790227454.352265, + 1790227454.429257, + 1790227454.5142744, + 1790227454.594018, + 1790227454.669383, + 1790227454.7534344, + 1790227454.8343983, + 1790227454.9087684, + 1790227454.9902565, + 1790227455.0733407, + 1790227455.1526337, + 1790227455.2263634, + 1790227455.3050196, + 1790227455.3800633, + 1790227455.4579527, + 1790227455.5376172, + 1790227455.632746, + 1790227455.7133083, + 1790227455.7970946, + 1790227455.876087, + 1790227455.957149, + 1790227456.041447, + 1790227456.1222405, + 1790227456.2028172, + 1790227456.2780373, + 1790227456.358418, + 1790227456.4313517, + 1790227456.514001, + 1790227456.6026947, + 1790227456.68814, + 1790227456.7736917, + 1790227456.8616853, + 1790227456.9397671, + 1790227457.0153494, + 1790227457.0941746, + 1790227457.1818645, + 1790227457.2679276, + 1790227457.3444607, + 1790227457.417252, + 1790227457.5017204, + 1790227457.5794055, + 1790227457.6598313, + 1790227457.7426317, + 1790227457.8235512, + 1790227457.8963294, + 1790227457.9815254, + 1790227458.0636215, + 1790227458.1445668, + 1790227458.2213666, + 1790227458.305325, + 1790227458.382427, + 1790227458.487507, + 1790227458.567165, + 1790227458.6492372, + 1790227458.72812, + 1790227458.8118494, + 1790227458.8936076, + 1790227458.9698226, + 1790227459.0406513, + 1790227459.116274, + 1790227459.205335, + 1790227459.2883244, + 1790227459.366821, + 1790227459.4396806, + 1790227459.5286064, + 1790227459.6120074, + 1790227459.689372, + 1790227459.7823775, + 1790227459.8739717, + 1790227459.9576252, + 1790227460.0437899, + 1790227460.129602, + 1790227460.2087927, + 1790227460.293736, + 1790227460.3767676, + 1790227460.4775162, + 1790227460.5550694, + 1790227460.6406484, + 1790227460.7134788, + 1790227460.7888048, + 1790227460.874442, + 1790227460.9572613, + 1790227461.0319703, + 1790227461.1156619, + 1790227461.1903958, + 1790227461.2751358, + 1790227461.349358, + 1790227461.4362135, + 1790227461.5118206, + 1790227461.5913432, + 1790227461.6741674, + 1790227461.7559073, + 1790227461.8308299, + 1790227461.904044, + 1790227461.99147, + 1790227462.0719366, + 1790227462.1466875, + 1790227462.2261798, + 1790227462.305155, + 1790227462.3810966, + 1790227462.465225, + 1790227462.5439055, + 1790227462.6224935, + 1790227462.7043962, + 1790227462.7799387, + 1790227462.8622067, + 1790227462.940851, + 1790227463.0252442, + 1790227463.0986369, + 1790227463.1811557, + 1790227463.2563937, + 1790227463.34567, + 1790227463.4200563, + 1790227463.4976077 + ], + "text": " the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of", + "output_token_ids": [ + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314 + ], + "ttft_s": 0.07911348342895508, + "decode_tok_per_s": 12.384468733876467, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 44, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "prompt": "plain_1", + "request_id": "003f8f6e470345f7-4", + "session_id": "003f8f6e470345f7", + "epoch": 0, + "prompt_chars": 30, + "prompt_tokens": 13, + "output_tokens": 128, + "submitted_unix": 1790227463.497843, + "first_token_unix": 1790227463.5976624, + "last_token_unix": 1790227473.9757867, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227463.5976624, + 1790227463.6792865, + 1790227463.7602615, + 1790227463.8349566, + 1790227463.9070349, + 1790227463.984813, + 1790227464.0703433, + 1790227464.1458402, + 1790227464.22062, + 1790227464.2964263, + 1790227464.3822937, + 1790227464.4613304, + 1790227464.5377345, + 1790227464.6291711, + 1790227464.7066522, + 1790227464.7860374, + 1790227464.8667603, + 1790227464.9501567, + 1790227465.025322, + 1790227465.1117802, + 1790227465.2023375, + 1790227465.2951453, + 1790227465.3730695, + 1790227465.4552734, + 1790227465.5374937, + 1790227465.6102674, + 1790227465.723154, + 1790227465.808786, + 1790227465.8910744, + 1790227465.9660988, + 1790227466.0455282, + 1790227466.1338055, + 1790227466.2289047, + 1790227466.310076, + 1790227466.3989792, + 1790227466.481779, + 1790227466.5655982, + 1790227466.6503665, + 1790227466.7339716, + 1790227466.8068085, + 1790227466.8849826, + 1790227466.97086, + 1790227467.0561805, + 1790227467.1389904, + 1790227467.2262123, + 1790227467.3110018, + 1790227467.3943846, + 1790227467.4776583, + 1790227467.5586324, + 1790227467.6381798, + 1790227467.7216814, + 1790227467.8070745, + 1790227467.883396, + 1790227467.965232, + 1790227468.049157, + 1790227468.126841, + 1790227468.204369, + 1790227468.3103027, + 1790227468.3935127, + 1790227468.470954, + 1790227468.5431104, + 1790227468.623575, + 1790227468.6986408, + 1790227468.7787867, + 1790227468.8661835, + 1790227468.940003, + 1790227469.018083, + 1790227469.0956705, + 1790227469.1714945, + 1790227469.2451217, + 1790227469.3222256, + 1790227469.4046786, + 1790227469.4887702, + 1790227469.5619795, + 1790227469.6332936, + 1790227469.7107944, + 1790227469.7916975, + 1790227469.8673577, + 1790227469.953721, + 1790227470.0404842, + 1790227470.1212385, + 1790227470.1987367, + 1790227470.2750564, + 1790227470.355459, + 1790227470.428105, + 1790227470.5041254, + 1790227470.584733, + 1790227470.6681845, + 1790227470.7460537, + 1790227470.837924, + 1790227470.924396, + 1790227471.0086086, + 1790227471.09435, + 1790227471.174883, + 1790227471.2787695, + 1790227471.3647869, + 1790227471.4441323, + 1790227471.5304146, + 1790227471.6073782, + 1790227471.68343, + 1790227471.791215, + 1790227471.8798833, + 1790227471.961184, + 1790227472.0429149, + 1790227472.1137533, + 1790227472.2092052, + 1790227472.2952328, + 1790227472.3757317, + 1790227472.4510124, + 1790227472.5262117, + 1790227472.609581, + 1790227472.695604, + 1790227472.7813663, + 1790227472.8608875, + 1790227472.9418235, + 1790227473.026073, + 1790227473.1121264, + 1790227473.1903152, + 1790227473.2680779, + 1790227473.3530383, + 1790227473.4310763, + 1790227473.5093956, + 1790227473.589959, + 1790227473.673955, + 1790227473.7471092, + 1790227473.8251061, + 1790227473.8979065, + 1790227473.9757867 + ], + "text": " mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission", + "output_token_ids": [ + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174 + ], + "ttft_s": 0.09981942176818848, + "decode_tok_per_s": 12.23727882794848, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 49, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "prompt": "plain_2", + "request_id": "2b11f31c761540b6-5", + "session_id": "2b11f31c761540b6", + "epoch": 0, + "prompt_chars": 61, + "prompt_tokens": 18, + "output_tokens": 128, + "submitted_unix": 1790227473.9760249, + "first_token_unix": 1790227474.105421, + "last_token_unix": 1790227484.562463, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227474.105421, + 1790227474.1899767, + 1790227474.2632394, + 1790227474.3460598, + 1790227474.427, + 1790227474.503712, + 1790227474.583109, + 1790227474.6614375, + 1790227474.7461321, + 1790227474.8263006, + 1790227474.904069, + 1790227474.9838924, + 1790227475.0580008, + 1790227475.1360419, + 1790227475.2212386, + 1790227475.298612, + 1790227475.3805356, + 1790227475.4562535, + 1790227475.5428715, + 1790227475.6286614, + 1790227475.7073472, + 1790227475.791424, + 1790227475.8829765, + 1790227475.96857, + 1790227476.0486329, + 1790227476.1381989, + 1790227476.2161257, + 1790227476.2965722, + 1790227476.3779967, + 1790227476.4659727, + 1790227476.5463202, + 1790227476.6237748, + 1790227476.700258, + 1790227476.7891572, + 1790227476.8725061, + 1790227476.9528222, + 1790227477.0362515, + 1790227477.1235385, + 1790227477.211046, + 1790227477.2897415, + 1790227477.369355, + 1790227477.4401624, + 1790227477.512569, + 1790227477.5945475, + 1790227477.6886575, + 1790227477.7781897, + 1790227477.852196, + 1790227477.9315262, + 1790227478.0096102, + 1790227478.0848532, + 1790227478.166399, + 1790227478.2506382, + 1790227478.3274963, + 1790227478.4167895, + 1790227478.498564, + 1790227478.5778534, + 1790227478.6563947, + 1790227478.7393715, + 1790227478.8151445, + 1790227478.900262, + 1790227478.981264, + 1790227479.0586228, + 1790227479.1404657, + 1790227479.2136378, + 1790227479.2968085, + 1790227479.377837, + 1790227479.458607, + 1790227479.5344286, + 1790227479.6079044, + 1790227479.6861024, + 1790227479.7622204, + 1790227479.8376753, + 1790227479.9150314, + 1790227480.0016031, + 1790227480.0845664, + 1790227480.1630921, + 1790227480.2397811, + 1790227480.3240106, + 1790227480.400777, + 1790227480.480317, + 1790227480.5656807, + 1790227480.649037, + 1790227480.7270727, + 1790227480.8093224, + 1790227480.885504, + 1790227480.9642804, + 1790227481.049705, + 1790227481.1334329, + 1790227481.2191372, + 1790227481.2994926, + 1790227481.3811364, + 1790227481.4641206, + 1790227481.5458097, + 1790227481.635602, + 1790227481.717092, + 1790227481.7971704, + 1790227481.8770046, + 1790227481.9555197, + 1790227482.0286562, + 1790227482.1161265, + 1790227482.202015, + 1790227482.2801905, + 1790227482.3574548, + 1790227482.4428136, + 1790227482.5171795, + 1790227482.598411, + 1790227482.6782117, + 1790227482.7581565, + 1790227482.8367803, + 1790227482.9186575, + 1790227483.0073802, + 1790227483.0837884, + 1790227483.16128, + 1790227483.2448454, + 1790227483.327184, + 1790227483.4077485, + 1790227483.4851422, + 1790227483.5587418, + 1790227483.6435206, + 1790227483.7282183, + 1790227483.8149083, + 1790227483.8992095, + 1790227483.9831865, + 1790227484.0602696, + 1790227484.15275, + 1790227484.3170896, + 1790227484.4780235, + 1790227484.562463 + ], + "text": " a, b = 0, 1\n for _ in range(n):\n a, b = b, a + b\n if _ == n:\n return a\n return a\n\n\ndef main():\n n = int(input())\n print(fibonacci(n))\n\n\nif __name__ == \"__main__\":\n main()\n\n\n你的代码存在一些错误,需要修正。请详细分析错误原因,并给出修正后的代码。\n\n### 错误分析\n\n1. **输入处理错误**:\n - 原代码中 `n", + "output_token_ids": [ + 293, + 259, + 25, + 287, + 422, + 220, + 29, + 25, + 220, + 30, + 198, + 293, + 396, + 2198, + 304, + 4044, + 5738, + 2407, + 198, + 361, + 259, + 25, + 287, + 422, + 287, + 25, + 259, + 1336, + 287, + 198, + 361, + 690, + 2198, + 2126, + 292, + 39, + 198, + 462, + 948, + 259, + 198, + 293, + 948, + 259, + 198, + 198, + 198, + 3068, + 2772, + 11834, + 198, + 293, + 292, + 422, + 1455, + 16040, + 4112, + 198, + 293, + 3594, + 3836, + 41162, + 65043, + 5738, + 1771, + 198, + 198, + 198, + 556, + 7001, + 2215, + 1423, + 2126, + 51012, + 14872, + 72067, + 198, + 293, + 2772, + 663, + 198, + 198, + 198, + 3992, + 12792, + 3259, + 2651, + 8189, + 280, + 1740, + 26813, + 302, + 2118, + 8210, + 2572, + 8189, + 4366, + 280, + 1125, + 28490, + 26813, + 6922, + 12792, + 302, + 198, + 198, + 16689, + 220, + 8189, + 2572, + 198, + 198, + 30, + 27, + 7307, + 8156, + 3052, + 8189, + 47165, + 198, + 256, + 706, + 220, + 1345, + 12792, + 457, + 2561, + 91 + ], + "ttft_s": 0.1293962001800537, + "decode_tok_per_s": 12.144925903236736, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 42, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "prompt": "plain_3", + "request_id": "aece578fb53d483e-6", + "session_id": "aece578fb53d483e", + "epoch": 0, + "prompt_chars": 43, + "prompt_tokens": 8, + "output_tokens": 128, + "submitted_unix": 1790227484.5627022, + "first_token_unix": 1790227484.6927862, + "last_token_unix": 1790227495.003865, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227484.6927862, + 1790227484.7812383, + 1790227484.8581154, + 1790227484.9379985, + 1790227485.0236158, + 1790227485.0971322, + 1790227485.1801956, + 1790227485.2675867, + 1790227485.3446908, + 1790227485.4335048, + 1790227485.5076227, + 1790227485.5834196, + 1790227485.664833, + 1790227485.7451618, + 1790227485.8278131, + 1790227485.904385, + 1790227485.984839, + 1790227486.0578334, + 1790227486.1405077, + 1790227486.222164, + 1790227486.308589, + 1790227486.391181, + 1790227486.4664505, + 1790227486.5527122, + 1790227486.637484, + 1790227486.7195153, + 1790227486.8061893, + 1790227486.8955696, + 1790227486.9717028, + 1790227487.0513594, + 1790227487.1225595, + 1790227487.2162259, + 1790227487.29972, + 1790227487.3867018, + 1790227487.4763606, + 1790227487.5564175, + 1790227487.63273, + 1790227487.711354, + 1790227487.8234422, + 1790227487.904496, + 1790227487.9834836, + 1790227488.0612926, + 1790227488.1357899, + 1790227488.2159998, + 1790227488.295325, + 1790227488.3710897, + 1790227488.457657, + 1790227488.5293562, + 1790227488.6062312, + 1790227488.6822155, + 1790227488.7601788, + 1790227488.839241, + 1790227488.922206, + 1790227489.0109496, + 1790227489.093908, + 1790227489.171909, + 1790227489.2468903, + 1790227489.3293066, + 1790227489.3997371, + 1790227489.4817665, + 1790227489.5712304, + 1790227489.6417677, + 1790227489.718522, + 1790227489.8023195, + 1790227489.8854003, + 1790227489.9638948, + 1790227490.0522833, + 1790227490.1297023, + 1790227490.2042432, + 1790227490.286771, + 1790227490.367058, + 1790227490.4446344, + 1790227490.5393794, + 1790227490.6352558, + 1790227490.7217326, + 1790227490.803621, + 1790227490.8847203, + 1790227490.9616356, + 1790227491.03881, + 1790227491.1211922, + 1790227491.2031589, + 1790227491.2857249, + 1790227491.3675144, + 1790227491.4430864, + 1790227491.5271504, + 1790227491.6059406, + 1790227491.707591, + 1790227491.7844186, + 1790227491.85986, + 1790227491.9471965, + 1790227492.022955, + 1790227492.1017437, + 1790227492.1986144, + 1790227492.275388, + 1790227492.3551245, + 1790227492.438417, + 1790227492.517692, + 1790227492.5951285, + 1790227492.6754303, + 1790227492.763127, + 1790227492.8437974, + 1790227492.9172583, + 1790227492.996233, + 1790227493.077795, + 1790227493.1523743, + 1790227493.239735, + 1790227493.3228915, + 1790227493.395355, + 1790227493.4743896, + 1790227493.5494516, + 1790227493.626281, + 1790227493.70603, + 1790227493.7946615, + 1790227493.878277, + 1790227493.9579103, + 1790227494.0380032, + 1790227494.1131423, + 1790227494.1898253, + 1790227494.2776155, + 1790227494.3658967, + 1790227494.4402819, + 1790227494.5219662, + 1790227494.5940866, + 1790227494.6704798, + 1790227494.7505877, + 1790227494.8426044, + 1790227494.9274576, + 1790227495.003865 + ], + "text": " the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that", + "output_token_ids": [ + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455 + ], + "ttft_s": 0.13008403778076172, + "decode_tok_per_s": 12.316848956868302, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 46, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "prompt": "plain_4", + "request_id": "24258aaeda0c426c-7", + "session_id": "24258aaeda0c426c", + "epoch": 0, + "prompt_chars": 34, + "prompt_tokens": 7, + "output_tokens": 128, + "submitted_unix": 1790227495.0041287, + "first_token_unix": 1790227495.0819979, + "last_token_unix": 1790227505.4044595, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227495.0819979, + 1790227495.1630638, + 1790227495.248696, + 1790227495.3398006, + 1790227495.4266617, + 1790227495.5081837, + 1790227495.6041934, + 1790227495.6834621, + 1790227495.7703435, + 1790227495.8462436, + 1790227495.9296033, + 1790227496.0074966, + 1790227496.0959463, + 1790227496.176533, + 1790227496.2601411, + 1790227496.351617, + 1790227496.4294288, + 1790227496.5081265, + 1790227496.5818028, + 1790227496.6570315, + 1790227496.7304494, + 1790227496.8078778, + 1790227496.888663, + 1790227496.9741206, + 1790227497.0434217, + 1790227497.118677, + 1790227497.1951814, + 1790227497.2795691, + 1790227497.355144, + 1790227497.429169, + 1790227497.5116947, + 1790227497.586581, + 1790227497.6654902, + 1790227497.7484524, + 1790227497.831359, + 1790227497.9084303, + 1790227497.9929187, + 1790227498.0772142, + 1790227498.1639867, + 1790227498.2561824, + 1790227498.3440523, + 1790227498.4290478, + 1790227498.5141165, + 1790227498.589211, + 1790227498.6594212, + 1790227498.733457, + 1790227498.8153918, + 1790227498.8994534, + 1790227498.9789064, + 1790227499.059087, + 1790227499.13832, + 1790227499.2231073, + 1790227499.2994554, + 1790227499.3764112, + 1790227499.461557, + 1790227499.539409, + 1790227499.6295493, + 1790227499.7059972, + 1790227499.7811623, + 1790227499.8547723, + 1790227499.9319487, + 1790227500.0088084, + 1790227500.09632, + 1790227500.1755624, + 1790227500.2614224, + 1790227500.3423667, + 1790227500.425175, + 1790227500.5042098, + 1790227500.5868533, + 1790227500.6713147, + 1790227500.745396, + 1790227500.8311033, + 1790227500.909581, + 1790227500.9884038, + 1790227501.0666099, + 1790227501.1386287, + 1790227501.2273374, + 1790227501.3045833, + 1790227501.38763, + 1790227501.4871626, + 1790227501.5686846, + 1790227501.6467125, + 1790227501.7279258, + 1790227501.8079438, + 1790227501.8894308, + 1790227501.9662619, + 1790227502.0539386, + 1790227502.1345012, + 1790227502.2189841, + 1790227502.3059633, + 1790227502.3884652, + 1790227502.4598336, + 1790227502.5427837, + 1790227502.6226876, + 1790227502.7004743, + 1790227502.7837398, + 1790227502.8607695, + 1790227502.937314, + 1790227503.0221238, + 1790227503.1024168, + 1790227503.1862943, + 1790227503.2652152, + 1790227503.3626602, + 1790227503.4518738, + 1790227503.5305119, + 1790227503.6067095, + 1790227503.6847336, + 1790227503.7687142, + 1790227503.8512971, + 1790227503.929807, + 1790227504.007723, + 1790227504.0937533, + 1790227504.1795263, + 1790227504.2670114, + 1790227504.353487, + 1790227504.4326088, + 1790227504.5120795, + 1790227504.5980995, + 1790227504.6807008, + 1790227504.7566683, + 1790227504.834993, + 1790227504.9183404, + 1790227505.0016592, + 1790227505.0873334, + 1790227505.1610332, + 1790227505.238346, + 1790227505.3186827, + 1790227505.4044595 + ], + "text": " to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make", + "output_token_ids": [ + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996 + ], + "ttft_s": 0.07786917686462402, + "decode_tok_per_s": 12.303266881380074, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 46, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "prompt": "plain_5", + "request_id": "9f5858aabf754e88-8", + "session_id": "9f5858aabf754e88", + "epoch": 0, + "prompt_chars": 37, + "prompt_tokens": 7, + "output_tokens": 128, + "submitted_unix": 1790227505.404698, + "first_token_unix": 1790227505.4894524, + "last_token_unix": 1790227515.831647, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227505.4894524, + 1790227505.5717547, + 1790227505.6512618, + 1790227505.7268662, + 1790227505.8051898, + 1790227505.8781092, + 1790227505.9616292, + 1790227506.0405352, + 1790227506.1176345, + 1790227506.1989563, + 1790227506.278261, + 1790227506.3519292, + 1790227506.42734, + 1790227506.5041926, + 1790227506.578597, + 1790227506.6554022, + 1790227506.7349603, + 1790227506.8125634, + 1790227506.8905249, + 1790227506.9628882, + 1790227507.0496085, + 1790227507.1273768, + 1790227507.2057266, + 1790227507.2960086, + 1790227507.3825214, + 1790227507.459698, + 1790227507.5425296, + 1790227507.6213267, + 1790227507.694158, + 1790227507.7702672, + 1790227507.855502, + 1790227507.9362993, + 1790227508.032743, + 1790227508.120216, + 1790227508.1967382, + 1790227508.2740698, + 1790227508.3546352, + 1790227508.4353092, + 1790227508.5142562, + 1790227508.5978005, + 1790227508.6756072, + 1790227508.7594037, + 1790227508.8446922, + 1790227508.9317641, + 1790227509.0120056, + 1790227509.096963, + 1790227509.1908698, + 1790227509.2669528, + 1790227509.3469892, + 1790227509.426663, + 1790227509.5109951, + 1790227509.5986917, + 1790227509.677948, + 1790227509.759123, + 1790227509.832876, + 1790227509.9124062, + 1790227509.9949465, + 1790227510.0742815, + 1790227510.1506894, + 1790227510.240724, + 1790227510.3302255, + 1790227510.4121342, + 1790227510.4931602, + 1790227510.575358, + 1790227510.6506464, + 1790227510.7450385, + 1790227510.8344412, + 1790227510.9153326, + 1790227510.98977, + 1790227511.066693, + 1790227511.1449535, + 1790227511.2408907, + 1790227511.3223104, + 1790227511.4041717, + 1790227511.4822395, + 1790227511.5692992, + 1790227511.6510193, + 1790227511.7298992, + 1790227511.8163505, + 1790227511.8907294, + 1790227511.9735117, + 1790227512.0510023, + 1790227512.1391253, + 1790227512.2175992, + 1790227512.2947392, + 1790227512.3781254, + 1790227512.4607153, + 1790227512.5507658, + 1790227512.635418, + 1790227512.7165773, + 1790227512.7987719, + 1790227512.8888295, + 1790227512.9683435, + 1790227513.0498831, + 1790227513.1260102, + 1790227513.201106, + 1790227513.285089, + 1790227513.3645787, + 1790227513.45024, + 1790227513.5304115, + 1790227513.6101892, + 1790227513.6924117, + 1790227513.7660172, + 1790227513.8462367, + 1790227513.930139, + 1790227514.0177298, + 1790227514.0977173, + 1790227514.175426, + 1790227514.2590587, + 1790227514.3570745, + 1790227514.4368308, + 1790227514.5221415, + 1790227514.6071677, + 1790227514.7075994, + 1790227514.7941365, + 1790227514.877138, + 1790227514.9572084, + 1790227515.04279, + 1790227515.1306512, + 1790227515.2090414, + 1790227515.2901156, + 1790227515.3647797, + 1790227515.4416382, + 1790227515.523271, + 1790227515.6063328, + 1790227515.6833508, + 1790227515.7622051, + 1790227515.831647 + ], + "text": " the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the", + "output_token_ids": [ + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275 + ], + "ttft_s": 0.08475446701049805, + "decode_tok_per_s": 12.279792194753194, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 45, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "prompt": "plain_6", + "request_id": "174a7bd50add4a49-9", + "session_id": "174a7bd50add4a49", + "epoch": 0, + "prompt_chars": 23, + "prompt_tokens": 3, + "output_tokens": 128, + "submitted_unix": 1790227515.8318825, + "first_token_unix": 1790227515.9105904, + "last_token_unix": 1790227528.3424006, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227515.9105904, + 1790227515.9880009, + 1790227516.0740774, + 1790227516.1504707, + 1790227516.2346854, + 1790227516.3158247, + 1790227516.3979726, + 1790227516.477477, + 1790227516.5645285, + 1790227516.6498084, + 1790227516.7197704, + 1790227516.8042483, + 1790227516.8875067, + 1790227516.961287, + 1790227517.0367084, + 1790227517.115395, + 1790227517.1898842, + 1790227517.273255, + 1790227517.3585281, + 1790227517.428742, + 1790227517.5056903, + 1790227517.5768719, + 1790227517.6595542, + 1790227517.743301, + 1790227517.8203597, + 1790227517.8921552, + 1790227517.9697487, + 1790227518.0514908, + 1790227518.1450055, + 1790227518.2252486, + 1790227518.3000612, + 1790227518.3772132, + 1790227518.4588587, + 1790227518.536414, + 1790227518.6162574, + 1790227518.6964314, + 1790227518.7768648, + 1790227518.8542383, + 1790227518.9329224, + 1790227519.0169864, + 1790227519.0953605, + 1790227519.191803, + 1790227519.3006992, + 1790227519.3930824, + 1790227519.4871514, + 1790227519.608375, + 1790227519.7096722, + 1790227519.802014, + 1790227519.900243, + 1790227519.9831915, + 1790227520.066452, + 1790227520.1572495, + 1790227520.247289, + 1790227520.324103, + 1790227520.4047246, + 1790227520.4816906, + 1790227520.5730999, + 1790227520.656315, + 1790227520.7352314, + 1790227520.8203402, + 1790227520.9215446, + 1790227521.0151505, + 1790227521.094339, + 1790227521.1972833, + 1790227521.3169785, + 1790227521.406637, + 1790227521.4975364, + 1790227521.5948088, + 1790227521.6768286, + 1790227521.7627604, + 1790227521.8538592, + 1790227521.9369748, + 1790227522.0215802, + 1790227522.108104, + 1790227522.1987605, + 1790227522.2931974, + 1790227522.3909366, + 1790227522.4976783, + 1790227522.6211262, + 1790227522.7259858, + 1790227522.824383, + 1790227522.9445565, + 1790227523.0331326, + 1790227523.1277807, + 1790227523.2148185, + 1790227523.3029025, + 1790227523.4220278, + 1790227523.676076, + 1790227523.8673224, + 1790227524.0011694, + 1790227524.1186523, + 1790227524.2469475, + 1790227524.3564029, + 1790227524.4647405, + 1790227524.5937798, + 1790227524.7182875, + 1790227524.8404953, + 1790227524.996369, + 1790227525.2793314, + 1790227525.3796659, + 1790227525.483542, + 1790227525.6034982, + 1790227525.7285178, + 1790227525.8249655, + 1790227525.939684, + 1790227526.065627, + 1790227526.1928558, + 1790227526.3172822, + 1790227526.4704027, + 1790227526.5833316, + 1790227526.66966, + 1790227526.7709072, + 1790227526.8736007, + 1790227526.9649265, + 1790227527.0653136, + 1790227527.1712346, + 1790227527.2784247, + 1790227527.385941, + 1790227527.5265832, + 1790227527.6229653, + 1790227527.7456906, + 1790227527.8280475, + 1790227527.916759, + 1790227527.996418, + 1790227528.0787349, + 1790227528.168874, + 1790227528.2567906, + 1790227528.3424006 + ], + "text": " carbon and oxygen into carbon and oxygen and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and", + "output_token_ids": [ + 13619, + 317, + 19210, + 1464, + 13619, + 317, + 19210, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317 + ], + "ttft_s": 0.07870793342590332, + "decode_tok_per_s": 10.215728728444935, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 45, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "prompt": "plain_7", + "request_id": "c441583439524854-10", + "session_id": "c441583439524854", + "epoch": 0, + "prompt_chars": 45, + "prompt_tokens": 9, + "output_tokens": 128, + "submitted_unix": 1790227528.342656, + "first_token_unix": 1790227528.429703, + "last_token_unix": 1790227539.8505456, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227528.429703, + 1790227528.5131965, + 1790227528.5949442, + 1790227528.6834624, + 1790227528.7795167, + 1790227528.8763647, + 1790227528.964581, + 1790227529.0473125, + 1790227529.1407397, + 1790227529.2268128, + 1790227529.3291292, + 1790227529.413708, + 1790227529.4928846, + 1790227529.577366, + 1790227529.665504, + 1790227529.7551024, + 1790227529.8568347, + 1790227529.960494, + 1790227530.0591352, + 1790227530.1510808, + 1790227530.2584991, + 1790227530.41819, + 1790227530.5330162, + 1790227530.7016604, + 1790227530.8053174, + 1790227530.9134235, + 1790227531.0371215, + 1790227531.1350508, + 1790227531.2470996, + 1790227531.3685775, + 1790227531.5059853, + 1790227531.5996146, + 1790227531.6861498, + 1790227531.785178, + 1790227531.877523, + 1790227531.9677653, + 1790227532.0489514, + 1790227532.1326911, + 1790227532.2165148, + 1790227532.2984982, + 1790227532.379859, + 1790227532.4588218, + 1790227532.5577936, + 1790227532.6462724, + 1790227532.7341332, + 1790227532.8267999, + 1790227532.90531, + 1790227532.986996, + 1790227533.0678127, + 1790227533.1470735, + 1790227533.2331362, + 1790227533.3386207, + 1790227533.4278932, + 1790227533.5183897, + 1790227533.5932927, + 1790227533.677683, + 1790227533.7643533, + 1790227533.852425, + 1790227533.9443328, + 1790227534.025804, + 1790227534.1072567, + 1790227534.1962664, + 1790227534.2877214, + 1790227534.3720038, + 1790227534.44854, + 1790227534.5383956, + 1790227534.6334994, + 1790227534.7278666, + 1790227534.9222221, + 1790227535.0113025, + 1790227535.1025288, + 1790227535.1903117, + 1790227535.277507, + 1790227535.3615432, + 1790227535.4383147, + 1790227535.5210645, + 1790227535.6037014, + 1790227535.686692, + 1790227535.76839, + 1790227535.8529272, + 1790227535.934492, + 1790227536.014878, + 1790227536.0976644, + 1790227536.193928, + 1790227536.2742755, + 1790227536.3507862, + 1790227536.4280286, + 1790227536.502691, + 1790227536.587987, + 1790227536.6746082, + 1790227536.7609544, + 1790227536.8422816, + 1790227536.915135, + 1790227536.9941897, + 1790227537.0747118, + 1790227537.1507661, + 1790227537.2361054, + 1790227537.3144853, + 1790227537.3886843, + 1790227537.469389, + 1790227537.5504248, + 1790227537.631157, + 1790227537.7112107, + 1790227537.7911115, + 1790227537.8662753, + 1790227537.9482007, + 1790227538.0310352, + 1790227538.107439, + 1790227538.1873076, + 1790227538.2717993, + 1790227538.3625355, + 1790227538.4516363, + 1790227538.5598392, + 1790227538.640588, + 1790227538.7316434, + 1790227538.8149614, + 1790227538.8981047, + 1790227538.9766793, + 1790227539.0742805, + 1790227539.1648192, + 1790227539.2634487, + 1790227539.337403, + 1790227539.4231923, + 1790227539.5062175, + 1790227539.5985274, + 1790227539.6787531, + 1790227539.7714987, + 1790227539.8505456 + ], + "text": " supports operations such as insertion, deletion, and traversal. A binary search tree is a tree where each node has at most two children, and the left and right children are such that the left subtree contains all nodes with values less than the node's value, and the right subtree contains all nodes with values greater than the node's value. A binary search tree is a data structure that supports operations such as insertion, deletion, and traversal. A binary search tree is a tree where each node has at most two children, and the left and right children are such that the left subtree contains all nodes with values less than the", + "output_token_ids": [ + 20815, + 13127, + 2129, + 463, + 54525, + 25, + 62316, + 25, + 317, + 8709, + 46267, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 9905, + 2067, + 2440, + 6795, + 1044, + 511, + 2026, + 1841, + 4672, + 25, + 317, + 275, + 3887, + 317, + 2430, + 4672, + 599, + 2129, + 455, + 275, + 3887, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 3921, + 1489, + 275, + 6795, + 1045, + 2613, + 25, + 317, + 275, + 2430, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 9063, + 1489, + 275, + 6795, + 1045, + 2613, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 1870, + 6982, + 455, + 20815, + 13127, + 2129, + 463, + 54525, + 25, + 62316, + 25, + 317, + 8709, + 46267, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 9905, + 2067, + 2440, + 6795, + 1044, + 511, + 2026, + 1841, + 4672, + 25, + 317, + 275, + 3887, + 317, + 2430, + 4672, + 599, + 2129, + 455, + 275, + 3887, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 3921, + 1489, + 275 + ], + "ttft_s": 0.08704710006713867, + "decode_tok_per_s": 11.12002011753628, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 45, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "prompt": "plain_8", + "request_id": "4f9e9d60a6fe4786-11", + "session_id": "4f9e9d60a6fe4786", + "epoch": 0, + "prompt_chars": 38, + "prompt_tokens": 9, + "output_tokens": 128, + "submitted_unix": 1790227539.8508027, + "first_token_unix": 1790227539.9394245, + "last_token_unix": 1790227550.6523063, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227539.9394245, + 1790227540.0280204, + 1790227540.110109, + 1790227540.183301, + 1790227540.2599778, + 1790227540.34535, + 1790227540.4287336, + 1790227540.5125957, + 1790227540.600662, + 1790227540.6874962, + 1790227540.7819688, + 1790227540.887004, + 1790227540.979009, + 1790227541.0643258, + 1790227541.1444414, + 1790227541.2412765, + 1790227541.3207095, + 1790227541.3980744, + 1790227541.4809597, + 1790227541.5789206, + 1790227541.6634753, + 1790227541.7448292, + 1790227541.8228517, + 1790227541.8977368, + 1790227541.9731288, + 1790227542.058307, + 1790227542.1338499, + 1790227542.2165577, + 1790227542.2964444, + 1790227542.3890326, + 1790227542.4717007, + 1790227542.5539532, + 1790227542.6374578, + 1790227542.7177517, + 1790227542.8016515, + 1790227542.8805547, + 1790227542.9621844, + 1790227543.037114, + 1790227543.128809, + 1790227543.2135017, + 1790227543.294359, + 1790227543.3743255, + 1790227543.4549391, + 1790227543.5367763, + 1790227543.6214404, + 1790227543.6993632, + 1790227543.7795117, + 1790227543.8583786, + 1790227543.9387994, + 1790227544.021661, + 1790227544.1007962, + 1790227544.18658, + 1790227544.2718878, + 1790227544.3502817, + 1790227544.4358428, + 1790227544.5144212, + 1790227544.5953193, + 1790227544.6766965, + 1790227544.7579894, + 1790227544.8377903, + 1790227544.920493, + 1790227545.002398, + 1790227545.079955, + 1790227545.160816, + 1790227545.2452655, + 1790227545.3352704, + 1790227545.4252667, + 1790227545.5190525, + 1790227545.5946996, + 1790227545.6781342, + 1790227545.7658277, + 1790227545.8695774, + 1790227545.9919422, + 1790227546.0904489, + 1790227546.1697605, + 1790227546.2542093, + 1790227546.3409843, + 1790227546.4151647, + 1790227546.4969103, + 1790227546.577467, + 1790227546.656143, + 1790227546.7404337, + 1790227546.8179226, + 1790227546.8946981, + 1790227546.973713, + 1790227547.0433233, + 1790227547.125323, + 1790227547.2054803, + 1790227547.2888691, + 1790227547.370855, + 1790227547.4492912, + 1790227547.531287, + 1790227547.6113584, + 1790227547.6859689, + 1790227547.7701557, + 1790227547.8540354, + 1790227547.9268165, + 1790227548.0023446, + 1790227548.0843349, + 1790227548.1748888, + 1790227548.263154, + 1790227548.3456576, + 1790227548.4302967, + 1790227548.5372524, + 1790227548.7263198, + 1790227548.8107996, + 1790227548.8895211, + 1790227548.9642532, + 1790227549.0434816, + 1790227549.1220846, + 1790227549.2005532, + 1790227549.2867768, + 1790227549.3739414, + 1790227549.4550335, + 1790227549.5443702, + 1790227549.6309836, + 1790227549.7069182, + 1790227549.7859073, + 1790227549.8757632, + 1790227549.9574778, + 1790227550.0381165, + 1790227550.1295195, + 1790227550.2388115, + 1790227550.3262765, + 1790227550.4020185, + 1790227550.4871628, + 1790227550.561946, + 1790227550.6523063 + ], + "text": " 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty", + "output_token_ids": [ + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455 + ], + "ttft_s": 0.08862185478210449, + "decode_tok_per_s": 11.854886698960764, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 48, + "dropped_stale": 0, + "epoch": 0 + } + } + ], + "cancel": { + "request_id": "73378d2e50204c81-12", + "aborted_in_backend": true, + "producer_stopped": true, + "epoch_retired": 1, + "dropped_stale_events": 1, + "output_tokens_at_cancel": 9, + "session_epoch_now": 1, + "inflight_after": 0, + "nvml_device_used_before": null, + "nvml_device_used_after": null, + "note": "a cancelled request's KV blocks return to vLLM's pool, which is pre-allocated; the device counter is therefore expected NOT to fall. What must fall is the in-flight count, and no retired-epoch event may be delivered.", + "events_before_cancel": 8, + "events_after_cancel": [], + "clean": true + }, + "outcome": "completed" +} \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/accept_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/accept_report.json new file mode 100644 index 000000000..634f68e71 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/accept_report.json @@ -0,0 +1,7750 @@ +{ + "masked_plan": { + "admitted": true, + "backend": "vllm:cpu", + "selected_device": { + "device_id": "cpu", + "kind": "cpu", + "vendor": "amd", + "name": "AMD Ryzen AI 9 HX 370 w/ Radeon 890M", + "backend": "vllm:cpu", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 33184976896, + "compute_capability": null, + "weight_formats": [ + "compressed-tensors:int8", + "dense", + "gptq" + ], + "evidence": "B", + "reason": "", + "masked": false, + "extra": { + "n_physical": 12, + "n_logical": 24, + "ram_available_bytes": 30846758912, + "bf16": true + } + }, + "devices": [ + { + "device_id": "npu:amd", + "kind": "npu", + "vendor": "amd", + "name": "NPU Compute Accelerator Device", + "backend": "ort:vitisai", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 0, + "compute_capability": null, + "weight_formats": [ + "onnx:a16w8" + ], + "evidence": "B", + "reason": "An MCDM device; WSL2's GPU-PV forwards WDDM display adapters only, so it has no device node here and nothing installed inside WSL reaches it. It does work from a Windows-side process -- onnxruntime>=1.25 plus the WindowsWorkload.EP.AMD.VitisAI.Framework appx, loading onnxruntime_vitisai_ep.dll (not the RyzenAI *Light* EP beside it) with its own directory on the DLL search path, against an A16W8-quantized opset-21 graph. Measured 5.3x the CPU on a 1024x2048x2048 GEMM. See vllm_omni/edge/npu_ryzenai.py.", + "masked": false, + "extra": { + "source": "wsl-interop", + "probe_route": "ryzenai-ep-windows", + "host_pool_bytes": 33184976896, + "host_pool_available_bytes": 30846758912, + "worker_route": "ort-vitisai", + "worker_interpreter": "/mnt/c/Users/zhout/npu-ep/Scripts/python.exe", + "routes": [ + { + "name": "ort-vitisai", + "interpreter": "/mnt/c/Users/zhout/npu-ep/Scripts/python.exe", + "worker": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/edge/local/external/worker_ort.py", + "ep": "vitisai", + "is_windows": true, + "available": true, + "reason": "", + "extra": null + } + ], + "executes": "exported graphs, not checkpoints", + "dedicated_vram_bytes": 0 + } + }, + { + "device_id": "gpu_integrated:amd", + "kind": "gpu_integrated", + "vendor": "amd", + "name": "AMD Radeon(TM) 890M Graphics", + "backend": "ort:dml", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 0, + "compute_capability": null, + "weight_formats": [ + "onnx:fp16", + "onnx:fp32" + ], + "evidence": "B", + "reason": "No /dev/dri under WSL2, but reachable through DirectML over /dev/dxg: pip install torch-directml in its own venv (it pins torch==2.4.1). Measured 1.12 TFLOP/s fp32 and 5-7.4 GB/s -- below the CPU on both, so route work here only when the CPU is the thing you are trying to free.", + "masked": false, + "extra": { + "source": "wsl-interop", + "probe_route": "directml", + "host_pool_bytes": 33184976896, + "host_pool_available_bytes": 30846758912, + "worker_route": "ort-dml", + "worker_interpreter": "/mnt/c/Users/zhout/dml-ep/Scripts/python.exe", + "routes": [ + { + "name": "ort-dml", + "interpreter": "/mnt/c/Users/zhout/dml-ep/Scripts/python.exe", + "worker": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/edge/local/external/worker_ort.py", + "ep": "dml", + "is_windows": true, + "available": true, + "reason": "", + "extra": null + }, + { + "name": "torch-dml", + "interpreter": "/home/zhout/project/edge_infer/.venvs/dml/bin/python", + "worker": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/edge/local/external/worker_dml.py", + "ep": "dml", + "is_windows": false, + "available": true, + "reason": "", + "extra": null + } + ], + "executes": "exported graphs, not checkpoints", + "dedicated_vram_bytes": 0 + } + }, + { + "device_id": "cpu", + "kind": "cpu", + "vendor": "amd", + "name": "AMD Ryzen AI 9 HX 370 w/ Radeon 890M", + "backend": "vllm:cpu", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 33184976896, + "compute_capability": null, + "weight_formats": [ + "compressed-tensors:int8", + "dense", + "gptq" + ], + "evidence": "B", + "reason": "", + "masked": false, + "extra": { + "n_physical": 12, + "n_logical": 24, + "ram_available_bytes": 30846758912, + "bf16": true + } + } + ], + "stage": { + "stage_id": 0, + "model_stage": "spark2_5", + "execution_type": "LLM_AR", + "input_sources": [], + "final_output": true, + "final_output_type": "text", + "owns_tokenizer": true, + "state": "kv_cache", + "streaming_granularity": "token" + }, + "engine_kwargs": { + "max_model_len": 4096, + "max_num_seqs": 1, + "max_num_batched_tokens": 2048, + "enforce_eager": true, + "enable_prefix_caching": false, + "gpu_memory_utilization": 0.27, + "kv_cache_memory_bytes": 293601280, + "dtype": "bfloat16" + }, + "reservations": [ + { + "pool": "host_ram", + "purpose": "weights", + "bytes": 3415340496, + "lifetime": "session_weights", + "reclaimable": "no", + "evidence": "D", + "note": "2 safetensors shard(s), on-disk size", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "kv_cache", + "bytes": 293601280, + "lifetime": "session", + "reclaimable": "on_evict", + "evidence": "E", + "note": "flat budget at 1x context; 96 MiB if the backend accounts 21 sliding layers separately", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "activations", + "bytes": 101187584, + "lifetime": "request", + "reclaimable": "on_release", + "evidence": "E", + "note": "2048-token prefill chunk x 12 live tensors", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "backend_workspace", + "bytes": 536870912, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "attention scratch, driver/allocator context", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "load_transient", + "bytes": 1707670248, + "lifetime": "load", + "reclaimable": "on_release", + "evidence": "E", + "note": "freed once the weights are resident; peaks with the largest shard", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "external_reserve", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "memory this engine does not own on a shared pool", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "safety_margin", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "fragmentation and allocator slack", + "actual_upper_bound_bytes": null + } + ], + "reserved_total_bytes": 8202154168, + "kv_budget": { + "bytes_total": 293601280, + "bytes_total_hybrid": 100925440, + "bytes_per_token_flat": 57344, + "token_layers_hybrid": 39424, + "token_layers_flat": 114688, + "sliding_layers": 21, + "full_layers": 7, + "window": 512, + "linear_layers": 0, + "state_bytes_per_seq": 0, + "state_bytes_total": 0, + "summary": "280 MiB flat; 96 MiB if the backend accounts 21 sliding@512 layers separately (2.91x)", + "saving_vs_flat": 2.909090909090909 + }, + "refusals": [ + { + "code": "no_exported_graph", + "device_id": "npu:amd", + "message": "npu:amd executes exported graphs (['onnx:a16w8']), not checkpoints, so a whole autoregressive text session cannot be placed on it", + "remedy": "place a single stage there instead, via vllm_omni.edge.local.external.stage.plan_external_stage; the decode loop stays on the CPU or the GPU because both of these devices read the same system memory it does" + }, + { + "code": "no_exported_graph", + "device_id": "gpu_integrated:amd", + "message": "gpu_integrated:amd executes exported graphs (['onnx:fp16', 'onnx:fp32']), not checkpoints, so a whole autoregressive text session cannot be placed on it", + "remedy": "place a single stage there instead, via vllm_omni.edge.local.external.stage.plan_external_stage; the decode loop stays on the CPU or the GPU because both of these devices read the same system memory it does" + } + ], + "fallbacks": [ + "shorter --max-model-len reduces the KV reservation linearly" + ], + "request_limits": { + "max_model_len": 4096, + "max_num_seqs": 1, + "max_num_batched_tokens": 2048 + }, + "manifest": { + "model_dir": "/home/zhout/project/edge_infer/models/Spark-X2.5-1.7B-BF16", + "model_type": "spark2_5", + "architectures": [ + "Spark2_5ForCausalLM" + ], + "dtype": "bfloat16", + "weight_format": "dense", + "quantization": null, + "config_sha256": "16aa5d3619d0d893e7157f2499675430844eb7b383c80ecc1b3e8e8928a75d52", + "tokenizer_sha256": "72b88cd03593f92c7307ac23653df70ca383df15357fca03f6c5c0b3b3ea8f17", + "tokenizer_files": [ + "tokenizer.json", + "tokenizer_config.json", + "special_tokens_map.json", + "chat_template.jinja", + "vocab.json", + "merges.txt", + "generation_config.json" + ], + "weight_files": [ + "model-00001-of-00002.safetensors", + "model-00002-of-00002.safetensors" + ], + "weight_bytes": 3415340496, + "weight_sha256": null, + "revision": null, + "runtime": { + "python": "3.12.13", + "platform": "Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.43", + "torch": "2.13.0+cpu", + "vllm": "0.28.0", + "vllm_omni": "0.29.0rc2.dev71+g00510ce38.d20260922", + "vllm_omni_file": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/__init__.py", + "vllm_file": "/home/zhout/project/edge_infer/.venvs/omni-cpu/lib/python3.12/site-packages/vllm/__init__.py", + "checkouts": { + "/home/zhout/project/edge_infer/vllm-omni-edge": "8978302a1b7b86f17f45d530c544fb87bec8990d-dirty", + "/home/zhout/project/edge_infer": "758b3af238b19e2c2abc668f23a767bb835a4a22-dirty" + } + }, + "notes": [ + "weights identified by name+size, not content; pass digest_weights=True to hash them" + ], + "artifact_id": "c777e48f9e300714" + }, + "notes": [ + "activations, workspace and the load transient are estimates (E); engine.py records the measured peak against them after the load" + ] + }, + "masked_outcome": "admitted", + "started_unix": 1790225403.8709378, + "argv": [ + "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/edge/local/__main__.py", + "accept", + "--model", + "/home/zhout/project/edge_infer/models/Spark-X2.5-1.7B-BF16", + "--max-model-len", + "4096", + "--max-tokens", + "128", + "--json", + "benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/accept_report.json" + ], + "acceptance": { + "prompts": 12, + "min_tokens_required": 128, + "all_reached_min": true, + "cancel_clean": true + }, + "plan": { + "admitted": true, + "backend": "vllm:cpu", + "selected_device": { + "device_id": "cpu", + "kind": "cpu", + "vendor": "amd", + "name": "AMD Ryzen AI 9 HX 370 w/ Radeon 890M", + "backend": "vllm:cpu", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 33184976896, + "compute_capability": null, + "weight_formats": [ + "compressed-tensors:int8", + "dense", + "gptq" + ], + "evidence": "B", + "reason": "", + "masked": false, + "extra": { + "n_physical": 12, + "n_logical": 24, + "ram_available_bytes": 30842359808, + "bf16": true + } + }, + "devices": [ + { + "device_id": "npu:amd", + "kind": "npu", + "vendor": "amd", + "name": "NPU Compute Accelerator Device", + "backend": "ort:vitisai", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 0, + "compute_capability": null, + "weight_formats": [ + "onnx:a16w8" + ], + "evidence": "B", + "reason": "An MCDM device; WSL2's GPU-PV forwards WDDM display adapters only, so it has no device node here and nothing installed inside WSL reaches it. It does work from a Windows-side process -- onnxruntime>=1.25 plus the WindowsWorkload.EP.AMD.VitisAI.Framework appx, loading onnxruntime_vitisai_ep.dll (not the RyzenAI *Light* EP beside it) with its own directory on the DLL search path, against an A16W8-quantized opset-21 graph. Measured 5.3x the CPU on a 1024x2048x2048 GEMM. See vllm_omni/edge/npu_ryzenai.py.", + "masked": false, + "extra": { + "source": "wsl-interop", + "probe_route": "ryzenai-ep-windows", + "host_pool_bytes": 33184976896, + "host_pool_available_bytes": 30842359808, + "worker_route": "ort-vitisai", + "worker_interpreter": "/mnt/c/Users/zhout/npu-ep/Scripts/python.exe", + "routes": [ + { + "name": "ort-vitisai", + "interpreter": "/mnt/c/Users/zhout/npu-ep/Scripts/python.exe", + "worker": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/edge/local/external/worker_ort.py", + "ep": "vitisai", + "is_windows": true, + "available": true, + "reason": "", + "extra": null + } + ], + "executes": "exported graphs, not checkpoints", + "dedicated_vram_bytes": 0 + } + }, + { + "device_id": "gpu_integrated:amd", + "kind": "gpu_integrated", + "vendor": "amd", + "name": "AMD Radeon(TM) 890M Graphics", + "backend": "ort:dml", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 0, + "compute_capability": null, + "weight_formats": [ + "onnx:fp16", + "onnx:fp32" + ], + "evidence": "B", + "reason": "No /dev/dri under WSL2, but reachable through DirectML over /dev/dxg: pip install torch-directml in its own venv (it pins torch==2.4.1). Measured 1.12 TFLOP/s fp32 and 5-7.4 GB/s -- below the CPU on both, so route work here only when the CPU is the thing you are trying to free.", + "masked": false, + "extra": { + "source": "wsl-interop", + "probe_route": "directml", + "host_pool_bytes": 33184976896, + "host_pool_available_bytes": 30842359808, + "worker_route": "ort-dml", + "worker_interpreter": "/mnt/c/Users/zhout/dml-ep/Scripts/python.exe", + "routes": [ + { + "name": "ort-dml", + "interpreter": "/mnt/c/Users/zhout/dml-ep/Scripts/python.exe", + "worker": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/edge/local/external/worker_ort.py", + "ep": "dml", + "is_windows": true, + "available": true, + "reason": "", + "extra": null + }, + { + "name": "torch-dml", + "interpreter": "/home/zhout/project/edge_infer/.venvs/dml/bin/python", + "worker": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/edge/local/external/worker_dml.py", + "ep": "dml", + "is_windows": false, + "available": true, + "reason": "", + "extra": null + } + ], + "executes": "exported graphs, not checkpoints", + "dedicated_vram_bytes": 0 + } + }, + { + "device_id": "cpu", + "kind": "cpu", + "vendor": "amd", + "name": "AMD Ryzen AI 9 HX 370 w/ Radeon 890M", + "backend": "vllm:cpu", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 33184976896, + "compute_capability": null, + "weight_formats": [ + "compressed-tensors:int8", + "dense", + "gptq" + ], + "evidence": "B", + "reason": "", + "masked": false, + "extra": { + "n_physical": 12, + "n_logical": 24, + "ram_available_bytes": 30842359808, + "bf16": true + } + } + ], + "stage": { + "stage_id": 0, + "model_stage": "spark2_5", + "execution_type": "LLM_AR", + "input_sources": [], + "final_output": true, + "final_output_type": "text", + "owns_tokenizer": true, + "state": "kv_cache", + "streaming_granularity": "token" + }, + "engine_kwargs": { + "max_model_len": 4096, + "max_num_seqs": 1, + "max_num_batched_tokens": 2048, + "enforce_eager": true, + "enable_prefix_caching": false, + "gpu_memory_utilization": 0.27, + "kv_cache_memory_bytes": 293601280, + "dtype": "bfloat16" + }, + "reservations": [ + { + "pool": "host_ram", + "purpose": "weights", + "bytes": 3415340496, + "lifetime": "session_weights", + "reclaimable": "no", + "evidence": "D", + "note": "2 safetensors shard(s), on-disk size; the load moved +6.45 GiB of process-tree RSS, which bounds weights + backend context together and is not an attribution to the weights alone", + "actual_upper_bound_bytes": 6926823424 + }, + { + "pool": "host_ram", + "purpose": "kv_cache", + "bytes": 293601280, + "lifetime": "session", + "reclaimable": "on_evict", + "evidence": "E", + "note": "flat budget at 1x context; 96 MiB if the backend accounts 21 sliding layers separately", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "activations", + "bytes": 101187584, + "lifetime": "request", + "reclaimable": "on_release", + "evidence": "E", + "note": "2048-token prefill chunk x 12 live tensors", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "backend_workspace", + "bytes": 536870912, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "attention scratch, driver/allocator context", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "load_transient", + "bytes": 1707670248, + "lifetime": "load", + "reclaimable": "on_release", + "evidence": "E", + "note": "freed once the weights are resident; peaks with the largest shard", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "external_reserve", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "memory this engine does not own on a shared pool", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "safety_margin", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "fragmentation and allocator slack", + "actual_upper_bound_bytes": null + } + ], + "reserved_total_bytes": 8202154168, + "kv_budget": { + "bytes_total": 293601280, + "bytes_total_hybrid": 100925440, + "bytes_per_token_flat": 57344, + "token_layers_hybrid": 39424, + "token_layers_flat": 114688, + "sliding_layers": 21, + "full_layers": 7, + "window": 512, + "linear_layers": 0, + "state_bytes_per_seq": 0, + "state_bytes_total": 0, + "summary": "280 MiB flat; 96 MiB if the backend accounts 21 sliding@512 layers separately (2.91x)", + "saving_vs_flat": 2.909090909090909 + }, + "refusals": [ + { + "code": "no_exported_graph", + "device_id": "npu:amd", + "message": "npu:amd executes exported graphs (['onnx:a16w8']), not checkpoints, so a whole autoregressive text session cannot be placed on it", + "remedy": "place a single stage there instead, via vllm_omni.edge.local.external.stage.plan_external_stage; the decode loop stays on the CPU or the GPU because both of these devices read the same system memory it does" + }, + { + "code": "no_exported_graph", + "device_id": "gpu_integrated:amd", + "message": "gpu_integrated:amd executes exported graphs (['onnx:fp16', 'onnx:fp32']), not checkpoints, so a whole autoregressive text session cannot be placed on it", + "remedy": "place a single stage there instead, via vllm_omni.edge.local.external.stage.plan_external_stage; the decode loop stays on the CPU or the GPU because both of these devices read the same system memory it does" + } + ], + "fallbacks": [ + "shorter --max-model-len reduces the KV reservation linearly" + ], + "request_limits": { + "max_model_len": 4096, + "max_num_seqs": 1, + "max_num_batched_tokens": 2048 + }, + "manifest": { + "model_dir": "/home/zhout/project/edge_infer/models/Spark-X2.5-1.7B-BF16", + "model_type": "spark2_5", + "architectures": [ + "Spark2_5ForCausalLM" + ], + "dtype": "bfloat16", + "weight_format": "dense", + "quantization": null, + "config_sha256": "16aa5d3619d0d893e7157f2499675430844eb7b383c80ecc1b3e8e8928a75d52", + "tokenizer_sha256": "72b88cd03593f92c7307ac23653df70ca383df15357fca03f6c5c0b3b3ea8f17", + "tokenizer_files": [ + "tokenizer.json", + "tokenizer_config.json", + "special_tokens_map.json", + "chat_template.jinja", + "vocab.json", + "merges.txt", + "generation_config.json" + ], + "weight_files": [ + "model-00001-of-00002.safetensors", + "model-00002-of-00002.safetensors" + ], + "weight_bytes": 3415340496, + "weight_sha256": null, + "revision": null, + "runtime": { + "python": "3.12.13", + "platform": "Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.43", + "torch": "2.13.0+cpu", + "vllm": "0.28.0", + "vllm_omni": "0.29.0rc2.dev71+g00510ce38.d20260922", + "vllm_omni_file": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/__init__.py", + "vllm_file": "/home/zhout/project/edge_infer/.venvs/omni-cpu/lib/python3.12/site-packages/vllm/__init__.py", + "checkouts": { + "/home/zhout/project/edge_infer/vllm-omni-edge": "8978302a1b7b86f17f45d530c544fb87bec8990d-dirty", + "/home/zhout/project/edge_infer": "758b3af238b19e2c2abc668f23a767bb835a4a22-dirty" + } + }, + "notes": [ + "weights identified by name+size, not content; pass digest_weights=True to hash them" + ], + "artifact_id": "c777e48f9e300714" + }, + "notes": [ + "activations, workspace and the load transient are estimates (E); engine.py records the measured peak against them after the load" + ] + }, + "placement": { + "planned_device": "cpu", + "planned_backend": "vllm:cpu", + "configured": { + "device": "cpu", + "device_type": "cpu", + "dtype": "torch.bfloat16", + "quantization": null, + "max_model_len": 4096, + "enforce_eager": true, + "kv_cache_memory_bytes": 293601280, + "num_gpu_blocks": 160, + "block_size": 128 + }, + "observed": { + "nvml_device_used_delta_at_load": null, + "tree_rss_delta_at_load": 6926823424, + "per_process_gpu_attribution": null, + "per_process_gpu_attribution_reason": "NVML per-process query unavailable on this wsl2 host: No module named 'pynvml'. The load delta is a whole-card measurement." + }, + "host_compat": null + }, + "usage": { + "load_seconds": 19.8754259130219, + "reservations": [ + { + "pool": "host_ram", + "purpose": "weights", + "bytes": 3415340496, + "lifetime": "session_weights", + "reclaimable": "no", + "evidence": "D", + "note": "2 safetensors shard(s), on-disk size; the load moved +6.45 GiB of process-tree RSS, which bounds weights + backend context together and is not an attribution to the weights alone", + "actual_upper_bound_bytes": 6926823424, + "upper_bound_over_budget": 2.0281501748105644 + }, + { + "pool": "host_ram", + "purpose": "kv_cache", + "bytes": 293601280, + "lifetime": "session", + "reclaimable": "on_evict", + "evidence": "E", + "note": "flat budget at 1x context; 96 MiB if the backend accounts 21 sliding layers separately", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + }, + { + "pool": "host_ram", + "purpose": "activations", + "bytes": 101187584, + "lifetime": "request", + "reclaimable": "on_release", + "evidence": "E", + "note": "2048-token prefill chunk x 12 live tensors", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + }, + { + "pool": "host_ram", + "purpose": "backend_workspace", + "bytes": 536870912, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "attention scratch, driver/allocator context", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + }, + { + "pool": "host_ram", + "purpose": "load_transient", + "bytes": 1707670248, + "lifetime": "load", + "reclaimable": "on_release", + "evidence": "E", + "note": "freed once the weights are resident; peaks with the largest shard", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + }, + { + "pool": "host_ram", + "purpose": "external_reserve", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "memory this engine does not own on a shared pool", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + }, + { + "pool": "host_ram", + "purpose": "safety_margin", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "fragmentation and allocator slack", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + } + ], + "budgeted_peak_bytes": 8202154168, + "measured_peak": { + "pool": "host_ram", + "counter": "tree_rss", + "baseline_bytes": 807600128, + "peak_bytes": 7974674432, + "attributable_peak_bytes": 7167074304, + "budgeted_peak_bytes": 8202154168, + "budget_over_measured": 1.1444215338220107, + "admitted_without_oom": true, + "caveats": "sampled every 0.25 s, so the peak is a lower bound; the counter is shared with other processes and the baseline subtraction only removes what was there before the load, not what arrived during it. A budget above the measured peak is the intended outcome -- this budget is a safe upper bound for admission, not a prediction." + }, + "load_memory": { + "before": { + "unix": 1790225256.9148934, + "nvml_device_used": null, + "nvml_device_total": null, + "tree_rss": 807600128, + "tree_pss": 806197248, + "host_available": 30831378432, + "host_total": 33184976896 + }, + "after": { + "unix": 1790225276.8839703, + "nvml_device_used": null, + "nvml_device_total": null, + "tree_rss": 7734423552, + "tree_pss": 7199729664, + "host_available": 24271728640, + "host_total": 33184976896 + }, + "nvml_device_used_delta": null, + "tree_rss_delta": 6926823424, + "peaks_during_load": { + "samples": 64, + "interval_s": 0.25, + "note": "peaks are lower bounds: anything shorter than interval_s is missed. nvml_device_used is the whole card including other processes; tree_pss includes a share of file-backed pages. These three counters are different accountings and must not be summed.", + "nvml_device_used_peak": null, + "nvml_device_used_min": null, + "tree_rss_peak": 7694090240, + "tree_pss_peak": 7145121792, + "host_available_min": 24271728640 + } + }, + "peaks": { + "samples": 378, + "interval_s": 0.25, + "note": "peaks are lower bounds: anything shorter than interval_s is missed. nvml_device_used is the whole card including other processes; tree_pss includes a share of file-backed pages. These three counters are different accountings and must not be summed.", + "nvml_device_used_peak": null, + "nvml_device_used_min": null, + "tree_rss_peak": 7974674432, + "tree_pss_peak": 7439935488, + "host_available_min": 24138485760 + }, + "requests": [ + { + "request_id": "877554b0634b412b-0", + "session_id": "877554b0634b412b", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 128, + "submitted_unix": 1790225276.8842108, + "first_token_unix": 1790225277.2668934, + "last_token_unix": 1790225287.9031086, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225277.2668934, + 1790225277.3620434, + 1790225277.4505923, + 1790225277.5444877, + 1790225277.650876, + 1790225277.7417953, + 1790225277.8313162, + 1790225277.9215117, + 1790225278.016929, + 1790225278.101839, + 1790225278.1883442, + 1790225278.2837837, + 1790225278.3694649, + 1790225278.4816954, + 1790225278.5677514, + 1790225278.6506035, + 1790225278.7407615, + 1790225278.8237865, + 1790225278.9046946, + 1790225278.9857438, + 1790225279.064911, + 1790225279.1438496, + 1790225279.2256806, + 1790225279.3112571, + 1790225279.3885322, + 1790225279.4664347, + 1790225279.5481427, + 1790225279.63509, + 1790225279.7148046, + 1790225279.797289, + 1790225279.8827167, + 1790225279.9760416, + 1790225280.0652816, + 1790225280.1625621, + 1790225280.2481723, + 1790225280.3341043, + 1790225280.418472, + 1790225280.5130465, + 1790225280.596263, + 1790225280.6778061, + 1790225280.7768602, + 1790225280.8746243, + 1790225280.9709778, + 1790225281.0604193, + 1790225281.142038, + 1790225281.227805, + 1790225281.3101563, + 1790225281.4028792, + 1790225281.4883785, + 1790225281.583888, + 1790225281.6822457, + 1790225281.7737381, + 1790225281.8590136, + 1790225281.9475253, + 1790225282.043742, + 1790225282.128831, + 1790225282.217414, + 1790225282.2943544, + 1790225282.3773713, + 1790225282.462875, + 1790225282.5501804, + 1790225282.6338768, + 1790225282.7149305, + 1790225282.8306568, + 1790225282.9202201, + 1790225282.9999192, + 1790225283.0793087, + 1790225283.1646085, + 1790225283.241975, + 1790225283.3250842, + 1790225283.3997343, + 1790225283.4808917, + 1790225283.5665846, + 1790225283.6584046, + 1790225283.745623, + 1790225283.8246746, + 1790225283.899948, + 1790225283.9821959, + 1790225284.0661218, + 1790225284.146425, + 1790225284.229545, + 1790225284.3046153, + 1790225284.3930404, + 1790225284.4804997, + 1790225284.5602171, + 1790225284.6395836, + 1790225284.7227676, + 1790225284.8109322, + 1790225284.8961933, + 1790225284.9882567, + 1790225285.0655754, + 1790225285.1429675, + 1790225285.219736, + 1790225285.2960758, + 1790225285.3683453, + 1790225285.4398453, + 1790225285.509953, + 1790225285.5827513, + 1790225285.6518948, + 1790225285.7233288, + 1790225285.7982109, + 1790225285.8839154, + 1790225285.9573784, + 1790225286.0336685, + 1790225286.1147537, + 1790225286.1855793, + 1790225286.2666032, + 1790225286.3336182, + 1790225286.4131265, + 1790225286.4951675, + 1790225286.5642028, + 1790225286.6466858, + 1790225286.7224362, + 1790225286.7985315, + 1790225286.8784122, + 1790225286.9486241, + 1790225287.0230753, + 1790225287.1041095, + 1790225287.179935, + 1790225287.2608905, + 1790225287.349727, + 1790225287.4185495, + 1790225287.4886749, + 1790225287.5621488, + 1790225287.6467168, + 1790225287.7208629, + 1790225287.7986975, + 1790225287.9031086 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris\n\nWait, the user's message is: \"What is the capital of France? Answer in one word.\" I need to provide the answer. The answer is \"Paris\". I should output just that word.\n\nBut let's see the instruction: \"Answer in one word.\" So I should respond", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 198, + 198, + 34542, + 25, + 275, + 3754, + 1045, + 5974, + 390, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 373, + 1633, + 312, + 4553, + 275, + 6787, + 27, + 614, + 6787, + 390, + 518, + 110949, + 4348, + 373, + 2029, + 6340, + 1839, + 455, + 5240, + 27, + 198, + 198, + 4023, + 1553, + 1045, + 2261, + 275, + 23220, + 39, + 518, + 47648, + 304, + 1135, + 5240, + 1848, + 4358, + 373, + 2029, + 9666 + ], + "ttft_s": 0.38268256187438965, + "decode_tok_per_s": 11.940337563033045 + }, + { + "request_id": "085d086351314dcc-1", + "session_id": "085d086351314dcc", + "epoch": 0, + "prompt_chars": 595, + "prompt_tokens": 137, + "output_tokens": 128, + "submitted_unix": 1790225287.903425, + "first_token_unix": 1790225288.361746, + "last_token_unix": 1790225297.9576578, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225288.361746, + 1790225288.4379697, + 1790225288.5158093, + 1790225288.6008742, + 1790225288.6704032, + 1790225288.7452345, + 1790225288.8272762, + 1790225288.9017186, + 1790225288.9752464, + 1790225289.046115, + 1790225289.1248384, + 1790225289.2028258, + 1790225289.2808027, + 1790225289.3577511, + 1790225289.4302897, + 1790225289.5005028, + 1790225289.5691748, + 1790225289.6436133, + 1790225289.7280679, + 1790225289.8053331, + 1790225289.884248, + 1790225289.9543648, + 1790225290.0345151, + 1790225290.1141806, + 1790225290.19629, + 1790225290.2719016, + 1790225290.350088, + 1790225290.4234762, + 1790225290.49737, + 1790225290.5679991, + 1790225290.6422288, + 1790225290.7094157, + 1790225290.7873828, + 1790225290.8645082, + 1790225290.940066, + 1790225291.0220385, + 1790225291.0925012, + 1790225291.164219, + 1790225291.2315207, + 1790225291.3099349, + 1790225291.3805745, + 1790225291.4567099, + 1790225291.5302298, + 1790225291.6018817, + 1790225291.6752295, + 1790225291.7477703, + 1790225291.8275406, + 1790225291.9073894, + 1790225291.9842186, + 1790225292.0621705, + 1790225292.1383176, + 1790225292.2138307, + 1790225292.2914147, + 1790225292.3647187, + 1790225292.436904, + 1790225292.511302, + 1790225292.5862885, + 1790225292.6602, + 1790225292.7325337, + 1790225292.8039703, + 1790225292.8858864, + 1790225292.9589825, + 1790225293.0322158, + 1790225293.110514, + 1790225293.1958804, + 1790225293.2720404, + 1790225293.3511214, + 1790225293.4272196, + 1790225293.4989717, + 1790225293.5896266, + 1790225293.6630173, + 1790225293.733618, + 1790225293.8049297, + 1790225293.8830204, + 1790225293.9557052, + 1790225294.0263257, + 1790225294.1013389, + 1790225294.1733952, + 1790225294.2398221, + 1790225294.3211522, + 1790225294.3957427, + 1790225294.4761178, + 1790225294.549684, + 1790225294.6235702, + 1790225294.701572, + 1790225294.7692604, + 1790225294.8505385, + 1790225294.9194527, + 1790225294.996781, + 1790225295.0764785, + 1790225295.1538281, + 1790225295.2340684, + 1790225295.3044662, + 1790225295.3778203, + 1790225295.4472497, + 1790225295.5216994, + 1790225295.608577, + 1790225295.6854758, + 1790225295.7573948, + 1790225295.8323328, + 1790225295.9080262, + 1790225295.988295, + 1790225296.0687118, + 1790225296.1422863, + 1790225296.2112179, + 1790225296.287932, + 1790225296.362069, + 1790225296.4439206, + 1790225296.5258505, + 1790225296.6052363, + 1790225296.6805515, + 1790225296.7532651, + 1790225296.8324473, + 1790225296.9043198, + 1790225296.982094, + 1790225297.0580945, + 1790225297.1339536, + 1790225297.2080395, + 1790225297.2792764, + 1790225297.349337, + 1790225297.431278, + 1790225297.500632, + 1790225297.5824068, + 1790225297.6602929, + 1790225297.7352016, + 1790225297.809745, + 1790225297.8861036, + 1790225297.9576578 + ], + "text": "The user wants to know the weather in Shenzhen right now in Celsius. I have a function available called `get_weather` that can retrieve weather for a city. Let me call it with the city \"Shenzhen\" and unit \"celsius\".get_weathercityShenzhenunitcelsius", + "output_token_ids": [ + 1046, + 3754, + 13025, + 312, + 1843, + 275, + 14510, + 304, + 75040, + 103, + 872, + 2430, + 2343, + 304, + 423, + 108364, + 27, + 373, + 760, + 259, + 2122, + 4234, + 4848, + 2561, + 913, + 76, + 64301, + 77, + 455, + 764, + 41002, + 14510, + 396, + 259, + 6594, + 27, + 9619, + 713, + 2426, + 488, + 478, + 275, + 6594, + 518, + 64, + 872, + 103, + 872, + 15, + 317, + 9261, + 518, + 8281, + 4348, + 4, + 130977, + 913, + 76, + 64301, + 130980, + 58593, + 130981, + 130982, + 64, + 872, + 103, + 872, + 130983, + 130980, + 11220, + 130981, + 130982, + 8281, + 130983, + 130984, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1 + ], + "ttft_s": 0.45832109451293945, + "decode_tok_per_s": 13.2348028435876 + }, + { + "request_id": "a4897c53e944430a-2", + "session_id": "a4897c53e944430a", + "epoch": 0, + "prompt_chars": 6648, + "prompt_tokens": 2465, + "output_tokens": 128, + "submitted_unix": 1790225297.9579036, + "first_token_unix": 1790225303.9865458, + "last_token_unix": 1790225314.6944416, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225303.9865458, + 1790225304.100052, + 1790225304.2033272, + 1790225304.438566, + 1790225304.5279987, + 1790225304.6147346, + 1790225304.7108085, + 1790225304.7907553, + 1790225304.8704383, + 1790225304.9554126, + 1790225305.0375028, + 1790225305.1165903, + 1790225305.1965072, + 1790225305.2827296, + 1790225305.3617587, + 1790225305.4377959, + 1790225305.534804, + 1790225305.6227555, + 1790225305.7111123, + 1790225305.7960138, + 1790225305.8824744, + 1790225305.9618058, + 1790225306.0471501, + 1790225306.1328251, + 1790225306.2080605, + 1790225306.2842605, + 1790225306.3631556, + 1790225306.4391408, + 1790225306.5235705, + 1790225306.6093385, + 1790225306.6934855, + 1790225306.7748158, + 1790225306.8662596, + 1790225306.9507432, + 1790225307.0282793, + 1790225307.1123774, + 1790225307.1910715, + 1790225307.26309, + 1790225307.347476, + 1790225307.4367673, + 1790225307.5268877, + 1790225307.605183, + 1790225307.689563, + 1790225307.7761085, + 1790225307.859252, + 1790225307.9448597, + 1790225308.0200984, + 1790225308.1014385, + 1790225308.1799626, + 1790225308.2614517, + 1790225308.3415651, + 1790225308.422627, + 1790225308.504111, + 1790225308.5896192, + 1790225308.667367, + 1790225308.7432318, + 1790225308.8235927, + 1790225308.8988883, + 1790225308.9776816, + 1790225309.0607555, + 1790225309.1366234, + 1790225309.213372, + 1790225309.3070571, + 1790225309.3957398, + 1790225309.47287, + 1790225309.5517232, + 1790225309.626779, + 1790225309.701416, + 1790225309.7792587, + 1790225309.8695064, + 1790225309.959209, + 1790225310.0564284, + 1790225310.151057, + 1790225310.2454324, + 1790225310.3315427, + 1790225310.4129913, + 1790225310.492643, + 1790225310.5619326, + 1790225310.643703, + 1790225310.7212265, + 1790225310.8002884, + 1790225310.8770852, + 1790225310.953779, + 1790225311.02954, + 1790225311.1094694, + 1790225311.185819, + 1790225311.2661366, + 1790225311.3485696, + 1790225311.4332194, + 1790225311.5099695, + 1790225311.5888224, + 1790225311.6653342, + 1790225311.742981, + 1790225311.818717, + 1790225311.8971612, + 1790225311.977892, + 1790225312.056619, + 1790225312.132119, + 1790225312.2082248, + 1790225312.2907963, + 1790225312.3684056, + 1790225312.4517825, + 1790225312.526558, + 1790225312.6074498, + 1790225312.6865098, + 1790225312.7637136, + 1790225312.8404324, + 1790225312.9195986, + 1790225313.000107, + 1790225313.074037, + 1790225313.1550376, + 1790225313.2286904, + 1790225313.3079355, + 1790225313.384814, + 1790225313.4711192, + 1790225313.5458887, + 1790225313.6270149, + 1790225313.709776, + 1790225313.7923443, + 1790225313.890715, + 1790225314.0423315, + 1790225314.1360815, + 1790225314.2332695, + 1790225314.330358, + 1790225314.4268932, + 1790225314.5149403, + 1790225314.5966113, + 1790225314.6944416 + ], + "text": "We are given an inventory listing with item codes for warehouse districts 1 through 120. The question asks: \"What is the code for warehouse district 73?\" We need to find the code corresponding to district 73.\n\nLooking at the list, we see:\nItem 1: district 1 -> 1007\nItem 2: district 2 -> 1014\n...\nWe need to find the entry for district 73.\n\nLet's list the districts and their codes in order. The list is given as:\nItem 1: 1", + "output_token_ids": [ + 3066, + 599, + 4114, + 300, + 31946, + 35404, + 478, + 7006, + 27149, + 396, + 56774, + 49408, + 220, + 30, + 1953, + 220, + 30, + 31, + 29, + 27, + 614, + 5565, + 27179, + 39, + 518, + 4766, + 390, + 275, + 5760, + 396, + 56774, + 20882, + 220, + 36, + 32, + 5171, + 1994, + 1633, + 312, + 2432, + 275, + 5760, + 12610, + 312, + 20882, + 220, + 36, + 32, + 27, + 198, + 198, + 48992, + 511, + 275, + 2631, + 25, + 679, + 2261, + 39, + 198, + 5369, + 220, + 30, + 39, + 20882, + 220, + 30, + 3192, + 220, + 30, + 29, + 29, + 36, + 198, + 5369, + 220, + 31, + 39, + 20882, + 220, + 31, + 3192, + 220, + 30, + 29, + 30, + 33, + 198, + 2097, + 198, + 3066, + 1633, + 312, + 2432, + 275, + 11411, + 396, + 20882, + 220, + 36, + 32, + 27, + 198, + 198, + 13104, + 1045, + 2631, + 275, + 49408, + 317, + 1140, + 27149, + 304, + 3310, + 27, + 614, + 2631, + 390, + 4114, + 463, + 39, + 198, + 5369, + 220, + 30, + 39, + 220, + 30 + ], + "ttft_s": 6.028642177581787, + "decode_tok_per_s": 11.860406834049657 + }, + { + "request_id": "639977d6bce6475d-3", + "session_id": "639977d6bce6475d", + "epoch": 0, + "prompt_chars": 27, + "prompt_tokens": 5, + "output_tokens": 128, + "submitted_unix": 1790225314.6947782, + "first_token_unix": 1790225314.7826133, + "last_token_unix": 1790225324.6488914, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225314.7826133, + 1790225314.8651793, + 1790225314.9361339, + 1790225315.0125377, + 1790225315.085919, + 1790225315.1628058, + 1790225315.241721, + 1790225315.3171365, + 1790225315.3892152, + 1790225315.4695153, + 1790225315.5462732, + 1790225315.6279862, + 1790225315.700452, + 1790225315.780388, + 1790225315.856267, + 1790225315.941063, + 1790225316.0152864, + 1790225316.0982718, + 1790225316.1737278, + 1790225316.2473214, + 1790225316.3249779, + 1790225316.4066327, + 1790225316.484965, + 1790225316.567957, + 1790225316.6510003, + 1790225316.7285845, + 1790225316.8098824, + 1790225316.8917198, + 1790225316.9731224, + 1790225317.0542474, + 1790225317.131291, + 1790225317.2091932, + 1790225317.289938, + 1790225317.3617392, + 1790225317.4385123, + 1790225317.5174353, + 1790225317.5986621, + 1790225317.6743557, + 1790225317.748918, + 1790225317.825997, + 1790225317.9013276, + 1790225317.9777904, + 1790225318.0567253, + 1790225318.132452, + 1790225318.2090316, + 1790225318.2800581, + 1790225318.3593132, + 1790225318.4408875, + 1790225318.519794, + 1790225318.5959404, + 1790225318.6704795, + 1790225318.7468567, + 1790225318.8223636, + 1790225318.8997924, + 1790225318.9750082, + 1790225319.056178, + 1790225319.1314943, + 1790225319.2094696, + 1790225319.280548, + 1790225319.359796, + 1790225319.4354393, + 1790225319.5124562, + 1790225319.5874085, + 1790225319.6619341, + 1790225319.7406714, + 1790225319.8141592, + 1790225319.8847885, + 1790225319.9657376, + 1790225320.041471, + 1790225320.1190917, + 1790225320.1914132, + 1790225320.266822, + 1790225320.3427382, + 1790225320.4236162, + 1790225320.5065365, + 1790225320.593096, + 1790225320.6776626, + 1790225320.7593691, + 1790225320.845189, + 1790225320.925149, + 1790225321.0102537, + 1790225321.0887625, + 1790225321.1691341, + 1790225321.2491295, + 1790225321.3274374, + 1790225321.403966, + 1790225321.482221, + 1790225321.5505567, + 1790225321.6323378, + 1790225321.7094147, + 1790225321.7845702, + 1790225321.8596241, + 1790225321.941687, + 1790225322.0172093, + 1790225322.091702, + 1790225322.1663225, + 1790225322.2431602, + 1790225322.3202279, + 1790225322.3978179, + 1790225322.4778683, + 1790225322.5612748, + 1790225322.6339443, + 1790225322.7035463, + 1790225322.7806187, + 1790225322.8560157, + 1790225322.9436634, + 1790225323.028201, + 1790225323.1020985, + 1790225323.1773586, + 1790225323.247644, + 1790225323.325924, + 1790225323.4019616, + 1790225323.4868197, + 1790225323.5706515, + 1790225323.6451216, + 1790225323.7220173, + 1790225323.7978396, + 1790225323.871113, + 1790225323.9567907, + 1790225324.03575, + 1790225324.1063068, + 1790225324.183688, + 1790225324.2630467, + 1790225324.3372598, + 1790225324.4056144, + 1790225324.4845712, + 1790225324.5690308, + 1790225324.6488914 + ], + "text": " the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of", + "output_token_ids": [ + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314 + ], + "ttft_s": 0.08783507347106934, + "decode_tok_per_s": 12.872128455322667 + }, + { + "request_id": "25ad8c35985849c0-4", + "session_id": "25ad8c35985849c0", + "epoch": 0, + "prompt_chars": 30, + "prompt_tokens": 13, + "output_tokens": 128, + "submitted_unix": 1790225324.6492095, + "first_token_unix": 1790225324.7545414, + "last_token_unix": 1790225334.4820194, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225324.7545414, + 1790225324.844953, + 1790225324.918987, + 1790225324.9927003, + 1790225325.06774, + 1790225325.140683, + 1790225325.2131295, + 1790225325.2882843, + 1790225325.36446, + 1790225325.4374142, + 1790225325.5117598, + 1790225325.585455, + 1790225325.6584039, + 1790225325.7418492, + 1790225325.817817, + 1790225325.8940525, + 1790225325.9697948, + 1790225326.049303, + 1790225326.127885, + 1790225326.2052658, + 1790225326.2850058, + 1790225326.3633611, + 1790225326.4377158, + 1790225326.5178926, + 1790225326.596507, + 1790225326.6775167, + 1790225326.7537034, + 1790225326.8309681, + 1790225326.9074457, + 1790225326.9874508, + 1790225327.0620308, + 1790225327.1471176, + 1790225327.2226686, + 1790225327.2971973, + 1790225327.3801386, + 1790225327.4632497, + 1790225327.54126, + 1790225327.6231368, + 1790225327.705298, + 1790225327.778174, + 1790225327.8570569, + 1790225327.9274735, + 1790225328.0155187, + 1790225328.0906126, + 1790225328.1635284, + 1790225328.2439823, + 1790225328.3217554, + 1790225328.3956194, + 1790225328.470208, + 1790225328.5456107, + 1790225328.6255744, + 1790225328.704286, + 1790225328.7861578, + 1790225328.8633137, + 1790225328.941958, + 1790225329.0243804, + 1790225329.103512, + 1790225329.1757703, + 1790225329.2501333, + 1790225329.327299, + 1790225329.4024806, + 1790225329.487757, + 1790225329.560121, + 1790225329.6401036, + 1790225329.7212086, + 1790225329.8010917, + 1790225329.8790402, + 1790225329.950654, + 1790225330.025834, + 1790225330.1042387, + 1790225330.1862612, + 1790225330.2621834, + 1790225330.3363378, + 1790225330.4104502, + 1790225330.4905517, + 1790225330.5729086, + 1790225330.6472454, + 1790225330.7225096, + 1790225330.7973077, + 1790225330.8715808, + 1790225330.9472094, + 1790225331.0290928, + 1790225331.119496, + 1790225331.1912704, + 1790225331.2783086, + 1790225331.361174, + 1790225331.439762, + 1790225331.51769, + 1790225331.5946574, + 1790225331.6746757, + 1790225331.7558863, + 1790225331.8299627, + 1790225331.9070983, + 1790225331.9811726, + 1790225332.0610628, + 1790225332.1288452, + 1790225332.2023034, + 1790225332.2808661, + 1790225332.359148, + 1790225332.431183, + 1790225332.5059896, + 1790225332.5842042, + 1790225332.6545198, + 1790225332.727923, + 1790225332.807105, + 1790225332.8849137, + 1790225332.9539754, + 1790225333.026448, + 1790225333.1006458, + 1790225333.1758177, + 1790225333.2469602, + 1790225333.3153822, + 1790225333.3891795, + 1790225333.4598484, + 1790225333.529041, + 1790225333.6024828, + 1790225333.6755824, + 1790225333.7448869, + 1790225333.822215, + 1790225333.9004729, + 1790225333.978767, + 1790225334.0451775, + 1790225334.1147966, + 1790225334.182786, + 1790225334.257907, + 1790225334.3334658, + 1790225334.4057884, + 1790225334.4820194 + ], + "text": " mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission", + "output_token_ids": [ + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174 + ], + "ttft_s": 0.1053318977355957, + "decode_tok_per_s": 13.055799215686275 + }, + { + "request_id": "fc32712014534678-5", + "session_id": "fc32712014534678", + "epoch": 0, + "prompt_chars": 61, + "prompt_tokens": 18, + "output_tokens": 128, + "submitted_unix": 1790225334.4822977, + "first_token_unix": 1790225334.5852656, + "last_token_unix": 1790225344.28967, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225334.5852656, + 1790225334.6653054, + 1790225334.746491, + 1790225334.8221745, + 1790225334.8979366, + 1790225334.9669182, + 1790225335.0394537, + 1790225335.1159327, + 1790225335.192432, + 1790225335.266005, + 1790225335.3390417, + 1790225335.4190314, + 1790225335.4942153, + 1790225335.5668776, + 1790225335.6445472, + 1790225335.7148447, + 1790225335.7948802, + 1790225335.8775032, + 1790225335.9570408, + 1790225336.0393484, + 1790225336.1211493, + 1790225336.1918452, + 1790225336.2664826, + 1790225336.3424265, + 1790225336.416976, + 1790225336.4947104, + 1790225336.5684834, + 1790225336.6488464, + 1790225336.721154, + 1790225336.797821, + 1790225336.8779404, + 1790225336.9601207, + 1790225337.0298622, + 1790225337.0984883, + 1790225337.1872525, + 1790225337.257497, + 1790225337.3311567, + 1790225337.4079762, + 1790225337.477159, + 1790225337.5546942, + 1790225337.631656, + 1790225337.7051532, + 1790225337.7844005, + 1790225337.8579412, + 1790225337.937705, + 1790225338.015073, + 1790225338.0951312, + 1790225338.1675594, + 1790225338.2504048, + 1790225338.325494, + 1790225338.4027748, + 1790225338.4824917, + 1790225338.5498018, + 1790225338.6223667, + 1790225338.6928437, + 1790225338.7646625, + 1790225338.8407543, + 1790225338.9140346, + 1790225338.9964414, + 1790225339.0900085, + 1790225339.195143, + 1790225339.2890062, + 1790225339.3640664, + 1790225339.4397173, + 1790225339.5143726, + 1790225339.584009, + 1790225339.6561017, + 1790225339.7294898, + 1790225339.7981486, + 1790225339.8719769, + 1790225339.9382837, + 1790225340.0136828, + 1790225340.102542, + 1790225340.179086, + 1790225340.2513936, + 1790225340.3303046, + 1790225340.4013927, + 1790225340.476006, + 1790225340.5446672, + 1790225340.6135201, + 1790225340.6902742, + 1790225340.7705147, + 1790225340.8502371, + 1790225340.9214728, + 1790225340.993215, + 1790225341.0637567, + 1790225341.141166, + 1790225341.2129831, + 1790225341.286793, + 1790225341.3685222, + 1790225341.4386268, + 1790225341.5089197, + 1790225341.5820606, + 1790225341.661055, + 1790225341.7379408, + 1790225341.8324103, + 1790225341.91069, + 1790225341.9899163, + 1790225342.0638084, + 1790225342.146655, + 1790225342.224385, + 1790225342.2984776, + 1790225342.3718767, + 1790225342.4501626, + 1790225342.5354245, + 1790225342.60428, + 1790225342.6757784, + 1790225342.7541337, + 1790225342.8354957, + 1790225342.9114459, + 1790225342.9832134, + 1790225343.051451, + 1790225343.1258302, + 1790225343.2017136, + 1790225343.2828462, + 1790225343.3615584, + 1790225343.4305046, + 1790225343.5013704, + 1790225343.573006, + 1790225343.644456, + 1790225343.7228785, + 1790225343.8077362, + 1790225343.8879874, + 1790225343.9676695, + 1790225344.0581696, + 1790225344.13704, + 1790225344.2111654, + 1790225344.28967 + ], + "text": " a, b = 0, 1\n for _ in range(n):\n a, b = b, a + b\n if _ == n:\n return a\n return a\n\n\ndef main():\n n = int(input())\n print(fibonacci(n))\n\n\nif __name__ == \"__main__\":\n main()\n\n\n你的代码存在一些错误,需要修正。请详细分析错误原因,并给出修正后的代码。\n\n### 错误分析\n\n1. **输入处理错误**:\n - 原代码中 `n", + "output_token_ids": [ + 293, + 259, + 25, + 287, + 422, + 220, + 29, + 25, + 220, + 30, + 198, + 293, + 396, + 2198, + 304, + 4044, + 5738, + 2407, + 198, + 361, + 259, + 25, + 287, + 422, + 287, + 25, + 259, + 1336, + 287, + 198, + 361, + 690, + 2198, + 2126, + 292, + 39, + 198, + 462, + 948, + 259, + 198, + 293, + 948, + 259, + 198, + 198, + 198, + 3068, + 2772, + 11834, + 198, + 293, + 292, + 422, + 1455, + 16040, + 4112, + 198, + 293, + 3594, + 3836, + 41162, + 65043, + 5738, + 1771, + 198, + 198, + 198, + 556, + 7001, + 2215, + 1423, + 2126, + 51012, + 14872, + 72067, + 198, + 293, + 2772, + 663, + 198, + 198, + 198, + 3992, + 12792, + 3259, + 2651, + 8189, + 280, + 1740, + 26813, + 302, + 2118, + 8210, + 2572, + 8189, + 4366, + 280, + 1125, + 28490, + 26813, + 6922, + 12792, + 302, + 198, + 198, + 16689, + 220, + 8189, + 2572, + 198, + 198, + 30, + 27, + 7307, + 8156, + 3052, + 8189, + 47165, + 198, + 256, + 706, + 220, + 1345, + 12792, + 457, + 2561, + 91 + ], + "ttft_s": 0.10296797752380371, + "decode_tok_per_s": 13.08684133162726 + }, + { + "request_id": "d641d0a16a384f80-6", + "session_id": "d641d0a16a384f80", + "epoch": 0, + "prompt_chars": 43, + "prompt_tokens": 8, + "output_tokens": 128, + "submitted_unix": 1790225344.2899654, + "first_token_unix": 1790225344.3738916, + "last_token_unix": 1790225354.2379587, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225344.3738916, + 1790225344.451319, + 1790225344.5276098, + 1790225344.601397, + 1790225344.678396, + 1790225344.7639587, + 1790225344.8432322, + 1790225344.9240708, + 1790225344.9998064, + 1790225345.0772593, + 1790225345.1486921, + 1790225345.222582, + 1790225345.305344, + 1790225345.3758786, + 1790225345.4537036, + 1790225345.5370085, + 1790225345.6099935, + 1790225345.6872392, + 1790225345.7666953, + 1790225345.8394492, + 1790225345.92163, + 1790225346.0008674, + 1790225346.087211, + 1790225346.159836, + 1790225346.2352917, + 1790225346.3110886, + 1790225346.3894355, + 1790225346.4678502, + 1790225346.54244, + 1790225346.6164865, + 1790225346.6923091, + 1790225346.76442, + 1790225346.8460753, + 1790225346.9271073, + 1790225347.0066032, + 1790225347.080646, + 1790225347.1582127, + 1790225347.2371511, + 1790225347.3174553, + 1790225347.3932471, + 1790225347.470871, + 1790225347.5514433, + 1790225347.6219182, + 1790225347.70026, + 1790225347.7752137, + 1790225347.852739, + 1790225347.9298892, + 1790225348.0103328, + 1790225348.0909545, + 1790225348.1666489, + 1790225348.2388322, + 1790225348.3176205, + 1790225348.391539, + 1790225348.4693193, + 1790225348.5437272, + 1790225348.61793, + 1790225348.6951392, + 1790225348.7723572, + 1790225348.8489995, + 1790225348.9202569, + 1790225348.9955401, + 1790225349.073037, + 1790225349.1440659, + 1790225349.2187366, + 1790225349.2943635, + 1790225349.3742697, + 1790225349.4519565, + 1790225349.5262203, + 1790225349.5993114, + 1790225349.6807501, + 1790225349.7617173, + 1790225349.8384354, + 1790225349.913561, + 1790225349.9893863, + 1790225350.0699565, + 1790225350.1477497, + 1790225350.226524, + 1790225350.3065927, + 1790225350.3870103, + 1790225350.4640737, + 1790225350.5427763, + 1790225350.6237447, + 1790225350.7019548, + 1790225350.773482, + 1790225350.8574474, + 1790225350.960729, + 1790225351.045443, + 1790225351.1238828, + 1790225351.1981716, + 1790225351.2756834, + 1790225351.3524458, + 1790225351.4313846, + 1790225351.506822, + 1790225351.582723, + 1790225351.65716, + 1790225351.7354753, + 1790225351.8100336, + 1790225351.8952398, + 1790225351.9712121, + 1790225352.0462005, + 1790225352.1196504, + 1790225352.19762, + 1790225352.2787821, + 1790225352.3528054, + 1790225352.429198, + 1790225352.5064719, + 1790225352.5916674, + 1790225352.6685371, + 1790225352.7520928, + 1790225352.8272963, + 1790225352.906634, + 1790225352.989168, + 1790225353.0709066, + 1790225353.154374, + 1790225353.232039, + 1790225353.3040526, + 1790225353.3793375, + 1790225353.4637334, + 1790225353.540644, + 1790225353.610101, + 1790225353.6846745, + 1790225353.766119, + 1790225353.8519604, + 1790225353.9323788, + 1790225354.0094333, + 1790225354.087719, + 1790225354.1598985, + 1790225354.2379587 + ], + "text": " the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that", + "output_token_ids": [ + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455 + ], + "ttft_s": 0.08392620086669922, + "decode_tok_per_s": 12.875013825476467 + }, + { + "request_id": "295ae826d0d54b60-7", + "session_id": "295ae826d0d54b60", + "epoch": 0, + "prompt_chars": 34, + "prompt_tokens": 7, + "output_tokens": 128, + "submitted_unix": 1790225354.2381964, + "first_token_unix": 1790225354.3287356, + "last_token_unix": 1790225364.0990856, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225354.3287356, + 1790225354.4042, + 1790225354.4768167, + 1790225354.557276, + 1790225354.6390698, + 1790225354.710071, + 1790225354.784807, + 1790225354.8639727, + 1790225354.9346144, + 1790225355.0180461, + 1790225355.0958104, + 1790225355.168059, + 1790225355.245813, + 1790225355.3216267, + 1790225355.3953614, + 1790225355.4730191, + 1790225355.5562146, + 1790225355.6357293, + 1790225355.7137923, + 1790225355.7936182, + 1790225355.8703377, + 1790225355.9454782, + 1790225356.0175135, + 1790225356.0881412, + 1790225356.164264, + 1790225356.2486582, + 1790225356.3250256, + 1790225356.3966787, + 1790225356.4670243, + 1790225356.541928, + 1790225356.6236703, + 1790225356.705492, + 1790225356.7836452, + 1790225356.8676388, + 1790225356.937352, + 1790225357.018344, + 1790225357.0947804, + 1790225357.1732552, + 1790225357.2447119, + 1790225357.3215148, + 1790225357.3974822, + 1790225357.476501, + 1790225357.5529037, + 1790225357.6332915, + 1790225357.7092102, + 1790225357.7851412, + 1790225357.8605125, + 1790225357.9307804, + 1790225358.0071669, + 1790225358.0832286, + 1790225358.1599872, + 1790225358.2311578, + 1790225358.3114424, + 1790225358.3910358, + 1790225358.471371, + 1790225358.5469007, + 1790225358.6186762, + 1790225358.6963186, + 1790225358.768652, + 1790225358.8432593, + 1790225358.9199262, + 1790225358.9934638, + 1790225359.070752, + 1790225359.1474748, + 1790225359.2170584, + 1790225359.292054, + 1790225359.374105, + 1790225359.4505472, + 1790225359.547112, + 1790225359.628128, + 1790225359.7072513, + 1790225359.786352, + 1790225359.8612077, + 1790225359.939937, + 1790225360.0189211, + 1790225360.1113367, + 1790225360.1880693, + 1790225360.2668269, + 1790225360.3534226, + 1790225360.425447, + 1790225360.5081167, + 1790225360.5850549, + 1790225360.6582341, + 1790225360.737862, + 1790225360.8112335, + 1790225360.8855693, + 1790225360.9616284, + 1790225361.036635, + 1790225361.1126952, + 1790225361.1842918, + 1790225361.262489, + 1790225361.337194, + 1790225361.4095576, + 1790225361.4848375, + 1790225361.566643, + 1790225361.6427994, + 1790225361.7190924, + 1790225361.7985785, + 1790225361.8740535, + 1790225361.9494925, + 1790225362.0343063, + 1790225362.1234317, + 1790225362.2003813, + 1790225362.272079, + 1790225362.344803, + 1790225362.418803, + 1790225362.493648, + 1790225362.5684865, + 1790225362.6493673, + 1790225362.7256916, + 1790225362.8063512, + 1790225362.8816817, + 1790225362.9585137, + 1790225363.0348501, + 1790225363.1111596, + 1790225363.1993227, + 1790225363.2778833, + 1790225363.353863, + 1790225363.439436, + 1790225363.5118966, + 1790225363.584908, + 1790225363.6581507, + 1790225363.7271507, + 1790225363.7971916, + 1790225363.8685262, + 1790225363.9455698, + 1790225364.0218885, + 1790225364.0990856 + ], + "text": " to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make", + "output_token_ids": [ + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996 + ], + "ttft_s": 0.09053921699523926, + "decode_tok_per_s": 12.998510827939743 + }, + { + "request_id": "50d2e03e71ae49d5-8", + "session_id": "50d2e03e71ae49d5", + "epoch": 0, + "prompt_chars": 37, + "prompt_tokens": 7, + "output_tokens": 128, + "submitted_unix": 1790225364.099325, + "first_token_unix": 1790225364.1788514, + "last_token_unix": 1790225373.6426458, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225364.1788514, + 1790225364.247679, + 1790225364.315634, + 1790225364.388906, + 1790225364.4584005, + 1790225364.5299478, + 1790225364.618054, + 1790225364.724492, + 1790225364.8090587, + 1790225364.881238, + 1790225364.9503505, + 1790225365.018869, + 1790225365.0954077, + 1790225365.1661515, + 1790225365.2420392, + 1790225365.3183334, + 1790225365.3967154, + 1790225365.4750903, + 1790225365.5489964, + 1790225365.6195984, + 1790225365.6983309, + 1790225365.775684, + 1790225365.8437152, + 1790225365.914819, + 1790225365.9889905, + 1790225366.058248, + 1790225366.1321876, + 1790225366.1984446, + 1790225366.27412, + 1790225366.3435776, + 1790225366.426182, + 1790225366.4960842, + 1790225366.5682716, + 1790225366.6347935, + 1790225366.7046776, + 1790225366.7783704, + 1790225366.850111, + 1790225366.9235177, + 1790225366.9936075, + 1790225367.065757, + 1790225367.1367667, + 1790225367.2123818, + 1790225367.28802, + 1790225367.3555553, + 1790225367.4273388, + 1790225367.5026424, + 1790225367.584715, + 1790225367.66034, + 1790225367.7303994, + 1790225367.8060324, + 1790225367.8844433, + 1790225367.9576864, + 1790225368.0315447, + 1790225368.1124732, + 1790225368.1896138, + 1790225368.2587082, + 1790225368.3318584, + 1790225368.4095235, + 1790225368.482354, + 1790225368.5543425, + 1790225368.6258762, + 1790225368.7007713, + 1790225368.775368, + 1790225368.8441355, + 1790225368.9187315, + 1790225368.9968116, + 1790225369.0709047, + 1790225369.1434717, + 1790225369.211396, + 1790225369.2928963, + 1790225369.3632312, + 1790225369.4308836, + 1790225369.5006838, + 1790225369.5734272, + 1790225369.655283, + 1790225369.7354827, + 1790225369.8044817, + 1790225369.8840606, + 1790225369.959642, + 1790225370.0302544, + 1790225370.1103606, + 1790225370.190263, + 1790225370.2606587, + 1790225370.3381424, + 1790225370.4319286, + 1790225370.5106325, + 1790225370.582776, + 1790225370.6578758, + 1790225370.7312248, + 1790225370.8045397, + 1790225370.8856988, + 1790225370.9622715, + 1790225371.038588, + 1790225371.1122003, + 1790225371.186281, + 1790225371.2552934, + 1790225371.3360367, + 1790225371.4085464, + 1790225371.477753, + 1790225371.551752, + 1790225371.6281385, + 1790225371.7022574, + 1790225371.7795517, + 1790225371.8573709, + 1790225371.9294932, + 1790225371.9998033, + 1790225372.069715, + 1790225372.1485856, + 1790225372.2291603, + 1790225372.308848, + 1790225372.380851, + 1790225372.453152, + 1790225372.5324492, + 1790225372.6082387, + 1790225372.6767619, + 1790225372.7500434, + 1790225372.8211088, + 1790225372.897381, + 1790225372.9714737, + 1790225373.043477, + 1790225373.116568, + 1790225373.1879094, + 1790225373.2635083, + 1790225373.3383038, + 1790225373.4153748, + 1790225373.4940732, + 1790225373.5700529, + 1790225373.6426458 + ], + "text": " the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the", + "output_token_ids": [ + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275 + ], + "ttft_s": 0.07952642440795898, + "decode_tok_per_s": 13.419564468017875 + }, + { + "request_id": "0dfa951868f6426e-9", + "session_id": "0dfa951868f6426e", + "epoch": 0, + "prompt_chars": 23, + "prompt_tokens": 3, + "output_tokens": 128, + "submitted_unix": 1790225373.6429687, + "first_token_unix": 1790225373.7360797, + "last_token_unix": 1790225383.274933, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225373.7360797, + 1790225373.816813, + 1790225373.891052, + 1790225373.9660685, + 1790225374.052213, + 1790225374.1330557, + 1790225374.2160661, + 1790225374.288721, + 1790225374.3576136, + 1790225374.4248629, + 1790225374.497623, + 1790225374.5736902, + 1790225374.6429033, + 1790225374.7225718, + 1790225374.7960773, + 1790225374.86188, + 1790225374.9386935, + 1790225375.008637, + 1790225375.0804088, + 1790225375.1546564, + 1790225375.23029, + 1790225375.308829, + 1790225375.392634, + 1790225375.465117, + 1790225375.5387492, + 1790225375.6122282, + 1790225375.692842, + 1790225375.7778034, + 1790225375.8520925, + 1790225375.9242227, + 1790225375.991014, + 1790225376.0616286, + 1790225376.1333015, + 1790225376.2062423, + 1790225376.2863767, + 1790225376.3586228, + 1790225376.4357088, + 1790225376.5058885, + 1790225376.5766015, + 1790225376.6566694, + 1790225376.7356737, + 1790225376.802338, + 1790225376.8811681, + 1790225376.9550338, + 1790225377.0296516, + 1790225377.1036782, + 1790225377.1768856, + 1790225377.2564523, + 1790225377.3366082, + 1790225377.408724, + 1790225377.480303, + 1790225377.5565434, + 1790225377.6298532, + 1790225377.7081017, + 1790225377.7813869, + 1790225377.860886, + 1790225377.936509, + 1790225378.0146863, + 1790225378.0912132, + 1790225378.1665726, + 1790225378.2431703, + 1790225378.3142996, + 1790225378.3900979, + 1790225378.4669533, + 1790225378.5443292, + 1790225378.6159222, + 1790225378.6896198, + 1790225378.767218, + 1790225378.8494055, + 1790225378.9299908, + 1790225379.002978, + 1790225379.0842454, + 1790225379.1522765, + 1790225379.2283218, + 1790225379.3031178, + 1790225379.3812377, + 1790225379.4483209, + 1790225379.5205908, + 1790225379.5949914, + 1790225379.6624277, + 1790225379.7368817, + 1790225379.8145413, + 1790225379.8858743, + 1790225379.9622707, + 1790225380.0369318, + 1790225380.110984, + 1790225380.192749, + 1790225380.2702734, + 1790225380.345949, + 1790225380.4220393, + 1790225380.49789, + 1790225380.583405, + 1790225380.6636178, + 1790225380.7438273, + 1790225380.8163059, + 1790225380.8858824, + 1790225380.9575448, + 1790225381.034146, + 1790225381.1119692, + 1790225381.1827118, + 1790225381.2547796, + 1790225381.3286188, + 1790225381.407775, + 1790225381.4807646, + 1790225381.5515223, + 1790225381.6230562, + 1790225381.696626, + 1790225381.7815838, + 1790225381.8592756, + 1790225381.9407995, + 1790225382.0150278, + 1790225382.095842, + 1790225382.1651468, + 1790225382.2425463, + 1790225382.3228939, + 1790225382.3973103, + 1790225382.469201, + 1790225382.546276, + 1790225382.6144817, + 1790225382.6849291, + 1790225382.7636507, + 1790225382.843664, + 1790225382.9199822, + 1790225382.990137, + 1790225383.0617182, + 1790225383.132162, + 1790225383.2031848, + 1790225383.274933 + ], + "text": " carbon and oxygen into carbon and oxygen and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and", + "output_token_ids": [ + 13619, + 317, + 19210, + 1464, + 13619, + 317, + 19210, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317 + ], + "ttft_s": 0.09311103820800781, + "decode_tok_per_s": 13.313969151476007 + }, + { + "request_id": "4b967f2140914f38-10", + "session_id": "4b967f2140914f38", + "epoch": 0, + "prompt_chars": 45, + "prompt_tokens": 9, + "output_tokens": 128, + "submitted_unix": 1790225383.2751658, + "first_token_unix": 1790225383.3528152, + "last_token_unix": 1790225392.9338138, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225383.3528152, + 1790225383.4286215, + 1790225383.507652, + 1790225383.5794168, + 1790225383.6543136, + 1790225383.7251256, + 1790225383.7921445, + 1790225383.8676033, + 1790225383.9381614, + 1790225384.0191026, + 1790225384.0932581, + 1790225384.1643963, + 1790225384.2422745, + 1790225384.3221724, + 1790225384.3971522, + 1790225384.4732249, + 1790225384.5485466, + 1790225384.6259818, + 1790225384.7038019, + 1790225384.7780383, + 1790225384.8500996, + 1790225384.9259434, + 1790225384.9993052, + 1790225385.0870814, + 1790225385.2025177, + 1790225385.2845209, + 1790225385.3680441, + 1790225385.4493175, + 1790225385.5312831, + 1790225385.6076114, + 1790225385.678118, + 1790225385.7482784, + 1790225385.8310652, + 1790225385.904069, + 1790225385.984113, + 1790225386.0601923, + 1790225386.1338868, + 1790225386.2094374, + 1790225386.2899182, + 1790225386.3612232, + 1790225386.4307797, + 1790225386.5058546, + 1790225386.5799873, + 1790225386.6521733, + 1790225386.725628, + 1790225386.7944305, + 1790225386.8651943, + 1790225386.933126, + 1790225387.0025773, + 1790225387.0789428, + 1790225387.1494086, + 1790225387.2226455, + 1790225387.2925904, + 1790225387.361917, + 1790225387.4445198, + 1790225387.5250268, + 1790225387.6003284, + 1790225387.671416, + 1790225387.7394278, + 1790225387.817642, + 1790225387.88643, + 1790225387.9700027, + 1790225388.041394, + 1790225388.113296, + 1790225388.1852202, + 1790225388.2662663, + 1790225388.3352406, + 1790225388.4061966, + 1790225388.4881597, + 1790225388.56426, + 1790225388.6383903, + 1790225388.7100487, + 1790225388.7827818, + 1790225388.856141, + 1790225388.9292014, + 1790225388.999607, + 1790225389.0764742, + 1790225389.1499898, + 1790225389.2332013, + 1790225389.3110394, + 1790225389.3794649, + 1790225389.4531364, + 1790225389.5305574, + 1790225389.605473, + 1790225389.675414, + 1790225389.7484944, + 1790225389.8186095, + 1790225389.8876464, + 1790225389.9664006, + 1790225390.0482163, + 1790225390.1255634, + 1790225390.2032485, + 1790225390.2752562, + 1790225390.351381, + 1790225390.4247744, + 1790225390.5012095, + 1790225390.5822246, + 1790225390.6576927, + 1790225390.7308774, + 1790225390.8159387, + 1790225390.8847463, + 1790225390.9534845, + 1790225391.0336769, + 1790225391.108654, + 1790225391.188527, + 1790225391.2635126, + 1790225391.3374372, + 1790225391.4136584, + 1790225391.4845502, + 1790225391.5611675, + 1790225391.6407123, + 1790225391.7111073, + 1790225391.782809, + 1790225391.8632228, + 1790225391.9368463, + 1790225392.0132616, + 1790225392.0999014, + 1790225392.1686177, + 1790225392.2488291, + 1790225392.3269184, + 1790225392.4057896, + 1790225392.4755158, + 1790225392.5531182, + 1790225392.6259315, + 1790225392.704542, + 1790225392.7849214, + 1790225392.8585038, + 1790225392.9338138 + ], + "text": " supports operations such as insertion, deletion, and traversal. A binary search tree is a tree where each node has at most two children, and the left and right children are such that the left subtree contains all nodes with values less than the node's value, and the right subtree contains all nodes with values greater than the node's value. A binary search tree is a data structure that supports operations such as insertion, deletion, and traversal. A binary search tree is a tree where each node has at most two children, and the left and right children are such that the left subtree contains all nodes with values less than the", + "output_token_ids": [ + 20815, + 13127, + 2129, + 463, + 54525, + 25, + 62316, + 25, + 317, + 8709, + 46267, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 9905, + 2067, + 2440, + 6795, + 1044, + 511, + 2026, + 1841, + 4672, + 25, + 317, + 275, + 3887, + 317, + 2430, + 4672, + 599, + 2129, + 455, + 275, + 3887, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 3921, + 1489, + 275, + 6795, + 1045, + 2613, + 25, + 317, + 275, + 2430, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 9063, + 1489, + 275, + 6795, + 1045, + 2613, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 1870, + 6982, + 455, + 20815, + 13127, + 2129, + 463, + 54525, + 25, + 62316, + 25, + 317, + 8709, + 46267, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 9905, + 2067, + 2440, + 6795, + 1044, + 511, + 2026, + 1841, + 4672, + 25, + 317, + 275, + 3887, + 317, + 2430, + 4672, + 599, + 2129, + 455, + 275, + 3887, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 3921, + 1489, + 275 + ], + "ttft_s": 0.07764935493469238, + "decode_tok_per_s": 13.255403170203591 + }, + { + "request_id": "d3d6eefa25424d81-11", + "session_id": "d3d6eefa25424d81", + "epoch": 0, + "prompt_chars": 38, + "prompt_tokens": 9, + "output_tokens": 128, + "submitted_unix": 1790225392.9341042, + "first_token_unix": 1790225393.0269997, + "last_token_unix": 1790225402.4720516, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225393.0269997, + 1790225393.0995147, + 1790225393.173514, + 1790225393.2438047, + 1790225393.314878, + 1790225393.3876586, + 1790225393.4688191, + 1790225393.5439045, + 1790225393.6197248, + 1790225393.6854873, + 1790225393.7560608, + 1790225393.831046, + 1790225393.910118, + 1790225393.9855688, + 1790225394.0611315, + 1790225394.132349, + 1790225394.2116232, + 1790225394.292502, + 1790225394.3615732, + 1790225394.434873, + 1790225394.5134516, + 1790225394.5843165, + 1790225394.6571958, + 1790225394.7284567, + 1790225394.8057213, + 1790225394.8864706, + 1790225394.963032, + 1790225395.039037, + 1790225395.1145523, + 1790225395.18977, + 1790225395.2751822, + 1790225395.3586652, + 1790225395.4398887, + 1790225395.5224862, + 1790225395.596482, + 1790225395.6660657, + 1790225395.7377748, + 1790225395.8053133, + 1790225395.8806612, + 1790225395.9534705, + 1790225396.0333533, + 1790225396.108735, + 1790225396.1805787, + 1790225396.2555737, + 1790225396.323106, + 1790225396.3913164, + 1790225396.4719882, + 1790225396.538777, + 1790225396.618749, + 1790225396.6972196, + 1790225396.7634864, + 1790225396.8370328, + 1790225396.9095507, + 1790225396.9798992, + 1790225397.0456254, + 1790225397.1213632, + 1790225397.2062154, + 1790225397.280249, + 1790225397.3523324, + 1790225397.4245665, + 1790225397.5008464, + 1790225397.5822423, + 1790225397.6547842, + 1790225397.7328875, + 1790225397.814388, + 1790225397.8868325, + 1790225397.9583974, + 1790225398.0415952, + 1790225398.1229064, + 1790225398.2013075, + 1790225398.276228, + 1790225398.3497145, + 1790225398.4199831, + 1790225398.4933388, + 1790225398.5711582, + 1790225398.640372, + 1790225398.7081497, + 1790225398.7756035, + 1790225398.8550856, + 1790225398.9233658, + 1790225398.9916453, + 1790225399.073204, + 1790225399.1422846, + 1790225399.2133372, + 1790225399.2870462, + 1790225399.367068, + 1790225399.4361029, + 1790225399.5093486, + 1790225399.5827458, + 1790225399.6537406, + 1790225399.7323322, + 1790225399.8023088, + 1790225399.8700576, + 1790225399.9419546, + 1790225400.0101082, + 1790225400.100298, + 1790225400.1713016, + 1790225400.2536976, + 1790225400.323842, + 1790225400.3962536, + 1790225400.4777963, + 1790225400.5517168, + 1790225400.6266026, + 1790225400.6986651, + 1790225400.774096, + 1790225400.8528504, + 1790225400.925352, + 1790225400.9968686, + 1790225401.063864, + 1790225401.1388042, + 1790225401.214704, + 1790225401.3024144, + 1790225401.3775127, + 1790225401.4508579, + 1790225401.523692, + 1790225401.5909555, + 1790225401.6678357, + 1790225401.7387288, + 1790225401.8103402, + 1790225401.878102, + 1790225401.9522767, + 1790225402.0231042, + 1790225402.097488, + 1790225402.1737723, + 1790225402.2427046, + 1790225402.3136322, + 1790225402.3955777, + 1790225402.4720516 + ], + "text": " 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty", + "output_token_ids": [ + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455 + ], + "ttft_s": 0.0928955078125, + "decode_tok_per_s": 13.44619396806077 + }, + { + "request_id": "09b6c8ecc04243c8-12", + "session_id": "09b6c8ecc04243c8", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 9, + "submitted_unix": 1790225402.4722888, + "first_token_unix": 1790225402.590666, + "last_token_unix": 1790225403.2654216, + "finished": false, + "cancelled": true, + "error": null, + "token_unix": [ + 1790225402.590666, + 1790225402.6613648, + 1790225402.736605, + 1790225402.810536, + 1790225402.8869114, + 1790225402.9648635, + 1790225403.03187, + 1790225403.108842, + 1790225403.2654216 + ], + "text": "We are asked: \"What is the capital", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862 + ], + "ttft_s": 0.1183772087097168, + "decode_tok_per_s": 11.856145124075573 + } + ], + "streams": { + "877554b0634b412b-0": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 49, + "dropped_stale": 0, + "epoch": 0 + }, + "085d086351314dcc-1": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "a4897c53e944430a-2": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 42, + "dropped_stale": 0, + "epoch": 0 + }, + "639977d6bce6475d-3": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 44, + "dropped_stale": 0, + "epoch": 0 + }, + "25ad8c35985849c0-4": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 49, + "dropped_stale": 0, + "epoch": 0 + }, + "fc32712014534678-5": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 42, + "dropped_stale": 0, + "epoch": 0 + }, + "d641d0a16a384f80-6": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 46, + "dropped_stale": 0, + "epoch": 0 + }, + "295ae826d0d54b60-7": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 46, + "dropped_stale": 0, + "epoch": 0 + }, + "50d2e03e71ae49d5-8": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 45, + "dropped_stale": 0, + "epoch": 0 + }, + "0dfa951868f6426e-9": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 45, + "dropped_stale": 0, + "epoch": 0 + }, + "4b967f2140914f38-10": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 45, + "dropped_stale": 0, + "epoch": 0 + }, + "d3d6eefa25424d81-11": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 48, + "dropped_stale": 0, + "epoch": 0 + }, + "09b6c8ecc04243c8-12": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 1, + "high_water_bytes": 26, + "dropped_stale": 1, + "epoch": 1 + } + } + }, + "requests": [ + { + "prompt": "chat_short", + "request_id": "877554b0634b412b-0", + "session_id": "877554b0634b412b", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 128, + "submitted_unix": 1790225276.8842108, + "first_token_unix": 1790225277.2668934, + "last_token_unix": 1790225287.9031086, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225277.2668934, + 1790225277.3620434, + 1790225277.4505923, + 1790225277.5444877, + 1790225277.650876, + 1790225277.7417953, + 1790225277.8313162, + 1790225277.9215117, + 1790225278.016929, + 1790225278.101839, + 1790225278.1883442, + 1790225278.2837837, + 1790225278.3694649, + 1790225278.4816954, + 1790225278.5677514, + 1790225278.6506035, + 1790225278.7407615, + 1790225278.8237865, + 1790225278.9046946, + 1790225278.9857438, + 1790225279.064911, + 1790225279.1438496, + 1790225279.2256806, + 1790225279.3112571, + 1790225279.3885322, + 1790225279.4664347, + 1790225279.5481427, + 1790225279.63509, + 1790225279.7148046, + 1790225279.797289, + 1790225279.8827167, + 1790225279.9760416, + 1790225280.0652816, + 1790225280.1625621, + 1790225280.2481723, + 1790225280.3341043, + 1790225280.418472, + 1790225280.5130465, + 1790225280.596263, + 1790225280.6778061, + 1790225280.7768602, + 1790225280.8746243, + 1790225280.9709778, + 1790225281.0604193, + 1790225281.142038, + 1790225281.227805, + 1790225281.3101563, + 1790225281.4028792, + 1790225281.4883785, + 1790225281.583888, + 1790225281.6822457, + 1790225281.7737381, + 1790225281.8590136, + 1790225281.9475253, + 1790225282.043742, + 1790225282.128831, + 1790225282.217414, + 1790225282.2943544, + 1790225282.3773713, + 1790225282.462875, + 1790225282.5501804, + 1790225282.6338768, + 1790225282.7149305, + 1790225282.8306568, + 1790225282.9202201, + 1790225282.9999192, + 1790225283.0793087, + 1790225283.1646085, + 1790225283.241975, + 1790225283.3250842, + 1790225283.3997343, + 1790225283.4808917, + 1790225283.5665846, + 1790225283.6584046, + 1790225283.745623, + 1790225283.8246746, + 1790225283.899948, + 1790225283.9821959, + 1790225284.0661218, + 1790225284.146425, + 1790225284.229545, + 1790225284.3046153, + 1790225284.3930404, + 1790225284.4804997, + 1790225284.5602171, + 1790225284.6395836, + 1790225284.7227676, + 1790225284.8109322, + 1790225284.8961933, + 1790225284.9882567, + 1790225285.0655754, + 1790225285.1429675, + 1790225285.219736, + 1790225285.2960758, + 1790225285.3683453, + 1790225285.4398453, + 1790225285.509953, + 1790225285.5827513, + 1790225285.6518948, + 1790225285.7233288, + 1790225285.7982109, + 1790225285.8839154, + 1790225285.9573784, + 1790225286.0336685, + 1790225286.1147537, + 1790225286.1855793, + 1790225286.2666032, + 1790225286.3336182, + 1790225286.4131265, + 1790225286.4951675, + 1790225286.5642028, + 1790225286.6466858, + 1790225286.7224362, + 1790225286.7985315, + 1790225286.8784122, + 1790225286.9486241, + 1790225287.0230753, + 1790225287.1041095, + 1790225287.179935, + 1790225287.2608905, + 1790225287.349727, + 1790225287.4185495, + 1790225287.4886749, + 1790225287.5621488, + 1790225287.6467168, + 1790225287.7208629, + 1790225287.7986975, + 1790225287.9031086 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris\n\nWait, the user's message is: \"What is the capital of France? Answer in one word.\" I need to provide the answer. The answer is \"Paris\". I should output just that word.\n\nBut let's see the instruction: \"Answer in one word.\" So I should respond", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 198, + 198, + 34542, + 25, + 275, + 3754, + 1045, + 5974, + 390, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 373, + 1633, + 312, + 4553, + 275, + 6787, + 27, + 614, + 6787, + 390, + 518, + 110949, + 4348, + 373, + 2029, + 6340, + 1839, + 455, + 5240, + 27, + 198, + 198, + 4023, + 1553, + 1045, + 2261, + 275, + 23220, + 39, + 518, + 47648, + 304, + 1135, + 5240, + 1848, + 4358, + 373, + 2029, + 9666 + ], + "ttft_s": 0.38268256187438965, + "decode_tok_per_s": 11.940337563033045, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 49, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "prompt": "chat_tools", + "request_id": "085d086351314dcc-1", + "session_id": "085d086351314dcc", + "epoch": 0, + "prompt_chars": 595, + "prompt_tokens": 137, + "output_tokens": 128, + "submitted_unix": 1790225287.903425, + "first_token_unix": 1790225288.361746, + "last_token_unix": 1790225297.9576578, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225288.361746, + 1790225288.4379697, + 1790225288.5158093, + 1790225288.6008742, + 1790225288.6704032, + 1790225288.7452345, + 1790225288.8272762, + 1790225288.9017186, + 1790225288.9752464, + 1790225289.046115, + 1790225289.1248384, + 1790225289.2028258, + 1790225289.2808027, + 1790225289.3577511, + 1790225289.4302897, + 1790225289.5005028, + 1790225289.5691748, + 1790225289.6436133, + 1790225289.7280679, + 1790225289.8053331, + 1790225289.884248, + 1790225289.9543648, + 1790225290.0345151, + 1790225290.1141806, + 1790225290.19629, + 1790225290.2719016, + 1790225290.350088, + 1790225290.4234762, + 1790225290.49737, + 1790225290.5679991, + 1790225290.6422288, + 1790225290.7094157, + 1790225290.7873828, + 1790225290.8645082, + 1790225290.940066, + 1790225291.0220385, + 1790225291.0925012, + 1790225291.164219, + 1790225291.2315207, + 1790225291.3099349, + 1790225291.3805745, + 1790225291.4567099, + 1790225291.5302298, + 1790225291.6018817, + 1790225291.6752295, + 1790225291.7477703, + 1790225291.8275406, + 1790225291.9073894, + 1790225291.9842186, + 1790225292.0621705, + 1790225292.1383176, + 1790225292.2138307, + 1790225292.2914147, + 1790225292.3647187, + 1790225292.436904, + 1790225292.511302, + 1790225292.5862885, + 1790225292.6602, + 1790225292.7325337, + 1790225292.8039703, + 1790225292.8858864, + 1790225292.9589825, + 1790225293.0322158, + 1790225293.110514, + 1790225293.1958804, + 1790225293.2720404, + 1790225293.3511214, + 1790225293.4272196, + 1790225293.4989717, + 1790225293.5896266, + 1790225293.6630173, + 1790225293.733618, + 1790225293.8049297, + 1790225293.8830204, + 1790225293.9557052, + 1790225294.0263257, + 1790225294.1013389, + 1790225294.1733952, + 1790225294.2398221, + 1790225294.3211522, + 1790225294.3957427, + 1790225294.4761178, + 1790225294.549684, + 1790225294.6235702, + 1790225294.701572, + 1790225294.7692604, + 1790225294.8505385, + 1790225294.9194527, + 1790225294.996781, + 1790225295.0764785, + 1790225295.1538281, + 1790225295.2340684, + 1790225295.3044662, + 1790225295.3778203, + 1790225295.4472497, + 1790225295.5216994, + 1790225295.608577, + 1790225295.6854758, + 1790225295.7573948, + 1790225295.8323328, + 1790225295.9080262, + 1790225295.988295, + 1790225296.0687118, + 1790225296.1422863, + 1790225296.2112179, + 1790225296.287932, + 1790225296.362069, + 1790225296.4439206, + 1790225296.5258505, + 1790225296.6052363, + 1790225296.6805515, + 1790225296.7532651, + 1790225296.8324473, + 1790225296.9043198, + 1790225296.982094, + 1790225297.0580945, + 1790225297.1339536, + 1790225297.2080395, + 1790225297.2792764, + 1790225297.349337, + 1790225297.431278, + 1790225297.500632, + 1790225297.5824068, + 1790225297.6602929, + 1790225297.7352016, + 1790225297.809745, + 1790225297.8861036, + 1790225297.9576578 + ], + "text": "The user wants to know the weather in Shenzhen right now in Celsius. I have a function available called `get_weather` that can retrieve weather for a city. Let me call it with the city \"Shenzhen\" and unit \"celsius\".get_weathercityShenzhenunitcelsius", + "output_token_ids": [ + 1046, + 3754, + 13025, + 312, + 1843, + 275, + 14510, + 304, + 75040, + 103, + 872, + 2430, + 2343, + 304, + 423, + 108364, + 27, + 373, + 760, + 259, + 2122, + 4234, + 4848, + 2561, + 913, + 76, + 64301, + 77, + 455, + 764, + 41002, + 14510, + 396, + 259, + 6594, + 27, + 9619, + 713, + 2426, + 488, + 478, + 275, + 6594, + 518, + 64, + 872, + 103, + 872, + 15, + 317, + 9261, + 518, + 8281, + 4348, + 4, + 130977, + 913, + 76, + 64301, + 130980, + 58593, + 130981, + 130982, + 64, + 872, + 103, + 872, + 130983, + 130980, + 11220, + 130981, + 130982, + 8281, + 130983, + 130984, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1 + ], + "ttft_s": 0.45832109451293945, + "decode_tok_per_s": 13.2348028435876, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "prompt": "chat_long", + "request_id": "a4897c53e944430a-2", + "session_id": "a4897c53e944430a", + "epoch": 0, + "prompt_chars": 6648, + "prompt_tokens": 2465, + "output_tokens": 128, + "submitted_unix": 1790225297.9579036, + "first_token_unix": 1790225303.9865458, + "last_token_unix": 1790225314.6944416, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225303.9865458, + 1790225304.100052, + 1790225304.2033272, + 1790225304.438566, + 1790225304.5279987, + 1790225304.6147346, + 1790225304.7108085, + 1790225304.7907553, + 1790225304.8704383, + 1790225304.9554126, + 1790225305.0375028, + 1790225305.1165903, + 1790225305.1965072, + 1790225305.2827296, + 1790225305.3617587, + 1790225305.4377959, + 1790225305.534804, + 1790225305.6227555, + 1790225305.7111123, + 1790225305.7960138, + 1790225305.8824744, + 1790225305.9618058, + 1790225306.0471501, + 1790225306.1328251, + 1790225306.2080605, + 1790225306.2842605, + 1790225306.3631556, + 1790225306.4391408, + 1790225306.5235705, + 1790225306.6093385, + 1790225306.6934855, + 1790225306.7748158, + 1790225306.8662596, + 1790225306.9507432, + 1790225307.0282793, + 1790225307.1123774, + 1790225307.1910715, + 1790225307.26309, + 1790225307.347476, + 1790225307.4367673, + 1790225307.5268877, + 1790225307.605183, + 1790225307.689563, + 1790225307.7761085, + 1790225307.859252, + 1790225307.9448597, + 1790225308.0200984, + 1790225308.1014385, + 1790225308.1799626, + 1790225308.2614517, + 1790225308.3415651, + 1790225308.422627, + 1790225308.504111, + 1790225308.5896192, + 1790225308.667367, + 1790225308.7432318, + 1790225308.8235927, + 1790225308.8988883, + 1790225308.9776816, + 1790225309.0607555, + 1790225309.1366234, + 1790225309.213372, + 1790225309.3070571, + 1790225309.3957398, + 1790225309.47287, + 1790225309.5517232, + 1790225309.626779, + 1790225309.701416, + 1790225309.7792587, + 1790225309.8695064, + 1790225309.959209, + 1790225310.0564284, + 1790225310.151057, + 1790225310.2454324, + 1790225310.3315427, + 1790225310.4129913, + 1790225310.492643, + 1790225310.5619326, + 1790225310.643703, + 1790225310.7212265, + 1790225310.8002884, + 1790225310.8770852, + 1790225310.953779, + 1790225311.02954, + 1790225311.1094694, + 1790225311.185819, + 1790225311.2661366, + 1790225311.3485696, + 1790225311.4332194, + 1790225311.5099695, + 1790225311.5888224, + 1790225311.6653342, + 1790225311.742981, + 1790225311.818717, + 1790225311.8971612, + 1790225311.977892, + 1790225312.056619, + 1790225312.132119, + 1790225312.2082248, + 1790225312.2907963, + 1790225312.3684056, + 1790225312.4517825, + 1790225312.526558, + 1790225312.6074498, + 1790225312.6865098, + 1790225312.7637136, + 1790225312.8404324, + 1790225312.9195986, + 1790225313.000107, + 1790225313.074037, + 1790225313.1550376, + 1790225313.2286904, + 1790225313.3079355, + 1790225313.384814, + 1790225313.4711192, + 1790225313.5458887, + 1790225313.6270149, + 1790225313.709776, + 1790225313.7923443, + 1790225313.890715, + 1790225314.0423315, + 1790225314.1360815, + 1790225314.2332695, + 1790225314.330358, + 1790225314.4268932, + 1790225314.5149403, + 1790225314.5966113, + 1790225314.6944416 + ], + "text": "We are given an inventory listing with item codes for warehouse districts 1 through 120. The question asks: \"What is the code for warehouse district 73?\" We need to find the code corresponding to district 73.\n\nLooking at the list, we see:\nItem 1: district 1 -> 1007\nItem 2: district 2 -> 1014\n...\nWe need to find the entry for district 73.\n\nLet's list the districts and their codes in order. The list is given as:\nItem 1: 1", + "output_token_ids": [ + 3066, + 599, + 4114, + 300, + 31946, + 35404, + 478, + 7006, + 27149, + 396, + 56774, + 49408, + 220, + 30, + 1953, + 220, + 30, + 31, + 29, + 27, + 614, + 5565, + 27179, + 39, + 518, + 4766, + 390, + 275, + 5760, + 396, + 56774, + 20882, + 220, + 36, + 32, + 5171, + 1994, + 1633, + 312, + 2432, + 275, + 5760, + 12610, + 312, + 20882, + 220, + 36, + 32, + 27, + 198, + 198, + 48992, + 511, + 275, + 2631, + 25, + 679, + 2261, + 39, + 198, + 5369, + 220, + 30, + 39, + 20882, + 220, + 30, + 3192, + 220, + 30, + 29, + 29, + 36, + 198, + 5369, + 220, + 31, + 39, + 20882, + 220, + 31, + 3192, + 220, + 30, + 29, + 30, + 33, + 198, + 2097, + 198, + 3066, + 1633, + 312, + 2432, + 275, + 11411, + 396, + 20882, + 220, + 36, + 32, + 27, + 198, + 198, + 13104, + 1045, + 2631, + 275, + 49408, + 317, + 1140, + 27149, + 304, + 3310, + 27, + 614, + 2631, + 390, + 4114, + 463, + 39, + 198, + 5369, + 220, + 30, + 39, + 220, + 30 + ], + "ttft_s": 6.028642177581787, + "decode_tok_per_s": 11.860406834049657, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 42, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "prompt": "plain_0", + "request_id": "639977d6bce6475d-3", + "session_id": "639977d6bce6475d", + "epoch": 0, + "prompt_chars": 27, + "prompt_tokens": 5, + "output_tokens": 128, + "submitted_unix": 1790225314.6947782, + "first_token_unix": 1790225314.7826133, + "last_token_unix": 1790225324.6488914, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225314.7826133, + 1790225314.8651793, + 1790225314.9361339, + 1790225315.0125377, + 1790225315.085919, + 1790225315.1628058, + 1790225315.241721, + 1790225315.3171365, + 1790225315.3892152, + 1790225315.4695153, + 1790225315.5462732, + 1790225315.6279862, + 1790225315.700452, + 1790225315.780388, + 1790225315.856267, + 1790225315.941063, + 1790225316.0152864, + 1790225316.0982718, + 1790225316.1737278, + 1790225316.2473214, + 1790225316.3249779, + 1790225316.4066327, + 1790225316.484965, + 1790225316.567957, + 1790225316.6510003, + 1790225316.7285845, + 1790225316.8098824, + 1790225316.8917198, + 1790225316.9731224, + 1790225317.0542474, + 1790225317.131291, + 1790225317.2091932, + 1790225317.289938, + 1790225317.3617392, + 1790225317.4385123, + 1790225317.5174353, + 1790225317.5986621, + 1790225317.6743557, + 1790225317.748918, + 1790225317.825997, + 1790225317.9013276, + 1790225317.9777904, + 1790225318.0567253, + 1790225318.132452, + 1790225318.2090316, + 1790225318.2800581, + 1790225318.3593132, + 1790225318.4408875, + 1790225318.519794, + 1790225318.5959404, + 1790225318.6704795, + 1790225318.7468567, + 1790225318.8223636, + 1790225318.8997924, + 1790225318.9750082, + 1790225319.056178, + 1790225319.1314943, + 1790225319.2094696, + 1790225319.280548, + 1790225319.359796, + 1790225319.4354393, + 1790225319.5124562, + 1790225319.5874085, + 1790225319.6619341, + 1790225319.7406714, + 1790225319.8141592, + 1790225319.8847885, + 1790225319.9657376, + 1790225320.041471, + 1790225320.1190917, + 1790225320.1914132, + 1790225320.266822, + 1790225320.3427382, + 1790225320.4236162, + 1790225320.5065365, + 1790225320.593096, + 1790225320.6776626, + 1790225320.7593691, + 1790225320.845189, + 1790225320.925149, + 1790225321.0102537, + 1790225321.0887625, + 1790225321.1691341, + 1790225321.2491295, + 1790225321.3274374, + 1790225321.403966, + 1790225321.482221, + 1790225321.5505567, + 1790225321.6323378, + 1790225321.7094147, + 1790225321.7845702, + 1790225321.8596241, + 1790225321.941687, + 1790225322.0172093, + 1790225322.091702, + 1790225322.1663225, + 1790225322.2431602, + 1790225322.3202279, + 1790225322.3978179, + 1790225322.4778683, + 1790225322.5612748, + 1790225322.6339443, + 1790225322.7035463, + 1790225322.7806187, + 1790225322.8560157, + 1790225322.9436634, + 1790225323.028201, + 1790225323.1020985, + 1790225323.1773586, + 1790225323.247644, + 1790225323.325924, + 1790225323.4019616, + 1790225323.4868197, + 1790225323.5706515, + 1790225323.6451216, + 1790225323.7220173, + 1790225323.7978396, + 1790225323.871113, + 1790225323.9567907, + 1790225324.03575, + 1790225324.1063068, + 1790225324.183688, + 1790225324.2630467, + 1790225324.3372598, + 1790225324.4056144, + 1790225324.4845712, + 1790225324.5690308, + 1790225324.6488914 + ], + "text": " the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of", + "output_token_ids": [ + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314 + ], + "ttft_s": 0.08783507347106934, + "decode_tok_per_s": 12.872128455322667, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 44, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "prompt": "plain_1", + "request_id": "25ad8c35985849c0-4", + "session_id": "25ad8c35985849c0", + "epoch": 0, + "prompt_chars": 30, + "prompt_tokens": 13, + "output_tokens": 128, + "submitted_unix": 1790225324.6492095, + "first_token_unix": 1790225324.7545414, + "last_token_unix": 1790225334.4820194, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225324.7545414, + 1790225324.844953, + 1790225324.918987, + 1790225324.9927003, + 1790225325.06774, + 1790225325.140683, + 1790225325.2131295, + 1790225325.2882843, + 1790225325.36446, + 1790225325.4374142, + 1790225325.5117598, + 1790225325.585455, + 1790225325.6584039, + 1790225325.7418492, + 1790225325.817817, + 1790225325.8940525, + 1790225325.9697948, + 1790225326.049303, + 1790225326.127885, + 1790225326.2052658, + 1790225326.2850058, + 1790225326.3633611, + 1790225326.4377158, + 1790225326.5178926, + 1790225326.596507, + 1790225326.6775167, + 1790225326.7537034, + 1790225326.8309681, + 1790225326.9074457, + 1790225326.9874508, + 1790225327.0620308, + 1790225327.1471176, + 1790225327.2226686, + 1790225327.2971973, + 1790225327.3801386, + 1790225327.4632497, + 1790225327.54126, + 1790225327.6231368, + 1790225327.705298, + 1790225327.778174, + 1790225327.8570569, + 1790225327.9274735, + 1790225328.0155187, + 1790225328.0906126, + 1790225328.1635284, + 1790225328.2439823, + 1790225328.3217554, + 1790225328.3956194, + 1790225328.470208, + 1790225328.5456107, + 1790225328.6255744, + 1790225328.704286, + 1790225328.7861578, + 1790225328.8633137, + 1790225328.941958, + 1790225329.0243804, + 1790225329.103512, + 1790225329.1757703, + 1790225329.2501333, + 1790225329.327299, + 1790225329.4024806, + 1790225329.487757, + 1790225329.560121, + 1790225329.6401036, + 1790225329.7212086, + 1790225329.8010917, + 1790225329.8790402, + 1790225329.950654, + 1790225330.025834, + 1790225330.1042387, + 1790225330.1862612, + 1790225330.2621834, + 1790225330.3363378, + 1790225330.4104502, + 1790225330.4905517, + 1790225330.5729086, + 1790225330.6472454, + 1790225330.7225096, + 1790225330.7973077, + 1790225330.8715808, + 1790225330.9472094, + 1790225331.0290928, + 1790225331.119496, + 1790225331.1912704, + 1790225331.2783086, + 1790225331.361174, + 1790225331.439762, + 1790225331.51769, + 1790225331.5946574, + 1790225331.6746757, + 1790225331.7558863, + 1790225331.8299627, + 1790225331.9070983, + 1790225331.9811726, + 1790225332.0610628, + 1790225332.1288452, + 1790225332.2023034, + 1790225332.2808661, + 1790225332.359148, + 1790225332.431183, + 1790225332.5059896, + 1790225332.5842042, + 1790225332.6545198, + 1790225332.727923, + 1790225332.807105, + 1790225332.8849137, + 1790225332.9539754, + 1790225333.026448, + 1790225333.1006458, + 1790225333.1758177, + 1790225333.2469602, + 1790225333.3153822, + 1790225333.3891795, + 1790225333.4598484, + 1790225333.529041, + 1790225333.6024828, + 1790225333.6755824, + 1790225333.7448869, + 1790225333.822215, + 1790225333.9004729, + 1790225333.978767, + 1790225334.0451775, + 1790225334.1147966, + 1790225334.182786, + 1790225334.257907, + 1790225334.3334658, + 1790225334.4057884, + 1790225334.4820194 + ], + "text": " mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission", + "output_token_ids": [ + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174 + ], + "ttft_s": 0.1053318977355957, + "decode_tok_per_s": 13.055799215686275, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 49, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "prompt": "plain_2", + "request_id": "fc32712014534678-5", + "session_id": "fc32712014534678", + "epoch": 0, + "prompt_chars": 61, + "prompt_tokens": 18, + "output_tokens": 128, + "submitted_unix": 1790225334.4822977, + "first_token_unix": 1790225334.5852656, + "last_token_unix": 1790225344.28967, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225334.5852656, + 1790225334.6653054, + 1790225334.746491, + 1790225334.8221745, + 1790225334.8979366, + 1790225334.9669182, + 1790225335.0394537, + 1790225335.1159327, + 1790225335.192432, + 1790225335.266005, + 1790225335.3390417, + 1790225335.4190314, + 1790225335.4942153, + 1790225335.5668776, + 1790225335.6445472, + 1790225335.7148447, + 1790225335.7948802, + 1790225335.8775032, + 1790225335.9570408, + 1790225336.0393484, + 1790225336.1211493, + 1790225336.1918452, + 1790225336.2664826, + 1790225336.3424265, + 1790225336.416976, + 1790225336.4947104, + 1790225336.5684834, + 1790225336.6488464, + 1790225336.721154, + 1790225336.797821, + 1790225336.8779404, + 1790225336.9601207, + 1790225337.0298622, + 1790225337.0984883, + 1790225337.1872525, + 1790225337.257497, + 1790225337.3311567, + 1790225337.4079762, + 1790225337.477159, + 1790225337.5546942, + 1790225337.631656, + 1790225337.7051532, + 1790225337.7844005, + 1790225337.8579412, + 1790225337.937705, + 1790225338.015073, + 1790225338.0951312, + 1790225338.1675594, + 1790225338.2504048, + 1790225338.325494, + 1790225338.4027748, + 1790225338.4824917, + 1790225338.5498018, + 1790225338.6223667, + 1790225338.6928437, + 1790225338.7646625, + 1790225338.8407543, + 1790225338.9140346, + 1790225338.9964414, + 1790225339.0900085, + 1790225339.195143, + 1790225339.2890062, + 1790225339.3640664, + 1790225339.4397173, + 1790225339.5143726, + 1790225339.584009, + 1790225339.6561017, + 1790225339.7294898, + 1790225339.7981486, + 1790225339.8719769, + 1790225339.9382837, + 1790225340.0136828, + 1790225340.102542, + 1790225340.179086, + 1790225340.2513936, + 1790225340.3303046, + 1790225340.4013927, + 1790225340.476006, + 1790225340.5446672, + 1790225340.6135201, + 1790225340.6902742, + 1790225340.7705147, + 1790225340.8502371, + 1790225340.9214728, + 1790225340.993215, + 1790225341.0637567, + 1790225341.141166, + 1790225341.2129831, + 1790225341.286793, + 1790225341.3685222, + 1790225341.4386268, + 1790225341.5089197, + 1790225341.5820606, + 1790225341.661055, + 1790225341.7379408, + 1790225341.8324103, + 1790225341.91069, + 1790225341.9899163, + 1790225342.0638084, + 1790225342.146655, + 1790225342.224385, + 1790225342.2984776, + 1790225342.3718767, + 1790225342.4501626, + 1790225342.5354245, + 1790225342.60428, + 1790225342.6757784, + 1790225342.7541337, + 1790225342.8354957, + 1790225342.9114459, + 1790225342.9832134, + 1790225343.051451, + 1790225343.1258302, + 1790225343.2017136, + 1790225343.2828462, + 1790225343.3615584, + 1790225343.4305046, + 1790225343.5013704, + 1790225343.573006, + 1790225343.644456, + 1790225343.7228785, + 1790225343.8077362, + 1790225343.8879874, + 1790225343.9676695, + 1790225344.0581696, + 1790225344.13704, + 1790225344.2111654, + 1790225344.28967 + ], + "text": " a, b = 0, 1\n for _ in range(n):\n a, b = b, a + b\n if _ == n:\n return a\n return a\n\n\ndef main():\n n = int(input())\n print(fibonacci(n))\n\n\nif __name__ == \"__main__\":\n main()\n\n\n你的代码存在一些错误,需要修正。请详细分析错误原因,并给出修正后的代码。\n\n### 错误分析\n\n1. **输入处理错误**:\n - 原代码中 `n", + "output_token_ids": [ + 293, + 259, + 25, + 287, + 422, + 220, + 29, + 25, + 220, + 30, + 198, + 293, + 396, + 2198, + 304, + 4044, + 5738, + 2407, + 198, + 361, + 259, + 25, + 287, + 422, + 287, + 25, + 259, + 1336, + 287, + 198, + 361, + 690, + 2198, + 2126, + 292, + 39, + 198, + 462, + 948, + 259, + 198, + 293, + 948, + 259, + 198, + 198, + 198, + 3068, + 2772, + 11834, + 198, + 293, + 292, + 422, + 1455, + 16040, + 4112, + 198, + 293, + 3594, + 3836, + 41162, + 65043, + 5738, + 1771, + 198, + 198, + 198, + 556, + 7001, + 2215, + 1423, + 2126, + 51012, + 14872, + 72067, + 198, + 293, + 2772, + 663, + 198, + 198, + 198, + 3992, + 12792, + 3259, + 2651, + 8189, + 280, + 1740, + 26813, + 302, + 2118, + 8210, + 2572, + 8189, + 4366, + 280, + 1125, + 28490, + 26813, + 6922, + 12792, + 302, + 198, + 198, + 16689, + 220, + 8189, + 2572, + 198, + 198, + 30, + 27, + 7307, + 8156, + 3052, + 8189, + 47165, + 198, + 256, + 706, + 220, + 1345, + 12792, + 457, + 2561, + 91 + ], + "ttft_s": 0.10296797752380371, + "decode_tok_per_s": 13.08684133162726, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 42, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "prompt": "plain_3", + "request_id": "d641d0a16a384f80-6", + "session_id": "d641d0a16a384f80", + "epoch": 0, + "prompt_chars": 43, + "prompt_tokens": 8, + "output_tokens": 128, + "submitted_unix": 1790225344.2899654, + "first_token_unix": 1790225344.3738916, + "last_token_unix": 1790225354.2379587, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225344.3738916, + 1790225344.451319, + 1790225344.5276098, + 1790225344.601397, + 1790225344.678396, + 1790225344.7639587, + 1790225344.8432322, + 1790225344.9240708, + 1790225344.9998064, + 1790225345.0772593, + 1790225345.1486921, + 1790225345.222582, + 1790225345.305344, + 1790225345.3758786, + 1790225345.4537036, + 1790225345.5370085, + 1790225345.6099935, + 1790225345.6872392, + 1790225345.7666953, + 1790225345.8394492, + 1790225345.92163, + 1790225346.0008674, + 1790225346.087211, + 1790225346.159836, + 1790225346.2352917, + 1790225346.3110886, + 1790225346.3894355, + 1790225346.4678502, + 1790225346.54244, + 1790225346.6164865, + 1790225346.6923091, + 1790225346.76442, + 1790225346.8460753, + 1790225346.9271073, + 1790225347.0066032, + 1790225347.080646, + 1790225347.1582127, + 1790225347.2371511, + 1790225347.3174553, + 1790225347.3932471, + 1790225347.470871, + 1790225347.5514433, + 1790225347.6219182, + 1790225347.70026, + 1790225347.7752137, + 1790225347.852739, + 1790225347.9298892, + 1790225348.0103328, + 1790225348.0909545, + 1790225348.1666489, + 1790225348.2388322, + 1790225348.3176205, + 1790225348.391539, + 1790225348.4693193, + 1790225348.5437272, + 1790225348.61793, + 1790225348.6951392, + 1790225348.7723572, + 1790225348.8489995, + 1790225348.9202569, + 1790225348.9955401, + 1790225349.073037, + 1790225349.1440659, + 1790225349.2187366, + 1790225349.2943635, + 1790225349.3742697, + 1790225349.4519565, + 1790225349.5262203, + 1790225349.5993114, + 1790225349.6807501, + 1790225349.7617173, + 1790225349.8384354, + 1790225349.913561, + 1790225349.9893863, + 1790225350.0699565, + 1790225350.1477497, + 1790225350.226524, + 1790225350.3065927, + 1790225350.3870103, + 1790225350.4640737, + 1790225350.5427763, + 1790225350.6237447, + 1790225350.7019548, + 1790225350.773482, + 1790225350.8574474, + 1790225350.960729, + 1790225351.045443, + 1790225351.1238828, + 1790225351.1981716, + 1790225351.2756834, + 1790225351.3524458, + 1790225351.4313846, + 1790225351.506822, + 1790225351.582723, + 1790225351.65716, + 1790225351.7354753, + 1790225351.8100336, + 1790225351.8952398, + 1790225351.9712121, + 1790225352.0462005, + 1790225352.1196504, + 1790225352.19762, + 1790225352.2787821, + 1790225352.3528054, + 1790225352.429198, + 1790225352.5064719, + 1790225352.5916674, + 1790225352.6685371, + 1790225352.7520928, + 1790225352.8272963, + 1790225352.906634, + 1790225352.989168, + 1790225353.0709066, + 1790225353.154374, + 1790225353.232039, + 1790225353.3040526, + 1790225353.3793375, + 1790225353.4637334, + 1790225353.540644, + 1790225353.610101, + 1790225353.6846745, + 1790225353.766119, + 1790225353.8519604, + 1790225353.9323788, + 1790225354.0094333, + 1790225354.087719, + 1790225354.1598985, + 1790225354.2379587 + ], + "text": " the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that", + "output_token_ids": [ + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455 + ], + "ttft_s": 0.08392620086669922, + "decode_tok_per_s": 12.875013825476467, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 46, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "prompt": "plain_4", + "request_id": "295ae826d0d54b60-7", + "session_id": "295ae826d0d54b60", + "epoch": 0, + "prompt_chars": 34, + "prompt_tokens": 7, + "output_tokens": 128, + "submitted_unix": 1790225354.2381964, + "first_token_unix": 1790225354.3287356, + "last_token_unix": 1790225364.0990856, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225354.3287356, + 1790225354.4042, + 1790225354.4768167, + 1790225354.557276, + 1790225354.6390698, + 1790225354.710071, + 1790225354.784807, + 1790225354.8639727, + 1790225354.9346144, + 1790225355.0180461, + 1790225355.0958104, + 1790225355.168059, + 1790225355.245813, + 1790225355.3216267, + 1790225355.3953614, + 1790225355.4730191, + 1790225355.5562146, + 1790225355.6357293, + 1790225355.7137923, + 1790225355.7936182, + 1790225355.8703377, + 1790225355.9454782, + 1790225356.0175135, + 1790225356.0881412, + 1790225356.164264, + 1790225356.2486582, + 1790225356.3250256, + 1790225356.3966787, + 1790225356.4670243, + 1790225356.541928, + 1790225356.6236703, + 1790225356.705492, + 1790225356.7836452, + 1790225356.8676388, + 1790225356.937352, + 1790225357.018344, + 1790225357.0947804, + 1790225357.1732552, + 1790225357.2447119, + 1790225357.3215148, + 1790225357.3974822, + 1790225357.476501, + 1790225357.5529037, + 1790225357.6332915, + 1790225357.7092102, + 1790225357.7851412, + 1790225357.8605125, + 1790225357.9307804, + 1790225358.0071669, + 1790225358.0832286, + 1790225358.1599872, + 1790225358.2311578, + 1790225358.3114424, + 1790225358.3910358, + 1790225358.471371, + 1790225358.5469007, + 1790225358.6186762, + 1790225358.6963186, + 1790225358.768652, + 1790225358.8432593, + 1790225358.9199262, + 1790225358.9934638, + 1790225359.070752, + 1790225359.1474748, + 1790225359.2170584, + 1790225359.292054, + 1790225359.374105, + 1790225359.4505472, + 1790225359.547112, + 1790225359.628128, + 1790225359.7072513, + 1790225359.786352, + 1790225359.8612077, + 1790225359.939937, + 1790225360.0189211, + 1790225360.1113367, + 1790225360.1880693, + 1790225360.2668269, + 1790225360.3534226, + 1790225360.425447, + 1790225360.5081167, + 1790225360.5850549, + 1790225360.6582341, + 1790225360.737862, + 1790225360.8112335, + 1790225360.8855693, + 1790225360.9616284, + 1790225361.036635, + 1790225361.1126952, + 1790225361.1842918, + 1790225361.262489, + 1790225361.337194, + 1790225361.4095576, + 1790225361.4848375, + 1790225361.566643, + 1790225361.6427994, + 1790225361.7190924, + 1790225361.7985785, + 1790225361.8740535, + 1790225361.9494925, + 1790225362.0343063, + 1790225362.1234317, + 1790225362.2003813, + 1790225362.272079, + 1790225362.344803, + 1790225362.418803, + 1790225362.493648, + 1790225362.5684865, + 1790225362.6493673, + 1790225362.7256916, + 1790225362.8063512, + 1790225362.8816817, + 1790225362.9585137, + 1790225363.0348501, + 1790225363.1111596, + 1790225363.1993227, + 1790225363.2778833, + 1790225363.353863, + 1790225363.439436, + 1790225363.5118966, + 1790225363.584908, + 1790225363.6581507, + 1790225363.7271507, + 1790225363.7971916, + 1790225363.8685262, + 1790225363.9455698, + 1790225364.0218885, + 1790225364.0990856 + ], + "text": " to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make", + "output_token_ids": [ + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996 + ], + "ttft_s": 0.09053921699523926, + "decode_tok_per_s": 12.998510827939743, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 46, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "prompt": "plain_5", + "request_id": "50d2e03e71ae49d5-8", + "session_id": "50d2e03e71ae49d5", + "epoch": 0, + "prompt_chars": 37, + "prompt_tokens": 7, + "output_tokens": 128, + "submitted_unix": 1790225364.099325, + "first_token_unix": 1790225364.1788514, + "last_token_unix": 1790225373.6426458, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225364.1788514, + 1790225364.247679, + 1790225364.315634, + 1790225364.388906, + 1790225364.4584005, + 1790225364.5299478, + 1790225364.618054, + 1790225364.724492, + 1790225364.8090587, + 1790225364.881238, + 1790225364.9503505, + 1790225365.018869, + 1790225365.0954077, + 1790225365.1661515, + 1790225365.2420392, + 1790225365.3183334, + 1790225365.3967154, + 1790225365.4750903, + 1790225365.5489964, + 1790225365.6195984, + 1790225365.6983309, + 1790225365.775684, + 1790225365.8437152, + 1790225365.914819, + 1790225365.9889905, + 1790225366.058248, + 1790225366.1321876, + 1790225366.1984446, + 1790225366.27412, + 1790225366.3435776, + 1790225366.426182, + 1790225366.4960842, + 1790225366.5682716, + 1790225366.6347935, + 1790225366.7046776, + 1790225366.7783704, + 1790225366.850111, + 1790225366.9235177, + 1790225366.9936075, + 1790225367.065757, + 1790225367.1367667, + 1790225367.2123818, + 1790225367.28802, + 1790225367.3555553, + 1790225367.4273388, + 1790225367.5026424, + 1790225367.584715, + 1790225367.66034, + 1790225367.7303994, + 1790225367.8060324, + 1790225367.8844433, + 1790225367.9576864, + 1790225368.0315447, + 1790225368.1124732, + 1790225368.1896138, + 1790225368.2587082, + 1790225368.3318584, + 1790225368.4095235, + 1790225368.482354, + 1790225368.5543425, + 1790225368.6258762, + 1790225368.7007713, + 1790225368.775368, + 1790225368.8441355, + 1790225368.9187315, + 1790225368.9968116, + 1790225369.0709047, + 1790225369.1434717, + 1790225369.211396, + 1790225369.2928963, + 1790225369.3632312, + 1790225369.4308836, + 1790225369.5006838, + 1790225369.5734272, + 1790225369.655283, + 1790225369.7354827, + 1790225369.8044817, + 1790225369.8840606, + 1790225369.959642, + 1790225370.0302544, + 1790225370.1103606, + 1790225370.190263, + 1790225370.2606587, + 1790225370.3381424, + 1790225370.4319286, + 1790225370.5106325, + 1790225370.582776, + 1790225370.6578758, + 1790225370.7312248, + 1790225370.8045397, + 1790225370.8856988, + 1790225370.9622715, + 1790225371.038588, + 1790225371.1122003, + 1790225371.186281, + 1790225371.2552934, + 1790225371.3360367, + 1790225371.4085464, + 1790225371.477753, + 1790225371.551752, + 1790225371.6281385, + 1790225371.7022574, + 1790225371.7795517, + 1790225371.8573709, + 1790225371.9294932, + 1790225371.9998033, + 1790225372.069715, + 1790225372.1485856, + 1790225372.2291603, + 1790225372.308848, + 1790225372.380851, + 1790225372.453152, + 1790225372.5324492, + 1790225372.6082387, + 1790225372.6767619, + 1790225372.7500434, + 1790225372.8211088, + 1790225372.897381, + 1790225372.9714737, + 1790225373.043477, + 1790225373.116568, + 1790225373.1879094, + 1790225373.2635083, + 1790225373.3383038, + 1790225373.4153748, + 1790225373.4940732, + 1790225373.5700529, + 1790225373.6426458 + ], + "text": " the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the", + "output_token_ids": [ + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275 + ], + "ttft_s": 0.07952642440795898, + "decode_tok_per_s": 13.419564468017875, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 45, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "prompt": "plain_6", + "request_id": "0dfa951868f6426e-9", + "session_id": "0dfa951868f6426e", + "epoch": 0, + "prompt_chars": 23, + "prompt_tokens": 3, + "output_tokens": 128, + "submitted_unix": 1790225373.6429687, + "first_token_unix": 1790225373.7360797, + "last_token_unix": 1790225383.274933, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225373.7360797, + 1790225373.816813, + 1790225373.891052, + 1790225373.9660685, + 1790225374.052213, + 1790225374.1330557, + 1790225374.2160661, + 1790225374.288721, + 1790225374.3576136, + 1790225374.4248629, + 1790225374.497623, + 1790225374.5736902, + 1790225374.6429033, + 1790225374.7225718, + 1790225374.7960773, + 1790225374.86188, + 1790225374.9386935, + 1790225375.008637, + 1790225375.0804088, + 1790225375.1546564, + 1790225375.23029, + 1790225375.308829, + 1790225375.392634, + 1790225375.465117, + 1790225375.5387492, + 1790225375.6122282, + 1790225375.692842, + 1790225375.7778034, + 1790225375.8520925, + 1790225375.9242227, + 1790225375.991014, + 1790225376.0616286, + 1790225376.1333015, + 1790225376.2062423, + 1790225376.2863767, + 1790225376.3586228, + 1790225376.4357088, + 1790225376.5058885, + 1790225376.5766015, + 1790225376.6566694, + 1790225376.7356737, + 1790225376.802338, + 1790225376.8811681, + 1790225376.9550338, + 1790225377.0296516, + 1790225377.1036782, + 1790225377.1768856, + 1790225377.2564523, + 1790225377.3366082, + 1790225377.408724, + 1790225377.480303, + 1790225377.5565434, + 1790225377.6298532, + 1790225377.7081017, + 1790225377.7813869, + 1790225377.860886, + 1790225377.936509, + 1790225378.0146863, + 1790225378.0912132, + 1790225378.1665726, + 1790225378.2431703, + 1790225378.3142996, + 1790225378.3900979, + 1790225378.4669533, + 1790225378.5443292, + 1790225378.6159222, + 1790225378.6896198, + 1790225378.767218, + 1790225378.8494055, + 1790225378.9299908, + 1790225379.002978, + 1790225379.0842454, + 1790225379.1522765, + 1790225379.2283218, + 1790225379.3031178, + 1790225379.3812377, + 1790225379.4483209, + 1790225379.5205908, + 1790225379.5949914, + 1790225379.6624277, + 1790225379.7368817, + 1790225379.8145413, + 1790225379.8858743, + 1790225379.9622707, + 1790225380.0369318, + 1790225380.110984, + 1790225380.192749, + 1790225380.2702734, + 1790225380.345949, + 1790225380.4220393, + 1790225380.49789, + 1790225380.583405, + 1790225380.6636178, + 1790225380.7438273, + 1790225380.8163059, + 1790225380.8858824, + 1790225380.9575448, + 1790225381.034146, + 1790225381.1119692, + 1790225381.1827118, + 1790225381.2547796, + 1790225381.3286188, + 1790225381.407775, + 1790225381.4807646, + 1790225381.5515223, + 1790225381.6230562, + 1790225381.696626, + 1790225381.7815838, + 1790225381.8592756, + 1790225381.9407995, + 1790225382.0150278, + 1790225382.095842, + 1790225382.1651468, + 1790225382.2425463, + 1790225382.3228939, + 1790225382.3973103, + 1790225382.469201, + 1790225382.546276, + 1790225382.6144817, + 1790225382.6849291, + 1790225382.7636507, + 1790225382.843664, + 1790225382.9199822, + 1790225382.990137, + 1790225383.0617182, + 1790225383.132162, + 1790225383.2031848, + 1790225383.274933 + ], + "text": " carbon and oxygen into carbon and oxygen and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and", + "output_token_ids": [ + 13619, + 317, + 19210, + 1464, + 13619, + 317, + 19210, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317 + ], + "ttft_s": 0.09311103820800781, + "decode_tok_per_s": 13.313969151476007, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 45, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "prompt": "plain_7", + "request_id": "4b967f2140914f38-10", + "session_id": "4b967f2140914f38", + "epoch": 0, + "prompt_chars": 45, + "prompt_tokens": 9, + "output_tokens": 128, + "submitted_unix": 1790225383.2751658, + "first_token_unix": 1790225383.3528152, + "last_token_unix": 1790225392.9338138, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225383.3528152, + 1790225383.4286215, + 1790225383.507652, + 1790225383.5794168, + 1790225383.6543136, + 1790225383.7251256, + 1790225383.7921445, + 1790225383.8676033, + 1790225383.9381614, + 1790225384.0191026, + 1790225384.0932581, + 1790225384.1643963, + 1790225384.2422745, + 1790225384.3221724, + 1790225384.3971522, + 1790225384.4732249, + 1790225384.5485466, + 1790225384.6259818, + 1790225384.7038019, + 1790225384.7780383, + 1790225384.8500996, + 1790225384.9259434, + 1790225384.9993052, + 1790225385.0870814, + 1790225385.2025177, + 1790225385.2845209, + 1790225385.3680441, + 1790225385.4493175, + 1790225385.5312831, + 1790225385.6076114, + 1790225385.678118, + 1790225385.7482784, + 1790225385.8310652, + 1790225385.904069, + 1790225385.984113, + 1790225386.0601923, + 1790225386.1338868, + 1790225386.2094374, + 1790225386.2899182, + 1790225386.3612232, + 1790225386.4307797, + 1790225386.5058546, + 1790225386.5799873, + 1790225386.6521733, + 1790225386.725628, + 1790225386.7944305, + 1790225386.8651943, + 1790225386.933126, + 1790225387.0025773, + 1790225387.0789428, + 1790225387.1494086, + 1790225387.2226455, + 1790225387.2925904, + 1790225387.361917, + 1790225387.4445198, + 1790225387.5250268, + 1790225387.6003284, + 1790225387.671416, + 1790225387.7394278, + 1790225387.817642, + 1790225387.88643, + 1790225387.9700027, + 1790225388.041394, + 1790225388.113296, + 1790225388.1852202, + 1790225388.2662663, + 1790225388.3352406, + 1790225388.4061966, + 1790225388.4881597, + 1790225388.56426, + 1790225388.6383903, + 1790225388.7100487, + 1790225388.7827818, + 1790225388.856141, + 1790225388.9292014, + 1790225388.999607, + 1790225389.0764742, + 1790225389.1499898, + 1790225389.2332013, + 1790225389.3110394, + 1790225389.3794649, + 1790225389.4531364, + 1790225389.5305574, + 1790225389.605473, + 1790225389.675414, + 1790225389.7484944, + 1790225389.8186095, + 1790225389.8876464, + 1790225389.9664006, + 1790225390.0482163, + 1790225390.1255634, + 1790225390.2032485, + 1790225390.2752562, + 1790225390.351381, + 1790225390.4247744, + 1790225390.5012095, + 1790225390.5822246, + 1790225390.6576927, + 1790225390.7308774, + 1790225390.8159387, + 1790225390.8847463, + 1790225390.9534845, + 1790225391.0336769, + 1790225391.108654, + 1790225391.188527, + 1790225391.2635126, + 1790225391.3374372, + 1790225391.4136584, + 1790225391.4845502, + 1790225391.5611675, + 1790225391.6407123, + 1790225391.7111073, + 1790225391.782809, + 1790225391.8632228, + 1790225391.9368463, + 1790225392.0132616, + 1790225392.0999014, + 1790225392.1686177, + 1790225392.2488291, + 1790225392.3269184, + 1790225392.4057896, + 1790225392.4755158, + 1790225392.5531182, + 1790225392.6259315, + 1790225392.704542, + 1790225392.7849214, + 1790225392.8585038, + 1790225392.9338138 + ], + "text": " supports operations such as insertion, deletion, and traversal. A binary search tree is a tree where each node has at most two children, and the left and right children are such that the left subtree contains all nodes with values less than the node's value, and the right subtree contains all nodes with values greater than the node's value. A binary search tree is a data structure that supports operations such as insertion, deletion, and traversal. A binary search tree is a tree where each node has at most two children, and the left and right children are such that the left subtree contains all nodes with values less than the", + "output_token_ids": [ + 20815, + 13127, + 2129, + 463, + 54525, + 25, + 62316, + 25, + 317, + 8709, + 46267, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 9905, + 2067, + 2440, + 6795, + 1044, + 511, + 2026, + 1841, + 4672, + 25, + 317, + 275, + 3887, + 317, + 2430, + 4672, + 599, + 2129, + 455, + 275, + 3887, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 3921, + 1489, + 275, + 6795, + 1045, + 2613, + 25, + 317, + 275, + 2430, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 9063, + 1489, + 275, + 6795, + 1045, + 2613, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 1870, + 6982, + 455, + 20815, + 13127, + 2129, + 463, + 54525, + 25, + 62316, + 25, + 317, + 8709, + 46267, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 9905, + 2067, + 2440, + 6795, + 1044, + 511, + 2026, + 1841, + 4672, + 25, + 317, + 275, + 3887, + 317, + 2430, + 4672, + 599, + 2129, + 455, + 275, + 3887, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 3921, + 1489, + 275 + ], + "ttft_s": 0.07764935493469238, + "decode_tok_per_s": 13.255403170203591, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 45, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "prompt": "plain_8", + "request_id": "d3d6eefa25424d81-11", + "session_id": "d3d6eefa25424d81", + "epoch": 0, + "prompt_chars": 38, + "prompt_tokens": 9, + "output_tokens": 128, + "submitted_unix": 1790225392.9341042, + "first_token_unix": 1790225393.0269997, + "last_token_unix": 1790225402.4720516, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790225393.0269997, + 1790225393.0995147, + 1790225393.173514, + 1790225393.2438047, + 1790225393.314878, + 1790225393.3876586, + 1790225393.4688191, + 1790225393.5439045, + 1790225393.6197248, + 1790225393.6854873, + 1790225393.7560608, + 1790225393.831046, + 1790225393.910118, + 1790225393.9855688, + 1790225394.0611315, + 1790225394.132349, + 1790225394.2116232, + 1790225394.292502, + 1790225394.3615732, + 1790225394.434873, + 1790225394.5134516, + 1790225394.5843165, + 1790225394.6571958, + 1790225394.7284567, + 1790225394.8057213, + 1790225394.8864706, + 1790225394.963032, + 1790225395.039037, + 1790225395.1145523, + 1790225395.18977, + 1790225395.2751822, + 1790225395.3586652, + 1790225395.4398887, + 1790225395.5224862, + 1790225395.596482, + 1790225395.6660657, + 1790225395.7377748, + 1790225395.8053133, + 1790225395.8806612, + 1790225395.9534705, + 1790225396.0333533, + 1790225396.108735, + 1790225396.1805787, + 1790225396.2555737, + 1790225396.323106, + 1790225396.3913164, + 1790225396.4719882, + 1790225396.538777, + 1790225396.618749, + 1790225396.6972196, + 1790225396.7634864, + 1790225396.8370328, + 1790225396.9095507, + 1790225396.9798992, + 1790225397.0456254, + 1790225397.1213632, + 1790225397.2062154, + 1790225397.280249, + 1790225397.3523324, + 1790225397.4245665, + 1790225397.5008464, + 1790225397.5822423, + 1790225397.6547842, + 1790225397.7328875, + 1790225397.814388, + 1790225397.8868325, + 1790225397.9583974, + 1790225398.0415952, + 1790225398.1229064, + 1790225398.2013075, + 1790225398.276228, + 1790225398.3497145, + 1790225398.4199831, + 1790225398.4933388, + 1790225398.5711582, + 1790225398.640372, + 1790225398.7081497, + 1790225398.7756035, + 1790225398.8550856, + 1790225398.9233658, + 1790225398.9916453, + 1790225399.073204, + 1790225399.1422846, + 1790225399.2133372, + 1790225399.2870462, + 1790225399.367068, + 1790225399.4361029, + 1790225399.5093486, + 1790225399.5827458, + 1790225399.6537406, + 1790225399.7323322, + 1790225399.8023088, + 1790225399.8700576, + 1790225399.9419546, + 1790225400.0101082, + 1790225400.100298, + 1790225400.1713016, + 1790225400.2536976, + 1790225400.323842, + 1790225400.3962536, + 1790225400.4777963, + 1790225400.5517168, + 1790225400.6266026, + 1790225400.6986651, + 1790225400.774096, + 1790225400.8528504, + 1790225400.925352, + 1790225400.9968686, + 1790225401.063864, + 1790225401.1388042, + 1790225401.214704, + 1790225401.3024144, + 1790225401.3775127, + 1790225401.4508579, + 1790225401.523692, + 1790225401.5909555, + 1790225401.6678357, + 1790225401.7387288, + 1790225401.8103402, + 1790225401.878102, + 1790225401.9522767, + 1790225402.0231042, + 1790225402.097488, + 1790225402.1737723, + 1790225402.2427046, + 1790225402.3136322, + 1790225402.3955777, + 1790225402.4720516 + ], + "text": " 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty", + "output_token_ids": [ + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455 + ], + "ttft_s": 0.0928955078125, + "decode_tok_per_s": 13.44619396806077, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 48, + "dropped_stale": 0, + "epoch": 0 + } + } + ], + "cancel": { + "request_id": "09b6c8ecc04243c8-12", + "aborted_in_backend": true, + "producer_stopped": true, + "epoch_retired": 1, + "dropped_stale_events": 1, + "output_tokens_at_cancel": 9, + "session_epoch_now": 1, + "inflight_after": 0, + "nvml_device_used_before": null, + "nvml_device_used_after": null, + "note": "a cancelled request's KV blocks return to vLLM's pool, which is pre-allocated; the device counter is therefore expected NOT to fall. What must fall is the in-flight count, and no retired-epoch event may be delivered.", + "events_before_cancel": 8, + "events_after_cancel": [], + "clean": true + }, + "outcome": "completed" +} \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/branch_run_manifest.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/branch_run_manifest.json new file mode 100644 index 000000000..59a8dccc7 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/branch_run_manifest.json @@ -0,0 +1,62 @@ +{ + "scope": "fork branch Spark 1.7B BF16 WSL CPU complete text", + "source_checkout": "/home/zhout/project/edge_infer/vllm-omni-edge", + "source_head": "8978302a1b7b86f17f45d530c544fb87bec8990d", + "runtime": { + "python": "3.12.13", + "platform": "Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.43", + "torch": "2.13.0+cpu", + "vllm": "0.28.0", + "vllm_omni": "0.29.0rc2.dev71+g00510ce38.d20260922", + "vllm_omni_file": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/__init__.py", + "vllm_file": "/home/zhout/project/edge_infer/.venvs/omni-cpu/lib/python3.12/site-packages/vllm/__init__.py", + "checkouts": { + "/home/zhout/project/edge_infer/vllm-omni-edge": "8978302a1b7b86f17f45d530c544fb87bec8990d-dirty", + "/home/zhout/project/edge_infer": "758b3af238b19e2c2abc668f23a767bb835a4a22-dirty" + } + }, + "checkpoint_revision": "14d6e83c13c7add2b62a7c39b2131f4ed1cddcf8", + "commands": "PYTHONPATH=/home/zhout/project/edge_infer/vllm-omni-edge; accept/parity CLI --max-model-len 4096 --max-tokens 128; profile script 1 warmup + 20 serial 64-token requests", + "code_files": [ + { + "path": "vllm_omni/edge/local/engine.py", + "bytes": 34926, + "sha256": "ad2427a0a7a65201fa7463ad879ef42ac0190af76a59c88a6cb5021f9ea3a0f6" + }, + { + "path": "vllm_omni/edge/local/plan.py", + "bytes": 28619, + "sha256": "d4665e68b47513dd62d746091e840f652270f37467da0c5c5528613a06ed9fe3" + }, + { + "path": "vllm_omni/edge/local/cli.py", + "bytes": 21877, + "sha256": "c3b5685125b39474008df1a030779cd3e3188495af5080a189c7473f5a8041bc" + }, + { + "path": "benchmarks/edge_harness/experiments/profile_spark_bf16_omni_cpu.py", + "bytes": 4857, + "sha256": "2af5d2b4520850c6f46a5af2db508e976c1c976dd24c50de5e3ee869917b5285" + } + ], + "reports": [ + { + "path": "benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/accept_branch_report.json", + "bytes": 164113, + "sha256": "a26c29eab57097c598bb9a86ce1bf30bd94134e3b0f281c13add7c0a15d3e15a" + }, + { + "path": "benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/parity_branch_report.json", + "bytes": 58645, + "sha256": "eca6ef32c708580d4dcda4584b4f5fe811bbe37a6f28dc606b053949a8c7db44" + }, + { + "path": "benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/profile20_branch_report.json", + "bytes": 110420, + "sha256": "2dbe6ca73a3f009c5a6de26500eb7f585fd7dd732f079d8730c892ef40ee42f8" + } + ], + "accepted": true, + "greedy_exact_prompts": 12, + "measured_requests": 20 +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/parity_branch_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/parity_branch_report.json new file mode 100644 index 000000000..2bef864ba --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/parity_branch_report.json @@ -0,0 +1,3694 @@ +{ + "summary": { + "prompts": 12, + "exact": 12, + "exact_fraction": 1.0, + "min_agreement_prefix": null, + "mean_agreement_prefix": null, + "note": "Greedy decoding is not bitwise stable across batch shapes: a different prefill chunking reorders reductions and can flip an argmax at a near-tie. agreement_prefix is reported so a late single-token split is distinguishable from an early structural one." + }, + "env": { + "VLLM_USE_FLASHINFER_SAMPLER": "0", + "VLLM_WSL2_ENABLE_PIN_MEMORY": "1", + "TOKENIZERS_PARALLELISM": "false" + }, + "max_tokens": 128, + "plan": { + "admitted": true, + "backend": "vllm:cpu", + "selected_device": { + "device_id": "cpu", + "kind": "cpu", + "vendor": "amd", + "name": "AMD Ryzen AI 9 HX 370 w/ Radeon 890M", + "backend": "vllm:cpu", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 33184976896, + "compute_capability": null, + "weight_formats": [ + "compressed-tensors:int8", + "dense", + "gptq" + ], + "evidence": "B", + "reason": "", + "masked": false, + "extra": { + "n_physical": 12, + "n_logical": 24, + "ram_available_bytes": 30824521728, + "bf16": true + } + }, + "devices": [ + { + "device_id": "npu:amd", + "kind": "npu", + "vendor": "amd", + "name": "NPU Compute Accelerator Device", + "backend": "ort:vitisai", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 0, + "compute_capability": null, + "weight_formats": [ + "onnx:a16w8" + ], + "evidence": "B", + "reason": "An MCDM device; WSL2's GPU-PV forwards WDDM display adapters only, so it has no device node here and nothing installed inside WSL reaches it. It does work from a Windows-side process -- onnxruntime>=1.25 plus the WindowsWorkload.EP.AMD.VitisAI.Framework appx, loading onnxruntime_vitisai_ep.dll (not the RyzenAI *Light* EP beside it) with its own directory on the DLL search path, against an A16W8-quantized opset-21 graph. Measured 5.3x the CPU on a 1024x2048x2048 GEMM. See vllm_omni/edge/npu_ryzenai.py.", + "masked": false, + "extra": { + "source": "wsl-interop", + "probe_route": "ryzenai-ep-windows", + "host_pool_bytes": 33184976896, + "host_pool_available_bytes": 30824521728, + "worker_route": "ort-vitisai", + "worker_interpreter": "/mnt/c/Users/zhout/npu-ep/Scripts/python.exe", + "routes": [ + { + "name": "ort-vitisai", + "interpreter": "/mnt/c/Users/zhout/npu-ep/Scripts/python.exe", + "worker": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/edge/local/external/worker_ort.py", + "ep": "vitisai", + "is_windows": true, + "available": true, + "reason": "", + "extra": null + } + ], + "executes": "exported graphs, not checkpoints", + "dedicated_vram_bytes": 0 + } + }, + { + "device_id": "gpu_integrated:amd", + "kind": "gpu_integrated", + "vendor": "amd", + "name": "AMD Radeon(TM) 890M Graphics", + "backend": "ort:dml", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 0, + "compute_capability": null, + "weight_formats": [ + "onnx:fp16", + "onnx:fp32" + ], + "evidence": "B", + "reason": "No /dev/dri under WSL2, but reachable through DirectML over /dev/dxg: pip install torch-directml in its own venv (it pins torch==2.4.1). Measured 1.12 TFLOP/s fp32 and 5-7.4 GB/s -- below the CPU on both, so route work here only when the CPU is the thing you are trying to free.", + "masked": false, + "extra": { + "source": "wsl-interop", + "probe_route": "directml", + "host_pool_bytes": 33184976896, + "host_pool_available_bytes": 30824521728, + "worker_route": "ort-dml", + "worker_interpreter": "/mnt/c/Users/zhout/dml-ep/Scripts/python.exe", + "routes": [ + { + "name": "ort-dml", + "interpreter": "/mnt/c/Users/zhout/dml-ep/Scripts/python.exe", + "worker": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/edge/local/external/worker_ort.py", + "ep": "dml", + "is_windows": true, + "available": true, + "reason": "", + "extra": null + }, + { + "name": "torch-dml", + "interpreter": "/home/zhout/project/edge_infer/.venvs/dml/bin/python", + "worker": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/edge/local/external/worker_dml.py", + "ep": "dml", + "is_windows": false, + "available": true, + "reason": "", + "extra": null + } + ], + "executes": "exported graphs, not checkpoints", + "dedicated_vram_bytes": 0 + } + }, + { + "device_id": "cpu", + "kind": "cpu", + "vendor": "amd", + "name": "AMD Ryzen AI 9 HX 370 w/ Radeon 890M", + "backend": "vllm:cpu", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 33184976896, + "compute_capability": null, + "weight_formats": [ + "compressed-tensors:int8", + "dense", + "gptq" + ], + "evidence": "B", + "reason": "", + "masked": false, + "extra": { + "n_physical": 12, + "n_logical": 24, + "ram_available_bytes": 30824521728, + "bf16": true + } + } + ], + "stage": { + "stage_id": 0, + "model_stage": "spark2_5", + "execution_type": "LLM_AR", + "input_sources": [], + "final_output": true, + "final_output_type": "text", + "owns_tokenizer": true, + "state": "kv_cache", + "streaming_granularity": "token" + }, + "engine_kwargs": { + "max_model_len": 4096, + "max_num_seqs": 1, + "max_num_batched_tokens": 2048, + "enforce_eager": true, + "enable_prefix_caching": false, + "gpu_memory_utilization": 0.27, + "kv_cache_memory_bytes": 293601280, + "dtype": "bfloat16" + }, + "reservations": [ + { + "pool": "host_ram", + "purpose": "weights", + "bytes": 3415340496, + "lifetime": "session_weights", + "reclaimable": "no", + "evidence": "D", + "note": "2 safetensors shard(s), on-disk size; the load moved +6.39 GiB of process-tree RSS, which bounds weights + backend context together and is not an attribution to the weights alone", + "actual_upper_bound_bytes": 6864261120 + }, + { + "pool": "host_ram", + "purpose": "kv_cache", + "bytes": 293601280, + "lifetime": "session", + "reclaimable": "on_evict", + "evidence": "E", + "note": "flat budget at 1x context; 96 MiB if the backend accounts 21 sliding layers separately", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "activations", + "bytes": 101187584, + "lifetime": "request", + "reclaimable": "on_release", + "evidence": "E", + "note": "2048-token prefill chunk x 12 live tensors", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "backend_workspace", + "bytes": 536870912, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "attention scratch, driver/allocator context", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "load_transient", + "bytes": 1707670248, + "lifetime": "load", + "reclaimable": "on_release", + "evidence": "E", + "note": "freed once the weights are resident; peaks with the largest shard", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "external_reserve", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "memory this engine does not own on a shared pool", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "safety_margin", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "fragmentation and allocator slack", + "actual_upper_bound_bytes": null + } + ], + "reserved_total_bytes": 8202154168, + "kv_budget": { + "bytes_total": 293601280, + "bytes_total_hybrid": 100925440, + "bytes_per_token_flat": 57344, + "token_layers_hybrid": 39424, + "token_layers_flat": 114688, + "sliding_layers": 21, + "full_layers": 7, + "window": 512, + "linear_layers": 0, + "state_bytes_per_seq": 0, + "state_bytes_total": 0, + "summary": "280 MiB flat; 96 MiB if the backend accounts 21 sliding@512 layers separately (2.91x)", + "saving_vs_flat": 2.909090909090909 + }, + "refusals": [ + { + "code": "no_exported_graph", + "device_id": "npu:amd", + "message": "npu:amd executes exported graphs (['onnx:a16w8']), not checkpoints, so a whole autoregressive text session cannot be placed on it", + "remedy": "place a single stage there instead, via vllm_omni.edge.local.external.stage.plan_external_stage; the decode loop stays on the CPU or the GPU because both of these devices read the same system memory it does" + }, + { + "code": "no_exported_graph", + "device_id": "gpu_integrated:amd", + "message": "gpu_integrated:amd executes exported graphs (['onnx:fp16', 'onnx:fp32']), not checkpoints, so a whole autoregressive text session cannot be placed on it", + "remedy": "place a single stage there instead, via vllm_omni.edge.local.external.stage.plan_external_stage; the decode loop stays on the CPU or the GPU because both of these devices read the same system memory it does" + } + ], + "fallbacks": [ + "shorter --max-model-len reduces the KV reservation linearly" + ], + "request_limits": { + "max_model_len": 4096, + "max_num_seqs": 1, + "max_num_batched_tokens": 2048 + }, + "manifest": { + "model_dir": "/home/zhout/project/edge_infer/models/Spark-X2.5-1.7B-BF16", + "model_type": "spark2_5", + "architectures": [ + "Spark2_5ForCausalLM" + ], + "dtype": "bfloat16", + "weight_format": "dense", + "quantization": null, + "config_sha256": "16aa5d3619d0d893e7157f2499675430844eb7b383c80ecc1b3e8e8928a75d52", + "tokenizer_sha256": "72b88cd03593f92c7307ac23653df70ca383df15357fca03f6c5c0b3b3ea8f17", + "tokenizer_files": [ + "tokenizer.json", + "tokenizer_config.json", + "special_tokens_map.json", + "chat_template.jinja", + "vocab.json", + "merges.txt", + "generation_config.json" + ], + "weight_files": [ + "model-00001-of-00002.safetensors", + "model-00002-of-00002.safetensors" + ], + "weight_bytes": 3415340496, + "weight_sha256": null, + "revision": null, + "runtime": { + "python": "3.12.13", + "platform": "Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.43", + "torch": "2.13.0+cpu", + "vllm": "0.28.0", + "vllm_omni": "0.29.0rc2.dev71+g00510ce38.d20260922", + "vllm_omni_file": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/__init__.py", + "vllm_file": "/home/zhout/project/edge_infer/.venvs/omni-cpu/lib/python3.12/site-packages/vllm/__init__.py", + "checkouts": { + "/home/zhout/project/edge_infer/vllm-omni-edge": "8978302a1b7b86f17f45d530c544fb87bec8990d-dirty", + "/home/zhout/project/edge_infer": "758b3af238b19e2c2abc668f23a767bb835a4a22-dirty" + } + }, + "notes": [ + "weights identified by name+size, not content; pass digest_weights=True to hash them" + ], + "artifact_id": "c777e48f9e300714" + }, + "notes": [ + "activations, workspace and the load transient are estimates (E); engine.py records the measured peak against them after the load" + ] + }, + "prompts": [ + { + "name": "chat_short", + "prompt_tokens": 28, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + }, + { + "name": "chat_tools", + "prompt_tokens": 137, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + }, + { + "name": "chat_long", + "prompt_tokens": 2465, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + }, + { + "name": "plain_0", + "prompt_tokens": 5, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + }, + { + "name": "plain_1", + "prompt_tokens": 13, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + }, + { + "name": "plain_2", + "prompt_tokens": 18, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + }, + { + "name": "plain_3", + "prompt_tokens": 8, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + }, + { + "name": "plain_4", + "prompt_tokens": 7, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + }, + { + "name": "plain_5", + "prompt_tokens": 7, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + }, + { + "name": "plain_6", + "prompt_tokens": 3, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + }, + { + "name": "plain_7", + "prompt_tokens": 9, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + }, + { + "name": "plain_8", + "prompt_tokens": 9, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + } + ], + "reference": { + "chat_short": { + "token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 198, + 198, + 34542, + 25, + 275, + 3754, + 1045, + 5974, + 390, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 373, + 1633, + 312, + 4553, + 275, + 6787, + 27, + 614, + 6787, + 390, + 518, + 110949, + 4348, + 373, + 2029, + 6340, + 1839, + 455, + 5240, + 27, + 198, + 198, + 4023, + 1553, + 1045, + 2261, + 275, + 23220, + 39, + 518, + 47648, + 304, + 1135, + 5240, + 1848, + 4358, + 373, + 2029, + 9666 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris\n\nWait, the user's message is: \"What is the capital of France? Answer in one word.\" I need to provide the answer. The answer is \"Paris\". I should output just that word.\n\nBut let's see the instruction: \"Answer in one word.\" So I should respond", + "prompt_tokens": 28 + }, + "chat_tools": { + "token_ids": [ + 1046, + 3754, + 13025, + 312, + 1843, + 275, + 14510, + 304, + 75040, + 103, + 872, + 2430, + 2343, + 304, + 423, + 108364, + 27, + 373, + 760, + 259, + 2122, + 4234, + 4848, + 2561, + 913, + 76, + 64301, + 77, + 455, + 764, + 41002, + 14510, + 396, + 259, + 6594, + 27, + 9619, + 713, + 2426, + 488, + 478, + 275, + 6594, + 518, + 64, + 872, + 103, + 872, + 15, + 317, + 9261, + 518, + 8281, + 4348, + 4, + 130977, + 913, + 76, + 64301, + 130980, + 58593, + 130981, + 130982, + 64, + 872, + 103, + 872, + 130983, + 130980, + 11220, + 130981, + 130982, + 8281, + 130983, + 130984, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1 + ], + "text": "The user wants to know the weather in Shenzhen right now in Celsius. I have a function available called `get_weather` that can retrieve weather for a city. Let me call it with the city \"Shenzhen\" and unit \"celsius\".get_weathercityShenzhenunitcelsius", + "prompt_tokens": 137 + }, + "chat_long": { + "token_ids": [ + 3066, + 599, + 4114, + 300, + 31946, + 35404, + 478, + 7006, + 27149, + 396, + 56774, + 49408, + 220, + 30, + 1953, + 220, + 30, + 31, + 29, + 27, + 614, + 5565, + 27179, + 39, + 518, + 4766, + 390, + 275, + 5760, + 396, + 56774, + 20882, + 220, + 36, + 32, + 5171, + 1994, + 1633, + 312, + 2432, + 275, + 5760, + 12610, + 312, + 20882, + 220, + 36, + 32, + 27, + 198, + 198, + 48992, + 511, + 275, + 2631, + 25, + 679, + 2261, + 39, + 198, + 5369, + 220, + 30, + 39, + 20882, + 220, + 30, + 3192, + 220, + 30, + 29, + 29, + 36, + 198, + 5369, + 220, + 31, + 39, + 20882, + 220, + 31, + 3192, + 220, + 30, + 29, + 30, + 33, + 198, + 2097, + 198, + 3066, + 1633, + 312, + 2432, + 275, + 11411, + 396, + 20882, + 220, + 36, + 32, + 27, + 198, + 198, + 13104, + 1045, + 2631, + 275, + 49408, + 317, + 1140, + 27149, + 304, + 3310, + 27, + 614, + 2631, + 390, + 4114, + 463, + 39, + 198, + 5369, + 220, + 30, + 39, + 220, + 30 + ], + "text": "We are given an inventory listing with item codes for warehouse districts 1 through 120. The question asks: \"What is the code for warehouse district 73?\" We need to find the code corresponding to district 73.\n\nLooking at the list, we see:\nItem 1: district 1 -> 1007\nItem 2: district 2 -> 1014\n...\nWe need to find the entry for district 73.\n\nLet's list the districts and their codes in order. The list is given as:\nItem 1: 1", + "prompt_tokens": 2465 + }, + "plain_0": { + "token_ids": [ + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314 + ], + "text": " the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of", + "prompt_tokens": 5 + }, + "plain_1": { + "token_ids": [ + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174 + ], + "text": " mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission", + "prompt_tokens": 13 + }, + "plain_2": { + "token_ids": [ + 293, + 259, + 25, + 287, + 422, + 220, + 29, + 25, + 220, + 30, + 198, + 293, + 396, + 2198, + 304, + 4044, + 5738, + 2407, + 198, + 361, + 259, + 25, + 287, + 422, + 287, + 25, + 259, + 1336, + 287, + 198, + 361, + 690, + 2198, + 2126, + 292, + 39, + 198, + 462, + 948, + 259, + 198, + 293, + 948, + 259, + 198, + 198, + 198, + 3068, + 2772, + 11834, + 198, + 293, + 292, + 422, + 1455, + 16040, + 4112, + 198, + 293, + 3594, + 3836, + 41162, + 65043, + 5738, + 1771, + 198, + 198, + 198, + 556, + 7001, + 2215, + 1423, + 2126, + 51012, + 14872, + 72067, + 198, + 293, + 2772, + 663, + 198, + 198, + 198, + 3992, + 12792, + 3259, + 2651, + 8189, + 280, + 1740, + 26813, + 302, + 2118, + 8210, + 2572, + 8189, + 4366, + 280, + 1125, + 28490, + 26813, + 6922, + 12792, + 302, + 198, + 198, + 16689, + 220, + 8189, + 2572, + 198, + 198, + 30, + 27, + 7307, + 8156, + 3052, + 8189, + 47165, + 198, + 256, + 706, + 220, + 1345, + 12792, + 457, + 2561, + 91 + ], + "text": " a, b = 0, 1\n for _ in range(n):\n a, b = b, a + b\n if _ == n:\n return a\n return a\n\n\ndef main():\n n = int(input())\n print(fibonacci(n))\n\n\nif __name__ == \"__main__\":\n main()\n\n\n你的代码存在一些错误,需要修正。请详细分析错误原因,并给出修正后的代码。\n\n### 错误分析\n\n1. **输入处理错误**:\n - 原代码中 `n", + "prompt_tokens": 18 + }, + "plain_3": { + "token_ids": [ + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455 + ], + "text": " the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that", + "prompt_tokens": 8 + }, + "plain_4": { + "token_ids": [ + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996 + ], + "text": " to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make", + "prompt_tokens": 7 + }, + "plain_5": { + "token_ids": [ + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275 + ], + "text": " the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the", + "prompt_tokens": 7 + }, + "plain_6": { + "token_ids": [ + 13619, + 317, + 19210, + 1464, + 13619, + 317, + 19210, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317 + ], + "text": " carbon and oxygen into carbon and oxygen and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and", + "prompt_tokens": 3 + }, + "plain_7": { + "token_ids": [ + 20815, + 13127, + 2129, + 463, + 54525, + 25, + 62316, + 25, + 317, + 8709, + 46267, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 9905, + 2067, + 2440, + 6795, + 1044, + 511, + 2026, + 1841, + 4672, + 25, + 317, + 275, + 3887, + 317, + 2430, + 4672, + 599, + 2129, + 455, + 275, + 3887, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 3921, + 1489, + 275, + 6795, + 1045, + 2613, + 25, + 317, + 275, + 2430, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 9063, + 1489, + 275, + 6795, + 1045, + 2613, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 1870, + 6982, + 455, + 20815, + 13127, + 2129, + 463, + 54525, + 25, + 62316, + 25, + 317, + 8709, + 46267, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 9905, + 2067, + 2440, + 6795, + 1044, + 511, + 2026, + 1841, + 4672, + 25, + 317, + 275, + 3887, + 317, + 2430, + 4672, + 599, + 2129, + 455, + 275, + 3887, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 3921, + 1489, + 275 + ], + "text": " supports operations such as insertion, deletion, and traversal. A binary search tree is a tree where each node has at most two children, and the left and right children are such that the left subtree contains all nodes with values less than the node's value, and the right subtree contains all nodes with values greater than the node's value. A binary search tree is a data structure that supports operations such as insertion, deletion, and traversal. A binary search tree is a tree where each node has at most two children, and the left and right children are such that the left subtree contains all nodes with values less than the", + "prompt_tokens": 9 + }, + "plain_8": { + "token_ids": [ + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455 + ], + "text": " 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty", + "prompt_tokens": 9 + } + }, + "engine": { + "chat_short": { + "token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 198, + 198, + 34542, + 25, + 275, + 3754, + 1045, + 5974, + 390, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 373, + 1633, + 312, + 4553, + 275, + 6787, + 27, + 614, + 6787, + 390, + 518, + 110949, + 4348, + 373, + 2029, + 6340, + 1839, + 455, + 5240, + 27, + 198, + 198, + 4023, + 1553, + 1045, + 2261, + 275, + 23220, + 39, + 518, + 47648, + 304, + 1135, + 5240, + 1848, + 4358, + 373, + 2029, + 9666 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris\n\nWait, the user's message is: \"What is the capital of France? Answer in one word.\" I need to provide the answer. The answer is \"Paris\". I should output just that word.\n\nBut let's see the instruction: \"Answer in one word.\" So I should respond", + "prompt_tokens": 28 + }, + "chat_tools": { + "token_ids": [ + 1046, + 3754, + 13025, + 312, + 1843, + 275, + 14510, + 304, + 75040, + 103, + 872, + 2430, + 2343, + 304, + 423, + 108364, + 27, + 373, + 760, + 259, + 2122, + 4234, + 4848, + 2561, + 913, + 76, + 64301, + 77, + 455, + 764, + 41002, + 14510, + 396, + 259, + 6594, + 27, + 9619, + 713, + 2426, + 488, + 478, + 275, + 6594, + 518, + 64, + 872, + 103, + 872, + 15, + 317, + 9261, + 518, + 8281, + 4348, + 4, + 130977, + 913, + 76, + 64301, + 130980, + 58593, + 130981, + 130982, + 64, + 872, + 103, + 872, + 130983, + 130980, + 11220, + 130981, + 130982, + 8281, + 130983, + 130984, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1 + ], + "text": "The user wants to know the weather in Shenzhen right now in Celsius. I have a function available called `get_weather` that can retrieve weather for a city. Let me call it with the city \"Shenzhen\" and unit \"celsius\".get_weathercityShenzhenunitcelsius", + "prompt_tokens": 137 + }, + "chat_long": { + "token_ids": [ + 3066, + 599, + 4114, + 300, + 31946, + 35404, + 478, + 7006, + 27149, + 396, + 56774, + 49408, + 220, + 30, + 1953, + 220, + 30, + 31, + 29, + 27, + 614, + 5565, + 27179, + 39, + 518, + 4766, + 390, + 275, + 5760, + 396, + 56774, + 20882, + 220, + 36, + 32, + 5171, + 1994, + 1633, + 312, + 2432, + 275, + 5760, + 12610, + 312, + 20882, + 220, + 36, + 32, + 27, + 198, + 198, + 48992, + 511, + 275, + 2631, + 25, + 679, + 2261, + 39, + 198, + 5369, + 220, + 30, + 39, + 20882, + 220, + 30, + 3192, + 220, + 30, + 29, + 29, + 36, + 198, + 5369, + 220, + 31, + 39, + 20882, + 220, + 31, + 3192, + 220, + 30, + 29, + 30, + 33, + 198, + 2097, + 198, + 3066, + 1633, + 312, + 2432, + 275, + 11411, + 396, + 20882, + 220, + 36, + 32, + 27, + 198, + 198, + 13104, + 1045, + 2631, + 275, + 49408, + 317, + 1140, + 27149, + 304, + 3310, + 27, + 614, + 2631, + 390, + 4114, + 463, + 39, + 198, + 5369, + 220, + 30, + 39, + 220, + 30 + ], + "text": "We are given an inventory listing with item codes for warehouse districts 1 through 120. The question asks: \"What is the code for warehouse district 73?\" We need to find the code corresponding to district 73.\n\nLooking at the list, we see:\nItem 1: district 1 -> 1007\nItem 2: district 2 -> 1014\n...\nWe need to find the entry for district 73.\n\nLet's list the districts and their codes in order. The list is given as:\nItem 1: 1", + "prompt_tokens": 2465 + }, + "plain_0": { + "token_ids": [ + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314 + ], + "text": " the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of", + "prompt_tokens": 5 + }, + "plain_1": { + "token_ids": [ + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174 + ], + "text": " mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission", + "prompt_tokens": 13 + }, + "plain_2": { + "token_ids": [ + 293, + 259, + 25, + 287, + 422, + 220, + 29, + 25, + 220, + 30, + 198, + 293, + 396, + 2198, + 304, + 4044, + 5738, + 2407, + 198, + 361, + 259, + 25, + 287, + 422, + 287, + 25, + 259, + 1336, + 287, + 198, + 361, + 690, + 2198, + 2126, + 292, + 39, + 198, + 462, + 948, + 259, + 198, + 293, + 948, + 259, + 198, + 198, + 198, + 3068, + 2772, + 11834, + 198, + 293, + 292, + 422, + 1455, + 16040, + 4112, + 198, + 293, + 3594, + 3836, + 41162, + 65043, + 5738, + 1771, + 198, + 198, + 198, + 556, + 7001, + 2215, + 1423, + 2126, + 51012, + 14872, + 72067, + 198, + 293, + 2772, + 663, + 198, + 198, + 198, + 3992, + 12792, + 3259, + 2651, + 8189, + 280, + 1740, + 26813, + 302, + 2118, + 8210, + 2572, + 8189, + 4366, + 280, + 1125, + 28490, + 26813, + 6922, + 12792, + 302, + 198, + 198, + 16689, + 220, + 8189, + 2572, + 198, + 198, + 30, + 27, + 7307, + 8156, + 3052, + 8189, + 47165, + 198, + 256, + 706, + 220, + 1345, + 12792, + 457, + 2561, + 91 + ], + "text": " a, b = 0, 1\n for _ in range(n):\n a, b = b, a + b\n if _ == n:\n return a\n return a\n\n\ndef main():\n n = int(input())\n print(fibonacci(n))\n\n\nif __name__ == \"__main__\":\n main()\n\n\n你的代码存在一些错误,需要修正。请详细分析错误原因,并给出修正后的代码。\n\n### 错误分析\n\n1. **输入处理错误**:\n - 原代码中 `n", + "prompt_tokens": 18 + }, + "plain_3": { + "token_ids": [ + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455 + ], + "text": " the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that", + "prompt_tokens": 8 + }, + "plain_4": { + "token_ids": [ + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996 + ], + "text": " to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make", + "prompt_tokens": 7 + }, + "plain_5": { + "token_ids": [ + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275 + ], + "text": " the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the", + "prompt_tokens": 7 + }, + "plain_6": { + "token_ids": [ + 13619, + 317, + 19210, + 1464, + 13619, + 317, + 19210, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317 + ], + "text": " carbon and oxygen into carbon and oxygen and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and", + "prompt_tokens": 3 + }, + "plain_7": { + "token_ids": [ + 20815, + 13127, + 2129, + 463, + 54525, + 25, + 62316, + 25, + 317, + 8709, + 46267, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 9905, + 2067, + 2440, + 6795, + 1044, + 511, + 2026, + 1841, + 4672, + 25, + 317, + 275, + 3887, + 317, + 2430, + 4672, + 599, + 2129, + 455, + 275, + 3887, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 3921, + 1489, + 275, + 6795, + 1045, + 2613, + 25, + 317, + 275, + 2430, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 9063, + 1489, + 275, + 6795, + 1045, + 2613, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 1870, + 6982, + 455, + 20815, + 13127, + 2129, + 463, + 54525, + 25, + 62316, + 25, + 317, + 8709, + 46267, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 9905, + 2067, + 2440, + 6795, + 1044, + 511, + 2026, + 1841, + 4672, + 25, + 317, + 275, + 3887, + 317, + 2430, + 4672, + 599, + 2129, + 455, + 275, + 3887, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 3921, + 1489, + 275 + ], + "text": " supports operations such as insertion, deletion, and traversal. A binary search tree is a tree where each node has at most two children, and the left and right children are such that the left subtree contains all nodes with values less than the node's value, and the right subtree contains all nodes with values greater than the node's value. A binary search tree is a data structure that supports operations such as insertion, deletion, and traversal. A binary search tree is a tree where each node has at most two children, and the left and right children are such that the left subtree contains all nodes with values less than the", + "prompt_tokens": 9 + }, + "plain_8": { + "token_ids": [ + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455 + ], + "text": " 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty", + "prompt_tokens": 9 + } + } +} \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/parity_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/parity_report.json new file mode 100644 index 000000000..60b201151 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/parity_report.json @@ -0,0 +1,3694 @@ +{ + "summary": { + "prompts": 12, + "exact": 12, + "exact_fraction": 1.0, + "min_agreement_prefix": null, + "mean_agreement_prefix": null, + "note": "Greedy decoding is not bitwise stable across batch shapes: a different prefill chunking reorders reductions and can flip an argmax at a near-tie. agreement_prefix is reported so a late single-token split is distinguishable from an early structural one." + }, + "env": { + "VLLM_USE_FLASHINFER_SAMPLER": "0", + "VLLM_WSL2_ENABLE_PIN_MEMORY": "1", + "TOKENIZERS_PARALLELISM": "false" + }, + "max_tokens": 128, + "plan": { + "admitted": true, + "backend": "vllm:cpu", + "selected_device": { + "device_id": "cpu", + "kind": "cpu", + "vendor": "amd", + "name": "AMD Ryzen AI 9 HX 370 w/ Radeon 890M", + "backend": "vllm:cpu", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 33184976896, + "compute_capability": null, + "weight_formats": [ + "compressed-tensors:int8", + "dense", + "gptq" + ], + "evidence": "B", + "reason": "", + "masked": false, + "extra": { + "n_physical": 12, + "n_logical": 24, + "ram_available_bytes": 30846644224, + "bf16": true + } + }, + "devices": [ + { + "device_id": "npu:amd", + "kind": "npu", + "vendor": "amd", + "name": "NPU Compute Accelerator Device", + "backend": "ort:vitisai", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 0, + "compute_capability": null, + "weight_formats": [ + "onnx:a16w8" + ], + "evidence": "B", + "reason": "An MCDM device; WSL2's GPU-PV forwards WDDM display adapters only, so it has no device node here and nothing installed inside WSL reaches it. It does work from a Windows-side process -- onnxruntime>=1.25 plus the WindowsWorkload.EP.AMD.VitisAI.Framework appx, loading onnxruntime_vitisai_ep.dll (not the RyzenAI *Light* EP beside it) with its own directory on the DLL search path, against an A16W8-quantized opset-21 graph. Measured 5.3x the CPU on a 1024x2048x2048 GEMM. See vllm_omni/edge/npu_ryzenai.py.", + "masked": false, + "extra": { + "source": "wsl-interop", + "probe_route": "ryzenai-ep-windows", + "host_pool_bytes": 33184976896, + "host_pool_available_bytes": 30846644224, + "worker_route": "ort-vitisai", + "worker_interpreter": "/mnt/c/Users/zhout/npu-ep/Scripts/python.exe", + "routes": [ + { + "name": "ort-vitisai", + "interpreter": "/mnt/c/Users/zhout/npu-ep/Scripts/python.exe", + "worker": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/edge/local/external/worker_ort.py", + "ep": "vitisai", + "is_windows": true, + "available": true, + "reason": "", + "extra": null + } + ], + "executes": "exported graphs, not checkpoints", + "dedicated_vram_bytes": 0 + } + }, + { + "device_id": "gpu_integrated:amd", + "kind": "gpu_integrated", + "vendor": "amd", + "name": "AMD Radeon(TM) 890M Graphics", + "backend": "ort:dml", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 0, + "compute_capability": null, + "weight_formats": [ + "onnx:fp16", + "onnx:fp32" + ], + "evidence": "B", + "reason": "No /dev/dri under WSL2, but reachable through DirectML over /dev/dxg: pip install torch-directml in its own venv (it pins torch==2.4.1). Measured 1.12 TFLOP/s fp32 and 5-7.4 GB/s -- below the CPU on both, so route work here only when the CPU is the thing you are trying to free.", + "masked": false, + "extra": { + "source": "wsl-interop", + "probe_route": "directml", + "host_pool_bytes": 33184976896, + "host_pool_available_bytes": 30846644224, + "worker_route": "ort-dml", + "worker_interpreter": "/mnt/c/Users/zhout/dml-ep/Scripts/python.exe", + "routes": [ + { + "name": "ort-dml", + "interpreter": "/mnt/c/Users/zhout/dml-ep/Scripts/python.exe", + "worker": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/edge/local/external/worker_ort.py", + "ep": "dml", + "is_windows": true, + "available": true, + "reason": "", + "extra": null + }, + { + "name": "torch-dml", + "interpreter": "/home/zhout/project/edge_infer/.venvs/dml/bin/python", + "worker": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/edge/local/external/worker_dml.py", + "ep": "dml", + "is_windows": false, + "available": true, + "reason": "", + "extra": null + } + ], + "executes": "exported graphs, not checkpoints", + "dedicated_vram_bytes": 0 + } + }, + { + "device_id": "cpu", + "kind": "cpu", + "vendor": "amd", + "name": "AMD Ryzen AI 9 HX 370 w/ Radeon 890M", + "backend": "vllm:cpu", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 33184976896, + "compute_capability": null, + "weight_formats": [ + "compressed-tensors:int8", + "dense", + "gptq" + ], + "evidence": "B", + "reason": "", + "masked": false, + "extra": { + "n_physical": 12, + "n_logical": 24, + "ram_available_bytes": 30846644224, + "bf16": true + } + } + ], + "stage": { + "stage_id": 0, + "model_stage": "spark2_5", + "execution_type": "LLM_AR", + "input_sources": [], + "final_output": true, + "final_output_type": "text", + "owns_tokenizer": true, + "state": "kv_cache", + "streaming_granularity": "token" + }, + "engine_kwargs": { + "max_model_len": 4096, + "max_num_seqs": 1, + "max_num_batched_tokens": 2048, + "enforce_eager": true, + "enable_prefix_caching": false, + "gpu_memory_utilization": 0.27, + "kv_cache_memory_bytes": 293601280, + "dtype": "bfloat16" + }, + "reservations": [ + { + "pool": "host_ram", + "purpose": "weights", + "bytes": 3415340496, + "lifetime": "session_weights", + "reclaimable": "no", + "evidence": "D", + "note": "2 safetensors shard(s), on-disk size; the load moved +6.39 GiB of process-tree RSS, which bounds weights + backend context together and is not an attribution to the weights alone", + "actual_upper_bound_bytes": 6864498688 + }, + { + "pool": "host_ram", + "purpose": "kv_cache", + "bytes": 293601280, + "lifetime": "session", + "reclaimable": "on_evict", + "evidence": "E", + "note": "flat budget at 1x context; 96 MiB if the backend accounts 21 sliding layers separately", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "activations", + "bytes": 101187584, + "lifetime": "request", + "reclaimable": "on_release", + "evidence": "E", + "note": "2048-token prefill chunk x 12 live tensors", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "backend_workspace", + "bytes": 536870912, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "attention scratch, driver/allocator context", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "load_transient", + "bytes": 1707670248, + "lifetime": "load", + "reclaimable": "on_release", + "evidence": "E", + "note": "freed once the weights are resident; peaks with the largest shard", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "external_reserve", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "memory this engine does not own on a shared pool", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "safety_margin", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "fragmentation and allocator slack", + "actual_upper_bound_bytes": null + } + ], + "reserved_total_bytes": 8202154168, + "kv_budget": { + "bytes_total": 293601280, + "bytes_total_hybrid": 100925440, + "bytes_per_token_flat": 57344, + "token_layers_hybrid": 39424, + "token_layers_flat": 114688, + "sliding_layers": 21, + "full_layers": 7, + "window": 512, + "linear_layers": 0, + "state_bytes_per_seq": 0, + "state_bytes_total": 0, + "summary": "280 MiB flat; 96 MiB if the backend accounts 21 sliding@512 layers separately (2.91x)", + "saving_vs_flat": 2.909090909090909 + }, + "refusals": [ + { + "code": "no_exported_graph", + "device_id": "npu:amd", + "message": "npu:amd executes exported graphs (['onnx:a16w8']), not checkpoints, so a whole autoregressive text session cannot be placed on it", + "remedy": "place a single stage there instead, via vllm_omni.edge.local.external.stage.plan_external_stage; the decode loop stays on the CPU or the GPU because both of these devices read the same system memory it does" + }, + { + "code": "no_exported_graph", + "device_id": "gpu_integrated:amd", + "message": "gpu_integrated:amd executes exported graphs (['onnx:fp16', 'onnx:fp32']), not checkpoints, so a whole autoregressive text session cannot be placed on it", + "remedy": "place a single stage there instead, via vllm_omni.edge.local.external.stage.plan_external_stage; the decode loop stays on the CPU or the GPU because both of these devices read the same system memory it does" + } + ], + "fallbacks": [ + "shorter --max-model-len reduces the KV reservation linearly" + ], + "request_limits": { + "max_model_len": 4096, + "max_num_seqs": 1, + "max_num_batched_tokens": 2048 + }, + "manifest": { + "model_dir": "/home/zhout/project/edge_infer/models/Spark-X2.5-1.7B-BF16", + "model_type": "spark2_5", + "architectures": [ + "Spark2_5ForCausalLM" + ], + "dtype": "bfloat16", + "weight_format": "dense", + "quantization": null, + "config_sha256": "16aa5d3619d0d893e7157f2499675430844eb7b383c80ecc1b3e8e8928a75d52", + "tokenizer_sha256": "72b88cd03593f92c7307ac23653df70ca383df15357fca03f6c5c0b3b3ea8f17", + "tokenizer_files": [ + "tokenizer.json", + "tokenizer_config.json", + "special_tokens_map.json", + "chat_template.jinja", + "vocab.json", + "merges.txt", + "generation_config.json" + ], + "weight_files": [ + "model-00001-of-00002.safetensors", + "model-00002-of-00002.safetensors" + ], + "weight_bytes": 3415340496, + "weight_sha256": null, + "revision": null, + "runtime": { + "python": "3.12.13", + "platform": "Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.43", + "torch": "2.13.0+cpu", + "vllm": "0.28.0", + "vllm_omni": "0.29.0rc2.dev71+g00510ce38.d20260922", + "vllm_omni_file": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/__init__.py", + "vllm_file": "/home/zhout/project/edge_infer/.venvs/omni-cpu/lib/python3.12/site-packages/vllm/__init__.py", + "checkouts": { + "/home/zhout/project/edge_infer/vllm-omni-edge": "8978302a1b7b86f17f45d530c544fb87bec8990d-dirty", + "/home/zhout/project/edge_infer": "758b3af238b19e2c2abc668f23a767bb835a4a22-dirty" + } + }, + "notes": [ + "weights identified by name+size, not content; pass digest_weights=True to hash them" + ], + "artifact_id": "c777e48f9e300714" + }, + "notes": [ + "activations, workspace and the load transient are estimates (E); engine.py records the measured peak against them after the load" + ] + }, + "prompts": [ + { + "name": "chat_short", + "prompt_tokens": 28, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + }, + { + "name": "chat_tools", + "prompt_tokens": 137, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + }, + { + "name": "chat_long", + "prompt_tokens": 2465, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + }, + { + "name": "plain_0", + "prompt_tokens": 5, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + }, + { + "name": "plain_1", + "prompt_tokens": 13, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + }, + { + "name": "plain_2", + "prompt_tokens": 18, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + }, + { + "name": "plain_3", + "prompt_tokens": 8, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + }, + { + "name": "plain_4", + "prompt_tokens": 7, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + }, + { + "name": "plain_5", + "prompt_tokens": 7, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + }, + { + "name": "plain_6", + "prompt_tokens": 3, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + }, + { + "name": "plain_7", + "prompt_tokens": 9, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + }, + { + "name": "plain_8", + "prompt_tokens": 9, + "reference_tokens": 128, + "engine_tokens": 128, + "exact": true, + "first_divergence": null, + "agreement_prefix": 128, + "reference_head": [], + "engine_head": [] + } + ], + "reference": { + "chat_short": { + "token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 198, + 198, + 34542, + 25, + 275, + 3754, + 1045, + 5974, + 390, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 373, + 1633, + 312, + 4553, + 275, + 6787, + 27, + 614, + 6787, + 390, + 518, + 110949, + 4348, + 373, + 2029, + 6340, + 1839, + 455, + 5240, + 27, + 198, + 198, + 4023, + 1553, + 1045, + 2261, + 275, + 23220, + 39, + 518, + 47648, + 304, + 1135, + 5240, + 1848, + 4358, + 373, + 2029, + 9666 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris\n\nWait, the user's message is: \"What is the capital of France? Answer in one word.\" I need to provide the answer. The answer is \"Paris\". I should output just that word.\n\nBut let's see the instruction: \"Answer in one word.\" So I should respond", + "prompt_tokens": 28 + }, + "chat_tools": { + "token_ids": [ + 1046, + 3754, + 13025, + 312, + 1843, + 275, + 14510, + 304, + 75040, + 103, + 872, + 2430, + 2343, + 304, + 423, + 108364, + 27, + 373, + 760, + 259, + 2122, + 4234, + 4848, + 2561, + 913, + 76, + 64301, + 77, + 455, + 764, + 41002, + 14510, + 396, + 259, + 6594, + 27, + 9619, + 713, + 2426, + 488, + 478, + 275, + 6594, + 518, + 64, + 872, + 103, + 872, + 15, + 317, + 9261, + 518, + 8281, + 4348, + 4, + 130977, + 913, + 76, + 64301, + 130980, + 58593, + 130981, + 130982, + 64, + 872, + 103, + 872, + 130983, + 130980, + 11220, + 130981, + 130982, + 8281, + 130983, + 130984, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1 + ], + "text": "The user wants to know the weather in Shenzhen right now in Celsius. I have a function available called `get_weather` that can retrieve weather for a city. Let me call it with the city \"Shenzhen\" and unit \"celsius\".get_weathercityShenzhenunitcelsius", + "prompt_tokens": 137 + }, + "chat_long": { + "token_ids": [ + 3066, + 599, + 4114, + 300, + 31946, + 35404, + 478, + 7006, + 27149, + 396, + 56774, + 49408, + 220, + 30, + 1953, + 220, + 30, + 31, + 29, + 27, + 614, + 5565, + 27179, + 39, + 518, + 4766, + 390, + 275, + 5760, + 396, + 56774, + 20882, + 220, + 36, + 32, + 5171, + 1994, + 1633, + 312, + 2432, + 275, + 5760, + 12610, + 312, + 20882, + 220, + 36, + 32, + 27, + 198, + 198, + 48992, + 511, + 275, + 2631, + 25, + 679, + 2261, + 39, + 198, + 5369, + 220, + 30, + 39, + 20882, + 220, + 30, + 3192, + 220, + 30, + 29, + 29, + 36, + 198, + 5369, + 220, + 31, + 39, + 20882, + 220, + 31, + 3192, + 220, + 30, + 29, + 30, + 33, + 198, + 2097, + 198, + 3066, + 1633, + 312, + 2432, + 275, + 11411, + 396, + 20882, + 220, + 36, + 32, + 27, + 198, + 198, + 13104, + 1045, + 2631, + 275, + 49408, + 317, + 1140, + 27149, + 304, + 3310, + 27, + 614, + 2631, + 390, + 4114, + 463, + 39, + 198, + 5369, + 220, + 30, + 39, + 220, + 30 + ], + "text": "We are given an inventory listing with item codes for warehouse districts 1 through 120. The question asks: \"What is the code for warehouse district 73?\" We need to find the code corresponding to district 73.\n\nLooking at the list, we see:\nItem 1: district 1 -> 1007\nItem 2: district 2 -> 1014\n...\nWe need to find the entry for district 73.\n\nLet's list the districts and their codes in order. The list is given as:\nItem 1: 1", + "prompt_tokens": 2465 + }, + "plain_0": { + "token_ids": [ + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314 + ], + "text": " the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of", + "prompt_tokens": 5 + }, + "plain_1": { + "token_ids": [ + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174 + ], + "text": " mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission", + "prompt_tokens": 13 + }, + "plain_2": { + "token_ids": [ + 293, + 259, + 25, + 287, + 422, + 220, + 29, + 25, + 220, + 30, + 198, + 293, + 396, + 2198, + 304, + 4044, + 5738, + 2407, + 198, + 361, + 259, + 25, + 287, + 422, + 287, + 25, + 259, + 1336, + 287, + 198, + 361, + 690, + 2198, + 2126, + 292, + 39, + 198, + 462, + 948, + 259, + 198, + 293, + 948, + 259, + 198, + 198, + 198, + 3068, + 2772, + 11834, + 198, + 293, + 292, + 422, + 1455, + 16040, + 4112, + 198, + 293, + 3594, + 3836, + 41162, + 65043, + 5738, + 1771, + 198, + 198, + 198, + 556, + 7001, + 2215, + 1423, + 2126, + 51012, + 14872, + 72067, + 198, + 293, + 2772, + 663, + 198, + 198, + 198, + 3992, + 12792, + 3259, + 2651, + 8189, + 280, + 1740, + 26813, + 302, + 2118, + 8210, + 2572, + 8189, + 4366, + 280, + 1125, + 28490, + 26813, + 6922, + 12792, + 302, + 198, + 198, + 16689, + 220, + 8189, + 2572, + 198, + 198, + 30, + 27, + 7307, + 8156, + 3052, + 8189, + 47165, + 198, + 256, + 706, + 220, + 1345, + 12792, + 457, + 2561, + 91 + ], + "text": " a, b = 0, 1\n for _ in range(n):\n a, b = b, a + b\n if _ == n:\n return a\n return a\n\n\ndef main():\n n = int(input())\n print(fibonacci(n))\n\n\nif __name__ == \"__main__\":\n main()\n\n\n你的代码存在一些错误,需要修正。请详细分析错误原因,并给出修正后的代码。\n\n### 错误分析\n\n1. **输入处理错误**:\n - 原代码中 `n", + "prompt_tokens": 18 + }, + "plain_3": { + "token_ids": [ + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455 + ], + "text": " the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that", + "prompt_tokens": 8 + }, + "plain_4": { + "token_ids": [ + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996 + ], + "text": " to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make", + "prompt_tokens": 7 + }, + "plain_5": { + "token_ids": [ + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275 + ], + "text": " the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the", + "prompt_tokens": 7 + }, + "plain_6": { + "token_ids": [ + 13619, + 317, + 19210, + 1464, + 13619, + 317, + 19210, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317 + ], + "text": " carbon and oxygen into carbon and oxygen and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and", + "prompt_tokens": 3 + }, + "plain_7": { + "token_ids": [ + 20815, + 13127, + 2129, + 463, + 54525, + 25, + 62316, + 25, + 317, + 8709, + 46267, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 9905, + 2067, + 2440, + 6795, + 1044, + 511, + 2026, + 1841, + 4672, + 25, + 317, + 275, + 3887, + 317, + 2430, + 4672, + 599, + 2129, + 455, + 275, + 3887, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 3921, + 1489, + 275, + 6795, + 1045, + 2613, + 25, + 317, + 275, + 2430, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 9063, + 1489, + 275, + 6795, + 1045, + 2613, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 1870, + 6982, + 455, + 20815, + 13127, + 2129, + 463, + 54525, + 25, + 62316, + 25, + 317, + 8709, + 46267, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 9905, + 2067, + 2440, + 6795, + 1044, + 511, + 2026, + 1841, + 4672, + 25, + 317, + 275, + 3887, + 317, + 2430, + 4672, + 599, + 2129, + 455, + 275, + 3887, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 3921, + 1489, + 275 + ], + "text": " supports operations such as insertion, deletion, and traversal. A binary search tree is a tree where each node has at most two children, and the left and right children are such that the left subtree contains all nodes with values less than the node's value, and the right subtree contains all nodes with values greater than the node's value. A binary search tree is a data structure that supports operations such as insertion, deletion, and traversal. A binary search tree is a tree where each node has at most two children, and the left and right children are such that the left subtree contains all nodes with values less than the", + "prompt_tokens": 9 + }, + "plain_8": { + "token_ids": [ + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455 + ], + "text": " 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty", + "prompt_tokens": 9 + } + }, + "engine": { + "chat_short": { + "token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 198, + 198, + 34542, + 25, + 275, + 3754, + 1045, + 5974, + 390, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 373, + 1633, + 312, + 4553, + 275, + 6787, + 27, + 614, + 6787, + 390, + 518, + 110949, + 4348, + 373, + 2029, + 6340, + 1839, + 455, + 5240, + 27, + 198, + 198, + 4023, + 1553, + 1045, + 2261, + 275, + 23220, + 39, + 518, + 47648, + 304, + 1135, + 5240, + 1848, + 4358, + 373, + 2029, + 9666 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris\n\nWait, the user's message is: \"What is the capital of France? Answer in one word.\" I need to provide the answer. The answer is \"Paris\". I should output just that word.\n\nBut let's see the instruction: \"Answer in one word.\" So I should respond", + "prompt_tokens": 28 + }, + "chat_tools": { + "token_ids": [ + 1046, + 3754, + 13025, + 312, + 1843, + 275, + 14510, + 304, + 75040, + 103, + 872, + 2430, + 2343, + 304, + 423, + 108364, + 27, + 373, + 760, + 259, + 2122, + 4234, + 4848, + 2561, + 913, + 76, + 64301, + 77, + 455, + 764, + 41002, + 14510, + 396, + 259, + 6594, + 27, + 9619, + 713, + 2426, + 488, + 478, + 275, + 6594, + 518, + 64, + 872, + 103, + 872, + 15, + 317, + 9261, + 518, + 8281, + 4348, + 4, + 130977, + 913, + 76, + 64301, + 130980, + 58593, + 130981, + 130982, + 64, + 872, + 103, + 872, + 130983, + 130980, + 11220, + 130981, + 130982, + 8281, + 130983, + 130984, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1 + ], + "text": "The user wants to know the weather in Shenzhen right now in Celsius. I have a function available called `get_weather` that can retrieve weather for a city. Let me call it with the city \"Shenzhen\" and unit \"celsius\".get_weathercityShenzhenunitcelsius", + "prompt_tokens": 137 + }, + "chat_long": { + "token_ids": [ + 3066, + 599, + 4114, + 300, + 31946, + 35404, + 478, + 7006, + 27149, + 396, + 56774, + 49408, + 220, + 30, + 1953, + 220, + 30, + 31, + 29, + 27, + 614, + 5565, + 27179, + 39, + 518, + 4766, + 390, + 275, + 5760, + 396, + 56774, + 20882, + 220, + 36, + 32, + 5171, + 1994, + 1633, + 312, + 2432, + 275, + 5760, + 12610, + 312, + 20882, + 220, + 36, + 32, + 27, + 198, + 198, + 48992, + 511, + 275, + 2631, + 25, + 679, + 2261, + 39, + 198, + 5369, + 220, + 30, + 39, + 20882, + 220, + 30, + 3192, + 220, + 30, + 29, + 29, + 36, + 198, + 5369, + 220, + 31, + 39, + 20882, + 220, + 31, + 3192, + 220, + 30, + 29, + 30, + 33, + 198, + 2097, + 198, + 3066, + 1633, + 312, + 2432, + 275, + 11411, + 396, + 20882, + 220, + 36, + 32, + 27, + 198, + 198, + 13104, + 1045, + 2631, + 275, + 49408, + 317, + 1140, + 27149, + 304, + 3310, + 27, + 614, + 2631, + 390, + 4114, + 463, + 39, + 198, + 5369, + 220, + 30, + 39, + 220, + 30 + ], + "text": "We are given an inventory listing with item codes for warehouse districts 1 through 120. The question asks: \"What is the code for warehouse district 73?\" We need to find the code corresponding to district 73.\n\nLooking at the list, we see:\nItem 1: district 1 -> 1007\nItem 2: district 2 -> 1014\n...\nWe need to find the entry for district 73.\n\nLet's list the districts and their codes in order. The list is given as:\nItem 1: 1", + "prompt_tokens": 2465 + }, + "plain_0": { + "token_ids": [ + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314, + 14686, + 390, + 275, + 11862, + 314 + ], + "text": " the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of Australia is the capital of", + "prompt_tokens": 5 + }, + "plain_1": { + "token_ids": [ + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174, + 15174 + ], + "text": " mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission mission", + "prompt_tokens": 13 + }, + "plain_2": { + "token_ids": [ + 293, + 259, + 25, + 287, + 422, + 220, + 29, + 25, + 220, + 30, + 198, + 293, + 396, + 2198, + 304, + 4044, + 5738, + 2407, + 198, + 361, + 259, + 25, + 287, + 422, + 287, + 25, + 259, + 1336, + 287, + 198, + 361, + 690, + 2198, + 2126, + 292, + 39, + 198, + 462, + 948, + 259, + 198, + 293, + 948, + 259, + 198, + 198, + 198, + 3068, + 2772, + 11834, + 198, + 293, + 292, + 422, + 1455, + 16040, + 4112, + 198, + 293, + 3594, + 3836, + 41162, + 65043, + 5738, + 1771, + 198, + 198, + 198, + 556, + 7001, + 2215, + 1423, + 2126, + 51012, + 14872, + 72067, + 198, + 293, + 2772, + 663, + 198, + 198, + 198, + 3992, + 12792, + 3259, + 2651, + 8189, + 280, + 1740, + 26813, + 302, + 2118, + 8210, + 2572, + 8189, + 4366, + 280, + 1125, + 28490, + 26813, + 6922, + 12792, + 302, + 198, + 198, + 16689, + 220, + 8189, + 2572, + 198, + 198, + 30, + 27, + 7307, + 8156, + 3052, + 8189, + 47165, + 198, + 256, + 706, + 220, + 1345, + 12792, + 457, + 2561, + 91 + ], + "text": " a, b = 0, 1\n for _ in range(n):\n a, b = b, a + b\n if _ == n:\n return a\n return a\n\n\ndef main():\n n = int(input())\n print(fibonacci(n))\n\n\nif __name__ == \"__main__\":\n main()\n\n\n你的代码存在一些错误,需要修正。请详细分析错误原因,并给出修正后的代码。\n\n### 错误分析\n\n1. **输入处理错误**:\n - 原代码中 `n", + "prompt_tokens": 18 + }, + "plain_3": { + "token_ids": [ + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455, + 275, + 3182, + 14672, + 314, + 13294, + 121223, + 3519, + 455 + ], + "text": " the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that the three laws of thermodynamics state that", + "prompt_tokens": 8 + }, + "plain_4": { + "token_ids": [ + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996, + 259, + 3650, + 128403, + 454, + 1633, + 312, + 1996 + ], + "text": " to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make a proper espresso you need to make", + "prompt_tokens": 7 + }, + "plain_5": { + "token_ids": [ + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275 + ], + "text": " the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the", + "prompt_tokens": 7 + }, + "plain_6": { + "token_ids": [ + 13619, + 317, + 19210, + 1464, + 13619, + 317, + 19210, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317, + 317 + ], + "text": " carbon and oxygen into carbon and oxygen and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and", + "prompt_tokens": 3 + }, + "plain_7": { + "token_ids": [ + 20815, + 13127, + 2129, + 463, + 54525, + 25, + 62316, + 25, + 317, + 8709, + 46267, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 9905, + 2067, + 2440, + 6795, + 1044, + 511, + 2026, + 1841, + 4672, + 25, + 317, + 275, + 3887, + 317, + 2430, + 4672, + 599, + 2129, + 455, + 275, + 3887, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 3921, + 1489, + 275, + 6795, + 1045, + 2613, + 25, + 317, + 275, + 2430, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 9063, + 1489, + 275, + 6795, + 1045, + 2613, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 1870, + 6982, + 455, + 20815, + 13127, + 2129, + 463, + 54525, + 25, + 62316, + 25, + 317, + 8709, + 46267, + 27, + 401, + 20470, + 6258, + 9905, + 390, + 259, + 9905, + 2067, + 2440, + 6795, + 1044, + 511, + 2026, + 1841, + 4672, + 25, + 317, + 275, + 3887, + 317, + 2430, + 4672, + 599, + 2129, + 455, + 275, + 3887, + 1733, + 33440, + 10736, + 847, + 15325, + 478, + 4906, + 3921, + 1489, + 275 + ], + "text": " supports operations such as insertion, deletion, and traversal. A binary search tree is a tree where each node has at most two children, and the left and right children are such that the left subtree contains all nodes with values less than the node's value, and the right subtree contains all nodes with values greater than the node's value. A binary search tree is a data structure that supports operations such as insertion, deletion, and traversal. A binary search tree is a tree where each node has at most two children, and the left and right children are such that the left subtree contains all nodes with values less than the", + "prompt_tokens": 9 + }, + "plain_8": { + "token_ids": [ + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455, + 314, + 10519, + 1672, + 14288, + 572, + 19750, + 304, + 220, + 30, + 32, + 32, + 32, + 27, + 614, + 120455 + ], + "text": " 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty of Westphalia was signed in 1333. The Treaty", + "prompt_tokens": 9 + } + } +} \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/profile20_branch_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/profile20_branch_report.json new file mode 100644 index 000000000..ee9f7de37 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/profile20_branch_report.json @@ -0,0 +1,4193 @@ +{ + "scope": "Spark-X2.5-1.7B dense BF16 complete text requests through Omni on WSL HX370 CPU", + "status": "scoped_e2e_profiled", + "model": "/home/zhout/project/edge_infer/models/Spark-X2.5-1.7B-BF16", + "runtime": { + "python": "3.12.13", + "platform": "Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.43", + "torch": "2.13.0+cpu", + "vllm": "0.28.0", + "vllm_omni": "0.29.0rc2.dev71+g00510ce38.d20260922", + "vllm_omni_file": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/__init__.py", + "vllm_file": "/home/zhout/project/edge_infer/.venvs/omni-cpu/lib/python3.12/site-packages/vllm/__init__.py", + "checkouts": { + "/home/zhout/project/edge_infer/vllm-omni-edge": "8978302a1b7b86f17f45d530c544fb87bec8990d-dirty", + "/home/zhout/project/edge_infer": "758b3af238b19e2c2abc668f23a767bb835a4a22-dirty" + } + }, + "plan": { + "admitted": true, + "backend": "vllm:cpu", + "selected_device": { + "device_id": "cpu", + "kind": "cpu", + "vendor": "amd", + "name": "AMD Ryzen AI 9 HX 370 w/ Radeon 890M", + "backend": "vllm:cpu", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 33184976896, + "compute_capability": null, + "weight_formats": [ + "compressed-tensors:int8", + "dense", + "gptq" + ], + "evidence": "B", + "reason": "", + "masked": false, + "extra": { + "n_physical": 12, + "n_logical": 24, + "ram_available_bytes": 30829428736, + "bf16": true + } + }, + "devices": [ + { + "device_id": "npu:amd", + "kind": "npu", + "vendor": "amd", + "name": "NPU Compute Accelerator Device", + "backend": "ort:vitisai", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 0, + "compute_capability": null, + "weight_formats": [ + "onnx:a16w8" + ], + "evidence": "B", + "reason": "An MCDM device; WSL2's GPU-PV forwards WDDM display adapters only, so it has no device node here and nothing installed inside WSL reaches it. It does work from a Windows-side process -- onnxruntime>=1.25 plus the WindowsWorkload.EP.AMD.VitisAI.Framework appx, loading onnxruntime_vitisai_ep.dll (not the RyzenAI *Light* EP beside it) with its own directory on the DLL search path, against an A16W8-quantized opset-21 graph. Measured 5.3x the CPU on a 1024x2048x2048 GEMM. See vllm_omni/edge/npu_ryzenai.py.", + "masked": false, + "extra": { + "source": "wsl-interop", + "probe_route": "ryzenai-ep-windows", + "host_pool_bytes": 33184976896, + "host_pool_available_bytes": 30829428736, + "worker_route": "ort-vitisai", + "worker_interpreter": "/mnt/c/Users/zhout/npu-ep/Scripts/python.exe", + "routes": [ + { + "name": "ort-vitisai", + "interpreter": "/mnt/c/Users/zhout/npu-ep/Scripts/python.exe", + "worker": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/edge/local/external/worker_ort.py", + "ep": "vitisai", + "is_windows": true, + "available": true, + "reason": "", + "extra": null + } + ], + "executes": "exported graphs, not checkpoints", + "dedicated_vram_bytes": 0 + } + }, + { + "device_id": "gpu_integrated:amd", + "kind": "gpu_integrated", + "vendor": "amd", + "name": "AMD Radeon(TM) 890M Graphics", + "backend": "ort:dml", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 0, + "compute_capability": null, + "weight_formats": [ + "onnx:fp16", + "onnx:fp32" + ], + "evidence": "B", + "reason": "No /dev/dri under WSL2, but reachable through DirectML over /dev/dxg: pip install torch-directml in its own venv (it pins torch==2.4.1). Measured 1.12 TFLOP/s fp32 and 5-7.4 GB/s -- below the CPU on both, so route work here only when the CPU is the thing you are trying to free.", + "masked": false, + "extra": { + "source": "wsl-interop", + "probe_route": "directml", + "host_pool_bytes": 33184976896, + "host_pool_available_bytes": 30829428736, + "worker_route": "ort-dml", + "worker_interpreter": "/mnt/c/Users/zhout/dml-ep/Scripts/python.exe", + "routes": [ + { + "name": "ort-dml", + "interpreter": "/mnt/c/Users/zhout/dml-ep/Scripts/python.exe", + "worker": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/edge/local/external/worker_ort.py", + "ep": "dml", + "is_windows": true, + "available": true, + "reason": "", + "extra": null + }, + { + "name": "torch-dml", + "interpreter": "/home/zhout/project/edge_infer/.venvs/dml/bin/python", + "worker": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/edge/local/external/worker_dml.py", + "ep": "dml", + "is_windows": false, + "available": true, + "reason": "", + "extra": null + } + ], + "executes": "exported graphs, not checkpoints", + "dedicated_vram_bytes": 0 + } + }, + { + "device_id": "cpu", + "kind": "cpu", + "vendor": "amd", + "name": "AMD Ryzen AI 9 HX 370 w/ Radeon 890M", + "backend": "vllm:cpu", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 33184976896, + "compute_capability": null, + "weight_formats": [ + "compressed-tensors:int8", + "dense", + "gptq" + ], + "evidence": "B", + "reason": "", + "masked": false, + "extra": { + "n_physical": 12, + "n_logical": 24, + "ram_available_bytes": 30829428736, + "bf16": true + } + } + ], + "stage": { + "stage_id": 0, + "model_stage": "spark2_5", + "execution_type": "LLM_AR", + "input_sources": [], + "final_output": true, + "final_output_type": "text", + "owns_tokenizer": true, + "state": "kv_cache", + "streaming_granularity": "token" + }, + "engine_kwargs": { + "max_model_len": 4096, + "max_num_seqs": 1, + "max_num_batched_tokens": 2048, + "enforce_eager": true, + "enable_prefix_caching": false, + "gpu_memory_utilization": 0.27, + "kv_cache_memory_bytes": 293601280, + "dtype": "bfloat16" + }, + "reservations": [ + { + "pool": "host_ram", + "purpose": "weights", + "bytes": 3415340496, + "lifetime": "session_weights", + "reclaimable": "no", + "evidence": "D", + "note": "2 safetensors shard(s), on-disk size; the load moved +6.45 GiB of process-tree RSS, which bounds weights + backend context together and is not an attribution to the weights alone", + "actual_upper_bound_bytes": 6926442496 + }, + { + "pool": "host_ram", + "purpose": "kv_cache", + "bytes": 293601280, + "lifetime": "session", + "reclaimable": "on_evict", + "evidence": "E", + "note": "flat budget at 1x context; 96 MiB if the backend accounts 21 sliding layers separately", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "activations", + "bytes": 101187584, + "lifetime": "request", + "reclaimable": "on_release", + "evidence": "E", + "note": "2048-token prefill chunk x 12 live tensors", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "backend_workspace", + "bytes": 536870912, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "attention scratch, driver/allocator context", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "load_transient", + "bytes": 1707670248, + "lifetime": "load", + "reclaimable": "on_release", + "evidence": "E", + "note": "freed once the weights are resident; peaks with the largest shard", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "external_reserve", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "memory this engine does not own on a shared pool", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "safety_margin", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "fragmentation and allocator slack", + "actual_upper_bound_bytes": null + } + ], + "reserved_total_bytes": 8202154168, + "kv_budget": { + "bytes_total": 293601280, + "bytes_total_hybrid": 100925440, + "bytes_per_token_flat": 57344, + "token_layers_hybrid": 39424, + "token_layers_flat": 114688, + "sliding_layers": 21, + "full_layers": 7, + "window": 512, + "linear_layers": 0, + "state_bytes_per_seq": 0, + "state_bytes_total": 0, + "summary": "280 MiB flat; 96 MiB if the backend accounts 21 sliding@512 layers separately (2.91x)", + "saving_vs_flat": 2.909090909090909 + }, + "refusals": [ + { + "code": "no_exported_graph", + "device_id": "npu:amd", + "message": "npu:amd executes exported graphs (['onnx:a16w8']), not checkpoints, so a whole autoregressive text session cannot be placed on it", + "remedy": "place a single stage there instead, via vllm_omni.edge.local.external.stage.plan_external_stage; the decode loop stays on the CPU or the GPU because both of these devices read the same system memory it does" + }, + { + "code": "no_exported_graph", + "device_id": "gpu_integrated:amd", + "message": "gpu_integrated:amd executes exported graphs (['onnx:fp16', 'onnx:fp32']), not checkpoints, so a whole autoregressive text session cannot be placed on it", + "remedy": "place a single stage there instead, via vllm_omni.edge.local.external.stage.plan_external_stage; the decode loop stays on the CPU or the GPU because both of these devices read the same system memory it does" + } + ], + "fallbacks": [ + "shorter --max-model-len reduces the KV reservation linearly" + ], + "request_limits": { + "max_model_len": 4096, + "max_num_seqs": 1, + "max_num_batched_tokens": 2048 + }, + "manifest": { + "model_dir": "/home/zhout/project/edge_infer/models/Spark-X2.5-1.7B-BF16", + "model_type": "spark2_5", + "architectures": [ + "Spark2_5ForCausalLM" + ], + "dtype": "bfloat16", + "weight_format": "dense", + "quantization": null, + "config_sha256": "16aa5d3619d0d893e7157f2499675430844eb7b383c80ecc1b3e8e8928a75d52", + "tokenizer_sha256": "72b88cd03593f92c7307ac23653df70ca383df15357fca03f6c5c0b3b3ea8f17", + "tokenizer_files": [ + "tokenizer.json", + "tokenizer_config.json", + "special_tokens_map.json", + "chat_template.jinja", + "vocab.json", + "merges.txt", + "generation_config.json" + ], + "weight_files": [ + "model-00001-of-00002.safetensors", + "model-00002-of-00002.safetensors" + ], + "weight_bytes": 3415340496, + "weight_sha256": null, + "revision": null, + "runtime": { + "python": "3.12.13", + "platform": "Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.43", + "torch": "2.13.0+cpu", + "vllm": "0.28.0", + "vllm_omni": "0.29.0rc2.dev71+g00510ce38.d20260922", + "vllm_omni_file": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/__init__.py", + "vllm_file": "/home/zhout/project/edge_infer/.venvs/omni-cpu/lib/python3.12/site-packages/vllm/__init__.py", + "checkouts": { + "/home/zhout/project/edge_infer/vllm-omni-edge": "8978302a1b7b86f17f45d530c544fb87bec8990d-dirty", + "/home/zhout/project/edge_infer": "758b3af238b19e2c2abc668f23a767bb835a4a22-dirty" + } + }, + "notes": [ + "weights identified by name+size, not content; pass digest_weights=True to hash them" + ], + "artifact_id": "c777e48f9e300714" + }, + "notes": [ + "activations, workspace and the load transient are estimates (E); engine.py records the measured peak against them after the load" + ] + }, + "placement": { + "planned_device": "cpu", + "planned_backend": "vllm:cpu", + "configured": { + "device": "cpu", + "device_type": "cpu", + "dtype": "torch.bfloat16", + "quantization": null, + "max_model_len": 4096, + "enforce_eager": true, + "kv_cache_memory_bytes": 293601280, + "num_gpu_blocks": 160, + "block_size": 128 + }, + "observed": { + "nvml_device_used_delta_at_load": null, + "tree_rss_delta_at_load": 6926442496, + "per_process_gpu_attribution": null, + "per_process_gpu_attribution_reason": "NVML per-process query unavailable on this wsl2 host: No module named 'pynvml'. The load delta is a whole-card measurement." + }, + "host_compat": null + }, + "usage": { + "load_seconds": 18.35600994003471, + "reservations": [ + { + "pool": "host_ram", + "purpose": "weights", + "bytes": 3415340496, + "lifetime": "session_weights", + "reclaimable": "no", + "evidence": "D", + "note": "2 safetensors shard(s), on-disk size; the load moved +6.45 GiB of process-tree RSS, which bounds weights + backend context together and is not an attribution to the weights alone", + "actual_upper_bound_bytes": 6926442496, + "upper_bound_over_budget": 2.028038640396808 + }, + { + "pool": "host_ram", + "purpose": "kv_cache", + "bytes": 293601280, + "lifetime": "session", + "reclaimable": "on_evict", + "evidence": "E", + "note": "flat budget at 1x context; 96 MiB if the backend accounts 21 sliding layers separately", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + }, + { + "pool": "host_ram", + "purpose": "activations", + "bytes": 101187584, + "lifetime": "request", + "reclaimable": "on_release", + "evidence": "E", + "note": "2048-token prefill chunk x 12 live tensors", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + }, + { + "pool": "host_ram", + "purpose": "backend_workspace", + "bytes": 536870912, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "attention scratch, driver/allocator context", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + }, + { + "pool": "host_ram", + "purpose": "load_transient", + "bytes": 1707670248, + "lifetime": "load", + "reclaimable": "on_release", + "evidence": "E", + "note": "freed once the weights are resident; peaks with the largest shard", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + }, + { + "pool": "host_ram", + "purpose": "external_reserve", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "memory this engine does not own on a shared pool", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + }, + { + "pool": "host_ram", + "purpose": "safety_margin", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "fragmentation and allocator slack", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + } + ], + "budgeted_peak_bytes": 8202154168, + "measured_peak": { + "pool": "host_ram", + "counter": "tree_rss", + "baseline_bytes": 807251968, + "peak_bytes": 7753728000, + "attributable_peak_bytes": 6946476032, + "budgeted_peak_bytes": 8202154168, + "budget_over_measured": 1.1807647691024237, + "admitted_without_oom": true, + "caveats": "sampled every 0.25 s, so the peak is a lower bound; the counter is shared with other processes and the baseline subtraction only removes what was there before the load, not what arrived during it. A budget above the measured peak is the intended outcome -- this budget is a safe upper bound for admission, not a prediction." + }, + "load_memory": { + "before": { + "unix": 1790227931.2939937, + "nvml_device_used": null, + "nvml_device_total": null, + "tree_rss": 807251968, + "tree_pss": 805795840, + "host_available": 30819835904, + "host_total": 33184976896 + }, + "after": { + "unix": 1790227949.7454796, + "nvml_device_used": null, + "nvml_device_total": null, + "tree_rss": 7733694464, + "tree_pss": 7198267392, + "host_available": 24244113408, + "host_total": 33184976896 + }, + "nvml_device_used_delta": null, + "tree_rss_delta": 6926442496, + "peaks_during_load": { + "samples": 57, + "interval_s": 0.25, + "note": "peaks are lower bounds: anything shorter than interval_s is missed. nvml_device_used is the whole card including other processes; tree_pss includes a share of file-backed pages. These three counters are different accountings and must not be summed.", + "nvml_device_used_peak": null, + "nvml_device_used_min": null, + "tree_rss_peak": 7465373696, + "tree_pss_peak": 6932690944, + "host_available_min": 24506232832 + } + }, + "peaks": { + "samples": 341, + "interval_s": 0.25, + "note": "peaks are lower bounds: anything shorter than interval_s is missed. nvml_device_used is the whole card including other processes; tree_pss includes a share of file-backed pages. These three counters are different accountings and must not be summed.", + "nvml_device_used_peak": null, + "nvml_device_used_min": null, + "tree_rss_peak": 7753728000, + "tree_pss_peak": 7218259968, + "host_available_min": 24244113408 + }, + "requests": [ + { + "request_id": "c4f9f82aa56e4cff-0", + "session_id": "c4f9f82aa56e4cff", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790227949.7456968, + "first_token_unix": 1790227949.894397, + "last_token_unix": 1790227955.1749809, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227949.894397, + 1790227949.983575, + 1790227950.0657852, + 1790227950.153385, + 1790227950.2321544, + 1790227950.3264885, + 1790227950.4052012, + 1790227950.4829485, + 1790227950.5672576, + 1790227950.6496065, + 1790227950.7271905, + 1790227950.8097365, + 1790227950.8900874, + 1790227950.9788697, + 1790227951.0545154, + 1790227951.1396713, + 1790227951.2171912, + 1790227951.299207, + 1790227951.3802056, + 1790227951.465232, + 1790227951.5626574, + 1790227951.6596508, + 1790227951.7435837, + 1790227951.8224041, + 1790227951.9011054, + 1790227951.9808362, + 1790227952.0709393, + 1790227952.1568382, + 1790227952.242955, + 1790227952.329595, + 1790227952.4177608, + 1790227952.5038984, + 1790227952.591621, + 1790227952.6785946, + 1790227952.7582903, + 1790227952.8360982, + 1790227952.920033, + 1790227953.0040216, + 1790227953.0841184, + 1790227953.160225, + 1790227953.2464027, + 1790227953.3469982, + 1790227953.432264, + 1790227953.5070894, + 1790227953.5933585, + 1790227953.6790094, + 1790227953.75843, + 1790227953.838512, + 1790227953.924183, + 1790227954.007469, + 1790227954.085526, + 1790227954.1653802, + 1790227954.2440474, + 1790227954.3276896, + 1790227954.4106283, + 1790227954.4966226, + 1790227954.5829704, + 1790227954.666984, + 1790227954.751844, + 1790227954.8242226, + 1790227954.908768, + 1790227955.0057364, + 1790227955.089753, + 1790227955.1749809 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.14870023727416992, + "decode_tok_per_s": 11.930498916082959 + }, + { + "request_id": "43d69378507249ab-1", + "session_id": "43d69378507249ab", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790227955.1752477, + "first_token_unix": 1790227955.321054, + "last_token_unix": 1790227960.4901457, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227955.321054, + 1790227955.4035287, + 1790227955.4785016, + 1790227955.5550947, + 1790227955.6364794, + 1790227955.7103229, + 1790227955.7939045, + 1790227955.8777106, + 1790227955.95663, + 1790227956.0349233, + 1790227956.1250527, + 1790227956.2089794, + 1790227956.282399, + 1790227956.3684058, + 1790227956.4548275, + 1790227956.5336018, + 1790227956.6169958, + 1790227956.695113, + 1790227956.7797124, + 1790227956.8699698, + 1790227956.9431715, + 1790227957.0198686, + 1790227957.1026766, + 1790227957.1879938, + 1790227957.2750564, + 1790227957.3639495, + 1790227957.447976, + 1790227957.5371516, + 1790227957.6240492, + 1790227957.7058427, + 1790227957.7904387, + 1790227957.8742356, + 1790227957.951082, + 1790227958.0434506, + 1790227958.1334283, + 1790227958.2106662, + 1790227958.291216, + 1790227958.374801, + 1790227958.459153, + 1790227958.5402632, + 1790227958.6261368, + 1790227958.7024055, + 1790227958.7844634, + 1790227958.8693607, + 1790227958.9502165, + 1790227959.029256, + 1790227959.1021883, + 1790227959.1798904, + 1790227959.2628298, + 1790227959.347304, + 1790227959.4341497, + 1790227959.5197375, + 1790227959.594999, + 1790227959.6731563, + 1790227959.7588542, + 1790227959.845073, + 1790227959.9230406, + 1790227960.0040178, + 1790227960.0877202, + 1790227960.1693602, + 1790227960.2482564, + 1790227960.3271604, + 1790227960.4086974, + 1790227960.4901457 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.14580631256103516, + "decode_tok_per_s": 12.187827888916347 + }, + { + "request_id": "bbae8fb15bf24069-2", + "session_id": "bbae8fb15bf24069", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790227960.4903522, + "first_token_unix": 1790227960.6165698, + "last_token_unix": 1790227965.848371, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227960.6165698, + 1790227960.692768, + 1790227960.7712872, + 1790227960.8527737, + 1790227960.931592, + 1790227961.0138526, + 1790227961.090904, + 1790227961.182912, + 1790227961.2654388, + 1790227961.353423, + 1790227961.4322164, + 1790227961.5148883, + 1790227961.5937104, + 1790227961.6755745, + 1790227961.757326, + 1790227961.8314583, + 1790227961.911505, + 1790227961.98384, + 1790227962.0644112, + 1790227962.1541317, + 1790227962.2346327, + 1790227962.3205776, + 1790227962.399624, + 1790227962.4777367, + 1790227962.5597804, + 1790227962.647177, + 1790227962.7307138, + 1790227962.8154361, + 1790227962.8988848, + 1790227962.978445, + 1790227963.0702748, + 1790227963.1503205, + 1790227963.2320714, + 1790227963.3145983, + 1790227963.4085543, + 1790227963.4945717, + 1790227963.5737712, + 1790227963.658935, + 1790227963.7362592, + 1790227963.8226802, + 1790227963.910068, + 1790227964.000507, + 1790227964.0858395, + 1790227964.186634, + 1790227964.2699194, + 1790227964.3450925, + 1790227964.4296966, + 1790227964.5147219, + 1790227964.5920897, + 1790227964.6809075, + 1790227964.764514, + 1790227964.8406575, + 1790227964.9268029, + 1790227965.0227854, + 1790227965.1056669, + 1790227965.192447, + 1790227965.2718139, + 1790227965.355731, + 1790227965.4448166, + 1790227965.523037, + 1790227965.5967503, + 1790227965.6787992, + 1790227965.763712, + 1790227965.848371 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.12621760368347168, + "decode_tok_per_s": 12.041741788612848 + }, + { + "request_id": "b0d0caf0e5154ce6-3", + "session_id": "b0d0caf0e5154ce6", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790227965.8485804, + "first_token_unix": 1790227965.9716372, + "last_token_unix": 1790227971.3826003, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227965.9716372, + 1790227966.0489562, + 1790227966.1322, + 1790227966.2159266, + 1790227966.293305, + 1790227966.378844, + 1790227966.4643242, + 1790227966.5504692, + 1790227966.6380346, + 1790227966.7217977, + 1790227966.8047357, + 1790227966.880578, + 1790227966.9693503, + 1790227967.051479, + 1790227967.1356237, + 1790227967.2179632, + 1790227967.2974026, + 1790227967.3748693, + 1790227967.460384, + 1790227967.542387, + 1790227967.6185772, + 1790227967.7036362, + 1790227967.7928677, + 1790227967.8796468, + 1790227967.958831, + 1790227968.0423985, + 1790227968.1261635, + 1790227968.2084265, + 1790227968.291698, + 1790227968.3731635, + 1790227968.4495833, + 1790227968.5309076, + 1790227968.6156805, + 1790227968.7113845, + 1790227968.8244665, + 1790227968.9128547, + 1790227969.006634, + 1790227969.0901732, + 1790227969.1690907, + 1790227969.2501788, + 1790227969.3451982, + 1790227969.4372535, + 1790227969.5302875, + 1790227969.6160984, + 1790227969.696907, + 1790227969.7821395, + 1790227969.8763669, + 1790227969.9679885, + 1790227970.0513148, + 1790227970.1364093, + 1790227970.2147229, + 1790227970.3064604, + 1790227970.3962777, + 1790227970.479803, + 1790227970.5694737, + 1790227970.6552274, + 1790227970.7431705, + 1790227970.826929, + 1790227970.9053972, + 1790227971.011842, + 1790227971.12388, + 1790227971.2126534, + 1790227971.3000028, + 1790227971.3826003 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.12305688858032227, + "decode_tok_per_s": 11.643029035536287 + }, + { + "request_id": "f988922a6588444e-4", + "session_id": "f988922a6588444e", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790227971.3828871, + "first_token_unix": 1790227971.5590827, + "last_token_unix": 1790227977.1853821, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227971.5590827, + 1790227971.6426907, + 1790227971.7347708, + 1790227971.8220901, + 1790227971.9157696, + 1790227971.995971, + 1790227972.0794587, + 1790227972.1628604, + 1790227972.2500038, + 1790227972.336987, + 1790227972.4300003, + 1790227972.5154202, + 1790227972.5998845, + 1790227972.6860049, + 1790227972.7671926, + 1790227972.8610783, + 1790227972.9414942, + 1790227973.026255, + 1790227973.1243823, + 1790227973.2895315, + 1790227973.4240572, + 1790227973.5394695, + 1790227973.6296804, + 1790227973.7196834, + 1790227973.8062973, + 1790227973.891101, + 1790227973.9817643, + 1790227974.086264, + 1790227974.1696062, + 1790227974.2563865, + 1790227974.3719208, + 1790227974.4790587, + 1790227974.5627558, + 1790227974.654898, + 1790227974.751861, + 1790227974.84026, + 1790227974.923903, + 1790227975.0066817, + 1790227975.0875902, + 1790227975.1681063, + 1790227975.2489078, + 1790227975.3388796, + 1790227975.4198833, + 1790227975.5015628, + 1790227975.5830102, + 1790227975.6623547, + 1790227975.7441776, + 1790227975.8300455, + 1790227975.9160144, + 1790227976.0115774, + 1790227976.0899944, + 1790227976.1770387, + 1790227976.2623708, + 1790227976.3534744, + 1790227976.4356298, + 1790227976.5191607, + 1790227976.6065826, + 1790227976.6938055, + 1790227976.7810593, + 1790227976.8632262, + 1790227976.9407444, + 1790227977.0223112, + 1790227977.1075027, + 1790227977.1853821 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.17619562149047852, + "decode_tok_per_s": 11.197413385054332 + }, + { + "request_id": "f1739b9a91f74531-5", + "session_id": "f1739b9a91f74531", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790227977.18559, + "first_token_unix": 1790227977.325969, + "last_token_unix": 1790227982.6931942, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227977.325969, + 1790227977.4125087, + 1790227977.495617, + 1790227977.6013803, + 1790227977.6854742, + 1790227977.7728415, + 1790227977.8554046, + 1790227977.936537, + 1790227978.0168839, + 1790227978.098424, + 1790227978.1779869, + 1790227978.2531822, + 1790227978.342245, + 1790227978.4334445, + 1790227978.5232277, + 1790227978.6149993, + 1790227978.7033303, + 1790227978.792896, + 1790227978.876074, + 1790227978.960019, + 1790227979.0431259, + 1790227979.132484, + 1790227979.22202, + 1790227979.3141866, + 1790227979.4046593, + 1790227979.4926803, + 1790227979.5819235, + 1790227979.6685898, + 1790227979.784106, + 1790227979.8748944, + 1790227979.958122, + 1790227980.0411725, + 1790227980.1248322, + 1790227980.2059383, + 1790227980.2865825, + 1790227980.3711138, + 1790227980.4630022, + 1790227980.546548, + 1790227980.6400764, + 1790227980.717478, + 1790227980.797664, + 1790227980.8774366, + 1790227980.9567811, + 1790227981.042551, + 1790227981.116372, + 1790227981.2028344, + 1790227981.290853, + 1790227981.3830855, + 1790227981.4595966, + 1790227981.5425723, + 1790227981.62211, + 1790227981.7049732, + 1790227981.784273, + 1790227981.8660307, + 1790227981.9490294, + 1790227982.040497, + 1790227982.1176586, + 1790227982.2008672, + 1790227982.2810876, + 1790227982.365982, + 1790227982.4508092, + 1790227982.5330598, + 1790227982.6101544, + 1790227982.6931942 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.1403789520263672, + "decode_tok_per_s": 11.737908882702891 + }, + { + "request_id": "92fb3471b62246e4-6", + "session_id": "92fb3471b62246e4", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790227982.693402, + "first_token_unix": 1790227982.8220713, + "last_token_unix": 1790227988.1089253, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227982.8220713, + 1790227982.906232, + 1790227982.9891777, + 1790227983.063853, + 1790227983.139409, + 1790227983.2240698, + 1790227983.3092272, + 1790227983.3881726, + 1790227983.4762762, + 1790227983.5678964, + 1790227983.64915, + 1790227983.7381248, + 1790227983.8175843, + 1790227983.8975496, + 1790227983.9829237, + 1790227984.0747037, + 1790227984.16012, + 1790227984.2457268, + 1790227984.3307874, + 1790227984.419703, + 1790227984.5197928, + 1790227984.609321, + 1790227984.6853867, + 1790227984.7743313, + 1790227984.859126, + 1790227984.9444962, + 1790227985.0353134, + 1790227985.1156664, + 1790227985.196911, + 1790227985.2785645, + 1790227985.3671556, + 1790227985.44988, + 1790227985.5289721, + 1790227985.6172845, + 1790227985.7043068, + 1790227985.7849889, + 1790227985.860661, + 1790227985.9403162, + 1790227986.0327625, + 1790227986.1169922, + 1790227986.1931503, + 1790227986.2709627, + 1790227986.358597, + 1790227986.440475, + 1790227986.5284302, + 1790227986.6106079, + 1790227986.6867423, + 1790227986.7602549, + 1790227986.8557327, + 1790227986.9436812, + 1790227987.0277944, + 1790227987.118943, + 1790227987.2013566, + 1790227987.2863278, + 1790227987.3691804, + 1790227987.4544225, + 1790227987.536044, + 1790227987.6183424, + 1790227987.698149, + 1790227987.7804623, + 1790227987.85559, + 1790227987.9334166, + 1790227988.020258, + 1790227988.1089253 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.12866926193237305, + "decode_tok_per_s": 11.916349431624088 + }, + { + "request_id": "b7af43bc898b46d7-7", + "session_id": "b7af43bc898b46d7", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790227988.1092074, + "first_token_unix": 1790227988.2380242, + "last_token_unix": 1790227993.4717064, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227988.2380242, + 1790227988.3233733, + 1790227988.4104013, + 1790227988.4993577, + 1790227988.5785964, + 1790227988.6679919, + 1790227988.746809, + 1790227988.8329065, + 1790227988.9183655, + 1790227989.0062726, + 1790227989.0905352, + 1790227989.173166, + 1790227989.2518528, + 1790227989.3346653, + 1790227989.4206266, + 1790227989.509548, + 1790227989.5957406, + 1790227989.676856, + 1790227989.7600083, + 1790227989.8483672, + 1790227989.9267325, + 1790227990.0041096, + 1790227990.0866907, + 1790227990.1706028, + 1790227990.2519603, + 1790227990.3270042, + 1790227990.404717, + 1790227990.4807425, + 1790227990.572908, + 1790227990.666249, + 1790227990.742745, + 1790227990.8244069, + 1790227990.9114125, + 1790227990.9952328, + 1790227991.0868034, + 1790227991.1599877, + 1790227991.2408843, + 1790227991.3271124, + 1790227991.4073205, + 1790227991.4975545, + 1790227991.5740564, + 1790227991.6618502, + 1790227991.7434719, + 1790227991.8300452, + 1790227991.9119363, + 1790227991.9943357, + 1790227992.0739589, + 1790227992.1573877, + 1790227992.2549322, + 1790227992.3373842, + 1790227992.4255002, + 1790227992.501291, + 1790227992.5910656, + 1790227992.6722026, + 1790227992.7550178, + 1790227992.8338366, + 1790227992.9061947, + 1790227992.9864933, + 1790227993.0718358, + 1790227993.1429634, + 1790227993.2215474, + 1790227993.3028243, + 1790227993.3850386, + 1790227993.4717064 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.12881684303283691, + "decode_tok_per_s": 12.037414219447884 + }, + { + "request_id": "cfa4f33243bd4b2a-8", + "session_id": "cfa4f33243bd4b2a", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790227993.4719229, + "first_token_unix": 1790227993.6105282, + "last_token_unix": 1790227998.8028402, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227993.6105282, + 1790227993.6967027, + 1790227993.7848656, + 1790227993.8599827, + 1790227993.9411547, + 1790227994.0197651, + 1790227994.095492, + 1790227994.1751559, + 1790227994.2554612, + 1790227994.3414009, + 1790227994.4272108, + 1790227994.507387, + 1790227994.5890293, + 1790227994.6809309, + 1790227994.7617414, + 1790227994.8481095, + 1790227994.9308293, + 1790227995.0171149, + 1790227995.1041954, + 1790227995.190431, + 1790227995.2665484, + 1790227995.3464656, + 1790227995.435829, + 1790227995.5200026, + 1790227995.597374, + 1790227995.6754255, + 1790227995.7549648, + 1790227995.8326492, + 1790227995.9322588, + 1790227996.0186744, + 1790227996.0999496, + 1790227996.1809204, + 1790227996.257447, + 1790227996.3466835, + 1790227996.4315474, + 1790227996.5120165, + 1790227996.5912735, + 1790227996.6709335, + 1790227996.755662, + 1790227996.8291879, + 1790227996.9055235, + 1790227996.9851491, + 1790227997.073368, + 1790227997.1586971, + 1790227997.2447796, + 1790227997.3238595, + 1790227997.404156, + 1790227997.488016, + 1790227997.577189, + 1790227997.6602364, + 1790227997.7423542, + 1790227997.828208, + 1790227997.9063501, + 1790227997.9868884, + 1790227998.0636039, + 1790227998.1449091, + 1790227998.2272584, + 1790227998.3087597, + 1790227998.3909853, + 1790227998.474965, + 1790227998.559474, + 1790227998.648196, + 1790227998.7252517, + 1790227998.8028402 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.13860535621643066, + "decode_tok_per_s": 12.133323262069961 + }, + { + "request_id": "52a543e7d1a74526-9", + "session_id": "52a543e7d1a74526", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790227998.8032732, + "first_token_unix": 1790227998.925552, + "last_token_unix": 1790228004.1854262, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790227998.925552, + 1790227999.0136766, + 1790227999.100394, + 1790227999.1863515, + 1790227999.2625208, + 1790227999.3376138, + 1790227999.4210882, + 1790227999.5172472, + 1790227999.6118987, + 1790227999.6850836, + 1790227999.765419, + 1790227999.845391, + 1790227999.9272988, + 1790228000.0212703, + 1790228000.1013582, + 1790228000.186188, + 1790228000.2701738, + 1790228000.3543634, + 1790228000.441609, + 1790228000.5187438, + 1790228000.596569, + 1790228000.6787899, + 1790228000.774759, + 1790228000.8594182, + 1790228000.9378984, + 1790228001.0239663, + 1790228001.10651, + 1790228001.182146, + 1790228001.2621403, + 1790228001.351203, + 1790228001.4369798, + 1790228001.5131543, + 1790228001.6001544, + 1790228001.6796055, + 1790228001.7670412, + 1790228001.84645, + 1790228001.9287097, + 1790228002.0163274, + 1790228002.093078, + 1790228002.1792865, + 1790228002.262169, + 1790228002.3482597, + 1790228002.4335353, + 1790228002.5124638, + 1790228002.6020281, + 1790228002.6886368, + 1790228002.7832632, + 1790228002.8616674, + 1790228002.939058, + 1790228003.0181637, + 1790228003.0990853, + 1790228003.1851969, + 1790228003.2561986, + 1790228003.3375144, + 1790228003.413922, + 1790228003.5007844, + 1790228003.586782, + 1790228003.6732132, + 1790228003.7530565, + 1790228003.837288, + 1790228003.931322, + 1790228004.0103323, + 1790228004.092593, + 1790228004.1854262 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.12227869033813477, + "decode_tok_per_s": 11.977472441598744 + }, + { + "request_id": "fbd7fa22c0864069-10", + "session_id": "fbd7fa22c0864069", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790228004.185591, + "first_token_unix": 1790228004.3220897, + "last_token_unix": 1790228009.5614986, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790228004.3220897, + 1790228004.404668, + 1790228004.4836953, + 1790228004.5673819, + 1790228004.654934, + 1790228004.7338622, + 1790228004.8191733, + 1790228004.8985682, + 1790228004.9806845, + 1790228005.062898, + 1790228005.1496623, + 1790228005.2335718, + 1790228005.317405, + 1790228005.4085839, + 1790228005.4973419, + 1790228005.584169, + 1790228005.6794343, + 1790228005.7603502, + 1790228005.8440306, + 1790228005.9284613, + 1790228006.0097399, + 1790228006.1002288, + 1790228006.1831613, + 1790228006.2685525, + 1790228006.3572915, + 1790228006.4440684, + 1790228006.5222213, + 1790228006.5967386, + 1790228006.6810915, + 1790228006.7586193, + 1790228006.833228, + 1790228006.9132447, + 1790228006.9936848, + 1790228007.0709186, + 1790228007.1513698, + 1790228007.2312365, + 1790228007.310563, + 1790228007.396884, + 1790228007.4693081, + 1790228007.5450242, + 1790228007.6294534, + 1790228007.707361, + 1790228007.7929077, + 1790228007.8824797, + 1790228007.9699898, + 1790228008.0507858, + 1790228008.1287558, + 1790228008.2111099, + 1790228008.298313, + 1790228008.3869808, + 1790228008.4733126, + 1790228008.5563893, + 1790228008.638628, + 1790228008.7175505, + 1790228008.7993615, + 1790228008.878685, + 1790228008.9590092, + 1790228009.049876, + 1790228009.1328855, + 1790228009.217917, + 1790228009.3031933, + 1790228009.3950245, + 1790228009.4794378, + 1790228009.5614986 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.13649868965148926, + "decode_tok_per_s": 12.024257003448449 + }, + { + "request_id": "4e28564634fe4d90-11", + "session_id": "4e28564634fe4d90", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790228009.5617082, + "first_token_unix": 1790228009.700617, + "last_token_unix": 1790228014.957497, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790228009.700617, + 1790228009.775609, + 1790228009.8645623, + 1790228009.9464602, + 1790228010.0264046, + 1790228010.103112, + 1790228010.1821122, + 1790228010.2607088, + 1790228010.3445501, + 1790228010.427297, + 1790228010.5146873, + 1790228010.592949, + 1790228010.6757414, + 1790228010.7473898, + 1790228010.8274415, + 1790228010.914724, + 1790228010.9922333, + 1790228011.0691109, + 1790228011.1480415, + 1790228011.2265997, + 1790228011.309463, + 1790228011.3955467, + 1790228011.4811897, + 1790228011.5682352, + 1790228011.6654696, + 1790228011.7581692, + 1790228011.8398504, + 1790228011.9325001, + 1790228012.022378, + 1790228012.1061158, + 1790228012.1874962, + 1790228012.2619655, + 1790228012.3424609, + 1790228012.421043, + 1790228012.5043042, + 1790228012.5819418, + 1790228012.673148, + 1790228012.750873, + 1790228012.8387873, + 1790228012.9202292, + 1790228012.996998, + 1790228013.0784132, + 1790228013.1557443, + 1790228013.24553, + 1790228013.3325374, + 1790228013.4160597, + 1790228013.5020216, + 1790228013.579068, + 1790228013.6596782, + 1790228013.751827, + 1790228013.8531425, + 1790228013.9394681, + 1790228014.0196693, + 1790228014.1026866, + 1790228014.1853478, + 1790228014.275469, + 1790228014.3606026, + 1790228014.4536974, + 1790228014.5397484, + 1790228014.6218288, + 1790228014.7101483, + 1790228014.792852, + 1790228014.8738842, + 1790228014.957497 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.13890886306762695, + "decode_tok_per_s": 11.984295308003755 + }, + { + "request_id": "72e4b34147564e28-12", + "session_id": "72e4b34147564e28", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790228014.957691, + "first_token_unix": 1790228015.0843787, + "last_token_unix": 1790228020.498477, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790228015.0843787, + 1790228015.167299, + 1790228015.2548282, + 1790228015.3436744, + 1790228015.4669497, + 1790228015.5527937, + 1790228015.648059, + 1790228015.734249, + 1790228015.8088124, + 1790228015.90296, + 1790228015.9965863, + 1790228016.081251, + 1790228016.1707306, + 1790228016.2611544, + 1790228016.3522143, + 1790228016.4486732, + 1790228016.5286112, + 1790228016.6274838, + 1790228016.710759, + 1790228016.7982936, + 1790228016.8895488, + 1790228016.9797494, + 1790228017.0633411, + 1790228017.14527, + 1790228017.2241588, + 1790228017.3124962, + 1790228017.402848, + 1790228017.4829168, + 1790228017.5570757, + 1790228017.6445365, + 1790228017.7456198, + 1790228017.8263245, + 1790228017.9019213, + 1790228017.980278, + 1790228018.0628355, + 1790228018.1522074, + 1790228018.2344205, + 1790228018.312673, + 1790228018.4094813, + 1790228018.5040157, + 1790228018.5954947, + 1790228018.6776507, + 1790228018.764301, + 1790228018.8372896, + 1790228018.92071, + 1790228019.0036004, + 1790228019.0853343, + 1790228019.1710267, + 1790228019.2511766, + 1790228019.3384554, + 1790228019.420617, + 1790228019.5092347, + 1790228019.5996332, + 1790228019.6909125, + 1790228019.7797468, + 1790228019.8617616, + 1790228019.942358, + 1790228020.0171177, + 1790228020.0926192, + 1790228020.1694703, + 1790228020.2543595, + 1790228020.3381577, + 1790228020.4231298, + 1790228020.498477 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.12668776512145996, + "decode_tok_per_s": 11.636286772447908 + }, + { + "request_id": "17a4d2e0217d4587-13", + "session_id": "17a4d2e0217d4587", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790228020.4986908, + "first_token_unix": 1790228020.624539, + "last_token_unix": 1790228025.8877711, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790228020.624539, + 1790228020.7065735, + 1790228020.780694, + 1790228020.8600202, + 1790228020.9527369, + 1790228021.0329118, + 1790228021.1168804, + 1790228021.202973, + 1790228021.2832994, + 1790228021.3685515, + 1790228021.4555619, + 1790228021.5411236, + 1790228021.6220324, + 1790228021.6997268, + 1790228021.7806177, + 1790228021.8632095, + 1790228021.9470901, + 1790228022.0371041, + 1790228022.121079, + 1790228022.2065108, + 1790228022.285221, + 1790228022.370042, + 1790228022.4539983, + 1790228022.5334547, + 1790228022.6103559, + 1790228022.694815, + 1790228022.7777443, + 1790228022.8549626, + 1790228022.930746, + 1790228023.0094151, + 1790228023.1000257, + 1790228023.1849833, + 1790228023.2748888, + 1790228023.356211, + 1790228023.4595048, + 1790228023.5464413, + 1790228023.6311297, + 1790228023.717528, + 1790228023.7999752, + 1790228023.8740191, + 1790228023.9556112, + 1790228024.036451, + 1790228024.1167212, + 1790228024.204457, + 1790228024.316732, + 1790228024.4004498, + 1790228024.4812946, + 1790228024.5648956, + 1790228024.6518648, + 1790228024.736494, + 1790228024.824578, + 1790228024.902018, + 1790228024.977777, + 1790228025.062058, + 1790228025.1410108, + 1790228025.227693, + 1790228025.304774, + 1790228025.3876307, + 1790228025.465902, + 1790228025.5517354, + 1790228025.633592, + 1790228025.7242815, + 1790228025.8031502, + 1790228025.8877711 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.12584805488586426, + "decode_tok_per_s": 11.969830939105789 + }, + { + "request_id": "29ebde76bbb34718-14", + "session_id": "29ebde76bbb34718", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790228025.8879905, + "first_token_unix": 1790228026.016822, + "last_token_unix": 1790228031.3384466, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790228026.016822, + 1790228026.1061351, + 1790228026.189041, + 1790228026.2760005, + 1790228026.3655176, + 1790228026.4486034, + 1790228026.533684, + 1790228026.618266, + 1790228026.6979783, + 1790228026.792335, + 1790228026.8794506, + 1790228026.9616628, + 1790228027.0463285, + 1790228027.125885, + 1790228027.2117074, + 1790228027.2962074, + 1790228027.386122, + 1790228027.4700656, + 1790228027.5536985, + 1790228027.6363618, + 1790228027.7138183, + 1790228027.7975657, + 1790228027.872645, + 1790228027.9572237, + 1790228028.0390594, + 1790228028.122351, + 1790228028.2011495, + 1790228028.2797573, + 1790228028.3645601, + 1790228028.4475665, + 1790228028.529283, + 1790228028.6084316, + 1790228028.6875436, + 1790228028.7627308, + 1790228028.8430736, + 1790228028.9274197, + 1790228029.009776, + 1790228029.0960267, + 1790228029.184058, + 1790228029.269316, + 1790228029.364753, + 1790228029.4628572, + 1790228029.5458915, + 1790228029.6378014, + 1790228029.718562, + 1790228029.802372, + 1790228029.8936872, + 1790228029.9779267, + 1790228030.0638046, + 1790228030.1463141, + 1790228030.2299213, + 1790228030.3144267, + 1790228030.3979764, + 1790228030.4863698, + 1790228030.5726013, + 1790228030.651766, + 1790228030.7456925, + 1790228030.8372762, + 1790228030.923666, + 1790228031.0021422, + 1790228031.083446, + 1790228031.1621075, + 1790228031.258163, + 1790228031.3384466 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.1288316249847412, + "decode_tok_per_s": 11.838490256786685 + }, + { + "request_id": "aa70b61431f04170-15", + "session_id": "aa70b61431f04170", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790228031.338648, + "first_token_unix": 1790228031.4642882, + "last_token_unix": 1790228036.6863132, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790228031.4642882, + 1790228031.5393255, + 1790228031.6252348, + 1790228031.7132266, + 1790228031.7944944, + 1790228031.8738227, + 1790228031.954908, + 1790228032.0378468, + 1790228032.1161165, + 1790228032.1974313, + 1790228032.2796545, + 1790228032.3624618, + 1790228032.4419472, + 1790228032.527954, + 1790228032.6102674, + 1790228032.6921618, + 1790228032.771153, + 1790228032.8529575, + 1790228032.9358845, + 1790228033.0178401, + 1790228033.0968156, + 1790228033.18731, + 1790228033.269605, + 1790228033.3594806, + 1790228033.4393754, + 1790228033.5156612, + 1790228033.596597, + 1790228033.672496, + 1790228033.7545707, + 1790228033.8328347, + 1790228033.916793, + 1790228033.9995124, + 1790228034.08478, + 1790228034.1646194, + 1790228034.2429175, + 1790228034.3204033, + 1790228034.4115384, + 1790228034.492815, + 1790228034.5857484, + 1790228034.6729338, + 1790228034.7552435, + 1790228034.8408837, + 1790228034.9239862, + 1790228035.0108309, + 1790228035.0947483, + 1790228035.182993, + 1790228035.2652102, + 1790228035.3464057, + 1790228035.427944, + 1790228035.5076222, + 1790228035.58991, + 1790228035.6795917, + 1790228035.7679234, + 1790228035.8522737, + 1790228035.9328644, + 1790228036.01637, + 1790228036.099332, + 1790228036.183717, + 1790228036.264399, + 1790228036.3507094, + 1790228036.4407117, + 1790228036.5226297, + 1790228036.6024976, + 1790228036.6863132 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.1256401538848877, + "decode_tok_per_s": 12.06428559688368 + }, + { + "request_id": "dd231fceb677474d-16", + "session_id": "dd231fceb677474d", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790228036.6865377, + "first_token_unix": 1790228036.8106103, + "last_token_unix": 1790228042.0974793, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790228036.8106103, + 1790228036.8913815, + 1790228036.9804566, + 1790228037.0726116, + 1790228037.162361, + 1790228037.2731576, + 1790228037.3706563, + 1790228037.461079, + 1790228037.5527565, + 1790228037.6384706, + 1790228037.7179415, + 1790228037.8094933, + 1790228037.894121, + 1790228037.9702404, + 1790228038.0556529, + 1790228038.1360278, + 1790228038.2226803, + 1790228038.3023958, + 1790228038.3826013, + 1790228038.462921, + 1790228038.5352666, + 1790228038.6191902, + 1790228038.701016, + 1790228038.7869291, + 1790228038.857833, + 1790228038.933238, + 1790228039.0217693, + 1790228039.1108084, + 1790228039.197876, + 1790228039.279246, + 1790228039.371988, + 1790228039.453569, + 1790228039.5349963, + 1790228039.6180632, + 1790228039.7069438, + 1790228039.7904825, + 1790228039.8713126, + 1790228039.9590518, + 1790228040.0470617, + 1790228040.1290543, + 1790228040.2176006, + 1790228040.2947712, + 1790228040.3804934, + 1790228040.4577582, + 1790228040.5411704, + 1790228040.6187959, + 1790228040.6979449, + 1790228040.7857754, + 1790228040.8587856, + 1790228040.9364045, + 1790228041.0233073, + 1790228041.1066875, + 1790228041.1865613, + 1790228041.2576916, + 1790228041.3367631, + 1790228041.4220364, + 1790228041.5095894, + 1790228041.592397, + 1790228041.6771522, + 1790228041.7594492, + 1790228041.8403032, + 1790228041.9296448, + 1790228042.017446, + 1790228042.0974793 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.12407255172729492, + "decode_tok_per_s": 11.916315576428959 + }, + { + "request_id": "45b9d5f9704d46c2-17", + "session_id": "45b9d5f9704d46c2", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790228042.0976505, + "first_token_unix": 1790228042.2391565, + "last_token_unix": 1790228047.6538022, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790228042.2391565, + 1790228042.3241022, + 1790228042.4074485, + 1790228042.484378, + 1790228042.5559053, + 1790228042.6385152, + 1790228042.7241566, + 1790228042.809911, + 1790228042.886525, + 1790228042.9786878, + 1790228043.071071, + 1790228043.1562192, + 1790228043.252156, + 1790228043.3372743, + 1790228043.4208853, + 1790228043.5062928, + 1790228043.5899932, + 1790228043.6687691, + 1790228043.7578912, + 1790228043.8402498, + 1790228043.9239511, + 1790228044.0050144, + 1790228044.089866, + 1790228044.16944, + 1790228044.2994254, + 1790228044.4083798, + 1790228044.4963472, + 1790228044.5809002, + 1790228044.671816, + 1790228044.7620416, + 1790228044.8531506, + 1790228044.9316483, + 1790228045.0120652, + 1790228045.0928702, + 1790228045.1797194, + 1790228045.270131, + 1790228045.3578749, + 1790228045.4418907, + 1790228045.522438, + 1790228045.6119754, + 1790228045.6907034, + 1790228045.7686613, + 1790228045.8482912, + 1790228045.9337182, + 1790228046.0283775, + 1790228046.111672, + 1790228046.19122, + 1790228046.2768135, + 1790228046.3617399, + 1790228046.442462, + 1790228046.5349374, + 1790228046.61394, + 1790228046.7006278, + 1790228046.791692, + 1790228046.8855813, + 1790228046.9692178, + 1790228047.0565305, + 1790228047.1461692, + 1790228047.2282598, + 1790228047.3126378, + 1790228047.4002125, + 1790228047.4807167, + 1790228047.5695944, + 1790228047.6538022 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.14150595664978027, + "decode_tok_per_s": 11.635110368826636 + }, + { + "request_id": "136aa8a417aa4f19-18", + "session_id": "136aa8a417aa4f19", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790228047.6540232, + "first_token_unix": 1790228047.7849069, + "last_token_unix": 1790228053.2836192, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790228047.7849069, + 1790228047.8710048, + 1790228047.9639177, + 1790228048.0520895, + 1790228048.1417434, + 1790228048.2360299, + 1790228048.3310263, + 1790228048.4177792, + 1790228048.5057766, + 1790228048.594486, + 1790228048.6841104, + 1790228048.7676132, + 1790228048.8563604, + 1790228048.9361703, + 1790228049.0220265, + 1790228049.1009843, + 1790228049.1880968, + 1790228049.2837734, + 1790228049.3763087, + 1790228049.4605331, + 1790228049.5487506, + 1790228049.6450152, + 1790228049.7381358, + 1790228049.8161519, + 1790228049.9028153, + 1790228049.995641, + 1790228050.0897264, + 1790228050.1759157, + 1790228050.261403, + 1790228050.343456, + 1790228050.4351428, + 1790228050.5183568, + 1790228050.605267, + 1790228050.6832886, + 1790228050.786115, + 1790228050.8697512, + 1790228050.9513738, + 1790228051.0407157, + 1790228051.118932, + 1790228051.2102616, + 1790228051.2999716, + 1790228051.3886244, + 1790228051.4703114, + 1790228051.5516322, + 1790228051.6340208, + 1790228051.7197332, + 1790228051.8041728, + 1790228051.887383, + 1790228051.9701614, + 1790228052.061267, + 1790228052.1453922, + 1790228052.2380202, + 1790228052.327885, + 1790228052.419743, + 1790228052.5114007, + 1790228052.59323, + 1790228052.6837952, + 1790228052.765156, + 1790228052.8521893, + 1790228052.9460478, + 1790228053.0330193, + 1790228053.1132326, + 1790228053.1946545, + 1790228053.2836192 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.13088369369506836, + "decode_tok_per_s": 11.457227901454221 + }, + { + "request_id": "527606e36d554130-19", + "session_id": "527606e36d554130", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790228053.2838228, + "first_token_unix": 1790228053.4216394, + "last_token_unix": 1790228059.0351064, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790228053.4216394, + 1790228053.5097303, + 1790228053.5953043, + 1790228053.6909723, + 1790228053.7726293, + 1790228053.8612628, + 1790228053.9508243, + 1790228054.036247, + 1790228054.1265445, + 1790228054.2085385, + 1790228054.2934792, + 1790228054.3807666, + 1790228054.463768, + 1790228054.553586, + 1790228054.6385233, + 1790228054.7294652, + 1790228054.8227725, + 1790228054.904926, + 1790228054.995444, + 1790228055.0828178, + 1790228055.1693466, + 1790228055.2551231, + 1790228055.349689, + 1790228055.4361014, + 1790228055.5165455, + 1790228055.594735, + 1790228055.6891456, + 1790228055.7789397, + 1790228055.858259, + 1790228055.9441435, + 1790228056.0242963, + 1790228056.1081357, + 1790228056.1939683, + 1790228056.2991369, + 1790228056.3944802, + 1790228056.4825168, + 1790228056.5728097, + 1790228056.6890001, + 1790228056.8057375, + 1790228056.8910155, + 1790228056.972275, + 1790228057.0630243, + 1790228057.1471958, + 1790228057.2395911, + 1790228057.3258243, + 1790228057.4182205, + 1790228057.5108407, + 1790228057.592352, + 1790228057.6750028, + 1790228057.7646735, + 1790228057.8540382, + 1790228057.937372, + 1790228058.0314257, + 1790228058.1141605, + 1790228058.2049847, + 1790228058.296707, + 1790228058.3890939, + 1790228058.4821184, + 1790228058.5899003, + 1790228058.6765375, + 1790228058.7690823, + 1790228058.8580258, + 1790228058.9517443, + 1790228059.0351064 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.1378166675567627, + "decode_tok_per_s": 11.223010707301853 + }, + { + "request_id": "02a5c75118ac45a5-20", + "session_id": "02a5c75118ac45a5", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790228059.0353475, + "first_token_unix": 1790228059.1637862, + "last_token_unix": 1790228064.7064123, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790228059.1637862, + 1790228059.2547529, + 1790228059.341833, + 1790228059.4350767, + 1790228059.5443766, + 1790228059.6317449, + 1790228059.7211902, + 1790228059.8160007, + 1790228059.9112616, + 1790228059.9980302, + 1790228060.080847, + 1790228060.1677303, + 1790228060.2538254, + 1790228060.3463595, + 1790228060.43136, + 1790228060.516156, + 1790228060.5965512, + 1790228060.689601, + 1790228060.7978067, + 1790228060.878319, + 1790228060.9669542, + 1790228061.0624797, + 1790228061.1485877, + 1790228061.2367184, + 1790228061.3274548, + 1790228061.4188936, + 1790228061.5011134, + 1790228061.5861335, + 1790228061.6661952, + 1790228061.7491941, + 1790228061.8270044, + 1790228061.9198122, + 1790228062.0095406, + 1790228062.0972888, + 1790228062.18435, + 1790228062.2668462, + 1790228062.3556182, + 1790228062.4559083, + 1790228062.5386121, + 1790228062.620767, + 1790228062.7076035, + 1790228062.7991612, + 1790228062.8828943, + 1790228062.9638674, + 1790228063.0566556, + 1790228063.1455777, + 1790228063.2327833, + 1790228063.324823, + 1790228063.4061432, + 1790228063.5001585, + 1790228063.5863712, + 1790228063.673603, + 1790228063.7543037, + 1790228063.8373754, + 1790228063.921555, + 1790228064.0066612, + 1790228064.0898561, + 1790228064.1766787, + 1790228064.2661781, + 1790228064.3605113, + 1790228064.4475718, + 1790228064.5308132, + 1790228064.6180418, + 1790228064.7064123 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.12843871116638184, + "decode_tok_per_s": 11.36645308203361 + } + ], + "streams": { + "c4f9f82aa56e4cff-0": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "43d69378507249ab-1": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "bbae8fb15bf24069-2": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "b0d0caf0e5154ce6-3": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "f988922a6588444e-4": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "f1739b9a91f74531-5": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "92fb3471b62246e4-6": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "b7af43bc898b46d7-7": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "cfa4f33243bd4b2a-8": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "52a543e7d1a74526-9": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "fbd7fa22c0864069-10": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "4e28564634fe4d90-11": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "72e4b34147564e28-12": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "17a4d2e0217d4587-13": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "29ebde76bbb34718-14": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "aa70b61431f04170-15": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "dd231fceb677474d-16": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "45b9d5f9704d46c2-17": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "136aa8a417aa4f19-18": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "527606e36d554130-19": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "02a5c75118ac45a5-20": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + } + }, + "load_s_not_request_timing": 18.35600994003471, + "warmup_count": 1, + "measured_count": 20, + "max_new_tokens": 64, + "runs": [ + { + "kind": "warmup", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 5.429453907010611, + "ttft_s": 0.14870023727416992, + "decode_tok_per_s": 11.930498916082959, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 5.315047823998611, + "ttft_s": 0.14580631256103516, + "decode_tok_per_s": 12.187827888916347, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 5.358146503975149, + "ttft_s": 0.12621760368347168, + "decode_tok_per_s": 12.041741788612848, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 5.534196878958028, + "ttft_s": 0.12305688858032227, + "decode_tok_per_s": 11.643029035536287, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 5.802630776015576, + "ttft_s": 0.17619562149047852, + "decode_tok_per_s": 11.197413385054332, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 5.507736052968539, + "ttft_s": 0.1403789520263672, + "decode_tok_per_s": 11.737908882702891, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 5.4157320889644325, + "ttft_s": 0.12866926193237305, + "decode_tok_per_s": 11.916349431624088, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 5.362634474004153, + "ttft_s": 0.12881684303283691, + "decode_tok_per_s": 12.037414219447884, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 5.331082838005386, + "ttft_s": 0.13860535621643066, + "decode_tok_per_s": 12.133323262069961, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 5.382455468003172, + "ttft_s": 0.12227869033813477, + "decode_tok_per_s": 11.977472441598744, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 5.3760405229986645, + "ttft_s": 0.13649868965148926, + "decode_tok_per_s": 12.024257003448449, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 5.395915235974826, + "ttft_s": 0.13890886306762695, + "decode_tok_per_s": 11.984295308003755, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 5.540921471023466, + "ttft_s": 0.12668776512145996, + "decode_tok_per_s": 11.636286772447908, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 5.389209136017598, + "ttft_s": 0.12584805488586426, + "decode_tok_per_s": 11.969830939105789, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 5.450597429997288, + "ttft_s": 0.1288316249847412, + "decode_tok_per_s": 11.838490256786685, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 5.347800190967973, + "ttft_s": 0.1256401538848877, + "decode_tok_per_s": 12.06428559688368, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 5.411060240992811, + "ttft_s": 0.12407255172729492, + "decode_tok_per_s": 11.916315576428959, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 5.556279894022737, + "ttft_s": 0.14150595664978027, + "decode_tok_per_s": 11.635110368826636, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 5.629727550956886, + "ttft_s": 0.13088369369506836, + "decode_tok_per_s": 11.457227901454221, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 5.7514277580194175, + "ttft_s": 0.1378166675567627, + "decode_tok_per_s": 11.223010707301853, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 5.671214425005019, + "ttft_s": 0.12843871116638184, + "decode_tok_per_s": 11.36645308203361, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + } + ], + "nearest_rank_p50_wall_s": 5.411060240992811, + "nearest_rank_p95_wall_s": 5.7514277580194175, + "nearest_rank_p50_ttft_s": 0.12881684303283691, + "nearest_rank_p95_ttft_s": 0.14580631256103516, + "limits": [ + "One short prompt and one concurrency level; the acceptance and parity suites are separate evidence.", + "The host power condition was not controlled or recorded as a sustained thermal test." + ] +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/profile20_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/profile20_report.json new file mode 100644 index 000000000..ded4969de --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/profile20_report.json @@ -0,0 +1,4192 @@ +{ + "scope": "Spark-X2.5-1.7B dense BF16 complete text requests through Omni on WSL HX370 CPU", + "status": "scoped_e2e_profiled", + "model": "/home/zhout/project/edge_infer/models/Spark-X2.5-1.7B-BF16", + "runtime": { + "python": "3.12.13", + "platform": "Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.43", + "torch": "2.13.0+cpu", + "vllm": "0.28.0", + "vllm_omni": "0.28.1.dev154+g3834de310.d20260914", + "vllm_omni_file": "/home/zhout/project/edge_infer/vllm-omni/vllm_omni/__init__.py", + "vllm_file": "/home/zhout/project/edge_infer/.venvs/omni-cpu/lib/python3.12/site-packages/vllm/__init__.py", + "checkouts": { + "/home/zhout/project/edge_infer/vllm-omni": "3834de31051ae428beb2765915cdaff1772b9bbc-dirty", + "/home/zhout/project/edge_infer": "758b3af238b19e2c2abc668f23a767bb835a4a22-dirty" + } + }, + "plan": { + "admitted": true, + "backend": "vllm:cpu", + "selected_device": { + "device_id": "cpu", + "kind": "cpu", + "vendor": "amd", + "name": "AMD Ryzen AI 9 HX 370 w/ Radeon 890M", + "backend": "vllm:cpu", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 33184976896, + "compute_capability": null, + "weight_formats": [ + "compressed-tensors:int8", + "dense", + "gptq" + ], + "evidence": "B", + "reason": "", + "masked": false, + "extra": { + "n_physical": 12, + "n_logical": 24, + "ram_available_bytes": 30845100032, + "bf16": true + } + }, + "devices": [ + { + "device_id": "npu:amd", + "kind": "npu", + "vendor": "amd", + "name": "NPU Compute Accelerator Device", + "backend": "ort:vitisai", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 0, + "compute_capability": null, + "weight_formats": [ + "onnx:a16w8" + ], + "evidence": "B", + "reason": "An MCDM device; WSL2's GPU-PV forwards WDDM display adapters only, so it has no device node here and nothing installed inside WSL reaches it. It does work from a Windows-side process -- onnxruntime>=1.25 plus the WindowsWorkload.EP.AMD.VitisAI.Framework appx, loading onnxruntime_vitisai_ep.dll (not the RyzenAI *Light* EP beside it) with its own directory on the DLL search path, against an A16W8-quantized opset-21 graph. Measured 5.3x the CPU on a 1024x2048x2048 GEMM. See vllm_omni/edge/npu_ryzenai.py.", + "masked": false, + "extra": { + "source": "wsl-interop", + "probe_route": "ryzenai-ep-windows", + "host_pool_bytes": 33184976896, + "host_pool_available_bytes": 30845100032, + "worker_route": "ort-vitisai", + "worker_interpreter": "/mnt/c/Users/zhout/npu-ep/Scripts/python.exe", + "routes": [ + { + "name": "ort-vitisai", + "interpreter": "/mnt/c/Users/zhout/npu-ep/Scripts/python.exe", + "worker": "/home/zhout/project/edge_infer/vllm-omni/vllm_omni/edge/local/external/worker_ort.py", + "ep": "vitisai", + "is_windows": true, + "available": true, + "reason": "", + "extra": null + } + ], + "executes": "exported graphs, not checkpoints", + "dedicated_vram_bytes": 0 + } + }, + { + "device_id": "gpu_integrated:amd", + "kind": "gpu_integrated", + "vendor": "amd", + "name": "AMD Radeon(TM) 890M Graphics", + "backend": "ort:dml", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 0, + "compute_capability": null, + "weight_formats": [ + "onnx:fp16", + "onnx:fp32" + ], + "evidence": "B", + "reason": "No /dev/dri under WSL2, but reachable through DirectML over /dev/dxg: pip install torch-directml in its own venv (it pins torch==2.4.1). Measured 1.12 TFLOP/s fp32 and 5-7.4 GB/s -- below the CPU on both, so route work here only when the CPU is the thing you are trying to free.", + "masked": false, + "extra": { + "source": "wsl-interop", + "probe_route": "directml", + "host_pool_bytes": 33184976896, + "host_pool_available_bytes": 30845100032, + "worker_route": "ort-dml", + "worker_interpreter": "/mnt/c/Users/zhout/dml-ep/Scripts/python.exe", + "routes": [ + { + "name": "ort-dml", + "interpreter": "/mnt/c/Users/zhout/dml-ep/Scripts/python.exe", + "worker": "/home/zhout/project/edge_infer/vllm-omni/vllm_omni/edge/local/external/worker_ort.py", + "ep": "dml", + "is_windows": true, + "available": true, + "reason": "", + "extra": null + }, + { + "name": "torch-dml", + "interpreter": "/home/zhout/project/edge_infer/.venvs/dml/bin/python", + "worker": "/home/zhout/project/edge_infer/vllm-omni/vllm_omni/edge/local/external/worker_dml.py", + "ep": "dml", + "is_windows": false, + "available": true, + "reason": "", + "extra": null + } + ], + "executes": "exported graphs, not checkpoints", + "dedicated_vram_bytes": 0 + } + }, + { + "device_id": "cpu", + "kind": "cpu", + "vendor": "amd", + "name": "AMD Ryzen AI 9 HX 370 w/ Radeon 890M", + "backend": "vllm:cpu", + "runnable": true, + "memory_pool": "host_ram", + "memory_bytes": 33184976896, + "compute_capability": null, + "weight_formats": [ + "compressed-tensors:int8", + "dense", + "gptq" + ], + "evidence": "B", + "reason": "", + "masked": false, + "extra": { + "n_physical": 12, + "n_logical": 24, + "ram_available_bytes": 30845100032, + "bf16": true + } + } + ], + "stage": { + "stage_id": 0, + "model_stage": "spark2_5", + "execution_type": "LLM_AR", + "input_sources": [], + "final_output": true, + "final_output_type": "text", + "owns_tokenizer": true, + "state": "kv_cache", + "streaming_granularity": "token" + }, + "engine_kwargs": { + "max_model_len": 4096, + "max_num_seqs": 1, + "max_num_batched_tokens": 2048, + "enforce_eager": true, + "enable_prefix_caching": false, + "gpu_memory_utilization": 0.27, + "kv_cache_memory_bytes": 293601280, + "dtype": "bfloat16" + }, + "reservations": [ + { + "pool": "host_ram", + "purpose": "weights", + "bytes": 3415340496, + "lifetime": "session_weights", + "reclaimable": "no", + "evidence": "D", + "note": "2 safetensors shard(s), on-disk size; the load moved +6.59 GiB of process-tree RSS, which bounds weights + backend context together and is not an attribution to the weights alone", + "actual_upper_bound_bytes": 7079030784 + }, + { + "pool": "host_ram", + "purpose": "kv_cache", + "bytes": 293601280, + "lifetime": "session", + "reclaimable": "on_evict", + "evidence": "E", + "note": "flat budget at 1x context; 96 MiB if the backend accounts 21 sliding layers separately", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "activations", + "bytes": 101187584, + "lifetime": "request", + "reclaimable": "on_release", + "evidence": "E", + "note": "2048-token prefill chunk x 12 live tensors", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "backend_workspace", + "bytes": 536870912, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "attention scratch, driver/allocator context", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "load_transient", + "bytes": 1707670248, + "lifetime": "load", + "reclaimable": "on_release", + "evidence": "E", + "note": "freed once the weights are resident; peaks with the largest shard", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "external_reserve", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "memory this engine does not own on a shared pool", + "actual_upper_bound_bytes": null + }, + { + "pool": "host_ram", + "purpose": "safety_margin", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "fragmentation and allocator slack", + "actual_upper_bound_bytes": null + } + ], + "reserved_total_bytes": 8202154168, + "kv_budget": { + "bytes_total": 293601280, + "bytes_total_hybrid": 100925440, + "bytes_per_token_flat": 57344, + "token_layers_hybrid": 39424, + "token_layers_flat": 114688, + "sliding_layers": 21, + "full_layers": 7, + "window": 512, + "linear_layers": 0, + "state_bytes_per_seq": 0, + "state_bytes_total": 0, + "summary": "280 MiB flat; 96 MiB if the backend accounts 21 sliding@512 layers separately (2.91x)", + "saving_vs_flat": 2.909090909090909 + }, + "refusals": [ + { + "code": "no_exported_graph", + "device_id": "npu:amd", + "message": "npu:amd executes exported graphs (['onnx:a16w8']), not checkpoints, so a whole autoregressive text session cannot be placed on it", + "remedy": "place a single stage there instead, via vllm_omni.edge.local.external.stage.plan_external_stage; the decode loop stays on the CPU or the GPU because both of these devices read the same system memory it does" + }, + { + "code": "no_exported_graph", + "device_id": "gpu_integrated:amd", + "message": "gpu_integrated:amd executes exported graphs (['onnx:fp16', 'onnx:fp32']), not checkpoints, so a whole autoregressive text session cannot be placed on it", + "remedy": "place a single stage there instead, via vllm_omni.edge.local.external.stage.plan_external_stage; the decode loop stays on the CPU or the GPU because both of these devices read the same system memory it does" + } + ], + "fallbacks": [ + "shorter --max-model-len reduces the KV reservation linearly" + ], + "request_limits": { + "max_model_len": 4096, + "max_num_seqs": 1, + "max_num_batched_tokens": 2048 + }, + "manifest": { + "model_dir": "/home/zhout/project/edge_infer/models/Spark-X2.5-1.7B-BF16", + "model_type": "spark2_5", + "architectures": [ + "Spark2_5ForCausalLM" + ], + "dtype": "bfloat16", + "weight_format": "dense", + "quantization": null, + "config_sha256": "16aa5d3619d0d893e7157f2499675430844eb7b383c80ecc1b3e8e8928a75d52", + "tokenizer_sha256": "72b88cd03593f92c7307ac23653df70ca383df15357fca03f6c5c0b3b3ea8f17", + "tokenizer_files": [ + "tokenizer.json", + "tokenizer_config.json", + "special_tokens_map.json", + "chat_template.jinja", + "vocab.json", + "merges.txt", + "generation_config.json" + ], + "weight_files": [ + "model-00001-of-00002.safetensors", + "model-00002-of-00002.safetensors" + ], + "weight_bytes": 3415340496, + "weight_sha256": null, + "revision": null, + "runtime": { + "python": "3.12.13", + "platform": "Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.43", + "torch": "2.13.0+cpu", + "vllm": "0.28.0", + "vllm_omni": "0.28.1.dev154+g3834de310.d20260914", + "vllm_omni_file": "/home/zhout/project/edge_infer/vllm-omni/vllm_omni/__init__.py", + "vllm_file": "/home/zhout/project/edge_infer/.venvs/omni-cpu/lib/python3.12/site-packages/vllm/__init__.py", + "checkouts": { + "/home/zhout/project/edge_infer/vllm-omni": "3834de31051ae428beb2765915cdaff1772b9bbc-dirty", + "/home/zhout/project/edge_infer": "758b3af238b19e2c2abc668f23a767bb835a4a22-dirty" + } + }, + "notes": [ + "weights identified by name+size, not content; pass digest_weights=True to hash them" + ], + "artifact_id": "c777e48f9e300714" + }, + "notes": [ + "activations, workspace and the load transient are estimates (E); engine.py records the measured peak against them after the load" + ] + }, + "placement": { + "planned_device": "cpu", + "planned_backend": "vllm:cpu", + "configured": { + "device": "cpu", + "device_type": "cpu", + "dtype": "torch.bfloat16", + "quantization": null, + "max_model_len": 4096, + "enforce_eager": true, + "kv_cache_memory_bytes": 293601280, + "num_gpu_blocks": 160, + "block_size": 128 + }, + "observed": { + "nvml_device_used_delta_at_load": null, + "tree_rss_delta_at_load": 7079030784, + "per_process_gpu_attribution": null, + "per_process_gpu_attribution_reason": "NVML per-process query unavailable on this wsl2 host: No module named 'pynvml'. The load delta is a whole-card measurement." + } + }, + "usage": { + "load_seconds": 26.46776065195445, + "reservations": [ + { + "pool": "host_ram", + "purpose": "weights", + "bytes": 3415340496, + "lifetime": "session_weights", + "reclaimable": "no", + "evidence": "D", + "note": "2 safetensors shard(s), on-disk size; the load moved +6.59 GiB of process-tree RSS, which bounds weights + backend context together and is not an attribution to the weights alone", + "actual_upper_bound_bytes": 7079030784, + "upper_bound_over_budget": 2.072715968522279 + }, + { + "pool": "host_ram", + "purpose": "kv_cache", + "bytes": 293601280, + "lifetime": "session", + "reclaimable": "on_evict", + "evidence": "E", + "note": "flat budget at 1x context; 96 MiB if the backend accounts 21 sliding layers separately", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + }, + { + "pool": "host_ram", + "purpose": "activations", + "bytes": 101187584, + "lifetime": "request", + "reclaimable": "on_release", + "evidence": "E", + "note": "2048-token prefill chunk x 12 live tensors", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + }, + { + "pool": "host_ram", + "purpose": "backend_workspace", + "bytes": 536870912, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "attention scratch, driver/allocator context", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + }, + { + "pool": "host_ram", + "purpose": "load_transient", + "bytes": 1707670248, + "lifetime": "load", + "reclaimable": "on_release", + "evidence": "E", + "note": "freed once the weights are resident; peaks with the largest shard", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + }, + { + "pool": "host_ram", + "purpose": "external_reserve", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "memory this engine does not own on a shared pool", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + }, + { + "pool": "host_ram", + "purpose": "safety_margin", + "bytes": 1073741824, + "lifetime": "session", + "reclaimable": "no", + "evidence": "E", + "note": "fragmentation and allocator slack", + "actual_upper_bound_bytes": null, + "upper_bound_over_budget": null + } + ], + "budgeted_peak_bytes": 8202154168, + "measured_peak": { + "pool": "host_ram", + "counter": "tree_rss", + "baseline_bytes": 806273024, + "peak_bytes": 7904944128, + "attributable_peak_bytes": 7098671104, + "budgeted_peak_bytes": 8202154168, + "budget_over_measured": 1.1554492450535148, + "admitted_without_oom": true, + "caveats": "sampled every 0.25 s, so the peak is a lower bound; the counter is shared with other processes and the baseline subtraction only removes what was there before the load, not what arrived during it. A budget above the measured peak is the intended outcome -- this budget is a safe upper bound for admission, not a prediction." + }, + "load_memory": { + "before": { + "unix": 1790226485.5406961, + "nvml_device_used": null, + "nvml_device_total": null, + "tree_rss": 806273024, + "tree_pss": 804834304, + "host_available": 30834941952, + "host_total": 33184976896 + }, + "after": { + "unix": 1790226512.1037667, + "nvml_device_used": null, + "nvml_device_total": null, + "tree_rss": 7885303808, + "tree_pss": 7350001664, + "host_available": 24162050048, + "host_total": 33184976896 + }, + "nvml_device_used_delta": null, + "tree_rss_delta": 7079030784, + "peaks_during_load": { + "samples": 84, + "interval_s": 0.25, + "note": "peaks are lower bounds: anything shorter than interval_s is missed. nvml_device_used is the whole card including other processes; tree_pss includes a share of file-backed pages. These three counters are different accountings and must not be summed.", + "nvml_device_used_peak": null, + "nvml_device_used_min": null, + "tree_rss_peak": 7885303808, + "tree_pss_peak": 7350001664, + "host_available_min": 24162050048 + } + }, + "peaks": { + "samples": 336, + "interval_s": 0.25, + "note": "peaks are lower bounds: anything shorter than interval_s is missed. nvml_device_used is the whole card including other processes; tree_pss includes a share of file-backed pages. These three counters are different accountings and must not be summed.", + "nvml_device_used_peak": null, + "nvml_device_used_min": null, + "tree_rss_peak": 7904944128, + "tree_pss_peak": 7369537536, + "host_available_min": 24135196672 + }, + "requests": [ + { + "request_id": "c2a861a2024348a4-0", + "session_id": "c2a861a2024348a4", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790226512.1039836, + "first_token_unix": 1790226512.2439647, + "last_token_unix": 1790226517.0812907, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790226512.2439647, + 1790226512.3170872, + 1790226512.388378, + 1790226512.4596999, + 1790226512.5272853, + 1790226512.5938253, + 1790226512.678016, + 1790226512.7461698, + 1790226512.8180315, + 1790226512.8882308, + 1790226512.9538562, + 1790226513.0263095, + 1790226513.0991802, + 1790226513.1696703, + 1790226513.2541432, + 1790226513.3380442, + 1790226513.4159079, + 1790226513.504929, + 1790226513.5739553, + 1790226513.6497388, + 1790226513.7298014, + 1790226513.8193629, + 1790226513.9004164, + 1790226514.0220053, + 1790226514.1512597, + 1790226514.2316742, + 1790226514.3059716, + 1790226514.3755374, + 1790226514.4440312, + 1790226514.524093, + 1790226514.6016972, + 1790226514.6803305, + 1790226514.7485194, + 1790226514.816454, + 1790226514.8935535, + 1790226514.965014, + 1790226515.03439, + 1790226515.1062818, + 1790226515.1786296, + 1790226515.2502573, + 1790226515.322245, + 1790226515.3959813, + 1790226515.4632528, + 1790226515.5348635, + 1790226515.6128962, + 1790226515.6859648, + 1790226515.7702966, + 1790226515.8416815, + 1790226515.9244661, + 1790226516.0040584, + 1790226516.0804636, + 1790226516.1560404, + 1790226516.2317588, + 1790226516.3033855, + 1790226516.3839319, + 1790226516.4621632, + 1790226516.5391326, + 1790226516.6124926, + 1790226516.690703, + 1790226516.7693503, + 1790226516.8485868, + 1790226516.9311938, + 1790226517.0084474, + 1790226517.0812907 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.13998103141784668, + "decode_tok_per_s": 13.023724130099458 + }, + { + "request_id": "ee2016ba7308446f-1", + "session_id": "ee2016ba7308446f", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790226517.0815918, + "first_token_unix": 1790226517.2093077, + "last_token_unix": 1790226522.3229458, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790226517.2093077, + 1790226517.2874918, + 1790226517.369705, + 1790226517.44349, + 1790226517.5302885, + 1790226517.6205134, + 1790226517.6966815, + 1790226517.780719, + 1790226517.8592901, + 1790226517.93381, + 1790226518.0130634, + 1790226518.0912602, + 1790226518.1802762, + 1790226518.2578814, + 1790226518.3315954, + 1790226518.4097495, + 1790226518.4947898, + 1790226518.5740957, + 1790226518.6544306, + 1790226518.7336779, + 1790226518.8100698, + 1790226518.8856072, + 1790226518.9631596, + 1790226519.0441947, + 1790226519.1266804, + 1790226519.2100763, + 1790226519.2923503, + 1790226519.3747654, + 1790226519.4592514, + 1790226519.5340693, + 1790226519.6168249, + 1790226519.7034352, + 1790226519.7880602, + 1790226519.8691661, + 1790226519.9565802, + 1790226520.0354455, + 1790226520.1247938, + 1790226520.2024398, + 1790226520.289139, + 1790226520.3725927, + 1790226520.4517882, + 1790226520.5368702, + 1790226520.6211064, + 1790226520.7039888, + 1790226520.7808332, + 1790226520.8596637, + 1790226520.9398024, + 1790226521.017184, + 1790226521.1007636, + 1790226521.1761765, + 1790226521.257564, + 1790226521.347811, + 1790226521.431186, + 1790226521.5199318, + 1790226521.5972013, + 1790226521.687615, + 1790226521.76182, + 1790226521.8467996, + 1790226521.9247565, + 1790226522.0087671, + 1790226522.0816257, + 1790226522.1583803, + 1790226522.2391558, + 1790226522.3229458 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.1277158260345459, + "decode_tok_per_s": 12.319995665827262 + }, + { + "request_id": "6d3d69f70e254053-2", + "session_id": "6d3d69f70e254053", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790226522.3232553, + "first_token_unix": 1790226522.445759, + "last_token_unix": 1790226527.412501, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790226522.445759, + 1790226522.5298963, + 1790226522.610596, + 1790226522.700067, + 1790226522.7809029, + 1790226522.8590643, + 1790226522.940781, + 1790226523.0190923, + 1790226523.109011, + 1790226523.1955562, + 1790226523.274439, + 1790226523.3721468, + 1790226523.574507, + 1790226523.6551843, + 1790226523.7324185, + 1790226523.812367, + 1790226523.8904643, + 1790226523.9624171, + 1790226524.0347257, + 1790226524.112091, + 1790226524.188657, + 1790226524.262072, + 1790226524.3367598, + 1790226524.4145427, + 1790226524.483205, + 1790226524.5555303, + 1790226524.6291854, + 1790226524.7056973, + 1790226524.778001, + 1790226524.853096, + 1790226524.940304, + 1790226525.0162659, + 1790226525.0883937, + 1790226525.1647618, + 1790226525.2422569, + 1790226525.3134472, + 1790226525.381131, + 1790226525.4527752, + 1790226525.5223048, + 1790226525.5968258, + 1790226525.6676059, + 1790226525.7368166, + 1790226525.8203528, + 1790226525.897429, + 1790226525.977714, + 1790226526.061347, + 1790226526.1359274, + 1790226526.2082229, + 1790226526.27861, + 1790226526.3531632, + 1790226526.4335425, + 1790226526.50545, + 1790226526.5817962, + 1790226526.6602836, + 1790226526.732812, + 1790226526.8076677, + 1790226526.8802364, + 1790226526.9563491, + 1790226527.0268672, + 1790226527.1014645, + 1790226527.1753244, + 1790226527.2484055, + 1790226527.337815, + 1790226527.412501 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.12250375747680664, + "decode_tok_per_s": 12.684371265665662 + }, + { + "request_id": "cc7b394044ba4e01-3", + "session_id": "cc7b394044ba4e01", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790226527.4127784, + "first_token_unix": 1790226527.541565, + "last_token_unix": 1790226532.2436361, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790226527.541565, + 1790226527.6160684, + 1790226527.6895964, + 1790226527.7670457, + 1790226527.8460793, + 1790226527.9200783, + 1790226527.9914417, + 1790226528.0689778, + 1790226528.1430156, + 1790226528.218084, + 1790226528.2882574, + 1790226528.3568628, + 1790226528.4345381, + 1790226528.5126963, + 1790226528.5895972, + 1790226528.6632226, + 1790226528.7440784, + 1790226528.821595, + 1790226528.89775, + 1790226528.9780796, + 1790226529.0480547, + 1790226529.1259277, + 1790226529.1972847, + 1790226529.2701924, + 1790226529.34463, + 1790226529.4136188, + 1790226529.4902756, + 1790226529.5670748, + 1790226529.6415157, + 1790226529.7124956, + 1790226529.7944834, + 1790226529.8625546, + 1790226529.9314203, + 1790226530.0050602, + 1790226530.0759506, + 1790226530.1506615, + 1790226530.2237837, + 1790226530.3006883, + 1790226530.3694837, + 1790226530.4524877, + 1790226530.5295525, + 1790226530.6067863, + 1790226530.6897366, + 1790226530.7652206, + 1790226530.8407183, + 1790226530.9107683, + 1790226530.9806917, + 1790226531.0497189, + 1790226531.1268644, + 1790226531.1993034, + 1790226531.2741387, + 1790226531.3515944, + 1790226531.4212675, + 1790226531.4930844, + 1790226531.5656643, + 1790226531.6450517, + 1790226531.7174804, + 1790226531.7918937, + 1790226531.8700104, + 1790226531.9474087, + 1790226532.0244925, + 1790226532.0989907, + 1790226532.1679547, + 1790226532.2436361 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.12878656387329102, + "decode_tok_per_s": 13.398350951297024 + }, + { + "request_id": "3caad9004e99413e-4", + "session_id": "3caad9004e99413e", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790226532.2438388, + "first_token_unix": 1790226532.3659415, + "last_token_unix": 1790226537.2300947, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790226532.3659415, + 1790226532.4414163, + 1790226532.5191367, + 1790226532.592389, + 1790226532.679141, + 1790226532.75989, + 1790226532.828653, + 1790226532.900441, + 1790226532.9801803, + 1790226533.058316, + 1790226533.132662, + 1790226533.2035422, + 1790226533.2821972, + 1790226533.3574455, + 1790226533.432782, + 1790226533.5048692, + 1790226533.5790899, + 1790226533.6534965, + 1790226533.7308133, + 1790226533.800275, + 1790226533.8726397, + 1790226533.9434412, + 1790226534.0151117, + 1790226534.0894525, + 1790226534.1575592, + 1790226534.238941, + 1790226534.306246, + 1790226534.3800564, + 1790226534.4498808, + 1790226534.5178394, + 1790226534.5884778, + 1790226534.6566646, + 1790226534.7296817, + 1790226534.8096445, + 1790226534.8846004, + 1790226534.9616864, + 1790226535.0309935, + 1790226535.1052406, + 1790226535.1769924, + 1790226535.251918, + 1790226535.3257475, + 1790226535.4133577, + 1790226535.4934337, + 1790226535.5715053, + 1790226535.6525075, + 1790226535.73829, + 1790226535.8158338, + 1790226535.8905435, + 1790226535.9695787, + 1790226536.0532255, + 1790226536.130389, + 1790226536.21617, + 1790226536.3267276, + 1790226536.4950197, + 1790226536.5800586, + 1790226536.65378, + 1790226536.7227166, + 1790226536.7925143, + 1790226536.865555, + 1790226536.9388502, + 1790226537.0117903, + 1790226537.0856063, + 1790226537.1624959, + 1790226537.2300947 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.12210273742675781, + "decode_tok_per_s": 12.951894831307746 + }, + { + "request_id": "e5d4feae5a424845-5", + "session_id": "e5d4feae5a424845", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790226537.2302682, + "first_token_unix": 1790226537.352653, + "last_token_unix": 1790226542.083812, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790226537.352653, + 1790226537.4273841, + 1790226537.507193, + 1790226537.576778, + 1790226537.641558, + 1790226537.7186162, + 1790226537.7996078, + 1790226537.8744793, + 1790226537.9480872, + 1790226538.0249162, + 1790226538.0953004, + 1790226538.176581, + 1790226538.2483401, + 1790226538.322079, + 1790226538.397134, + 1790226538.4670198, + 1790226538.5430803, + 1790226538.6175358, + 1790226538.693947, + 1790226538.7703786, + 1790226538.8410237, + 1790226538.9176683, + 1790226538.9940436, + 1790226539.0631425, + 1790226539.1332097, + 1790226539.2057407, + 1790226539.275209, + 1790226539.3444145, + 1790226539.4185739, + 1790226539.4981318, + 1790226539.5712764, + 1790226539.6465588, + 1790226539.715279, + 1790226539.793861, + 1790226539.8692124, + 1790226539.943427, + 1790226540.0159564, + 1790226540.0955465, + 1790226540.169414, + 1790226540.2437458, + 1790226540.3150008, + 1790226540.387912, + 1790226540.4584463, + 1790226540.5349019, + 1790226540.6158693, + 1790226540.6853788, + 1790226540.7620065, + 1790226540.8305552, + 1790226540.9160368, + 1790226540.9979453, + 1790226541.0841992, + 1790226541.1615613, + 1790226541.2410283, + 1790226541.3242438, + 1790226541.4005737, + 1790226541.479429, + 1790226541.5584018, + 1790226541.6287973, + 1790226541.7005312, + 1790226541.7765172, + 1790226541.855881, + 1790226541.9324844, + 1790226542.0044422, + 1790226542.083812 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.12238478660583496, + "decode_tok_per_s": 13.315976143623645 + }, + { + "request_id": "0c7670ac2c5c43d1-6", + "session_id": "0c7670ac2c5c43d1", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790226542.0840247, + "first_token_unix": 1790226542.2143414, + "last_token_unix": 1790226546.8174505, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790226542.2143414, + 1790226542.283009, + 1790226542.359825, + 1790226542.43474, + 1790226542.5151534, + 1790226542.5907955, + 1790226542.6627295, + 1790226542.730796, + 1790226542.7969782, + 1790226542.8673096, + 1790226542.9393265, + 1790226543.0168998, + 1790226543.0972307, + 1790226543.165001, + 1790226543.230647, + 1790226543.300632, + 1790226543.3739445, + 1790226543.4545233, + 1790226543.5303462, + 1790226543.6070209, + 1790226543.6786885, + 1790226543.7476954, + 1790226543.8278854, + 1790226543.897108, + 1790226543.9721334, + 1790226544.041033, + 1790226544.109704, + 1790226544.181915, + 1790226544.2537394, + 1790226544.3307896, + 1790226544.4013858, + 1790226544.4782033, + 1790226544.5508418, + 1790226544.625088, + 1790226544.6965468, + 1790226544.7647364, + 1790226544.8377993, + 1790226544.9200308, + 1790226544.9901202, + 1790226545.060448, + 1790226545.1289067, + 1790226545.2028236, + 1790226545.2683156, + 1790226545.339395, + 1790226545.41833, + 1790226545.4910176, + 1790226545.5596688, + 1790226545.629951, + 1790226545.7089968, + 1790226545.786999, + 1790226545.8602726, + 1790226545.9287086, + 1790226545.9973269, + 1790226546.079985, + 1790226546.1576135, + 1790226546.2280102, + 1790226546.309431, + 1790226546.3810852, + 1790226546.4530017, + 1790226546.5232713, + 1790226546.5958996, + 1790226546.6737213, + 1790226546.7463355, + 1790226546.8174505 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.13031673431396484, + "decode_tok_per_s": 13.686401590648785 + }, + { + "request_id": "1356a5d0d54748a3-7", + "session_id": "1356a5d0d54748a3", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790226546.8176548, + "first_token_unix": 1790226546.939865, + "last_token_unix": 1790226551.6070526, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790226546.939865, + 1790226547.0099118, + 1790226547.08391, + 1790226547.1554978, + 1790226547.2293067, + 1790226547.2954702, + 1790226547.3735785, + 1790226547.4454658, + 1790226547.5177236, + 1790226547.5955555, + 1790226547.6645055, + 1790226547.7352118, + 1790226547.809703, + 1790226547.8863184, + 1790226547.958559, + 1790226548.031266, + 1790226548.1049128, + 1790226548.171677, + 1790226548.2466652, + 1790226548.3239968, + 1790226548.40563, + 1790226548.479311, + 1790226548.550563, + 1790226548.6263707, + 1790226548.7006738, + 1790226548.7697835, + 1790226548.8435225, + 1790226548.919898, + 1790226548.9921, + 1790226549.0715907, + 1790226549.146976, + 1790226549.2187464, + 1790226549.2980804, + 1790226549.3677616, + 1790226549.4412158, + 1790226549.5135474, + 1790226549.5866454, + 1790226549.6580174, + 1790226549.7339845, + 1790226549.8097663, + 1790226549.881254, + 1790226549.959286, + 1790226550.0300202, + 1790226550.1097977, + 1790226550.1749156, + 1790226550.2535233, + 1790226550.327615, + 1790226550.3962429, + 1790226550.4648836, + 1790226550.537025, + 1790226550.6136446, + 1790226550.6842926, + 1790226550.7621727, + 1790226550.8440828, + 1790226550.9193301, + 1790226550.9922154, + 1790226551.0631382, + 1790226551.141162, + 1790226551.2169216, + 1790226551.2874346, + 1790226551.3647916, + 1790226551.446027, + 1790226551.5281525, + 1790226551.6070526 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.12221026420593262, + "decode_tok_per_s": 13.498493609622141 + }, + { + "request_id": "92cc45c2141b44dd-8", + "session_id": "92cc45c2141b44dd", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790226551.6072764, + "first_token_unix": 1790226551.7220182, + "last_token_unix": 1790226556.4905581, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790226551.7220182, + 1790226551.7964835, + 1790226551.8795054, + 1790226551.964024, + 1790226552.0401454, + 1790226552.1100664, + 1790226552.1884778, + 1790226552.2684474, + 1790226552.34629, + 1790226552.4241154, + 1790226552.4953406, + 1790226552.5682852, + 1790226552.6517968, + 1790226552.7277133, + 1790226552.8025608, + 1790226552.8844004, + 1790226552.9570835, + 1790226553.0290318, + 1790226553.1025229, + 1790226553.1852462, + 1790226553.2634058, + 1790226553.3340945, + 1790226553.4065423, + 1790226553.4869218, + 1790226553.561616, + 1790226553.6397376, + 1790226553.7204552, + 1790226553.7937338, + 1790226553.8679588, + 1790226553.9435031, + 1790226554.0145972, + 1790226554.0842597, + 1790226554.1578438, + 1790226554.230418, + 1790226554.3127131, + 1790226554.3973584, + 1790226554.4725883, + 1790226554.5537217, + 1790226554.6251707, + 1790226554.6963253, + 1790226554.7747762, + 1790226554.8515248, + 1790226554.9279628, + 1790226555.0067132, + 1790226555.0775836, + 1790226555.1555393, + 1790226555.2271388, + 1790226555.3041997, + 1790226555.3748, + 1790226555.4447267, + 1790226555.5182586, + 1790226555.5970645, + 1790226555.6735892, + 1790226555.7452085, + 1790226555.821305, + 1790226555.895296, + 1790226555.9646566, + 1790226556.0358305, + 1790226556.1122513, + 1790226556.187604, + 1790226556.2569685, + 1790226556.3405855, + 1790226556.4194493, + 1790226556.4905581 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.11474180221557617, + "decode_tok_per_s": 13.211591230829551 + }, + { + "request_id": "5873ddfac8fe49a9-9", + "session_id": "5873ddfac8fe49a9", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790226556.4908102, + "first_token_unix": 1790226556.6072643, + "last_token_unix": 1790226561.3341217, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790226556.6072643, + 1790226556.6849883, + 1790226556.7619574, + 1790226556.8295343, + 1790226556.903059, + 1790226556.9762003, + 1790226557.0515988, + 1790226557.1206543, + 1790226557.1894813, + 1790226557.2679586, + 1790226557.3410335, + 1790226557.4148903, + 1790226557.4928489, + 1790226557.5712802, + 1790226557.644771, + 1790226557.7186508, + 1790226557.7911186, + 1790226557.8610468, + 1790226557.9381206, + 1790226558.0178072, + 1790226558.089756, + 1790226558.1637273, + 1790226558.2326076, + 1790226558.3061326, + 1790226558.3762884, + 1790226558.457076, + 1790226558.5362282, + 1790226558.612601, + 1790226558.6937306, + 1790226558.7747552, + 1790226558.8478, + 1790226558.9165912, + 1790226558.993054, + 1790226559.0644417, + 1790226559.138316, + 1790226559.219841, + 1790226559.2935233, + 1790226559.3722906, + 1790226559.443479, + 1790226559.5455267, + 1790226559.621713, + 1790226559.691174, + 1790226559.7688699, + 1790226559.8468397, + 1790226559.9235287, + 1790226560.0038493, + 1790226560.0782847, + 1790226560.147497, + 1790226560.221783, + 1790226560.3015373, + 1790226560.375577, + 1790226560.4495878, + 1790226560.5228353, + 1790226560.5932167, + 1790226560.6651313, + 1790226560.7381785, + 1790226560.8131003, + 1790226560.8908288, + 1790226560.9718952, + 1790226561.0398538, + 1790226561.1110182, + 1790226561.185112, + 1790226561.2619522, + 1790226561.3341217 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.1164541244506836, + "decode_tok_per_s": 13.328093985451439 + }, + { + "request_id": "14194c54e8444cc7-10", + "session_id": "14194c54e8444cc7", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790226561.3343234, + "first_token_unix": 1790226561.451223, + "last_token_unix": 1790226566.131846, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790226561.451223, + 1790226561.5231078, + 1790226561.5940359, + 1790226561.6650481, + 1790226561.739893, + 1790226561.8059363, + 1790226561.878384, + 1790226561.9466913, + 1790226562.0190353, + 1790226562.102054, + 1790226562.1804602, + 1790226562.2586346, + 1790226562.3311012, + 1790226562.4155378, + 1790226562.4944882, + 1790226562.5771532, + 1790226562.6484027, + 1790226562.7219062, + 1790226562.7909837, + 1790226562.8608625, + 1790226562.934221, + 1790226563.0055401, + 1790226563.0760167, + 1790226563.1483665, + 1790226563.2281091, + 1790226563.3025608, + 1790226563.3806136, + 1790226563.455151, + 1790226563.5231445, + 1790226563.594219, + 1790226563.671274, + 1790226563.7479146, + 1790226563.827192, + 1790226563.9032302, + 1790226563.970623, + 1790226564.044797, + 1790226564.1178956, + 1790226564.1900547, + 1790226564.2687106, + 1790226564.3404057, + 1790226564.417675, + 1790226564.4961185, + 1790226564.5636609, + 1790226564.6372192, + 1790226564.6992114, + 1790226564.7702096, + 1790226564.842402, + 1790226564.919644, + 1790226564.9916182, + 1790226565.071689, + 1790226565.1458864, + 1790226565.2168546, + 1790226565.2934058, + 1790226565.3703442, + 1790226565.4469273, + 1790226565.5184295, + 1790226565.6011488, + 1790226565.6876163, + 1790226565.7595842, + 1790226565.839442, + 1790226565.9120345, + 1790226565.9853036, + 1790226566.0558138, + 1790226566.131846 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.11689949035644531, + "decode_tok_per_s": 13.459746547924212 + }, + { + "request_id": "5531b5acb29c415a-11", + "session_id": "5531b5acb29c415a", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790226566.1321318, + "first_token_unix": 1790226566.2547348, + "last_token_unix": 1790226570.9676924, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790226566.2547348, + 1790226566.3266401, + 1790226566.4057176, + 1790226566.477603, + 1790226566.5461953, + 1790226566.6231375, + 1790226566.6913586, + 1790226566.7681742, + 1790226566.8452833, + 1790226566.930359, + 1790226567.0003407, + 1790226567.071568, + 1790226567.1494012, + 1790226567.2197347, + 1790226567.2996092, + 1790226567.3710706, + 1790226567.4484653, + 1790226567.5163164, + 1790226567.5801425, + 1790226567.6552203, + 1790226567.7265794, + 1790226567.801276, + 1790226567.8814518, + 1790226567.9509673, + 1790226568.0243268, + 1790226568.102132, + 1790226568.1912868, + 1790226568.2665946, + 1790226568.35404, + 1790226568.4606075, + 1790226568.539844, + 1790226568.6354074, + 1790226568.7103488, + 1790226568.7860832, + 1790226568.8642871, + 1790226568.9332836, + 1790226569.0097792, + 1790226569.0819826, + 1790226569.149279, + 1790226569.223924, + 1790226569.2940965, + 1790226569.367237, + 1790226569.4424894, + 1790226569.5097885, + 1790226569.5811265, + 1790226569.660744, + 1790226569.7330952, + 1790226569.8127677, + 1790226569.883576, + 1790226569.961682, + 1790226570.0395951, + 1790226570.1125543, + 1790226570.183907, + 1790226570.2496693, + 1790226570.317195, + 1790226570.3891253, + 1790226570.4548988, + 1790226570.5299394, + 1790226570.6032555, + 1790226570.671844, + 1790226570.747655, + 1790226570.818162, + 1790226570.8915884, + 1790226570.9676924 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.12260293960571289, + "decode_tok_per_s": 13.367402185912821 + }, + { + "request_id": "990d9d79a0e94034-12", + "session_id": "990d9d79a0e94034", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790226570.9678917, + "first_token_unix": 1790226571.0853107, + "last_token_unix": 1790226575.7790625, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790226571.0853107, + 1790226571.1625898, + 1790226571.2346437, + 1790226571.3033843, + 1790226571.3815398, + 1790226571.4520507, + 1790226571.5285811, + 1790226571.6063392, + 1790226571.6800816, + 1790226571.7549927, + 1790226571.8295832, + 1790226571.903535, + 1790226571.9770114, + 1790226572.0540798, + 1790226572.1338406, + 1790226572.210386, + 1790226572.2795088, + 1790226572.3528042, + 1790226572.426227, + 1790226572.5017552, + 1790226572.5752656, + 1790226572.657472, + 1790226572.7278607, + 1790226572.8035157, + 1790226572.8794682, + 1790226572.9573576, + 1790226573.0420487, + 1790226573.1215982, + 1790226573.1910253, + 1790226573.2623203, + 1790226573.3402512, + 1790226573.414774, + 1790226573.4937491, + 1790226573.5602689, + 1790226573.6276066, + 1790226573.7070765, + 1790226573.787603, + 1790226573.8632302, + 1790226573.9346728, + 1790226574.009764, + 1790226574.0886195, + 1790226574.1660588, + 1790226574.2358072, + 1790226574.307638, + 1790226574.393161, + 1790226574.4700832, + 1790226574.5426564, + 1790226574.6133494, + 1790226574.6856737, + 1790226574.7557158, + 1790226574.825289, + 1790226574.894784, + 1790226574.9708629, + 1790226575.0433319, + 1790226575.1135943, + 1790226575.1892629, + 1790226575.2656188, + 1790226575.336525, + 1790226575.4116516, + 1790226575.4864907, + 1790226575.556149, + 1790226575.6252532, + 1790226575.7013986, + 1790226575.7790625 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.11741900444030762, + "decode_tok_per_s": 13.422098680033983 + }, + { + "request_id": "8d7e7bf643904e08-13", + "session_id": "8d7e7bf643904e08", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790226575.7792575, + "first_token_unix": 1790226575.9008179, + "last_token_unix": 1790226580.5665045, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790226575.9008179, + 1790226575.9736378, + 1790226576.0436575, + 1790226576.1193662, + 1790226576.1934597, + 1790226576.2684145, + 1790226576.3471107, + 1790226576.4161472, + 1790226576.491289, + 1790226576.561985, + 1790226576.6361945, + 1790226576.706872, + 1790226576.7838554, + 1790226576.8586204, + 1790226576.9345207, + 1790226577.0121996, + 1790226577.0855112, + 1790226577.1615014, + 1790226577.2393498, + 1790226577.308229, + 1790226577.3822746, + 1790226577.4571016, + 1790226577.529733, + 1790226577.620034, + 1790226577.6956055, + 1790226577.7704978, + 1790226577.848386, + 1790226577.9196858, + 1790226577.9968283, + 1790226578.0759194, + 1790226578.1485624, + 1790226578.2273362, + 1790226578.2983484, + 1790226578.3764405, + 1790226578.4447198, + 1790226578.5175273, + 1790226578.6004705, + 1790226578.6728938, + 1790226578.7450802, + 1790226578.8120914, + 1790226578.8873515, + 1790226578.9654582, + 1790226579.0402548, + 1790226579.115427, + 1790226579.1871753, + 1790226579.256499, + 1790226579.3376215, + 1790226579.410511, + 1790226579.4877138, + 1790226579.5631082, + 1790226579.629855, + 1790226579.6967213, + 1790226579.765466, + 1790226579.8402565, + 1790226579.9195578, + 1790226579.9953415, + 1790226580.0683448, + 1790226580.13963, + 1790226580.2111251, + 1790226580.284835, + 1790226580.358067, + 1790226580.4292564, + 1790226580.498893, + 1790226580.5665045 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.12156033515930176, + "decode_tok_per_s": 13.502835767110415 + }, + { + "request_id": "6fb0a5475cdf4497-14", + "session_id": "6fb0a5475cdf4497", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790226580.566698, + "first_token_unix": 1790226580.6893506, + "last_token_unix": 1790226585.4004998, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790226580.6893506, + 1790226580.766065, + 1790226580.8441093, + 1790226580.9116473, + 1790226580.9877145, + 1790226581.0550456, + 1790226581.1270282, + 1790226581.2008617, + 1790226581.2746615, + 1790226581.348496, + 1790226581.426996, + 1790226581.5021539, + 1790226581.575424, + 1790226581.6507847, + 1790226581.7235818, + 1790226581.799825, + 1790226581.8715367, + 1790226581.9420025, + 1790226582.0157201, + 1790226582.0831287, + 1790226582.1598008, + 1790226582.2483914, + 1790226582.3266778, + 1790226582.395152, + 1790226582.4760046, + 1790226582.5469146, + 1790226582.6224995, + 1790226582.6906042, + 1790226582.7660956, + 1790226582.841691, + 1790226582.9213765, + 1790226582.9894795, + 1790226583.070129, + 1790226583.1460578, + 1790226583.2201345, + 1790226583.2916129, + 1790226583.3660662, + 1790226583.4443748, + 1790226583.518476, + 1790226583.592041, + 1790226583.6648233, + 1790226583.7436304, + 1790226583.8234189, + 1790226583.9070437, + 1790226583.9798794, + 1790226584.0536172, + 1790226584.1224062, + 1790226584.2050226, + 1790226584.277674, + 1790226584.3539808, + 1790226584.423327, + 1790226584.5057256, + 1790226584.5756986, + 1790226584.6591504, + 1790226584.731122, + 1790226584.804414, + 1790226584.875478, + 1790226584.9471247, + 1790226585.0242665, + 1790226585.096003, + 1790226585.1677663, + 1790226585.250486, + 1790226585.3201272, + 1790226585.4004998 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.12265253067016602, + "decode_tok_per_s": 13.372533349203785 + }, + { + "request_id": "595e7f2c11174173-15", + "session_id": "595e7f2c11174173", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790226585.4007177, + "first_token_unix": 1790226585.518321, + "last_token_unix": 1790226590.107901, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790226585.518321, + 1790226585.589607, + 1790226585.6623132, + 1790226585.7339048, + 1790226585.8110142, + 1790226585.8892436, + 1790226585.958339, + 1790226586.024281, + 1790226586.097059, + 1790226586.1702793, + 1790226586.243692, + 1790226586.3122919, + 1790226586.3843226, + 1790226586.4535518, + 1790226586.5242543, + 1790226586.592428, + 1790226586.6660624, + 1790226586.7356067, + 1790226586.8130038, + 1790226586.8802524, + 1790226586.9473174, + 1790226587.0231392, + 1790226587.1014051, + 1790226587.1772113, + 1790226587.2445412, + 1790226587.3173294, + 1790226587.3860915, + 1790226587.4601293, + 1790226587.5343857, + 1790226587.607068, + 1790226587.680033, + 1790226587.7534158, + 1790226587.825343, + 1790226587.9005775, + 1790226587.969991, + 1790226588.0476441, + 1790226588.1181598, + 1790226588.1932275, + 1790226588.2637696, + 1790226588.3381624, + 1790226588.4168024, + 1790226588.490839, + 1790226588.5684454, + 1790226588.639947, + 1790226588.7099514, + 1790226588.781457, + 1790226588.858883, + 1790226588.9326863, + 1790226589.0002306, + 1790226589.0750592, + 1790226589.1527188, + 1790226589.2262547, + 1790226589.2966022, + 1790226589.3677752, + 1790226589.4397063, + 1790226589.5137217, + 1790226589.5889282, + 1790226589.6640115, + 1790226589.7361367, + 1790226589.8105173, + 1790226589.8883948, + 1790226589.9565318, + 1790226590.0389616, + 1790226590.107901 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.11760330200195312, + "decode_tok_per_s": 13.726746061603647 + }, + { + "request_id": "426967bd735e4aba-16", + "session_id": "426967bd735e4aba", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790226590.1080937, + "first_token_unix": 1790226590.2332816, + "last_token_unix": 1790226594.8889484, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790226590.2332816, + 1790226590.308416, + 1790226590.3816674, + 1790226590.4551, + 1790226590.5275588, + 1790226590.5982533, + 1790226590.6716633, + 1790226590.7495756, + 1790226590.8251176, + 1790226590.9003053, + 1790226590.9706378, + 1790226591.0397966, + 1790226591.1131747, + 1790226591.1915445, + 1790226591.2587051, + 1790226591.3373044, + 1790226591.4137855, + 1790226591.4851763, + 1790226591.5588298, + 1790226591.6357546, + 1790226591.7157905, + 1790226591.786421, + 1790226591.8573968, + 1790226591.9276755, + 1790226591.9960487, + 1790226592.0750768, + 1790226592.142214, + 1790226592.2125154, + 1790226592.2841423, + 1790226592.357912, + 1790226592.429339, + 1790226592.4989836, + 1790226592.5699224, + 1790226592.6486726, + 1790226592.714956, + 1790226592.785248, + 1790226592.867212, + 1790226592.9401715, + 1790226593.0165563, + 1790226593.085789, + 1790226593.1625354, + 1790226593.2384648, + 1790226593.311956, + 1790226593.3777788, + 1790226593.4549332, + 1790226593.5230157, + 1790226593.6045303, + 1790226593.6799586, + 1790226593.7543564, + 1790226593.830511, + 1790226593.9044623, + 1790226593.9822543, + 1790226594.060147, + 1790226594.1424975, + 1790226594.2180455, + 1790226594.2934818, + 1790226594.3662565, + 1790226594.445882, + 1790226594.5249946, + 1790226594.5913239, + 1790226594.6644263, + 1790226594.7404761, + 1790226594.8143554, + 1790226594.8889484 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.12518787384033203, + "decode_tok_per_s": 13.531896144071663 + }, + { + "request_id": "6adef90d92ea4fe0-17", + "session_id": "6adef90d92ea4fe0", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790226594.8891838, + "first_token_unix": 1790226595.0260944, + "last_token_unix": 1790226599.697525, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790226595.0260944, + 1790226595.096761, + 1790226595.1703565, + 1790226595.2504103, + 1790226595.3290064, + 1790226595.4052033, + 1790226595.480287, + 1790226595.550367, + 1790226595.6194267, + 1790226595.6971412, + 1790226595.775785, + 1790226595.8541458, + 1790226595.9381475, + 1790226596.0113826, + 1790226596.0832, + 1790226596.1590738, + 1790226596.2386534, + 1790226596.308326, + 1790226596.3901706, + 1790226596.4589372, + 1790226596.5342643, + 1790226596.605706, + 1790226596.6727617, + 1790226596.7480602, + 1790226596.8203354, + 1790226596.8984811, + 1790226596.9692984, + 1790226597.0426219, + 1790226597.1154842, + 1790226597.1922622, + 1790226597.2592583, + 1790226597.3371596, + 1790226597.4131389, + 1790226597.487989, + 1790226597.557023, + 1790226597.6283138, + 1790226597.7028155, + 1790226597.7752454, + 1790226597.8567379, + 1790226597.9259887, + 1790226598.0074506, + 1790226598.0786674, + 1790226598.1566205, + 1790226598.2233531, + 1790226598.296096, + 1790226598.3659441, + 1790226598.4323862, + 1790226598.514418, + 1790226598.5902665, + 1790226598.663026, + 1790226598.7390172, + 1790226598.8191147, + 1790226598.8995063, + 1790226598.9686832, + 1790226599.037595, + 1790226599.107305, + 1790226599.1799448, + 1790226599.2493672, + 1790226599.3221662, + 1790226599.4031196, + 1790226599.4771602, + 1790226599.5531623, + 1790226599.6243737, + 1790226599.697525 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.13691067695617676, + "decode_tok_per_s": 13.486232711014933 + }, + { + "request_id": "488fcb380b384d0a-18", + "session_id": "488fcb380b384d0a", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790226599.6977232, + "first_token_unix": 1790226599.8182533, + "last_token_unix": 1790226604.450258, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790226599.8182533, + 1790226599.8860703, + 1790226599.9615011, + 1790226600.032237, + 1790226600.1145225, + 1790226600.1881466, + 1790226600.2647479, + 1790226600.345097, + 1790226600.4101768, + 1790226600.4845886, + 1790226600.5580242, + 1790226600.6291497, + 1790226600.699733, + 1790226600.7654886, + 1790226600.8483033, + 1790226600.9189854, + 1790226600.9911714, + 1790226601.0636225, + 1790226601.1304548, + 1790226601.2097056, + 1790226601.2790177, + 1790226601.3570044, + 1790226601.430586, + 1790226601.5055468, + 1790226601.575465, + 1790226601.6495368, + 1790226601.7233913, + 1790226601.7940981, + 1790226601.8679364, + 1790226601.936613, + 1790226602.0078223, + 1790226602.0795367, + 1790226602.1551213, + 1790226602.229827, + 1790226602.3083715, + 1790226602.386632, + 1790226602.4577997, + 1790226602.5317292, + 1790226602.6064007, + 1790226602.6747012, + 1790226602.743553, + 1790226602.816465, + 1790226602.8898191, + 1790226602.9659479, + 1790226603.044711, + 1790226603.1203573, + 1790226603.19144, + 1790226603.261968, + 1790226603.33873, + 1790226603.413167, + 1790226603.4853857, + 1790226603.557984, + 1790226603.6310937, + 1790226603.7034955, + 1790226603.7739005, + 1790226603.8458083, + 1790226603.9140344, + 1790226603.9931567, + 1790226604.0694766, + 1790226604.1444316, + 1790226604.2210155, + 1790226604.2994812, + 1790226604.3727665, + 1790226604.450258 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.1205301284790039, + "decode_tok_per_s": 13.601022357586737 + }, + { + "request_id": "9fe76958ea784c92-19", + "session_id": "9fe76958ea784c92", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790226604.4504495, + "first_token_unix": 1790226604.5803502, + "last_token_unix": 1790226609.2290442, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790226604.5803502, + 1790226604.6689079, + 1790226604.743634, + 1790226604.8208473, + 1790226604.9002972, + 1790226604.9805439, + 1790226605.0617905, + 1790226605.1311045, + 1790226605.2011857, + 1790226605.2731142, + 1790226605.3520288, + 1790226605.4232266, + 1790226605.4902656, + 1790226605.5612712, + 1790226605.6306136, + 1790226605.708806, + 1790226605.7784376, + 1790226605.8606431, + 1790226605.9317796, + 1790226606.0026865, + 1790226606.0814276, + 1790226606.1496062, + 1790226606.2279398, + 1790226606.297216, + 1790226606.3676674, + 1790226606.4378235, + 1790226606.5173934, + 1790226606.5865333, + 1790226606.667865, + 1790226606.738337, + 1790226606.8073246, + 1790226606.8772247, + 1790226606.9448128, + 1790226607.0124183, + 1790226607.086764, + 1790226607.1563792, + 1790226607.2285018, + 1790226607.2982998, + 1790226607.3679547, + 1790226607.4472036, + 1790226607.5192, + 1790226607.5959437, + 1790226607.664144, + 1790226607.7387254, + 1790226607.811193, + 1790226607.8821306, + 1790226607.9655304, + 1790226608.0430906, + 1790226608.117437, + 1790226608.1902983, + 1790226608.27035, + 1790226608.3417673, + 1790226608.416878, + 1790226608.4844234, + 1790226608.5521786, + 1790226608.629254, + 1790226608.7029674, + 1790226608.780396, + 1790226608.8510554, + 1790226608.932822, + 1790226609.0034776, + 1790226609.080904, + 1790226609.1493104, + 1790226609.2290442 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.12990069389343262, + "decode_tok_per_s": 13.55219325679776 + }, + { + "request_id": "e3033850920743bb-20", + "session_id": "e3033850920743bb", + "epoch": 0, + "prompt_chars": 212, + "prompt_tokens": 28, + "output_tokens": 64, + "submitted_unix": 1790226609.2292445, + "first_token_unix": 1790226609.3448486, + "last_token_unix": 1790226614.027977, + "finished": true, + "cancelled": false, + "error": null, + "token_unix": [ + 1790226609.3448486, + 1790226609.4190626, + 1790226609.4898443, + 1790226609.5603125, + 1790226609.6390107, + 1790226609.7148385, + 1790226609.790908, + 1790226609.8583014, + 1790226609.9270072, + 1790226610.0012248, + 1790226610.0767918, + 1790226610.1506283, + 1790226610.2351325, + 1790226610.3189378, + 1790226610.3875577, + 1790226610.460713, + 1790226610.535473, + 1790226610.6050363, + 1790226610.6802957, + 1790226610.7542326, + 1790226610.8296137, + 1790226610.900979, + 1790226610.975272, + 1790226611.0568435, + 1790226611.1275563, + 1790226611.1953938, + 1790226611.2677567, + 1790226611.3429866, + 1790226611.4196284, + 1790226611.49239, + 1790226611.560682, + 1790226611.635681, + 1790226611.7075863, + 1790226611.7794893, + 1790226611.8538482, + 1790226611.9272594, + 1790226611.997353, + 1790226612.0659633, + 1790226612.1463027, + 1790226612.2210515, + 1790226612.2943451, + 1790226612.3691845, + 1790226612.4404843, + 1790226612.511424, + 1790226612.5913467, + 1790226612.6699824, + 1790226612.7477534, + 1790226612.823561, + 1790226612.899401, + 1790226612.9756355, + 1790226613.046347, + 1790226613.124726, + 1790226613.2021234, + 1790226613.2761047, + 1790226613.353019, + 1790226613.4272487, + 1790226613.4970036, + 1790226613.574841, + 1790226613.646902, + 1790226613.72312, + 1790226613.8014884, + 1790226613.880777, + 1790226613.953148, + 1790226614.027977 + ], + "text": "We are asked: \"What is the capital of France? Answer in one word.\" So the answer should be the single word \"Paris\". We need to output just that word.Paris", + "output_token_ids": [ + 3066, + 599, + 5509, + 39, + 518, + 4766, + 390, + 275, + 11862, + 314, + 17349, + 44, + 74288, + 304, + 1135, + 5240, + 1848, + 4358, + 275, + 6787, + 2029, + 417, + 275, + 5133, + 5240, + 518, + 110949, + 4348, + 1994, + 1633, + 312, + 6340, + 1839, + 455, + 5240, + 27, + 4, + 110949, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7 + ], + "ttft_s": 0.11560416221618652, + "decode_tok_per_s": 13.45254607568582 + } + ], + "streams": { + "c2a861a2024348a4-0": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "ee2016ba7308446f-1": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "6d3d69f70e254053-2": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "cc7b394044ba4e01-3": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "3caad9004e99413e-4": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "e5d4feae5a424845-5": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "0c7670ac2c5c43d1-6": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "1356a5d0d54748a3-7": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "92cc45c2141b44dd-8": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "5873ddfac8fe49a9-9": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "14194c54e8444cc7-10": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "5531b5acb29c415a-11": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "990d9d79a0e94034-12": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "8d7e7bf643904e08-13": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "6fb0a5475cdf4497-14": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "595e7f2c11174173-15": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "426967bd735e4aba-16": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "6adef90d92ea4fe0-17": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "488fcb380b384d0a-18": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "9fe76958ea784c92-19": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + }, + "e3033850920743bb-20": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + } + }, + "load_s_not_request_timing": 26.46776065195445, + "warmup_count": 1, + "measured_count": 20, + "max_new_tokens": 64, + "runs": [ + { + "kind": "warmup", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 4.977500590030104, + "ttft_s": 0.13998103141784668, + "decode_tok_per_s": 13.023724130099458, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 5.241502432967536, + "ttft_s": 0.1277158260345459, + "decode_tok_per_s": 12.319995665827262, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 5.08938651898643, + "ttft_s": 0.12250375747680664, + "decode_tok_per_s": 12.684371265665662, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 4.830994448973797, + "ttft_s": 0.12878656387329102, + "decode_tok_per_s": 13.398350951297024, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 4.9863741679582745, + "ttft_s": 0.12210273742675781, + "decode_tok_per_s": 12.951894831307746, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 4.853672272001859, + "ttft_s": 0.12238478660583496, + "decode_tok_per_s": 13.315976143623645, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 4.733561953995377, + "ttft_s": 0.13031673431396484, + "decode_tok_per_s": 13.686401590648785, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 4.789541190955788, + "ttft_s": 0.12221026420593262, + "decode_tok_per_s": 13.498493609622141, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 4.8834276989800856, + "ttft_s": 0.11474180221557617, + "decode_tok_per_s": 13.211591230829551, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 4.843481026997324, + "ttft_s": 0.1164541244506836, + "decode_tok_per_s": 13.328093985451439, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 4.797697096015327, + "ttft_s": 0.11689949035644531, + "decode_tok_per_s": 13.459746547924212, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 4.8356945349951275, + "ttft_s": 0.12260293960571289, + "decode_tok_per_s": 13.367402185912821, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 4.811298034968786, + "ttft_s": 0.11741900444030762, + "decode_tok_per_s": 13.422098680033983, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 4.787371892016381, + "ttft_s": 0.12156033515930176, + "decode_tok_per_s": 13.502835767110415, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 4.833943004021421, + "ttft_s": 0.12265253067016602, + "decode_tok_per_s": 13.372533349203785, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 4.707310047990177, + "ttft_s": 0.11760330200195312, + "decode_tok_per_s": 13.726746061603647, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 4.78102004196262, + "ttft_s": 0.12518787384033203, + "decode_tok_per_s": 13.531896144071663, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 4.8084669089876115, + "ttft_s": 0.13691067695617676, + "decode_tok_per_s": 13.486232711014933, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 4.7526624299935065, + "ttft_s": 0.1205301284790039, + "decode_tok_per_s": 13.601022357586737, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 4.778720861999318, + "ttft_s": 0.12990069389343262, + "decode_tok_per_s": 13.55219325679776, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + }, + { + "kind": "measured", + "prompt_name": "chat_short", + "prompt_tokens": 28, + "output_tokens": 64, + "token_ids_sha256": "a8d7798bf439de0b9cec3ba65661bee9e06df2a8af3f8c0d46ad7957c38e4162", + "wall_s": 4.7988590450258926, + "ttft_s": 0.11560416221618652, + "decode_tok_per_s": 13.45254607568582, + "stream": { + "max_chunks": 64, + "max_bytes": 1048576, + "high_water_chunks": 2, + "high_water_bytes": 41, + "dropped_stale": 0, + "epoch": 0 + } + } + ], + "nearest_rank_p50_wall_s": 4.8084669089876115, + "nearest_rank_p95_wall_s": 5.08938651898643, + "nearest_rank_p50_ttft_s": 0.12221026420593262, + "nearest_rank_p95_ttft_s": 0.13031673431396484, + "limits": [ + "One short prompt and one concurrency level; the acceptance and parity suites are separate evidence.", + "The host power condition was not controlled or recorded as a sustained thermal test." + ] +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/weight_manifest.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/weight_manifest.json new file mode 100644 index 000000000..d7e6b19b9 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/weight_manifest.json @@ -0,0 +1,23 @@ +{ + "status": "verified", + "repo": "XHToken/Spark-X2.5-1.7B", + "revision": "14d6e83c13c7add2b62a7c39b2131f4ed1cddcf8", + "format": "dense BF16 safetensors", + "index_sha256": "cc2b212985f5d0469bf926903e4bd7ee81856687baa0c6c6b55ff200d4cdc63f", + "config_sha256": "16aa5d3619d0d893e7157f2499675430844eb7b383c80ecc1b3e8e8928a75d52", + "files": [ + { + "file": "model-00001-of-00002.safetensors", + "bytes": 1997108320, + "sha256": "b1629719b3f6de5de922abb3c90e45927550dd6f790f43030dc812cafce1af87", + "tensor_count": 116 + }, + { + "file": "model-00002-of-00002.safetensors", + "bytes": 1418232176, + "sha256": "3537675bfb657cb6d1f70bb1fab9b83fcb79ce5693f2557992548eb6d2bf13a0", + "tensor_count": 110 + } + ], + "weights_outside_git": true +} 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 c5fc6cca1..d789e5ce9 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 @@ -8,6 +8,8 @@ A [follow-up MiniCPM-o storage experiment](../../../e2e_expansion_20260923/evide The [WSL CPU Spark GGUF Omni profile](../../../e2e_expansion_20260923/evidence/spark_omni_wsl_cpu/README.md) adds a separate current-Omni complete-request path to the earlier vLLM INT8 CPU result. It passed two named prompts, 20/20 serial measured inventory requests at p50/p95 7.82/7.97 s, a public text request, context refusal and cancellation cleanup. The CPU-only llama.cpp build required explicit CPU-buffer placement evidence because it omits the Windows offload-count log line. This does not establish token streaming or broad quality. +A complete pinned [Spark 1.7B BF16 WSL CPU checkpoint and acceptance run](../../../e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/README.md) adds a second current-Omni text artifact to the GGUF route. Twelve prompts produced 128 tokens each with clean cancellation; all 12 token-ID sequences exactly matched standalone vLLM on the same checkpoint. One warmup plus 20 serial 28-prompt-token/64-output-token requests measured p50/p95 complete-request wall time 5.411/5.751 s and TTFT 0.129/0.146 s on the fork branch. This is WSL CPU full-text scope, not mobile generation or broad quality qualification. + On a hosted [Galaxy S24 Spark attention-layer experiment](../../../e2e_expansion_20260923/evidence/spark_s24_full_attention/README.md), a real one-layer W8A16 QDQ artifact executed on NPU and matched prior S25 component outputs exactly on one dataset. The 100-sample layer p50/p95 was 1.109/1.205 ms; the service's 1.098 ms estimated-time field was the sample minimum. FP32-source versus S24 output hidden-state relative L2 was 1.351% without a downstream token-quality gate. This adds component C evidence only; device-local generation remains absent. The same W8A16 layer also ran on hosted [Snapdragon X Elite CRD](../../../e2e_expansion_20260923/evidence/spark_xelite_full_attention/README.md) and [SA8775P ADP](../../../e2e_expansion_20260923/evidence/spark_sa8775_full_attention/README.md) NPUs, with pinned-fixture outputs identical to S24/S25; the 100-sample component p50/p95 was 1.433/1.606 ms and 1.837/2.079 ms, respectively. On [RB3 Gen 2 / QCS6490](../../../e2e_expansion_20260923/evidence/spark_rb3_full_attention/README.md), that W8A16 graph failed QNN DLC loading even after target-specific recompilation. An FP32 ONNX CPU layer then passed with source-relative L2 below 9e-7, while a calibrated W8A8 NPU layer executed but had 20.9% hidden-state relative L2 and remains numerically unqualified. These hosted component outcomes do not establish full generation or comparable device speed. @@ -40,7 +42,7 @@ NOT E2E means no complete device/model workload was verified. “Scoped E2E” i | Device | Spark-X2.5 | Qwen3-TTS 0.6B CustomVoice | Qwen3.8-27B | MiniCPM-o 4.5 | InternVLA-A1 | |---|---|---|---|---|---| -| PC HX370: CPU / WSL | scoped E2E: Omni GGUF Spark text | 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 / WSL | scoped E2E: Omni GGUF or BF16 Spark text | 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 (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; 30-min repeat no collapse, brief playback jitter | NOT E2E | scoped E2E: text/image/audio → speech | synthetic policy pass: admitted Omni CUDA | @@ -48,7 +50,7 @@ NOT E2E means no complete device/model workload was verified. “Scoped E2E” i | 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 (one Spark attention layer on NPU) | NOT E2E (CPU talker/vocoder steps; QNN vocoder numeric) | NOT E2E | NOT E2E (NPU speech-head step profiled) | NOT E2E (Cosmos NPU encoder profiled) | -| Mobile Galaxy S25 / Snapdragon 8 Elite for Galaxy | NOT E2E (one Spark attention layer on NPU) | NOT E2E (FP16 talker token mismatch; CPU talker + vocoder profiled) | NOT E2E | NOT E2E (NPU speech head step profiled) | NOT E2E (Cosmos NPU encoder profiled) | +| Mobile Galaxy S25 / Snapdragon 8 Elite for Galaxy | NOT E2E (one Spark attention layer on NPU) | NOT E2E (FP16 talker token mismatch; CPU talker + vocoder profiled; 25-frame and two-frame QNN vocoder memory failures; short TFLite CPU/GPU component p50 0.559 s for 0.16 s audio) | NOT E2E | NOT E2E (NPU speech head step profiled) | NOT E2E (Cosmos NPU encoder profiled) | | Mobile Galaxy S24 / Snapdragon 8 Gen 3 | NOT E2E (one Spark attention layer on NPU) | NOT E2E (FP16 talker token mismatch; CPU talker + vocoder profiled) | NOT E2E | NOT E2E (NPU speech head step profiled) | NOT E2E (Cosmos encoder numeric and NPU profiled) | | Embedded SA8775P ADP / AI Hub | NOT E2E (one Spark attention layer on NPU) | NOT E2E (CPU talker/vocoder steps; NPU vocoder failed) | NOT E2E | NOT E2E (NPU speech-head step profiled) | NOT E2E (Cosmos NPU encoder profiled) | | Embedded RB3 Gen 2 / QCS6490 / AI Hub | NOT E2E (Spark CPU layer passed; W8A8 NPU quality open) | NOT E2E (CPU talker + vocoder profiled; INT8 NPU vocoder fails numeric gate) | NOT E2E | NOT E2E (CPU speech-head step profiled) | NOT E2E (Cosmos CPU numeric and profiled) | @@ -57,7 +59,7 @@ NOT E2E means no complete device/model workload was verified. “Scoped E2E” i | Device | Model | Current profiling disposition | Reason / remaining work | Next step | |---|---|---|---|---| -| PC HX370: CPU / WSL | Spark-X2.5 | SCOPED_E2E_OMNI_COMPLETE_REQUEST | The pinned Spark-X2.5-1.7B Q4_K_M GGUF ran on a CPU-only Linux llama.cpp server through the current Omni 0.29 `StageRuntime`/`StagePool` whole-session backend. Both named prompts passed (`Paris`, `1511`); one warmup plus 20/20 serial inventory requests had nearest-rank complete-request wall p50/p95 7.82/7.97 s, excluding 1.61 s startup. The stage verified model/server hashes, explicit CPU-only tensor buffers (`CPU_Mapped`, `CPU_REPACK`) and no usable GPU, reserved 4 GiB host RAM, refused an over-context request without truncation, and after in-flight cancellation returned no stale output or reservation. A separate public `AsyncOmni.generate` text request passed. The Linux CPU-only build omits the Windows 0/29 offload line; the verifier was extended to require positive CPU buffer evidence rather than inferring CPU from an absent GPU count. This is separate from the historical vLLM INT8 CPU profile and does not prove model-wide quality, incremental token streaming, restart-after-cancel, loading peak or sustained performance. | Broaden text/token quality and context suite, qualify matching vLLM 0.29 CPU execution/token parity, then test streaming, restart, loading peak and sustained load; [WSL GGUF Omni raw evidence](../../../e2e_expansion_20260923/evidence/spark_omni_wsl_cpu/README.md). | +| PC HX370: CPU / WSL | Spark-X2.5 | SCOPED_E2E_OMNI_COMPLETE_REQUEST; BF16_CPU_ACCEPTANCE_PARITY_AND_PROFILE_PASS | The pinned Spark-X2.5-1.7B Q4_K_M GGUF ran on a CPU-only Linux llama.cpp server through the current Omni 0.29 `StageRuntime`/`StagePool` whole-session backend. Both named prompts passed (`Paris`, `1511`); one warmup plus 20/20 serial inventory requests had nearest-rank complete-request wall p50/p95 7.82/7.97 s, excluding 1.61 s startup. The stage verified model/server hashes, explicit CPU-only tensor buffers (`CPU_Mapped`, `CPU_REPACK`) and no usable GPU, reserved 4 GiB host RAM, refused an over-context request without truncation, and after in-flight cancellation returned no stale output or reservation. A separate public `AsyncOmni.generate` text request passed. The Linux CPU-only build omits the Windows 0/29 offload line; the verifier was extended to require positive CPU buffer evidence rather than inferring CPU from an absent GPU count. A separate pinned 1.7B BF16 checkpoint was completed and verified against the upstream index. The current Omni vLLM CPU text path then passed 12/12 named prompts at 128 generated tokens, cancellation cleanup and exact 12/12 greedy token-ID parity against standalone vLLM on the same BF16 checkpoint. The fork-branch acceptance load was 30.36 s with approximately 6.45 GiB process-tree RSS load delta; the plan reserved 7.64 GiB. One warmup plus 20 serial BF16 complete requests (28 prompt tokens, 64 output tokens) measured nearest-rank wall p50/p95 5.411/5.751 s and TTFT 0.129/0.146 s on HX370 WSL CPU. Separate neighboring-checkout evidence retained a 19.88 s acceptance load and 4.808/5.089 s profile; it is not the fork-branch timing. The installed vLLM was 0.28.0 with 0.29.0rc2 Omni source, so that version pairing is the tested boundary. The GGUF result and historical INT8 result remain distinct artifacts. None establishes broad text quality, incremental GGUF token streaming, restart-after-cancel, loading peak or sustained performance. | Broaden text quality and context, qualify a matching Omni/vLLM version pair, then test streaming, restart and sustained load; [GGUF evidence](../../../e2e_expansion_20260923/evidence/spark_omni_wsl_cpu/README.md) and [BF16 evidence](../../../e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/README.md). | | PC HX370: CPU / WSL | Qwen3-TTS 0.6B CustomVoice | SCOPED_E2E_OMNI_COMPLETE_REQUEST | The earlier vLLM 0.28 CPU path passed four short streams but had four simulated playback underruns in one measured request; its wheel remains mismatched with Omni 0.29. Separately, the pinned BF16 0.6B CustomVoice checkpoint ran two named text-to-complete-WAV requests through an Omni 0.29 whole-session stage with an isolated CPU worker on WSL. One warmup plus 20 serial measured requests returned identical 3.44 s audio; nearest-rank complete-request wall p50/p95 was 8.27/8.47 s (RTF 2.40/2.46), excluding 19.82 s startup. Pinned Whisper tiny.en transcribed the first measured WAV exactly (WER 0, one-output intelligibility proxy). Public `AsyncOmni` audio output passed; the stage verified weights, interpreter and CPU placement, reserved 10 GiB host RAM, refused 4 GiB before launch, and drained in-flight cancellation with zero remaining reservation. WSL PCM differs from the same-checkpoint native Windows outputs despite the declared settings; its cause is unqualified. Sampled process-tree RSS reached 3.39 GB, not a loading peak. This worker delivers only a complete WAV, not a playable stream. | Qualify cross-OS numerical/quality difference, playable streaming without underruns, post-cancel restart, loading peak, concurrency and sustained power/thermal behavior; [WSL Omni raw evidence](../../../e2e_expansion_20260923/evidence/qwen_tts_omni_wsl_cpu/README.md), [earlier stream evidence](../../../e2e_recovery_20260923/README.md). | | PC HX370: CPU / WSL | Qwen3.8-27B | NOT_E2E_PROFILEABLE | No compatible CPU artifact/deployment for this model was found in the checked model roots. Available Qwen 27B FP8/NVFP4 CUDA artifacts do not establish a CPU route. | Supply and validate the missing matching artifact/backend, then run the complete specified workload. | | PC HX370: CPU / WSL | MiniCPM-o 4.5 | SCOPED_E2E_OMNI_COMPLETE_REQUEST | The BF16/vLLM 0.28 three-stage path previously passed separate text, synthetic red-square image and synthetic 440 Hz audio inputs to text+speech; its 20-request serial **text-only** profile was p50/p95 21.86/22.97 s with swap and shutdown warnings. A separate pinned Q4_K_M/F16 GGUF worker now runs a **combined spoken question+image → text+speech** request through a bounded Omni StageRuntime/StagePool graph stage on WSL CPU, with installed vLLM 0.29 for the controller and CPU-only C++ model execution. All 20 measured requests after one warmup answered “The square in the image is red.”, emitted complete nonzero speech and a terminal audio event; nearest-rank complete-request wall p50/p95 was 22.67/24.83 s, speech duration 1.60–2.92 s, and maximum sampled worker RSS 13.70 GB. The first measured WAV independently transcribed exactly with pinned Whisper tiny.en (WER 0, one-output intelligibility proxy). Ten weight hashes and CPU placement were verified; 24 GiB shared RAM was reserved, 8 GiB was refused before launch, and in-flight cancellation left no stale output or reservation. Host RAM/swap samples covered only part of the profile. One synthetic fixture and variable speech PCM do not establish general quality, playable streaming, loading peak or sustained performance. | Validate real image/audio suites, speech alignment and quality, video input, concurrent admission, post-cancel restart, loading peak and sustained thermal behavior; [GGUF Omni raw evidence](../../../e2e_expansion_20260923/evidence/minicpmo_omni_wsl_cpu/README.md), [BF16/vLLM CPU evidence](../../../e2e_expansion_20260923/README.md), [earlier standalone GGUF run](../../../e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/README.md). | @@ -98,7 +100,7 @@ NOT E2E means no complete device/model workload was verified. “Scoped E2E” i | PC Snapdragon X Elite CRD / AI Hub | MiniCPM-o 4.5 | COMPONENT_SPEECH_HEAD_NPU_NUMERIC_PROFILED; NOT_E2E_PROFILEABLE | The real 20-layer MiniCPM-o speech-head FP16 QNN DLC ran on the exact X Elite CRD. Same-fixture inference returned 41 finite tensors, preserved ONNX CPU top-1 speech token 1867, and had 0.3170% logits relative L2 and 1.221% maximum K/V relative L2. Its 100-sample component profile had nearest-rank p50/p95 9.905/11.037 ms, with all 944 execution-detail rows on NPU. Reported inference peak memory was 79,208,448 bytes and first-load peak 1,081,573,376 bytes. Thinker/encoders/vocoder and a device-local stateful Omni backend remain unqualified. | Validate the complete multimodal pipeline, state, quality, co-resident memory and sustained behavior; [X Elite raw evidence](../../../e2e_expansion_20260924/evidence/minicpmo_tts_qualcomm/README.md). | | PC Snapdragon X Elite CRD / AI Hub | InternVLA-A1 | COMPONENT_COSMOS_NPU_NUMERIC_PROFILED; NOT_E2E_PROFILEABLE | The real Place_Markpen Cosmos FP16 QNN image encoder returned a finite FP32 latent for the six-frame synthetic pattern on exact X Elite CRD. Against the pinned source, relative L2 was 0.0608%, SNR 64.32 dB and cosine 0.999999815. The 100-sample six-frame encoder profile had p50/p95 82.939/83.837 ms, with all 121 execution-detail rows on NPU. Reported component inference peak memory was 24,059,904 bytes and first-load peak 692,891,648 bytes. No real-observation action tolerance, complete policy or local stateful Omni backend exists. | Validate real observations, action units/timing, state, admission, cancellation and sustained behavior; [X Elite Cosmos raw evidence](../../../e2e_expansion_20260924/evidence/internvla_cosmos_qualcomm/README.md). | | Mobile Galaxy S25 / Snapdragon 8 Elite for Galaxy | Spark-X2.5 | COMPONENT_NPU_INFERENCE_PROFILED; NOT_E2E_PROFILEABLE | The real 1.7B checkpoint one-layer W8A16 full-attention decoder artifact executed for a fixed 1,024-token cache bucket. Same-fixture outputs matched S24; the hosted S25 profile had 100 component samples at nearest-rank p50/p95 0.957/1.028 ms with all 73 execution-detail rows on NPU. FP32-source hidden-state relative L2 was 1.351% without a downstream token-quality gate. No full 28-layer prefill/decode, KV/ring, sampling or resident controller ran on S25. | Implement and validate local 128-token generation, 512/1024 transitions, cancellation, resident memory and sustained power; [S25/S24 component evidence](../../../e2e_expansion_20260923/evidence/spark_s24_full_attention/README.md). | -| Mobile Galaxy S25 / Snapdragon 8 Elite for Galaxy | Qwen3-TTS 0.6B CustomVoice | TALKER_FP16_NUMERIC_FAIL; CPU_TALKER_AND_VOCODER_NUMERIC_PROFILED; NOT_E2E_PROFILEABLE | Fresh FP16 predictor inference passed; its one output exactly matches the same compiled artifact/dataset reference. The same historical S25 TFLite vocoder target requested on CPU returned a finite unsaturated waveform at 4.04e-6 relative L2 / 107.86 dB SNR versus original ONNX CPU on the retained fixture. Its 100-sample component profile measured nearest-rank p50/p95 4.418/4.641 s, with all 738 execution-detail rows on CPU and reported inference peak memory 867,893,248 bytes. A separate 28-layer TFLite CPU-requested talker step returned 57 finite outputs, preserved ONNX CPU top-1 speech token 80, and had logits relative L2 3.33e-5 and maximum new-cache relative L2 3.41e-5. Its 100-sample component profile measured p50/p95 30.161/31.301 ms, with all 1,800 execution-detail rows on CPU and reported inference peak memory 1,929,318,400 bytes. The FP16 QNN talker step executed on the synthetic cache fixture but changed CPU top-1 speech token 80 to 412 with 8.99% logits relative L2 and maximum new-K/V relative L2 11.71%. This tested NPU artifact is numerically unqualified; no complete co-resident NPU/GPU stream exists. | Improve and revalidate the [talker artifact](../../../e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/README.md), then qualify the [device-local predictor/vocoder pipeline](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/README.md), output quality, recovery and 30-minute thermal behavior. | +| Mobile Galaxy S25 / Snapdragon 8 Elite for Galaxy | Qwen3-TTS 0.6B CustomVoice | TALKER_FP16_NUMERIC_FAIL; CPU_TALKER_AND_VOCODER_NUMERIC_PROFILED; QNN_VOCODER_MEMORY_FAIL; SHORT_TFLITE_MIXED_COMPONENT_PROFILED; NOT_E2E_PROFILEABLE | Fresh FP16 predictor inference passed; its one output exactly matches the same compiled artifact/dataset reference. The same historical S25 TFLite vocoder target requested on CPU returned a finite unsaturated waveform at 4.04e-6 relative L2 / 107.86 dB SNR versus original ONNX CPU on the retained fixture. Its 100-sample component profile measured nearest-rank p50/p95 4.418/4.641 s, with all 738 execution-detail rows on CPU and reported inference peak memory 867,893,248 bytes. A separate 28-layer TFLite CPU-requested talker step returned 57 finite outputs, preserved ONNX CPU top-1 speech token 80, and had logits relative L2 3.33e-5 and maximum new-cache relative L2 3.41e-5. Its 100-sample component profile measured p50/p95 30.161/31.301 ms, with all 1,800 execution-detail rows on CPU and reported inference peak memory 1,929,318,400 bytes. The FP16 QNN talker step executed on the synthetic cache fixture but changed CPU top-1 speech token 80 to 412 with 8.99% logits relative L2 and maximum new-K/V relative L2 11.71%. A separately compiled FP16 QNN DLC talker also changed top-1 to 1720 with 8.77% logits relative L2 and 11.27% maximum new-cache relative L2. Both tested NPU talker artifacts are numerically unqualified. A fresh 25-frame FP16 QNN DLC vocoder compiled for S25, but its NPU-requested inference failed when Workbench reported device memory limits; it returned no waveform or profile samples. A [two-frame short-window export](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/README.md) matched local ONNX CPU at 2.96e-6 relative L2, then its separately compiled S25 FP16 QNN DLC also failed NPU-requested inference with the same reported device-memory limit. Its local HX370 WSL CPU component p50/p95 was 1.365/1.453 s to produce 0.16 s audio, not an S25 estimate. A separate [two-frame TFLite GPU-requested inference](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/README.md) returned finite unsaturated audio at 2.325% relative L2 / 32.67 dB SNR versus local ONNX CPU on one fixture; its 100-sample placement profile measured p50/p95 0.559/1.052 s for 0.16 s audio, with 403 CPU and 335 GPU execution-detail rows and 379,121,664 bytes reported peak. The mixed CPU/GPU component median RTF is 3.49; listening quality and playable streaming remain open. No complete co-resident NPU/GPU stream exists. | Improve and revalidate the [talker artifact](../../../e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/README.md), then qualify the [device-local predictor/vocoder pipeline](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/README.md), output quality, recovery and 30-minute thermal behavior. | | Mobile Galaxy S25 / Snapdragon 8 Elite for Galaxy | Qwen3.8-27B | NOT_E2E_PROFILEABLE | No complete qualified target artifact and device-local stateful Omni backend. Hub jobs provide component execution, not an on-device generation/streaming controller; ADB has no attached device. | Supply and validate the missing matching artifact/backend, then run the complete specified workload. | | Mobile Galaxy S25 / Snapdragon 8 Elite for Galaxy | MiniCPM-o 4.5 | COMPONENT_FP16_SPEECH_HEAD_NPU_NUMERIC_PROFILED; NOT_E2E_PROFILEABLE | Fresh FP16 speech-head inference passed; all 41 outputs exactly matched the same artifact/dataset reference. Against the recovered original ONNX CPU source on the same fixture, logits relative L2 was 0.3605%, maximum new-K/V relative L2 1.311%, and top-1 speech token 1867 matched. Historical FP16 parity passed; tested W8A16 top-1 parity failed. The 100-sample component profile had p50/p95 7.197/7.615 ms, with all 1,029 execution-detail rows on NPU and reported inference peak memory 185,991,168 bytes. Generated-audio quality and qualified thinker/encoders/vocoder remain unverified. | Qualify a complete mobile checkpoint/export and the full multimodal/stateful pipeline; [speech-head evidence](../../../e2e_expansion_20260924/evidence/minicpmo_tts_qualcomm/README.md). | | Mobile Galaxy S25 / Snapdragon 8 Elite for Galaxy | InternVLA-A1 | COMPONENT_COSMOS_NPU_NUMERIC_PROFILED; SYNTHETIC_ACTION_SENSITIVITY_MEASURED; NOT_E2E_PROFILEABLE | The real Place_Markpen Cosmos image encoder FP32 ONNX export matched its source on two six-frame fixtures. Galaxy S25 FP16 QNN DLC inference returned a finite latent within 0.0524% relative L2 / 65.61 dB SNR of the pinned pattern source. Injecting this device latent into the same real policy on local CPU changed synthetic `[1,50,32]` actions by 0.742% relative L2; the CPU source repeated bitwise identically. The 100-sample six-frame encoder profile had nearest-rank p50/p95 49.665/51.382 ms, all 121 execution-detail rows on NPU, and a reported inference peak of 158,232,576 bytes. No real-observation task tolerance exists, and the action policy was not resident on S25. ADB has no attached device. | Extend the [S25 encoder component](../../../e2e_expansion_20260924/evidence/internvla_cosmos_qualcomm/README.md), then validate real action quality, device-local state, admission, cancellation and sustained behavior. | diff --git a/docs/design/omni_edge_e2e_roadmap.md b/docs/design/omni_edge_e2e_roadmap.md index f76092aa0..6931debb6 100644 --- a/docs/design/omni_edge_e2e_roadmap.md +++ b/docs/design/omni_edge_e2e_roadmap.md @@ -13,6 +13,24 @@ three-stage text-to-speech functional pass after correcting request embeddings, and an InternVLA real-weight synthetic action forward. Model-quality and device gates remain open; the 2026-09-22 audit remains the historical baseline. +The [2026-09-24 Spark BF16 WSL CPU evidence](../../benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/spark_bf16_wsl_cpu/README.md) +adds a complete pinned dense checkpoint to the fork-branch M0 text route. Twelve +128-token requests passed and exactly matched standalone vLLM greedy tokens; +one warmup plus 20 serial 64-token requests measured complete-request +p50/p95 **5.411/5.751 s** and TTFT **0.129/0.146 s** on HX370 WSL CPU. +This closes only the stated BF16 text workload, not M1 mobile generation. +For M2, a [two-frame S25 vocoder export](../../benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/README.md) +matched local eager/ONNX CPU on one fixed window, but its FP16 QNN DLC failed +NPU-requested inference at the hosted device-memory limit. The earlier +25-frame FP16 artifact failed the same memory gate. Different precision or +graph layout, and a complete device-local stream, remain separate work. +A [TFLite GPU-requested two-frame S25 component](../../benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/README.md) +returned finite audio at 2.325% relative L2 against local ONNX CPU on one +fixture. Its 100-sample component profile measured p50/p95 0.559/1.052 s +for 0.16 s audio, with 403 CPU and 335 GPU node rows and median component +RTF 3.49. It still needs listening quality and playable complete streaming +before M2 can advance. + The [Spark hosted Qualcomm component expansion](../../benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/spark_s24_full_attention/README.md) advances M1 only to one real fixed-shape decoder attention layer. The same W8A16 QNN DLC ran on S24, Snapdragon X Elite CRD and SA8775P ADP NPUs with identical outputs on one pinned fixture; S25 had prior separate component evidence. On [RB3 Gen 2](../../benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/spark_rb3_full_attention/README.md), the tested W8A16 graph failed QNN loading even after an exact-device compile. FP32 ONNX ran on CPU with near-source parity, while calibrated W8A8 ran on NPU but had 20.9% hidden-state relative L2 and remains numerically unqualified. These are component C results, not full M1: device-local 28-layer prefill/continuous decode, KV/ring, sampling, token quality, admission/cancellation, complete-request timing and sustained power/thermal gates remain open. AI Hub is the test facility, not a deployment dependency. The [Qwen3-TTS Code2Wav Qualcomm follow-up](../../benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/README.md) adds a retained same-fixture numerical check to M2. A fresh SA8775P GPU-requested output saturated 96.63% of samples and differs from original ONNX CPU by 11.832 relative L2, so that route fails the numerical gate despite profiling. The same binary's CPU-requested output on the exact SA device matched original ONNX CPU within 4.13e-6 relative L2; its 100-sample CPU-requested component profile passed placement (738/738 execution-detail rows on CPU) at nearest-rank p50/p95 5.384/5.534 s, still without a full stream. A FP32-preserving GPU-option control still saturated 84.89% of samples, so that option did not fix the tested route. RB3 TFLite GPU-requested inference returned an unsaturated but 15.73%-relative-L2 divergent waveform; its fresh 100-sample mixed CPU/GPU component p50/p95 was 3.099/3.133 s. The same binary requested on exact-RB3 CPU matched original ONNX CPU within 4.13e-6 relative L2 on the retained fixture; its 47-sample component profile measured p50/p95 12.727/13.424 s with all 738 execution-detail rows on CPU. That measured component latency is a major blocker for playable streaming on this route. A one-fixture-calibrated RB3 INT8 QNN vocoder returned a finite but 66.93%-relative-L2 divergent waveform (3.49 dB SNR) versus ONNX CPU, with 100 NPU component samples at p50/p95 1.971/1.992 s and all 728 execution-detail rows on NPU; it fails the numerical gate even on its calibration fixture. X Elite ONNX CPU inference matched the local ONNX Runtime output with 8.09e-7 relative L2; its 94-sample component profile was p50/p95 6.384/6.644 s with all execution-detail rows on CPU. Corrected DirectML inference and profile both failed during provider initialization; separate FP16 QNN DLC inference returned an unsaturated waveform at 1.138% relative L2 / 38.88 dB SNR versus local ONNX CPU, but its placement profile timed out during QNN graph preparation without samples. A separate SA8775P FP16 QNN DLC vocoder compile passed, but NPU-requested same-fixture inference failed after compilation without waveform or placement samples. Fresh S24 and S25 CPU-requested TFLite vocoder inferences matched ONNX CPU within 4.04e-6 relative L2 on the retained fixture. S25 measured 100 component samples at p50/p95 4.418/4.641 s with all 738 execution-detail rows on CPU; S24 measured 100 at 4.826/4.958 s with all 738 rows on CPU. Separate explicit INT8 and W8A16 QDQ ONNX exports checked on local ORT CPU failed the same-fixture numerical gate at 246.97% and 331.83% waveform relative L2, respectively. S25 CPU talker inference preserved token 80 and its 100-sample component profile measured p50/p95 30.161/31.301 ms with all 1,800 rows on CPU. M2 still requires a quality-passing talker/predictor/vocoder set, device-local co-residency and handoff, playable streaming and sustained memory/power validation.