Skip to main content

AIMLite

The Django for AI & Machine Learning — an opinionated, convention-over-configuration Python framework with zero-path CLI execution.


PyPI Installation

pip install aimlite

Or with uv:

uv add aimlite
from aimlite import Model, Dataset, BaseTrainer, BaseConfig, BaseEvaluator, BaseInference

Authors & Collaborators


Why AIMLite?

Traditional AI and machine learning projects suffer from repetitive boilerplate: scattered scripts, brittle path configurations, unstandardized train/test splits, hardcoded checkpoint paths, and ad-hoc serving code.

AIMLite provides a standardized, convention-based structure inspired by modern web frameworks like Django and Vite:

  • Zero-Path Execution: Run aimlite anywhere inside your project directory. AIMLite resolves modules, sets up paths, and locates your data and models automatically.
  • Automated Virtual Environment Management: Automatically creates .venv and pre-installs aimlite on init.
  • Instant IDE Type Safety: Because aimlite is installed in the project .venv with PEP 561 headers (py.typed), editors like VS Code, Cursor, and PyCharm deliver immediate auto-completion, parameter hints, and docstrings with zero configuration.
  • Per-Model Artifacts & Lifecycle: Supports multiple model classes per project with standardized naming (models/<model_name>.pkl and experiments/<model_name>_snapshot.json).
  • Built-in Inference Serving: Production-ready HTTP server with POST /predict, GET /health, GET /docs, custom user-defined endpoints, and optional static frontend hosting.

Quickstart

Requires Python >= 3.10 (tested on 3.14) and uv (or pip).

git clone https://github.com/Alazar42/aimlite.git
cd aimlite
uv sync

Essential Commands

uv run aimlite --help         # Run AIMLite CLI
uv run test                   # Run core test suite (49 tests)
uv run pytest                 # Full pytest runner (49/49 passing)

Project Structure Conventions

When you run aimlite init <project_name> (or aimlite init .), AIMLite scaffolds a clean, convention-based layout:

my_project/
├── .venv/                    # Project-isolated virtual environment with aimlite pre-installed
├── data/                     # Raw datasets (.csv, .json, .parquet, .txt, etc.)
├── models/                   # Serialized production models and saved weights (*.pkl)
├── experiments/              # Training run logs and metric snapshots (*.json)
├── artifacts/                # Generated artifacts, vector embeddings, and outputs
├── checkpoints/              # Model weights and checkpoint deltas
├── my_project/               # Python application package
│   ├── __init__.py
│   ├── config.py             # Project configuration
│   ├── data.py               # Dataset definitions extending Dataset
│   ├── model.py              # Model classes extending Model
│   ├── trainer.py            # Training lifecycle hooks extending BaseTrainer
│   ├── evaluator.py          # Metric benchmarks extending BaseEvaluator
│   └── inference.py          # Inference pipeline extending BaseInference
└── aimlite.json              # Project manifest and config

Flexible Dataset Naming (Any File, Any Format)

AIMLite gives developers total freedom over data file names and formats. You are never forced to use specific filenames or conventions.

Simply declare filename = "<your_filename>" on your Dataset subclass to match any file placed inside data/:

from aimlite import Dataset

class UserChurnDataset(Dataset):
    filename = "telecom_churn.csv"  # Name it whatever you want!

class MonthlySalesDataset(Dataset):
    filename = "sales_q4_2026.parquet"

class LogAuditDataset(Dataset):
    filename = "system_logs.jsonl"

You can also pass source directly when instantiating or calling load():

dataset = UserChurnDataset(source="data/custom_export.csv")

Supported Data Formats Out-of-the-Box

  • Tabular: CSV (.csv), TSV (.tsv, .tab)
  • JSON: Structured JSON arrays (.json), newline-delimited JSON (.jsonl)
  • Columnar: Apache Parquet (.parquet, .pq)
  • Text & Docs: Plain text (.txt), Markdown (.md)

Unconstrained Modeling & Reference Templates

AIMLite is completely unopinionated about your modeling choices and does not force you into fixed paradigms. You can build any AI or machine learning system you want:

  • Classical & Tabular ML (scikit-learn, XGBoost, LightGBM, CatBoost)
  • Deep Neural Networks (PyTorch, TensorFlow, JAX)
  • LLMs & Prompt Pipelines (LangChain, LlamaIndex, vLLM, Ollama, Hugging Face)
  • Computer Vision & Multimodal (torchvision, timm, albumentations)
  • Reinforcement Learning & Custom Heuristics

You can use any file name and any data format across all workflows. Simply declare filename = "<your_filename>" on your Dataset class or pass source directly.

The following reference implementations in docs/examples/ are simply starting templates to demonstrate project structure — you are free to adapt, replace, or build completely custom workflows:

Reference Template 1: Tabular ML (e.g. Churn Classifier)

Demonstrates a standard supervised learning workflow with feature preprocessing, scikit-learn models, and metric evaluation. You can use any tabular format (CSV, Parquet, TSV, etc.) with any filename you choose.

  • Example Implementation: docs/examples/churn_scratch/
    • data.py: TelecomChurnDataset(Dataset) declaring filename = "telecom_churn.csv" with automatic 80/10/10 train/val/test splits.
    • model.py: ChurnClassifier(Model) wrapping scikit-learn's RandomForestClassifier.
    • trainer.py: ChurnTrainer(BaseTrainer) fitting and saving weights to models/churn_classifier.pkl.
    • evaluator.py: ChurnEvaluator(BaseEvaluator) calculating accuracy, precision, recall, and F1 score.
    • inference.py: ChurnInference(BaseInference) scoring churn risk probability and returning retention decisions.
  • Workflow:
    # Initialize (new directory or in-place with .)
    aimlite init churn_model && cd churn_model
    # Place your data file in data/
    aimlite data validate
    aimlite train ChurnClassifier
    aimlite evaluate ChurnClassifier
    aimlite serve ChurnClassifier --port 8000
    

Reference Template 2: Knowledge Base & RAG

Demonstrates semantic vector retrieval and context augmentation. Ingest text, Markdown, CSV, JSON, or any document source with any filename you choose.

  • Example Implementation: docs/examples/knowledge_rag/
    • data.py: KnowledgeDocsDataset(Dataset) chunking text passages.
    • model.py: SupportDocRAG(RAGModel) binding MemoryVectorStore and VectorRetriever.
    • trainer.py: IndexBuilderTrainer(BaseTrainer) building and persisting the vector index to models/rag_index.json.
    • inference.py: RAGInference(BaseInference) querying the retriever and synthesizing grounded answers with citations.
  • Workflow:
    aimlite init support_rag && cd support_rag
    # Place your knowledge documents in data/
    aimlite train SupportDocRAG
    aimlite serve SupportDocRAG --port 8000
    

Reference Template 3: Fine-Tuning & Adapters (LoRA & PEFT)

Demonstrates parameter-efficient fine-tuning with mathematical low-rank matrix decomposition, multi-adapter routing, zero-latency weight merging, and lightweight delta checkpoints (~50KB to 50MB instead of 14GB+). Ingest any prompt format, CSV, Parquet, JSON, JSONL, or custom schema with any filename you choose.

  • Key LoRA Capabilities:
    • Low-Rank Decomposition (LoRALayer): Freezes base foundation weights $W_0$ and trains low-rank matrices $A \in \mathbb{R}^{r \times d_{in}}$ and $B \in \mathbb{R}^{d_{out} \times r}$: $$h = W_0 x + \frac{\alpha}{r} (B \cdot A) x$$
    • Zero-Latency Serving: In-place model.merge_weights() folds delta matrices directly into foundation weights with 0 inference overhead; model.unmerge_weights() restores base parameters.
    • Multi-Adapter Hot-Swapping (MultiAdapterManager): Register multiple domain adapters on a single running model (model.add_adapter("coder", cfg)) and hot-swap at runtime per request (model.set_active_adapter("coder")).
    • Parameter Diagnostics: Real-time parameter accounting (model.print_trainable_parameters()) showing trainable vs total weights and memory reduction percentages.
    • Hugging Face PEFT Format: Serializes to standard adapter_config.json, adapter_model.pkl, and adapter_metadata.json.
    • Zero Heavy Dependencies: Runs out of the box in pure Python / NumPy, while fully supporting PyTorch tensors and PEFT.
  • Example Implementation: docs/examples/instruction_adapter/
    • data.py: InstructionDataset(Dataset) preparing fine-tuning data.
    • model.py: LoRAInstructionModel(AdapterModel) configuring adapter rank, alpha, and routing.
    • trainer.py: AdapterInstructionTrainer(BaseTrainer) optimizing low-rank delta matrices with parameter diagnostics.
    • inference.py: AdapterInference(BaseInference) executing fine-tuned generations via POST /predict.
  • Workflow:
    aimlite init lora_app && cd lora_app
    # Place your dataset file in data/
    aimlite train LoRAInstructionModel
    aimlite serve LoRAInstructionModel --port 8000
    

Zero-Path CLI Reference

AIMLite provides zero-path convention-over-configuration commands:

Command Description
aimlite init [project_name | .] Scaffolds a project in a new folder or directly in the current directory (.), setting up .venv, pre-installing aimlite, starter files, and conventions.
aimlite install [packages...] Without arguments, installs all dependencies listed in aimlite.json. With packages, installs them into .venv using uv (or pip) and adds them to aimlite.json.
aimlite data validate [target] Validates dataset schema, record count, column names, and partition readiness across all datasets in data/, or selectively validates by dataset class name, declared filename, path, or raw unbound data file.
aimlite train [ModelName] [--resume [path]] [--checkpoint-dir <dir>] Automatically discovers registered models and executes training. Supports resuming from latest or specific past checkpoints with --resume, and saving to custom directories with --checkpoint-dir. Saves weights to models/<model_name>.pkl and snapshots to experiments/.
aimlite evaluate [ModelName] [--checkpoint <path>] Loads the model's checkpoint and calculates benchmark metrics on test partitions. Discovers latest checkpoint automatically or loads an explicit past checkpoint with --checkpoint.
aimlite serve [ModelName] [--checkpoint <path>] [--port 8000] [--frontend <dir>] Starts an HTTP inference server exposing POST /predict, GET /health, GET /docs, custom routes, and optional static frontend hosting. Supports loading a specific past checkpoint with --checkpoint.
aimlite doctor Diagnoses runtime health, virtual environment, hardware accelerator availability (cuda, mps, cpu), and directory permissions.

Standalone Executable & Build System (build/)

The standalone binary is packaged using Python's native zipapp format into a single self-contained executable with zero runtime dependencies:

# Compile / rebuild the standalone binary:
python3 build/build_cli.py

# Run directly without python invocation:
./build/aimlite doctor

Interactive API Documentation Portal (api_docs/)

The full documentation portal is built with React, Vite, and modern styling, featuring interactive paradigm step-by-step guides, code explanation walkthroughs, copy-to-clipboard code blocks, and an API test playground:

cd api_docs
npm install
npm run dev     # Launch local docs dev server at http://localhost:5173
npm run build   # Build production bundle into api_docs/dist/

Testing

AIMLite includes a comprehensive 49-test suite validating CLI commands, header generation, data validation, model lifecycle, inference serving, LoRA low-rank adaptation, and end-to-end paradigm workflows:

uv run test        # Core test runner
uv run pytest      # Full pytest runner (49/49 passing)

Business & Enterprise

AIMLite is 100% free and open-source under the Apache 2.0 license for individual developers, students, researchers, and startups.

For companies and teams seeking enterprise extensions or dedicated collaboration:

  • Custom Data Connectors: Direct integrations with enterprise data warehouses (Snowflake, BigQuery, PostgreSQL, Databricks).
  • Turnkey Production Starter Kits: Pre-built commercial templates for customer retention/churn, enterprise RAG knowledge bases, and multi-adapter LoRA specialists.
  • Consulting & Implementation: Architecture design, model optimization, and white-glove deployment directly with the core framework creators.

For commercial inquiries, partnerships, or custom integrations:


License

AIMLite is released under the Apache 2.0 License. Free for commercial and non-commercial use.

Metadata

Release files for aimlite 1.0.2

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

Source distribution (sdist)

Source distribution for aimlite 1.0.2
File Size Uploaded Provenance
aimlite-1.0.2.tar.gz 574.6 kB Without provenance Details

Built distribution (wheel)

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

Total release size: 643.7 kB

Release files / aimlite-1.0.2.tar.gz

Download URL aimlite-1.0.2.tar.gz
Size 574.6 kB
Tags Source
SHA-256 checksum
How to use checksums
e45bb5709c79366149528f889a8f903f700b3f7c6c82711d05c3f8ef01703dac
BLAKE2b-256 checksum
How to use checksums
78d90822f7247a40621a9aefb9a15db647dbac8f2d1367d06e020685e4c5581c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / aimlite-1.0.2-py3-none-any.whl

Download URL aimlite-1.0.2-py3-none-any.whl
Size 69.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fb28934c57c98523990601314801ee8f7b3a80f7c06e37ac54e2234972493f88
BLAKE2b-256 checksum
How to use checksums
aad3aec3aca0744e68e7d0c382fc45caa9e39846a5bc997f7a0af2855d0f70d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for aimlite 1.0.2

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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