2121 <a href =" https://pypi.org/project/soup-cli/ " ><img src =" https://img.shields.io/pypi/v/soup-cli?color=blue " alt =" PyPI " ></a >
2222 <img src =" https://img.shields.io/badge/python-3.9%2B-blue " alt =" Python 3.9+ " >
2323 <img src =" https://img.shields.io/badge/license-MIT-green " alt =" MIT License " >
24- <img src =" https://img.shields.io/badge/tests-321%20passed -brightgreen " alt =" Tests " >
24+ <img src =" https://img.shields.io/badge/tests-passing -brightgreen " alt =" Tests " >
2525 <a href =" https://github.com/MakazhanAlpamys/Soup/actions " ><img src =" https://github.com/MakazhanAlpamys/Soup/actions/workflows/ci.yml/badge.svg " alt =" CI " ></a >
2626</p >
2727
@@ -361,9 +361,11 @@ soup --verbose train --config soup.yaml
361361soup --verbose eval --model ./output --benchmarks mmlu
362362```
363363
364+ > ** Note:** ` --verbose ` is a global flag — it must go ** before** the command name, not after.
365+
364366## Data Formats
365367
366- Soup supports these formats (auto-detected):
368+ Soup supports these formats (auto-detected). Files can be JSONL, JSON, CSV, or Parquet.
367369
368370** Alpaca:**
369371``` json
@@ -476,34 +478,30 @@ soup eval --model ./output --benchmarks mmlu --run-id run_20260223_143052_a1b2
476478## All Commands
477479
478480```
479- soup init [--template chat|code|medical] Create soup.yaml config
480- soup train --config soup.yaml [--dry-run] Start training
481- soup train --resume auto Resume from last checkpoint
482- soup train --wandb Train with W&B logging
483- soup chat --model ./output Interactive chat with model
484- soup push --model ./output --repo user/name Upload to HuggingFace Hub
481+ soup init [--template chat|code|medical] Create config
482+ soup train --config soup.yaml Start training
483+ soup chat --model ./output Interactive chat
484+ soup push --model ./output --repo user/name Upload to HuggingFace
485485soup merge --adapter ./output Merge LoRA with base model
486486soup export --model ./output --format gguf Export to GGUF (Ollama)
487+ soup eval --model ./output --benchmarks mmlu Evaluate on benchmarks
488+ soup serve --model ./output --port 8000 OpenAI-compatible API server
489+ soup sweep --config soup.yaml --param lr=... Hyperparameter search
490+ soup diff --model-a ./a --model-b ./b Compare two models
487491soup data inspect <path> View dataset stats
488492soup data validate <path> --format alpaca Check format
489493soup data convert <path> --to chatml Convert between formats
490494soup data merge data1.jsonl data2.jsonl Combine datasets
491495soup data dedup <path> --threshold 0.8 Remove duplicates (MinHash)
492496soup data stats <path> Extended statistics
493- soup runs List all training runs
494- soup runs show <run_id> Detailed run info + loss graph
495- soup runs compare <run_1> <run_2> Compare two runs
496- soup runs delete <run_id> Remove a run
497- soup eval --model ./output --benchmarks mmlu Evaluate on benchmarks
498- soup serve --model ./output --port 8000 OpenAI-compatible API server
499- soup sweep --config soup.yaml --param lr=... Hyperparameter search
500- soup diff --model-a ./a --model-b ./b Compare two models
501497soup data generate --prompt "..." --count 100 Generate synthetic data
502- soup train --deepspeed zero2 Multi-GPU with DeepSpeed
503- soup doctor Check environment & dependencies
504- soup quickstart [--dry-run] Full demo: create data + config + train
498+ soup runs List training runs
499+ soup runs show <run_id> Run details + loss graph
500+ soup runs compare <run_1> <run_2> Compare two runs
501+ soup doctor Check environment
502+ soup quickstart [--dry-run] Full demo
505503soup version Show version
506- soup --verbose <command> Show full traceback on errors
504+ soup --verbose <command> Full traceback on errors
507505```
508506
509507## Requirements
@@ -512,6 +510,16 @@ soup --verbose <command> Show full traceback on errors
512510- GPU with CUDA (recommended) or Apple Silicon (MPS) or CPU (slow)
513511- 8 GB+ VRAM for 7B models with QLoRA
514512
513+ ### Optional Extras
514+
515+ | Extra | Install | What it adds |
516+ | ---| ---| ---|
517+ | ` serve ` | ` pip install 'soup-cli[serve]' ` | Inference server (FastAPI + uvicorn) |
518+ | ` data ` | ` pip install 'soup-cli[data]' ` | Deduplication (MinHash via datasketch) |
519+ | ` eval ` | ` pip install 'soup-cli[eval]' ` | Benchmark evaluation (lm-evaluation-harness) |
520+ | ` deepspeed ` | ` pip install 'soup-cli[deepspeed]' ` | Multi-GPU training (DeepSpeed ZeRO) |
521+ | ` dev ` | ` pip install 'soup-cli[dev]' ` | Tests + linting (pytest, ruff) |
522+
515523## Development
516524
517525``` bash
@@ -522,13 +530,17 @@ pip install -e ".[dev]"
522530# Lint
523531ruff check soup_cli/ tests/
524532
525- # Run unit tests (fast, no GPU needed — 321 tests )
533+ # Run unit tests (fast, no GPU needed)
526534pytest tests/ -v
527535
528536# Run smoke tests (downloads tiny model, runs real training)
529537pytest tests/ -m smoke -v
530538```
531539
540+ ## Changelog
541+
542+ See [ GitHub Releases] ( https://github.com/MakazhanAlpamys/Soup/releases ) for version history.
543+
532544## License
533545
534546MIT
0 commit comments