soup-cli 0.71.39__tar.gz → 0.71.41__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.39 → soup_cli-0.71.41}/CHANGELOG.md +67 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/CONTRIBUTING.md +3 -3
- {soup_cli-0.71.39 → soup_cli-0.71.41}/PKG-INFO +42 -19
- {soup_cli-0.71.39 → soup_cli-0.71.41}/README.md +41 -18
- {soup_cli-0.71.39 → soup_cli-0.71.41}/docs/README.md +1 -1
- {soup_cli-0.71.39 → soup_cli-0.71.41}/docs/backends-and-ops.md +2 -8
- {soup_cli-0.71.39 → soup_cli-0.71.41}/docs/commands.md +8 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/docs/training.md +56 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/pyproject.toml +1 -1
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/__init__.py +1 -1
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/cli.py +12 -0
- soup_cli-0.71.41/src/soup_cli/commands/reward.py +353 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/config/schema.py +61 -4
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/envs/calculator.py +2 -1
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/envs/guess_number.py +1 -1
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/grpo.py +9 -3
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/rewards.py +41 -0
- soup_cli-0.71.41/src/soup_cli/utils/reward_stress.py +190 -0
- soup_cli-0.71.41/src/soup_cli/utils/reward_synth.py +716 -0
- soup_cli-0.71.41/tests/test_v07140.py +855 -0
- soup_cli-0.71.41/tests/test_v07141.py +423 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/.dockerignore +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/.github/FUNDING.yml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/.github/pull_request_template.md +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/.github/workflows/ci.yml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/.github/workflows/docker.yml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/.github/workflows/publish.yml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/.github/workflows/recipe-validation.yml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/.gitignore +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/.mailmap +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/.pre-commit-config.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/AGENTS.md +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/CODEOWNERS +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/CODE_OF_CONDUCT.md +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/CONTRIBUTORS.md +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/Dockerfile +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/LICENSE +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/NOTICE +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/SECURITY.md +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/docker-compose.yml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/docs/adapters-and-governance.md +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/docs/compliance.md +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/docs/data.md +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/docs/evaluation.md +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/docs/models.md +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/docs/peft-and-efficiency.md +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/docs/performance-and-quantization.md +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/docs/serving-and-export.md +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/examples/README.md +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/examples/configs/dpo_chat.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/examples/configs/dpo_example.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/examples/configs/grpo_reasoning.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/examples/configs/rlhf_step1_sft.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/examples/configs/rlhf_step2_reward.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/examples/configs/rlhf_step3_ppo.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/examples/configs/sft_basic.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/examples/configs/vision_llama.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/examples/data/alpaca_tiny.jsonl +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/examples/data/chat_preferences.jsonl +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/examples/data/dpo_sample.jsonl +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/examples/data/reasoning_math.jsonl +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/examples/reward_hacking/rewards.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/examples/synthetic_workflow.md +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/examples/synthetic_workflow.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/soup.png +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/soup_logo_svg.svg +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/__main__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/autopilot/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/autopilot/analyzer.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/autopilot/decisions.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/autopilot/generate_config.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/cans/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/cans/pack.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/cans/publish.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/cans/run.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/cans/schema.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/cans/unpack.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/cans/verify.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/cloud/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/cloud/modal.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/_eval_v0550.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/_eval_v0610.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/_eval_v0650.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/_eval_v07110.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/_webhook_cli.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/ab.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/active_sample.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/adapters.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/advise.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/agent.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/airgap.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/apple_adapter.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/attest.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/audit_log.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/autopilot.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/bench.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/bom.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/build.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/can.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/card.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/chat.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/ci.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/compile_cmd.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/compile_tools.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/completions.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/cost.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/data.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/data_canary.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/data_doctor.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/data_forge.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/data_mix.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/data_score.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/data_topics.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/delinearize_llama4.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/deploy.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/diagnose.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/diff.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/distill_prompt.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/doctor.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/draft.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/drift_alarm.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/edit.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/env.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/eval.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/expect.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/export.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/fetch.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/generate.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/history.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/infer.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/ingest.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/init.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/iterative_dpo.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/license_advisor.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/llama.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/local_rl.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/lock.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/loop.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/mcp.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/merge.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/merge_sharded_fsdp_weights.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/migrate.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/monitor.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/plan.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/plugins.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/probe.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/profile.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/prune_prompt.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/push.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/quantize.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/quickstart.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/ra_dit.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/recipes.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/registry.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/runs.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/serve.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/ship.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/shrink.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/spectrum.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/steer.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/sweep.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/tokenizer.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/train.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/tui.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/tunability.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/ui.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/commands/why.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/config/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/config/loader.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/_fixtures/alpaca_tiny.jsonl +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/_fixtures/behavior/elephant.jsonl +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/_fixtures/behavior/harmbench.jsonl +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/_fixtures/behavior/jailbreakbench.jsonl +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/_fixtures/behavior/syceval.jsonl +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/_fixtures/behavior/xstest.jsonl +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/_fixtures/chat_preferences.jsonl +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/_fixtures/dpo_sample.jsonl +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/_fixtures/gate/format_json.jsonl +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/_fixtures/gate/safety.jsonl +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/_fixtures/gate/tool_call.jsonl +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/_fixtures/reasoning_math.jsonl +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/_fixtures/unlearning/muse_demo.jsonl +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/_fixtures/unlearning/tofu_demo.jsonl +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/_fixtures/unlearning/wmdp_demo.jsonl +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/augment.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/chat_templates.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/collators.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/formats.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/loader.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/loss_mask.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/providers/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/providers/_utils.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/providers/anthropic.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/providers/ollama.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/providers/vllm.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/sft_format.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/templates/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/templates/code.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/templates/conversation.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/templates/preference.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/templates/qa.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/templates/reasoning.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/templates/tool_calling.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/templates/verifiable.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/traces/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/traces/pair_builder.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/traces/parsers.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/traces/quality.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/data/validator.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/envs/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/envs/_common.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/envs/retrieval_qa.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/eval/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/eval/arena.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/eval/benchmarks_v0_43.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/eval/calibrate.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/eval/checkpoint_intelligence.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/eval/custom.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/eval/forgetting.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/eval/gate.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/eval/gate_suites.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/eval/human.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/eval/judge.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/eval/leaderboard.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/eval/quant_check.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/experiment/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/experiment/tracker.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/mcp_server/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/mcp_server/registry.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/mcp_server/server.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/migrate/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/migrate/axolotl.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/migrate/common.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/migrate/llamafactory.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/migrate/unsloth.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/monitoring/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/monitoring/callback.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/monitoring/curriculum_callback.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/monitoring/display.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/monitoring/grpo_stability_callback.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/monitoring/hf_push.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/monitoring/plugin_callback.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/monitoring/trace_logger.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/plugins/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/py.typed +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/recipes/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/recipes/catalog.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/registry/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/registry/attach.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/registry/diff.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/registry/hashing.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/registry/store.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/audio.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/bco.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/chat.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/code.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/embedding.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/eu-ai-act.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/fetch_examples/llama-3.1-8b-lora.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/fetch_examples/qwen2.5-7b-dpo.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/fetch_examples/zero3-cpu-offload.json +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/hipaa.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/ipo.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/kto.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/longcontext.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/manifest.json +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/medical.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/moe.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/orpo.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/pretrain.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/reasoning.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/rlhf.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/simpo.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/soc2.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/sr-11-7.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/tool-calling.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/templates/vision.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/asr.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/bco.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/bitnet.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/classifier.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/distill.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/dpo.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/embedding.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/ipo.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/kto.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/mlx_dpo.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/mlx_grpo.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/mlx_routing.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/mlx_sft.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/mole_routing.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/online_dpo.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/orpo.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/ppo.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/preference.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/pretrain.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/prm.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/raft.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/reward_model.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/sft.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/simpo.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/tts.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/trainer/unlearn.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/tui_app.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/ui/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/ui/app.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/ui/plugins/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/ui/static/app.js +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/ui/static/index.html +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/ui/static/logo.png +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/ui/static/logo.svg +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/ui/static/style.css +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/_eval_text.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/ab_test.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/activation_offload.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/active_sampler.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/adapter_arithmetic.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/adapter_bisect.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/adapter_branch.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/adapter_diff.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/adapter_fuse.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/adapter_merge.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/adapter_pr.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/adapter_scan.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/adapter_sign.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/advanced_precision.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/advise.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/advise_history.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/agent_forge.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/agent_rollout.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/agent_sandbox.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/airgap_bundle.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/annex_xi.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/anthropic_messages.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/apple_adapter.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/asr_metrics.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/attest.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/audit_log.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/auto_quant.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/backend_detect.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/batch_probe.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/behavior_battery.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/best_of_n.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/bitnet.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/blame.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/block_expansion.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/bom.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/brain_rot.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/brain_rot_lang.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/build_dag.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/canary.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/canary_discovery.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/canary_router.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/capability_suite.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/checklist_dsl.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/checkpoint_trigger.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/ci_workflow.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/citation_faithful.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/classifier.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/cmaes_merge.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/compile_tools.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/completions.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/constants.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/convergence.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/crash.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/cross_doc_attn.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/curriculum.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/curriculum_dynamic.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/cut_ce.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/data_doctor.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/data_forge.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/data_lint.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/data_mix.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/data_pipeline.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/data_score.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/deepspeed.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/delinearize_llama4.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/demo_bundles.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/deploy_autopilot.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/deploy_measure.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/diagnose/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/diagnose/_common.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/diagnose/badge.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/diagnose/citation.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/diagnose/contamination.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/diagnose/forgetting.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/diagnose/format.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/diagnose/live.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/diagnose/memorization.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/diagnose/mode_collapse.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/diagnose/refusal.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/diagnose/report.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/diagnose/runner.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/distill.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/dpo_variants.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/draft.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/drift_alarm.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/ebft_gdpo.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/echo_trap.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/edit_diff.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/edit_governor.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/edit_kernels.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/embed.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/encoding.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/energy.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/env_lock.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/errors.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/eval_design.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/eval_gate_hook.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/eval_lock_coverage.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/evolve.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/expectations.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/fetch_examples.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/flash_attn.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/fp8.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/freeze.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/fsdp.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/fsdp_consolidate.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/galore.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/gguf_quant.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/gpu.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/gpu_monitor.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/grace_codebook.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/graceful_save.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/grad_accum.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/gradient_ckpt.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/grpo_long_context.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/grpo_variants.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/hardware_fit.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/harm_probe.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/hf.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/hf_space.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/hubs.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/ingest_sources.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/integrations.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/interference.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/interference_live.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/irt.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/iterative_dpo.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/jinja_analyzer.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/kernel_picker.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/knowledge_edit.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/kv_cache.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/launcher.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/license_advisor.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/license_matrix.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/liger.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/lisa.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/live_eval.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/llama_proxy.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/llama_server_timings.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/local_rl.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/local_rl_scheduler.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/loftq_init.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/log_level.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/long_context.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/longlora.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/loop_budget.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/loop_daemon.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/loop_iteration.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/loop_stages.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/loop_state.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/lr_finder.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/lr_groups.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/magpie.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/metrics.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/mii.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/minillm.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/mix_proxy.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/mixed_precision.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/mlx.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/mod.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/moe.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/moe_quant.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/mole_routing.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/multipack.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/multipack_sampler.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/multipack_trainer.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/namespace_pin.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/neat_packing.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/ngram_spec.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/nlg_metrics.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/ollama.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/onboarding.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/optimizer_zoo.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/paths.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/peft_builder.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/peft_patches.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/peft_wiring.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/persona_hub.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/pipeline.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/preference_combine.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/prm.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/prm_reward.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/probe_kernel.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/probe_pack.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/profiler.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/profiling.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/profiling_v0_43.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/prompt_compile.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/prompt_distill.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/prune_prompt.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/qat.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/qr_url.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/quality.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/quant_menu.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/ra_dit.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/ra_dit_run.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/raft.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/reasoning_effort.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/reasoning_parser.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/recipe_dag.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/recipe_run.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/registry.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/rehearsal.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/relora.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/replay.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/repro_receipt.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/reward_hack_control.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/reward_hacking.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/ring_attention.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/rl_checkpoint.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/rl_signal_buffer.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/run_cost.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/sae_diff.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/save_formats.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/semdedup.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/server_tools.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/sglang.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/ship_verdict.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/shortcuts.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/shrink.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/signing.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/sleeper_probe.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/soup_lock.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/spec_pairing.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/spectrum_scan.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/spike_recovery.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/sse_train_stream.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/steering.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/strict_safetensors.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/structured_output.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/sweep_config.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/tail_latency.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/terraform_plan.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/tool_outputs.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/topics.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/topology.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/tracing.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/trackers.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/train_event_buffer.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/trainer_plugins.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/trust_remote.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/truth_probe.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/tts.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/tts_codec.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/tunability.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/ui_env.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/uld.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/unlearn_kernels.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/unlearning.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/unlearning_eval.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/unsloth.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/v028_features.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/vector_bank.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/vllm.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/vscode_setup.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/warmup.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/webhooks.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/src/soup_cli/utils/why.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/templates/chat.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/templates/code.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/templates/medical.yaml +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/__init__.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/conftest.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/qa/v053_qa.md +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/qa/v07114_qa.md +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/qa/v0716_qa.md +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_adapters.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_advanced_peft.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_assistant_mask.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_audio.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_auto_tuning.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_autopilot.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_awq_gptq_export.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_batch_probe.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_bco.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_bench.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_brain_rot_multilingual.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_bugfixes.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_build_dag.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_callback.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_cans.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_chat.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_chat_template.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_cli.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_cli_subprocess.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_code_review_critical.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_code_review_deferred.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_code_review_high.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_code_review_medium_low.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_code_review_recurring.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_config.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_cost.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_crash_reporter.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_curriculum.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_data.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_data_augment.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_data_sample.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_data_split.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_data_tools.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_dataset_hub.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_dataset_registry.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_deepspeed.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_deploy_ollama.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_diff.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_display.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_doctor.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_dpo_example.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_dpo_variants.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_embedding.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_errors.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_eval.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_eval_gate.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_eval_platform.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_export.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_formats.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_fp8_recipe.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_freeze_training.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_generate.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_gpu.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_grpo.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_hf_integration.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_infer.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_inference_advanced.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_init.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_ipo.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_jinja_analyzer.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_kto.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_loader.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_log_level.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_loss_watchdog.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_merge.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_migrate.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_mlx_backend.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_moe.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_multi_adapter.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_multi_gpu.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_multipack_config.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_multipack_invariants.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_multipack_sampler.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_neat_packing.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_neftune_rslora.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_onnx_tensorrt_export.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_orpo.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_packing.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_part_a_wave1.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_part_a_wave2.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_part_b.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_part_c.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_part_d.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_part_e.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_part_f_hardening.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_peft_methods.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_peft_patches.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_performance.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_pissa_init.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_ppo.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_preference_dispatcher.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_preference_multi.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_preference_multi_runtime.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_pretrain.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_profile.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_profiling.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_progress.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_push.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_qat.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_quality_filter.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_quant_check.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_quant_menu.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_quickstart.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_rank_pattern.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_recipes.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_recipes_v031.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_refusal_multilingual.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_registry.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_relora.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_replay.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_resume.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_review_fixes_v07133.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_rlvr.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_run_cost.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_runs.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_serve.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_server_generate.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_sglang_serve.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_simpo.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_smoke_train.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_speculative_decoding.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_sweep.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_synth_data_pro.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_templates_yaml.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_tensorboard.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_tool_calling.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_trace_to_pref.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_tracker.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_trainer_coverage_v035.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_trainer_init.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_training_intelligence.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_training_speed.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_trust_remote_code.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_tui.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_ui.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_ui_chat.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_ui_config_builder.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_ui_live_monitor.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_ui_metrics.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_unsloth.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0401_part_c.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0401_part_d.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0401_part_e.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0402_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0402_part_b.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0403_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0403_part_b.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0403_part_c.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0404_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0404_part_b.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0405_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0406_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0410_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0410_part_b.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0410_part_c.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0420.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0430_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0430_part_b.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0430_part_c.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0430_part_d.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0440_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0440_part_b.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0440_part_c.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0440_part_d.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0440_review_followups.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0450.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0460_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0460_part_b.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0470_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0470_part_b.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0480_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0480_part_b.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0490.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0500_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0500_part_b.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0500_part_c.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0500_part_d.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0500_part_e.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0510.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0520.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0530.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v05310.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v05311.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0531_109.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0531_139.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0531_142.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0531_82.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0532.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0533.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0534.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0535.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0536.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0537.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0538.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0539.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0540.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0550.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0550_followups.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0560.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0570_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0570_part_b.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0570_part_c.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0570_part_d.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0580.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0590.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0600_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0600_part_b.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0600_part_c.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0600_part_d.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0600_part_e.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0600_part_f.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0610_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0610_part_b.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0610_part_c.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0610_part_d.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0610_part_e.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0620_followups.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0620_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0620_part_b.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0620_part_c.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0620_part_d.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0620_part_e.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0630_followups.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0630_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0630_part_b.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0630_part_c.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0630_part_d.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0630_part_e.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0631_206.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0640_followups.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0640_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0640_part_b.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0640_part_c.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0640_part_d.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0640_part_e.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0640_part_f.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0650_followups.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0650_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0650_part_b.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0650_part_c.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0650_part_d.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0650_part_e.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0660_cli.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0660_followups.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0660_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0660_part_b.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0660_part_c.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0660_part_d.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0660_part_e.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0670_followups.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0670_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0670_part_b.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0670_part_c.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0670_part_d.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0670_part_e.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0670_part_f.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0680_followups.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0680_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0680_part_b.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0680_part_c.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0680_part_d.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0680_part_e.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0690_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0690_part_b.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0690_part_c.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0690_part_d.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0690_part_e.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0700_part_a.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0700_part_b.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0700_part_c.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0700_part_d.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0700_part_e.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0700_part_f.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07110.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07111.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07112.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07113.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07114.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07115.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07116.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07117.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07118.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07119.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0712.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07120.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07121.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07122.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07123.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07124.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07125.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07126.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07127.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07128.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07129.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0713.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07130.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07131.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07132.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07133.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07134.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07135.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07136.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07137.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07138.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v07139.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0714.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0715.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0716.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0717.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0718.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_v0719.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_validator.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_vision.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_vllm_serve.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_warmup.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_why.py +0 -0
- {soup_cli-0.71.39 → soup_cli-0.71.41}/tests/test_windows_encoding.py +0 -0
|
@@ -12,6 +12,73 @@ reproducing 70+ versions of notes.
|
|
|
12
12
|
|
|
13
13
|
## [Unreleased]
|
|
14
14
|
|
|
15
|
+
## [0.71.41] - 2026-07-19
|
|
16
|
+
|
|
17
|
+
**`soup reward stress`: is your reward verifier gameable?** Turn the reward-hacking
|
|
18
|
+
detector on the *verifier itself*. `soup reward synth` (v0.71.40) proves a verifier
|
|
19
|
+
separates your references from friendly perturbations; `stress` asks the adversarial
|
|
20
|
+
question a reward-hacking model asks at train time — *does the verifier pay out for
|
|
21
|
+
degenerate junk?* It feeds empty, length-padded, repetition, and sentinel-spam
|
|
22
|
+
completions and flags any the verifier accepts. Pure, offline, exit 0 = robust /
|
|
23
|
+
2 = gameable / 1 = error. Nothing in TRL / Unsloth / Axolotl / OpenRLHF tests a
|
|
24
|
+
verifier for gameability.
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
|
|
28
|
+
- **`soup reward stress <reward.py|builtin> [--references golds.jsonl]`** — adversarial
|
|
29
|
+
verifier probe. Attacks (`--attacks empty,length,repetition,sentinel`, `--sentinel`)
|
|
30
|
+
are scored against the real gold, so numeric / tool_call / json_schema verifiers get a
|
|
31
|
+
valid target and still must reject the junk. Reports a per-attack accept-rate table +
|
|
32
|
+
an overall gameability verdict (`--max-gameable`, `--threshold`, `--output-report`).
|
|
33
|
+
Loads the target through the existing reward loader, so it probes a synthesized `.py`
|
|
34
|
+
**and** a builtin (`accuracy` / `format` / `verifiable`). A gold-requiring verifier
|
|
35
|
+
probed with no `--references` is a hard error, never a false "robust".
|
|
36
|
+
|
|
37
|
+
### Fixed
|
|
38
|
+
|
|
39
|
+
- Corrected the Telemetry section in the ops docs: Soup's telemetry primitives exist but
|
|
40
|
+
are **not wired to any command** — no data is ever sent today (the previous wording
|
|
41
|
+
implied a live opt-in sender). Wiring is deferred until a public privacy policy ships.
|
|
42
|
+
|
|
43
|
+
## [0.71.40] - 2026-07-19
|
|
44
|
+
|
|
45
|
+
**`soup reward synth`: auto-generate a deterministic reward verifier from your data.**
|
|
46
|
+
Point it at a JSONL of reference (gold) outputs and it infers a verifier, emits a
|
|
47
|
+
readable / committable `.py` reward function, and — the moat — *refuses* to emit one
|
|
48
|
+
that can't tell your references from auto-generated bad answers. Nothing in
|
|
49
|
+
TRL / Unsloth / Axolotl / OpenRLHF synthesizes a reward; every reward today is
|
|
50
|
+
hand-written, hand-picked, or a trained-weights artifact.
|
|
51
|
+
|
|
52
|
+
### Added
|
|
53
|
+
|
|
54
|
+
- **`soup reward synth <references.jsonl> -o reward.py`** — deterministic verifier
|
|
55
|
+
synthesis. Four families, auto-detected (or pick with `--kind`): `numeric`
|
|
56
|
+
(last-number / `\boxed{}` / `####` extraction, exact or `--tolerance`), `json_schema`
|
|
57
|
+
(induced keys + types + required), `regex` (positional char-classes over
|
|
58
|
+
equal-length golds), `tool_call` (per-tool `required`/`allowed` argument binding).
|
|
59
|
+
The emitted file is self-contained and rides `load_reward_fn`'s existing `.py`
|
|
60
|
+
path — no new trusted-exec surface; you read, edit, commit, and diff it.
|
|
61
|
+
- **Mandatory calibration report** — the synthesized verifier is loaded back and run
|
|
62
|
+
against its own references (must accept ≥90%) and auto-perturbed negatives (must
|
|
63
|
+
reject). A degenerate always-accept verifier is **refused** (`exit 2`), never
|
|
64
|
+
silently emitted. `--plan-only` reports the induced spec without writing;
|
|
65
|
+
`--output-report` persists the calibration JSON.
|
|
66
|
+
- **Comma-separated `reward_fn` (`"accuracy,format"`)** now trains — it resolves to a
|
|
67
|
+
reward *ensemble* (`GRPOTrainer(reward_funcs=[...])`, and unlocks the `rm_ensemble`
|
|
68
|
+
reward-hack detector which needs ≥2 rewards). GRPO-only, validated at config-parse
|
|
69
|
+
time. Fixes a recipe (`deepseek-v3-reasoning`) that shipped exactly this and
|
|
70
|
+
previously crashed with `Unknown reward function` (#311).
|
|
71
|
+
|
|
72
|
+
### Changed / Fixed
|
|
73
|
+
|
|
74
|
+
- `training.reward_fn` gains a field validator (null-byte / blank / oversize /
|
|
75
|
+
empty-comma-segment rejection) — the oldest arbitrary-code field was the least
|
|
76
|
+
guarded. Comma + `verifiable` without a `verifiable_domain` now fails at parse
|
|
77
|
+
time like the bare `verifiable` form.
|
|
78
|
+
- `envs/calculator.py` / `envs/guess_number.py` docstrings corrected: the reward is
|
|
79
|
+
`reward_fn: verifiable` + `verifiable_domain: math` (the bare `reward_fn='math'`
|
|
80
|
+
they showed was never valid).
|
|
81
|
+
|
|
15
82
|
## [0.71.39] - 2026-07-19
|
|
16
83
|
|
|
17
84
|
**"CI for weights, not prompts": close the evidence loop.** `soup ship`'s verdict is
|
|
@@ -116,11 +116,11 @@ src/soup_cli/
|
|
|
116
116
|
cans/ - Shareable .can artifact format + run/publish orchestrator (v0.26.0 + v0.33.0)
|
|
117
117
|
data/traces/ - Trace-to-Preference harvester (v0.26.0)
|
|
118
118
|
data/collators.py - CrossDocCollator for sample packing (v0.33.0)
|
|
119
|
-
utils/ - GPU, errors, MoE, GaLore, QAT, Unsloth, vLLM, SGLang, Liger, FlashAttn, FSDP, Ring Attention, long-context, quality, curriculum, freeze, dataset-registry, mlx, peft_builder, paths, topology, launcher, mii, pipeline, cut_ce, fp8, gradient_ckpt, kernel_picker, cross_doc_attn, activation_offload, hf, spec_pairing, structured_output, metrics, tracing, auto_quant, lr_finder, grad_accum, mixed_precision, warmup, spike_recovery, convergence, v028_features, multipack_sampler, multipack, neat_packing, jinja_analyzer, quant_menu, relora, peft_patches, peft_wiring, dpo_variants, optimizer_zoo, lr_groups, loftq_init, block_expansion, tts, classifier, distill, bitnet, ebft_gdpo, moe_quant, reasoning_effort, gguf_quant, kv_cache, advanced_precision, save_formats, deploy_measure, advise, advise_history, adapter_diff, adapter_merge, blame, adapter_branch, unlearning, unlearning_eval, knowledge_edit, edit_governor, edit_diff, ra_dit, steering, citation_faithful, grace_codebook, ingest_sources, prune_prompt, active_sampler, ab_test, drift_alarm, tunability, terraform_plan, env_lock, hardware_fit, completions, license_advisor, behavior_battery, capability_suite, checklist_dsl, irt, sae_diff, sleeper_probe, interference, probe_pack, cmaes_merge, vector_bank, mole_routing, adapter_pr, soup_lock, adapter_bisect, prompt_compile, prompt_distill, compile_tools, apple_adapter, local_rl, build_dag, expectations, magpie, persona_hub, brain_rot, reward_hacking, uld, minillm, rl_checkpoint, iterative_dpo, echo_trap, mod, local_rl_scheduler, spectrum_scan, ship_verdict, reward_hack_control, data_doctor, data_lint, shrink, best_of_n, evolve
|
|
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, reward_synth
|
|
120
120
|
templates/ - 21 built-in soup.yaml templates (YAML + manifest.json) with load_template loader (v0.39.0, +bco v0.40.0, +4 compliance v0.71.35)
|
|
121
121
|
ui/ - Web UI (FastAPI + HTML/JS SPA)
|
|
122
122
|
|
|
123
|
-
tests/ - Test suite (
|
|
123
|
+
tests/ - Test suite (319 files, 16529 tests)
|
|
124
124
|
examples/ - Real-world config examples and datasets
|
|
125
125
|
```
|
|
126
126
|
|
|
@@ -150,7 +150,7 @@ 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 (318 files)
|
|
154
154
|
|
|
155
155
|
> A representative sample of the suite below. Run `pytest tests/ -v` for the complete list.
|
|
156
156
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: soup-cli
|
|
3
|
-
Version: 0.71.
|
|
3
|
+
Version: 0.71.41
|
|
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,29 +193,52 @@ infrastructure instead of improving models. Soup fixes that.
|
|
|
193
193
|
|
|
194
194
|
## What's New
|
|
195
195
|
|
|
196
|
-
**v0.71.
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
-
|
|
208
|
-
|
|
196
|
+
**v0.71.41 — `soup reward stress`: is your reward verifier gameable?** Turn the reward-hacking
|
|
197
|
+
detector on the verifier *itself*. `soup reward synth` (v0.71.40) proves a verifier can tell your
|
|
198
|
+
references from friendly bad answers; `stress` asks the adversarial question a reward-hacking model
|
|
199
|
+
asks at train time — *does it pay out for degenerate junk?* Nothing in TRL / Unsloth / Axolotl tests
|
|
200
|
+
a verifier for gameability.
|
|
201
|
+
|
|
202
|
+
- **Four attacks, scored against the real gold.** Empty, length-padded, repetition, and
|
|
203
|
+
sentinel-spam completions are fed to the verifier; any it **accepts** is a false positive. A
|
|
204
|
+
per-attack accept-rate table plus one **robust / GAMEABLE** verdict — exit 0 / 2 (1 on error).
|
|
205
|
+
- **Probes a synth `.py` or a builtin.** `soup reward stress reward.py --references golds.jsonl`,
|
|
206
|
+
or `soup reward stress verifiable --verifiable-domain math --references golds.jsonl`. A
|
|
207
|
+
gold-requiring verifier probed with no `--references` is a hard error, never a false "robust".
|
|
208
|
+
- **Tune the strictness.** `--attacks`, `--sentinel`, `--threshold`, `--max-gameable`,
|
|
209
|
+
`--output-report`. Pure, offline, no new deps.
|
|
209
210
|
|
|
210
211
|
```bash
|
|
211
|
-
#
|
|
212
|
-
soup
|
|
212
|
+
# probe a verifier you synthesized (or a builtin) for gameability
|
|
213
|
+
soup reward stress reward.py --references golds.jsonl --output-report stress.json
|
|
214
|
+
# exit 0 = robust · 2 = gameable · 1 = error
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
<details>
|
|
218
|
+
<summary>Previous release — v0.71.40, soup reward synth (generate a reward verifier from your data)</summary>
|
|
213
219
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
220
|
+
Point `soup reward synth` at a JSONL of reference outputs and it infers a deterministic verifier,
|
|
221
|
+
writes a readable / committable `.py` reward function, and — the part nobody else does — *refuses* to
|
|
222
|
+
emit one that can't tell your references from bad answers (four families: `numeric` / `json_schema` /
|
|
223
|
+
`regex` / `tool_call`; a mandatory calibration report is the moat). Reward ensembles
|
|
224
|
+
(`reward_fn: "accuracy,format"`) also train now. (#311)
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
soup reward synth references.jsonl -o reward.py --output-report calib.json
|
|
217
228
|
```
|
|
218
229
|
|
|
230
|
+
</details>
|
|
231
|
+
|
|
232
|
+
<details>
|
|
233
|
+
<summary>Previous release — v0.71.39, CI for weights not prompts (emit + provenance-bind the ship verdict)</summary>
|
|
234
|
+
|
|
235
|
+
`soup ship`'s verdict became emittable, committable, and provenance-bound: `--emit-evidence` makes a
|
|
236
|
+
run replay into an identical verdict, `eval.ship` in `soup.yaml` + `--config` makes the gate policy
|
|
237
|
+
reviewable, and `--config` binds evidence to the exact recipe that produced it (stale evidence → exit 3).
|
|
238
|
+
`soup ship --push owner/repo#N` posts the SHIP / DON'T-SHIP card on the PR.
|
|
239
|
+
|
|
240
|
+
</details>
|
|
241
|
+
|
|
219
242
|
<details>
|
|
220
243
|
<summary>Previous release — v0.71.38, The gate grows teeth (real leg-2 regression gate)</summary>
|
|
221
244
|
|
|
@@ -49,29 +49,52 @@ infrastructure instead of improving models. Soup fixes that.
|
|
|
49
49
|
|
|
50
50
|
## What's New
|
|
51
51
|
|
|
52
|
-
**v0.71.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
-
|
|
64
|
-
|
|
52
|
+
**v0.71.41 — `soup reward stress`: is your reward verifier gameable?** Turn the reward-hacking
|
|
53
|
+
detector on the verifier *itself*. `soup reward synth` (v0.71.40) proves a verifier can tell your
|
|
54
|
+
references from friendly bad answers; `stress` asks the adversarial question a reward-hacking model
|
|
55
|
+
asks at train time — *does it pay out for degenerate junk?* Nothing in TRL / Unsloth / Axolotl tests
|
|
56
|
+
a verifier for gameability.
|
|
57
|
+
|
|
58
|
+
- **Four attacks, scored against the real gold.** Empty, length-padded, repetition, and
|
|
59
|
+
sentinel-spam completions are fed to the verifier; any it **accepts** is a false positive. A
|
|
60
|
+
per-attack accept-rate table plus one **robust / GAMEABLE** verdict — exit 0 / 2 (1 on error).
|
|
61
|
+
- **Probes a synth `.py` or a builtin.** `soup reward stress reward.py --references golds.jsonl`,
|
|
62
|
+
or `soup reward stress verifiable --verifiable-domain math --references golds.jsonl`. A
|
|
63
|
+
gold-requiring verifier probed with no `--references` is a hard error, never a false "robust".
|
|
64
|
+
- **Tune the strictness.** `--attacks`, `--sentinel`, `--threshold`, `--max-gameable`,
|
|
65
|
+
`--output-report`. Pure, offline, no new deps.
|
|
65
66
|
|
|
66
67
|
```bash
|
|
67
|
-
#
|
|
68
|
-
soup
|
|
68
|
+
# probe a verifier you synthesized (or a builtin) for gameability
|
|
69
|
+
soup reward stress reward.py --references golds.jsonl --output-report stress.json
|
|
70
|
+
# exit 0 = robust · 2 = gameable · 1 = error
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
<details>
|
|
74
|
+
<summary>Previous release — v0.71.40, soup reward synth (generate a reward verifier from your data)</summary>
|
|
69
75
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
76
|
+
Point `soup reward synth` at a JSONL of reference outputs and it infers a deterministic verifier,
|
|
77
|
+
writes a readable / committable `.py` reward function, and — the part nobody else does — *refuses* to
|
|
78
|
+
emit one that can't tell your references from bad answers (four families: `numeric` / `json_schema` /
|
|
79
|
+
`regex` / `tool_call`; a mandatory calibration report is the moat). Reward ensembles
|
|
80
|
+
(`reward_fn: "accuracy,format"`) also train now. (#311)
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
soup reward synth references.jsonl -o reward.py --output-report calib.json
|
|
73
84
|
```
|
|
74
85
|
|
|
86
|
+
</details>
|
|
87
|
+
|
|
88
|
+
<details>
|
|
89
|
+
<summary>Previous release — v0.71.39, CI for weights not prompts (emit + provenance-bind the ship verdict)</summary>
|
|
90
|
+
|
|
91
|
+
`soup ship`'s verdict became emittable, committable, and provenance-bound: `--emit-evidence` makes a
|
|
92
|
+
run replay into an identical verdict, `eval.ship` in `soup.yaml` + `--config` makes the gate policy
|
|
93
|
+
reviewable, and `--config` binds evidence to the exact recipe that produced it (stale evidence → exit 3).
|
|
94
|
+
`soup ship --push owner/repo#N` posts the SHIP / DON'T-SHIP card on the PR.
|
|
95
|
+
|
|
96
|
+
</details>
|
|
97
|
+
|
|
75
98
|
<details>
|
|
76
99
|
<summary>Previous release — v0.71.38, The gate grows teeth (real leg-2 regression gate)</summary>
|
|
77
100
|
|
|
@@ -7,7 +7,7 @@ feature reference — every `soup` capability, grouped by area.
|
|
|
7
7
|
|
|
8
8
|
| Guide | Covers |
|
|
9
9
|
|---|---|
|
|
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 |
|
|
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, reward-verifier synthesis |
|
|
11
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 |
|
|
@@ -743,15 +743,9 @@ pip install soup-cli[trackers] # mlflow + swanlab + trackio
|
|
|
743
743
|
```
|
|
744
744
|
|
|
745
745
|
|
|
746
|
-
## Telemetry (
|
|
746
|
+
## Telemetry (not yet wired)
|
|
747
747
|
|
|
748
|
-
Soup
|
|
749
|
-
|
|
750
|
-
```bash
|
|
751
|
-
SOUP_TELEMETRY=1 soup train --config soup.yaml
|
|
752
|
-
```
|
|
753
|
-
|
|
754
|
-
The sender uses a 1-second hard timeout, HTTPS-only with private-IP / link-local rejection (same SSRF policy as hub endpoints), and swallows every exception silently — telemetry can never crash training. Disabled by default until a public privacy policy ships.
|
|
748
|
+
Soup contains opt-in, hardware-info-only telemetry primitives in `utils/trackers.py` (`build_telemetry_payload` / `send_telemetry_payload`), but they are **not wired to any command** — no data is ever sent, and no environment variable enables sending today. When wired, the payload will carry only `soup_version` / `command` / `python` major.minor / `os` / `arch` / optional `duration_seconds` — never dataset paths, model names, or config contents — behind a 1-second hard timeout and the same HTTPS-only, private-IP-rejecting SSRF policy as hub endpoints, swallowing every exception so telemetry can never crash training. Wiring is deferred until a public privacy policy is published.
|
|
755
749
|
|
|
756
750
|
|
|
757
751
|
## Plugin System
|
|
@@ -182,6 +182,14 @@ soup draft measure ... --min-acceptance 0.6 -o report.json Exit 2 below the flo
|
|
|
182
182
|
soup draft distill --target <tuned> --draft-base <tiny> --data d.jsonl -o draft/ Distil a DENSE speculative-decoding draft + register it (v0.71.33)
|
|
183
183
|
soup draft distill ... --steps N --device cpu --force --plan-only Training budget / device / overwrite -o / render the config only
|
|
184
184
|
soup draft list List local drafts that `soup serve --auto-spec` will pick up (v0.71.33)
|
|
185
|
+
soup reward synth refs.jsonl -o reward.py Synthesize a deterministic reward verifier from gold outputs (v0.71.40)
|
|
186
|
+
soup reward synth ... --kind numeric|json_schema|regex|tool_call Force a verifier family (default: auto-detect)
|
|
187
|
+
soup reward synth ... --plan-only Report the induced spec + calibration plan; write nothing
|
|
188
|
+
soup reward synth ... --output-report r.json --min-discrimination 0.5 Save the calibration JSON / set the refusal threshold (exit 0 emit / 2 refuse / 1 error)
|
|
189
|
+
soup reward stress reward.py --references golds.jsonl Adversarially probe a verifier for gameability — empty/length/repetition/sentinel junk (v0.71.41)
|
|
190
|
+
soup reward stress verifiable --verifiable-domain math --references golds.jsonl Probe a builtin verifier instead of a .py file
|
|
191
|
+
soup reward stress ... --attacks empty,length,repetition,sentinel --sentinel GOLD --threshold 0.5 --max-gameable 0.0 Tune the attack set / accept threshold / tolerance
|
|
192
|
+
soup reward stress ... --output-report r.json Save the per-attack report JSON (exit 0 robust / 2 gameable / 1 error)
|
|
185
193
|
soup tui Full-screen Textual dashboard (requires [tui] extra)
|
|
186
194
|
soup train --config soup.yaml --profile Record torch.profiler trace to <output>/profiles/
|
|
187
195
|
soup --log-level quiet|normal|verbose|debug Global logging tier (Rich-formatted)
|
|
@@ -866,6 +866,62 @@ training:
|
|
|
866
866
|
reward_fn: ./my_reward.py
|
|
867
867
|
```
|
|
868
868
|
|
|
869
|
+
**Reward ensembles** — list several rewards, comma-separated, and they combine (GRPO only).
|
|
870
|
+
This also unlocks the `rm_ensemble` reward-hack detector, which needs ≥ 2 rewards:
|
|
871
|
+
```yaml
|
|
872
|
+
training:
|
|
873
|
+
reward_fn: "accuracy,format" # both are scored every step
|
|
874
|
+
```
|
|
875
|
+
|
|
876
|
+
### Synthesize a verifier from your data (`soup reward synth`)
|
|
877
|
+
|
|
878
|
+
Don't hand-write a verifier — generate one from reference (gold) outputs. Soup infers a
|
|
879
|
+
*deterministic* verifier (numeric / JSON-schema / regex / tool-call), writes a readable, editable
|
|
880
|
+
`.py`, and **refuses to emit** one that can't tell your references from auto-generated bad answers
|
|
881
|
+
(the mandatory calibration report). The emitted file is a normal `reward_fn: reward.py`.
|
|
882
|
+
|
|
883
|
+
```bash
|
|
884
|
+
# infer + calibrate + emit (exit 0 kept, 2 refused, 1 error)
|
|
885
|
+
soup reward synth references.jsonl -o reward.py --output-report calib.json
|
|
886
|
+
|
|
887
|
+
# preview the induced spec without writing anything
|
|
888
|
+
soup reward synth references.jsonl --plan-only
|
|
889
|
+
|
|
890
|
+
# force a family instead of auto-detecting
|
|
891
|
+
soup reward synth answers.jsonl -o reward.py --kind numeric --tolerance 1e-6
|
|
892
|
+
```
|
|
893
|
+
|
|
894
|
+
References are a JSONL where each row's gold answer is in an `answer` field (override with
|
|
895
|
+
`--field`) or the last assistant turn of a `messages` list. `--min-discrimination` sets how
|
|
896
|
+
strongly the verifier must separate references from perturbed negatives before it's emitted.
|
|
897
|
+
v1 is deterministic families only — a `\boxed{}`/`####` marker helps the numeric verifier, and
|
|
898
|
+
completions are prompted to mark their answer (standard RLVR practice).
|
|
899
|
+
|
|
900
|
+
### Stress-test a verifier for gameability (`soup reward stress`)
|
|
901
|
+
|
|
902
|
+
A verifier that passes calibration still might pay out for junk. `soup reward stress` feeds the
|
|
903
|
+
verifier deterministic degenerate completions — empty, length-padded, repeated, and
|
|
904
|
+
sentinel-spam — scored against your real gold answers, and flags any it **accepts**. It's the
|
|
905
|
+
adversarial counterpart to `synth`: calibration proves the verifier tells references from
|
|
906
|
+
*friendly* bad answers; `stress` asks whether a reward-hacking model could game it.
|
|
907
|
+
|
|
908
|
+
```bash
|
|
909
|
+
# probe a synthesized verifier (or any reward .py) — exit 0 robust, 2 gameable, 1 error
|
|
910
|
+
soup reward stress reward.py --references golds.jsonl --output-report stress.json
|
|
911
|
+
|
|
912
|
+
# probe a builtin verifier instead of a .py file
|
|
913
|
+
soup reward stress verifiable --verifiable-domain math --references golds.jsonl
|
|
914
|
+
|
|
915
|
+
# tune the attack set / accept threshold / gameability tolerance
|
|
916
|
+
soup reward stress reward.py --references golds.jsonl \
|
|
917
|
+
--attacks empty,length,repetition,sentinel --sentinel GOLD \
|
|
918
|
+
--threshold 0.5 --max-gameable 0.0
|
|
919
|
+
```
|
|
920
|
+
|
|
921
|
+
The report shows a per-attack accept-rate and an overall verdict. A gold-requiring verifier probed
|
|
922
|
+
with **no** `--references` is a hard error (it can't be measured), never a false "robust". Probing a
|
|
923
|
+
`.py` executes its module code, like any custom reward — only stress files you trust.
|
|
924
|
+
|
|
869
925
|
### Verifiable Rewards (RLVR)
|
|
870
926
|
|
|
871
927
|
Use `reward_fn: verifiable` with a `verifiable_domain` for deterministic, math-checkable rewards — no judge model, no heuristics. Great for GRPO on math, code, or structured-output tasks.
|
|
@@ -563,6 +563,18 @@ app.add_typer(
|
|
|
563
563
|
),
|
|
564
564
|
)
|
|
565
565
|
|
|
566
|
+
# v0.71.40 — `soup reward synth` auto-generate a deterministic verifier.
|
|
567
|
+
from soup_cli.commands import reward as _reward_cmd # noqa: E402
|
|
568
|
+
|
|
569
|
+
app.add_typer(
|
|
570
|
+
_reward_cmd.app,
|
|
571
|
+
name="reward",
|
|
572
|
+
help=(
|
|
573
|
+
"Synthesize a deterministic reward verifier from reference outputs, with "
|
|
574
|
+
"a calibration report that refuses degenerate verifiers (v0.71.40)."
|
|
575
|
+
),
|
|
576
|
+
)
|
|
577
|
+
|
|
566
578
|
|
|
567
579
|
def _rewrite_advise_argv(argv: list) -> list:
|
|
568
580
|
"""Inject `run` between `advise` and a non-subcommand first argument.
|