Skip to page content
SAVRN
Search Plan a project

Open-weight model · Zero-shot classification

finecat-nli-v2-xl

by Lee Miller dleemiller/finecat-nli-v2-xl

finecat-nli-v2-xl is an open-weight model for zero-shot classification from Lee Miller, released under Apache License 2.0. It has 1B parameters and a 7,999-token context. At 16-bit it needs about 2.5 GB of GPU memory, which fits on 1x MI300X from $1.85 an hour, at the lowest prices in the SAVRN Index. It draws 31 downloads a month.

This model is a fine-tune of jhu-clsp/ettin-encoder-1b, trained on the dleemiller/FineCat-NLI-Reason dataset, a compilation of several high-quality NLI data sources with quality screening and reduction of easy samples in the training split.

Parameters1B
Context7,999
Weights4.1 GB
Licenseapache-2.0
AccessOpen weights
Monthly Downloads31

Runs On

What it takes to serve finecat-nli-v2-xl (1B parameters): the memory its weights need at each precision, and the cheapest way to rent enough data-center GPUs to hold them.

PrecisionWeightsMemory neededCheapest setupPer hourAlso fits
16-bit 2.1 GB 2.5 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00
8-bit 1.0 GB 1.2 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00
4-bit 0.5 GB 0.6 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00

Memory is the weights at that precision plus 20% for the runtime and a short context; a long context needs more. Prices are the lowest on-demand hourly rates in the SAVRN Index, read Oct 20, 2026.

finecat-nli-v2-xl on every accelerator the SAVRN Index prices, at every precision

Model Card

By Lee Miller, published under apache-2.0, revision 536c87b53a3b.

This model is a fine-tune of jhu-clsp/ettin-encoder-1b, trained on the dleemiller/FineCat-NLI-Reason dataset, a compilation of several high-quality NLI data sources with quality screening and reduction of easy samples in the training split. Also includes additional NLI, fact verification and long document sources (2.05M pairs in total). The training uses logit distillation from an NLI finetune of Qwen3.8-27B. \begin{equation} \mathcal{L} = \alpha \cdot \mathcal{L}{\text{CE}}(z^{(s)}, y) + \beta \cdot T^2 \cdot \mathrm{KL}\left(\sigma(z^{(t)}/T) \,\|\, \sigma(z^{(s)}/T)\right) \end{equation} where \\(z^{(s)}\\) and \\(z^{(t)}\\) are the student and teacher logits, \\(y\\) are the ground…

Read Lee Miller's full model card

Table of Contents

  • Overview
  • NLI Evaluation Results
  • Usage
  • Recommended Applications
  • Extended Evaluation (45 datasets)
  • Acknowledgments
  • Citation

Overview

This model is a fine-tune of jhu-clsp/ettin-encoder-1b, trained on the dleemiller/FineCat-NLI-Reason dataset, a compilation of several high-quality NLI data sources with quality screening and reduction of easy samples in the training split. Also includes additional NLI, fact verification and long document sources (2.05M pairs in total). The training uses logit distillation from an NLI finetune of Qwen3.8-27B.

Distillation loss looks like this: $$ \begin{equation} \mathcal{L} = \alpha \cdot \mathcal{L}_{\text{CE}}(z^{(s)}, y) + \beta \cdot T^2 \cdot \mathrm{KL}\left(\sigma(z^{(t)}/T) \,|\, \sigma(z^{(s)}/T)\right) \end{equation} $$

where \(z^{(s)}\) and \(z^{(t)}\) are the student and teacher logits, \(y\) are the ground truth labels, \(\alpha = 0.2\), \(\beta = 0.8\) and \(T = 1\).

Training inputs keep the full documents the teacher labelled (up to 8k tokens). The model was trained for 3 epochs at a constant learning rate followed by a 1-epoch cooldown. The released weights are an average of the final weights and earlier exponential-moving-average checkpoints, with the output temperature calibrated on the validation split.


NLI Evaluation Results

F1-Micro scores (equivalent to accuracy) for each dataset. Performance was measured at bs=32 using a Nvidia Blackwell PRO 6000 Max-Q.

Model finecat mnli mnli_mismatched snli anli_r1 anli_r2 anli_r3 wanli lingnli Throughput (samples/s) Peak GPU Mem (MB)
dleemiller/finecat-nli-v2-xl 0.8445 0.9202 0.9191 0.9356 0.7860 0.6600 0.6067 0.7710 0.8834 254.42 4649.37
dleemiller/finecat-nli-ultra-l 0.8388 0.9127 0.9131 0.9303 0.7910 0.6400 0.5833 0.7694 0.8714 624.67 1857.54
dleemiller/finecat-nli-v2-l 0.8359 0.9165 0.9127 0.9328 0.7740 0.6020 0.5733 0.7674 0.8776 636.71 1982.06
MoritzLaurer/DeBERTa-v3-large-mnli-fever-anli-ling-wanli 0.8233 0.9121 0.9079 0.8898 0.7960 0.6830 0.6400 0.7700 0.8821 454.96 3250.44
dleemiller/finecat-nli-l 0.8227 0.9152 0.9265 0.9162 0.7480 0.5700 0.5433 0.7706 0.8742 539.04 1838.06
tasksource/ModernBERT-large-nli 0.7959 0.8983 0.9229 0.9188 0.7260 0.5110 0.4925 0.6978 0.8504 543.44 1838.06
dleemiller/ModernCE-large-nli 0.7811 0.9088 0.9205 0.9273 0.6630 0.4860 0.4408 0.6576 0.8566 540.74 1838.06
cross-encoder/nli-deberta-v3-large 0.7618 0.9019 0.9049 0.9220 0.5300 0.4170 0.3758 0.6548 0.8466 448.35 3250.44

Usage

Label Map:

  • entailment: 0
  • neutral: 1
  • contradiction: 2

Direct Usage (Sentence Transformers)

First install the Sentence Transformers library:

pip install -U sentence-transformers

Then you can load the model and run inference.

from sentence_transformers import CrossEncoder
import numpy as np

model = CrossEncoder("dleemiller/finecat-nli-v2-xl")
id2label = model.model.config.id2label  # {0:'entailment', 1:'neutral', 2:'contradiction'}

pairs = [
    ("The glass fell off the counter and shattered on the tile.",
     "The glass broke when it hit the floor."),          # E
    ("The store opens at 9 a.m. every day.",
     "The store opens at 7 a.m. on weekdays."),          # C
    ("A researcher presented results at the conference.",
     "The presentation won the best paper award."),       # N
    ("It started raining heavily, so the match was postponed.",
     "The game was delayed due to weather."),             # E
    ("Every seat on the flight was taken.",
     "There were several empty seats on the plane."),     # C
]

logits = model.predict(pairs)  # shape: (5, 3)

for (prem, hyp), row in zip(pairs, logits):
    pred_idx = int(np.argmax(row))
    pred = id2label[pred_idx]
    print(f"[{pred}]  Premise: {prem}  |  Hypothesis: {hyp}")


Recommended Applications

Frame each check as a premise (text) and hypothesis (statement), and use the entailment probability.

Application Example hypothesis Supporting results
Zero-shot tagging / topic classification "This text is about billing." zs_meta, fin_topics
Routing and decisions in agent pipelines "The user wants to cancel an order." zs_meta, mnli, snli
RAG grounding / hallucination checks Each answer sentence vs. retrieved passages ragtruth, wice, vitaminc
Contract and policy review "The agreement permits sharing data with third parties." contractnli_a/b, control, docnli
Biomedical and health claim checking Claim vs. abstract, clinical note or trial eligibility criteria sdoh_nli, biosift, bionli, scifact, pubhealth, nli4ct
Logical / rule-based reasoning over documents "Under these rules, the applicant qualifies." fol, control
Dialogue fact-checking Assistant reply vs. knowledge source dialfact, vitaminc
Guardrails / policy matching Policy statement vs. user or model text crossingguard
Stance detection "The author supports the proposal." vast

Less suited: financial and general legal verification (findver, legal_domain), and presupposition reasoning (nope_adv).


Extended Evaluation (45 datasets)

Accuracy on the test splits of 45 NLI and adjacent datasets. 2-way datasets (entailed vs. not) are scored as entailment vs. any non-entailment prediction. DocNLI and VitaminC are evaluated on fixed random subsets of 1,000 and 10,000 pairs. FRANK (news-summary factuality) is scored per summary sentence: each sentence vs. its source article, labelled by the majority annotator judgment.

Dataset n finecat-nli-v2-xl 27B teacher (fast mode)
finecat 18012 0.8445 0.8656
mnli 9815 0.9202 0.9311
mnli_mismatched 9830 0.9191 0.9305
snli 9824 0.9356 0.9399
anli_r1 1000 0.7860 0.8630
anli_r2 1000 0.6600 0.7490
anli_r3 1200 0.6067 0.7100
wanli 5000 0.7710 0.7796
lingnli 7361 0.8834 0.8958
glue_diagnostic 1100 0.7582 0.8118
med 5380 0.8147 0.8039
nan_nli 258 0.7171 0.7403
scone_test 1000 1.0000 0.9980
nmonli_test 200 1.0000 1.0000
conjnli 623 0.7191 0.7335
nope_adv 345 0.5739 0.5768
nli4ct 199 0.8141 0.8693
sdoh_nli 990 0.9879 0.9848
healthver 230 0.7609 0.7565
scifact 300 0.8733 0.8433
biosift 1000 0.9200 0.9210
scientsbank 971 0.7508 0.7683
beetle 819 0.6422 0.6325
legal_domain 1163 0.4918 0.6389
findver 500 0.6560 0.7660
dialfact 1499 0.8412 0.8586
frank_sent 3176 0.6870 0.8234
ragtruth 1497 0.8544 0.8691
vast 1500 0.7933 0.8053
zs_meta 5400 0.9304 0.9344
seahorse 800 0.8562 0.8638
pubhealth 600 0.8500 0.8650
bionli 600 0.9133 0.9333
fin_topics 600 0.9767 0.9633
vitaminc 10000 0.9062 0.9351
docnli 1000 0.8530 —
contractnli_a 1707 0.9279 0.9285
contractnli_b 2074 0.8954 0.9021
control 800 0.7525 0.8087
fol 10277 0.8727 0.8430
scitail 2126 0.9661 0.9652
wice 958 0.8810 0.9144
sick 4906 0.9317 0.9213
crossingguard 5397 0.9250 0.9344
hans 15000 0.8463 0.9209

Macro average over the 45 datasets: 0.8282.

Acknowledgments

We thank the creators and contributors of jhu-clsp (Ettin) and the Qwen team for making their work available. This model would not be possible without their efforts and open source contributions.

Citation

@misc{nli-compiled-2025,
  title = {FineCat NLI Dataset},
  author = {Lee Miller},
  year = {2025},
  howpublished = {Refined compilation of 6 major NLI datasets}
}

Configuration

Architecture
ModernBertForSequenceClassification
Context length (tokens)
7,999
Layers
28
Hidden size
1,792
Feed-forward size
3,840
Attention heads
28
Vocabulary size
50,368
Model type
modernbert

Identity and Version

Repository
dleemiller/finecat-nli-v2-xl
Publisher
Lee Miller
Task
Zero-shot classification
Modality
Text
Library
sentence-transformers
Parameters
1B parameters
Languages
en
Revision
536c87b53a3b73cdf4d4f95c6fedae1ac1bc72d2
First published
2026-10-15
Last updated
2026-10-17

Files and Weights

14 files, 4.1 GB in total. The weights are 1 file totalling 4.1 GB in safetensors.

Weights1 file · 4.1 GB
Configuration6 files · 11.0 KB
Tokenizer2 files · 3.6 MB
Documentation1 file · 9.4 KB
Other3 files · 1.0 MB
Repository1 file · 1.7 KB
Every file
FileTypeSizeSHA-256
model.safetensorsWeights4.1 GB 49e3d15bc708
calibration.jsonConfiguration887 B —
config.jsonConfiguration2.3 KB —
config_sentence_transformers.jsonConfiguration259 B —
greedy_soup.jsonConfiguration7.2 KB —
modules.jsonConfiguration131 B —
sentence_bert_config.jsonConfiguration225 B —
README.mdDocumentation9.4 KB —
finecatv2.jpegOther321.9 KB c6e5f5562cb2
finecatv2_dark.pngOther467.1 KB e31a231e8f03
finecatv2_light.pngOther247.7 KB cfc7d386b98c
.gitattributesRepository1.7 KB —
tokenizer.jsonTokenizer3.6 MB —
tokenizer_config.jsonTokenizer571 B —

License and Download

License
apache-2.0
Access
Open weights, no gate
Download size
4.1 GB
Download from Lee Miller

Released by Lee Miller through its official repository on Hugging Face. Read the license.

Built From

  • Derived from jhu-clsp/ettin-encoder-1b
  • Trained on (disclosed) dleemiller/FineCat-NLI

Evaluations

Each result is shown as reported, with the conditions its reporter stated. None is a SAVRN measurement. A comparison lines two results up only when their configuration, unit and setup are all stated and identical.

BenchmarkConditionsResultReported byRevisionDate
dleemiller FineCat NLI test Task Cross Encoder ClassificationMetric AccuracyComparison conditions not established 0.8445 dleemiller
Publisher reported
Evaluated revision not stated —

Memory Requirements

PrecisionWeights in memory
As published4.1 GB
16-bit2.1 GB
8-bit1.0 GB
4-bit0.5 GB

Weights only, from the published parameter count; the key-value cache and runtime add to this.

Questions About finecat-nli-v2-xl

How much GPU memory does finecat-nli-v2-xl need?

About 2.5 GB at 16-bit and 0.6 GB at 4-bit: the weights (1B parameters) plus a working margin. A long context needs more.

What is the cheapest GPU to run finecat-nli-v2-xl on?

At 16-bit, 1x MI300X from $1.85 an hour; at 4-bit, 1x MI300X from $1.85 an hour, at the lowest on-demand prices the SAVRN Index lists.

Can I use finecat-nli-v2-xl commercially?

Yes. finecat-nli-v2-xl is released under Apache License 2.0. The Apache License 2.0 is a permissive open-source license. It permits commercial use, modification and redistribution. It requires keeping the license and copyright notices and any NOTICE file, stating significant changes, and it includes an express patent grant from contributors.

What is finecat-nli-v2-xl's context length?

7,999 tokens, from the maximum position embeddings in its published configuration.

Similar Models

Model · Zero-shot classification

d3-lite

vLLM Semantic Router

d3-lite is the 0.8B multimodal foundation decision model of Decision 3.0, the decision models of vLLM Semantic Router. Give it an input (text or JSON, optionally with images) and the questions you need answered: pick one of several options, say yes or no, or rate on a scale. It answers them all in one call and returns a probability for every answer, without generating text. - Jev Decision Index 0.3, public suite: 36.94, measured with the official 0.3 kit on the released weights: all 140,178 public requests answered, none unsupported. - +16.4 on the public suite over Decision 2.0 (its 0.8B model: 20.57 on the board), ahead in all five areas. Images go before the text of the request, each…

Open weights apache-2.0 853M parameters 262,144 tokens transformers

Model · Zero-shot classification

Vela-2.0-0.8B

vLLM Semantic Router

Open Foundation Routing Models Routing decisions. Safety checks. Precise text spans. The compact hybrid member of Vela 2.0: a 756M-parameter model for multilingual routing, safety checks and span-level decisions through one interface. Define options, labels and rubrics at request time. Ask multiple named questions about a request, context and answer, and receive structured decisions with the text spans that support your workflow. 1. Compact deployment. About 3 GB of GPU memory for FP32 parameters, with a 16,384-token input limit. 2. Routing and safety together. Use one request for routing, prompt-attack checks, PII and unsupported-claim detection. 3. Decisions at span resolution. Return…

Open weights apache-2.0 755M parameters

Model · Zero-shot classification

OpenThai-SystemOne

iApp Technology

An open Thai + English "System One" decision model. It does not generate text. Given a state (any text or JSON) and typed questions, it returns calibrated probabilities over the options in one forward pass: The request/response contract mirrors TypeSafe's POST /v1/systemone so code written for the TypeSafe SDK can be pointed at this model unchanged. Typical uses: ticket routing, moderation, intent detection, RAG relevance judging, LLM-output verification, and computer-use / browser-agent action selection (which element to click, which tool to call). Gated-DeltaNet / attention, 262k context), vision encoder removed, then continued-pretrained on ~5B tokens of Thai (web, Wikipedia, parallel…

Open weights apache-2.0 753M parameters 262,144 tokens

Model · Zero-shot classification

chinese-decision-0.8b

Quincyqiang

各尺寸、部署格式与外部模型对比。2B BF16 与 2B Q80 均已公开发布并完成 CJ-Bench 全量评测:2B 整体准确率更高,0.8B 更小更快,部分法律判断与金融评分任务仍是 0.8B 更好。 Chinese Decision 是一个面向中文场景的轻量级决策模型。它不聊天、不生成文本,只做一件事:给定上下文和一组固定候选项,返回每个候选项的概率。 - 一次前向,零输出 token:读取最后位置上候选字母 A–Z 的 logits,softmax 后即为概率。 - 三种题型:noul(是/否)、choice(单选)、score(有序等级,返回期望分值)。 以下截图来自我们的测试平台 Decision Studio,后端运行的就是本模型(step 10000)。这些场景采用同一种设计:业务规则写在代码里,决策模型只负责给出概率。 每张工单在一次请求里同时问 6 个问题:类别(choice),严重程度和情绪(score),是否可复现、是否要求退款、是否有流失风险(noul)。不管后续用不用得上都一并提问,省去多次往返。路由规则写在代码里,根据这些概率决定工单派给哪个队列;类别置信度低于 0.5 时转人工复核。截图中 8 张工单 × 6 个问题共 48 次决策,用时 285 ms。 推荐同时安装 flash-linear-attention,它为 Qwen3.5 的线性注意力层提供高效 kernel: Hugging Face: ModelScope: decisionconfig.json 中的温度只在 softmax 前缩放…

Open weights apache-2.0 752M parameters 262,144 tokens transformers

Model · Zero-shot classification

d3-edge

vLLM Semantic Router

d3-edge is the 0.6B multimodal foundation decision model of Decision 3.0, the decision models of vLLM Semantic Router. Give it an input (text or JSON, optionally with images) and the questions you need answered: pick one of several options, say yes or no, or rate on a scale. It answers them all in one call and returns a probability for every answer, without generating text. - Jev Decision Index 0.3, public suite: 30.55, measured with the official 0.3 kit on the released weights: all 140,178 public requests answered, none unsupported. - +13.9 on the public suite over Decision 2.0 (its 0.6B model: 16.68 on the board), ahead in all five areas. Images go before the text of the request, each…

Open weights apache-2.0 659M parameters 262,144 tokens transformers

Model · Zero-shot classification

LLM2CLIP-Openai-L-14-336

Microsoft

Weiquan Huang 1, Aoqi Wu 1, Yifan Yang 2†, Xufang Luo 2, Yuqing Yang 2, Liang Hu 1, Qi Dai 2, Xiyang Dai 2, Dongdong Chen 2, Chong Luo 2, Lili Qiu 2 In this paper, we propose LLM2CLIP, a novel approach that embraces the power of LLMs to unlock CLIP’s potential. By fine-tuning the LLM in the caption space with contrastive learning, we extract its textual capabilities into the output embeddings, significantly improving the output layer’s textual discriminability. We then design an efficient training process where the fine-tuned LLM acts as a powerful teacher for CLIP’s visual encoder. Thanks to the LLM’s presence, we can now incorporate longer and more complex captions without being…

Open weights apache-2.0 579M parameters