AI / ML Research · On Hugging Face

Vini & Tini

Everyone can call an LLM API. I wanted to know what it takes to build one. So I trained two small language models from scratch: a BitNet b1.58 edge assistant meant to run my home, and a dense transformer that writes TypeScript. No fine-tuned checkpoints of someone else's homework.

BuildingResearch, Vini is on Hugging Face

Trained From Scratch BitNet b1.58 PyTorch On HuggingFace Edge-First

The 60-second version

My role
Researcher and engineer, data pipelines, training loops, evaluation, deployment design
Vini
~50M BitNet b1.58 edge assistant, pretrained on ~1.05B tokens, instruction tuning in progress. Model card and configs: jayptl-rq/vini-pico
Tini
~85M dense TypeScript coding model, 46h on a T4, val loss 1.31; weights not public yet
The approach
Two bets: ternary BitNet b1.58 weights (−1 / 0 / +1) for Vini's edge budget, a modern dense block for Tini's code quality
Ecosystem
Sits inside my self-hosted stack: Ollama inference, n8n + MCP automation, Qdrant RAG
Status
v1 of both trained and retired; the lessons now drive a multi-expert rebuild
Vini and Tini model profile on the model hub
FIG 1, training curves, eval outputs, and demo clips.

01 The problem, and why "just use an API" wasn't the answer

Commercial LLMs are brilliant and borrowed: your prompts leave the building, your assistant lives in someone else's pricing tier, and nothing runs when the internet doesn't. I wanted an assistant that lives on my desk, answers in milliseconds, knows nothing leaves the room, and keeps working during power-cut-induced network blackouts. That constraint set points exactly one direction: small models, local hardware.

The stakeholders here are unusual but real:

  • Me, as the user, an assistant that handles reminders, timers, Q&A, IoT toggles, and tool routing without phoning home.
  • Developers like me, who want a compact coding model specialized for TypeScript backend work, inspectable and Apache 2.0 licensed.
  • The edge itself, Raspberry Pis and old desktops deserve useful AI without 24GB VRAM.

02 My role

Sole researcher-engineer. Dataset collection and curation, tokenizer strategy, training-loop implementation in PyTorch, evaluation harnesses, and deployment packaging, the full pipeline from raw text to a model with a job. This is research discipline applied to product instincts: every experiment logged, every checkpoint versioned, every failure kept as evidence.

03 Why BitNet for Vini, and not for Tini

BitNet b1.58 quantizes weights to three values, −1, 0, +1, replacing most multiplications with additions. The payoff is brutal efficiency: dramatically smaller memory footprint and energy-per-token, which is precisely the currency of edge devices. For an assistant meant to live on a Raspberry Pi, ternary weights aren't a compromise, they're the enabling technology. Tini took the other road: a dense transformer (RoPE, RMSNorm, SwiGLU, grouped-query attention), because code quality at ~85M parameters needed every bit of precision it could get.

04 Training them

  • Vini (the assistant): pretrained on ~1.05B tokens (FineWeb-Edu, StarCoder TypeScript and Dart, tool traces, OpenHermes) for ~17.6h on a single L4, then curriculum-staged instruction data for chat, IoT commands, and tool routing, built one verified batch at a time, because an assistant's real skill is deciding which tool.
  • Tini (the coder): ~257k cleaned TypeScript samples from The Stack, with MinHash dedupe and secret scrubbing, a 32k SentencePiece tokenizer, and 15 epochs on a T4 for ~46h. Validation loss fell from 2.07 to 1.31.
  • Evaluation: qualitative probes and loss tracking. The gap, no pass@k and no task-level benchmark, is the main lesson carried into v2.

05 Shipping it

Vini's model card and training configs are public at jayptl-rq/vini-pico on my Hugging Face profile. Tini's weights are not public yet. Vini was designed to plug into my self-hosted stack: Ollama-based local inference, n8n workflows with MCP connectors for tool calls, and Qdrant vector storage for retrieval over my own corpora. Both v1 models are now retired on purpose. Their postmortems, dense-first architecture, instruction-tuning gates, real evals, drive the multi-expert rebuild.

06 What it proves

  • ML engineering beyond API consumption: tokenizers, training loops, quantization-aware training, and architecture choices, owned end to end.
  • Open-source contribution with real hygiene: license, docs, reproducibility artifacts.
  • Systems thinking across the full AI stack, training, serving (FastAPI/Hono), orchestration (n8n + MCP), and retrieval (Qdrant/Chroma).
  • Judgment about trade-offs: knowing when 1.58-bit ternary weights earn their place, and when they don't.

07 What I learned

Data quality beats architecture cleverness more often than Twitter admits. Evaluation is the actual product, a model without a benchmark you trust is a vibe. And there's something clarifying about hardware limits: when your model has to fit on a board the size of a credit card, every design choice becomes honest. So do the results: ~50M ternary parameters on ~1B tokens is not a fluent assistant, which is exactly why the rebuild starts dense.