soup-cli 0.71.33__tar.gz → 0.71.35__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.35}/CHANGELOG.md +80 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/CONTRIBUTING.md +2 -2
- {soup_cli-0.71.33 → soup_cli-0.71.35}/PKG-INFO +37 -34
- {soup_cli-0.71.33 → soup_cli-0.71.35}/README.md +36 -33
- {soup_cli-0.71.33 → soup_cli-0.71.35}/docs/README.md +2 -1
- {soup_cli-0.71.33 → soup_cli-0.71.35}/docs/adapters-and-governance.md +8 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/docs/commands.md +6 -0
- soup_cli-0.71.35/docs/compliance.md +136 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/docs/peft-and-efficiency.md +19 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/pyproject.toml +1 -1
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/__init__.py +1 -1
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/cli.py +4 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/adapters.py +225 -0
- soup_cli-0.71.35/src/soup_cli/commands/card.py +316 -0
- soup_cli-0.71.35/src/soup_cli/commands/ci.py +65 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/export.py +51 -10
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/push.py +61 -10
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/config/schema.py +135 -0
- soup_cli-0.71.35/src/soup_cli/templates/eu-ai-act.yaml +45 -0
- soup_cli-0.71.35/src/soup_cli/templates/hipaa.yaml +46 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/templates/manifest.json +4 -0
- soup_cli-0.71.35/src/soup_cli/templates/soc2.yaml +45 -0
- soup_cli-0.71.35/src/soup_cli/templates/sr-11-7.yaml +43 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/sft.py +18 -0
- soup_cli-0.71.35/src/soup_cli/utils/adapter_arithmetic.py +288 -0
- soup_cli-0.71.35/src/soup_cli/utils/ci_workflow.py +179 -0
- soup_cli-0.71.35/src/soup_cli/utils/lisa.py +213 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/ollama.py +7 -1
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/peft_wiring.py +26 -0
- soup_cli-0.71.35/tests/test_v07134.py +1041 -0
- soup_cli-0.71.35/tests/test_v07135.py +1010 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/.dockerignore +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/.github/FUNDING.yml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/.github/pull_request_template.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/.github/workflows/ci.yml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/.github/workflows/docker.yml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/.github/workflows/publish.yml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/.github/workflows/recipe-validation.yml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/.gitignore +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/.mailmap +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/.pre-commit-config.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/AGENTS.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/CODEOWNERS +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/CODE_OF_CONDUCT.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/CONTRIBUTORS.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/Dockerfile +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/LICENSE +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/NOTICE +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/SECURITY.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/docker-compose.yml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/docs/backends-and-ops.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/docs/data.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/docs/evaluation.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/docs/models.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/docs/performance-and-quantization.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/docs/serving-and-export.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/docs/training.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/examples/README.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/examples/configs/dpo_chat.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/examples/configs/dpo_example.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/examples/configs/grpo_reasoning.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/examples/configs/rlhf_step1_sft.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/examples/configs/rlhf_step2_reward.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/examples/configs/rlhf_step3_ppo.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/examples/configs/sft_basic.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/examples/configs/vision_llama.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/examples/data/alpaca_tiny.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/examples/data/chat_preferences.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/examples/data/dpo_sample.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/examples/data/reasoning_math.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/examples/reward_hacking/rewards.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/examples/synthetic_workflow.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/examples/synthetic_workflow.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/soup.png +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/soup_logo_svg.svg +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/__main__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/autopilot/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/autopilot/analyzer.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/autopilot/decisions.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/autopilot/generate_config.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/cans/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/cans/pack.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/cans/publish.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/cans/run.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/cans/schema.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/cans/unpack.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/cans/verify.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/cloud/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/cloud/modal.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/_eval_v0550.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/_eval_v0610.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/_eval_v0650.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/_eval_v07110.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/_webhook_cli.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/ab.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/active_sample.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/advise.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/agent.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/airgap.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/apple_adapter.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/attest.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/audit_log.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/autopilot.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/bench.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/bom.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/build.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/can.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/chat.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/compile_cmd.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/compile_tools.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/completions.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/cost.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/data.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/data_doctor.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/data_forge.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/data_mix.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/data_score.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/delinearize_llama4.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/deploy.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/diagnose.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/diff.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/distill_prompt.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/doctor.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/draft.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/drift_alarm.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/edit.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/env.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/eval.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/expect.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/fetch.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/generate.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/history.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/infer.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/ingest.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/init.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/iterative_dpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/license_advisor.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/llama.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/local_rl.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/lock.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/loop.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/mcp.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/merge.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/merge_sharded_fsdp_weights.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/migrate.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/monitor.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/plan.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/plugins.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/probe.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/profile.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/prune_prompt.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/quantize.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/quickstart.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/ra_dit.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/recipes.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/registry.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/runs.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/serve.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/ship.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/shrink.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/spectrum.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/steer.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/sweep.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/tokenizer.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/train.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/tui.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/tunability.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/ui.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/commands/why.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/config/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/config/loader.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/_fixtures/alpaca_tiny.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/_fixtures/behavior/elephant.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/_fixtures/behavior/harmbench.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/_fixtures/behavior/jailbreakbench.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/_fixtures/behavior/syceval.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/_fixtures/behavior/xstest.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/_fixtures/chat_preferences.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/_fixtures/dpo_sample.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/_fixtures/reasoning_math.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/_fixtures/unlearning/muse_demo.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/_fixtures/unlearning/tofu_demo.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/_fixtures/unlearning/wmdp_demo.jsonl +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/augment.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/chat_templates.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/collators.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/formats.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/loader.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/loss_mask.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/providers/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/providers/_utils.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/providers/anthropic.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/providers/ollama.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/providers/vllm.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/sft_format.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/templates/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/templates/code.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/templates/conversation.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/templates/preference.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/templates/qa.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/templates/reasoning.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/templates/tool_calling.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/templates/verifiable.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/traces/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/traces/pair_builder.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/traces/parsers.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/traces/quality.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/data/validator.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/envs/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/envs/_common.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/envs/calculator.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/envs/guess_number.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/envs/retrieval_qa.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/eval/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/eval/arena.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/eval/benchmarks_v0_43.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/eval/calibrate.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/eval/checkpoint_intelligence.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/eval/custom.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/eval/forgetting.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/eval/gate.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/eval/human.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/eval/judge.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/eval/leaderboard.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/eval/quant_check.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/experiment/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/experiment/tracker.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/mcp_server/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/mcp_server/registry.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/mcp_server/server.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/migrate/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/migrate/axolotl.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/migrate/common.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/migrate/llamafactory.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/migrate/unsloth.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/monitoring/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/monitoring/callback.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/monitoring/curriculum_callback.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/monitoring/display.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/monitoring/grpo_stability_callback.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/monitoring/hf_push.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/monitoring/plugin_callback.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/monitoring/trace_logger.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/plugins/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/py.typed +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/recipes/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/recipes/catalog.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/registry/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/registry/attach.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/registry/diff.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/registry/hashing.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/registry/store.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/templates/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/templates/audio.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/templates/bco.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/templates/chat.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/templates/code.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/templates/embedding.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/templates/fetch_examples/llama-3.1-8b-lora.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/templates/fetch_examples/qwen2.5-7b-dpo.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/templates/fetch_examples/zero3-cpu-offload.json +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/templates/ipo.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/templates/kto.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/templates/longcontext.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/templates/medical.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/templates/moe.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/templates/orpo.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/templates/pretrain.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/templates/reasoning.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/templates/rlhf.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/templates/simpo.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/templates/tool-calling.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/templates/vision.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/asr.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/bco.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/bitnet.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/classifier.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/distill.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/dpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/embedding.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/grpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/ipo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/kto.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/mlx_dpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/mlx_grpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/mlx_routing.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/mlx_sft.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/mole_routing.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/online_dpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/orpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/ppo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/preference.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/pretrain.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/prm.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/raft.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/reward_model.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/rewards.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/simpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/tts.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/trainer/unlearn.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/tui_app.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/ui/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/ui/app.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/ui/plugins/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/ui/static/app.js +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/ui/static/index.html +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/ui/static/logo.png +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/ui/static/logo.svg +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/ui/static/style.css +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/_eval_text.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/ab_test.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/activation_offload.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/active_sampler.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/adapter_bisect.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/adapter_branch.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/adapter_diff.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/adapter_fuse.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/adapter_merge.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/adapter_pr.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/adapter_scan.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/adapter_sign.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/advanced_precision.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/advise.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/advise_history.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/agent_forge.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/agent_rollout.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/agent_sandbox.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/airgap_bundle.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/annex_xi.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/anthropic_messages.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/apple_adapter.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/asr_metrics.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/attest.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/audit_log.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/auto_quant.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/backend_detect.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/batch_probe.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/behavior_battery.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/best_of_n.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/bitnet.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/blame.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/block_expansion.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/bom.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/brain_rot.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/brain_rot_lang.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/build_dag.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/canary_discovery.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/canary_router.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/capability_suite.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/checklist_dsl.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/checkpoint_trigger.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/citation_faithful.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/classifier.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/cmaes_merge.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/compile_tools.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/completions.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/constants.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/convergence.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/crash.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/cross_doc_attn.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/curriculum.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/curriculum_dynamic.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/cut_ce.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/data_doctor.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/data_forge.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/data_lint.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/data_mix.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/data_pipeline.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/data_score.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/deepspeed.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/delinearize_llama4.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/demo_bundles.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/deploy_autopilot.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/deploy_measure.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/diagnose/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/diagnose/_common.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/diagnose/badge.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/diagnose/citation.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/diagnose/contamination.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/diagnose/forgetting.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/diagnose/format.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/diagnose/live.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/diagnose/memorization.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/diagnose/mode_collapse.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/diagnose/refusal.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/diagnose/report.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/diagnose/runner.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/distill.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/dpo_variants.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/draft.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/drift_alarm.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/ebft_gdpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/echo_trap.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/edit_diff.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/edit_governor.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/edit_kernels.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/encoding.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/energy.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/env_lock.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/errors.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/eval_design.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/eval_gate_hook.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/eval_lock_coverage.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/evolve.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/expectations.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/fetch_examples.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/flash_attn.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/fp8.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/freeze.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/fsdp.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/fsdp_consolidate.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/galore.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/gguf_quant.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/gpu.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/gpu_monitor.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/grace_codebook.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/graceful_save.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/grad_accum.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/gradient_ckpt.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/grpo_long_context.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/grpo_variants.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/hardware_fit.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/harm_probe.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/hf.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/hf_space.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/hubs.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/ingest_sources.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/integrations.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/interference.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/interference_live.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/irt.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/iterative_dpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/jinja_analyzer.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/kernel_picker.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/knowledge_edit.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/kv_cache.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/launcher.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/license_advisor.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/license_matrix.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/liger.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/live_eval.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/llama_proxy.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/llama_server_timings.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/local_rl.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/local_rl_scheduler.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/loftq_init.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/log_level.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/long_context.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/longlora.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/loop_budget.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/loop_daemon.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/loop_iteration.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/loop_stages.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/loop_state.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/lr_finder.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/lr_groups.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/magpie.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/metrics.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/mii.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/minillm.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/mix_proxy.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/mixed_precision.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/mlx.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/mod.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/moe.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/moe_quant.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/mole_routing.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/multipack.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/multipack_sampler.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/multipack_trainer.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/namespace_pin.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/neat_packing.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/ngram_spec.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/nlg_metrics.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/onboarding.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/optimizer_zoo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/paths.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/peft_builder.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/peft_patches.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/persona_hub.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/pipeline.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/preference_combine.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/prm.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/prm_reward.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/probe_kernel.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/probe_pack.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/profiler.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/profiling.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/profiling_v0_43.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/prompt_compile.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/prompt_distill.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/prune_prompt.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/qat.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/qr_url.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/quality.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/quant_menu.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/ra_dit.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/ra_dit_run.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/raft.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/reasoning_effort.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/reasoning_parser.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/recipe_dag.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/recipe_run.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/registry.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/relora.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/replay.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/repro_receipt.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/reward_hack_control.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/reward_hacking.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/ring_attention.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/rl_checkpoint.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/rl_signal_buffer.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/run_cost.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/sae_diff.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/save_formats.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/server_tools.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/sglang.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/ship_verdict.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/shortcuts.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/shrink.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/signing.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/sleeper_probe.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/soup_lock.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/spec_pairing.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/spectrum_scan.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/spike_recovery.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/sse_train_stream.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/steering.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/strict_safetensors.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/structured_output.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/sweep_config.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/tail_latency.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/terraform_plan.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/tool_outputs.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/topology.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/tracing.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/trackers.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/train_event_buffer.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/trainer_plugins.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/trust_remote.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/truth_probe.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/tts.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/tts_codec.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/tunability.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/ui_env.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/uld.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/unlearn_kernels.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/unlearning.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/unlearning_eval.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/unsloth.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/v028_features.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/vector_bank.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/vllm.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/vscode_setup.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/warmup.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/webhooks.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/src/soup_cli/utils/why.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/templates/chat.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/templates/code.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/templates/medical.yaml +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/__init__.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/conftest.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/qa/v053_qa.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/qa/v07114_qa.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/qa/v0716_qa.md +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_adapters.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_advanced_peft.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_assistant_mask.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_audio.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_auto_tuning.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_autopilot.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_awq_gptq_export.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_batch_probe.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_bco.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_bench.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_brain_rot_multilingual.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_bugfixes.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_build_dag.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_callback.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_cans.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_chat.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_chat_template.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_cli.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_cli_subprocess.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_code_review_critical.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_code_review_deferred.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_code_review_high.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_code_review_medium_low.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_code_review_recurring.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_config.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_cost.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_crash_reporter.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_curriculum.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_data.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_data_augment.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_data_sample.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_data_split.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_data_tools.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_dataset_hub.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_dataset_registry.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_deepspeed.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_deploy_ollama.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_diff.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_display.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_doctor.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_dpo_example.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_dpo_variants.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_embedding.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_errors.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_eval.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_eval_gate.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_eval_platform.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_export.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_formats.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_fp8_recipe.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_freeze_training.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_generate.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_gpu.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_grpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_hf_integration.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_infer.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_inference_advanced.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_init.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_ipo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_jinja_analyzer.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_kto.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_loader.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_log_level.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_loss_watchdog.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_merge.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_migrate.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_mlx_backend.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_moe.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_multi_adapter.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_multi_gpu.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_multipack_config.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_multipack_invariants.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_multipack_sampler.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_neat_packing.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_neftune_rslora.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_onnx_tensorrt_export.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_orpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_packing.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_part_a_wave1.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_part_a_wave2.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_part_f_hardening.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_peft_methods.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_peft_patches.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_performance.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_pissa_init.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_ppo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_preference_dispatcher.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_preference_multi.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_preference_multi_runtime.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_pretrain.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_profile.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_profiling.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_progress.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_push.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_qat.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_quality_filter.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_quant_check.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_quant_menu.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_quickstart.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_rank_pattern.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_recipes.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_recipes_v031.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_refusal_multilingual.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_registry.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_relora.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_replay.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_resume.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_review_fixes_v07133.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_rlvr.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_run_cost.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_runs.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_serve.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_server_generate.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_sglang_serve.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_simpo.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_smoke_train.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_speculative_decoding.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_sweep.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_synth_data_pro.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_templates_yaml.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_tensorboard.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_tool_calling.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_trace_to_pref.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_tracker.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_trainer_coverage_v035.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_trainer_init.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_training_intelligence.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_training_speed.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_trust_remote_code.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_tui.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_ui.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_ui_chat.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_ui_config_builder.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_ui_live_monitor.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_ui_metrics.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_unsloth.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0401_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0401_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0401_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0402_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0402_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0403_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0403_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0403_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0404_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0404_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0405_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0406_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0410_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0410_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0410_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0420.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0430_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0430_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0430_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0430_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0440_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0440_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0440_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0440_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0440_review_followups.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0450.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0460_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0460_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0470_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0470_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0480_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0480_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0490.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0500_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0500_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0500_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0500_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0500_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0510.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0520.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0530.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v05310.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v05311.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0531_109.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0531_139.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0531_142.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0531_82.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0532.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0533.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0534.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0535.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0536.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0537.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0538.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0539.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0540.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0550.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0550_followups.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0560.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0570_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0570_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0570_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0570_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0580.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0590.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0600_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0600_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0600_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0600_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0600_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0600_part_f.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0610_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0610_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0610_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0610_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0610_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0620_followups.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0620_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0620_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0620_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0620_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0620_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0630_followups.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0630_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0630_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0630_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0630_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0630_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0631_206.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0640_followups.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0640_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0640_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0640_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0640_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0640_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0640_part_f.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0650_followups.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0650_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0650_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0650_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0650_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0650_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0660_cli.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0660_followups.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0660_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0660_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0660_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0660_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0660_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0670_followups.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0670_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0670_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0670_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0670_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0670_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0670_part_f.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0680_followups.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0680_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0680_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0680_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0680_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0680_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0690_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0690_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0690_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0690_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0690_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0700_part_a.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0700_part_b.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0700_part_c.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0700_part_d.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0700_part_e.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0700_part_f.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07110.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07111.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07112.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07113.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07114.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07115.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07116.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07117.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07118.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07119.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0712.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07120.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07121.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07122.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07123.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07124.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07125.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07126.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07127.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07128.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07129.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0713.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07130.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07131.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07132.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v07133.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0714.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0715.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0716.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0717.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0718.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_v0719.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_validator.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_vision.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_vllm_serve.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_warmup.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_why.py +0 -0
- {soup_cli-0.71.33 → soup_cli-0.71.35}/tests/test_windows_encoding.py +0 -0
|
@@ -12,6 +12,86 @@ reproducing 70+ versions of notes.
|
|
|
12
12
|
|
|
13
13
|
## [Unreleased]
|
|
14
14
|
|
|
15
|
+
## [0.71.35] - 2026-07-15
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
- **Compliance templates — `soup init --template hipaa|soc2|eu-ai-act|sr-11-7`.**
|
|
19
|
+
Four regulation-shaped starting configs. Soup's compliance controls are CLI
|
|
20
|
+
flags/commands rather than config keys, so each template is a valid training
|
|
21
|
+
config plus header comments naming the exact commands for that regime
|
|
22
|
+
(PHI scrubbing + air-gap for HIPAA, BOM/attest/sign for SOC 2, Annex XI +
|
|
23
|
+
energy tracking for the EU AI Act, repro-receipt + diagnose/ship for SR 11-7).
|
|
24
|
+
Templates default to a license-clean Apache-2.0 base.
|
|
25
|
+
- **`soup card <registry-id> -o MODELCARD.md` — model-card autogen.** Turns a
|
|
26
|
+
Local Model Registry entry into a publishable, provenance-carrying HF model
|
|
27
|
+
card: base model, training config, eval scorecard, config/data hashes,
|
|
28
|
+
lineage (ancestors) and a table of every registered artifact. Adapter vs
|
|
29
|
+
full-model is inferred from registered artifacts, falling back to the training
|
|
30
|
+
config (LoRA rank, with Spectrum/LISA full-FT correctly treated as dense), so
|
|
31
|
+
the card sets the right `library_name` and never misreports the model type.
|
|
32
|
+
- **`soup push --card <registry-id>`** — render that registry-driven card and
|
|
33
|
+
upload it as `README.md`, overriding the auto-generated one. A bad ref fails
|
|
34
|
+
fast before any network call; HF hub only.
|
|
35
|
+
- **`soup ci init` — fine-tuning CI.** Writes `.github/workflows/soup-gate.yml`,
|
|
36
|
+
a PR gate chaining `soup data validate` → `soup expect` →
|
|
37
|
+
`soup ship --evidence` (exit 2 blocks the merge). Every interpolated path is
|
|
38
|
+
validated to stay under the repo root and shell-quoted; the branch and Python
|
|
39
|
+
version are regex-gated; the write is atomic, symlink-rejecting, and refuses
|
|
40
|
+
to clobber an existing workflow without `--force`.
|
|
41
|
+
- **Compliance quickstart** — a new [docs/compliance.md](docs/compliance.md)
|
|
42
|
+
walkthrough: template → PII scrub → train with receipt/Annex XI/energy →
|
|
43
|
+
registry → BOM + attestation → scan/sign/verify → air-gap → model card → CI gate.
|
|
44
|
+
|
|
45
|
+
### Fixed
|
|
46
|
+
- **GGUF export now actually works on Windows** (validated end-to-end against a
|
|
47
|
+
locally-built llama.cpp: SmolLM2-135M → q4_0 / q4_k_m / q8_0 / f16 → `soup deploy
|
|
48
|
+
ollama` → live inference). Four real bugs, each of which independently broke the
|
|
49
|
+
path:
|
|
50
|
+
- **`soup export --format gguf` cloned llama.cpp into your current directory.**
|
|
51
|
+
`SOUP_DIR` is the bare name `.soup`, but the lookup used it relatively rather
|
|
52
|
+
than anchoring to `~` like the rest of the codebase — so the canonical
|
|
53
|
+
`~/.soup/llama.cpp` was never found and a fresh ~200 MB checkout was dropped
|
|
54
|
+
into whatever directory you ran from.
|
|
55
|
+
- **The first GGUF export downgraded your PyTorch and broke CUDA.** The auto-clone
|
|
56
|
+
ran `pip install -r <llama.cpp>/requirements.txt` into your interpreter, and
|
|
57
|
+
llama.cpp pins `torch~=2.2.1` against the CPU wheel index (observed:
|
|
58
|
+
torch 2.5.1+cu → 2.2.2+cpu, transformers 4.57 → 4.46). Soup now installs only
|
|
59
|
+
the convert script's extra dependencies, unpinned, and never touches torch.
|
|
60
|
+
- **A correctly-built llama.cpp was not found on Windows.** MSVC (like Xcode) is a
|
|
61
|
+
multi-config generator and emits `build/bin/Release/llama-quantize.exe`; only the
|
|
62
|
+
flat single-config layout was searched.
|
|
63
|
+
- **`soup deploy ollama` failed on a relative GGUF path** with "pull model manifest:
|
|
64
|
+
file does not exist" — Ollama resolves `FROM` against the Modelfile's directory,
|
|
65
|
+
and Soup writes the Modelfile to a temp dir. The Modelfile now emits an absolute path.
|
|
66
|
+
- **Model-card injection hardening (affects the pre-existing `soup push` card too).**
|
|
67
|
+
The `## Training` section interpolated `base` / `task` / `scheduler` / `recipe`
|
|
68
|
+
unescaped. Since `SoupConfig.base` and `scheduler` have no charset validator, a
|
|
69
|
+
crafted-but-valid config could smuggle raw HTML — or a backtick breaking out of
|
|
70
|
+
the surrounding code span — into a card published to the Hub. All values now go
|
|
71
|
+
through the markdown escaper, which additionally neutralises backticks and
|
|
72
|
+
strips C0/ESC control bytes.
|
|
73
|
+
|
|
74
|
+
## [0.71.34] - 2026-07-15
|
|
75
|
+
|
|
76
|
+
### Added
|
|
77
|
+
- **`soup adapters arithmetic` — task-vector algebra over LoRA adapters (add / scale / negate).**
|
|
78
|
+
Apply task arithmetic (arXiv:2212.04089) to LoRA deltas via an expression such as
|
|
79
|
+
`"coder + 0.5*math - toxic"`, mapping names to adapter dirs with repeatable
|
|
80
|
+
`--adapter name=path`. Produces one merged adapter you can serve or merge.
|
|
81
|
+
- Signed, un-normalized element-wise combine over same-rank adapters; the effective
|
|
82
|
+
delta `ΔW = B @ A` scales **linearly** with each coefficient (negation flips the
|
|
83
|
+
delta, `0.5·` halves it) via a √|c| factor split — not the `c²` a naive sum gives.
|
|
84
|
+
Mixed-rank inputs are refused with a clear "harmonize rank" message.
|
|
85
|
+
- Reuses the backdoor-scan gate (refuses a FAIL-scanned input unless `--allow-unscanned`)
|
|
86
|
+
and a same-base-model check (`--allow-cross-base` to override). Hand-written expression
|
|
87
|
+
parser (no `eval`), cwd-contained/symlink-rejecting paths, exit 0 = ok / 1 = refusal.
|
|
88
|
+
- **LISA — Layerwise Importance Sampled AdamW (arXiv:2403.17919).** Full-fine-tuning
|
|
89
|
+
quality at LoRA-like memory: every N steps LISA freezes all decoder layers except a
|
|
90
|
+
small random set (embeddings + head always trainable). Enable with
|
|
91
|
+
`training.lisa_enabled: true` (+ `lisa_num_layers`, `lisa_interval_steps`) on a
|
|
92
|
+
`task: sft`, transformers, text, `quantization: none` run; mutually exclusive with
|
|
93
|
+
LoRA features and the other freeze mechanisms. Live on a 4 GB GPU for small models.
|
|
94
|
+
|
|
15
95
|
## [0.71.33] - 2026-07-13
|
|
16
96
|
|
|
17
97
|
### Added
|
|
@@ -117,10 +117,10 @@ src/soup_cli/
|
|
|
117
117
|
data/traces/ - Trace-to-Preference harvester (v0.26.0)
|
|
118
118
|
data/collators.py - CrossDocCollator for sample packing (v0.33.0)
|
|
119
119
|
utils/ - GPU, errors, MoE, GaLore, QAT, Unsloth, vLLM, SGLang, Liger, FlashAttn, FSDP, Ring Attention, long-context, quality, curriculum, freeze, dataset-registry, mlx, peft_builder, paths, topology, launcher, mii, pipeline, cut_ce, fp8, gradient_ckpt, kernel_picker, cross_doc_attn, activation_offload, hf, spec_pairing, structured_output, metrics, tracing, auto_quant, lr_finder, grad_accum, mixed_precision, warmup, spike_recovery, convergence, v028_features, multipack_sampler, multipack, neat_packing, jinja_analyzer, quant_menu, relora, peft_patches, peft_wiring, dpo_variants, optimizer_zoo, lr_groups, loftq_init, block_expansion, tts, classifier, distill, bitnet, ebft_gdpo, moe_quant, reasoning_effort, gguf_quant, kv_cache, advanced_precision, save_formats, deploy_measure, advise, advise_history, adapter_diff, adapter_merge, blame, adapter_branch, unlearning, unlearning_eval, knowledge_edit, edit_governor, edit_diff, ra_dit, steering, citation_faithful, grace_codebook, ingest_sources, prune_prompt, active_sampler, ab_test, drift_alarm, tunability, terraform_plan, env_lock, hardware_fit, completions, license_advisor, behavior_battery, capability_suite, checklist_dsl, irt, sae_diff, sleeper_probe, interference, probe_pack, cmaes_merge, vector_bank, mole_routing, adapter_pr, soup_lock, adapter_bisect, prompt_compile, prompt_distill, compile_tools, apple_adapter, local_rl, build_dag, expectations, magpie, persona_hub, brain_rot, reward_hacking, uld, minillm, rl_checkpoint, iterative_dpo, echo_trap, mod, local_rl_scheduler, spectrum_scan, ship_verdict, reward_hack_control, data_doctor, data_lint, shrink, best_of_n, evolve
|
|
120
|
-
templates/ -
|
|
120
|
+
templates/ - 21 built-in soup.yaml templates (YAML + manifest.json) with load_template loader (v0.39.0, +bco v0.40.0, +4 compliance v0.71.35)
|
|
121
121
|
ui/ - Web UI (FastAPI + HTML/JS SPA)
|
|
122
122
|
|
|
123
|
-
tests/ - Test suite (
|
|
123
|
+
tests/ - Test suite (313 files, 16001 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.35
|
|
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,48 @@ 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
|
-
- **`soup
|
|
202
|
-
|
|
203
|
-
`
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
196
|
+
**v0.71.35 — the compliance pack.** Ship a regulated fine-tune with the paperwork it needs: start from a regulation-shaped config, publish a provenance-carrying model card, and gate every PR in CI.
|
|
197
|
+
|
|
198
|
+
- **`soup init --template hipaa|soc2|eu-ai-act|sr-11-7`.** Four regulation-shaped starting
|
|
199
|
+
configs, each documenting the exact commands for that regime — PHI scrubbing + air-gap,
|
|
200
|
+
BOM/attest/sign, EU Annex XI + energy tracking, or repro-receipt + diagnose/ship.
|
|
201
|
+
- **`soup card <registry-id>` → `MODELCARD.md`.** Turn a registry entry into a publishable HF
|
|
202
|
+
model card: training config, eval scorecard, config/data hashes, lineage, and every
|
|
203
|
+
registered artifact. `soup push --card` uploads it as the README, so every public push
|
|
204
|
+
carries its provenance.
|
|
205
|
+
- **`soup ci init` — fine-tuning CI.** Writes a GitHub Actions gate that runs
|
|
206
|
+
`data validate` → `expect` → `ship --evidence` on each PR; a regression exits 2 and
|
|
207
|
+
blocks the merge.
|
|
208
|
+
- **Compliance quickstart** ([docs/compliance.md](docs/compliance.md)) — the whole path from
|
|
209
|
+
template to air-gapped, signed, attested, carded model.
|
|
210
|
+
- **GGUF export fixed on Windows.** Validated end-to-end for the first time (SmolLM2 →
|
|
211
|
+
q4_0/q4_k_m/q8_0/f16 → Ollama → live inference), which surfaced four real bugs: the export
|
|
212
|
+
cloned llama.cpp into your *current directory*, its first run **downgraded your PyTorch to
|
|
213
|
+
CPU-only** (breaking CUDA), a correctly-built llama.cpp wasn't found under MSVC, and
|
|
214
|
+
`deploy ollama` rejected relative GGUF paths. All fixed.
|
|
215
|
+
- **Hardening:** the model-card generator (including the existing `soup push` card) no longer
|
|
216
|
+
interpolates unescaped config values — a crafted `base`/`scheduler` can't smuggle HTML into
|
|
217
|
+
a card published on the Hub.
|
|
212
218
|
|
|
213
219
|
```bash
|
|
214
|
-
soup
|
|
215
|
-
--
|
|
220
|
+
soup adapters arithmetic "coder - toxic" \
|
|
221
|
+
--adapter coder=./coder-lora --adapter toxic=./toxic-lora -o ./cleaned
|
|
222
|
+
|
|
223
|
+
soup train --config sft.yaml # with training.lisa_enabled: true, lisa_num_layers: 2
|
|
216
224
|
```
|
|
217
225
|
|
|
218
226
|
<details>
|
|
219
|
-
<summary>Previous release — v0.71.
|
|
227
|
+
<summary>Previous release — v0.71.33, <code>soup draft</code> (measure speculative decoding)</summary>
|
|
220
228
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
229
|
+
`soup draft measure` reports a draft model's **acceptance rate** + real plain-vs-assisted tok/s
|
|
230
|
+
(exit 0/2/1 for CI); `soup draft distill` distils your target into a dense tiny draft, auto-wired
|
|
231
|
+
into `soup serve --auto-spec`. The honest result on a small same-family pair: distillation didn't
|
|
232
|
+
move acceptance (69.3% → 69.3%) and assisted decoding was a net slowdown — which is exactly the
|
|
233
|
+
number you want *before* shipping speculative decoding.
|
|
225
234
|
|
|
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
|
|
235
|
+
```bash
|
|
236
|
+
soup draft measure --target ./my-tuned-model --draft HuggingFaceTB/SmolLM2-135M-Instruct \
|
|
237
|
+
--prompts prod-prompts.jsonl # -> acceptance %, real tok/s, ship-or-not
|
|
235
238
|
```
|
|
236
239
|
|
|
237
240
|
</details>
|
|
@@ -315,7 +318,7 @@ The full feature reference lives in [`docs/`](docs/). Start here:
|
|
|
315
318
|
| [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
319
|
| [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
320
|
| [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 |
|
|
321
|
+
| [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
322
|
| [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
323
|
| [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
324
|
| [Command reference](docs/commands.md) | The full `soup` command list |
|
|
@@ -49,45 +49,48 @@ 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
|
-
- **`soup
|
|
58
|
-
|
|
59
|
-
`
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
52
|
+
**v0.71.35 — the compliance pack.** Ship a regulated fine-tune with the paperwork it needs: start from a regulation-shaped config, publish a provenance-carrying model card, and gate every PR in CI.
|
|
53
|
+
|
|
54
|
+
- **`soup init --template hipaa|soc2|eu-ai-act|sr-11-7`.** Four regulation-shaped starting
|
|
55
|
+
configs, each documenting the exact commands for that regime — PHI scrubbing + air-gap,
|
|
56
|
+
BOM/attest/sign, EU Annex XI + energy tracking, or repro-receipt + diagnose/ship.
|
|
57
|
+
- **`soup card <registry-id>` → `MODELCARD.md`.** Turn a registry entry into a publishable HF
|
|
58
|
+
model card: training config, eval scorecard, config/data hashes, lineage, and every
|
|
59
|
+
registered artifact. `soup push --card` uploads it as the README, so every public push
|
|
60
|
+
carries its provenance.
|
|
61
|
+
- **`soup ci init` — fine-tuning CI.** Writes a GitHub Actions gate that runs
|
|
62
|
+
`data validate` → `expect` → `ship --evidence` on each PR; a regression exits 2 and
|
|
63
|
+
blocks the merge.
|
|
64
|
+
- **Compliance quickstart** ([docs/compliance.md](docs/compliance.md)) — the whole path from
|
|
65
|
+
template to air-gapped, signed, attested, carded model.
|
|
66
|
+
- **GGUF export fixed on Windows.** Validated end-to-end for the first time (SmolLM2 →
|
|
67
|
+
q4_0/q4_k_m/q8_0/f16 → Ollama → live inference), which surfaced four real bugs: the export
|
|
68
|
+
cloned llama.cpp into your *current directory*, its first run **downgraded your PyTorch to
|
|
69
|
+
CPU-only** (breaking CUDA), a correctly-built llama.cpp wasn't found under MSVC, and
|
|
70
|
+
`deploy ollama` rejected relative GGUF paths. All fixed.
|
|
71
|
+
- **Hardening:** the model-card generator (including the existing `soup push` card) no longer
|
|
72
|
+
interpolates unescaped config values — a crafted `base`/`scheduler` can't smuggle HTML into
|
|
73
|
+
a card published on the Hub.
|
|
68
74
|
|
|
69
75
|
```bash
|
|
70
|
-
soup
|
|
71
|
-
--
|
|
76
|
+
soup adapters arithmetic "coder - toxic" \
|
|
77
|
+
--adapter coder=./coder-lora --adapter toxic=./toxic-lora -o ./cleaned
|
|
78
|
+
|
|
79
|
+
soup train --config sft.yaml # with training.lisa_enabled: true, lisa_num_layers: 2
|
|
72
80
|
```
|
|
73
81
|
|
|
74
82
|
<details>
|
|
75
|
-
<summary>Previous release — v0.71.
|
|
83
|
+
<summary>Previous release — v0.71.33, <code>soup draft</code> (measure speculative decoding)</summary>
|
|
76
84
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
85
|
+
`soup draft measure` reports a draft model's **acceptance rate** + real plain-vs-assisted tok/s
|
|
86
|
+
(exit 0/2/1 for CI); `soup draft distill` distils your target into a dense tiny draft, auto-wired
|
|
87
|
+
into `soup serve --auto-spec`. The honest result on a small same-family pair: distillation didn't
|
|
88
|
+
move acceptance (69.3% → 69.3%) and assisted decoding was a net slowdown — which is exactly the
|
|
89
|
+
number you want *before* shipping speculative decoding.
|
|
81
90
|
|
|
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
|
|
91
|
+
```bash
|
|
92
|
+
soup draft measure --target ./my-tuned-model --draft HuggingFaceTB/SmolLM2-135M-Instruct \
|
|
93
|
+
--prompts prod-prompts.jsonl # -> acceptance %, real tok/s, ship-or-not
|
|
91
94
|
```
|
|
92
95
|
|
|
93
96
|
</details>
|
|
@@ -171,7 +174,7 @@ The full feature reference lives in [`docs/`](docs/). Start here:
|
|
|
171
174
|
| [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
175
|
| [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
176
|
| [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 |
|
|
177
|
+
| [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
178
|
| [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
179
|
| [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
180
|
| [Command reference](docs/commands.md) | The full `soup` command list |
|
|
@@ -12,8 +12,9 @@ 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
|
+
| [Compliance & governance quickstart](compliance.md) | HIPAA/SOC2/EU-AI-Act/SR-11-7 `init` templates, provenance (BOM/attest/repro-receipt), audit log, air-gap, model-card autogen (`soup card`), CI gate (`soup ci init`) |
|
|
17
18
|
| [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
19
|
| [Command reference](commands.md) | The full `soup` command list |
|
|
19
20
|
| [Supported models & extras](models.md) | Recommended model families, the VRAM size guide, the pip extras matrix |
|
|
@@ -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
|
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
```
|
|
10
10
|
soup init [--template chat|code|...|audio] Create config
|
|
11
|
+
soup init --template hipaa|soc2|eu-ai-act|sr-11-7 Compliance-shaped starting config + the commands for that regime (v0.71.35)
|
|
11
12
|
soup autopilot --model <id> --data d.jsonl --goal <g> Zero-configsoup train --config soup.yaml Start training
|
|
12
13
|
soup train --config soup.yaml --tensorboard Train with TensorBoard logging
|
|
13
14
|
soup train --config soup.yaml --fsdp full_shard Train with FSDP2
|
|
@@ -27,6 +28,7 @@ soup merge --adapter ./output Merge LoRA with base model
|
|
|
27
28
|
soup merge-sharded-fsdp-weights ./shards -o merged.safetensors Consolidate FSDP shards into one safetensors (v0.71.14; --plan-only previews)
|
|
28
29
|
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
30
|
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)
|
|
31
|
+
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
32
|
soup export --model ./output --format gguf Export to GGUF (Ollama)
|
|
31
33
|
soup export --model ./output --deploy ollama Export GGUF + auto-deploy to Ollama
|
|
32
34
|
soup export --model ./output --format onnx Export to ONNX
|
|
@@ -158,6 +160,9 @@ soup ship --evidence ev.json [--output v.json] Decide offline from pre-computed
|
|
|
158
160
|
soup ship ... --task-mode judge_score --judge-model ollama://llama3.1 Leg-1 via LLM-as-a-judge
|
|
159
161
|
soup ship ... --task-mode pairwise --judge-model ollama://llama3.1 Leg-1 via swap-debiased judge win-rate (base=0.5) (v0.71.31)
|
|
160
162
|
soup ship ... --general-suite mmlu,gsm8k --baseline base.json lm-eval leg-2 + recorded base scores
|
|
163
|
+
soup card <registry-id> -o MODELCARD.md HF model card from a registry entry: training config, evals, hashes, lineage, artifacts (v0.71.35)
|
|
164
|
+
soup push --model ./out --repo you/m --card <registry-id> Upload that registry-driven card as the README (HF only) (v0.71.35)
|
|
165
|
+
soup ci init [--data d.jsonl --suite s.yaml --evidence ev.json] [--branch main --python 3.11] [--force] Write .github/workflows/soup-gate.yml: data validate -> expect -> ship gate on every PR (v0.71.35)
|
|
161
166
|
soup mcp serve MCP server over stdio (drive Soup from Claude Code / Cursor / Cline; requires [mcp] extra) (v0.71.28)
|
|
162
167
|
soup mcp serve --allow-mutating Also expose plan-only train_start / export tools (never execute) (v0.71.28)
|
|
163
168
|
soup shrink --model <id|path> --drop-ratio 0.25 --calib c.jsonl -o shrunk Depth-prune least-important layer block + SHIP/DON'T-SHIP ppl verdict (exit 0/2/1) (v0.71.29)
|
|
@@ -184,6 +189,7 @@ soup adapters sign <adapter> [--backend unsigned|ed25519] [--key <pem>|--generat
|
|
|
184
189
|
soup adapters verify <adapter> [--strict] [--public-key <pem>] Verify manifest + ed25519 signature
|
|
185
190
|
soup adapters check-safetensors <adapter> [--strict] Refuse pickle / PyTorch-classic weights
|
|
186
191
|
soup adapters merge ... [--license <id>] [--license-override <reason>] [--allow-unscanned] License + backdoor-scan gates (auto-detect license; scan FAIL refused)
|
|
192
|
+
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
193
|
soup attest emit ... [--sign ed25519 --key <pem>] [-o att.json] in-toto/SLSA-3 attestation (+ .sig sidecar)
|
|
188
194
|
soup attest verify <statement> --signature <sig> [--public-key <pem>] Verify ed25519 attestation signature
|
|
189
195
|
soup airgap-bundle --model <m> --output <out.tar> [--repro-receipt <r.json>] Signed tarball for data-diode transfer (embeds repro-receipt)
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# Compliance & governance quickstart
|
|
2
|
+
|
|
3
|
+
[← Back to the docs index](README.md)
|
|
4
|
+
|
|
5
|
+
Soup ships an end-to-end compliance workflow: start from a regulation-shaped
|
|
6
|
+
config, train with provenance capture, sign + attest the artifact, keep an audit
|
|
7
|
+
trail, and move it across an air gap — then publish a documented model card and
|
|
8
|
+
gate future changes in CI.
|
|
9
|
+
|
|
10
|
+
- **Pre-wired configs:** `soup init --template hipaa|soc2|eu-ai-act|sr-11-7`
|
|
11
|
+
- **Provenance:** `soup train --repro-receipt` · `soup bom emit` · `soup attest emit`
|
|
12
|
+
- **Integrity:** `soup adapters sign` / `verify` · `soup adapters scan`
|
|
13
|
+
- **Audit trail:** the HIPAA/SOC2 audit log is on by default (`soup audit-log tail`)
|
|
14
|
+
- **Air gap:** `soup airgap-bundle`
|
|
15
|
+
- **Publish:** `soup card <registry-id>` → `MODELCARD.md` (or `soup push --card`)
|
|
16
|
+
- **CI gate:** `soup ci init` → a PR workflow that runs validate → expect → ship
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 1. Start from a compliance template
|
|
21
|
+
|
|
22
|
+
Each template is a normal training config plus header comments listing the exact
|
|
23
|
+
compliance commands to run around it. Pick the regime you operate under:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
soup init --template hipaa # Protected Health Information
|
|
27
|
+
soup init --template soc2 # SOC 2 Trust Services Criteria
|
|
28
|
+
soup init --template eu-ai-act # EU AI Act Annex XI/XII
|
|
29
|
+
soup init --template sr-11-7 # SR 11-7 Model Risk Management
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The compliance controls are Soup **CLI flags/commands, not config keys** — the
|
|
33
|
+
template header documents which ones apply. The steps below are the common path.
|
|
34
|
+
|
|
35
|
+
## 2. Clean the data before training
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
soup data pii ./data/train.jsonl # flag emails / phones / SSNs / MRNs
|
|
39
|
+
soup data decontaminate ./data/train.jsonl # drop public-benchmark overlap
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## 3. Train with a reproducibility receipt (+ Annex XI / energy for the EU)
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# SR 11-7 / SOC 2 / HIPAA: capture seeds, kernels, GPU, OS
|
|
46
|
+
soup train --config soup.yaml --repro-receipt receipt.json
|
|
47
|
+
|
|
48
|
+
# EU AI Act: auto-generate the Annex XI/XII documentation + measure energy
|
|
49
|
+
soup train --config soup.yaml \
|
|
50
|
+
--annex-xi annex_xi.md \
|
|
51
|
+
--track-energy --energy-country DEU --energy-out energy.json
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
The audit log records every command automatically:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
soup audit-log tail # review the trail
|
|
58
|
+
soup audit-log rotate # force a rotation pass
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## 4. Register the run, then emit BOM + attestation
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
soup registry push --run-id <run-id> --name my-model --tag v1
|
|
65
|
+
|
|
66
|
+
soup bom emit --name my-model --base-sha <hex> --config-sha <hex> \
|
|
67
|
+
--energy energy.json --format both # CycloneDX + SPDX
|
|
68
|
+
soup attest emit --stage train --subject my-model --sha <hex> \
|
|
69
|
+
--sign ed25519 --key key.pem # in-toto + SLSA-3
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## 5. Sign, scan, and verify the artifact
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
soup adapters scan ./output # weight-space backdoor scan
|
|
76
|
+
soup adapters sign ./output --backend ed25519 --generate-key key.pem
|
|
77
|
+
soup adapters verify ./output --strict --public-key key.pub.pem
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## 6. Air-gap transfer (optional)
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
soup airgap-bundle --model ./output --output my-model.tar --repro-receipt receipt.json
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## 7. Generate a documented model card
|
|
87
|
+
|
|
88
|
+
Turn the registry entry into a provenance-rich `MODELCARD.md` — base model,
|
|
89
|
+
training config, eval scorecard, config/data hashes, lineage, and every
|
|
90
|
+
registered artifact:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
soup card my-model:v1 -o MODELCARD.md
|
|
94
|
+
# or, when uploading to the Hub, override the auto-generated card:
|
|
95
|
+
soup push --model ./output --repo you/my-model --card my-model:v1
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## 8. Gate future changes in CI
|
|
99
|
+
|
|
100
|
+
Write a GitHub Actions workflow that blocks a PR unless the data validates, the
|
|
101
|
+
expectations suite passes, and the SHIP verdict is green:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
soup ci init --data data/train.jsonl --suite expectations.yaml --evidence ship_evidence.json
|
|
105
|
+
# writes .github/workflows/soup-gate.yml
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
The generated job runs, in order:
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
soup data validate <data> # dataset format compliance
|
|
112
|
+
soup expect <data> <suite> # PII / token-length / refusal / judge expectations
|
|
113
|
+
soup ship --evidence <ev.json> # SHIP / DON'T-SHIP (exit 2 blocks the merge)
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
A minimal `expectations.yaml` for the second step:
|
|
117
|
+
|
|
118
|
+
```yaml
|
|
119
|
+
expectations:
|
|
120
|
+
- name: expect_no_pii
|
|
121
|
+
- name: expect_token_length_between
|
|
122
|
+
min_tokens: 1
|
|
123
|
+
max_tokens: 512
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Supported names: `expect_no_pii`, `expect_token_length_between`,
|
|
127
|
+
`expect_no_refusal_pattern`, `expect_chosen_preferred_over_rejected_by_judge`.
|
|
128
|
+
|
|
129
|
+
Every path is shell-quoted and validated to stay under the repo root, so the
|
|
130
|
+
rendered workflow is injection-safe. Edit the paths to match your repo.
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
See also: [Adapters, registry & governance](adapters-and-governance.md) for the
|
|
135
|
+
full supply-chain command set, and [Evaluation & probes](evaluation.md) for the
|
|
136
|
+
`soup ship` verdict engine.
|
|
@@ -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
|
|
|
@@ -21,7 +21,9 @@ from soup_cli.commands import ( # noqa: E402
|
|
|
21
21
|
autopilot,
|
|
22
22
|
bench,
|
|
23
23
|
can,
|
|
24
|
+
card,
|
|
24
25
|
chat,
|
|
26
|
+
ci,
|
|
25
27
|
cost,
|
|
26
28
|
data,
|
|
27
29
|
deploy,
|
|
@@ -98,6 +100,8 @@ app.command()(cost.cost)
|
|
|
98
100
|
app.command()(push.push)
|
|
99
101
|
app.command(name="export")(export.export)
|
|
100
102
|
app.command()(merge.merge)
|
|
103
|
+
app.command(name="card")(card.card)
|
|
104
|
+
app.add_typer(ci.app, name="ci", help="Fine-tuning CI: init a PR gate workflow.")
|
|
101
105
|
app.add_typer(
|
|
102
106
|
data.app, name="data",
|
|
103
107
|
help="Dataset tools: inspect, convert, merge, dedup, validate, stats.",
|