soup-cli 0.71.5__tar.gz → 0.71.7__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.7/.mailmap +8 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/CHANGELOG.md +81 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/CONTRIBUTING.md +17 -2
- soup_cli-0.71.7/CONTRIBUTORS.md +43 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/PKG-INFO +17 -17
- {soup_cli-0.71.5 → soup_cli-0.71.7}/README.md +16 -16
- {soup_cli-0.71.5 → soup_cli-0.71.7}/docs/commands.md +6 -4
- {soup_cli-0.71.5 → soup_cli-0.71.7}/docs/data.md +10 -6
- {soup_cli-0.71.5 → soup_cli-0.71.7}/docs/evaluation.md +30 -5
- {soup_cli-0.71.5 → soup_cli-0.71.7}/pyproject.toml +1 -1
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/__init__.py +1 -1
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/_eval_v0650.py +140 -7
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/advise.py +40 -6
- soup_cli-0.71.7/src/soup_cli/commands/build.py +92 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/data.py +126 -47
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/diagnose.py +101 -38
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/tunability.py +32 -1
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/providers/ollama.py +4 -1
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/providers/vllm.py +4 -1
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/advise.py +151 -20
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/behavior_battery.py +55 -1
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/build_dag.py +482 -10
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/capability_suite.py +111 -1
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/diagnose/_common.py +64 -0
- soup_cli-0.71.7/src/soup_cli/utils/diagnose/live.py +320 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/diagnose/memorization.py +57 -12
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/irt.py +199 -2
- soup_cli-0.71.7/src/soup_cli/utils/live_eval.py +464 -0
- soup_cli-0.71.7/src/soup_cli/utils/magpie.py +595 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/tunability.py +119 -1
- soup_cli-0.71.7/tests/qa/v0716_qa.md +110 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0690_part_a.py +25 -9
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0690_part_c.py +18 -8
- soup_cli-0.71.7/tests/test_v0716.py +1723 -0
- soup_cli-0.71.7/tests/test_v0717.py +868 -0
- soup_cli-0.71.5/src/soup_cli/commands/build.py +0 -67
- soup_cli-0.71.5/src/soup_cli/utils/magpie.py +0 -164
- {soup_cli-0.71.5 → soup_cli-0.71.7}/.dockerignore +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/.github/FUNDING.yml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/.github/pull_request_template.md +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/.github/workflows/ci.yml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/.github/workflows/docker.yml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/.github/workflows/publish.yml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/.github/workflows/recipe-validation.yml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/.gitignore +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/.pre-commit-config.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/AGENTS.md +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/CODEOWNERS +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/CODE_OF_CONDUCT.md +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/Dockerfile +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/LICENSE +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/NOTICE +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/SECURITY.md +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/docker-compose.yml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/docs/README.md +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/docs/adapters-and-governance.md +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/docs/backends-and-ops.md +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/docs/models.md +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/docs/peft-and-efficiency.md +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/docs/performance-and-quantization.md +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/docs/serving-and-export.md +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/docs/training.md +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/README.md +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/configs/dpo_chat.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/configs/dpo_example.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/configs/grpo_reasoning.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/configs/rlhf_step1_sft.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/configs/rlhf_step2_reward.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/configs/rlhf_step3_ppo.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/configs/sft_basic.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/configs/vision_llama.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/data/alpaca_tiny.jsonl +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/data/chat_preferences.jsonl +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/data/dpo_sample.jsonl +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/data/reasoning_math.jsonl +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/synthetic_workflow.md +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/synthetic_workflow.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/soup.png +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/soup_logo_svg.svg +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/__main__.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/autopilot/__init__.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/autopilot/analyzer.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/autopilot/decisions.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/autopilot/generate_config.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/cans/__init__.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/cans/pack.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/cans/publish.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/cans/run.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/cans/schema.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/cans/unpack.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/cans/verify.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/cli.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/__init__.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/_eval_v0550.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/_eval_v0610.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/_webhook_cli.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/ab.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/active_sample.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/adapters.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/agent.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/airgap.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/apple_adapter.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/attest.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/audit_log.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/autopilot.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/bench.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/bom.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/can.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/chat.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/compile_cmd.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/compile_tools.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/completions.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/cost.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/data_forge.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/data_mix.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/data_score.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/delinearize_llama4.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/deploy.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/diff.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/distill_prompt.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/doctor.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/drift_alarm.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/edit.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/env.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/eval.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/expect.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/export.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/fetch.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/generate.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/history.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/infer.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/ingest.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/init.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/iterative_dpo.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/license_advisor.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/llama.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/local_rl.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/lock.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/loop.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/merge.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/merge_sharded_fsdp_weights.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/migrate.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/monitor.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/plan.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/plugins.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/probe.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/profile.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/prune_prompt.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/push.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/quantize.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/quickstart.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/recipes.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/registry.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/runs.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/serve.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/steer.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/sweep.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/tokenizer.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/train.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/tui.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/ui.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/why.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/config/__init__.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/config/loader.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/config/schema.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/__init__.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/alpaca_tiny.jsonl +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/behavior/elephant.jsonl +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/behavior/harmbench.jsonl +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/behavior/jailbreakbench.jsonl +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/behavior/syceval.jsonl +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/behavior/xstest.jsonl +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/chat_preferences.jsonl +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/dpo_sample.jsonl +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/reasoning_math.jsonl +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/unlearning/muse_demo.jsonl +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/unlearning/tofu_demo.jsonl +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/unlearning/wmdp_demo.jsonl +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/augment.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/chat_templates.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/collators.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/formats.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/loader.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/loss_mask.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/providers/__init__.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/providers/_utils.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/providers/anthropic.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/sft_format.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/templates/__init__.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/templates/code.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/templates/conversation.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/templates/preference.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/templates/qa.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/templates/reasoning.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/templates/tool_calling.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/templates/verifiable.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/traces/__init__.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/traces/pair_builder.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/traces/parsers.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/traces/quality.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/validator.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/__init__.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/arena.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/benchmarks_v0_43.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/calibrate.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/checkpoint_intelligence.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/custom.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/forgetting.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/gate.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/human.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/judge.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/leaderboard.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/quant_check.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/experiment/__init__.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/experiment/tracker.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/migrate/__init__.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/migrate/axolotl.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/migrate/common.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/migrate/llamafactory.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/migrate/unsloth.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/monitoring/__init__.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/monitoring/callback.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/monitoring/curriculum_callback.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/monitoring/display.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/monitoring/grpo_stability_callback.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/monitoring/hf_push.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/monitoring/plugin_callback.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/monitoring/trace_logger.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/plugins/__init__.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/py.typed +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/recipes/__init__.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/recipes/catalog.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/registry/__init__.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/registry/attach.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/registry/diff.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/registry/hashing.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/registry/store.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/__init__.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/audio.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/bco.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/chat.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/code.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/embedding.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/fetch_examples/llama-3.1-8b-lora.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/fetch_examples/qwen2.5-7b-dpo.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/fetch_examples/zero3-cpu-offload.json +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/ipo.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/kto.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/longcontext.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/manifest.json +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/medical.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/moe.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/orpo.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/pretrain.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/reasoning.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/rlhf.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/simpo.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/tool-calling.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/vision.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/__init__.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/bco.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/classifier.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/distill.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/dpo.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/embedding.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/grpo.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/ipo.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/kto.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/mlx_dpo.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/mlx_grpo.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/mlx_routing.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/mlx_sft.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/orpo.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/ppo.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/preference.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/pretrain.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/prm.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/reward_model.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/rewards.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/sft.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/simpo.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/unlearn.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/tui_app.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/ui/__init__.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/ui/app.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/ui/plugins/__init__.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/ui/static/app.js +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/ui/static/index.html +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/ui/static/logo.png +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/ui/static/logo.svg +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/ui/static/style.css +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/__init__.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/_eval_text.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/ab_test.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/activation_offload.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/active_sampler.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/adapter_bisect.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/adapter_branch.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/adapter_diff.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/adapter_merge.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/adapter_pr.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/adapter_scan.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/adapter_sign.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/advanced_precision.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/advise_history.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/agent_forge.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/agent_rollout.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/airgap_bundle.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/annex_xi.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/anthropic_messages.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/apple_adapter.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/attest.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/audit_log.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/auto_quant.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/backend_detect.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/batch_probe.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/bitnet.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/blame.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/block_expansion.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/bom.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/brain_rot.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/brain_rot_lang.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/canary_discovery.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/canary_router.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/checklist_dsl.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/checkpoint_trigger.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/citation_faithful.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/classifier.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/cmaes_merge.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/compile_tools.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/completions.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/constants.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/convergence.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/crash.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/cross_doc_attn.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/curriculum.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/curriculum_dynamic.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/cut_ce.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/data_forge.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/data_mix.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/data_pipeline.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/data_score.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/deepspeed.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/delinearize_llama4.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/demo_bundles.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/deploy_autopilot.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/deploy_measure.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/diagnose/__init__.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/diagnose/badge.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/diagnose/contamination.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/diagnose/forgetting.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/diagnose/format.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/diagnose/mode_collapse.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/diagnose/refusal.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/diagnose/report.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/diagnose/runner.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/distill.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/dpo_variants.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/drift_alarm.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/ebft_gdpo.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/echo_trap.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/edit_diff.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/edit_governor.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/encoding.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/energy.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/env_lock.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/errors.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/eval_design.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/eval_gate_hook.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/eval_lock_coverage.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/expectations.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/fetch_examples.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/flash_attn.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/fp8.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/freeze.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/fsdp.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/fsdp_consolidate.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/galore.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/gguf_quant.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/gpu.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/gpu_monitor.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/grace_codebook.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/graceful_save.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/grad_accum.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/gradient_ckpt.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/grpo_long_context.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/grpo_variants.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/hardware_fit.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/hf.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/hf_space.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/hubs.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/ingest_sources.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/integrations.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/interference.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/iterative_dpo.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/jinja_analyzer.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/kernel_picker.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/knowledge_edit.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/kv_cache.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/launcher.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/license_advisor.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/license_matrix.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/liger.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/llama_proxy.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/llama_server_timings.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/local_rl.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/loftq_init.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/log_level.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/long_context.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/longlora.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/loop_budget.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/loop_daemon.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/loop_iteration.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/loop_stages.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/loop_state.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/lr_finder.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/lr_groups.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/metrics.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/mii.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/minillm.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/mix_proxy.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/mixed_precision.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/mlx.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/moe.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/moe_quant.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/mole_routing.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/multipack.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/multipack_sampler.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/multipack_trainer.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/namespace_pin.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/neat_packing.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/ngram_spec.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/nlg_metrics.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/ollama.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/onboarding.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/optimizer_zoo.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/paths.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/peft_builder.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/peft_patches.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/peft_wiring.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/persona_hub.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/pipeline.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/preference_combine.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/prm.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/probe_pack.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/profiler.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/profiling.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/profiling_v0_43.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/prompt_compile.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/prompt_distill.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/prune_prompt.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/qat.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/qr_url.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/quality.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/quant_menu.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/ra_dit.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/reasoning_effort.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/reasoning_parser.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/recipe_dag.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/recipe_run.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/registry.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/relora.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/replay.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/repro_receipt.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/reward_hacking.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/ring_attention.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/rl_checkpoint.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/run_cost.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/sae_diff.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/save_formats.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/server_tools.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/sglang.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/shortcuts.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/signing.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/sleeper_probe.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/soup_lock.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/spec_pairing.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/spike_recovery.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/sse_train_stream.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/steering.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/strict_safetensors.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/structured_output.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/sweep_config.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/tail_latency.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/terraform_plan.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/tool_outputs.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/topology.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/tracing.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/trackers.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/train_event_buffer.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/trainer_plugins.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/trust_remote.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/tts.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/ui_env.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/uld.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/unlearning.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/unlearning_eval.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/unsloth.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/v028_features.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/vector_bank.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/vllm.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/vscode_setup.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/warmup.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/webhooks.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/why.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/templates/chat.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/templates/code.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/templates/medical.yaml +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/__init__.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/conftest.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/qa/v053_qa.md +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_adapters.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_advanced_peft.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_assistant_mask.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_audio.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_auto_tuning.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_autopilot.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_awq_gptq_export.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_batch_probe.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_bco.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_bench.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_brain_rot_multilingual.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_bugfixes.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_callback.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_cans.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_chat.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_chat_template.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_cli.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_cli_subprocess.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_config.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_cost.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_crash_reporter.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_curriculum.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_data.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_data_augment.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_data_sample.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_data_split.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_data_tools.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_dataset_hub.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_dataset_registry.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_deepspeed.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_deploy_ollama.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_diff.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_display.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_doctor.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_dpo_example.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_dpo_variants.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_embedding.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_errors.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_eval.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_eval_gate.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_eval_platform.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_export.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_formats.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_fp8_recipe.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_freeze_training.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_generate.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_gpu.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_grpo.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_hf_integration.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_infer.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_inference_advanced.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_init.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_ipo.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_jinja_analyzer.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_kto.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_loader.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_log_level.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_loss_watchdog.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_merge.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_migrate.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_mlx_backend.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_moe.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_multi_adapter.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_multi_gpu.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_multipack_config.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_multipack_invariants.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_multipack_sampler.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_neat_packing.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_neftune_rslora.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_onnx_tensorrt_export.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_orpo.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_packing.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_part_a_wave1.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_part_a_wave2.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_part_b.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_part_c.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_part_d.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_part_e.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_part_f_hardening.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_peft_methods.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_peft_patches.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_performance.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_pissa_init.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_ppo.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_preference_dispatcher.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_preference_multi.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_preference_multi_runtime.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_pretrain.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_profile.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_profiling.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_progress.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_push.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_qat.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_quality_filter.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_quant_check.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_quant_menu.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_quickstart.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_rank_pattern.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_recipes.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_recipes_v031.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_refusal_multilingual.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_registry.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_relora.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_replay.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_resume.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_rlvr.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_run_cost.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_runs.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_serve.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_server_generate.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_sglang_serve.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_simpo.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_smoke_train.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_speculative_decoding.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_sweep.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_synth_data_pro.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_templates_yaml.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_tensorboard.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_tool_calling.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_trace_to_pref.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_tracker.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_trainer_coverage_v035.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_trainer_init.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_training_intelligence.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_training_speed.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_trust_remote_code.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_tui.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_ui.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_ui_chat.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_ui_config_builder.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_ui_live_monitor.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_ui_metrics.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_unsloth.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0401_part_c.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0401_part_d.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0401_part_e.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0402_part_a.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0402_part_b.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0403_part_a.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0403_part_b.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0403_part_c.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0404_part_a.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0404_part_b.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0405_part_a.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0406_part_a.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0410_part_a.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0410_part_b.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0410_part_c.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0420.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0430_part_a.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0430_part_b.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0430_part_c.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0430_part_d.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0440_part_a.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0440_part_b.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0440_part_c.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0440_part_d.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0440_review_followups.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0450.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0460_part_a.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0460_part_b.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0470_part_a.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0470_part_b.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0480_part_a.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0480_part_b.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0490.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0500_part_a.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0500_part_b.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0500_part_c.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0500_part_d.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0500_part_e.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0510.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0520.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0530.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v05310.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v05311.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0531_109.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0531_139.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0531_142.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0531_82.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0532.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0533.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0534.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0535.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0536.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0537.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0538.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0539.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0540.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0550.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0550_followups.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0560.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0570_part_a.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0570_part_b.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0570_part_c.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0570_part_d.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0580.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0590.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0600_part_a.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0600_part_b.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0600_part_c.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0600_part_d.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0600_part_e.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0600_part_f.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0610_part_a.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0610_part_b.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0610_part_c.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0610_part_d.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0610_part_e.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0620_followups.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0620_part_a.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0620_part_b.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0620_part_c.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0620_part_d.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0620_part_e.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0630_followups.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0630_part_a.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0630_part_b.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0630_part_c.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0630_part_d.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0630_part_e.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0631_206.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0640_followups.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0640_part_a.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0640_part_b.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0640_part_c.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0640_part_d.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0640_part_e.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0640_part_f.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0650_followups.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0650_part_a.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0650_part_b.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0650_part_c.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0650_part_d.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0650_part_e.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0660_cli.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0660_followups.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0660_part_a.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0660_part_b.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0660_part_c.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0660_part_d.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0660_part_e.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0670_followups.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0670_part_a.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0670_part_b.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0670_part_c.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0670_part_d.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0670_part_e.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0670_part_f.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0680_followups.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0680_part_a.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0680_part_b.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0680_part_c.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0680_part_d.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0680_part_e.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0690_part_b.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0690_part_d.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0690_part_e.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0700_part_a.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0700_part_b.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0700_part_c.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0700_part_d.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0700_part_e.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0700_part_f.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0712.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0713.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0714.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0715.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_validator.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_vision.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_vllm_serve.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_why.py +0 -0
- {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_windows_encoding.py +0 -0
soup_cli-0.71.7/.mailmap
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# .mailmap — consolidate contributor identities for `git shortlog` and the
|
|
2
|
+
# GitHub contributors graph. See: https://git-scm.com/docs/gitmailmap
|
|
3
|
+
#
|
|
4
|
+
# Salil Mhatre committed under four name/email combinations
|
|
5
|
+
# (two emails, three display names). Map them all to one canonical identity.
|
|
6
|
+
Salil Mhatre <32305505+Deadpool2000@users.noreply.github.com> <d2kyt@protonmail.com>
|
|
7
|
+
Salil Mhatre <32305505+Deadpool2000@users.noreply.github.com> Salil <32305505+Deadpool2000@users.noreply.github.com>
|
|
8
|
+
Salil Mhatre <32305505+Deadpool2000@users.noreply.github.com> Salil M <32305505+Deadpool2000@users.noreply.github.com>
|
|
@@ -12,6 +12,87 @@ reproducing 70+ versions of notes.
|
|
|
12
12
|
|
|
13
13
|
## [Unreleased]
|
|
14
14
|
|
|
15
|
+
## [0.71.7] - 2026-06-02
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
- **Eval live runners** — six probe surfaces that previously emitted heuristic
|
|
19
|
+
/ neutral stubs now load a real model and run live (closes #161, #162, #208,
|
|
20
|
+
#211, #212, #165). New shared `soup_cli/utils/live_eval.py` provides the
|
|
21
|
+
model-loading primitives (generator / multi-generator closures, masked
|
|
22
|
+
cross-entropy eval-loss, a short-LoRA probe, and held-out logit agreement);
|
|
23
|
+
every heavy import (`torch` / `transformers` / `peft` / `lm_eval`) is lazy.
|
|
24
|
+
- **`soup advise --probe-model <id>`** — runs a LIVE ROI probe: zero/few-shot
|
|
25
|
+
token-F1 baselines, a short LoRA probe (relative held-out-loss improvement +
|
|
26
|
+
real wall-clock), and base-model proximity (held-out logit agreement) folded
|
|
27
|
+
into the dataset profile. Without `--probe-model`, `--probe` stays the offline
|
|
28
|
+
heuristic.
|
|
29
|
+
- **`soup tunability --live`** — replaces the offline heuristic with a real
|
|
30
|
+
per-candidate LoRA probe (loads each `repo_id`, trains `--probe-steps` on a
|
|
31
|
+
held-out-excluded slice, reports the held-out-loss drop).
|
|
32
|
+
- **`soup eval capability --live --model <id>`** — invokes lm-eval-harness per
|
|
33
|
+
resolved task (or a `--tasks` override) with `--limit` / `--device`, isolating
|
|
34
|
+
per-task failures and surfacing a no-metric result as an explicit error.
|
|
35
|
+
- **`soup eval behavior --base-model <id> [--adapter <path>]`** — generates
|
|
36
|
+
pre/post responses on the bundled behaviour battery and scores the live diff.
|
|
37
|
+
- **`soup diagnose --base-model <id> [--adapter <path>] [--dataset <jsonl>]
|
|
38
|
+
[--tokenizer <id>]`** — runs all six failure-mode probes (forgetting / refusal
|
|
39
|
+
/ format / mode_collapse / memorization / contamination) live via
|
|
40
|
+
`soup_cli.utils.diagnose.live.run_live_diagnose`; falls back to neutral OK or
|
|
41
|
+
`--evidence` JSON when no model is supplied.
|
|
42
|
+
|
|
43
|
+
### Security
|
|
44
|
+
- The two new JSONL dataset readers (`diagnose.live._load_dataset_rows`,
|
|
45
|
+
`tunability._load_jsonl_rows`) open with `O_NOFOLLOW` after the cwd-containment
|
|
46
|
+
check, closing the check→open TOCTOU window (matches the v0.65 / v0.67 reader
|
|
47
|
+
policy).
|
|
48
|
+
|
|
49
|
+
## [0.71.6] - 2026-06-02
|
|
50
|
+
|
|
51
|
+
### Added
|
|
52
|
+
- **`soup build` live runner** — the dbt-for-SFT DAG (`soup build <manifest>`) now
|
|
53
|
+
*materialises* datasets instead of only dry-running the plan. Five built-in
|
|
54
|
+
transforms ship live (`identity`, `drop_empty`, `lowercase`, `strip`,
|
|
55
|
+
`dedup_exact`); `table` rebuilds from scratch, `view` re-derives on every run,
|
|
56
|
+
and `incremental` re-transforms only the rows whose content hash changed
|
|
57
|
+
(tracked in a SQLite state store, keyed by row hash **and** the model's
|
|
58
|
+
transform+config fingerprint so a transform change re-runs everything). Custom
|
|
59
|
+
transforms are passed per-run via the Python API's `transforms=` map. Outputs
|
|
60
|
+
are written atomically; the `--output-dir` is symlink-checked before any
|
|
61
|
+
directory is created.
|
|
62
|
+
- **`soup data gen-magpie` live generator** — the Magpie synthetic generator
|
|
63
|
+
(Xu et al. 2024) now actually generates. It feeds an aligned model its
|
|
64
|
+
chat-template prefix (chatml / llama3 / gemma / mistral families auto-detected)
|
|
65
|
+
and harvests the self-generated user instruction + assistant response via raw
|
|
66
|
+
completion. Live providers: `ollama` (`/api/generate` raw) and `vllm`
|
|
67
|
+
(`/v1/completions`) — both SSRF-hardened (loopback-only HTTP); `anthropic` is
|
|
68
|
+
rejected (no raw-completion endpoint). Optional `--quality-filter` drops
|
|
69
|
+
low-quality rows via the v0.47 toxicity/educational scorers; exact-duplicate
|
|
70
|
+
instructions are de-duplicated.
|
|
71
|
+
- **`soup eval irt-subset --model {1pl,2pl,3pl}`** — the IRT eval-cost optimiser
|
|
72
|
+
gained 2PL (per-item discrimination) and 3PL (+guessing floor) joint
|
|
73
|
+
coordinate-ascent MLE fits alongside the existing 1PL Rasch. `1pl` keeps the
|
|
74
|
+
closed-form path for back-compat; `2pl`/`3pl` route through the new `fit_irt`.
|
|
75
|
+
- **Tokenizer-aware memorization probe** — `score_memorization(..., tokenizer=...)`
|
|
76
|
+
and `split_prefix(..., tokenizer=...)` (used by `soup diagnose`) now split the
|
|
77
|
+
prefix/suffix on real token-id boundaries and measure echo-overlap over
|
|
78
|
+
sub-word tokens when a tokenizer (HF id / path / duck-typed object) is supplied,
|
|
79
|
+
catching BPE-level memorization that whitespace tokenisation misses. Default
|
|
80
|
+
(no tokenizer) keeps the whitespace behaviour.
|
|
81
|
+
|
|
82
|
+
### Fixed
|
|
83
|
+
- **`soup data augment --provider ollama|vllm` no longer crashes** — the command
|
|
84
|
+
imported a non-existent `OllamaProvider` symbol and raised `ImportError` on
|
|
85
|
+
every non-OpenAI provider. It now routes through the shared, SSRF-hardened
|
|
86
|
+
provider factory; `--model` / `--base-url` are honoured, the output path is
|
|
87
|
+
containment- and symlink-checked, and the write is atomic.
|
|
88
|
+
|
|
89
|
+
### Security
|
|
90
|
+
- **Ollama / vLLM provider URLs reject `0.0.0.0`** — `validate_ollama_url` /
|
|
91
|
+
`validate_vllm_url` dropped the bind-any wildcard from their loopback allow-set
|
|
92
|
+
(now `localhost` / `127.0.0.1` / `::1` only), matching the newer
|
|
93
|
+
`validate_hub_endpoint` / `validate_webhook_url` SSRF validators. Reachable now
|
|
94
|
+
that Magpie threads a user-supplied `--base-url` through these providers.
|
|
95
|
+
|
|
15
96
|
## [0.71.5] - 2026-06-02
|
|
16
97
|
|
|
17
98
|
### Added
|
|
@@ -120,7 +120,7 @@ src/soup_cli/
|
|
|
120
120
|
templates/ - 17 built-in soup.yaml templates (YAML + manifest.json) with load_template loader (v0.39.0, +bco v0.40.0)
|
|
121
121
|
ui/ - Web UI (FastAPI + HTML/JS SPA)
|
|
122
122
|
|
|
123
|
-
tests/ - Test suite (
|
|
123
|
+
tests/ - Test suite (277 files, 12771 tests)
|
|
124
124
|
examples/ - Real-world config examples and datasets
|
|
125
125
|
```
|
|
126
126
|
|
|
@@ -150,7 +150,11 @@ 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 (275 files)
|
|
154
|
+
|
|
155
|
+
> A representative sample of the suite below. The full table lives in
|
|
156
|
+
> [`.claude/CLAUDE.md`](.claude/CLAUDE.md); run `pytest tests/ -v` for the complete list.
|
|
157
|
+
|
|
154
158
|
|
|
155
159
|
| File | Covers |
|
|
156
160
|
|------|--------|
|
|
@@ -441,6 +445,17 @@ The project follows semantic versioning: `MAJOR.MINOR.PATCH`
|
|
|
441
445
|
5. Tag: `git tag v0.X.0 && git push --tags`
|
|
442
446
|
6. GitHub Actions auto-publishes to PyPI on the `v*` tag (Trusted Publisher / OIDC)
|
|
443
447
|
|
|
448
|
+
## Recognition
|
|
449
|
+
|
|
450
|
+
We credit every contributor — recognition is free and you earned it.
|
|
451
|
+
|
|
452
|
+
- **[CONTRIBUTORS.md](CONTRIBUTORS.md):** every merged (or in-tree-adopted) PR adds you here, with your work and PR number.
|
|
453
|
+
- **CHANGELOG.md:** from the release that ships your change, the entry is tagged `(#NNN by @you)`.
|
|
454
|
+
- **Commit trailers:** PRs land with a `Co-Authored-By:` line for you, so the GitHub
|
|
455
|
+
contributors graph reflects your work even after a squash merge.
|
|
456
|
+
|
|
457
|
+
If you contributed and aren't credited somewhere, that's a bug — open a PR or an issue and we'll fix it.
|
|
458
|
+
|
|
444
459
|
## Community
|
|
445
460
|
|
|
446
461
|
- **Issues:** Report bugs and request features on [GitHub Issues](https://github.com/MakazhanAlpamys/Soup/issues)
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Contributors
|
|
2
|
+
|
|
3
|
+
Soup is built by its community. Thank you to everyone who has contributed code,
|
|
4
|
+
tests, docs, and ideas. ❤️
|
|
5
|
+
|
|
6
|
+
This list is maintained by hand alongside the GitHub
|
|
7
|
+
[contributors graph](https://github.com/MakazhanAlpamys/Soup/graphs/contributors).
|
|
8
|
+
Merged a PR and don't see yourself here? Open a PR adding your line — that counts too.
|
|
9
|
+
|
|
10
|
+
## Maintainer
|
|
11
|
+
|
|
12
|
+
- **Alpamys** ([@MakazhanAlpamys](https://github.com/MakazhanAlpamys)) — creator & lead maintainer
|
|
13
|
+
|
|
14
|
+
## Contributors
|
|
15
|
+
|
|
16
|
+
Listed by first contribution. PR numbers link the work.
|
|
17
|
+
|
|
18
|
+
- **Salil Mhatre** ([@Deadpool2000](https://github.com/Deadpool2000))
|
|
19
|
+
- `soup version --json` for machine-readable CI output ([#6](https://github.com/MakazhanAlpamys/Soup/pull/6))
|
|
20
|
+
- RAM + disk-space checks in `soup doctor` ([#7](https://github.com/MakazhanAlpamys/Soup/pull/7))
|
|
21
|
+
- `soup runs clean` for smart checkpoint space management ([#9](https://github.com/MakazhanAlpamys/Soup/pull/9))
|
|
22
|
+
- Official Docker support for easier onboarding ([#20](https://github.com/MakazhanAlpamys/Soup/pull/20))
|
|
23
|
+
- `soup bench` — model speed + VRAM measurement ([#25](https://github.com/MakazhanAlpamys/Soup/pull/25))
|
|
24
|
+
- `--prompts-file` option for `soup bench` ([#30](https://github.com/MakazhanAlpamys/Soup/pull/30))
|
|
25
|
+
- Happy-path + CPU-warning tests for `soup bench` ([#31](https://github.com/MakazhanAlpamys/Soup/pull/31))
|
|
26
|
+
- `soup cost` — cloud GPU training cost estimation ([#42](https://github.com/MakazhanAlpamys/Soup/pull/42))
|
|
27
|
+
- `--nccl` flag for `soup doctor` multi-GPU bandwidth checks ([#178](https://github.com/MakazhanAlpamys/Soup/pull/178))
|
|
28
|
+
- **Chinmaya Sahu** ([@csking101](https://github.com/csking101))
|
|
29
|
+
- DPO example config, sample data, and tests ([#48](https://github.com/MakazhanAlpamys/Soup/pull/48))
|
|
30
|
+
- FP8 `rowwise` + `rowwise_with_gw_hp` scaling recipes ([#62](https://github.com/MakazhanAlpamys/Soup/pull/62))
|
|
31
|
+
- **Yixuan Xu** ([@mzl2233](https://github.com/mzl2233))
|
|
32
|
+
- Guard diagnose-gate on distributed worker ranks ([#169](https://github.com/MakazhanAlpamys/Soup/pull/169))
|
|
33
|
+
- **dreamer0129** ([@dreamer0129](https://github.com/dreamer0129))
|
|
34
|
+
- Rich-markup escape fix in legacy `soup adapters` commands ([#175](https://github.com/MakazhanAlpamys/Soup/pull/175), adopted in-tree as [#174](https://github.com/MakazhanAlpamys/Soup/issues/174))
|
|
35
|
+
- **Vivaan Dhawan** ([@VIVAAN-DHAWAN](https://github.com/VIVAAN-DHAWAN))
|
|
36
|
+
- Reject pickle/zip streams renamed to `.safetensors` via magic-byte check ([#198](https://github.com/MakazhanAlpamys/Soup/pull/198))
|
|
37
|
+
- **Shivam** ([@shivam2931120](https://github.com/shivam2931120))
|
|
38
|
+
- Tokenizer-aware repetition scoring for the echo-trap detector ([#242](https://github.com/MakazhanAlpamys/Soup/pull/242))
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
Want to join this list? See [CONTRIBUTING.md](CONTRIBUTING.md) — good first issues are
|
|
43
|
+
labelled in the [issue tracker](https://github.com/MakazhanAlpamys/Soup/labels/good%20first%20issue).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: soup-cli
|
|
3
|
-
Version: 0.71.
|
|
3
|
+
Version: 0.71.7
|
|
4
4
|
Summary: Fine-tune 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
|
|
@@ -183,22 +183,22 @@ infrastructure instead of improving models. Soup fixes that.
|
|
|
183
183
|
|
|
184
184
|
## What's New
|
|
185
185
|
|
|
186
|
-
**v0.71.
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
186
|
+
**v0.71.7 — Eval live runners.** Six probe surfaces that used to emit heuristic / neutral stubs
|
|
187
|
+
now load a real model and run live (opt-in flags; the offline paths stay the default):
|
|
188
|
+
|
|
189
|
+
- **`soup diagnose --base-model <id> [--adapter <path>] [--dataset d.jsonl]`** — runs all six
|
|
190
|
+
failure-mode probes (forgetting / refusal / format / mode_collapse / memorization /
|
|
191
|
+
contamination) against the loaded model instead of emitting neutral OK.
|
|
192
|
+
- **`soup advise --probe-model <id>`** — a live ROI probe: zero/few-shot token-F1 baselines, a
|
|
193
|
+
short LoRA probe (real held-out-loss drop + wall-clock), and base-model proximity.
|
|
194
|
+
- **`soup tunability --live`** — a real per-candidate LoRA probe (loads each base, trains
|
|
195
|
+
`--probe-steps` on a held-out slice).
|
|
196
|
+
- **`soup eval capability --live --model <id>`** — invokes lm-eval-harness per task (with
|
|
197
|
+
`--tasks` / `--limit` / `--device`), isolating per-task failures.
|
|
198
|
+
- **`soup eval behavior --base-model <id> [--adapter <path>]`** — generates pre/post responses on
|
|
199
|
+
the bundled behaviour battery and scores the live diff.
|
|
200
|
+
- New shared `soup_cli/utils/live_eval.py` holds the model-loading primitives; heavy imports stay
|
|
201
|
+
lazy. Validated end-to-end on SmolLM2-135M (RTX 3050 4 GB).
|
|
202
202
|
|
|
203
203
|
Full history: [CHANGELOG.md](CHANGELOG.md) · [GitHub Releases](https://github.com/MakazhanAlpamys/Soup/releases).
|
|
204
204
|
|
|
@@ -49,22 +49,22 @@ infrastructure instead of improving models. Soup fixes that.
|
|
|
49
49
|
|
|
50
50
|
## What's New
|
|
51
51
|
|
|
52
|
-
**v0.71.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
52
|
+
**v0.71.7 — Eval live runners.** Six probe surfaces that used to emit heuristic / neutral stubs
|
|
53
|
+
now load a real model and run live (opt-in flags; the offline paths stay the default):
|
|
54
|
+
|
|
55
|
+
- **`soup diagnose --base-model <id> [--adapter <path>] [--dataset d.jsonl]`** — runs all six
|
|
56
|
+
failure-mode probes (forgetting / refusal / format / mode_collapse / memorization /
|
|
57
|
+
contamination) against the loaded model instead of emitting neutral OK.
|
|
58
|
+
- **`soup advise --probe-model <id>`** — a live ROI probe: zero/few-shot token-F1 baselines, a
|
|
59
|
+
short LoRA probe (real held-out-loss drop + wall-clock), and base-model proximity.
|
|
60
|
+
- **`soup tunability --live`** — a real per-candidate LoRA probe (loads each base, trains
|
|
61
|
+
`--probe-steps` on a held-out slice).
|
|
62
|
+
- **`soup eval capability --live --model <id>`** — invokes lm-eval-harness per task (with
|
|
63
|
+
`--tasks` / `--limit` / `--device`), isolating per-task failures.
|
|
64
|
+
- **`soup eval behavior --base-model <id> [--adapter <path>]`** — generates pre/post responses on
|
|
65
|
+
the bundled behaviour battery and scores the live diff.
|
|
66
|
+
- New shared `soup_cli/utils/live_eval.py` holds the model-loading primitives; heavy imports stay
|
|
67
|
+
lazy. Validated end-to-end on SmolLM2-135M (RTX 3050 4 GB).
|
|
68
68
|
|
|
69
69
|
Full history: [CHANGELOG.md](CHANGELOG.md) · [GitHub Releases](https://github.com/MakazhanAlpamys/Soup/releases).
|
|
70
70
|
|
|
@@ -72,7 +72,8 @@ soup data generate ... --provider anthropic Use Claude API
|
|
|
72
72
|
soup data generate ... --provider vllm Use local vLLM server
|
|
73
73
|
soup data generate ... --template code Domain templates (code/conversation/qa/preference/reasoning)
|
|
74
74
|
soup data generate ... --quality-pipeline Auto validate + filter + dedup
|
|
75
|
-
soup data augment <path> --strategy rephrase|translate|style
|
|
75
|
+
soup data augment <path> --strategy rephrase|translate|style [--provider ollama|vllm --model <m> --base-url <url>] LLM-driven augmentation
|
|
76
|
+
soup data from-traces --logs l.jsonl --format langchain --signal thumbs_up --output p.jsonl Preference pairs from traces
|
|
76
77
|
soup data from-traces ... --judge --min-confidence 0.7 LLM-judge confidence filter
|
|
77
78
|
soup data review prefs.jsonl --sample 10 Preview preference pairssoup data filter <path> --coherence 0.3 Quality filter (perplexity/coherence)
|
|
78
79
|
soup data sample <path> --n 1000 Random sample subset
|
|
@@ -178,7 +179,8 @@ soup ingest|prune-prompt|ab|data active-sample ... --slack-url <https> | --disco
|
|
|
178
179
|
soup drift-alarm --reference <jsonl> --live <jsonl> --threshold 0.2 Rolling-KL drift alarm (exit 3 on drift)
|
|
179
180
|
soup drift-alarm ... --slack-url <https> | --discord-url <https> Optional SSRF-validated webhook on drift detected
|
|
180
181
|
soup tunability --list List built-in candidate-base catalogue
|
|
181
|
-
soup tunability --dataset <jsonl> [--candidates a,b,c] Probe
|
|
182
|
+
soup tunability --dataset <jsonl> [--candidates a,b,c] Probe candidate bases + Pareto frontier report
|
|
183
|
+
soup tunability --dataset <jsonl> --live [--device cpu] LIVE per-candidate LoRA probe (loads each repo)
|
|
182
184
|
soup plan --config soup.yaml Pre-flight summary + write soup.tfstate
|
|
183
185
|
soup apply --config soup.yaml [--dry-run] Lock-and-execute; refuses on drift (exit 3)
|
|
184
186
|
soup env lock | status | check Hermetic env lockfile + ABI drift detection (exit 3)
|
|
@@ -210,9 +212,9 @@ soup local-rl status --db <path> Print interactions / thumbs-up / t
|
|
|
210
212
|
soup local-rl record --db <path> --prompt <q> --response <r> --thumb up|down Append thumbs record
|
|
211
213
|
soup local-rl harvest --db <path> -o <pairs.jsonl> Harvest DPO pairs from thumbs into JSONL
|
|
212
214
|
soup local-rl train --db <path> --backend ollama|mlx --model <id> Nightly DPO/KTO/ORPO train (v0.68.1)
|
|
213
|
-
soup build <manifest.yaml> [--dry-run]
|
|
215
|
+
soup build <manifest.yaml> [--dry-run] [--output-dir <dir>] dbt-for-SFT DAG: validate + plan + live materialise (v0.69.0; live v0.71.6)
|
|
214
216
|
soup expect <data.jsonl> <suite.yaml> Expectations suite: PII / token-length / refusal / judge (v0.69.0)
|
|
215
|
-
soup data gen-magpie --base <m> --provider ollama|
|
|
217
|
+
soup data gen-magpie --base <m> --provider ollama|vllm --target N --output <jsonl> [--base-url <url>] [--quality-filter] Magpie synthetic generator — live (v0.69.0; live v0.71.6)
|
|
216
218
|
soup data persona-mix --prompts <jsonl> --n N --output <jsonl> Persona-Hub diversity sampler (v0.69.0)
|
|
217
219
|
soup data brain-rot <data.jsonl> [--strict] Brain-rot detector — arXiv 2510.13928 (v0.69.0)
|
|
218
220
|
soup iterative-dpo --base-model <m> --reward-model <rm> --prompts <p.jsonl> --output-dir <out> --rounds N --pairs-per-round N [--plan-only] Iterative DPO loop driver (v0.70.0; live runner v0.70.1)
|
|
@@ -41,8 +41,8 @@ models:
|
|
|
41
41
|
- {name: filtered, kind: incremental, refs: [raw], transform: filter_low_quality}
|
|
42
42
|
- {name: tokenized, kind: incremental, refs: [filtered], transform: tokenize}
|
|
43
43
|
EOF
|
|
44
|
-
soup build build.yaml --dry-run
|
|
45
|
-
|
|
44
|
+
soup build build.yaml --dry-run # validate topology + plan
|
|
45
|
+
soup build build.yaml --output-dir built/ # live materialise (v0.71.6)
|
|
46
46
|
|
|
47
47
|
# Expectations suite — Great Expectations for chat data
|
|
48
48
|
cat > suite.yaml << 'EOF'
|
|
@@ -53,9 +53,9 @@ expectations:
|
|
|
53
53
|
EOF
|
|
54
54
|
soup expect data.jsonl suite.yaml # exit 3 on suite failure
|
|
55
55
|
|
|
56
|
-
# Magpie synthetic data — chat-template-prefix harvest (
|
|
56
|
+
# Magpie synthetic data — chat-template-prefix harvest (live, v0.71.6)
|
|
57
57
|
soup data gen-magpie --base meta-llama/Llama-3.1-8B-Instruct \
|
|
58
|
-
--provider ollama --target 1000 --
|
|
58
|
+
--provider ollama --target 1000 --output magpie.jsonl --quality-filter
|
|
59
59
|
|
|
60
60
|
# Persona-Hub diversity — prompt × persona × style matrix sampling
|
|
61
61
|
soup data persona-mix --prompts prompts.jsonl --n 500 --output mixed.jsonl
|
|
@@ -64,7 +64,7 @@ soup data persona-mix --prompts prompts.jsonl --n 500 --output mixed.jsonl
|
|
|
64
64
|
soup data brain-rot data.jsonl --strict --max-major-fraction 0.10
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
-
Every command applies the project-wide TOCTOU policy (`os.lstat + S_ISLNK` symlink rejection before any open) and cwd containment via the shared `paths.enforce_under_cwd_and_no_symlink` helper.
|
|
67
|
+
Every command applies the project-wide TOCTOU policy (`os.lstat + S_ISLNK` symlink rejection before any open) and cwd containment via the shared `paths.enforce_under_cwd_and_no_symlink` helper. All five are LIVE: `soup build` materialises with five built-in transforms (`identity` / `drop_empty` / `lowercase` / `strip` / `dedup_exact`) and SQLite-tracked incremental re-transform (v0.71.6); `soup data gen-magpie` harvests via raw completion against `--provider ollama|vllm` (loopback-only; `anthropic` rejected — no raw-completion endpoint, v0.71.6).
|
|
68
68
|
|
|
69
69
|
|
|
70
70
|
## Production Trace Ecosystem (`soup ingest`)
|
|
@@ -206,9 +206,13 @@ soup data augment ./data/train.jsonl --strategy translate --lang es,fr,de \
|
|
|
206
206
|
# Style transfer (formal / casual / technical / etc.)
|
|
207
207
|
soup data augment ./data/train.jsonl --strategy style --styles formal,casual \
|
|
208
208
|
--output ./data/train_styled.jsonl
|
|
209
|
+
|
|
210
|
+
# Local provider (Ollama / vLLM) — loopback-only, pick the model + base URL
|
|
211
|
+
soup data augment ./data/train.jsonl --strategy rephrase --count 2 \
|
|
212
|
+
--provider ollama --model qwen2.5:0.5b --output ./data/train_local.jsonl
|
|
209
213
|
```
|
|
210
214
|
|
|
211
|
-
Works with any provider supported by `soup data generate` (OpenAI, Ollama,
|
|
215
|
+
Works with any provider supported by `soup data generate` (OpenAI, Ollama, vLLM, local server). `--model` and `--base-url` select a specific local model/endpoint; the Ollama/vLLM paths are loopback-only (SSRF-hardened). `--count` is capped at 10; `--lang` and `--styles` each capped at 10 entries × 32 chars.
|
|
212
216
|
|
|
213
217
|
|
|
214
218
|
## Trace-to-Preference
|
|
@@ -61,9 +61,13 @@ soup advise data.jsonl --goal "make our chatbot more concise"
|
|
|
61
61
|
# Why: Task is summarization with 120 rows and healthy diversity ...
|
|
62
62
|
# Flip when: the prompt-engineering baseline already meets your target ...
|
|
63
63
|
|
|
64
|
-
# Optional
|
|
64
|
+
# Optional ROI probe (offline heuristic: zero/few-shot + RAG + LoRA estimate).
|
|
65
65
|
soup advise data.jsonl --goal "summarize my reports" --probe
|
|
66
66
|
|
|
67
|
+
# LIVE ROI probe (v0.71.7): loads the model for zero/few-shot token-F1, a short
|
|
68
|
+
# LoRA probe, and base-model proximity (held-out logit agreement). Implies --probe.
|
|
69
|
+
soup advise data.jsonl --goal "..." --probe-model HuggingFaceTB/SmolLM2-135M
|
|
70
|
+
|
|
67
71
|
# Print the rubric / evidence trail of the last verdict.
|
|
68
72
|
soup advise explain
|
|
69
73
|
|
|
@@ -239,9 +243,13 @@ Default threshold 0.2 matches v0.43.0 KL-delta quant-check thresholds. Webhooks
|
|
|
239
243
|
`soup diagnose` scores six independent failure modes for a trained adapter and renders an OK / MINOR / MAJOR verdict per mode plus an overall headline — same taxonomy as Quant-Lobotomy. Useful for catching adapter regressions that a loss curve cannot distinguish from a healthy run.
|
|
240
244
|
|
|
241
245
|
```bash
|
|
242
|
-
#
|
|
246
|
+
# Neutral report (no model load — runs as a sanity check)
|
|
243
247
|
soup diagnose my-run-id
|
|
244
248
|
|
|
249
|
+
# LIVE (v0.71.7): load the model and run all six probes for real
|
|
250
|
+
soup diagnose my-run-id --base-model HuggingFaceTB/SmolLM2-135M \
|
|
251
|
+
--adapter ./out --dataset train.jsonl --tokenizer HuggingFaceTB/SmolLM2-135M
|
|
252
|
+
|
|
245
253
|
# Compute scores from a pre-built evidence JSON
|
|
246
254
|
soup diagnose my-run-id --evidence evidence.json --output diag.json
|
|
247
255
|
|
|
@@ -252,6 +260,12 @@ soup diagnose my-run-id --badge diag.svg
|
|
|
252
260
|
soup diagnose my-run-id --output diag.json --attach-to-registry abc123
|
|
253
261
|
```
|
|
254
262
|
|
|
263
|
+
**Live runners (v0.71.7).** With `--base-model` the six probes run against the loaded model
|
|
264
|
+
(+ optional `--adapter` LoRA path, `--dataset` for the forgetting / format / memorization probes,
|
|
265
|
+
`--tokenizer` for a sub-word memorization variant) instead of emitting neutral OK. `refusal` uses
|
|
266
|
+
a built-in probe set; `format` only fires when the dataset's own targets look like JSON;
|
|
267
|
+
`contamination` stays neutral unless a benchmark corpus is supplied. Validated on SmolLM2-135M.
|
|
268
|
+
|
|
255
269
|
**Six failure-mode probes:**
|
|
256
270
|
|
|
257
271
|
| Mode | What it catches | Score range |
|
|
@@ -429,7 +443,7 @@ soup tunability --dataset ./eval.jsonl --candidates qwen3-0.6b,phi-4-mini --plan
|
|
|
429
443
|
soup tunability --dataset ./eval.jsonl --probe-steps 100 --output ./tunability.json
|
|
430
444
|
```
|
|
431
445
|
|
|
432
|
-
The report is a Pareto frontier over (eval delta from base, train cost, license) — candidates that nothing dominates on both axes survive, so you see a clean shortlist instead of a noisy single-leaderboard score.
|
|
446
|
+
The report is a Pareto frontier over (eval delta from base, train cost, license) — candidates that nothing dominates on both axes survive, so you see a clean shortlist instead of a noisy single-leaderboard score. By default the probe is a deterministic offline heuristic; pass `--live` (v0.71.7) to run a real per-candidate LoRA probe (loads each `repo_id`, trains `--probe-steps` on a held-out-excluded slice, reports the held-out-loss drop). `--device` selects cuda / cpu.
|
|
433
447
|
|
|
434
448
|
|
|
435
449
|
## Eval Depth (`soup eval behavior / capability / checklist / irt-subset`)
|
|
@@ -459,6 +473,10 @@ Persist a calibration once and reuse it across runs (v0.71.1): `write_judge_cali
|
|
|
459
473
|
# Score over-refusal regression on XSTest (operator supplies evidence JSON)
|
|
460
474
|
soup eval behavior my_run --battery xstest --evidence ev.json --output diff.json
|
|
461
475
|
|
|
476
|
+
# LIVE (v0.71.7): generate pre/post responses on the bundled battery + score the diff
|
|
477
|
+
soup eval behavior my_run --battery xstest \
|
|
478
|
+
--base-model HuggingFaceTB/SmolLM2-135M --adapter ./out
|
|
479
|
+
|
|
462
480
|
# Bundled batteries: xstest, harmbench, jailbreakbench, elephant, syceval
|
|
463
481
|
# Harmful prompts ship REDACTED — pull real sets from upstream papers.
|
|
464
482
|
```
|
|
@@ -472,9 +490,13 @@ soup eval capability my_run --suite math --output cap.json # AIME + MATH-500
|
|
|
472
490
|
soup eval capability my_run --suite code --output cap.json # HumanEval+ + SWE-bench-Verified
|
|
473
491
|
soup eval capability my_run --suite fast --output cap.json # MMLU-Pro + HumanEval+
|
|
474
492
|
soup eval capability my_run --suite full --output cap.json # all 7 benchmarks
|
|
493
|
+
|
|
494
|
+
# LIVE (v0.71.7): invoke lm-eval-harness per task against a real model
|
|
495
|
+
soup eval capability my_run --live --model HuggingFaceTB/SmolLM2-135M \
|
|
496
|
+
--tasks arc_easy --limit 1 --device cpu
|
|
475
497
|
```
|
|
476
498
|
|
|
477
|
-
|
|
499
|
+
Without `--live` it emits the (benchmark, lm-eval task) manifest; chain into the existing `soup eval benchmark` surface. With `--live --model <id>` (v0.71.7) it runs lm-eval-harness per resolved task — or a `--tasks` override — isolating per-task failures and capping examples with `--limit`.
|
|
478
500
|
|
|
479
501
|
**CheckList behavioural DSL** — Ribeiro et al. 2020 MFT / INV / DIR tests:
|
|
480
502
|
|
|
@@ -503,8 +525,11 @@ soup eval checklist tests.yaml --evidence responses.json
|
|
|
503
525
|
```bash
|
|
504
526
|
# Pick top-info 30% of items (5-10x eval-bill cut without losing power)
|
|
505
527
|
soup eval irt-subset per_item_correctness.jsonl --size small --output plan.json
|
|
528
|
+
|
|
529
|
+
# Richer item models: 2PL learns per-item discrimination, 3PL adds a guessing floor
|
|
530
|
+
soup eval irt-subset per_item_correctness.jsonl --size small --model 2pl
|
|
506
531
|
```
|
|
507
532
|
|
|
508
|
-
|
|
533
|
+
`--model` picks the item-response model (default `1pl`). `1pl` is the closed-form Rasch fit (`β̂_i = -log(p̂_i / (1 - p̂_i))`); `2pl` adds a per-item discrimination parameter and `3pl` a guessing floor, both via joint coordinate-ascent MLE (v0.71.6). Items rank by Fisher information at θ=0 (`p̂ · (1-p̂)` in 1PL — maximised at 50/50 items, since extremes carry no new ranking information). `full` keeps 100%, `small` keeps 30%, `tiny` keeps 10%.
|
|
509
534
|
|
|
510
535
|
|