Skip to page content
SAVRN
Search Plan a project

Open-weight model · Text classification

clefsift

by Stephen Murray spmurrayzzz/clefsift

clefsift is an open-weight model for text classification from Stephen Murray, released under Apache License 2.0. It has 27.4B parameters and a 262,144-token context. At 16-bit it needs about 65.7 GB of GPU memory, which fits on 1x MI300X from $1.85 an hour, at the lowest prices in the SAVRN Index.

ClefSift is an experimental English text classifier fine-tuned from Cloudflare/Clef. It returns scores for four document-level labels in one forward pass: These are provisional, process-based labels.

Parameters27.4B
Context262,144
Weights84.0 GB
Licenseapache-2.0
AccessOpen weights
Monthly Downloads—

Runs On

What it takes to serve clefsift (27.4B 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 54.7 GB 65.7 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00
8-bit 27.4 GB 32.8 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00
4-bit 13.7 GB 16.4 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 18, 2026.

clefsift on every accelerator the SAVRN Index prices, at every precision

Model Card

By Stephen Murray, published under apache-2.0, revision 179f4553fcb9.

ClefSift is an experimental English text classifier fine-tuned from Cloudflare/Clef. It returns scores for four document-level labels in one forward pass: These are provisional, process-based labels. The model sees writing style, not the author's actual workflow. Its output does not prove authorship. Do not use it as the sole basis for academic, employment, or moderation decisions. This release uses the selected v2 step-128 checkpoint. The additional rank-64 LoRA weights are merged into the BF16 backbone. The trained joint decision head is stored separately in FP32. This is a decision model, not a chat model. The retained config and loader use the Qwen3.5 architecture identifiers above. Pin…

Read Stephen Murray's full model card

ClefSift 27B

ClefSift is an experimental English text classifier fine-tuned from Cloudflare/Clef. It returns scores for four document-level labels in one forward pass:

Label Training interpretation
human A text with an upstream human-authorship label
ai-assisted An AI copy edit of a provisional human source
mixed Human and AI passages combined in one text
ai A text with an upstream AI-generation label

These are provisional, process-based labels. The model sees writing style, not the author's actual workflow. Its output does not prove authorship. Do not use it as the sole basis for academic, employment, or moderation decisions.

This release uses the selected v2 step-128 checkpoint. The additional rank-64 LoRA weights are merged into the BF16 backbone. The trained joint decision head is stored separately in FP32. This is a decision model, not a chat model.

Model details

Item Value
Immediate base Cloudflare/clef
Base revision 2f3de3dd85f379784083b0814d997ab627200f0c
Retained backbone architecture Qwen3_5ForConditionalGeneration, model type qwen3_5
Parameters Approximately 27 billion, plus the joint decision head
Task English, document-level, four-class text classification
Training toolkit MersivMedia/clef-finetune, version 0.1.0
Training date 2026-10-06 UTC
Selected checkpoint clef-27b-llmtrace-en-fourway-v2, step 128
Full merged release size Approximately 55.25 GB

The retained config and loader use the Qwen3.5 architecture identifiers above. Pin the Clef revision when you reproduce this work. A current upstream model card is not a substitute for the retained config.

The release retains the base vision encoder, but all ClefSift training and evaluation used text. Fine-tuned image, video, and general decision performance are untested.

Files and inference

The merged release needs both the backbone and the joint decision head. A standard Transformers text-classification pipeline does not load the complete Clef decision model. Use the supplied joint_schema_model.py instead. Review that code before you import it.

Files Purpose
model-*.safetensors, model.safetensors.index.json, config.json Merged BF16 backbone
joint_head.safetensors, joint_head_config.json Trained FP32 joint decision head
joint_schema_model.py Unmodified loader and SystemOne request/response functions from the pinned Clef release
Tokenizer, processor, chat template, and generation config Retained base input assets
ClefSift-Q8_0.gguf Q8_0 export for a Clef-compatible llama.cpp server
release.json, weights-manifest.json Portable provenance and SHA-256 hashes without local machine paths
LICENSE, NOTICE Retained Apache-2.0 license and upstream attribution

Reference evaluation used Python 3.11, torch 2.14.1+cu130, transformers 5.19.0, and safetensors on one 96 GB RTX PRO 6000 Blackwell GPU. The full release requires about 55 GB for weights, plus memory for inference. Transformers must provide Qwen3_5ForConditionalGeneration.

The example below uses the exact training question and v2 text normalization. It uses the upstream loader's default BF16 inference, including its BF16 cast of the stored FP32 head. Reference scores below use the training toolkit's FP32-head path, so this example is not an exact reproduction of those scores.

import html
import sys

from huggingface_hub import snapshot_download

path = snapshot_download(
    "spmurrayzzz/clefsift",
    ignore_patterns=["*.gguf"],
)
sys.path.insert(0, path)
from joint_schema_model import load_release_model, systemone

model, processor = load_release_model(path, device="cuda")
text = "Replace this text with the document to check."
text = " ".join(
    html.unescape(text)
    .replace("\\n", " ")
    .replace("\\r", " ")
    .replace("\\t", " ")
    .split()
)
request = {
    "model": "clefsift",
    "state": text,
    "questions": {
        "classification": {
            "type": "choice",
            "instructions": "Judge only the writing style, not the topic or quality. Human writing tends to show irregular grammar, typos, uneven rhythm, slang, humor, and lived personal detail. AI-generated writing tends to show flawless grammar, uniformly balanced sentences, generic abstraction, hedging, and formulaic transitions.",
            "criteria": {
                "human": "Irregular grammar or typos, colloquial voice, slang or humor, uneven sentence rhythm, concrete personal detail from lived experience",
                "ai-assisted": "Mostly uniform, polished, machine-like prose, but with some personal specifics or human irregularities breaking through",
                "mixed": "Contains some clearly human-written passages mixed with some clearly machine-generated passages",
                "ai": "Flawless uniform prose, balanced clause structures, generic abstract content, hedging language, formulaic transitions, no personal irregularities",
            },
        },
    },
}
response = systemone(model, processor, request, max_length=1536)
print(response["answers"]["classification"])

Use a fixed Hub commit as the download revision for reproducible deployment. Complete training and validation requests fit 1,536 tokens without truncation. Longer documents and changed question wording are outside this evaluation.

The answer contains a winning choice, its confidence, and all four probabilities. These probabilities are not a verified probability of AI use. The ClefSift extension shows UNCERTAIN when the top probability is below 0.35 or its lead over the next option is below 0.10. Those thresholds are display rules, not independently calibrated reliability guarantees.

GGUF inference with llama.cpp

The Q8 export needs a llama.cpp build with Clef's joint decision head and /v1/systemone support. The verified build is 11450 at commit a46709b683aba9274d8ab29f5b42f7e551d1dff6. A generic GGUF chat loader is not an equivalent decision backend.

Download the Q8 file and the original Clef projector:

hf download spmurrayzzz/clefsift ClefSift-Q8_0.gguf --local-dir ./clefsift
hf download ggml-org/Clef-GGUF mmproj-Clef-BF16.gguf --local-dir ./clefsift

Start the server on an unused port:

llama-server --host 127.0.0.1 --port 8000 --alias clefsift \
  --model ./clefsift/ClefSift-Q8_0.gguf \
  --mmproj ./clefsift/mmproj-Clef-BF16.gguf \
  -b 32768 -ub 32768

The batch settings are required in the verified build. Its default physical batch size of 512 rejects requests above that size. The retained projector is not a fine-tuned vision model. Our Mac serving setup uses roughly 30 GB of RAM including that projector.

Send the same state and questions from the Python example to POST http://127.0.0.1:8000/v1/systemone, with model set to clefsift. The response uses the same four-label SystemOne contract.

Training data and provenance

The source corpus is iitolstykh/LLMTrace_detection, revision 332053804f8798177ff2ecb1148e1839ed429ba3. Only English examples entered these runs. Source domains include articles, questions, reviews, and short-form text.

The v2 training set has 298 source groups and 1,192 examples, with one example per class in each group. Official source splits remain intact across all variants. Known duplicate groups and malformed candidates were excluded. The audit does not establish author-level independence.

AI-assisted examples are whole-text copy edits from gpt-5.6-luna through Pi's openai-codex provider. Training mixed examples include 124 Luna 5.6 insertions and 174 upstream Gemini 2.5 Flash examples. Structural checks preserve source substrings for insertions, but they do not verify meaning in whole-text edits. Manual samples found some changes in meaning or viewpoint.

Matched validation uses the same editing model version as training. Held-out validation uses gpt-6-luna for all edits and insertions. This tests another version within the same family, not an unrelated family. Both panels share their 47 parent groups and human/fully-AI controls.

For v2, every class decodes HTML entities and literal escaped whitespace, then collapses whitespace. The original v1 regression requests remain unchanged. No synthetic bootstrap rows or Pangram outputs supplied training labels.

Authorship and source rights remain unresolved. The upstream dataset declares Apache-2.0, but that declaration does not establish rights in every source text. The exploratory runs used provisional labels without independent source clearance. This model release does not distribute the training texts or generation transcripts.

Training procedure

v2 starts from the pinned Clef reference, not from the earlier v1 adapter. It trains the LoRA adapters and the joint head together. The vision tower and language-model output head are excluded from adapters.

Setting Value
Backbone / trainable head dtype BF16 / FP32
LoRA rank / alpha / dropout 64 / 128 / 0.05
Seed / optimization steps 0 / 128
Batch size / gradient accumulation 1 / 4
Example exposures 512, less than one full epoch
Backbone / head learning rate 1e-4 / 5e-5
Warmup 12 steps
Loss Cross-entropy with 0.05 label smoothing, plus four-option Brier loss with weight 1.0
Gradient checkpointing / schema augmentation Enabled / disabled

Checkpoint selection uses matched fixed-four macro F1, then lower Brier and earlier step for ties. Step 128 was selected before held-out scoring. Training took about 861 seconds. The run, including evaluations, used about 24.11 GPU-minutes on one RTX PRO 6000 Blackwell.

Validation results

These scores describe small internal validation panels with provisional labels. They are not a final-test benchmark or an estimate of LinkedIn accuracy. Reference scores use the selected unmerged adapter with an FP32 head. Q8 scores use its merged, converted export through llama.cpp.

Panel Requests Reference accuracy Q8 accuracy Reference macro F1 Q8 macro F1 Reference Brier Q8 Brier
Matched v2 188 89.9% (169/188) 89.4% (168/188) 0.8991 0.8936 0.1829 0.2737
Held-out Luna version 188 86.2% (162/188) 86.2% (162/188) 0.8602 0.8602 0.2421 0.3115
Original v1 validation 150 85.3% (128/150) 85.3% (128/150) 0.8766 0.8766 0.2596 0.3374

The first two rows use four-class macro F1. The last uses the three target classes in original v1 validation, with all four prediction options retained. Brier is the sum of squared errors over all four probabilities. Lower is better. Accuracy and F1 use the winning class before the display uncertainty rule.

Human false positives are 5/47 in each v2 panel and 5/50 in original validation, for both the reference and Q8. A false positive means any non-human winning class on a provisional human target. These rates do not establish a low false-positive rate for real users.

AI-assisted recall is 45/47 matched and 33/47 held-out, for both versions. Original mixed recall fell from v1's 45/50 to v2's 39/50 (90% to 78%). That regression remains unresolved.

Q8 export comparison

The retained ClefSift-Q8_0.gguf export is 28,732,214,816 bytes (26.76 GiB). Its SHA-256 is 1fbdedec7989395973e5364a47dcd4a01a5f419a425b26ba476faed5556cb7fa. Conversion used llama.cpp commit a46709b683aba9274d8ab29f5b42f7e551d1dff6, build 11450, through an F16 intermediate.

Q8 preserves 525/526 reference class predictions across the saved requests. One matched AI prediction becomes mixed. Human false positives and AI-assisted recall do not change. Four display verdicts become uncertain at unchanged thresholds.

Q8 probabilities are softer and Brier scores are worse. This comparison includes merging, conversion, quantization, and backend differences. It does not isolate quantization alone. No intermediate F16 inference evaluation was completed. The validation panels share controls and groups, so the 526 requests are not 526 independent observations.

Limitations and intended use

Use ClefSift for exploratory text review and further research with human review. Evaluate it on your own domain before you rely on its scores.

  • No independent professional-post evaluation with verified authorship and rights has run.
  • No final-test scoring, unrelated-generator-family evaluation, or multiple-seed experiment has run.
  • Non-English text, long documents, paraphrase attacks, and fine-tuned vision behavior are untested.
  • The style rubric can penalize polished human prose or miss deliberately irregular AI prose.
  • Training labels and copy-edit fidelity remain provisional.
  • Confidence calibration changes across inference formats and lacks independent validation.
  • The held-out AI-assisted recall gap and original mixed-recall regression remain open.

The final test was used only for structural and duplicate auditing. Its text did not enter generation, prompt development, training, checkpoint selection, hard-negative mining, or model scoring.

License and acknowledgments

The release uses Apache-2.0 and retains the base LICENSE file. Base weights and the unmodified loader come from Cloudflare's Clef release. The retained license includes Alibaba Cloud attribution for the Qwen backbone. Training used the Apache-2.0 clef-finetune toolkit. ClefSift is an independent fine-tune and is not affiliated with Cloudflare or Alibaba.

Modified artifacts are the LoRA-merged backbone weights and trained joint head. The tokenizer, processor assets, and joint_schema_model.py retain their upstream contents. The model license does not resolve the source-rights uncertainty stated above.

Configuration

Architecture
Qwen3_5ForConditionalGeneration
Context length (tokens)
262,144
Layers
64
Hidden size
5,120
Feed-forward size
17,408
Attention heads
24
Key/value heads
4
Head dimension
256
Vocabulary size
248,320
Model type
qwen3_5

Identity and Version

Repository
spmurrayzzz/clefsift
Publisher
Stephen Murray
Task
Text classification
Modality
Text
Library
transformers
Parameters
27.4B parameters
Languages
en
Revision
179f4553fcb905d16d0b2662885d5395d0a05aa7
First published
2026-10-07
Last updated
2026-10-08

Files and Weights

29 files, 84.0 GB in total. The weights are 14 files totalling 84.0 GB in gguf, safetensors.

Weights14 files · 84.0 GB
Configuration8 files · 145.1 KB
Tokenizer2 files · 20.0 MB
Documentation3 files · 26.8 KB
Other1 file · 9.0 KB
Repository1 file · 1.6 KB
Every file
FileTypeSizeSHA-256
ClefSift-Q8_0.ggufWeights28.7 GB 1fbdedec7989
joint_head.safetensorsWeights512.2 MB bfc63f9a37eb
model-00001-of-00012.safetensorsWeights2.5 GB 54d83c1d3663
model-00002-of-00012.safetensorsWeights4.8 GB ae9939820563
model-00003-of-00012.safetensorsWeights5.0 GB 4b4551211e80
model-00004-of-00012.safetensorsWeights4.9 GB 1cd25ef8b381
model-00005-of-00012.safetensorsWeights5.0 GB ec7294e716be
model-00006-of-00012.safetensorsWeights4.9 GB 1b29da1c4f96
model-00007-of-00012.safetensorsWeights4.9 GB 44fb337b0298
model-00008-of-00012.safetensorsWeights5.0 GB db541d3e7d79
model-00009-of-00012.safetensorsWeights5.0 GB 70c11c8774ac
model-00010-of-00012.safetensorsWeights4.9 GB 5a0acd24ee0c
model-00011-of-00012.safetensorsWeights5.0 GB 9b8580952ed5
model-00012-of-00012.safetensorsWeights2.8 GB 271ca81cec9e
config.jsonConfiguration3.8 KB —
generation_config.jsonConfiguration214 B —
joint_head_config.jsonConfiguration119 B —
joint_schema_model.pyConfiguration23.3 KB —
model.safetensors.index.jsonConfiguration111.1 KB —
processor_config.jsonConfiguration1.2 KB —
release.jsonConfiguration1.5 KB —
weights-manifest.jsonConfiguration4.0 KB —
LICENSEDocumentation11.5 KB —
NOTICEDocumentation931 B —
README.mdDocumentation14.3 KB —
chat_template.jinjaOther9.0 KB —
.gitattributesRepository1.6 KB —
tokenizer.jsonTokenizer20.0 MB 06b9509352d2
tokenizer_config.jsonTokenizer1.1 KB —

License and Download

License
apache-2.0
Access
Open weights, no gate
Download size
84.0 GB
Download from Stephen Murray

Released by Stephen Murray through its official repository on Hugging Face. Read the license.

Built From

  • Derived from Cloudflare/clef
  • Trained on (disclosed) iitolstykh/LLMTrace_detection

Memory Requirements

PrecisionWeights in memory
As published84.0 GB
16-bit54.7 GB
8-bit27.4 GB
4-bit13.7 GB

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

Questions About clefsift

How much GPU memory does clefsift need?

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

What is the cheapest GPU to run clefsift 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 clefsift commercially?

Yes. clefsift 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 clefsift's context length?

262,144 tokens, from the maximum position embeddings in its published configuration.

Similar Models

Model · Text classification

jev-novel-3-27b-bf16

Aikexue170

JEVnovel 的做法是:用人类偏好数据训练判别模型,并把输出做成分类头——一次前向传播直接给出判断和置信度,不做自回归生成。 - JEVnovel 2 解决「识别」:判断一句话需不需要修改; - JEVnovel 2.5 尝试把粒度细化到逗号级小片,加了「短句头」做三分类(拖后腿 / 中性 / 有价值)。实测效果不好:它分不清「可以删掉的纯装饰」和「必须保留的信息」,给不出改稿动作,3 代将其取消; - JEVnovel 3 换成两个能直接指导改稿的头: 教师由 Qwen3.8-27B 微调而来,对整句打分,一次前向输出两组结果: 2. 信息密度 ← StartLux-Decision-27B 裁判。质量和信息是两回事:有的片段「写得烂但没有信息量」(纯装饰,该删),有的「写得烂但承载着情节」(该改)。教师只管质量;信息维度交给裁判模型——它对每一小片回答一个问题:「编辑要把这句话改简洁时,这个片段能不能删掉?」答案直接作为片级密度标签。 3. 学生(0.8B / 4B,LoRA,双头)用这两套标注训练。 完整的方法、数据规模与评测细节见仓库内的《JEVnovel3技术报告.md》。 协议与系列一致:主指标取人类标注人数最多、共识最高的 538 句(main-bench),统计 Macro-F1、bad 召回、bad 精确和正常句误报;判定阈值先在验证集上确定并冻结,再应用到测试集。 - 相比上一代 27B:主指标提升 5.6 个点,bad 召回提升约 12.6 个点,抓得更全;代价是正常句误报从 7.1% 升到 9.4%,精确率基本持平。 - 出厂冻结阈值(0.31)下…

Open weights apache-2.0 27.4B parameters 262,144 tokens pytorch

Model · Text classification

blink-27b

Govind Kamtamneni

The most accurate blink model for hard typed decisions. It also performed best of the three in local browser-agent runs that passed page elements as text, not screenshots; see browser-agent setup. These local pages are not a benchmark. Send text or JSON state with choice, noul (yes/no), or score questions. Get a probability for each offered answer without generated text. Each batch uses one forward pass; large requests can use several batches. For browser agents, send the page and candidate elements as JSON state; make operations and click targets choice questions. The probability map lets an agent pick among its proposed actions. This is a text-element workflow, not autonomous web…

Open weights other 26.9B parameters 262,144 tokens transformers

Model · Text classification

GEV-26B-Decide

AutoTrust AI Lab

The benchmark. ERQA (Embodied Reasoning Question Answering) is the benchmark Google DeepMind released with Gemini Robotics (March 2025) to measure whether a vision-language model understands the physical world a robot acts in. It has 400 multiple-choice questions about real robot and everyday scenes, with 1–16 images per question (287 questions have one image). 382 questions have 4 options and the rest 2–3, so chance is about 26%. ERQA is one of the standard embodied-reasoning benchmarks; Gemini Robotics-ER, PhysBrain and Hy-Embodied report it. With 400 questions the 95% interval of a score is about ±5 points. How we test. Each question is one choice decision through POST /v1/decide: the…

Open weights apache-2.0 25.8B parameters 262,144 tokens transformers

Model · Text classification

Bev-Pro-C

Sathiskumar Jothi

A System One decision model with open weights. Give it a document (text, email, ticket, log or JSON) and typed questions; it returns typed answers (yes/no, a choice between options you describe, or a score on levels you define) with a calibrated probability for every option, in one pass. It never generates text, so there is nothing to parse and nothing to hallucinate. It runs on your own machines: your documents never leave them. About 26B parameters, built on Google Gemma 4 26B-A4B (mixture of experts, about 4B active per token). Everything it needs is in this repository, so nothing else is downloaded. English text, up to 4,096 input tokens; needs one GPU with about 60 GB of memory (bf16).…

Open weights apache-2.0 25.8B parameters 262,144 tokens bev-decisions

Model · Text classification

Darwin-27B-ZTC-v2

FINAL_Bench

A zero-token decision engine from the Darwin family, second version. Darwin-27B-ZTC-v2 reads a piece of state and a typed question (noul yes or no, choice one of N labels, score an ordered rubric) and returns a probability for every option. It uses one forward pass per question and generates no tokens. v2 adds control and workflow decisions (games, drones, retrieval control, entity alignment, customer and incident workflows) on top of FINAL-Bench/Darwin-27B-ZTC. 1 on the S1MB leaderboard under both of its rankings: the default Borda score and Task Avg. All 137 benchmarks complete, measured with the S1MB evaluator and its autojev adapter at revision a8f283a, then validated and merged by the…

Open weights apache-2.0 25.6B parameters 262,144 tokens transformers

Model · Text classification

JEV-35B-NVFP4

AutoTrust AI Lab

This repository is autotrust/JEV-35B with its 10,240 routed expert MLPs (40 layers × 256 experts) quantized to NVFP4. Everything else is the bf16 model unchanged: attention, linear attention, the shared expert, the routers, the vision tower, the MTP layer, the lmhead, the System 1 adapter, the decision head and the temperatures. Below the NVFP4 comparison, the rest of this card is the JEV-35B card; its tables are the bf16 results unless marked otherwise. Retrieval 0.706, Tools 0.753, Arts 0.413); the largest per-benchmark changes are Home appliance simulator −5.7, CRUXEval −4.7 and GPQA +5.4. CharXiv charts (−5.3). test p = 0.63); every grasped cube still reached the tray (13/13). Games…

Open weights apache-2.0 19.8B parameters 262,144 tokens transformers