Zyn Dwarf 1.0

Lightweight general-purpose language model by Zyn Models

Zyn Dwarf 1.0 logo

Hugging FaceOllamaBase model


Overview

Zyn Dwarf 1.0 is a compact ~354M-parameter text model adapted by Zyn Models from LiquidAI/LFM2.5-350M.

The release is aimed at practical local inference, especially on machines with limited CPU, RAM, and storage. The model was post-trained with a mixed supervised dataset covering:

  • General conversation
  • Instruction following
  • Spanish instruction data
  • Programming and code generation
  • Identity / assistant behavior

The final release is available as Transformers/Safetensors, F16 GGUF, and Q4_K_M GGUF.

Important: This model is small by design. It can be surprisingly useful for its size, but it should not be treated as a substitute for larger frontier models on difficult reasoning, long-form debugging, broad factual recall, or complex multi-step tasks.


Model card at a glance

Property Zyn Dwarf 1.0
Organization Zyn Models
Model name Zyn Dwarf 1.0
Parameters ~354M
Architecture LFM2 / LFM2.5 family
Base model LiquidAI/LFM2.5-350M
Main languages Spanish, English
Primary strengths Conversation, instruction following, small code tasks
Native weight format Transformers / Safetensors
Local formats GGUF F16, GGUF Q4_K_M
Q4_K_M size 216.41 MiB
F16 size 676.25 MiB
Q4 size reduction ~68.0%
F16 → Q4 ratio ~3.12× smaller
Recommended CPU context 8192 tokens
GGUF context metadata 128K (runtime recommendation remains 8192 for this release)
Inference engines tested llama.cpp, Ollama packaging

The upstream LFM2.5-350M model card describes a 350M-parameter general-purpose model, 16 layers, 65,536-token vocabulary, 32,768-token context, and support for nine languages. This project inherits its LFM2.5 lineage but focuses its post-training on a smaller practical assistant profile with an explicit Zyn identity. See the upstream card for the original architecture and licensing details: LiquidAI/LFM2.5-350M.


Why a 354M model?

The objective of Zyn Dwarf 1.0 is not to win against billion-parameter models on every benchmark. The objective is to maximize useful behavior per byte and per CPU cycle.

That makes the model appropriate for:

  • Local CPU inference
  • Low-memory environments
  • Android / Termux experimentation
  • VPS environments without GPUs
  • Embedded or edge-style applications
  • Small programming assistants
  • Lightweight chat interfaces

Humanity spent decades making computers smaller, then immediately asked them to run a language model. Naturally.


Release files

Transformers / Safetensors

config.json
generation_config.json
model.safetensors
tokenizer.json
tokenizer_config.json
chat_template.jinja

GGUF

Zyn-Dwarf-1.0-general-final-f16.gguf
Zyn-Dwarf-1.0-Q4_K_M.gguf

The Q4_K_M build is the recommended local release when storage and RAM matter most. The F16 build is the higher-fidelity option when additional memory is available.


Real model evaluation

Test methodology

The results below were produced from actual local inference runs of the final model rather than estimated benchmark scores.

Primary benchmark backend: llama.cpp

Test environment:

  • CPU: 2 vCPU Intel Xeon
  • RAM: ~3.8 GiB
  • GPU: none
  • Runtime: llama.cpp
  • Threads: 2
  • Context used for validation: 2048–8192 depending on the test
  • Deterministic runs: seed 42
  • Sampling for quality smoke tests: temperature 0 to 0.2

This is a smoke-test / capability evaluation, not an official standardized leaderboard benchmark. Results therefore should not be compared numerically with published MMLU, GSM8K, HumanEval, or other benchmark numbers unless the same benchmark harness, prompts, scoring rules, and model variants are used.


Capability smoke suite

Eight representative tasks were checked against the released Q4_K_M model using local inference.

Test Result Notes
Identity PASS Correctly identifies itself as Zyn Dwarf 1.0
Capital of Peru PASS Returned Lima
Arithmetic PASS 27 × 14 + 8 = 386 in validated llama.cpp runs
Python max() generation PASS Generated a correct return max(lista) implementation
Python len() generation PASS Generated a correct return len(lista) implementation
Variable definition PASS Gave an acceptable programming explanation
Basic loop generation PASS Generated a correct 1–5 loop
Python syntax debugging FAIL / WEAK Correct fix diagnosis was inconsistent; the missing : was not reliably identified

Smoke-test result

7 / 8 passed = 87.5% on this manually designed capability suite.

Smoke-test suite

Interpretation

The release is strongest at short, well-scoped instructions and common programming primitives. The most obvious weakness discovered in testing is debugging and error diagnosis, especially when the input code is syntactically malformed.

That result is useful because it tells future training work where to spend data budget: targeted debugging examples are likely to produce more value than endlessly adding generic conversation samples.


A/B comparison with the previous protected checkpoint

A shared subset of four identical tasks was previously used to compare the new general-final checkpoint against the protected checkpoint that existed before the final general training stage.

Shared task Previous checkpoint Zyn Dwarf 1.0 General Final
Identity PASS PASS
Capital of Peru PASS PASS
Arithmetic PASS PASS
Python max() task WEAKER / truncated PASS
Shared subset 3 / 4 4 / 4

Shared-subset accuracy

  • Previous checkpoint: 75%
  • Zyn Dwarf 1.0 General Final: 100%

A/B comparison

This comparison is intentionally limited to the same four previously tested tasks. It is not a claim that the model is globally 33% better; small hand-built test sets cannot justify that conclusion.


Storage efficiency

The same final model is released in two useful GGUF precision levels:

Format Size Relative size
F16 676.25 MiB 100%
Q4_K_M 216.41 MiB ~32.0%

Artifact size

That makes Q4_K_M roughly 3.12× smaller than the F16 artifact, while retaining the same model architecture and weights in quantized form.


Inference performance

Performance is highly dependent on CPU, thread count, memory bandwidth, context length, thermals, and system contention.

During earlier clean local runs on the 2-vCPU test host, the final Q4_K_M build showed approximately:

Metric Observed range
Prompt processing ~115–141 tok/s
Generation ~22–29 tok/s

A later retest while the host was under heavy background load dropped as low as ~2.6 tok/s generation, demonstrating why a single instantaneous speed number would be misleading for this project.

The upstream LiquidAI card reports much higher performance on specialized CPU/SoC setups, but those numbers were measured on different hardware and should not be transplanted into this README as Zyn Dwarf performance. See the upstream model card for its own hardware results: LiquidAI/LFM2.5-350M.


Recommended local inference

llama.cpp: quality-oriented configuration

cd ~/ZynDwarf-1.0

/home/ubuntu/gemma4-350m/llama.cpp/build/bin/llama-cli \
  -m output/Zyn-Dwarf-1.0-general-final-Q4_K_M.gguf \
  -c 8192 \
  -t 2 \
  -tb 2 \
  --temp 0.55 \
  --top-p 0.9 \
  --top-k 40 \
  --min-p 0.05 \
  --repeat-penalty 1.05 \
  --seed 42 \
  -i

For the most faithful local weights, use the F16 artifact instead:

/home/ubuntu/gemma4-350m/llama.cpp/build/bin/llama-cli \
  -m output/Zyn-Dwarf-1.0-general-final-f16.gguf \
  -c 8192 \
  -t 2 \
  -tb 2 \
  --temp 0.55 \
  --top-p 0.9 \
  --top-k 40 \
  --min-p 0.05 \
  --repeat-penalty 1.05 \
  --seed 42 \
  -i

Use the embedded conversation template through interactive/chat mode. Raw -p prompts can bypass the intended chat formatting on some llama.cpp builds.


Transformers usage

from transformers import AutoTokenizer, AutoModelForCausalLM

model_id = "itsZyn/ZynDwarf-1.0"

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)

messages = [
    {"role": "user", "content": "Escribe una función Python para obtener el mayor número de una lista."}
]

inputs = tokenizer.apply_chat_template(
    messages,
    add_generation_prompt=True,
    tokenize=True,
    return_tensors="pt",
)

outputs = model.generate(inputs, max_new_tokens=96)
print(tokenizer.decode(outputs[0][inputs.shape[-1]:], skip_special_tokens=True))

For production inference, configure the device and dtype according to the hardware available.


Ollama

The release was also published under:

itsZyn/ZynDwarf-1.0:latest
itsZyn/ZynDwarf-1.0:q4_k_m
itsZyn/ZynDwarf-1.0:f16

Example pull:

ollama pull itsZyn/ZynDwarf-1.0:q4_k_m

Ollama compatibility note

The GGUF itself is valid and was successfully imported into Ollama. During validation, however, the current Ollama Modelfile/template path did not reproduce the same conversational formatting as the validated llama.cpp path. For example, an Ollama smoke test returned an incorrect arithmetic answer (378) where the validated llama.cpp path returned 386.

Therefore:

  • llama.cpp is the validated reference inference path for this release.
  • Ollama artifacts are published and usable as model blobs.
  • The Ollama conversational template should be treated as experimental until a dedicated template pass is validated.

This distinction is deliberate. A README should be a map, not an advertisement brochure written by a very optimistic intern.


Training summary

The final general model was trained from the official LiquidAI/LFM2.5-350M base rather than continuing from a weaker intermediate checkpoint.

Final training mixture

Source Amount
HuggingFaceTB/smol-smoltalk 1,800
Spanish Tulu instruction examples 900
Code replay examples 1,200
Identity examples 50
Total 3,921

Final training configuration

Setting Value
LoRA rank 4
LoRA alpha 8
LoRA dropout 0.05
Target modules q_proj, v_proj
Learning rate 5e-6
Epochs 1
Max sequence length 512
Batch size 1
Gradient accumulation 8
Optimizer steps 491
Warmup 25 steps
Weight decay 0.01
Gradient clip 1.0
Torch threads 2

The training stage completed all 491 / 491 optimizer steps and the merged final checkpoint was exported to F16 GGUF and Q4_K_M GGUF.


Dataset and licensing notes

The project uses data from multiple sources, each with its own license and terms. The base model is LiquidAI/LFM2.5-350M, whose Hugging Face card identifies its license as lfm1.0.

Before redistributing, fine-tuning, or commercially deploying this model, review:

  1. The license for the LFM2.5 base model.
  2. The licenses/terms of every training dataset used by the project.
  3. The terms of any generated or filtered derivative data.

The repository intentionally uses Hugging Face metadata license: other plus license_name: lfm1.0 rather than claiming Apache-2.0 for the entire resulting model.


Limitations

Zyn Dwarf 1.0 is a compact model and inherits the usual limitations of small language models.

Known weaknesses observed in testing

  • Debugging malformed code is weaker than code generation.
  • Long complex reasoning may degrade quickly.
  • The model can become verbose when a prompt does not constrain the answer.
  • Knowledge accuracy should be verified for high-stakes or current facts.
  • Benchmark results from a few hand-designed tests are not a substitute for standardized evaluation.
  • CPU inference speed varies dramatically with system load and hardware.
  • Ollama chat-template compatibility is not yet considered the reference path.

Recommended usage

Use Zyn Dwarf 1.0 for:

  • Lightweight chat
  • Spanish / English assistant tasks
  • Small programming questions
  • Code snippets
  • Explanations and summaries
  • Local experimentation
  • Low-resource deployments

For difficult software debugging, long mathematical proofs, broad factual research, or demanding agentic workflows, use a larger model or pair Zyn Dwarf with external tools and verification.


Roadmap

The next logical improvement is targeted debugging training, not simply adding more generic chat examples.

Planned directions:

  • Syntax-error diagnosis
  • Traceback interpretation
  • Bug localization
  • Minimal fixes
  • JavaScript / Node.js debugging
  • HTML / CSS debugging
  • Better uncertainty handling
  • Expanded Spanish programming coverage
  • Standardized automatic evaluation
  • Dedicated Ollama chat-template validation

Citation and attribution

Base model

Liquid AI. LFM2.5-350M. 2026.
https://huggingface.co/LiquidAI/LFM2.5-350M

Technical report:

Liquid AI, LFM2 Technical Report, arXiv:2511.23404.

Zyn Dwarf 1.0

Zyn Models. Zyn Dwarf 1.0.
Hugging Face: itsZyn/ZynDwarf-1.0
Ollama: itsZyn/ZynDwarf-1.0

Final status

Zyn Dwarf 1.0 is a practical ~354M-parameter lightweight model with a strong small-task profile, especially for short code generation and instruction following.

Current evidence supports the following positioning:

Area Assessment
Small footprint Excellent
Local CPU suitability Strong
Basic programming Strong for size
Spanish conversation Good
Identity consistency Good with intended chat formatting
Debugging Needs improvement
Long complex reasoning Limited by model scale
Ollama chat formatting Experimental

Zyn Dwarf smoke tests


Project

Zyn Dwarf 1.0
Created and trained by Zyn Models
Model family: Zyn Dwarf

Downloads last month
830
Safetensors
Model size
0.4B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for itsZyn/ZynDwarf-1.0

Quantized
(75)
this model

Paper for itsZyn/ZynDwarf-1.0