AlexWortega/openjev — new model trending #30 on Hugging Face
AlexWortega released openjev on Hugging Face, a Qwen3.5-based NLI cross-encoder (4B and 35B-A3B MoE) for reranking, grading, and zero-shot game agents.
The openjev model repurposes Qwen3.5 into a three-label cross-encoder (entailment, contradiction, neutral) released under MIT license and trending #30 on Hugging Face. It ships a 4B sequence-classification checkpoint plus a frozen Qwen3.5-35B-A3B MoE backbone with small per-task MLP heads on the last-token latent. The author demonstrates zero-shot play of Flappy Bird and Doom from text states and raw pixels via the Qwen3.5 vision tower, with no per-task training. Included code covers training, a multiple-choice harness, replays, and raw JSON results.
- Open-weights MIT-licensed cross-encoder with 4B and 35B-A3B MoE variants
- Three-class NLI primitive supports reranking, grading, content guarding, and game-playing
- Frozen 35B backbone with per-task MLP heads on last-token latents
- Doom and Flappy Bird played zero-shot from text and pixels
- Trending #30 on Hugging Face at publication time
Full article336 words · extracted from huggingface.co · click to collapse
# openjev — Qwen3.5 trained as jev model
<video controls src="https://huggingface.co/AlexWortega/openjev/resolve/main/videos/doom_zs_position.mp4" width="720"></video>
<video controls src="https://huggingface.co/AlexWortega/openjev/resolve/main/videos/doom_vision_zeroshot_pixels.mp4" width="720"></video>

Bigger jev: Qwen3.5-35B-A3B (MoE) as the backbone. Zero-shot, and with the backbone frozen plus a small MLP head on the
last-token latent (`mlp_heads_35b/`, one head per task, loadable with `LatentMLPHead.load`):

**openjev** is Qwen3.5 turned into a *jev* model: a single cross-encoder that reads a premise and a hypothesis and
answers with entailment, contradiction or neutral. That one primitive is enough to rerank answers, grade them against a
reference, guard content, and play games in real time: hand it the game state and a few statements about it, and the
argmax entailment is the move. Doom above is played zero-shot, first from the text state and then straight from the
pixels through the Qwen3.5 vision tower. Nothing is trained per task.
## What's inside
* `qwen3.5-4b-nli/` — the 4B jev checkpoint (`Qwen3_5ForSequenceClassification`, 3 labels: `contradiction`, `entailment`, `neutral`, last-token pooling, trained with plain cross-entropy over the three classes).
* `modeling_openjev.py` — `OpenJevCrossEncoder`: `predict`, `rerank`, `grade`, `latents`; `LatentMLPHead` for the per-task heads.
* `modeling_qwen35_moe_seqcls.py` — `Qwen3_5MoeForSequenceClassification` for the 35B-A3B backbone (transformers 5.15 ships none).
* `mlp_heads_35b/<task>/` — `head.pt` + `norm.npz` + `meta.json`, the 35B latent + MLP heads behind the second radar.
* `code/` — everything used here: the trainer, the multiple-choice harness, Flappy Bird and Doom (text and pixels), the radar.
* `videos/` — Flappy Bird and Doom replays; `results/` — raw JSON for every run and the full report.
## Use it
```python
from modeling_openjev import OpenJevCrossEncoder
jev = OpenJevCrossEncoder("AlexWortega/openjev", subfolder="qwen3.5-4b-nli")
jev.predict([("The bird is 0.05 below the centre of the gap.", "The bird is below the centre of the gap.")])
# -> [[contradiction, entailment, neutral]] probabilities
jev.rerank("Which gas do plants absorb during photosynthesis?", ["oxygen", "carbon dioxide", "nitrogen"])
# -> index of the option with the highest entailment
```
Or with plain transformers:
```python
from transformers import AutoModelForSequenceClassification, AutoTokenizer
tok = AutoTokenizer.from_pretrained("AlexWortega/openjev", subfolder="qwen3.5-4b-nli")
model = AutoModelForSequenceClassification.from_pretrained("AlexWortega/openjev", subfolder="qwen3.5-4b-nli")
text = model.config.nli_template.format(premise="...", hypothesis="...")
```
Reference point: [dleemiller's NLI cross-encoders](https://huggingface.co/blog/dleemiller/nli-xenc-ways-to-use). Licence MIT.
Text extracted automatically; images, tables and formatting may be missing. Original: https://huggingface.co/AlexWortega/openjev