Frankenstein Transformer
See frankenstein-transformer for a web interface to configure your YAML!
Config-driven transformer experimentation toolkit with 36 mixer architectures and 23 optimizer families.
Quick Start
| Method | Command |
|---|---|
| uv (recommended) | git clone https://github.com/erickfmm/frankenstein-transformer.git && cd frankenstein-transformer && uv venv && source .venv/bin/activate && uv pip install -e ".[train]" |
| pip | python -m venv .venv && source .venv/bin/activate && pip install -e ".[train]" |
| conda | conda create -n frankenstein python=3.9 && conda activate frankenstein && pip install -e ".[train]" |
Verify: frankenstein-transformer --help
Feature Matrix
| Feature | Scale |
|---|---|
| Sequence mixer architectures | 36 across 5 categories (Dense, Recurrent, Sparse, Gated, Latent) |
| Optimizer families | 23 across 6 categories |
| Model classes | frankenstein, frankensteindecoder, frankenstein_vit |
| Training modes | Encoder (MLM) / Decoder (autoregressive) / Vision (patch prediction, classification, segmentation) |
| Normalization types | layer_norm, dynamic_tanh, derf, rms_norm, prms_norm, flash_norm |
| CLI subcommands | 9 |
| Web configuration UI | Streamlit schema-driven YAML builder |
| Quantized deployment | BitNet + checkpoint export pipeline |
| SBERT workflows | Training + inference (similarity, search, cluster, encode) |
Architecture Decision Table
| Model Class | Mode | Use Case |
|---|---|---|
frankenstein |
Encoder | Full-featured MLM pre-training with mixed attention, MoE, and all 36 mixer types |
frankensteindecoder |
Decoder | Autoregressive causal decoder for LLM-style generation; forces mode: decoder |
frankenstein_vit |
Encoder (vision) | Vision Transformer (arXiv:2010.11929) for image understanding: patch prediction, classification, segmentation (arXiv:2503.19108); forces mode: encoder, requires image: + dataset: blocks |
See configs/README.md for preset details and docs/specs/ for architecture deep-dives.
CLI Command Reference
| Subcommand | Purpose | Example |
|---|---|---|
train |
Run schema-validated training | frankenstein-transformer train --config-name frankenstein --device auto |
deploy |
Export checkpoint to deployment artifacts | frankenstein-transformer deploy --checkpoint ckpt.pt --output deployed/ --format quantized |
quantize |
Shortcut for quantized deployment | frankenstein-transformer quantize --checkpoint ckpt.pt --output deployed_q/ --validate |
infer |
Batch/interactive/benchmark inference | frankenstein-transformer infer --model deployed/ --text "hello" --device auto |
sbert-train |
Train sentence embedding model | frankenstein-transformer sbert-train --output_dir ./sbert_out --batch_size 16 --epochs 4 |
sbert-infer |
SBERT similarity/search/cluster/encode | frankenstein-transformer sbert-infer --model_path ./sbert_out --mode similarity --sentence1 "a" --sentence2 "b" |
transformers-export |
Export to HuggingFace Transformers format | frankenstein-transformer transformers-export --config-name frankenstein --output ./hf_export/ |
bitnet-gguf |
Export a BitNet model to GGUF (i2_s) for bitnet.cpp | frankenstein-transformer bitnet-gguf --model ckpt.pt --yaml cfg.yaml --output out.gguf |
web-server |
Launch Streamlit config builder UI | frankenstein-transformer web-server |
All model-executing commands accept --device auto|cpu|cuda|mps.
Mixer Categories
| Category | Code Names | Description |
|---|---|---|
| Dense | standard_attn, sigmoid_attn |
Full quadratic attention variants |
| GQA | gqa_attn |
Grouped-query attention with configurable KV heads |
| Recurrent | retnet, retnet_attn, mamba, ode, titan_attn, engram_attn |
Retention networks, state-space models, continuous-depth ODE layers, memory-augmented attention, and n-gram memory |
| Sparse | sparse_transformer_attn, longformer_attn, bigbird_attn, sparsek_attn, nsa_attn, sparge_attn ⚠️, fasa_attn ⚠️, msa_attn, sparda_attn |
Factorized, sliding-window, token-selection, and block-sparse (GQA-based) patterns |
| Gated | gla_attn, deltanet_attn, gated_deltanet_attn, gated_deltanet2_attn, hgrn2_attn, fox_attn, gated_softmax_attn, kda_attn |
Linear attention with multiplicative gates, delta rules, and gated softmax |
| Latent | mla_attn, gqla_attn, mlra_attn, tucker_attn, iha_attn, gta_attn, mtla_attn, cca_attn, ccgqa_attn |
KV-compression and head-mixing variants generalising GQA (latent attention, Tucker factorisation, interleaved pseudo-heads, temporal merging, compressed convolutional attention) |
⚠️ sparge_attn and fasa_attn are eval-only — training raises a runtime error.
Configure via layer_pattern in YAML. See src/schema.yaml for the full mixer reference table.
Optimizer Categories
| Category | Optimizers | Count |
|---|---|---|
| Classical | sgd_momentum, adamw, radam, adan, adopt, ademamix, lamb |
7 |
| Variance Reduction | mars_adamw, cautious_adamw |
2 |
| Memory-Efficient | adafactor, galore_adamw, lion, apollo, apollo_mini, q_apollo |
6 |
| Schedule-Free | schedulefree_adamw, prodigy |
2 |
| Second-Order | sophia, shampoo, soap |
3 |
| Geometry-Oriented | muon, turbo_muon, anon |
3 |
Parameters use prefixed keys: <optimizer_class>-<group>_<param> (e.g. adamw-lr_embeddings, muon-ns_steps). See configs/README.md for the full parameter reference.
Documentation Map
| Resource | Content |
|---|---|
| configs/README.md | Schema walkthrough, preset details, optimizer parameter reference |
| src/schema.yaml | Authoritative training config schema (source of truth) |
| docs/README.md | CLI reference and workflow guide |
| docs/paper.pdf | Technical report (English) |
| docs/paper-es.pdf | Technical report (Spanish) |
| docs/specs/ | Architecture and feature specifications |
| docs/specs/vision.md | Vision Transformer (frankenstein_vit) spec — patch prediction, classification, segmentation |
| frankenstein-transformer.readthedocs.io | Full hosted documentation (specs, API, papers, bibliography) |
| docs/transformers_compatibility.md | HuggingFace export compatibility guide |
Installation
uv (recommended)
git clone https://github.com/erickfmm/frankenstein-transformer.git
cd frankenstein-transformer
uv venv
source .venv/bin/activate
uv pip install -e ".[train]"
pip
python -m venv .venv
source .venv/bin/activate
pip install -e ".[train]"
conda
conda create -n frankenstein python=3.9
conda activate frankenstein
pip install -e ".[train]"
Verify installation:
frankenstein-transformer --help
Quick Training Example
Minimal YAML config (my_config.yaml) — only the 5 required model fields plus task; everything else uses FrankensteinModelConfig/TrainingConfig defaults:
model_class: frankenstein
model:
vocab_size: 30522
hidden_size: 256
num_layers: 4
num_heads: 8
layer_pattern: [standard_attn, standard_attn, standard_attn, standard_attn]
training:
task: mlm
batch_size: 8
max_length: 128
mlm_probability: 0.15
max_samples: 100000
dataset_batch_size: 10000
num_workers: 4
cache_dir: "./temp_data/cache"
optimizer:
optimizer_class: adamw
parameters:
adamw-lr_embeddings: 1e-4
adamw-lr_norms: 1e-4
adamw-lr_attention: 1e-4
adamw-lr_other: 1e-4
adamw-wd_embeddings: 0.01
adamw-wd_norms: 0.01
adamw-wd_attention: 0.01
adamw-wd_other: 0.01
adamw-betas_embeddings: [0.9, 0.95]
adamw-betas_norms: [0.9, 0.95]
adamw-betas_attention: [0.9, 0.95]
adamw-betas_other: [0.9, 0.95]
adamw-eps_embeddings: 1e-8
adamw-eps_norms: 1e-8
adamw-eps_attention: 1e-8
adamw-eps_other: 1e-8
scheduler_total_steps: 1000
Unspecified model fields fall back to FrankensteinModelConfig defaults (num_loops=2, dropout=0.1, norm_type=dynamic_tanh, use_moe=true, ffn_activation=silu, etc.). Unspecified training fields fall back to TrainingConfig defaults (scheduler_type=cosine, grad_clip_max_norm=5.0, gpu_temp_guard_enabled=true, etc.). Override only what you need to change.
Run:
frankenstein-transformer train --config my_config.yaml --device auto
List available named presets:
frankenstein-transformer train --list-configs
Vision Transformer (frankenstein_vit) Example
The frankenstein_vit model class (arXiv:2010.11929) splits images into patches, embeds them, and processes the sequence through the same HybridLayer stack as the text models. It supports three tasks: patch_prediction (autosupervised masked patch prediction), classification (image classification), and segmentation (per-pixel or EoMT query-based, arXiv:2503.19108).
Minimal classification YAML (vit_config.yaml):
model_class: frankenstein_vit
model:
dims:
hidden_size: 768
num_layers: 12
num_heads: 12
layer_pattern: [standard_attn]
mode: encoder
norm: {type: layer_norm}
use_moe: false
use_bitnet: false
ffn_activation: gelu
ffn_hidden_size: 3072
image:
image_size: {height: 224, width: 224}
patch_size: 16
in_channels: 3
pos_embedding_type: learned_1d
cls_token: true
pooling_mode: cls
num_classes: 10
dataset:
dataset_name: cifar10
rescale: {height: 224, width: 224}
training:
task: classification
batch_size: 512
num_epochs: 90
optimizer:
optimizer_class: adamw
parameters:
adamw-lr_other: 0.001
adamw-wd_other: 0.1
classification:
batch_size: 512
num_epochs: 90
learning_rate: 0.001
Run: frankenstein-transformer train --config vit_config.yaml --device auto
See configs/frankenstein_vit_base.yaml for the full ViT-Base/16 preset and docs/specs/vision.md for the complete specification.
License
Apache License 2.0 — see LICENSE for full text.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file frankenstein_transformer-1.1.1.tar.gz.
File metadata
- Download URL: frankenstein_transformer-1.1.1.tar.gz
- Upload date:
- Size: 349.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e8bd6f89c365908ff20099e1e37d3bc6bff882aa5bb90ab9138c063c9cfcda2d
|
|
| MD5 |
69f5561d2bf16fd56c84c3e6e8d0ef62
|
|
| BLAKE2b-256 |
e967cfabf22f0e1bcaf3080a0bc6906f8d64ab339bac6f2fb9fbc31af2e471da
|
Provenance
The following attestation bundles were made for frankenstein_transformer-1.1.1.tar.gz:
Publisher:
publish.yml on erickfmm/frankenstein-transformer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
frankenstein_transformer-1.1.1.tar.gz -
Subject digest:
e8bd6f89c365908ff20099e1e37d3bc6bff882aa5bb90ab9138c063c9cfcda2d - Sigstore transparency entry: 2457479215
- Sigstore integration time:
-
Permalink:
erickfmm/frankenstein-transformer@941a812949a29c7d9c0a8beaf4e4f1adeaa5d695 -
Branch / Tag:
refs/tags/v1.1.1 - Owner: https://github.com/erickfmm
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@941a812949a29c7d9c0a8beaf4e4f1adeaa5d695 -
Trigger Event:
push
-
Statement type:
File details
Details for the file frankenstein_transformer-1.1.1-py3-none-any.whl.
File metadata
- Download URL: frankenstein_transformer-1.1.1-py3-none-any.whl
- Upload date:
- Size: 462.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb4fcd44ff12fb566db3f2aa1a46f74367449eb44bb87e4224c0a423e7023d25
|
|
| MD5 |
2aa5757963dbdc0b71e7524f8c326d43
|
|
| BLAKE2b-256 |
0745978bb7b7d1c017956a0326efd572dc0bf644bd2735934f3c02d7b64b7ba3
|
Provenance
The following attestation bundles were made for frankenstein_transformer-1.1.1-py3-none-any.whl:
Publisher:
publish.yml on erickfmm/frankenstein-transformer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
frankenstein_transformer-1.1.1-py3-none-any.whl -
Subject digest:
fb4fcd44ff12fb566db3f2aa1a46f74367449eb44bb87e4224c0a423e7023d25 - Sigstore transparency entry: 2457479325
- Sigstore integration time:
-
Permalink:
erickfmm/frankenstein-transformer@941a812949a29c7d9c0a8beaf4e4f1adeaa5d695 -
Branch / Tag:
refs/tags/v1.1.1 - Owner: https://github.com/erickfmm
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@941a812949a29c7d9c0a8beaf4e4f1adeaa5d695 -
Trigger Event:
push
-
Statement type: