[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-9651":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":25,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":47,"readmeContent":48,"aiSummary":49,"trendingCount":16,"starSnapshotCount":16,"syncStatus":17,"lastSyncTime":50,"discoverSource":51},9651,"ludwig","ludwig-ai\u002Fludwig","ludwig-ai","Low-code framework for building custom LLMs, neural networks, and other AI models","http:\u002F\u002Fludwig.ai",null,"Python",11716,1220,184,1,0,2,6,28,7,79.06,"Apache License 2.0",false,"main",true,[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"computer-vision","data-centric","data-science","deep","deep-learning","deeplearning","fine-tuning","learning","llama","llama2","llm","llm-training","machine-learning","machinelearning","mistral","ml","natural-language","natural-language-processing","neural-network","pytorch","2026-06-12 04:00:46","\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fludwig.ai\">\n    \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fludwig-ai\u002Fludwig-docs\u002Fraw\u002Fmain\u002Fdocs\u002Fimages\u002Fludwig_hero_smaller.jpg\" height=\"150\">\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cdiv align=\"center\">\n\n**Declarative deep learning framework for LLMs, multimodal models, and tabular AI.**\n\n[![PyPI version](https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fludwig.svg)](https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fludwig)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-Join%20Chat-5865F2?logo=discord&logoColor=white)](https:\u002F\u002Fdiscord.gg\u002FCBgdrGnZjy)\n[![DockerHub](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fpulls\u002Fludwigai\u002Fludwig.svg)](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fludwigai)\n[![Downloads](https:\u002F\u002Fpepy.tech\u002Fbadge\u002Fludwig)](https:\u002F\u002Fpepy.tech\u002Fproject\u002Fludwig)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache%202.0-blue.svg)](https:\u002F\u002Fgithub.com\u002Fludwig-ai\u002Fludwig\u002Fblob\u002Fmain\u002FLICENSE)\n[![X](https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002Fludwig_ai.svg?style=social&logo=twitter)](https:\u002F\u002Ftwitter.com\u002Fludwig_ai)\n\n[**Docs**](https:\u002F\u002Fludwig.ai) · [**Getting Started**](https:\u002F\u002Fludwig.ai\u002Flatest\u002Fgetting_started\u002F) · [**Examples**](https:\u002F\u002Fludwig.ai\u002Flatest\u002Fexamples) · [**Discord**](https:\u002F\u002Fdiscord.gg\u002FCBgdrGnZjy)\n\n\u003C\u002Fdiv>\n\n______________________________________________________________________\n\n## What is Ludwig?\n\nLudwig 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.\n\n```yaml\n# Fine-tune Llama-3.1 with LoRA in one config file\nmodel_type: llm\nbase_model: meta-llama\u002FLlama-3.1-8B\nadapter:\n  type: lora\ntrainer:\n  type: finetune\n  epochs: 3\ninput_features:\n  - name: instruction\n    type: text\noutput_features:\n  - name: response\n    type: text\n```\n\n```bash\nludwig train --config model.yaml --dataset my_data.csv\n```\n\n**Tech stack:** Python 3.12 · PyTorch 2.7+ · Pydantic 2 · Transformers 5 · Ray 2.54\n\nLudwig is hosted by the [Linux Foundation AI & Data](https:\u002F\u002Flfaidata.foundation\u002F).\n\n______________________________________________________________________\n\n## What's New in Ludwig 0.16\n\n| Feature                         | Description                                                                                            |\n| ------------------------------- | ------------------------------------------------------------------------------------------------------ |\n| **PatchTST & N-BEATS encoders** | State-of-the-art timeseries forecasting encoders with MASE\u002FsMAPE metrics                               |\n| **Advanced PEFT adapters**      | PiSSA, EVA, CorDA\u002FLoftQ initializers; TinyLoRA, OFT, HRA, WaveFT, LN-Tuning, VBLoRA, C3A adapter types |\n| **VLM fine-tuning**             | Train LLaVA, Qwen2-VL, InternVL via `is_multimodal: true` with gated cross-attention                   |\n| **HyperNetwork combiner**       | Conditioning-based feature fusion — one feature generates weights for others                           |\n| **Nash-MTL & Pareto-MTL**       | Game-theoretic and preference-based multi-task loss balancing                                          |\n| **LLM config generation**       | `ludwig generate_config \"describe your task\"` — LLM writes the YAML for you                            |\n| **ModelInspector**              | Architecture analysis, weight collection, feature importance proxy                                     |\n| **Ray Serve & KServe**          | Distributed and Kubernetes-native model deployment shims                                               |\n| **GRPO alignment**              | Reward-model-free RLHF via Group Relative Policy Optimization                                          |\n| **torchao quantization + QAT**  | PyTorch-native `int4\u002Fint8\u002Ffloat8` with Quantization-Aware Training                                     |\n| **Multi-adapter PEFT**          | Multiple named LoRA adapters with weighted merging (TIES, DARE, SVD)                                   |\n| **Native Optuna executor**      | GPT\u002FTPE\u002FCMA-ES samplers, pruning, resumable SQLite\u002FPostgreSQL storage                                  |\n| **Timeseries forecasting**      | `model.forecast(dataset, horizon=N)` API with `TimeseriesOutputFeature`                                |\n| **Muon & ScheduleFreeAdamW**    | New optimizers for large-scale pretraining and fine-tuning                                             |\n| **Image segmentation decoders** | UNet, SegFormer, FPN decoders for semantic segmentation                                                |\n\n______________________________________________________________________\n\n## Installation\n\n```bash\npip install ludwig           # core\npip install ludwig[full]     # all optional dependencies\npip install ludwig[llm]      # LLM fine-tuning only\n```\n\nRequires Python 3.12+. See [contributing](https:\u002F\u002Fgithub.com\u002Fludwig-ai\u002Fludwig\u002Fblob\u002Fmain\u002FCONTRIBUTING.md) for a full dependency matrix.\n\n______________________________________________________________________\n\n## Quick Start\n\n### Fine-tune an LLM (instruction tuning)\n\n[![Open In Colab](https:\u002F\u002Fcolab.research.google.com\u002Fassets\u002Fcolab-badge.svg)](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F1c3AO8l_H6V_x37RwQ8V7M6A-RmcBf2tG?usp=sharing)\n\nLudwig supports the full LLM fine-tuning spectrum:\n\n| Technique                         | Config key                                                               |\n| --------------------------------- | ------------------------------------------------------------------------ |\n| Supervised fine-tuning (SFT)      | `trainer.type: finetune`                                                 |\n| DPO \u002F KTO \u002F ORPO \u002F GRPO alignment | `trainer.type: dpo` (or `kto`, `orpo`, `grpo`)                           |\n| LoRA \u002F DoRA \u002F VeRA \u002F PiSSA        | `adapter.type: lora` (or `dora`, `vera`, `lora` + `init_weights: pissa`) |\n| 4-bit QLoRA (bitsandbytes)        | `quantization.bits: 4`                                                   |\n| torchao + QAT                     | `quantization.backend: torchao`                                          |\n| Multi-adapter with merging        | `adapters:` dict + `merge:` block                                        |\n| VLM (vision-language)             | `is_multimodal: true`                                                    |\n\n```yaml\nmodel_type: llm\nbase_model: meta-llama\u002FLlama-3.1-8B\n\nquantization:\n  bits: 4\n\nadapter:\n  type: lora\n\nprompt:\n  template: |\n    ### Instruction: {instruction}\n    ### Input: {input}\n    ### Response:\n\ninput_features:\n  - name: prompt\n    type: text\n\noutput_features:\n  - name: output\n    type: text\n\ntrainer:\n  type: finetune\n  learning_rate: 0.0001\n  batch_size: 1\n  gradient_accumulation_steps: 16\n  epochs: 3\n  learning_rate_scheduler:\n    decay: cosine\n    warmup_fraction: 0.01\n\nbackend:\n  type: local\n```\n\n```bash\nexport HUGGING_FACE_HUB_TOKEN=\"\u003Cyour_token>\"\nludwig train --config model.yaml --dataset \"ludwig:\u002F\u002Falpaca\"\n```\n\n### Train a multimodal classifier\n\n```yaml\ninput_features:\n  - name: review_text\n    type: text\n    encoder:\n      type: bert\n  - name: star_rating\n    type: number\n  - name: product_image\n    type: image\n    encoder:\n      type: dinov2\n\noutput_features:\n  - name: recommended\n    type: binary\n```\n\n```bash\nludwig train --config model.yaml --dataset reviews.csv\n```\n\n### Generate a config from natural language\n\n```bash\nludwig generate_config \"I have a CSV with age, income, education level, and I want to predict loan default\"\n```\n\n### Make predictions\n\n```bash\nludwig predict --model_path results\u002Fexperiment_run\u002Fmodel --dataset new_data.csv\n```\n\n### Launch a REST API\n\n```bash\nludwig serve --model_path results\u002Fexperiment_run\u002Fmodel\n# POST http:\u002F\u002Flocalhost:8000\u002Fpredict\n```\n\n______________________________________________________________________\n\n## Capabilities\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>LLM Fine-Tuning\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n- **Supervised fine-tuning (SFT)** on instruction\u002Fresponse pairs\n- **Alignment training**: DPO, KTO, ORPO, GRPO (reward-model-free RLHF)\n- **PEFT adapters**: LoRA, DoRA, VeRA, LoRA+, TinyLoRA, OFT, HRA, WaveFT, LN-Tuning, VBLoRA, C3A\n- **LoRA initializers**: PiSSA, EVA, CorDA, LoftQ for improved convergence\n- **Multi-adapter PEFT**: multiple named adapters on one base model, switchable at runtime; merge with TIES, DARE, SVD, magnitude pruning\n- **Quantization**: 4-bit\u002F8-bit QLoRA (bitsandbytes), torchao int4\u002Fint8\u002Ffloat8 with QAT\n- **VLM fine-tuning**: LLaVA, Qwen2-VL, InternVL via `is_multimodal: true`\n- **Sequence packing** for efficient training on variable-length inputs\n- **Paged and 8-bit optimizers** for memory-efficient training\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Multimodal & Tabular Models\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n- **Input modalities**: text, numbers, categories, binary, sets, bags, sequences, images, audio, timeseries, vectors, dates\n- **Text encoders**: any HuggingFace Transformer (BERT, RoBERTa, ModernBERT, Qwen3, Llama-3.1, etc.), plus Mamba-2, Jamba\n- **Image encoders**: DINOv2, ConvNeXt, EfficientNet, ViT, CAFormer, ConvFormer, PoolFormer, TIMM (1000+ models)\n- **Timeseries encoders**: PatchTST, N-BEATS, CNN, RNN, Transformer; MASE and sMAPE metrics; `model.forecast()` API\n- **Combiners**: concat, transformer, tab_transformer, FT-Transformer, TabNet, TabPFN v2, HyperNetwork, ProjectAggregate, GatedFusion, Perceiver\n- **Multi-task learning**: multiple output features in a single model; Nash-MTL, Pareto-MTL, FAMO, GradNorm, uncertainty loss balancing\n- **Image segmentation**: UNet, SegFormer, FPN decoders\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Training Infrastructure\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n- **Distributed training**: HuggingFace Accelerate with DDP, FSDP, DeepSpeed (zero-code changes)\n- **Ray backend**: training across a Ray cluster, larger-than-memory datasets via Ray Data\n- **Automatic batch size selection** and learning rate range test\n- **Mixed precision** (fp16\u002Fbf16), gradient checkpointing, gradient accumulation\n- **Optimizers**: AdamW, Adafactor, SGD, Muon, ScheduleFreeAdamW, Lion, paged\u002F8-bit variants\n- **Learning rate schedulers**: cosine, linear, polynomial, reduce-on-plateau, OneCycleLR\n- **Model Soup**: uniform and greedy checkpoint averaging for better generalization at zero inference cost\n- **Modality dropout** for robust multimodal models\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Hyperparameter Optimization\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n- **Executors**: Ray Tune (ASHA, PBT, Bayesian) and native Optuna (auto\u002FGP\u002FTPE\u002FCMA-ES)\n- **Optuna persistence**: SQLite or PostgreSQL for resumable HPO runs\n- **Pruning** with Optuna's MedianPruner and HyperbandPruner\n- **Search spaces**: uniform, log-uniform, choice, randint, quantized\n- **Full Ludwig config** is searchable — any nested parameter can be a hyperparameter\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Production & Deployment\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n- **REST API**: FastAPI server with Prometheus metrics and structured logging (`ludwig serve`)\n- **vLLM serving**: OpenAI-compatible API with PagedAttention and continuous batching\n- **Ray Serve**: distributed deployment with auto-scaling and traffic splitting\n- **KServe**: Kubernetes-native deployment with Open Inference Protocol v2\n- **Model export**: SafeTensors (default), `torch.export` `.pt2` bundles, ONNX\n- **HuggingFace Hub**: `ludwig upload hf_hub` — push model + auto-generated model card\n- **Docker**: prebuilt containers at [ludwigai\u002Fludwig](https:\u002F\u002Fhub.docker.com\u002Fu\u002Fludwigai)\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Tooling & Integrations\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n- **Experiment tracking**: TensorBoard, Weights & Biases, Comet ML, MLflow, Aim Stack\n- **Model inspection**: `ModelInspector` — weight enumeration, architecture summary, feature importance proxy\n- **Visualizations**: learning curves, confusion matrices, calibration plots, ROC curves, hyperopt analysis\n- **AutoML**: `ludwig.automl.auto_train()` — give it a dataset and a time budget\n- **LLM config generation**: `ludwig generate_config \"describe your task\"` — LLM writes the YAML\n- **K-fold cross-validation**: `ludwig experiment --k_fold N`\n- **Dataset Zoo**: 50+ built-in benchmark datasets (`ludwig:\u002F\u002Fmnist`, `ludwig:\u002F\u002Falpaca`, …)\n\n\u003C\u002Fdetails>\n\n______________________________________________________________________\n\n## Examples\n\n### LLM & Alignment\n\n| Use Case                              | Link                                                                                |\n| ------------------------------------- | ----------------------------------------------------------------------------------- |\n| LLM instruction tuning (LoRA + QLoRA) | [examples\u002Fllm](https:\u002F\u002Fludwig.ai\u002Flatest\u002Fexamples\u002Fllm\u002Fllm_finetuning)                |\n| DPO \u002F GRPO alignment                  | [examples\u002Fllm\u002Falignment](https:\u002F\u002Fludwig.ai\u002Flatest\u002Fexamples\u002Fllm\u002Falignment)           |\n| Advanced PEFT (PiSSA, OFT, VBLoRA, …) | [examples\u002Fllms\u002Fpeft_advanced](https:\u002F\u002Fludwig.ai\u002Flatest\u002Fexamples\u002Fllms\u002Fpeft_advanced) |\n| VLM fine-tuning (LLaVA, Qwen2-VL)     | [examples\u002Fvlm](https:\u002F\u002Fgithub.com\u002Fludwig-ai\u002Fludwig\u002Ftree\u002Fmain\u002Fexamples\u002Fvlm)          |\n\n### Tabular & Multimodal\n\n| Use Case                               | Link                                                                                              |\n| -------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Binary classification (Titanic)        | [examples\u002Ftitanic](https:\u002F\u002Fludwig.ai\u002Flatest\u002Fexamples\u002Ftitanic)                                     |\n| Tabular classification (census income) | [examples\u002Fadult_census_income](https:\u002F\u002Fludwig.ai\u002Flatest\u002Fexamples\u002Fadult_census_income)             |\n| Multimodal classification              | [examples\u002Fmultimodal_classification](https:\u002F\u002Fludwig.ai\u002Flatest\u002Fexamples\u002Fmultimodal_classification) |\n| Multi-task learning                    | [examples\u002Fmulti_task](https:\u002F\u002Fludwig.ai\u002Flatest\u002Fexamples\u002Fmulti_task)                               |\n\n### Timeseries & Vision\n\n| Use Case                                   | Link                                                                                      |\n| ------------------------------------------ | ----------------------------------------------------------------------------------------- |\n| Timeseries forecasting (PatchTST, N-BEATS) | [examples\u002Fforecasting](https:\u002F\u002Fludwig.ai\u002Flatest\u002Fexamples\u002Fforecasting)                     |\n| Weather forecasting                        | [examples\u002Fweather](https:\u002F\u002Fludwig.ai\u002Flatest\u002Fexamples\u002Fweather)                             |\n| Image classification (MNIST)               | [examples\u002Fmnist](https:\u002F\u002Fludwig.ai\u002Flatest\u002Fexamples\u002Fmnist)                                 |\n| Semantic segmentation                      | [examples\u002Fsemantic_segmentation](https:\u002F\u002Fludwig.ai\u002Flatest\u002Fexamples\u002Fsemantic_segmentation) |\n\n### NLP & Audio\n\n| Use Case                 | Link                                                                                    |\n| ------------------------ | --------------------------------------------------------------------------------------- |\n| Text classification      | [examples\u002Ftext_classification](https:\u002F\u002Fludwig.ai\u002Flatest\u002Fexamples\u002Ftext_classification)   |\n| Named entity recognition | [examples\u002Fner_tagging](https:\u002F\u002Fludwig.ai\u002Flatest\u002Fexamples\u002Fner_tagging)                   |\n| Machine translation      | [examples\u002Fmachine_translation](https:\u002F\u002Fludwig.ai\u002Flatest\u002Fexamples\u002Fmachine_translation)   |\n| Speech recognition       | [examples\u002Fspeech_recognition](https:\u002F\u002Fludwig.ai\u002Flatest\u002Fexamples\u002Fspeech_recognition)     |\n| Speaker verification     | [examples\u002Fspeaker_verification](https:\u002F\u002Fludwig.ai\u002Flatest\u002Fexamples\u002Fspeaker_verification) |\n\n______________________________________________________________________\n\n## Why Ludwig?\n\n- **Zero boilerplate** — no training loop, no data pipeline, no evaluation code. The YAML config is the entire program.\n- **Best-in-class LLM support** — full spectrum from LoRA to GRPO alignment, torchao QAT, and VLM fine-tuning, all in config.\n- **Multimodal out of the box** — mix text, images, numbers, audio, and timeseries with one config change.\n- **Scale without code changes** — go from laptop → multi-GPU → Ray cluster by changing `backend.type`.\n- **Expert control when you need it** — every activation function, scheduler, and optimizer is configurable.\n- **Reproducible research** — every run is logged and the full config is saved. Compare experiments with `ludwig visualize`.\n\n______________________________________________________________________\n\n## Publications\n\n- [Ludwig: A Type-Based Declarative Deep Learning Toolbox](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1909.07930.pdf) (2019)\n- [Declarative Machine Learning Systems](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2107.08148.pdf) (2021)\n- [Ludwig's State-of-the-Art Benchmarks](https:\u002F\u002Fopenreview.net\u002Fpdf?id=hwjnu6qW7E4)\n\n______________________________________________________________________\n\n## Community\n\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-Join%20Chat-5865F2?logo=discord&logoColor=white)](https:\u002F\u002Fdiscord.gg\u002FCBgdrGnZjy)\n\n- [Discord](https:\u002F\u002Fdiscord.gg\u002FCBgdrGnZjy) — ask questions, share what you've built\n- [GitHub Issues](https:\u002F\u002Fgithub.com\u002Fludwig-ai\u002Fludwig\u002Fissues) — bugs and feature requests\n- [X \u002F Twitter](https:\u002F\u002Ftwitter.com\u002Fludwig_ai) — announcements\n- [Medium](https:\u002F\u002Fmedium.com\u002Fludwig-ai) — tutorials and deep-dives\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fludwig-ai\u002Fludwig\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Fcontrib.rocks\u002Fimage?repo=ludwig-ai\u002Fludwig\" \u002F>\n\u003C\u002Fa>\n\n[![Star History Chart](https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=ludwig-ai\u002Fludwig&type=Date)](https:\u002F\u002Fstar-history.com\u002F#ludwig-ai\u002Fludwig&Date)\n","Ludwig 是一个低代码框架，用于构建自定义的大型语言模型（LLM）、神经网络和其他AI模型。它通过YAML配置文件来定义模型结构和训练参数，无需编写冗长的Python代码，支持多种任务如LLM微调、表格分类等。基于PyTorch构建，Ludwig提供了丰富的预训练模型和适配器选项，以及对多模态数据的支持。适用于需要快速迭代AI模型开发但又不想深陷于复杂编程细节的数据科学家、工程师及研究人员。此外，其强大的社区支持与详细的文档进一步降低了使用门槛。","2026-06-11 03:24:00","top_topic"]