Cool technique, but I'm not sure I'd call it simple.
Doing this means that you can't just tokenize the string output of the chat template as one big string. You might need to tokenize things separately, and combine them after.
You're right, there must be a good and simple way to do it.
Obviously the prefix-with-backslash convention won't do it.
The escaping system could be something like inserting a character on the second position in the text repr, and reversing that on output too if it matches an escaped known special token.
Changing the vocab on the fly requires tokenizing things separately, breaking the chat template.
Anecdotally, even claude code has an anneurism sometimes when listing special tokens. Idk exactly what claude's <eos> token is, but I'm fairly sure I've seen it stop generation when it tried to generate it before.
I should also say that I've (clearly) not thought about this deeply. There should be a simpler way to do it.
The model sees one token per marker - but the overlap with ingested actual text is still relevant, because the tokenizer will ingest regular text, where it will turn "<|turn>" into the same token.
For this reason, it can be tricky to work on the runtime for a model with the same model. This really feels like an accidental problem, but I'm not sure if it's really solvable without abandoning the text representations altogether (and the jinja abstraction along with it).
Yeah, TheBloke era of local LLMs were good times. TBF Unsloth are doing a fantastic job of publishing quants of the major models quickly - they just don't have nearly the volume of "weird" models as TheBloke did.
I love mistral, but that model is... not the best. Maybe try out Gemma 4 e4b, it's a similar size to Mistral 7B, and should run great on your 4070 ("E4B" is slightly misleading naming).
NobodyWho is making developer tools for running small language models in local-first applications.
Our core principle is to ship the model weights along with the application, and then do efficient inference locally and offline, on any device. We run fast on Linux, MacOS, Windows, Android and iOS.
The main product is an inference library that wraps llama.cpp, written in Rust. We provide bindings for Python, Godot (the game engine), and will be releasing a Flutter plugin soon. It's all licensed under EUPL 1.2. Repo here: https://github.com/nobodywho-ooo/nobodywho/
We're hiring people who are comfortable building highly cross-platform FFI applications in Rust (with C++ dependencies), and people who are deeply familiar with language models and the open standards around them, as well as fine-tuning and evaluating models. We're also looking for a technical DevRel profile.
If any of that sounds relevant to you, feel free to email me: a>at<nobodywho.ooo
I'm working on a plugin[1] that runs local LLMs from the Godot game engine. The optimal model sizes seem to be 2B-7B ish, since those will run fast enough on most computers. We recommend that people try it out with Gemma 2 2B (but it will work with any model that works with llama.cpp)
At those sizes, it's great for generating non-repetitive flavortext for NPCs. No more "I took an arrow to the knee".
Models at around the 2B size aren't really capable enough to act a competent adversary - but they are great for something like bargaining with a shopkeeper, or some other role where natural language can let players do a bit more immersive roleplay.
What makes you say that these are all Stenbergs creations?
Could it be that these are just projects that use libcurl in some way?
I'm having trouble finding any sources that say that Daniel Stenberg actually worked on spotify, utorrent or openttd directly - just to test three of them.
The MNT Reform[1] is a pretty sexy open hardware laptop with a mechanical keyboard, optional trackball, and a small ARM processor.
A cursory glance at geekbench shows that you can get around 50% the performance of a 2020 Macbook Air M1, if you get the upgraded CPU option.[2][3] I have no idea how useful those benchmarks are, though.
Aforementionend friend and Cactus Comments dev here.
We don't support any sort of threading yet, although Cerulean-style threading is definitely somewhere down the road. Although stuff like redactions and emoji reactions are a higher priority right now.
We're also keeping our eyes out for the upcoming spaces stuff. That might be useful for grouping comment sections.