freesolo-flash-dev 1.4.11__tar.gz → 1.4.12__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.
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/bake-kernel-cache.yml +2 -2
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/CHANGELOG.md +4 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/PKG-INFO +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/docker/bake_kernel_cache.py +47 -89
- freesolo_flash_dev-1.4.12/docker/bake_sandbox_entry.py +90 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/adapters/artifacts.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/adapters/config.py +2 -2
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/adapters/lora_rank.py +4 -8
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/ops/setup.py +2 -2
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/parsing/serve_parser.py +10 -9
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/scaffold/TRAINING.md +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/core/spec.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/entry/worker.py +3 -3
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/io/artifacts.py +5 -5
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/io/heartbeat.py +9 -9
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/model/adapter.py +2 -2
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/entry/sft_train.py +2 -2
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/entry/sft_train_runner.py +3 -3
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/sft/setup/checkpoints.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/sft/setup/config.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/verl/diagnostics.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/bootstrapping/bootstrap.py +12 -12
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/bootstrapping/pip.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/instances/poll_instance.py +19 -19
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/instances/terminal_artifacts.py +3 -3
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/net/worker.py +2 -2
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/artifacts/channel.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/accounting/artifacts.py +4 -4
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/lifecycle/preparation.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/lifecycle/state.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/results/checkpoints.py +4 -4
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/supervise/lifecycle.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/app/materialize.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/contract/errors.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/deployment/adapter_check.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/deployment/download.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/asgi/app.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/ops/repo_cleanup.py +7 -7
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/registry/checkpoints.py +5 -5
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/registry/runs.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/platform/runtime.py +4 -4
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/meta.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/serving.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/hub.py +2 -2
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/lora_engine.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/adapter_routes.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/pyproject.toml +6 -10
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_backend_common.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_bake_kernel_cache.py +70 -60
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_bake_sandbox_entry.py +3 -16
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_checkpoints.py +2 -2
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_flash_worker.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_grpo_checkpoint_durability.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_grpo_params.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_instance_bootstrap_coverage.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_managed_hf_repo.py +4 -5
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_repo_cleanup.py +4 -4
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_server_api.py +5 -5
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_server_standalone.py +1 -4
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_train.py +2 -2
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_warmstart_cross_repo.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_worker_dryrun.py +1 -1
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_worker_init_heartbeat.py +8 -8
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_worker_stack.py +5 -7
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/uv.lock +1 -1
- freesolo_flash_dev-1.4.11/docker/bake_sandbox_entry.py +0 -159
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.dockerignore +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.env.example +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/CODEOWNERS +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/dependabot.yml +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/scripts/ci_sharding.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/scripts/notify_tests_repo.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/auto-rebake.yml +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/ci.yml +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/deploy-deepinfer.yml +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/deploy-modal-dev.yml +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/deploy-modal.yml +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/dev-kernel-cache.yml +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/main-source-guard.yml +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/notify-tests-repo.yml +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/production-kernel-cache-ready.yml +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/publish-dev.yml +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/publish-image.yml +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/publish-serving-image.yml +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/publish.yml +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/version-parity.yml +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/worker-image.yml +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.gitignore +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/CODE_OF_CONDUCT.md +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/CONTRIBUTING.md +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/Dockerfile +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/Dockerfile.serve +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/Dockerfile.worker +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/LICENSE +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/NOTICE +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/README.md +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/SECURITY.md +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/SELF_HOSTING.md +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/build/kernel_cache/.gitignore +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/build/kernel_cache/.keep +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/deploy/infisical/README.md +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/deploy/infisical/entrypoint.sh +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/docker/Dockerfile.kernelcache +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/docker/Dockerfile.kernelcache.relayer +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/docker/extract_cudart_fix.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/docker/kernel_fingerprint.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/docker/patch_vllm_moe_lora.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/docs/azure-artifacts.md +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/docs/azure-serving-qualification-20261102.json +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/_internal/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/_internal/background.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/_internal/channel.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/_internal/diagnostics.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/_internal/fileio.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/_internal/http.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/_internal/http_deadline.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/_internal/logging.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/_internal/openai_sse.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/_internal/paths.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/_internal/version.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/adapters/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/adapters/fused_experts.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/adapters/targets.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/artifacts/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/artifacts/api.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/artifacts/config.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/artifacts/errors.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/artifacts/manifest.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/artifacts/storage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/__main__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/ops/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/ops/imports.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/ops/list.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/ops/push.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/ops/retained.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/ops/setup_wandb.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/testing/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/testing/episode.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/testing/eval.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/testing/eval_args.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/testing/evaluations.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/testing/params.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/testing/test.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/testing/warnings.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/ops/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/ops/account.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/ops/catalog.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/ops/deploy.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/ops/log_follow.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/ops/prompt_budget.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/ops/runs.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/ops/traces.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/ops/train.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/ops/worker_output.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/serving/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/serving/deploy.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/serving/identity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/serving/status.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/serving/undeploy.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/parsing/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/parsing/account.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/parsing/custom.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/parsing/env.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/parsing/errors.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/parsing/main.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/parsing/models.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/parsing/traces.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/parsing/training.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/scaffold/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/ui/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/ui/cost.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/ui/env_panels.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/ui/heartbeat.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/ui/render.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/ui/tables.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/ui/tty.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/client/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/client/config.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/client/freesolo_api.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/client/http.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/client/runtime_secrets.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/client/shapes.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/client/specs.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/client/streaming.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/content/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/content/image_descriptors.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/content/multimodal.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/content/processor.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/content/reasoning_normalization.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/content/stop_tokens.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/content/structured_options.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/content/structured_outputs.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/content/thinking.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/core/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/core/catalog.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/core/grpo.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/core/spec_persistence.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cost/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cost/analytical.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cost/currency.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cost/facts.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cost/spec.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cost/types.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/async_client.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/backend.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/billing.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/checkpoints.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/client.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/controller.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/managed.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/server.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/session.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/starter.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/types.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/validation.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/worker.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/plan/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/plan/kv_sizing.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/plan/model_config_probe.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/plan/prompt_budget.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/plan/recipe.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/plan/steps.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/plan/vram.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/profiling/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/profiling/dataset_profile.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/profiling/image_tokens.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/profiling/reasoning_render.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/profiling/sft_image_rows.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/profiling/sft_rows.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/profiling/sft_tools.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/profiling/sft_workload.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/profiling/tokenizer.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/profiling/workload_profile.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/result/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/result/accounting.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/result/rollout_samples.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/support/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/support/checkpoint_transport.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/support/huggingface.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/support/model_snapshot.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/support/verl_checkpoint.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/support/worker_entrypoint.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/__main__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/entry/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/entry/rl.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/io/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/io/cpu_handoff.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/io/prefetch.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/io/transfer.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/io/wandb_log.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/model/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/model/chatml_mask.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/model/decoding.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/model/lora.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/model/packing.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/perf/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/perf/diagnostics.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/perf/lifecycle.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/perf/memory.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/perf/model_size.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/runtime/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/runtime/kernel_warmup.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/runtime/phases.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/runtime/rng.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/runtime/state.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/agents.yaml +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/batch.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/compact_checkpoint.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/configuration.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/engine.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/flashinfer_cache.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/glue.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/launch.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/model.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/observations.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/options.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/prompt_media.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/queue.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/readiness.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/reference.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/registration.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/replay.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/replay_guard.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/rollout.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/rollout_contract.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/startup.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/tracking.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/trainer.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/upstream.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/vllm_worker.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/worker.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/lifecycle/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/lifecycle/finalize.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/lifecycle/ledger.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/lifecycle/persistence.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/lifecycle/step_timing.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/lifecycle/timing.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/rollout/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/rollout/contract.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/rollout/episode.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/rollout/generation.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/rollout/identity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/rollout/lifecycle.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/entry/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/entry/backend_common.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/entry/prompt_rows.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/entry/rl_train.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/entry/rl_train_runner.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/entry/score_batcher.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/child/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/child/contract.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/child/credit.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/child/entry.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/child/identity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/child/metrics.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/child/multiturn.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/child/reward.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/child/rollout.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/child/trainer.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/child/transport.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/launch/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/launch/checkpoints.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/launch/config.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/launch/inputs.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/launch/verl_config.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/rollout/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/rollout/identity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/rollout/multi_turn.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/rollout/scoring.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/rollout/single_turn.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/sft/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/sft/child/dataset.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/sft/child/entry.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/sft/child/loop.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/sft/child/schedule.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/sft/child/trainer.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/sft/setup/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/verl/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/verl/adapter_merger.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/verl/capabilities.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/verl/checkpoints.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/verl/child_io.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/verl/parallelism.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/verl/parent_work.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/loading/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/loading/adapter.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/loading/base.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/loading/loader.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/loading/pull.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/loading/staged.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/meta/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/meta/cache_security.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/meta/cache_storage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/meta/dataset_selection.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/meta/evaluations.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/meta/identity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/meta/namespace_listing.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/package/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/package/direct_tokens.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/package/limits.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/package/unpack.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/registry/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/registry/azure.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/registry/packages.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/scoring/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/scoring/context.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/scoring/response.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/bootstrapping/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/bootstrapping/attempt.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/bootstrapping/console.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/bootstrapping/processes.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/bootstrapping/secrets.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/instances/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/instances/instance.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/instances/poll.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/net/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/net/auth.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/net/deadline.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/net/http.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/artifacts/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/artifacts/weight_cache.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/core/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/core/allocator.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/core/base.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/core/fit_errors.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/core/preflight.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/core/registry.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/core/sharding.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/modal/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/modal/api.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/modal/auth.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/modal/checkpoint_upload.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/modal/handles.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/modal/jobs.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/modal/prefetch.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/modal/pricing.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/modal/provider.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/modal/startup.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/py.typed +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/accounting/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/accounting/costs.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/accounting/weight_cache.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/lifecycle/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/lifecycle/attempts.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/lifecycle/claim_lock.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/lifecycle/cleanup.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/lifecycle/deadlines.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/lifecycle/reporting.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/lifecycle/runtime_credentials.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/lifecycle/status.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/lifecycle/submit.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/results/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/results/deployments.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/supervise/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/supervise/attach.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/supervise/deploy.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/supervise/errors.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/supervise/execution.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/supervise/recovery.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/supervise/retry_decision.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/supervise/transitions.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runtime_capsule/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runtime_capsule/build.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runtime_capsule/manifest.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runtime_capsule/profiles.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/schema/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/schema/custom.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/schema/fields.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/app/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/app/__main__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/app/bootstrap.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/app/chat_stream.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/app/http.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/app/hydration_credentials.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/app/launch.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/app/manifest.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/app/openai.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/app/progress.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/contract/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/contract/protocol.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/contract/provenance.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/contract/responses.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/contract/urls.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/control/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/control/_canonical.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/control/_serialization.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/control/_urls.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/control/credentials.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/control/planning.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/control/types.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/deployment/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/deployment/deploy.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/deployment/export.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/deployment/preflight.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/deployment/profiles.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/deployment/readiness.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/deployment/resolve.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/common/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/common/records.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/execution/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/execution/deployment.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/execution/lifecycle.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/execution/operations.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/execution/sdk.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/planning/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/planning/plan.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/planning/resources.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/planning/wrapper.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/readiness_checks/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/readiness_checks/probe.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/readiness_checks/readiness.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/readiness_checks/teardown.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/request/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/request/openai.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/request/runtime_support.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/request/schema_types.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/request/streaming.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/request/text_scan.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/request/thinking.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/request/tool_calls.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/request/tool_template.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/request/transport.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/request/validation.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/adapters.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/cache_admission.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/cache_retention.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/cache_scheduler.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/engine.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/errors.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/hub.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/multimodal.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/prompt.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/prompt_cache.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/reasoning_tools.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/sampling.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/structured_outputs.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/token_batch.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/token_prefix_cache.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/tool_calls.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/types.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/__main__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/asgi/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/asgi/cli.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/billing/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/billing/charges.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/billing/retry.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/ops/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/ops/serving_resources.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/registry/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/registry/blob_envs.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/registry/env_files.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/registry/environment_registry.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/registry/envs.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/registry/projects.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/platform/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/platform/auth.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/platform/db.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/platform/deployment_jobs.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/platform/deployment_state.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/platform/deps.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/platform/internal_client.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/platform/locks.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/platform/plane_lease.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/adapter_download.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/custom.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/env_files.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/envs.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/runs.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/serving_chat.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/serving_completion.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/serving_errors.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/serving_revisions.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/serving_smoke.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/app/GPU_QUALIFICATION.md +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/app/README.md +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/app/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/app/modal_app.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/app/timeouts.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/app/README.md +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/app/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/app/autoscaling.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/app/client.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/app/events.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/app/http.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/app/modal_app.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/app/render.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/app/retries.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/app/rollout.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/contract/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/contract/config.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/contract/errors.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/contract/protocol.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/contract/tokenizer.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/native/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/native/engram_transport.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/native/image.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/native/patches.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/native/transport.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/runtime/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/runtime/bridge.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/runtime/kernel_cache.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/runtime/prefill_scheduler.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/runtime/prefix_cache.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/runtime/provenance.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/runtime/routing.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/runtime/snapshots.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/runtime/tiered_cache.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/runtime/warmup.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/runtime/worker.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/promotion/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/promotion/accounting_smoke_test.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/promotion/canary.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/promotion/evidence.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/promotion/gate.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/accounting/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/accounting/usage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/accounting/usage_facts.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/accounting/usage_outbox.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/accounting/usage_retry.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/boot.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/errors.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/generation.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/lora_entries.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/model_config.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/prequant_config.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/reasoning_usage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/support.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/text_tokenizer.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/warmup.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/authorization_transport.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/body_limit.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/context.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/headers.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/inference_routes.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/key_rate_limit.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/rate_limit.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/router.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/routing.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/stream_response.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/io/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/io/cache_namespace.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/io/multimodal.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/io/openai_request.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/io/openai_stream.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/io/provenance.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/io/requests.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/io/responses.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/io/schemas.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/io/streaming.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/io/structured_outputs.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/store/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/store/access.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/store/lookup.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/store/persisted_columns.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/store/persistence.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/store/registration.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/store/registry.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/store/settings.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/store/supabase_rest.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/store/undeploy.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/stream_channel/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/stream_channel/_tasks.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/stream_channel/client.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/stream_channel/engine.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/stream_channel/protocol.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/snapshot/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/snapshot/archive.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/build_dev_dist.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/check_dev_release.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/check_file_size.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/check_function_size.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/check_rollout_identity_actor.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/check_source_layout.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/check_verl_pin_exists.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/fixtures/custom_algorithm.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/fixtures/modal_environment/dataset/train.jsonl +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/fixtures/modal_environment/environment.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/fixtures/modal_environment/evaluations.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/migrate_recent_hf_artifacts.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/qualify_serving_profile.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/smoke_custom_training.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/smoke_modal_sft.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/smoke_modal_training.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/serve_launch.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/billing_precheck.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/chat_provenance.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/chat_transport.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/deployments.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/managed_chat.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/modal.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/profile.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/runner.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/server_api_plugin.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/source_snapshot.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/specs.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/wire_headers.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/capture_image_sft_processor_oracle.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/capture_qwen38_27b_metadata.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/conftest.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/fixtures/image_sft_processor_oracle.json +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/fixtures/qwen35_9b_target_metadata.json +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/fixtures/qwen38_27b_target_metadata.json +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/fixtures/vllm_023_moe_lora/lora_context.py.gz +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/fixtures/vllm_023_moe_lora/modular_kernel.py.gz +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/fixtures/vllm_023_moe_lora/triton_moe.py.gz +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/live/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/live/conftest.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/live/test_sft_thinking_render_live.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/checkpoint_fixtures.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/conftest.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_adapter_hub.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_artifact_protections.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_authorization_transport.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_base_model_serving.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_chat_auth.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_chat_authorizer.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_checkpoint_fingerprint_validation.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_checkpoint_identity_repairs.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_checkpoint_model_validation.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_checkpoint_revocation.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_autoscaling.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_deadline.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_hosted.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_http_deadline.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_kernel_cache.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_latency.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_optimizations.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_parallel.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_prefill_scheduler.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_provenance.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_retention.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_retries.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_rollout.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_routing.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_tiering.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_engine_error_status.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_fp8_config.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_immutable_engine.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_immutable_revisions.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_immutable_schemas.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_inference_duration.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_internal_header_integrity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_key_rate_limit.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_key_rate_limit_review.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_kv_namespace.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_latency_admission.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_mirror_sampling_parity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_modal_deploy_identity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_modal_image_paths.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_model_config.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_multimodal.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_openai_stream_options.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_per_model_gpu.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_persistence.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_pre_first_disconnect.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_prequant_config.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_promotion_accounting_smoke.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_promotion_canary.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_promotion_evidence.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_promotion_gate.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_qwen_warmup.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_rate_limit.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_reasoning_usage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_registration_endpoint.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_registry.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_registry_coverage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_request_body_limit.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_router.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_router_coverage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_router_edge_coverage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_schemas_coverage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_serve_reasoning_split.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_serve_structured_outputs.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_serve_thinking.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_settings.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_stream_channel.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_stream_response_disconnect.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_stream_wait_cleanup.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_structured_outputs.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_structured_outputs_coverage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_supabase_rest_coverage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_token_prefix_cache.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_usage_delivery_concurrency.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_usage_integrity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_usage_outbox.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_usage_reporter.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving_conformance/__init__.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving_conformance/conftest.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving_conformance/test_contract.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_accounting_coverage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_adapter_download.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_adapter_shard_completeness.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_agent_flash_cli_contract.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_algorithms.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_allocator.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_authenticated_redirects.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_azure_artifacts.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_azure_environment_registry.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_backend_jobspec_contract.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_background_supervisor.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_base_environment_integrity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_base_model_provenance.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_billing_response_integrity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_billing_retry.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_bootstrap_process_groups.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_bootstrap_reentry.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_bootstrap_worker_cleanup.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_build_context_contract.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cache_admission.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cache_retention.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cache_scheduler.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_capture_qwen38_metadata.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_catalog_consistency.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_catalog_only_models.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_charge_pricing.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_chat_foundations.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_chat_stop_tokens.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_chat_worker_isolation.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_checkpoint_cancellation.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_checkpoint_deployment_inventory_api.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_checkpoint_deployments.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_checkpoint_lifecycle.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_checkpoint_listing_integrity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_checkpoint_storage_overlap.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_checkpoint_transport.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_ci_sharding.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_commands.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_commands_coverage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_credential_shadowing.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_errors.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_estimate.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_gpus_flag.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_help.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_main_coverage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_managed.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_render_coverage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_render_theme.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_serve_deploy.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_serve_status.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_serve_undeploy.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_traces.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_wandb_warning.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_client.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_client_deadline_integrity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_client_import_purity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_client_server_integration.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_client_stream_reads.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_compact_checkpoint.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_config_env_vars.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_config_overrides.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_console_upload.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_controlled_experiment_repairs.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cost_analytical.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cost_currency.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cost_equation.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cost_estimate.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cost_hardware.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cost_models.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cpu_checkpoint_handoff.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_custom_checkpoints.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_custom_client.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_custom_gpu_selection.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_custom_gradients.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_custom_managed.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_custom_session.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_custom_worker.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_dataset_profile.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_deploy_latency.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_deployment_cleanup_resilience.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_deployment_generation_completion.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_deployment_registration_cleanup.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_dev_channel.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_dev_publish_decision.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_disk_gb.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_cache_evict.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_delete.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_download.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_download_api.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_evaluations.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_list_api.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_list_cli.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_list_registry.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_no_install.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_publish.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_pull.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_pull_coverage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_pull_loader_coverage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_pull_managed_control_plane.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_push.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_rate_limit_resolve.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_ref_pinning.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_test.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_environment_cache_integrity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_environment_publish_integrity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_envs_coverage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_export.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_flash_mvp.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_flashinfer_aot_cache.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_flashinfer_cache_dirs.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_freesolo_api_transport.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_fused_expert_warmstart.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_generation_eos.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_github_urlopen_retry.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_gpu_type_single_field.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_gpus.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_grpo_metric_stream.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_grpo_resident_sizing.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_grpo_reward_batching.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_grpo_reward_context.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_grpo_rollout_contract.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_grpo_rollout_identity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_health_liveness.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_heartbeat_startup_cleanup.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_hf_retry.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_hosted_adapter_admission.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_image_environment_capability.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_image_incremental_processor.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_image_sft_markers.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_image_sft_processor_parity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_image_tokens.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_infisical_secrets.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_internal_client.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_kernel_bake_build_contracts.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_kernel_cache.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_kernel_fingerprint.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_kv_util.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_local_credential_integrity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_logging.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_login_perms.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_lora_rank_coverage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_lora_rank_nested_rung.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_lora_rank_preflight.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_lora_targeting.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_lora_targeting_pinned_verl.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_managed_config_fields.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_metrics_schema_agent_contract.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_mig_guard.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_mirror_sampling_parity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_modal_api_loop.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_modal_prefetch_snapshot.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_modal_provider.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_modal_startup.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_modal_training_lifecycle.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_modal_weight_warm.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_multi_gpu_gate.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_multimodal_boundary_integrity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_multimodal_training.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_named_reward_metrics.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_notify_tests_repo.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_offline_http.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_oom_escalate_gpu.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_orchestrator_flash.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_packing.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_packing_coverage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_persisted_spec_envelope.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_plane_lease.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_poll_helpers.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_preflight.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_processor_chat_template.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_projects.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_prompt_budget.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_qwen9b_base.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_recent_artifact_migration.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_removed_algorithms.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_removed_training_settings.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_replay_guard.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_resolve_params_b.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_resume_on_retry.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_retry_decision.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_reward_server_cleanup.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_rl_train.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_rollout_engine_prompt.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_rollout_samples.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_run_log_integrity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_run_registry_lifecycle.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_runmgmt.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_runtime_capsule.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_runtime_credentials.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_runtime_secret_integrity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_schema_boundary_integrity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_app_bootstrap_http.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_app_launch.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_app_manifest.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_app_materialize.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_app_packaging.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_app_progress.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_cache_resource_cleanup.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_chat_transport.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_control.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_docs.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_modal_contract_lock.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_modal_sdk.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_modal_sdk_deadlines.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_modal_teardown_identity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_profile_qualification.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_profiles.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_provisioning_common.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_provisioning_modal.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_reasoning_content.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_resolve_provenance.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_runtime_adapters.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_runtime_engine.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_runtime_hub.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_runtime_package.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_runtime_types.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_server_app_coverage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_server_auth_singleflight.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_server_billing.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_server_checkpoints_coverage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_server_db.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_server_envs_coverage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_server_locks_coverage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_server_managed_chat_requests.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_server_serving_resources.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serving_conformance_gate.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serving_context_preflight.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serving_contract.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serving_input_integrity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serving_schema_coverage.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serving_unavailable_errors.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_batch_prefetch.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_cancel_profile_pricing.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_chunked_nll.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_cost_reduction.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_dataset_lazy_images.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_dataset_nulls.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_example_selection.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_gc_off.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_max_context.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_memory_policy.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_step_floor.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_tools.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_warmup_schedule.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_workload.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_smoke_content_integrity.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_source_attestation_flow.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_source_layout.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_source_snapshot.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_spec_and_validation.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_spec_contract_bytes.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_staged_environment.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_status_reporting.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_status_updates.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_step_floor.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_step_metrics.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_step_timing.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_structured_option_safety.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_structured_outputs.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_structured_runtime_options.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_submission_outcome.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_terminal_artifacts.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_thinking_config.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_thinking_tool_calls.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_tool_call_exact_parsing.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_tool_scalar_unions.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_train_context_preflight.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_training_controls.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_training_phases.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_transfer_queue_init.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_type_comment_prose.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_upstream_rollout_contract.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_upstream_runtime_policy.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_upstream_verl_contract.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_verifiers.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_verl_checkpoint_export.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_verl_child_plugins.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_verl_silence_watchdog.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_version.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_versioned_rollout_contract.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_vl_warmstart_adapter_keys.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_vllm_moe_lora_backport.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_vram_architecture.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_wandb_link.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_wandb_naming.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_warmstart_adapter_download.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_warmstart_error_attribution.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_warmstart_image_adapters.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_watchdog_startup_cleanup.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_weight_cache.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_worker_hardexit.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_worker_image.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_worker_thinking.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_workflow_contracts.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_workload_profile.py +0 -0
- {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_zero2_sharding_gate.py +0 -0
{freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/bake-kernel-cache.yml
RENAMED
|
@@ -218,11 +218,11 @@ jobs:
|
|
|
218
218
|
# marks the whole job red even though the bake + push already succeeded.
|
|
219
219
|
enable-cache: false
|
|
220
220
|
|
|
221
|
-
- name: Sync
|
|
221
|
+
- name: Sync bake dependencies
|
|
222
222
|
if: steps.gate.outputs.run == 'true'
|
|
223
223
|
run: uv sync --extra server
|
|
224
224
|
|
|
225
|
-
# MODAL_TOKEN_ID + MODAL_TOKEN_SECRET (the warmup GPU sandbox) + HF_TOKEN (
|
|
225
|
+
# MODAL_TOKEN_ID + MODAL_TOKEN_SECRET (the warmup GPU sandbox) + HF_TOKEN (upstream model/tokenizer downloads) are
|
|
226
226
|
# native repo Actions secrets, synced from Infisical (prod:/flash-ci) by the github-ci-flash
|
|
227
227
|
# Secret Sync. No Infisical CLI/login at job time -- Infisical stays the source of truth and
|
|
228
228
|
# rotations propagate via the sync. BASE_IMAGE
|
|
@@ -18,6 +18,10 @@ This file starts at 1.1.35. Earlier releases are not reconstructed here; use
|
|
|
18
18
|
|
|
19
19
|
## Unreleased
|
|
20
20
|
|
|
21
|
+
- Correct artifact diagnostics, generated training guidance, and internal documentation to name
|
|
22
|
+
Azure storage. Upstream model/tokenizer downloads and explicit Hugging Face exports remain
|
|
23
|
+
supported; legacy serialized storage-field names remain compatible.
|
|
24
|
+
|
|
21
25
|
### Removed
|
|
22
26
|
|
|
23
27
|
- Removed built-in OPD completely: training workers, managed teacher API and ledger, configuration,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: freesolo-flash-dev
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.12
|
|
4
4
|
Summary: Flash — managed LoRA post-training (SFT/GRPO) for Freesolo environments, driven by the `flash` CLI
|
|
5
5
|
Project-URL: Homepage, https://github.com/freesolo-co/flash
|
|
6
6
|
Project-URL: Repository, https://github.com/freesolo-co/flash
|
|
@@ -7,11 +7,10 @@ import json
|
|
|
7
7
|
import os
|
|
8
8
|
import shutil
|
|
9
9
|
import tarfile
|
|
10
|
+
import tempfile
|
|
10
11
|
import time
|
|
11
12
|
import uuid
|
|
12
13
|
|
|
13
|
-
ARTIFACT_NAMESPACE = "Freesolo-Co"
|
|
14
|
-
|
|
15
14
|
# One Modal GPU per compiler architecture; the worker verifies the requested SM.
|
|
16
15
|
GPU_BY_SM = {
|
|
17
16
|
"sm80": "A100-80GB",
|
|
@@ -27,31 +26,30 @@ def log(msg: str) -> None:
|
|
|
27
26
|
print(f"[bake-ci] {msg}", flush=True)
|
|
28
27
|
|
|
29
28
|
|
|
30
|
-
def
|
|
31
|
-
"""
|
|
32
|
-
import
|
|
29
|
+
async def _collect_bake(sandbox, out, arch: str, deadline: int) -> None:
|
|
30
|
+
"""Run warmup while the sandbox stays alive, then stream its outputs before teardown."""
|
|
31
|
+
from flash.providers.modal import api as modal_api
|
|
33
32
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
33
|
+
process = await sandbox.exec.aio("python", "-u", "/opt/flash/bake.py", timeout=deadline)
|
|
34
|
+
returncode = await process.wait.aio()
|
|
35
|
+
if returncode != 0:
|
|
36
|
+
raise modal_api.ModalApiError(
|
|
37
|
+
f"Kernel warmup exited with code {returncode}; "
|
|
38
|
+
f"inspect Modal sandbox {sandbox.object_id}"
|
|
39
|
+
)
|
|
40
|
+
status = await sandbox.filesystem.read_text.aio("/out/STATUS")
|
|
41
|
+
if status != f"rc=0\narch={arch}\n":
|
|
42
|
+
raise modal_api.ModalApiError("kernel warmup finished without a valid completion marker")
|
|
43
|
+
await sandbox.filesystem.copy_to_local.aio(
|
|
44
|
+
"/out/kernel_cache.tar.gz", out / "kernel_cache.tar.gz"
|
|
46
45
|
)
|
|
47
|
-
|
|
46
|
+
await sandbox.filesystem.copy_to_local.aio("/out/warmup.log", out / "bake-warmup.log")
|
|
48
47
|
|
|
49
48
|
|
|
50
49
|
def main() -> int:
|
|
51
50
|
from pathlib import Path
|
|
52
51
|
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
import flash
|
|
55
53
|
from flash.providers.modal import api as modal_api
|
|
56
54
|
|
|
57
55
|
parser = argparse.ArgumentParser(description="Bake worker kernels on Modal")
|
|
@@ -65,11 +63,7 @@ def main() -> int:
|
|
|
65
63
|
if not 1 <= args.deadline_min <= 1440:
|
|
66
64
|
parser.error("deadline must be between 1 and 1440 minutes")
|
|
67
65
|
token = os.environ["HF_TOKEN"]
|
|
68
|
-
hf = HfApi(token=token)
|
|
69
66
|
suffix = args.run_id or f"{int(time.time())}-{uuid.uuid4().hex[:8]}"
|
|
70
|
-
repo = (
|
|
71
|
-
f"{os.environ.get('FLASH_HF_NAMESPACE', ARTIFACT_NAMESPACE)}/kernel-bake-{args.sm}-{suffix}"
|
|
72
|
-
)
|
|
73
67
|
entry = Path(__file__).with_name("bake_sandbox_entry.py")
|
|
74
68
|
|
|
75
69
|
async def bake(modal, client):
|
|
@@ -79,74 +73,51 @@ def main() -> int:
|
|
|
79
73
|
create_if_missing=True,
|
|
80
74
|
client=client,
|
|
81
75
|
)
|
|
82
|
-
image =
|
|
83
|
-
|
|
76
|
+
image = (
|
|
77
|
+
modal.Image.from_registry(args.image)
|
|
78
|
+
.add_local_dir(
|
|
79
|
+
Path(flash.__file__).parent,
|
|
80
|
+
"/runcode/code/flash",
|
|
81
|
+
copy=True,
|
|
82
|
+
ignore=["**/__pycache__/**", "**/*.pyc"],
|
|
83
|
+
)
|
|
84
|
+
.add_local_file(str(entry), "/opt/flash/bake.py", copy=True)
|
|
84
85
|
)
|
|
85
86
|
sandbox = await modal.Sandbox.create.aio(
|
|
86
|
-
"
|
|
87
|
-
"
|
|
88
|
-
"/opt/flash/bake.py",
|
|
87
|
+
"sleep",
|
|
88
|
+
"infinity",
|
|
89
89
|
app=app,
|
|
90
90
|
image=image,
|
|
91
91
|
name=f"bake-{args.sm}-{suffix}",
|
|
92
92
|
gpu=GPU_BY_SM[args.sm],
|
|
93
|
-
timeout=args.deadline_min * 60,
|
|
93
|
+
timeout=min(86400, args.deadline_min * 60 + 600),
|
|
94
94
|
cpu=(4, 8),
|
|
95
95
|
# Keep the reservation at 32 GiB, but allow compiler memory to burst. The
|
|
96
96
|
# H100 warmup was evicted for thrashing at the previous 64 GiB limit.
|
|
97
97
|
memory=(32768, 131072),
|
|
98
|
-
secrets=[
|
|
99
|
-
modal.Secret.from_dict(
|
|
100
|
-
{"BAKE_HF_REPO": repo, "BAKE_ARCH": args.arch, "HF_TOKEN": token}
|
|
101
|
-
)
|
|
102
|
-
],
|
|
98
|
+
secrets=[modal.Secret.from_dict({"BAKE_ARCH": args.arch, "HF_TOKEN": token})],
|
|
103
99
|
client=client,
|
|
104
100
|
)
|
|
105
101
|
try:
|
|
106
|
-
await sandbox.
|
|
107
|
-
returncode = await sandbox.poll.aio()
|
|
108
|
-
if returncode != 0:
|
|
109
|
-
# The provider wrapper sanitizes ordinary exceptions. Preserve this
|
|
110
|
-
# credential-free diagnostic so CI names the failed sandbox and exit.
|
|
111
|
-
raise modal_api.ModalApiError(
|
|
112
|
-
f"Kernel warmup exited with code {returncode}; "
|
|
113
|
-
f"inspect Modal sandbox {sandbox.object_id}"
|
|
114
|
-
)
|
|
102
|
+
await _collect_bake(sandbox, staging, args.arch, args.deadline_min * 60)
|
|
115
103
|
finally:
|
|
116
104
|
await sandbox.terminate.aio(wait=True)
|
|
117
105
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
shutil.copytree(Path(temp) / "out", args.out, dirs_exist_ok=True)
|
|
134
|
-
archive = Path(args.out) / "kernel_cache.tar.gz"
|
|
135
|
-
if archive.exists():
|
|
136
|
-
_extract_cache_archive(archive, Path(args.out))
|
|
137
|
-
archive.unlink()
|
|
138
|
-
# The base image can contain an older warmup.log inside its cache tree. Keep the
|
|
139
|
-
# current subprocess log authoritative after archive extraction.
|
|
140
|
-
log_path = Path(temp) / "out" / "bake-warmup.log"
|
|
141
|
-
if log_path.exists():
|
|
142
|
-
shutil.copy2(log_path, Path(args.out) / "bake-warmup.log")
|
|
143
|
-
shutil.copy2(log_path, Path(args.out) / "warmup.log")
|
|
144
|
-
return _verify(args.out, args.sm)
|
|
145
|
-
finally:
|
|
146
|
-
try:
|
|
147
|
-
hf.delete_repo(repo_id=repo, repo_type="dataset")
|
|
148
|
-
except Exception:
|
|
149
|
-
log(f"WARNING: could not delete temporary repository {repo}; remove it manually")
|
|
106
|
+
# Never let leftovers from a previous bake satisfy this run's verification.
|
|
107
|
+
with tempfile.TemporaryDirectory(prefix="flash-kernel-") as temp:
|
|
108
|
+
staging = Path(temp)
|
|
109
|
+
modal_api.call(bake, timeout=args.deadline_min * 60 + 600)
|
|
110
|
+
archive = staging / "kernel_cache.tar.gz"
|
|
111
|
+
# Preserve the current log even if an older log exists inside the exported cache.
|
|
112
|
+
current_log = (staging / "bake-warmup.log").read_bytes()
|
|
113
|
+
_extract_cache_archive(archive, staging)
|
|
114
|
+
archive.unlink()
|
|
115
|
+
(staging / "bake-warmup.log").write_bytes(current_log)
|
|
116
|
+
(staging / "warmup.log").write_bytes(current_log)
|
|
117
|
+
result = _verify(str(staging), args.sm)
|
|
118
|
+
if result == 0:
|
|
119
|
+
shutil.copytree(staging, args.out, dirs_exist_ok=True)
|
|
120
|
+
return result
|
|
150
121
|
|
|
151
122
|
|
|
152
123
|
def _extract_cache_archive(archive_path, destination) -> None:
|
|
@@ -167,19 +138,6 @@ def _extract_cache_archive(archive_path, destination) -> None:
|
|
|
167
138
|
archive.extractall(root, members=members, filter="data")
|
|
168
139
|
|
|
169
140
|
|
|
170
|
-
def _status_present(api, repo: str, retries: int = 1) -> bool:
|
|
171
|
-
"""Authoritative out/STATUS check, retried to ride out a transient HF list error."""
|
|
172
|
-
for i in range(retries):
|
|
173
|
-
try:
|
|
174
|
-
if "out/STATUS" in api.list_repo_files(repo, repo_type="dataset"):
|
|
175
|
-
return True
|
|
176
|
-
except Exception as e:
|
|
177
|
-
log(f"hf list err (status recheck {i + 1}/{retries}): {str(e)[:100]}")
|
|
178
|
-
if i < retries - 1:
|
|
179
|
-
time.sleep(5)
|
|
180
|
-
return False
|
|
181
|
-
|
|
182
|
-
|
|
183
141
|
def _verify(out: str, sm: str) -> int:
|
|
184
142
|
"""Confirm the artifact actually landed and its metadata matches the requested arch."""
|
|
185
143
|
from flash.engine.worker.runtime.kernel_warmup import CACHE_META_FILENAME, has_raw_kernel_cache
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"""Warm and verify kernels inside the GPU sandbox, writing outputs for direct Modal transfer.
|
|
2
|
+
|
|
3
|
+
The CI helper mounts the Flash package at /runcode/code/flash. The worker image supplies
|
|
4
|
+
its dependencies. HF_TOKEN is retained only for upstream model/tokenizer downloads;
|
|
5
|
+
BAKE_ARCH selects the compiler architecture. /out/STATUS is written last.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import json
|
|
9
|
+
import os
|
|
10
|
+
import shutil
|
|
11
|
+
import subprocess
|
|
12
|
+
import tarfile
|
|
13
|
+
import time
|
|
14
|
+
|
|
15
|
+
CACHE_DIR = "/opt/flash/kernelcache"
|
|
16
|
+
OUT_DIR = "/out"
|
|
17
|
+
CACHE_ARCHIVE = "/out/kernel_cache.tar.gz"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def _replace_cache_with_exported_copy(cache_dir: str, archive_path: str) -> None:
|
|
21
|
+
"""Archive the cache, delete the originals, and restore files at the same absolute paths."""
|
|
22
|
+
with tarfile.open(archive_path, "w:gz", compresslevel=1) as archive:
|
|
23
|
+
archive.add(cache_dir, arcname=".")
|
|
24
|
+
shutil.rmtree(cache_dir)
|
|
25
|
+
with tarfile.open(archive_path, "r:gz") as archive:
|
|
26
|
+
archive.extractall(cache_dir, filter="data")
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def main() -> int:
|
|
30
|
+
os.environ["HF_HUB_DISABLE_XET"] = "1"
|
|
31
|
+
arch = os.environ.get("BAKE_ARCH", "")
|
|
32
|
+
os.makedirs(OUT_DIR, exist_ok=True)
|
|
33
|
+
with open(os.path.join(OUT_DIR, "STARTED"), "w") as marker:
|
|
34
|
+
marker.write(f"started arch={arch}\n")
|
|
35
|
+
|
|
36
|
+
env = {**os.environ, "PYTHONPATH": "/runcode/code"}
|
|
37
|
+
python_bin = os.environ.get("FLASH_VERL_PYTHON", "/opt/verl-venv/bin/python")
|
|
38
|
+
if not os.path.isfile(python_bin):
|
|
39
|
+
raise RuntimeError(f"training interpreter missing: {python_bin}")
|
|
40
|
+
cache_dir = CACHE_DIR
|
|
41
|
+
# An already-baked input image must not supply stale artifacts or validation receipts.
|
|
42
|
+
shutil.rmtree(cache_dir, ignore_errors=True)
|
|
43
|
+
os.makedirs(cache_dir)
|
|
44
|
+
cmd = [
|
|
45
|
+
python_bin,
|
|
46
|
+
"-m",
|
|
47
|
+
"flash.engine.worker.runtime.kernel_warmup",
|
|
48
|
+
"--out",
|
|
49
|
+
cache_dir,
|
|
50
|
+
]
|
|
51
|
+
if arch:
|
|
52
|
+
cmd += ["--arch", arch]
|
|
53
|
+
print(f"[bake] running: {' '.join(cmd)}", flush=True)
|
|
54
|
+
# capture the warmup output into /out so it ships back with the cache -- lets the CI helper show
|
|
55
|
+
# which warm steps ran and why a bake failed to produce compiled kernel files.
|
|
56
|
+
os.makedirs(OUT_DIR, exist_ok=True)
|
|
57
|
+
started = time.monotonic()
|
|
58
|
+
with open(os.path.join(OUT_DIR, "warmup.log"), "wb") as lf:
|
|
59
|
+
rc = subprocess.call(cmd, env=env, stdout=lf, stderr=subprocess.STDOUT)
|
|
60
|
+
first_seconds = time.monotonic() - started
|
|
61
|
+
validation = {"first_process_seconds": first_seconds, "first_exit_code": rc}
|
|
62
|
+
if rc == 0:
|
|
63
|
+
# Remove the compiler outputs and restore only the exported archive. A fresh process
|
|
64
|
+
# alone could otherwise reuse files that never make it into the shipped artifact.
|
|
65
|
+
_replace_cache_with_exported_copy(cache_dir, CACHE_ARCHIVE)
|
|
66
|
+
started = time.monotonic()
|
|
67
|
+
with open(os.path.join(OUT_DIR, "warmup.log"), "ab") as lf:
|
|
68
|
+
lf.write(b"\n[bake] fresh-process cache reload validation\n")
|
|
69
|
+
rc = subprocess.call(
|
|
70
|
+
[*cmd, "--verify-cache"], env=env, stdout=lf, stderr=subprocess.STDOUT
|
|
71
|
+
)
|
|
72
|
+
validation.update(
|
|
73
|
+
reload_process_seconds=time.monotonic() - started,
|
|
74
|
+
reload_exit_code=rc,
|
|
75
|
+
exported_cache_replayed=True,
|
|
76
|
+
)
|
|
77
|
+
with open(os.path.join(cache_dir, "cache_validation.json"), "w") as output:
|
|
78
|
+
json.dump(validation, output)
|
|
79
|
+
print(f"[bake] kernel_warmup rc={rc}", flush=True)
|
|
80
|
+
# Preserve hidden compiler directories and the exact cache layout in one streamed archive.
|
|
81
|
+
with tarfile.open(CACHE_ARCHIVE, "w:gz", compresslevel=1) as archive:
|
|
82
|
+
archive.add(cache_dir, arcname=".")
|
|
83
|
+
with open(os.path.join(OUT_DIR, "STATUS"), "w") as marker:
|
|
84
|
+
marker.write(f"rc={rc}\narch={arch}\n")
|
|
85
|
+
print(f"[bake] ENTRY_DONE rc={rc}", flush=True)
|
|
86
|
+
return rc
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
if __name__ == "__main__":
|
|
90
|
+
raise SystemExit(main())
|
|
@@ -115,7 +115,7 @@ def _index_shard_names(names: set[str], suffix: str) -> set[str]:
|
|
|
115
115
|
|
|
116
116
|
|
|
117
117
|
# The largest attempt identity any artifact name may carry. An attempt number reaches a filename and
|
|
118
|
-
# an
|
|
118
|
+
# an artifact path, so it is bounded rather than merely nonnegative: an unbounded int would still format,
|
|
119
119
|
# and the resulting name is the one thing a later reader has to match exactly.
|
|
120
120
|
MAX_ATTEMPT_ID = (1 << 63) - 1
|
|
121
121
|
|
|
@@ -6,7 +6,7 @@ actually serve? Answering it separately let them drift -- customer-owned resolut
|
|
|
6
6
|
config that hosted admission accepted, so the same artifact was refused before provisioning on one
|
|
7
7
|
path and refused inside the paid container on the other.
|
|
8
8
|
|
|
9
|
-
Every rule here is decidable from the config alone. Nothing in this module reads
|
|
9
|
+
Every rule here is decidable from the config alone. Nothing in this module reads artifact storage, the
|
|
10
10
|
filesystem, or a provider, so a verdict costs a caller nothing beyond the bytes it already holds.
|
|
11
11
|
That is why it sits beside the rank and target rules rather than under a deployment path: the
|
|
12
12
|
GPU-side materializer revalidates a cache entry it already holds, and it needs the same verdict
|
|
@@ -44,7 +44,7 @@ class _DuplicateConfigKey(AdapterConfigError):
|
|
|
44
44
|
def parse_declared_adapter_config(raw: bytes, *, source: str) -> DeclaredAdapterConfig:
|
|
45
45
|
"""read one adapter's declared provenance, or refuse the bytes.
|
|
46
46
|
|
|
47
|
-
``source`` names the file in every message, so a caller that fetched the config from
|
|
47
|
+
``source`` names the file in every message, so a caller that fetched the config from artifact storage and
|
|
48
48
|
one that read it off disk both report a location the reader can go look at.
|
|
49
49
|
"""
|
|
50
50
|
|
|
@@ -105,13 +105,9 @@ def _positive_int(value: Any, *, source: str, field: str) -> int:
|
|
|
105
105
|
|
|
106
106
|
|
|
107
107
|
def _file_identity(file_info: Any) -> str:
|
|
108
|
-
#
|
|
109
|
-
#
|
|
110
|
-
#
|
|
111
|
-
# mapping-shaped `lfs` and the `lfs.oid` spelling have no producer in the supported range.
|
|
112
|
-
# `getattr` stays only on `lfs` itself, which is legitimately optional (non-LFS files), and on
|
|
113
|
-
# the entry object, because a listing also yields `RepoFolder` -- no size, no blob_id -- which
|
|
114
|
-
# must fail closed rather than hash to a folder's tree id.
|
|
108
|
+
# Azure ArtifactFile entries carry path, size and the content digest in blob_id.
|
|
109
|
+
# lfs.sha256 remains accepted for saved source metadata from before the migration.
|
|
110
|
+
# reject entries without file identity rather than hashing a folder or missing metadata.
|
|
115
111
|
lfs = getattr(file_info, "lfs", None)
|
|
116
112
|
oid = getattr(lfs, "sha256", None)
|
|
117
113
|
size = getattr(lfs, "size", None)
|
|
@@ -487,7 +483,7 @@ def inspect_adapter_config(
|
|
|
487
483
|
def load_artifact_adapter_config(
|
|
488
484
|
adapter_ref: str, token: str | None = None, revision: str | None = None
|
|
489
485
|
) -> Mapping[str, Any]:
|
|
490
|
-
"""Read ``adapter_config.json`` for a Flash adapter ref from
|
|
486
|
+
"""Read ``adapter_config.json`` for a Flash adapter ref from private Azure storage."""
|
|
491
487
|
repo, filename = adapter_config_path_from_ref(adapter_ref)
|
|
492
488
|
try:
|
|
493
489
|
from flash.artifacts.api import download_file
|
|
@@ -696,7 +696,7 @@ def _write_rl_config(
|
|
|
696
696
|
"# Constrain every rollout with guided decoding (a JSON schema is shown; regex and\n"
|
|
697
697
|
"# choice forms also parse) — see `flash train --doc`:\n"
|
|
698
698
|
'# structured_outputs = \'{"type": "object", "properties": {"answer": {"type": "string"}}, "required": ["answer"]}\'\n'
|
|
699
|
-
"# GPU and
|
|
699
|
+
"# GPU and Azure artifacts are managed automatically by the platform: the GPU is\n"
|
|
700
700
|
"# the cheapest fitting managed class, and artifacts live in a private environment-scoped repo.\n"
|
|
701
701
|
)
|
|
702
702
|
|
|
@@ -725,7 +725,7 @@ def _write_sft_config(
|
|
|
725
725
|
f"{max_examples_line}"
|
|
726
726
|
"lora_rank = 32\n"
|
|
727
727
|
f"{sft_reasoning_note}"
|
|
728
|
-
"# GPU and
|
|
728
|
+
"# GPU and Azure artifacts are managed automatically by the platform: the GPU is\n"
|
|
729
729
|
"# the cheapest fitting managed class, and artifacts live in a private environment-scoped repo.\n"
|
|
730
730
|
)
|
|
731
731
|
|
|
@@ -16,7 +16,7 @@ def _positive_finite_seconds(raw: str) -> float:
|
|
|
16
16
|
|
|
17
17
|
Without this, `--timeout 0`, a negative, `nan`, or `inf` parses fine and only fails inside the
|
|
18
18
|
provider's `validate_deadline`, which raises `ValueError` outside the lifecycle error handling
|
|
19
|
-
-- so the CLI prints a traceback *after* resolving and downloading the
|
|
19
|
+
-- so the CLI prints a traceback *after* resolving and downloading the model and artifact inputs, instead of
|
|
20
20
|
the ordinary argument error the user should get before any work happens.
|
|
21
21
|
"""
|
|
22
22
|
value = float(raw)
|
|
@@ -31,8 +31,8 @@ def _positive_int(raw: str) -> int:
|
|
|
31
31
|
"""reject a nonpositive integer before deployment input resolution.
|
|
32
32
|
|
|
33
33
|
a bare `type=int` accepts `0` and negatives, while downstream validation runs only after
|
|
34
|
-
`resolve_adapter` has already resolved and downloaded the
|
|
35
|
-
values before they cost a
|
|
34
|
+
`resolve_adapter` has already resolved and downloaded the model and artifact inputs. argparse can reject these
|
|
35
|
+
values before they cost a storage round trip.
|
|
36
36
|
"""
|
|
37
37
|
value = int(raw)
|
|
38
38
|
if value <= 0:
|
|
@@ -73,18 +73,19 @@ def _add_deployment_arguments(command: argparse.ArgumentParser) -> None:
|
|
|
73
73
|
required=True,
|
|
74
74
|
help="digest-qualified serving image reference (name@sha256:...)",
|
|
75
75
|
)
|
|
76
|
-
command.add_argument(
|
|
76
|
+
command.add_argument(
|
|
77
|
+
"--artifact-repo", required=True, help="Azure artifact namespace holding the adapter"
|
|
78
|
+
)
|
|
77
79
|
command.add_argument(
|
|
78
80
|
"--artifact-subfolder", required=True, help="path within the repo holding the adapter"
|
|
79
81
|
)
|
|
80
|
-
#
|
|
81
|
-
#
|
|
82
|
-
# against the wrong repo type rather than reporting that the repo is a different kind.
|
|
82
|
+
# keep serialized type labels compatible with existing deployment manifests.
|
|
83
|
+
# both labels resolve through Azure artifact storage, never an upstream model repository.
|
|
83
84
|
command.add_argument(
|
|
84
85
|
"--artifact-repo-type",
|
|
85
86
|
choices=("dataset", "model"),
|
|
86
87
|
default="dataset",
|
|
87
|
-
help="
|
|
88
|
+
help="legacy artifact type label (default: dataset; storage uses Azure)",
|
|
88
89
|
)
|
|
89
90
|
command.add_argument(
|
|
90
91
|
"--lora-rank", type=_positive_int, required=True, help="the adapter's lora rank"
|
|
@@ -156,7 +157,7 @@ def _add_existing_deployment_identity(command: argparse.ArgumentParser) -> None:
|
|
|
156
157
|
"--deployment-identity",
|
|
157
158
|
default="",
|
|
158
159
|
help=(
|
|
159
|
-
"immutable identity printed by deploy; avoids
|
|
160
|
+
"immutable identity printed by deploy; avoids artifact resolution when checking or removing "
|
|
160
161
|
"an existing deployment"
|
|
161
162
|
),
|
|
162
163
|
)
|
|
@@ -351,7 +351,7 @@ There is no "all" sentinel, so this number is duplicated from the data into the
|
|
|
351
351
|
**can drift**: if the dataset later grows, a stale `max_examples` silently trains on a
|
|
352
352
|
subset instead of erroring. Re-check it whenever the dataset or the params change.
|
|
353
353
|
|
|
354
|
-
GPU allocation and
|
|
354
|
+
GPU allocation and Azure artifacts are **managed by default**: leave `[gpu] type` unset to
|
|
355
355
|
let the allocator pick the cheapest fitting validated class, while `train.hf_repo` remains
|
|
356
356
|
platform-managed. `[gpu] providers` takes an ordered list of provider names and prefers them in
|
|
357
357
|
that order: the preference ranks ahead of cost, so a preferred provider wins even when a cheaper
|
|
@@ -349,7 +349,7 @@ class TrainSpec:
|
|
|
349
349
|
# internal: immutable source dataset commit used for a prepared warm-start. parsed only from
|
|
350
350
|
# control-plane jobspec payloads; the public config schema does not accept this key.
|
|
351
351
|
init_from_adapter_revision: str = ""
|
|
352
|
-
# PLATFORM-MANAGED:
|
|
352
|
+
# PLATFORM-MANAGED: Azure artifact namespace. Not a user config key: it has no
|
|
353
353
|
# ``introduced_in`` so it is absent from TRAIN_SCHEMA_KEYS and ``[train] hf_repo`` is rejected.
|
|
354
354
|
# JobSpec.from_dict still round-trips the control-plane-assigned value; to_dict() omits it.
|
|
355
355
|
# Legacy serialized spelling retained so existing preparation digests remain valid.
|
|
@@ -94,7 +94,7 @@ def _run_worker_mode(*, context: WorkerContext) -> None:
|
|
|
94
94
|
"already_done", gpu=worker_perf.gpu_diagnostics(), context=context
|
|
95
95
|
)
|
|
96
96
|
# DONE is written only AFTER metrics.json uploads (required=True), so a failed read here
|
|
97
|
-
# is a transient
|
|
97
|
+
# is a transient artifact read failure, never a missing file. Retry, then signal RETRIABLE (reschedule)
|
|
98
98
|
# rather than SystemExit — a BaseException that bypasses the retriable-stamping handler
|
|
99
99
|
# below and would report a genuinely-succeeded run as a fatal failure.
|
|
100
100
|
last_err: Exception | None = None
|
|
@@ -129,7 +129,7 @@ def _run_worker_mode(*, context: WorkerContext) -> None:
|
|
|
129
129
|
error_kind = type(last_err).__name__ if last_err is not None else "unknown error"
|
|
130
130
|
raise worker_perf.RetriableInfraError(
|
|
131
131
|
"DONE present but metrics.json unreadable after retries "
|
|
132
|
-
f"(transient
|
|
132
|
+
f"(transient artifact read; {error_kind})"
|
|
133
133
|
)
|
|
134
134
|
# these setups run in the parent; verl trains in FLASH_VERL_PYTHON.
|
|
135
135
|
# only _force_fla_triton_gdn_on_sm100 propagates through FLA_* env vars. the install and the
|
|
@@ -159,7 +159,7 @@ def _run_worker_mode(*, context: WorkerContext) -> None:
|
|
|
159
159
|
handler()
|
|
160
160
|
finally:
|
|
161
161
|
context.close()
|
|
162
|
-
# hard-exit: colocated vllm can deadlock on nccl/cuda teardown; all artifacts are already
|
|
162
|
+
# hard-exit: colocated vllm can deadlock on nccl/cuda teardown; all artifacts are already in Azure.
|
|
163
163
|
sys.stdout.flush()
|
|
164
164
|
sys.stderr.flush()
|
|
165
165
|
os._exit(0)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""
|
|
1
|
+
"""Azure artifact channel for code delivery, adapters, metrics, and checkpoints."""
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
@@ -106,9 +106,9 @@ def _sleep_with_artifact_deadline(delay: float, *, context: WorkerContext) -> bo
|
|
|
106
106
|
def _artifact_upload(
|
|
107
107
|
do_upload, repo_subpath: str, required: bool, label: str, *, context: WorkerContext
|
|
108
108
|
) -> bool:
|
|
109
|
-
"""
|
|
109
|
+
"""Artifact upload loop: retries + raises on required artifacts; warn-only on optional.
|
|
110
110
|
|
|
111
|
-
Returns True when a commit landed (or
|
|
111
|
+
Returns True when a commit landed (or the artifact namespace is unset), False on best-effort failure.
|
|
112
112
|
"""
|
|
113
113
|
if not context.config.hf_repo:
|
|
114
114
|
return True
|
|
@@ -145,7 +145,7 @@ def _artifact_upload(
|
|
|
145
145
|
def upload_artifact_file(
|
|
146
146
|
local_path: str, repo_subpath: str, required: bool = False, *, context: WorkerContext
|
|
147
147
|
) -> bool:
|
|
148
|
-
"""Upload one file to the run's
|
|
148
|
+
"""Upload one file to the run's artifact prefix. Returns True on success (see ``_artifact_upload``)."""
|
|
149
149
|
return _artifact_upload(
|
|
150
150
|
lambda: artifact_api().upload_file(
|
|
151
151
|
path_or_fileobj=local_path,
|
|
@@ -177,7 +177,7 @@ def _resume_checkpoint_upload_slot(timeout_s: float | None = None, *, context: W
|
|
|
177
177
|
def upload_artifact_folder(
|
|
178
178
|
local_dir: str, repo_subpath: str, required: bool = False, *, context: WorkerContext
|
|
179
179
|
) -> bool:
|
|
180
|
-
"""Upload a folder to the run's
|
|
180
|
+
"""Upload a folder to the run's artifact prefix. Returns True on success (see ``_artifact_upload``)."""
|
|
181
181
|
return _artifact_upload(
|
|
182
182
|
lambda: artifact_api().upload_folder(
|
|
183
183
|
folder_path=local_dir,
|
|
@@ -68,7 +68,7 @@ _HB_THROTTLED_STAGES = _HB_TIGHT_LIVENESS_STAGES | frozenset({"rl_step", "sft_st
|
|
|
68
68
|
# swallow it. the wrap that follows re-emits with liveness=True and stays throttled.
|
|
69
69
|
_HB_MODEL_LOAD_STAGES = frozenset({"sft_model_load", "custom_model_load"})
|
|
70
70
|
_HB_SUCCESS_TERMINAL_STAGES = frozenset({"done", "already_done"})
|
|
71
|
-
# 600s -> ~6 commits/hr; keeps stall detector alive
|
|
71
|
+
# 600s -> ~6 commits/hr; keeps the stall detector alive while bounding storage writes.
|
|
72
72
|
_HB_TERMINAL_ONLY_INTERVAL_S = 600.0
|
|
73
73
|
|
|
74
74
|
|
|
@@ -99,22 +99,22 @@ def _is_critical_stage(stage: str) -> bool:
|
|
|
99
99
|
|
|
100
100
|
`_failed` earns this as much as the `error_` prefix does: a failure heartbeat is emitted once, at
|
|
101
101
|
the moment the failure is known, and nothing later restates it. `checkpoint_upload_failed` is
|
|
102
|
-
raised from inside a long
|
|
102
|
+
raised from inside a long artifact upload, which is precisely when `_HB_UPLOAD_IN_FLIGHT` is set and an
|
|
103
103
|
unforced ping is dropped -- so the one report of the failure would be discarded exactly in the
|
|
104
104
|
case that produces it.
|
|
105
105
|
"""
|
|
106
106
|
return _is_terminal_stage(stage) or stage.endswith("_failed")
|
|
107
107
|
|
|
108
108
|
|
|
109
|
-
# Guards throttle bookkeeping; slow
|
|
109
|
+
# Guards throttle bookkeeping; slow artifact commit runs outside this lock so heartbeat and liveness
|
|
110
110
|
# threads don't block on the network.
|
|
111
|
-
# Serializes
|
|
111
|
+
# Serializes artifact commits to prevent reorder; each thread uploads its own per-call temp file.
|
|
112
112
|
# Terminal/error commits wait longer — no later heartbeat can repair them.
|
|
113
113
|
_HB_UPLOAD_LOCK_TIMEOUT_S = 30.0
|
|
114
114
|
_HB_CRITICAL_UPLOAD_LOCK_TIMEOUT_S = 120.0
|
|
115
|
-
# True while a thread holds _HB_UPLOAD_LOCK and is inside the
|
|
115
|
+
# True while a thread holds _HB_UPLOAD_LOCK and is inside the artifact commit. Read under _HB_LOCK.
|
|
116
116
|
#
|
|
117
|
-
# The throttle clock (_HB_LAST_UPLOAD) only advances AFTER a commit lands, so during a slow
|
|
117
|
+
# The throttle clock (_HB_LAST_UPLOAD) only advances AFTER a commit lands, so during a slow artifact
|
|
118
118
|
# commit every other throttled caller still computes upload_due=True, walks into
|
|
119
119
|
# _HB_UPLOAD_LOCK.acquire() and blocks there for up to the acquire timeout -- 30s, or 120s on a
|
|
120
120
|
# critical stage. That stalls the liveness daemon, and `liveness_heartbeat`'s join delays leaving
|
|
@@ -141,7 +141,7 @@ def _dump_thread_stacks(reason: str) -> None:
|
|
|
141
141
|
def _console_heartbeat_snapshot(
|
|
142
142
|
payload: dict, payload_committed: bool = True, upload_due: bool = False
|
|
143
143
|
) -> str:
|
|
144
|
-
"""render one bounded console record with explicit
|
|
144
|
+
"""render one bounded console record with explicit artifact commit state."""
|
|
145
145
|
console_payload = dict(payload)
|
|
146
146
|
metrics_last = console_payload.pop("metrics_last", None)
|
|
147
147
|
if isinstance(metrics_last, list):
|
|
@@ -155,7 +155,7 @@ def _console_heartbeat_snapshot(
|
|
|
155
155
|
|
|
156
156
|
|
|
157
157
|
def _set_upload_in_flight(value: bool, *, context: WorkerContext) -> None:
|
|
158
|
-
"""Mark whether an
|
|
158
|
+
"""Mark whether an artifact heartbeat commit is running. Call with _HB_LOCK held."""
|
|
159
159
|
|
|
160
160
|
context.heartbeat_state.upload_in_flight = value
|
|
161
161
|
|
|
@@ -248,7 +248,7 @@ def heartbeat(
|
|
|
248
248
|
context.heartbeat_state.last_progress_ts = ts
|
|
249
249
|
context.heartbeat_state.progress_seq += 1
|
|
250
250
|
elif context.heartbeat_state.progress_seq > context.heartbeat_state.progress_uploaded_seq:
|
|
251
|
-
# carry real progress that has not reached
|
|
251
|
+
# carry real progress that has not reached artifact storage yet.
|
|
252
252
|
liveness = False
|
|
253
253
|
latest_progress_ts = float(context.heartbeat_state.last_progress_ts or 0.0)
|
|
254
254
|
my_progress_seq = context.heartbeat_state.progress_seq
|
{freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/model/adapter.py
RENAMED
|
@@ -158,8 +158,8 @@ def _download_adapter(adapter_prefix: str | None, *, context: WorkerContext) ->
|
|
|
158
158
|
"the prepared warm-start source adapter could not be downloaded"
|
|
159
159
|
) from None
|
|
160
160
|
else:
|
|
161
|
-
# a returned snapshot can still be incomplete: an interrupted transfer
|
|
162
|
-
#
|
|
161
|
+
# a returned snapshot can still be incomplete: an interrupted transfer can leave
|
|
162
|
+
# a partial local_dir, so validate both config and weights before accepting it.
|
|
163
163
|
if _warmstart_adapter_is_loadable(adir):
|
|
164
164
|
return adir
|
|
165
165
|
# discard partial local_dir materialization so the next attempt cannot reuse stale files.
|
{freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/entry/sft_train.py
RENAMED
|
@@ -130,7 +130,7 @@ def _durable_required_save_steps(
|
|
|
130
130
|
)
|
|
131
131
|
except Exception as error:
|
|
132
132
|
raise _worker_perf.RetriableInfraError(
|
|
133
|
-
f"could not verify required SFT save step {step}
|
|
133
|
+
f"could not verify required SFT save step {step} in artifact storage"
|
|
134
134
|
) from error
|
|
135
135
|
if exists:
|
|
136
136
|
durable.add(step)
|
|
@@ -535,7 +535,7 @@ def _publish_sft_result(
|
|
|
535
535
|
_worker_hf.upload_artifact_folder(adapter_dir, "adapter", required=True, context=context)
|
|
536
536
|
# only a durably published adapter may suppress the final publish. the seeded resume step no
|
|
537
537
|
# longer needs excluding by hand: it is credited as deployable_published only when its
|
|
538
|
-
# adapter was actually found
|
|
538
|
+
# adapter was actually found in artifact storage, so a resume that carried resumable state without a
|
|
539
539
|
# servable adapter falls through to this publish instead of being skipped.
|
|
540
540
|
if (
|
|
541
541
|
final_save_due(final_step, options.save_at_steps)
|