Kev 1.0
Kev 1.0 — первый версионированный релиз всего семейства Kev: четыре модели принятия решений, которые читают документ и набор типизированных вопросов и возвращают калиброванные вероятности по вариантам за один прямой проход, за API System One от TypeSafe. Ничего в нём не обучено заново. Он фиксирует чекпойнты, карточки моделей, оценочные наборы и код обслуживания, с которыми будет сравниваться следующее поколение Kev, с одним и тем же тегом (v1.0) в каждом репозитории Hub.
Что входит в 1.0
| Модель | Репозиторий Hub | Ревизия весов | Форма | База | Температура | Проверенный контекст |
|---|---|---|---|---|---|---|
| Kev-0.8B | jaredpalmer/kev-0.8b |
9a45d25e |
LoRA-адаптер + голова | Qwen3.5-0.8B-Base (Apache-2.0) | 2.35 | 8 192 токена |
| Kev-4B | jaredpalmer/kev-4b |
139fdd94 |
LoRA-адаптер + голова | Qwen3.5-4B-Base (Apache-2.0) | 2.41 | 8 192 токена |
| Kev-9B (v2) | jaredpalmer/kev-9b |
b5d8c18e |
LoRA-адаптер + голова | Qwen3.5-9B-Base (Apache-2.0) | 2.19 | 8 192 токена |
| Kev-27B (v2) | jaredpalmer/kev-27b |
28be62e9 |
полные веса bf16 (51 ГБ) + голова | Qwen3.8-27B, после дообучения (Apache-2.0) | 1.32 | 65 536 токенов |
Ключевые числа (путь оценки fp32, каждая модель при своей поставляемой температуре; тест transfer-v4 закрыт и читался по одному разу на модель):
| Kev-0.8B | Kev-4B | Kev-9B | Kev-27B | Jev | |
|---|---|---|---|---|---|
| Отложенные наборы данных: тест breadth-v1, индекс со случайной поправкой | 23.3 | 38.0 | 41.0 | 52.3 | 54.0 |
| Вне домена: точность на development transfer-v4 | 0.648 | 0.817 | 0.820 | 0.851 | 0.857 |
| Вне домена: точность / Brier на закрытом тесте transfer-v4 | 0.697 / 0.397 | 0.838 / 0.224 | 0.852 / 0.199 | 0.889 / 0.154 | – |
| Навыки: тест hard-v1 | 0.665 | 0.803 | 0.834 | 0.918 | – |
| Инструменты разработчика: тест devtools-v1, все источники | 0.637 | 0.756 | 0.791 | 0.790 | – |
| Реальные документы: тест documents-v1 | 0.851 | 0.903 | 0.900 | 0.908 | – |
| MMLU-Pro (transfer-v9 development) | 0.230 | 0.565 | 0.590 | 0.675 | 0.840 |
У hard-v1, devtools-v1 и documents-v1 есть обучающие сплиты, на которых обучался каждый Kev: эти строки измеряют отложенные элементы тренированных семейств, а не transfer. Строки breadth-v1 и transfer-v4 — это наборы данных, на которых ни один Kev не обучался. Jev читался только на девелоперских партициях и на тесте breadth-v1. Каждое число прослеживается до закоммиченного отчёта через docs/claims.json; остальное, с интервалами, есть в карточках моделей (docs/model-cards/).
Что изменилось с прошлого релиза семейства
Отсчитывается от GitHub-релиза kev-family в его первом собранном виде для текущего семейства 2026-09-24 (Kev-27B v1, Kev-9B v1 и те же Kev-4B и Kev-0.8B, что и здесь). Его обновления от 2026-09-30 (Kev-27B v2, Kev-9B v2) здесь тоже перечислены, поскольку именно в 1.0 они становятся частью версионированного релиза.
- Kev-27B v2: полные веса. Каждый вес Qwen3.8-27B дообучен на одну эпоху на корпусе из 145 840 записей, затем усреднён 0.85 / 0.15 с v1. Против v1 на тесте: отложенные наборы данных +1.2 п.п. [+0.3, +2.2], отложенные семейства задач +5.3 [+3.7, +6.8], навыки, инструменты и документы +8.9 [+7.5, +10.3]; закрытый тест вне домена 0.889 против 0.896, Brier 0.154 против 0.160. Хуже и самоувереннее на длинных контрактах (CUAD ECE 0.053 против 0.007). v1 находится в
jaredpalmer/kev-27b@v1-lora. - Kev-9B v2. v1 плюс одна эпоха на данных документов и навыков, которые уже были у Kev-4B и Kev-0.8B. Против v1 на тесте: hard-v1 + devtools-v1 +18.7 п.п. [+16.7, +20.8], documents-v1 +7.1 [+4.7, +9.2]; без изменений на закрытом тесте вне домена (0.852 в обоих) при Brier 0.199 против 0.224. v1 находится в
jaredpalmer/kev-9b@v1. - Никакого молчаливого усечения. Раньше сервер обрезал состояние длиннее своего лимита, не сообщая об этом. Теперь он отклоняет состояние свыше 65 536 токенов с 422, где указаны число токенов и лимит;
KEV_TRUNCATE_STATES=1возвращает усечение обратно, и тогда каждый ответ такого сервера говоритtruncated. Навыки deploy и fine-tune фиксируютKEV_REFна коммите с этим исправлением и с изменениями для длинных документов и MLX ниже (71d4829), а Space был переопубликован после исправления. - Длинные документы на всех размерах. Путь оценки держал внимание fp32 для длинных строк на математическом ядре, поэтому Kev-0.8B, 4B и 9B упирались в нехватку памяти GPU на состояниях в 32k–64k токенов. Теперь длинные строки используют экономичное по памяти ядро в fp32: Kev-4B читает состояние в 61k токенов за 17.2 с при 17.2 ГиБ сверх весов на H100, а короткие строки сохраняют свои логиты бит-в-бит. Именно это делает измеримыми проверенные длины контекста выше.
- Apple Silicon. Бэкенд MLX загружает чекпойнты с полными весами как есть, без слияния, что даёт Kev-27B путь на Mac (ожидается около 51 ГБ плюс рабочая память; на этом размере ещё не запускался). Длинные состояния префиллятся по 1 024 токена за раз, а кэш вытесняется перед прямым проходом, поэтому Kev-4B обслуживает состояние в 65 000 токенов на 32 ГБ M5 при пике 13.0 ГБ (84.5 с заново, 716 мс из кэша).
- Происхождение ядер. Каждый отчёт об оценке и каждый прогон теперь фиксирует набор ядер, от которого зависят его логиты (версии пакетов, GPU, dtype, реализации attention и DeltaNet), после того как изменение ядра в образе оценки сдвинуло чтения Kev-27B v1 на 0.03–0.06 по вероятности без изменений в собственном коде Kev.
- Аудит оценки. Три набора были удалены как непригодные для выбора моделей: scienthoon (шаблонные тикеты, один вопрос, на который текст ответить не может), WANLI-v2 / WANLI-v1 (четверть золотых меток — это выбор одного из двух несогласных аннотаторов) и публичные оценки TypeSafe (золото от двух закрытых моделей, слишком мало вопросов). Ключевые панели исключают элементы, которые аудит счёл неотвечаемыми или неразмеченными. Цифры прошлых релизов по этим наборам сохранены в их записях, а не в карточках 1.0.
- Калибровка. Kev-4B и Kev-0.8B поставляются с температурами, подогнанными на отложенных элементах их обучающих данных. Зарегистрированная перенастройка на отложенных наборах данных была оценена для обеих и принята ни для одной: она не улучшила Kev-4B (разница Brier −0.0001 [−0.0005, +0.0003]) и ухудшила калибровку Kev-0.8B на его семействах документов и навыков сильнее зарегистрированного допуска. Kev-9B и Kev-27B уже поставляются с температурами по отложенным наборам данных.
- Обучающие данные опубликованы. Обучающие партиции documents-v1 и hard-v1 находятся в датасете
jaredpalmer/kev-suites, поэтому обучающие данные малых моделей можно получить и проверить по хешам. - Проверенная длина контекста. Каждая карточка теперь указывает самое длинное состояние, на котором точность на контрактах CUAD остаётся в пределах 3 п.п. (95 % нижняя граница) от точности той же модели при 8k токенов. Kev-27B держится до 65 536 токенов, то есть до лимита обслуживания (его 64k нижняя граница −2.4 п.п.). Kev-0.8B, 4B и 9B подтверждают только свои обученные 8 192: каждый уже выходит за допуск на 16k (нижние границы −8.5, −3.4 и −3.7 п.п.), поэтому за пределами 8k токенов их ответы на длинных документах измерением не покрыты.
- Формальные карточки моделей. Все четыре карточки следуют одной структуре: сводка, детали, назначение и области вне охвата, как использовать, обучающие данные и процедура, оценка, ограничения, риски, вычисления, происхождение.
Известные ограничения
- Прирост в распределении. Большие улучшения последнего года — на наборах, чьи обучающие сплиты входят в обучающие данные. На наборах данных, где ни один Kev не обучался, Kev-27B отстаёт от Jev на 1.7 пункта индекса на тесте breadth-v1, а меньшие размеры — на 13–31 пункт.
- Необученные длины. Kev-0.8B, 4B и 9B обучались на состояниях не длиннее 7 552 токенов, а Kev-27B — не длиннее 32 768; сервер принимает 65 536. Используйте проверенную длину контекста, а не лимит обслуживания.
- Kev-27B на длинных контрактах менее точна, чем v1, и самоуверенна (CUAD test ECE 0.053 против 0.007); перенастройте температуру на собственных документах или используйте
@v1-loraдля проверки контрактов. - Kev-0.8B и маршрутизация инструментов. Её точность When2Call упала ниже случайной (0.133 на тесте) после стадии документов и навыков; не используйте её для маршрутизации вызовов инструментов.
- Арифметика дат — самое слабое семейство на каждом размере ниже 27B (точность политики
deadline0.35 / 0.65 / 0.725 против 0.95 у Jev);KEV_DATE_FACTS=1помогает. - Знания задаются базой (MMLU-Pro 0.230–0.675 против 0.840 у Jev).
- Kev-9B на Mac не измерялась, а Kev-27B на Mac, как ожидается, помещается в 96–128 ГБ, но не запускалась.
- Отбор. Kev-27B v2 и Kev-9B v2 были пересмотрены по правилу после аудита с известными предыдущими девелоперскими чтениями; их тестовые запасы оптимистичны.
- Одна температура на модель не может переупорядочить уверенности, поэтому при бюджете ошибок 5 % модели автоматизируют меньше решений, чем Jev, вне домена.
Как запустить
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
Из тарболла релиза:
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
TypeSafe SDK работает без изменений: TypeSafeClient(api_key="local", base_url="http://127.0.0.1:8009", model="kev-latest"). Kev-27B нужен один B200, H200 или H100 80 ГБ: --run jaredpalmer/kev-27b@v1.0. Чтобы развернуть HTTPS-эндпоинт на Modal, см. skills/kev-deploy.
Ассеты
Каждый тарболл содержит один чекпойнт в том виде, в каком он есть на Hub на своей ревизии весов (LoRA-адаптер, head.pt с температурой, файлы токенизатора, result.json обучающего прогона, provenance.json, training_config.json, training_metrics.json и журнал), карточку модели Kev 1.0 как README.md и закрытое чтение transfer-v4 как locked_test.json. Они собираются с помощью scripts/build_release_assets.py из docs/releases/kev-1.0-assets.json, и повторная сборка даёт те же байты. Каждый файл в них датирован 2026-10-01 00:00 UTC, что kev.serve сообщает как дату релиза распакованного чекпойнта. Тарболлы, впервые прикреплённые 2026-10-01, датировали свои файлы 1970-01-01, поэтому kev.serve сообщал 1969-12-31; в тот же день они были заменены на эти. Веса и каждый другой файл побайтово идентичны; изменились только хеши тарболлов.
| Файл | SHA-256 | Чекпойнт | adapter / head SHA-256 |
|---|---|---|---|
kev-0.8b.tar.gz (46 МБ) |
0ae144c7675f0c3f333be0bb878a0f202ab9e6fa84169fb7cb16efe6176c1ef1 |
jaredpalmer/kev-0.8b@9a45d25e |
9b908623… / f400bd12… |
kev-4b.tar.gz (131 МБ) |
2e707e2ebd08980dc7881222b7024cea5606401441c1a086afb170ae7784201c |
jaredpalmer/kev-4b@139fdd94 |
90e81735… / dd633435… |
kev-9b.tar.gz (172 МБ) |
acd13320b7d1b052ce989f19ca9d1d9ba5219b8beced0ee67337908aef1deb3f |
jaredpalmer/kev-9b@b5d8c18e |
2b2a70cf… / 8e1dab2c… |
Kev-27B не прикреплён, потому что его 51 ГБ весов превышают лимит GitHub в 2 ГБ на ассет. Скачайте его с Hub: jaredpalmer/kev-27b@v1.0 (коммит весов 28be62e9, head.pt 7968f17b…).
В каждом репозитории Hub тег v1.0 указывает на коммит, который загрузил карточку Kev 1.0. Этот коммит изменил только README.md, поэтому его веса — те же байты, что и ревизия весов в первой таблице: kev-0.8b bf75a6a8, kev-4b 6cfce5c2, kev-9b db029f08, kev-27b af0e6d55.
План релиза (для сопровождающего; не часть опубликованных заметок)
Сделано 2026-10-01 (запись runs/release/kev-1.0.json; PLAN.md «Released: Kev 1.0»). Шаги 3 и 4: коммиты только с карточками, с v1.0 на каждом коммите карточки (0.8B bf75a6a8, 4B 6cfce5c2, 9B db029f08, 27B af0e6d55; все прочие файлы без изменений). Шаги 5 и 6: ассеты собраны дважды с идентичными хешами, релиз опубликован и помечен как Latest. Шаг 7: kev-family сохранён, его ассеты удалены, его тело — указатель на kev-1.0, его прежние заметки в runs/release/kev-family-notes-retired.md. Шаг 8: пины без изменений. Шаг 9: коллекция и Space проверены; Space не переопубликовывался. Далее следует план в том виде, в каком он был написан до релиза. Порядок:
-
Плейсхолдеры: заполнены (2026-10-01) из зарегистрированного чтения контекста раунда 28,
runs/r28-readout/context.json(scripts/longdoc_report.py --context-margin -0.03поruns/r28-{4b-r10,08b-r15}-longdoc,runs/r29-9b-r18a-longdocиruns/r23-27b-k-w85-longdoc; сырыеruns/r28-context, ECE при поставляемой Truns/r28-context-served), с числами вdocs/claims.json. -
Смёржить этот PR.
-
Карточки Hub. Загрузить каждую карточку 1.0 только как
README.md(без весов):kev.publishдля коммита только с карточкой не нужен;hf upload jaredpalmer/kev-<size> docs/model-cards/kev-<size>.md README.md --commit-message "Kev 1.0 model card (weights unchanged)". Проверить черезHfApi().model_info(..., files_metadata=True), чтоadapter_model.safetensors/head.pt(27B:model.safetensors.index.jsonи каждый шард) имеют хеши, как ниже. -
Теги Hub.
v1.0во всех четырёх репозиториях. По умолчанию (как указано): точные ревизии весов; если шаг 3 выполнен первым, вместо этого пометить тегом коммит карточки, чтобы@v1.0показывал карточку 1.0 (веса побайтово идентичны; зафиксировать оба коммита в PLAN.md).Репозиторий цель v1.0(веса)adapter / head sha256 jaredpalmer/kev-0.8b9a45d25eb2ab761841196625383fa1dff0e56c1e9b908623…/f400bd12…jaredpalmer/kev-4b139fdd94f1b6a6ad80cc15e08fcb99cac885a10190e81735…/dd633435…jaredpalmer/kev-9bb5d8c18e44c60888d138b65cb6507ff0a5a448a02b2a70cf…/8e1dab2c…jaredpalmer/kev-27bmain(сегодняef78cc8a34d5f426fb229c52089db189218cfe5c: веса28be62e9, затем три коммита только с карточками)веса d27af6ab…/ head7968f17b…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" -
Ассеты.
uv run python scripts/build_release_assets.py --release docs/releases/kev-1.0-assets.json --out /tmp/kev-1.0-assetsсобираетkev-0.8b.tar.gz,kev-4b.tar.gz,kev-9b.tar.gz(каждый: снимок Hub на ревизии выше, то есть адаптер,head.ptс температурой, файлы токенизатора,result.jsonпрогона,provenance.json,training_config.jsonиtraining_metrics.json; карточка 1.0 какREADME.md; закрытое чтение какlocked_test.json),SHA256SUMS.txtиmanifest.json(sha256 каждого члена). Он отклоняет загрузку, чей хеш адаптера или головы отличается от спецификации. Kev-27B не ассет (51 ГБ; GitHub ограничивает ассет 2 ГБ): заметки указывают на Hub. -
Релиз GitHub. Пометить тегом
kev-1.0коммит слияния; создать релиз как черновик с опубликованной частью этих заметок в теле (всё выше этого раздела), прикрепить три тарболла иSHA256SUMS.txt, скачать их обратно,shasum -a 256 -c SHA256SUMS.txt, распаковать один и запустить его, затем опубликовать и пометить как Latest. -
Один релиз на размер. Политика релизов оставляет в GitHub-релизе только лучшую версию каждого размера. Как только
kev-1.0опубликован,kev-familyего дублирует: удалить его три тарболла иSHA256SUMS.txtи заменить его тело указателем наkev-1.0(либо удалить релиз; решать Jared). Более ранние версии остаются на тегах Hub, перечисленных в каждой карточке. -
Пины деплоя.
skills/kev-deployиskills/kev-finetuneфиксируютKEV_REF71d4829; чекпойнтам 1.0 более новый код не нужен. Двигайте пин только если более позднее исправление обслуживания должно выйти с 1.0. -
Коллекция и Space. Коллекция Kev уже перечисляет четыре репозитория. Space обслуживает Kev-4B и Kev-0.8B из
main, а это и есть веса 1.0; переопубликовывать нечего, если толькоkev/model.py,kev/api.pyилиkev/checkpoint.pyне изменились после его последней публикации.