Anvil
No arProjeto pessoal - fine-tuning QLoRA completo do Llama 3.1 8B para extração de contratos sintéticos, com 100% de JSON válido, custo medido de $58,46 e breakeven de 0,80M tokens/mês.
O que é
Um artefato de engenharia focado, não um SaaS. O que foi entregue:
- Pipeline de dataset - gerou 4.000 NDAs, MSAs e licenças sintéticos via GPT-4o com validação estrita de JSON schema; curou 3.707 registros aceitos; dividiu em 2.966 exemplos de treino, 371 de validação e 370 de teste.
- Treinamento - QLoRA (NF4 + LoRA, rank 16, alpha 32, targets
all_linear) no Llama 3.1 8B via Unsloth em um único RunPod A40. O run pago completou 558 passos de otimização em 8.259 segundos, cerca de 2h18m. - Avaliação - modelos base, fine-tuned e GPT-4o sob o mesmo protocolo, rodando sobre o mesmo split de teste com 370 exemplos e pontuados em validade de JSON e qualidade de extração por campo.
- Modelo de custo - custo medido do run de treinamento (API de síntese, tempo de GPU, avaliação com GPT-4o) mais um modelo de $/1M tokens self-hosted e volume de breakeven contra continuar chamando o GPT-4o.
- CI e ensaio - o pipeline completo pode ser ensaiado em um M1 contra fixtures antes de alugar uma GPU; o CI cobre parsing, schema, custo, gráficos, preflight, configuração de treinamento e utilitários de avaliação.
Por que construí
Para provar que consigo fazer fine-tuning e avaliação de um modelo aberto de ponta a ponta, com uma justificativa de custo defensável, em vez de só chamar uma API hospedada. A pergunta útil é se o fine-tuning fecha a lacuna para um modelo de fronteira em uma tarefa específica de saída estruturada, e quanto tempo leva para o custo único de treinamento se pagar.
O Anvil responde isso com números vinculados a artefatos concretos: as contagens do dataset, o log de treinamento, o JSON de avaliação, as imagens dos gráficos e o relatório de custo são todos reproduzíveis a partir do workflow do repositório.
Resultado medido
O modelo base falhou no gate estrito de schema: 0% de JSON válido nos 370 casos do split de teste. O adapter fine-tuned produziu 100% de JSON válido, levemente acima dos 99,73% de validade do GPT-4o nos mesmos casos.
No score de extração por campo, o adapter fine-tuned atingiu macro score de 0,899 contra 0,881 do GPT-4o. A tarefa é específica e sintética, então trato isso como evidência de que o adapter aprendeu o schema alvo e a distribuição dos campos — não como uma afirmação ampla de que supera o GPT-4o.
Como funciona
Síntese de dados com guard anti-contaminação
O conjunto de treinamento é composto por contratos sintéticos gerados sob um JSON schema estrito, então cada exemplo tem uma extração ground-truth conhecida. Antes do treinamento, um guard faz hash do texto normalizado de cada exemplo e aborta o run se algum documento aparecer em mais de um split. Isso elimina a forma mais comum de um benchmark de fine-tuning inflar silenciosamente seus próprios resultados.
QLoRA em um único A40, ensaiado no M1
O mesmo orquestrador que roda o job pago no RunPod também roda em modo dry-run em um MacBook M1 base contra fixtures do repositório, de ponta a ponta (data-smoke -> train-smoke -> eval-smoke -> cost), sem nenhum gasto com API. Esse ensaio precisa passar antes de alugar uma GPU paga.
O run pago usou um RunPod A40 a $0,44/hr, treinou por 3 épocas e terminou com train loss de 0,346 e eval loss de 0,328.
Avaliação tripla com gate de validade de JSON
Os modelos base, fine-tuned e GPT-4o respondem aos mesmos prompts. A validade é o gate: um output que não passa no schema não recebe crédito em nenhum campo, porque um número de F1 sobre JSON inválido não significa nada. É aqui que o modelo base colapsa e o fine-tuning se torna útil.
Custo e breakeven
O run completo custou $58,46: $54,00 para síntese, $1,76 de tempo de GPU no A40 e $2,70 para avaliação com GPT-4o. A linha de inferência self-hosted é intencionalmente rotulada como premissa configurada de serving no A40, não como um benchmark de serving medido neste projeto.
Com essas premissas, o custo único do run atinge breakeven frente ao GPT-4o em 0,80M tokens por mês ao longo de 12 meses.
Status
Concluído. O milestone principal do Anvil está completo: geração de dados paga, treinamento, avaliação, análise de custo, gráficos e documentação estão entregues. Intencionalmente não incluo publicação no Hugging Face nem um Space de demo no escopo.
Perguntas
O que é o Anvil?
Anvil é um artefato completo de fine-tuning e avaliação para extração estruturada de contratos. Ele sintetiza contratos com GPT-4o, cura e divide o dataset, faz fine-tuning do Llama 3.1 8B com QLoRA em um único A40, e compara os modelos base, fine-tuned e GPT-4o no mesmo split de teste.
O que o run pago provou?
O adapter fine-tuned atingiu 100% de JSON válido em 370 contratos de teste, enquanto o modelo base produziu 0% de JSON válido. Ele também superou levemente o GPT-4o no macro field score: 0,899 contra 0,881, neste benchmark sintético de extração.
Como a metodologia é mantida honesta?
Um guard anti-contaminação faz hash do texto normalizado de cada contrato e aborta o run se algum exemplo aparecer em mais de um split. A validade do JSON é pré-requisito para qualquer pontuação — output que não passa no schema estrito não recebe crédito em nenhum campo. O modelo de custo separa o custo medido do run das premissas configuradas de throughput de serving no A40.
Como o Anvil se relaciona com o Forge?
O Forge responde o quão barata e rápida é a inferência self-hosted quando utilização, latência e quantização são levados em conta. O Anvil responde se um fine-tuning QLoRA pequeno consegue fechar a lacuna para um modelo de fronteira em uma tarefa estruturada e específica.