If you're looking for a more impressive doom example, I put together laya-duum which uses open source micropython implementation of doom (duum) and freeware freedoom1.wad. It uses the standard jev api and will play through the first two levels to completion: <a href="https://github.com/Hadlock/laya-duum" rel="nofollow">https://github.com/Hadlock/laya-duum</a>
Why is this more impressive?
It's not just shooting at static monsters in an empty room, this will go after monsters, make decisions about prioritizing health, changing goals, and finish the level, etc. It's not unique, it's just more impressive than the demo they're using.
- Laya receives semantic snapshots, not the framebuffer.<p>What does tjis mean? Another generative model?
Laya is the model this uses. Like Jev, it's blind - it can't take an image as an input. So how can it play Doom, or Atari games, or do other visual tasks, as people have shown it to do? They write a bit of app-specific adapter code that transforms the game state into a structured piece of data (here, the "semantic snapshot"). And that is what these models take as input
laya sucks. it's a dead end and for some treat it as a peer of jev or even the qwen jevs. base model doesnt have enough world knowledge to generalize.
The base-model criticism is fair. Laya is weak zero-shot and doesn't have the world knowledge of a much larger pretrained model. Their own site puts the base models at around 0.35 on the typed-decisions benchmark, which is close to random.<p>I don't think that makes it a dead end. Laya is designed to be fine-tuned for a specific task, and the site reports the fine-tuning gains. The 0.766 number comes from fine-tuning on the benchmark's train split, not from the base checkpoint. They also report that fitting a single temperature scalar per question type cuts expected calibration error from 0.466 to 0.081. That's a large gain, and it only shows up after you specialize the model.<p>"Peer" is doing a lot of work in that comment. Jev can take on a new task without retraining because it starts with far more knowledge; Laya trades that away to stay small and trainable for a fixed task. So I wouldn't compare base Laya to Jev and stop there. Compare Jev to fine-tuned Laya on the same task and test set, then look at accuracy, latency, cost, calibration, and robustness, depending on which of those matter for the deployment.
btw your comment was immediately marked as flagged/dead. Odd for a high quality comment. I vouched for it.<p>My main point of disagreement would be that I fundamentally see a different use for a jev sort of model (generalism is applealing), but if you're finetuning, a bert base is not bad.
Thanks for the vouching. I don't really understand what I did to anger the algorithms! But yeah, I think that that's the real sticking point. If the value prop of jev is "plug it in anywhere and it generally does smart things" you're absolutely right that Laya is Not A Thing. I've spent a bunch of time working on fine tuning models (i teach a class on it! <a href="https://earino.github.io/applied-deep-learning/" rel="nofollow">https://earino.github.io/applied-deep-learning/</a> using the same ModernBERT stuff!) and so for me, I naturally went: "wait a second, so how good is Jev compared to fixing the problem domain."<p>Anyways, thanks for the vouching!
Can someone remove the extra LLM and just have an embedder do the classifier work?<p>It's turning into pimp my llm...
I simply use an embedding model followed by a simple MLP, and that’s enough to solve many text classification problems.
Wait until you hear about support vector machines!
If you have an easy problem that can be solved by a classifier from pre LLM era, then sure, go ahead. But we have LLMs now and we can use those to expensively and slowly classify harder problems using general purpose models, without needing to spend a huge amount of time fine tuning a model for the specific task. Jev offers to do the same fast and cheap.<p>For clarity: no, a 0.8B model is not gonna do that.
Its funny - I was going to leave a similar comment - and I have, earlier, on a different thread. If people need fast classification, on a fairly scoped problem, it is very fruitful to start with an off-the-shelf embedding model like ModernBERT (which Laya uses) and stick a classifier in front - like a Support Vector Machine (SVM). For starters <i>just tune the SVM</i>, you don't even have to fine-tune the embedder - often it works <i>very</i> well, esp. given the compute needed. Plus you can get reliable confidence scores and generate explanations if you want them (using something like SHAP).
[dead]
Sorry, do we have actual clear implementation details for Jev? I keep seeing these "recreations" or "Do Jev at home" but do we have access to their architecture? I haven't even used the product, I just find it strange.
I compared it to Jev in my current use cases and it's very inaccurate. 70% vs 94% . for classification, it's unacceptable.
For _your_ classification it's unacceptable. The OP seems to have anticipated this and mentions you can fine tune it for your use case. Did you try that?<p>I don't think the point is to displace Jev, but to show it's possible to build an MVP on open weights without years of work and millions of dollars.<p>Why (presumably) an engineer would dismiss exploring a lightweight, custom alternative to locking into a fashionable PaaS, I'll never know.
> The OP seems to have anticipated this and mentions you can fine tune it for your use case. Did you try that?<p>You can already so that with classification models such as ModernBERT, at 0.4B.<p>Jev's value is its zero shot performance without having to fine-tune.
I am sure I am missing something obvious here, but why is that valuable? Like, what kinds of projects are there where you need to classify stuff but are unable to make a bespoke model targeting the specific problem?
For my org, it meant we could trial classifiers across various internal systems with little to no engineering effort. In one case we ended up building our own classifier instead of Jev, but in others we kept Jev because it was zero-effort for a great impact.
But like how often are you gonna do this in general? Why does dev time or effort really matter here when either way you are building something to just, you know, actually <i>use</i> going forward? Its not like one needs to build a new classifier everyday.
Tons. For example, most web and mobile app developers won’t know where to start with making a bespoke model (and would likely have no interest in making one), but they will have lots of usecases for a classifier.
> unable to make a bespoke model targeting the specific problem?<p>There is a fixed cost (and some maintenance) to e.g. fine tuning ModernBERT.<p>Maybe once you include all of that it might be a half-day to a day of engineering time to set everything up in a maintainable fashion.<p>For Jev, it takes all of 30 seconds of prompting. And it's not that much more expensive to deploy vs. a BERT model.
Anything where you don’t have a decent amount of training data.
Not sure the task at hand here. But if it doesn’t require any reasoning/thinking and it’s just a classification task, it’s worth a shot to look into training your own classifier<p>I’ve run some benchmarks. Using embeddings + logistic classifier, the architecture matches or beats Jev and Laya in all basic classification tasks (datasets tested: AG News, Emotion, MASSIVE Intent, Banking77)
The type of task in which it does really well, especially against Laya, is classification with >50 classes<p>The classifiers also run in <1ms, so they can be very fast and precise at the same time<p>But this architecture has no “reasoning”, so it performs rather poorly on tasks that require it, like the ones from the XLNI dataset (Jev/Laya do a lot better on this one)<p>For the latter cases, you could use add a local lightweight LLM, something like a Gemma model. Or even some basic MLP, depending on the tasks/data
What do you use to determine that a particular task in a heterogeneous pile of tasks requires reasoning? The logistic classifier itself is too dumb to recognize the details of the problem that make it reasoning-sensitive (IIRC recognizing the “fiddliness” of a given problem requires a recognizer at least as complex as the problem itself.) And if you’re using the lightweight LLM for that, then you may as well skip the classifier and just use the LLM all the time, since that eval step is already going to be dominating your response time anyway.<p>My understanding of Jev is that it’s a replacement for the LLM you’d necessarily need to use to identify reasoning-sensitive workloads in a heterogeneous mix, where Jev will be cheaper than an actual LLM and so act as an actual optimization / de-bottlenecking change.
I’m in the process of piecing together the different task/dataset-specific classifiers<p>Depending on how much overfit, you can go from routing deterministically based on features/shape of the input data, all the way to training a routing model (which could be a classifier too). I’ll need to experiment to find the best approach<p>For completely unseen/unexpected, I’ve also experimented routing to a local LLM: request comes in, if there’s a marching classifier, send it there, otherwise send to LLM+training. As the system learns more tasks, the % of requests that go to the LLM go down over time
"Using embeddings + logistic classifier, the architecture matches or beats Jev and Laya in all basic classification"<p>Have I understood correctly that you trained only the logistic classifier, but didn't need to train the embedding model?<p>If so, I'm curious whether you compared that approach (A) with:<p>B) Jev only, with a single output.<p>C) Jev with multiple outputs fed into a logistic classifier.<p>Obviously C has cons (can't be self-hosted, needs some up-front work on deciding the shape of the output) but it might be somewhat more interpretable. (And I suppose it might have better performance?)
You are correct, I didn’t train the embeddings model<p>Here's a gist with code you can use to test the Banking77 dataset: <a href="https://gist.github.com/nicobrenner/056a5aaff5d0119c0032ecdad5029557" rel="nofollow">https://gist.github.com/nicobrenner/056a5aaff5d0119c0032ecda...</a><p>The gist uses BAAI/bge-large-en-v1.5, which is 1.2GB approx. You can replace it for all-MiniLM-L6-v2 (91 MB @ fp32 or 45 MB quantized fp16) small enough for mobile/edge. With all-MiniLM-L6-v2 it still gets 93.0% on Banking77, only 1.3 points behind bge-large at 15x smaller<p>I haven’t compared different ways of sending requests to Jev<p>The data to train the classifiers comes from the datasets used to test them (not from Jev)
I have not personally reviewed the benchmarks, but recall seeing a post where a Linear SVM with bag-of-words features outperformed Jev on many simple NLP classification tasks, like the ones you cite. You don't even need embeddings!
I've used LLM's to classify things for numerous projects and it's always really hard to beat linear classifier/decision tree over simple embeddings or even the sklearn HashingVectorizer. However, you DO need to trust your validated data, ground truths for this to work - but you should have these anyway to validate a Jev or similar solution.
Needing fine-tuning for the use-case completely changes the product category
You don't seem to understand what the point of Jev is when you say "you can fine tune it for your use case". Building your own classifiers for your specific business problems is the type of work we all used to do back in 2016 or so. It costs very much. Jev is a cheap and fast general purpose classifier.
[dead]
My use case is simple classification for job ads. Things like, industry, work settings (remote, hybrid, onsite) and job type (full time, part time .. etc).<p>I did side by side comparison with Gemini 2.5 Flash Lite, Jev, Jeff<p>I tried the 0.8B model, completely useless in classification.
Qwen Jeff-Qwen3.5-2B was better, but still missed job type.<p>I suppose with larger model, this could be useful, but would require more ram and will be slower.
i've tried all the "open source" me too Jevs<p>they all suck
What proportion of commercial LLM use is classification? I'm just wondering what happens to business AI spending/data centre usage when they realise they don't need full LLMs.
I'd expect the vast majority at this point is coding. Classification is a thing but in my experience tends to run on light, cheap models, not the proprietary frontier ones.
The American stock market probably loses 20% of its value in a few days.
We've stopped upgrading the models of our classification workflows for >1 year at this point, meaning they're running acceptably on early/mid-2025 models. That said I believe there is a long tail of non-production-ized users who throw this into their everyday LLM chats.
Is this Jeff Vader, head of Catering?
For those of a certain age - the fact that Askjev.com is still available astounds me.
I can’t believe ask.com threw in the towel in 2026. Like ride that LLM hype - how much better could the SEO for ask.com be? Do a pivot!
Blows my mind that Jeeves never came back as an AI model. Even if it's poor quality, it'd still be better than Google.
I am astounded you thought about this but didn’t buy it!
not anymore
It sounds like Jev is not a generative model. If true, I don’t understand these clones which fine-tune a generative model, which appears to not be what Jev is doing.
I think you may be confusing autoregressive and generative. But that can just mean it's a BERT-like encoder model that outputs a single vector for the given input tokens. To make it sound even more "novel" you can say it's a bidirectional encoder-only transformer model which modern LLMs are not and sell that as something revolutionary.
> It sounds like Jev is not a generative model<p>Why does it sound like that to you?
I see you were turned away from submitting a "Show HN" too. I might have to do the same as you for my project.
Forgive my lack of understanding but how long before Jev type functionality is just built straight into all frontier models?
Do people really have zero awareness that Structured Outputs with a constrained schema has been a thing for a while now, and open weight models that give you logprobs can give you distributions per key?<p>Like what am I missing? I use Structured Outputs every day and this just seems like that with fewer steps?<p>edit: Where I'm coming from, I can triage 10,000 support tickets with deepseek flash for less than $1, and latency is sub 1 second if it needs to be integrated into a live user flow. I don't need anything cheaper or faster than that.
FWIW you’re absolutely correct on how most developers are unaware of this as they’re mostly operating on the API level and not aware of server side (vLLM/SGLang) capabilities.<p>The aspect that I like the most is the typesafe API that introduces new probabilistic concepts that are more sound than json schema and constrained decoding with quasi-confidence scores. Developers were asking LLMs to also emit confidences which made absolutely no sense whatsoever.
Classifiers (instead of LLMs) return results with confidence scores.<p>Name Entity Recognition (NER) is one example.<p>So many of them...
<a href="https://huggingface.co/models?language=ner&sort=trending" rel="nofollow">https://huggingface.co/models?language=ner&sort=trending</a><p>Also used to block SSN and CC #s from logs, etc... as small and fast enough to do it. You don't want to call OpenAI GPT-6 and ask it to return your text with the SSN blanked out. I am sure people do though... (SSN is a bit simple, but all kinds of PPI in one model is more likely).<p>The nice thing about Jev is that people started taking about models that are not LLM text streams again.
> Classifiers (instead of LLMs) return results with confidence scores.<p>This is also bogus unless you are talking about Bayesian inference. No classifier can output CI for a single point estimate. In every ML theory textbooks worth their $, it's always stressed not to treat these sigmoid'ed or softmax'ed numbers as probabilities or confidence scores, there is no such thing as CI for point estimate.
Can you link to some info on this? I am just starting to poke around in the space and would love a leg up.
This is an example implementation that was making the rounds recently. If you point whatever model you prefer at it, it’ll do a good job of explaining it.<p>No comment on this model itself, might be over fitted to the Jev benchmarks just to beat it.<p><a href="https://github.com/Mushroom-Systems/lichen" rel="nofollow">https://github.com/Mushroom-Systems/lichen</a>
I don’t know of one definitive resource but “constrained decoding”, regex/grammar-based decoding, json-schema decoding will give you a bunch of hits. Look up vLLM, SGLang and outlines’ implementations for more technical details.<p>This looks pretty decent: <a href="https://www.aidancooper.co.uk/constrained-decoding/" rel="nofollow">https://www.aidancooper.co.uk/constrained-decoding/</a>
> Like what am I missing?<p>Orders of magnitude faster and cheaper answers.<p>Sure a MacBook Pro can control a servo motor but maybe an arduino or a cheaper microcontroller for deployment?
No necessarily, we are getting similar result gemma 4 12b, predicting one output token for label. it is just prefill and with nvfp4 caliberated , we are getting 70-80 ms p90 for the classification workload we have.<p>not sure what made you think you cant go cheaper than jev. it is being done for a long time.
Excellent analogy
I remember reading a paper about a model that used a parser bound to the end of a LLM where it squashed all logprobs for outputs that were parsing errors. I have not seen this used in the manner I thought I would. I thought it would have been entirely possible for a model to construct it's own grammar for how it would prefer to respond and then opt to generate tokens that matched (with a metacode to turn it off obviously).<p>That said, I think the advantage of Jev style approaches is not their capabilities, but rather the capabilities that they have for a much lower resource requirement.
Many people yes, but it’s probably for the best. Without fine-tuning on such style the results would be unreliable. It wouldn’t be the probability of the outcome of whatever you intend, but just the next token probability - which could alter if you add a space or punctuation to the prompt. Very flaky.
Yeah, I'm with you.<p>Nowadays any LLM and any harness you use will just do this for you.<p>But there are helper libraries like Instructor that have been around since like gpt3, which abstract away retries and stuff to make this super easy.
Yeah I though llama.cpp had this during the very early days, if my memory serves me correctly.
Pricing<p>The same reason I want diffusion language models to be mainstream
You don't even need a constrained decoding.<p>As a closed source chat-API provider, you just need to find a way speak JSON correctly at API output.
Price and speed are the difference. But deepseek flash is usually fast and cheap enough, so the use cases are somewhat limited.
jev is optimized for it, a standard LLM isn't and it also costlier and slower.
When you say Jev is optimized for it, I get that there’s no need for unnecessary decodes in an autoregressive fashion.<p>But both LLMs and Jev-like models would need to prefill, the only optimization Jev does differently is the decode which can be emulated by reading off logprobs.<p>We don’t know the param size of Jev, to determine the most comparable model, but if I had to guess it’s sub-100B.
If I had to guess, it's already built and is just waiting on Product's/Marketing's desk. How do you position this without looking like your roadmap is being determined by newcomers? Probably don't want to adopt the same verbiage+acronyms - but also can't be seen to be just sherlocking features.
I think Apple has demonstrated that shipping second has essentially no negative impact if your product is seen as higher quality.
There is zero stigma to shipping second. If anything, the labs’ customers are probably begging for them to add these features natively so they don’t have to deal with the hassle of adding another provider to their stack.
Negative three years, give or take. Although recent Anthropic and OpenAI models no longer expose the capability. But for any open model you just tell it to respond with a single token "Y/N" and take the logit difference. If you want multiple distinct questions answered you just ask them independently and put the shared context first so it gets cached.<p>OpenAI and Anthropic don't want to give out logprobs these days but could trivially add a dedicated classification API to their existing models if there was enough demand.
I think the main differentiator offered by Jev is not the ability to answer questions, most models can be coerced into that function if they don’t already have a dedicated pipeline for it, rather it’s the extreme speed of the evaluation, and very low cost that opens new possibilities.
> it’s the extreme speed of the evaluation, and very low cost that opens new possibilities.<p>It also returns confidence scores for all choices.<p>Granted, they are not stable. They fluctuate even when you reorder choices, but it still counts as an additional feature.
The evaluation is fast because it's all prefill computation with only a single token of inference. Ditto cost, you're paying 100% input costs and nearly zero output. There really isn't any architectural magic to Jev, it's just a straightforward application of normal LLM tech with some good marketing.<p>I mean, Jev is also probably cheaper because it's a rather small model (or at least, I suspect it is based on the overall level of intelligence it demonstrates) so that helps make it cheap too.
Yes this is exactly my assumption as well. I think ppl forgot before agents it was expected slo to have a ttft in range of a few hundard ms, which is what jev is also achieving.<p>Thats also why it feels weird they say they don't "charge for output tokens" since its literally generating a single (or at most very few tokens).
No need, as that functionality can run locally no problem.
Probably at the frontier stage - you will only see it where Jev is better regardless of cost.<p>For everyone else who is conscious of cost, you're already seeing this being built into harnesses.<p>Almost certainly, you'll see versions of this from all the Chinese labs as fast as humanly possible.<p>If I had to guess, Cursor/Grok or Google/Antigravity will be the first major players to natively support something like this to drive down cost, as they're primarily the budget conscious choices.<p>I would be astounded if Anthropic leads the way on a cost reduction.
BeRT and FLAN-T5 were used as classifiers 5-7 years ago, they were technically "frontier" for their time.
I don't think there would be any utility for that. Anything jev can do, a frontier model can also do. Just not as quickly or as cheaply.
I think these products (Jev and the inevitable offerings from Anthropic, OpenAI, etc) want to become more than end-user output machines. They'd benefit from being in the hotpath of other services. Not backgrounded generation but in-band, request-time work.<p>1M x $0.50 == 1B x $0.0005
To expand a bit for my current use cases. Inline routing of work to heavy task specific models, and prompt/context generation (user is asking something, what and how much should we prompt the expensive LLM with). Latency or time to first token does matter for some applications.
But for those of us that prefer open source and self hosting, JEV alternative LAYA will beat anything the frontier models package up.
This type of project looks extremely useful. There was a lot of buzz around Jev, but having models that run locally and can be fine-tuned is extremely helpful.
30ms for a 0.8B decision model is crazy fast. Most of my inference pipelines struggle to hit that with smaller models.
Is it though? I got sub 10ms for 200M params vision model way back in 2020 with TensorRT optimization running on RTX 2080Ti. 30ms for 0.8B classifier model doesn't sound special to me.
how many ms is it for a 32k token prefill?
Training 0.8B models at home with that latency is seriously impressive. What kind of hardware setup did you use for training?
Everyone saying you could replace Jev or decision type models with an LLM with bolted schema output constraining are missing the point completely. Its about extreme speed and cost effectiveness with high quality, neither of which you are going to get with LLMs even with these KV-cache tricks
Awesome, I was just looking for a decision-making model that can be deployed locally, and here you are. Thanks a lot!
83.1 vs 83.0 on your panel against 70 vs 94 in someone's actual use case is the whole story with zero-shot classification. Any sense of what the 0.8B does on a phone NPU instead of an M4 Max? That's what decides if it's shippable on device.
Von 1.2 had a better Doom score :D<p><a href="https://github.com/wfzyx/von" rel="nofollow">https://github.com/wfzyx/von</a>
Oh wow, those Doom scores for Jeff are pretty terrible<p>The Von numbers have led me on a rabbit whole of getting a classifier to play Doom<p>I got it to average 22 kills (the max is 26) on that same scenario that Jeff and Von are testing on (it’s called Defend Center)<p>Now I’m having it play a more advanced scenario, and it’s doing about 45 kills (SOTA is ~59 kills)<p>It’s amazing what you can do with small classifiers if you can collect some data. These models I’m testing train on CPU in seconds (what takes the longest is running the game, doing test runs and collecting data), they are <1MB in size and do inference in <1ms on CPU<p>Edit: after looking at Jeff's numbers more in detail, the 6.5 kills number is not that bad, but it can definitely be better ;)
Typesafe has been quite about the underlying technology behind Jev. Given the speed and cost my hypothesis is that it doesn’t input tokens the way that LLMs do, ie iterating over every word and drawing the connections between each. That is an o(n^2) problem which is why LLMs are so expensive as they scale.
Most likely: it does still have attention layers (the O(n^2) part), but it’s not autoregressive (which makes it O(n^3) because you have to run the whole model again for each predicted token)
I feel like the most likely is that it largely works like how all the recent copycats work: take an existing llm, modify the decoder, do RL training. I think the main reason that jev works better is that they spent more time on that post training step.
But nobody runs the whole model again for each predicted token in each decode step, this is what KV caching (and prefix caching) is for, to keep the model running in O(n^2) overall (and O(n) per decoding step).
Then again, it's only a very small number and fixed set of tokens for the output.
The main difficulty with fast (low-latency) inference, is not actually computation but loading parameters from memory. The problem with generating 1 token at a time isn't that that its expensive computationally (it is, but so is training), but that you need to stream your entire model from memory for every single token (and also the KV cache but that's besides the point). So the strategy usually taken is to process big batches of user requests, letting you share the memory loads across users. This means individual answers aren't that fast, but you can do lots at once. This is why local inference isn't cost-effective; its because the model weren't designed for it in the first place.<p>My hypothesis for Jev is that they simply generate many answers independently in parallel from your prompt, and then discard the duplicates (or train to avoid duplication with attention between the ). In that way the entire batch is 1 user's prompt.
My guess is that they use an encoder-only model as the foundation and then do RLDC. Why? 1) it doesn’t need text generation 2) limited context window (40k last time I check)<p>Those are telltales of a Bert model.
Local models are getting better, its going to win
Isn't jev just a less nuanced classifier? What am I missing?
Anything like this in the VLM side? Classification on images...
I've always been more afraid of these types of models than LLMs. These are what enable mass surveillance at scale and autonomous real time combat drones. Now they are spreading and being optimized. Gg.
Can we get a price comparisson ?<p>Edit: Running them for the masses.
I think Jev is still the king and while I really appreciate this and other similar projects, Jev gives assurance and value that is hard to beat. Well.. this works locally which is always best, even if slower.
My name jeff
[flagged]
[dead]
[dead]
Hi HN. Jeff is a set of small, open-weight Qwen3.5 and Gemma fine-tunes for zero-shot classification, with respectable out-of-the-box performance, meant to be slotted right into code (or fine-tuned further as needed). You give them a situation and a list of options; they return a calibrated probability for each, in one forward pass, with no text generation. The 2B scores 83.1% on a five-benchmark panel (Jev's published figure: 83.0%); the 0.8B decides in about 28 ms on an M4 Max. Apache 2.0, with a Jev-compatible API (I'm not affiliated with TypeSafe).<p>When TypeSafe released Jev a couple of weeks ago and then AutoJev appeared, I wanted to see if I could replicate the experiment using only small language models on local hardware. So everything ran at home: one RTX PRO 6000 for training, two DGX Sparks running Qwen3.8-Flash-Next to write the synthetic data, a MacBook for testing, all monitored from my phone over Tailscale.<p>The caveat: the published Jev and AutoJev numbers are on a different sample of the same benchmarks, and Jeff's overall score comes from classification-style tasks (96% on Financial PhraseBank, 86-89% on RAGTruth, both above Jev). On multi-step reasoning it's behind: BBH 64-68% against Jev's 94%, and about 50% on JevBench's hard tier against 73%. That isn't surprising, and I don't think it matters: no 0.8B or 2B model reasons like a large one, and nobody should expect it to. These are extremely fast judgement-callers. In one of my apps I use the 0.8B for voice navigation; a quick fine-tune (about half an hour on one GPU) took it from 32% to 96% on held-out commands, at about 40 ms per decision.<p>The fun part: games, as a zero-shot test. Games aren't the ideal zero-shot test, but they're fun, and TypeSafe did it with Jev too. There was no game data in training. Each turn the code describes the situation and the moves in words, and the model picks one; the options say what each move leads to, never which one is right. Over 20 episodes each:<p>- Doom (ViZDoom): Jeff 0.8B 6.55 kills per episode, the same as a hand-coded bot and as Jev's published run. Jev's prompt spells out the aiming rule and takes about 212 ms per call over its API; Jeff gets "the nearest monster is a little to your left" and decides in about 29 ms on my Mac.<p>- Frogger: 10.3 crossings, level with the hand-coded bot (10.25), and 10x the untrained base model (1.0).<p>- Pac-Man: 57 of 98 pellets, about 60% of the bot's score and 2x the untrained model.<p>Videos of every run are linked in the README.<p>Lessons learned:<p>- System 1 models are here to stay. Being able to process unstructured data at software speed inside an app is extremely powerful, and being able to do it locally is fantastic.<p>- A small model is a classifier, not a planner. Models of 0.8B-2B don't reason like Qwen3.8-27B or Jev, and they don't need to: present the options the right way and you get 40+ decisions per second, depending on your hardware.<p>- Fine-tune it if needed. If zero-shot isn't good enough for your task, a short fine-tune on your own examples is.<p>- Wording matters enormously. Giving Frogger's final step the same words as every other forward option ("safe, and one row closer to the goal") took one episode from 15 crossings to 23. Before that, the frog just stayed on the last log.<p>- Bigger isn't better. The untrained 2B is already more risk-averse than the untrained 0.8B (in Doom it prefers turning away from the nearest monster), and training made it hesitate in Pac-Man. That's probably why the 0.8B beat the 2B.<p>- Benchmarks don't predict play. Untrained Gemma 4 E2B beats both untrained Qwens on the benchmarks (62.5%) and plays every game worst: right most of the time, but not reliably, and in a real-time loop the mistakes compound.
Funny that the 2B loses to the 0.8B. Question about the benchmarks: BBH and JudgeBench are more reasoning, where you fall behind, but for zero-shot classification there are more relevant ones like Banking77 or CLINC150. Was there no temptation to pick something closer to where System 1 models are actually used?
Great project! How does this compare to asking qwen to reply with 1 token in terms of speed?
That's some local hardware.
[dead]
[dead]
[flagged]
First commit of six commits was 4 hours ago.
I'm curious: in the age of AI, where you can literally tell your clankers to work on something, why do you even care about the longevity of open source projects? There are several projects that are abandoned, and I have resurrected them for my own use cases without any issues.
By the same reasoning, why should I care about the output of someone else’s clanker if I can just get it from my own clanker?<p>But to answer your question, I do still care about software being maintained by someone who can make design decisions instead of just yielding control to bots who tend to produce mediocre designs.
These are all good questions.<p>Perhaps we can think of projects like these the same way we’d think of a good tweet - not valuable in itself but valuable because of the ideas or conversations it generates.
Maybe because they know more about the domain than you do, and it will take you a lot more back-and-forth with your clanker than it would for them with their clanker.
And maybe they don't, and that's the problem with one-day-old projects: we know for sure that the programmer didn't have time to learn anything from that particular project and we now have to trust them that they know what they are doing. Unfortunately this is wrong in 90+% of the time, so that's kind of a gamble to expect one particular project to tick this box.