soup-cli 0.71.8__tar.gz → 0.71.9__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.8 → soup_cli-0.71.9}/CHANGELOG.md +47 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/CONTRIBUTING.md +1 -1
- {soup_cli-0.71.8 → soup_cli-0.71.9}/PKG-INFO +15 -15
- {soup_cli-0.71.8 → soup_cli-0.71.9}/README.md +14 -14
- {soup_cli-0.71.8 → soup_cli-0.71.9}/docs/adapters-and-governance.md +14 -9
- {soup_cli-0.71.8 → soup_cli-0.71.9}/docs/commands.md +3 -2
- {soup_cli-0.71.8 → soup_cli-0.71.9}/docs/training.md +8 -3
- {soup_cli-0.71.8 → soup_cli-0.71.9}/pyproject.toml +1 -1
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/__init__.py +1 -1
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/edit.py +121 -22
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/train.py +5 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/registry/store.py +3 -0
- soup_cli-0.71.9/src/soup_cli/trainer/unlearn.py +443 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/edit_diff.py +87 -18
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/edit_governor.py +258 -1
- soup_cli-0.71.9/src/soup_cli/utils/edit_kernels.py +399 -0
- soup_cli-0.71.9/src/soup_cli/utils/grace_codebook.py +462 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/knowledge_edit.py +115 -13
- soup_cli-0.71.9/src/soup_cli/utils/unlearn_kernels.py +115 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/unlearning.py +16 -12
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0610_part_a.py +26 -9
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0610_part_c.py +57 -11
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0620_followups.py +31 -14
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0620_part_e.py +21 -7
- soup_cli-0.71.9/tests/test_v0719.py +946 -0
- soup_cli-0.71.8/src/soup_cli/trainer/unlearn.py +0 -90
- soup_cli-0.71.8/src/soup_cli/utils/grace_codebook.py +0 -102
- {soup_cli-0.71.8 → soup_cli-0.71.9}/.dockerignore +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/.github/FUNDING.yml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/.github/pull_request_template.md +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/.github/workflows/ci.yml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/.github/workflows/docker.yml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/.github/workflows/publish.yml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/.github/workflows/recipe-validation.yml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/.gitignore +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/.mailmap +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/.pre-commit-config.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/AGENTS.md +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/CODEOWNERS +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/CODE_OF_CONDUCT.md +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/CONTRIBUTORS.md +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/Dockerfile +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/LICENSE +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/NOTICE +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/SECURITY.md +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/docker-compose.yml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/docs/README.md +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/docs/backends-and-ops.md +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/docs/data.md +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/docs/evaluation.md +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/docs/models.md +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/docs/peft-and-efficiency.md +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/docs/performance-and-quantization.md +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/docs/serving-and-export.md +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/examples/README.md +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/examples/configs/dpo_chat.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/examples/configs/dpo_example.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/examples/configs/grpo_reasoning.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/examples/configs/rlhf_step1_sft.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/examples/configs/rlhf_step2_reward.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/examples/configs/rlhf_step3_ppo.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/examples/configs/sft_basic.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/examples/configs/vision_llama.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/examples/data/alpaca_tiny.jsonl +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/examples/data/chat_preferences.jsonl +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/examples/data/dpo_sample.jsonl +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/examples/data/reasoning_math.jsonl +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/examples/synthetic_workflow.md +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/examples/synthetic_workflow.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/soup.png +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/soup_logo_svg.svg +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/__main__.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/autopilot/__init__.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/autopilot/analyzer.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/autopilot/decisions.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/autopilot/generate_config.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/cans/__init__.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/cans/pack.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/cans/publish.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/cans/run.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/cans/schema.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/cans/unpack.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/cans/verify.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/cli.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/__init__.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/_eval_v0550.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/_eval_v0610.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/_eval_v0650.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/_webhook_cli.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/ab.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/active_sample.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/adapters.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/advise.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/agent.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/airgap.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/apple_adapter.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/attest.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/audit_log.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/autopilot.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/bench.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/bom.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/build.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/can.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/chat.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/compile_cmd.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/compile_tools.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/completions.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/cost.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/data.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/data_forge.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/data_mix.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/data_score.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/delinearize_llama4.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/deploy.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/diagnose.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/diff.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/distill_prompt.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/doctor.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/drift_alarm.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/env.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/eval.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/expect.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/export.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/fetch.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/generate.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/history.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/infer.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/ingest.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/init.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/iterative_dpo.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/license_advisor.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/llama.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/local_rl.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/lock.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/loop.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/merge.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/merge_sharded_fsdp_weights.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/migrate.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/monitor.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/plan.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/plugins.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/probe.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/profile.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/prune_prompt.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/push.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/quantize.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/quickstart.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/recipes.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/registry.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/runs.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/serve.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/steer.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/sweep.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/tokenizer.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/tui.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/tunability.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/ui.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/commands/why.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/config/__init__.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/config/loader.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/config/schema.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/__init__.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/_fixtures/alpaca_tiny.jsonl +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/_fixtures/behavior/elephant.jsonl +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/_fixtures/behavior/harmbench.jsonl +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/_fixtures/behavior/jailbreakbench.jsonl +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/_fixtures/behavior/syceval.jsonl +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/_fixtures/behavior/xstest.jsonl +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/_fixtures/chat_preferences.jsonl +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/_fixtures/dpo_sample.jsonl +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/_fixtures/reasoning_math.jsonl +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/_fixtures/unlearning/muse_demo.jsonl +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/_fixtures/unlearning/tofu_demo.jsonl +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/_fixtures/unlearning/wmdp_demo.jsonl +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/augment.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/chat_templates.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/collators.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/formats.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/loader.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/loss_mask.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/providers/__init__.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/providers/_utils.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/providers/anthropic.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/providers/ollama.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/providers/vllm.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/sft_format.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/templates/__init__.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/templates/code.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/templates/conversation.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/templates/preference.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/templates/qa.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/templates/reasoning.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/templates/tool_calling.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/templates/verifiable.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/traces/__init__.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/traces/pair_builder.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/traces/parsers.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/traces/quality.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/data/validator.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/eval/__init__.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/eval/arena.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/eval/benchmarks_v0_43.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/eval/calibrate.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/eval/checkpoint_intelligence.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/eval/custom.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/eval/forgetting.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/eval/gate.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/eval/human.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/eval/judge.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/eval/leaderboard.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/eval/quant_check.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/experiment/__init__.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/experiment/tracker.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/migrate/__init__.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/migrate/axolotl.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/migrate/common.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/migrate/llamafactory.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/migrate/unsloth.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/monitoring/__init__.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/monitoring/callback.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/monitoring/curriculum_callback.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/monitoring/display.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/monitoring/grpo_stability_callback.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/monitoring/hf_push.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/monitoring/plugin_callback.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/monitoring/trace_logger.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/plugins/__init__.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/py.typed +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/recipes/__init__.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/recipes/catalog.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/registry/__init__.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/registry/attach.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/registry/diff.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/registry/hashing.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/templates/__init__.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/templates/audio.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/templates/bco.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/templates/chat.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/templates/code.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/templates/embedding.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/templates/fetch_examples/llama-3.1-8b-lora.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/templates/fetch_examples/qwen2.5-7b-dpo.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/templates/fetch_examples/zero3-cpu-offload.json +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/templates/ipo.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/templates/kto.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/templates/longcontext.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/templates/manifest.json +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/templates/medical.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/templates/moe.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/templates/orpo.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/templates/pretrain.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/templates/reasoning.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/templates/rlhf.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/templates/simpo.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/templates/tool-calling.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/templates/vision.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/trainer/__init__.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/trainer/bco.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/trainer/classifier.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/trainer/distill.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/trainer/dpo.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/trainer/embedding.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/trainer/grpo.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/trainer/ipo.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/trainer/kto.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/trainer/mlx_dpo.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/trainer/mlx_grpo.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/trainer/mlx_routing.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/trainer/mlx_sft.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/trainer/orpo.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/trainer/ppo.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/trainer/preference.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/trainer/pretrain.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/trainer/prm.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/trainer/reward_model.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/trainer/rewards.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/trainer/sft.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/trainer/simpo.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/tui_app.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/ui/__init__.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/ui/app.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/ui/plugins/__init__.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/ui/static/app.js +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/ui/static/index.html +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/ui/static/logo.png +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/ui/static/logo.svg +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/ui/static/style.css +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/__init__.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/_eval_text.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/ab_test.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/activation_offload.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/active_sampler.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/adapter_bisect.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/adapter_branch.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/adapter_diff.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/adapter_merge.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/adapter_pr.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/adapter_scan.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/adapter_sign.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/advanced_precision.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/advise.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/advise_history.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/agent_forge.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/agent_rollout.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/airgap_bundle.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/annex_xi.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/anthropic_messages.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/apple_adapter.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/attest.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/audit_log.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/auto_quant.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/backend_detect.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/batch_probe.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/behavior_battery.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/bitnet.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/blame.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/block_expansion.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/bom.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/brain_rot.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/brain_rot_lang.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/build_dag.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/canary_discovery.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/canary_router.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/capability_suite.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/checklist_dsl.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/checkpoint_trigger.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/citation_faithful.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/classifier.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/cmaes_merge.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/compile_tools.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/completions.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/constants.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/convergence.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/crash.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/cross_doc_attn.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/curriculum.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/curriculum_dynamic.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/cut_ce.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/data_forge.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/data_mix.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/data_pipeline.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/data_score.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/deepspeed.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/delinearize_llama4.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/demo_bundles.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/deploy_autopilot.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/deploy_measure.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/diagnose/__init__.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/diagnose/_common.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/diagnose/badge.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/diagnose/contamination.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/diagnose/forgetting.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/diagnose/format.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/diagnose/live.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/diagnose/memorization.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/diagnose/mode_collapse.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/diagnose/refusal.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/diagnose/report.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/diagnose/runner.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/distill.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/dpo_variants.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/drift_alarm.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/ebft_gdpo.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/echo_trap.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/encoding.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/energy.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/env_lock.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/errors.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/eval_design.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/eval_gate_hook.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/eval_lock_coverage.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/expectations.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/fetch_examples.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/flash_attn.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/fp8.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/freeze.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/fsdp.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/fsdp_consolidate.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/galore.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/gguf_quant.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/gpu.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/gpu_monitor.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/graceful_save.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/grad_accum.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/gradient_ckpt.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/grpo_long_context.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/grpo_variants.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/hardware_fit.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/harm_probe.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/hf.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/hf_space.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/hubs.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/ingest_sources.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/integrations.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/interference.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/interference_live.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/irt.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/iterative_dpo.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/jinja_analyzer.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/kernel_picker.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/kv_cache.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/launcher.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/license_advisor.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/license_matrix.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/liger.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/live_eval.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/llama_proxy.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/llama_server_timings.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/local_rl.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/loftq_init.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/log_level.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/long_context.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/longlora.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/loop_budget.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/loop_daemon.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/loop_iteration.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/loop_stages.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/loop_state.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/lr_finder.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/lr_groups.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/magpie.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/metrics.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/mii.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/minillm.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/mix_proxy.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/mixed_precision.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/mlx.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/moe.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/moe_quant.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/mole_routing.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/multipack.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/multipack_sampler.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/multipack_trainer.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/namespace_pin.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/neat_packing.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/ngram_spec.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/nlg_metrics.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/ollama.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/onboarding.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/optimizer_zoo.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/paths.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/peft_builder.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/peft_patches.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/peft_wiring.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/persona_hub.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/pipeline.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/preference_combine.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/prm.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/probe_kernel.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/probe_pack.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/profiler.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/profiling.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/profiling_v0_43.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/prompt_compile.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/prompt_distill.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/prune_prompt.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/qat.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/qr_url.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/quality.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/quant_menu.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/ra_dit.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/reasoning_effort.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/reasoning_parser.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/recipe_dag.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/recipe_run.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/registry.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/relora.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/replay.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/repro_receipt.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/reward_hacking.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/ring_attention.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/rl_checkpoint.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/run_cost.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/sae_diff.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/save_formats.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/server_tools.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/sglang.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/shortcuts.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/signing.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/sleeper_probe.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/soup_lock.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/spec_pairing.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/spike_recovery.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/sse_train_stream.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/steering.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/strict_safetensors.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/structured_output.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/sweep_config.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/tail_latency.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/terraform_plan.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/tool_outputs.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/topology.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/tracing.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/trackers.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/train_event_buffer.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/trainer_plugins.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/trust_remote.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/truth_probe.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/tts.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/tunability.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/ui_env.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/uld.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/unlearning_eval.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/unsloth.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/v028_features.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/vector_bank.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/vllm.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/vscode_setup.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/warmup.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/webhooks.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/src/soup_cli/utils/why.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/templates/chat.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/templates/code.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/templates/medical.yaml +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/__init__.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/conftest.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/qa/v053_qa.md +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/qa/v0716_qa.md +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_adapters.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_advanced_peft.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_assistant_mask.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_audio.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_auto_tuning.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_autopilot.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_awq_gptq_export.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_batch_probe.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_bco.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_bench.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_brain_rot_multilingual.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_bugfixes.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_callback.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_cans.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_chat.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_chat_template.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_cli.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_cli_subprocess.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_config.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_cost.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_crash_reporter.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_curriculum.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_data.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_data_augment.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_data_sample.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_data_split.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_data_tools.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_dataset_hub.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_dataset_registry.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_deepspeed.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_deploy_ollama.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_diff.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_display.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_doctor.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_dpo_example.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_dpo_variants.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_embedding.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_errors.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_eval.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_eval_gate.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_eval_platform.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_export.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_formats.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_fp8_recipe.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_freeze_training.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_generate.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_gpu.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_grpo.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_hf_integration.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_infer.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_inference_advanced.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_init.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_ipo.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_jinja_analyzer.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_kto.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_loader.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_log_level.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_loss_watchdog.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_merge.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_migrate.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_mlx_backend.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_moe.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_multi_adapter.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_multi_gpu.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_multipack_config.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_multipack_invariants.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_multipack_sampler.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_neat_packing.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_neftune_rslora.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_onnx_tensorrt_export.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_orpo.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_packing.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_part_a_wave1.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_part_a_wave2.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_part_b.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_part_c.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_part_d.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_part_e.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_part_f_hardening.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_peft_methods.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_peft_patches.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_performance.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_pissa_init.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_ppo.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_preference_dispatcher.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_preference_multi.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_preference_multi_runtime.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_pretrain.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_profile.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_profiling.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_progress.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_push.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_qat.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_quality_filter.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_quant_check.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_quant_menu.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_quickstart.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_rank_pattern.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_recipes.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_recipes_v031.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_refusal_multilingual.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_registry.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_relora.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_replay.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_resume.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_rlvr.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_run_cost.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_runs.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_serve.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_server_generate.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_sglang_serve.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_simpo.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_smoke_train.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_speculative_decoding.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_sweep.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_synth_data_pro.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_templates_yaml.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_tensorboard.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_tool_calling.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_trace_to_pref.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_tracker.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_trainer_coverage_v035.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_trainer_init.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_training_intelligence.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_training_speed.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_trust_remote_code.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_tui.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_ui.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_ui_chat.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_ui_config_builder.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_ui_live_monitor.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_ui_metrics.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_unsloth.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0401_part_c.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0401_part_d.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0401_part_e.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0402_part_a.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0402_part_b.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0403_part_a.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0403_part_b.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0403_part_c.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0404_part_a.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0404_part_b.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0405_part_a.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0406_part_a.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0410_part_a.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0410_part_b.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0410_part_c.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0420.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0430_part_a.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0430_part_b.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0430_part_c.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0430_part_d.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0440_part_a.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0440_part_b.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0440_part_c.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0440_part_d.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0440_review_followups.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0450.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0460_part_a.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0460_part_b.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0470_part_a.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0470_part_b.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0480_part_a.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0480_part_b.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0490.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0500_part_a.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0500_part_b.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0500_part_c.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0500_part_d.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0500_part_e.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0510.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0520.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0530.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v05310.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v05311.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0531_109.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0531_139.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0531_142.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0531_82.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0532.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0533.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0534.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0535.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0536.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0537.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0538.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0539.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0540.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0550.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0550_followups.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0560.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0570_part_a.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0570_part_b.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0570_part_c.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0570_part_d.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0580.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0590.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0600_part_a.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0600_part_b.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0600_part_c.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0600_part_d.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0600_part_e.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0600_part_f.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0610_part_b.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0610_part_d.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0610_part_e.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0620_part_a.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0620_part_b.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0620_part_c.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0620_part_d.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0630_followups.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0630_part_a.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0630_part_b.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0630_part_c.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0630_part_d.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0630_part_e.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0631_206.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0640_followups.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0640_part_a.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0640_part_b.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0640_part_c.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0640_part_d.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0640_part_e.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0640_part_f.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0650_followups.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0650_part_a.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0650_part_b.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0650_part_c.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0650_part_d.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0650_part_e.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0660_cli.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0660_followups.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0660_part_a.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0660_part_b.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0660_part_c.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0660_part_d.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0660_part_e.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0670_followups.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0670_part_a.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0670_part_b.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0670_part_c.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0670_part_d.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0670_part_e.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0670_part_f.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0680_followups.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0680_part_a.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0680_part_b.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0680_part_c.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0680_part_d.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0680_part_e.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0690_part_a.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0690_part_b.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0690_part_c.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0690_part_d.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0690_part_e.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0700_part_a.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0700_part_b.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0700_part_c.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0700_part_d.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0700_part_e.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0700_part_f.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0712.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0713.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0714.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0715.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0716.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0717.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_v0718.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_validator.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_vision.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_vllm_serve.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_why.py +0 -0
- {soup_cli-0.71.8 → soup_cli-0.71.9}/tests/test_windows_encoding.py +0 -0
|
@@ -12,6 +12,53 @@ reproducing 70+ versions of notes.
|
|
|
12
12
|
|
|
13
13
|
## [Unreleased]
|
|
14
14
|
|
|
15
|
+
## [0.71.9] - 2026-06-03
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
- **Knowledge edit + unlearn — live wiring** (closes #193, #194, #196, #197,
|
|
19
|
+
#203). The v0.61.0 / v0.62.0 schema-only stubs are now live, validated on
|
|
20
|
+
SmolLM2-135M.
|
|
21
|
+
- **`soup edit set` (ROME / MEMIT / AlphaEdit) is live** (#194). New
|
|
22
|
+
`soup_cli/utils/edit_kernels.py` ships covariance-free rank-1 weight-edit
|
|
23
|
+
kernels: ROME (single-layer `W += δ·kᵀ/‖k‖²`), MEMIT (residual distributed
|
|
24
|
+
across a layer band), AlphaEdit (ROME update projected orthogonal to the
|
|
25
|
+
down-proj's top singular direction). `apply_edit` loads the model, optimises
|
|
26
|
+
the target residual, applies the rank-1 update, and optionally saves with
|
|
27
|
+
cwd-containment + symlink rejection. `--output`, `--device`, `--governor/
|
|
28
|
+
--no-governor` flags added. On a tiny model a ROME edit moved
|
|
29
|
+
`P("Lyon" | "The capital of France is")` from 0.0016 → 0.96.
|
|
30
|
+
- **`soup edit diff` live before/after generation** (#194). Pass
|
|
31
|
+
`--before-model` + `--after-model` (+ `--probes`) to generate completions
|
|
32
|
+
through both models and surface the probes whose output changed.
|
|
33
|
+
- **EditGovernor SQLite persistence + cross-process locking** (#196). New
|
|
34
|
+
`EditGovernorStore` (mirrors `namespace_pin.NamespacePinStore` —
|
|
35
|
+
$HOME/$CWD/$TMPDIR containment, TOCTOU symlink rejection, WAL +
|
|
36
|
+
busy_timeout, `fcntl`/`msvcrt` sidecar lock, POSIX 0600). `save_governor` /
|
|
37
|
+
`load_governor` / `default_governor_db_path` (env override
|
|
38
|
+
`SOUP_EDIT_GOVERNOR_DB`) persist per-base-model edit-count + verdict across
|
|
39
|
+
separate `soup edit set` runs.
|
|
40
|
+
- **`apply_edit` consults the EditGovernor automatically** (#197). When a
|
|
41
|
+
governor is supplied, `check_can_edit()` runs BEFORE the model load (refusing
|
|
42
|
+
on norm blowup / edit cap) and `record_edit()` runs AFTER with the measured
|
|
43
|
+
Frobenius delta.
|
|
44
|
+
- **Live GRACE codebook** (#203). `GraceCodebook` (epsilon-ball nearest-key
|
|
45
|
+
lookup), `apply_grace_edit` (captures a residual key + optimises a value +
|
|
46
|
+
appends to a codebook sidecar), `save_codebook` / `load_codebook` (atomic,
|
|
47
|
+
cwd-contained, symlink-rejected), `install_grace_hook` (decode-time residual
|
|
48
|
+
substitution). New `edited_model` / `grace_codebook` Registry artifact kinds.
|
|
49
|
+
- **`soup train --task unlearn` is live (NPO / SimNPO / RMU)** (#193). New
|
|
50
|
+
`soup_cli/utils/unlearn_kernels.py` (NPO `(2/β)·mean(-logσ(-β(πlp-reflp)))`,
|
|
51
|
+
length-normalised SimNPO, RMU representation steering) + a self-contained
|
|
52
|
+
`UnlearnTrainerWrapper` loop loading a LoRA policy, a frozen reference
|
|
53
|
+
(NPO/RMU), and forget/retain JSONL datasets. NPO/SimNPO forget loss
|
|
54
|
+
decreased on the tiny-model smoke. Warns when run without a retain set.
|
|
55
|
+
|
|
56
|
+
### Security
|
|
57
|
+
- `_save_edited_model` / `UnlearnTrainerWrapper` output dirs + `save_codebook`
|
|
58
|
+
/ `load_codebook` + `_load_unlearn_rows` enforce cwd-containment, raw-path
|
|
59
|
+
symlink rejection (TOCTOU), null-byte rejection, and file-size / per-line
|
|
60
|
+
caps. `apply_grace_edit` honours the governor for direct callers.
|
|
61
|
+
|
|
15
62
|
## [0.71.8] - 2026-06-03
|
|
16
63
|
|
|
17
64
|
### Added
|
|
@@ -120,7 +120,7 @@ src/soup_cli/
|
|
|
120
120
|
templates/ - 17 built-in soup.yaml templates (YAML + manifest.json) with load_template loader (v0.39.0, +bco v0.40.0)
|
|
121
121
|
ui/ - Web UI (FastAPI + HTML/JS SPA)
|
|
122
122
|
|
|
123
|
-
tests/ - Test suite (
|
|
123
|
+
tests/ - Test suite (279 files, 12998 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.9
|
|
4
4
|
Summary: Fine-tune LLMs in one command. No SSH, no config hell.
|
|
5
5
|
Project-URL: Homepage, https://github.com/MakazhanAlpamys/Soup
|
|
6
6
|
Project-URL: Repository, https://github.com/MakazhanAlpamys/Soup
|
|
@@ -183,20 +183,20 @@ infrastructure instead of improving models. Soup fixes that.
|
|
|
183
183
|
|
|
184
184
|
## What's New
|
|
185
185
|
|
|
186
|
-
**v0.71.
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
- **`soup
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
- **`soup
|
|
193
|
-
|
|
194
|
-
- **`soup
|
|
195
|
-
|
|
196
|
-
-
|
|
197
|
-
|
|
198
|
-
- **`soup train --
|
|
199
|
-
|
|
186
|
+
**v0.71.9 — Knowledge edit + unlearn (live).** The surgical-edit and unlearning surfaces are now
|
|
187
|
+
real, validated on SmolLM2-135M:
|
|
188
|
+
|
|
189
|
+
- **`soup edit set --method rome|memit|alphaedit`** — surgical rank-1 weight edit that patches one
|
|
190
|
+
fact without re-training. On a tiny model a ROME edit moved P("Lyon" | "The capital of France is")
|
|
191
|
+
from 0.0016 → 0.96. `--output` saves the edited model; `--governor` refuses edits after norm blowup.
|
|
192
|
+
- **`soup edit diff --before-model <m> --after-model <m> --probes p.jsonl`** — generate completions
|
|
193
|
+
through both models and surface the probes whose output changed.
|
|
194
|
+
- **`soup edit set --method grace`** — GRACE codebook edit: stores the fact in a discrete
|
|
195
|
+
(key, value) sidecar applied at decode time via a forward hook (survives thousands of edits).
|
|
196
|
+
- **Sequential-edit governor persistence** — per-base-model edit count + verdict survive across
|
|
197
|
+
separate `soup edit set` runs (SQLite, cross-process-locked).
|
|
198
|
+
- **`soup train --task unlearn`** — NPO / SimNPO / RMU unlearning from a `forget_set` (+ optional
|
|
199
|
+
`retain_set`); NPO/SimNPO drive the forget-set loss down while the retain set anchors capability.
|
|
200
200
|
|
|
201
201
|
Full history: [CHANGELOG.md](CHANGELOG.md) · [GitHub Releases](https://github.com/MakazhanAlpamys/Soup/releases).
|
|
202
202
|
|
|
@@ -49,20 +49,20 @@ infrastructure instead of improving models. Soup fixes that.
|
|
|
49
49
|
|
|
50
50
|
## What's New
|
|
51
51
|
|
|
52
|
-
**v0.71.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
- **`soup
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
- **`soup
|
|
59
|
-
|
|
60
|
-
- **`soup
|
|
61
|
-
|
|
62
|
-
-
|
|
63
|
-
|
|
64
|
-
- **`soup train --
|
|
65
|
-
|
|
52
|
+
**v0.71.9 — Knowledge edit + unlearn (live).** The surgical-edit and unlearning surfaces are now
|
|
53
|
+
real, validated on SmolLM2-135M:
|
|
54
|
+
|
|
55
|
+
- **`soup edit set --method rome|memit|alphaedit`** — surgical rank-1 weight edit that patches one
|
|
56
|
+
fact without re-training. On a tiny model a ROME edit moved P("Lyon" | "The capital of France is")
|
|
57
|
+
from 0.0016 → 0.96. `--output` saves the edited model; `--governor` refuses edits after norm blowup.
|
|
58
|
+
- **`soup edit diff --before-model <m> --after-model <m> --probes p.jsonl`** — generate completions
|
|
59
|
+
through both models and surface the probes whose output changed.
|
|
60
|
+
- **`soup edit set --method grace`** — GRACE codebook edit: stores the fact in a discrete
|
|
61
|
+
(key, value) sidecar applied at decode time via a forward hook (survives thousands of edits).
|
|
62
|
+
- **Sequential-edit governor persistence** — per-base-model edit count + verdict survive across
|
|
63
|
+
separate `soup edit set` runs (SQLite, cross-process-locked).
|
|
64
|
+
- **`soup train --task unlearn`** — NPO / SimNPO / RMU unlearning from a `forget_set` (+ optional
|
|
65
|
+
`retain_set`); NPO/SimNPO drive the forget-set loss down while the retain set anchors capability.
|
|
66
66
|
|
|
67
67
|
Full history: [CHANGELOG.md](CHANGELOG.md) · [GitHub Releases](https://github.com/MakazhanAlpamys/Soup/releases).
|
|
68
68
|
|
|
@@ -139,21 +139,26 @@ State lives in `.soup/loop.yaml` (atomic write, cwd-contained, symlink-rejected)
|
|
|
139
139
|
Surgical factual patches WITHOUT a full fine-tuning loop. Hospital data team correcting a misattributed drug interaction, lab fixing a wrong historical date, security team responding to a hallucinated CVE — all one CLI invocation.
|
|
140
140
|
|
|
141
141
|
```bash
|
|
142
|
-
#
|
|
142
|
+
# Live edit: optimises a residual + applies a rank-1 weight update, then saves.
|
|
143
143
|
soup edit set \
|
|
144
|
-
--base
|
|
144
|
+
--base HuggingFaceTB/SmolLM2-135M \
|
|
145
145
|
--method rome \
|
|
146
|
-
--subject "
|
|
146
|
+
--subject "The capital of France is" \
|
|
147
147
|
--target "Lyon" \
|
|
148
|
-
--
|
|
148
|
+
--output ./edited --device cuda
|
|
149
|
+
|
|
150
|
+
# Plan-only mode validates the request + prints the resolved EditPlan + exits 0.
|
|
151
|
+
soup edit set --base ./model --method rome --subject "..." --target "..." --plan-only
|
|
149
152
|
|
|
150
|
-
# Diff what the model
|
|
151
|
-
soup edit diff
|
|
153
|
+
# Diff what the model says before vs after the edit (live generation).
|
|
154
|
+
soup edit diff before after \
|
|
155
|
+
--before-model ./base --after-model ./edited \
|
|
156
|
+
--probes probes.jsonl --output diff.json
|
|
152
157
|
```
|
|
153
158
|
|
|
154
|
-
|
|
159
|
+
The kernels are a covariance-free (`C = I`) variant of the ROME family — well-defined, tractable on a 4 GB box, and validated on SmolLM2-135M (a ROME edit moved `P("Lyon" | "The capital of France is")` from 0.0016 → 0.96). **ROME** edits a single layer; **MEMIT** distributes the residual across a layer band; **AlphaEdit** projects the update orthogonal to the down-proj's top singular direction.
|
|
155
160
|
|
|
156
|
-
The
|
|
161
|
+
The sequential edit governor is persisted (SQLite, cross-process-locked, `SOUP_EDIT_GOVERNOR_DB` override) so the per-base-model edit count + norm-blowup verdict survive across separate `soup edit set` runs. `soup edit set` consults it automatically: it refuses BEFORE the model load past the per-base cap or after a BLOWUP verdict, and records the measured `||ΔW||_F` after each edit. Pass `--no-governor` to opt out. `--registry-id <id>` attaches the edited model (or GRACE codebook) into the Registry lineage.
|
|
157
162
|
|
|
158
163
|
|
|
159
164
|
## Activation Steering (`soup steer`)
|
|
@@ -197,7 +202,7 @@ training:
|
|
|
197
202
|
grace_codebook_dim: 768 # residual-stream width
|
|
198
203
|
```
|
|
199
204
|
|
|
200
|
-
`grace` joins the existing `rome` / `memit` / `alphaedit` allowlist on `soup edit set`; the
|
|
205
|
+
`grace` joins the existing `rome` / `memit` / `alphaedit` allowlist on `soup edit set`; the sequential edit governor still gates the call when the per-base-model edit count or norm-blowup verdict trips. GRACE is live: `soup edit set --method grace --output ./ckpt` captures the residual key at the subject's last token, optimises a replacement value, and appends a `(key, value)` triple to a `grace_codebook.json` sidecar (atomic, cwd-contained). At inference the codebook is applied via a forward hook that substitutes the residual whenever it falls within an epsilon ball of a stored key — so the base weights are never modified and thousands of edits survive without norm blowup.
|
|
201
206
|
|
|
202
207
|
|
|
203
208
|
## Model Registry & Lineage
|
|
@@ -168,8 +168,9 @@ soup can pack --entry-id <id> --out r.can --attest <statement.json> Embed in-to
|
|
|
168
168
|
soup audit-log tail / rotate Tail / rotate the per-command HIPAA/SOC2 audit log (~/.soup/audit.jsonl)
|
|
169
169
|
soup --no-audit-log <cmd> / SOUP_NO_AUDIT_LOG=1 Opt out of the per-command audit line
|
|
170
170
|
soup eval unlearning <run-id> --benchmark tofu|muse|wmdp Forget Quality + Model Utility + PrivLeak verdict
|
|
171
|
-
soup edit set --base <m> --method rome|memit|alphaedit --subject "..." --target "..."
|
|
172
|
-
soup edit diff <before-run> <after-run> --probes p.jsonl Knowledge-injection diff
|
|
171
|
+
soup edit set --base <m> --method rome|memit|alphaedit|grace --subject "..." --target "..." [--output <dir>] [--device cpu] [--governor/--no-governor] [--registry-id <id>] Live surgical knowledge edit (--plan-only available)
|
|
172
|
+
soup edit diff <before-run> <after-run> --probes p.jsonl [--before-model <m> --after-model <m>] Knowledge-injection diff (live before/after generation when both models given)
|
|
173
|
+
soup train --task unlearn NPO/SimNPO/RMU unlearning from data.forget_set (+ optional data.retain_set)
|
|
173
174
|
soup ingest --source langfuse|langsmith|helicone|openpipe|otel|openai-stored --logs <jsonl> Universal trace importer (6 SaaS adapters → normalised JSONL)
|
|
174
175
|
soup prune-prompt --input <jsonl> --output <jsonl> --min-frequency 0.95 Detect + strip shared system-prompt prefix
|
|
175
176
|
soup prune-prompt ... --tokenizer <id-or-path> Tokenizer-aware prefix detection (decodes remaining ids, boundary-safe)
|
|
@@ -101,22 +101,27 @@ GDPR right-to-be-forgotten + CSAM/PII leak response, productized. Three method b
|
|
|
101
101
|
|
|
102
102
|
```yaml
|
|
103
103
|
# unlearn.yaml
|
|
104
|
-
base:
|
|
104
|
+
base: HuggingFaceTB/SmolLM2-135M
|
|
105
105
|
task: unlearn
|
|
106
106
|
data:
|
|
107
107
|
train: traces.jsonl
|
|
108
|
-
forget_set: gdpr_deletion_set.jsonl
|
|
109
|
-
retain_set: capability_anchors.jsonl
|
|
108
|
+
forget_set: gdpr_deletion_set.jsonl # rows to unlearn (messages / prompt+completion / text)
|
|
109
|
+
retain_set: capability_anchors.jsonl # optional — anchors general capability
|
|
110
110
|
training:
|
|
111
111
|
unlearn_method: npo # or simnpo / rmu
|
|
112
112
|
unlearn_alpha: 0.5 # retain-set weighting [0.0, 10.0]
|
|
113
113
|
```
|
|
114
114
|
|
|
115
115
|
```bash
|
|
116
|
+
# Run the unlearn loop (validated on SmolLM2-135M — NPO/SimNPO drive forget loss down).
|
|
117
|
+
soup train --config unlearn.yaml --yes
|
|
118
|
+
|
|
116
119
|
# Score the run on TOFU / MUSE / WMDP (OK / MINOR / MAJOR verdict).
|
|
117
120
|
soup eval unlearning <run-id> --benchmark tofu --evidence evidence.json --output report.json
|
|
118
121
|
```
|
|
119
122
|
|
|
123
|
+
`soup train --task unlearn` is live (v0.71.9): it loads a LoRA-wrapped policy, a frozen reference copy (NPO / RMU), and the forget / retain JSONL sets, then optimises the per-method loss — NPO's `(2/β)·mean(-logσ(-β·(π_logp − ref_logp)))` drives the policy's forget-set log-prob below the reference (= forgetting), while the retain set anchors capability. Run NPO/SimNPO **with** a `retain_set` — without one the policy has no utility anchor and Soup warns loudly.
|
|
124
|
+
|
|
120
125
|
Three orthogonal axes: **Forget Quality** (pre/post forget-loss delta), **Model Utility** (retain-accuracy preserved), **PrivLeak** (membership-inference AUC distance from 0.5). Bundled mini-fixtures for all three benchmarks ship in the box (v0.71.1 added MUSE + WMDP alongside the existing TOFU set), so `--benchmark muse|wmdp` runs without supplying evidence. The WMDP forget-set probes ship **redacted** (placeholder prompts + `REFUSED` responses) — Soup never bundles verbatim hazardous-knowledge content.
|
|
121
126
|
|
|
122
127
|
|
|
@@ -49,13 +49,25 @@ def set_edit(
|
|
|
49
49
|
None, "--layer", "-l",
|
|
50
50
|
help="MLP layer index to edit (defaults to method-specific recommended layer).",
|
|
51
51
|
),
|
|
52
|
+
output: Optional[str] = typer.Option(
|
|
53
|
+
None, "--output", "-o",
|
|
54
|
+
help="Directory to save the edited model / GRACE codebook (cwd-contained).",
|
|
55
|
+
),
|
|
56
|
+
device: Optional[str] = typer.Option(
|
|
57
|
+
None, "--device",
|
|
58
|
+
help="torch device (cpu / cuda). Defaults to CUDA when available.",
|
|
59
|
+
),
|
|
60
|
+
use_governor: bool = typer.Option(
|
|
61
|
+
True, "--governor/--no-governor",
|
|
62
|
+
help="Consult the sequential-edit governor (refuse on norm blowup).",
|
|
63
|
+
),
|
|
52
64
|
plan_only: bool = typer.Option(
|
|
53
65
|
False, "--plan-only",
|
|
54
|
-
help="Print the resolved EditPlan and exit without applying
|
|
66
|
+
help="Print the resolved EditPlan and exit without applying.",
|
|
55
67
|
),
|
|
56
68
|
registry_id: Optional[str] = typer.Option(
|
|
57
69
|
None, "--registry-id",
|
|
58
|
-
help="Optional Registry entry id to attach the edited model as a child
|
|
70
|
+
help="Optional Registry entry id to attach the edited model as a child.",
|
|
59
71
|
),
|
|
60
72
|
) -> None:
|
|
61
73
|
"""Apply a single surgical knowledge edit."""
|
|
@@ -97,32 +109,103 @@ def set_edit(
|
|
|
97
109
|
)
|
|
98
110
|
console.print(Panel(body, title="EditPlan", border_style="cyan"))
|
|
99
111
|
|
|
100
|
-
if registry_id is not None:
|
|
101
|
-
console.print(
|
|
102
|
-
f"[dim]Will attach as Registry child of {escape(registry_id)} "
|
|
103
|
-
f"once v0.61.1 lands.[/]"
|
|
104
|
-
)
|
|
105
|
-
|
|
106
112
|
if plan_only:
|
|
107
113
|
console.print("[green]Plan-only mode — exiting without applying.[/]")
|
|
108
114
|
return
|
|
109
115
|
|
|
110
|
-
#
|
|
111
|
-
#
|
|
112
|
-
#
|
|
116
|
+
# Load a persisted governor so sequential edits across separate `soup edit
|
|
117
|
+
# set` runs accumulate (#196 / #197). Best-effort — a missing / unreadable
|
|
118
|
+
# governor DB never blocks an edit.
|
|
119
|
+
governor = None
|
|
120
|
+
store = None
|
|
121
|
+
if use_governor:
|
|
122
|
+
try:
|
|
123
|
+
from soup_cli.utils.edit_governor import (
|
|
124
|
+
EditGovernorStore,
|
|
125
|
+
default_governor_db_path,
|
|
126
|
+
load_governor,
|
|
127
|
+
save_governor,
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
store = EditGovernorStore(default_governor_db_path())
|
|
131
|
+
governor = load_governor(store, plan.base)
|
|
132
|
+
except (ValueError, OSError) as exc:
|
|
133
|
+
console.print(f"[dim]Governor disabled ({escape(str(exc))}).[/]")
|
|
134
|
+
governor = None
|
|
135
|
+
store = None
|
|
136
|
+
|
|
137
|
+
from soup_cli.utils.edit_governor import GovernedEditError
|
|
138
|
+
|
|
113
139
|
try:
|
|
114
|
-
apply_edit(
|
|
115
|
-
|
|
140
|
+
result = apply_edit(
|
|
141
|
+
plan,
|
|
142
|
+
output_dir=output,
|
|
143
|
+
governor=governor,
|
|
144
|
+
device=device,
|
|
145
|
+
)
|
|
146
|
+
except GovernedEditError as exc:
|
|
116
147
|
console.print(
|
|
117
148
|
Panel(
|
|
118
|
-
f"[
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
title="Live edit deferred",
|
|
122
|
-
border_style="yellow",
|
|
149
|
+
f"[red]Edit refused by governor:[/] {escape(str(exc))}",
|
|
150
|
+
title="Sequential-edit governor",
|
|
151
|
+
border_style="red",
|
|
123
152
|
)
|
|
124
153
|
)
|
|
125
|
-
|
|
154
|
+
if store is not None:
|
|
155
|
+
store.close()
|
|
156
|
+
raise typer.Exit(2) from exc
|
|
157
|
+
except (ValueError, RuntimeError, OSError) as exc:
|
|
158
|
+
console.print(f"[red]Edit failed:[/] {escape(str(exc))}")
|
|
159
|
+
if store is not None:
|
|
160
|
+
store.close()
|
|
161
|
+
raise typer.Exit(2) from exc
|
|
162
|
+
|
|
163
|
+
# Persist the updated governor state so the next edit sees the new count.
|
|
164
|
+
if governor is not None and store is not None:
|
|
165
|
+
try:
|
|
166
|
+
save_governor(store, governor)
|
|
167
|
+
except (ValueError, OSError):
|
|
168
|
+
pass
|
|
169
|
+
finally:
|
|
170
|
+
store.close()
|
|
171
|
+
|
|
172
|
+
console.print(
|
|
173
|
+
Panel(
|
|
174
|
+
f"[bold]Method:[/] {escape(result.method)}\n"
|
|
175
|
+
f"[bold]Layers edited:[/] {list(result.layers_edited)}\n"
|
|
176
|
+
f"[bold]Norm delta:[/] {result.norm_delta:.4f}\n"
|
|
177
|
+
f"[bold]Target prob:[/] {result.target_prob_before:.4f} -> "
|
|
178
|
+
f"{result.target_prob_after:.4f}\n"
|
|
179
|
+
+ (
|
|
180
|
+
f"[bold]Saved:[/] {escape(result.output_dir)}\n"
|
|
181
|
+
if result.output_dir
|
|
182
|
+
else ""
|
|
183
|
+
)
|
|
184
|
+
+ (
|
|
185
|
+
f"[bold]Governor:[/] count="
|
|
186
|
+
f"{governor.edit_count} verdict={escape(governor.last_verdict)}"
|
|
187
|
+
if governor is not None
|
|
188
|
+
else "[dim]Governor disabled.[/]"
|
|
189
|
+
),
|
|
190
|
+
title="Edit applied",
|
|
191
|
+
border_style="green",
|
|
192
|
+
)
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
if registry_id is not None and result.output_dir is not None:
|
|
196
|
+
from soup_cli.registry.attach import attach_artifact
|
|
197
|
+
|
|
198
|
+
kind = "grace_codebook" if result.method == "grace" else "edited_model"
|
|
199
|
+
try:
|
|
200
|
+
attach_artifact(registry_id, path=result.output_dir, kind=kind)
|
|
201
|
+
console.print(
|
|
202
|
+
f"[green]Attached {kind} to Registry entry "
|
|
203
|
+
f"{escape(registry_id)}.[/]"
|
|
204
|
+
)
|
|
205
|
+
except (ValueError, FileNotFoundError) as exc:
|
|
206
|
+
console.print(
|
|
207
|
+
f"[yellow]Could not attach to Registry:[/] {escape(str(exc))}"
|
|
208
|
+
)
|
|
126
209
|
|
|
127
210
|
|
|
128
211
|
@app.command(name="diff")
|
|
@@ -148,12 +231,25 @@ def diff_edit(
|
|
|
148
231
|
10, "--top-k", "-k",
|
|
149
232
|
help="Number of changed facts to surface (1-100).",
|
|
150
233
|
),
|
|
234
|
+
before_model: Optional[str] = typer.Option(
|
|
235
|
+
None, "--before-model",
|
|
236
|
+
help="Model path / HF id of the BEFORE model (enables live generation).",
|
|
237
|
+
),
|
|
238
|
+
after_model: Optional[str] = typer.Option(
|
|
239
|
+
None, "--after-model",
|
|
240
|
+
help="Model path / HF id of the AFTER model (enables live generation).",
|
|
241
|
+
),
|
|
242
|
+
device: Optional[str] = typer.Option(
|
|
243
|
+
None, "--device",
|
|
244
|
+
help="torch device (cpu / cuda). Defaults to CUDA when available.",
|
|
245
|
+
),
|
|
151
246
|
) -> None:
|
|
152
247
|
"""Knowledge-injection diff: facts changed between before / after.
|
|
153
248
|
|
|
154
|
-
|
|
155
|
-
v0.
|
|
156
|
-
|
|
249
|
+
Pass both ``--before-model`` and ``--after-model`` (plus ``--probes``) to
|
|
250
|
+
generate the diff LIVE (v0.71.9 #194): each probe is run through both
|
|
251
|
+
models and changed completions are surfaced. Without model paths the
|
|
252
|
+
report is a validated placeholder.
|
|
157
253
|
"""
|
|
158
254
|
from soup_cli.utils.edit_diff import build_diff_report, render_diff_table
|
|
159
255
|
|
|
@@ -163,6 +259,9 @@ def diff_edit(
|
|
|
163
259
|
after_run_id=after,
|
|
164
260
|
probe_file=probe_file,
|
|
165
261
|
top_k=top_k,
|
|
262
|
+
before_model=before_model,
|
|
263
|
+
after_model=after_model,
|
|
264
|
+
device=device,
|
|
166
265
|
)
|
|
167
266
|
except (TypeError, ValueError, FileNotFoundError) as exc:
|
|
168
267
|
console.print(f"[red]Cannot build diff:[/] {escape(str(exc))}")
|
|
@@ -904,6 +904,11 @@ def train(
|
|
|
904
904
|
from soup_cli.trainer.classifier import ClassifierTrainerWrapper
|
|
905
905
|
|
|
906
906
|
trainer_wrapper = ClassifierTrainerWrapper(cfg, **trainer_kwargs)
|
|
907
|
+
elif cfg.task == "unlearn":
|
|
908
|
+
# v0.71.9 #193 — NPO / SimNPO / RMU unlearning.
|
|
909
|
+
from soup_cli.trainer.unlearn import UnlearnTrainerWrapper
|
|
910
|
+
|
|
911
|
+
trainer_wrapper = UnlearnTrainerWrapper(cfg, **trainer_kwargs)
|
|
907
912
|
else:
|
|
908
913
|
trainer_wrapper = SFTTrainerWrapper(cfg, **trainer_kwargs)
|
|
909
914
|
trainer_wrapper.setup(dataset)
|
|
@@ -47,6 +47,9 @@ _VALID_KINDS = frozenset(
|
|
|
47
47
|
"judge_calibration",
|
|
48
48
|
# v0.71.4 #173 — adapter branch-pointer JSON files.
|
|
49
49
|
"branch_ref",
|
|
50
|
+
# v0.71.9 #194/#203 — knowledge-edited models + GRACE codebooks.
|
|
51
|
+
"edited_model",
|
|
52
|
+
"grace_codebook",
|
|
50
53
|
}
|
|
51
54
|
)
|
|
52
55
|
_VALID_RELATIONS = frozenset(
|