Kev 1.0
O Kev 1.0 é o primeiro lançamento versionado de toda a família Kev: quatro modelos de decisão que leem um documento e um conjunto de perguntas tipadas e devolvem probabilidades calibradas sobre as opções, numa única passagem direta, atrás da API System One da TypeSafe. Nada nele é treinado de novo. Fixa os checkpoints, as fichas de modelo, as suites de avaliação e o código de serviço com que a próxima geração do Kev será medida, com a mesma tag (v1.0) em cada repositório do Hub.
O que está no 1.0
| Modelo | Repositório do Hub | Revisão dos pesos | Forma | Base | Temperatura | Contexto validado |
|---|---|---|---|---|---|---|
| Kev-0.8B | jaredpalmer/kev-0.8b |
9a45d25e |
Adaptador LoRA + cabeça | Qwen3.5-0.8B-Base (Apache-2.0) | 2.35 | 8,192 tokens |
| Kev-4B | jaredpalmer/kev-4b |
139fdd94 |
Adaptador LoRA + cabeça | Qwen3.5-4B-Base (Apache-2.0) | 2.41 | 8,192 tokens |
| Kev-9B (v2) | jaredpalmer/kev-9b |
b5d8c18e |
Adaptador LoRA + cabeça | Qwen3.5-9B-Base (Apache-2.0) | 2.19 | 8,192 tokens |
| Kev-27B (v2) | jaredpalmer/kev-27b |
28be62e9 |
pesos bf16 completos (51 GB) + cabeça | Qwen3.8-27B, pós-treinado (Apache-2.0) | 1.32 | 65,536 tokens |
Números de destaque (caminho de avaliação fp32, cada modelo à sua temperatura de distribuição; o teste transfer-v4 está bloqueado e foi lido uma vez por modelo):
| Kev-0.8B | Kev-4B | Kev-9B | Kev-27B | Jev | |
|---|---|---|---|---|---|
| Conjuntos de dados reservados: breadth-v1 test, índice corrigido para o acaso | 23.3 | 38.0 | 41.0 | 52.3 | 54.0 |
| Fora da distribuição: precisão do transfer-v4 development | 0.648 | 0.817 | 0.820 | 0.851 | 0.857 |
| Fora da distribuição: precisão / Brier do transfer-v4 test bloqueado | 0.697 / 0.397 | 0.838 / 0.224 | 0.852 / 0.199 | 0.889 / 0.154 | – |
| Skills: hard-v1 test | 0.665 | 0.803 | 0.834 | 0.918 | – |
| Ferramentas de desenvolvimento: devtools-v1 test, todas as fontes | 0.637 | 0.756 | 0.791 | 0.790 | – |
| Documentos reais: documents-v1 test | 0.851 | 0.903 | 0.900 | 0.908 | – |
| MMLU-Pro (transfer-v9 development) | 0.230 | 0.565 | 0.590 | 0.675 | 0.840 |
O hard-v1, o devtools-v1 e o documents-v1 têm partições de treino em que todos os Kev treinaram: essas linhas medem itens reservados de famílias treinadas, não transferência. As linhas do breadth-v1 e do transfer-v4 são conjuntos de dados em que nenhum Kev treinou. O Jev foi lido nas partições de desenvolvimento e apenas no breadth-v1 test. Cada número remonta a um relatório confirmado através de docs/claims.json; as fichas de modelo (docs/model-cards/) têm o resto, com intervalos.
O que mudou desde o último lançamento da família
Medido desde a release kev-family do GitHub tal como foi montada pela primeira vez para a família atual em 2026-09-24 (Kev-27B v1, Kev-9B v1, e os mesmos Kev-4B e Kev-0.8B que aqui). As suas atualizações de 2026-09-30 (Kev-27B v2, Kev-9B v2) são também listadas aqui, uma vez que é no 1.0 que passam a fazer parte de um lançamento versionado.
- Kev-27B v2: pesos completos. Todos os pesos do Qwen3.8-27B afinados durante uma época num corpus de 145,840 registos, depois combinados por média 0.85 / 0.15 com a v1. Contra a v1 no teste: conjuntos de dados reservados +1.2 pp [+0.3, +2.2], famílias de tarefas reservadas +5.3 [+3.7, +6.8], skills, ferramentas e documentos +8.9 [+7.5, +10.3]; teste fora da distribuição bloqueado 0.889 contra 0.896, Brier 0.154 contra 0.160. Pior e demasiado confiante em contratos longos (CUAD ECE 0.053 contra 0.007). A v1 está em
jaredpalmer/kev-27b@v1-lora. - Kev-9B v2. A v1 mais uma época nos dados de documentos e skills que o Kev-4B e o Kev-0.8B já tinham. Contra a v1 no teste: hard-v1 + devtools-v1 +18.7 pp [+16.7, +20.8], documents-v1 +7.1 [+4.7, +9.2]; igual no teste fora da distribuição bloqueado (0.852 ambos) com Brier 0.199 contra 0.224. A v1 está em
jaredpalmer/kev-9b@v1. - Sem truncagem silenciosa. O servidor costumava cortar um estado mais longo do que o seu limite sem o dizer. Agora recusa um estado com mais de 65,536 tokens com um 422 que indica a contagem de tokens e o limite;
KEV_TRUNCATE_STATES=1volta a optar pela truncagem, e cada resposta desse servidor passa então a dizertruncated. As skills de implementação e de ajuste fino fixam oKEV_REFnum commit que tem esta correção e as alterações de documentos longos e de MLX abaixo (71d4829), e o Space foi republicado após a correção. - Documentos longos em todos os tamanhos. O caminho de avaliação mantinha atenção fp32 para linhas longas no kernel de matemática, por isso o Kev-0.8B, o 4B e o 9B ficavam sem memória de GPU em estados de 32k–64k tokens. As linhas longas passam agora pelo kernel eficiente em memória em fp32: o Kev-4B lê um estado de 61k tokens em 17.2 s com 17.2 GiB acima dos pesos numa H100, e as linhas mais curtas mantêm os seus logits bit a bit. É isto que torna os comprimentos de contexto validados acima mensuráveis.
- Apple Silicon. O backend MLX carrega checkpoints de pesos completos tal como estão guardados, sem fusão, o que dá ao Kev-27B um percurso em Mac (esperado precisar de cerca de 51 GB mais memória de trabalho; ainda não corrido nesse tamanho). Os estados longos são pré-preenchidos 1,024 tokens de cada vez e a cache é despejada antes de uma passagem, por isso o Kev-4B serve um estado de 65,000 tokens num M5 de 32 GB com um pico de 13.0 GB (84.5 s novo, 716 ms em cache).
- Proveniência do kernel. Cada relatório de avaliação e ensaio passa a registar o conjunto de kernels de que os seus logits dependem (versões de pacotes, GPU, dtype, implementações de atenção e DeltaNet), depois de se ter descoberto que uma alteração de kernel na imagem de avaliação movia as leituras do Kev-27B v1 em 0.03–0.06 de probabilidade sem qualquer alteração ao próprio código do Kev.
- Auditoria de avaliação. Três suites foram removidas por serem infundadas para selecionar modelos: scienthoon (tickets com templates, uma pergunta que o texto não consegue responder), WANLI-v2 / WANLI-v1 (um quarto das etiquetas gold são de um de dois anotadores em desacordo) e as avaliações públicas da TypeSafe (gold de dois modelos fechados, perguntas demasiado poucas). Os painéis de destaque excluem itens que a auditoria considerou sem resposta possível ou sem etiqueta. Os números dos lançamentos anteriores nessas suites são mantidos nos seus registos, não nas fichas do 1.0.
- Calibração. O Kev-4B e o Kev-0.8B trazem temperaturas ajustadas em itens reservados dos seus dados de treino. Um reajuste registado em conjuntos de dados reservados foi avaliado para ambos e adotado para nenhum: não melhorou o Kev-4B (diferença de Brier −0.0001 [−0.0005, +0.0003]), e tornou o Kev-0.8B pior calibrado nas suas famílias de documentos e skills em mais do que a tolerância registada. O Kev-9B e o Kev-27B já trazem temperaturas de conjuntos de dados reservados.
- Dados de treino publicados. As partições de treino do documents-v1 e do hard-v1 estão no conjunto de dados
jaredpalmer/kev-suites, por isso os dados de treino dos modelos pequenos podem ser obtidos e verificados por hash. - Comprimento de contexto validado. Cada ficha indica agora o estado mais longo em que a precisão em contratos CUAD se mantém dentro de 3 pp (limite inferior de 95 %) do mesmo modelo a 8k tokens. O Kev-27B aguenta até 65,536 tokens, o limite de serviço (o seu limite inferior a 64k é −2.4 pp). O Kev-0.8B, o 4B e o 9B validam apenas os seus 8,192 treinados: cada um já falha a tolerância a 16k (limites inferiores −8.5, −3.4 e −3.7 pp), por isso para além de 8k tokens as suas respostas em documentos longos não estão cobertas pela medição.
- Fichas de modelo formais. As quatro fichas seguem uma estrutura: resumo, detalhes, utilizações previstas e fora do âmbito, como usar, dados e procedimento de treino, avaliação, limitações, riscos, computação, proveniência.
Limitações conhecidas
- Ganhos em distribuição. Os grandes ganhos do último ano são em suites cujas partições de treino estão nos dados de treino. Em conjuntos de dados em que nenhum Kev treinou, o Kev-27B está 1.7 pontos de índice abaixo do Jev no breadth-v1 test, e os tamanhos menores estão 13–31 pontos abaixo.
- Comprimentos não treinados. O Kev-0.8B, o 4B e o 9B treinaram em estados de no máximo 7,552 tokens e o Kev-27B em no máximo 32,768; o servidor aceita 65,536. Usa o comprimento de contexto validado, não o limite de serviço.
- O Kev-27B em contratos longos é menos preciso do que a v1 e demasiado confiante (CUAD test ECE 0.053 contra 0.007); reajusta a temperatura nos teus próprios documentos ou usa
@v1-lorapara revisão de contratos. - Kev-0.8B e encaminhamento de ferramentas. A sua precisão no When2Call caiu abaixo do acaso (0.133 no test) após a sua etapa de documentos e skills; não o uses para encaminhamento de chamadas de ferramentas.
- A aritmética de datas é a família mais fraca em todos os tamanhos abaixo de 27B (precisão da política
deadline0.35 / 0.65 / 0.725 contra 0.95 do Jev); oKEV_DATE_FACTS=1ajuda. - O conhecimento é determinado pela base (MMLU-Pro 0.230–0.675 contra 0.840 do Jev).
- O Kev-9B num Mac não foi medido, e espera-se que o Kev-27B num Mac caiba em 96–128 GB mas não foi corrido.
- Seleção. O Kev-27B v2 e o Kev-9B v2 foram re-selecionados sob a regra auditada com leituras de desenvolvimento anteriores conhecidas; as suas margens de teste são otimistas.
- Uma temperatura por modelo não consegue reordenar as confianças, por isso, com um orçamento de erro de 5 %, os modelos automatizam menos decisões do que o Jev fora da distribuição.
Como correr
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-4b@v1.0 --port 8009 # CUDA, or MLX on Apple Silicon
A partir de um tarball do lançamento:
shasum -a 256 -c SHA256SUMS.txt
tar -xzf kev-4b.tar.gz
uv run --extra serve python -m kev.serve --run kev-4b --port 8009
O SDK da TypeSafe funciona sem alterações: TypeSafeClient(api_key="local", base_url="http://127.0.0.1:8009", model="kev-latest"). O Kev-27B precisa de uma B200, H200 ou H100 80 GB: --run jaredpalmer/kev-27b@v1.0. Para implementar um endpoint HTTPS no Modal, vê skills/kev-deploy.
Recursos
Cada tarball contém um checkpoint tal como está no Hub na sua revisão de pesos (adaptador LoRA, head.pt com a temperatura, ficheiros do tokenizer, o result.json do ensaio de treino, provenance.json, training_config.json, training_metrics.json e o log), a ficha de modelo do Kev 1.0 como README.md, e a leitura bloqueada do transfer-v4 como locked_test.json. São construídos por scripts/build_release_assets.py a partir de docs/releases/kev-1.0-assets.json, e reconstruí-los dá os mesmos bytes. Cada ficheiro neles tem a data 2026-10-01 00:00 UTC, que o kev.serve reporta como a data de lançamento de um checkpoint desempacotado. Os tarballs anexados pela primeira vez em 2026-10-01 datavam os seus ficheiros de 1970-01-01, por isso o kev.serve reportava 1969-12-31; foram substituídos no mesmo dia por estes. Os pesos e todos os outros ficheiros são idênticos byte a byte; só os hashes dos tarballs mudaram.
| Ficheiro | SHA-256 | Checkpoint | SHA-256 do adaptador / cabeça |
|---|---|---|---|
kev-0.8b.tar.gz (46 MB) |
0ae144c7675f0c3f333be0bb878a0f202ab9e6fa84169fb7cb16efe6176c1ef1 |
jaredpalmer/kev-0.8b@9a45d25e |
9b908623… / f400bd12… |
kev-4b.tar.gz (131 MB) |
2e707e2ebd08980dc7881222b7024cea5606401441c1a086afb170ae7784201c |
jaredpalmer/kev-4b@139fdd94 |
90e81735… / dd633435… |
kev-9b.tar.gz (172 MB) |
acd13320b7d1b052ce989f19ca9d1d9ba5219b8beced0ee67337908aef1deb3f |
jaredpalmer/kev-9b@b5d8c18e |
2b2a70cf… / 8e1dab2c… |
O Kev-27B não está anexado, porque os seus 51 GB de pesos ultrapassam o limite de 2 GB por recurso do GitHub. Descarrega-o do Hub: jaredpalmer/kev-27b@v1.0 (commit dos pesos 28be62e9, head.pt 7968f17b…).
Em cada repositório do Hub, a tag v1.0 aponta para o commit que carregou a ficha do Kev 1.0. Esse commit alterou apenas o README.md, por isso os seus pesos são os mesmos bytes que a revisão de pesos na primeira tabela: kev-0.8b bf75a6a8, kev-4b 6cfce5c2, kev-9b db029f08, kev-27b af0e6d55.
Plano de lançamento (para o responsável; não faz parte das notas publicadas)
Concluído em 2026-10-01 (registo runs/release/kev-1.0.json; PLAN.md “Released: Kev 1.0”). Passos 3 e 4: commits apenas da ficha, com v1.0 em cada commit da ficha (0.8B bf75a6a8, 4B 6cfce5c2, 9B db029f08, 27B af0e6d55; todos os outros ficheiros inalterados). Passos 5 e 6: recursos construídos duas vezes com hashes idênticos, o lançamento publicado e marcado como Latest. Passo 7: kev-family mantido, os seus recursos removidos, o seu corpo um ponteiro para kev-1.0, as suas notas antigas em runs/release/kev-family-notes-retired.md. Passo 8: pins inalterados. Passo 9: coleção e Space verificados; o Space não foi republicado. O plano tal como escrito antes do lançamento segue abaixo. Ordem:
-
Marcadores de posição: preenchidos (2026-10-01) a partir da leitura de contexto registada da ronda 28,
runs/r28-readout/context.json(scripts/longdoc_report.py --context-margin -0.03sobreruns/r28-{4b-r10,08b-r15}-longdoc,runs/r29-9b-r18a-longdoceruns/r23-27b-k-w85-longdoc; em brutoruns/r28-context, ECE à temperatura de distribuiçãoruns/r28-context-served), com os números emdocs/claims.json. -
Fundir este PR.
-
Fichas no Hub. Carrega cada ficha do 1.0 apenas como
README.md(sem pesos): okev.publishnão é preciso para um commit apenas da ficha;hf upload jaredpalmer/kev-<size> docs/model-cards/kev-<size>.md README.md --commit-message "Kev 1.0 model card (weights unchanged)". Verifica comHfApi().model_info(..., files_metadata=True)queadapter_model.safetensors/head.pt(27B:model.safetensors.index.jsone cada shard) têm o hash abaixo. -
Tags no Hub.
v1.0nos quatro repositórios. Predefinição (conforme especificado): as revisões de pesos exatas; se o passo 3 correu primeiro, marca antes o commit da ficha, para que@v1.0mostre a ficha do 1.0 (os pesos são idênticos byte a byte; registra ambos os commits no PLAN.md).Repositório Alvo de v1.0(pesos)sha256 do adaptador / cabeça jaredpalmer/kev-0.8b9a45d25eb2ab761841196625383fa1dff0e56c1e9b908623…/f400bd12…jaredpalmer/kev-4b139fdd94f1b6a6ad80cc15e08fcb99cac885a10190e81735…/dd633435…jaredpalmer/kev-9bb5d8c18e44c60888d138b65cb6507ff0a5a448a02b2a70cf…/8e1dab2c…jaredpalmer/kev-27bmain(hojeef78cc8a34d5f426fb229c52089db189218cfe5c: pesos28be62e9, depois três commits apenas da ficha)pesos d27af6ab…/ cabeça7968f17b…hf repos tag create jaredpalmer/kev-0.8b v1.0 --revision 9a45d25eb2ab761841196625383fa1dff0e56c1e -m "Kev 1.0" hf repos tag create jaredpalmer/kev-4b v1.0 --revision 139fdd94f1b6a6ad80cc15e08fcb99cac885a101 -m "Kev 1.0" hf repos tag create jaredpalmer/kev-9b v1.0 --revision b5d8c18e44c60888d138b65cb6507ff0a5a448a0 -m "Kev 1.0" hf repos tag create jaredpalmer/kev-27b v1.0 --revision <main at release> -m "Kev 1.0" -
Recursos.
uv run python scripts/build_release_assets.py --release docs/releases/kev-1.0-assets.json --out /tmp/kev-1.0-assetsconstróikev-0.8b.tar.gz,kev-4b.tar.gz,kev-9b.tar.gz(cada um: o snapshot do Hub na revisão acima, ou seja, adaptador,head.ptcom a temperatura, ficheiros do tokenizer, oresult.jsondo ensaio,provenance.json,training_config.jsonetraining_metrics.json; a ficha do 1.0 comoREADME.md; a leitura bloqueada comolocked_test.json),SHA256SUMS.txtemanifest.json(sha256 de cada membro). Recusa um download cujo hash do adaptador ou da cabeça difira da especificação. O Kev-27B não é um recurso (51 GB; o GitHub limita um recurso a 2 GB): as notas apontam para o Hub. -
Lançamento no GitHub. Marca
kev-1.0no commit de fusão; cria o lançamento como rascunho com a parte publicada destas notas como corpo (tudo acima desta secção), anexa os três tarballs e oSHA256SUMS.txt, descarrega-os de novo,shasum -a 256 -c SHA256SUMS.txt, extrai um e serve-o, depois publica e marca como Latest. -
Um lançamento por tamanho. A política de lançamentos mantém apenas a melhor versão de cada tamanho num lançamento do GitHub. Depois de
kev-1.0ser publicado,kev-familyduplica-o: apaga os seus três tarballs e oSHA256SUMS.txte substitui o seu corpo por um ponteiro parakev-1.0(ou apaga o lançamento; decisão do Jared). As versões anteriores ficam nas tags do Hub listadas em cada ficha. -
Pins de implementação.
skills/kev-deployeskills/kev-finetunefixam oKEV_REF71d4829; os checkpoints do 1.0 não precisam de código mais recente. Move o pin apenas se uma correção de serviço posterior deva ser lançada com o 1.0. -
Coleção e Space. A coleção do Kev já lista os quatro repositórios. O Space serve o Kev-4B e o Kev-0.8B a partir de
main, que são os pesos do 1.0; nada a republicar a menos quekev/model.py,kev/api.pyoukev/checkpoint.pytenham mudado depois da sua última publicação.