Soup logo

Soup

Fine-tune LLMs from one YAML. Layer streaming trains an 8B model on a 4 GB laptop GPU.

pypisoup-cliendpointwebsite trysoup.devdiscordDOI 10.5281/zenodo.21771064python 3.10+
Website GitHub

What is it?

What it is

Soup is a tool for fine-tuning and post-training large language models (LLMs) with a simplified workflow. It enables users to fine-tune models in one command, automating tasks like quantization, batch sizing, and GPU detection while supporting techniques like LoRA, layer streaming, and DPO.

Why it exists

Soup exists to address the pain points of LLM fine-tuning, where teams often spend significant time on infrastructure rather than model improvement. It automates complex workflows, reduces manual configuration, and enables efficient local training on consumer-grade hardware.

Who should use it

Developers, researchers, and ML engineers who want to fine-tune LLMs locally with minimal setup, especially those with limited GPU VRAM (e.g., 4-8 GB) seeking to avoid infrastructure complexity.

Who should avoid it

Users requiring multi-node distributed training, those needing GRPO/PPO support (excluded by design), or teams dependent on legacy workflows involving SSH-based GPU management.

How it works

A quick walkthrough in plain English

How Soup works

Step 1 of 3

You interact with it

Open Soup, send a request, or connect it to your stack.

Features

Layer streaming for fine-tuning large models on low VRAM GPUs
Support for SFT, DPO, ORPO, SimPO, KTO, and other preference losses
Zero-config training with auto batch size, GPU detection, and quantization
One-command workflow: init, train, chat, serve, export, ship
QLoRA/NF4 4-bit quantization enabling 8B models on 4GB GPUs
Bit-exact reproducibility against non-streamed runs
Reference model-free DPO/KTO via adapter switching during streaming
Auto data format detection (Alpaca, ShareGPT, ChatML, DPO, etc.)
Export to GGUF, ONNX, TensorRT, AWQ, GPTQ, and more
OpenAI-compatible serving and speculative decoding support
Model merging, pushing to Hugging Face Hub, and Ollama integration
Built-in data tools, evaluation benchmarks, and reward synthesis
Docker support for GPU-accelerated training without local CUDA setup
Comprehensive CLI with doctor, recipes, autopilot, and CI gating
Apache-2.0 license with active community and documentation

Advantages

  • Fine-tune 8B LLMs on consumer GPUs as low as 4GB VRAM
  • Eliminates SSH and infrastructure complexity
  • Single YAML config handles all training parameters
  • Automatic optimization of batch size, quantization, and layer streaming
  • Works fully locally — no cloud dependency
  • Bit-exact correctness verified via layer streaming protocol
  • Memory-efficient reference model handling in DPO/KTO
  • Extensive format and model support via Hugging Face integration
  • Rich export options for deployment (Ollama, llama.cpp, etc.)
  • Active development with frequent updates and benchmarks
  • Strong community support via Discord, docs, and tutorials
  • Free and open-source (Apache-2.0) with transparent development
  • GPU-accelerated Docker image for reproducible environments
  • Includes tools for data inspection, evaluation, and model card generation

Disadvantages

  • Layer streaming is still marked as BETA in recent versions
  • GRPO and PPO are intentionally excluded due to incompatibility with streaming
  • Training speed may be impacted by 1.52x layer reads in DPO vs SFT
  • Requires Python 3.10+ and CUDA-capable GPU for practical training
  • CPU fallback is available but very slow for training
  • Some advanced features require installing specific extras (e.g., [fast], [serve])
  • Documentation can be overwhelming due to extensive feature set
  • Streaming functionality may have edge cases with adapter loading (fixed in v0.72.1+)
  • Multi-GPU and DeepSpeed/FSDP support is documented but may require additional setup
  • Windows users must use double quotes for pip extras due to shell parsing limitations

Installation

docker

docker pull ghcr.io/makazhanalpamys/soup:latest
# Run Soup without installing CUDA or PyTorch locally
docker run --gpus all -v $(pwd):/workspace ghcr.io/makazhanalpamys/soup train --config soup.yaml

native

pip install soup-cli
# Add the training stack (torch, transformers, peft, trl, datasets, …)
pip install "soup-cli[train]"
# Everything (train + serve + ui + data) in one shot
pip install "soup-cli[all]"
# Or from GitHub (latest dev)
pip install git+https://github.com/MakazhanAlpamys/Soup.git

compose

docker compose up   # or build locally

FAQ

How can I fine-tune large models on hardware with limited VRAM?

You can use Soup's 'layer streaming' feature (enabled via `stream_layers: true` in your config). This keeps the frozen base model in system RAM and feeds it to the GPU one decoder layer at a time, allowing you to train models like Llama-3.1-8B on as little as 4 GB of VRAM.

What is the difference between the different installation methods?

Use `pip install soup-cli` for a light installation (CLI, config, and data tools). Use `pip install "soup-cli[train]"` to add the training stack (PyTorch, transformers, etc.), or `pip install "soup-cli[all]"` for everything including serving and UI.

Does layer streaming affect the quality of my trained model?

No. Soup ensures that streamed runs are bit-exact against normal, non-streamed runs, maintaining a 0.0 difference in loss.

Which training tasks and preference losses are supported?

Soup supports Supervised Fine-Tuning (SFT) and various preference optimization methods including DPO, ORPO, SimPO, and KTO.

How do I verify if my environment and GPU are correctly configured?

You can run the command `soup doctor` to check your GPU, system resources, dependencies, and version information in one place.

Can I export my trained models for use in other applications?

Yes, you can use the `soup export` command to convert your model to formats like GGUF (for Ollama/llama.cpp), ONNX, TensorRT, AWQ, or GPTQ.

Loading documentation…
View on GitHub

Featured in Videos

YouTube tutorials and walkthroughs for Soup

Alternatives

Similar projects ranked by category, topics, and text overlap.

Compare
Soup | MushyBook