/ Модель

Характеристики

Контекст
514 токенов
Параметры
124 млн
Лицензия
MIT
Архитектура
xlm-roberta · dense
Опубликована
7 сен 2026

code-daemon-ner-v1

Разметка токеновТекст → label7 профессий

Модель выделяет сущности разработки ПО в русско- и англоязычных документах, чтобы связывать описания систем с кодом.

163скачиваний за 30 дней0лайковвеса обновлены8 окт 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Code-Daemon NER v1 — модель распознавания именованных сущностей в англо- и русскоязычной прозе о разработке ПО. Она выделяет компоненты систем, API и инструменты, пути к файлам, метрики и другие сущности, чтобы связывать документацию, обсуждения и сообщения коммитов с кодом. Это не парсер исходников: модель предназначена для поиска сущностей в текстовых описаниях.

Модель основана на XLM-RoBERTa и дообучена для классификации токенов; метаданные указывают 124,3 млн параметров, а README описывает вариант с примерно 117 млн параметров. Контекст — до 128 токенов по настройке обучения; README рекомендует подавать одно-два предложения за вызов. Доступны веса Safetensors и форматы ONNX и Core ML. По оценке авторов на размеченных людьми данных, модель превосходит сравнивавшиеся zero-shot-модели для выбранных инженерных меток, но точность ограничена: авторы рекомендуют использовать её для генерации кандидатов с последующей фильтрацией, а не для автоматической разметки без проверки. Для оптимальных результатов требуется предварительно разбивать идентификаторы camelCase и snake_case. Лицензия — MIT.

Сценарии применения

  • Поиск названий компонентов в README и проектной документации
  • Извлечение API, функций и инструментов из обсуждений и сообщений коммитов
  • Выделение путей к файлам в описаниях изменений
  • Поиск алгоритмов и метрик качества в технической прозе
  • Подготовка сущностей для графа знаний документации и кода

Ограничения

Точность ограничена: модель склонна находить лишние сущности, а мягкие типы и многословные фрагменты распознаются слабо. Используйте её как генератор кандидатов с последующей фильтрацией; для результатов, соответствующих обучению, разбивайте идентификаторы camelCase и snake_case и сохраняйте длину последовательности 128 токенов.

Для каких профессий подходит7

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Также подходит для

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

code-daemon-ner-v1

A small NER model that finds software-engineering entities in prose — the sentences of a README, a design doc, an issue thread, a commit message. In Code-Daemon the spans it emits become the concept nodes that link a paragraph of documentation to the code it talks about.

What makes it different: this is prose NER, not code parsing. A parser already extracts every identifier in a source file, exactly. What it cannot do is read "the IVF rescoring path in faiss_index.zig regressed nDCG@10 by 4 points" and tell you that IVF is an algorithm, faiss_index.zig a file and nDCG@10 a metric. No public model exists for these labels, and the zero-shot ones miss the conventions that matter here — so this one was trained for them, and it runs faster on a CPU than they do on a GPU.

  • ~117M parameters — XLM-RoBERTa, 12 layers × 384 hidden, multilingual vocabulary.
  • English and Russian prose; 128 tokens — one or two sentences per call.
  • 2-input ONNX (input_ids, attention_mask) → logits [batch, seq, 17] (8 types in BIO).

Labels

tiertypewhatexamples
Corecomponenta named part of a system, including model namesDocStore, mMiniLMv2
Coreapi_endpointa callable surface: function, method, route, agent tool namesemantic_search, POST /v1/messages
Corefile_patha path or file namesrc/semantic/faiss_index.zig
Coretoolsomething you invoke: executable, runtime, service, language, hardwareTensorRT, rclone, SQL
Softalgorithma named methodBM25, Louvain
Softdata_structurea named container or layoutCSR, Prolly tree
Softconfiga knob, flag, env varjournal_mode=MEMORY, --epochs
Softmetrica measurement or unitnDCG@10, p95 latency

Core types are what a knowledge graph links on; Soft types are tolerated at lower precision.

Numbers

1 500 hand-reviewed sentences, entity level (exact span and type). The honest alternative for a private label set is a zero-shot model you hand the label names to — GLiNER, each run at its best of four prompt/threshold settings:

modelparamsCore macro-F1P / Rchunks/s
this model117M0.4260.38 / 0.5568 on a CPU
gliner-multitask-v1.0909M0.2840.23 / 0.4110 on a GPU
gliner_multi-v2.1289M0.1550.17 / 0.2339 on a GPU

Per Core type, F1:

typethis modelgliner-multitaskgliner_multi
api_endpoint0.5210.3820.006
file_path0.4970.3000.248
tool0.4250.3120.286
component0.2630.1430.080
  • Fine-tuning buys the label convention. Where a label name explains itself (file_path, tool), zero-shot gets within ~1.5×; where it is a project rule (api_endpoint includes agent tool names), it collapses. If your types are ordinary ones, a zero-shot model may serve you better.
  • The trade: recall over precision. On the strongest types it over-predicts (P 0.39–0.41, R 0.68–0.72). Use it as a candidate generator behind a filter, not as a labeller you trust unattended.
  • Soft types are weak (macro-F1 0.21; config 0.12), and multi-word spans mostly come back as single tokens.

Inside the daemon on TensorRT, a 32-sentence batch takes 3 ms of GPU and 15 ms of tokenisation — parallelise the tokenizer before looking for a faster engine.

How to use it

  • Pre-split identifiers (camelCase / snake_case → words) before tokenizing and keep seq 128: that is how it was trained, and scoring it any other way gives lower numbers.
  • Calibrated probabilities: divide the logits by T from temperature.json (0.665) before the softmax; argmax alone does not need it.
  • Shapes: TensorRT INT8 single profile seq 128; OpenVINO CPU / iGPU INT8 at batch 32, NPU INT4 at batch 8; Core ML b32 s128.
import onnxruntime as ort, numpy as np, json
from transformers import AutoTokenizer

tok    = AutoTokenizer.from_pretrained(".")            # bundled XLM-R SentencePiece
labels = json.load(open("code-daemon-ner-v1_label_map.json"))["id2label"]
T      = json.load(open("temperature.json"))["T"]
sess   = ort.InferenceSession("model.onnx", providers=["CPUExecutionProvider"])

def tag(text, max_len=128):
    enc = tok(text, return_tensors="np", truncation=True, max_length=max_len,
              return_offsets_mapping=True, return_token_type_ids=False)
    logits = sess.run(None, {"input_ids":      enc["input_ids"].astype(np.int64),
                             "attention_mask": enc["attention_mask"].astype(np.int64)})[0][0]
    probs  = np.exp(logits / T) / np.exp(logits / T).sum(-1, keepdims=True)   # calibrated
    for (a, b), row in zip(enc["offset_mapping"][0], probs):
        lab = labels[str(int(row.argmax()))]
        if lab != "O" and b > a:
            yield text[a:b], lab, float(row.max())

for span, label, p in tag("The IVF rescoring path in src/semantic/faiss_index.zig cost 4 nDCG@10 points."):
    print(f"{span!r:40} {label:18} {p:.2f}")

Out of scope: symbols in source code (use a parser), general-domain NER, any high-stakes automatic decision.

How it was made

  • Backbone: mMiniLMv2-L12-H384, a multilingual MiniLM distilled from XLM-RoBERTa-Large.
  • Labels by weak supervision: with no corpus for this label set, several independent labellers voted on each chunk and the votes were reconciled into one BIO sequence; the backbone was then fine-tuned on them and its output temperature-calibrated.
  • Evaluation is human-labelled and disjoint from the training labels.

Files

filewhat it is
model.onnxFP32, dynamic shape — the standalone path
model_static.onnx, model_int8qdt.onnxseq pinned to 128 / INT8 Q/DQ — engine-build inputs
model.safetensors, config.jsonthe weights as XLMRobertaForTokenClassification; AutoModelForTokenClassification loads them as-is; the Apple (MLX) build is prepared from this pair
sentencepiece.bpe.model, tokenizer_config.json, code-daemon-ner-v1_tokenizer.jsonthe tokenizer (SentencePiece + fast tokenizer)
code-daemon-ner-v1_label_map.jsonthe 17 BIO classes
temperature.jsonthe calibration scalar T
eval_metrics.json, manifest.jsonper-type scores; build metadata
code-daemon-ner-v1_{win_x64,linux_x64}_trt11.0_sm_{75,80,86,89,120}.engineTensorRT INT8 per OS × GPU; sm_90 (H100/H200) Linux only
code-daemon-ner-v1_ov2026.4_{cpu,igpu_lnl}_int8_b32_s128.{xml,bin}, …_npu_int4_b8_s128.*OpenVINO 2026.4 for Intel CPU, iGPU, NPU
coreml_ane/embed.mlpackage/Core ML for the Apple Neural Engine, function b32 s128; load with cpuAndNeuralEngine

A TensorRT engine loads only on the GPU architecture and TensorRT version that built it; any other machine uses OpenVINO or the ONNX.

License

Released under the MIT license. The backbone is a re-upload of Microsoft's mMiniLMv2 (microsoft/unilm, MIT); the re-upload repository itself declares no license. Neither the training corpus nor the evaluation set ships here. Not legal advice.

Attribution

Backbone: nreimers/mMiniLMv2-L12-H384-distilled-from-XLMR-Large (itself distilled from XLM-RoBERTa-Large).

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · token-classification

Можно запустить

Подбираем GPU…

Класс архитектуры
XLMRobertaForTokenClassification
Ревизия весов
f452b38

0 моделей