Skip to main content

EasyMoDD

EasyMoDD is a configurable, training-first machine-learning library. It is programmable from Python like a numerical library, with reusable tensors, modules, datasets, losses, optimizers, trainers, model families, and checkpoint policies.

Models initialize randomly unless a consuming project explicitly resumes from its own checkpoint. EasyMoDD does not include a chatbot, web application, built-in corpus, project config.txt, generated checkpoints, or demo data.

Install

python -m pip install easymodd

For a local checkout:

python -m pip install -e .

Publish to PyPI

The package is configured for GitHub Actions Trusted Publishing. Before the first release, create a PyPI project named easymodd, then add this trusted publisher on PyPI:

  • Owner: vnex-lab
  • Repository: EasyMoDD
  • Workflow: publish.yml
  • Environment: pypi

After that one-time setup, publish a release from GitHub. The workflow builds the wheel and source archive, validates both with Twine, and publishes them without a stored PyPI token.

For a local dry run:

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

The package version is controlled by project.version in pyproject.toml. Increase it for every PyPI release, and do not reuse an already-uploaded version.

Optional integrations:

python -m pip install easymodd[cuda]
python -m pip install easymodd[data]
python -m pip install easymodd[dev]

Python API

import numpy as np
from easymodd import ArrayDataset, MSELoss, SGD, Trainer, build_mlp

model = build_mlp(input_size=1, hidden_sizes=[8], output_size=1)
dataset = ArrayDataset(
    np.array([[1.0], [2.0], [3.0]], dtype=np.float32),
    np.array([[2.0], [4.0], [6.0]], dtype=np.float32),
)
history = Trainer(
    SGD(model.parameters(), learning_rate=0.01),
    MSELoss(),
    max_steps=100,
).fit(model, dataset)
print(history.values["loss"][-1])

The programmable foundation includes:

  • NumPy and explicit CUDA backend helpers
  • Module, Parameter, Linear, ReLU, and Sequential
  • GELU, sigmoid, tanh, and dropout layers
  • MLP model factory
  • Model registries for custom factories
  • ArrayDataset and packed TextDataset
  • BatchLoader, deterministic splits, and Subset
  • Composable transforms and batch collation
  • MSE and cross-entropy loss contracts
  • L1 and Huber losses
  • SGD, Adam, and AdamW optimizers
  • Cosine and warmup learning-rate schedulers
  • Reusable Trainer and TrainingHistory
  • Accuracy, MAE, and perplexity metrics
  • JSONL metrics logging and early stopping callbacks
  • Local experiment tracking and dependency-free summaries
  • Versioned model/optimizer/scheduler serialization
  • Environment-only secrets for optional integrations
  • Config loading and validation for consuming projects
  • Checkpoint enable/disable, retention, and compression policy
  • Separate text Transformer and Vision Transformer configuration modules

The restored prototype scripts remain available as compatibility programs for existing custom checkpoints. New projects should import EasyMoDD directly.

Consumer Project Configuration

EasyMoDD does not force users into one project layout. A consuming project can create its own config.txt using TOML syntax and load it with:

from easymodd import load_config
config = load_config("config.txt")

The config loader supports project-defined paths for datasets, runs, models, logs, and checkpoints. The library never assumes a filename such as best.bin.

A consumer project can configure checkpoint behavior like this:

[checkpoints]
enabled = true
keep_recent = 2
compress_old = true

When disabled, CheckpointManager creates no directory or files. When enabled, older numbered checkpoints can be compressed while recent checkpoints remain available.

Package Layout

src/easymodd/
  models/
    mlp.py
    text_transformer.py
    vision_transformer.py
  data.py
  losses.py
  nn.py
  tensor.py
  optim.py
  training.py
  checkpoints.py
  config.py
  cli.py

Each model family has its own module. The shared training contracts are designed so new model types can be added without changing dataset or checkpoint code.

Extending EasyMoDD

Register a custom model factory:

from easymodd import ModelRegistry

registry = ModelRegistry()
registry.register("my_model", lambda width=8: build_my_model(width))
model = registry.create("my_model", width=32)

Optional integrations can read environment variables without storing secrets:

from easymodd import SecretStore

secrets = SecretStore(prefix="MY_APP_")
token = secrets.get("TRACKING_TOKEN")

EasyMoDD never writes API keys to configs, checkpoints, experiment files, or logs. Provider-specific integrations can be built on top of this helper.

Data and Training

The library does not ship a general-purpose training database. Users provide legally obtained text, image, or tabular data in their own projects. EasyMoDD provides dataset contracts and validation helpers; it does not pretend that a small demo corpus can produce a general assistant.

Development Status

The tensor/module API, programmable MLP training loop, dataset contracts, checkpoint policy, model-family layout, and config loader are implemented. Text Transformer training, Vision Transformer training, full resume manifests, evaluation, schedulers, callbacks, and additional model families are active parts of the public-library roadmap.

Support development on Ko-fi.

Metadata

Release files for easymodd 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for easymodd 0.1.0
File Size Uploaded
easymodd-0.1.0.tar.gz 20.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for easymodd 0.1.0
File Interpreter ABI Platform
easymodd-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 44.0 kB

Release files / easymodd-0.1.0.tar.gz

Download URL easymodd-0.1.0.tar.gz
Size 20.1 kB
Tags Source
SHA-256 checksum
How to use checksums
ed49559ac3d410ae8bfd45da23640b09277408dc4fff54a69dbcfa3f34c96750
BLAKE2b-256 checksum
How to use checksums
ee145957ab3293013e291430d3706b3ca93a082fb467747b836fc384ec50c431
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 10, 2026.

Transparency log

Release files / easymodd-0.1.0-py3-none-any.whl

Download URL easymodd-0.1.0-py3-none-any.whl
Size 23.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
576d8c9f3814c272eaa88c17ccc5c6abd5523843c95f9912365573ca934802de
BLAKE2b-256 checksum
How to use checksums
30b834bcc4f8487367bf49f764b967f1adcd06bd053359efd70facc818676b50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 10, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.4

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page