Skip to content

feat(MODEL-GLINER25-DECIDE): GLiNER2.5-Decide classification decision model - #3318

Closed
mudler-agent wants to merge 2 commits into
mainfrom
row/MODEL-GLINER25-DECIDE
Closed

mudler-agent wants to merge 2 commits into
mainfrom
row/MODEL-GLINER25-DECIDE

Conversation

@mudler-agent

Copy link
Copy Markdown
Collaborator

MODEL-GLINER25-DECIDE: GLiNER2.5-Decide classification decision model

GLiNER2.5-Decide (fastino/GLiNER2.5-Decide) is a System 1 decision model built on a 340M DeBERTa-v3-large encoder + classification head: Linear(H, 2H) → ReLU → Linear(2H, 1).

Architecture

  • Decision pipeline: build [CLS] text [SEP] [P] task [L] label1 [L] label2 ... [SEP], forward DeBERTa v2 encoder, extract label embeddings at [L] marker positions, run classification head
  • Arch name: "SpanExtractor"
  • Reuses existing DeBERTa v2 encoder (deberta_v2::ForwardHost) and Gliner2ModelWeights (LoadGliner2Weights)

New files

  • include/vllm/model_executor/models/gliner25_decide.h — head weights, params, forward decls
  • include/vllm/model_executor/models/gliner25_decide_inference.h — Gliner25DecideResult + Gliner25DecideInference()
  • src/vllm/model_executor/models/gliner25_decide_head.cpp — host classifier forward, softmax, sigmoid
  • src/vllm/model_executor/models/gliner25_decide_registry.cpp — factory, load, prepare, forward, inference, registration
  • tests/vllm/models/test_gliner25_decide.cpp — 9 tests, 21 assertions (all pass)

Modified

  • CMakeLists.txt — add gliner25_decide_head.cpp, gliner25_decide_registry.cpp
  • tests/CMakeLists.txt — add test_gliner25_decide
  • src/capi/vllm_c.cpp — allowlist SpanExtractor + Gliner25DecideInference dispatch in vllm_decide
  • src/vllm/entrypoints/openai/server_main.cpp — SpanExtractor decision dispatch block

Spec

.agents/specs/gliner2.5-decide.md

FOLLOWING_AGENTS_PROTOCOL
Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:glm5.2 [nib]

…-DECIDE specs

Add five SystemOne-class decision model specs to .agents/specs/:

- MODEL-CLM: frozen Qwen3-8B encoder + dual projection heads
  (state head + action head), scaled-cosine scoring, /v1/systemone
- MODEL-TEV1: autoregressive decision model (Qwen3.5-4B SFT),
  generates option letter via /v1/chat/completions (not /v1/systemone)
- MODEL-XOR: 35B MoE (Qwen3.6-A3B) + multimodal (up to 8 images),
  forward+reverse option-order eval, SGLang oracle
- MODEL-JEV: structured generation for DiffusionGemma (vLLM PR #57250),
  canvas seeding, read-only requests, pinned positions, logprobs
- MODEL-GLINER25-DECIDE: DeBERTa-v3-large + classification head
  (Linear→ReLU→Linear), reuses existing DeBERTa v2 encoder

Each spec follows the kev.md template structure. No implementation
code — specs only, per AGENTS.md §115 (spec before code).
… model (DeBERTa-v3 + classifier head)

GLiNER2.5-Decide (fastino/GLiNER2.5-Decide) is a System 1 decision model
built on a 340M DeBERTa-v3-large encoder + classification head:
  Linear(H, 2H) → ReLU → Linear(2H, 1)
State-dict keys: classifier.0.weight/bias, classifier.2.weight/bias.

Decision pipeline: build the sequence
  [CLS] text [SEP] [P] task [L] label1 [L] label2 ... [SEP]
forward the DeBERTa v2 encoder, extract label embeddings at [L] marker
positions, run the classification head, return per-option logits.

Arch name: "SpanExtractor". Reuses the existing DeBERTa v2 encoder
(deberta_v2::ForwardHost) and Gliner2ModelWeights (LoadGliner2Weights).

New files:
  include/vllm/model_executor/models/gliner25_decide.h            — head weights, params, forward decls
  include/vllm/model_executor/models/gliner25_decide_inference.h  — Gliner25DecideResult + Gliner25DecideInference()
  src/vllm/model_executor/models/gliner25_decide_head.cpp          — host classifier forward, softmax, sigmoid
  src/vllm/model_executor/models/gliner25_decide_registry.cpp     — factory, load, prepare, forward, inference, registration
  tests/vllm/models/test_gliner25_decide.cpp                       — 9 tests, 21 assertions (all pass)

Modified:
  CMakeLists.txt                                                   — add gliner25_decide_head.cpp, gliner25_decide_registry.cpp
  tests/CMakeLists.txt                                             — add test_gliner25_decide
  src/capi/vllm_c.cpp                                              — allowlist SpanExtractor + Gliner25DecideInference dispatch
  src/vllm/entrypoints/openai/server_main.cpp                      — SpanExtractor decision dispatch block

Spec: .agents/specs/gliner2.5-decide.md
Issue: .agents/issues/MODEL-GLINER25-DECIDE/ISSUE-LOCAL-01M3APZC6GKX9ME6AE6336D3VY.md

FOLLOWING_AGENTS_PROTOCOL
Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:glm5.2 [nib]
@mudler-agent

Copy link
Copy Markdown
Collaborator Author

Closing: the model implementation, tests, and docs from this PR were merged to main via #3324 (feat/parakeet-diarization). All model files are on main: clm_head.cpp, clm_registry.cpp, gliner25_decide_head.cpp, gliner25_decide_registry.cpp, xor_registry.cpp, tev1_registry.cpp, and all test files. E2E verified: CLM, GLiNER2.5-Decide, and Tev1-4B all load and serve correctly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants