Instructions to use itsZyn/ZynDwarf-1.0 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use itsZyn/ZynDwarf-1.0 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="itsZyn/ZynDwarf-1.0") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("itsZyn/ZynDwarf-1.0") model = AutoModelForCausalLM.from_pretrained("itsZyn/ZynDwarf-1.0", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use itsZyn/ZynDwarf-1.0 with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf itsZyn/ZynDwarf-1.0:Q4_K_M # Run inference directly in the terminal: llama cli -hf itsZyn/ZynDwarf-1.0:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf itsZyn/ZynDwarf-1.0:Q4_K_M # Run inference directly in the terminal: llama cli -hf itsZyn/ZynDwarf-1.0:Q4_K_M
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf itsZyn/ZynDwarf-1.0:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf itsZyn/ZynDwarf-1.0:Q4_K_M
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf itsZyn/ZynDwarf-1.0:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf itsZyn/ZynDwarf-1.0:Q4_K_M
Use Docker
docker model run hf.co/itsZyn/ZynDwarf-1.0:Q4_K_M
- LM Studio
- Jan
- vLLM
How to use itsZyn/ZynDwarf-1.0 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "itsZyn/ZynDwarf-1.0" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "itsZyn/ZynDwarf-1.0", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/itsZyn/ZynDwarf-1.0:Q4_K_M
- SGLang
How to use itsZyn/ZynDwarf-1.0 with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "itsZyn/ZynDwarf-1.0" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "itsZyn/ZynDwarf-1.0", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "itsZyn/ZynDwarf-1.0" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "itsZyn/ZynDwarf-1.0", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Ollama
How to use itsZyn/ZynDwarf-1.0 with Ollama:
ollama run hf.co/itsZyn/ZynDwarf-1.0:Q4_K_M
- Unsloth Desktop
- Pi
How to use itsZyn/ZynDwarf-1.0 with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf itsZyn/ZynDwarf-1.0:Q4_K_M
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "itsZyn/ZynDwarf-1.0:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use itsZyn/ZynDwarf-1.0 with Docker Model Runner:
docker model run hf.co/itsZyn/ZynDwarf-1.0:Q4_K_M
- Lemonade
How to use itsZyn/ZynDwarf-1.0 with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull itsZyn/ZynDwarf-1.0:Q4_K_M
Run and chat with the model
lemonade run user.ZynDwarf-1.0-Q4_K_M
List all available models
lemonade list
- Hermes Agent
How to use itsZyn/ZynDwarf-1.0 with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf itsZyn/ZynDwarf-1.0:Q4_K_M
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default itsZyn/ZynDwarf-1.0:Q4_K_M
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use itsZyn/ZynDwarf-1.0 with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf itsZyn/ZynDwarf-1.0:Q4_K_M
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "itsZyn/ZynDwarf-1.0:Q4_K_M" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
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
0to0.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.
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%
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% |
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
-pprompts 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:
- The license for the LFM2.5 base model.
- The licenses/terms of every training dataset used by the project.
- 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 |
Project
Zyn Dwarf 1.0
Created and trained by Zyn Models
Model family: Zyn Dwarf
- Downloads last month
- 830