Skip to main content

Declarative machine learning: End-to-end machine learning pipelines using data-driven configurations.

Project description

Declarative deep learning framework for LLMs, multimodal models, and tabular AI.

PyPI version Discord DockerHub Downloads License X

Docs · Getting Started · Examples · Discord


What is Ludwig?

Ludwig is a declarative deep learning framework that lets you train, fine-tune, and deploy AI models — from LLM fine-tuning to tabular classification — using a YAML config file and zero boilerplate Python.

# Fine-tune Llama-3.1 with LoRA in one config file
model_type: llm
base_model: meta-llama/Llama-3.1-8B
adapter:
  type: lora
trainer:
  type: finetune
  epochs: 3
input_features:
  - name: instruction
    type: text
output_features:
  - name: response
    type: text
ludwig train --config model.yaml --dataset my_data.csv

Tech stack: Python 3.12 · PyTorch 2.7+ · Pydantic 2 · Transformers 5 · Ray 2.54

Ludwig is hosted by the Linux Foundation AI & Data.


What's New in Ludwig 0.16

Feature Description
PatchTST & N-BEATS encoders State-of-the-art timeseries forecasting encoders with MASE/sMAPE metrics
Advanced PEFT adapters PiSSA, EVA, CorDA/LoftQ initializers; TinyLoRA, OFT, HRA, WaveFT, LN-Tuning, VBLoRA, C3A adapter types
VLM fine-tuning Train LLaVA, Qwen2-VL, InternVL via is_multimodal: true with gated cross-attention
HyperNetwork combiner Conditioning-based feature fusion — one feature generates weights for others
Nash-MTL & Pareto-MTL Game-theoretic and preference-based multi-task loss balancing
LLM config generation ludwig generate_config "describe your task" — LLM writes the YAML for you
ModelInspector Architecture analysis, weight collection, feature importance proxy
Ray Serve & KServe Distributed and Kubernetes-native model deployment shims
GRPO alignment Reward-model-free RLHF via Group Relative Policy Optimization
torchao quantization + QAT PyTorch-native int4/int8/float8 with Quantization-Aware Training
Multi-adapter PEFT Multiple named LoRA adapters with weighted merging (TIES, DARE, SVD)
Native Optuna executor GPT/TPE/CMA-ES samplers, pruning, resumable SQLite/PostgreSQL storage
Timeseries forecasting model.forecast(dataset, horizon=N) API with TimeseriesOutputFeature
Muon & ScheduleFreeAdamW New optimizers for large-scale pretraining and fine-tuning
Image segmentation decoders UNet, SegFormer, FPN decoders for semantic segmentation

Installation

pip install ludwig           # core
pip install ludwig[full]     # all optional dependencies
pip install ludwig[llm]      # LLM fine-tuning only

Requires Python 3.12+. See contributing for a full dependency matrix.


Quick Start

Fine-tune an LLM (instruction tuning)

Open In Colab

Ludwig supports the full LLM fine-tuning spectrum:

Technique Config key
Supervised fine-tuning (SFT) trainer.type: finetune
DPO / KTO / ORPO / GRPO alignment trainer.type: dpo (or kto, orpo, grpo)
LoRA / DoRA / VeRA / PiSSA adapter.type: lora (or dora, vera, lora + init_weights: pissa)
4-bit QLoRA (bitsandbytes) quantization.bits: 4
torchao + QAT quantization.backend: torchao
Multi-adapter with merging adapters: dict + merge: block
VLM (vision-language) is_multimodal: true
model_type: llm
base_model: meta-llama/Llama-3.1-8B

quantization:
  bits: 4

adapter:
  type: lora

prompt:
  template: |
    ### Instruction: {instruction}
    ### Input: {input}
    ### Response:

input_features:
  - name: prompt
    type: text

output_features:
  - name: output
    type: text

trainer:
  type: finetune
  learning_rate: 0.0001
  batch_size: 1
  gradient_accumulation_steps: 16
  epochs: 3
  learning_rate_scheduler:
    decay: cosine
    warmup_fraction: 0.01

backend:
  type: local
export HUGGING_FACE_HUB_TOKEN="<your_token>"
ludwig train --config model.yaml --dataset "ludwig://alpaca"

Train a multimodal classifier

input_features:
  - name: review_text
    type: text
    encoder:
      type: bert
  - name: star_rating
    type: number
  - name: product_image
    type: image
    encoder:
      type: dinov2

output_features:
  - name: recommended
    type: binary
ludwig train --config model.yaml --dataset reviews.csv

Generate a config from natural language

ludwig generate_config "I have a CSV with age, income, education level, and I want to predict loan default"

Make predictions

ludwig predict --model_path results/experiment_run/model --dataset new_data.csv

Launch a REST API

ludwig serve --model_path results/experiment_run/model
# POST http://localhost:8000/predict

Capabilities

LLM Fine-Tuning
  • Supervised fine-tuning (SFT) on instruction/response pairs
  • Alignment training: DPO, KTO, ORPO, GRPO (reward-model-free RLHF)
  • PEFT adapters: LoRA, DoRA, VeRA, LoRA+, TinyLoRA, OFT, HRA, WaveFT, LN-Tuning, VBLoRA, C3A
  • LoRA initializers: PiSSA, EVA, CorDA, LoftQ for improved convergence
  • Multi-adapter PEFT: multiple named adapters on one base model, switchable at runtime; merge with TIES, DARE, SVD, magnitude pruning
  • Quantization: 4-bit/8-bit QLoRA (bitsandbytes), torchao int4/int8/float8 with QAT
  • VLM fine-tuning: LLaVA, Qwen2-VL, InternVL via is_multimodal: true
  • Sequence packing for efficient training on variable-length inputs
  • Paged and 8-bit optimizers for memory-efficient training
Multimodal & Tabular Models
  • Input modalities: text, numbers, categories, binary, sets, bags, sequences, images, audio, timeseries, vectors, dates
  • Text encoders: any HuggingFace Transformer (BERT, RoBERTa, ModernBERT, Qwen3, Llama-3.1, etc.), plus Mamba-2, Jamba
  • Image encoders: DINOv2, ConvNeXt, EfficientNet, ViT, CAFormer, ConvFormer, PoolFormer, TIMM (1000+ models)
  • Timeseries encoders: PatchTST, N-BEATS, CNN, RNN, Transformer; MASE and sMAPE metrics; model.forecast() API
  • Combiners: concat, transformer, tab_transformer, FT-Transformer, TabNet, TabPFN v2, HyperNetwork, ProjectAggregate, GatedFusion, Perceiver
  • Multi-task learning: multiple output features in a single model; Nash-MTL, Pareto-MTL, FAMO, GradNorm, uncertainty loss balancing
  • Image segmentation: UNet, SegFormer, FPN decoders
Training Infrastructure
  • Distributed training: HuggingFace Accelerate with DDP, FSDP, DeepSpeed (zero-code changes)
  • Ray backend: training across a Ray cluster, larger-than-memory datasets via Ray Data
  • Automatic batch size selection and learning rate range test
  • Mixed precision (fp16/bf16), gradient checkpointing, gradient accumulation
  • Optimizers: AdamW, Adafactor, SGD, Muon, ScheduleFreeAdamW, Lion, paged/8-bit variants
  • Learning rate schedulers: cosine, linear, polynomial, reduce-on-plateau, OneCycleLR
  • Model Soup: uniform and greedy checkpoint averaging for better generalization at zero inference cost
  • Modality dropout for robust multimodal models
Hyperparameter Optimization
  • Executors: Ray Tune (ASHA, PBT, Bayesian) and native Optuna (auto/GP/TPE/CMA-ES)
  • Optuna persistence: SQLite or PostgreSQL for resumable HPO runs
  • Pruning with Optuna's MedianPruner and HyperbandPruner
  • Search spaces: uniform, log-uniform, choice, randint, quantized
  • Full Ludwig config is searchable — any nested parameter can be a hyperparameter
Production & Deployment
  • REST API: FastAPI server with Prometheus metrics and structured logging (ludwig serve)
  • vLLM serving: OpenAI-compatible API with PagedAttention and continuous batching
  • Ray Serve: distributed deployment with auto-scaling and traffic splitting
  • KServe: Kubernetes-native deployment with Open Inference Protocol v2
  • Model export: SafeTensors (default), torch.export .pt2 bundles, ONNX
  • HuggingFace Hub: ludwig upload hf_hub — push model + auto-generated model card
  • Docker: prebuilt containers at ludwigai/ludwig
Tooling & Integrations
  • Experiment tracking: TensorBoard, Weights & Biases, Comet ML, MLflow, Aim Stack
  • Model inspection: ModelInspector — weight enumeration, architecture summary, feature importance proxy
  • Visualizations: learning curves, confusion matrices, calibration plots, ROC curves, hyperopt analysis
  • AutoML: ludwig.automl.auto_train() — give it a dataset and a time budget
  • LLM config generation: ludwig generate_config "describe your task" — LLM writes the YAML
  • K-fold cross-validation: ludwig experiment --k_fold N
  • Dataset Zoo: 50+ built-in benchmark datasets (ludwig://mnist, ludwig://alpaca, …)

Examples

LLM & Alignment

Use Case Link
LLM instruction tuning (LoRA + QLoRA) examples/llm
DPO / GRPO alignment examples/llm/alignment
Advanced PEFT (PiSSA, OFT, VBLoRA, …) examples/llms/peft_advanced
VLM fine-tuning (LLaVA, Qwen2-VL) examples/vlm

Tabular & Multimodal

Use Case Link
Binary classification (Titanic) examples/titanic
Tabular classification (census income) examples/adult_census_income
Multimodal classification examples/multimodal_classification
Multi-task learning examples/multi_task

Timeseries & Vision

Use Case Link
Timeseries forecasting (PatchTST, N-BEATS) examples/forecasting
Weather forecasting examples/weather
Image classification (MNIST) examples/mnist
Semantic segmentation examples/semantic_segmentation

NLP & Audio

Use Case Link
Text classification examples/text_classification
Named entity recognition examples/ner_tagging
Machine translation examples/machine_translation
Speech recognition examples/speech_recognition
Speaker verification examples/speaker_verification

Why Ludwig?

  • Zero boilerplate — no training loop, no data pipeline, no evaluation code. The YAML config is the entire program.
  • Best-in-class LLM support — full spectrum from LoRA to GRPO alignment, torchao QAT, and VLM fine-tuning, all in config.
  • Multimodal out of the box — mix text, images, numbers, audio, and timeseries with one config change.
  • Scale without code changes — go from laptop → multi-GPU → Ray cluster by changing backend.type.
  • Expert control when you need it — every activation function, scheduler, and optimizer is configurable.
  • Reproducible research — every run is logged and the full config is saved. Compare experiments with ludwig visualize.

Publications


Community

Discord

Star History Chart

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

ludwig-0.16.2.tar.gz (2.2 MB view details)

Uploaded Source

Built Distribution

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

ludwig-0.16.2-py3-none-any.whl (1.3 MB view details)

Uploaded Python 3

File details

Details for the file ludwig-0.16.2.tar.gz.

File metadata

  • Download URL: ludwig-0.16.2.tar.gz
  • Upload date:
  • Size: 2.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ludwig-0.16.2.tar.gz
Algorithm Hash digest
SHA256 68937ea5e2d137b28f31edf574c4de7fd80a3f4d0af4e353e93693692021819a
MD5 091658f43518fb0e881f72fb939b5e75
BLAKE2b-256 a80ef584089dfdb8b6496705ac6938d6d78c111f3ccb4abebe6df640cf7c0885

See more details on using hashes here.

Provenance

The following attestation bundles were made for ludwig-0.16.2.tar.gz:

Publisher: upload-pypi.yml on ludwig-ai/ludwig

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ludwig-0.16.2-py3-none-any.whl.

File metadata

  • Download URL: ludwig-0.16.2-py3-none-any.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ludwig-0.16.2-py3-none-any.whl
Algorithm Hash digest
SHA256 788a51e9f241f85c3701b4083ada6d72f5a3bc9d02469b67615d78ae1f51275b
MD5 170a50915d3878c7bf44e5fd35d09561
BLAKE2b-256 92ae0a86e0304c8ceaf5e9266c2e64d98d3f14f14c5357c4605339fe2df0bcc3

See more details on using hashes here.

Provenance

The following attestation bundles were made for ludwig-0.16.2-py3-none-any.whl:

Publisher: upload-pypi.yml on ludwig-ai/ludwig

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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