Skip to main content

CPU-first NumPy deep learning toolkit for tiny language-model workflows

Project description

znap

A CPU-first deep learning library built on NumPy for learning, prototyping, and tiny language-model workflows.

Python License: MIT

Why znap

  • Minimal and readable codebase for understanding core ML building blocks
  • End-to-end NLP workflow: tokenization, training, generation, fine-tuning, benchmarking
  • Designed to run on CPU laptops for experiments and education
  • Includes a simple autograd engine, neural layers, optimizers, and training utilities

Features

  • Core framework:
    • Tensor + reverse-mode autograd
    • Layers: Linear, activations, normalization, dropout, embeddings
    • Optimizers: SGD, Adam, AdamW, RMSprop, Adagrad
    • Losses: CrossEntropy, MSE, BCE variants, etc.
  • Text/tokenization:
    • whitespace, bpe, and bytelevel tokenizers
    • Data loaders for .txt, .jsonl, .json, .csv, .tsv (+ .gz variants)
  • Modeling and CLI:
    • train-mlm, train-causal, train-transformer
    • train-vlm (tiny vision-language model from image-text JSONL)
    • finetune (full fine-tune)
    • train-lora (LoRA adapters for causal model)
    • generate, chat, generate-vlm, chat-vlm, benchmark, import-hf, make-dataset

Installation

pip install znap

For local development:

pip install -e .[dev]

CLI check:

znap -h

Quickstart

1) Create a toy dataset

python -m znap.cli make-dataset \
  --output generated_datasets \
  --name znap_chat_train \
  --samples 2000

2) Train a tiny causal model

python -m znap.cli train-causal \
  --data generated_datasets/znap_chat_train.txt \
  --output runs/my_causal \
  --tokenizer bpe \
  --context-size 32 \
  --d-model 64 \
  --hidden-size 128 \
  --batch-size 64 \
  --epochs 5

3) Generate text

python -m znap.cli generate \
  --model-dir runs/my_causal \
  --prompt "hello, who are you?" \
  --max-new-tokens 80

4) Chat (interactive)

python -m znap.cli chat --model-dir runs/my_causal --max-new-tokens 80

5) Fine-tune

python -m znap.cli finetune \
  --base-model-dir runs/my_causal \
  --data generated_datasets/znap_chat_train.jsonl \
  --output runs/my_causal_ft \
  --epochs 3 \
  --batch-size 32

Transformer Training

python -m znap.cli train-transformer \
  --data generated_datasets/znap_chat_train.txt \
  --output runs/tf_phase2 \
  --tokenizer bytelevel \
  --preset tiny \
  --epochs 5 \
  --batch-size 16

LoRA and Quantized Inference

LoRA fine-tuning:

python -m znap.cli train-lora \
  --base-model-dir runs/my_causal \
  --data generated_datasets/znap_chat_train.jsonl \
  --output runs/my_lora \
  --rank 4 --alpha 8 --epochs 3

Use LoRA adapters:

python -m znap.cli generate \
  --model-dir runs/my_causal \
  --lora-path runs/my_lora/lora_adapters.npz \
  --prompt "hello"

Quantized generation:

python -m znap.cli generate --model-dir runs/my_causal --prompt "hello" --quantize int8
python -m znap.cli generate --model-dir runs/my_causal --prompt "hello" --quantize int4

Vision-Language Training (Scaffold)

Install image extras:

pip install -e .[image]

Dataset format (.jsonl):

{"image":"path/to/image1.jpg","text":"describe this scene"}
{"image":"path/to/image2.png","text":"what object is visible?"}

Train:

python -m znap.cli train-vlm \
  --data data/vision_text.jsonl \
  --output runs/my_vlm \
  --context-size 32 \
  --image-size 32 \
  --epochs 5

Generate with image:

python -m znap.cli generate-vlm \
  --model-dir runs/my_vlm \
  --image path/to/image1.jpg \
  --prompt "answer:"

Import HF-like Local Checkpoints

import-hf supports local .npz + config.json sources and converts them to znap transformer artifacts.

python -m znap.cli import-hf --source path/to/local_hf_npz_dir --output runs/imported_tf

Project Layout

znap/
  core/          # tensor + autograd engine
  nn/            # layers/modules
  optim/         # optimizers
  losses/        # losses
  data/          # dataset loading and batching
  tokenizers/    # whitespace, bpe, byte-level
  train/         # training/eval helpers
  models/        # tiny MLM and causal models
  transformer.py # decoder-only transformer
  cli.py         # command-line interface

Development

Run tests:

python -m pytest -q

Build package:

python -m pip install --upgrade build twine
python -m build
python -m twine check dist/*

Roadmap

  • Better checkpoint compatibility and broader external model import support
  • Improved docs with more practical fine-tuning recipes
  • Expanded benchmarks and profiling outputs

License

MIT License. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

znap-1.2.0.tar.gz (58.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

znap-1.2.0-py3-none-any.whl (58.2 kB view details)

Uploaded Python 3

File details

Details for the file znap-1.2.0.tar.gz.

File metadata

  • Download URL: znap-1.2.0.tar.gz
  • Upload date:
  • Size: 58.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.0

File hashes

Hashes for znap-1.2.0.tar.gz
Algorithm Hash digest
SHA256 8152a0fbc1ebd173e0f4bacfcc70cfd81b2d63fb109b62d3cb39e4daf44e58eb
MD5 723d161d2da84687c11b90a314c54506
BLAKE2b-256 0f9d642c8435d2b1aedc776f2e4fbae6983e0ccbe8884920bd85494cad39e709

See more details on using hashes here.

File details

Details for the file znap-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: znap-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 58.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.0

File hashes

Hashes for znap-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1dd458daf4f9ecd8595cd9869da91ff2191e101c75fc962d5add90bf372939a1
MD5 a8665018b93f1c1abf3b498ddd8fe853
BLAKE2b-256 100b41330fdab80f8ffeb245bdc2344441b3eb0a97720f79fa51ee2001bee519

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page