soup-cli 0.71.36__tar.gz → 0.71.38__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.36 → soup_cli-0.71.38}/CHANGELOG.md +81 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/CONTRIBUTING.md +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/CONTRIBUTORS.md +2 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/PKG-INFO +65 -31
- {soup_cli-0.71.36 → soup_cli-0.71.38}/README.md +64 -30
- {soup_cli-0.71.36 → soup_cli-0.71.38}/docs/backends-and-ops.md +4 -4
- {soup_cli-0.71.36 → soup_cli-0.71.38}/docs/commands.md +6 -5
- {soup_cli-0.71.36 → soup_cli-0.71.38}/docs/data.md +3 -3
- {soup_cli-0.71.36 → soup_cli-0.71.38}/docs/evaluation.md +23 -6
- {soup_cli-0.71.36 → soup_cli-0.71.38}/docs/models.md +23 -23
- {soup_cli-0.71.36 → soup_cli-0.71.38}/docs/performance-and-quantization.md +5 -5
- {soup_cli-0.71.36 → soup_cli-0.71.38}/docs/serving-and-export.md +6 -6
- {soup_cli-0.71.36 → soup_cli-0.71.38}/docs/training.md +2 -2
- {soup_cli-0.71.36 → soup_cli-0.71.38}/examples/README.md +3 -3
- {soup_cli-0.71.36 → soup_cli-0.71.38}/examples/configs/dpo_example.yaml +2 -2
- {soup_cli-0.71.36 → soup_cli-0.71.38}/pyproject.toml +2 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/__init__.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/cloud/modal.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/compile_cmd.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/data.py +5 -3
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/data_canary.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/data_topics.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/eval.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/export.py +4 -4
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/generate.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/mcp.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/merge_sharded_fsdp_weights.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/serve.py +3 -3
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/ship.py +72 -64
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/train.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/tui.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/ui.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/config/schema.py +18 -18
- soup_cli-0.71.38/src/soup_cli/data/_fixtures/gate/format_json.jsonl +40 -0
- soup_cli-0.71.38/src/soup_cli/data/_fixtures/gate/safety.jsonl +40 -0
- soup_cli-0.71.38/src/soup_cli/data/_fixtures/gate/tool_call.jsonl +40 -0
- soup_cli-0.71.38/src/soup_cli/eval/forgetting.py +350 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/eval/gate.py +5 -8
- soup_cli-0.71.38/src/soup_cli/eval/gate_suites.py +234 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/eval/judge.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/mcp_server/registry.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/audio.yaml +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/bco.yaml +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/chat.yaml +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/code.yaml +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/embedding.yaml +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/eu-ai-act.yaml +2 -2
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/ipo.yaml +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/kto.yaml +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/longcontext.yaml +2 -2
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/medical.yaml +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/moe.yaml +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/orpo.yaml +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/pretrain.yaml +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/reasoning.yaml +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/rlhf.yaml +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/simpo.yaml +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/tool-calling.yaml +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/vision.yaml +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/mlx_dpo.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/mlx_grpo.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/mlx_sft.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/online_dpo.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/sft.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/apple_adapter.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/compile_tools.py +2 -2
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/data_doctor.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/data_lint.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/delinearize_llama4.py +1 -1
- soup_cli-0.71.38/src/soup_cli/utils/diagnose/__init__.py +57 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/diagnose/_common.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/errors.py +7 -7
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/grpo_long_context.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/liger.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/mii.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/prompt_compile.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/prune_prompt.py +1 -1
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_part_a_wave1.py +23 -13
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_training_intelligence.py +6 -3
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07125.py +11 -9
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07136.py +7 -2
- soup_cli-0.71.38/tests/test_v07137.py +139 -0
- soup_cli-0.71.38/tests/test_v07138.py +598 -0
- soup_cli-0.71.36/src/soup_cli/eval/forgetting.py +0 -121
- soup_cli-0.71.36/src/soup_cli/utils/diagnose/__init__.py +0 -42
- {soup_cli-0.71.36 → soup_cli-0.71.38}/.dockerignore +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/.github/FUNDING.yml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/.github/pull_request_template.md +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/.github/workflows/ci.yml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/.github/workflows/docker.yml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/.github/workflows/publish.yml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/.github/workflows/recipe-validation.yml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/.gitignore +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/.mailmap +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/.pre-commit-config.yaml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/AGENTS.md +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/CODEOWNERS +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/CODE_OF_CONDUCT.md +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/Dockerfile +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/LICENSE +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/NOTICE +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/SECURITY.md +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/docker-compose.yml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/docs/README.md +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/docs/adapters-and-governance.md +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/docs/compliance.md +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/docs/peft-and-efficiency.md +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/examples/configs/dpo_chat.yaml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/examples/configs/grpo_reasoning.yaml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/examples/configs/rlhf_step1_sft.yaml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/examples/configs/rlhf_step2_reward.yaml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/examples/configs/rlhf_step3_ppo.yaml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/examples/configs/sft_basic.yaml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/examples/configs/vision_llama.yaml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/examples/data/alpaca_tiny.jsonl +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/examples/data/chat_preferences.jsonl +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/examples/data/dpo_sample.jsonl +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/examples/data/reasoning_math.jsonl +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/examples/reward_hacking/rewards.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/examples/synthetic_workflow.md +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/examples/synthetic_workflow.yaml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/soup.png +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/soup_logo_svg.svg +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/__main__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/autopilot/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/autopilot/analyzer.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/autopilot/decisions.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/autopilot/generate_config.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/cans/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/cans/pack.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/cans/publish.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/cans/run.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/cans/schema.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/cans/unpack.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/cans/verify.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/cli.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/cloud/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/_eval_v0550.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/_eval_v0610.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/_eval_v0650.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/_eval_v07110.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/_webhook_cli.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/ab.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/active_sample.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/adapters.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/advise.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/agent.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/airgap.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/apple_adapter.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/attest.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/audit_log.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/autopilot.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/bench.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/bom.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/build.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/can.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/card.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/chat.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/ci.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/compile_tools.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/completions.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/cost.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/data_doctor.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/data_forge.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/data_mix.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/data_score.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/delinearize_llama4.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/deploy.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/diagnose.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/diff.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/distill_prompt.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/doctor.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/draft.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/drift_alarm.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/edit.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/env.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/expect.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/fetch.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/history.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/infer.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/ingest.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/init.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/iterative_dpo.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/license_advisor.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/llama.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/local_rl.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/lock.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/loop.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/merge.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/migrate.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/monitor.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/plan.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/plugins.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/probe.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/profile.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/prune_prompt.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/push.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/quantize.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/quickstart.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/ra_dit.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/recipes.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/registry.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/runs.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/shrink.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/spectrum.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/steer.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/sweep.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/tokenizer.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/tunability.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/commands/why.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/config/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/config/loader.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/_fixtures/alpaca_tiny.jsonl +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/_fixtures/behavior/elephant.jsonl +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/_fixtures/behavior/harmbench.jsonl +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/_fixtures/behavior/jailbreakbench.jsonl +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/_fixtures/behavior/syceval.jsonl +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/_fixtures/behavior/xstest.jsonl +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/_fixtures/chat_preferences.jsonl +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/_fixtures/dpo_sample.jsonl +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/_fixtures/reasoning_math.jsonl +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/_fixtures/unlearning/muse_demo.jsonl +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/_fixtures/unlearning/tofu_demo.jsonl +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/_fixtures/unlearning/wmdp_demo.jsonl +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/augment.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/chat_templates.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/collators.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/formats.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/loader.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/loss_mask.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/providers/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/providers/_utils.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/providers/anthropic.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/providers/ollama.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/providers/vllm.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/sft_format.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/templates/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/templates/code.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/templates/conversation.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/templates/preference.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/templates/qa.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/templates/reasoning.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/templates/tool_calling.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/templates/verifiable.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/traces/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/traces/pair_builder.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/traces/parsers.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/traces/quality.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/data/validator.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/envs/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/envs/_common.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/envs/calculator.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/envs/guess_number.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/envs/retrieval_qa.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/eval/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/eval/arena.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/eval/benchmarks_v0_43.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/eval/calibrate.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/eval/checkpoint_intelligence.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/eval/custom.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/eval/human.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/eval/leaderboard.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/eval/quant_check.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/experiment/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/experiment/tracker.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/mcp_server/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/mcp_server/server.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/migrate/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/migrate/axolotl.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/migrate/common.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/migrate/llamafactory.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/migrate/unsloth.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/monitoring/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/monitoring/callback.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/monitoring/curriculum_callback.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/monitoring/display.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/monitoring/grpo_stability_callback.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/monitoring/hf_push.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/monitoring/plugin_callback.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/monitoring/trace_logger.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/plugins/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/py.typed +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/recipes/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/recipes/catalog.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/registry/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/registry/attach.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/registry/diff.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/registry/hashing.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/registry/store.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/fetch_examples/llama-3.1-8b-lora.yaml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/fetch_examples/qwen2.5-7b-dpo.yaml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/fetch_examples/zero3-cpu-offload.json +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/hipaa.yaml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/manifest.json +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/soc2.yaml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/templates/sr-11-7.yaml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/asr.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/bco.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/bitnet.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/classifier.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/distill.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/dpo.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/embedding.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/grpo.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/ipo.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/kto.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/mlx_routing.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/mole_routing.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/orpo.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/ppo.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/preference.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/pretrain.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/prm.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/raft.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/reward_model.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/rewards.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/simpo.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/tts.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/trainer/unlearn.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/tui_app.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/ui/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/ui/app.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/ui/plugins/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/ui/static/app.js +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/ui/static/index.html +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/ui/static/logo.png +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/ui/static/logo.svg +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/ui/static/style.css +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/_eval_text.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/ab_test.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/activation_offload.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/active_sampler.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/adapter_arithmetic.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/adapter_bisect.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/adapter_branch.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/adapter_diff.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/adapter_fuse.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/adapter_merge.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/adapter_pr.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/adapter_scan.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/adapter_sign.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/advanced_precision.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/advise.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/advise_history.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/agent_forge.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/agent_rollout.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/agent_sandbox.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/airgap_bundle.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/annex_xi.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/anthropic_messages.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/asr_metrics.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/attest.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/audit_log.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/auto_quant.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/backend_detect.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/batch_probe.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/behavior_battery.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/best_of_n.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/bitnet.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/blame.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/block_expansion.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/bom.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/brain_rot.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/brain_rot_lang.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/build_dag.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/canary.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/canary_discovery.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/canary_router.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/capability_suite.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/checklist_dsl.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/checkpoint_trigger.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/ci_workflow.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/citation_faithful.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/classifier.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/cmaes_merge.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/completions.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/constants.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/convergence.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/crash.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/cross_doc_attn.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/curriculum.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/curriculum_dynamic.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/cut_ce.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/data_forge.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/data_mix.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/data_pipeline.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/data_score.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/deepspeed.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/demo_bundles.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/deploy_autopilot.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/deploy_measure.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/diagnose/badge.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/diagnose/citation.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/diagnose/contamination.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/diagnose/forgetting.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/diagnose/format.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/diagnose/live.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/diagnose/memorization.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/diagnose/mode_collapse.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/diagnose/refusal.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/diagnose/report.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/diagnose/runner.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/distill.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/dpo_variants.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/draft.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/drift_alarm.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/ebft_gdpo.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/echo_trap.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/edit_diff.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/edit_governor.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/edit_kernels.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/embed.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/encoding.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/energy.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/env_lock.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/eval_design.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/eval_gate_hook.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/eval_lock_coverage.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/evolve.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/expectations.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/fetch_examples.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/flash_attn.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/fp8.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/freeze.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/fsdp.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/fsdp_consolidate.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/galore.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/gguf_quant.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/gpu.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/gpu_monitor.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/grace_codebook.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/graceful_save.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/grad_accum.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/gradient_ckpt.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/grpo_variants.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/hardware_fit.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/harm_probe.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/hf.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/hf_space.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/hubs.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/ingest_sources.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/integrations.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/interference.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/interference_live.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/irt.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/iterative_dpo.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/jinja_analyzer.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/kernel_picker.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/knowledge_edit.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/kv_cache.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/launcher.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/license_advisor.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/license_matrix.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/lisa.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/live_eval.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/llama_proxy.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/llama_server_timings.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/local_rl.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/local_rl_scheduler.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/loftq_init.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/log_level.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/long_context.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/longlora.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/loop_budget.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/loop_daemon.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/loop_iteration.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/loop_stages.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/loop_state.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/lr_finder.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/lr_groups.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/magpie.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/metrics.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/minillm.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/mix_proxy.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/mixed_precision.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/mlx.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/mod.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/moe.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/moe_quant.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/mole_routing.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/multipack.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/multipack_sampler.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/multipack_trainer.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/namespace_pin.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/neat_packing.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/ngram_spec.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/nlg_metrics.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/ollama.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/onboarding.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/optimizer_zoo.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/paths.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/peft_builder.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/peft_patches.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/peft_wiring.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/persona_hub.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/pipeline.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/preference_combine.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/prm.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/prm_reward.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/probe_kernel.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/probe_pack.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/profiler.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/profiling.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/profiling_v0_43.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/prompt_distill.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/qat.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/qr_url.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/quality.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/quant_menu.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/ra_dit.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/ra_dit_run.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/raft.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/reasoning_effort.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/reasoning_parser.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/recipe_dag.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/recipe_run.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/registry.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/rehearsal.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/relora.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/replay.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/repro_receipt.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/reward_hack_control.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/reward_hacking.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/ring_attention.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/rl_checkpoint.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/rl_signal_buffer.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/run_cost.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/sae_diff.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/save_formats.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/semdedup.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/server_tools.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/sglang.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/ship_verdict.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/shortcuts.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/shrink.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/signing.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/sleeper_probe.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/soup_lock.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/spec_pairing.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/spectrum_scan.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/spike_recovery.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/sse_train_stream.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/steering.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/strict_safetensors.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/structured_output.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/sweep_config.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/tail_latency.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/terraform_plan.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/tool_outputs.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/topics.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/topology.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/tracing.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/trackers.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/train_event_buffer.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/trainer_plugins.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/trust_remote.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/truth_probe.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/tts.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/tts_codec.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/tunability.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/ui_env.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/uld.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/unlearn_kernels.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/unlearning.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/unlearning_eval.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/unsloth.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/v028_features.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/vector_bank.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/vllm.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/vscode_setup.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/warmup.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/webhooks.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/src/soup_cli/utils/why.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/templates/chat.yaml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/templates/code.yaml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/templates/medical.yaml +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/__init__.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/conftest.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/qa/v053_qa.md +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/qa/v07114_qa.md +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/qa/v0716_qa.md +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_adapters.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_advanced_peft.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_assistant_mask.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_audio.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_auto_tuning.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_autopilot.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_awq_gptq_export.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_batch_probe.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_bco.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_bench.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_brain_rot_multilingual.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_bugfixes.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_build_dag.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_callback.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_cans.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_chat.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_chat_template.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_cli.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_cli_subprocess.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_code_review_critical.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_code_review_deferred.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_code_review_high.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_code_review_medium_low.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_code_review_recurring.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_config.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_cost.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_crash_reporter.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_curriculum.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_data.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_data_augment.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_data_sample.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_data_split.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_data_tools.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_dataset_hub.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_dataset_registry.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_deepspeed.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_deploy_ollama.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_diff.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_display.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_doctor.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_dpo_example.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_dpo_variants.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_embedding.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_errors.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_eval.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_eval_gate.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_eval_platform.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_export.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_formats.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_fp8_recipe.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_freeze_training.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_generate.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_gpu.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_grpo.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_hf_integration.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_infer.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_inference_advanced.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_init.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_ipo.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_jinja_analyzer.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_kto.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_loader.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_log_level.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_loss_watchdog.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_merge.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_migrate.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_mlx_backend.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_moe.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_multi_adapter.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_multi_gpu.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_multipack_config.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_multipack_invariants.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_multipack_sampler.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_neat_packing.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_neftune_rslora.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_onnx_tensorrt_export.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_orpo.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_packing.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_part_a_wave2.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_part_b.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_part_c.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_part_d.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_part_e.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_part_f_hardening.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_peft_methods.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_peft_patches.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_performance.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_pissa_init.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_ppo.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_preference_dispatcher.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_preference_multi.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_preference_multi_runtime.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_pretrain.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_profile.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_profiling.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_progress.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_push.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_qat.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_quality_filter.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_quant_check.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_quant_menu.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_quickstart.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_rank_pattern.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_recipes.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_recipes_v031.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_refusal_multilingual.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_registry.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_relora.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_replay.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_resume.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_review_fixes_v07133.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_rlvr.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_run_cost.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_runs.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_serve.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_server_generate.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_sglang_serve.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_simpo.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_smoke_train.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_speculative_decoding.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_sweep.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_synth_data_pro.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_templates_yaml.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_tensorboard.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_tool_calling.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_trace_to_pref.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_tracker.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_trainer_coverage_v035.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_trainer_init.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_training_speed.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_trust_remote_code.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_tui.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_ui.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_ui_chat.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_ui_config_builder.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_ui_live_monitor.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_ui_metrics.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_unsloth.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0401_part_c.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0401_part_d.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0401_part_e.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0402_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0402_part_b.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0403_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0403_part_b.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0403_part_c.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0404_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0404_part_b.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0405_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0406_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0410_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0410_part_b.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0410_part_c.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0420.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0430_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0430_part_b.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0430_part_c.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0430_part_d.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0440_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0440_part_b.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0440_part_c.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0440_part_d.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0440_review_followups.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0450.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0460_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0460_part_b.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0470_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0470_part_b.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0480_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0480_part_b.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0490.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0500_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0500_part_b.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0500_part_c.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0500_part_d.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0500_part_e.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0510.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0520.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0530.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v05310.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v05311.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0531_109.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0531_139.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0531_142.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0531_82.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0532.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0533.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0534.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0535.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0536.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0537.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0538.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0539.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0540.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0550.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0550_followups.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0560.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0570_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0570_part_b.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0570_part_c.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0570_part_d.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0580.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0590.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0600_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0600_part_b.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0600_part_c.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0600_part_d.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0600_part_e.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0600_part_f.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0610_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0610_part_b.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0610_part_c.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0610_part_d.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0610_part_e.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0620_followups.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0620_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0620_part_b.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0620_part_c.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0620_part_d.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0620_part_e.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0630_followups.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0630_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0630_part_b.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0630_part_c.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0630_part_d.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0630_part_e.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0631_206.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0640_followups.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0640_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0640_part_b.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0640_part_c.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0640_part_d.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0640_part_e.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0640_part_f.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0650_followups.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0650_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0650_part_b.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0650_part_c.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0650_part_d.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0650_part_e.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0660_cli.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0660_followups.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0660_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0660_part_b.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0660_part_c.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0660_part_d.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0660_part_e.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0670_followups.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0670_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0670_part_b.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0670_part_c.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0670_part_d.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0670_part_e.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0670_part_f.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0680_followups.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0680_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0680_part_b.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0680_part_c.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0680_part_d.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0680_part_e.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0690_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0690_part_b.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0690_part_c.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0690_part_d.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0690_part_e.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0700_part_a.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0700_part_b.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0700_part_c.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0700_part_d.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0700_part_e.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0700_part_f.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07110.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07111.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07112.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07113.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07114.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07115.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07116.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07117.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07118.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07119.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0712.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07120.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07121.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07122.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07123.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07124.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07126.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07127.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07128.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07129.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0713.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07130.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07131.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07132.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07133.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07134.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v07135.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0714.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0715.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0716.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0717.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0718.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_v0719.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_validator.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_vision.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_vllm_serve.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_warmup.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_why.py +0 -0
- {soup_cli-0.71.36 → soup_cli-0.71.38}/tests/test_windows_encoding.py +0 -0
|
@@ -12,6 +12,87 @@ reproducing 70+ versions of notes.
|
|
|
12
12
|
|
|
13
13
|
## [Unreleased]
|
|
14
14
|
|
|
15
|
+
## [0.71.38] - 2026-07-17
|
|
16
|
+
|
|
17
|
+
**`soup ship`'s regression leg now has teeth.** Leg 2 (the catastrophic-forgetting
|
|
18
|
+
/ regression gate that carries the whole SHIP / DON'T-SHIP claim) was 15
|
|
19
|
+
hand-written trivia prompts scored by case-insensitive **substring** containment
|
|
20
|
+
— it scored `"B"` for "**B**erlin", `"ok"` for "lo**ok**", `"3"` for "1**3**", and
|
|
21
|
+
had **zero** items for tool-calling, safety, or JSON validity. This release makes
|
|
22
|
+
the gate real: a fixed, extraction-based scorer + bundled, offline, zero-dep eval
|
|
23
|
+
suites that catch a regression the old gate waved through.
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
|
|
27
|
+
- **Fixed answer scorer (breaking — verdicts can change).** `soup ship`'s leg-2
|
|
28
|
+
MCQ / instruction / arithmetic answers are now scored by answer-**extraction**
|
|
29
|
+
+ a boundary-aware match, replacing the raw substring test. A spurious
|
|
30
|
+
substring inside another word ("Berlin", "look", "13") no longer scores a
|
|
31
|
+
correct answer, so an existing run's verdict may flip — intentionally, because
|
|
32
|
+
the old gate was reporting false negatives.
|
|
33
|
+
- **Bundled, offline general suite.** The default `--general-suite` is now seven
|
|
34
|
+
hand-authored suites shipped in the wheel: `mini_mmlu` / `mini_common_sense` /
|
|
35
|
+
`mini_instruction` (expanded), a new `mini_arithmetic`, and three behavioural
|
|
36
|
+
suites the old gate had no coverage for — `mini_tool_call` (function-calling),
|
|
37
|
+
`mini_format_json` (JSON validity), and `mini_safety` (refusal-rate). Each is
|
|
38
|
+
scored to a per-model absolute score by the pure scorers Soup already ships
|
|
39
|
+
(`eval/custom`, `utils/diagnose`); no lm-eval, no network, no download. Every
|
|
40
|
+
suite is large enough that a single-item flip (1/N < 0.05) trips the default
|
|
41
|
+
threshold instead of being rounded away.
|
|
42
|
+
- **`soup ship` exit codes: usage errors moved 2 → 3.** Exit `2` now means only
|
|
43
|
+
DON'T-SHIP; a typo'd flag or bad `--general-suite` exits `3` (mirroring
|
|
44
|
+
`soup plan` / `soup env check`), so CI can tell a config error from a caught
|
|
45
|
+
regression. Offline `--evidence` read/parse errors stay `1`. **Breaking** for
|
|
46
|
+
anyone parsing exit `2` as "usage error".
|
|
47
|
+
|
|
48
|
+
### Fixed
|
|
49
|
+
|
|
50
|
+
- `soup ship` help + docstrings no longer describe `--task-mode pairwise` as
|
|
51
|
+
"reserved for a later release" (it shipped in v0.71.31); the dead
|
|
52
|
+
`SUPPORTED_TASK_MODES` gate is removed.
|
|
53
|
+
- `soup diagnose`'s package docstring said "Six" probes (there are seven —
|
|
54
|
+
citation) and pointed live loading at an unshipped version; it now re-exports
|
|
55
|
+
all seven `score_*` probe functions so callers need not reach into submodules.
|
|
56
|
+
|
|
57
|
+
## [0.71.37] - 2026-07-17
|
|
58
|
+
|
|
59
|
+
**Every `pip install soup-cli[extra]` command now works on Windows `cmd.exe`**, and
|
|
60
|
+
eval-gate benchmark tasks run instead of always failing.
|
|
61
|
+
|
|
62
|
+
### Fixed
|
|
63
|
+
|
|
64
|
+
- **Install hints are now quoted so they work in every shell.** Soup printed
|
|
65
|
+
`pip install 'soup-cli[ui]'` — bash / zsh / PowerShell syntax. `cmd.exe` has no
|
|
66
|
+
single-quote quoting, so it hands the quotes to pip verbatim and pip refuses:
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
ERROR: Invalid requirement: "'soup-cli[train]'": Expected package name at the start of dependency specifier
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Every hint, README command, and docs example now uses `pip install
|
|
73
|
+
"soup-cli[extra]"`, which works in cmd, PowerShell, bash, and zsh alike — the
|
|
74
|
+
same spelling the repo already used for `pip install -e ".[dev]"`. Measured on
|
|
75
|
+
Windows: single quotes fail only on `cmd.exe`; double quotes pass everywhere;
|
|
76
|
+
dropping the quotes passes on Windows but breaks zsh, which globs the bracket.
|
|
77
|
+
|
|
78
|
+
Nothing in Soup can rescue the command after it is typed — pip and the shell
|
|
79
|
+
own it, and Soup is not installed yet when the README command runs — so the
|
|
80
|
+
fix is the spelling we print. A regression test now scans the package and every
|
|
81
|
+
docs code block for the single-quoted form.
|
|
82
|
+
|
|
83
|
+
If you followed an older tutorial and hit `Invalid requirement`, swap the `'`
|
|
84
|
+
for `"`; nothing is wrong with the package.
|
|
85
|
+
|
|
86
|
+
- **Eval-gate `type: benchmark` tasks now actually run.** `eval/gate.py` probed
|
|
87
|
+
for a `forgetting.run_mini_benchmark` helper that never existed, so every
|
|
88
|
+
`type: benchmark` task in a gate suite failed 100% of the time — while
|
|
89
|
+
advising an `[eval]` extras install that could not fix it. The gate now calls
|
|
90
|
+
`ForgettingDetector` directly (the same way `soup ship` already did), and an
|
|
91
|
+
unknown benchmark name fails with the list of valid names. Thanks
|
|
92
|
+
[@Sanjays2402](https://github.com/Sanjays2402)!
|
|
93
|
+
([#315](https://github.com/MakazhanAlpamys/Soup/pull/315), closes
|
|
94
|
+
[#310](https://github.com/MakazhanAlpamys/Soup/issues/310))
|
|
95
|
+
|
|
15
96
|
## [0.71.36] - 2026-07-16
|
|
16
97
|
|
|
17
98
|
**Data Moat II** — a semantic layer over your training data, plus two tools for
|
|
@@ -120,7 +120,7 @@ src/soup_cli/
|
|
|
120
120
|
templates/ - 21 built-in soup.yaml templates (YAML + manifest.json) with load_template loader (v0.39.0, +bco v0.40.0, +4 compliance v0.71.35)
|
|
121
121
|
ui/ - Web UI (FastAPI + HTML/JS SPA)
|
|
122
122
|
|
|
123
|
-
tests/ - Test suite (
|
|
123
|
+
tests/ - Test suite (316 files, 16330 tests)
|
|
124
124
|
examples/ - Real-world config examples and datasets
|
|
125
125
|
```
|
|
126
126
|
|
|
@@ -52,6 +52,8 @@ Listed by first contribution. PR numbers link the work.
|
|
|
52
52
|
- Honor configured vocab expansion in the ORPO / SimPO / GRPO trainers ([#295](https://github.com/MakazhanAlpamys/Soup/pull/295))
|
|
53
53
|
- **Ekaanksh Patil** ([@Ekaanksh-dev](https://github.com/Ekaanksh-dev))
|
|
54
54
|
- Batch the PRM reward forward pass in `PRMScorer.__call__` (single `[B, T]` forward) ([#301](https://github.com/MakazhanAlpamys/Soup/pull/301))
|
|
55
|
+
- **Sanjay Santhanam** ([@Sanjays2402](https://github.com/Sanjays2402))
|
|
56
|
+
- Run built-in benchmark gate tasks through `ForgettingDetector` — every `type: benchmark` eval-gate task had always failed ([#315](https://github.com/MakazhanAlpamys/Soup/pull/315))
|
|
55
57
|
|
|
56
58
|
---
|
|
57
59
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: soup-cli
|
|
3
|
-
Version: 0.71.
|
|
3
|
+
Version: 0.71.38
|
|
4
4
|
Summary: Fine-tune and post-train LLMs in one command. No SSH, no config hell.
|
|
5
5
|
Project-URL: Homepage, https://github.com/MakazhanAlpamys/Soup
|
|
6
6
|
Project-URL: Repository, https://github.com/MakazhanAlpamys/Soup
|
|
@@ -176,7 +176,7 @@ Description-Content-Type: text/markdown
|
|
|
176
176
|
Soup turns the pain of LLM fine-tuning into a simple workflow. One config, one command, done.
|
|
177
177
|
|
|
178
178
|
```bash
|
|
179
|
-
pip install
|
|
179
|
+
pip install "soup-cli[train]" # add [train] to fine-tune; bare `soup-cli` is the light CLI
|
|
180
180
|
soup init --template chat
|
|
181
181
|
soup train
|
|
182
182
|
```
|
|
@@ -193,38 +193,45 @@ infrastructure instead of improving models. Soup fixes that.
|
|
|
193
193
|
|
|
194
194
|
## What's New
|
|
195
195
|
|
|
196
|
-
**v0.71.
|
|
197
|
-
|
|
198
|
-
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
-
|
|
208
|
-
|
|
209
|
-
- **
|
|
210
|
-
|
|
211
|
-
vs "Multiply two numbers" scores **higher** than a real paraphrase — so no threshold
|
|
212
|
-
separates them. The default is deliberately conservative; see the CHANGELOG.
|
|
213
|
-
- **Two blocking bugs fixed:** the hardware-fit gate **refused to train any model you merged
|
|
214
|
-
yourself** (a local checkpoint's name has no size marker, so it guessed 7B and predicted
|
|
215
|
-
16 GB), and every `pip install 'soup-cli[extra]'` hint printed **without the extra** —
|
|
216
|
-
17 sites where the suggested command succeeds and leaves the feature still broken.
|
|
196
|
+
**v0.71.38 — The gate grows teeth.** `soup ship` answers the one question that matters after a fine-tune — *did my task improve WITHOUT silently breaking everything else?* This release makes the "without breaking everything else" half real.
|
|
197
|
+
|
|
198
|
+
- **A gate that actually catches regressions.** The regression leg used to be 15 trivia
|
|
199
|
+
prompts scored by raw substring — it credited `"B"` for "**B**erlin", `"3"` for "1**3**", and
|
|
200
|
+
had **zero** items for tool-calling, safety, or JSON. Now it's a fixed, extraction-based
|
|
201
|
+
scorer over seven bundled, offline suites (MCQ · arithmetic · **tool-calling** · **JSON
|
|
202
|
+
validity** · **safety/refusal**). A tune that WINS your task but quietly breaks tool-calling
|
|
203
|
+
now gets a **DON'T SHIP** — the old gate waved it through.
|
|
204
|
+
- **Zero new dependencies, no network.** Every suite ships in the wheel and is scored by the
|
|
205
|
+
pure scorers Soup already has — no lm-eval, no download. `soup ci init`'s core-only gate keeps
|
|
206
|
+
working.
|
|
207
|
+
- **Distinct exit codes for CI.** Usage errors moved off exit `2` to `3`, so `2` now means only
|
|
208
|
+
DON'T-SHIP — a typo'd flag is no longer indistinguishable from a caught regression.
|
|
209
|
+
- **Breaking, on purpose.** The fixed scorer can change an existing run's verdict — because the
|
|
210
|
+
old one was reporting false negatives. Recompute any committed `--baseline`.
|
|
217
211
|
|
|
218
212
|
```bash
|
|
219
|
-
|
|
220
|
-
soup
|
|
213
|
+
# leg 1 (task win) AND leg 2 (no regression on the bundled suite) -> one verdict
|
|
214
|
+
soup ship --base ./base --adapter ./my-lora --task-eval my_task.jsonl
|
|
215
|
+
# exit 0 = SHIP · 2 = DON'T SHIP · 3 = bad flags · 1 = runtime error
|
|
221
216
|
|
|
222
|
-
soup
|
|
223
|
-
|
|
217
|
+
soup ship --evidence scores.json # offline verdict from pre-computed scores
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
<details>
|
|
221
|
+
<summary>Previous release — v0.71.36, Data Moat II (semantic dedup · topics · canaries · replay)</summary>
|
|
224
222
|
|
|
223
|
+
`soup data dedup --semantic` dedups by meaning; `soup data topics` shows a coverage table;
|
|
224
|
+
`soup data canary insert|check` proves whether a model memorized inserted secrets (exit 2 on a
|
|
225
|
+
leak); `soup train --replay old.jsonl` interleaves old data so a new task doesn't erase it.
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
soup data topics train.jsonl
|
|
229
|
+
soup data canary check --manifest secrets.json --base ./my-model # exit 2 = leak
|
|
225
230
|
soup train --config sft.yaml --replay old_task.jsonl --replay-ratio 0.1
|
|
226
231
|
```
|
|
227
232
|
|
|
233
|
+
</details>
|
|
234
|
+
|
|
228
235
|
<details>
|
|
229
236
|
<summary>Previous release — v0.71.33, <code>soup draft</code> (measure speculative decoding)</summary>
|
|
230
237
|
|
|
@@ -248,11 +255,38 @@ Full history: [CHANGELOG.md](CHANGELOG.md) · [GitHub Releases](https://gi
|
|
|
248
255
|
### 1. Install
|
|
249
256
|
|
|
250
257
|
```bash
|
|
251
|
-
|
|
252
|
-
pip install
|
|
253
|
-
|
|
258
|
+
# Light core: CLI + config + data tools, no PyTorch
|
|
259
|
+
pip install soup-cli
|
|
260
|
+
|
|
261
|
+
# Add the training stack (torch, transformers, peft, trl, datasets, …)
|
|
262
|
+
pip install "soup-cli[train]"
|
|
263
|
+
|
|
264
|
+
# Everything (train + serve + ui + data) in one shot
|
|
265
|
+
pip install "soup-cli[all]"
|
|
266
|
+
|
|
267
|
+
# Or from GitHub (latest dev)
|
|
268
|
+
pip install git+https://github.com/MakazhanAlpamys/Soup.git
|
|
254
269
|
```
|
|
255
270
|
|
|
271
|
+
The full extras table (`fast`, `mlx`, `serve`, `eval`, `ui`, `vision`, `audio`, …) lives in
|
|
272
|
+
[`docs/models.md`](docs/models.md#optional-extras).
|
|
273
|
+
|
|
274
|
+
> **Use double quotes around the extra.** They are the only spelling that works in
|
|
275
|
+
> every shell — `cmd.exe`, PowerShell, bash, and zsh.
|
|
276
|
+
>
|
|
277
|
+
> Older tutorials and videos (including some of ours) show the single-quoted
|
|
278
|
+
> `pip install 'soup-cli[train]'`. That is bash / zsh / PowerShell syntax, and it
|
|
279
|
+
> fails on Windows `cmd.exe`, which has no single-quote quoting and hands the
|
|
280
|
+
> quotes straight to pip:
|
|
281
|
+
>
|
|
282
|
+
> ```
|
|
283
|
+
> ERROR: Invalid requirement: "'soup-cli[train]'": Expected package name at the start of dependency specifier
|
|
284
|
+
> ```
|
|
285
|
+
>
|
|
286
|
+
> If you hit that, swap the `'` for `"` — pip is rejecting a literal quote
|
|
287
|
+
> character, nothing is wrong with the package. (Dropping the quotes entirely
|
|
288
|
+
> works on Windows too, but zsh then reads `[train]` as a glob and fails.)
|
|
289
|
+
|
|
256
290
|
`soup init`, `soup data …`, and the other data/inspection commands work on the light install.
|
|
257
291
|
Fine-tuning (`soup train`) needs the `[train]` extra.
|
|
258
292
|
|
|
@@ -287,7 +321,7 @@ A complete `soup.yaml`:
|
|
|
287
321
|
```yaml
|
|
288
322
|
base: meta-llama/Llama-3.1-8B-Instruct
|
|
289
323
|
task: sft
|
|
290
|
-
# backend: unsloth # 2-5x faster, pip install
|
|
324
|
+
# backend: unsloth # 2-5x faster, pip install "soup-cli[fast]"
|
|
291
325
|
|
|
292
326
|
data:
|
|
293
327
|
train: ./data/train.jsonl
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
Soup turns the pain of LLM fine-tuning into a simple workflow. One config, one command, done.
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
|
-
pip install
|
|
35
|
+
pip install "soup-cli[train]" # add [train] to fine-tune; bare `soup-cli` is the light CLI
|
|
36
36
|
soup init --template chat
|
|
37
37
|
soup train
|
|
38
38
|
```
|
|
@@ -49,38 +49,45 @@ infrastructure instead of improving models. Soup fixes that.
|
|
|
49
49
|
|
|
50
50
|
## What's New
|
|
51
51
|
|
|
52
|
-
**v0.71.
|
|
53
|
-
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
-
|
|
64
|
-
|
|
65
|
-
- **
|
|
66
|
-
|
|
67
|
-
vs "Multiply two numbers" scores **higher** than a real paraphrase — so no threshold
|
|
68
|
-
separates them. The default is deliberately conservative; see the CHANGELOG.
|
|
69
|
-
- **Two blocking bugs fixed:** the hardware-fit gate **refused to train any model you merged
|
|
70
|
-
yourself** (a local checkpoint's name has no size marker, so it guessed 7B and predicted
|
|
71
|
-
16 GB), and every `pip install 'soup-cli[extra]'` hint printed **without the extra** —
|
|
72
|
-
17 sites where the suggested command succeeds and leaves the feature still broken.
|
|
52
|
+
**v0.71.38 — The gate grows teeth.** `soup ship` answers the one question that matters after a fine-tune — *did my task improve WITHOUT silently breaking everything else?* This release makes the "without breaking everything else" half real.
|
|
53
|
+
|
|
54
|
+
- **A gate that actually catches regressions.** The regression leg used to be 15 trivia
|
|
55
|
+
prompts scored by raw substring — it credited `"B"` for "**B**erlin", `"3"` for "1**3**", and
|
|
56
|
+
had **zero** items for tool-calling, safety, or JSON. Now it's a fixed, extraction-based
|
|
57
|
+
scorer over seven bundled, offline suites (MCQ · arithmetic · **tool-calling** · **JSON
|
|
58
|
+
validity** · **safety/refusal**). A tune that WINS your task but quietly breaks tool-calling
|
|
59
|
+
now gets a **DON'T SHIP** — the old gate waved it through.
|
|
60
|
+
- **Zero new dependencies, no network.** Every suite ships in the wheel and is scored by the
|
|
61
|
+
pure scorers Soup already has — no lm-eval, no download. `soup ci init`'s core-only gate keeps
|
|
62
|
+
working.
|
|
63
|
+
- **Distinct exit codes for CI.** Usage errors moved off exit `2` to `3`, so `2` now means only
|
|
64
|
+
DON'T-SHIP — a typo'd flag is no longer indistinguishable from a caught regression.
|
|
65
|
+
- **Breaking, on purpose.** The fixed scorer can change an existing run's verdict — because the
|
|
66
|
+
old one was reporting false negatives. Recompute any committed `--baseline`.
|
|
73
67
|
|
|
74
68
|
```bash
|
|
75
|
-
|
|
76
|
-
soup
|
|
69
|
+
# leg 1 (task win) AND leg 2 (no regression on the bundled suite) -> one verdict
|
|
70
|
+
soup ship --base ./base --adapter ./my-lora --task-eval my_task.jsonl
|
|
71
|
+
# exit 0 = SHIP · 2 = DON'T SHIP · 3 = bad flags · 1 = runtime error
|
|
77
72
|
|
|
78
|
-
soup
|
|
79
|
-
|
|
73
|
+
soup ship --evidence scores.json # offline verdict from pre-computed scores
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
<details>
|
|
77
|
+
<summary>Previous release — v0.71.36, Data Moat II (semantic dedup · topics · canaries · replay)</summary>
|
|
80
78
|
|
|
79
|
+
`soup data dedup --semantic` dedups by meaning; `soup data topics` shows a coverage table;
|
|
80
|
+
`soup data canary insert|check` proves whether a model memorized inserted secrets (exit 2 on a
|
|
81
|
+
leak); `soup train --replay old.jsonl` interleaves old data so a new task doesn't erase it.
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
soup data topics train.jsonl
|
|
85
|
+
soup data canary check --manifest secrets.json --base ./my-model # exit 2 = leak
|
|
81
86
|
soup train --config sft.yaml --replay old_task.jsonl --replay-ratio 0.1
|
|
82
87
|
```
|
|
83
88
|
|
|
89
|
+
</details>
|
|
90
|
+
|
|
84
91
|
<details>
|
|
85
92
|
<summary>Previous release — v0.71.33, <code>soup draft</code> (measure speculative decoding)</summary>
|
|
86
93
|
|
|
@@ -104,11 +111,38 @@ Full history: [CHANGELOG.md](CHANGELOG.md) · [GitHub Releases](https://gi
|
|
|
104
111
|
### 1. Install
|
|
105
112
|
|
|
106
113
|
```bash
|
|
107
|
-
|
|
108
|
-
pip install
|
|
109
|
-
|
|
114
|
+
# Light core: CLI + config + data tools, no PyTorch
|
|
115
|
+
pip install soup-cli
|
|
116
|
+
|
|
117
|
+
# Add the training stack (torch, transformers, peft, trl, datasets, …)
|
|
118
|
+
pip install "soup-cli[train]"
|
|
119
|
+
|
|
120
|
+
# Everything (train + serve + ui + data) in one shot
|
|
121
|
+
pip install "soup-cli[all]"
|
|
122
|
+
|
|
123
|
+
# Or from GitHub (latest dev)
|
|
124
|
+
pip install git+https://github.com/MakazhanAlpamys/Soup.git
|
|
110
125
|
```
|
|
111
126
|
|
|
127
|
+
The full extras table (`fast`, `mlx`, `serve`, `eval`, `ui`, `vision`, `audio`, …) lives in
|
|
128
|
+
[`docs/models.md`](docs/models.md#optional-extras).
|
|
129
|
+
|
|
130
|
+
> **Use double quotes around the extra.** They are the only spelling that works in
|
|
131
|
+
> every shell — `cmd.exe`, PowerShell, bash, and zsh.
|
|
132
|
+
>
|
|
133
|
+
> Older tutorials and videos (including some of ours) show the single-quoted
|
|
134
|
+
> `pip install 'soup-cli[train]'`. That is bash / zsh / PowerShell syntax, and it
|
|
135
|
+
> fails on Windows `cmd.exe`, which has no single-quote quoting and hands the
|
|
136
|
+
> quotes straight to pip:
|
|
137
|
+
>
|
|
138
|
+
> ```
|
|
139
|
+
> ERROR: Invalid requirement: "'soup-cli[train]'": Expected package name at the start of dependency specifier
|
|
140
|
+
> ```
|
|
141
|
+
>
|
|
142
|
+
> If you hit that, swap the `'` for `"` — pip is rejecting a literal quote
|
|
143
|
+
> character, nothing is wrong with the package. (Dropping the quotes entirely
|
|
144
|
+
> works on Windows too, but zsh then reads `[train]` as a glob and fails.)
|
|
145
|
+
|
|
112
146
|
`soup init`, `soup data …`, and the other data/inspection commands work on the light install.
|
|
113
147
|
Fine-tuning (`soup train`) needs the `[train]` extra.
|
|
114
148
|
|
|
@@ -143,7 +177,7 @@ A complete `soup.yaml`:
|
|
|
143
177
|
```yaml
|
|
144
178
|
base: meta-llama/Llama-3.1-8B-Instruct
|
|
145
179
|
task: sft
|
|
146
|
-
# backend: unsloth # 2-5x faster, pip install
|
|
180
|
+
# backend: unsloth # 2-5x faster, pip install "soup-cli[fast]"
|
|
147
181
|
|
|
148
182
|
data:
|
|
149
183
|
train: ./data/train.jsonl
|
|
@@ -79,7 +79,7 @@ Fine-tune on M1-M4 Macs via Apple's [MLX](https://github.com/ml-explore/mlx) fra
|
|
|
79
79
|
|
|
80
80
|
```bash
|
|
81
81
|
# Install MLX support
|
|
82
|
-
pip install
|
|
82
|
+
pip install "soup-cli[mlx]"
|
|
83
83
|
```
|
|
84
84
|
|
|
85
85
|
```yaml
|
|
@@ -108,7 +108,7 @@ Use the [Unsloth](https://github.com/unslothai/unsloth) backend for significantl
|
|
|
108
108
|
|
|
109
109
|
```bash
|
|
110
110
|
# Install unsloth support
|
|
111
|
-
pip install
|
|
111
|
+
pip install "soup-cli[fast]"
|
|
112
112
|
```
|
|
113
113
|
|
|
114
114
|
Then add one line to your config:
|
|
@@ -143,7 +143,7 @@ app from your `soup.yaml` for serverless, per-second-billed GPU training. The co
|
|
|
143
143
|
base64-embedded as **data** — no code interpolation, no secrets in the generated stub.
|
|
144
144
|
|
|
145
145
|
```bash
|
|
146
|
-
pip install
|
|
146
|
+
pip install "soup-cli[modal]" # only needed for live submit
|
|
147
147
|
|
|
148
148
|
# Plan-only (default): write the stub + print the `modal run` command.
|
|
149
149
|
soup train --config soup.yaml --cloud modal --gpu a100
|
|
@@ -585,7 +585,7 @@ Full-screen Textual dashboard. Two-pane: run list (left) + selected-run detail
|
|
|
585
585
|
(right). `r` refreshes, `q` quits.
|
|
586
586
|
|
|
587
587
|
```bash
|
|
588
|
-
pip install
|
|
588
|
+
pip install "soup-cli[tui]"
|
|
589
589
|
soup tui --refresh 1.0 --limit 50
|
|
590
590
|
```
|
|
591
591
|
|
|
@@ -160,11 +160,12 @@ soup runs show <run_id> Run details + loss graph + cost
|
|
|
160
160
|
soup runs compare <run_1> <run_2> Compare two runs
|
|
161
161
|
soup runs replay <run_id> Replay summary + loss curve from history (also plots a benchmark-score curve when the metric lives in eval_results)
|
|
162
162
|
soup why [run_id] Explain training anomalies (heuristic)
|
|
163
|
-
soup ship --base <m> --adapter <lora> --task-eval t.jsonl SHIP / DON'T-SHIP verdict: task win AND no
|
|
163
|
+
soup ship --base <m> --adapter <lora> --task-eval t.jsonl SHIP / DON'T-SHIP verdict: task win AND no regression on the bundled suite (exit 0=SHIP / 2=DON'T / 3=usage / 1=runtime) (v0.71.25; leg-2 real + usage-off-2 v0.71.38)
|
|
164
164
|
soup ship --evidence ev.json [--output v.json] Decide offline from pre-computed scores (no model load)
|
|
165
165
|
soup ship ... --task-mode judge_score --judge-model ollama://llama3.1 Leg-1 via LLM-as-a-judge
|
|
166
166
|
soup ship ... --task-mode pairwise --judge-model ollama://llama3.1 Leg-1 via swap-debiased judge win-rate (base=0.5) (v0.71.31)
|
|
167
|
-
soup ship ...
|
|
167
|
+
soup ship ... # leg-2 default = 7 bundled offline suites (MCQ/arithmetic + tool_call/format_json/safety, extraction scorer, ~40 items each) (v0.71.38)
|
|
168
|
+
soup ship ... --general-suite mmlu,gsm8k --baseline base.json lm-eval leg-2 override + recorded base scores
|
|
168
169
|
soup card <registry-id> -o MODELCARD.md HF model card from a registry entry: training config, evals, hashes, lineage, artifacts (v0.71.35)
|
|
169
170
|
soup push --model ./out --repo you/m --card <registry-id> Upload that registry-driven card as the README (HF only) (v0.71.35)
|
|
170
171
|
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)
|
|
@@ -255,9 +256,9 @@ soup adapters bisect <ckpt>... --eval-command "..." Binary search over training
|
|
|
255
256
|
soup lock write --base-sha <h> --dataset-sha <h> --env-hash <h> Write soup.lock (v0.67.0)
|
|
256
257
|
soup lock write --base-sha <h> --dataset-sha <h> --env-lock soup-env.lock Auto-derive --env-hash from soup-env.lock (v0.71.1)
|
|
257
258
|
soup lock show / soup lock check Show + drift-check (exit 3 on drift)
|
|
258
|
-
soup compile <program.py> --eval <suite> [--optimizer mipro|gepa|textgrad|copro|bootstrap_fewshot] [--plan-only] DSPy / GEPA / TextGrad prompt-program compiler — live (v0.71.13; pip install
|
|
259
|
+
soup compile <program.py> --eval <suite> [--optimizer mipro|gepa|textgrad|copro|bootstrap_fewshot] [--plan-only] DSPy / GEPA / TextGrad prompt-program compiler — live (v0.71.13; pip install "soup-cli[compile]")
|
|
259
260
|
soup distill-prompt --traces <jsonl> --teacher <m> --student <m> --strategy sft|preference|kl [--provider ollama|anthropic|vllm] [--base-url <url>] [--temperature F] [--max-rows N] Distill prompt-heavy traces via a live teacher (v0.71.13)
|
|
260
|
-
soup compile-tools <spec.json|yaml> --eval <jsonl> [--optimizer textgrad|gepa] [--plan-only] TextGrad / GEPA tool-schema optimiser — live (v0.71.13; pip install
|
|
261
|
+
soup compile-tools <spec.json|yaml> --eval <jsonl> [--optimizer textgrad|gepa] [--plan-only] TextGrad / GEPA tool-schema optimiser — live (v0.71.13; pip install "soup-cli[compile]")
|
|
261
262
|
soup apple-adapter <source-dir> --direction hf-to-mlx|mlx-to-hf|hf-to-apple|mlx-to-apple --output <dir> [--sign] [--plan-only] PEFT LoRA <-> mlx-lm adapter conversion — live (v0.71.21; *-to-apple upstream-gated exit 3)
|
|
262
263
|
soup local-rl init --db <path> Create personal-LLM flywheel SQLite schema (v0.68.0)
|
|
263
264
|
soup local-rl status --db <path> Print interactions / thumbs-up / thumbs-down counters
|
|
@@ -299,7 +300,7 @@ server over **stdio**, so any MCP client — Claude Code, Cursor, Cline, Continu
|
|
|
299
300
|
can drive Soup conversationally. Install the extra first:
|
|
300
301
|
|
|
301
302
|
```bash
|
|
302
|
-
pip install
|
|
303
|
+
pip install "soup-cli[mcp]"
|
|
303
304
|
```
|
|
304
305
|
|
|
305
306
|
Register it with your client. For **Claude Code** (`.mcp.json` in the repo) or
|
|
@@ -337,7 +337,7 @@ soup data generate --prompt "..." --validate
|
|
|
337
337
|
# Auto-filter by quality (coherence scoring)
|
|
338
338
|
soup data generate --prompt "..." --filter
|
|
339
339
|
|
|
340
|
-
# Auto-dedup (MinHash, requires: pip install
|
|
340
|
+
# Auto-dedup (MinHash, requires: pip install "soup-cli[data]")
|
|
341
341
|
soup data generate --prompt "..." --dedup
|
|
342
342
|
|
|
343
343
|
# Full quality pipeline: validate + filter + dedup
|
|
@@ -591,7 +591,7 @@ soup data convert ./data/train.jsonl --to sharegpt --output converted.jsonl
|
|
|
591
591
|
# Merge multiple datasets
|
|
592
592
|
soup data merge data1.jsonl data2.jsonl --output merged.jsonl --shuffle
|
|
593
593
|
|
|
594
|
-
# Remove near-duplicates (requires: pip install
|
|
594
|
+
# Remove near-duplicates (requires: pip install "soup-cli[data]")
|
|
595
595
|
soup data dedup ./data/train.jsonl --threshold 0.8
|
|
596
596
|
|
|
597
597
|
# Extended statistics (length distribution, token counts, languages)
|
|
@@ -814,7 +814,7 @@ Five checks: `length_bias` — the **#1 silent DPO degradation**: `chosen`
|
|
|
814
814
|
systematically longer than `rejected`, reported as a Cohen's d effect size —
|
|
815
815
|
`label_imbalance` (KTO desirable:undesirable ratio), `near_duplicates`
|
|
816
816
|
(MinHash/LSH, reuses the `soup data dedup` kernel; requires
|
|
817
|
-
`pip install
|
|
817
|
+
`pip install "soup-cli[data]"`, degrades to an advisory skip otherwise),
|
|
818
818
|
`identical_pairs` (`chosen == rejected` — zero preference signal), and
|
|
819
819
|
`prompt_leak` (the prompt echoed verbatim inside the completion, a common
|
|
820
820
|
synthetic-data pipeline bug). Same OK/MINOR/MAJOR taxonomy and exit codes as
|
|
@@ -355,11 +355,28 @@ soup ship --evidence evidence.json --output verdict.json
|
|
|
355
355
|
}
|
|
356
356
|
```
|
|
357
357
|
|
|
358
|
-
Leg-2 defaults to the
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
358
|
+
Leg-2 defaults to the **bundled offline suite** (v0.71.38) — seven hand-authored suites shipped
|
|
359
|
+
in the wheel and scored by the pure scorers Soup already ships (no lm-eval, no network,
|
|
360
|
+
CPU-instant):
|
|
361
|
+
|
|
362
|
+
| Suite | What it checks | Scorer |
|
|
363
|
+
|-------|----------------|--------|
|
|
364
|
+
| `mini_mmlu` / `mini_common_sense` / `mini_instruction` / `mini_arithmetic` | general knowledge / reasoning / instruction-following / numeracy | answer-extraction + exact/boundary match |
|
|
365
|
+
| `mini_tool_call` | function-calling still works (right tool named) | `tool_call_name_match` |
|
|
366
|
+
| `mini_format_json` | JSON validity (a structured object, not a bare scalar) | container-only JSON check |
|
|
367
|
+
| `mini_safety` | refusal-rate on harmful prompts (under-refusal = regression) | refusal heuristic |
|
|
368
|
+
|
|
369
|
+
Each suite is >20 items so a single-item flip (1/N < 0.05) trips the default threshold instead
|
|
370
|
+
of being rounded away. The scorer is answer-**extraction** — a spurious substring inside a word
|
|
371
|
+
(`"B"` in "**B**erlin") no longer scores, which is a **breaking** change from the v0.25.0
|
|
372
|
+
substring scorer (an existing run's verdict can flip; recompute any committed `--baseline`).
|
|
373
|
+
`--general-suite <names>` with any non-bundled name routes through the lm-eval harness. Pairwise
|
|
374
|
+
judge win-rate (`--task-mode pairwise`) shipped in v0.71.31.
|
|
375
|
+
|
|
376
|
+
Exit codes (v0.71.38): **0 = SHIP · 2 = DON'T SHIP · 3 = usage/flag error · 1 = runtime error**
|
|
377
|
+
— usage errors moved off `2` so CI can tell a config typo from a caught regression. The engine
|
|
378
|
+
lives in `soup_cli.utils.ship_verdict` (`decide_ship` is a pure function — the whole truth table
|
|
379
|
+
is CPU-testable); the bundled suites live in `soup_cli.eval.gate_suites`.
|
|
363
380
|
|
|
364
381
|
|
|
365
382
|
## NLG Evaluation Metrics (BLEU + ROUGE)
|
|
@@ -432,7 +449,7 @@ Full-featured evaluation platform with standard benchmarks, custom evals, LLM-as
|
|
|
432
449
|
|
|
433
450
|
```bash
|
|
434
451
|
# Install eval dependencies
|
|
435
|
-
pip install
|
|
452
|
+
pip install "soup-cli[eval]"
|
|
436
453
|
|
|
437
454
|
# Standard benchmarks (wraps lm-evaluation-harness)
|
|
438
455
|
soup eval benchmark --model ./output --benchmarks mmlu,gsm8k,hellaswag
|
|
@@ -70,29 +70,29 @@ no PyTorch. Add `[train]` to fine-tune, or install other extras only when you ne
|
|
|
70
70
|
|
|
71
71
|
| Extra | Install | What it adds |
|
|
72
72
|
|---|---|---|
|
|
73
|
-
| `train` | `pip install
|
|
74
|
-
| `all` | `pip install
|
|
75
|
-
| `fast` | `pip install
|
|
76
|
-
| `vision` | `pip install
|
|
77
|
-
| `audio` | `pip install
|
|
78
|
-
| `mlx` | `pip install
|
|
79
|
-
| `qat` | `pip install
|
|
80
|
-
| `serve` | `pip install
|
|
81
|
-
| `serve-fast` | `pip install
|
|
82
|
-
| `sglang` | `pip install
|
|
83
|
-
| `ui` | `pip install
|
|
84
|
-
| `tui` | `pip install
|
|
85
|
-
| `eval` | `pip install
|
|
86
|
-
| `data` | `pip install
|
|
87
|
-
| `data-pro` | `pip install
|
|
88
|
-
| `deepspeed` | `pip install
|
|
89
|
-
| `liger` | `pip install
|
|
90
|
-
| `ring-attn` | `pip install
|
|
91
|
-
| `onnx` / `tensorrt` | `pip install
|
|
92
|
-
| `awq` / `gptq` | `pip install
|
|
93
|
-
| `trackers` | `pip install
|
|
94
|
-
| `remote` | `pip install
|
|
95
|
-
| `dev` | `pip install
|
|
73
|
+
| `train` | `pip install "soup-cli[train]"` | Training stack: torch, transformers, peft, trl, datasets, bitsandbytes, accelerate |
|
|
74
|
+
| `all` | `pip install "soup-cli[all]"` | `train` + `serve` + `ui` + `data` in one shot |
|
|
75
|
+
| `fast` | `pip install "soup-cli[fast]"` | Unsloth backend (2-5x faster, lower VRAM) |
|
|
76
|
+
| `vision` | `pip install "soup-cli[vision]"` | Vision / multimodal fine-tuning (Pillow) |
|
|
77
|
+
| `audio` | `pip install "soup-cli[audio]"` | Audio / speech fine-tuning (librosa, soundfile) |
|
|
78
|
+
| `mlx` | `pip install "soup-cli[mlx]"` | Apple Silicon backend (mlx, mlx-lm) |
|
|
79
|
+
| `qat` | `pip install "soup-cli[qat]"` | Quantization-Aware Training (torchao) |
|
|
80
|
+
| `serve` | `pip install "soup-cli[serve]"` | Inference server (FastAPI + uvicorn) |
|
|
81
|
+
| `serve-fast` | `pip install "soup-cli[serve-fast]"` | vLLM inference backend (2-4x throughput) |
|
|
82
|
+
| `sglang` | `pip install "soup-cli[sglang]"` | SGLang inference backend |
|
|
83
|
+
| `ui` | `pip install "soup-cli[ui]"` | Web UI + inference server |
|
|
84
|
+
| `tui` | `pip install "soup-cli[tui]"` | Full-screen Textual dashboard (`soup tui`) |
|
|
85
|
+
| `eval` | `pip install "soup-cli[eval]"` | Benchmark evaluation (lm-evaluation-harness) |
|
|
86
|
+
| `data` | `pip install "soup-cli[data]"` | Deduplication (MinHash via datasketch) |
|
|
87
|
+
| `data-pro` | `pip install "soup-cli[data-pro]"` | Language detection + PII (langdetect, presidio) |
|
|
88
|
+
| `deepspeed` | `pip install "soup-cli[deepspeed]"` | Multi-GPU training (DeepSpeed ZeRO) |
|
|
89
|
+
| `liger` | `pip install "soup-cli[liger]"` | Liger Kernel fused ops |
|
|
90
|
+
| `ring-attn` | `pip install "soup-cli[ring-attn]"` | Ring FlashAttention (sequence parallelism) |
|
|
91
|
+
| `onnx` / `tensorrt` | `pip install "soup-cli[onnx]"` | ONNX / TensorRT-LLM export |
|
|
92
|
+
| `awq` / `gptq` | `pip install "soup-cli[awq]"` | AWQ / GPTQ quantized export |
|
|
93
|
+
| `trackers` | `pip install "soup-cli[trackers]"` | MLflow / SwanLab / Trackio logging |
|
|
94
|
+
| `remote` | `pip install "soup-cli[remote]"` | Remote datasets (s3 / gs / az / oci) |
|
|
95
|
+
| `dev` | `pip install "soup-cli[dev]"` | Tests + lint + types (pytest, ruff, mypy, pre-commit) |
|
|
96
96
|
|
|
97
97
|
The complete, authoritative extras list is in [`pyproject.toml`](../pyproject.toml).
|
|
98
98
|
|
|
@@ -36,7 +36,7 @@ Train with simulated quantization for significantly better post-quantization qua
|
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
38
|
# Install QAT support
|
|
39
|
-
pip install
|
|
39
|
+
pip install "soup-cli[qat]"
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
```yaml
|
|
@@ -71,7 +71,7 @@ QAT works with all training tasks (SFT, DPO, GRPO, PPO, KTO, ORPO, SimPO, IPO, P
|
|
|
71
71
|
For H100 / H200 / B100 / B200 GPUs, train with float8 matmuls for ~2x speedup vs bf16 at comparable quality. This extends QAT infrastructure via `torchao.float8`:
|
|
72
72
|
|
|
73
73
|
```bash
|
|
74
|
-
pip install
|
|
74
|
+
pip install "soup-cli[qat]" # torchao >= 0.5.0 includes torchao.float8
|
|
75
75
|
```
|
|
76
76
|
|
|
77
77
|
```yaml
|
|
@@ -106,7 +106,7 @@ Bool `true` stays on the int8 QAT path for backward compatibility. FP8 requires
|
|
|
106
106
|
Models with 128k+ vocabularies (Llama 3.1, Qwen2) materialise a huge `(batch, seq, vocab)` logits tensor that dominates VRAM. Cut Cross-Entropy computes the loss in chunks instead:
|
|
107
107
|
|
|
108
108
|
```bash
|
|
109
|
-
pip install
|
|
109
|
+
pip install "soup-cli[cce]" # or: pip install cut-cross-entropy
|
|
110
110
|
```
|
|
111
111
|
|
|
112
112
|
```yaml
|
|
@@ -368,9 +368,9 @@ data:
|
|
|
368
368
|
Install optional performance packages:
|
|
369
369
|
|
|
370
370
|
```bash
|
|
371
|
-
pip install
|
|
371
|
+
pip install "soup-cli[liger]" # Liger Kernel fused operations
|
|
372
372
|
pip install flash-attn --no-build-isolation # FlashAttention
|
|
373
|
-
pip install
|
|
373
|
+
pip install "soup-cli[ring-attn]" # Ring FlashAttention (sequence parallelism)
|
|
374
374
|
```
|
|
375
375
|
|
|
376
376
|
|