ICE v2 / LSREP experiment classifier

This releases the retained original classifier checkpoint selected by frozen ICE v2, the system evaluated in the LSREP paper. It is not the current ICE v3 classifier. The v3 in the historical checkpoint filename denotes a classifier training generation, not ICE's system version.

  • Repository: Deepnar/ice.
  • Evaluated source tag: v2-paper-eval.
  • Evaluated commit: 0521df9171b4a7d69f82d12d70497138c77b2678.
  • Original path: models/classifier/ice_classifier_v3_qwen_ft3.pt.
  • Original file size: 212,827 bytes; bare PyTorch state dict.
  • SHA-256: 25c758b6a7e5cf449f3e4c8bb250db759d37cb4f0ab7dd8e0c1acd8afbf05831.

The checkpoint is copied byte for byte, without retraining or re-export. The frozen Git tag records code and the selected path, but does not contain checkpoint blobs or a historical checkpoint checksum. This release records the checksum of the retained original, rather than claiming a checksum existed at evaluation time.

Architecture and label order

Linear(384,128) -> ReLU -> Dropout(0.3) -> Linear(128,25); 52,505 trainable parameters. Call eval() to disable dropout. The frozen model.py is included verbatim. Output coordinates, in order:

0:11 topics:
Software_&_Tech, STEM_&_Academics, Business_&_Finance,
Creative_&_Media, Admin_&_Productivity, Lifestyle_&_Health,
Social_&_Relationships, World_&_Current_Events, Meta_AI,
Null_Noise, General_Reference_&_Trivia

11:22 intents:
Factual_Retrieval, Troubleshooting, Generation, Ideation,
Analysis_&_Summarization, Strategic_Planning, Decision_Making,
Emotional_Processing, Utility_Formatting, Casual_Banter, Open_Exploration

22:25 context:
Zero_Shot, Long_Term_Memory, Real_Time_Search

Topic and intent use sigmoid, a strict > 0.3 threshold, and an argmax fallback when a block has no selected label. Context uses softmax and argmax, not independent sigmoids. max_confidence is the largest of the 25 decoded probabilities. Exact order and settings are also in config.json.

Embeddings and preprocessing

Use frozen Qwen/Qwen3-Embedding-0.6B, revision 97b0c614be4d77ee51c0cef4e5f07c00f9eb65b3, with SentenceTransformer(..., device="cpu", truncate_dim=384). The upstream native width is 1024; ICE v2 takes its first 384 coordinates. Use the snapshot's built-in pooling and normalization. Do not add normalize_embeddings=True to encode(), renormalize the truncated prefix, add a query instruction, or use the current ICE v3 native-width embedding path.

Embed the exact instructional prefix produced by build_input() in the included classifier_inference.py, not the bare user prompt. With context, ICE v2 selects the last three episodic rows in timestamp order, prefers each summary, otherwise uses raw text capped at 150 whitespace words, and caps the combined context at 500 words. The frozen frozen_classifier.py preserves the exact context selection and truncation behavior, including ellipses and the context-specific prefix. An empty context uses the no-context prefix.

Minimal learned-head inference

The frozen tag's dependency versions are torch==2.11.0, sentence-transformers==5.5.1, and transformers==5.9.0. Use Python 3.11 and huggingface_hub to fetch the release:

import hashlib
import sys
from pathlib import Path
import torch
from huggingface_hub import snapshot_download
from sentence_transformers import SentenceTransformer

folder = Path(snapshot_download("Deepnar/ice-v2-classifier"))
sys.path.insert(0, str(folder))
from model import ICEClassifier
from classifier_inference import predict_head

checkpoint = folder / "ice_classifier_v3_qwen_ft3.pt"
assert hashlib.sha256(checkpoint.read_bytes()).hexdigest() == (
    "25c758b6a7e5cf449f3e4c8bb250db759d37cb4f0ab7dd8e0c1acd8afbf05831"
)
head = ICEClassifier()
head.load_state_dict(torch.load(checkpoint, map_location="cpu", weights_only=True))
head.eval()
embedder = SentenceTransformer(
    "Qwen/Qwen3-Embedding-0.6B",
    revision="97b0c614be4d77ee51c0cef4e5f07c00f9eb65b3",
    device="cpu", truncate_dim=384,
)
print(predict_head(head, embedder, "Explain how a database index works."))

For archival reuse, pin snapshot_download(..., revision=<release commit>) to the upload commit recorded in the GitHub release verification report. This is a custom PyTorch head, not a Transformers AutoModel or hosted pipeline. The example returns learned-head predictions. The complete ICE v2 classifier also runs the DI3 pre-classifier, hard overrides, and API-level memory policy; reproduce those through the frozen Git repository. Neither this helper nor the weights alone reproduce full-system routing or the paper's end-to-end scores.

Limitations and license

No new classifier accuracy claim is made by this release. The paper's fidelity audit and negative results remain applicable. Context, preprocessing, rule overrides and workload affect behavior. Training data and private conversational corpora are not released, so this is checkpoint/inference reproducibility, not a claim that private-data training can be independently regenerated.

The ICE head and accompanying ICE code are released under the repository's Apache-2.0 license; LICENSE and NOTICE are included. The separately fetched Qwen base model is also Apache-2.0 according to its pinned upstream model card. No Qwen base weights, private corpora, caches, secrets, or ICE v3 artifacts are included.

Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Deepnar/ice-v2-classifier

Finetuned
(451)
this model

Collection including Deepnar/ice-v2-classifier

Paper for Deepnar/ice-v2-classifier