Calibração e congelamento da configuração (tarefas 60–62)

- config/calibration.json: temperatura e limiar de abstenção por candidato e
  dispositivo, ajustados só na partição de calibração.
- config/frozen.json: hashes de configuração, calibração, partições,
  adaptadores, contrato e ambientes; libera a partição de teste.
- Q6: lote de produção = 1; tarefa 65 não se aplica neste ciclo (D4).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Marcos Lohmann
2026-10-07 18:54:20 -03:00
parent 8e5e78b841
commit d4564d9c1d
19 changed files with 7338 additions and 12 deletions

View File

@@ -51,8 +51,7 @@ input: # Q8
execution:
seed: 20261007
batch_sweep: [1, 2, 4, 8, 16, 32] # Q6
production_batch: auto # maior lote com p95 <= slo
production_batch: 1 # Q6: contrato por requisição, decisão turno a turno
repetitions: 3
cpu: # Q11
timeout_ms: 10000
@@ -70,7 +69,6 @@ calibration: # Q10
criteria: # Q5
latency_gpu_batch1:
p95_ms_per_decision: 150
p95_ms_per_turn: 300
accuracy:
tasks: [D1, D2]
non_inferiority_margin_pp: 3.0

118
config/calibration.json Normal file
View File

@@ -0,0 +1,118 @@
{
"method": "temperature_scaling",
"fit_split": "calibration",
"max_confident_wrong_rate": 0.02,
"min_coverage": 0.8,
"candidates": {
"gliner": {
"cpu": {
"temperature": 0.8187,
"fitted_temperature": 0.8187,
"accepted": true,
"n": 1127,
"ece_raw": 0.0767,
"ece_calibrated": 0.0631,
"ece_cv_raw": 0.1016,
"ece_cv_calibrated": 0.0872,
"nll_raw": 1.3205,
"nll_calibrated": 1.305,
"threshold": 0.856167,
"coverage": 0.118,
"selective_accuracy": 0.8346,
"confident_wrong_rate": 0.0195,
"meets_min_coverage": false
},
"cuda": {
"temperature": 0.8187,
"fitted_temperature": 0.8187,
"accepted": true,
"n": 1127,
"ece_raw": 0.0767,
"ece_calibrated": 0.0634,
"ece_cv_raw": 0.1016,
"ece_cv_calibrated": 0.0872,
"nll_raw": 1.3205,
"nll_calibrated": 1.305,
"threshold": 0.857453,
"coverage": 0.118,
"selective_accuracy": 0.8346,
"confident_wrong_rate": 0.0195,
"meets_min_coverage": false
}
},
"laya": {
"cpu": {
"temperature": 3.5787,
"fitted_temperature": 3.5787,
"accepted": true,
"n": 1127,
"ece_raw": 0.3296,
"ece_calibrated": 0.0715,
"ece_cv_raw": 0.3321,
"ece_cv_calibrated": 0.1171,
"nll_raw": 2.8006,
"nll_calibrated": 1.5575,
"threshold": 0.871532,
"coverage": 0.0515,
"selective_accuracy": 0.8448,
"confident_wrong_rate": 0.008,
"meets_min_coverage": false
},
"cuda": {
"temperature": 3.5787,
"fitted_temperature": 3.5787,
"accepted": true,
"n": 1127,
"ece_raw": 0.3263,
"ece_calibrated": 0.075,
"ece_cv_raw": 0.3318,
"ece_cv_calibrated": 0.113,
"nll_raw": 2.7748,
"nll_calibrated": 1.5517,
"threshold": 0.871532,
"coverage": 0.0515,
"selective_accuracy": 0.8448,
"confident_wrong_rate": 0.008,
"meets_min_coverage": false
}
},
"rizzo_flow": {
"cuda": {
"temperature": 1.2523,
"fitted_temperature": 1.2523,
"accepted": true,
"n": 1127,
"ece_raw": 0.0577,
"ece_calibrated": 0.0206,
"ece_cv_raw": 0.0825,
"ece_cv_calibrated": 0.0584,
"nll_raw": 0.5447,
"nll_calibrated": 0.52,
"threshold": 0.923792,
"coverage": 0.4765,
"selective_accuracy": 0.959,
"confident_wrong_rate": 0.0195,
"meets_min_coverage": false
}
},
"semif": {
"cuda": {
"temperature": 1.284,
"fitted_temperature": 1.284,
"accepted": true,
"n": 1127,
"ece_raw": 0.0552,
"ece_calibrated": 0.0225,
"ece_cv_raw": 0.0699,
"ece_cv_calibrated": 0.061,
"nll_raw": 0.4776,
"nll_calibrated": 0.4545,
"threshold": 0.914887,
"coverage": 0.5954,
"selective_accuracy": 0.9672,
"confident_wrong_rate": 0.0195,
"meets_min_coverage": false
}
}
}
}

72
config/frozen.json Normal file
View File

@@ -0,0 +1,72 @@
{
"frozen_at": "2026-10-07T21:53:53+00:00",
"files": {
"config/benchmark.yaml": "53546bced660a618206023f3054ab478b0cba390369b4915c60374a4ff59b8f6",
"config/calibration.json": "2918aa77d2251f60d155d3f0be8271d5b72c0945412e270344359bb1e8f7fa28",
"data/splits/MANIFEST.json": "50377ab93dbaa71aa3220b722c2270fb76ddda4f5a24763ba4ad3623a2e704ac",
"env/artifacts-manifest.json": "2cde61d21cec5086a221af988bea5dfb9a31fb4f3269511e63a23ca2b2bbfb6c",
"contracts/jev/schemas/request.schema.json": "e44e5af9798b96453b676c05b216015fd2b62c9590301adce8c7807989774d35",
"contracts/jev/schemas/response.schema.json": "008f8c2e68064b46b0f0649e654326ffd65a4eb8c080e9d23a6be4ebc44cd752",
"harness/evaluate.py": "2c696e1da8c5e06284c73adf93b842cf7e541135e78dabd9cd1751825ec2866a",
"dmb/canonical.py": "833e92490c2a34b9469e8e9aa4ee3aea6f2411ad74165a8df129ce460c2fd8d7",
"dmb/jev.py": "eb9b97bc84d65d6481b3f86ea6f242c445bde02bfb0518bed735a15b802e66c9",
"dmb/server.py": "cb8a7515337de781c90918dc2a40e499a44d6db52e6a78ae31f98fa22d415249",
"dmb/adapter.py": "361e25b990a0de345fa79663f1593acf0bc62ef9580d6dfec1e35d4942a2839d",
"adapters/laya/adapter.py": "b332c57330f24a08334b794cd933e267dfd5f82b1b073bf6213abb42e1d6d6e8",
"adapters/semif/adapter.py": "83039c3e07dc2d64e809c3f33f3187a1e2fa3d8e5b20b204652dd673a354da3c",
"adapters/gliner/adapter.py": "e499caea077353ccdc6cf458e8cb5fde6f34ef7149d463726e6b5d199f435921",
"adapters/rizzo_flow/adapter.py": "8621b36f1b970ab778ff4af6c5e7cba3a933a0b2bfe6c6861f49dfd7c819d79b"
},
"environments": {
"laya": {
"candidate": "laya",
"object": "envs/laya/20261007T151753Z.tar.gz",
"sha256": "2003611792956150ce85ecc9ea7635f9b1f8dc7280c5da507e3a303188ed11aa",
"bytes": 4308288985,
"built_at": "20261007T151753Z",
"code_rev": "5d93903",
"python": "Python 3.11.9",
"home": "/home/datascience"
},
"gliner": {
"candidate": "gliner",
"object": "envs/gliner/20261007T151810Z.tar.gz",
"sha256": "fff384c86db233995f5a9182768bef0a8f27052436a3531f455027bde1d19954",
"bytes": 4314977274,
"built_at": "20261007T151810Z",
"code_rev": "5d93903",
"python": "Python 3.11.9",
"home": "/home/datascience"
},
"semif": {
"candidate": "semif",
"object": "envs/semif/20261007T151340Z.tar.gz",
"sha256": "50b090041721d0faa626ad44ebbcfa9b5c4b37ee9f6f69da181757580a4f5065",
"bytes": 4312946412,
"built_at": "20261007T151340Z",
"code_rev": "5d93903",
"python": "Python 3.11.9",
"home": "/home/datascience"
},
"rizzo_flow": {
"candidate": "rizzo_flow",
"object": "envs/rizzo_flow/20261007T151336Z.tar.gz",
"sha256": "805376a152a984010ca838e4134a9410f9c6e12ab97a0095297f7d7ea79b61c4",
"bytes": 693207602,
"built_at": "20261007T151336Z",
"code_rev": "5d93903",
"python": "Python 3.11.9",
"home": "/home/datascience"
},
"rizzo_flow_cuda_runtime": {
"object": "runtimes/rizzo_flow/llama-b11081-linux-x64-cuda-dsjobs-20261007T165909Z.tar.gz",
"sha256": "08e03dc5ca1e64f6fd73b5a52cf0eb72727f203a15fe3bf86f79526d25ae00a9",
"dir": "llama-b11081-linux-x64-cuda-dsjobs",
"llama_commit": "161755f29e415e2c33efe906e91843c068efd664",
"cuda": "12.8",
"archs": "80;86",
"built_at": "20261007T165909Z",
"code_rev": "f322ed06"
}
}
}

View File

@@ -20,7 +20,7 @@ flowchart LR
As fases F0–F1 (infra) e F2–F3 (dados) podem andar em paralelo.
<!-- PROGRESSO:INICIO -->
**Andamento em 2026-10-07:** 54 de 78 tarefas concluídas (69%), 2 em andamento.
**Andamento em 2026-10-07:** 57 de 78 tarefas concluídas (73%), 3 em andamento.
| Fase | Concluídas | Em andamento | Pendentes |
|------|-----------|--------------|-----------|
@@ -31,11 +31,11 @@ As fases F0–F1 (infra) e F2–F3 (dados) podem andar em paralelo.
| F4 — Contrato JEV e adaptadores | 16 | 0 | 0 |
| F5 — Controle de execução | 3 | 0 | 0 |
| F6 — Piloto | 4 | 0 | 0 |
| F7 — Desenvolvimento e calibração | 0 | 0 | 4 |
| F7 — Desenvolvimento e calibração | 3 | 1 | 0 |
| F8 — Teste final | 0 | 0 | 4 |
| F9 — Métricas e análise | 0 | 0 | 8 |
| F10 — Relatório e encerramento | 0 | 0 | 4 |
| **Total** | **54** | **2** | **22** |
| **Total** | **57** | **3** | **18** |
Legenda: `[x]` concluída · `[~]` em andamento ou parcial · `[ ]` pendente.
<!-- PROGRESSO:FIM -->
@@ -183,19 +183,24 @@ Legenda: `[x]` concluída · `[~]` em andamento ou parcial · `[ ]` pendente.
## F7 — Desenvolvimento e calibração
- [ ] **59.** Executar os candidatos no conjunto de desenvolvimento, sem calibração adicional.
- [ ] **60.** Escolher os limites de confiança e as regras de abstenção só com a partição de calibração.
- [~] **59.** Executar os candidatos no conjunto de desenvolvimento, sem calibração adicional.
- [x] **60.** Escolher os limites de confiança e as regras de abstenção só com a partição de calibração.
- ↳ Abster-se significa encaminhar para desambiguação. A regra é escolhida por meta de cobertura ou de risco, definida antes. *(Q5)*
- [ ] **61.** Calibrar as probabilidades separadamente por candidato, quando aplicável. *(Q10)*
- [ ] **62.** Não alterar prompts, opções, pesos ou limiares depois da abertura do conjunto de teste final.
- ↳ `analysis/calibrate.py` → `config/calibration.json`: menor limiar com rota errada com confiança alta ≤ 2%. Cobertura na calibração: SemIf 59,5%, Rizzo Flow 47,6%, GLiNER 11,8%, Laya 5,1% (nenhum atinge os 80% do critério H2).
- [x] **61.** Calibrar as probabilidades separadamente por candidato, quando aplicável. *(Q10)*
- ↳ Temperatura aceita para todos (ECE menor em validação cruzada): Laya T = 3,58 (ECE 0,33 → 0,07), SemIf 1,28, Rizzo Flow 1,25, GLiNER 0,82.
- [x] **62.** Não alterar prompts, opções, pesos ou limiares depois da abertura do conjunto de teste final.
- ↳ Marco de congelamento: registrar os hashes da configuração, dos calibradores e dos adaptadores.
- ↳ `config/frozen.json` (tag `congelamento-d1-v1`): 15 arquivos e os 5 ambientes publicados. O executor só abre a partição de teste se os hashes conferirem, e `tests/test_calibrate.py` falha se algo congelado mudar.
## F8 — Teste final
- [ ] **63.** Executar uma rodada de acurácia no teste final com lote 1.
- [ ] **64.** Executar uma rodada de acurácia no teste final com o lote de produção definido. *(Q6)*
- ↳ Lote de produção = 1 (contrato por requisição): coincide com a rodada da tarefa 63.
- [ ] **65.** Executar uma rodada de várias decisões sobre o mesmo texto, quando esse padrão existir no caso de uso.
- ↳ Corresponde a D4 e a combinações por turno (por exemplo, D2 + D1). Medir a latência somada por turno.
- ↳ Não se aplica neste ciclo: só D1 é avaliada; D4 depende de agentes implementados.
- [ ] **66.** Repetir cada medição de desempenho depois do aquecimento, em pelo menos três execuções independentes.
## F9 — Métricas e análise

View File

@@ -11,7 +11,7 @@ As decisões do benchmark seguem um mesmo critério: preferir a **abordagem auto
| Q3 | Isolamento de rede | Aquisição fora da rede dos jobs; medições sem acesso a fontes externas | Gate de egresso, bloqueio no processo e verificação por SHA-256 |
| Q4 | Interfaces e licenças | Uma interface por candidato (abaixo); só licenças Apache-2.0 ou MIT | A aquisição lê a licença no Hub e falha fora da lista permitida |
| Q5 | Critérios de sucesso | Limite de latência fixo e não inferioridade em relação ao baseline | Avaliação automática a partir de `config/benchmark.yaml` |
| Q6 | Lote de produção | Por candidato: o maior lote com p95 dentro do limite | Varredura de lotes |
| Q6 | Lote de produção | Lote 1 (contrato por requisição, decisão turno a turno) | Vazão medida com lote 1 |
| Q7 | Dados e anotação | 100% sintéticos; anotação por três modelos generativos em rodízio | `datagen/` ([02 §4](02-desenho-experimental.md#4-dados)) |
| Q8 | Contexto no `state` | Orçamento comum de tokens; D1 usa só o enunciado atual | `dmb.canonical.fit_state` |
| Q9 | Baseline LLM | Incluído como referência, fora do ranking principal | Adaptador no mesmo contrato |
@@ -110,7 +110,7 @@ O limite comum é de **16 opções**, incluindo `sem_correspondencia`. Esse é o
## Q6 — Lote de produção
A varredura de lotes {1, 2, 4, 8, 16, 32} em GPU define, por candidato, o maior lote com p95 por decisão dentro do limite. Lote 1 é o cenário principal, porque representa o caminho síncrono do orquestrador. O lote de produção serve para reportar vazão e custo.
O contrato `POST /v1/systemone` é por requisição, e o orquestrador decide turno a turno, no caminho síncrono do usuário. Os adaptadores atendem uma requisição por vez, então **o lote de produção é 1** e a vazão por instância é medida com lote 1 (decisões por segundo = 1000 / latência média). Ganhos de vazão com lotes maiores ou com réplicas concorrentes ficam como trabalho futuro e não entram no ranking deste ciclo.
## Q7 — Dados sintéticos e anotação por modelos generativos

View File

@@ -163,6 +163,7 @@ def main():
"candidate": adapter.describe(), "precision": model_precision(adapter), "device": args.device,
"split": args.split, "examples": len(rows), "seed": args.seed, "warmup": args.warmup,
"batch_size": 1, "state_budget_tokens": args.state_budget, **guard,
"repetition": int(os.environ.get("DMB_REP", "1")),
"load_seconds": round(load_s, 2),
"warmup_latency_ms": [round(r["latency_ms"], 1) for r in rows if r["warmup"]],
"latency_ms": latency_summary([r["latency_ms"] for r in measured if r.get("pred") is not None]),

View File

@@ -0,0 +1,14 @@
# Resultados — partição `calibration`
Gerado por `infra/ds/collect.py`. Lote 1; latências sem os exemplos de aquecimento; probabilidades sem calibração.
<!-- TABELA:INICIO -->
| Candidato | Disp. | Precisão | n | Acurácia | Macro F1 | ECE (bruto) | p50 ms | p95 ms | p99 ms | Carga s | RAM pico MiB | GPU pico MiB | Erros | Truncados |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| gliner | cpu | float32 | 1127 | 54.5% | 54.2% | 0.077 | 257.1 | 493.9 | 601.4 | 20.1 | 3240 | — | 0 | 0 |
| gliner | cuda | float32 | 1127 | 54.5% | 54.2% | 0.077 | 18.7 | 31.6 | 33.5 | 21.6 | 3252 | 1783 | 0 | 0 |
| laya | cpu | float32 | 1127 | 50.5% | 52.9% | 0.330 | 162.6 | 209.8 | 269.9 | 9.3 | 2681 | — | 0 | 0 |
| laya | cuda | float32 | 1127 | 50.8% | 53.3% | 0.326 | 21.5 | 22.8 | 24.0 | 9.9 | 2787 | 1811 | 0 | 0 |
| rizzo_flow | cuda | gguf-q8_0 | 1127 | 83.3% | 86.5% | 0.058 | 112.3 | 179.3 | 183.5 | 5.3 | 4528 | 5115 | 0 | 0 |
| semif | cuda | bfloat16 | 1127 | 85.8% | 88.1% | 0.055 | 117.2 | 184.2 | 186.8 | 7.9 | 9030 | 8513 | 0 | 0 |
<!-- TABELA:FIM -->

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,58 @@
{
"candidate": {
"name": "gliner",
"model_id": "gliner@a35a0cd3b7a0",
"revision": "a35a0cd3b7a0f00f2effc576f454cd48fa98aa5f",
"adapter_version": "0.2.0",
"device": "cpu",
"context_limit": 4096,
"probabilities_source": "native"
},
"precision": "float32",
"device": "cpu",
"split": "calibration",
"examples": 1127,
"seed": 20261007,
"warmup": 5,
"batch_size": 1,
"state_budget_tokens": 512,
"process_guard": "ok",
"load_seconds": 20.09,
"warmup_latency_ms": [
305.3,
321.6,
329.3,
504.9,
161.4
],
"latency_ms": {
"n": 1122,
"p50": 257.1435335000558,
"p95": 493.89709470000014,
"p99": 601.4209299699689,
"mean": 280.12477045187006
},
"errors": {},
"truncated": 0,
"with_diagnostics": 0,
"operational_env": {},
"state_tokens_max": 125,
"rss_peak_mib": 3239.859375,
"quality": {
"n": 1127,
"errors": 0,
"accuracy": 0.5448092280390417,
"macro_f1": 0.5418404701263009,
"macro_precision": 0.6809469392064199,
"macro_recall": 0.5329382759578066
},
"calibration_raw": {
"brier": 0.6104995008128414,
"nll": 1.3204663491307895,
"ece": 0.07668260121420074
},
"oci": {
"region": "us-chicago-1",
"run_id": "20261007T212521Z-gliner-evaluate"
}
}

View File

@@ -0,0 +1,60 @@
{
"candidate": {
"name": "gliner",
"model_id": "gliner@a35a0cd3b7a0",
"revision": "a35a0cd3b7a0f00f2effc576f454cd48fa98aa5f",
"adapter_version": "0.2.0",
"device": "cuda",
"context_limit": 4096,
"probabilities_source": "native"
},
"precision": "float32",
"device": "cuda",
"split": "calibration",
"examples": 1127,
"seed": 20261007,
"warmup": 5,
"batch_size": 1,
"state_budget_tokens": 512,
"process_guard": "ok",
"load_seconds": 21.56,
"warmup_latency_ms": [
224.3,
114.1,
104.7,
271.6,
18.6
],
"latency_ms": {
"n": 1122,
"p50": 18.674051499999678,
"p95": 31.63386759999014,
"p99": 33.51271131999595,
"mean": 21.56757115775458
},
"errors": {},
"truncated": 0,
"with_diagnostics": 0,
"operational_env": {},
"state_tokens_max": 125,
"rss_peak_mib": 3251.8671875,
"gpu_mem_peak_mib": 1783.0,
"gpu_util_mean_pct": 42.40659340659341,
"quality": {
"n": 1127,
"errors": 0,
"accuracy": 0.5448092280390417,
"macro_f1": 0.5418404701263009,
"macro_precision": 0.6809469392064199,
"macro_recall": 0.5329382759578066
},
"calibration_raw": {
"brier": 0.6104993145632631,
"nll": 1.320465969739849,
"ece": 0.07668256169926013
},
"oci": {
"region": "sa-saopaulo-1",
"run_id": "20261007T214834Z-gliner-evaluate"
}
}

View File

@@ -0,0 +1,58 @@
{
"candidate": {
"name": "laya",
"model_id": "laya@1720e3e3357c",
"revision": "1720e3e3357cfe1e281542e223f8273b0890ca34",
"adapter_version": "0.2.0",
"device": "cpu",
"context_limit": 1024,
"probabilities_source": "native"
},
"precision": "float32",
"device": "cpu",
"split": "calibration",
"examples": 1127,
"seed": 20261007,
"warmup": 5,
"batch_size": 1,
"state_budget_tokens": 512,
"process_guard": "ok",
"load_seconds": 9.35,
"warmup_latency_ms": [
252.7,
284.6,
270.8,
284.0,
153.1
],
"latency_ms": {
"n": 1122,
"p50": 162.58618700001648,
"p95": 209.81496149999828,
"p99": 269.85545572001797,
"mean": 156.04856365508033
},
"errors": {},
"truncated": 0,
"with_diagnostics": 0,
"operational_env": {},
"state_tokens_max": 100,
"rss_peak_mib": 2681.41015625,
"quality": {
"n": 1127,
"errors": 0,
"accuracy": 0.5048802129547472,
"macro_f1": 0.5293731376193379,
"macro_precision": 0.5322309316552073,
"macro_recall": 0.5716537982207718
},
"calibration_raw": {
"brier": 0.7938067217353456,
"nll": 2.800574273404074,
"ece": 0.3295974367816615
},
"oci": {
"region": "us-chicago-1",
"run_id": "20261007T212448Z-laya-evaluate"
}
}

View File

@@ -0,0 +1,60 @@
{
"candidate": {
"name": "laya",
"model_id": "laya@1720e3e3357c",
"revision": "1720e3e3357cfe1e281542e223f8273b0890ca34",
"adapter_version": "0.2.0",
"device": "cuda",
"context_limit": 1024,
"probabilities_source": "native"
},
"precision": "float32",
"device": "cuda",
"split": "calibration",
"examples": 1127,
"seed": 20261007,
"warmup": 5,
"batch_size": 1,
"state_budget_tokens": 512,
"process_guard": "ok",
"load_seconds": 9.86,
"warmup_latency_ms": [
262.3,
24.2,
23.0,
23.0,
28.0
],
"latency_ms": {
"n": 1122,
"p50": 21.54373249999253,
"p95": 22.82198069998458,
"p99": 23.95628751000088,
"mean": 21.440272945632913
},
"errors": {},
"truncated": 0,
"with_diagnostics": 0,
"operational_env": {},
"state_tokens_max": 100,
"rss_peak_mib": 2786.82421875,
"gpu_mem_peak_mib": 1811.0,
"gpu_util_mean_pct": 21.651515151515152,
"quality": {
"n": 1127,
"errors": 0,
"accuracy": 0.5075421472937001,
"macro_f1": 0.5328213000411428,
"macro_precision": 0.5349830494378608,
"macro_recall": 0.5748388336100538
},
"calibration_raw": {
"brier": 0.7921588792291862,
"nll": 2.774820648363843,
"ece": 0.32625944117099553
},
"oci": {
"region": "sa-saopaulo-1",
"run_id": "20261007T214316Z-laya-evaluate"
}
}

View File

@@ -0,0 +1,60 @@
{
"candidate": {
"name": "rizzo_flow",
"model_id": "rizzo_flow@55633c8cbd2b",
"revision": "55633c8cbd2b826bd3eefdeb05310450996649df",
"adapter_version": "0.2.0",
"device": "cuda",
"context_limit": 2048,
"probabilities_source": "native"
},
"precision": "gguf-q8_0",
"device": "cuda",
"split": "calibration",
"examples": 1127,
"seed": 20261007,
"warmup": 5,
"batch_size": 1,
"state_budget_tokens": 512,
"process_guard": "ok",
"load_seconds": 5.27,
"warmup_latency_ms": [
136.3,
142.9,
153.5,
173.8,
76.4
],
"latency_ms": {
"n": 1122,
"p50": 112.3337810000038,
"p95": 179.28425529999572,
"p99": 183.46083652000314,
"mean": 124.20437254812933
},
"errors": {},
"truncated": 0,
"with_diagnostics": 0,
"operational_env": {},
"state_tokens_max": 129,
"rss_peak_mib": 4528.34375,
"gpu_mem_peak_mib": 5115.0,
"gpu_util_mean_pct": 73.34859154929578,
"quality": {
"n": 1127,
"errors": 0,
"accuracy": 0.8331854480922803,
"macro_f1": 0.8652254669700142,
"macro_precision": 0.8424194469837629,
"macro_recall": 0.9124800045182142
},
"calibration_raw": {
"brier": 0.25364558210635535,
"nll": 0.5446881448991246,
"ece": 0.057692546501372156
},
"oci": {
"region": "sa-saopaulo-1",
"run_id": "20261007T213634Z-rizzo_flow-evaluate"
}
}

View File

@@ -0,0 +1,60 @@
{
"candidate": {
"name": "semif",
"model_id": "semif@851bf6e806ef",
"revision": "851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a",
"adapter_version": "0.2.0",
"device": "cuda",
"context_limit": 8192,
"probabilities_source": "native"
},
"precision": "bfloat16",
"device": "cuda",
"split": "calibration",
"examples": 1127,
"seed": 20261007,
"warmup": 5,
"batch_size": 1,
"state_budget_tokens": 512,
"process_guard": "ok",
"load_seconds": 7.9,
"warmup_latency_ms": [
436.0,
138.5,
142.0,
178.2,
76.3
],
"latency_ms": {
"n": 1122,
"p50": 117.22612299996626,
"p95": 184.17156100000938,
"p99": 186.84284949001267,
"mean": 125.846100245989
},
"errors": {},
"truncated": 0,
"with_diagnostics": 0,
"operational_env": {},
"state_tokens_max": 101,
"rss_peak_mib": 9030.08203125,
"gpu_mem_peak_mib": 8513.0,
"gpu_util_mean_pct": 87.37113402061856,
"quality": {
"n": 1127,
"errors": 0,
"accuracy": 0.8580301685891748,
"macro_f1": 0.8813620791280374,
"macro_precision": 0.8798441924161988,
"macro_recall": 0.8952594286017203
},
"calibration_raw": {
"brier": 0.2230350259655119,
"nll": 0.47760006324176385,
"ece": 0.05521030938135974
},
"oci": {
"region": "sa-saopaulo-1",
"run_id": "20261007T212831Z-semif-evaluate"
}
}