Executor de avaliação, métricas e .gitignore para metadados de modelos

- harness/evaluate.py: partição congelada com SHA-256, amostra com seed,
  lote 1, truncamento comum, contagem de tokens, latência (sem aquecimento),
  pico de RAM e GPU; teste bloqueado até o congelamento da configuração.
- analysis/metrics.py: acurácia, macro F1, Brier, NLL, ECE, acurácia seletiva.
- Diagnósticos por resposta (metadata.diagnostics); Laya informa opções
  colapsadas pelo orçamento de cabeçalho; head_max_len via DMB_LAYA_HEAD_MAX_LEN.
- infra/ds/collect.py e gpu_queue --env para pilotos e rodadas.
- .gitignore: de models/ só metadados (cards, configs, licenças, índices);
  pesos, tokenizadores grandes, runtimes, fontes clonados e caches ignorados.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Marcos Lohmann
2026-10-07 15:06:57 -03:00
parent 344d1582fe
commit 328ccd1c2e
26 changed files with 5369 additions and 6 deletions

View File

@@ -140,6 +140,8 @@ def main():
try:
resp = systemone(adapter, request)
ans = resp["answers"][ex["task"]]
if resp["metadata"].get("diagnostics"):
row["diagnostics"] = resp["metadata"]["diagnostics"]
row.update(pred=ans["choice"], probabilities=ans["probabilities"],
confidence=ans.get("confidence"), input_tokens=resp["usage"]["input_tokens"],
latency_ms=resp["metadata"]["latency_ms"])
@@ -162,6 +164,8 @@ def main():
"latency_ms": latency_summary([r["latency_ms"] for r in measured if r.get("pred") is not None]),
"errors": {k: sum(r.get("error") == k for r in rows) for k in {r.get("error") for r in rows} if k},
"truncated": sum(r["truncated"] for r in rows),
"with_diagnostics": sum("diagnostics" in r for r in rows),
"operational_env": {k: v for k, v in os.environ.items() if k.startswith("DMB_LAYA_")},
"state_tokens_max": max((r["state_tokens"] or 0) for r in rows),
"rss_peak_mib": rss_peak_mib(), **gpu.summary(),
"quality": {k: v for k, v in classification(rows).items() if k != "per_label"},