soup-cli 0.71.30__tar.gz → 0.71.32__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {soup_cli-0.71.30 → soup_cli-0.71.32}/.gitignore +4 -1
- {soup_cli-0.71.30 → soup_cli-0.71.32}/CHANGELOG.md +62 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/CONTRIBUTING.md +5 -6
- {soup_cli-0.71.30 → soup_cli-0.71.32}/PKG-INFO +25 -19
- {soup_cli-0.71.30 → soup_cli-0.71.32}/README.md +24 -18
- {soup_cli-0.71.30 → soup_cli-0.71.32}/docs/commands.md +5 -1
- {soup_cli-0.71.30 → soup_cli-0.71.32}/docs/data.md +16 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/docs/evaluation.md +5 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/docs/models.md +11 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/docs/serving-and-export.md +2 -2
- {soup_cli-0.71.30 → soup_cli-0.71.32}/docs/training.md +70 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/pyproject.toml +1 -1
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/__init__.py +1 -1
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/data.py +328 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/infer.py +331 -3
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/ship.py +32 -1
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/train.py +9 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/config/schema.py +169 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/formats.py +28 -3
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/eval/judge.py +234 -1
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/recipes/catalog.py +169 -1
- soup_cli-0.71.32/src/soup_cli/trainer/asr.py +445 -0
- soup_cli-0.71.32/src/soup_cli/trainer/online_dpo.py +432 -0
- soup_cli-0.71.32/src/soup_cli/utils/asr_metrics.py +164 -0
- soup_cli-0.71.32/src/soup_cli/utils/best_of_n.py +113 -0
- soup_cli-0.71.32/src/soup_cli/utils/evolve.py +120 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/gpu.py +13 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/ship_verdict.py +3 -4
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_recipes.py +4 -2
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v07124.py +2 -2
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v07125.py +8 -5
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v07128.py +2 -1
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v07130.py +2 -2
- soup_cli-0.71.32/tests/test_v07131.py +1207 -0
- soup_cli-0.71.32/tests/test_v07132.py +956 -0
- soup_cli-0.71.30/docs/superpowers/plans/2026-07-05-prm-guided-grpo.md +0 -133
- soup_cli-0.71.30/docs/superpowers/plans/2026-07-05-soup-shrink-depth-prune.md +0 -607
- soup_cli-0.71.30/docs/superpowers/specs/2026-07-05-prm-guided-grpo-design.md +0 -152
- soup_cli-0.71.30/docs/superpowers/specs/2026-07-05-soup-shrink-depth-prune-design.md +0 -218
- {soup_cli-0.71.30 → soup_cli-0.71.32}/.dockerignore +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/.github/FUNDING.yml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/.github/pull_request_template.md +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/.github/workflows/ci.yml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/.github/workflows/docker.yml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/.github/workflows/publish.yml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/.github/workflows/recipe-validation.yml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/.mailmap +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/.pre-commit-config.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/AGENTS.md +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/CODEOWNERS +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/CODE_OF_CONDUCT.md +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/CONTRIBUTORS.md +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/Dockerfile +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/LICENSE +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/NOTICE +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/SECURITY.md +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/docker-compose.yml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/docs/README.md +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/docs/adapters-and-governance.md +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/docs/backends-and-ops.md +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/docs/peft-and-efficiency.md +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/docs/performance-and-quantization.md +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/examples/README.md +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/examples/configs/dpo_chat.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/examples/configs/dpo_example.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/examples/configs/grpo_reasoning.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/examples/configs/rlhf_step1_sft.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/examples/configs/rlhf_step2_reward.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/examples/configs/rlhf_step3_ppo.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/examples/configs/sft_basic.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/examples/configs/vision_llama.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/examples/data/alpaca_tiny.jsonl +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/examples/data/chat_preferences.jsonl +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/examples/data/dpo_sample.jsonl +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/examples/data/reasoning_math.jsonl +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/examples/reward_hacking/rewards.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/examples/synthetic_workflow.md +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/examples/synthetic_workflow.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/soup.png +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/soup_logo_svg.svg +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/__main__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/autopilot/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/autopilot/analyzer.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/autopilot/decisions.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/autopilot/generate_config.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/cans/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/cans/pack.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/cans/publish.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/cans/run.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/cans/schema.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/cans/unpack.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/cans/verify.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/cli.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/cloud/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/cloud/modal.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/_eval_v0550.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/_eval_v0610.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/_eval_v0650.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/_eval_v07110.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/_webhook_cli.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/ab.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/active_sample.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/adapters.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/advise.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/agent.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/airgap.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/apple_adapter.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/attest.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/audit_log.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/autopilot.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/bench.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/bom.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/build.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/can.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/chat.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/compile_cmd.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/compile_tools.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/completions.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/cost.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/data_doctor.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/data_forge.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/data_mix.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/data_score.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/delinearize_llama4.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/deploy.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/diagnose.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/diff.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/distill_prompt.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/doctor.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/drift_alarm.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/edit.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/env.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/eval.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/expect.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/export.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/fetch.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/generate.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/history.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/ingest.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/init.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/iterative_dpo.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/license_advisor.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/llama.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/local_rl.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/lock.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/loop.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/mcp.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/merge.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/merge_sharded_fsdp_weights.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/migrate.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/monitor.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/plan.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/plugins.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/probe.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/profile.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/prune_prompt.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/push.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/quantize.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/quickstart.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/ra_dit.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/recipes.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/registry.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/runs.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/serve.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/shrink.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/spectrum.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/steer.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/sweep.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/tokenizer.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/tui.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/tunability.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/ui.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/commands/why.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/config/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/config/loader.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/alpaca_tiny.jsonl +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/behavior/elephant.jsonl +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/behavior/harmbench.jsonl +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/behavior/jailbreakbench.jsonl +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/behavior/syceval.jsonl +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/behavior/xstest.jsonl +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/chat_preferences.jsonl +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/dpo_sample.jsonl +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/reasoning_math.jsonl +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/unlearning/muse_demo.jsonl +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/unlearning/tofu_demo.jsonl +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/unlearning/wmdp_demo.jsonl +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/augment.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/chat_templates.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/collators.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/loader.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/loss_mask.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/providers/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/providers/_utils.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/providers/anthropic.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/providers/ollama.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/providers/vllm.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/sft_format.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/templates/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/templates/code.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/templates/conversation.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/templates/preference.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/templates/qa.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/templates/reasoning.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/templates/tool_calling.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/templates/verifiable.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/traces/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/traces/pair_builder.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/traces/parsers.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/traces/quality.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/data/validator.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/envs/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/envs/_common.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/envs/calculator.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/envs/guess_number.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/envs/retrieval_qa.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/eval/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/eval/arena.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/eval/benchmarks_v0_43.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/eval/calibrate.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/eval/checkpoint_intelligence.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/eval/custom.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/eval/forgetting.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/eval/gate.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/eval/human.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/eval/leaderboard.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/eval/quant_check.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/experiment/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/experiment/tracker.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/mcp_server/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/mcp_server/registry.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/mcp_server/server.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/migrate/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/migrate/axolotl.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/migrate/common.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/migrate/llamafactory.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/migrate/unsloth.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/monitoring/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/monitoring/callback.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/monitoring/curriculum_callback.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/monitoring/display.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/monitoring/grpo_stability_callback.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/monitoring/hf_push.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/monitoring/plugin_callback.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/monitoring/trace_logger.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/plugins/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/py.typed +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/recipes/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/registry/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/registry/attach.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/registry/diff.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/registry/hashing.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/registry/store.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/templates/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/templates/audio.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/templates/bco.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/templates/chat.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/templates/code.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/templates/embedding.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/templates/fetch_examples/llama-3.1-8b-lora.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/templates/fetch_examples/qwen2.5-7b-dpo.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/templates/fetch_examples/zero3-cpu-offload.json +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/templates/ipo.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/templates/kto.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/templates/longcontext.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/templates/manifest.json +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/templates/medical.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/templates/moe.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/templates/orpo.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/templates/pretrain.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/templates/reasoning.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/templates/rlhf.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/templates/simpo.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/templates/tool-calling.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/templates/vision.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/bco.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/bitnet.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/classifier.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/distill.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/dpo.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/embedding.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/grpo.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/ipo.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/kto.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/mlx_dpo.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/mlx_grpo.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/mlx_routing.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/mlx_sft.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/mole_routing.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/orpo.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/ppo.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/preference.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/pretrain.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/prm.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/raft.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/reward_model.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/rewards.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/sft.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/simpo.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/tts.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/trainer/unlearn.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/tui_app.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/ui/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/ui/app.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/ui/plugins/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/ui/static/app.js +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/ui/static/index.html +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/ui/static/logo.png +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/ui/static/logo.svg +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/ui/static/style.css +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/_eval_text.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/ab_test.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/activation_offload.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/active_sampler.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/adapter_bisect.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/adapter_branch.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/adapter_diff.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/adapter_merge.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/adapter_pr.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/adapter_scan.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/adapter_sign.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/advanced_precision.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/advise.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/advise_history.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/agent_forge.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/agent_rollout.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/agent_sandbox.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/airgap_bundle.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/annex_xi.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/anthropic_messages.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/apple_adapter.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/attest.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/audit_log.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/auto_quant.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/backend_detect.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/batch_probe.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/behavior_battery.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/bitnet.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/blame.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/block_expansion.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/bom.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/brain_rot.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/brain_rot_lang.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/build_dag.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/canary_discovery.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/canary_router.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/capability_suite.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/checklist_dsl.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/checkpoint_trigger.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/citation_faithful.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/classifier.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/cmaes_merge.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/compile_tools.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/completions.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/constants.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/convergence.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/crash.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/cross_doc_attn.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/curriculum.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/curriculum_dynamic.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/cut_ce.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/data_doctor.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/data_forge.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/data_lint.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/data_mix.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/data_pipeline.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/data_score.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/deepspeed.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/delinearize_llama4.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/demo_bundles.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/deploy_autopilot.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/deploy_measure.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/_common.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/badge.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/citation.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/contamination.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/forgetting.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/format.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/live.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/memorization.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/mode_collapse.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/refusal.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/report.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/runner.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/distill.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/dpo_variants.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/drift_alarm.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/ebft_gdpo.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/echo_trap.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/edit_diff.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/edit_governor.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/edit_kernels.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/encoding.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/energy.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/env_lock.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/errors.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/eval_design.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/eval_gate_hook.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/eval_lock_coverage.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/expectations.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/fetch_examples.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/flash_attn.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/fp8.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/freeze.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/fsdp.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/fsdp_consolidate.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/galore.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/gguf_quant.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/gpu_monitor.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/grace_codebook.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/graceful_save.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/grad_accum.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/gradient_ckpt.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/grpo_long_context.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/grpo_variants.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/hardware_fit.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/harm_probe.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/hf.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/hf_space.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/hubs.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/ingest_sources.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/integrations.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/interference.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/interference_live.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/irt.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/iterative_dpo.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/jinja_analyzer.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/kernel_picker.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/knowledge_edit.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/kv_cache.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/launcher.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/license_advisor.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/license_matrix.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/liger.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/live_eval.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/llama_proxy.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/llama_server_timings.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/local_rl.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/local_rl_scheduler.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/loftq_init.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/log_level.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/long_context.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/longlora.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/loop_budget.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/loop_daemon.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/loop_iteration.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/loop_stages.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/loop_state.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/lr_finder.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/lr_groups.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/magpie.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/metrics.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/mii.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/minillm.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/mix_proxy.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/mixed_precision.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/mlx.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/mod.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/moe.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/moe_quant.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/mole_routing.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/multipack.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/multipack_sampler.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/multipack_trainer.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/namespace_pin.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/neat_packing.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/ngram_spec.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/nlg_metrics.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/ollama.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/onboarding.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/optimizer_zoo.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/paths.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/peft_builder.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/peft_patches.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/peft_wiring.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/persona_hub.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/pipeline.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/preference_combine.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/prm.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/prm_reward.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/probe_kernel.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/probe_pack.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/profiler.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/profiling.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/profiling_v0_43.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/prompt_compile.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/prompt_distill.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/prune_prompt.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/qat.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/qr_url.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/quality.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/quant_menu.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/ra_dit.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/ra_dit_run.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/raft.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/reasoning_effort.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/reasoning_parser.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/recipe_dag.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/recipe_run.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/registry.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/relora.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/replay.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/repro_receipt.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/reward_hack_control.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/reward_hacking.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/ring_attention.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/rl_checkpoint.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/rl_signal_buffer.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/run_cost.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/sae_diff.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/save_formats.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/server_tools.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/sglang.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/shortcuts.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/shrink.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/signing.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/sleeper_probe.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/soup_lock.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/spec_pairing.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/spectrum_scan.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/spike_recovery.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/sse_train_stream.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/steering.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/strict_safetensors.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/structured_output.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/sweep_config.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/tail_latency.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/terraform_plan.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/tool_outputs.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/topology.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/tracing.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/trackers.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/train_event_buffer.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/trainer_plugins.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/trust_remote.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/truth_probe.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/tts.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/tts_codec.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/tunability.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/ui_env.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/uld.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/unlearn_kernels.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/unlearning.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/unlearning_eval.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/unsloth.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/v028_features.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/vector_bank.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/vllm.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/vscode_setup.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/warmup.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/webhooks.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/src/soup_cli/utils/why.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/templates/chat.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/templates/code.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/templates/medical.yaml +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/__init__.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/conftest.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/qa/v053_qa.md +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/qa/v07114_qa.md +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/qa/v0716_qa.md +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_adapters.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_advanced_peft.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_assistant_mask.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_audio.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_auto_tuning.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_autopilot.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_awq_gptq_export.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_batch_probe.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_bco.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_bench.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_brain_rot_multilingual.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_bugfixes.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_build_dag.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_callback.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_cans.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_chat.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_chat_template.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_cli.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_cli_subprocess.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_code_review_critical.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_code_review_deferred.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_code_review_high.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_code_review_medium_low.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_code_review_recurring.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_config.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_cost.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_crash_reporter.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_curriculum.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_data.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_data_augment.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_data_sample.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_data_split.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_data_tools.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_dataset_hub.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_dataset_registry.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_deepspeed.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_deploy_ollama.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_diff.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_display.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_doctor.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_dpo_example.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_dpo_variants.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_embedding.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_errors.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_eval.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_eval_gate.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_eval_platform.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_export.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_formats.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_fp8_recipe.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_freeze_training.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_generate.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_gpu.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_grpo.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_hf_integration.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_infer.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_inference_advanced.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_init.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_ipo.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_jinja_analyzer.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_kto.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_loader.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_log_level.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_loss_watchdog.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_merge.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_migrate.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_mlx_backend.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_moe.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_multi_adapter.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_multi_gpu.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_multipack_config.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_multipack_invariants.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_multipack_sampler.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_neat_packing.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_neftune_rslora.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_onnx_tensorrt_export.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_orpo.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_packing.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_part_a_wave1.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_part_a_wave2.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_part_b.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_part_c.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_part_d.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_part_e.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_part_f_hardening.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_peft_methods.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_peft_patches.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_performance.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_pissa_init.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_ppo.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_preference_dispatcher.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_preference_multi.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_preference_multi_runtime.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_pretrain.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_profile.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_profiling.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_progress.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_push.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_qat.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_quality_filter.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_quant_check.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_quant_menu.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_quickstart.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_rank_pattern.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_recipes_v031.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_refusal_multilingual.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_registry.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_relora.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_replay.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_resume.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_rlvr.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_run_cost.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_runs.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_serve.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_server_generate.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_sglang_serve.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_simpo.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_smoke_train.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_speculative_decoding.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_sweep.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_synth_data_pro.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_templates_yaml.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_tensorboard.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_tool_calling.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_trace_to_pref.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_tracker.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_trainer_coverage_v035.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_trainer_init.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_training_intelligence.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_training_speed.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_trust_remote_code.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_tui.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_ui.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_ui_chat.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_ui_config_builder.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_ui_live_monitor.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_ui_metrics.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_unsloth.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0401_part_c.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0401_part_d.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0401_part_e.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0402_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0402_part_b.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0403_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0403_part_b.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0403_part_c.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0404_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0404_part_b.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0405_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0406_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0410_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0410_part_b.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0410_part_c.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0420.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0430_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0430_part_b.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0430_part_c.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0430_part_d.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0440_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0440_part_b.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0440_part_c.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0440_part_d.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0440_review_followups.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0450.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0460_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0460_part_b.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0470_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0470_part_b.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0480_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0480_part_b.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0490.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0500_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0500_part_b.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0500_part_c.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0500_part_d.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0500_part_e.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0510.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0520.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0530.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v05310.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v05311.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0531_109.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0531_139.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0531_142.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0531_82.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0532.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0533.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0534.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0535.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0536.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0537.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0538.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0539.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0540.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0550.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0550_followups.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0560.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0570_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0570_part_b.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0570_part_c.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0570_part_d.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0580.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0590.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0600_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0600_part_b.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0600_part_c.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0600_part_d.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0600_part_e.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0600_part_f.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0610_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0610_part_b.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0610_part_c.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0610_part_d.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0610_part_e.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0620_followups.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0620_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0620_part_b.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0620_part_c.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0620_part_d.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0620_part_e.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0630_followups.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0630_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0630_part_b.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0630_part_c.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0630_part_d.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0630_part_e.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0631_206.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0640_followups.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0640_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0640_part_b.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0640_part_c.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0640_part_d.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0640_part_e.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0640_part_f.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0650_followups.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0650_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0650_part_b.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0650_part_c.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0650_part_d.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0650_part_e.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0660_cli.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0660_followups.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0660_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0660_part_b.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0660_part_c.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0660_part_d.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0660_part_e.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0670_followups.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0670_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0670_part_b.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0670_part_c.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0670_part_d.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0670_part_e.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0670_part_f.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0680_followups.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0680_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0680_part_b.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0680_part_c.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0680_part_d.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0680_part_e.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0690_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0690_part_b.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0690_part_c.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0690_part_d.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0690_part_e.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0700_part_a.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0700_part_b.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0700_part_c.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0700_part_d.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0700_part_e.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0700_part_f.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v07110.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v07111.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v07112.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v07113.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v07114.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v07115.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v07116.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v07117.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v07118.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v07119.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0712.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v07120.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v07121.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v07122.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v07123.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v07126.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v07127.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v07129.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0713.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0714.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0715.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0716.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0717.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0718.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_v0719.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_validator.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_vision.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_vllm_serve.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_warmup.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_why.py +0 -0
- {soup_cli-0.71.30 → soup_cli-0.71.32}/tests/test_windows_encoding.py +0 -0
|
@@ -40,9 +40,12 @@ report.xml
|
|
|
40
40
|
.env
|
|
41
41
|
*.key
|
|
42
42
|
|
|
43
|
-
# Internal plan +
|
|
43
|
+
# Internal plan + local dev instructions (not for repo)
|
|
44
44
|
.claude/
|
|
45
45
|
.coverage
|
|
46
46
|
|
|
47
|
+
# Internal brainstorming plans + design specs (local-only, not for repo)
|
|
48
|
+
docs/superpowers/
|
|
49
|
+
|
|
47
50
|
# Local scratch / temp scripts at repo root (e.g. _smoke.py, _scratch.py) — never committed
|
|
48
51
|
/_*.py
|
|
@@ -12,6 +12,68 @@ reproducing 70+ versions of notes.
|
|
|
12
12
|
|
|
13
13
|
## [Unreleased]
|
|
14
14
|
|
|
15
|
+
## [0.71.32] - 2026-07-07
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
- **ASR fine-tuning (`task='asr'`, Whisper)** — fine-tune Whisper on your accent
|
|
19
|
+
or domain, locally. whisper-tiny (39M) / base (74M) train on a 4 GB GPU.
|
|
20
|
+
- New `AsrTrainerWrapper` (HF `Seq2SeqTrainer` + `WhisperProcessor`); data rows
|
|
21
|
+
are `{"audio": <path>, "text": <transcript>}` under the new `data.format='asr'`.
|
|
22
|
+
Audio decodes via the hardened `load_audio_mono` (16 kHz mono, soundfile
|
|
23
|
+
pre-probe + `O_NOFOLLOW` + symlink/size guards); transcripts become decoder
|
|
24
|
+
labels (pad → −100, decoder-start token stripped).
|
|
25
|
+
- Optional LoRA on q/v attention projections via `training.asr_lora: true`
|
|
26
|
+
(default full fine-tune); `training.asr_language` / `training.asr_task`
|
|
27
|
+
(`transcribe`|`translate`) set the decoder prefix and are persisted to an
|
|
28
|
+
`asr_generation.json` sidecar so inference restores them.
|
|
29
|
+
- **`soup infer --task asr`** — transcribe an `{"audio": path[, "text": ref]}`
|
|
30
|
+
JSONL; reports per-row and corpus WER/CER when references are present. Loads a
|
|
31
|
+
full model or a PEFT/LoRA adapter dir. Flags: `--asr-language`, `--asr-task`,
|
|
32
|
+
`--audio-dir` (audio paths are cwd/dir-contained; UNC/traversal rejected).
|
|
33
|
+
- New pure-python `utils/asr_metrics.py` — WER / CER / `word_accuracy`
|
|
34
|
+
(= 1 − WER, for a higher-is-better ship metric leg) / `corpus_wer`, with a
|
|
35
|
+
light Whisper-style text normalizer (no new dependency).
|
|
36
|
+
- Recipes: `whisper-tiny-asr`, `whisper-base-asr` (live-trainable),
|
|
37
|
+
`whisper-large-v3-asr` (parse-only, needs a larger GPU), plus
|
|
38
|
+
`smolvlm-256m-sft` (vision). Catalog 138 → 142.
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
- `model_size_from_name` now knows Whisper checkpoint sizes (tiny…large), so the
|
|
42
|
+
hardware-fit gate no longer mistakes a 39M whisper-tiny for the 7B default and
|
|
43
|
+
blocks ASR training on consumer GPUs.
|
|
44
|
+
|
|
45
|
+
## [0.71.31] - 2026-07-06
|
|
46
|
+
|
|
47
|
+
### Added
|
|
48
|
+
- **Judge-in-the-loop suite** — put an LLM judge in the loop across the workflow:
|
|
49
|
+
- **`task='online_dpo'`** — Online DPO training (wraps TRL `OnlineDPOTrainer`):
|
|
50
|
+
the model generates two completions per prompt on-policy each step and a
|
|
51
|
+
*judge* (a pairwise LLM judge over the existing ollama/openai-compatible
|
|
52
|
+
backend) OR a `reward_model` picks the winner. Config:
|
|
53
|
+
`training.online_dpo_judge: "ollama://model"` (or set `reward_model` —
|
|
54
|
+
exactly one), `online_dpo_loss_type: sigmoid|ipo`, `online_dpo_max_new_tokens`;
|
|
55
|
+
`beta` reuses `dpo_beta`. Transformers + text only. Recipe:
|
|
56
|
+
`online-dpo-smollm2-135m`. Adapts to the installed TRL: on trl 0.19.x the
|
|
57
|
+
judge is a swap-debiased *pairwise* comparison; on trl 1.x (which removed
|
|
58
|
+
pairwise judges) the same `JudgeEvaluator` is used as a *pointwise*
|
|
59
|
+
reward function — a documented per-version behaviour difference.
|
|
60
|
+
- **`soup data best-of-n`** — Best-of-N rejection sampling (BOND-lite): sample
|
|
61
|
+
N completions from `--base` locally, a `--judge` scores each pointwise, and
|
|
62
|
+
the winner is written as an SFT chat row (with provenance). `--emit-pairs`
|
|
63
|
+
also writes winner-vs-loser DPO pairs.
|
|
64
|
+
- **`soup data evolve`** — Evol-Instruct instruction evolution (WizardLM depth
|
|
65
|
+
/ breadth) over an ollama/vllm provider, completing the synthetic-data suite
|
|
66
|
+
(Magpie / Forge / Persona / evolve).
|
|
67
|
+
- **`soup ship --task-mode pairwise`** — a true pairwise judge win-rate as the
|
|
68
|
+
ship leg-1 task-win (base = 0.5 coin-flip, tuned = its win-rate; swap-debiased),
|
|
69
|
+
fusing with the catastrophic-forgetting guard into one SHIP / DON'T-SHIP verdict.
|
|
70
|
+
|
|
71
|
+
### Security
|
|
72
|
+
- `soup data best-of-n` / `evolve` write outputs via atomic `mkstemp` + `os.replace`
|
|
73
|
+
(re-validated cwd containment), closing the TOCTOU symlink-swap window between the
|
|
74
|
+
containment check and the write. All judge/provider URLs are SSRF-validated; model
|
|
75
|
+
loads probe `trust_remote_code`.
|
|
76
|
+
|
|
15
77
|
## [0.71.30] - 2026-07-05
|
|
16
78
|
|
|
17
79
|
### Added
|
|
@@ -110,17 +110,17 @@ src/soup_cli/
|
|
|
110
110
|
experiment/ - SQLite experiment tracking
|
|
111
111
|
eval/ - Eval platform (custom tasks, LLM judge, human eval, leaderboard)
|
|
112
112
|
migrate/ - Config migration (LLaMA-Factory, Axolotl, Unsloth)
|
|
113
|
-
recipes/ - Ready-made configs for popular models (
|
|
113
|
+
recipes/ - Ready-made configs for popular models (142 recipes)
|
|
114
114
|
autopilot/ - Zero-config decision engine (v0.25.0)
|
|
115
115
|
registry/ - Model Registry (hashing, store, diff, attach) (v0.26.0 + v0.33.0)
|
|
116
116
|
cans/ - Shareable .can artifact format + run/publish orchestrator (v0.26.0 + v0.33.0)
|
|
117
117
|
data/traces/ - Trace-to-Preference harvester (v0.26.0)
|
|
118
118
|
data/collators.py - CrossDocCollator for sample packing (v0.33.0)
|
|
119
|
-
utils/ - GPU, errors, MoE, GaLore, QAT, Unsloth, vLLM, SGLang, Liger, FlashAttn, FSDP, Ring Attention, long-context, quality, curriculum, freeze, dataset-registry, mlx, peft_builder, paths, topology, launcher, mii, pipeline, cut_ce, fp8, gradient_ckpt, kernel_picker, cross_doc_attn, activation_offload, hf, spec_pairing, structured_output, metrics, tracing, auto_quant, lr_finder, grad_accum, mixed_precision, warmup, spike_recovery, convergence, v028_features, multipack_sampler, multipack, neat_packing, jinja_analyzer, quant_menu, relora, peft_patches, peft_wiring, dpo_variants, optimizer_zoo, lr_groups, loftq_init, block_expansion, tts, classifier, distill, bitnet, ebft_gdpo, moe_quant, reasoning_effort, gguf_quant, kv_cache, advanced_precision, save_formats, deploy_measure, advise, advise_history, adapter_diff, adapter_merge, blame, adapter_branch, unlearning, unlearning_eval, knowledge_edit, edit_governor, edit_diff, ra_dit, steering, citation_faithful, grace_codebook, ingest_sources, prune_prompt, active_sampler, ab_test, drift_alarm, tunability, terraform_plan, env_lock, hardware_fit, completions, license_advisor, behavior_battery, capability_suite, checklist_dsl, irt, sae_diff, sleeper_probe, interference, probe_pack, cmaes_merge, vector_bank, mole_routing, adapter_pr, soup_lock, adapter_bisect, prompt_compile, prompt_distill, compile_tools, apple_adapter, local_rl, build_dag, expectations, magpie, persona_hub, brain_rot, reward_hacking, uld, minillm, rl_checkpoint, iterative_dpo, echo_trap, mod, local_rl_scheduler, spectrum_scan, ship_verdict, reward_hack_control, data_doctor, data_lint, shrink
|
|
119
|
+
utils/ - GPU, errors, MoE, GaLore, QAT, Unsloth, vLLM, SGLang, Liger, FlashAttn, FSDP, Ring Attention, long-context, quality, curriculum, freeze, dataset-registry, mlx, peft_builder, paths, topology, launcher, mii, pipeline, cut_ce, fp8, gradient_ckpt, kernel_picker, cross_doc_attn, activation_offload, hf, spec_pairing, structured_output, metrics, tracing, auto_quant, lr_finder, grad_accum, mixed_precision, warmup, spike_recovery, convergence, v028_features, multipack_sampler, multipack, neat_packing, jinja_analyzer, quant_menu, relora, peft_patches, peft_wiring, dpo_variants, optimizer_zoo, lr_groups, loftq_init, block_expansion, tts, classifier, distill, bitnet, ebft_gdpo, moe_quant, reasoning_effort, gguf_quant, kv_cache, advanced_precision, save_formats, deploy_measure, advise, advise_history, adapter_diff, adapter_merge, blame, adapter_branch, unlearning, unlearning_eval, knowledge_edit, edit_governor, edit_diff, ra_dit, steering, citation_faithful, grace_codebook, ingest_sources, prune_prompt, active_sampler, ab_test, drift_alarm, tunability, terraform_plan, env_lock, hardware_fit, completions, license_advisor, behavior_battery, capability_suite, checklist_dsl, irt, sae_diff, sleeper_probe, interference, probe_pack, cmaes_merge, vector_bank, mole_routing, adapter_pr, soup_lock, adapter_bisect, prompt_compile, prompt_distill, compile_tools, apple_adapter, local_rl, build_dag, expectations, magpie, persona_hub, brain_rot, reward_hacking, uld, minillm, rl_checkpoint, iterative_dpo, echo_trap, mod, local_rl_scheduler, spectrum_scan, ship_verdict, reward_hack_control, data_doctor, data_lint, shrink, best_of_n, evolve
|
|
120
120
|
templates/ - 17 built-in soup.yaml templates (YAML + manifest.json) with load_template loader (v0.39.0, +bco v0.40.0)
|
|
121
121
|
ui/ - Web UI (FastAPI + HTML/JS SPA)
|
|
122
122
|
|
|
123
|
-
tests/ - Test suite (
|
|
123
|
+
tests/ - Test suite (309 files, 15663 tests)
|
|
124
124
|
examples/ - Real-world config examples and datasets
|
|
125
125
|
```
|
|
126
126
|
|
|
@@ -150,10 +150,9 @@ pytest tests/test_data.py::test_detect_alpaca_format -v
|
|
|
150
150
|
pytest tests/ --cov=soup_cli --cov-report=html
|
|
151
151
|
```
|
|
152
152
|
|
|
153
|
-
### Test Files (
|
|
153
|
+
### Test Files (307 files)
|
|
154
154
|
|
|
155
|
-
> A representative sample of the suite below.
|
|
156
|
-
> [`.claude/CLAUDE.md`](.claude/CLAUDE.md); run `pytest tests/ -v` for the complete list.
|
|
155
|
+
> A representative sample of the suite below. Run `pytest tests/ -v` for the complete list.
|
|
157
156
|
|
|
158
157
|
|
|
159
158
|
| File | Covers |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: soup-cli
|
|
3
|
-
Version: 0.71.
|
|
3
|
+
Version: 0.71.32
|
|
4
4
|
Summary: Fine-tune and post-train LLMs in one command. No SSH, no config hell.
|
|
5
5
|
Project-URL: Homepage, https://github.com/MakazhanAlpamys/Soup
|
|
6
6
|
Project-URL: Repository, https://github.com/MakazhanAlpamys/Soup
|
|
@@ -193,27 +193,33 @@ infrastructure instead of improving models. Soup fixes that.
|
|
|
193
193
|
|
|
194
194
|
## What's New
|
|
195
195
|
|
|
196
|
-
**v0.71.
|
|
197
|
-
|
|
198
|
-
-
|
|
199
|
-
`
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
- **
|
|
207
|
-
|
|
208
|
-
- **
|
|
209
|
-
|
|
210
|
-
|
|
196
|
+
**v0.71.32 — ASR fine-tuning (Whisper).** Fine-tune Whisper on your accent or domain, locally. whisper-tiny (39M) and base (74M) train on a 4 GB GPU — a new modality that actually runs on a laptop card.
|
|
197
|
+
|
|
198
|
+
- **`task='asr'`.** A new `AsrTrainerWrapper` (HF `Seq2SeqTrainer` + `WhisperProcessor`). Data rows
|
|
199
|
+
are `{"audio": <path>, "text": <transcript>}` under `data.format='asr'`; audio decodes to 16 kHz
|
|
200
|
+
mono through the hardened loader (soundfile pre-probe + symlink/size guards). Opt-in LoRA on q/v
|
|
201
|
+
via `training.asr_lora: true` (default full fine-tune); `training.asr_language` / `asr_task`
|
|
202
|
+
(`transcribe`|`translate`) set — and persist — the decoder prefix for inference.
|
|
203
|
+
- **`soup infer --task asr`.** Transcribe an `{"audio"[, "text"]}` JSONL and get per-row + corpus
|
|
204
|
+
**WER / CER** when references are present. Loads a full model or a LoRA adapter dir; audio paths
|
|
205
|
+
are containment-checked (traversal / UNC rejected).
|
|
206
|
+
- **Pure-python metrics.** New `soup_cli.utils.asr_metrics` (WER / CER / `word_accuracy` /
|
|
207
|
+
`corpus_wer`) — no new dependency, reusable as a higher-is-better ship metric leg.
|
|
208
|
+
- **Recipes.** `whisper-tiny-asr` / `whisper-base-asr` (live-trainable), `whisper-large-v3-asr`
|
|
209
|
+
(parse-only). Catalog 138 → 142.
|
|
210
|
+
- **Proof-of-mechanism, honestly.** Live-validated on an RTX 3050: a memorization task drove
|
|
211
|
+
WER 1.000 → 0.000 (loss 7.2 → 0.0005 at 0.4/4 GB). Real accent/domain gains need real audio;
|
|
212
|
+
WER/CER use a light normalizer, not the full Whisper text normalizer.
|
|
211
213
|
|
|
212
214
|
```yaml
|
|
213
|
-
|
|
215
|
+
base: openai/whisper-tiny
|
|
216
|
+
task: asr
|
|
217
|
+
data:
|
|
218
|
+
format: asr # rows: {"audio": "clip.wav", "text": "hello world"}
|
|
219
|
+
audio_dir: ./data/audio
|
|
214
220
|
training:
|
|
215
|
-
|
|
216
|
-
|
|
221
|
+
asr_language: en
|
|
222
|
+
asr_lora: true # optional; default = full fine-tune
|
|
217
223
|
```
|
|
218
224
|
|
|
219
225
|
Full history: [CHANGELOG.md](CHANGELOG.md) · [GitHub Releases](https://github.com/MakazhanAlpamys/Soup/releases).
|
|
@@ -49,27 +49,33 @@ infrastructure instead of improving models. Soup fixes that.
|
|
|
49
49
|
|
|
50
50
|
## What's New
|
|
51
51
|
|
|
52
|
-
**v0.71.
|
|
53
|
-
|
|
54
|
-
-
|
|
55
|
-
`
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
- **
|
|
63
|
-
|
|
64
|
-
- **
|
|
65
|
-
|
|
66
|
-
|
|
52
|
+
**v0.71.32 — ASR fine-tuning (Whisper).** Fine-tune Whisper on your accent or domain, locally. whisper-tiny (39M) and base (74M) train on a 4 GB GPU — a new modality that actually runs on a laptop card.
|
|
53
|
+
|
|
54
|
+
- **`task='asr'`.** A new `AsrTrainerWrapper` (HF `Seq2SeqTrainer` + `WhisperProcessor`). Data rows
|
|
55
|
+
are `{"audio": <path>, "text": <transcript>}` under `data.format='asr'`; audio decodes to 16 kHz
|
|
56
|
+
mono through the hardened loader (soundfile pre-probe + symlink/size guards). Opt-in LoRA on q/v
|
|
57
|
+
via `training.asr_lora: true` (default full fine-tune); `training.asr_language` / `asr_task`
|
|
58
|
+
(`transcribe`|`translate`) set — and persist — the decoder prefix for inference.
|
|
59
|
+
- **`soup infer --task asr`.** Transcribe an `{"audio"[, "text"]}` JSONL and get per-row + corpus
|
|
60
|
+
**WER / CER** when references are present. Loads a full model or a LoRA adapter dir; audio paths
|
|
61
|
+
are containment-checked (traversal / UNC rejected).
|
|
62
|
+
- **Pure-python metrics.** New `soup_cli.utils.asr_metrics` (WER / CER / `word_accuracy` /
|
|
63
|
+
`corpus_wer`) — no new dependency, reusable as a higher-is-better ship metric leg.
|
|
64
|
+
- **Recipes.** `whisper-tiny-asr` / `whisper-base-asr` (live-trainable), `whisper-large-v3-asr`
|
|
65
|
+
(parse-only). Catalog 138 → 142.
|
|
66
|
+
- **Proof-of-mechanism, honestly.** Live-validated on an RTX 3050: a memorization task drove
|
|
67
|
+
WER 1.000 → 0.000 (loss 7.2 → 0.0005 at 0.4/4 GB). Real accent/domain gains need real audio;
|
|
68
|
+
WER/CER use a light normalizer, not the full Whisper text normalizer.
|
|
67
69
|
|
|
68
70
|
```yaml
|
|
69
|
-
|
|
71
|
+
base: openai/whisper-tiny
|
|
72
|
+
task: asr
|
|
73
|
+
data:
|
|
74
|
+
format: asr # rows: {"audio": "clip.wav", "text": "hello world"}
|
|
75
|
+
audio_dir: ./data/audio
|
|
70
76
|
training:
|
|
71
|
-
|
|
72
|
-
|
|
77
|
+
asr_language: en
|
|
78
|
+
asr_lora: true # optional; default = full fine-tune
|
|
73
79
|
```
|
|
74
80
|
|
|
75
81
|
Full history: [CHANGELOG.md](CHANGELOG.md) · [GitHub Releases](https://github.com/MakazhanAlpamys/Soup/releases).
|
|
@@ -19,6 +19,7 @@ soup train --config soup.yaml --push-as user/repo --hf-resume Resume from lates
|
|
|
19
19
|
soup train --config soup.yaml --find-lr LR range finder: write recommended LR JSON
|
|
20
20
|
soup train --config soup.yaml --cloud modal --gpu a100 Render a Modal.com app for serverless GPU training (plan-only; --cloud-submit submits live)
|
|
21
21
|
soup infer --model ./output --input p.jsonl Batch inference
|
|
22
|
+
soup infer --task asr --model <whisper|adapter> --input a.jsonl --output o.jsonl [--audio-dir d --asr-language en --asr-task transcribe|translate] Whisper transcription + WER/CER
|
|
22
23
|
soup chat --model ./output Interactive chat
|
|
23
24
|
soup push --model ./output --repo user/name Upload to HuggingFace
|
|
24
25
|
soup push --model ./output --repo user/name --collection user/coll-abc123 Add to HF Collection
|
|
@@ -133,7 +134,7 @@ soup migrate --from llamafactory config.yaml Import config from LLaMA-Factory
|
|
|
133
134
|
soup migrate --from axolotl config.yml Import config from Axolotl
|
|
134
135
|
soup migrate --from unsloth notebook.ipynb Import config from Unsloth notebook
|
|
135
136
|
soup migrate --from llamafactory c.yaml --dry-run Preview without writing
|
|
136
|
-
soup recipes list List all
|
|
137
|
+
soup recipes list List all 138 ready-made recipes
|
|
137
138
|
soup recipes show llama3.1-8b-sft Print recipe YAML
|
|
138
139
|
soup recipes use llama3.1-8b-sft Copy recipe to soup.yaml
|
|
139
140
|
soup recipes search "reasoning" Search by keyword/task/size
|
|
@@ -155,6 +156,7 @@ soup why [run_id] Explain training anomalies (heuris
|
|
|
155
156
|
soup ship --base <m> --adapter <lora> --task-eval t.jsonl SHIP / DON'T-SHIP verdict: task win AND no forgetting (exit 0=SHIP / 2=DON'T / 1=error) (v0.71.25)
|
|
156
157
|
soup ship --evidence ev.json [--output v.json] Decide offline from pre-computed scores (no model load)
|
|
157
158
|
soup ship ... --task-mode judge_score --judge-model ollama://llama3.1 Leg-1 via LLM-as-a-judge
|
|
159
|
+
soup ship ... --task-mode pairwise --judge-model ollama://llama3.1 Leg-1 via swap-debiased judge win-rate (base=0.5) (v0.71.31)
|
|
158
160
|
soup ship ... --general-suite mmlu,gsm8k --baseline base.json lm-eval leg-2 + recorded base scores
|
|
159
161
|
soup mcp serve MCP server over stdio (drive Soup from Claude Code / Cursor / Cline; requires [mcp] extra) (v0.71.28)
|
|
160
162
|
soup mcp serve --allow-mutating Also expose plan-only train_start / export tools (never execute) (v0.71.28)
|
|
@@ -250,6 +252,8 @@ soup local-rl train --db <path> --model <id> [--scheduler-dir <dir>] [--hour H]
|
|
|
250
252
|
soup build <manifest.yaml> [--dry-run] [--output-dir <dir>] dbt-for-SFT DAG: validate + plan + live materialise (v0.69.0; live v0.71.6)
|
|
251
253
|
soup expect <data.jsonl> <suite.yaml> Expectations suite: PII / token-length / refusal / judge (v0.69.0)
|
|
252
254
|
soup data gen-magpie --base <m> --provider ollama|vllm --target N --output <jsonl> [--base-url <url>] [--quality-filter] Magpie synthetic generator — live (v0.69.0; live v0.71.6)
|
|
255
|
+
soup data best-of-n --base <m> --prompts <jsonl> --n 8 --judge <url> -o <sft.jsonl> [--emit-pairs <dpo.jsonl>] Best-of-N rejection sampling: sample N locally, judge picks winner -> SFT (+ DPO) rows (v0.71.31)
|
|
256
|
+
soup data evolve --input <seeds.jsonl> --provider ollama|vllm --model <m> --strategy depth|breadth --rounds N -o <jsonl> Evol-Instruct (WizardLM) instruction evolution (v0.71.31)
|
|
253
257
|
soup data persona-mix --prompts <jsonl> --n N --output <jsonl> Persona-Hub diversity sampler (v0.69.0)
|
|
254
258
|
soup data brain-rot <data.jsonl> [--strict] Brain-rot detector — arXiv 2510.13928 (v0.69.0)
|
|
255
259
|
soup iterative-dpo --base-model <m> --reward-model <rm> --prompts <p.jsonl> --output-dir <out> --rounds N --pairs-per-round N [--plan-only] Iterative DPO loop driver — LIVE sample→score→pair→train (v0.70.0; live v0.71.11)
|
|
@@ -62,6 +62,15 @@ soup data persona-mix --prompts prompts.jsonl --n 500 --output mixed.jsonl
|
|
|
62
62
|
|
|
63
63
|
# Brain-rot detector (arXiv 2510.13928) — refuses to train on excessive slop
|
|
64
64
|
soup data brain-rot data.jsonl --strict --max-major-fraction 0.10
|
|
65
|
+
|
|
66
|
+
# Best-of-N rejection sampling (v0.71.31) — sample N locally, a judge picks the winner
|
|
67
|
+
soup data best-of-n --base HuggingFaceTB/SmolLM2-135M-Instruct \
|
|
68
|
+
--prompts prompts.jsonl --n 8 --judge ollama://llama3.1 \
|
|
69
|
+
-o best_of_n.jsonl --emit-pairs pairs.jsonl
|
|
70
|
+
|
|
71
|
+
# Evol-Instruct (WizardLM depth/breadth, v0.71.31) — grow instruction diversity
|
|
72
|
+
soup data evolve --input seeds.jsonl --provider ollama --model llama3.1 \
|
|
73
|
+
--strategy depth --rounds 2 -o evolved.jsonl
|
|
65
74
|
```
|
|
66
75
|
|
|
67
76
|
Every command applies the project-wide TOCTOU policy (`os.lstat + S_ISLNK` symlink rejection before any open) and cwd containment via the shared `paths.enforce_under_cwd_and_no_symlink` helper. All five are LIVE: `soup build` materialises with five built-in transforms (`identity` / `drop_empty` / `lowercase` / `strip` / `dedup_exact`) and SQLite-tracked incremental re-transform (v0.71.6); `soup data gen-magpie` harvests via raw completion against `--provider ollama|vllm` (loopback-only; `anthropic` rejected — no raw-completion endpoint, v0.71.6).
|
|
@@ -343,6 +352,13 @@ Or use `.txt` files directly (one document per line).
|
|
|
343
352
|
{"audio": "recording.wav", "messages": [{"role": "user", "content": "Transcribe."}, {"role": "assistant", "content": "Hello world."}]}
|
|
344
353
|
```
|
|
345
354
|
|
|
355
|
+
**ASR (Whisper transcription — `data.format: asr`, v0.71.32):**
|
|
356
|
+
```json
|
|
357
|
+
{"audio": "clip.wav", "text": "hello world"}
|
|
358
|
+
```
|
|
359
|
+
Audio paths resolve under `data.audio_dir` (containment-checked). Used by
|
|
360
|
+
`task: asr` and `soup infer --task asr`. See [Training → ASR](training.md).
|
|
361
|
+
|
|
346
362
|
**PRM (process reward, stepwise-supervised):**
|
|
347
363
|
```json
|
|
348
364
|
{"prompt": "Solve 2+2", "completions": ["First, add", "Result is 4"], "labels": [true, true]}
|
|
@@ -330,6 +330,11 @@ soup ship --base HuggingFaceTB/SmolLM2-135M-Instruct --adapter ./out \
|
|
|
330
330
|
soup ship --base <m> --adapter ./out --task-eval tasks.jsonl \
|
|
331
331
|
--task-mode judge_score --judge-model ollama://llama3.1
|
|
332
332
|
|
|
333
|
+
# Leg-1 via a true pairwise judge win-rate (v0.71.31 #284) — the judge picks
|
|
334
|
+
# base vs tuned per prompt (swap-debiased); base = 0.5 coin-flip, won <=> winrate > 0.5
|
|
335
|
+
soup ship --base <m> --adapter ./out --task-eval tasks.jsonl \
|
|
336
|
+
--task-mode pairwise --judge-model ollama://llama3.1
|
|
337
|
+
|
|
333
338
|
# Leg-2 via lm-eval benchmarks, base scores supplied by --baseline
|
|
334
339
|
soup ship --base <m> --tuned ./out --task-eval tasks.jsonl \
|
|
335
340
|
--general-suite mmlu,hellaswag --baseline registry://abc123
|
|
@@ -40,6 +40,17 @@ Soup works with **any** of the **340,000+** text-generation models on [HuggingFa
|
|
|
40
40
|
| Qwen2-VL-7B-Instruct | 7B | LLaVA, ShareGPT4V |
|
|
41
41
|
| Pixtral-12B-2409 | 12B | LLaVA, ShareGPT4V |
|
|
42
42
|
|
|
43
|
+
### ASR Models (`task: asr`, Whisper — v0.71.32)
|
|
44
|
+
|
|
45
|
+
| Recipe | Base | Size | Status |
|
|
46
|
+
|---|---|---|---|
|
|
47
|
+
| `whisper-tiny-asr` | openai/whisper-tiny | 39M | Live on 4 GB |
|
|
48
|
+
| `whisper-base-asr` | openai/whisper-base | 74M | Live on 4 GB |
|
|
49
|
+
| `whisper-large-v3-asr` | openai/whisper-large-v3 | 1.5B | Parse-only (larger GPU) |
|
|
50
|
+
|
|
51
|
+
Rows are `{"audio": <path>, "text": <transcript>}` with `data.format: asr`. See
|
|
52
|
+
[Training → ASR fine-tuning](training.md).
|
|
53
|
+
|
|
43
54
|
### Quick Size Guide
|
|
44
55
|
|
|
45
56
|
| VRAM | Max Model (QLoRA 4-bit) | Example |
|
|
@@ -418,7 +418,7 @@ soup ui
|
|
|
418
418
|
|
|
419
419
|
**Pages:**
|
|
420
420
|
- **Dashboard** — view all experiment runs, loss charts, system info, multi-run comparison
|
|
421
|
-
- **New Training** — create configs from templates or
|
|
421
|
+
- **New Training** — create configs from templates or 138 ready-made recipes, validate, start training with live SSE log streaming and progress bar
|
|
422
422
|
- **Data Explorer** — browse and inspect datasets (JSONL, JSON, CSV, Parquet)
|
|
423
423
|
- **Model Chat** — chat with streaming responses, configurable temperature/top_p/max_tokens, system prompt, adapter selection, markdown rendering, chat export
|
|
424
424
|
|
|
@@ -427,7 +427,7 @@ soup ui
|
|
|
427
427
|
- **Enhanced Metrics** — 2x2 chart grid (loss, LR, grad_norm, throughput) + GPU memory chart, eval results table
|
|
428
428
|
- **Multi-Run Compare** — overlay loss curves from up to 5 runs side-by-side
|
|
429
429
|
- **Chat Upgrade** — SSE streaming via proxy, typing indicator, cancel button, markdown renderer (bold, italic, code blocks), chat export as JSON
|
|
430
|
-
- **Config Builder** — recipe dropdown (
|
|
430
|
+
- **Config Builder** — recipe dropdown (138 recipes), config schema API for dynamic form generation
|
|
431
431
|
|
|
432
432
|
**Security:** The Web UI generates a random auth token at startup (printed to console). All mutating endpoints (start/stop training, delete runs, inspect data, validate config) require `Authorization: Bearer <token>` header. CORS is restricted to the served origin. Data inspection is sandboxed to the working directory.
|
|
433
433
|
|
|
@@ -401,6 +401,34 @@ advantages). Not a production reward-model claim; scale validation is help-wante
|
|
|
401
401
|
(#286).
|
|
402
402
|
|
|
403
403
|
|
|
404
|
+
## Online DPO (`task='online_dpo'`) — judge in the loop (v0.71.31)
|
|
405
|
+
|
|
406
|
+
Unlike offline DPO (static `prompt/chosen/rejected` rows), **Online DPO** generates
|
|
407
|
+
two completions per prompt **on-policy** each step and asks a *judge* — or a
|
|
408
|
+
*reward model* — which is better; the winner becomes `chosen`, the loser
|
|
409
|
+
`rejected`. The judge closes the loop. Wraps TRL `OnlineDPOTrainer`; data is
|
|
410
|
+
prompt-only (like GRPO). Transformers + text only.
|
|
411
|
+
|
|
412
|
+
```yaml
|
|
413
|
+
base: HuggingFaceTB/SmolLM2-135M-Instruct
|
|
414
|
+
task: online_dpo
|
|
415
|
+
data:
|
|
416
|
+
train: ./data/prompts.jsonl # prompt-only (or any format — prompts are extracted)
|
|
417
|
+
training:
|
|
418
|
+
online_dpo_judge: "ollama://llama3.1" # a pairwise judge (ollama://|https://|http://localhost)
|
|
419
|
+
# OR: reward_model: ./my-reward-model # exactly one of judge / reward_model
|
|
420
|
+
online_dpo_loss_type: sigmoid # sigmoid | ipo
|
|
421
|
+
online_dpo_max_new_tokens: 64
|
|
422
|
+
dpo_beta: 0.1
|
|
423
|
+
lora: { r: 8, alpha: 16, target_modules: auto }
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
The judge is Soup's own OpenAI-compatible `JudgeEvaluator` adapted to TRL's
|
|
427
|
+
`BasePairwiseJudge` (swap-debiased: a winner is only recorded when both A,B and
|
|
428
|
+
B,A orders agree). Recipe: `online-dpo-smollm2-135m`. Proof-of-mechanism was
|
|
429
|
+
validated on SmolLM2-135M with a synthetic judge (not a production RLHF claim; #286).
|
|
430
|
+
|
|
431
|
+
|
|
404
432
|
## Weighted Multi-Objective Preference Loss
|
|
405
433
|
|
|
406
434
|
Mix DPO / SimPO / ORPO / IPO terms in one training run by setting
|
|
@@ -533,6 +561,48 @@ training:
|
|
|
533
561
|
{"audio": "recording.wav", "messages": [{"role": "user", "content": "Transcribe this audio."}, {"role": "assistant", "content": "Hello world."}]}
|
|
534
562
|
```
|
|
535
563
|
|
|
564
|
+
### ASR fine-tuning (`task='asr'`, Whisper) — v0.71.32
|
|
565
|
+
|
|
566
|
+
Fine-tune Whisper on your accent or domain. whisper-tiny (39M) and base (74M)
|
|
567
|
+
train on a 4 GB GPU. Rows are `{"audio": <path>, "text": <transcript>}` under
|
|
568
|
+
`data.format='asr'`; audio decodes to 16 kHz mono through the hardened loader.
|
|
569
|
+
|
|
570
|
+
```yaml
|
|
571
|
+
base: openai/whisper-tiny
|
|
572
|
+
task: asr
|
|
573
|
+
data:
|
|
574
|
+
train: ./data/train.jsonl
|
|
575
|
+
format: asr # rows: {"audio": "clip.wav", "text": "hello world"}
|
|
576
|
+
audio_dir: ./data/audio # audio paths resolve here (containment-checked)
|
|
577
|
+
training:
|
|
578
|
+
epochs: 3
|
|
579
|
+
lr: 1e-4
|
|
580
|
+
batch_size: 2
|
|
581
|
+
asr_language: en # optional; sets + persists the decoder prefix
|
|
582
|
+
asr_task: transcribe # transcribe | translate
|
|
583
|
+
asr_lora: true # optional LoRA on q/v; default = full fine-tune
|
|
584
|
+
quantization: none
|
|
585
|
+
output: ./out
|
|
586
|
+
```
|
|
587
|
+
|
|
588
|
+
```json
|
|
589
|
+
{"audio": "clip0.wav", "text": "hello world"}
|
|
590
|
+
```
|
|
591
|
+
|
|
592
|
+
Transcribe + score after training:
|
|
593
|
+
|
|
594
|
+
```bash
|
|
595
|
+
soup infer --task asr --model ./out --input eval.jsonl --output preds.jsonl --audio-dir ./data/audio
|
|
596
|
+
# -> preds carry {"transcription", "wer", "cer"} per row + a corpus WER summary
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
Notes: `task='asr'` requires `backend='transformers'` and a Whisper base (a
|
|
600
|
+
non-Whisper base is rejected before download). `asr_language`/`asr_task` persist
|
|
601
|
+
to an `asr_generation.json` sidecar so `soup infer --task asr` restores them
|
|
602
|
+
(override with `--asr-language`/`--asr-task`). WER/CER use a light normalizer —
|
|
603
|
+
good for before/after deltas, not leaderboard-comparable absolutes.
|
|
604
|
+
`whisper-large-v3-asr` ships parse-only (needs a larger GPU).
|
|
605
|
+
|
|
536
606
|
|
|
537
607
|
## GRPO Plus — Objective Variants, Long-Context RL, Multi-Turn Agents
|
|
538
608
|
|