soup-cli 0.71.33__tar.gz → 0.71.34__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.33 → soup_cli-0.71.34}/CHANGELOG.md +21 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/CONTRIBUTING.md +1 -1
- {soup_cli-0.71.33 → soup_cli-0.71.34}/PKG-INFO +27 -34
- {soup_cli-0.71.33 → soup_cli-0.71.34}/README.md +26 -33
- {soup_cli-0.71.33 → soup_cli-0.71.34}/docs/README.md +1 -1
- {soup_cli-0.71.33 → soup_cli-0.71.34}/docs/adapters-and-governance.md +8 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/docs/commands.md +2 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/docs/peft-and-efficiency.md +19 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/pyproject.toml +1 -1
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/__init__.py +1 -1
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/adapters.py +225 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/config/schema.py +135 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/sft.py +18 -0
- soup_cli-0.71.34/src/soup_cli/utils/adapter_arithmetic.py +288 -0
- soup_cli-0.71.34/src/soup_cli/utils/lisa.py +213 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/peft_wiring.py +26 -0
- soup_cli-0.71.34/tests/test_v07134.py +1041 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/.dockerignore +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/.github/FUNDING.yml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/.github/pull_request_template.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/.github/workflows/ci.yml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/.github/workflows/docker.yml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/.github/workflows/publish.yml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/.github/workflows/recipe-validation.yml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/.gitignore +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/.mailmap +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/.pre-commit-config.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/AGENTS.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/CODEOWNERS +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/CODE_OF_CONDUCT.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/CONTRIBUTORS.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/Dockerfile +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/LICENSE +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/NOTICE +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/SECURITY.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/docker-compose.yml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/docs/backends-and-ops.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/docs/data.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/docs/evaluation.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/docs/models.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/docs/performance-and-quantization.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/docs/serving-and-export.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/docs/training.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/examples/README.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/examples/configs/dpo_chat.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/examples/configs/dpo_example.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/examples/configs/grpo_reasoning.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/examples/configs/rlhf_step1_sft.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/examples/configs/rlhf_step2_reward.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/examples/configs/rlhf_step3_ppo.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/examples/configs/sft_basic.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/examples/configs/vision_llama.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/examples/data/alpaca_tiny.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/examples/data/chat_preferences.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/examples/data/dpo_sample.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/examples/data/reasoning_math.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/examples/reward_hacking/rewards.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/examples/synthetic_workflow.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/examples/synthetic_workflow.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/soup.png +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/soup_logo_svg.svg +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/__main__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/autopilot/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/autopilot/analyzer.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/autopilot/decisions.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/autopilot/generate_config.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/cans/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/cans/pack.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/cans/publish.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/cans/run.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/cans/schema.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/cans/unpack.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/cans/verify.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/cli.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/cloud/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/cloud/modal.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/_eval_v0550.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/_eval_v0610.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/_eval_v0650.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/_eval_v07110.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/_webhook_cli.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/ab.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/active_sample.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/advise.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/agent.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/airgap.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/apple_adapter.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/attest.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/audit_log.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/autopilot.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/bench.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/bom.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/build.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/can.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/chat.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/compile_cmd.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/compile_tools.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/completions.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/cost.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/data.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/data_doctor.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/data_forge.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/data_mix.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/data_score.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/delinearize_llama4.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/deploy.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/diagnose.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/diff.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/distill_prompt.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/doctor.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/draft.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/drift_alarm.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/edit.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/env.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/eval.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/expect.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/export.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/fetch.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/generate.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/history.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/infer.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/ingest.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/init.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/iterative_dpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/license_advisor.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/llama.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/local_rl.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/lock.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/loop.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/mcp.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/merge.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/merge_sharded_fsdp_weights.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/migrate.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/monitor.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/plan.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/plugins.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/probe.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/profile.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/prune_prompt.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/push.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/quantize.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/quickstart.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/ra_dit.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/recipes.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/registry.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/runs.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/serve.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/ship.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/shrink.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/spectrum.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/steer.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/sweep.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/tokenizer.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/train.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/tui.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/tunability.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/ui.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/commands/why.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/config/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/config/loader.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/_fixtures/alpaca_tiny.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/_fixtures/behavior/elephant.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/_fixtures/behavior/harmbench.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/_fixtures/behavior/jailbreakbench.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/_fixtures/behavior/syceval.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/_fixtures/behavior/xstest.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/_fixtures/chat_preferences.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/_fixtures/dpo_sample.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/_fixtures/reasoning_math.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/_fixtures/unlearning/muse_demo.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/_fixtures/unlearning/tofu_demo.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/_fixtures/unlearning/wmdp_demo.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/augment.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/chat_templates.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/collators.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/formats.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/loader.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/loss_mask.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/providers/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/providers/_utils.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/providers/anthropic.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/providers/ollama.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/providers/vllm.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/sft_format.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/templates/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/templates/code.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/templates/conversation.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/templates/preference.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/templates/qa.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/templates/reasoning.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/templates/tool_calling.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/templates/verifiable.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/traces/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/traces/pair_builder.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/traces/parsers.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/traces/quality.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/data/validator.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/envs/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/envs/_common.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/envs/calculator.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/envs/guess_number.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/envs/retrieval_qa.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/eval/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/eval/arena.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/eval/benchmarks_v0_43.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/eval/calibrate.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/eval/checkpoint_intelligence.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/eval/custom.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/eval/forgetting.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/eval/gate.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/eval/human.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/eval/judge.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/eval/leaderboard.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/eval/quant_check.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/experiment/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/experiment/tracker.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/mcp_server/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/mcp_server/registry.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/mcp_server/server.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/migrate/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/migrate/axolotl.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/migrate/common.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/migrate/llamafactory.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/migrate/unsloth.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/monitoring/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/monitoring/callback.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/monitoring/curriculum_callback.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/monitoring/display.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/monitoring/grpo_stability_callback.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/monitoring/hf_push.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/monitoring/plugin_callback.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/monitoring/trace_logger.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/plugins/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/py.typed +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/recipes/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/recipes/catalog.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/registry/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/registry/attach.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/registry/diff.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/registry/hashing.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/registry/store.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/templates/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/templates/audio.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/templates/bco.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/templates/chat.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/templates/code.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/templates/embedding.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/templates/fetch_examples/llama-3.1-8b-lora.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/templates/fetch_examples/qwen2.5-7b-dpo.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/templates/fetch_examples/zero3-cpu-offload.json +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/templates/ipo.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/templates/kto.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/templates/longcontext.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/templates/manifest.json +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/templates/medical.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/templates/moe.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/templates/orpo.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/templates/pretrain.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/templates/reasoning.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/templates/rlhf.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/templates/simpo.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/templates/tool-calling.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/templates/vision.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/asr.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/bco.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/bitnet.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/classifier.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/distill.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/dpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/embedding.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/grpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/ipo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/kto.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/mlx_dpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/mlx_grpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/mlx_routing.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/mlx_sft.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/mole_routing.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/online_dpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/orpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/ppo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/preference.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/pretrain.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/prm.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/raft.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/reward_model.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/rewards.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/simpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/tts.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/trainer/unlearn.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/tui_app.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/ui/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/ui/app.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/ui/plugins/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/ui/static/app.js +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/ui/static/index.html +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/ui/static/logo.png +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/ui/static/logo.svg +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/ui/static/style.css +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/_eval_text.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/ab_test.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/activation_offload.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/active_sampler.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/adapter_bisect.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/adapter_branch.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/adapter_diff.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/adapter_fuse.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/adapter_merge.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/adapter_pr.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/adapter_scan.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/adapter_sign.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/advanced_precision.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/advise.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/advise_history.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/agent_forge.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/agent_rollout.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/agent_sandbox.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/airgap_bundle.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/annex_xi.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/anthropic_messages.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/apple_adapter.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/asr_metrics.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/attest.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/audit_log.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/auto_quant.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/backend_detect.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/batch_probe.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/behavior_battery.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/best_of_n.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/bitnet.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/blame.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/block_expansion.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/bom.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/brain_rot.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/brain_rot_lang.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/build_dag.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/canary_discovery.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/canary_router.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/capability_suite.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/checklist_dsl.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/checkpoint_trigger.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/citation_faithful.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/classifier.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/cmaes_merge.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/compile_tools.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/completions.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/constants.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/convergence.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/crash.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/cross_doc_attn.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/curriculum.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/curriculum_dynamic.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/cut_ce.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/data_doctor.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/data_forge.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/data_lint.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/data_mix.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/data_pipeline.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/data_score.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/deepspeed.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/delinearize_llama4.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/demo_bundles.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/deploy_autopilot.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/deploy_measure.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/diagnose/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/diagnose/_common.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/diagnose/badge.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/diagnose/citation.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/diagnose/contamination.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/diagnose/forgetting.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/diagnose/format.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/diagnose/live.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/diagnose/memorization.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/diagnose/mode_collapse.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/diagnose/refusal.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/diagnose/report.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/diagnose/runner.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/distill.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/dpo_variants.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/draft.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/drift_alarm.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/ebft_gdpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/echo_trap.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/edit_diff.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/edit_governor.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/edit_kernels.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/encoding.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/energy.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/env_lock.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/errors.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/eval_design.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/eval_gate_hook.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/eval_lock_coverage.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/evolve.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/expectations.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/fetch_examples.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/flash_attn.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/fp8.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/freeze.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/fsdp.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/fsdp_consolidate.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/galore.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/gguf_quant.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/gpu.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/gpu_monitor.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/grace_codebook.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/graceful_save.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/grad_accum.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/gradient_ckpt.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/grpo_long_context.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/grpo_variants.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/hardware_fit.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/harm_probe.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/hf.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/hf_space.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/hubs.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/ingest_sources.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/integrations.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/interference.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/interference_live.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/irt.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/iterative_dpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/jinja_analyzer.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/kernel_picker.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/knowledge_edit.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/kv_cache.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/launcher.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/license_advisor.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/license_matrix.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/liger.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/live_eval.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/llama_proxy.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/llama_server_timings.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/local_rl.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/local_rl_scheduler.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/loftq_init.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/log_level.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/long_context.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/longlora.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/loop_budget.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/loop_daemon.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/loop_iteration.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/loop_stages.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/loop_state.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/lr_finder.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/lr_groups.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/magpie.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/metrics.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/mii.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/minillm.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/mix_proxy.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/mixed_precision.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/mlx.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/mod.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/moe.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/moe_quant.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/mole_routing.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/multipack.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/multipack_sampler.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/multipack_trainer.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/namespace_pin.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/neat_packing.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/ngram_spec.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/nlg_metrics.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/ollama.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/onboarding.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/optimizer_zoo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/paths.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/peft_builder.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/peft_patches.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/persona_hub.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/pipeline.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/preference_combine.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/prm.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/prm_reward.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/probe_kernel.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/probe_pack.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/profiler.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/profiling.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/profiling_v0_43.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/prompt_compile.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/prompt_distill.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/prune_prompt.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/qat.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/qr_url.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/quality.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/quant_menu.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/ra_dit.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/ra_dit_run.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/raft.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/reasoning_effort.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/reasoning_parser.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/recipe_dag.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/recipe_run.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/registry.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/relora.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/replay.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/repro_receipt.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/reward_hack_control.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/reward_hacking.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/ring_attention.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/rl_checkpoint.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/rl_signal_buffer.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/run_cost.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/sae_diff.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/save_formats.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/server_tools.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/sglang.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/ship_verdict.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/shortcuts.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/shrink.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/signing.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/sleeper_probe.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/soup_lock.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/spec_pairing.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/spectrum_scan.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/spike_recovery.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/sse_train_stream.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/steering.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/strict_safetensors.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/structured_output.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/sweep_config.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/tail_latency.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/terraform_plan.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/tool_outputs.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/topology.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/tracing.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/trackers.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/train_event_buffer.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/trainer_plugins.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/trust_remote.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/truth_probe.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/tts.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/tts_codec.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/tunability.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/ui_env.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/uld.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/unlearn_kernels.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/unlearning.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/unlearning_eval.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/unsloth.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/v028_features.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/vector_bank.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/vllm.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/vscode_setup.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/warmup.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/webhooks.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/src/soup_cli/utils/why.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/templates/chat.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/templates/code.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/templates/medical.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/conftest.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/qa/v053_qa.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/qa/v07114_qa.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/qa/v0716_qa.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_adapters.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_advanced_peft.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_assistant_mask.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_audio.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_auto_tuning.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_autopilot.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_awq_gptq_export.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_batch_probe.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_bco.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_bench.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_brain_rot_multilingual.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_bugfixes.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_build_dag.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_callback.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_cans.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_chat.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_chat_template.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_cli.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_cli_subprocess.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_code_review_critical.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_code_review_deferred.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_code_review_high.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_code_review_medium_low.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_code_review_recurring.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_config.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_cost.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_crash_reporter.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_curriculum.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_data.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_data_augment.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_data_sample.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_data_split.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_data_tools.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_dataset_hub.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_dataset_registry.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_deepspeed.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_deploy_ollama.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_diff.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_display.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_doctor.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_dpo_example.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_dpo_variants.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_embedding.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_errors.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_eval.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_eval_gate.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_eval_platform.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_export.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_formats.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_fp8_recipe.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_freeze_training.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_generate.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_gpu.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_grpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_hf_integration.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_infer.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_inference_advanced.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_init.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_ipo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_jinja_analyzer.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_kto.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_loader.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_log_level.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_loss_watchdog.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_merge.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_migrate.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_mlx_backend.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_moe.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_multi_adapter.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_multi_gpu.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_multipack_config.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_multipack_invariants.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_multipack_sampler.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_neat_packing.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_neftune_rslora.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_onnx_tensorrt_export.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_orpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_packing.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_part_a_wave1.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_part_a_wave2.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_part_f_hardening.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_peft_methods.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_peft_patches.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_performance.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_pissa_init.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_ppo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_preference_dispatcher.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_preference_multi.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_preference_multi_runtime.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_pretrain.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_profile.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_profiling.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_progress.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_push.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_qat.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_quality_filter.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_quant_check.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_quant_menu.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_quickstart.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_rank_pattern.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_recipes.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_recipes_v031.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_refusal_multilingual.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_registry.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_relora.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_replay.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_resume.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_review_fixes_v07133.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_rlvr.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_run_cost.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_runs.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_serve.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_server_generate.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_sglang_serve.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_simpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_smoke_train.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_speculative_decoding.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_sweep.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_synth_data_pro.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_templates_yaml.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_tensorboard.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_tool_calling.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_trace_to_pref.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_tracker.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_trainer_coverage_v035.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_trainer_init.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_training_intelligence.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_training_speed.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_trust_remote_code.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_tui.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_ui.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_ui_chat.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_ui_config_builder.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_ui_live_monitor.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_ui_metrics.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_unsloth.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0401_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0401_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0401_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0402_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0402_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0403_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0403_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0403_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0404_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0404_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0405_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0406_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0410_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0410_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0410_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0420.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0430_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0430_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0430_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0430_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0440_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0440_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0440_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0440_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0440_review_followups.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0450.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0460_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0460_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0470_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0470_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0480_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0480_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0490.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0500_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0500_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0500_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0500_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0500_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0510.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0520.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0530.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v05310.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v05311.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0531_109.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0531_139.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0531_142.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0531_82.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0532.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0533.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0534.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0535.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0536.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0537.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0538.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0539.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0540.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0550.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0550_followups.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0560.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0570_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0570_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0570_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0570_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0580.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0590.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0600_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0600_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0600_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0600_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0600_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0600_part_f.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0610_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0610_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0610_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0610_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0610_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0620_followups.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0620_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0620_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0620_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0620_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0620_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0630_followups.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0630_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0630_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0630_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0630_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0630_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0631_206.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0640_followups.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0640_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0640_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0640_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0640_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0640_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0640_part_f.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0650_followups.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0650_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0650_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0650_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0650_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0650_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0660_cli.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0660_followups.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0660_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0660_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0660_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0660_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0660_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0670_followups.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0670_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0670_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0670_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0670_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0670_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0670_part_f.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0680_followups.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0680_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0680_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0680_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0680_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0680_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0690_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0690_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0690_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0690_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0690_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0700_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0700_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0700_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0700_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0700_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0700_part_f.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07110.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07111.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07112.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07113.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07114.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07115.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07116.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07117.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07118.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07119.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0712.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07120.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07121.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07122.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07123.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07124.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07125.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07126.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07127.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07128.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07129.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0713.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07130.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07131.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07132.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v07133.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0714.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0715.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0716.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0717.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0718.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_v0719.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_validator.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_vision.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_vllm_serve.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_warmup.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_why.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.34}/tests/test_windows_encoding.py +0 -0
|
@@ -12,6 +12,27 @@ reproducing 70+ versions of notes.
|
|
|
12
12
|
|
|
13
13
|
## [Unreleased]
|
|
14
14
|
|
|
15
|
+
## [0.71.34] - 2026-07-15
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
- **`soup adapters arithmetic` — task-vector algebra over LoRA adapters (add / scale / negate).**
|
|
19
|
+
Apply task arithmetic (arXiv:2212.04089) to LoRA deltas via an expression such as
|
|
20
|
+
`"coder + 0.5*math - toxic"`, mapping names to adapter dirs with repeatable
|
|
21
|
+
`--adapter name=path`. Produces one merged adapter you can serve or merge.
|
|
22
|
+
- Signed, un-normalized element-wise combine over same-rank adapters; the effective
|
|
23
|
+
delta `ΔW = B @ A` scales **linearly** with each coefficient (negation flips the
|
|
24
|
+
delta, `0.5·` halves it) via a √|c| factor split — not the `c²` a naive sum gives.
|
|
25
|
+
Mixed-rank inputs are refused with a clear "harmonize rank" message.
|
|
26
|
+
- Reuses the backdoor-scan gate (refuses a FAIL-scanned input unless `--allow-unscanned`)
|
|
27
|
+
and a same-base-model check (`--allow-cross-base` to override). Hand-written expression
|
|
28
|
+
parser (no `eval`), cwd-contained/symlink-rejecting paths, exit 0 = ok / 1 = refusal.
|
|
29
|
+
- **LISA — Layerwise Importance Sampled AdamW (arXiv:2403.17919).** Full-fine-tuning
|
|
30
|
+
quality at LoRA-like memory: every N steps LISA freezes all decoder layers except a
|
|
31
|
+
small random set (embeddings + head always trainable). Enable with
|
|
32
|
+
`training.lisa_enabled: true` (+ `lisa_num_layers`, `lisa_interval_steps`) on a
|
|
33
|
+
`task: sft`, transformers, text, `quantization: none` run; mutually exclusive with
|
|
34
|
+
LoRA features and the other freeze mechanisms. Live on a 4 GB GPU for small models.
|
|
35
|
+
|
|
15
36
|
## [0.71.33] - 2026-07-13
|
|
16
37
|
|
|
17
38
|
### 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 (312 files, 15906 tests)
|
|
124
124
|
examples/ - Real-world config examples and datasets
|
|
125
125
|
```
|
|
126
126
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: soup-cli
|
|
3
|
-
Version: 0.71.
|
|
3
|
+
Version: 0.71.34
|
|
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,45 +193,38 @@ infrastructure instead of improving models. Soup fixes that.
|
|
|
193
193
|
|
|
194
194
|
## What's New
|
|
195
195
|
|
|
196
|
-
**v0.71.
|
|
197
|
-
|
|
198
|
-
- **`soup
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
- **
|
|
207
|
-
|
|
208
|
-
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.
|
|
196
|
+
**v0.71.34 — adapter algebra + LISA.** Compose fine-tunes like vectors, and train big-model quality on a small-model memory budget.
|
|
197
|
+
|
|
198
|
+
- **`soup adapters arithmetic "coder + 0.5*math - toxic"`.** Task-vector algebra over LoRA
|
|
199
|
+
adapters (arXiv:2212.04089) — **add, scale, and NEGATE** trained behaviours into one merged
|
|
200
|
+
adapter. The math is done right: a LoRA's effective delta `ΔW = B·A` scales *linearly* with
|
|
201
|
+
each coefficient (subtracting an adapter actually removes its behaviour), not quadratically.
|
|
202
|
+
Same-base + backdoor-scan gated; mixed ranks refused with a clear message.
|
|
203
|
+
- **LISA — layerwise importance sampling (`training.lisa_enabled`).** Full-fine-tuning quality
|
|
204
|
+
at LoRA-like memory (arXiv:2403.17919): every N steps LISA re-activates a small random set of
|
|
205
|
+
decoder layers (embeddings + head always on) and freezes the rest. Live on a 4 GB GPU.
|
|
206
|
+
- **Verified on real models (RTX 3050).** LISA trains SmolLM2-135M end-to-end; `2·a` produces an
|
|
207
|
+
adapter whose ΔW is *exactly* 2× the original's — the merged adapter loads and serves.
|
|
212
208
|
|
|
213
209
|
```bash
|
|
214
|
-
soup
|
|
215
|
-
--
|
|
210
|
+
soup adapters arithmetic "coder - toxic" \
|
|
211
|
+
--adapter coder=./coder-lora --adapter toxic=./toxic-lora -o ./cleaned
|
|
212
|
+
|
|
213
|
+
soup train --config sft.yaml # with training.lisa_enabled: true, lisa_num_layers: 2
|
|
216
214
|
```
|
|
217
215
|
|
|
218
216
|
<details>
|
|
219
|
-
<summary>Previous release — v0.71.
|
|
217
|
+
<summary>Previous release — v0.71.33, <code>soup draft</code> (measure speculative decoding)</summary>
|
|
220
218
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
219
|
+
`soup draft measure` reports a draft model's **acceptance rate** + real plain-vs-assisted tok/s
|
|
220
|
+
(exit 0/2/1 for CI); `soup draft distill` distils your target into a dense tiny draft, auto-wired
|
|
221
|
+
into `soup serve --auto-spec`. The honest result on a small same-family pair: distillation didn't
|
|
222
|
+
move acceptance (69.3% → 69.3%) and assisted decoding was a net slowdown — which is exactly the
|
|
223
|
+
number you want *before* shipping speculative decoding.
|
|
225
224
|
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
data:
|
|
230
|
-
format: asr # rows: {"audio": "clip.wav", "text": "hello world"}
|
|
231
|
-
audio_dir: ./data/audio
|
|
232
|
-
training:
|
|
233
|
-
asr_language: en
|
|
234
|
-
asr_lora: true # optional; default = full fine-tune
|
|
225
|
+
```bash
|
|
226
|
+
soup draft measure --target ./my-tuned-model --draft HuggingFaceTB/SmolLM2-135M-Instruct \
|
|
227
|
+
--prompts prod-prompts.jsonl # -> acceptance %, real tok/s, ship-or-not
|
|
235
228
|
```
|
|
236
229
|
|
|
237
230
|
</details>
|
|
@@ -315,7 +308,7 @@ The full feature reference lives in [`docs/`](docs/). Start here:
|
|
|
315
308
|
| [Performance & quantization](docs/performance-and-quantization.md) | QAT, FP8, Quant Menu (I + II), KV-cache, NVFP4, save formats, Cut Cross-Entropy, gradient checkpointing, kernels, activation offloading, multi-GPU / DeepSpeed / FSDP |
|
|
316
309
|
| [Data engineering](docs/data.md) | Formats, the Axolotl/LF-parity pipeline, data tools, synthetic generation & forge, quality scorecards, trace tooling, remote datasets, mixing, recipe DAGs |
|
|
317
310
|
| [Evaluation & probes](docs/evaluation.md) | Eval design/gate, eval-gated training, benchmarks, NLG metrics, calibration, Elo arena, diagnose, post-train X-ray probes, A/B, drift, tunability, `soup advise` |
|
|
318
|
-
| [Serving & export](docs/serving-and-export.md) | OpenAI-compatible server, batch inference, benchmarking, merge/export, Anthropic Messages endpoint, speculative decoding, deploy autopilot, Web UI, Agent Forge |
|
|
311
|
+
| [Serving & export](docs/serving-and-export.md) | OpenAI-compatible server, batch inference, benchmarking, merge/export, Anthropic Messages endpoint, speculative decoding (train + measure your own draft), deploy autopilot, Web UI, Agent Forge |
|
|
319
312
|
| [Adapters, registry & governance](docs/adapters-and-governance.md) | Adapter lifecycle/management, model registry, Soup Cans, the data flywheel (`soup loop`), knowledge editing, steering, supply-chain controls (scan/sign/BOM/attest/audit/airgap) |
|
|
320
313
|
| [Backends, platform & ops](docs/backends-and-ops.md) | MLX/Unsloth backends, alternative hubs, HF Hub integration, autopilot, experiment tracking, plan/apply, env lockfiles, hardware-fit, completions, plugins, utility commands |
|
|
321
314
|
| [Command reference](docs/commands.md) | The full `soup` command list |
|
|
@@ -49,45 +49,38 @@ infrastructure instead of improving models. Soup fixes that.
|
|
|
49
49
|
|
|
50
50
|
## What's New
|
|
51
51
|
|
|
52
|
-
**v0.71.
|
|
53
|
-
|
|
54
|
-
- **`soup
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
- **
|
|
63
|
-
|
|
64
|
-
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.
|
|
52
|
+
**v0.71.34 — adapter algebra + LISA.** Compose fine-tunes like vectors, and train big-model quality on a small-model memory budget.
|
|
53
|
+
|
|
54
|
+
- **`soup adapters arithmetic "coder + 0.5*math - toxic"`.** Task-vector algebra over LoRA
|
|
55
|
+
adapters (arXiv:2212.04089) — **add, scale, and NEGATE** trained behaviours into one merged
|
|
56
|
+
adapter. The math is done right: a LoRA's effective delta `ΔW = B·A` scales *linearly* with
|
|
57
|
+
each coefficient (subtracting an adapter actually removes its behaviour), not quadratically.
|
|
58
|
+
Same-base + backdoor-scan gated; mixed ranks refused with a clear message.
|
|
59
|
+
- **LISA — layerwise importance sampling (`training.lisa_enabled`).** Full-fine-tuning quality
|
|
60
|
+
at LoRA-like memory (arXiv:2403.17919): every N steps LISA re-activates a small random set of
|
|
61
|
+
decoder layers (embeddings + head always on) and freezes the rest. Live on a 4 GB GPU.
|
|
62
|
+
- **Verified on real models (RTX 3050).** LISA trains SmolLM2-135M end-to-end; `2·a` produces an
|
|
63
|
+
adapter whose ΔW is *exactly* 2× the original's — the merged adapter loads and serves.
|
|
68
64
|
|
|
69
65
|
```bash
|
|
70
|
-
soup
|
|
71
|
-
--
|
|
66
|
+
soup adapters arithmetic "coder - toxic" \
|
|
67
|
+
--adapter coder=./coder-lora --adapter toxic=./toxic-lora -o ./cleaned
|
|
68
|
+
|
|
69
|
+
soup train --config sft.yaml # with training.lisa_enabled: true, lisa_num_layers: 2
|
|
72
70
|
```
|
|
73
71
|
|
|
74
72
|
<details>
|
|
75
|
-
<summary>Previous release — v0.71.
|
|
73
|
+
<summary>Previous release — v0.71.33, <code>soup draft</code> (measure speculative decoding)</summary>
|
|
76
74
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
75
|
+
`soup draft measure` reports a draft model's **acceptance rate** + real plain-vs-assisted tok/s
|
|
76
|
+
(exit 0/2/1 for CI); `soup draft distill` distils your target into a dense tiny draft, auto-wired
|
|
77
|
+
into `soup serve --auto-spec`. The honest result on a small same-family pair: distillation didn't
|
|
78
|
+
move acceptance (69.3% → 69.3%) and assisted decoding was a net slowdown — which is exactly the
|
|
79
|
+
number you want *before* shipping speculative decoding.
|
|
81
80
|
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
data:
|
|
86
|
-
format: asr # rows: {"audio": "clip.wav", "text": "hello world"}
|
|
87
|
-
audio_dir: ./data/audio
|
|
88
|
-
training:
|
|
89
|
-
asr_language: en
|
|
90
|
-
asr_lora: true # optional; default = full fine-tune
|
|
81
|
+
```bash
|
|
82
|
+
soup draft measure --target ./my-tuned-model --draft HuggingFaceTB/SmolLM2-135M-Instruct \
|
|
83
|
+
--prompts prod-prompts.jsonl # -> acceptance %, real tok/s, ship-or-not
|
|
91
84
|
```
|
|
92
85
|
|
|
93
86
|
</details>
|
|
@@ -171,7 +164,7 @@ The full feature reference lives in [`docs/`](docs/). Start here:
|
|
|
171
164
|
| [Performance & quantization](docs/performance-and-quantization.md) | QAT, FP8, Quant Menu (I + II), KV-cache, NVFP4, save formats, Cut Cross-Entropy, gradient checkpointing, kernels, activation offloading, multi-GPU / DeepSpeed / FSDP |
|
|
172
165
|
| [Data engineering](docs/data.md) | Formats, the Axolotl/LF-parity pipeline, data tools, synthetic generation & forge, quality scorecards, trace tooling, remote datasets, mixing, recipe DAGs |
|
|
173
166
|
| [Evaluation & probes](docs/evaluation.md) | Eval design/gate, eval-gated training, benchmarks, NLG metrics, calibration, Elo arena, diagnose, post-train X-ray probes, A/B, drift, tunability, `soup advise` |
|
|
174
|
-
| [Serving & export](docs/serving-and-export.md) | OpenAI-compatible server, batch inference, benchmarking, merge/export, Anthropic Messages endpoint, speculative decoding, deploy autopilot, Web UI, Agent Forge |
|
|
167
|
+
| [Serving & export](docs/serving-and-export.md) | OpenAI-compatible server, batch inference, benchmarking, merge/export, Anthropic Messages endpoint, speculative decoding (train + measure your own draft), deploy autopilot, Web UI, Agent Forge |
|
|
175
168
|
| [Adapters, registry & governance](docs/adapters-and-governance.md) | Adapter lifecycle/management, model registry, Soup Cans, the data flywheel (`soup loop`), knowledge editing, steering, supply-chain controls (scan/sign/BOM/attest/audit/airgap) |
|
|
176
169
|
| [Backends, platform & ops](docs/backends-and-ops.md) | MLX/Unsloth backends, alternative hubs, HF Hub integration, autopilot, experiment tracking, plan/apply, env lockfiles, hardware-fit, completions, plugins, utility commands |
|
|
177
170
|
| [Command reference](docs/commands.md) | The full `soup` command list |
|
|
@@ -12,7 +12,7 @@ feature reference — every `soup` capability, grouped by area.
|
|
|
12
12
|
| [Performance & quantization](performance-and-quantization.md) | QAT, FP8, Quant Menu (I + II), KV-cache, NVFP4, save formats, Cut Cross-Entropy, gradient checkpointing, kernels, activation offloading, multi-GPU / DeepSpeed / FSDP |
|
|
13
13
|
| [Data engineering](data.md) | Formats, the Axolotl/LF-parity pipeline, data tools, synthetic generation & forge, quality scorecards, trace tooling, remote datasets, mixing, recipe DAGs |
|
|
14
14
|
| [Evaluation & probes](evaluation.md) | Eval design/gate, eval-gated training, benchmarks, NLG metrics, calibration, Elo arena, diagnose, `soup ship` verdict, post-train X-ray probes, A/B, drift, tunability, `soup advise` |
|
|
15
|
-
| [Serving & export](serving-and-export.md) | OpenAI-compatible server, batch inference, benchmarking, merge/export, Anthropic Messages endpoint, speculative decoding, deploy autopilot, Web UI, Agent Forge |
|
|
15
|
+
| [Serving & export](serving-and-export.md) | OpenAI-compatible server, batch inference, benchmarking, merge/export, Anthropic Messages endpoint, speculative decoding (train + measure your own draft), deploy autopilot, Web UI, Agent Forge |
|
|
16
16
|
| [Adapters, registry & governance](adapters-and-governance.md) | Adapter lifecycle/management, model registry, Soup Cans, the data flywheel (`soup loop`), knowledge editing, steering, supply-chain controls |
|
|
17
17
|
| [Backends, platform & ops](backends-and-ops.md) | MLX/Unsloth backends, Modal cloud GPU training, alternative hubs, HF Hub integration, autopilot, experiment tracking, plan/apply, env lockfiles, hardware-fit, completions, plugins, utility commands |
|
|
18
18
|
| [Command reference](commands.md) | The full `soup` command list |
|
|
@@ -270,6 +270,12 @@ soup adapters merge ./run-v17 ./run-v18 ./run-v19 -o ./merged --strategy ties \
|
|
|
270
270
|
soup adapters merge ./run-v17 ./run-v18 -o ./merged --strategy dare \
|
|
271
271
|
--density 0.5 --seed 42
|
|
272
272
|
|
|
273
|
+
# Task-vector arithmetic (v0.71.34) — add / scale / NEGATE trained behaviours
|
|
274
|
+
# into one adapter (arXiv:2212.04089). Names map to dirs via --adapter name=path.
|
|
275
|
+
soup adapters arithmetic "coder + 0.5*math - toxic" \
|
|
276
|
+
--adapter coder=./coder-lora --adapter math=./math-lora \
|
|
277
|
+
--adapter toxic=./toxic-lora -o ./blended
|
|
278
|
+
|
|
273
279
|
# Leave-one-out ablation plan against a 4-hour wall-clock budget
|
|
274
280
|
soup adapters blame ./run-v18 --dataset train.jsonl --layer q_proj.7 \
|
|
275
281
|
--budget 4h --shards 10 --plan-only
|
|
@@ -314,6 +320,8 @@ soup adapters branches
|
|
|
314
320
|
|
|
315
321
|
**v0.71.4:** the merge verdict is now LIVE — `soup adapters merge … --canary suite.json` lifts the `MergeReport.verdict` `UNKNOWN` stub. A pre-scored `{"baseline_scores","candidate_scores"}` suite classifies the blend OK / MINOR / MAJOR with no model load; a `{"tasks":[...]}` suite uses an injectable scorer. `--strict-verdict` exits 2 on MAJOR. The backdoor-scan and license-conflict gates now run for **every** strategy, including `cmaes`. `soup adapters branch <name> --from-registry <id>` / `--attach-to-registry <id>` link training-env snapshots into the Registry lineage DAG (shown as a `branches` node in `soup history`).
|
|
316
322
|
|
|
323
|
+
**v0.71.34 — task-vector arithmetic.** `soup adapters arithmetic "<expr>"` applies task arithmetic (arXiv:2212.04089) to LoRA deltas: **add** (blend two skills), **scale** (`2*coder`), and — the differentiator — **negate** (`- toxic` removes a behaviour). Names in the expression map to adapter dirs via repeatable `--adapter name=path`. The math is done at the effective-delta level: a LoRA contributes `ΔW = B·A`, so the coefficient is applied so that `ΔW` scales **linearly** (subtracting an adapter actually negates its delta — a naïve element-wise sum would scale by `c²`, making negation a no-op). Adapters must share the base model (`--allow-cross-base` to override) and rank (mixed ranks are refused, not silently approximated). Each input passes the v0.71.2 backdoor-scan gate (`--allow-unscanned` to skip). Output is a single loadable adapter; exit 0 = ok, 1 = refusal.
|
|
324
|
+
|
|
317
325
|
|
|
318
326
|
## Soup Cans (Shareable Recipes)
|
|
319
327
|
|
|
@@ -27,6 +27,7 @@ soup merge --adapter ./output Merge LoRA with base model
|
|
|
27
27
|
soup merge-sharded-fsdp-weights ./shards -o merged.safetensors Consolidate FSDP shards into one safetensors (v0.71.14; --plan-only previews)
|
|
28
28
|
soup delinearize-llama4 ./src --target ./out [--num-experts N] [--plan-only] Live Llama-4 fused-expert reshape [E*din,dout] -> [E,din,dout] + sidecar copy (v0.71.21)
|
|
29
29
|
soup spectrum scan --model <id|path> --top-percent 50 [--modules mlp,attn] [-o patch.yaml] Spectrum SNR scan (no model load) -> training.unfrozen_parameters YAML patch (v0.71.23)
|
|
30
|
+
soup train --config sft.yaml # training.lisa_enabled: true [lisa_num_layers lisa_interval_steps] LISA layerwise importance sampling — full-FT quality at LoRA-like memory (sft/transformers/text/quantization=none) (v0.71.34)
|
|
30
31
|
soup export --model ./output --format gguf Export to GGUF (Ollama)
|
|
31
32
|
soup export --model ./output --deploy ollama Export GGUF + auto-deploy to Ollama
|
|
32
33
|
soup export --model ./output --format onnx Export to ONNX
|
|
@@ -184,6 +185,7 @@ soup adapters sign <adapter> [--backend unsigned|ed25519] [--key <pem>|--generat
|
|
|
184
185
|
soup adapters verify <adapter> [--strict] [--public-key <pem>] Verify manifest + ed25519 signature
|
|
185
186
|
soup adapters check-safetensors <adapter> [--strict] Refuse pickle / PyTorch-classic weights
|
|
186
187
|
soup adapters merge ... [--license <id>] [--license-override <reason>] [--allow-unscanned] License + backdoor-scan gates (auto-detect license; scan FAIL refused)
|
|
188
|
+
soup adapters arithmetic "coder + 0.5*math - toxic" --adapter coder=<p> --adapter math=<p> --adapter toxic=<p> -o <out> [--allow-unscanned --allow-cross-base] Task-vector algebra over LoRA adapters (add/scale/negate; same-rank; scan + same-base gated) (v0.71.34)
|
|
187
189
|
soup attest emit ... [--sign ed25519 --key <pem>] [-o att.json] in-toto/SLSA-3 attestation (+ .sig sidecar)
|
|
188
190
|
soup attest verify <statement> --signature <sig> [--public-key <pem>] Verify ed25519 attestation signature
|
|
189
191
|
soup airgap-bundle --model <m> --output <out.tar> [--repro-receipt <r.json>] Signed tarball for data-diode transfer (embeds repro-receipt)
|
|
@@ -380,6 +380,25 @@ training:
|
|
|
380
380
|
|
|
381
381
|
Works with and without LoRA. When used with LoRA, LoRA is applied only to unfrozen layers.
|
|
382
382
|
|
|
383
|
+
## LISA — Layerwise Importance Sampling (v0.71.34)
|
|
384
|
+
|
|
385
|
+
LISA (Layerwise Importance Sampled AdamW, [arXiv:2403.17919](https://arxiv.org/abs/2403.17919)) targets full-fine-tuning quality at LoRA-like memory. Instead of picking layers once (that's Spectrum's static `unfrozen_parameters`), LISA re-samples a small random set of decoder layers **every N steps** and freezes the rest; the input embeddings, the LM head, and the final norm stay trainable throughout.
|
|
386
|
+
|
|
387
|
+
```yaml
|
|
388
|
+
task: sft
|
|
389
|
+
backend: transformers
|
|
390
|
+
modality: text
|
|
391
|
+
training:
|
|
392
|
+
quantization: none # LISA is full-FT of the active layers
|
|
393
|
+
lisa_enabled: true
|
|
394
|
+
lisa_num_layers: 2 # decoder layers active per interval (clamped to model depth)
|
|
395
|
+
lisa_interval_steps: 20 # re-sample cadence, in global steps
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
Because only a handful of layers train at any moment (and their optimizer state is cleared when they're re-frozen), peak optimizer memory is roughly `embeddings + head + lisa_num_layers` — far below a full fine-tune, while every layer still gets updated over the course of training. LISA is `sft` + `transformers` + `text` + `quantization: none` only, and is mutually exclusive with LoRA features, `freeze_layers`/`freeze_ratio`, and Spectrum's `unfrozen_parameters` (each independently decides what trains).
|
|
399
|
+
|
|
400
|
+
Implementation note: the model is left fully trainable at trainer-setup time so HF's optimizer (built before the first callback fires) contains every decoder parameter; the LISA callback then toggles `requires_grad` per interval — frozen parameters produce no gradient and the optimizer skips them.
|
|
401
|
+
|
|
383
402
|
|
|
384
403
|
## Loss Watchdog
|
|
385
404
|
|
|
@@ -15,6 +15,17 @@ console = Console()
|
|
|
15
15
|
|
|
16
16
|
app = typer.Typer(no_args_is_help=True)
|
|
17
17
|
|
|
18
|
+
# Strip C0/DEL control bytes from adapter-config-derived text before it reaches
|
|
19
|
+
# the terminal. rich.markup.escape() only neutralises Rich's [...] tags, not raw
|
|
20
|
+
# ANSI/OSC/ESC bytes that could spoof a title bar or hide a refusal (mirrors
|
|
21
|
+
# commands/data_doctor.py::_for_terminal). Keep tab/LF/CR.
|
|
22
|
+
_CONTROL_STRIP_TABLE = {i: None for i in range(0x20) if i not in (0x09, 0x0A, 0x0D)}
|
|
23
|
+
_CONTROL_STRIP_TABLE[0x7F] = None
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def _for_terminal(text: str) -> str:
|
|
27
|
+
return text.translate(_CONTROL_STRIP_TABLE)
|
|
28
|
+
|
|
18
29
|
|
|
19
30
|
def _find_adapters(directory: Path, max_depth: int = 6) -> list[Path]:
|
|
20
31
|
"""Recursively find directories containing adapter_config.json.
|
|
@@ -664,6 +675,220 @@ def merge(
|
|
|
664
675
|
raise typer.Exit(2)
|
|
665
676
|
|
|
666
677
|
|
|
678
|
+
@app.command()
|
|
679
|
+
def arithmetic(
|
|
680
|
+
expression: str = typer.Argument(
|
|
681
|
+
...,
|
|
682
|
+
help='Task-vector expression, e.g. "coder + 0.5*math - toxic".',
|
|
683
|
+
),
|
|
684
|
+
adapter: list[str] = typer.Option(
|
|
685
|
+
...,
|
|
686
|
+
"--adapter",
|
|
687
|
+
help=(
|
|
688
|
+
"name=path mapping for each adapter referenced in the expression "
|
|
689
|
+
"(repeatable). Names use [A-Za-z0-9_.-]."
|
|
690
|
+
),
|
|
691
|
+
),
|
|
692
|
+
output: str = typer.Option(
|
|
693
|
+
..., "--output", "-o", help="Output directory for the merged adapter"
|
|
694
|
+
),
|
|
695
|
+
allow_unscanned: bool = typer.Option(
|
|
696
|
+
False,
|
|
697
|
+
"--allow-unscanned",
|
|
698
|
+
help=(
|
|
699
|
+
"Skip the backdoor-scan gate (v0.71.2 #192). By default refuses an "
|
|
700
|
+
"input whose `adapters scan` returns FAIL or cannot be scanned."
|
|
701
|
+
),
|
|
702
|
+
),
|
|
703
|
+
allow_cross_base: bool = typer.Option(
|
|
704
|
+
False,
|
|
705
|
+
"--allow-cross-base",
|
|
706
|
+
help=(
|
|
707
|
+
"Allow combining adapters trained on different base models. By "
|
|
708
|
+
"default a base-model mismatch is refused (task vectors from "
|
|
709
|
+
"different bases are not comparable)."
|
|
710
|
+
),
|
|
711
|
+
),
|
|
712
|
+
):
|
|
713
|
+
"""Task-vector arithmetic over LoRA adapters (add / scale / negate) (v0.71.34).
|
|
714
|
+
|
|
715
|
+
Applies task arithmetic (arXiv:2212.04089) element-wise to LoRA deltas of
|
|
716
|
+
same-rank adapters. Example:
|
|
717
|
+
|
|
718
|
+
soup adapters arithmetic "coder + 0.5*math - toxic" \\
|
|
719
|
+
--adapter coder=./coder --adapter math=./math \\
|
|
720
|
+
--adapter toxic=./toxic -o ./merged
|
|
721
|
+
|
|
722
|
+
Exit 0 = success, 1 = any refusal (bad expression, unknown adapter, rank
|
|
723
|
+
mismatch, cross-base without --allow-cross-base, scan FAIL, path escape).
|
|
724
|
+
"""
|
|
725
|
+
import re
|
|
726
|
+
|
|
727
|
+
from soup_cli.utils.adapter_arithmetic import (
|
|
728
|
+
ArithmeticReport,
|
|
729
|
+
merge_task_arithmetic,
|
|
730
|
+
parse_expression,
|
|
731
|
+
read_adapter_base,
|
|
732
|
+
)
|
|
733
|
+
from soup_cli.utils.adapter_diff import load_adapter_weights
|
|
734
|
+
from soup_cli.utils.adapter_merge import write_merged_adapter
|
|
735
|
+
from soup_cli.utils.paths import enforce_under_cwd_and_no_symlink
|
|
736
|
+
|
|
737
|
+
# 1. Parse the --adapter name=path map.
|
|
738
|
+
name_re = re.compile(r"^[A-Za-z0-9_.\-]+$")
|
|
739
|
+
mapping: dict[str, str] = {}
|
|
740
|
+
for spec in adapter:
|
|
741
|
+
if "=" not in spec:
|
|
742
|
+
console.print(
|
|
743
|
+
f"[red]--adapter must be name=path, got {escape(spec)}[/]"
|
|
744
|
+
)
|
|
745
|
+
raise typer.Exit(1)
|
|
746
|
+
name, _, path = spec.partition("=")
|
|
747
|
+
name, path = name.strip(), path.strip()
|
|
748
|
+
if not name_re.match(name):
|
|
749
|
+
console.print(
|
|
750
|
+
f"[red]Invalid adapter name {escape(name)!r} "
|
|
751
|
+
"(use [A-Za-z0-9_.-]).[/]"
|
|
752
|
+
)
|
|
753
|
+
raise typer.Exit(1)
|
|
754
|
+
if not path:
|
|
755
|
+
console.print(f"[red]--adapter {escape(name)} has an empty path[/]")
|
|
756
|
+
raise typer.Exit(1)
|
|
757
|
+
if name in mapping:
|
|
758
|
+
console.print(f"[red]Duplicate --adapter name {escape(name)}[/]")
|
|
759
|
+
raise typer.Exit(1)
|
|
760
|
+
try:
|
|
761
|
+
enforce_under_cwd_and_no_symlink(path, "adapter")
|
|
762
|
+
except (ValueError, OSError) as exc:
|
|
763
|
+
console.print(
|
|
764
|
+
f"[red]Adapter path refused for {escape(name)}: "
|
|
765
|
+
f"{escape(str(exc))}[/]"
|
|
766
|
+
)
|
|
767
|
+
raise typer.Exit(1) from exc
|
|
768
|
+
mapping[name] = path
|
|
769
|
+
|
|
770
|
+
# 2. Parse the expression against the declared names.
|
|
771
|
+
try:
|
|
772
|
+
terms = parse_expression(expression, set(mapping))
|
|
773
|
+
except (ValueError, TypeError) as exc:
|
|
774
|
+
console.print(f"[red]Bad expression: {escape(str(exc))}[/]")
|
|
775
|
+
raise typer.Exit(1) from exc
|
|
776
|
+
|
|
777
|
+
referenced = [t.name for t in terms]
|
|
778
|
+
ref_paths = [mapping[n] for n in referenced]
|
|
779
|
+
|
|
780
|
+
# 3. Backdoor-scan gate (mirrors `adapters merge`, #192). Refuse FAIL /
|
|
781
|
+
# un-scannable inputs unless --allow-unscanned; WARN is advisory.
|
|
782
|
+
if not allow_unscanned:
|
|
783
|
+
from soup_cli.utils.adapter_scan import scan_adapter
|
|
784
|
+
|
|
785
|
+
for name, path in zip(referenced, ref_paths):
|
|
786
|
+
try:
|
|
787
|
+
scan_report = scan_adapter(path)
|
|
788
|
+
except (FileNotFoundError, ValueError, TypeError, RuntimeError) as exc:
|
|
789
|
+
console.print(
|
|
790
|
+
f"[red]Could not scan {escape(name)} "
|
|
791
|
+
f"({escape(str(exc))}).[/]\n"
|
|
792
|
+
"[dim]Pass --allow-unscanned to proceed anyway.[/]"
|
|
793
|
+
)
|
|
794
|
+
raise typer.Exit(1) from exc
|
|
795
|
+
if scan_report.overall == "FAIL":
|
|
796
|
+
console.print(
|
|
797
|
+
f"[red]Backdoor scan FAILED for {escape(name)}: "
|
|
798
|
+
f"{escape(scan_report.summary)}[/]\n"
|
|
799
|
+
"[dim]Pass --allow-unscanned to proceed anyway "
|
|
800
|
+
"(not recommended).[/]"
|
|
801
|
+
)
|
|
802
|
+
raise typer.Exit(1)
|
|
803
|
+
if scan_report.overall == "WARN":
|
|
804
|
+
console.print(
|
|
805
|
+
f"[yellow]Backdoor scan WARN for {escape(name)}: "
|
|
806
|
+
f"{escape(scan_report.summary)} — proceeding.[/]"
|
|
807
|
+
)
|
|
808
|
+
|
|
809
|
+
# 4. Same-base check (unless overridden).
|
|
810
|
+
bases: dict[str, str | None] = {}
|
|
811
|
+
for name, path in zip(referenced, ref_paths):
|
|
812
|
+
try:
|
|
813
|
+
bases[name] = read_adapter_base(path)
|
|
814
|
+
except (ValueError, OSError) as exc:
|
|
815
|
+
console.print(
|
|
816
|
+
f"[red]Could not read base model for {escape(name)}: "
|
|
817
|
+
f"{escape(str(exc))}[/]"
|
|
818
|
+
)
|
|
819
|
+
raise typer.Exit(1) from exc
|
|
820
|
+
distinct = {b for b in bases.values() if b is not None}
|
|
821
|
+
if len(distinct) > 1:
|
|
822
|
+
if not allow_cross_base:
|
|
823
|
+
listed = ", ".join(
|
|
824
|
+
f"{escape(n)}={escape(_for_terminal(str(b)))}"
|
|
825
|
+
for n, b in bases.items()
|
|
826
|
+
)
|
|
827
|
+
console.print(
|
|
828
|
+
f"[red]Base-model mismatch across adapters: {listed}.[/]\n"
|
|
829
|
+
"[dim]Task vectors from different bases are not comparable. "
|
|
830
|
+
"Pass --allow-cross-base to proceed anyway.[/]"
|
|
831
|
+
)
|
|
832
|
+
raise typer.Exit(1)
|
|
833
|
+
console.print(
|
|
834
|
+
"[yellow]--allow-cross-base: combining adapters from different "
|
|
835
|
+
"base models (results may be meaningless).[/]"
|
|
836
|
+
)
|
|
837
|
+
|
|
838
|
+
# 5. Output containment.
|
|
839
|
+
try:
|
|
840
|
+
enforce_under_cwd_and_no_symlink(output, "output")
|
|
841
|
+
except (ValueError, OSError) as exc:
|
|
842
|
+
console.print(f"[red]Output path refused: {escape(str(exc))}[/]")
|
|
843
|
+
raise typer.Exit(1) from exc
|
|
844
|
+
|
|
845
|
+
# 6. Load, signed-merge, write.
|
|
846
|
+
try:
|
|
847
|
+
weights_list = [load_adapter_weights(mapping[n]) for n in referenced]
|
|
848
|
+
except (FileNotFoundError, ValueError, RuntimeError) as exc:
|
|
849
|
+
console.print(f"[red]Could not load adapter weights: {escape(str(exc))}[/]")
|
|
850
|
+
raise typer.Exit(1) from exc
|
|
851
|
+
coeffs = [t.coeff for t in terms]
|
|
852
|
+
try:
|
|
853
|
+
merged, skipped = merge_task_arithmetic(weights_list, coeffs)
|
|
854
|
+
except ValueError as exc:
|
|
855
|
+
console.print(f"[red]Merge failed: {escape(str(exc))}[/]")
|
|
856
|
+
raise typer.Exit(1) from exc
|
|
857
|
+
if not merged:
|
|
858
|
+
console.print(
|
|
859
|
+
"[red]No shared LoRA tensors across the referenced adapters — "
|
|
860
|
+
"nothing to merge.[/]"
|
|
861
|
+
)
|
|
862
|
+
raise typer.Exit(1)
|
|
863
|
+
try:
|
|
864
|
+
write_merged_adapter(output, ref_paths[0], merged)
|
|
865
|
+
except (ValueError, RuntimeError, OSError) as exc:
|
|
866
|
+
console.print(f"[red]Could not write merged adapter: {escape(str(exc))}[/]")
|
|
867
|
+
raise typer.Exit(1) from exc
|
|
868
|
+
|
|
869
|
+
report = ArithmeticReport(
|
|
870
|
+
expression=expression,
|
|
871
|
+
terms=tuple(terms),
|
|
872
|
+
output_dir=output,
|
|
873
|
+
merged_layers=len(merged),
|
|
874
|
+
skipped_layers=skipped,
|
|
875
|
+
base_model=next(iter(distinct)) if len(distinct) == 1 else None,
|
|
876
|
+
)
|
|
877
|
+
terms_str = " ".join(
|
|
878
|
+
f"[bold]{t.coeff:+g}[/]·{escape(t.name)}" for t in report.terms
|
|
879
|
+
)
|
|
880
|
+
panel = Panel(
|
|
881
|
+
f"Expression: {escape(report.expression)}\n"
|
|
882
|
+
f"Terms: {terms_str}\n"
|
|
883
|
+
f"Base model: {escape(_for_terminal(str(report.base_model)))}\n"
|
|
884
|
+
f"Merged tensors: [bold]{report.merged_layers}[/]\n"
|
|
885
|
+
f"Skipped tensors:{len(report.skipped_layers)}\n"
|
|
886
|
+
f"Output: [bold]{escape(report.output_dir)}[/]",
|
|
887
|
+
title="Adapter arithmetic",
|
|
888
|
+
)
|
|
889
|
+
console.print(panel)
|
|
890
|
+
|
|
891
|
+
|
|
667
892
|
@app.command()
|
|
668
893
|
def blame(
|
|
669
894
|
adapter_dir: str = typer.Argument(..., help="Path to trained adapter"),
|