Download benchmark_speed_performance.html from ItalianCyberTeam/PRISM-project-Evaluation-functional-request: direct link, hf CLI and curl.
- Browser
- Download file 32.8 kB
-
https://huggingface.co/spaces/ItalianCyberTeam/PRISM-project-Evaluation-functional-request/resolve/main/benchmark_speed_performance.html
- Command line
-
hf download hf://spaces/ItalianCyberTeam/PRISM-project-Evaluation-functional-request/benchmark_speed_performance.html
-
curl -L -o benchmark_speed_performance.html https://huggingface.co/spaces/ItalianCyberTeam/PRISM-project-Evaluation-functional-request/resolve/main/benchmark_speed_performance.html
32.8 kB
| <html lang="it"> | |
| <head> | |
| <meta charset="utf-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1"> | |
| <title>Benchmark Speed Performance — Tempi AI</title> | |
| <!-- Google tag (gtag.js) --> | |
| <script async src="https://www.googletagmanager.com/gtag/js?id=G-HMZQ3QVL91"></script> | |
| <script> | |
| window.dataLayer = window.dataLayer || []; | |
| function gtag(){dataLayer.push(arguments);} | |
| gtag('js', new Date()); | |
| gtag('config', 'G-HMZQ3QVL91'); | |
| </script> | |
| <style> | |
| /* Stili incorporati: la dashboard resta consultabile offline senza build o dipendenze. */ | |
| :root { color-scheme:dark; --bg:#070a12; --panel:#101521; --panel2:#151c2b; --line:#2b3447; --muted:#9aa6bd; --text:#f5f7fb; --green:#6ee7b7; --cyan:#67e8f9; --orange:#fb923c; --red:#fb7185; } | |
| * { box-sizing:border-box; } | |
| body { margin:0; background:radial-gradient(circle at 8% 0%,rgba(45,212,191,.13),transparent 30rem),radial-gradient(circle at 95% 20%,rgba(59,130,246,.10),transparent 34rem),var(--bg); color:var(--text); font:15px/1.5 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif; } | |
| .page { width:min(1480px,calc(100% - 32px)); margin:auto; padding:32px 0 64px; } | |
| nav { display:flex; flex-wrap:wrap; gap:10px; margin-bottom:24px; } | |
| nav a { padding:8px 12px; border:1px solid var(--line); border-radius:999px; color:var(--muted); text-decoration:none; } | |
| nav a[aria-current="page"] { border-color:var(--green); color:var(--green); } | |
| header { display:grid; grid-template-columns:1fr auto; gap:24px; align-items:end; margin-bottom:28px; } | |
| .eyebrow { margin:0 0 8px; color:var(--green); font-size:12px; font-weight:800; letter-spacing:.16em; text-transform:uppercase; } | |
| h1 { margin:0; max-width:900px; font-size:clamp(34px,5vw,64px); line-height:1.02; letter-spacing:-.045em; } | |
| .subtitle { max-width:850px; margin:18px 0 0; color:var(--muted); font-size:17px; } | |
| .snapshot { padding:10px 14px; border:1px solid var(--line); border-radius:999px; background:rgba(16,21,33,.8); color:var(--muted); white-space:nowrap; } | |
| .metrics { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:12px; } | |
| .metric,.card { border:1px solid var(--line); background:rgba(16,21,33,.9); box-shadow:0 20px 60px rgba(0,0,0,.18); } | |
| .metric { padding:17px 20px; border-radius:14px; } | |
| .metric span { display:block; color:var(--muted); font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; } | |
| .metric strong { display:block; margin-top:4px; font-size:24px; } | |
| .card { border-radius:18px; overflow:hidden; } | |
| .toolbar { display:flex; flex-wrap:wrap; gap:10px; padding:16px 18px; border-bottom:1px solid var(--line); background:rgba(21,28,43,.72); } | |
| label { display:grid; gap:5px; color:var(--muted); font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; } | |
| select,button { min-height:38px; border:1px solid #38435a; border-radius:9px; background:#0d121d; color:var(--text); font:inherit; } | |
| select { min-width:150px; padding:0 34px 0 11px; } | |
| button { align-self:end; padding:0 14px; cursor:pointer; } | |
| select:focus,button:hover { border-color:var(--cyan); outline:none; } | |
| .table-wrap { overflow-x:auto; } | |
| table { width:100%; border-collapse:collapse; } | |
| th { position:sticky; top:0; z-index:1; padding:12px 10px; background:#111827; color:var(--muted); font-size:11px; letter-spacing:.06em; text-align:left; text-transform:uppercase; white-space:nowrap; } | |
| th[data-sort] { cursor:pointer; } | |
| td { padding:13px 10px; border-top:1px solid var(--line); vertical-align:middle; } | |
| tbody tr:hover { background:rgba(103,232,249,.04); } | |
| .rank { width:44px; color:var(--muted); font-weight:800; text-align:center; } | |
| .model { min-width:260px; } | |
| .model strong { display:block; overflow-wrap:anywhere; } | |
| .model small,.secondary { color:var(--muted); } | |
| .time { min-width:250px; } | |
| .time strong { display:block; margin-bottom:7px; font-size:16px; font-variant-numeric:tabular-nums; } | |
| .track { height:7px; overflow:hidden; border-radius:99px; background:#252e40; } | |
| .bar { height:100%; min-width:3px; border-radius:inherit; background:linear-gradient(90deg,var(--green),var(--cyan)); } | |
| .bar.slow { background:linear-gradient(90deg,var(--orange),var(--red)); } | |
| .badge { display:inline-block; padding:4px 8px; border:1px solid var(--line); border-radius:999px; font-size:11px; font-weight:800; white-space:nowrap; } | |
| .normal { border-color:rgba(110,231,183,.45); color:var(--green); } | |
| .slow { border-color:rgba(251,146,60,.45); color:var(--orange); } | |
| .failed { border-color:rgba(251,113,133,.45); color:var(--red); } | |
| .note { margin-top:14px; padding:18px 20px; color:var(--muted); font-size:13px; } | |
| .note strong { color:var(--text); } | |
| .empty { padding:40px; color:var(--muted); text-align:center; } | |
| @media (max-width:900px) { header { grid-template-columns:1fr; } .snapshot { justify-self:start; } .metrics { grid-template-columns:repeat(2,1fr); } } | |
| @media (max-width:560px) { .page { width:calc(100% - 18px); padding-top:20px; } .metrics { grid-template-columns:1fr; } } | |
| /* Titolo PRISM con spaziatura ampia, come nella presentazione prism_motti_total_time.html */ | |
| .prism-mark { display:flex; gap:clamp(14px,3vw,36px); margin:0 0 14px; font-family:Georgia,"Times New Roman",serif; font-size:clamp(2.2rem,5vw,3.6rem); font-weight:400; line-height:1; letter-spacing:.2rem; color:#fff; } | |
| </style> | |
| </head> | |
| <body> | |
| <main class="page"> | |
| <nav aria-label="Pagine benchmark"> | |
| <a href="benchmark_quality_performance.html">Qualità e throughput</a> | |
| <a href="benchmark_quality_OpenAI_performance.html">Qualità OpenAI</a> | |
| <a href="benchmark_speed_performance.html" aria-current="page">Tempi di conclusione</a> | |
| <a href="benchmark_judges_comparison.html">Self‑Judge vs OpenAI</a> | |
| <a href="prism_motti_total_time.html">Presentazione PRISM</a> | |
| </nav> | |
| <header> | |
| <div> | |
| <div class="prism-mark" aria-label="PRISM"><span>P</span><span>R</span><span>I</span><span>S</span><span>M</span></div> | |
| <p class="eyebrow">Benchmark locale · Durata end-to-end</p> | |
| <h1>Benchmark Speed Performance</h1> | |
| <p class="subtitle">Le AI sono ordinate per tempo di conclusione dell’intero test: caricamento, generazione, retry, giudice, salvataggio e fallback. Un tempo minore indica una conclusione più rapida.</p> | |
| </div> | |
| <div class="snapshot">Snapshot log verificati · 2026-08-14</div> | |
| </header> | |
| <section class="metrics" aria-label="Riepilogo dei risultati filtrati"> | |
| <div class="metric"><span>Run visibili</span><strong id="run-count">—</strong></div> | |
| <div class="metric"><span>Più rapido</span><strong id="fastest-time">—</strong></div> | |
| <div class="metric"><span>Tempo mediano</span><strong id="median-time">—</strong></div> | |
| <div class="metric"><span>Run oltre 180 s</span><strong id="slow-count">—</strong></div> | |
| </section> | |
| <section class="card" aria-label="Classifica dei tempi di conclusione"> | |
| <div class="toolbar"> | |
| <label>Dataset<select id="dataset-filter"><option value="all">Tutti</option></select></label> | |
| <label>Famiglia<select id="family-filter"><option value="all">Tutte</option></select></label> | |
| <label>Hardware<select id="hardware-filter"><option value="all">Tutti</option></select></label> | |
| <label>Stato<select id="status-filter"><option value="all">Tutti</option></select></label> | |
| <button id="reset-button" type="button">Azzera filtri</button> | |
| </div> | |
| <div class="table-wrap"> | |
| <table> | |
| <thead><tr><th>Pos.</th><th data-sort="model">AI / configurazione</th><th data-sort="time">Tempo di conclusione ↕</th><th>Dataset</th><th>Hardware</th><th>Esito</th><th>Classe</th></tr></thead> | |
| <tbody id="ranking-body"></tbody> | |
| </table> | |
| </div> | |
| </section> | |
| <section class="card note"> | |
| <strong>Interpretazione corretta.</strong> La classifica iniziale include i run selezionati con durata disponibile; la variante ridondante <code>openai/gpt-oss-20b · mode=standard</code> è esclusa e resta soltanto <code>mode=instruct</code>. Confronti equi richiedono lo stesso dataset, lo stesso numero di casi, la stessa modalità e lo stesso hardware: usa i filtri. I run falliti restano visibili perché il tempo misura comunque l’intero processo operativo. La classe <strong>LENTO</strong> scatta esclusivamente oltre 180 secondi. Hardware: <code>2GPU:0</code> = RTX 5060 Ti 16 GB; <code>2GPU:0,1</code> = RTX 5060 Ti 16 GB + RTX 3060 12 GB; <code>A100 80GB</code> = A100-SXM4 80 GB su CUDA 0. Le tre righe Nemotron V1/V2/V3 del 2026-07-28 sono sezioni dello stesso processo e conservano quindi la medesima durata totale; non vanno sommate. Il tempo di <code>gpt-5.6-sol</code> misura l’esecuzione del candidato tramite API fino alla persistenza nel log e non include il successivo giudizio Asse C; va quindi confrontato separatamente dai processi locali che incorporano anche l’Auto‑Judge. <strong>Reasoning candidato GPT‑OSS.</strong> Run locali MXFP4: <code>reasoning medium</code> (default del chat template, mai passato esplicitamente prima del 2026-08-19). Run Inference Provider (Together/DeepInfra): <code>reasoning low</code> (quegli script passavano già <code>reasoning_effort</code> esplicito, default codificato <code>"low"</code>). Entrambi dedotti dal codice sorgente, non da una riga di log esplicita. | |
| </section> | |
| </main> | |
| <script> | |
| ; | |
| // Snapshot delle righe con durata disponibile, aggiornato con le campagne 2GPU/A100 del 2026-08-12 e i provider del 2026-08-14. | |
| // I MODEL_ID sono normalizzati sugli entrypoint; formato e modalità restano campi separati. | |
| const RUNS = [ | |
| // Campagna A100-SXM4 80 GB: la durata copre l'intera suite V1-V3. | |
| {date:"2026-08-12",family:"Mistral",model:"mistralai/Ministral-3-8B-Instruct-2512-BF16",format:"BF16",mode:"instruct",dataset:"V1+V2+V3",hardware:"A100 80GB",status:"completed",cases:"3/3",time:456.86,source:"Mistral/20260719_Mistral_8B_BF16_A100.log"}, | |
| {date:"2026-08-12",family:"Mistral",model:"mistralai/Ministral-3-14B-Instruct-2512-BF16",format:"BF16",mode:"instruct",dataset:"V1+V2+V3",hardware:"A100 80GB",status:"completed",cases:"3/3",time:531.87,source:"Mistral/20260721_Mistral_14B_BF16_A100.log"}, | |
| {date:"2026-08-12",family:"Mistral",model:"mistralai/Mistral-Small-3.2-24B-Instruct-2506",format:"BF16",mode:"instruct",dataset:"V1+V2+V3",hardware:"A100 80GB",status:"completed",cases:"3/3",time:582.82,source:"Mistral/20260721_Mistral_24B_BF16_A100.log"}, | |
| {date:"2026-08-12",family:"Mistral",model:"mistralai/Ministral-3-14B-Instruct-2512-BF16",format:"GPTQ-Int4",mode:"instruct",dataset:"V1+V2+V3",hardware:"A100 80GB",status:"completed",cases:"3/3",time:763.91,source:"Mistral/20260722_Mistral_14B_Q_GPTQ_Int4_A100.log"}, | |
| {date:"2026-08-12",family:"Mistral",model:"mistralai/Mistral-Small-3.2-24B-Instruct-2506",format:"GPTQ-Int4",mode:"instruct",dataset:"V1+V2+V3",hardware:"A100 80GB",status:"completed",cases:"3/3",time:697.37,source:"Mistral/20260722_Mistral_24B_Q_GPTQ_Int4_A100.log"}, | |
| {date:"2026-08-12",family:"Mistral",model:"mistralai/Ministral-3-14B-Instruct-2512-BF16",format:"BitsAndBytes-Int8",mode:"instruct",dataset:"V1+V2+V3",hardware:"A100 80GB",status:"failed",cases:"0/3",time:169.99,source:"Mistral/20260722_Mistral_14B_Q_Int8_BB_A100.log"}, | |
| {date:"2026-08-12",family:"Qwen",model:"Qwen/Qwen2.5-14B-Instruct",format:"BF16",mode:"instruct",dataset:"V1+V2+V3",hardware:"A100 80GB",status:"completed",cases:"3/3",time:528.47,source:"Qwen/20260721_Qwen_14B_BF16_A100.log"}, | |
| {date:"2026-08-12",family:"Qwen",model:"Qwen/Qwen2.5-14B-Instruct",format:"GPTQ-Int4",mode:"instruct",dataset:"V1+V2+V3",hardware:"A100 80GB",status:"completed",cases:"3/3",time:725.72,source:"Qwen/20260722_Qwen_14B_Q_GPTQ_Int4_A100.log"}, | |
| {date:"2026-08-12",family:"Qwen",model:"Qwen/Qwen2.5-14B-Instruct",format:"BitsAndBytes-Int8",mode:"instruct",dataset:"V1+V2+V3",hardware:"A100 80GB",status:"completed",cases:"3/3",time:1599.86,source:"Qwen/20260722_Qwen_14B_Q_Int8_BB_A100.log"}, | |
| {date:"2026-08-12",family:"DeepSeek",model:"deepseek-ai/DeepSeek-Prover-V2-7B",format:"BF16",mode:"instruct",dataset:"V1+V2+V3",hardware:"A100 80GB",status:"completed",cases:"3/3",time:1364.29,source:"models_hf/DeepSeek/20260725_DeepSeek_Prover_7B_BF16_A100.log"}, | |
| {date:"2026-08-12",family:"DeepSeek",model:"deepseek-ai/DeepSeek-Prover-V2-7B",format:"BitsAndBytes-Int8",mode:"instruct",dataset:"V1+V2+V3",hardware:"A100 80GB",status:"completed",cases:"3/3",time:5987.75,source:"models_hf/DeepSeek/20260725_DeepSeek_Prover_7B_Q_Int8_BB_A100.log"}, | |
| {date:"2026-08-12",family:"GPT-OSS",reasoning:"medium",model:"openai/gpt-oss-20b",format:"MXFP4",mode:"instruct",dataset:"V1+V2+V3",hardware:"A100 80GB",status:"completed",cases:"3/3",time:3411.47,source:"models_hf/GPT_OSS/20260726_GPT_OSS_20B_MXFP4_A100.log"}, | |
| // Campagna locale 2GPU del 2026-08-12, inclusi il fallimento OOM e i run LENTO. | |
| {date:"2026-08-12",family:"Mistral",model:"mistralai/Ministral-3-8B-Instruct-2512-BF16",format:"BF16",mode:"instruct",dataset:"V3-split-case3",hardware:"2GPU:0,1",status:"completed",cases:"1/1",time:472.97,source:"Mistral/20260719_Mistral_8B_BF16_2GPU.log"}, | |
| {date:"2026-08-12",family:"Mistral",model:"mistralai/Ministral-3-14B-Instruct-2512-BF16",format:"BF16",mode:"instruct",dataset:"V3-split-case3",hardware:"2GPU:0,1",status:"failed",cases:"0/1",time:6.29,source:"Mistral/20260721_Mistral_14B_BF16_2GPU.log · CUDA OOM"}, | |
| {date:"2026-08-12",family:"Mistral",model:"mistralai/Ministral-3-14B-Instruct-2512-BF16",format:"GPTQ-Int4",mode:"instruct",dataset:"V3-split-case3",hardware:"2GPU:0",status:"completed",cases:"1/1",time:238.29,source:"Mistral/20260722_Mistral_14B_Q_GPTQ_Int4_2GPU.log"}, | |
| {date:"2026-08-12",family:"Mistral",model:"mistralai/Ministral-3-14B-Instruct-2512-BF16",format:"BitsAndBytes-Int8",mode:"instruct",dataset:"V3-split-case3",hardware:"2GPU:0,1",status:"completed",cases:"1/1",time:626.24,source:"Mistral/20260722_Mistral_14B_Q_Int8_BB_2GPU.log"}, | |
| {date:"2026-08-12",family:"Mistral",model:"mistralai/Mistral-Small-3.2-24B-Instruct-2506",format:"GPTQ-Int4",mode:"instruct",dataset:"V3-split-case3",hardware:"2GPU:0,1",status:"completed",cases:"1/1",time:376.39,source:"Mistral/20260722_Mistral_24B_Q_GPTQ_Int4_2GPU.log"}, | |
| {date:"2026-08-12",family:"Mistral",model:"mistralai/Ministral-3-8B-Instruct-2512-BF16",format:"GPTQ-Int4",mode:"instruct",dataset:"V3-split-case3",hardware:"2GPU:0",status:"completed",cases:"1/1",time:136.55,source:"Mistral/20260725_Mistral_8B_Q_GPTQ_Int4_2GPU.log"}, | |
| {date:"2026-08-12",family:"Qwen",model:"Qwen/Qwen2.5-14B-Instruct",format:"GPTQ-Int4",mode:"instruct",dataset:"V3-split-case3",hardware:"2GPU:0",status:"completed",cases:"1/1",time:234.65,source:"Qwen/20260722_Qwen_14B_Q_GPTQ_Int4_2GPU.log"}, | |
| {date:"2026-08-12",family:"Qwen",model:"Qwen/Qwen2.5-14B-Instruct",format:"BitsAndBytes-Int8",mode:"instruct",dataset:"V3-split-case3",hardware:"2GPU:0,1",status:"completed",cases:"1/1",time:572.52,source:"Qwen/20260722_Qwen_14B_Q_Int8_BB_2GPU.log"}, | |
| {date:"2026-08-12",family:"GPT-OSS",reasoning:"medium",model:"openai/gpt-oss-20b",format:"MXFP4",mode:"standard",dataset:"V3-split-case3",hardware:"2GPU:0,1",status:"completed",cases:"1/1",time:1417.33,source:"models_hf/GPT_OSS/20260726_GPT_OSS_20B_MXFP4_2GPU.log"}, | |
| // DeepInfra e Together 20B sono aggregati: tempo medio dei due run | |
| // equivalenti; la sorgente registra i valori individuali di entrambi. | |
| {date:"2026-08-14",family:"GPT-OSS",reasoning:"low",model:"+ openai/gpt-oss-20b",format:"Inference Provider",mode:"instruct",dataset:"V3-split-case3",hardware:"DeepInfra - Together",status:"completed",cases:"1/1",time:35.718,source:"Media DeepInfra (35.247 s) e Together (36.188 s); models_hf/GPT_OSS/Inference_Provider/gpt_oss_20B_inference_provider_deepinfra.log"}, | |
| {date:"2026-08-14",family:"GPT-OSS",reasoning:"low",model:"+ openai/gpt-oss-120b",format:"Inference Provider",mode:"instruct",dataset:"V3-split-case3",hardware:"Together",status:"completed",cases:"0/1",time:58.718,source:"models_hf/GPT_OSS/Inference_Provider/gpt_oss_120B_inference_provider_deepinfra.log"}, | |
| {date:"2026-08-12",family:"Nemotron",model:"nvidia/NVIDIA-Nemotron-Nano-9B-v2",format:"BF16",mode:"instruct",dataset:"V1+V2+V3",hardware:"A100 80GB",status:"completed",cases:"3/3",time:1481.88,source:"models_hf/Nemotron/20260725_Nemotron_Nano_9B_BF16_A100.log"}, | |
| {date:"2026-08-03",family:"OpenAI",model:"gpt-5.6-sol",format:"API",mode:"instruct",dataset:"V3-split-case3",hardware:"OpenAI API",status:"completed",cases:"1/1",time:65.14,source:"giudice/OpenAI_execute_V3.log · run_id=70ad80d55b99ac8b5d48"}, | |
| {date:"2026-07-27",family:"Llama",model:"meta-llama/Llama-3.1-8B-Instruct",format:"BF16",mode:"instruct",dataset:"DS_INST_V3_INPUT_3",hardware:"2GPU:0,1",status:"completed",cases:"1/1",time:206.82,source:"models_hf_2/20260727_Llama3.1_8B_BF16_2GPU-instruct.log"}, | |
| {date:"2026-07-27",family:"Gemma",model:"google/gemma-4-12B-it-qat-w4a16-ct",format:"QAT-W4A16",mode:"instruct",dataset:"DS_INST_V3_INPUT_3",hardware:"2GPU:0,1",status:"completed",cases:"1/1",time:182.08,source:"models_hf_2/20260727_Gemma4_12B_QAT_W4A16_2GPU-instruct.log"}, | |
| {date:"2026-07-27",family:"Gemma",model:"cyankiwi/gemma-4-12B-it-AWQ-INT4",format:"AWQ-Int4",mode:"instruct",dataset:"DS_INST_V3_INPUT_3",hardware:"2GPU:0,1",status:"completed",cases:"1/1",time:119.73,source:"models_hf_2/20260727_Gemma4_12B_AWQ_INT4_2GPU-instruct.log"}, | |
| {date:"2026-07-27",family:"Qwen",model:"Qwen/Qwen3-14B-AWQ",format:"AWQ",mode:"instruct",dataset:"DS_INST_V3_INPUT_3",hardware:"2GPU:0",status:"completed",cases:"1/1",time:94.42,source:"models_hf_2/20260727_Qwen3_14B_AWQ_2GPU-instruct.log"}, | |
| {date:"2026-07-27",family:"Qwen",model:"Qwen/Qwen2.5-14B-Instruct-AWQ",format:"AWQ",mode:"instruct",dataset:"DS_INST_V3_INPUT_3",hardware:"2GPU:0",status:"completed",cases:"1/1",time:34.73,source:"models_hf_2/20260727_Qwen2.5_14B_AWQ_2GPU-instruct.log"}, | |
| {date:"2026-07-26",family:"DeepSeek",model:"deepseek-ai/DeepSeek-Prover-V2-7B",format:"BF16",mode:"standard",dataset:"DS_STD_INPUT_1_2",hardware:"2GPU:0,1",status:"completed",cases:"2/2",time:93.22,source:"models_hf/DeepSeek/20260725_DeepSeek_Prover_7B_BF16_2GPU.log"}, | |
| {date:"2026-07-26",family:"DeepSeek",model:"deepseek-ai/DeepSeek-Prover-V2-7B",format:"BF16",mode:"instruct",dataset:"DS_INST_INPUT_2",hardware:"2GPU:0,1",status:"completed",cases:"1/1",time:50.67,source:"models_hf/DeepSeek/20260725_DeepSeek_Prover_7B_BF16_2GPU-instruct.log"}, | |
| {date:"2026-07-26",family:"DeepSeek",model:"deepseek-ai/DeepSeek-Prover-V2-7B",format:"BitsAndBytes-Int8",mode:"standard",dataset:"DS_STD_INPUT_1_2",hardware:"2GPU:0,1",status:"completed",cases:"2/2",time:264.84,source:"models_hf/DeepSeek/20260725_DeepSeek_Prover_7B_Q_Int8_BB_2GPU.log"}, | |
| {date:"2026-07-26",family:"DeepSeek",model:"deepseek-ai/DeepSeek-Prover-V2-7B",format:"BitsAndBytes-Int8",mode:"instruct",dataset:"DS_INST_INPUT_2",hardware:"2GPU:0,1",status:"completed",cases:"1/1",time:91.49,source:"models_hf/DeepSeek/20260725_DeepSeek_Prover_7B_Q_Int8_BB_2GPU-instruct.log"}, | |
| {date:"2026-07-26",family:"GPT-OSS",reasoning:"medium",model:"openai/gpt-oss-20b",format:"MXFP4",mode:"instruct",dataset:"DS_INST_INPUT_2",hardware:"2GPU:0,1",status:"completed",cases:"1/1",time:534.31,source:"models_hf/GPT_OSS/20260726_GPT_OSS_20B_MXFP4_2GPU-instruct.log"}, | |
| {date:"2026-07-26",family:"Nemotron",model:"nvidia/NVIDIA-Nemotron-Nano-9B-v2",format:"BF16",mode:"standard",dataset:"DS_STD_INPUT_1_2",hardware:"2GPU:0,1",status:"failed",cases:"0/2",time:8594.75,source:"models_hf/Nemotron/20260725_Nemotron_Nano_9B_BF16_2GPU.log"}, | |
| {date:"2026-07-26",family:"Mistral",model:"mistralai/Ministral-3-8B-Instruct-2512-BF16",format:"GPTQ-Int4",mode:"standard",dataset:"DS_STD_INPUT_1_2",hardware:"2GPU:0",status:"completed",cases:"2/2",time:56.67,source:"Mistral/20260725_Mistral_8B_Q_GPTQ_Int4_2GPU.log"}, | |
| {date:"2026-07-26",family:"Mistral",model:"mistralai/Ministral-3-8B-Instruct-2512-BF16",format:"GPTQ-Int4",mode:"instruct",dataset:"DS_INST_INPUT_2",hardware:"2GPU:0",status:"completed",cases:"1/1",time:33.47,source:"Mistral/20260725_Mistral_8B_Q_GPTQ_Int4_2GPU-instruct.log"}, | |
| {date:"2026-07-26",family:"Mistral",model:"mistralai/Mistral-Small-3.2-24B-Instruct-2506",format:"GPTQ-Int4",mode:"standard",dataset:"DS_STD_INPUT_1_2",hardware:"2GPU:0,1",status:"completed",cases:"2/2",time:215.34,source:"Mistral/20260722_Mistral_24B_Q_GPTQ_Int4_2GPU.log"}, | |
| {date:"2026-07-26",family:"Mistral",model:"mistralai/Mistral-Small-3.2-24B-Instruct-2506",format:"GPTQ-Int4",mode:"instruct",dataset:"DS_INST_INPUT_2",hardware:"2GPU:0,1",status:"completed",cases:"1/1",time:59.66,source:"Mistral/20260722_Mistral_24B_Q_GPTQ_Int4_2GPU-instruct.log"}, | |
| {date:"2026-07-26",family:"Qwen",model:"Qwen/Qwen2.5-14B-Instruct",format:"GPTQ-Int4",mode:"standard",dataset:"DS_STD_INPUT_1_2",hardware:"2GPU:0",status:"completed",cases:"2/2",time:135.00,source:"Qwen/20260722_Qwen_14B_Q_GPTQ_Int4_2GPU.log"}, | |
| {date:"2026-07-26",family:"Qwen",model:"Qwen/Qwen2.5-14B-Instruct",format:"GPTQ-Int4",mode:"instruct",dataset:"DS_INST_INPUT_2",hardware:"2GPU:0",status:"completed",cases:"1/1",time:40.99,source:"Qwen/20260722_Qwen_14B_Q_GPTQ_Int4_2GPU-instruct.log"}, | |
| {date:"2026-07-26",family:"Qwen",model:"Qwen/Qwen2.5-14B-Instruct",format:"BitsAndBytes-Int8",mode:"instruct",dataset:"DS_INST_INPUT_2",hardware:"2GPU:0,1",status:"completed",cases:"1/1",time:108.32,source:"Qwen/20260722_Qwen_14B_Q_Int8_BB_2GPU-instruct.log"}, | |
| {date:"2026-07-27",family:"Mistral",model:"mistralai/Ministral-3-8B-Instruct-2512-BF16",format:"BF16",mode:"instruct",dataset:"DS_INST_V3_INPUT_3",hardware:"2GPU:0,1",status:"completed",cases:"1/1",time:316.70,source:"Mistral/20260719_Mistral_8B_BF16_2GPU-instruct.log"}, | |
| {date:"2026-08-11",family:"Mistral",model:"mistralai/Ministral-3-8B-Instruct-2512-BF16",format:"BF16",mode:"instruct",dataset:"V3-split-case3",hardware:"A100:0",status:"completed",cases:"1/1",time:470.62,source:"Mistral/20260719_Mistral_8B_BF16_A100.log"}, | |
| {date:"2026-07-27",family:"Mistral",model:"mistralai/Ministral-3-14B-Instruct-2512-BF16",format:"GPTQ-Int4",mode:"instruct",dataset:"DS_INST_V3_INPUT_3",hardware:"2GPU:0",status:"completed",cases:"1/1",time:174.58,source:"Mistral/20260722_Mistral_14B_Q_GPTQ_Int4_2GPU-instruct.log"}, | |
| {date:"2026-07-27",family:"Mistral",model:"mistralai/Ministral-3-14B-Instruct-2512-BF16",format:"BitsAndBytes-Int8",mode:"instruct",dataset:"DS_INST_V3_INPUT_3",hardware:"2GPU:0,1",status:"completed",cases:"1/1",time:384.85,source:"Mistral/20260722_Mistral_14B_Q_Int8_BB_2GPU-instruct.log"}, | |
| {date:"2026-07-27",family:"Qwen",model:"Qwen/Qwen2.5-14B-Instruct",format:"GPTQ-Int4",mode:"instruct",dataset:"DS_INST_V3_INPUT_3",hardware:"2GPU:0",status:"failed",cases:"0/1",time:84.07,source:"Qwen/20260722_Qwen_14B_Q_GPTQ_Int4_2GPU-instruct.log"}, | |
| {date:"2026-07-28",family:"Nemotron",model:"nvidia/NVIDIA-Nemotron-Nano-9B-v2",format:"BF16",mode:"standard",dataset:"DS_STD_V1_INPUT_1",hardware:"2GPU:0,1",status:"completed",cases:"1/1",time:1457.60,source:"models_hf/Nemotron/20260725_Nemotron_Nano_9B_BF16_2GPU.log"}, | |
| {date:"2026-07-28",family:"Nemotron",model:"nvidia/NVIDIA-Nemotron-Nano-9B-v2",format:"BF16",mode:"instruct",dataset:"DS_INST_V2_INPUT_2",hardware:"2GPU:0,1",status:"completed",cases:"1/1",time:1457.60,source:"models_hf/Nemotron/20260725_Nemotron_Nano_9B_BF16_2GPU.log"}, | |
| {date:"2026-07-28",family:"Nemotron",model:"nvidia/NVIDIA-Nemotron-Nano-9B-v2",format:"BF16",mode:"instruct",dataset:"DS_INST_V3_INPUT_3",hardware:"2GPU:0,1",status:"completed",cases:"1/1",time:1457.60,source:"models_hf/Nemotron/20260725_Nemotron_Nano_9B_BF16_2GPU.log"}, | |
| // Campagna V100 di agosto (rieseguita 2026-08-16/17): durata dell'intera suite V1-V3. | |
| {date:"2026-08-16",family:"Mistral",model:"mistralai/Ministral-3-8B-Instruct-2512-BF16",format:"FP16",mode:"instruct",dataset:"V3-split-case3",hardware:"V100",status:"completed",cases:"1/1",time:285.46,source:"Mistral/20260719_Mistral_8B_FP16_V100.log"}, | |
| {date:"2026-08-16",family:"Mistral",model:"mistralai/Ministral-3-14B-Instruct-2512-BF16",format:"FP16",mode:"instruct",dataset:"V3-split-case3",hardware:"V100",status:"completed",cases:"1/1",time:329.54,source:"Mistral/20260721_Mistral_14B_FP16_V100.log"}, | |
| {date:"2026-08-16",family:"Mistral",model:"mistralai/Ministral-3-14B-Instruct-2512-BF16",format:"BitsAndBytes-Int8",mode:"instruct",dataset:"V3-split-case3",hardware:"V100",status:"completed",cases:"1/1",time:793.99,source:"Mistral/20260722_Mistral_14B_Q_Int8_BB_V100.log"}, | |
| {date:"2026-08-16",family:"DeepSeek",model:"deepseek-ai/DeepSeek-Prover-V2-7B",format:"FP16",mode:"instruct",dataset:"V3-split-case3",hardware:"V100",status:"completed",cases:"1/1",time:1171.61,source:"models_hf/DeepSeek/20260725_DeepSeek_Prover_7B_FP16_V100.log"}, | |
| {date:"2026-08-16",family:"Qwen",model:"Qwen/Qwen2.5-14B-Instruct",format:"FP16",mode:"instruct",dataset:"V3-split-case3",hardware:"V100",status:"failed",cases:"0/1",time:149.91,source:"Qwen/20260721_Qwen_14B_FP16_V100.log · RuntimeError margine VRAM insufficiente in fase di verifica modello sull'ultimo dei quattro tentativi nel log; durata riferita solo a quel tentativo, non all'intero file"}, | |
| {date:"2026-08-19",family:"Mistral",model:"mistralai/Mistral-Small-3.2-24B-Instruct-2506",format:"BitsAndBytes-NF4",mode:"instruct",dataset:"V3-split-case3",hardware:"V100",status:"completed",cases:"1/1",time:808.39,source:"Mistral/20260819_Mistral_24B_Q_NF4_BB_V100.log"}, | |
| {date:"2026-08-19",family:"Mistral",model:"mistralai/Mistral-Small-3.2-24B-Instruct-2506",format:"GPTQ-Int4",mode:"instruct",dataset:"V3-split-case3",hardware:"V100",status:"completed",cases:"1/1",time:241.43,source:"Mistral/20260819_Mistral_24B_Q_GPTQ_Int4_V100.log (run 1/3, backend GPTQ_EXLLAMA_V2)"}, | |
| {date:"2026-08-19",family:"Mistral",model:"mistralai/Mistral-Small-3.2-24B-Instruct-2506",format:"GPTQ-Int4",mode:"instruct",dataset:"V3-split-case3",hardware:"V100",status:"completed",cases:"1/1",time:238.41,source:"Mistral/20260819_Mistral_24B_Q_GPTQ_Int4_V100.log (run 2/3, backend GPTQ_EXLLAMA_V2)"}, | |
| {date:"2026-08-19",family:"Mistral",model:"mistralai/Mistral-Small-3.2-24B-Instruct-2506",format:"GPTQ-Int4",mode:"instruct",dataset:"V3-split-case3",hardware:"V100",status:"completed",cases:"1/1",time:239.31,source:"Mistral/20260819_Mistral_24B_Q_GPTQ_Int4_V100.log (run 3/3, backend GPTQ_EXLLAMA_V2)"} | |
| ]; | |
| const controls = { | |
| dataset: document.getElementById("dataset-filter"), family: document.getElementById("family-filter"), | |
| hardware: document.getElementById("hardware-filter"), status: document.getElementById("status-filter") | |
| }; | |
| let sortKey = "time"; | |
| let sortDirection = 1; | |
| /** | |
| * Formatta una durata in secondi e, oltre il minuto, aggiunge la lettura in minuti. | |
| * @param {number} seconds Durata finita e non negativa registrata nel log. | |
| * @returns {string} Durata localizzata pronta per la tabella. | |
| * @throws {RangeError} Può propagare errori di localizzazione; i dati incorporati sono numeri validi e non richiedono fallback. | |
| * @sideEffects Nessuno. | |
| */ | |
| function formatDuration(seconds) { | |
| const exact = seconds.toLocaleString("it-IT", {minimumFractionDigits:2,maximumFractionDigits:2}); | |
| return seconds >= 60 ? `${exact} s · ${(seconds / 60).toLocaleString("it-IT", {maximumFractionDigits:1})} min` : `${exact} s`; | |
| } | |
| /** | |
| * Aggiunge a un filtro i valori distinti disponibili nello snapshot. | |
| * @param {HTMLSelectElement} select Controllo da popolare. | |
| * @param {string[]} values Valori anche duplicati. | |
| * @returns {void} | |
| * @throws {DOMException} Può propagare un errore DOM; l'opzione iniziale resta il fallback visibile. | |
| * @sideEffects Inserisce elementi option nel controllo ricevuto. | |
| */ | |
| function populateFilter(select, values) { | |
| [...new Set(values)].sort().forEach((value) => { | |
| const option = document.createElement("option"); option.value = value; option.textContent = value; select.append(option); | |
| }); | |
| } | |
| /** | |
| * Seleziona e ordina i run secondo controlli e intestazione attivi. | |
| * @returns {typeof RUNS} Copia filtrata e ordinata, senza mutare lo snapshot. | |
| * @throws {Error} Non sono attesi errori perché chiavi e controlli sono definiti localmente; nessun fallback nasconde dati incoerenti. | |
| * @sideEffects Nessuno. | |
| */ | |
| function visibleRuns() { | |
| const data = RUNS.filter((run) => Object.entries(controls).every(([key, select]) => select.value === "all" || run[key] === select.value)); | |
| return data.sort((a,b) => sortKey === "model" ? sortDirection * a.model.localeCompare(b.model) : sortDirection * (a.time - b.time)); | |
| } | |
| /** | |
| * Ridisegna classifica, barre proporzionali e indicatori usando i filtri correnti. | |
| * @returns {void} | |
| * @throws {DOMException} Può propagare errori DOM; la nota metodologica rimane comunque leggibile come fallback. | |
| * @sideEffects Sostituisce le righe della tabella e aggiorna le quattro metriche di riepilogo. | |
| */ | |
| function render() { | |
| const data = visibleRuns(); | |
| const body = document.getElementById("ranking-body"); | |
| body.replaceChildren(); | |
| const maxTime = data.length ? Math.max(...data.map((run) => run.time)) : 1; | |
| data.forEach((run,index) => { | |
| const row = document.createElement("tr"); | |
| const className = run.time > 180 ? "slow" : "normal"; | |
| row.title = `Sorgente: ${run.source}`; | |
| row.innerHTML = `<td class="rank">${index + 1}</td><td class="model"><strong>${run.model}</strong><small>${run.format} · ${run.date}</small></td><td class="time"><strong>${formatDuration(run.time)}</strong><div class="track"><div class="bar ${className === "slow" ? "slow" : ""}" style="width:${Math.max(1,(run.time / maxTime) * 100)}%"></div></div></td><td><strong>${run.dataset}</strong><div class="secondary">casi ${run.cases}</div></td><td>${run.hardware}${run.reasoning ? `<div class="secondary">reasoning ${run.reasoning}</div>` : ""}</td><td><span class="badge ${run.status === "failed" ? "failed" : "normal"}">${run.status}</span></td><td><span class="badge ${className}">${className === "slow" ? "LENTO" : "NORMALE"}</span></td>`; | |
| body.append(row); | |
| }); | |
| if (!data.length) { | |
| const row = document.createElement("tr"); row.innerHTML = `<td colspan="7" class="empty">Nessun run corrisponde ai filtri selezionati.</td>`; body.append(row); | |
| } | |
| const times = data.map((run) => run.time).sort((a,b) => a-b); | |
| const middle = Math.floor(times.length / 2); | |
| const median = times.length ? (times.length % 2 ? times[middle] : (times[middle - 1] + times[middle]) / 2) : null; | |
| document.getElementById("run-count").textContent = String(data.length); | |
| document.getElementById("fastest-time").textContent = times.length ? formatDuration(times[0]) : "—"; | |
| document.getElementById("median-time").textContent = median === null ? "—" : formatDuration(median); | |
| document.getElementById("slow-count").textContent = String(data.filter((run) => run.time > 180).length); | |
| } | |
| /** | |
| * Configura filtri, ordinamento e primo rendering della pagina. | |
| * @returns {void} | |
| * @throws {DOMException} Propaga errori strutturali dell'HTML; non è applicato un fallback silenzioso perché segnalerebbe una pagina incompleta. | |
| * @sideEffects Popola controlli, registra listener e disegna la classifica iniziale. | |
| */ | |
| function initializeDashboard() { | |
| Object.entries(controls).forEach(([key,select]) => { populateFilter(select,RUNS.map((run) => run[key])); select.addEventListener("change",render); }); | |
| document.querySelectorAll("th[data-sort]").forEach((heading) => heading.addEventListener("click",() => { | |
| const nextKey = heading.dataset.sort; sortDirection = sortKey === nextKey ? -sortDirection : 1; sortKey = nextKey; render(); | |
| })); | |
| document.getElementById("reset-button").addEventListener("click",() => { Object.values(controls).forEach((select) => { select.value = "all"; }); sortKey = "time"; sortDirection = 1; render(); }); | |
| render(); | |
| } | |
| initializeDashboard(); | |
| </script> | |
| </body> | |
| </html> | |