| 347 | notes = f"candidate unavailable: {str(exc).splitlines()[0]}" |
| 348 | |
| 349 | peak_memory_gb = _memory_gb(config.device) |
| 350 | metadata = batch.benchmark_metadata() |
| 351 | timing_mode = "cuda_event_median_ms" if config.device.type == "cuda" else "wall_median_ms" |
| 352 | timing_notes = f"warmup={config.warmup}; repeat={config.repeat}; {timing_mode}" |
| 353 | notes = f"{notes}; {timing_notes}" if notes else timing_notes |
| 354 | |
| 355 | return { |
| 356 | "timestamp": datetime.now(timezone.utc).isoformat(), |
| 357 | "case": config.case, |
| 358 | "candidate": candidate_name, |
| 359 | "device": str(config.device), |
| 360 | "dtype": str(config.dtype), |
| 361 | "num_prompts": config.num_prompts, |
| 362 | "samples_per_prompt": config.samples_per_prompt, |
| 363 | "prompt_len": config.prompt_len, |
| 364 | "completion_len": config.completion_len, |
| 365 | "vocab_size": config.vocab_size, |