soup-cli 0.71.29__tar.gz → 0.71.31__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.29 → soup_cli-0.71.31}/.gitignore +4 -1
- {soup_cli-0.71.29 → soup_cli-0.71.31}/CHANGELOG.md +70 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/CONTRIBUTING.md +5 -6
- {soup_cli-0.71.29 → soup_cli-0.71.31}/PKG-INFO +23 -16
- {soup_cli-0.71.29 → soup_cli-0.71.31}/README.md +22 -15
- {soup_cli-0.71.29 → soup_cli-0.71.31}/docs/README.md +1 -1
- {soup_cli-0.71.29 → soup_cli-0.71.31}/docs/commands.md +4 -1
- {soup_cli-0.71.29 → soup_cli-0.71.31}/docs/data.md +9 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/docs/evaluation.md +5 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/docs/serving-and-export.md +2 -2
- {soup_cli-0.71.29 → soup_cli-0.71.31}/docs/training.md +84 -1
- {soup_cli-0.71.29 → soup_cli-0.71.31}/pyproject.toml +1 -1
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/__init__.py +1 -1
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/data.py +328 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/ship.py +32 -1
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/train.py +4 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/config/schema.py +163 -0
- soup_cli-0.71.31/src/soup_cli/envs/__init__.py +18 -0
- soup_cli-0.71.31/src/soup_cli/envs/_common.py +29 -0
- soup_cli-0.71.31/src/soup_cli/envs/calculator.py +41 -0
- soup_cli-0.71.31/src/soup_cli/envs/guess_number.py +44 -0
- soup_cli-0.71.31/src/soup_cli/envs/retrieval_qa.py +54 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/eval/judge.py +234 -1
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/recipes/catalog.py +135 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/grpo.py +51 -31
- soup_cli-0.71.31/src/soup_cli/trainer/online_dpo.py +432 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/prm.py +58 -2
- soup_cli-0.71.31/src/soup_cli/utils/best_of_n.py +113 -0
- soup_cli-0.71.31/src/soup_cli/utils/evolve.py +120 -0
- soup_cli-0.71.31/src/soup_cli/utils/prm_reward.py +373 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/ship_verdict.py +3 -4
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_recipes.py +4 -2
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v07124.py +3 -3
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v07125.py +8 -5
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v07128.py +2 -1
- soup_cli-0.71.31/tests/test_v07130.py +797 -0
- soup_cli-0.71.31/tests/test_v07131.py +1207 -0
- soup_cli-0.71.29/docs/superpowers/plans/2026-07-05-soup-shrink-depth-prune.md +0 -607
- soup_cli-0.71.29/docs/superpowers/specs/2026-07-05-soup-shrink-depth-prune-design.md +0 -218
- {soup_cli-0.71.29 → soup_cli-0.71.31}/.dockerignore +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/.github/FUNDING.yml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/.github/pull_request_template.md +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/.github/workflows/ci.yml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/.github/workflows/docker.yml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/.github/workflows/publish.yml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/.github/workflows/recipe-validation.yml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/.mailmap +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/.pre-commit-config.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/AGENTS.md +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/CODEOWNERS +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/CODE_OF_CONDUCT.md +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/CONTRIBUTORS.md +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/Dockerfile +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/LICENSE +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/NOTICE +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/SECURITY.md +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/docker-compose.yml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/docs/adapters-and-governance.md +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/docs/backends-and-ops.md +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/docs/models.md +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/docs/peft-and-efficiency.md +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/docs/performance-and-quantization.md +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/examples/README.md +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/examples/configs/dpo_chat.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/examples/configs/dpo_example.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/examples/configs/grpo_reasoning.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/examples/configs/rlhf_step1_sft.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/examples/configs/rlhf_step2_reward.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/examples/configs/rlhf_step3_ppo.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/examples/configs/sft_basic.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/examples/configs/vision_llama.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/examples/data/alpaca_tiny.jsonl +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/examples/data/chat_preferences.jsonl +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/examples/data/dpo_sample.jsonl +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/examples/data/reasoning_math.jsonl +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/examples/reward_hacking/rewards.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/examples/synthetic_workflow.md +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/examples/synthetic_workflow.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/soup.png +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/soup_logo_svg.svg +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/__main__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/autopilot/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/autopilot/analyzer.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/autopilot/decisions.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/autopilot/generate_config.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/cans/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/cans/pack.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/cans/publish.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/cans/run.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/cans/schema.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/cans/unpack.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/cans/verify.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/cli.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/cloud/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/cloud/modal.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/_eval_v0550.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/_eval_v0610.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/_eval_v0650.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/_eval_v07110.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/_webhook_cli.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/ab.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/active_sample.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/adapters.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/advise.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/agent.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/airgap.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/apple_adapter.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/attest.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/audit_log.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/autopilot.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/bench.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/bom.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/build.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/can.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/chat.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/compile_cmd.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/compile_tools.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/completions.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/cost.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/data_doctor.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/data_forge.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/data_mix.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/data_score.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/delinearize_llama4.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/deploy.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/diagnose.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/diff.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/distill_prompt.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/doctor.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/drift_alarm.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/edit.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/env.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/eval.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/expect.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/export.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/fetch.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/generate.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/history.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/infer.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/ingest.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/init.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/iterative_dpo.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/license_advisor.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/llama.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/local_rl.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/lock.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/loop.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/mcp.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/merge.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/merge_sharded_fsdp_weights.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/migrate.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/monitor.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/plan.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/plugins.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/probe.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/profile.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/prune_prompt.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/push.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/quantize.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/quickstart.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/ra_dit.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/recipes.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/registry.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/runs.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/serve.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/shrink.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/spectrum.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/steer.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/sweep.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/tokenizer.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/tui.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/tunability.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/ui.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/commands/why.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/config/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/config/loader.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/_fixtures/alpaca_tiny.jsonl +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/_fixtures/behavior/elephant.jsonl +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/_fixtures/behavior/harmbench.jsonl +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/_fixtures/behavior/jailbreakbench.jsonl +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/_fixtures/behavior/syceval.jsonl +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/_fixtures/behavior/xstest.jsonl +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/_fixtures/chat_preferences.jsonl +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/_fixtures/dpo_sample.jsonl +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/_fixtures/reasoning_math.jsonl +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/_fixtures/unlearning/muse_demo.jsonl +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/_fixtures/unlearning/tofu_demo.jsonl +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/_fixtures/unlearning/wmdp_demo.jsonl +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/augment.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/chat_templates.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/collators.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/formats.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/loader.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/loss_mask.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/providers/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/providers/_utils.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/providers/anthropic.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/providers/ollama.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/providers/vllm.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/sft_format.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/templates/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/templates/code.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/templates/conversation.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/templates/preference.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/templates/qa.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/templates/reasoning.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/templates/tool_calling.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/templates/verifiable.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/traces/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/traces/pair_builder.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/traces/parsers.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/traces/quality.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/data/validator.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/eval/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/eval/arena.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/eval/benchmarks_v0_43.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/eval/calibrate.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/eval/checkpoint_intelligence.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/eval/custom.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/eval/forgetting.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/eval/gate.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/eval/human.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/eval/leaderboard.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/eval/quant_check.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/experiment/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/experiment/tracker.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/mcp_server/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/mcp_server/registry.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/mcp_server/server.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/migrate/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/migrate/axolotl.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/migrate/common.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/migrate/llamafactory.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/migrate/unsloth.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/monitoring/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/monitoring/callback.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/monitoring/curriculum_callback.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/monitoring/display.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/monitoring/grpo_stability_callback.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/monitoring/hf_push.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/monitoring/plugin_callback.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/monitoring/trace_logger.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/plugins/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/py.typed +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/recipes/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/registry/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/registry/attach.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/registry/diff.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/registry/hashing.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/registry/store.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/templates/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/templates/audio.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/templates/bco.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/templates/chat.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/templates/code.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/templates/embedding.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/templates/fetch_examples/llama-3.1-8b-lora.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/templates/fetch_examples/qwen2.5-7b-dpo.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/templates/fetch_examples/zero3-cpu-offload.json +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/templates/ipo.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/templates/kto.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/templates/longcontext.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/templates/manifest.json +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/templates/medical.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/templates/moe.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/templates/orpo.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/templates/pretrain.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/templates/reasoning.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/templates/rlhf.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/templates/simpo.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/templates/tool-calling.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/templates/vision.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/bco.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/bitnet.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/classifier.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/distill.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/dpo.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/embedding.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/ipo.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/kto.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/mlx_dpo.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/mlx_grpo.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/mlx_routing.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/mlx_sft.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/mole_routing.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/orpo.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/ppo.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/preference.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/pretrain.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/raft.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/reward_model.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/rewards.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/sft.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/simpo.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/tts.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/trainer/unlearn.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/tui_app.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/ui/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/ui/app.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/ui/plugins/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/ui/static/app.js +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/ui/static/index.html +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/ui/static/logo.png +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/ui/static/logo.svg +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/ui/static/style.css +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/_eval_text.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/ab_test.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/activation_offload.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/active_sampler.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/adapter_bisect.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/adapter_branch.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/adapter_diff.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/adapter_merge.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/adapter_pr.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/adapter_scan.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/adapter_sign.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/advanced_precision.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/advise.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/advise_history.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/agent_forge.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/agent_rollout.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/agent_sandbox.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/airgap_bundle.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/annex_xi.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/anthropic_messages.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/apple_adapter.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/attest.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/audit_log.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/auto_quant.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/backend_detect.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/batch_probe.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/behavior_battery.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/bitnet.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/blame.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/block_expansion.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/bom.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/brain_rot.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/brain_rot_lang.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/build_dag.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/canary_discovery.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/canary_router.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/capability_suite.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/checklist_dsl.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/checkpoint_trigger.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/citation_faithful.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/classifier.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/cmaes_merge.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/compile_tools.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/completions.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/constants.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/convergence.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/crash.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/cross_doc_attn.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/curriculum.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/curriculum_dynamic.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/cut_ce.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/data_doctor.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/data_forge.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/data_lint.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/data_mix.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/data_pipeline.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/data_score.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/deepspeed.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/delinearize_llama4.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/demo_bundles.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/deploy_autopilot.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/deploy_measure.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/diagnose/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/diagnose/_common.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/diagnose/badge.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/diagnose/citation.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/diagnose/contamination.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/diagnose/forgetting.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/diagnose/format.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/diagnose/live.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/diagnose/memorization.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/diagnose/mode_collapse.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/diagnose/refusal.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/diagnose/report.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/diagnose/runner.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/distill.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/dpo_variants.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/drift_alarm.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/ebft_gdpo.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/echo_trap.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/edit_diff.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/edit_governor.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/edit_kernels.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/encoding.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/energy.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/env_lock.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/errors.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/eval_design.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/eval_gate_hook.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/eval_lock_coverage.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/expectations.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/fetch_examples.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/flash_attn.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/fp8.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/freeze.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/fsdp.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/fsdp_consolidate.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/galore.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/gguf_quant.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/gpu.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/gpu_monitor.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/grace_codebook.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/graceful_save.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/grad_accum.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/gradient_ckpt.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/grpo_long_context.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/grpo_variants.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/hardware_fit.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/harm_probe.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/hf.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/hf_space.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/hubs.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/ingest_sources.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/integrations.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/interference.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/interference_live.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/irt.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/iterative_dpo.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/jinja_analyzer.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/kernel_picker.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/knowledge_edit.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/kv_cache.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/launcher.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/license_advisor.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/license_matrix.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/liger.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/live_eval.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/llama_proxy.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/llama_server_timings.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/local_rl.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/local_rl_scheduler.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/loftq_init.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/log_level.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/long_context.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/longlora.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/loop_budget.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/loop_daemon.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/loop_iteration.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/loop_stages.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/loop_state.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/lr_finder.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/lr_groups.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/magpie.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/metrics.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/mii.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/minillm.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/mix_proxy.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/mixed_precision.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/mlx.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/mod.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/moe.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/moe_quant.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/mole_routing.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/multipack.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/multipack_sampler.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/multipack_trainer.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/namespace_pin.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/neat_packing.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/ngram_spec.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/nlg_metrics.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/ollama.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/onboarding.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/optimizer_zoo.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/paths.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/peft_builder.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/peft_patches.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/peft_wiring.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/persona_hub.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/pipeline.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/preference_combine.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/prm.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/probe_kernel.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/probe_pack.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/profiler.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/profiling.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/profiling_v0_43.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/prompt_compile.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/prompt_distill.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/prune_prompt.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/qat.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/qr_url.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/quality.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/quant_menu.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/ra_dit.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/ra_dit_run.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/raft.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/reasoning_effort.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/reasoning_parser.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/recipe_dag.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/recipe_run.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/registry.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/relora.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/replay.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/repro_receipt.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/reward_hack_control.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/reward_hacking.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/ring_attention.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/rl_checkpoint.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/rl_signal_buffer.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/run_cost.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/sae_diff.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/save_formats.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/server_tools.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/sglang.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/shortcuts.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/shrink.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/signing.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/sleeper_probe.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/soup_lock.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/spec_pairing.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/spectrum_scan.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/spike_recovery.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/sse_train_stream.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/steering.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/strict_safetensors.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/structured_output.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/sweep_config.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/tail_latency.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/terraform_plan.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/tool_outputs.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/topology.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/tracing.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/trackers.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/train_event_buffer.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/trainer_plugins.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/trust_remote.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/truth_probe.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/tts.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/tts_codec.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/tunability.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/ui_env.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/uld.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/unlearn_kernels.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/unlearning.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/unlearning_eval.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/unsloth.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/v028_features.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/vector_bank.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/vllm.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/vscode_setup.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/warmup.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/webhooks.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/src/soup_cli/utils/why.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/templates/chat.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/templates/code.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/templates/medical.yaml +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/__init__.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/conftest.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/qa/v053_qa.md +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/qa/v07114_qa.md +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/qa/v0716_qa.md +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_adapters.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_advanced_peft.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_assistant_mask.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_audio.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_auto_tuning.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_autopilot.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_awq_gptq_export.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_batch_probe.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_bco.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_bench.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_brain_rot_multilingual.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_bugfixes.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_build_dag.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_callback.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_cans.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_chat.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_chat_template.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_cli.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_cli_subprocess.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_code_review_critical.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_code_review_deferred.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_code_review_high.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_code_review_medium_low.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_code_review_recurring.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_config.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_cost.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_crash_reporter.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_curriculum.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_data.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_data_augment.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_data_sample.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_data_split.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_data_tools.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_dataset_hub.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_dataset_registry.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_deepspeed.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_deploy_ollama.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_diff.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_display.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_doctor.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_dpo_example.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_dpo_variants.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_embedding.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_errors.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_eval.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_eval_gate.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_eval_platform.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_export.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_formats.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_fp8_recipe.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_freeze_training.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_generate.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_gpu.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_grpo.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_hf_integration.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_infer.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_inference_advanced.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_init.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_ipo.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_jinja_analyzer.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_kto.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_loader.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_log_level.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_loss_watchdog.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_merge.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_migrate.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_mlx_backend.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_moe.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_multi_adapter.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_multi_gpu.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_multipack_config.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_multipack_invariants.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_multipack_sampler.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_neat_packing.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_neftune_rslora.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_onnx_tensorrt_export.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_orpo.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_packing.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_part_a_wave1.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_part_a_wave2.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_part_b.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_part_c.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_part_d.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_part_e.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_part_f_hardening.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_peft_methods.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_peft_patches.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_performance.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_pissa_init.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_ppo.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_preference_dispatcher.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_preference_multi.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_preference_multi_runtime.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_pretrain.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_profile.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_profiling.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_progress.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_push.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_qat.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_quality_filter.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_quant_check.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_quant_menu.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_quickstart.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_rank_pattern.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_recipes_v031.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_refusal_multilingual.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_registry.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_relora.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_replay.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_resume.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_rlvr.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_run_cost.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_runs.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_serve.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_server_generate.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_sglang_serve.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_simpo.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_smoke_train.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_speculative_decoding.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_sweep.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_synth_data_pro.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_templates_yaml.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_tensorboard.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_tool_calling.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_trace_to_pref.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_tracker.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_trainer_coverage_v035.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_trainer_init.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_training_intelligence.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_training_speed.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_trust_remote_code.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_tui.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_ui.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_ui_chat.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_ui_config_builder.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_ui_live_monitor.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_ui_metrics.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_unsloth.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0401_part_c.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0401_part_d.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0401_part_e.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0402_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0402_part_b.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0403_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0403_part_b.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0403_part_c.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0404_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0404_part_b.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0405_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0406_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0410_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0410_part_b.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0410_part_c.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0420.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0430_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0430_part_b.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0430_part_c.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0430_part_d.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0440_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0440_part_b.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0440_part_c.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0440_part_d.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0440_review_followups.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0450.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0460_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0460_part_b.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0470_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0470_part_b.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0480_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0480_part_b.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0490.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0500_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0500_part_b.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0500_part_c.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0500_part_d.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0500_part_e.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0510.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0520.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0530.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v05310.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v05311.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0531_109.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0531_139.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0531_142.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0531_82.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0532.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0533.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0534.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0535.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0536.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0537.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0538.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0539.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0540.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0550.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0550_followups.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0560.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0570_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0570_part_b.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0570_part_c.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0570_part_d.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0580.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0590.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0600_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0600_part_b.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0600_part_c.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0600_part_d.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0600_part_e.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0600_part_f.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0610_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0610_part_b.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0610_part_c.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0610_part_d.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0610_part_e.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0620_followups.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0620_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0620_part_b.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0620_part_c.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0620_part_d.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0620_part_e.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0630_followups.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0630_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0630_part_b.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0630_part_c.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0630_part_d.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0630_part_e.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0631_206.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0640_followups.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0640_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0640_part_b.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0640_part_c.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0640_part_d.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0640_part_e.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0640_part_f.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0650_followups.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0650_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0650_part_b.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0650_part_c.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0650_part_d.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0650_part_e.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0660_cli.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0660_followups.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0660_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0660_part_b.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0660_part_c.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0660_part_d.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0660_part_e.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0670_followups.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0670_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0670_part_b.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0670_part_c.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0670_part_d.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0670_part_e.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0670_part_f.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0680_followups.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0680_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0680_part_b.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0680_part_c.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0680_part_d.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0680_part_e.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0690_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0690_part_b.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0690_part_c.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0690_part_d.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0690_part_e.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0700_part_a.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0700_part_b.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0700_part_c.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0700_part_d.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0700_part_e.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0700_part_f.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v07110.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v07111.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v07112.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v07113.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v07114.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v07115.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v07116.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v07117.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v07118.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v07119.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0712.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v07120.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v07121.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v07122.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v07123.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v07126.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v07127.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v07129.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0713.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0714.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0715.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0716.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0717.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0718.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_v0719.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_validator.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_vision.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_vllm_serve.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_warmup.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/tests/test_why.py +0 -0
- {soup_cli-0.71.29 → soup_cli-0.71.31}/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,76 @@ reproducing 70+ versions of notes.
|
|
|
12
12
|
|
|
13
13
|
## [Unreleased]
|
|
14
14
|
|
|
15
|
+
## [0.71.31] - 2026-07-06
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
- **Judge-in-the-loop suite** — put an LLM judge in the loop across the workflow:
|
|
19
|
+
- **`task='online_dpo'`** — Online DPO training (wraps TRL `OnlineDPOTrainer`):
|
|
20
|
+
the model generates two completions per prompt on-policy each step and a
|
|
21
|
+
*judge* (a pairwise LLM judge over the existing ollama/openai-compatible
|
|
22
|
+
backend) OR a `reward_model` picks the winner. Config:
|
|
23
|
+
`training.online_dpo_judge: "ollama://model"` (or set `reward_model` —
|
|
24
|
+
exactly one), `online_dpo_loss_type: sigmoid|ipo`, `online_dpo_max_new_tokens`;
|
|
25
|
+
`beta` reuses `dpo_beta`. Transformers + text only. Recipe:
|
|
26
|
+
`online-dpo-smollm2-135m`. Adapts to the installed TRL: on trl 0.19.x the
|
|
27
|
+
judge is a swap-debiased *pairwise* comparison; on trl 1.x (which removed
|
|
28
|
+
pairwise judges) the same `JudgeEvaluator` is used as a *pointwise*
|
|
29
|
+
reward function — a documented per-version behaviour difference.
|
|
30
|
+
- **`soup data best-of-n`** — Best-of-N rejection sampling (BOND-lite): sample
|
|
31
|
+
N completions from `--base` locally, a `--judge` scores each pointwise, and
|
|
32
|
+
the winner is written as an SFT chat row (with provenance). `--emit-pairs`
|
|
33
|
+
also writes winner-vs-loser DPO pairs.
|
|
34
|
+
- **`soup data evolve`** — Evol-Instruct instruction evolution (WizardLM depth
|
|
35
|
+
/ breadth) over an ollama/vllm provider, completing the synthetic-data suite
|
|
36
|
+
(Magpie / Forge / Persona / evolve).
|
|
37
|
+
- **`soup ship --task-mode pairwise`** — a true pairwise judge win-rate as the
|
|
38
|
+
ship leg-1 task-win (base = 0.5 coin-flip, tuned = its win-rate; swap-debiased),
|
|
39
|
+
fusing with the catastrophic-forgetting guard into one SHIP / DON'T-SHIP verdict.
|
|
40
|
+
|
|
41
|
+
### Security
|
|
42
|
+
- `soup data best-of-n` / `evolve` write outputs via atomic `mkstemp` + `os.replace`
|
|
43
|
+
(re-validated cwd containment), closing the TOCTOU symlink-swap window between the
|
|
44
|
+
containment check and the write. All judge/provider URLs are SSRF-validated; model
|
|
45
|
+
loads probe `trust_remote_code`.
|
|
46
|
+
|
|
47
|
+
## [0.71.30] - 2026-07-05
|
|
48
|
+
|
|
49
|
+
### Added
|
|
50
|
+
- **PRM-guided GRPO** — use a trained Process Reward Model as the *per-step*
|
|
51
|
+
reward inside GRPO (the o1-era process-supervision signal). Set
|
|
52
|
+
`training.prm_reward: <PRM dir|id>` (a model produced by `soup train`
|
|
53
|
+
`task=prm`) and `training.prm_aggregate: min|prod|last`; the PRM splits each
|
|
54
|
+
generated completion into reasoning steps, scores every step with its reward
|
|
55
|
+
head, and folds the per-step scores into one scalar reward that GRPO
|
|
56
|
+
optimises. The PRM reward *replaces* `reward_fn` and rides the existing
|
|
57
|
+
reward-shaping + reward-hack-mitigation seam, so the v0.71.26 controller
|
|
58
|
+
observes it. Cross-validators gate `task='grpo'` + `backend='transformers'` +
|
|
59
|
+
`modality='text'`. Default aggregation is `min` (weakest-link); `prod`
|
|
60
|
+
assumes calibrated `[0,1]` step scores.
|
|
61
|
+
- **Bundled rollout environments** — three pure-Python toy environments
|
|
62
|
+
(`soup_cli.envs.calculator` / `retrieval_qa` / `guess_number`) exposing a
|
|
63
|
+
`rollout(prompts)` entry point so the live `openenv` GRPO rollout path runs
|
|
64
|
+
out-of-the-box: `training.rollout_backend=openenv` +
|
|
65
|
+
`training.rollout_func=soup_cli.envs.calculator:rollout`. Three ready-made
|
|
66
|
+
recipes added (`grpo-env-calculator` / `grpo-env-retrieval-qa` /
|
|
67
|
+
`grpo-env-guess-number`); catalog 134 → 137.
|
|
68
|
+
|
|
69
|
+
### Fixed
|
|
70
|
+
- **`soup train task=prm` producer conformance** (surfaced by the v0.71.30 live
|
|
71
|
+
smoke): the PRM trainer now casts its reward head to the base-model dtype
|
|
72
|
+
(bf16 CUDA runs previously crashed on the first `compute_loss`), saves the
|
|
73
|
+
tokenizer alongside the model (so a PRM checkpoint is loadable standalone),
|
|
74
|
+
and returns the standard trainer-result shape (previously the CLI crashed with
|
|
75
|
+
a `KeyError: 'initial_loss'` right after saving).
|
|
76
|
+
|
|
77
|
+
### Notes
|
|
78
|
+
- Proof-of-mechanism only: validated on a tiny model (SmolLM2-135M) with a tiny
|
|
79
|
+
synthetic PRM and synthetic reward — not a production reward-model claim
|
|
80
|
+
(scale ask tracked in #286). The bundled environments are deterministic
|
|
81
|
+
single-shot *seeders*, not interactive multi-turn model-in-the-loop episodes
|
|
82
|
+
(the live `openenv` contract passes only prompts). Step split is a newline
|
|
83
|
+
heuristic; PRM completions are scored one forward pass each.
|
|
84
|
+
|
|
15
85
|
## [0.71.29] - 2026-07-05
|
|
16
86
|
|
|
17
87
|
### 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 (138 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
|
|
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 (308 files, 15421 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.31
|
|
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,22 +193,29 @@ infrastructure instead of improving models. Soup fixes that.
|
|
|
193
193
|
|
|
194
194
|
## What's New
|
|
195
195
|
|
|
196
|
-
**v0.71.
|
|
196
|
+
**v0.71.31 — Judge-in-the-loop suite.** Put an LLM judge in the loop across the whole workflow: train against a judge, mine winners from a base model, grow instruction diversity, and decide SHIP with a true pairwise judge win-rate.
|
|
197
|
+
|
|
198
|
+
- **`task='online_dpo'`.** Online DPO (wraps TRL `OnlineDPOTrainer`): the model generates two
|
|
199
|
+
completions per prompt on-policy each step and a *judge* (a pairwise LLM judge over your local
|
|
200
|
+
ollama / OpenAI-compatible endpoint) — or a `reward_model` — picks the winner. Set
|
|
201
|
+
`training.online_dpo_judge: "ollama://llama3.1"` (or `reward_model`, exactly one).
|
|
202
|
+
- **`soup data best-of-n`.** Best-of-N rejection sampling: sample N completions from `--base`
|
|
203
|
+
locally, a `--judge` scores each, and the winner becomes an SFT row (`--emit-pairs` also writes
|
|
204
|
+
winner-vs-loser DPO pairs).
|
|
205
|
+
- **`soup data evolve`.** WizardLM Evol-Instruct (depth / breadth) over an ollama / vllm provider —
|
|
206
|
+
completing the synthetic-data suite (Magpie / Forge / Persona / evolve).
|
|
207
|
+
- **`soup ship --task-mode pairwise` (#284).** A true swap-debiased judge win-rate as the ship
|
|
208
|
+
leg-1 task-win, fused with the catastrophic-forgetting guard into one SHIP / DON'T-SHIP verdict.
|
|
209
|
+
- **Proof-of-mechanism, honestly.** Live-validated on SmolLM2-135M: online-DPO trains with a
|
|
210
|
+
synthetic judge (`rewards/*` + `objective/kl` logged), best-of-N samples + picks, evolve loops.
|
|
211
|
+
Not a production RLHF claim (scale help wanted: #286).
|
|
197
212
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
- **A verdict, not a dashboard.** Every run ends in **SHIP** or **DON'T SHIP** on a
|
|
205
|
-
before/after perplexity ratio (`exit 0 = SHIP`, `2 = DON'T`, `1 = error`), so it drops into CI.
|
|
206
|
-
- **Runs on a laptop GPU.** Live-validated on Windows + RTX 3050 with SmolLM2-135M: drop 25 %
|
|
207
|
-
(30 → 22 layers, 21 % params) and drop-4 + CPU heal (perplexity recovered to ×1.35).
|
|
208
|
-
|
|
209
|
-
```bash
|
|
210
|
-
soup shrink --model HuggingFaceTB/SmolLM2-135M-Instruct --drop-ratio 0.25 \
|
|
211
|
-
--calib calib.jsonl --heal heal.jsonl --heal-steps 200 -o shrunk --device cpu
|
|
213
|
+
```yaml
|
|
214
|
+
task: online_dpo
|
|
215
|
+
training:
|
|
216
|
+
online_dpo_judge: "ollama://llama3.1" # a pairwise judge (or set reward_model)
|
|
217
|
+
online_dpo_loss_type: sigmoid # sigmoid | ipo
|
|
218
|
+
online_dpo_max_new_tokens: 64
|
|
212
219
|
```
|
|
213
220
|
|
|
214
221
|
Full history: [CHANGELOG.md](CHANGELOG.md) · [GitHub Releases](https://github.com/MakazhanAlpamys/Soup/releases).
|
|
@@ -49,22 +49,29 @@ 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
|
-
|
|
52
|
+
**v0.71.31 — Judge-in-the-loop suite.** Put an LLM judge in the loop across the whole workflow: train against a judge, mine winners from a base model, grow instruction diversity, and decide SHIP with a true pairwise judge win-rate.
|
|
53
|
+
|
|
54
|
+
- **`task='online_dpo'`.** Online DPO (wraps TRL `OnlineDPOTrainer`): the model generates two
|
|
55
|
+
completions per prompt on-policy each step and a *judge* (a pairwise LLM judge over your local
|
|
56
|
+
ollama / OpenAI-compatible endpoint) — or a `reward_model` — picks the winner. Set
|
|
57
|
+
`training.online_dpo_judge: "ollama://llama3.1"` (or `reward_model`, exactly one).
|
|
58
|
+
- **`soup data best-of-n`.** Best-of-N rejection sampling: sample N completions from `--base`
|
|
59
|
+
locally, a `--judge` scores each, and the winner becomes an SFT row (`--emit-pairs` also writes
|
|
60
|
+
winner-vs-loser DPO pairs).
|
|
61
|
+
- **`soup data evolve`.** WizardLM Evol-Instruct (depth / breadth) over an ollama / vllm provider —
|
|
62
|
+
completing the synthetic-data suite (Magpie / Forge / Persona / evolve).
|
|
63
|
+
- **`soup ship --task-mode pairwise` (#284).** A true swap-debiased judge win-rate as the ship
|
|
64
|
+
leg-1 task-win, fused with the catastrophic-forgetting guard into one SHIP / DON'T-SHIP verdict.
|
|
65
|
+
- **Proof-of-mechanism, honestly.** Live-validated on SmolLM2-135M: online-DPO trains with a
|
|
66
|
+
synthetic judge (`rewards/*` + `objective/kl` logged), best-of-N samples + picks, evolve loops.
|
|
67
|
+
Not a production RLHF claim (scale help wanted: #286).
|
|
64
68
|
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
|
|
69
|
+
```yaml
|
|
70
|
+
task: online_dpo
|
|
71
|
+
training:
|
|
72
|
+
online_dpo_judge: "ollama://llama3.1" # a pairwise judge (or set reward_model)
|
|
73
|
+
online_dpo_loss_type: sigmoid # sigmoid | ipo
|
|
74
|
+
online_dpo_max_new_tokens: 64
|
|
68
75
|
```
|
|
69
76
|
|
|
70
77
|
Full history: [CHANGELOG.md](CHANGELOG.md) · [GitHub Releases](https://github.com/MakazhanAlpamys/Soup/releases).
|
|
@@ -8,7 +8,7 @@ feature reference — every `soup` capability, grouped by area.
|
|
|
8
8
|
| Guide | Covers |
|
|
9
9
|
|---|---|
|
|
10
10
|
| [Training tasks & methods](training.md) | SFT, DPO/GRPO/PPO/KTO/ORPO/SimPO/IPO/BCO, tool-calling, PRM, pre-training, distillation, classification, vision/audio/TTS, unlearning, RAFT/RA-DIT, loop-hardening detectors |
|
|
11
|
-
| [PEFT, long context & efficiency](peft-and-efficiency.md) | DoRA, LoRA+, rsLoRA, VeRA, OLoRA, NEFTune, PiSSA, ReLoRA, optimizer & PEFT zoo, LLaMA Pro, GaLore, YaRN/LongLoRA, packing, curriculum, auto-tuning |
|
|
11
|
+
| [PEFT, long context & efficiency](peft-and-efficiency.md) | DoRA, LoRA+, rsLoRA, VeRA, OLoRA, NEFTune, PiSSA, ReLoRA, optimizer & PEFT zoo, LLaMA Pro, GaLore, YaRN/LongLoRA, packing, curriculum, auto-tuning, depth pruning + distill-heal (`soup shrink`) |
|
|
12
12
|
| [Performance & quantization](performance-and-quantization.md) | QAT, FP8, Quant Menu (I + II), KV-cache, NVFP4, save formats, Cut Cross-Entropy, gradient checkpointing, kernels, activation offloading, multi-GPU / DeepSpeed / FSDP |
|
|
13
13
|
| [Data engineering](data.md) | Formats, the Axolotl/LF-parity pipeline, data tools, synthetic generation & forge, quality scorecards, trace tooling, remote datasets, mixing, recipe DAGs |
|
|
14
14
|
| [Evaluation & probes](evaluation.md) | Eval design/gate, eval-gated training, benchmarks, NLG metrics, calibration, Elo arena, diagnose, `soup ship` verdict, post-train X-ray probes, A/B, drift, tunability, `soup advise` |
|
|
@@ -133,7 +133,7 @@ soup migrate --from llamafactory config.yaml Import config from LLaMA-Factory
|
|
|
133
133
|
soup migrate --from axolotl config.yml Import config from Axolotl
|
|
134
134
|
soup migrate --from unsloth notebook.ipynb Import config from Unsloth notebook
|
|
135
135
|
soup migrate --from llamafactory c.yaml --dry-run Preview without writing
|
|
136
|
-
soup recipes list List all
|
|
136
|
+
soup recipes list List all 138 ready-made recipes
|
|
137
137
|
soup recipes show llama3.1-8b-sft Print recipe YAML
|
|
138
138
|
soup recipes use llama3.1-8b-sft Copy recipe to soup.yaml
|
|
139
139
|
soup recipes search "reasoning" Search by keyword/task/size
|
|
@@ -155,6 +155,7 @@ soup why [run_id] Explain training anomalies (heuris
|
|
|
155
155
|
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
156
|
soup ship --evidence ev.json [--output v.json] Decide offline from pre-computed scores (no model load)
|
|
157
157
|
soup ship ... --task-mode judge_score --judge-model ollama://llama3.1 Leg-1 via LLM-as-a-judge
|
|
158
|
+
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
159
|
soup ship ... --general-suite mmlu,gsm8k --baseline base.json lm-eval leg-2 + recorded base scores
|
|
159
160
|
soup mcp serve MCP server over stdio (drive Soup from Claude Code / Cursor / Cline; requires [mcp] extra) (v0.71.28)
|
|
160
161
|
soup mcp serve --allow-mutating Also expose plan-only train_start / export tools (never execute) (v0.71.28)
|
|
@@ -250,6 +251,8 @@ soup local-rl train --db <path> --model <id> [--scheduler-dir <dir>] [--hour H]
|
|
|
250
251
|
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
252
|
soup expect <data.jsonl> <suite.yaml> Expectations suite: PII / token-length / refusal / judge (v0.69.0)
|
|
252
253
|
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)
|
|
254
|
+
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)
|
|
255
|
+
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
256
|
soup data persona-mix --prompts <jsonl> --n N --output <jsonl> Persona-Hub diversity sampler (v0.69.0)
|
|
254
257
|
soup data brain-rot <data.jsonl> [--strict] Brain-rot detector — arXiv 2510.13928 (v0.69.0)
|
|
255
258
|
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).
|
|
@@ -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
|
|
@@ -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
|
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
- [EBFT / GDPO Loss Variants](#ebft--gdpo-loss-variants)
|
|
16
16
|
- [GRPO Objective Variants](#grpo-objective-variants)
|
|
17
17
|
- [Process Reward Model (PRM)](#process-reward-model-prm)
|
|
18
|
+
- [PRM-guided GRPO (process-supervised RL)](#prm-guided-grpo-process-supervised-rl)
|
|
18
19
|
- [Weighted Multi-Objective Preference Loss](#weighted-multi-objective-preference-loss)
|
|
19
20
|
- [MoE Model Support](#moe-model-support)
|
|
20
21
|
- [Vision / Multimodal Fine-tuning](#vision--multimodal-fine-tuning)
|
|
@@ -343,7 +344,89 @@ training:
|
|
|
343
344
|
|
|
344
345
|
The trainer loads `AutoModelForCausalLM`, attaches an `nn.Linear(hidden, 1)`
|
|
345
346
|
reward head, and computes MSE between predicted scalars at step-boundary tokens
|
|
346
|
-
and the per-step labels.
|
|
347
|
+
and the per-step labels. The reward head is saved inside the model checkpoint
|
|
348
|
+
(`reward_head.*` in `model.safetensors`) and the tokenizer is saved alongside it,
|
|
349
|
+
so the resulting directory is loadable standalone.
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
## PRM-guided GRPO (process-supervised RL)
|
|
353
|
+
|
|
354
|
+
Use a trained PRM as the **per-step reward** inside GRPO — the o1-era
|
|
355
|
+
process-supervision signal. Set `training.prm_reward` to a PRM directory (a
|
|
356
|
+
`task=prm` checkpoint) or HF id; the PRM splits each generated completion into
|
|
357
|
+
reasoning steps (newline heuristic), scores every step with its reward head, and
|
|
358
|
+
folds the per-step scores into one scalar reward that GRPO optimises. It
|
|
359
|
+
**replaces** `reward_fn` and rides the existing reward-shaping +
|
|
360
|
+
reward-hack-mitigation seam, so the v0.71.26 controller still observes it (TRL
|
|
361
|
+
logs it as `rewards/prm_reward`).
|
|
362
|
+
|
|
363
|
+
```yaml
|
|
364
|
+
task: grpo
|
|
365
|
+
backend: transformers # required (the PRM reward runs a transformers forward)
|
|
366
|
+
modality: text # required
|
|
367
|
+
data:
|
|
368
|
+
format: chatml
|
|
369
|
+
train: ./grpo_prompts.jsonl
|
|
370
|
+
training:
|
|
371
|
+
prm_reward: ./my-prm # a `soup train task=prm` checkpoint dir (or HF id)
|
|
372
|
+
prm_aggregate: min # weakest-link (default) | prod | last
|
|
373
|
+
num_generations: 4
|
|
374
|
+
grpo_beta: 0.04
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
`prm_aggregate='min'` (weakest-link, the standard PRM aggregation) is the safe
|
|
378
|
+
default; `prod` assumes calibrated `[0,1]` step scores (Soup's PRM head is
|
|
379
|
+
trained with unconstrained MSE, so `prod` can blow up on uncalibrated labels).
|
|
380
|
+
|
|
381
|
+
**Bundled rollout environments.** Three deterministic pure-Python toy
|
|
382
|
+
environments seed the openenv rollout path out-of-the-box — pair any of them
|
|
383
|
+
with `rollout_backend=openenv`:
|
|
384
|
+
|
|
385
|
+
```yaml
|
|
386
|
+
training:
|
|
387
|
+
rollout_backend: openenv
|
|
388
|
+
rollout_func: soup_cli.envs.calculator:rollout # or retrieval_qa / guess_number
|
|
389
|
+
reward_fn: verifiable
|
|
390
|
+
verifiable_domain: math
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
Ready-made recipes: `grpo-env-calculator`, `grpo-env-retrieval-qa`,
|
|
394
|
+
`grpo-env-guess-number`. The environments are deterministic single-shot
|
|
395
|
+
prompt/answer *seeders* (the live openenv contract passes only the seed prompts,
|
|
396
|
+
not the model) — not interactive multi-turn episodes.
|
|
397
|
+
|
|
398
|
+
**Scope:** proof-of-mechanism only — validated on SmolLM2-135M with a tiny
|
|
399
|
+
synthetic PRM (the PRM reward scores good completions above bad and drives GRPO's
|
|
400
|
+
advantages). Not a production reward-model claim; scale validation is help-wanted
|
|
401
|
+
(#286).
|
|
402
|
+
|
|
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).
|
|
347
430
|
|
|
348
431
|
|
|
349
432
|
## Weighted Multi-Objective Preference Loss
|