Kev-27B
Resumo do modelo
O Kev-27B é um modelo de decisão. Ele 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, em uma única passada direta e sem gerar texto. Ele é indicado para desenvolvedores que classificam, roteiam, fazem triagem ou conferem documentos de até 64k tokens e que precisam de probabilidades que possam receber limiar, por exemplo para enviar casos incertos à revisão humana. Ele implementa a API pública System One da TypeSafe (POST /v1/systemone), de modo que o SDK da TypeSafe funciona contra 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, com média com a versão 1.
Detalhes do modelo
| Desenvolvedor | Jared Palmer (github.com/jaredpalmer/kev) |
| Tipo de modelo | Modelo de decisão: um backbone de modelo de linguagem causal executado somente-prefill, com uma cabeça de ponteiro sobre as opções |
| Backbone | Qwen/Qwen3.8-27B (revisão 1d4bf0f2, o release pós-treinado do Qwen): 64 camadas, 48 Gated DeltaNet (atenção linear) e 16 de atenção plena, hidden size 5,120; todo peso do backbone ajustado |
| Cabeça | Cabeça de ponteiro: duas projeções 5,120 → 256 pontuam o token de fechamento de cada opção contra o token final da pergunta; um softmax dá as probabilidades |
| Parâmetros | 25.6B no backbone (a torre de visão, a cabeça LM e as camadas de previsão multi-token não são carregadas), 2.6M na cabeça |
| Precisão | bf16 (um checkpoint de 51.3 GB); servido em bf16 |
| Contexto | Estados de até 65,536 tokens são servidos, mais pelo menos 8,192 tokens por pergunta. Os estados de treinamento tinham no máximo 32,768 tokens. |
| Comprimento de contexto validado | 65,536 tokens (veja Documentos longos) |
| Calibração | Uma temperatura, T = 1.32, armazenada em head.pt e aplicada no 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çada em 2026-09-30 no main de jaredpalmer/kev-27b |
| Versão anterior | v1, um adaptador LoRA rank 16 sobre a mesma base (T = 1.38), na tag v1-lora; a ficha dela é o README naquela tag |
Entrada. Um estado (texto, ou um objeto ou array JSON renderizado como texto rotulado) e qualquer número de perguntas nomeadas, cada uma de um dos 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 do 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 compartilhado, então as perguntas não podem influenciar umas às outras; o estado é calculado uma vez e armazenado em cache.
Usos pretendidos
- Decisões tipadas sobre documentos: classificação, roteamento, triagem, escolhas de extração, verificações de política e elegibilidade, e julgar uma resposta proposta contra critérios declarados.
- Fluxos de trabalho que agem com base na confiança: automatize os casos confiantes e coloque o resto na fila, com limiares congelados em uma amostra rotulada da carga de trabalho do próprio usuário.
- Um substituto direto e auto-hospedado para um endpoint System One.
Usos fora de escopo
- Geração de texto, chat, sumarização ou respostas a perguntas abertas. O modelo apenas pontua as opções que recebe.
- Decisões totalmente automatizadas com consequências legais, médicas, financeiras, trabalhistas ou semelhantes para pessoas, sem revisão humana.
- Perguntas cuja resposta depende de fatos 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 (veja Limitações).
- Estados maiores que 65,536 tokens, idiomas diferentes do inglês e hardware menor que uma GPU de classe 80 GB ou um Mac com cerca de 96 GB de memória (veja Limitações).
Como usar
Sirva-o com o repositório do Kev em uma única 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 em uma H200 e um estado de 32k tokens, de 78.7 GB, então 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
No Apple Silicon o mesmo comando o serve através do MLX (escolhido automaticamente), carregando os pesos bf16 completos como salvos, sem nada mesclado. Espera-se que este caminho funcione em um Mac de 96–128 GB, mas ele ainda não foi executado neste tamanho (veja 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 padrão; KEV_TEMPERATURE=1.0 devolve as probabilidades brutas. O servidor usa bf16, kernels DeltaNet fundidos e CUDA graphs; KEV_DTYPE=fp32 seleciona o caminho exato usado na avaliação.
Dados de treinamento
Uma época sobre um corpus privado de 145,840 registros (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 do GitHub).
| Componente | Registros | Conteúdo e rótulos |
|---|---|---|
| Corpus Kev | 78,786 | O conjunto de treinamento do Kev-27B v1 (dez conjuntos de dados públicos de classificação, registros gerados de política e regra, casos de aritmética de datas e evidência ausente, estados longos com fatos enterrados); as partições de treinamento das suítes de habilidade (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 registros cada; sete famílias geradas (documentos longos, roteamento de ferramentas, recuperação, intenção, julgamento por rubrica, abstenção, raciocínio numérico) |
| Famílias de tarefa licenciadas | 24,000 | 119 famílias de tarefa de uma coleção pública multitarefa, com licenças que permitem uso comercial e rótulos nativos; a lista de famílias não é publicada |
| Estados longos | 3,200 | Estados do corpus Kev embutidos em documentos de 8k–32k tokens; rótulos herdados exatamente |
| Documentos longos | 7,617 | Documentos montados por código, rótulos calculados por código |
| Decisões fora do domínio | 7,312 | Decisões geradas em domínios variados |
| Tom | 7,544 | Pares mínimos do mesmo texto escrito calmo, frustrado ou irritado |
| Injeção de prompt | 2,699 | Reconhecer injeção indireta de prompt (defensivo) |
| Sessões de agente | 4,875 | Perguntas sobre logs de sessão de agente 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 rótulos. Os conjuntos de dados públicos estão listados nos metadados desta ficha; duas fontes de ferramentas de desenvolvimento, CodeReviewer e FlakeFlagger, vêm do Zenodo, e os diffs do CodeReviewer são mantidos apenas de projetos com licença permissiva. Textos e rótulos 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). Os rótulos de reclamações de consumidores vêm de modelos de pesos abertos, filtrados por juízes de modelos fechados e adjudicação. Nenhuma saída de Jev (o modelo de decisão hospedado da TypeSafe) foi usada.
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ção do CFPB são obras do governo dos EUA. A licença do GLM-5.3 é no estilo MIT, com uma condição sobre operadores muito grandes de modelo como serviço. Licenças, revisões e atribuições por fonte são registradas nos manifestos dos componentes.
Triagem de contaminação. Antes do treinamento, todo registro foi triado contra 102 partições de avaliação (76,549 itens de referência): cada suíte congelada do Kev, o conjunto de avaliação privado, os itens públicos do JevBench e as suítes apenas de avaliação abaixo. Um registro era removido por correspondência exata de string normalizada, similaridade Jaccard de 8-gramas de palavra acima de 0.2, ou contenção de pelo menos 0.5; 6,388 registros de treinamento foram removidos.
Procedimento de treinamento
- Ajuste fino de pesos completos. Uma época a partir do
Qwen/Qwen3.8-27Bem 8 GPUs NVIDIA H200 (FSDP2). AdamW (β 0.9 / 0.999, weight decay 0.01) com pesos mestres e momentos em fp32 sobre um backbone bf16; taxa de aprendizado 2e-6 para o backbone e 1e-4 para a cabeça, agenda one-cycle com 10% de warm-up; norma do gradiente com clipping em 1.0; 128 registros por passo do otimizador (8 por GPU, 2 passos de acúmulo), 1,140 passos; semente 0. A perda é entropia cruzada sobre as opções de cada pergunta (alvos suaves onde os dados os têm). A ordem das opções é embaralhada e opções “nenhuma das opções acima” e distratores são inseridos aleatoriamente. Um quarto dos registros de choice com estados de no máximo 8,192 tokens também gera um par mínimo: a pergunta com uma opção “nenhuma das opções acima”, uma vez com a opção correta presente e uma vez com ela removida. Cada estado é executado uma vez e as suas perguntas ramificam a partir dele. - Média de pesos. Todo tensor do backbone é 0.85 × o peso ajustado + 0.15 × o peso da v1 (o adaptador LoRA da v1 mesclado na base em fp32), calculado em fp32 e arredondado uma vez para bf16. A cabeça de ponteiro do modelo ajustado é mantida. A razão foi escolhida entre seis combinações (0.85 / 0.70 / 0.50, com qualquer uma das cabeças) em dados de desenvolvimento.
- Calibração. Uma única temperatura, T = 1.32, minimizando a log-verossimilhanç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 registros de política gerados) e 200 perguntas de MMLU-Pro (transfer-v9 development). Nenhuma partição de qualquer corpus de treinamento foi usada, e uma checagem não encontrou sobreposição com os dados de treinamento.
Avaliação
Metodologia. Toda comparação é contra o Kev-27B v1 em itens idênticos, cada modelo na sua própria temperatura de serviço. Partições de teste foram lidas uma vez para este checkpoint; o teste do transfer-v4 é bloqueado (lido uma vez por candidato) e foi julgado contra uma régua fixada de antemão (acurácia ≥ 0.886, Brier ≤ 0.165). Os intervalos são bootstraps pareados de 95% que reamostram registros inteiros (2,000 reamostragens), então perguntas que compartilham um estado se movem juntas. As diferenças estão em pontos percentuais (pp). As suítes:
- 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 tarefa inteiras da mesma coleção multitarefa do componente licenciado, reservadas do treinamento.
- hard-v1: registros de habilidade rotulados programaticamente (políticas longas, trade-offs, probabilidade, multi-hop, datas e números, julgamento, 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ça verificada (revisão de código, mensagens de commit, segurança, testes instáveis).
- documents-v1 / documents-v2: narrativas de reclamação de consumidores dos EUA (CFPB); a v2 é um conjunto de teste reservado privado.
- transfer-v4: decisões fora do domínio de seis fontes públicas nunca treinadas mais estruturas de política reservadas.
- longdoc-v1: contratos comerciais CUAD de até 64k tokens, e pacotes de acordo gerados.
Os painéis principais excluem itens que uma auditoria de rótulos, concluída antes de este checkpoint ser construído, considerou insólidos¹; 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 tarefa reservadas, tasksource-heldout-v1, 17 famílias (2,024) | 0.795 | 0.743 | +5.3 [+3.7, +6.8] |
| Habilidades, 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 do domínio, transfer-v4 locked test (656): acurácia | 0.8887 | 0.8963 | −0.8 [−2.0, +0.5] |
| Fora do domínio, transfer-v4 locked test: Brier / cobertura com ≤ 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), pontuada com o índice corrigido pelo acaso do Decision Index 0.2 da comunidade (por conjunto de dados, (score − acaso) / (1 − acaso), com média dentro de cada área, depois 100 × a média das cinco áreas). O Jev foi consultado pelo Vercel AI Gateway e o AutoJev-27B (denis-pplx/autojev-27b, um ajuste fino de pesos completos da mesma base) pelo 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 de índice é +2.1 [−0.4, +4.6]. Nenhum intervalo pareado contra o Jev foi calculado.
Documentos longos (contratos CUAD no longdoc-v1 test, acurácia / ECE por comprimento do estado em tokens):
| Comprimento do estado (perguntas) | Kev-27B v2 | Kev-27B v1 |
|---|---|---|
| abaixo 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 acurácia em todos os comprimentos: −1.6 [−3.0, −0.3]. Nos pacotes de acordo gerados (2,400 perguntas) os dois modelos marcam 1.000.
Comprimento de contexto. Comprimento de contexto validado: 65,536 tokens, o limite de serviço, a partir do longdoc-v1 development (diferença de acurácia CUAD pareada em relação ao bucket 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 todo tamanho do Kev 1.0: o comprimento validado é o tamanho nominal do maior bucket a partir de 16,384 tokens tal que ele, e todo bucket entre ele e 8,192, esteja dentro da tolerância, ou seja, a diferença de acurácia CUAD em relação ao bucket de 8k, pareada no mesmo contrato, repetição e pergunta, tem um limite inferior de 95% de pelo menos −3 pp, com todo registro respondido.
Calibração (erro de calibração esperado, ECE, conforme servido; menor é 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 folds com grupos disjuntos baixa o ECE de 0.048 (bruto) para 0.038 (fora do fold); os dois intervalos se sobrepõem. O intervalo bootstrap de 90% da temperatura é [1.20, 1.45]. Nas suas extremidades os painéis principais se movem em direções opostas: o ECE do breadth-v1 sobe para 0.026 em T = 1.20 e o ECE do tasksource-heldout-v1 para 0.067 em T = 1.45.
Outros resultados.
| Suíte | Kev-27B v2 | Kev-27B v1 |
|---|---|---|
| transfer-v4 development, acurácia / 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 treinamento da v1) | 0.865 | 0.866 |
| MMLU-Pro, 10 opções (transfer-v9 development) | 0.675 | 0.665 |
| Itens impossíveis de responder respondidos com p ≥ 0.9 (menor é 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, acurácia / 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 estado curto das mesmas oito fontes reservadas do pool de calibração; o decision-v7 é a distribuição de treinamento da v1; o transfer-v9 contém o MMLU-Pro e itens cuja evidência decisiva foi removida. O SemIf (decisões escritas à mão 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 rótulos os considerou pequenos, saturados ou ruidosos demais para ranquear modelos. O WANLI-v2 e o TypeSafe foram aposentados como avaliações em 2026-09-30 (cerca de um quarto dos pares do WANLI foram rotulados de forma diferente pelos seus dois anotadores, com o gabarito fixado em um dos dois rótulos; o gabarito do TypeSafe é a resposta média de dois modelos de fronteira fechados, em poucas perguntas demais para distinguir checkpoints); os seus números são mantidos como registro.
Paridade de serviço (H200, bf16 com kernels fundidos e CUDA graphs, 200 registros de desenvolvimento do decision-v7 / 280 perguntas):
| Verificação | Resultado |
|---|---|
| Servido vs o caminho de avaliação em fp32, máx |Δp| | 0.0223, sem respostas alteradas |
| Uma pergunta sozinha vs a requisição completa, 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 em um estado de 64k tokens, estado novo / em cache | 9.4 s / 733 ms |
| Memória residente / tempo de carregamento a partir de um cache quente | 65.5 GB / 17.6 s |
| Vazão com 1 / 64 clientes concorrentes | 21.1 / 36.4 requisições/s |
¹ Excluídos dos painéis principais: quatro conjuntos do breadth-v1 (routerbench, cujos estados não contêm a informação pedida; cfcolor e humicroedit, no nível do acaso para todo sistema; chessbench, no piso para todo sistema); sete famílias do tasksource-heldout-v1 com rótulos inválidos ou irrecuperáveis (nomes privados); e duas tarefas do devtools-v1 cujos rótulos o estado não determina (flakeflagger, tipo de mudança do commit). A fonte emotion do transfer-r3 (rótulos distantes por palavra-chave) é excluída do painel de estado curto em Limitações.
Limitações e trade-offs
- Seleção. O checkpoint publicado foi escolhido depois que os resultados de teste de um candidato anterior eram conhecidos e foi confirmado nos mesmos conjuntos de teste. Trate as margens de teste como otimistas.
- Nenhum ganho em estados curtos. Ele não é melhor que a v1 em entradas curtas: −0.8 pp [−2.0, +0.5] no teste bloqueado do transfer-v4, −0.9 pp [−2.0, +0.1] no painel de desenvolvimento de estado curto (transfer-v4 development e transfer-r3 test sem
emotion), e −2.1 pp [−3.5, −0.8] no transfer-r3 test inteiro. - Pior e confiante demais em contratos longos. No CUAD ele é 1.6 pp menos acurado que a v1 e o seu ECE é 2 a 4 vezes o da v1 em todos os comprimentos (0.053 contra 0.007 no total). As perguntas do CUAD incluem alguns rótulos gabarito errados ou contestados, mas a lacuna é consistente em todos os comprimentos. Para revisão de contratos, reajuste a temperatura em documentos rotulados seus (
python -m kev.calibrate) ou use a v1. - Ganhos dentro da distribuição. As partições de treinamento do hard-v1, do devtools-v1 e do documents-v1 estão nos dados de treinamento, e as suítes ood-v2, agents-ood-v1 e guardrails-ood-v1 são domínios reservados de geradores que também produziram dados de treinamento. Os ganhos ali medem itens reservados de famílias treinadas, não transferência para tarefas novas.
- Treinamento da base desconhecido. A base é o release pós-treinado do Qwen; os seus dados de treinamento não são conhecidos, então a sobreposição entre ele e qualquer avaliação não pode ser descartada.
- Conhecimento. O conhecimento é definido 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.
- Suíte aposentada. Uma suíte de tickets de suporte usada para selecionar a v1 (scienthoon) foi aposentada por insólida antes de a v2 ser construída, então a v2 não tem resultado nela. O pai ajustado não mediado da v2 marcou 5.5 pp [−7.8, −3.2] abaixo da v1 ali.
- Incerteza da temperatura. O intervalo da temperatura ([1.20, 1.45]) move o ECE de teste em até cerca de 0.02.
- Hardware. Ele precisa de uma GPU de data centre de classe 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, então um Mac de 64 GB é limítrofe e um Mac de 96–128 GB deve caber. Isso é esperado a partir de medições em modelos menores, ainda não medido em um Mac grande: carregar um Kev-4B de pesos completos pelo mesmo caminho 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 em fp32 (
runs/mlx-full-4b). A v1 (o adaptador LoRA, tagv1-lora) foi servida através do MLX em um M5 Max de 128 GB por um contribuidor externo (PR #175): 0.849 de acurácia no transfer-v4 development contra o 0.848 publicado, 52 GB estáveis e 97 GB no pico enquanto o adaptador era mesclado.
Viés, riscos e considerações éticas
- Probabilidades calibradas podem criar uma confiança infundada. A temperatura foi ajustada em conjuntos de dados públicos reservados e não transfere para toda carga de trabalho; meça a acurácia e a calibração em uma amostra rotulada dos seus próprios dados antes de definir limiares.
- A acurácia e a calibração mudam sob mudança de domínio (por exemplo, em contratos longos). Monitore as taxas de erro em produção em vez de confiar nos números acima.
- Não o use para decisões automatizadas consequentes sobre pessoas sem revisão humana. Os vieses do modelo base e dos dados de treinamento (incluindo rótulos produzidos por outros modelos) não são medidos.
- Os estados podem conter dados pessoais ou confidenciais. A auto-hospedagem mantém as entradas no seu próprio hardware; o servidor é aberto a menos que
KEV_API_KEYesteja definida, então aplique o seu próprio controle de acesso e política de tratamento de dados.
Computação
- Ajuste fino: 8 × NVIDIA H200 por 16.2 h de tempo de treinamento (129 GPU-horas), excluindo reinícios e avaliação.
- Média de pesos: cerca de 6 minutos em CPU.
- Avaliação e checagens de serviço: GPUs únicas H200 no Modal.
Procedência e reprodutibilidade
- Código, suítes e relatórios de avaliação: github.com/jaredpalmer/kev. Números do release:
runs/release/kev-27b-r23.json(scripts/release_numbers.py --release kev-27b-r23). - Ajuste fino: trial da rodada 22
r22-27b-lr2e6/00-trial-0(experiments/round22/lr2e6.json), sha256 dos pesos3fa0182a…. Combinação: braço da rodada 2327b-k-w85(scripts/interpolate_checkpoint.py --toward;interpolation.jsonno repositório do Hub), regra de seleção e estágios de confirmação emexperiments/rounds/r23.json; resultados emruns/r23-readout/,runs/r23-verdict/,runs/r23-breadth-report/,runs/serving-27b-r23*/. - Fonte da combinação: v1 em
jaredpalmer/kev-27b@01b81998(trialr6-27b-v2/01-trial-1), agora tagv1-lora. - Pesos publicados sha256
d27af6ab2be16824166ac639907b4dba40979ff338599c2872721aa6c5072022;head.ptsha2567968f17b03479c1ef9d1c0f3ab8a15e31ecb441cf40691b07ee945ab554d45ad(T = 1.3195). Pesos publicados no commit do Hub28be62e9. - Verificação: carregado anonimamente do Hub em uma H200, reproduziu exatamente os logits da avaliação pré-release em 252 de 252 linhas do SemIf e 764 de 764 linhas de desenvolvimento do transfer-v4 (
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}
}
Contato
Perguntas e problemas: github.com/jaredpalmer/kev/issues.