cd /news/artificial-intelligence/low-code-framework-for-building-cust… Β· home β€Ί topics β€Ί artificial-intelligence β€Ί article
[ARTICLE Β· art-124418] src=github.com β†— pub= topic=artificial-intelligence verified=true sentiment=↑ positive

Low-code framework for building custom AI

Ludwig, a declarative deep learning framework hosted by the Linux Foundation AI & Data, announced support for Python 3.12, PyTorch 2.7+, Pydantic 2, Transformers 5, and Ray 2.54, enabling users to train, fine-tune, and deploy AI models using a YAML config file with zero boilerplate Python. The framework now includes advanced features such as PatchTST and N-BEATS encoders for time-series forecasting, VLM fine-tuning for models like LLaVA and Qwen2-VL, and GRPO alignment, among others.

read7 min views2 publishedSep 9, 2026
Low-code framework for building custom AI
Image: Michielbdejong (auto-discovered)

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

Docs Β· ** Getting Started** Β· ** Examples** Β· Discord

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.

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.

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 withTimeseriesOutputFeature
Muon & ScheduleFreeAdamW New optimizers for large-scale pretraining and fine-tuning
Image segmentation decoders UNet, SegFormer, FPN decoders for semantic segmentation
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.

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 (orkto ,orpo ,grpo )
LoRA / DoRA / VeRA / PiSSA adapter.type: lora (ordora ,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"
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
ludwig generate_config "I have a CSV with age, income, education level, and I want to predict loan default"
ludwig predict --model_path results/experiment_run/model --dataset new_data.csv
ludwig serve --model_path results/experiment_run/model

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 viais_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 atludwigai/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; the YAML-driven search space samples encoder/combiner/decoder combinations and validates them before training
  • Dataset quality checks :from ludwig.utils.dataset_quality import check_dataset_quality β€” validates a DataFrame before training (missing values, class imbalance, near-duplicate columns, ID leakage, …)
  • OpenML integration : load any OpenML task directly β€”OpenML fetches by task ID and caches locally as Parquet
  • LLM config generation :ludwig generate_config "describe your task" β€” LLM writes the YAML
  • K-fold cross-validation :ludwig experiment --k_fold N
  • Dataset Zoo : 70+ built-in benchmark datasets (ludwig://mnist ,ludwig://alpaca , …)
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
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
Use Case Link
Timeseries forecasting (PatchTST, N-BEATS) examples/forecasting
Weather forecasting examples/weather
Image classification (MNIST) examples/mnist
Semantic segmentation examples/semantic_segmentation
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
  • 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 changingbackend.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 withludwig visualize .

  • Ludwig: A Type-Based Declarative Deep Learning Toolbox (2019)

  • Declarative Machine Learning Systems (2021)

  • Ludwig's State-of-the-Art Benchmarks

  • Discord β€” ask questions, share what you've built

  • GitHub Issues β€” bugs and feature requests

  • X / Twitter β€” announcements

  • Medium β€” tutorials and deep-dives

── more in #artificial-intelligence 4 stories Β· sorted by recency
── more on @ludwig 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain β€” perfect for shipping the agent you just read about.

$git push zahid main
β†’ Live at https://your-agent.zahid.host βœ“
Get free account β†’ Pricing
from €0/mo Β· no card required
LIVE [news/low-code-framework-f…] indexed:0 read:7min 2026-09-09 Β· β€”