soup-cli 0.71.35__tar.gz → 0.71.37__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.35 → soup_cli-0.71.37}/CHANGELOG.md +104 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/CONTRIBUTING.md +3 -3
- {soup_cli-0.71.35 → soup_cli-0.71.37}/CONTRIBUTORS.md +2 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/PKG-INFO +61 -31
- {soup_cli-0.71.35 → soup_cli-0.71.37}/README.md +60 -30
- {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/backends-and-ops.md +4 -4
- {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/commands.md +8 -3
- {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/data.md +125 -3
- {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/evaluation.md +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/models.md +23 -23
- {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/peft-and-efficiency.md +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/performance-and-quantization.md +5 -5
- {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/serving-and-export.md +35 -6
- {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/training.md +56 -2
- {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/README.md +3 -3
- {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/configs/dpo_example.yaml +2 -2
- {soup_cli-0.71.35 → soup_cli-0.71.37}/pyproject.toml +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/__init__.py +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/cli.py +9 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/cloud/modal.py +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/compile_cmd.py +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/data.py +109 -16
- soup_cli-0.71.37/src/soup_cli/commands/data_canary.py +254 -0
- soup_cli-0.71.37/src/soup_cli/commands/data_topics.py +154 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/eval.py +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/export.py +4 -4
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/generate.py +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/mcp.py +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/merge_sharded_fsdp_weights.py +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/serve.py +3 -3
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/train.py +60 -4
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/tui.py +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/ui.py +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/config/schema.py +121 -18
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/loader.py +107 -23
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/gate.py +5 -8
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/judge.py +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/mcp_server/registry.py +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/audio.yaml +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/bco.yaml +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/chat.yaml +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/code.yaml +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/embedding.yaml +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/eu-ai-act.yaml +2 -2
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/ipo.yaml +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/kto.yaml +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/longcontext.yaml +2 -2
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/medical.yaml +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/moe.yaml +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/orpo.yaml +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/pretrain.yaml +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/reasoning.yaml +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/rlhf.yaml +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/simpo.yaml +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/tool-calling.yaml +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/vision.yaml +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/mlx_dpo.py +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/mlx_grpo.py +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/mlx_sft.py +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/online_dpo.py +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/sft.py +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/apple_adapter.py +1 -1
- soup_cli-0.71.37/src/soup_cli/utils/canary.py +349 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/compile_tools.py +2 -2
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/data_doctor.py +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/data_lint.py +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/delinearize_llama4.py +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/_common.py +1 -1
- soup_cli-0.71.37/src/soup_cli/utils/embed.py +231 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/errors.py +7 -7
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/gpu.py +70 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/grpo_long_context.py +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/liger.py +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/live_eval.py +39 -10
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/mii.py +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/prompt_compile.py +1 -1
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/prune_prompt.py +1 -1
- soup_cli-0.71.37/src/soup_cli/utils/rehearsal.py +122 -0
- soup_cli-0.71.37/src/soup_cli/utils/semdedup.py +105 -0
- soup_cli-0.71.37/src/soup_cli/utils/topics.py +240 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_part_a_wave1.py +19 -13
- soup_cli-0.71.37/tests/test_v07136.py +3018 -0
- soup_cli-0.71.37/tests/test_v07137.py +139 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/.dockerignore +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/.github/FUNDING.yml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/.github/pull_request_template.md +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/.github/workflows/ci.yml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/.github/workflows/docker.yml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/.github/workflows/publish.yml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/.github/workflows/recipe-validation.yml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/.gitignore +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/.mailmap +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/.pre-commit-config.yaml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/AGENTS.md +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/CODEOWNERS +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/CODE_OF_CONDUCT.md +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/Dockerfile +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/LICENSE +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/NOTICE +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/SECURITY.md +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/docker-compose.yml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/README.md +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/adapters-and-governance.md +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/compliance.md +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/configs/dpo_chat.yaml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/configs/grpo_reasoning.yaml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/configs/rlhf_step1_sft.yaml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/configs/rlhf_step2_reward.yaml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/configs/rlhf_step3_ppo.yaml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/configs/sft_basic.yaml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/configs/vision_llama.yaml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/data/alpaca_tiny.jsonl +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/data/chat_preferences.jsonl +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/data/dpo_sample.jsonl +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/data/reasoning_math.jsonl +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/reward_hacking/rewards.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/synthetic_workflow.md +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/synthetic_workflow.yaml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/soup.png +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/soup_logo_svg.svg +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/__main__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/autopilot/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/autopilot/analyzer.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/autopilot/decisions.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/autopilot/generate_config.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/cans/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/cans/pack.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/cans/publish.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/cans/run.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/cans/schema.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/cans/unpack.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/cans/verify.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/cloud/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/_eval_v0550.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/_eval_v0610.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/_eval_v0650.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/_eval_v07110.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/_webhook_cli.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/ab.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/active_sample.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/adapters.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/advise.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/agent.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/airgap.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/apple_adapter.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/attest.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/audit_log.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/autopilot.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/bench.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/bom.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/build.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/can.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/card.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/chat.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/ci.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/compile_tools.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/completions.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/cost.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/data_doctor.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/data_forge.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/data_mix.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/data_score.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/delinearize_llama4.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/deploy.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/diagnose.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/diff.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/distill_prompt.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/doctor.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/draft.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/drift_alarm.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/edit.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/env.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/expect.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/fetch.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/history.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/infer.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/ingest.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/init.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/iterative_dpo.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/license_advisor.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/llama.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/local_rl.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/lock.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/loop.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/merge.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/migrate.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/monitor.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/plan.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/plugins.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/probe.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/profile.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/prune_prompt.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/push.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/quantize.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/quickstart.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/ra_dit.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/recipes.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/registry.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/runs.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/ship.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/shrink.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/spectrum.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/steer.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/sweep.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/tokenizer.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/tunability.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/why.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/config/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/config/loader.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/alpaca_tiny.jsonl +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/behavior/elephant.jsonl +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/behavior/harmbench.jsonl +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/behavior/jailbreakbench.jsonl +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/behavior/syceval.jsonl +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/behavior/xstest.jsonl +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/chat_preferences.jsonl +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/dpo_sample.jsonl +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/reasoning_math.jsonl +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/unlearning/muse_demo.jsonl +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/unlearning/tofu_demo.jsonl +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/unlearning/wmdp_demo.jsonl +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/augment.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/chat_templates.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/collators.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/formats.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/loss_mask.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/providers/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/providers/_utils.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/providers/anthropic.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/providers/ollama.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/providers/vllm.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/sft_format.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/templates/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/templates/code.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/templates/conversation.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/templates/preference.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/templates/qa.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/templates/reasoning.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/templates/tool_calling.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/templates/verifiable.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/traces/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/traces/pair_builder.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/traces/parsers.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/traces/quality.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/validator.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/envs/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/envs/_common.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/envs/calculator.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/envs/guess_number.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/envs/retrieval_qa.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/arena.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/benchmarks_v0_43.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/calibrate.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/checkpoint_intelligence.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/custom.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/forgetting.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/human.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/leaderboard.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/quant_check.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/experiment/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/experiment/tracker.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/mcp_server/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/mcp_server/server.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/migrate/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/migrate/axolotl.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/migrate/common.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/migrate/llamafactory.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/migrate/unsloth.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/monitoring/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/monitoring/callback.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/monitoring/curriculum_callback.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/monitoring/display.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/monitoring/grpo_stability_callback.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/monitoring/hf_push.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/monitoring/plugin_callback.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/monitoring/trace_logger.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/plugins/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/py.typed +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/recipes/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/recipes/catalog.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/registry/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/registry/attach.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/registry/diff.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/registry/hashing.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/registry/store.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/fetch_examples/llama-3.1-8b-lora.yaml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/fetch_examples/qwen2.5-7b-dpo.yaml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/fetch_examples/zero3-cpu-offload.json +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/hipaa.yaml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/manifest.json +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/soc2.yaml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/sr-11-7.yaml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/asr.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/bco.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/bitnet.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/classifier.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/distill.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/dpo.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/embedding.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/grpo.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/ipo.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/kto.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/mlx_routing.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/mole_routing.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/orpo.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/ppo.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/preference.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/pretrain.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/prm.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/raft.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/reward_model.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/rewards.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/simpo.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/tts.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/unlearn.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/tui_app.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/ui/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/ui/app.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/ui/plugins/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/ui/static/app.js +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/ui/static/index.html +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/ui/static/logo.png +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/ui/static/logo.svg +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/ui/static/style.css +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/_eval_text.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/ab_test.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/activation_offload.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/active_sampler.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/adapter_arithmetic.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/adapter_bisect.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/adapter_branch.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/adapter_diff.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/adapter_fuse.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/adapter_merge.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/adapter_pr.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/adapter_scan.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/adapter_sign.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/advanced_precision.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/advise.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/advise_history.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/agent_forge.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/agent_rollout.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/agent_sandbox.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/airgap_bundle.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/annex_xi.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/anthropic_messages.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/asr_metrics.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/attest.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/audit_log.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/auto_quant.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/backend_detect.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/batch_probe.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/behavior_battery.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/best_of_n.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/bitnet.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/blame.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/block_expansion.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/bom.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/brain_rot.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/brain_rot_lang.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/build_dag.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/canary_discovery.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/canary_router.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/capability_suite.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/checklist_dsl.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/checkpoint_trigger.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/ci_workflow.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/citation_faithful.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/classifier.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/cmaes_merge.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/completions.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/constants.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/convergence.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/crash.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/cross_doc_attn.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/curriculum.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/curriculum_dynamic.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/cut_ce.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/data_forge.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/data_mix.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/data_pipeline.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/data_score.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/deepspeed.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/demo_bundles.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/deploy_autopilot.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/deploy_measure.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/badge.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/citation.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/contamination.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/forgetting.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/format.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/live.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/memorization.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/mode_collapse.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/refusal.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/report.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/runner.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/distill.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/dpo_variants.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/draft.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/drift_alarm.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/ebft_gdpo.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/echo_trap.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/edit_diff.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/edit_governor.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/edit_kernels.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/encoding.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/energy.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/env_lock.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/eval_design.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/eval_gate_hook.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/eval_lock_coverage.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/evolve.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/expectations.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/fetch_examples.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/flash_attn.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/fp8.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/freeze.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/fsdp.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/fsdp_consolidate.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/galore.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/gguf_quant.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/gpu_monitor.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/grace_codebook.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/graceful_save.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/grad_accum.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/gradient_ckpt.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/grpo_variants.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/hardware_fit.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/harm_probe.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/hf.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/hf_space.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/hubs.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/ingest_sources.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/integrations.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/interference.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/interference_live.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/irt.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/iterative_dpo.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/jinja_analyzer.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/kernel_picker.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/knowledge_edit.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/kv_cache.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/launcher.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/license_advisor.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/license_matrix.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/lisa.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/llama_proxy.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/llama_server_timings.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/local_rl.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/local_rl_scheduler.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/loftq_init.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/log_level.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/long_context.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/longlora.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/loop_budget.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/loop_daemon.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/loop_iteration.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/loop_stages.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/loop_state.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/lr_finder.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/lr_groups.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/magpie.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/metrics.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/minillm.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/mix_proxy.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/mixed_precision.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/mlx.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/mod.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/moe.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/moe_quant.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/mole_routing.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/multipack.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/multipack_sampler.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/multipack_trainer.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/namespace_pin.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/neat_packing.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/ngram_spec.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/nlg_metrics.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/ollama.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/onboarding.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/optimizer_zoo.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/paths.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/peft_builder.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/peft_patches.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/peft_wiring.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/persona_hub.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/pipeline.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/preference_combine.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/prm.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/prm_reward.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/probe_kernel.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/probe_pack.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/profiler.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/profiling.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/profiling_v0_43.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/prompt_distill.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/qat.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/qr_url.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/quality.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/quant_menu.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/ra_dit.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/ra_dit_run.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/raft.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/reasoning_effort.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/reasoning_parser.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/recipe_dag.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/recipe_run.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/registry.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/relora.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/replay.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/repro_receipt.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/reward_hack_control.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/reward_hacking.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/ring_attention.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/rl_checkpoint.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/rl_signal_buffer.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/run_cost.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/sae_diff.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/save_formats.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/server_tools.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/sglang.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/ship_verdict.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/shortcuts.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/shrink.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/signing.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/sleeper_probe.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/soup_lock.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/spec_pairing.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/spectrum_scan.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/spike_recovery.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/sse_train_stream.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/steering.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/strict_safetensors.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/structured_output.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/sweep_config.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/tail_latency.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/terraform_plan.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/tool_outputs.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/topology.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/tracing.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/trackers.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/train_event_buffer.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/trainer_plugins.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/trust_remote.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/truth_probe.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/tts.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/tts_codec.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/tunability.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/ui_env.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/uld.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/unlearn_kernels.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/unlearning.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/unlearning_eval.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/unsloth.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/v028_features.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/vector_bank.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/vllm.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/vscode_setup.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/warmup.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/webhooks.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/why.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/templates/chat.yaml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/templates/code.yaml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/templates/medical.yaml +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/__init__.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/conftest.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/qa/v053_qa.md +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/qa/v07114_qa.md +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/qa/v0716_qa.md +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_adapters.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_advanced_peft.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_assistant_mask.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_audio.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_auto_tuning.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_autopilot.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_awq_gptq_export.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_batch_probe.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_bco.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_bench.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_brain_rot_multilingual.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_bugfixes.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_build_dag.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_callback.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_cans.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_chat.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_chat_template.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_cli.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_cli_subprocess.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_code_review_critical.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_code_review_deferred.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_code_review_high.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_code_review_medium_low.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_code_review_recurring.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_config.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_cost.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_crash_reporter.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_curriculum.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_data.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_data_augment.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_data_sample.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_data_split.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_data_tools.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_dataset_hub.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_dataset_registry.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_deepspeed.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_deploy_ollama.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_diff.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_display.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_doctor.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_dpo_example.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_dpo_variants.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_embedding.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_errors.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_eval.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_eval_gate.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_eval_platform.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_export.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_formats.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_fp8_recipe.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_freeze_training.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_generate.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_gpu.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_grpo.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_hf_integration.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_infer.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_inference_advanced.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_init.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_ipo.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_jinja_analyzer.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_kto.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_loader.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_log_level.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_loss_watchdog.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_merge.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_migrate.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_mlx_backend.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_moe.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_multi_adapter.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_multi_gpu.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_multipack_config.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_multipack_invariants.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_multipack_sampler.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_neat_packing.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_neftune_rslora.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_onnx_tensorrt_export.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_orpo.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_packing.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_part_a_wave2.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_part_b.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_part_c.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_part_d.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_part_e.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_part_f_hardening.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_peft_methods.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_peft_patches.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_performance.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_pissa_init.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_ppo.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_preference_dispatcher.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_preference_multi.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_preference_multi_runtime.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_pretrain.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_profile.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_profiling.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_progress.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_push.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_qat.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_quality_filter.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_quant_check.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_quant_menu.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_quickstart.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_rank_pattern.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_recipes.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_recipes_v031.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_refusal_multilingual.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_registry.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_relora.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_replay.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_resume.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_review_fixes_v07133.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_rlvr.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_run_cost.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_runs.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_serve.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_server_generate.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_sglang_serve.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_simpo.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_smoke_train.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_speculative_decoding.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_sweep.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_synth_data_pro.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_templates_yaml.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_tensorboard.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_tool_calling.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_trace_to_pref.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_tracker.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_trainer_coverage_v035.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_trainer_init.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_training_intelligence.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_training_speed.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_trust_remote_code.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_tui.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_ui.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_ui_chat.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_ui_config_builder.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_ui_live_monitor.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_ui_metrics.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_unsloth.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0401_part_c.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0401_part_d.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0401_part_e.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0402_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0402_part_b.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0403_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0403_part_b.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0403_part_c.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0404_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0404_part_b.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0405_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0406_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0410_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0410_part_b.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0410_part_c.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0420.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0430_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0430_part_b.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0430_part_c.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0430_part_d.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0440_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0440_part_b.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0440_part_c.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0440_part_d.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0440_review_followups.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0450.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0460_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0460_part_b.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0470_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0470_part_b.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0480_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0480_part_b.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0490.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0500_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0500_part_b.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0500_part_c.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0500_part_d.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0500_part_e.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0510.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0520.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0530.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v05310.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v05311.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0531_109.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0531_139.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0531_142.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0531_82.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0532.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0533.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0534.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0535.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0536.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0537.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0538.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0539.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0540.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0550.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0550_followups.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0560.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0570_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0570_part_b.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0570_part_c.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0570_part_d.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0580.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0590.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0600_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0600_part_b.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0600_part_c.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0600_part_d.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0600_part_e.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0600_part_f.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0610_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0610_part_b.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0610_part_c.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0610_part_d.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0610_part_e.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0620_followups.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0620_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0620_part_b.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0620_part_c.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0620_part_d.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0620_part_e.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0630_followups.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0630_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0630_part_b.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0630_part_c.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0630_part_d.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0630_part_e.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0631_206.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0640_followups.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0640_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0640_part_b.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0640_part_c.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0640_part_d.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0640_part_e.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0640_part_f.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0650_followups.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0650_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0650_part_b.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0650_part_c.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0650_part_d.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0650_part_e.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0660_cli.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0660_followups.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0660_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0660_part_b.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0660_part_c.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0660_part_d.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0660_part_e.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0670_followups.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0670_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0670_part_b.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0670_part_c.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0670_part_d.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0670_part_e.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0670_part_f.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0680_followups.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0680_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0680_part_b.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0680_part_c.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0680_part_d.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0680_part_e.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0690_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0690_part_b.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0690_part_c.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0690_part_d.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0690_part_e.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0700_part_a.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0700_part_b.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0700_part_c.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0700_part_d.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0700_part_e.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0700_part_f.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07110.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07111.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07112.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07113.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07114.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07115.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07116.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07117.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07118.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07119.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0712.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07120.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07121.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07122.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07123.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07124.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07125.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07126.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07127.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07128.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07129.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0713.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07130.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07131.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07132.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07133.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07134.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07135.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0714.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0715.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0716.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0717.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0718.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0719.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_validator.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_vision.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_vllm_serve.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_warmup.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_why.py +0 -0
- {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_windows_encoding.py +0 -0
|
@@ -12,6 +12,110 @@ reproducing 70+ versions of notes.
|
|
|
12
12
|
|
|
13
13
|
## [Unreleased]
|
|
14
14
|
|
|
15
|
+
## [0.71.37] - 2026-07-17
|
|
16
|
+
|
|
17
|
+
**Every `pip install soup-cli[extra]` command now works on Windows `cmd.exe`**, and
|
|
18
|
+
eval-gate benchmark tasks run instead of always failing.
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- **Install hints are now quoted so they work in every shell.** Soup printed
|
|
23
|
+
`pip install 'soup-cli[ui]'` — bash / zsh / PowerShell syntax. `cmd.exe` has no
|
|
24
|
+
single-quote quoting, so it hands the quotes to pip verbatim and pip refuses:
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
ERROR: Invalid requirement: "'soup-cli[train]'": Expected package name at the start of dependency specifier
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Every hint, README command, and docs example now uses `pip install
|
|
31
|
+
"soup-cli[extra]"`, which works in cmd, PowerShell, bash, and zsh alike — the
|
|
32
|
+
same spelling the repo already used for `pip install -e ".[dev]"`. Measured on
|
|
33
|
+
Windows: single quotes fail only on `cmd.exe`; double quotes pass everywhere;
|
|
34
|
+
dropping the quotes passes on Windows but breaks zsh, which globs the bracket.
|
|
35
|
+
|
|
36
|
+
Nothing in Soup can rescue the command after it is typed — pip and the shell
|
|
37
|
+
own it, and Soup is not installed yet when the README command runs — so the
|
|
38
|
+
fix is the spelling we print. A regression test now scans the package and every
|
|
39
|
+
docs code block for the single-quoted form.
|
|
40
|
+
|
|
41
|
+
If you followed an older tutorial and hit `Invalid requirement`, swap the `'`
|
|
42
|
+
for `"`; nothing is wrong with the package.
|
|
43
|
+
|
|
44
|
+
- **Eval-gate `type: benchmark` tasks now actually run.** `eval/gate.py` probed
|
|
45
|
+
for a `forgetting.run_mini_benchmark` helper that never existed, so every
|
|
46
|
+
`type: benchmark` task in a gate suite failed 100% of the time — while
|
|
47
|
+
advising an `[eval]` extras install that could not fix it. The gate now calls
|
|
48
|
+
`ForgettingDetector` directly (the same way `soup ship` already did), and an
|
|
49
|
+
unknown benchmark name fails with the list of valid names. Thanks
|
|
50
|
+
[@Sanjays2402](https://github.com/Sanjays2402)!
|
|
51
|
+
([#315](https://github.com/MakazhanAlpamys/Soup/pull/315), closes
|
|
52
|
+
[#310](https://github.com/MakazhanAlpamys/Soup/issues/310))
|
|
53
|
+
|
|
54
|
+
## [0.71.36] - 2026-07-16
|
|
55
|
+
|
|
56
|
+
**Data Moat II** — a semantic layer over your training data, plus two tools for
|
|
57
|
+
what a fine-tune forgets and leaks.
|
|
58
|
+
|
|
59
|
+
### Added
|
|
60
|
+
|
|
61
|
+
- **`soup data dedup --semantic`** — near-duplicate removal over embedding
|
|
62
|
+
cosine instead of MinHash shingling. Catches *reworded* duplicates that
|
|
63
|
+
MinHash misses (measured: 0.88–0.91 cosine on rewordings MinHash scored as
|
|
64
|
+
distinct) while correctly keeping distinct-but-similar instructions. Zero new
|
|
65
|
+
dependencies: uses `transformers` from the `[train]` extra. **Read the
|
|
66
|
+
known-limitation below before lowering `--threshold`.**
|
|
67
|
+
- **`soup data topics <data>`** — cluster a dataset and label each cluster with
|
|
68
|
+
c-TF-IDF terms, plus a coverage table (`82% code · 6% math`) and a warning for
|
|
69
|
+
thin topics. Labels are *emergent term clusters*, not a fixed taxonomy.
|
|
70
|
+
- **`soup data canary insert|check`** — Secret-Sharer memorization probe. Insert
|
|
71
|
+
K high-entropy secrets, then check any model/adapter: each secret's loss is
|
|
72
|
+
ranked against never-inserted controls drawn from the same space. Exit 2 on
|
|
73
|
+
MAJOR so CI can gate. Measured on SmolLM2-135M: a memorized set lands at
|
|
74
|
+
percentile 0.0 (loss 1.7–2.5) against a clean model's 4.1–6.2.
|
|
75
|
+
- **`soup train --replay old.jsonl --replay-ratio 0.1`** — continual-learning
|
|
76
|
+
rehearsal. Interleaves a seeded sample of an old dataset into training so a
|
|
77
|
+
new task does not erase the old one. `r` is the fraction of the **final**
|
|
78
|
+
mixed set (`n_replay = round(r/(1-r) · n_new)`), rows are interleaved rather
|
|
79
|
+
than appended, and an undersized pool reports the shortfall instead of
|
|
80
|
+
repeating rows. Mixed into `train` only — validation stays pure new-task.
|
|
81
|
+
|
|
82
|
+
### Fixed
|
|
83
|
+
|
|
84
|
+
- **The hardware-fit gate refused to train any local checkpoint.** A merged
|
|
85
|
+
model (`soup merge -o ./mymodel`) has no size marker in its name, so the size
|
|
86
|
+
guesser returned its 7B default, predicted ~16 GB of VRAM and refused. Local
|
|
87
|
+
checkpoints are now *measured* from their safetensors header (0.135B actual vs
|
|
88
|
+
7.0B guessed) — this had blocked `soup merge` → train-from-merged entirely.
|
|
89
|
+
Third instance of this class after the v0.71.32 (Whisper) and v0.71.33
|
|
90
|
+
(`M` suffix) fixes.
|
|
91
|
+
- **`pip install 'soup-cli[extra]'` hints printed without the extra.** Rich ate
|
|
92
|
+
the bracket, so every "install the missing dependency" message across 17 sites
|
|
93
|
+
told users to run `pip install 'soup-cli'` — which succeeds and still leaves
|
|
94
|
+
the feature broken. Affected `[eval]`, `[data]`, `[serve]`, `[ui]`, `[tui]`,
|
|
95
|
+
`[compile]`, `[mcp]`, `[carbon]` and others, including Typer help text.
|
|
96
|
+
- Replay rows bypassed the image/audio path-traversal validation that the
|
|
97
|
+
primary dataset receives.
|
|
98
|
+
|
|
99
|
+
### Known limitations
|
|
100
|
+
|
|
101
|
+
- **Semantic dedup is not a paraphrase detector.** Measured with
|
|
102
|
+
all-MiniLM-L6-v2, paraphrase cosines (0.49–0.76) **overlap** with
|
|
103
|
+
genuinely-distinct rows (0.54–0.76): "Add two numbers" vs "Multiply two
|
|
104
|
+
numbers" scores 0.759, *higher* than the true paraphrase "reverse a string" /
|
|
105
|
+
"invert the order of characters" at 0.491. **No threshold separates them**, so
|
|
106
|
+
lowering `--threshold` to chase paraphrases deletes real training rows. The
|
|
107
|
+
default (0.8) is deliberately conservative.
|
|
108
|
+
- **Replay is validated at proof-of-mechanism scale.** On SmolLM2-135M + LoRA,
|
|
109
|
+
replay retained the old task 7% better than a no-replay control — the correct
|
|
110
|
+
direction — but forgetting without it was only +4%, i.e. mild. The effect size
|
|
111
|
+
at full fine-tuning or 7B+ is unproven on a 4 GB box.
|
|
112
|
+
- **Canary exposure is the sampled-control approximation**, not full-space rank
|
|
113
|
+
enumeration. "No exposure" is not proof of no memorization.
|
|
114
|
+
- **`data topics` / `dedup --semantic` require `[train]`** (torch) and download
|
|
115
|
+
an embedding model. Plain MinHash `dedup` stays on the light core.
|
|
116
|
+
- Replay v1 is `sft`/`pretrain` only and is incompatible with
|
|
117
|
+
`packing`/`multipack`.
|
|
118
|
+
|
|
15
119
|
## [0.71.35] - 2026-07-15
|
|
16
120
|
|
|
17
121
|
### Added
|
|
@@ -120,7 +120,7 @@ src/soup_cli/
|
|
|
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 (315 files, 16288 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 (313 files)
|
|
154
154
|
|
|
155
155
|
> A representative sample of the suite below. Run `pytest tests/ -v` for the complete list.
|
|
156
156
|
|
|
@@ -388,7 +388,7 @@ If adding a new training algorithm:
|
|
|
388
388
|
|
|
389
389
|
1. Create `trainer/your_trainer.py` wrapping the appropriate TRL trainer
|
|
390
390
|
2. Add config fields to `config/schema.py` (Pydantic v2)
|
|
391
|
-
3. Add template
|
|
391
|
+
3. Add a template YAML under `src/soup_cli/templates/` + a `manifest.json` entry (see the existing 21 templates)
|
|
392
392
|
4. Update `commands/train.py` to route to your trainer
|
|
393
393
|
5. Add 30+ tests in `tests/test_your_trainer.py`
|
|
394
394
|
6. Update `README.md` + the relevant page under `docs/`
|
|
@@ -52,6 +52,8 @@ Listed by first contribution. PR numbers link the work.
|
|
|
52
52
|
- Honor configured vocab expansion in the ORPO / SimPO / GRPO trainers ([#295](https://github.com/MakazhanAlpamys/Soup/pull/295))
|
|
53
53
|
- **Ekaanksh Patil** ([@Ekaanksh-dev](https://github.com/Ekaanksh-dev))
|
|
54
54
|
- Batch the PRM reward forward pass in `PRMScorer.__call__` (single `[B, T]` forward) ([#301](https://github.com/MakazhanAlpamys/Soup/pull/301))
|
|
55
|
+
- **Sanjay Santhanam** ([@Sanjays2402](https://github.com/Sanjays2402))
|
|
56
|
+
- Run built-in benchmark gate tasks through `ForgettingDetector` — every `type: benchmark` eval-gate task had always failed ([#315](https://github.com/MakazhanAlpamys/Soup/pull/315))
|
|
55
57
|
|
|
56
58
|
---
|
|
57
59
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: soup-cli
|
|
3
|
-
Version: 0.71.
|
|
3
|
+
Version: 0.71.37
|
|
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
|
|
@@ -176,7 +176,7 @@ Description-Content-Type: text/markdown
|
|
|
176
176
|
Soup turns the pain of LLM fine-tuning into a simple workflow. One config, one command, done.
|
|
177
177
|
|
|
178
178
|
```bash
|
|
179
|
-
pip install
|
|
179
|
+
pip install "soup-cli[train]" # add [train] to fine-tune; bare `soup-cli` is the light CLI
|
|
180
180
|
soup init --template chat
|
|
181
181
|
soup train
|
|
182
182
|
```
|
|
@@ -193,34 +193,36 @@ infrastructure instead of improving models. Soup fixes that.
|
|
|
193
193
|
|
|
194
194
|
## What's New
|
|
195
195
|
|
|
196
|
-
**v0.71.
|
|
197
|
-
|
|
198
|
-
- **`soup
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
a card published on the Hub.
|
|
196
|
+
**v0.71.36 — Data Moat II.** A semantic layer over your training data, plus two tools for what a fine-tune forgets and what it leaks.
|
|
197
|
+
|
|
198
|
+
- **`soup data dedup --semantic`** — dedup by meaning, not by shared tokens. Catches
|
|
199
|
+
*reworded* duplicates MinHash's shingling scores as distinct. Zero new dependencies.
|
|
200
|
+
- **`soup data topics <data>`** — cluster your data and get a coverage table
|
|
201
|
+
(`82% code · 6% math · 1% safety`) with a warning for thin topics, so you can see what
|
|
202
|
+
you are actually training on.
|
|
203
|
+
- **`soup data canary insert|check`** — insert unique secrets, then prove whether a model
|
|
204
|
+
memorized them: each secret's loss is ranked against never-inserted controls. Exit 2 on a
|
|
205
|
+
leak, so CI can gate. On SmolLM2-135M a memorized set lands at percentile 0.0 against a
|
|
206
|
+
clean model's 4%–93% spread.
|
|
207
|
+
- **`soup train --replay old.jsonl`** — continual-learning rehearsal: interleave your old
|
|
208
|
+
data so the new task doesn't erase it.
|
|
209
|
+
- **Honest result:** semantic dedup is **not** a paraphrase detector. Measured, paraphrase
|
|
210
|
+
cosines (0.49–0.76) *overlap* with genuinely-distinct rows (0.54–0.76) — "Add two numbers"
|
|
211
|
+
vs "Multiply two numbers" scores **higher** than a real paraphrase — so no threshold
|
|
212
|
+
separates them. The default is deliberately conservative; see the CHANGELOG.
|
|
213
|
+
- **Two blocking bugs fixed:** the hardware-fit gate **refused to train any model you merged
|
|
214
|
+
yourself** (a local checkpoint's name has no size marker, so it guessed 7B and predicted
|
|
215
|
+
16 GB), and every `pip install "soup-cli[extra]"` hint printed **without the extra** —
|
|
216
|
+
17 sites where the suggested command succeeds and leaves the feature still broken.
|
|
218
217
|
|
|
219
218
|
```bash
|
|
220
|
-
soup
|
|
221
|
-
|
|
219
|
+
soup data topics train.jsonl # what am I actually training on?
|
|
220
|
+
soup data dedup train.jsonl --semantic -o clean.jsonl
|
|
222
221
|
|
|
223
|
-
soup
|
|
222
|
+
soup data canary insert train.jsonl -o canaried.jsonl --manifest secrets.json
|
|
223
|
+
soup data canary check --manifest secrets.json --base ./my-model # exit 2 = leak
|
|
224
|
+
|
|
225
|
+
soup train --config sft.yaml --replay old_task.jsonl --replay-ratio 0.1
|
|
224
226
|
```
|
|
225
227
|
|
|
226
228
|
<details>
|
|
@@ -246,11 +248,38 @@ Full history: [CHANGELOG.md](CHANGELOG.md) · [GitHub Releases](https://gi
|
|
|
246
248
|
### 1. Install
|
|
247
249
|
|
|
248
250
|
```bash
|
|
249
|
-
|
|
250
|
-
pip install
|
|
251
|
-
|
|
251
|
+
# Light core: CLI + config + data tools, no PyTorch
|
|
252
|
+
pip install soup-cli
|
|
253
|
+
|
|
254
|
+
# Add the training stack (torch, transformers, peft, trl, datasets, …)
|
|
255
|
+
pip install "soup-cli[train]"
|
|
256
|
+
|
|
257
|
+
# Everything (train + serve + ui + data) in one shot
|
|
258
|
+
pip install "soup-cli[all]"
|
|
259
|
+
|
|
260
|
+
# Or from GitHub (latest dev)
|
|
261
|
+
pip install git+https://github.com/MakazhanAlpamys/Soup.git
|
|
252
262
|
```
|
|
253
263
|
|
|
264
|
+
The full extras table (`fast`, `mlx`, `serve`, `eval`, `ui`, `vision`, `audio`, …) lives in
|
|
265
|
+
[`docs/models.md`](docs/models.md#optional-extras).
|
|
266
|
+
|
|
267
|
+
> **Use double quotes around the extra.** They are the only spelling that works in
|
|
268
|
+
> every shell — `cmd.exe`, PowerShell, bash, and zsh.
|
|
269
|
+
>
|
|
270
|
+
> Older tutorials and videos (including some of ours) show the single-quoted
|
|
271
|
+
> `pip install 'soup-cli[train]'`. That is bash / zsh / PowerShell syntax, and it
|
|
272
|
+
> fails on Windows `cmd.exe`, which has no single-quote quoting and hands the
|
|
273
|
+
> quotes straight to pip:
|
|
274
|
+
>
|
|
275
|
+
> ```
|
|
276
|
+
> ERROR: Invalid requirement: "'soup-cli[train]'": Expected package name at the start of dependency specifier
|
|
277
|
+
> ```
|
|
278
|
+
>
|
|
279
|
+
> If you hit that, swap the `'` for `"` — pip is rejecting a literal quote
|
|
280
|
+
> character, nothing is wrong with the package. (Dropping the quotes entirely
|
|
281
|
+
> works on Windows too, but zsh then reads `[train]` as a glob and fails.)
|
|
282
|
+
|
|
254
283
|
`soup init`, `soup data …`, and the other data/inspection commands work on the light install.
|
|
255
284
|
Fine-tuning (`soup train`) needs the `[train]` extra.
|
|
256
285
|
|
|
@@ -285,7 +314,7 @@ A complete `soup.yaml`:
|
|
|
285
314
|
```yaml
|
|
286
315
|
base: meta-llama/Llama-3.1-8B-Instruct
|
|
287
316
|
task: sft
|
|
288
|
-
# backend: unsloth # 2-5x faster, pip install
|
|
317
|
+
# backend: unsloth # 2-5x faster, pip install "soup-cli[fast]"
|
|
289
318
|
|
|
290
319
|
data:
|
|
291
320
|
train: ./data/train.jsonl
|
|
@@ -320,6 +349,7 @@ The full feature reference lives in [`docs/`](docs/). Start here:
|
|
|
320
349
|
| [Evaluation & probes](docs/evaluation.md) | Eval design/gate, eval-gated training, benchmarks, NLG metrics, calibration, Elo arena, diagnose, post-train X-ray probes, A/B, drift, tunability, `soup advise` |
|
|
321
350
|
| [Serving & export](docs/serving-and-export.md) | OpenAI-compatible server, batch inference, benchmarking, merge/export, Anthropic Messages endpoint, speculative decoding (train + measure your own draft), deploy autopilot, Web UI, Agent Forge |
|
|
322
351
|
| [Adapters, registry & governance](docs/adapters-and-governance.md) | Adapter lifecycle/management, model registry, Soup Cans, the data flywheel (`soup loop`), knowledge editing, steering, supply-chain controls (scan/sign/BOM/attest/audit/airgap) |
|
|
352
|
+
| [Compliance & governance quickstart](docs/compliance.md) | HIPAA/SOC2/EU-AI-Act/SR-11-7 `init` templates, provenance (BOM/attest/repro-receipt), audit log, air-gap, model-card autogen (`soup card`), CI gate (`soup ci init`) |
|
|
323
353
|
| [Backends, platform & ops](docs/backends-and-ops.md) | MLX/Unsloth backends, alternative hubs, HF Hub integration, autopilot, experiment tracking, plan/apply, env lockfiles, hardware-fit, completions, plugins, utility commands |
|
|
324
354
|
| [Command reference](docs/commands.md) | The full `soup` command list |
|
|
325
355
|
| [Supported models & extras](docs/models.md) | Recommended model families, the VRAM size guide, the pip extras matrix |
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
Soup turns the pain of LLM fine-tuning into a simple workflow. One config, one command, done.
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
|
-
pip install
|
|
35
|
+
pip install "soup-cli[train]" # add [train] to fine-tune; bare `soup-cli` is the light CLI
|
|
36
36
|
soup init --template chat
|
|
37
37
|
soup train
|
|
38
38
|
```
|
|
@@ -49,34 +49,36 @@ infrastructure instead of improving models. Soup fixes that.
|
|
|
49
49
|
|
|
50
50
|
## What's New
|
|
51
51
|
|
|
52
|
-
**v0.71.
|
|
53
|
-
|
|
54
|
-
- **`soup
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
a card published on the Hub.
|
|
52
|
+
**v0.71.36 — Data Moat II.** A semantic layer over your training data, plus two tools for what a fine-tune forgets and what it leaks.
|
|
53
|
+
|
|
54
|
+
- **`soup data dedup --semantic`** — dedup by meaning, not by shared tokens. Catches
|
|
55
|
+
*reworded* duplicates MinHash's shingling scores as distinct. Zero new dependencies.
|
|
56
|
+
- **`soup data topics <data>`** — cluster your data and get a coverage table
|
|
57
|
+
(`82% code · 6% math · 1% safety`) with a warning for thin topics, so you can see what
|
|
58
|
+
you are actually training on.
|
|
59
|
+
- **`soup data canary insert|check`** — insert unique secrets, then prove whether a model
|
|
60
|
+
memorized them: each secret's loss is ranked against never-inserted controls. Exit 2 on a
|
|
61
|
+
leak, so CI can gate. On SmolLM2-135M a memorized set lands at percentile 0.0 against a
|
|
62
|
+
clean model's 4%–93% spread.
|
|
63
|
+
- **`soup train --replay old.jsonl`** — continual-learning rehearsal: interleave your old
|
|
64
|
+
data so the new task doesn't erase it.
|
|
65
|
+
- **Honest result:** semantic dedup is **not** a paraphrase detector. Measured, paraphrase
|
|
66
|
+
cosines (0.49–0.76) *overlap* with genuinely-distinct rows (0.54–0.76) — "Add two numbers"
|
|
67
|
+
vs "Multiply two numbers" scores **higher** than a real paraphrase — so no threshold
|
|
68
|
+
separates them. The default is deliberately conservative; see the CHANGELOG.
|
|
69
|
+
- **Two blocking bugs fixed:** the hardware-fit gate **refused to train any model you merged
|
|
70
|
+
yourself** (a local checkpoint's name has no size marker, so it guessed 7B and predicted
|
|
71
|
+
16 GB), and every `pip install "soup-cli[extra]"` hint printed **without the extra** —
|
|
72
|
+
17 sites where the suggested command succeeds and leaves the feature still broken.
|
|
74
73
|
|
|
75
74
|
```bash
|
|
76
|
-
soup
|
|
77
|
-
|
|
75
|
+
soup data topics train.jsonl # what am I actually training on?
|
|
76
|
+
soup data dedup train.jsonl --semantic -o clean.jsonl
|
|
78
77
|
|
|
79
|
-
soup
|
|
78
|
+
soup data canary insert train.jsonl -o canaried.jsonl --manifest secrets.json
|
|
79
|
+
soup data canary check --manifest secrets.json --base ./my-model # exit 2 = leak
|
|
80
|
+
|
|
81
|
+
soup train --config sft.yaml --replay old_task.jsonl --replay-ratio 0.1
|
|
80
82
|
```
|
|
81
83
|
|
|
82
84
|
<details>
|
|
@@ -102,11 +104,38 @@ Full history: [CHANGELOG.md](CHANGELOG.md) · [GitHub Releases](https://gi
|
|
|
102
104
|
### 1. Install
|
|
103
105
|
|
|
104
106
|
```bash
|
|
105
|
-
|
|
106
|
-
pip install
|
|
107
|
-
|
|
107
|
+
# Light core: CLI + config + data tools, no PyTorch
|
|
108
|
+
pip install soup-cli
|
|
109
|
+
|
|
110
|
+
# Add the training stack (torch, transformers, peft, trl, datasets, …)
|
|
111
|
+
pip install "soup-cli[train]"
|
|
112
|
+
|
|
113
|
+
# Everything (train + serve + ui + data) in one shot
|
|
114
|
+
pip install "soup-cli[all]"
|
|
115
|
+
|
|
116
|
+
# Or from GitHub (latest dev)
|
|
117
|
+
pip install git+https://github.com/MakazhanAlpamys/Soup.git
|
|
108
118
|
```
|
|
109
119
|
|
|
120
|
+
The full extras table (`fast`, `mlx`, `serve`, `eval`, `ui`, `vision`, `audio`, …) lives in
|
|
121
|
+
[`docs/models.md`](docs/models.md#optional-extras).
|
|
122
|
+
|
|
123
|
+
> **Use double quotes around the extra.** They are the only spelling that works in
|
|
124
|
+
> every shell — `cmd.exe`, PowerShell, bash, and zsh.
|
|
125
|
+
>
|
|
126
|
+
> Older tutorials and videos (including some of ours) show the single-quoted
|
|
127
|
+
> `pip install 'soup-cli[train]'`. That is bash / zsh / PowerShell syntax, and it
|
|
128
|
+
> fails on Windows `cmd.exe`, which has no single-quote quoting and hands the
|
|
129
|
+
> quotes straight to pip:
|
|
130
|
+
>
|
|
131
|
+
> ```
|
|
132
|
+
> ERROR: Invalid requirement: "'soup-cli[train]'": Expected package name at the start of dependency specifier
|
|
133
|
+
> ```
|
|
134
|
+
>
|
|
135
|
+
> If you hit that, swap the `'` for `"` — pip is rejecting a literal quote
|
|
136
|
+
> character, nothing is wrong with the package. (Dropping the quotes entirely
|
|
137
|
+
> works on Windows too, but zsh then reads `[train]` as a glob and fails.)
|
|
138
|
+
|
|
110
139
|
`soup init`, `soup data …`, and the other data/inspection commands work on the light install.
|
|
111
140
|
Fine-tuning (`soup train`) needs the `[train]` extra.
|
|
112
141
|
|
|
@@ -141,7 +170,7 @@ A complete `soup.yaml`:
|
|
|
141
170
|
```yaml
|
|
142
171
|
base: meta-llama/Llama-3.1-8B-Instruct
|
|
143
172
|
task: sft
|
|
144
|
-
# backend: unsloth # 2-5x faster, pip install
|
|
173
|
+
# backend: unsloth # 2-5x faster, pip install "soup-cli[fast]"
|
|
145
174
|
|
|
146
175
|
data:
|
|
147
176
|
train: ./data/train.jsonl
|
|
@@ -176,6 +205,7 @@ The full feature reference lives in [`docs/`](docs/). Start here:
|
|
|
176
205
|
| [Evaluation & probes](docs/evaluation.md) | Eval design/gate, eval-gated training, benchmarks, NLG metrics, calibration, Elo arena, diagnose, post-train X-ray probes, A/B, drift, tunability, `soup advise` |
|
|
177
206
|
| [Serving & export](docs/serving-and-export.md) | OpenAI-compatible server, batch inference, benchmarking, merge/export, Anthropic Messages endpoint, speculative decoding (train + measure your own draft), deploy autopilot, Web UI, Agent Forge |
|
|
178
207
|
| [Adapters, registry & governance](docs/adapters-and-governance.md) | Adapter lifecycle/management, model registry, Soup Cans, the data flywheel (`soup loop`), knowledge editing, steering, supply-chain controls (scan/sign/BOM/attest/audit/airgap) |
|
|
208
|
+
| [Compliance & governance quickstart](docs/compliance.md) | HIPAA/SOC2/EU-AI-Act/SR-11-7 `init` templates, provenance (BOM/attest/repro-receipt), audit log, air-gap, model-card autogen (`soup card`), CI gate (`soup ci init`) |
|
|
179
209
|
| [Backends, platform & ops](docs/backends-and-ops.md) | MLX/Unsloth backends, alternative hubs, HF Hub integration, autopilot, experiment tracking, plan/apply, env lockfiles, hardware-fit, completions, plugins, utility commands |
|
|
180
210
|
| [Command reference](docs/commands.md) | The full `soup` command list |
|
|
181
211
|
| [Supported models & extras](docs/models.md) | Recommended model families, the VRAM size guide, the pip extras matrix |
|
|
@@ -79,7 +79,7 @@ Fine-tune on M1-M4 Macs via Apple's [MLX](https://github.com/ml-explore/mlx) fra
|
|
|
79
79
|
|
|
80
80
|
```bash
|
|
81
81
|
# Install MLX support
|
|
82
|
-
pip install
|
|
82
|
+
pip install "soup-cli[mlx]"
|
|
83
83
|
```
|
|
84
84
|
|
|
85
85
|
```yaml
|
|
@@ -108,7 +108,7 @@ Use the [Unsloth](https://github.com/unslothai/unsloth) backend for significantl
|
|
|
108
108
|
|
|
109
109
|
```bash
|
|
110
110
|
# Install unsloth support
|
|
111
|
-
pip install
|
|
111
|
+
pip install "soup-cli[fast]"
|
|
112
112
|
```
|
|
113
113
|
|
|
114
114
|
Then add one line to your config:
|
|
@@ -143,7 +143,7 @@ app from your `soup.yaml` for serverless, per-second-billed GPU training. The co
|
|
|
143
143
|
base64-embedded as **data** — no code interpolation, no secrets in the generated stub.
|
|
144
144
|
|
|
145
145
|
```bash
|
|
146
|
-
pip install
|
|
146
|
+
pip install "soup-cli[modal]" # only needed for live submit
|
|
147
147
|
|
|
148
148
|
# Plan-only (default): write the stub + print the `modal run` command.
|
|
149
149
|
soup train --config soup.yaml --cloud modal --gpu a100
|
|
@@ -585,7 +585,7 @@ Full-screen Textual dashboard. Two-pane: run list (left) + selected-run detail
|
|
|
585
585
|
(right). `r` refreshes, `q` quits.
|
|
586
586
|
|
|
587
587
|
```bash
|
|
588
|
-
pip install
|
|
588
|
+
pip install "soup-cli[tui]"
|
|
589
589
|
soup tui --refresh 1.0 --limit 50
|
|
590
590
|
```
|
|
591
591
|
|
|
@@ -11,6 +11,7 @@ soup init [--template chat|code|...|audio] Create config
|
|
|
11
11
|
soup init --template hipaa|soc2|eu-ai-act|sr-11-7 Compliance-shaped starting config + the commands for that regime (v0.71.35)
|
|
12
12
|
soup autopilot --model <id> --data d.jsonl --goal <g> Zero-configsoup train --config soup.yaml Start training
|
|
13
13
|
soup train --config soup.yaml --tensorboard Train with TensorBoard logging
|
|
14
|
+
soup train --config soup.yaml --replay old.jsonl --replay-ratio 0.1 Continual-learning rehearsal: interleave old data so the new task doesn't erase it (sft/pretrain)
|
|
14
15
|
soup train --config soup.yaml --fsdp full_shard Train with FSDP2
|
|
15
16
|
soup train --config soup.yaml --deepspeed zero++ DeepSpeed ZeRO++ (quantized comms)
|
|
16
17
|
soup train --config soup.yaml --gpus auto|N Multi-GPU launch hint
|
|
@@ -77,6 +78,10 @@ soup data lint <path> Preference-data linter: length bia
|
|
|
77
78
|
soup data convert <path> --to chatml Convert between formats
|
|
78
79
|
soup data merge data1.jsonl data2.jsonl Combine datasets
|
|
79
80
|
soup data dedup <path> --threshold 0.8 Remove duplicates (MinHash)
|
|
81
|
+
soup data dedup <path> --semantic Dedup by embedding cosine — catches rewordings MinHash misses ([train])
|
|
82
|
+
soup data topics <path> [--clusters N|auto] Cluster + c-TF-IDF labels + coverage table + thin-topic warnings ([train])
|
|
83
|
+
soup data canary insert <path> -o <out> --manifest <m> Insert K secrets to later prove memorization (manifest = SECRET)
|
|
84
|
+
soup data canary check --manifest <m> --base <model> Rank each secret's loss vs never-inserted controls; exit 2 = leak
|
|
80
85
|
soup data stats <path> Extended statistics
|
|
81
86
|
soup data generate --prompt "..." --count 100 Generate synthetic data
|
|
82
87
|
soup data generate ... --provider ollama Use local Ollama instance
|
|
@@ -250,9 +255,9 @@ soup adapters bisect <ckpt>... --eval-command "..." Binary search over training
|
|
|
250
255
|
soup lock write --base-sha <h> --dataset-sha <h> --env-hash <h> Write soup.lock (v0.67.0)
|
|
251
256
|
soup lock write --base-sha <h> --dataset-sha <h> --env-lock soup-env.lock Auto-derive --env-hash from soup-env.lock (v0.71.1)
|
|
252
257
|
soup lock show / soup lock check Show + drift-check (exit 3 on drift)
|
|
253
|
-
soup compile <program.py> --eval <suite> [--optimizer mipro|gepa|textgrad|copro|bootstrap_fewshot] [--plan-only] DSPy / GEPA / TextGrad prompt-program compiler — live (v0.71.13; pip install
|
|
258
|
+
soup compile <program.py> --eval <suite> [--optimizer mipro|gepa|textgrad|copro|bootstrap_fewshot] [--plan-only] DSPy / GEPA / TextGrad prompt-program compiler — live (v0.71.13; pip install "soup-cli[compile]")
|
|
254
259
|
soup distill-prompt --traces <jsonl> --teacher <m> --student <m> --strategy sft|preference|kl [--provider ollama|anthropic|vllm] [--base-url <url>] [--temperature F] [--max-rows N] Distill prompt-heavy traces via a live teacher (v0.71.13)
|
|
255
|
-
soup compile-tools <spec.json|yaml> --eval <jsonl> [--optimizer textgrad|gepa] [--plan-only] TextGrad / GEPA tool-schema optimiser — live (v0.71.13; pip install
|
|
260
|
+
soup compile-tools <spec.json|yaml> --eval <jsonl> [--optimizer textgrad|gepa] [--plan-only] TextGrad / GEPA tool-schema optimiser — live (v0.71.13; pip install "soup-cli[compile]")
|
|
256
261
|
soup apple-adapter <source-dir> --direction hf-to-mlx|mlx-to-hf|hf-to-apple|mlx-to-apple --output <dir> [--sign] [--plan-only] PEFT LoRA <-> mlx-lm adapter conversion — live (v0.71.21; *-to-apple upstream-gated exit 3)
|
|
257
262
|
soup local-rl init --db <path> Create personal-LLM flywheel SQLite schema (v0.68.0)
|
|
258
263
|
soup local-rl status --db <path> Print interactions / thumbs-up / thumbs-down counters
|
|
@@ -294,7 +299,7 @@ server over **stdio**, so any MCP client — Claude Code, Cursor, Cline, Continu
|
|
|
294
299
|
can drive Soup conversationally. Install the extra first:
|
|
295
300
|
|
|
296
301
|
```bash
|
|
297
|
-
pip install
|
|
302
|
+
pip install "soup-cli[mcp]"
|
|
298
303
|
```
|
|
299
304
|
|
|
300
305
|
Register it with your client. For **Claude Code** (`.mcp.json` in the repo) or
|