Kev-27B
Resumo do modelo
O Kev-27B é um modelo de decisão. Lê um documento (o estado) e um conjunto de perguntas tipadas sobre ele, e devolve uma distribuição de probabilidade calibrada sobre as opções fornecidas com cada pergunta, numa única passagem direta e sem gerar texto. Destina-se a programadores que classificam, encaminham, triam ou verificam documentos até 64k tokens e que precisam de probabilidades que possam ser usadas com limiares, por exemplo para enviar casos incertos para revisão humana. Implementa a API pública System One da TypeSafe (POST /v1/systemone), por isso o SDK da TypeSafe funciona com ele sem alterações. Esta ficha descreve a versão 2, lançada em 2026-09-30: um ajuste fino de pesos completos do Qwen3.8-27B combinado por média com a versão 1.
Detalhes do modelo
| Programador | Jared Palmer (github.com/jaredpalmer/kev) |
| Tipo de modelo | Modelo de decisão: um backbone de modelo de linguagem causal corrido apenas em pré-preenchimento, com uma cabeça de ponteiro sobre as opções |
| Backbone | Qwen/Qwen3.8-27B (revisão 1d4bf0f2, a versão pós-treinada da Qwen): 64 camadas, 48 Gated DeltaNet (atenção linear) e 16 de atenção completa, tamanho oculto 5,120; todos os pesos do backbone afinados |
| Cabeça | Cabeça de ponteiro: duas projeções 5,120 → 256 avaliam o token de fecho de cada opção contra o token final da pergunta; uma softmax dá as probabilidades |
| Parâmetros | 25.6B no backbone (a torre de visão, a cabeça de LM e as camadas de predição de múltiplos tokens não são carregadas), 2.6M na cabeça |
| Precisão | bf16 (um checkpoint de 51.3 GB); servido em bf16 |
| Contexto | São servidos estados até 65,536 tokens, mais pelo menos 8,192 tokens por pergunta. Os estados de treino eram no máximo 32,768 tokens. |
| Comprimento de contexto validado | 65,536 tokens (vê Documentos longos) |
| Calibração | Uma temperatura, T = 1.32, guardada em head.pt e aplicada no momento do carregamento |
| Idiomas | Inglês |
| Licença | Apache-2.0 (pesos e cabeça); o modelo base é Apache-2.0 |
| Versão | v2 (Kev 1.0), lançado em 2026-09-30 em main de jaredpalmer/kev-27b |
| Versão anterior | v1, um adaptador LoRA de rank 16 sobre a mesma base (T = 1.38), na tag v1-lora; a sua ficha é o README nessa tag |
Entrada. Um estado (texto, ou um objeto ou array JSON renderizado como texto etiquetado) e qualquer número de perguntas nomeadas, cada uma de um de três tipos:
| Tipo | Opções | Saída |
|---|---|---|
choice |
1–255 opções nomeadas, cada uma com uma descrição opcional | uma probabilidade por opção, a opção mais provável e uma confiança |
score |
1–255 níveis ordenados | uma probabilidade por nível e o índice de nível esperado |
noul |
sim / não, com descrições opcionais | a probabilidade de sim |
Cada pergunta é respondida como a sua própria linha que continua a partir do estado partilhado, por isso as perguntas não se podem influenciar mutuamente; o estado é calculado uma vez e colocado em cache.
Utilizações previstas
- Decisões tipadas sobre documentos: classificação, encaminhamento, triagem, escolhas de extração, verificações de política e elegibilidade, e avaliação de uma resposta proposta contra critérios indicados.
- Fluxos de trabalho que agem com base na confiança: automatizar os casos com confiança e pôr o resto em fila, com os limiares fixados numa amostra etiquetada da carga de trabalho do próprio utilizador.
- Um substituto auto-alojado e imediato para um endpoint System One.
Utilizações fora do âmbito
- Geração de texto, conversa, resumo ou resposta a perguntas abertas. O modelo apenas pontua as opções que lhe são dadas.
- Decisões totalmente automatizadas com consequências legais, médicas, financeiras, laborais ou semelhantes para pessoas, sem revisão humana.
- Perguntas cuja resposta depende de factos que não estão no estado e não são conhecimento geral (o modelo não consegue procurar nada), e exames com muito conhecimento (vê Limitações).
- Estados com mais de 65,536 tokens, idiomas diferentes do inglês e hardware menor do que uma GPU da classe dos 80 GB ou um Mac com cerca de 96 GB de memória (vê Limitações).
Como usar
Serve-o com o repositório do Kev numa GPU B200, H200 ou H100 80 GB. Os pesos ocupam 51 GB e o servidor cerca de 65.5 GB residentes; um estado de 64k tokens atingiu um pico de 87.1 GB numa H200 e um estado de 32k tokens 78.7 GB, por isso os estados mais longos precisam de mais de 80 GB.
git clone https://github.com/jaredpalmer/kev.git && cd kev && uv sync --extra serve
uv run --extra serve python -m kev.serve --run jaredpalmer/kev-27b --port 8008 # v2 (this card)
uv run --extra serve python -m kev.serve --run jaredpalmer/kev-27b@v1-lora --port 8008 # v1
Em Apple Silicon o mesmo comando serve através do MLX (escolhido automaticamente), carregando os pesos bf16 completos tal como estão guardados, sem nada fundido. Espera-se que este percurso funcione num Mac de 96–128 GB, mas ainda não foi corrido neste tamanho (vê Limitações).
from typesafe_sdk import Choice, Noul, TypeSafeClient
client = TypeSafeClient(api_key="local", base_url="http://127.0.0.1:8008", model="kev-latest")
response = client.system_one(
state="I was charged twice for order 1182. Please refund one of the charges.",
questions={
"team": Choice(instructions="Which team should handle this?",
criteria={"billing": "Charges and refunds", "shipping": "Deliveries", "returns": "Exchanges"}),
"urgent": Noul(instructions="Does this need a reply today?"),
},
)
print(response.choices["team"].choice, response.nouls["urgent"].noul)
A temperatura calibrada é aplicada por predefinição; KEV_TEMPERATURE=1.0 devolve as probabilidades em bruto. O servidor usa bf16, kernels DeltaNet fundidos e grafos CUDA; KEV_DTYPE=fp32 seleciona o caminho exato usado para avaliação.
Dados de treino
Uma época sobre um corpus privado de 145,840 registos (337,130 perguntas) com estados de no máximo 32,768 tokens. Só o seu manifesto é público (evals/sft-v2-r22/manifest.json no repositório GitHub).
| Componente | Registos | Conteúdo e etiquetas |
|---|---|---|
| Corpus do Kev | 78,786 | O conjunto de treino do Kev-27B v1 (dez conjuntos de dados públicos de classificação, registos gerados de política e regras, casos de aritmética de datas e prova em falta, estados longos com factos enterrados); as partições de treino das suites de skills (hard-v1), ferramentas de desenvolvimento (devtools-v1) e reclamações de consumidores (documents-v1) do Kev; 24 conjuntos de dados públicos limitados a 500 registos cada; sete famílias geradas (documentos longos, encaminhamento de ferramentas, recuperação, intenção, avaliação por rubrica, abstenção, raciocínio numérico) |
| Famílias de tarefas licenciadas | 24,000 | 119 famílias de tarefas de uma coleção multitarefa pública, com licenças que permitem uso comercial e etiquetas nativas; a lista de famílias não é publicada |
| Estados longos | 3,200 | Estados do corpus do Kev incorporados em documentos de 8k–32k tokens; etiquetas herdadas exatamente |
| Documentos longos | 7,617 | Documentos montados por código, etiquetas calculadas por código |
| Decisões fora da distribuição | 7,312 | Decisões geradas em domínios variados |
| Tom | 7,544 | Pares mínimos do mesmo texto escrito calmo, frustrado ou zangado |
| Injeção de prompt | 2,699 | Reconhecer injeção de prompt indireta (defensivo) |
| Sessões de agentes | 4,875 | Perguntas sobre registos de sessões de agentes gerados por código |
| PII | 4,152 | Classificar dados pessoais inseridos por código (todos fictícios) |
| Fundamentação | 5,655 | Se uma afirmação é sustentada por um documento |
Fontes e etiquetas. Os conjuntos de dados públicos estão listados nos metadados desta ficha; duas fontes de ferramentas de desenvolvimento, o CodeReviewer e o FlakeFlagger, vêm do Zenodo, e os diffs do CodeReviewer só são mantidos de projetos com licenças permissivas. O texto e as etiquetas gerados vêm de código ou de modelos de pesos abertos (GLM-5.3, DeepSeek-V4-Pro, Inkling, Mistral Large 3, gpt-oss-120b, MiMo-V2.6-Pro). As etiquetas de reclamações de consumidores vêm de modelos de pesos abertos, filtradas por juízes de modelo fechado e adjudicação. Não foi usada nenhuma saída do Jev (o modelo de decisão alojado da TypeSafe).
Licenças. Quatro dos conjuntos de dados públicos limitados são share-alike: ARC (CC-BY-SA-4.0), HotpotQA (CC-BY-SA-4.0), Natural Questions (CC-BY-SA-3.0) e SNLI (CC-BY-SA-4.0); os outros são CC-BY-4.0, MIT ou Apache-2.0. As narrativas de reclamações do CFPB são obras do governo dos EUA. A licença do GLM-5.3 é do estilo MIT com uma condição sobre operadores muito grandes de modelo como serviço. As licenças, revisões e atribuições por fonte ficam registadas nos manifestos dos componentes.
Triagem de contaminação. Antes do treino, cada registo foi triado contra 102 partições de avaliação (76,549 itens de referência): cada suite congelada do Kev, o conjunto de avaliação privado, os itens públicos do JevBench e as suites apenas de avaliação abaixo. Um registo foi removido por correspondência exata de cadeia normalizada, semelhança de Jaccard de 8-gramas de palavras acima de 0.2, ou contenção de pelo menos 0.5; foram removidos 6,388 registos de treino.
Procedimento de treino
- Ajuste fino de pesos completos. Uma época a partir do
Qwen/Qwen3.8-27Bem 8 GPUs NVIDIA H200 (FSDP2). AdamW (β 0.9 / 0.999, decaimento de peso 0.01) com pesos mestres e momentos em fp32 sobre um backbone bf16; taxa de aprendizagem 2e-6 para o backbone e 1e-4 para a cabeça, agenda de ciclo único com 10 % de aquecimento; norma do gradiente cortada em 1.0; 128 registos por passo do otimizador (8 por GPU, 2 passos de acumulação), 1,140 passos; semente 0. A perda é a entropia cruzada sobre as opções de cada pergunta (alvos suaves onde os dados os têm). A ordem das opções é baralhada e são inseridos ao acaso opções “nenhuma das anteriores” e distratores. Um quarto dos registos choice com estados de no máximo 8,192 tokens também produz um par mínimo: a pergunta com uma opção “nenhuma das anteriores”, uma vez com a opção correta presente e outra com ela removida. Cada estado é corrido uma vez e as suas perguntas ramificam a partir dele. - Média de pesos. Cada tensor do backbone é 0.85 × o peso afinado + 0.15 × o peso da v1 (o adaptador LoRA da v1 fundido na base em fp32), calculado em fp32 e arredondado uma vez para bf16. A cabeça de ponteiro do modelo afinado é mantida. A razão foi escolhida entre seis misturas (0.85 / 0.70 / 0.50, com qualquer das cabeças) em dados de desenvolvimento.
- Calibração. Uma única temperatura, T = 1.32, que minimiza a log-verosimilhança negativa em 648 perguntas de conjuntos de dados reservados em que nenhum dos pais foi treinado: 448 da partição de calibração do transfer-r3 (seis conjuntos de dados públicos, QNLI, SciQ, TweetEval-offensive, PAWS, MMLU e Emotion, mais duas famílias reservadas de registos de política gerados) e 200 perguntas MMLU-Pro (transfer-v9 development). Não foi usada nenhuma partição de qualquer corpus de treino, e uma verificação não encontrou sobreposição com os dados de treino.
Avaliação
Metodologia. Cada comparação é contra o Kev-27B v1 em itens idênticos, cada modelo à sua própria temperatura de serviço. As partições de teste foram lidas uma vez para este checkpoint; o teste transfer-v4 está bloqueado (lido uma vez por candidato) e foi julgado contra um nível fixado de antemão (precisão ≥ 0.886, Brier ≤ 0.165). Os intervalos são bootstraps emparelhados de 95 % que reamostram registos inteiros (2,000 reamostragens), por isso as perguntas que partilham um estado movem-se em conjunto. As diferenças são em pontos percentuais (pp). As suites:
- breadth-v1: 14 conjuntos de dados públicos reservados em cinco áreas (conhecimento, linguagem, recuperação, ferramentas, artes), nunca treinados.
- tasksource-heldout-v1: 24 famílias de tarefas inteiras da mesma coleção multitarefa que o componente licenciado, reservadas do treino.
- hard-v1: registos de skills etiquetados programaticamente (políticas longas, compromissos, probabilidade, vários saltos, datas e números, avaliação, abstenção); a partição de teste reserva templates de geradores treinados.
- devtools-v1: decisões de ferramentas de desenvolvimento de fontes públicas com licenças verificadas (revisão de código, mensagens de commit, segurança, testes instáveis).
- documents-v1 / documents-v2: narrativas de reclamações de finanças pessoais dos EUA (CFPB); a v2 é um conjunto de teste reservado privado.
- transfer-v4: decisões fora da distribuição de seis fontes públicas nunca treinadas mais estruturas de política reservadas.
- longdoc-v1: contratos comerciais CUAD até 64k tokens, e conjuntos de acordos gerados.
Os painéis de destaque excluem itens que uma auditoria de etiquetas, concluída antes de este checkpoint ser construído, considerou sem fundamento¹; cada exclusão remove as mesmas linhas dos dois modelos.
Resultados contra a v1 (partições de teste).
| Painel (perguntas) | Kev-27B v2 | Kev-27B v1 | Δ [IC 95 %] |
|---|---|---|---|
| Conjuntos de dados públicos reservados, breadth-v1, 10 conjuntos (2,489) | 0.832 | 0.820 | +1.2 [+0.3, +2.2] |
| Famílias de tarefas reservadas, tasksource-heldout-v1, 17 famílias (2,024) | 0.795 | 0.743 | +5.3 [+3.7, +6.8] |
| Skills, ferramentas de desenvolvimento e documentos, agrupados (2,795) | 0.889 | 0.800 | +8.9 [+7.5, +10.3] |
| hard-v1 (1,088) | 0.918 | 0.749 | +16.9 [+14.2, +19.8] |
| devtools-v1, fontes auditadas (771) | 0.825 | 0.789 | +3.6 [+1.3, +5.9] |
| documents-v1 (936) | 0.908 | 0.869 | +4.0 [+2.1, +5.9] |
| documents-v2, reservado privado (953) | 0.921 | 0.881 | +4.0 [+2.0, +6.1] |
| breadth-v1, todos os 14 conjuntos (3,089) | 0.757 | 0.748 | +0.8 [−0.1, +1.8] |
| Fora da distribuição, transfer-v4 test bloqueado (656): precisão | 0.8887 | 0.8963 | −0.8 [−2.0, +0.5] |
| Fora da distribuição, transfer-v4 test bloqueado: Brier / cobertura a ≤ 5 % de erro | 0.154 / 0.875 | 0.160 / 0.835 | – |
Comparação com outros modelos de decisão no breadth-v1 test (todos os 14 conjuntos), avaliados com o índice corrigido para o acaso do Decision Index 0.2 da comunidade (por conjunto de dados (pontuação − acaso) / (1 − acaso), com média dentro de cada área e depois 100 × a média das cinco áreas). O Jev foi consultado através do Vercel AI Gateway e o AutoJev-27B (denis-pplx/autojev-27b, um ajuste fino de pesos completos da mesma base) através do seu próprio servidor, uma vez cada, nos mesmos itens.
| Kev-27B v2 | Kev-27B v1 | Jev | AutoJev-27B | |
|---|---|---|---|---|
| Índice [IC 95 %] | 52.3 [49.2, 55.4] | 50.2 [47.0, 53.2] | 54.0 [51.2, 57.0] | 50.0 [47.0, 53.3] |
Contra a v1, a diferença do índice é +2.1 [−0.4, +4.6]. Não foi calculado nenhum intervalo emparelhado contra o Jev.
Documentos longos (contratos CUAD no longdoc-v1 test, precisão / ECE por comprimento do estado em tokens):
| Comprimento do estado (perguntas) | Kev-27B v2 | Kev-27B v1 |
|---|---|---|
| menos de 8k (867) | 0.874 / 0.059 | 0.900 / 0.025 |
| 8k–16k (443) | 0.880 / 0.052 | 0.892 / 0.028 |
| 16k–32k (442) | 0.873 / 0.061 | 0.882 / 0.019 |
| 32k–64k (442) | 0.867 / 0.060 | 0.876 / 0.014 |
| todos (2,194) | 0.874 / 0.053 | 0.890 / 0.007 |
Diferença de precisão em todos os comprimentos: −1.6 [−3.0, −0.3]. Nos conjuntos de acordos gerados (2,400 perguntas) ambos os modelos obtêm 1.000.
Comprimento do contexto. Comprimento de contexto validado: 65,536 tokens, o limite de serviço, a partir do longdoc-v1 development (diferença de precisão CUAD emparelhada em relação ao intervalo de 8k, pp [IC 95 %]: 16k +0.2 [−0.7, +1.2], 32k −0.2 [−1.2, +0.7], 64k −1.1 [−2.4, +0.0]; 445–447 perguntas cada). A regra é a aplicada a todos os tamanhos do Kev 1.0: o comprimento validado é o tamanho nominal do maior intervalo a partir de 16,384 tokens tal que ele, e cada intervalo entre ele e 8,192, está dentro da tolerância, ou seja, a diferença de precisão CUAD em relação ao intervalo de 8k, emparelhada no mesmo contrato, repetição e pergunta, tem um limite inferior de 95 % de pelo menos −3 pp, com todos os registos respondidos.
Calibração (erro de calibração esperado, ECE, tal como servido; mais baixo é melhor):
| Painel | Kev-27B v2 | Kev-27B v1 |
|---|---|---|
| breadth-v1 test, 10 conjuntos | 0.015 | 0.013 |
| tasksource-heldout-v1 test | 0.049 | 0.051 |
| hard-v1 + devtools-v1 + documents-v1 test | 0.014 | 0.027 |
| transfer-v4 locked test | 0.019 | 0.018 |
| Contratos CUAD, longdoc-v1 test | 0.053 | 0.007 |
Nas 648 perguntas de ajuste, uma validação cruzada de 5 dobras com grupos disjuntos baixa o ECE de 0.048 (em bruto) para 0.038 (fora da dobra); os dois intervalos sobrepõem-se. O intervalo bootstrap de 90 % da temperatura é [1.20, 1.45]. Nos seus extremos, os painéis de destaque movem-se em direções opostas: o ECE do breadth-v1 sobe para 0.026 a T = 1.20 e o ECE do tasksource-heldout-v1 para 0.067 a T = 1.45.
Outros resultados.
| Suite | Kev-27B v2 | Kev-27B v1 |
|---|---|---|
| transfer-v4 development, precisão / Brier | 0.851 / 0.218 | 0.848 / 0.229 |
| Estados curtos, transfer-r3 test (1,150) | 0.858 | 0.879 |
| devtools-v1 test, todas as fontes (1,071) | 0.790 | 0.711 |
| decision-v7 development (a distribuição de treino da v1) | 0.865 | 0.866 |
| MMLU-Pro, 10 opções (transfer-v9 development) | 0.675 | 0.665 |
| Itens sem resposta possível respondidos com p ≥ 0.9 (mais baixo é melhor) | 0.00 | 0.00 |
| SemIf (144) / WANLI-v2 (1,002) / TypeSafe (89 linhas respondidas) | 0.965 / 0.756 / 0.854 | 0.972 / 0.745 / 0.865 |
| Domínios reservados de geradores treinados, precisão / ECE: ood-v2 (4,988) | 0.956 / 0.020 | 0.944 / 0.044 |
| agents-ood-v1 (2,084) | 0.988 / 0.032 | 0.967 / 0.137 |
| guardrails-ood-v1 (4,949) | 0.984 / 0.010 | 0.944 / 0.079 |
O transfer-r3 test é um painel de estados curtos das mesmas oito fontes reservadas que o pool de calibração; o decision-v7 é a distribuição de treino da v1; o transfer-v9 contém MMLU-Pro e itens cuja prova decisiva foi removida. O SemIf (decisões de autoria humana do projeto SemIf), o WANLI-v2 (pares de inferência em linguagem natural da partição de teste do WANLI) e o TypeSafe (a seleção do SemIf de casos de fluxo de trabalho da TypeSafe) são apenas reportados: a auditoria de etiquetas considerou-os demasiado pequenos, saturados ou ruidosos para ordenar modelos. O WANLI-v2 e o TypeSafe foram retirados como avaliações em 2026-09-30 (cerca de um quarto dos pares do WANLI foram etiquetados de forma diferente pelos seus dois anotadores, com o gold fixado numa das duas etiquetas; o gold do TypeSafe é a resposta média de dois modelos de fronteira fechados, em perguntas demasiado poucas para distinguir checkpoints); os seus valores são mantidos como registo.
Paridade de serviço (H200, bf16 com kernels fundidos e grafos CUDA, 200 registos de desenvolvimento do decision-v7 / 280 perguntas):
| Verificação | Resultado |
|---|---|
| Servido vs o caminho de avaliação fp32, máx |Δp| | 0.0223, sem respostas alteradas |
| Uma pergunta sozinha vs o pedido completo, máx |Δp| | 0.0039, sem respostas alteradas |
| Servido vs avaliação em estados de 8k / 32k / 64k tokens, máx |Δp| | 0.0064 / 0.0095 / 0.0017, sem respostas alteradas |
| Tempo de modelo num estado de 64k tokens, estado novo / em cache | 9.4 s / 733 ms |
| Memória residente / tempo de carregamento a partir de uma cache quente | 65.5 GB / 17.6 s |
| Débito com 1 / 64 clientes em simultâneo | 21.1 / 36.4 pedidos/s |
¹ Excluídos dos painéis de destaque: quatro conjuntos de dados do breadth-v1 (routerbench, cujos estados não têm a informação pedida; cfcolor e humicroedit, ao nível do acaso para todos os sistemas; chessbench, no fundo da escala para todos os sistemas); sete famílias do tasksource-heldout-v1 com etiquetas inválidas ou irrecuperáveis (nomes privados); e duas tarefas do devtools-v1 cujas etiquetas o estado não determina (flakeflagger, tipo de alteração de commit). A fonte emotion do transfer-r3 (etiquetas distantes por palavras-chave) é excluída do painel de estados curtos nas Limitações.
Limitações e compromissos
- Seleção. O checkpoint lançado foi escolhido depois de os resultados de teste de um candidato anterior serem conhecidos e foi confirmado nos mesmos conjuntos de teste. Trata as margens de teste como otimistas.
- Sem ganho em estados curtos. Não é melhor do que a v1 em entradas curtas: −0.8 pp [−2.0, +0.5] no teste transfer-v4 bloqueado, −0.9 pp [−2.0, +0.1] no painel de desenvolvimento de estados curtos (transfer-v4 development e transfer-r3 test sem
emotion), e −2.1 pp [−3.5, −0.8] em todo o transfer-r3 test. - Pior e demasiado confiante em contratos longos. No CUAD é 1.6 pp menos preciso do que a v1 e o seu ECE é 2 a 4 vezes o da v1 em todos os comprimentos (0.053 contra 0.007 no global). As perguntas do CUAD incluem algumas etiquetas gold erradas ou contestadas, mas a diferença é consistente em todos os comprimentos. Para revisão de contratos, reajusta a temperatura em documentos etiquetados teus (
python -m kev.calibrate) ou usa a v1. - Ganhos em distribuição. As partições de treino do hard-v1, devtools-v1 e documents-v1 estão nos dados de treino, e as suites ood-v2, agents-ood-v1 e guardrails-ood-v1 são domínios reservados de geradores que também produziram dados de treino. Os ganhos aí medem itens reservados de famílias treinadas, não transferência para novas tarefas.
- Treino da base desconhecido. A base é a versão pós-treinada da Qwen; os seus dados de treino não são conhecidos, por isso não se pode excluir sobreposição entre ela e qualquer avaliação.
- Conhecimento. O conhecimento é determinado pela base: o MMLU-Pro é 0.675, contra 0.840 do Jev nos mesmos itens.
- Comprimentos não treinados. Estados de 32k–64k tokens foram avaliados (longdoc-v1) mas não treinados.
- Suite retirada. Uma suite de tickets de apoio usada para selecionar a v1 (scienthoon) foi retirada por ser infundada antes de a v2 ser construída, por isso a v2 não tem resultado nela. O pai afinado não combinado da v2 obteve 5.5 pp [−7.8, −3.2] abaixo da v1 aí.
- Incerteza da temperatura. O intervalo da temperatura ([1.20, 1.45]) move o ECE de teste em até cerca de 0.02.
- Hardware. Precisa de uma GPU de centro de dados da classe dos 80 GB (mais de 80 GB para os estados mais longos). Apple Silicon via MLX: os pesos bf16 completos da v2 precisam de cerca de 51 GB mais memória de trabalho, por isso um Mac de 64 GB está no limite e um Mac de 96–128 GB deve caber. Isto é esperado a partir de medições em modelos mais pequenos, ainda não medido num Mac grande: carregar um Kev-4B de pesos completos pelo mesmo percurso atingiu um pico do tamanho dos seus pesos (8.4 GB), e as suas respostas ficaram dentro de 0.015 do caminho de avaliação fp32 (
runs/mlx-full-4b). A v1 (o adaptador LoRA, tagv1-lora) foi servida através do MLX num M5 Max de 128 GB por um contribuidor externo (PR #175): 0.849 de precisão no transfer-v4 development contra os 0.848 publicados, 52 GB estáveis e 97 GB no pico enquanto o adaptador era fundido.
Enviesamento, riscos e considerações éticas
- As probabilidades calibradas podem criar uma confiança infundada. A temperatura foi ajustada em conjuntos de dados públicos reservados e não se transfere para todas as cargas de trabalho; mede a precisão e a calibração numa amostra etiquetada dos teus próprios dados antes de definires limiares.
- A precisão e a calibração mudam com a mudança de domínio (por exemplo, em contratos longos). Monitoriza as taxas de erro em produção em vez de confiares nos números acima.
- Não o uses para decisões automatizadas consequentes sobre pessoas sem revisão humana. Os enviesamentos do modelo base e dos dados de treino (incluindo etiquetas produzidas por outros modelos) não são medidos.
- Os estados podem conter dados pessoais ou confidenciais. O auto-alojamento mantém as entradas no teu próprio hardware; o servidor está aberto a menos que
KEV_API_KEYesteja definido, por isso aplica o teu próprio controlo de acesso e política de tratamento de dados.
Computação
- Ajuste fino: 8 × NVIDIA H200 durante 16.2 h de tempo de treino (129 horas-GPU), excluindo reinícios e avaliação.
- Média de pesos: cerca de 6 minutos na CPU.
- Verificações de avaliação e serviço: GPUs H200 individuais no Modal.
Proveniência e reprodutibilidade
- Código, suites e relatórios de avaliação: github.com/jaredpalmer/kev. Números de lançamento:
runs/release/kev-27b-r23.json(scripts/release_numbers.py --release kev-27b-r23). - Ajuste fino: ronda 22 ensaio
r22-27b-lr2e6/00-trial-0(experiments/round22/lr2e6.json), sha256 dos pesos3fa0182a…. Mistura: ronda 23 braço27b-k-w85(scripts/interpolate_checkpoint.py --toward;interpolation.jsonno repositório do Hub), regra de seleção e etapas de confirmação emexperiments/rounds/r23.json; resultados emruns/r23-readout/,runs/r23-verdict/,runs/r23-breadth-report/,runs/serving-27b-r23*/. - Fonte da mistura: a v1 em
jaredpalmer/kev-27b@01b81998(ensaior6-27b-v2/01-trial-1), agora tagv1-lora. - sha256 dos pesos lançados
d27af6ab2be16824166ac639907b4dba40979ff338599c2872721aa6c5072022; sha256 dohead.pt7968f17b03479c1ef9d1c0f3ab8a15e31ecb441cf40691b07ee945ab554d45ad(T = 1.3195). Pesos publicados no commit do Hub28be62e9. - Verificação: carregado anonimamente do Hub numa H200, reproduziu exatamente os logits da avaliação de pré-lançamento em 252 de 252 linhas do SemIf e 764 de 764 linhas do transfer-v4 development (
runs/release/kev-27b-r23-published.json,runs/release/kev-27b-r23-staging.json).
Citação
@misc{palmer2026kev27b,
title = {Kev-27B: a calibrated decision model on Qwen3.8-27B},
author = {Palmer, Jared},
year = {2026},
howpublished = {\url{https://huggingface.co/jaredpalmer/kev-27b}},
note = {Version 2, released 2026-09-30}
}
Contacto
Perguntas e problemas: github.com/jaredpalmer/kev/issues.