Download project-docs/v02.md from enzoferracini/patchinsight-bertimbau-ptbr: direct link, hf CLI and curl.
- Browser
- Download file 11.6 kB
-
https://huggingface.co/enzoferracini/patchinsight-bertimbau-ptbr/resolve/main/project-docs/v02.md
- Command line
-
hf download hf://enzoferracini/patchinsight-bertimbau-ptbr/project-docs/v02.md
-
curl -L -o v02.md https://huggingface.co/enzoferracini/patchinsight-bertimbau-ptbr/resolve/main/project-docs/v02.md
PatchInsight 0.2 — avaliação ampliada e inferência local
A v0.2 avalia os checkpoints da v0.1 em um novo conjunto exploratório, adiciona métricas probabilísticas, calibração experimental, inferência em lote, Action–Method e uma demo local. Não houve novo fine-tuning nem alteração dos pesos, dados congelados ou resultados finais da v0.1. A versão do software é 0.2.0; o checkpoint continua identificado como 0.1.0.
Resultado que muda a interpretação
| Conjunto / método | Macro-F1 | Exact match | AP macro | Brier ↓ | Log loss ↓ |
|---|---|---|---|---|---|
| Original v0.1 — regressão | 0,9888 | 0,9333 | 1,0000 | 0,0089 | 0,0297 |
| Original v0.1 — BERT ajustado | 0,9911 | 0,9500 | 1,0000 | 0,0383 | 0,1941 |
| Novo teste — heurísticas | 0,6910 | 0,3056 | 0,7441 | 0,1833 | 2,9550 |
| Novo teste — regressão | 0,6196 | 0,3056 | 0,8401 | 0,1601 | 0,8540 |
| Novo teste — BERT ajustado | 0,5584 | 0,2500 | 0,7768 | 0,1648 | 0,5053 |
| Novo teste — regressão com temperatura | 0,6196 | 0,3056 | 0,8401 | 0,1355 | 0,4292 |
| Novo teste — BERT com temperatura | 0,5584 | 0,2500 | 0,7768 | 0,1647 | 0,5051 |
A ordenação depende da pergunta. No novo teste, heurísticas têm maior macro-F1 entre os três métodos originais; a regressão ordena melhor os positivos por AP. Após temperatura, a regressão tem menor Brier/log loss entre as variantes avaliadas. O resultado original próximo do teto não se sustenta neste desafio. Os dois testes têm composições distintas; a queda não mede desempenho em currículos reais nem permite atribuir toda a diferença a um único fator.
O ganho macro-F1 de BERT menos regressão no novo teste foi −0,0612. Bootstrap pareado de 34 origens, 1.000 reamostragens, seed 42: IC percentil 95% [−0,1642; 0,0372]. A amostra continua pequena e sintética; não há evidência robusta de superioridade do BERT.
Brier e log loss avaliam previsões probabilísticas e combinam calibração e capacidade discriminativa. Confiabilidade é examinada também em cinco bins por rótulo, com contagens explícitas. Não há alegação de probabilidades externamente calibradas. A AP implementada é Average Precision, não integração trapezoidal genericamente chamada de PR-AUC. ROC-AUC e MCC complementam a comparação; ROC-AUC/AP indefinidas ficam null. Log loss usa clipping em 1e-7 para todos os métodos, inclusive decisões heurísticas binárias que não são probabilidades validadas.
Dados e revisão solicitada
O próprio assistente escreveu, anotou e revisou os 72 textos, com justificativa semântica por registro antes dos scores. Sem revisão humana, anotador independente, cegamento ou concordância interavaliadores. O nome exato do modelo gerador não foi inferido. Não há currículos reais nem dados pessoais.
São 36 textos e 34 origens por split: desenvolvimento e teste. Cada split tem 32 descrições livres e dois pares com/sem marcadores. Temas e formatos ainda se repetem; o teste não é semanticamente independente da autoria do desenvolvimento. As tags cobrem versões, medidas por extenso, futuro, negação, perguntas, contrafactuais, resultados qualitativos e escrita informal.
Fontes, textos, rótulos, gerador determinístico e protocolo foram congelados
antes dos scores. Dados e artigo: CC BY 4.0. A nova suite fica em data/v02,
separada dos splits de treinamento da v0.1. Detalhes: protocolo
e revisão por IA.
Calibração e abstenção
Somente desenvolvimento ajusta uma temperatura global por modelo na grade predefinida. BERT: T=0,965936; regressão: T=4,0, o extremo superior da grade. Esse extremo é relatado como limitação; a grade não foi ampliada após os scores. A temperatura não muda as decisões no limiar 0,5, por isso F1 e Hamming são iguais antes/depois. Os scores podem mudar e afetar probabilidades e cobertura.
Nenhum cutoff predefinido conseguiu erro observado de até 5% mantendo pelo menos 50% das decisões em desenvolvimento. As políticas registram cutoff null: a abstenção por confiança permanece desativada. A infraestrutura aceita abstenção quando um experimento futuro atender a seus critérios. Truncamento continua marcando negativos como unknown independentemente disso.
As políticas são opt-in, ligadas por hash ao bundle e identificadas nos diagnósticos. Não se tornam padrão. O novo teste usa as políticas congeladas, sem reestimá-las. Curvas de risco/cobertura de teste são descritivas; não escolher um cutoff a partir delas. Nenhum score é nota de escrita ou competência.
Reproduzir a avaliação
Com a stack ML instalada pelo lock e os artefatos originais em artifacts/run-42:
python3 scripts/build_v02_suite.py
uv run --frozen --extra ml python -m patchinsight.research historical
uv run --frozen --extra ml python -m patchinsight.research development --device cuda
uv run --frozen --extra ml python -m patchinsight.research test --device cuda
uv run --frozen --extra ml python -m patchinsight.research latency --device cuda
Esses relatórios já existem e os comandos recusam sobrescrita. Para uma
reprodução, acrescente --root-output artifacts/v02-reproduction a cada comando,
usando a mesma pasta em desenvolvimento e teste. CPU também é suportada.
O encoder base é carregado apenas do cache local, com revisão fixa; preparar o
cache pelo treino/reprodução original antes de desconectar a rede. --run
seleciona a pasta com model/ e frozen.json; não basta baixar apenas o BERT.
Relatórios: histórico posterior, desenvolvimento, novo teste, erros. Os JSON incluem versões, ambiente, hashes, métricas por componente, recortes, risco/cobertura e confiabilidade. Macro-F1 em recortes com rótulos sem positivos usa zero_division=0: pode ser zero mesmo com previsões negativas corretas. Comparar esses recortes também por Hamming, suportes e FP/FN, não só macro-F1.
Inferência em lote
printf '%s\n' '{"id":"a","text":"Revisei as consultas com SQL."}' \
'{"id":"b","text":"OAuth 2.0"}' | \
uv run --frozen --extra ml patchinsight batch --model artifacts/model --batch-size 8
JSONL de entrada com text e id opcional (string até 200 caracteres). Um envelope por linha de saída conserva ordem, número de linha, id e prediction ou error. O modelo é carregado uma vez e os itens válidos são inferidos juntos. Linhas inválidas não impedem os demais itens. Exit 0: todos válidos; 1: erros por linha; 2: erro de configuração, limite global ou inferência.
Batch de 1–64, máximo padrão 10.000 itens; --max-items ajusta esse total.
Entradas excedendo 100.000 caracteres por linha encerram o fluxo. Textos seguem
o limite de 20.000 caracteres e as regras de truncamento do contrato.
--timeout padrão 300 segundos é cooperativo: verificado entre lotes após
leitura. Não interrompe uma inferência ativa nem uma leitura stdin bloqueada.
Saída anterior continua válida em interrupções. --input arquivo.jsonl lê arquivo.
Demo local
uv run --frozen --extra ml patchinsight serve --model artifacts/model --device cuda
Abrir http://127.0.0.1:8765. Texto livre, exemplos editáveis, cinco componentes,
combinações, scores, truncamento e JSON versionado. A inferência usa o checkpoint
real. --backend heuristic seleciona explicitamente regras. Não há fallback.
Captura da demo verificada no Firefox.
A interface e o endpoint POST /v1/analyze ficam restritos a loopback; não é um
serviço publicado. O endpoint aceita apenas {"text":"..."}. Modelo carregado
uma vez, inferência serializada, máximo de 100.000 bytes por body, sem persistir
textos ou registrar requests. /healthz informa backend pronto e política.
Host/origem são limitados à demo local. CPU: omitir --device cuda.
Calibração experimental opt-in, com o bundle usado no experimento:
uv run --frozen --extra ml patchinsight serve --model artifacts/run-42/model \
--policy reports/v02/development/bert_finetuned-policy.json
Uma política de outro método ou bundle é rejeitada. A política fornecida tem abstenção desativada por não cumprir os critérios em desenvolvimento.
Action–Method exige action e method presentes; qualquer unknown impede o match. Assim como as demais estruturas, isso indica coocorrência, não vínculo causal. Schema e regras: 0.2.0. Não usar um validador JSON 0.1.0 para as novas saídas.
Escopo concluído e continuidade
SHOULD atendidos nesta rodada: testes adversariais (ML-15), experimento de calibração (ML-12), inferência em lote (ENG-06), mecanismo de incerteza com critério explícito (ENG-08), Action–Method (STR-06) e demo (PUB-06). A meta empírica de abstenção não foi atingida. Tracking continua em arquivos locais; não foi adicionada infraestrutura de experimentos nem contratada computação.
A revisão permanece por IA conforme solicitado. Spans, task/challenge como novos rótulos, CAR, vagueza/especificidade supervisionadas e inglês exigem novos dados e avaliações. A próxima rodada pode trabalhar com escrita livre e novas fontes ou revisão independente, mantendo um novo teste sem consulta durante ajustes.
Medição local de inferência
RTX A1000 6 GB, CUDA, revisão fixa dos mesmos encoders; três lotes de aquecimento e 12 repetições por método/tamanho. Inclui tokenização, modelo e scores; exclui JSON, regras e I/O. Inferências foram medidas sem inicialização concorrente de outro modelo na GPU. Uma primeira medição com inicialização concorrente da demo foi descartada e mantida somente em artifacts, fora do relatório publicado.
| Método | Lote 1 p50 / p95 (ms) | Lote 8 p50 / p95 (ms) | Textos/s no lote 8 |
|---|---|---|---|
| Heurísticas | 0,08 / 0,08 | 1,48 / 1,81 | 5.156 |
| Regressão | 5,44 / 5,56 | 15,43 / 16,41 | 514 |
| BERT ajustado | 4,66 / 4,85 | 14,88 / 15,57 | 537 |
São medições pequenas sobre textos de desenvolvimento, não uma promessa de latência para qualquer entrada. O tamanho de lote altera também a composição dos textos, por isso não isola seu efeito. O JSON registra pico de memória CUDA do processo com ambos os encoders residentes, não consumo isolado por método. Memória CPU não foi medida. Evidência: latência.
Verificações concluídas
25 testes passaram com a stack ML e checkpoint real. Em ambiente separado sem
ML, 16 passaram e três testes dependentes de ML foram explicitamente pulados.
Wheel instalado em outra virtualenv: HTML, comparação JSON e inferência
heurística funcionaram sem dependências de ML. Lock conferido com uv lock --check.
Firefox headless validou inferência BERT, exemplos, erro de entrada vazia, ordenação por métrica, troca de conjunto e ausência de overflow horizontal em tela estreita. A imagem Docker 0.2.0 carregou o modelo real e inferiu sem rede, com filesystem somente leitura e usuário 65532. A imagem anterior não foi retagueada. A verificação compara os dados originais e relatórios finais com a tag v0.1.0, além de conferir o hash dos pesos preservados.
Registro: verification.json. Binários e logs
em artifacts/ são evidências locais, não foram enviados a registry, GitHub ou
Hub. Screenshot incluída na documentação. O pacote de fontes usa allowlist e
exclui PDF, credenciais e docs.md privado.