A toolkit for building model families — seed, grow, fuse, freeze, extend.
Project description
olaverse-foundry
Build model families from a single pretrained seed.
olaverse-foundry is the training and model-factory layer of the Olaverse ecosystem. Where olaverse gives you ready-to-use NLP models, foundry lets you build new ones — distilling, growing, fusing, and adapting them for production.
seed → grow → distil / fuse → freeze → skill packs
Install
# Core (schema validation, growth planning — no GPU required)
pip install olaverse-foundry
# GPU training
pip install olaverse-foundry[torch]
# LoRA skill packs
pip install olaverse-foundry[torch,lego]
# Everything
pip install olaverse-foundry[all]
Quick start — embedding distillation (200M student)
from foundry import DataPipeline, EmbeddingDistillTrainer, EmbeddingDistillConfig
from transformers import AutoModel, AutoTokenizer
# Load student and teacher
student = AutoModel.from_pretrained("microsoft/deberta-v3-base")
teacher = AutoModel.from_pretrained("BAAI/bge-large-en-v1.5")
tok = AutoTokenizer.from_pretrained("microsoft/deberta-v3-base")
# Stream data
pipe = DataPipeline(
source = my_hf_dataset,
tokenizer = tok,
batch_size = 32,
max_length = 128,
mode = "embed",
shuffle_buffer = 10_000,
)
# Train
trainer = EmbeddingDistillTrainer(
student = student,
teacher = teacher,
config = EmbeddingDistillConfig(
loss = "cosine",
pool = "mean",
epochs = 3,
lr_scheduler = "cosine",
warmup_steps = 200,
torch_dtype = "bfloat16",
save_every = 1000,
save_dir = "/checkpoints/embed-200m",
log_backend = "wandb",
),
)
result = trainer.train(pipe, eval_dataset=eval_pipe)
print(result["eval_losses"])
Quick start — causal LM distillation with multiple teachers
from foundry import (
DataPipeline, TorchDistillTrainer, TorchTrainConfig,
TeacherRegistry, FoundryRecipe,
)
# Build a registry of teachers
teachers = TeacherRegistry.from_names(
["meta-llama/Llama-3.1-70B", "Qwen/Qwen2-72B-Instruct"],
weights=[1.0, 0.8],
)
teachers.load_all()
# Stream training data
pipe = DataPipeline(
source = my_dataset,
tokenizer = tok,
batch_size = 8,
max_length = 2048,
mode = "lm",
)
trainer = TorchDistillTrainer(
student = my_3b_model,
teachers = teachers,
config = TorchTrainConfig(
epochs = 1,
lr_scheduler = "cosine",
warmup_steps = 500,
torch_dtype = "bfloat16",
grad_accumulation_steps = 8,
save_every = 500,
save_dir = "/checkpoints/run1",
eval_every = 100,
log_backend = "wandb",
),
)
result = trainer.train(pipe, eval_dataset=eval_pipe)
Key components
| Module | What it does |
|---|---|
DataPipeline |
Converts HF datasets, string lists, or numpy arrays into trainer-ready batches. Supports streaming and reservoir shuffle. |
TorchDistillTrainer |
Single-GPU distillation: CE + KL loss against one or more teachers. |
CachedDistillTrainer |
Like TorchDistillTrainer but caches teacher logits on disk after the first pass. Subsequent epochs are free. Supports accelerate for multi-GPU. |
EmbeddingDistillTrainer |
MSE / cosine loss on pooled sentence vectors. Use for bi-encoder / reranker distillation. |
TeacherRegistry |
Pool of HF teacher models with relative weights. Handles AutoModelForCausalLM and AutoModel (encoders). |
LogitCache |
In-memory + on-disk cache for top-k teacher logit distributions. |
GrowthPlan / plan_growth |
Depth up-scaling via SOLAR-style layer duplication. Generates mergekit-compatible YAML. |
SkillPack / SkillRegistry |
Detachable LoRA adapters bound to a specific base model hash. |
save_as_peft / load_from_peft |
PEFT-format adapter round-trip (no peft library required). |
MinEDAlignment |
Cross-tokenizer vocabulary alignment via edit distance. |
DataPipeline |
Unified dataset adapter — HF datasets, streaming, raw text, numpy. |
FoundryRecipe / EmbedRecipe |
Pydantic-validated YAML recipes — fail fast before GPU spend. |
Training features
All trainers share the same production-ready feature set:
- Mixed precision —
torch_dtype="bfloat16"or"float16" - Gradient accumulation —
grad_accumulation_steps=N - LR scheduler —
"cosine"/"linear"/"constant"with linear warmup - Reproducibility —
seed=42sets torch + numpy + random before training - Checkpointing —
save_checkpoint(path)/resume_from_checkpoint(path) - Auto-checkpoint —
save_every=N, save_dir="/path"saves every N steps - Eval loop —
eval_every=Nevaluates on a held-out set every N steps - W&B / TensorBoard —
log_backend="wandb"or"tensorboard" - OOM handling — CUDA OOM raises with actionable suggestions
- Streaming datasets —
DataPipelinewraps any HFIterableDataset - Dataset shuffling —
shuffle=Trueorshuffle_buffer=Nfor streaming
CLI
# Check your environment
foundry doctor
# Preview a recipe plan (no GPU spend)
foundry plan recipe.yaml
# Run a recipe
foundry run recipe.yaml
# Run an embedding distillation recipe
foundry embed recipe.yaml
# List fusion strategies
foundry strategies
Recipe YAML
# recipe.yaml — full causal-LM factory
seed:
model: meta-llama/Llama-3.1-8B
init: pretrained
grow:
method: depth_upscale
to_params: 15B
teachers:
- role: reasoning
model: meta-llama/Llama-3.1-70B
weight: 1.0
fusion:
strategy: min_ce
align: min_ed
cache: topk_64
heal:
tokens: 100B
alpha: 0.3
output:
freeze_base: true
skillpacks: [ola_math, ola_code]
Optional extras
| Extra | Installs | When to use |
|---|---|---|
[torch] |
torch, transformers, safetensors, accelerate | Real training |
[lego] |
peft | LoRA skill packs |
[merge] |
mergekit | SOLAR depth up-scaling |
[data] |
datasets | HuggingFace dataset streaming |
[align] |
rapidfuzz | Fast cross-tokenizer alignment (100× speedup) |
[logging] |
wandb | Experiment tracking |
[all] |
everything | Full setup |
Links
- Main SDK — olaverse — ready-to-use African NLP models
- Homepage — olaverse.co.uk
- GitHub — Olaverse-Labs/olaverse-foundry
- Issues — GitHub Issues
License
Apache 2.0 — see LICENSE.
Project details
Release history Release notifications | RSS feed
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 olaverse_foundry-0.1.0.tar.gz.
File metadata
- Download URL: olaverse_foundry-0.1.0.tar.gz
- Upload date:
- Size: 73.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef7f8bdc26418fd9d76a63a8b7c882aa1fedd7999c0493c1269de1482e41dfa9
|
|
| MD5 |
7669285b1cc0835309e60a82639b09ff
|
|
| BLAKE2b-256 |
f63a2268c7e3a0b74817110f09aef07163483cc71c7682da2f287faa70fcce0f
|
File details
Details for the file olaverse_foundry-0.1.0-py3-none-any.whl.
File metadata
- Download URL: olaverse_foundry-0.1.0-py3-none-any.whl
- Upload date:
- Size: 68.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2397bab17beb3875bfaab001f1ba88877380d875f8004bfeed2c65c47d8af36e
|
|
| MD5 |
8bd1b96b34d839deb5e3323aacb14ec4
|
|
| BLAKE2b-256 |
baaa8cb54b6272b352a66d01f2c82659710508f575e257a88856822accb07893
|