soup-cli 0.71.32__tar.gz → 0.71.33__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.32 → soup_cli-0.71.33}/CHANGELOG.md +94 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/CONTRIBUTING.md +1 -1
- {soup_cli-0.71.32 → soup_cli-0.71.33}/CONTRIBUTORS.md +2 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/PKG-INFO +32 -18
- {soup_cli-0.71.32 → soup_cli-0.71.33}/README.md +31 -17
- {soup_cli-0.71.32 → soup_cli-0.71.33}/docs/commands.md +6 -1
- {soup_cli-0.71.32 → soup_cli-0.71.33}/docs/serving-and-export.md +47 -4
- {soup_cli-0.71.32 → soup_cli-0.71.33}/pyproject.toml +1 -1
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/__init__.py +1 -1
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/cli.py +12 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/data.py +27 -11
- soup_cli-0.71.33/src/soup_cli/commands/draft.py +658 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/infer.py +59 -8
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/runs.py +17 -12
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/serve.py +189 -41
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/shrink.py +2 -52
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/train.py +38 -17
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/config/loader.py +7 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/loader.py +20 -4
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/asr.py +45 -1
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/distill.py +15 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/mlx_sft.py +8 -1
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/ui/app.py +8 -2
- soup_cli-0.71.33/src/soup_cli/utils/adapter_fuse.py +128 -0
- soup_cli-0.71.33/src/soup_cli/utils/draft.py +551 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/gpu.py +18 -2
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/lr_finder.py +7 -7
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/paths.py +11 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/prm_reward.py +73 -4
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/spec_pairing.py +22 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/strict_safetensors.py +66 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/vllm.py +7 -2
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/vscode_setup.py +12 -22
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_code_review_high.py +24 -9
- soup_cli-0.71.33/tests/test_review_fixes_v07133.py +662 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v07130.py +21 -5
- soup_cli-0.71.33/tests/test_v07133.py +1858 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_vision.py +27 -9
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_vllm_serve.py +1 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/.dockerignore +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/.github/FUNDING.yml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/.github/pull_request_template.md +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/.github/workflows/ci.yml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/.github/workflows/docker.yml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/.github/workflows/publish.yml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/.github/workflows/recipe-validation.yml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/.gitignore +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/.mailmap +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/.pre-commit-config.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/AGENTS.md +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/CODEOWNERS +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/CODE_OF_CONDUCT.md +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/Dockerfile +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/LICENSE +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/NOTICE +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/SECURITY.md +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/docker-compose.yml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/docs/README.md +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/docs/adapters-and-governance.md +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/docs/backends-and-ops.md +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/docs/data.md +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/docs/evaluation.md +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/docs/models.md +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/docs/peft-and-efficiency.md +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/docs/performance-and-quantization.md +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/docs/training.md +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/examples/README.md +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/examples/configs/dpo_chat.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/examples/configs/dpo_example.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/examples/configs/grpo_reasoning.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/examples/configs/rlhf_step1_sft.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/examples/configs/rlhf_step2_reward.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/examples/configs/rlhf_step3_ppo.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/examples/configs/sft_basic.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/examples/configs/vision_llama.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/examples/data/alpaca_tiny.jsonl +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/examples/data/chat_preferences.jsonl +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/examples/data/dpo_sample.jsonl +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/examples/data/reasoning_math.jsonl +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/examples/reward_hacking/rewards.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/examples/synthetic_workflow.md +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/examples/synthetic_workflow.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/soup.png +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/soup_logo_svg.svg +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/__main__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/autopilot/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/autopilot/analyzer.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/autopilot/decisions.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/autopilot/generate_config.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/cans/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/cans/pack.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/cans/publish.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/cans/run.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/cans/schema.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/cans/unpack.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/cans/verify.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/cloud/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/cloud/modal.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/_eval_v0550.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/_eval_v0610.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/_eval_v0650.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/_eval_v07110.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/_webhook_cli.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/ab.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/active_sample.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/adapters.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/advise.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/agent.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/airgap.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/apple_adapter.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/attest.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/audit_log.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/autopilot.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/bench.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/bom.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/build.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/can.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/chat.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/compile_cmd.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/compile_tools.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/completions.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/cost.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/data_doctor.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/data_forge.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/data_mix.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/data_score.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/delinearize_llama4.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/deploy.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/diagnose.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/diff.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/distill_prompt.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/doctor.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/drift_alarm.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/edit.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/env.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/eval.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/expect.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/export.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/fetch.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/generate.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/history.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/ingest.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/init.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/iterative_dpo.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/license_advisor.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/llama.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/local_rl.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/lock.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/loop.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/mcp.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/merge.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/merge_sharded_fsdp_weights.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/migrate.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/monitor.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/plan.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/plugins.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/probe.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/profile.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/prune_prompt.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/push.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/quantize.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/quickstart.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/ra_dit.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/recipes.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/registry.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/ship.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/spectrum.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/steer.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/sweep.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/tokenizer.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/tui.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/tunability.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/ui.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/commands/why.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/config/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/config/schema.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/_fixtures/alpaca_tiny.jsonl +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/_fixtures/behavior/elephant.jsonl +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/_fixtures/behavior/harmbench.jsonl +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/_fixtures/behavior/jailbreakbench.jsonl +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/_fixtures/behavior/syceval.jsonl +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/_fixtures/behavior/xstest.jsonl +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/_fixtures/chat_preferences.jsonl +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/_fixtures/dpo_sample.jsonl +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/_fixtures/reasoning_math.jsonl +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/_fixtures/unlearning/muse_demo.jsonl +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/_fixtures/unlearning/tofu_demo.jsonl +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/_fixtures/unlearning/wmdp_demo.jsonl +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/augment.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/chat_templates.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/collators.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/formats.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/loss_mask.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/providers/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/providers/_utils.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/providers/anthropic.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/providers/ollama.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/providers/vllm.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/sft_format.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/templates/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/templates/code.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/templates/conversation.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/templates/preference.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/templates/qa.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/templates/reasoning.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/templates/tool_calling.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/templates/verifiable.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/traces/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/traces/pair_builder.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/traces/parsers.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/traces/quality.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/data/validator.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/envs/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/envs/_common.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/envs/calculator.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/envs/guess_number.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/envs/retrieval_qa.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/eval/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/eval/arena.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/eval/benchmarks_v0_43.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/eval/calibrate.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/eval/checkpoint_intelligence.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/eval/custom.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/eval/forgetting.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/eval/gate.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/eval/human.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/eval/judge.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/eval/leaderboard.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/eval/quant_check.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/experiment/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/experiment/tracker.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/mcp_server/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/mcp_server/registry.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/mcp_server/server.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/migrate/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/migrate/axolotl.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/migrate/common.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/migrate/llamafactory.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/migrate/unsloth.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/monitoring/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/monitoring/callback.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/monitoring/curriculum_callback.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/monitoring/display.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/monitoring/grpo_stability_callback.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/monitoring/hf_push.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/monitoring/plugin_callback.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/monitoring/trace_logger.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/plugins/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/py.typed +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/recipes/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/recipes/catalog.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/registry/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/registry/attach.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/registry/diff.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/registry/hashing.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/registry/store.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/templates/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/templates/audio.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/templates/bco.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/templates/chat.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/templates/code.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/templates/embedding.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/templates/fetch_examples/llama-3.1-8b-lora.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/templates/fetch_examples/qwen2.5-7b-dpo.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/templates/fetch_examples/zero3-cpu-offload.json +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/templates/ipo.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/templates/kto.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/templates/longcontext.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/templates/manifest.json +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/templates/medical.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/templates/moe.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/templates/orpo.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/templates/pretrain.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/templates/reasoning.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/templates/rlhf.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/templates/simpo.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/templates/tool-calling.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/templates/vision.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/bco.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/bitnet.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/classifier.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/dpo.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/embedding.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/grpo.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/ipo.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/kto.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/mlx_dpo.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/mlx_grpo.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/mlx_routing.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/mole_routing.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/online_dpo.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/orpo.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/ppo.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/preference.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/pretrain.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/prm.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/raft.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/reward_model.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/rewards.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/sft.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/simpo.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/tts.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/trainer/unlearn.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/tui_app.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/ui/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/ui/plugins/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/ui/static/app.js +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/ui/static/index.html +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/ui/static/logo.png +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/ui/static/logo.svg +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/ui/static/style.css +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/_eval_text.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/ab_test.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/activation_offload.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/active_sampler.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/adapter_bisect.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/adapter_branch.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/adapter_diff.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/adapter_merge.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/adapter_pr.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/adapter_scan.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/adapter_sign.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/advanced_precision.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/advise.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/advise_history.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/agent_forge.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/agent_rollout.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/agent_sandbox.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/airgap_bundle.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/annex_xi.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/anthropic_messages.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/apple_adapter.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/asr_metrics.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/attest.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/audit_log.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/auto_quant.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/backend_detect.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/batch_probe.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/behavior_battery.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/best_of_n.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/bitnet.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/blame.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/block_expansion.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/bom.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/brain_rot.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/brain_rot_lang.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/build_dag.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/canary_discovery.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/canary_router.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/capability_suite.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/checklist_dsl.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/checkpoint_trigger.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/citation_faithful.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/classifier.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/cmaes_merge.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/compile_tools.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/completions.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/constants.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/convergence.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/crash.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/cross_doc_attn.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/curriculum.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/curriculum_dynamic.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/cut_ce.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/data_doctor.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/data_forge.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/data_lint.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/data_mix.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/data_pipeline.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/data_score.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/deepspeed.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/delinearize_llama4.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/demo_bundles.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/deploy_autopilot.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/deploy_measure.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/diagnose/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/diagnose/_common.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/diagnose/badge.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/diagnose/citation.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/diagnose/contamination.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/diagnose/forgetting.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/diagnose/format.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/diagnose/live.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/diagnose/memorization.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/diagnose/mode_collapse.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/diagnose/refusal.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/diagnose/report.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/diagnose/runner.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/distill.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/dpo_variants.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/drift_alarm.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/ebft_gdpo.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/echo_trap.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/edit_diff.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/edit_governor.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/edit_kernels.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/encoding.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/energy.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/env_lock.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/errors.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/eval_design.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/eval_gate_hook.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/eval_lock_coverage.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/evolve.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/expectations.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/fetch_examples.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/flash_attn.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/fp8.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/freeze.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/fsdp.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/fsdp_consolidate.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/galore.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/gguf_quant.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/gpu_monitor.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/grace_codebook.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/graceful_save.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/grad_accum.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/gradient_ckpt.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/grpo_long_context.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/grpo_variants.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/hardware_fit.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/harm_probe.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/hf.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/hf_space.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/hubs.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/ingest_sources.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/integrations.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/interference.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/interference_live.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/irt.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/iterative_dpo.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/jinja_analyzer.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/kernel_picker.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/knowledge_edit.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/kv_cache.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/launcher.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/license_advisor.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/license_matrix.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/liger.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/live_eval.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/llama_proxy.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/llama_server_timings.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/local_rl.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/local_rl_scheduler.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/loftq_init.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/log_level.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/long_context.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/longlora.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/loop_budget.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/loop_daemon.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/loop_iteration.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/loop_stages.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/loop_state.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/lr_groups.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/magpie.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/metrics.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/mii.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/minillm.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/mix_proxy.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/mixed_precision.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/mlx.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/mod.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/moe.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/moe_quant.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/mole_routing.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/multipack.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/multipack_sampler.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/multipack_trainer.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/namespace_pin.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/neat_packing.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/ngram_spec.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/nlg_metrics.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/ollama.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/onboarding.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/optimizer_zoo.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/peft_builder.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/peft_patches.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/peft_wiring.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/persona_hub.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/pipeline.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/preference_combine.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/prm.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/probe_kernel.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/probe_pack.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/profiler.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/profiling.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/profiling_v0_43.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/prompt_compile.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/prompt_distill.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/prune_prompt.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/qat.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/qr_url.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/quality.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/quant_menu.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/ra_dit.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/ra_dit_run.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/raft.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/reasoning_effort.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/reasoning_parser.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/recipe_dag.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/recipe_run.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/registry.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/relora.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/replay.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/repro_receipt.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/reward_hack_control.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/reward_hacking.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/ring_attention.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/rl_checkpoint.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/rl_signal_buffer.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/run_cost.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/sae_diff.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/save_formats.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/server_tools.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/sglang.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/ship_verdict.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/shortcuts.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/shrink.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/signing.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/sleeper_probe.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/soup_lock.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/spectrum_scan.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/spike_recovery.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/sse_train_stream.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/steering.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/structured_output.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/sweep_config.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/tail_latency.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/terraform_plan.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/tool_outputs.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/topology.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/tracing.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/trackers.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/train_event_buffer.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/trainer_plugins.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/trust_remote.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/truth_probe.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/tts.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/tts_codec.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/tunability.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/ui_env.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/uld.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/unlearn_kernels.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/unlearning.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/unlearning_eval.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/unsloth.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/v028_features.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/vector_bank.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/warmup.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/webhooks.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/src/soup_cli/utils/why.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/templates/chat.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/templates/code.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/templates/medical.yaml +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/__init__.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/conftest.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/qa/v053_qa.md +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/qa/v07114_qa.md +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/qa/v0716_qa.md +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_adapters.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_advanced_peft.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_assistant_mask.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_audio.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_auto_tuning.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_autopilot.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_awq_gptq_export.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_batch_probe.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_bco.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_bench.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_brain_rot_multilingual.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_bugfixes.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_build_dag.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_callback.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_cans.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_chat.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_chat_template.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_cli.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_cli_subprocess.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_code_review_critical.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_code_review_deferred.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_code_review_medium_low.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_code_review_recurring.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_config.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_cost.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_crash_reporter.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_curriculum.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_data.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_data_augment.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_data_sample.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_data_split.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_data_tools.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_dataset_hub.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_dataset_registry.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_deepspeed.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_deploy_ollama.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_diff.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_display.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_doctor.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_dpo_example.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_dpo_variants.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_embedding.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_errors.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_eval.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_eval_gate.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_eval_platform.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_export.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_formats.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_fp8_recipe.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_freeze_training.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_generate.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_gpu.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_grpo.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_hf_integration.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_infer.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_inference_advanced.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_init.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_ipo.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_jinja_analyzer.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_kto.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_loader.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_log_level.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_loss_watchdog.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_merge.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_migrate.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_mlx_backend.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_moe.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_multi_adapter.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_multi_gpu.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_multipack_config.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_multipack_invariants.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_multipack_sampler.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_neat_packing.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_neftune_rslora.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_onnx_tensorrt_export.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_orpo.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_packing.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_part_a_wave1.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_part_a_wave2.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_part_b.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_part_c.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_part_d.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_part_e.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_part_f_hardening.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_peft_methods.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_peft_patches.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_performance.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_pissa_init.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_ppo.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_preference_dispatcher.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_preference_multi.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_preference_multi_runtime.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_pretrain.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_profile.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_profiling.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_progress.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_push.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_qat.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_quality_filter.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_quant_check.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_quant_menu.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_quickstart.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_rank_pattern.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_recipes.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_recipes_v031.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_refusal_multilingual.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_registry.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_relora.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_replay.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_resume.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_rlvr.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_run_cost.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_runs.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_serve.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_server_generate.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_sglang_serve.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_simpo.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_smoke_train.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_speculative_decoding.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_sweep.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_synth_data_pro.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_templates_yaml.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_tensorboard.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_tool_calling.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_trace_to_pref.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_tracker.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_trainer_coverage_v035.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_trainer_init.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_training_intelligence.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_training_speed.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_trust_remote_code.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_tui.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_ui.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_ui_chat.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_ui_config_builder.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_ui_live_monitor.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_ui_metrics.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_unsloth.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0401_part_c.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0401_part_d.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0401_part_e.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0402_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0402_part_b.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0403_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0403_part_b.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0403_part_c.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0404_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0404_part_b.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0405_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0406_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0410_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0410_part_b.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0410_part_c.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0420.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0430_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0430_part_b.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0430_part_c.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0430_part_d.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0440_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0440_part_b.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0440_part_c.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0440_part_d.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0440_review_followups.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0450.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0460_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0460_part_b.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0470_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0470_part_b.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0480_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0480_part_b.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0490.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0500_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0500_part_b.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0500_part_c.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0500_part_d.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0500_part_e.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0510.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0520.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0530.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v05310.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v05311.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0531_109.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0531_139.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0531_142.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0531_82.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0532.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0533.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0534.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0535.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0536.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0537.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0538.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0539.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0540.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0550.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0550_followups.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0560.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0570_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0570_part_b.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0570_part_c.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0570_part_d.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0580.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0590.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0600_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0600_part_b.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0600_part_c.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0600_part_d.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0600_part_e.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0600_part_f.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0610_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0610_part_b.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0610_part_c.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0610_part_d.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0610_part_e.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0620_followups.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0620_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0620_part_b.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0620_part_c.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0620_part_d.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0620_part_e.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0630_followups.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0630_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0630_part_b.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0630_part_c.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0630_part_d.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0630_part_e.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0631_206.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0640_followups.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0640_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0640_part_b.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0640_part_c.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0640_part_d.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0640_part_e.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0640_part_f.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0650_followups.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0650_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0650_part_b.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0650_part_c.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0650_part_d.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0650_part_e.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0660_cli.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0660_followups.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0660_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0660_part_b.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0660_part_c.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0660_part_d.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0660_part_e.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0670_followups.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0670_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0670_part_b.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0670_part_c.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0670_part_d.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0670_part_e.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0670_part_f.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0680_followups.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0680_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0680_part_b.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0680_part_c.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0680_part_d.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0680_part_e.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0690_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0690_part_b.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0690_part_c.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0690_part_d.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0690_part_e.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0700_part_a.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0700_part_b.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0700_part_c.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0700_part_d.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0700_part_e.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0700_part_f.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v07110.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v07111.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v07112.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v07113.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v07114.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v07115.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v07116.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v07117.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v07118.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v07119.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0712.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v07120.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v07121.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v07122.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v07123.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v07124.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v07125.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v07126.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v07127.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v07128.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v07129.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0713.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v07131.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v07132.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0714.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0715.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0716.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0717.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0718.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_v0719.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_validator.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_warmup.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_why.py +0 -0
- {soup_cli-0.71.32 → soup_cli-0.71.33}/tests/test_windows_encoding.py +0 -0
|
@@ -12,6 +12,100 @@ reproducing 70+ versions of notes.
|
|
|
12
12
|
|
|
13
13
|
## [Unreleased]
|
|
14
14
|
|
|
15
|
+
## [0.71.33] - 2026-07-13
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
- **`soup draft` — train and, above all, MEASURE a speculative-decoding draft model.**
|
|
19
|
+
- `soup draft measure --target <m> --draft <d> --prompts p.jsonl` reports a draft's
|
|
20
|
+
**acceptance rate** (the fraction of the target's own greedy tokens the draft
|
|
21
|
+
would have proposed correctly) plus **real plain-vs-assisted throughput**. This is
|
|
22
|
+
the honest gate: it tells you whether speculative decoding is worth enabling
|
|
23
|
+
*before* you ship it. Exit 0 / 2 (below `--min-acceptance`, for CI) / 1.
|
|
24
|
+
- `soup draft distill --target <tuned> --draft-base <tiny> --data d.jsonl -o draft/`
|
|
25
|
+
distils your target into the tiny base (logit KD via the existing `task: distill`
|
|
26
|
+
trainer) and emits a **dense** draft model, ready to load as an `assistant_model`.
|
|
27
|
+
- `soup draft list`, plus a local draft registry (`~/.soup/drafts.json`) that
|
|
28
|
+
`soup serve --auto-spec` consults **before** the built-in pairing table — so a
|
|
29
|
+
draft you trained yourself is picked up automatically.
|
|
30
|
+
- Draft and target must share a tokenizer; a mismatched pair is refused up front
|
|
31
|
+
(speculative decoding proposes draft token ids into the target's vocabulary, so a
|
|
32
|
+
mismatch silently produces garbage rather than failing).
|
|
33
|
+
|
|
34
|
+
**Read the measured results before you use this** — see *Known limitations* below.
|
|
35
|
+
On the validated pair, distillation did **not** improve acceptance, and speculative
|
|
36
|
+
decoding was a net **slowdown**. `soup draft measure` is what tells you that.
|
|
37
|
+
|
|
38
|
+
### Known limitations
|
|
39
|
+
- **Distilling a draft did not improve its acceptance rate on the validated pair.**
|
|
40
|
+
Measured on `SmolLM2-360M-Instruct` (target) with a `SmolLM2-135M-Instruct` draft:
|
|
41
|
+
the *stock* draft already scored **69.3%**, and distilling it moved that to 69.7%
|
|
42
|
+
after 2 epochs and back to **69.3%** after 10 epochs — i.e. no gain beyond noise.
|
|
43
|
+
A small same-family draft is already near its capacity ceiling for agreeing with
|
|
44
|
+
the target, and logit KD cannot buy capacity it does not have. Whether distillation
|
|
45
|
+
materially raises acceptance for a genuinely diverged fine-tune, or a larger
|
|
46
|
+
target/draft pair, is **unproven** on a 4 GB box — tracked as a scale issue.
|
|
47
|
+
- **Speculative decoding was a net slowdown on that pair** (measured 0.55–0.64×): the
|
|
48
|
+
draft's forward pass costs more than the tokens it saves at this size.
|
|
49
|
+
`soup draft measure` reports this truthfully rather than assuming a speedup — which
|
|
50
|
+
is precisely the point of shipping the measurement.
|
|
51
|
+
- **Acceptance is teacher-forced greedy agreement**, the metric the Medusa/EAGLE
|
|
52
|
+
papers report. It is exact and deterministic, and it is the right number for
|
|
53
|
+
comparing drafts — but it is not the accepted-token count of a *sampling* run, which
|
|
54
|
+
also depends on the rejection-resample cascade.
|
|
55
|
+
- **Same-tokenizer only.** Cross-tokenizer drafts (ULD-aligned + universal assisted
|
|
56
|
+
decoding) are deferred.
|
|
57
|
+
|
|
58
|
+
### Changed
|
|
59
|
+
- **PRM-guided GRPO scores completions in a single batched forward.**
|
|
60
|
+
`PRMScorer.__call__` now right-pads all completions into one `[B, T]` tensor
|
|
61
|
+
(+ attention mask) and runs one `output_hidden_states` pass instead of one
|
|
62
|
+
forward per completion, cutting per-step reward latency on non-tiny models.
|
|
63
|
+
Numerically identical to the per-completion path (parity + mixed-length tests).
|
|
64
|
+
Closes #298
|
|
65
|
+
([#301](https://github.com/MakazhanAlpamys/Soup/pull/301) by [@Ekaanksh-dev](https://github.com/Ekaanksh-dev)).
|
|
66
|
+
|
|
67
|
+
### Fixed
|
|
68
|
+
- **The hardware-fit gate no longer refuses to train small models.**
|
|
69
|
+
`model_size_from_name` did not understand an `M` (millions) suffix, so
|
|
70
|
+
`SmolLM2-135M` fell through to the 7B default, was predicted to need ~14 GB of
|
|
71
|
+
weights, and was blocked. Every draft-sized model hit this. `1.7B` was also being
|
|
72
|
+
read as `7B` (the `7b` marker matched inside `1.7b`), while `Qwen2.5-7B-Instruct-1M`
|
|
73
|
+
correctly stays 7B (1M is the *context*, not the parameter count).
|
|
74
|
+
- **`soup serve --backend vllm` no longer force-enables `trust_remote_code`.** The
|
|
75
|
+
vLLM path now goes through the same `--trust-remote-code` default-deny gate (and
|
|
76
|
+
warning panel) as the transformers backend, so serving an untrusted repo never
|
|
77
|
+
executes its code silently.
|
|
78
|
+
- **Multi-adapter serving (`soup serve --adapters name=path`) now actually switches
|
|
79
|
+
adapters.** The named adapters are loaded into the model and selected per request
|
|
80
|
+
(via `POST /v1/adapters/activate/{name}` or the request `adapter` field);
|
|
81
|
+
previously every request silently ran the startup model. The base model is served
|
|
82
|
+
when no adapter is selected.
|
|
83
|
+
- **Vision datasets reject out-of-directory image paths.** `llava` / `sharegpt4v`
|
|
84
|
+
rows are containment-checked against `image_dir` (mirroring the audio loader), so a
|
|
85
|
+
crafted `{"image": "/etc/passwd"}` row can no longer read arbitrary local files.
|
|
86
|
+
- **`soup train --dry-run --gpus N` no longer launches a real multi-GPU run.** The
|
|
87
|
+
accelerate re-exec is skipped under `--dry-run`. The re-exec also now forwards
|
|
88
|
+
`--minillm-on-policy`, `--capture-activations`, and `--capture-prompts` (previously
|
|
89
|
+
dropped on multi-GPU runs).
|
|
90
|
+
- **MLX SFT now builds a real optimizer** (`AdamW` from the configured LR) instead of
|
|
91
|
+
passing `optimizer=None`, which left the model untrained.
|
|
92
|
+
- **`soup data inspect` / `preview` / `search` escape dataset- and Hub-derived text**
|
|
93
|
+
so a stray `[/]` no longer crashes the command and a crafted `[link=…]` tag can't
|
|
94
|
+
render a phishing hyperlink. `soup runs` list/show escape config-derived fields too.
|
|
95
|
+
- **`soup infer --task asr` hardening** — an oversized reference no longer crashes the
|
|
96
|
+
whole batch after transcription (that row's metric is skipped); an all-skipped run
|
|
97
|
+
exits non-zero instead of reporting success; `--asr-task` is validated upfront; and
|
|
98
|
+
dataset-derived filenames are control-stripped before printing. ASR training now
|
|
99
|
+
caps transcript labels to Whisper's decoder limit, warns on >30 s audio, and picks
|
|
100
|
+
fp16 on pre-Ampere GPUs instead of hardcoding bf16.
|
|
101
|
+
- **Knowledge-distillation KD term aligns with the CE term.** The token-level
|
|
102
|
+
divergence is now computed over causal-shifted positions, so the distillation signal
|
|
103
|
+
covers exactly the trained tokens (previously off by one).
|
|
104
|
+
- **Miscellaneous robustness** — `load_config_from_string` raises `ValueError` (not
|
|
105
|
+
`TypeError`) on a non-mapping YAML document; the Web UI Bearer-token check is
|
|
106
|
+
constant-time; and `soup doctor --vscode` / the LR-finder report use the centralised
|
|
107
|
+
atomic, symlink-rejecting writer.
|
|
108
|
+
|
|
15
109
|
## [0.71.32] - 2026-07-07
|
|
16
110
|
|
|
17
111
|
### Added
|
|
@@ -120,7 +120,7 @@ src/soup_cli/
|
|
|
120
120
|
templates/ - 17 built-in soup.yaml templates (YAML + manifest.json) with load_template loader (v0.39.0, +bco v0.40.0)
|
|
121
121
|
ui/ - Web UI (FastAPI + HTML/JS SPA)
|
|
122
122
|
|
|
123
|
-
tests/ - Test suite (
|
|
123
|
+
tests/ - Test suite (311 files, 15806 tests)
|
|
124
124
|
examples/ - Real-world config examples and datasets
|
|
125
125
|
```
|
|
126
126
|
|
|
@@ -50,6 +50,8 @@ Listed by first contribution. PR numbers link the work.
|
|
|
50
50
|
- Reuse the shared vocab-expansion helper in the vision + audio SFT paths ([#291](https://github.com/MakazhanAlpamys/Soup/pull/291))
|
|
51
51
|
- Honor configured vocab expansion in the DPO / IPO / KTO / BCO trainers ([#293](https://github.com/MakazhanAlpamys/Soup/pull/293))
|
|
52
52
|
- Honor configured vocab expansion in the ORPO / SimPO / GRPO trainers ([#295](https://github.com/MakazhanAlpamys/Soup/pull/295))
|
|
53
|
+
- **Ekaanksh Patil** ([@Ekaanksh-dev](https://github.com/Ekaanksh-dev))
|
|
54
|
+
- Batch the PRM reward forward pass in `PRMScorer.__call__` (single `[B, T]` forward) ([#301](https://github.com/MakazhanAlpamys/Soup/pull/301))
|
|
53
55
|
|
|
54
56
|
---
|
|
55
57
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: soup-cli
|
|
3
|
-
Version: 0.71.
|
|
3
|
+
Version: 0.71.33
|
|
4
4
|
Summary: Fine-tune and post-train LLMs in one command. No SSH, no config hell.
|
|
5
5
|
Project-URL: Homepage, https://github.com/MakazhanAlpamys/Soup
|
|
6
6
|
Project-URL: Repository, https://github.com/MakazhanAlpamys/Soup
|
|
@@ -193,23 +193,35 @@ infrastructure instead of improving models. Soup fixes that.
|
|
|
193
193
|
|
|
194
194
|
## What's New
|
|
195
195
|
|
|
196
|
-
**v0.71.
|
|
197
|
-
|
|
198
|
-
- **`
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
- **
|
|
207
|
-
`
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
196
|
+
**v0.71.33 — `soup draft`: know whether speculative decoding is actually worth it.** Everyone tells you to bolt a draft model onto your server for a free speedup. Nobody tells you to *measure* it first. Now you can.
|
|
197
|
+
|
|
198
|
+
- **`soup draft measure`.** Reports a draft's **acceptance rate** — the fraction of your target's
|
|
199
|
+
own greedy tokens the draft would have proposed correctly — plus **real plain-vs-assisted
|
|
200
|
+
tok/s**. Exit 0 / 2 (below `--min-acceptance`) / 1, so CI can gate on it.
|
|
201
|
+
- **`soup draft distill`.** Distils your tuned target into a tiny draft base (logit KD over the
|
|
202
|
+
existing `task: distill` trainer) and emits a **dense** model, loadable straight as an
|
|
203
|
+
`assistant_model`.
|
|
204
|
+
- **Auto-wired into serving.** Drafts land in a local registry that `soup serve --auto-spec`
|
|
205
|
+
consults *before* the built-in pairing table — so a draft you trained yourself just gets used.
|
|
206
|
+
- **What the measurement actually told us (honestly).** On `SmolLM2-360M-Instruct` ←
|
|
207
|
+
`SmolLM2-135M-Instruct`: the stock draft already scored **69.3%**, and distilling it changed
|
|
208
|
+
nothing (69.7% at 2 epochs, 69.3% at 10). Assisted decoding was a **net slowdown** (0.55–0.64×).
|
|
209
|
+
A small same-family draft is already at its ceiling. **That negative result is the feature
|
|
210
|
+
working** — it's the number you want *before* you ship speculative decoding, not after.
|
|
211
|
+
Whether distillation pays off on a larger or genuinely diverged pair is unproven on a 4 GB box.
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
soup draft measure --target ./my-tuned-model --draft HuggingFaceTB/SmolLM2-135M-Instruct \
|
|
215
|
+
--prompts prod-prompts.jsonl # -> acceptance %, real tok/s, ship-or-not
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
<details>
|
|
219
|
+
<summary>Previous release — v0.71.32, ASR fine-tuning (Whisper)</summary>
|
|
220
|
+
|
|
221
|
+
Fine-tune Whisper on your accent or domain, locally: `task='asr'` (`AsrTrainerWrapper` over HF
|
|
222
|
+
`Seq2SeqTrainer` + `WhisperProcessor`), `soup infer --task asr` with per-row + corpus **WER/CER**,
|
|
223
|
+
pure-python metrics in `soup_cli.utils.asr_metrics`, and 4 new recipes (catalog 138 → 142).
|
|
224
|
+
whisper-tiny (39M) / base (74M) train on a 4 GB GPU.
|
|
213
225
|
|
|
214
226
|
```yaml
|
|
215
227
|
base: openai/whisper-tiny
|
|
@@ -222,6 +234,8 @@ training:
|
|
|
222
234
|
asr_lora: true # optional; default = full fine-tune
|
|
223
235
|
```
|
|
224
236
|
|
|
237
|
+
</details>
|
|
238
|
+
|
|
225
239
|
Full history: [CHANGELOG.md](CHANGELOG.md) · [GitHub Releases](https://github.com/MakazhanAlpamys/Soup/releases).
|
|
226
240
|
|
|
227
241
|
## Quick Start
|
|
@@ -49,23 +49,35 @@ infrastructure instead of improving models. Soup fixes that.
|
|
|
49
49
|
|
|
50
50
|
## What's New
|
|
51
51
|
|
|
52
|
-
**v0.71.
|
|
53
|
-
|
|
54
|
-
- **`
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
- **
|
|
63
|
-
`
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
52
|
+
**v0.71.33 — `soup draft`: know whether speculative decoding is actually worth it.** Everyone tells you to bolt a draft model onto your server for a free speedup. Nobody tells you to *measure* it first. Now you can.
|
|
53
|
+
|
|
54
|
+
- **`soup draft measure`.** Reports a draft's **acceptance rate** — the fraction of your target's
|
|
55
|
+
own greedy tokens the draft would have proposed correctly — plus **real plain-vs-assisted
|
|
56
|
+
tok/s**. Exit 0 / 2 (below `--min-acceptance`) / 1, so CI can gate on it.
|
|
57
|
+
- **`soup draft distill`.** Distils your tuned target into a tiny draft base (logit KD over the
|
|
58
|
+
existing `task: distill` trainer) and emits a **dense** model, loadable straight as an
|
|
59
|
+
`assistant_model`.
|
|
60
|
+
- **Auto-wired into serving.** Drafts land in a local registry that `soup serve --auto-spec`
|
|
61
|
+
consults *before* the built-in pairing table — so a draft you trained yourself just gets used.
|
|
62
|
+
- **What the measurement actually told us (honestly).** On `SmolLM2-360M-Instruct` ←
|
|
63
|
+
`SmolLM2-135M-Instruct`: the stock draft already scored **69.3%**, and distilling it changed
|
|
64
|
+
nothing (69.7% at 2 epochs, 69.3% at 10). Assisted decoding was a **net slowdown** (0.55–0.64×).
|
|
65
|
+
A small same-family draft is already at its ceiling. **That negative result is the feature
|
|
66
|
+
working** — it's the number you want *before* you ship speculative decoding, not after.
|
|
67
|
+
Whether distillation pays off on a larger or genuinely diverged pair is unproven on a 4 GB box.
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
soup draft measure --target ./my-tuned-model --draft HuggingFaceTB/SmolLM2-135M-Instruct \
|
|
71
|
+
--prompts prod-prompts.jsonl # -> acceptance %, real tok/s, ship-or-not
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
<details>
|
|
75
|
+
<summary>Previous release — v0.71.32, ASR fine-tuning (Whisper)</summary>
|
|
76
|
+
|
|
77
|
+
Fine-tune Whisper on your accent or domain, locally: `task='asr'` (`AsrTrainerWrapper` over HF
|
|
78
|
+
`Seq2SeqTrainer` + `WhisperProcessor`), `soup infer --task asr` with per-row + corpus **WER/CER**,
|
|
79
|
+
pure-python metrics in `soup_cli.utils.asr_metrics`, and 4 new recipes (catalog 138 → 142).
|
|
80
|
+
whisper-tiny (39M) / base (74M) train on a 4 GB GPU.
|
|
69
81
|
|
|
70
82
|
```yaml
|
|
71
83
|
base: openai/whisper-tiny
|
|
@@ -78,6 +90,8 @@ training:
|
|
|
78
90
|
asr_lora: true # optional; default = full fine-tune
|
|
79
91
|
```
|
|
80
92
|
|
|
93
|
+
</details>
|
|
94
|
+
|
|
81
95
|
Full history: [CHANGELOG.md](CHANGELOG.md) · [GitHub Releases](https://github.com/MakazhanAlpamys/Soup/releases).
|
|
82
96
|
|
|
83
97
|
## Quick Start
|
|
@@ -134,7 +134,7 @@ soup migrate --from llamafactory config.yaml Import config from LLaMA-Factory
|
|
|
134
134
|
soup migrate --from axolotl config.yml Import config from Axolotl
|
|
135
135
|
soup migrate --from unsloth notebook.ipynb Import config from Unsloth notebook
|
|
136
136
|
soup migrate --from llamafactory c.yaml --dry-run Preview without writing
|
|
137
|
-
soup recipes list List all
|
|
137
|
+
soup recipes list List all 142 ready-made recipes
|
|
138
138
|
soup recipes show llama3.1-8b-sft Print recipe YAML
|
|
139
139
|
soup recipes use llama3.1-8b-sft Copy recipe to soup.yaml
|
|
140
140
|
soup recipes search "reasoning" Search by keyword/task/size
|
|
@@ -163,6 +163,11 @@ soup mcp serve --allow-mutating Also expose plan-only train_start
|
|
|
163
163
|
soup shrink --model <id|path> --drop-ratio 0.25 --calib c.jsonl -o shrunk Depth-prune least-important layer block + SHIP/DON'T-SHIP ppl verdict (exit 0/2/1) (v0.71.29)
|
|
164
164
|
soup shrink ... --drop-layers N --heal h.jsonl --heal-steps 200 --device cpu Drop N layers + distill-heal (fuse LoRA back to one dense model)
|
|
165
165
|
soup shrink ... --tolerance 0.10 --plan-only [--attach-to-registry <id>] Ppl-regression tolerance / print importance table only / registry attach
|
|
166
|
+
soup draft measure --target <m> --draft <d> --prompts p.jsonl Draft acceptance rate + real plain-vs-assisted tok/s (exit 0/2/1) (v0.71.33)
|
|
167
|
+
soup draft measure ... --min-acceptance 0.6 -o report.json Exit 2 below the floor (CI gate) / write the JSON report
|
|
168
|
+
soup draft distill --target <tuned> --draft-base <tiny> --data d.jsonl -o draft/ Distil a DENSE speculative-decoding draft + register it (v0.71.33)
|
|
169
|
+
soup draft distill ... --steps N --device cpu --force --plan-only Training budget / device / overwrite -o / render the config only
|
|
170
|
+
soup draft list List local drafts that `soup serve --auto-spec` will pick up (v0.71.33)
|
|
166
171
|
soup tui Full-screen Textual dashboard (requires [tui] extra)
|
|
167
172
|
soup train --config soup.yaml --profile Record torch.profiler trace to <output>/profiles/
|
|
168
173
|
soup --log-level quiet|normal|verbose|debug Global logging tier (Rich-formatted)
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
- [Anthropic Messages API Converter](#anthropic-messages-api-converter)
|
|
24
24
|
- [Server-Side Tools](#server-side-tools)
|
|
25
25
|
- [Anthropic Messages Endpoint](#anthropic-messages-endpoint)
|
|
26
|
+
- [Train + measure your own draft (`soup draft`)](#train--measure-your-own-draft-soup-draft)
|
|
26
27
|
- [N-gram Speculative Decoding](#n-gram-speculative-decoding)
|
|
27
28
|
- [Server-Side Tool Endpoints](#server-side-tool-endpoints)
|
|
28
29
|
|
|
@@ -254,7 +255,10 @@ soup serve --model ./output --backend sglang --tensor-parallel 2
|
|
|
254
255
|
|
|
255
256
|
### Speculative Decoding
|
|
256
257
|
|
|
257
|
-
Use a smaller draft model to speed up generation
|
|
258
|
+
Use a smaller draft model to speed up generation. **Measure before you trust it** — see
|
|
259
|
+
[Train + measure your own draft](#train--measure-your-own-draft-soup-draft) below. Speculative
|
|
260
|
+
decoding is only a win when the draft agrees with the target often enough to pay for its own
|
|
261
|
+
forward pass; on a small target it is frequently a *slowdown*.
|
|
258
262
|
|
|
259
263
|
```bash
|
|
260
264
|
# Transformers backend — uses HF assisted generation
|
|
@@ -268,7 +272,46 @@ soup serve --model meta-llama/Llama-3.1-70B-Instruct --backend vllm --auto-spec
|
|
|
268
272
|
# → auto-paired: meta-llama/Llama-3.2-1B-Instruct (target: Llama-3.1-70B-Instruct)
|
|
269
273
|
```
|
|
270
274
|
|
|
271
|
-
`--auto-spec` handles Llama 3.1/3.3/4, Qwen 2.5/3, Mistral Large, Mixtral, DeepSeek V3/R1, and Gemma 2/3. Models without a known draft pairing (e.g. 8B-or-smaller targets where draft+target overhead outweighs the gain) print a yellow "no draft" note and fall back to standard decoding.
|
|
275
|
+
`--auto-spec` handles Llama 3.1/3.3/4, Qwen 2.5/3, Mistral Large, Mixtral, DeepSeek V3/R1, and Gemma 2/3. Models without a known draft pairing (e.g. 8B-or-smaller targets where draft+target overhead outweighs the gain) print a yellow "no draft" note and fall back to standard decoding. A draft you trained yourself with `soup draft distill` is picked up **before** this built-in table.
|
|
276
|
+
|
|
277
|
+
### Train + measure your own draft (`soup draft`)
|
|
278
|
+
|
|
279
|
+
The question nobody answers before enabling speculative decoding: *would the draft actually
|
|
280
|
+
propose the tokens my model is going to emit?* `soup draft measure` answers it.
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
# Would this draft pay off? Acceptance rate + REAL plain-vs-assisted throughput.
|
|
284
|
+
soup draft measure --target ./my-tuned-model \
|
|
285
|
+
--draft HuggingFaceTB/SmolLM2-135M-Instruct \
|
|
286
|
+
--prompts prod-prompts.jsonl
|
|
287
|
+
|
|
288
|
+
# Distil a draft from your own target, then serve it automatically.
|
|
289
|
+
soup draft distill --target ./my-tuned-model \
|
|
290
|
+
--draft-base HuggingFaceTB/SmolLM2-135M-Instruct \
|
|
291
|
+
--data traffic.jsonl -o draft/
|
|
292
|
+
soup serve --model ./my-tuned-model --auto-spec # picks up ./draft
|
|
293
|
+
soup draft list
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
**Acceptance rate** is the fraction of the target's own greedy tokens the draft would have
|
|
297
|
+
proposed correctly (teacher-forced argmax agreement — the metric the Medusa/EAGLE papers report).
|
|
298
|
+
Higher is better; roughly, ≥70% is where speculative decoding starts paying for the draft's
|
|
299
|
+
forward pass on realistic hardware. `--min-acceptance 0.6` exits **2** below the floor, so CI can
|
|
300
|
+
gate on it (exit 0 = ok, 2 = below floor, 1 = error).
|
|
301
|
+
|
|
302
|
+
`distill` runs logit KD through the existing `task: distill` trainer and emits a **dense** model
|
|
303
|
+
(a PEFT adapter directory cannot be loaded as an `assistant_model`). Draft and target must share a
|
|
304
|
+
tokenizer — a mismatch is refused up front, because speculative decoding proposes *draft* token ids
|
|
305
|
+
into the *target's* vocabulary and a mismatched pair silently produces garbage instead of failing.
|
|
306
|
+
A `soup shrink` output makes a good draft base: same tokenizer by construction.
|
|
307
|
+
|
|
308
|
+
**Measured reality check (be sceptical of speedup claims, including ours).** On
|
|
309
|
+
`SmolLM2-360M-Instruct` with a `SmolLM2-135M-Instruct` draft, the *stock* draft already scored
|
|
310
|
+
**69.3%** acceptance, distilling it changed nothing (69.7% after 2 epochs, 69.3% after 10), and
|
|
311
|
+
assisted decoding came out **0.55–0.64×** — a net slowdown. A small same-family draft is already
|
|
312
|
+
near its ceiling for agreeing with the target, and the draft's forward pass costs more than the
|
|
313
|
+
tokens it saves. Whether distillation pays off on a larger or genuinely diverged target/draft pair
|
|
314
|
+
is unproven on a 4 GB box. Run `soup draft measure` on *your* pair rather than assuming.
|
|
272
315
|
|
|
273
316
|
### Prefix Caching
|
|
274
317
|
|
|
@@ -418,7 +461,7 @@ soup ui
|
|
|
418
461
|
|
|
419
462
|
**Pages:**
|
|
420
463
|
- **Dashboard** — view all experiment runs, loss charts, system info, multi-run comparison
|
|
421
|
-
- **New Training** — create configs from templates or
|
|
464
|
+
- **New Training** — create configs from templates or 142 ready-made recipes, validate, start training with live SSE log streaming and progress bar
|
|
422
465
|
- **Data Explorer** — browse and inspect datasets (JSONL, JSON, CSV, Parquet)
|
|
423
466
|
- **Model Chat** — chat with streaming responses, configurable temperature/top_p/max_tokens, system prompt, adapter selection, markdown rendering, chat export
|
|
424
467
|
|
|
@@ -427,7 +470,7 @@ soup ui
|
|
|
427
470
|
- **Enhanced Metrics** — 2x2 chart grid (loss, LR, grad_norm, throughput) + GPU memory chart, eval results table
|
|
428
471
|
- **Multi-Run Compare** — overlay loss curves from up to 5 runs side-by-side
|
|
429
472
|
- **Chat Upgrade** — SSE streaming via proxy, typing indicator, cancel button, markdown renderer (bold, italic, code blocks), chat export as JSON
|
|
430
|
-
- **Config Builder** — recipe dropdown (
|
|
473
|
+
- **Config Builder** — recipe dropdown (142 recipes), config schema API for dynamic form generation
|
|
431
474
|
|
|
432
475
|
**Security:** The Web UI generates a random auth token at startup (printed to console). All mutating endpoints (start/stop training, delete runs, inspect data, validate config) require `Authorization: Bearer <token>` header. CORS is restricted to the served origin. Data inspection is sandboxed to the working directory.
|
|
433
476
|
|
|
@@ -538,6 +538,18 @@ app.command(
|
|
|
538
538
|
),
|
|
539
539
|
)(_shrink_cmd.shrink)
|
|
540
540
|
|
|
541
|
+
# v0.71.33 — `soup draft` train-your-own speculative-decoding draft.
|
|
542
|
+
from soup_cli.commands import draft as _draft_cmd # noqa: E402
|
|
543
|
+
|
|
544
|
+
app.add_typer(
|
|
545
|
+
_draft_cmd.app,
|
|
546
|
+
name="draft",
|
|
547
|
+
help=(
|
|
548
|
+
"Train + measure a speculative-decoding draft model: distil your tuned "
|
|
549
|
+
"model into a tiny draft, then serve it with --auto-spec (v0.71.33)."
|
|
550
|
+
),
|
|
551
|
+
)
|
|
552
|
+
|
|
541
553
|
|
|
542
554
|
def _rewrite_advise_argv(argv: list) -> list:
|
|
543
555
|
"""Inject `run` between `advise` and a non-subcommand first argument.
|
|
@@ -53,12 +53,20 @@ def inspect(
|
|
|
53
53
|
|
|
54
54
|
# Print sample rows
|
|
55
55
|
if rows > 0 and len(data) > 0:
|
|
56
|
+
# Escape dataset-derived cell content + column names: a stray '[/]' in
|
|
57
|
+
# ordinary data crashes Rich with MarkupError; a crafted '[link=...]'
|
|
58
|
+
# renders a phishing hyperlink. Mirrors `soup data review`.
|
|
59
|
+
from rich.markup import escape as _escape
|
|
60
|
+
|
|
56
61
|
console.print(f"\n[bold]Sample rows ({min(rows, len(data))}):[/]")
|
|
57
62
|
sample_table = Table(show_lines=True)
|
|
58
63
|
for col in result["columns"][:5]: # max 5 columns
|
|
59
|
-
sample_table.add_column(col, max_width=60)
|
|
64
|
+
sample_table.add_column(_escape(str(col)), max_width=60)
|
|
60
65
|
for row in data[: min(rows, len(data))]:
|
|
61
|
-
values = [
|
|
66
|
+
values = [
|
|
67
|
+
_escape(str(row.get(col, ""))[:60])
|
|
68
|
+
for col in result["columns"][:5]
|
|
69
|
+
]
|
|
62
70
|
sample_table.add_row(*values)
|
|
63
71
|
console.print(sample_table)
|
|
64
72
|
|
|
@@ -1102,16 +1110,20 @@ def search_datasets(
|
|
|
1102
1110
|
table.add_column("Likes", justify="right")
|
|
1103
1111
|
table.add_column("Tags", max_width=30)
|
|
1104
1112
|
|
|
1113
|
+
# HF-hub metadata (ids, tags) is attacker-authored — escape before it
|
|
1114
|
+
# reaches a Rich table (MarkupError crash / phishing-link injection).
|
|
1115
|
+
from rich.markup import escape as _escape
|
|
1116
|
+
|
|
1105
1117
|
for ds_item in datasets[:limit]:
|
|
1106
1118
|
ds_tags = getattr(ds_item, "tags", []) or []
|
|
1107
|
-
tag_str = ", ".join(ds_tags[:5])
|
|
1119
|
+
tag_str = ", ".join(str(t) for t in ds_tags[:5])
|
|
1108
1120
|
if len(ds_tags) > 5:
|
|
1109
1121
|
tag_str += "..."
|
|
1110
1122
|
table.add_row(
|
|
1111
|
-
ds_item.id,
|
|
1123
|
+
_escape(str(ds_item.id)),
|
|
1112
1124
|
_format_count(getattr(ds_item, "downloads", 0) or 0),
|
|
1113
1125
|
_format_count(getattr(ds_item, "likes", 0) or 0),
|
|
1114
|
-
tag_str,
|
|
1126
|
+
_escape(tag_str),
|
|
1115
1127
|
)
|
|
1116
1128
|
|
|
1117
1129
|
console.print(table)
|
|
@@ -1137,22 +1149,26 @@ def preview_dataset(
|
|
|
1137
1149
|
)
|
|
1138
1150
|
raise typer.Exit(1)
|
|
1139
1151
|
|
|
1140
|
-
|
|
1152
|
+
# HF-hub metadata (id, description, tags, feature/split names) is
|
|
1153
|
+
# attacker-authored — escape before it reaches a Rich table.
|
|
1154
|
+
from rich.markup import escape as _escape
|
|
1155
|
+
|
|
1156
|
+
table = Table(title=f"Dataset: {_escape(str(info['id']))}")
|
|
1141
1157
|
table.add_column("Field", style="bold")
|
|
1142
1158
|
table.add_column("Value", max_width=80)
|
|
1143
1159
|
|
|
1144
|
-
table.add_row("ID", info["id"])
|
|
1160
|
+
table.add_row("ID", _escape(str(info["id"])))
|
|
1145
1161
|
desc = info["description"]
|
|
1146
1162
|
if len(desc) > 200:
|
|
1147
1163
|
desc = desc[:200] + "..."
|
|
1148
|
-
table.add_row("Description", desc
|
|
1164
|
+
table.add_row("Description", _escape(desc) if desc else "[dim]No description[/]")
|
|
1149
1165
|
table.add_row("Downloads", _format_count(info["downloads"]))
|
|
1150
1166
|
table.add_row("Likes", _format_count(info["likes"]))
|
|
1151
1167
|
table.add_row("Size", _format_size_bytes(info["size_bytes"]))
|
|
1152
1168
|
|
|
1153
1169
|
if info["splits"]:
|
|
1154
1170
|
splits_str = ", ".join(
|
|
1155
|
-
f"{name} ({_format_count(count)})"
|
|
1171
|
+
f"{_escape(str(name))} ({_format_count(count)})"
|
|
1156
1172
|
for name, count in info["splits"].items()
|
|
1157
1173
|
)
|
|
1158
1174
|
table.add_row("Splits", splits_str)
|
|
@@ -1160,10 +1176,10 @@ def preview_dataset(
|
|
|
1160
1176
|
table.add_row("Splits", "[dim]Not available (use streaming to explore)[/]")
|
|
1161
1177
|
|
|
1162
1178
|
if info["features"]:
|
|
1163
|
-
table.add_row("Features", ", ".join(info["features"]))
|
|
1179
|
+
table.add_row("Features", ", ".join(_escape(str(f)) for f in info["features"]))
|
|
1164
1180
|
|
|
1165
1181
|
if info["tags"]:
|
|
1166
|
-
table.add_row("Tags", ", ".join(info["tags"][:10]))
|
|
1182
|
+
table.add_row("Tags", ", ".join(_escape(str(t)) for t in info["tags"][:10]))
|
|
1167
1183
|
|
|
1168
1184
|
console.print(table)
|
|
1169
1185
|
|