freesolo-flash-dev 1.2.116__tar.gz → 1.2.118__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.2.118/.env.example +130 -0
- freesolo_flash_dev-1.2.118/.github/workflows/auto-rebake.yml +284 -0
- freesolo_flash_dev-1.2.118/.github/workflows/bake-kernel-cache.yml +259 -0
- freesolo_flash_dev-1.2.118/.github/workflows/ci.yml +203 -0
- freesolo_flash_dev-1.2.118/.github/workflows/deploy-modal-dev.yml +347 -0
- freesolo_flash_dev-1.2.118/.github/workflows/deploy-modal.yml +375 -0
- freesolo_flash_dev-1.2.118/.github/workflows/publish-image.yml +110 -0
- freesolo_flash_dev-1.2.118/.github/workflows/publish-serving-image.yml +213 -0
- freesolo_flash_dev-1.2.118/.github/workflows/worker-image.yml +169 -0
- freesolo_flash_dev-1.2.118/CHANGELOG.md +203 -0
- freesolo_flash_dev-1.2.118/CONTRIBUTING.md +136 -0
- freesolo_flash_dev-1.2.118/Dockerfile.worker +477 -0
- freesolo_flash_dev-1.2.118/PKG-INFO +346 -0
- freesolo_flash_dev-1.2.118/docker/kernel_fingerprint.py +333 -0
- freesolo_flash_dev-1.2.118/docker/make_rp_handler.py +58 -0
- freesolo_flash_dev-1.2.118/docs/serving-contract.md +216 -0
- freesolo_flash_dev-1.2.118/flash/__init__.py +5 -0
- freesolo_flash_dev-1.2.118/flash/_internal/channel.py +166 -0
- freesolo_flash_dev-1.2.118/flash/_internal/diagnostics.py +170 -0
- freesolo_flash_dev-1.2.118/flash/_internal/version.py +10 -0
- freesolo_flash_dev-1.2.118/flash/adapters/lora_rank.py +615 -0
- freesolo_flash_dev-1.2.118/flash/cli/__init__.py +1 -0
- freesolo_flash_dev-1.2.118/flash/cli/__main__.py +6 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/__init__.py +1 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/env/ops/imports.py +369 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/env/ops/list.py +91 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/env/ops/push.py +726 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/env/ops/retained.py +156 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/env/ops/setup.py +979 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/env/testing/episode.py +307 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/env/testing/eval.py +990 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/env/testing/evaluations.py +195 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/env/testing/params.py +256 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/env/testing/test.py +833 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/env/testing/warnings.py +393 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/ops/account.py +255 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/ops/catalog.py +46 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/ops/deploy.py +903 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/ops/log_follow.py +208 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/ops/runs.py +410 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/ops/traces.py +217 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/ops/train.py +513 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/ops/worker_output.py +160 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/serving/deploy.py +332 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/serving/identity.py +282 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/serving/status.py +102 -0
- freesolo_flash_dev-1.2.118/flash/cli/commands/serving/undeploy.py +177 -0
- freesolo_flash_dev-1.2.118/flash/cli/parsing/account.py +56 -0
- freesolo_flash_dev-1.2.118/flash/cli/parsing/env.py +261 -0
- freesolo_flash_dev-1.2.118/flash/cli/parsing/main.py +349 -0
- freesolo_flash_dev-1.2.118/flash/cli/parsing/models.py +131 -0
- freesolo_flash_dev-1.2.118/flash/cli/parsing/serve_parser.py +220 -0
- freesolo_flash_dev-1.2.118/flash/cli/parsing/traces.py +53 -0
- freesolo_flash_dev-1.2.118/flash/cli/parsing/training.py +109 -0
- freesolo_flash_dev-1.2.118/flash/cli/scaffold/TRAINING.md +1815 -0
- freesolo_flash_dev-1.2.118/flash/cli/ui/cost.py +70 -0
- freesolo_flash_dev-1.2.118/flash/cli/ui/heartbeat.py +497 -0
- freesolo_flash_dev-1.2.118/flash/cli/ui/render.py +795 -0
- freesolo_flash_dev-1.2.118/flash/cli/ui/tables.py +155 -0
- freesolo_flash_dev-1.2.118/flash/client/__init__.py +91 -0
- freesolo_flash_dev-1.2.118/flash/client/freesolo_api.py +241 -0
- freesolo_flash_dev-1.2.118/flash/client/http.py +916 -0
- freesolo_flash_dev-1.2.118/flash/content/multimodal.py +892 -0
- freesolo_flash_dev-1.2.118/flash/core/spec.py +863 -0
- freesolo_flash_dev-1.2.118/flash/core/spec_persistence.py +109 -0
- freesolo_flash_dev-1.2.118/flash/cost/analytical.py +949 -0
- freesolo_flash_dev-1.2.118/flash/cost/facts.py +214 -0
- freesolo_flash_dev-1.2.118/flash/cost/types.py +353 -0
- freesolo_flash_dev-1.2.118/flash/engine/plan/model_config_probe.py +130 -0
- freesolo_flash_dev-1.2.118/flash/engine/plan/steps.py +141 -0
- freesolo_flash_dev-1.2.118/flash/engine/plan/vram.py +991 -0
- freesolo_flash_dev-1.2.118/flash/engine/profiling/dataset_profile.py +353 -0
- freesolo_flash_dev-1.2.118/flash/engine/profiling/image_tokens.py +300 -0
- freesolo_flash_dev-1.2.118/flash/engine/profiling/sft_workload.py +982 -0
- freesolo_flash_dev-1.2.118/flash/engine/profiling/tokenizer.py +29 -0
- freesolo_flash_dev-1.2.118/flash/engine/support/verl_checkpoint.py +168 -0
- freesolo_flash_dev-1.2.118/flash/engine/support/worker_entrypoint.py +22 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/__init__.py +1 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/__main__.py +4 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/entry/opd.py +166 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/entry/rl.py +14 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/entry/sft.py +204 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/entry/worker.py +225 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/io/heartbeat.py +741 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/io/hf.py +589 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/io/prefetch.py +290 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/io/wandb_log.py +20 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/model/adapter.py +173 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/model/decoding.py +52 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/perf/lifecycle.py +413 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/runtime/state.py +122 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/teacher/client.py +875 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/core/lifecycle/finalize.py +113 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/core/lifecycle/ledger.py +143 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/entry/opd_train.py +246 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/entry/opd_train_runner.py +797 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/entry/rl_train.py +377 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/entry/rl_train_runner.py +934 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/entry/sft_train.py +675 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/entry/sft_train_runner.py +949 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/opd/bridging/batching.py +205 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/opd/bridging/bridge.py +976 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/opd/bridging/failures.py +117 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/opd/bridging/prompts.py +164 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/opd/bridging/scoring.py +88 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/opd/multiturn/validation.py +80 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/opd/orchestration/failures.py +434 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/opd/orchestration/overrides.py +522 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/opd/orchestration/progress.py +160 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/opd/orchestration/prompt_preparation.py +217 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/opd/orchestration/protocol.py +22 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/opd/orchestration/reporting.py +94 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/opd/orchestration/state.py +111 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/rl/launch/checkpoints.py +642 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/rl/launch/config.py +61 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/rl/launch/inputs.py +605 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/rl/launch/verl_config.py +814 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/rl/rollout/multi_turn.py +825 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/rl/rollout/scoring.py +73 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/rl/rollout/single_turn.py +247 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/sft/setup/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/sft/setup/checkpoints.py +307 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/train/sft/setup/config.py +294 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/verl/capabilities.py +929 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/verl/checkpoints.py +896 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/verl/diagnostics.py +513 -0
- freesolo_flash_dev-1.2.118/flash/engine/worker/verl/parallelism.py +77 -0
- freesolo_flash_dev-1.2.118/flash/envs/__init__.py +9 -0
- freesolo_flash_dev-1.2.118/flash/envs/loading/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/envs/loading/adapter.py +727 -0
- freesolo_flash_dev-1.2.118/flash/envs/loading/base.py +221 -0
- freesolo_flash_dev-1.2.118/flash/envs/loading/loader.py +985 -0
- freesolo_flash_dev-1.2.118/flash/envs/loading/pull.py +223 -0
- freesolo_flash_dev-1.2.118/flash/envs/loading/staged.py +490 -0
- freesolo_flash_dev-1.2.118/flash/envs/meta/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/envs/meta/cache_security.py +189 -0
- freesolo_flash_dev-1.2.118/flash/envs/meta/evaluations.py +620 -0
- freesolo_flash_dev-1.2.118/flash/envs/meta/identity.py +267 -0
- freesolo_flash_dev-1.2.118/flash/envs/meta/namespace_listing.py +75 -0
- freesolo_flash_dev-1.2.118/flash/envs/package/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/providers/__init__.py +1 -0
- freesolo_flash_dev-1.2.118/flash/providers/_lifecycle/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/providers/_lifecycle/bootstrapping/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/providers/_lifecycle/bootstrapping/bootstrap.py +961 -0
- freesolo_flash_dev-1.2.118/flash/providers/_lifecycle/instances/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/providers/_lifecycle/instances/instance.py +401 -0
- freesolo_flash_dev-1.2.118/flash/providers/_lifecycle/instances/poll.py +470 -0
- freesolo_flash_dev-1.2.118/flash/providers/_lifecycle/instances/poll_instance.py +719 -0
- freesolo_flash_dev-1.2.118/flash/providers/_lifecycle/instances/provider.py +187 -0
- freesolo_flash_dev-1.2.118/flash/providers/_lifecycle/instances/terminal_artifacts.py +268 -0
- freesolo_flash_dev-1.2.118/flash/providers/_lifecycle/net/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/providers/_lifecycle/net/http.py +206 -0
- freesolo_flash_dev-1.2.118/flash/providers/_lifecycle/net/worker.py +366 -0
- freesolo_flash_dev-1.2.118/flash/providers/artifacts/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/providers/artifacts/hf.py +581 -0
- freesolo_flash_dev-1.2.118/flash/providers/artifacts/preload_runpod.py +525 -0
- freesolo_flash_dev-1.2.118/flash/providers/artifacts/weight_cache.py +864 -0
- freesolo_flash_dev-1.2.118/flash/providers/core/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/providers/core/allocator.py +987 -0
- freesolo_flash_dev-1.2.118/flash/providers/core/base.py +950 -0
- freesolo_flash_dev-1.2.118/flash/providers/core/fit_errors.py +414 -0
- freesolo_flash_dev-1.2.118/flash/providers/core/preflight.py +214 -0
- freesolo_flash_dev-1.2.118/flash/providers/core/realized.py +65 -0
- freesolo_flash_dev-1.2.118/flash/providers/core/registry.py +87 -0
- freesolo_flash_dev-1.2.118/flash/providers/core/sharding.py +111 -0
- freesolo_flash_dev-1.2.118/flash/providers/lambda_/__init__.py +1 -0
- freesolo_flash_dev-1.2.118/flash/providers/lambda_/client/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/providers/lambda_/client/api.py +322 -0
- freesolo_flash_dev-1.2.118/flash/providers/lambda_/client/auth.py +15 -0
- freesolo_flash_dev-1.2.118/flash/providers/lambda_/client/gpus.py +104 -0
- freesolo_flash_dev-1.2.118/flash/providers/lambda_/client/preflight.py +15 -0
- freesolo_flash_dev-1.2.118/flash/providers/lambda_/client/pricing.py +57 -0
- freesolo_flash_dev-1.2.118/flash/providers/lambda_/execution/__init__.py +1 -0
- freesolo_flash_dev-1.2.118/flash/providers/lambda_/execution/provider.py +208 -0
- freesolo_flash_dev-1.2.118/flash/providers/lambda_/jobs/__init__.py +973 -0
- freesolo_flash_dev-1.2.118/flash/providers/lambda_/jobs/builders.py +121 -0
- freesolo_flash_dev-1.2.118/flash/providers/runpod/__init__.py +1 -0
- freesolo_flash_dev-1.2.118/flash/providers/runpod/client/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/providers/runpod/client/api.py +457 -0
- freesolo_flash_dev-1.2.118/flash/providers/runpod/client/auth.py +109 -0
- freesolo_flash_dev-1.2.118/flash/providers/runpod/client/cost.py +52 -0
- freesolo_flash_dev-1.2.118/flash/providers/runpod/client/gpus.py +83 -0
- freesolo_flash_dev-1.2.118/flash/providers/runpod/client/preflight.py +24 -0
- freesolo_flash_dev-1.2.118/flash/providers/runpod/client/pricing.py +19 -0
- freesolo_flash_dev-1.2.118/flash/providers/runpod/execution/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/providers/runpod/execution/job_execution.py +457 -0
- freesolo_flash_dev-1.2.118/flash/providers/runpod/execution/jobs.py +243 -0
- freesolo_flash_dev-1.2.118/flash/providers/runpod/execution/polling.py +562 -0
- freesolo_flash_dev-1.2.118/flash/providers/runpod/execution/provider.py +221 -0
- freesolo_flash_dev-1.2.118/flash/providers/runpod/execution/resources.py +256 -0
- freesolo_flash_dev-1.2.118/flash/providers/runpod/serverless/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/providers/runpod/serverless/endpoints.py +960 -0
- freesolo_flash_dev-1.2.118/flash/providers/vast/__init__.py +1 -0
- freesolo_flash_dev-1.2.118/flash/providers/vast/client/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/providers/vast/client/api.py +473 -0
- freesolo_flash_dev-1.2.118/flash/providers/vast/client/auth.py +16 -0
- freesolo_flash_dev-1.2.118/flash/providers/vast/client/preflight.py +17 -0
- freesolo_flash_dev-1.2.118/flash/providers/vast/client/pricing.py +187 -0
- freesolo_flash_dev-1.2.118/flash/providers/vast/execution/__init__.py +1 -0
- freesolo_flash_dev-1.2.118/flash/providers/vast/execution/provider.py +214 -0
- freesolo_flash_dev-1.2.118/flash/providers/vast/jobs/__init__.py +956 -0
- freesolo_flash_dev-1.2.118/flash/providers/vast/jobs/builders.py +227 -0
- freesolo_flash_dev-1.2.118/flash/py.typed +0 -0
- freesolo_flash_dev-1.2.118/flash/runner/__init__.py +1 -0
- freesolo_flash_dev-1.2.118/flash/runner/accounting/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/runner/accounting/artifacts.py +254 -0
- freesolo_flash_dev-1.2.118/flash/runner/accounting/costs.py +407 -0
- freesolo_flash_dev-1.2.118/flash/runner/accounting/reconciliation.py +444 -0
- freesolo_flash_dev-1.2.118/flash/runner/accounting/weight_cache.py +84 -0
- freesolo_flash_dev-1.2.118/flash/runner/lifecycle/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/runner/lifecycle/attempts.py +151 -0
- freesolo_flash_dev-1.2.118/flash/runner/lifecycle/deadlines.py +100 -0
- freesolo_flash_dev-1.2.118/flash/runner/lifecycle/preparation.py +633 -0
- freesolo_flash_dev-1.2.118/flash/runner/lifecycle/reporting.py +262 -0
- freesolo_flash_dev-1.2.118/flash/runner/lifecycle/state.py +399 -0
- freesolo_flash_dev-1.2.118/flash/runner/lifecycle/status.py +438 -0
- freesolo_flash_dev-1.2.118/flash/runner/lifecycle/submit.py +356 -0
- freesolo_flash_dev-1.2.118/flash/runner/results/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/runner/results/checkpoints.py +121 -0
- freesolo_flash_dev-1.2.118/flash/runner/results/verified_revisions.py +169 -0
- freesolo_flash_dev-1.2.118/flash/runner/supervise/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/runner/supervise/attach.py +911 -0
- freesolo_flash_dev-1.2.118/flash/runner/supervise/deploy.py +819 -0
- freesolo_flash_dev-1.2.118/flash/runner/supervise/errors.py +9 -0
- freesolo_flash_dev-1.2.118/flash/runner/supervise/lifecycle.py +360 -0
- freesolo_flash_dev-1.2.118/flash/runner/supervise/recovery.py +641 -0
- freesolo_flash_dev-1.2.118/flash/runner/supervise/seed_submission.py +895 -0
- freesolo_flash_dev-1.2.118/flash/runner/supervise/transitions.py +339 -0
- freesolo_flash_dev-1.2.118/flash/runtime_capsule/profiles.py +66 -0
- freesolo_flash_dev-1.2.118/flash/schema/__init__.py +925 -0
- freesolo_flash_dev-1.2.118/flash/schema/fields.py +444 -0
- freesolo_flash_dev-1.2.118/flash/serve/app/chat_stream.py +143 -0
- freesolo_flash_dev-1.2.118/flash/serve/app/http.py +331 -0
- freesolo_flash_dev-1.2.118/flash/serve/app/manifest.py +655 -0
- freesolo_flash_dev-1.2.118/flash/serve/app/materialize.py +998 -0
- freesolo_flash_dev-1.2.118/flash/serve/app/openai.py +273 -0
- freesolo_flash_dev-1.2.118/flash/serve/contract/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/serve/contract/errors.py +73 -0
- freesolo_flash_dev-1.2.118/flash/serve/contract/responses.py +107 -0
- freesolo_flash_dev-1.2.118/flash/serve/contract/urls.py +138 -0
- freesolo_flash_dev-1.2.118/flash/serve/control/types.py +877 -0
- freesolo_flash_dev-1.2.118/flash/serve/deployment/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/serve/deployment/adapter_check.py +179 -0
- freesolo_flash_dev-1.2.118/flash/serve/deployment/deploy.py +832 -0
- freesolo_flash_dev-1.2.118/flash/serve/deployment/export.py +589 -0
- freesolo_flash_dev-1.2.118/flash/serve/deployment/resolve.py +399 -0
- freesolo_flash_dev-1.2.118/flash/serve/provisioning/__init__.py +35 -0
- freesolo_flash_dev-1.2.118/flash/serve/provisioning/common/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/serve/provisioning/modal/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/serve/provisioning/modal/execution/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/serve/provisioning/modal/execution/deployment.py +644 -0
- freesolo_flash_dev-1.2.118/flash/serve/provisioning/modal/execution/lifecycle.py +116 -0
- freesolo_flash_dev-1.2.118/flash/serve/provisioning/modal/execution/operations.py +623 -0
- freesolo_flash_dev-1.2.118/flash/serve/provisioning/modal/execution/sdk.py +851 -0
- freesolo_flash_dev-1.2.118/flash/serve/provisioning/modal/planning/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/serve/provisioning/modal/planning/plan.py +304 -0
- freesolo_flash_dev-1.2.118/flash/serve/provisioning/modal/planning/resources.py +266 -0
- freesolo_flash_dev-1.2.118/flash/serve/provisioning/modal/readiness_checks/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/serve/provisioning/modal/readiness_checks/probe.py +135 -0
- freesolo_flash_dev-1.2.118/flash/serve/provisioning/modal/readiness_checks/readiness.py +245 -0
- freesolo_flash_dev-1.2.118/flash/serve/provisioning/modal/readiness_checks/teardown.py +186 -0
- freesolo_flash_dev-1.2.118/flash/serve/provisioning/runpod/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/serve/provisioning/runpod/lifecycle.py +83 -0
- freesolo_flash_dev-1.2.118/flash/serve/provisioning/runpod/operations.py +992 -0
- freesolo_flash_dev-1.2.118/flash/serve/provisioning/runpod/plan.py +221 -0
- freesolo_flash_dev-1.2.118/flash/serve/provisioning/runpod/probe.py +74 -0
- freesolo_flash_dev-1.2.118/flash/serve/provisioning/runpod/readiness.py +683 -0
- freesolo_flash_dev-1.2.118/flash/serve/provisioning/runpod/resources.py +316 -0
- freesolo_flash_dev-1.2.118/flash/serve/request/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/serve/request/openai.py +353 -0
- freesolo_flash_dev-1.2.118/flash/serve/request/streaming.py +260 -0
- freesolo_flash_dev-1.2.118/flash/serve/request/thinking.py +226 -0
- freesolo_flash_dev-1.2.118/flash/serve/request/transport.py +537 -0
- freesolo_flash_dev-1.2.118/flash/serve/request/validation.py +641 -0
- freesolo_flash_dev-1.2.118/flash/serve/runtime/__init__.py +59 -0
- freesolo_flash_dev-1.2.118/flash/serve/runtime/adapters.py +276 -0
- freesolo_flash_dev-1.2.118/flash/serve/runtime/engine.py +700 -0
- freesolo_flash_dev-1.2.118/flash/serve/runtime/multimodal.py +77 -0
- freesolo_flash_dev-1.2.118/flash/serve/runtime/sampling.py +144 -0
- freesolo_flash_dev-1.2.118/flash/serve/runtime/structured_outputs.py +18 -0
- freesolo_flash_dev-1.2.118/flash/serve/runtime/types.py +565 -0
- freesolo_flash_dev-1.2.118/flash/server/__main__.py +6 -0
- freesolo_flash_dev-1.2.118/flash/server/asgi/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/server/asgi/app.py +433 -0
- freesolo_flash_dev-1.2.118/flash/server/asgi/cli.py +69 -0
- freesolo_flash_dev-1.2.118/flash/server/billing/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/server/billing/retry.py +127 -0
- freesolo_flash_dev-1.2.118/flash/server/domain/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/server/domain/ops/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/server/domain/ops/reconcile.py +146 -0
- freesolo_flash_dev-1.2.118/flash/server/domain/ops/repo_cleanup.py +385 -0
- freesolo_flash_dev-1.2.118/flash/server/domain/registry/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/server/domain/registry/checkpoints.py +111 -0
- freesolo_flash_dev-1.2.118/flash/server/domain/registry/environment_registry.py +246 -0
- freesolo_flash_dev-1.2.118/flash/server/domain/registry/envs.py +796 -0
- freesolo_flash_dev-1.2.118/flash/server/domain/registry/runs.py +182 -0
- freesolo_flash_dev-1.2.118/flash/server/domain/teacher/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/server/domain/teacher/broker.py +900 -0
- freesolo_flash_dev-1.2.118/flash/server/domain/teacher/requests.py +212 -0
- freesolo_flash_dev-1.2.118/flash/server/platform/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/server/platform/deps.py +254 -0
- freesolo_flash_dev-1.2.118/flash/server/platform/internal_client.py +194 -0
- freesolo_flash_dev-1.2.118/flash/server/platform/locks.py +79 -0
- freesolo_flash_dev-1.2.118/flash/server/platform/runtime.py +799 -0
- freesolo_flash_dev-1.2.118/flash/server/routes/envs.py +205 -0
- freesolo_flash_dev-1.2.118/flash/server/routes/runs.py +553 -0
- freesolo_flash_dev-1.2.118/flash/server/routes/serving.py +724 -0
- freesolo_flash_dev-1.2.118/flash/server/routes/serving_chat.py +269 -0
- freesolo_flash_dev-1.2.118/flash/server/routes/serving_completion.py +467 -0
- freesolo_flash_dev-1.2.118/flash/server/routes/serving_revisions.py +350 -0
- freesolo_flash_dev-1.2.118/flash/server/routes/serving_smoke.py +672 -0
- freesolo_flash_dev-1.2.118/flash/server/routes/teacher.py +139 -0
- freesolo_flash_dev-1.2.118/flash/serving/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/serving/app/README.md +323 -0
- freesolo_flash_dev-1.2.118/flash/serving/app/__init__.py +1 -0
- freesolo_flash_dev-1.2.118/flash/serving/app/modal_app.py +784 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/accounting/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/accounting/usage.py +215 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/accounting/usage_facts.py +54 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/accounting/usage_outbox.py +986 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/engine/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/engine/boot.py +226 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/engine/errors.py +105 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/engine/generation.py +316 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/engine/lora_engine.py +767 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/engine/lora_entries.py +50 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/engine/model_config.py +204 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/engine/support.py +242 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/http/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/http/adapter_routes.py +266 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/http/context.py +227 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/http/inference_routes.py +356 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/http/router.py +144 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/http/routing.py +145 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/io/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/io/multimodal.py +109 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/io/openai_request.py +63 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/io/openai_stream.py +458 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/io/provenance.py +69 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/io/requests.py +43 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/io/responses.py +263 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/io/schemas.py +482 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/io/streaming.py +134 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/io/structured_outputs.py +25 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/store/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/store/access.py +94 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/store/lookup.py +118 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/store/persistence.py +310 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/store/registration.py +228 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/store/registry.py +176 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/store/supabase_rest.py +50 -0
- freesolo_flash_dev-1.2.118/flash/serving/src/store/undeploy.py +277 -0
- freesolo_flash_dev-1.2.118/flash/snapshot/__init__.py +1 -0
- freesolo_flash_dev-1.2.118/flash/snapshot/archive.py +387 -0
- freesolo_flash_dev-1.2.118/flash/teacher/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/pyproject.toml +325 -0
- freesolo_flash_dev-1.2.118/scripts/check_source_layout.py +292 -0
- freesolo_flash_dev-1.2.118/scripts/check_verl_pin_exists.py +80 -0
- freesolo_flash_dev-1.2.118/tests/_helpers/managed_chat.py +49 -0
- freesolo_flash_dev-1.2.118/tests/_helpers/profile.py +203 -0
- freesolo_flash_dev-1.2.118/tests/_helpers/runner.py +53 -0
- freesolo_flash_dev-1.2.118/tests/conftest.py +499 -0
- freesolo_flash_dev-1.2.118/tests/live/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/tests/live/test_lambda_live.py +51 -0
- freesolo_flash_dev-1.2.118/tests/live/test_runpod_live.py +36 -0
- freesolo_flash_dev-1.2.118/tests/live/test_vast_live.py +56 -0
- freesolo_flash_dev-1.2.118/tests/serving/conftest.py +262 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_base_model_serving.py +294 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_chat_auth.py +264 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_chat_authorizer.py +525 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_checkpoint_model_validation.py +218 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_engine_error_status.py +225 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_fp8_config.py +169 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_immutable_engine.py +332 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_immutable_revisions.py +1503 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_immutable_schemas.py +147 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_mirror_sampling_parity.py +396 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_modal_deploy_identity.py +112 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_modal_image_paths.py +220 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_model_config.py +168 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_multimodal.py +1150 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_per_model_gpu.py +818 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_persistence.py +268 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_pre_first_disconnect.py +475 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_prequant_config.py +42 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_registry.py +308 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_registry_coverage.py +65 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_request_body_limit.py +183 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_router.py +1656 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_router_coverage.py +294 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_router_edge_coverage.py +303 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_schemas_coverage.py +188 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_serve_reasoning_split.py +276 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_serve_structured_outputs.py +810 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_serve_thinking.py +153 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_settings.py +93 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_structured_outputs.py +397 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_structured_outputs_coverage.py +22 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_supabase_rest_coverage.py +62 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_usage_outbox.py +1934 -0
- freesolo_flash_dev-1.2.118/tests/serving/test_usage_reporter.py +936 -0
- freesolo_flash_dev-1.2.118/tests/serving_conformance/__init__.py +0 -0
- freesolo_flash_dev-1.2.118/tests/serving_conformance/conftest.py +162 -0
- freesolo_flash_dev-1.2.118/tests/serving_conformance/test_contract.py +786 -0
- freesolo_flash_dev-1.2.118/tests/test_adapter_shard_completeness.py +376 -0
- freesolo_flash_dev-1.2.118/tests/test_agent_flash_cli_contract.py +291 -0
- freesolo_flash_dev-1.2.118/tests/test_allocator.py +2461 -0
- freesolo_flash_dev-1.2.118/tests/test_backend_common.py +4906 -0
- freesolo_flash_dev-1.2.118/tests/test_bake_kernel_cache.py +165 -0
- freesolo_flash_dev-1.2.118/tests/test_billing_retry.py +712 -0
- freesolo_flash_dev-1.2.118/tests/test_cancel_remote.py +2214 -0
- freesolo_flash_dev-1.2.118/tests/test_catalog_consistency.py +217 -0
- freesolo_flash_dev-1.2.118/tests/test_catalog_only_models.py +88 -0
- freesolo_flash_dev-1.2.118/tests/test_charge_pricing.py +791 -0
- freesolo_flash_dev-1.2.118/tests/test_chat_foundations.py +371 -0
- freesolo_flash_dev-1.2.118/tests/test_checkpoint_lifecycle.py +132 -0
- freesolo_flash_dev-1.2.118/tests/test_checkpoints.py +690 -0
- freesolo_flash_dev-1.2.118/tests/test_cli_commands.py +5451 -0
- freesolo_flash_dev-1.2.118/tests/test_cli_commands_coverage.py +581 -0
- freesolo_flash_dev-1.2.118/tests/test_cli_credential_shadowing.py +162 -0
- freesolo_flash_dev-1.2.118/tests/test_cli_errors.py +285 -0
- freesolo_flash_dev-1.2.118/tests/test_cli_estimate.py +1230 -0
- freesolo_flash_dev-1.2.118/tests/test_cli_gpus_flag.py +350 -0
- freesolo_flash_dev-1.2.118/tests/test_cli_help.py +211 -0
- freesolo_flash_dev-1.2.118/tests/test_cli_main_coverage.py +19 -0
- freesolo_flash_dev-1.2.118/tests/test_cli_render_coverage.py +643 -0
- freesolo_flash_dev-1.2.118/tests/test_cli_render_theme.py +1775 -0
- freesolo_flash_dev-1.2.118/tests/test_cli_serve_deploy.py +1071 -0
- freesolo_flash_dev-1.2.118/tests/test_cli_serve_status.py +394 -0
- freesolo_flash_dev-1.2.118/tests/test_cli_serve_undeploy.py +521 -0
- freesolo_flash_dev-1.2.118/tests/test_cli_traces.py +709 -0
- freesolo_flash_dev-1.2.118/tests/test_cli_wandb_warning.py +123 -0
- freesolo_flash_dev-1.2.118/tests/test_client.py +1411 -0
- freesolo_flash_dev-1.2.118/tests/test_client_import_purity.py +235 -0
- freesolo_flash_dev-1.2.118/tests/test_client_server_integration.py +347 -0
- freesolo_flash_dev-1.2.118/tests/test_config_env_vars.py +412 -0
- freesolo_flash_dev-1.2.118/tests/test_console_upload.py +145 -0
- freesolo_flash_dev-1.2.118/tests/test_controlled_experiment_repairs.py +503 -0
- freesolo_flash_dev-1.2.118/tests/test_cost_analytical.py +467 -0
- freesolo_flash_dev-1.2.118/tests/test_cost_equation.py +26 -0
- freesolo_flash_dev-1.2.118/tests/test_cost_estimate.py +1022 -0
- freesolo_flash_dev-1.2.118/tests/test_cost_hardware.py +685 -0
- freesolo_flash_dev-1.2.118/tests/test_cost_models.py +219 -0
- freesolo_flash_dev-1.2.118/tests/test_deploy_alias_move_warning.py +554 -0
- freesolo_flash_dev-1.2.118/tests/test_deploy_latency.py +426 -0
- freesolo_flash_dev-1.2.118/tests/test_dev_channel.py +749 -0
- freesolo_flash_dev-1.2.118/tests/test_disk_gb.py +211 -0
- freesolo_flash_dev-1.2.118/tests/test_endpoint_name.py +45 -0
- freesolo_flash_dev-1.2.118/tests/test_env_cache_evict.py +515 -0
- freesolo_flash_dev-1.2.118/tests/test_env_delete.py +148 -0
- freesolo_flash_dev-1.2.118/tests/test_env_download.py +109 -0
- freesolo_flash_dev-1.2.118/tests/test_env_download_api.py +95 -0
- freesolo_flash_dev-1.2.118/tests/test_env_evaluations.py +4337 -0
- freesolo_flash_dev-1.2.118/tests/test_env_list_api.py +117 -0
- freesolo_flash_dev-1.2.118/tests/test_env_list_cli.py +102 -0
- freesolo_flash_dev-1.2.118/tests/test_env_list_hub.py +213 -0
- freesolo_flash_dev-1.2.118/tests/test_env_no_install.py +85 -0
- freesolo_flash_dev-1.2.118/tests/test_env_publish.py +1962 -0
- freesolo_flash_dev-1.2.118/tests/test_env_pull.py +1255 -0
- freesolo_flash_dev-1.2.118/tests/test_env_pull_coverage.py +167 -0
- freesolo_flash_dev-1.2.118/tests/test_env_pull_loader_coverage.py +332 -0
- freesolo_flash_dev-1.2.118/tests/test_env_pull_managed_control_plane.py +174 -0
- freesolo_flash_dev-1.2.118/tests/test_env_push.py +1733 -0
- freesolo_flash_dev-1.2.118/tests/test_env_rate_limit_resolve.py +334 -0
- freesolo_flash_dev-1.2.118/tests/test_env_ref_pinning.py +73 -0
- freesolo_flash_dev-1.2.118/tests/test_env_test.py +3436 -0
- freesolo_flash_dev-1.2.118/tests/test_envs_coverage.py +117 -0
- freesolo_flash_dev-1.2.118/tests/test_export.py +1579 -0
- freesolo_flash_dev-1.2.118/tests/test_flash_mvp.py +133 -0
- freesolo_flash_dev-1.2.118/tests/test_flash_worker.py +1530 -0
- freesolo_flash_dev-1.2.118/tests/test_fused_expert_warmstart.py +1894 -0
- freesolo_flash_dev-1.2.118/tests/test_github_urlopen_retry.py +365 -0
- freesolo_flash_dev-1.2.118/tests/test_gpu_type_single_field.py +198 -0
- freesolo_flash_dev-1.2.118/tests/test_gpus.py +541 -0
- freesolo_flash_dev-1.2.118/tests/test_grpo_checkpoint_durability.py +1728 -0
- freesolo_flash_dev-1.2.118/tests/test_grpo_params.py +767 -0
- freesolo_flash_dev-1.2.118/tests/test_grpo_resident_sizing.py +193 -0
- freesolo_flash_dev-1.2.118/tests/test_grpo_reward_batching.py +334 -0
- freesolo_flash_dev-1.2.118/tests/test_grpo_rollout_contract.py +484 -0
- freesolo_flash_dev-1.2.118/tests/test_grpo_rollout_identity.py +824 -0
- freesolo_flash_dev-1.2.118/tests/test_idle_endpoint_reaper.py +554 -0
- freesolo_flash_dev-1.2.118/tests/test_image_environment_capability.py +92 -0
- freesolo_flash_dev-1.2.118/tests/test_instance_bootstrap_coverage.py +2635 -0
- freesolo_flash_dev-1.2.118/tests/test_jobs.py +7330 -0
- freesolo_flash_dev-1.2.118/tests/test_kernel_fingerprint.py +367 -0
- freesolo_flash_dev-1.2.118/tests/test_lambda_api_coverage.py +510 -0
- freesolo_flash_dev-1.2.118/tests/test_lambda_runner.py +4169 -0
- freesolo_flash_dev-1.2.118/tests/test_login_perms.py +342 -0
- freesolo_flash_dev-1.2.118/tests/test_lora_rank_preflight.py +710 -0
- freesolo_flash_dev-1.2.118/tests/test_lora_targeting.py +780 -0
- freesolo_flash_dev-1.2.118/tests/test_lora_targeting_pinned_verl.py +240 -0
- freesolo_flash_dev-1.2.118/tests/test_managed_hf_repo.py +96 -0
- freesolo_flash_dev-1.2.118/tests/test_mirror_sampling_parity.py +365 -0
- freesolo_flash_dev-1.2.118/tests/test_multi_gpu_gate.py +1639 -0
- freesolo_flash_dev-1.2.118/tests/test_multimodal_training.py +1208 -0
- freesolo_flash_dev-1.2.118/tests/test_named_reward_metrics.py +93 -0
- freesolo_flash_dev-1.2.118/tests/test_oom_escalate_gpu.py +973 -0
- freesolo_flash_dev-1.2.118/tests/test_opd.py +1894 -0
- freesolo_flash_dev-1.2.118/tests/test_opd_multiturn_eos_boundary.py +75 -0
- freesolo_flash_dev-1.2.118/tests/test_opd_multiturn_failure_exit.py +449 -0
- freesolo_flash_dev-1.2.118/tests/test_opd_resume_safety.py +1528 -0
- freesolo_flash_dev-1.2.118/tests/test_opd_train.py +9722 -0
- freesolo_flash_dev-1.2.118/tests/test_orchestrator_flash.py +484 -0
- freesolo_flash_dev-1.2.118/tests/test_packing_coverage.py +179 -0
- freesolo_flash_dev-1.2.118/tests/test_parasail_teacher.py +1440 -0
- freesolo_flash_dev-1.2.118/tests/test_persisted_spec_envelope.py +94 -0
- freesolo_flash_dev-1.2.118/tests/test_poll_helpers.py +262 -0
- freesolo_flash_dev-1.2.118/tests/test_preflight.py +290 -0
- freesolo_flash_dev-1.2.118/tests/test_projects.py +652 -0
- freesolo_flash_dev-1.2.118/tests/test_prompt_budget.py +397 -0
- freesolo_flash_dev-1.2.118/tests/test_provider_preflight_coverage.py +59 -0
- freesolo_flash_dev-1.2.118/tests/test_provider_routing.py +2902 -0
- freesolo_flash_dev-1.2.118/tests/test_provider_teardown_robustness.py +152 -0
- freesolo_flash_dev-1.2.118/tests/test_providers_symmetry.py +464 -0
- freesolo_flash_dev-1.2.118/tests/test_realized_cost.py +445 -0
- freesolo_flash_dev-1.2.118/tests/test_repo_cleanup.py +621 -0
- freesolo_flash_dev-1.2.118/tests/test_resolve_params_b.py +75 -0
- freesolo_flash_dev-1.2.118/tests/test_resume_on_retry.py +1541 -0
- freesolo_flash_dev-1.2.118/tests/test_rl_train.py +8787 -0
- freesolo_flash_dev-1.2.118/tests/test_rollout_samples.py +364 -0
- freesolo_flash_dev-1.2.118/tests/test_runmgmt.py +3208 -0
- freesolo_flash_dev-1.2.118/tests/test_runpod_api_delete.py +155 -0
- freesolo_flash_dev-1.2.118/tests/test_runpod_key_fingerprint.py +401 -0
- freesolo_flash_dev-1.2.118/tests/test_runpod_key_waterfall.py +391 -0
- freesolo_flash_dev-1.2.118/tests/test_runtime_capsule.py +434 -0
- freesolo_flash_dev-1.2.118/tests/test_serve.py +1555 -0
- freesolo_flash_dev-1.2.118/tests/test_serve_app_bootstrap_http.py +1246 -0
- freesolo_flash_dev-1.2.118/tests/test_serve_app_packaging.py +227 -0
- freesolo_flash_dev-1.2.118/tests/test_serve_chat_transport.py +800 -0
- freesolo_flash_dev-1.2.118/tests/test_serve_modal_sdk.py +1047 -0
- freesolo_flash_dev-1.2.118/tests/test_serve_modal_sdk_deadlines.py +126 -0
- freesolo_flash_dev-1.2.118/tests/test_serve_modal_teardown_identity.py +105 -0
- freesolo_flash_dev-1.2.118/tests/test_serve_profiles.py +359 -0
- freesolo_flash_dev-1.2.118/tests/test_serve_provisioning_common.py +404 -0
- freesolo_flash_dev-1.2.118/tests/test_serve_provisioning_modal.py +2932 -0
- freesolo_flash_dev-1.2.118/tests/test_serve_provisioning_runpod.py +4630 -0
- freesolo_flash_dev-1.2.118/tests/test_serve_reasoning_content.py +638 -0
- freesolo_flash_dev-1.2.118/tests/test_serve_resolve_provenance.py +498 -0
- freesolo_flash_dev-1.2.118/tests/test_serve_runtime_engine.py +910 -0
- freesolo_flash_dev-1.2.118/tests/test_serve_runtime_package.py +101 -0
- freesolo_flash_dev-1.2.118/tests/test_server_api.py +10004 -0
- freesolo_flash_dev-1.2.118/tests/test_server_app_coverage.py +267 -0
- freesolo_flash_dev-1.2.118/tests/test_server_billing.py +886 -0
- freesolo_flash_dev-1.2.118/tests/test_server_checkpoints_coverage.py +77 -0
- freesolo_flash_dev-1.2.118/tests/test_server_db.py +485 -0
- freesolo_flash_dev-1.2.118/tests/test_server_envs_coverage.py +2377 -0
- freesolo_flash_dev-1.2.118/tests/test_server_managed_chat_requests.py +864 -0
- freesolo_flash_dev-1.2.118/tests/test_server_managed_chat_revisions.py +744 -0
- freesolo_flash_dev-1.2.118/tests/test_server_serving_resources.py +215 -0
- freesolo_flash_dev-1.2.118/tests/test_server_standalone.py +1098 -0
- freesolo_flash_dev-1.2.118/tests/test_serving_conformance_gate.py +91 -0
- freesolo_flash_dev-1.2.118/tests/test_serving_contract.py +1017 -0
- freesolo_flash_dev-1.2.118/tests/test_serving_schema_coverage.py +201 -0
- freesolo_flash_dev-1.2.118/tests/test_sft_chunked_nll.py +37 -0
- freesolo_flash_dev-1.2.118/tests/test_sft_max_context.py +95 -0
- freesolo_flash_dev-1.2.118/tests/test_sft_train.py +5330 -0
- freesolo_flash_dev-1.2.118/tests/test_sft_workload.py +1503 -0
- freesolo_flash_dev-1.2.118/tests/test_source_attestation_flow.py +196 -0
- freesolo_flash_dev-1.2.118/tests/test_source_layout.py +230 -0
- freesolo_flash_dev-1.2.118/tests/test_source_snapshot.py +210 -0
- freesolo_flash_dev-1.2.118/tests/test_spec_and_validation.py +2448 -0
- freesolo_flash_dev-1.2.118/tests/test_spec_contract_bytes.py +346 -0
- freesolo_flash_dev-1.2.118/tests/test_staged_environment.py +921 -0
- freesolo_flash_dev-1.2.118/tests/test_step_metrics.py +514 -0
- freesolo_flash_dev-1.2.118/tests/test_step_timing.py +414 -0
- freesolo_flash_dev-1.2.118/tests/test_teacher_broker.py +2358 -0
- freesolo_flash_dev-1.2.118/tests/test_terminal_artifacts.py +195 -0
- freesolo_flash_dev-1.2.118/tests/test_training_controls.py +597 -0
- freesolo_flash_dev-1.2.118/tests/test_vast_api.py +773 -0
- freesolo_flash_dev-1.2.118/tests/test_vast_api_coverage.py +307 -0
- freesolo_flash_dev-1.2.118/tests/test_vast_offers.py +416 -0
- freesolo_flash_dev-1.2.118/tests/test_vast_provider_coverage.py +132 -0
- freesolo_flash_dev-1.2.118/tests/test_vast_runner.py +2893 -0
- freesolo_flash_dev-1.2.118/tests/test_verified_revisions.py +237 -0
- freesolo_flash_dev-1.2.118/tests/test_verifiers.py +2931 -0
- freesolo_flash_dev-1.2.118/tests/test_verl_checkpoint_export.py +598 -0
- freesolo_flash_dev-1.2.118/tests/test_verl_child_plugins.py +799 -0
- freesolo_flash_dev-1.2.118/tests/test_verl_silence_watchdog.py +224 -0
- freesolo_flash_dev-1.2.118/tests/test_vram_architecture.py +231 -0
- freesolo_flash_dev-1.2.118/tests/test_wandb_link.py +394 -0
- freesolo_flash_dev-1.2.118/tests/test_wandb_naming.py +167 -0
- freesolo_flash_dev-1.2.118/tests/test_warmstart_adapter_download.py +320 -0
- freesolo_flash_dev-1.2.118/tests/test_warmstart_cross_repo.py +1611 -0
- freesolo_flash_dev-1.2.118/tests/test_warmstart_error_attribution.py +63 -0
- freesolo_flash_dev-1.2.118/tests/test_warmstart_image_adapters.py +222 -0
- freesolo_flash_dev-1.2.118/tests/test_weight_cache.py +4919 -0
- freesolo_flash_dev-1.2.118/tests/test_worker_dryrun.py +175 -0
- freesolo_flash_dev-1.2.118/tests/test_worker_hardexit.py +304 -0
- freesolo_flash_dev-1.2.118/tests/test_worker_image.py +42 -0
- freesolo_flash_dev-1.2.118/tests/test_worker_init_heartbeat.py +1732 -0
- freesolo_flash_dev-1.2.118/tests/test_worker_stack.py +2241 -0
- freesolo_flash_dev-1.2.118/tests/test_worker_thinking.py +248 -0
- freesolo_flash_dev-1.2.118/tests/test_zero2_sharding_gate.py +266 -0
- freesolo_flash_dev-1.2.118/uv.lock +5817 -0
- freesolo_flash_dev-1.2.116/.env.example +0 -130
- freesolo_flash_dev-1.2.116/.github/workflows/auto-rebake.yml +0 -284
- freesolo_flash_dev-1.2.116/.github/workflows/bake-kernel-cache.yml +0 -259
- freesolo_flash_dev-1.2.116/.github/workflows/ci.yml +0 -198
- freesolo_flash_dev-1.2.116/.github/workflows/deploy-modal-dev.yml +0 -347
- freesolo_flash_dev-1.2.116/.github/workflows/deploy-modal.yml +0 -375
- freesolo_flash_dev-1.2.116/.github/workflows/publish-image.yml +0 -110
- freesolo_flash_dev-1.2.116/.github/workflows/publish-serving-image.yml +0 -213
- freesolo_flash_dev-1.2.116/.github/workflows/worker-image.yml +0 -169
- freesolo_flash_dev-1.2.116/CHANGELOG.md +0 -196
- freesolo_flash_dev-1.2.116/CONTRIBUTING.md +0 -136
- freesolo_flash_dev-1.2.116/Dockerfile.worker +0 -477
- freesolo_flash_dev-1.2.116/PKG-INFO +0 -346
- freesolo_flash_dev-1.2.116/docker/kernel_fingerprint.py +0 -333
- freesolo_flash_dev-1.2.116/docker/make_rp_handler.py +0 -58
- freesolo_flash_dev-1.2.116/docs/serving-contract.md +0 -192
- freesolo_flash_dev-1.2.116/flash/__init__.py +0 -13
- freesolo_flash_dev-1.2.116/flash/_internal/channel.py +0 -166
- freesolo_flash_dev-1.2.116/flash/_internal/diagnostics.py +0 -170
- freesolo_flash_dev-1.2.116/flash/adapters/lora_rank.py +0 -615
- freesolo_flash_dev-1.2.116/flash/cli/__init__.py +0 -941
- freesolo_flash_dev-1.2.116/flash/cli/__main__.py +0 -6
- freesolo_flash_dev-1.2.116/flash/cli/commands/__init__.py +0 -973
- freesolo_flash_dev-1.2.116/flash/cli/commands/deploy.py +0 -824
- freesolo_flash_dev-1.2.116/flash/cli/commands/env/episode.py +0 -307
- freesolo_flash_dev-1.2.116/flash/cli/commands/env/eval.py +0 -990
- freesolo_flash_dev-1.2.116/flash/cli/commands/env/imports.py +0 -369
- freesolo_flash_dev-1.2.116/flash/cli/commands/env/list.py +0 -91
- freesolo_flash_dev-1.2.116/flash/cli/commands/env/push.py +0 -726
- freesolo_flash_dev-1.2.116/flash/cli/commands/env/retained.py +0 -156
- freesolo_flash_dev-1.2.116/flash/cli/commands/env/setup.py +0 -979
- freesolo_flash_dev-1.2.116/flash/cli/commands/env/test.py +0 -833
- freesolo_flash_dev-1.2.116/flash/cli/commands/env/test_evaluations.py +0 -195
- freesolo_flash_dev-1.2.116/flash/cli/commands/env/test_params.py +0 -256
- freesolo_flash_dev-1.2.116/flash/cli/commands/env/test_warnings.py +0 -393
- freesolo_flash_dev-1.2.116/flash/cli/commands/log_follow.py +0 -207
- freesolo_flash_dev-1.2.116/flash/cli/commands/serve_deploy.py +0 -326
- freesolo_flash_dev-1.2.116/flash/cli/commands/serve_identity.py +0 -279
- freesolo_flash_dev-1.2.116/flash/cli/commands/serve_status.py +0 -100
- freesolo_flash_dev-1.2.116/flash/cli/commands/serve_undeploy.py +0 -175
- freesolo_flash_dev-1.2.116/flash/cli/commands/traces.py +0 -217
- freesolo_flash_dev-1.2.116/flash/cli/commands/train_cost.py +0 -408
- freesolo_flash_dev-1.2.116/flash/cli/commands/worker_output.py +0 -159
- freesolo_flash_dev-1.2.116/flash/cli/scaffold/TRAINING.md +0 -1815
- freesolo_flash_dev-1.2.116/flash/cli/serve_parser.py +0 -220
- freesolo_flash_dev-1.2.116/flash/cli/ui/cost.py +0 -73
- freesolo_flash_dev-1.2.116/flash/cli/ui/heartbeat.py +0 -499
- freesolo_flash_dev-1.2.116/flash/cli/ui/render.py +0 -834
- freesolo_flash_dev-1.2.116/flash/cli/ui/tables.py +0 -165
- freesolo_flash_dev-1.2.116/flash/client/__init__.py +0 -91
- freesolo_flash_dev-1.2.116/flash/client/freesolo_api.py +0 -241
- freesolo_flash_dev-1.2.116/flash/client/http.py +0 -916
- freesolo_flash_dev-1.2.116/flash/content/multimodal.py +0 -892
- freesolo_flash_dev-1.2.116/flash/core/spec.py +0 -863
- freesolo_flash_dev-1.2.116/flash/core/spec_persistence.py +0 -109
- freesolo_flash_dev-1.2.116/flash/cost/analytical.py +0 -946
- freesolo_flash_dev-1.2.116/flash/cost/facts.py +0 -214
- freesolo_flash_dev-1.2.116/flash/cost/types.py +0 -353
- freesolo_flash_dev-1.2.116/flash/engine/plan/model_config_probe.py +0 -130
- freesolo_flash_dev-1.2.116/flash/engine/plan/steps.py +0 -141
- freesolo_flash_dev-1.2.116/flash/engine/plan/vram.py +0 -991
- freesolo_flash_dev-1.2.116/flash/engine/profiling/dataset_profile.py +0 -349
- freesolo_flash_dev-1.2.116/flash/engine/profiling/image_tokens.py +0 -300
- freesolo_flash_dev-1.2.116/flash/engine/profiling/sft_workload.py +0 -982
- freesolo_flash_dev-1.2.116/flash/engine/profiling/tokenizer.py +0 -29
- freesolo_flash_dev-1.2.116/flash/engine/verl_checkpoint.py +0 -142
- freesolo_flash_dev-1.2.116/flash/engine/worker/__init__.py +0 -538
- freesolo_flash_dev-1.2.116/flash/engine/worker/__main__.py +0 -4
- freesolo_flash_dev-1.2.116/flash/engine/worker/entry/opd.py +0 -166
- freesolo_flash_dev-1.2.116/flash/engine/worker/entry/rl.py +0 -14
- freesolo_flash_dev-1.2.116/flash/engine/worker/entry/sft.py +0 -204
- freesolo_flash_dev-1.2.116/flash/engine/worker/io/heartbeat.py +0 -732
- freesolo_flash_dev-1.2.116/flash/engine/worker/io/hf.py +0 -588
- freesolo_flash_dev-1.2.116/flash/engine/worker/io/prefetch.py +0 -290
- freesolo_flash_dev-1.2.116/flash/engine/worker/io/wandb_log.py +0 -20
- freesolo_flash_dev-1.2.116/flash/engine/worker/model/adapter.py +0 -167
- freesolo_flash_dev-1.2.116/flash/engine/worker/model/decoding.py +0 -51
- freesolo_flash_dev-1.2.116/flash/engine/worker/opd_train.py +0 -525
- freesolo_flash_dev-1.2.116/flash/engine/worker/opd_train_runner.py +0 -791
- freesolo_flash_dev-1.2.116/flash/engine/worker/perf/lifecycle.py +0 -413
- freesolo_flash_dev-1.2.116/flash/engine/worker/rl_train.py +0 -566
- freesolo_flash_dev-1.2.116/flash/engine/worker/rl_train_runner.py +0 -767
- freesolo_flash_dev-1.2.116/flash/engine/worker/runtime/pkg_proxy.py +0 -24
- freesolo_flash_dev-1.2.116/flash/engine/worker/sft_train.py +0 -704
- freesolo_flash_dev-1.2.116/flash/engine/worker/sft_train_runner.py +0 -936
- freesolo_flash_dev-1.2.116/flash/engine/worker/teacher/client.py +0 -875
- freesolo_flash_dev-1.2.116/flash/engine/worker/train/core/checkpoint_lifecycle.py +0 -143
- freesolo_flash_dev-1.2.116/flash/engine/worker/train/finalize.py +0 -97
- freesolo_flash_dev-1.2.116/flash/engine/worker/train/opd/batching.py +0 -216
- freesolo_flash_dev-1.2.116/flash/engine/worker/train/opd/bridge.py +0 -983
- freesolo_flash_dev-1.2.116/flash/engine/worker/train/opd/bridge_failures.py +0 -117
- freesolo_flash_dev-1.2.116/flash/engine/worker/train/opd/failures.py +0 -429
- freesolo_flash_dev-1.2.116/flash/engine/worker/train/opd/multiturn_validation.py +0 -80
- freesolo_flash_dev-1.2.116/flash/engine/worker/train/opd/overrides.py +0 -522
- freesolo_flash_dev-1.2.116/flash/engine/worker/train/opd/prompt_preparation.py +0 -213
- freesolo_flash_dev-1.2.116/flash/engine/worker/train/opd/prompts.py +0 -161
- freesolo_flash_dev-1.2.116/flash/engine/worker/train/opd/reporting.py +0 -94
- freesolo_flash_dev-1.2.116/flash/engine/worker/train/opd/scoring.py +0 -84
- freesolo_flash_dev-1.2.116/flash/engine/worker/train/opd/state.py +0 -111
- freesolo_flash_dev-1.2.116/flash/engine/worker/train/rl/checkpoints.py +0 -353
- freesolo_flash_dev-1.2.116/flash/engine/worker/train/rl/config.py +0 -61
- freesolo_flash_dev-1.2.116/flash/engine/worker/train/rl/inputs.py +0 -606
- freesolo_flash_dev-1.2.116/flash/engine/worker/train/rl/multi_turn.py +0 -823
- freesolo_flash_dev-1.2.116/flash/engine/worker/train/rl/scoring.py +0 -73
- freesolo_flash_dev-1.2.116/flash/engine/worker/train/rl/single_turn.py +0 -245
- freesolo_flash_dev-1.2.116/flash/engine/worker/train/rl/verl_config.py +0 -812
- freesolo_flash_dev-1.2.116/flash/engine/worker/train/sft/checkpoints.py +0 -307
- freesolo_flash_dev-1.2.116/flash/engine/worker/train/sft/config.py +0 -294
- freesolo_flash_dev-1.2.116/flash/engine/worker/verl/capabilities.py +0 -929
- freesolo_flash_dev-1.2.116/flash/engine/worker/verl/checkpoints.py +0 -838
- freesolo_flash_dev-1.2.116/flash/engine/worker/verl/diagnostics.py +0 -513
- freesolo_flash_dev-1.2.116/flash/engine/worker/verl/parallelism.py +0 -76
- freesolo_flash_dev-1.2.116/flash/engine/worker_entrypoint.py +0 -22
- freesolo_flash_dev-1.2.116/flash/envs/__init__.py +0 -9
- freesolo_flash_dev-1.2.116/flash/envs/adapter.py +0 -727
- freesolo_flash_dev-1.2.116/flash/envs/base.py +0 -221
- freesolo_flash_dev-1.2.116/flash/envs/cache_security.py +0 -189
- freesolo_flash_dev-1.2.116/flash/envs/evaluations.py +0 -620
- freesolo_flash_dev-1.2.116/flash/envs/identity.py +0 -267
- freesolo_flash_dev-1.2.116/flash/envs/loader.py +0 -985
- freesolo_flash_dev-1.2.116/flash/envs/namespace_listing.py +0 -75
- freesolo_flash_dev-1.2.116/flash/envs/pull.py +0 -223
- freesolo_flash_dev-1.2.116/flash/envs/staged.py +0 -490
- freesolo_flash_dev-1.2.116/flash/providers/__init__.py +0 -87
- freesolo_flash_dev-1.2.116/flash/providers/_lifecycle/bootstrap.py +0 -961
- freesolo_flash_dev-1.2.116/flash/providers/_lifecycle/http.py +0 -206
- freesolo_flash_dev-1.2.116/flash/providers/_lifecycle/instance.py +0 -401
- freesolo_flash_dev-1.2.116/flash/providers/_lifecycle/poll.py +0 -470
- freesolo_flash_dev-1.2.116/flash/providers/_lifecycle/poll_instance.py +0 -719
- freesolo_flash_dev-1.2.116/flash/providers/_lifecycle/provider.py +0 -187
- freesolo_flash_dev-1.2.116/flash/providers/_lifecycle/terminal_artifacts.py +0 -268
- freesolo_flash_dev-1.2.116/flash/providers/_lifecycle/worker.py +0 -366
- freesolo_flash_dev-1.2.116/flash/providers/allocator.py +0 -985
- freesolo_flash_dev-1.2.116/flash/providers/artifacts/hf.py +0 -578
- freesolo_flash_dev-1.2.116/flash/providers/artifacts/preload_runpod.py +0 -524
- freesolo_flash_dev-1.2.116/flash/providers/artifacts/weight_cache.py +0 -862
- freesolo_flash_dev-1.2.116/flash/providers/base.py +0 -959
- freesolo_flash_dev-1.2.116/flash/providers/fit_errors.py +0 -414
- freesolo_flash_dev-1.2.116/flash/providers/lambda_/__init__.py +0 -208
- freesolo_flash_dev-1.2.116/flash/providers/lambda_/api.py +0 -322
- freesolo_flash_dev-1.2.116/flash/providers/lambda_/auth.py +0 -15
- freesolo_flash_dev-1.2.116/flash/providers/lambda_/gpus.py +0 -104
- freesolo_flash_dev-1.2.116/flash/providers/lambda_/jobs/__init__.py +0 -970
- freesolo_flash_dev-1.2.116/flash/providers/lambda_/jobs/builders.py +0 -121
- freesolo_flash_dev-1.2.116/flash/providers/lambda_/preflight.py +0 -15
- freesolo_flash_dev-1.2.116/flash/providers/lambda_/pricing.py +0 -57
- freesolo_flash_dev-1.2.116/flash/providers/preflight.py +0 -214
- freesolo_flash_dev-1.2.116/flash/providers/realized.py +0 -65
- freesolo_flash_dev-1.2.116/flash/providers/runpod/__init__.py +0 -221
- freesolo_flash_dev-1.2.116/flash/providers/runpod/api.py +0 -457
- freesolo_flash_dev-1.2.116/flash/providers/runpod/auth.py +0 -109
- freesolo_flash_dev-1.2.116/flash/providers/runpod/cost.py +0 -52
- freesolo_flash_dev-1.2.116/flash/providers/runpod/gpus.py +0 -83
- freesolo_flash_dev-1.2.116/flash/providers/runpod/job_execution.py +0 -801
- freesolo_flash_dev-1.2.116/flash/providers/runpod/jobs.py +0 -483
- freesolo_flash_dev-1.2.116/flash/providers/runpod/preflight.py +0 -24
- freesolo_flash_dev-1.2.116/flash/providers/runpod/pricing.py +0 -19
- freesolo_flash_dev-1.2.116/flash/providers/runpod/resources.py +0 -268
- freesolo_flash_dev-1.2.116/flash/providers/runpod/serverless/__init__.py +0 -24
- freesolo_flash_dev-1.2.116/flash/providers/runpod/serverless/endpoints.py +0 -960
- freesolo_flash_dev-1.2.116/flash/providers/sharding.py +0 -114
- freesolo_flash_dev-1.2.116/flash/providers/vast/__init__.py +0 -214
- freesolo_flash_dev-1.2.116/flash/providers/vast/api.py +0 -473
- freesolo_flash_dev-1.2.116/flash/providers/vast/auth.py +0 -16
- freesolo_flash_dev-1.2.116/flash/providers/vast/jobs/__init__.py +0 -953
- freesolo_flash_dev-1.2.116/flash/providers/vast/jobs/builders.py +0 -227
- freesolo_flash_dev-1.2.116/flash/providers/vast/preflight.py +0 -17
- freesolo_flash_dev-1.2.116/flash/providers/vast/pricing.py +0 -187
- freesolo_flash_dev-1.2.116/flash/runner/__init__.py +0 -896
- freesolo_flash_dev-1.2.116/flash/runner/artifacts.py +0 -251
- freesolo_flash_dev-1.2.116/flash/runner/attempts.py +0 -146
- freesolo_flash_dev-1.2.116/flash/runner/costs.py +0 -399
- freesolo_flash_dev-1.2.116/flash/runner/deadlines.py +0 -97
- freesolo_flash_dev-1.2.116/flash/runner/preparation.py +0 -612
- freesolo_flash_dev-1.2.116/flash/runner/reconciliation.py +0 -449
- freesolo_flash_dev-1.2.116/flash/runner/results/checkpoints.py +0 -121
- freesolo_flash_dev-1.2.116/flash/runner/results/verified_revisions.py +0 -169
- freesolo_flash_dev-1.2.116/flash/runner/status.py +0 -436
- freesolo_flash_dev-1.2.116/flash/runner/submit.py +0 -350
- freesolo_flash_dev-1.2.116/flash/runner/supervise/attach.py +0 -904
- freesolo_flash_dev-1.2.116/flash/runner/supervise/deploy.py +0 -859
- freesolo_flash_dev-1.2.116/flash/runner/supervise/lifecycle.py +0 -353
- freesolo_flash_dev-1.2.116/flash/runner/supervise/recovery.py +0 -641
- freesolo_flash_dev-1.2.116/flash/runner/supervise/seed_submission.py +0 -901
- freesolo_flash_dev-1.2.116/flash/runner/supervise/transitions.py +0 -328
- freesolo_flash_dev-1.2.116/flash/runner/weight_cache.py +0 -81
- freesolo_flash_dev-1.2.116/flash/runtime_capsule/profiles.py +0 -66
- freesolo_flash_dev-1.2.116/flash/schema/__init__.py +0 -924
- freesolo_flash_dev-1.2.116/flash/schema/fields.py +0 -444
- freesolo_flash_dev-1.2.116/flash/serve/_chat_transport.py +0 -350
- freesolo_flash_dev-1.2.116/flash/serve/adapter_check.py +0 -184
- freesolo_flash_dev-1.2.116/flash/serve/app/http.py +0 -407
- freesolo_flash_dev-1.2.116/flash/serve/app/manifest.py +0 -655
- freesolo_flash_dev-1.2.116/flash/serve/app/materialize.py +0 -998
- freesolo_flash_dev-1.2.116/flash/serve/app/openai.py +0 -246
- freesolo_flash_dev-1.2.116/flash/serve/control/types.py +0 -877
- freesolo_flash_dev-1.2.116/flash/serve/deploy.py +0 -965
- freesolo_flash_dev-1.2.116/flash/serve/errors.py +0 -73
- freesolo_flash_dev-1.2.116/flash/serve/export.py +0 -589
- freesolo_flash_dev-1.2.116/flash/serve/openai_request.py +0 -294
- freesolo_flash_dev-1.2.116/flash/serve/provisioning/__init__.py +0 -35
- freesolo_flash_dev-1.2.116/flash/serve/provisioning/_modal_deployment.py +0 -640
- freesolo_flash_dev-1.2.116/flash/serve/provisioning/_modal_lifecycle.py +0 -112
- freesolo_flash_dev-1.2.116/flash/serve/provisioning/_modal_plan.py +0 -305
- freesolo_flash_dev-1.2.116/flash/serve/provisioning/_modal_probe.py +0 -136
- freesolo_flash_dev-1.2.116/flash/serve/provisioning/_modal_readiness.py +0 -237
- freesolo_flash_dev-1.2.116/flash/serve/provisioning/_modal_resources.py +0 -267
- freesolo_flash_dev-1.2.116/flash/serve/provisioning/_modal_sdk.py +0 -848
- freesolo_flash_dev-1.2.116/flash/serve/provisioning/_modal_teardown.py +0 -179
- freesolo_flash_dev-1.2.116/flash/serve/provisioning/_runpod_lifecycle.py +0 -84
- freesolo_flash_dev-1.2.116/flash/serve/provisioning/_runpod_plan.py +0 -222
- freesolo_flash_dev-1.2.116/flash/serve/provisioning/_runpod_probe.py +0 -74
- freesolo_flash_dev-1.2.116/flash/serve/provisioning/_runpod_readiness.py +0 -678
- freesolo_flash_dev-1.2.116/flash/serve/provisioning/_runpod_resources.py +0 -317
- freesolo_flash_dev-1.2.116/flash/serve/provisioning/modal.py +0 -624
- freesolo_flash_dev-1.2.116/flash/serve/provisioning/runpod.py +0 -993
- freesolo_flash_dev-1.2.116/flash/serve/request_validation.py +0 -641
- freesolo_flash_dev-1.2.116/flash/serve/resolve.py +0 -399
- freesolo_flash_dev-1.2.116/flash/serve/responses.py +0 -107
- freesolo_flash_dev-1.2.116/flash/serve/runtime/__init__.py +0 -55
- freesolo_flash_dev-1.2.116/flash/serve/runtime/adapters.py +0 -276
- freesolo_flash_dev-1.2.116/flash/serve/runtime/engine.py +0 -617
- freesolo_flash_dev-1.2.116/flash/serve/runtime/multimodal.py +0 -77
- freesolo_flash_dev-1.2.116/flash/serve/runtime/structured_outputs.py +0 -18
- freesolo_flash_dev-1.2.116/flash/serve/runtime/types.py +0 -493
- freesolo_flash_dev-1.2.116/flash/serve/streaming.py +0 -260
- freesolo_flash_dev-1.2.116/flash/serve/thinking.py +0 -226
- freesolo_flash_dev-1.2.116/flash/serve/urls.py +0 -148
- freesolo_flash_dev-1.2.116/flash/server/__main__.py +0 -73
- freesolo_flash_dev-1.2.116/flash/server/app.py +0 -431
- freesolo_flash_dev-1.2.116/flash/server/billing/retry.py +0 -126
- freesolo_flash_dev-1.2.116/flash/server/domain/checkpoints.py +0 -111
- freesolo_flash_dev-1.2.116/flash/server/domain/environment_registry.py +0 -246
- freesolo_flash_dev-1.2.116/flash/server/domain/envs.py +0 -796
- freesolo_flash_dev-1.2.116/flash/server/domain/reconcile.py +0 -144
- freesolo_flash_dev-1.2.116/flash/server/domain/repo_cleanup.py +0 -385
- freesolo_flash_dev-1.2.116/flash/server/domain/run_registry.py +0 -181
- freesolo_flash_dev-1.2.116/flash/server/domain/teacher_broker.py +0 -898
- freesolo_flash_dev-1.2.116/flash/server/domain/teacher_requests.py +0 -212
- freesolo_flash_dev-1.2.116/flash/server/platform/deps.py +0 -251
- freesolo_flash_dev-1.2.116/flash/server/platform/internal_client.py +0 -194
- freesolo_flash_dev-1.2.116/flash/server/platform/locks.py +0 -79
- freesolo_flash_dev-1.2.116/flash/server/platform/runtime.py +0 -801
- freesolo_flash_dev-1.2.116/flash/server/routes/envs.py +0 -205
- freesolo_flash_dev-1.2.116/flash/server/routes/runs.py +0 -552
- freesolo_flash_dev-1.2.116/flash/server/routes/serving.py +0 -902
- freesolo_flash_dev-1.2.116/flash/server/routes/serving_completion.py +0 -473
- freesolo_flash_dev-1.2.116/flash/server/routes/serving_revisions.py +0 -349
- freesolo_flash_dev-1.2.116/flash/server/routes/serving_smoke.py +0 -672
- freesolo_flash_dev-1.2.116/flash/server/routes/teacher.py +0 -139
- freesolo_flash_dev-1.2.116/flash/serving/README.md +0 -323
- freesolo_flash_dev-1.2.116/flash/serving/modal_app.py +0 -780
- freesolo_flash_dev-1.2.116/flash/serving/src/adapter_routes.py +0 -265
- freesolo_flash_dev-1.2.116/flash/serving/src/context.py +0 -225
- freesolo_flash_dev-1.2.116/flash/serving/src/engine_boot.py +0 -226
- freesolo_flash_dev-1.2.116/flash/serving/src/engine_errors.py +0 -105
- freesolo_flash_dev-1.2.116/flash/serving/src/engine_support.py +0 -242
- freesolo_flash_dev-1.2.116/flash/serving/src/inference_routes.py +0 -333
- freesolo_flash_dev-1.2.116/flash/serving/src/lookup.py +0 -118
- freesolo_flash_dev-1.2.116/flash/serving/src/lora_engine.py +0 -976
- freesolo_flash_dev-1.2.116/flash/serving/src/lora_entries.py +0 -50
- freesolo_flash_dev-1.2.116/flash/serving/src/model_config.py +0 -202
- freesolo_flash_dev-1.2.116/flash/serving/src/multimodal.py +0 -79
- freesolo_flash_dev-1.2.116/flash/serving/src/persistence.py +0 -310
- freesolo_flash_dev-1.2.116/flash/serving/src/registration.py +0 -197
- freesolo_flash_dev-1.2.116/flash/serving/src/registry.py +0 -176
- freesolo_flash_dev-1.2.116/flash/serving/src/responses.py +0 -230
- freesolo_flash_dev-1.2.116/flash/serving/src/router.py +0 -141
- freesolo_flash_dev-1.2.116/flash/serving/src/routing.py +0 -145
- freesolo_flash_dev-1.2.116/flash/serving/src/schemas.py +0 -482
- freesolo_flash_dev-1.2.116/flash/serving/src/serving_io.py +0 -279
- freesolo_flash_dev-1.2.116/flash/serving/src/streaming.py +0 -476
- freesolo_flash_dev-1.2.116/flash/serving/src/structured_outputs.py +0 -25
- freesolo_flash_dev-1.2.116/flash/serving/src/supabase_rest.py +0 -50
- freesolo_flash_dev-1.2.116/flash/serving/src/undeploy.py +0 -277
- freesolo_flash_dev-1.2.116/flash/serving/src/usage.py +0 -215
- freesolo_flash_dev-1.2.116/flash/serving/src/usage_facts.py +0 -54
- freesolo_flash_dev-1.2.116/flash/serving/src/usage_outbox.py +0 -986
- freesolo_flash_dev-1.2.116/flash/source_snapshot.py +0 -387
- freesolo_flash_dev-1.2.116/pyproject.toml +0 -324
- freesolo_flash_dev-1.2.116/scripts/check_verl_pin_exists.py +0 -80
- freesolo_flash_dev-1.2.116/tests/_helpers/managed_chat.py +0 -44
- freesolo_flash_dev-1.2.116/tests/_helpers/profile.py +0 -196
- freesolo_flash_dev-1.2.116/tests/_helpers/runner.py +0 -64
- freesolo_flash_dev-1.2.116/tests/conftest.py +0 -499
- freesolo_flash_dev-1.2.116/tests/live/test_lambda_live.py +0 -51
- freesolo_flash_dev-1.2.116/tests/live/test_runpod_live.py +0 -36
- freesolo_flash_dev-1.2.116/tests/live/test_vast_live.py +0 -56
- freesolo_flash_dev-1.2.116/tests/serving/conftest.py +0 -230
- freesolo_flash_dev-1.2.116/tests/serving/test_base_model_serving.py +0 -308
- freesolo_flash_dev-1.2.116/tests/serving/test_chat_auth.py +0 -264
- freesolo_flash_dev-1.2.116/tests/serving/test_chat_authorizer.py +0 -540
- freesolo_flash_dev-1.2.116/tests/serving/test_checkpoint_model_validation.py +0 -218
- freesolo_flash_dev-1.2.116/tests/serving/test_engine_error_status.py +0 -225
- freesolo_flash_dev-1.2.116/tests/serving/test_fp8_config.py +0 -169
- freesolo_flash_dev-1.2.116/tests/serving/test_immutable_engine.py +0 -330
- freesolo_flash_dev-1.2.116/tests/serving/test_immutable_revisions.py +0 -1497
- freesolo_flash_dev-1.2.116/tests/serving/test_immutable_schemas.py +0 -147
- freesolo_flash_dev-1.2.116/tests/serving/test_modal_deploy_identity.py +0 -112
- freesolo_flash_dev-1.2.116/tests/serving/test_modal_image_paths.py +0 -217
- freesolo_flash_dev-1.2.116/tests/serving/test_model_config.py +0 -168
- freesolo_flash_dev-1.2.116/tests/serving/test_multimodal.py +0 -1155
- freesolo_flash_dev-1.2.116/tests/serving/test_per_model_gpu.py +0 -835
- freesolo_flash_dev-1.2.116/tests/serving/test_persistence.py +0 -268
- freesolo_flash_dev-1.2.116/tests/serving/test_pre_first_disconnect.py +0 -472
- freesolo_flash_dev-1.2.116/tests/serving/test_prequant_config.py +0 -42
- freesolo_flash_dev-1.2.116/tests/serving/test_registry.py +0 -308
- freesolo_flash_dev-1.2.116/tests/serving/test_registry_coverage.py +0 -65
- freesolo_flash_dev-1.2.116/tests/serving/test_request_body_limit.py +0 -183
- freesolo_flash_dev-1.2.116/tests/serving/test_router.py +0 -1550
- freesolo_flash_dev-1.2.116/tests/serving/test_router_coverage.py +0 -253
- freesolo_flash_dev-1.2.116/tests/serving/test_router_edge_coverage.py +0 -303
- freesolo_flash_dev-1.2.116/tests/serving/test_schemas_coverage.py +0 -188
- freesolo_flash_dev-1.2.116/tests/serving/test_serve_reasoning_split.py +0 -276
- freesolo_flash_dev-1.2.116/tests/serving/test_serve_structured_outputs.py +0 -793
- freesolo_flash_dev-1.2.116/tests/serving/test_serve_thinking.py +0 -172
- freesolo_flash_dev-1.2.116/tests/serving/test_settings.py +0 -93
- freesolo_flash_dev-1.2.116/tests/serving/test_structured_outputs.py +0 -397
- freesolo_flash_dev-1.2.116/tests/serving/test_structured_outputs_coverage.py +0 -22
- freesolo_flash_dev-1.2.116/tests/serving/test_supabase_rest_coverage.py +0 -62
- freesolo_flash_dev-1.2.116/tests/serving/test_usage_outbox.py +0 -1934
- freesolo_flash_dev-1.2.116/tests/serving/test_usage_reporter.py +0 -952
- freesolo_flash_dev-1.2.116/tests/serving_conformance/conftest.py +0 -162
- freesolo_flash_dev-1.2.116/tests/serving_conformance/test_contract.py +0 -786
- freesolo_flash_dev-1.2.116/tests/test_adapter_shard_completeness.py +0 -376
- freesolo_flash_dev-1.2.116/tests/test_agent_flash_cli_contract.py +0 -297
- freesolo_flash_dev-1.2.116/tests/test_allocator.py +0 -2437
- freesolo_flash_dev-1.2.116/tests/test_backend_common.py +0 -4904
- freesolo_flash_dev-1.2.116/tests/test_bake_kernel_cache.py +0 -165
- freesolo_flash_dev-1.2.116/tests/test_billing_retry.py +0 -722
- freesolo_flash_dev-1.2.116/tests/test_cancel_remote.py +0 -2184
- freesolo_flash_dev-1.2.116/tests/test_catalog_consistency.py +0 -217
- freesolo_flash_dev-1.2.116/tests/test_catalog_only_models.py +0 -88
- freesolo_flash_dev-1.2.116/tests/test_charge_pricing.py +0 -771
- freesolo_flash_dev-1.2.116/tests/test_chat_foundations.py +0 -371
- freesolo_flash_dev-1.2.116/tests/test_checkpoint_lifecycle.py +0 -132
- freesolo_flash_dev-1.2.116/tests/test_checkpoints.py +0 -686
- freesolo_flash_dev-1.2.116/tests/test_cli_commands.py +0 -5442
- freesolo_flash_dev-1.2.116/tests/test_cli_commands_coverage.py +0 -566
- freesolo_flash_dev-1.2.116/tests/test_cli_credential_shadowing.py +0 -160
- freesolo_flash_dev-1.2.116/tests/test_cli_errors.py +0 -285
- freesolo_flash_dev-1.2.116/tests/test_cli_estimate.py +0 -1233
- freesolo_flash_dev-1.2.116/tests/test_cli_gpus_flag.py +0 -350
- freesolo_flash_dev-1.2.116/tests/test_cli_help.py +0 -206
- freesolo_flash_dev-1.2.116/tests/test_cli_main_coverage.py +0 -19
- freesolo_flash_dev-1.2.116/tests/test_cli_render_coverage.py +0 -643
- freesolo_flash_dev-1.2.116/tests/test_cli_render_theme.py +0 -1774
- freesolo_flash_dev-1.2.116/tests/test_cli_serve_deploy.py +0 -1028
- freesolo_flash_dev-1.2.116/tests/test_cli_serve_status.py +0 -367
- freesolo_flash_dev-1.2.116/tests/test_cli_serve_undeploy.py +0 -476
- freesolo_flash_dev-1.2.116/tests/test_cli_traces.py +0 -709
- freesolo_flash_dev-1.2.116/tests/test_cli_wandb_warning.py +0 -122
- freesolo_flash_dev-1.2.116/tests/test_client.py +0 -1411
- freesolo_flash_dev-1.2.116/tests/test_client_import_purity.py +0 -197
- freesolo_flash_dev-1.2.116/tests/test_client_server_integration.py +0 -348
- freesolo_flash_dev-1.2.116/tests/test_config_env_vars.py +0 -407
- freesolo_flash_dev-1.2.116/tests/test_console_upload.py +0 -145
- freesolo_flash_dev-1.2.116/tests/test_controlled_experiment_repairs.py +0 -503
- freesolo_flash_dev-1.2.116/tests/test_cost_analytical.py +0 -467
- freesolo_flash_dev-1.2.116/tests/test_cost_equation.py +0 -26
- freesolo_flash_dev-1.2.116/tests/test_cost_estimate.py +0 -1021
- freesolo_flash_dev-1.2.116/tests/test_cost_hardware.py +0 -685
- freesolo_flash_dev-1.2.116/tests/test_cost_models.py +0 -219
- freesolo_flash_dev-1.2.116/tests/test_deploy_alias_move_warning.py +0 -554
- freesolo_flash_dev-1.2.116/tests/test_deploy_latency.py +0 -424
- freesolo_flash_dev-1.2.116/tests/test_dev_channel.py +0 -702
- freesolo_flash_dev-1.2.116/tests/test_disk_gb.py +0 -210
- freesolo_flash_dev-1.2.116/tests/test_endpoint_name.py +0 -45
- freesolo_flash_dev-1.2.116/tests/test_env_cache_evict.py +0 -515
- freesolo_flash_dev-1.2.116/tests/test_env_delete.py +0 -148
- freesolo_flash_dev-1.2.116/tests/test_env_download.py +0 -109
- freesolo_flash_dev-1.2.116/tests/test_env_download_api.py +0 -95
- freesolo_flash_dev-1.2.116/tests/test_env_evaluations.py +0 -4227
- freesolo_flash_dev-1.2.116/tests/test_env_list_api.py +0 -117
- freesolo_flash_dev-1.2.116/tests/test_env_list_cli.py +0 -102
- freesolo_flash_dev-1.2.116/tests/test_env_list_hub.py +0 -213
- freesolo_flash_dev-1.2.116/tests/test_env_no_install.py +0 -85
- freesolo_flash_dev-1.2.116/tests/test_env_publish.py +0 -1962
- freesolo_flash_dev-1.2.116/tests/test_env_pull.py +0 -1255
- freesolo_flash_dev-1.2.116/tests/test_env_pull_coverage.py +0 -167
- freesolo_flash_dev-1.2.116/tests/test_env_pull_loader_coverage.py +0 -332
- freesolo_flash_dev-1.2.116/tests/test_env_pull_managed_control_plane.py +0 -174
- freesolo_flash_dev-1.2.116/tests/test_env_push.py +0 -1733
- freesolo_flash_dev-1.2.116/tests/test_env_rate_limit_resolve.py +0 -332
- freesolo_flash_dev-1.2.116/tests/test_env_ref_pinning.py +0 -73
- freesolo_flash_dev-1.2.116/tests/test_env_test.py +0 -3436
- freesolo_flash_dev-1.2.116/tests/test_envs_coverage.py +0 -117
- freesolo_flash_dev-1.2.116/tests/test_export.py +0 -1579
- freesolo_flash_dev-1.2.116/tests/test_flash_mvp.py +0 -131
- freesolo_flash_dev-1.2.116/tests/test_flash_worker.py +0 -1527
- freesolo_flash_dev-1.2.116/tests/test_fused_expert_warmstart.py +0 -1893
- freesolo_flash_dev-1.2.116/tests/test_github_urlopen_retry.py +0 -365
- freesolo_flash_dev-1.2.116/tests/test_gpu_type_single_field.py +0 -195
- freesolo_flash_dev-1.2.116/tests/test_gpus.py +0 -537
- freesolo_flash_dev-1.2.116/tests/test_grpo_params.py +0 -734
- freesolo_flash_dev-1.2.116/tests/test_grpo_resident_sizing.py +0 -193
- freesolo_flash_dev-1.2.116/tests/test_grpo_reward_batching.py +0 -324
- freesolo_flash_dev-1.2.116/tests/test_grpo_rollout_contract.py +0 -486
- freesolo_flash_dev-1.2.116/tests/test_grpo_rollout_identity.py +0 -824
- freesolo_flash_dev-1.2.116/tests/test_idle_endpoint_reaper.py +0 -509
- freesolo_flash_dev-1.2.116/tests/test_image_environment_capability.py +0 -92
- freesolo_flash_dev-1.2.116/tests/test_instance_bootstrap_coverage.py +0 -2635
- freesolo_flash_dev-1.2.116/tests/test_jobs.py +0 -7246
- freesolo_flash_dev-1.2.116/tests/test_kernel_fingerprint.py +0 -366
- freesolo_flash_dev-1.2.116/tests/test_lambda_api_coverage.py +0 -510
- freesolo_flash_dev-1.2.116/tests/test_lambda_runner.py +0 -4164
- freesolo_flash_dev-1.2.116/tests/test_login_perms.py +0 -346
- freesolo_flash_dev-1.2.116/tests/test_lora_rank_preflight.py +0 -705
- freesolo_flash_dev-1.2.116/tests/test_lora_targeting.py +0 -780
- freesolo_flash_dev-1.2.116/tests/test_lora_targeting_pinned_verl.py +0 -240
- freesolo_flash_dev-1.2.116/tests/test_managed_hf_repo.py +0 -102
- freesolo_flash_dev-1.2.116/tests/test_multi_gpu_gate.py +0 -1631
- freesolo_flash_dev-1.2.116/tests/test_multimodal_training.py +0 -1203
- freesolo_flash_dev-1.2.116/tests/test_named_reward_metrics.py +0 -93
- freesolo_flash_dev-1.2.116/tests/test_oom_escalate_gpu.py +0 -965
- freesolo_flash_dev-1.2.116/tests/test_opd.py +0 -1892
- freesolo_flash_dev-1.2.116/tests/test_opd_multiturn_eos_boundary.py +0 -75
- freesolo_flash_dev-1.2.116/tests/test_opd_multiturn_failure_exit.py +0 -449
- freesolo_flash_dev-1.2.116/tests/test_opd_resume_safety.py +0 -1530
- freesolo_flash_dev-1.2.116/tests/test_opd_train.py +0 -9689
- freesolo_flash_dev-1.2.116/tests/test_orchestrator_flash.py +0 -484
- freesolo_flash_dev-1.2.116/tests/test_packing_coverage.py +0 -179
- freesolo_flash_dev-1.2.116/tests/test_parasail_teacher.py +0 -1440
- freesolo_flash_dev-1.2.116/tests/test_persisted_spec_envelope.py +0 -93
- freesolo_flash_dev-1.2.116/tests/test_poll_helpers.py +0 -262
- freesolo_flash_dev-1.2.116/tests/test_preflight.py +0 -290
- freesolo_flash_dev-1.2.116/tests/test_projects.py +0 -649
- freesolo_flash_dev-1.2.116/tests/test_prompt_budget.py +0 -397
- freesolo_flash_dev-1.2.116/tests/test_provider_preflight_coverage.py +0 -59
- freesolo_flash_dev-1.2.116/tests/test_provider_routing.py +0 -2851
- freesolo_flash_dev-1.2.116/tests/test_provider_teardown_robustness.py +0 -152
- freesolo_flash_dev-1.2.116/tests/test_providers_symmetry.py +0 -447
- freesolo_flash_dev-1.2.116/tests/test_realized_cost.py +0 -443
- freesolo_flash_dev-1.2.116/tests/test_repo_cleanup.py +0 -621
- freesolo_flash_dev-1.2.116/tests/test_resolve_params_b.py +0 -75
- freesolo_flash_dev-1.2.116/tests/test_resume_on_retry.py +0 -1393
- freesolo_flash_dev-1.2.116/tests/test_rl_train.py +0 -9560
- freesolo_flash_dev-1.2.116/tests/test_rollout_samples.py +0 -364
- freesolo_flash_dev-1.2.116/tests/test_runmgmt.py +0 -3239
- freesolo_flash_dev-1.2.116/tests/test_runpod_api_delete.py +0 -155
- freesolo_flash_dev-1.2.116/tests/test_runpod_key_fingerprint.py +0 -400
- freesolo_flash_dev-1.2.116/tests/test_runpod_key_waterfall.py +0 -391
- freesolo_flash_dev-1.2.116/tests/test_runtime_capsule.py +0 -434
- freesolo_flash_dev-1.2.116/tests/test_serve.py +0 -1548
- freesolo_flash_dev-1.2.116/tests/test_serve_app_bootstrap_http.py +0 -1239
- freesolo_flash_dev-1.2.116/tests/test_serve_app_packaging.py +0 -227
- freesolo_flash_dev-1.2.116/tests/test_serve_chat_transport.py +0 -769
- freesolo_flash_dev-1.2.116/tests/test_serve_modal_sdk.py +0 -1047
- freesolo_flash_dev-1.2.116/tests/test_serve_modal_sdk_deadlines.py +0 -126
- freesolo_flash_dev-1.2.116/tests/test_serve_modal_teardown_identity.py +0 -105
- freesolo_flash_dev-1.2.116/tests/test_serve_profiles.py +0 -359
- freesolo_flash_dev-1.2.116/tests/test_serve_provisioning_common.py +0 -404
- freesolo_flash_dev-1.2.116/tests/test_serve_provisioning_modal.py +0 -2929
- freesolo_flash_dev-1.2.116/tests/test_serve_provisioning_runpod.py +0 -4630
- freesolo_flash_dev-1.2.116/tests/test_serve_reasoning_content.py +0 -629
- freesolo_flash_dev-1.2.116/tests/test_serve_resolve_provenance.py +0 -493
- freesolo_flash_dev-1.2.116/tests/test_serve_runtime_engine.py +0 -864
- freesolo_flash_dev-1.2.116/tests/test_serve_runtime_package.py +0 -101
- freesolo_flash_dev-1.2.116/tests/test_server_api.py +0 -10082
- freesolo_flash_dev-1.2.116/tests/test_server_app_coverage.py +0 -267
- freesolo_flash_dev-1.2.116/tests/test_server_billing.py +0 -884
- freesolo_flash_dev-1.2.116/tests/test_server_checkpoints_coverage.py +0 -77
- freesolo_flash_dev-1.2.116/tests/test_server_db.py +0 -487
- freesolo_flash_dev-1.2.116/tests/test_server_envs_coverage.py +0 -2378
- freesolo_flash_dev-1.2.116/tests/test_server_managed_chat_requests.py +0 -794
- freesolo_flash_dev-1.2.116/tests/test_server_managed_chat_revisions.py +0 -696
- freesolo_flash_dev-1.2.116/tests/test_server_serving_resources.py +0 -217
- freesolo_flash_dev-1.2.116/tests/test_server_standalone.py +0 -1101
- freesolo_flash_dev-1.2.116/tests/test_serving_conformance_gate.py +0 -91
- freesolo_flash_dev-1.2.116/tests/test_serving_contract.py +0 -1019
- freesolo_flash_dev-1.2.116/tests/test_serving_schema_coverage.py +0 -201
- freesolo_flash_dev-1.2.116/tests/test_sft_chunked_nll.py +0 -37
- freesolo_flash_dev-1.2.116/tests/test_sft_max_context.py +0 -95
- freesolo_flash_dev-1.2.116/tests/test_sft_train.py +0 -5302
- freesolo_flash_dev-1.2.116/tests/test_sft_workload.py +0 -1503
- freesolo_flash_dev-1.2.116/tests/test_source_attestation_flow.py +0 -189
- freesolo_flash_dev-1.2.116/tests/test_source_snapshot.py +0 -201
- freesolo_flash_dev-1.2.116/tests/test_spec_and_validation.py +0 -2439
- freesolo_flash_dev-1.2.116/tests/test_spec_contract_bytes.py +0 -346
- freesolo_flash_dev-1.2.116/tests/test_staged_environment.py +0 -916
- freesolo_flash_dev-1.2.116/tests/test_step_metrics.py +0 -385
- freesolo_flash_dev-1.2.116/tests/test_step_timing.py +0 -404
- freesolo_flash_dev-1.2.116/tests/test_teacher_broker.py +0 -2354
- freesolo_flash_dev-1.2.116/tests/test_terminal_artifacts.py +0 -195
- freesolo_flash_dev-1.2.116/tests/test_training_controls.py +0 -600
- freesolo_flash_dev-1.2.116/tests/test_vast_api.py +0 -773
- freesolo_flash_dev-1.2.116/tests/test_vast_api_coverage.py +0 -307
- freesolo_flash_dev-1.2.116/tests/test_vast_offers.py +0 -416
- freesolo_flash_dev-1.2.116/tests/test_vast_provider_coverage.py +0 -131
- freesolo_flash_dev-1.2.116/tests/test_vast_runner.py +0 -2882
- freesolo_flash_dev-1.2.116/tests/test_verified_revisions.py +0 -233
- freesolo_flash_dev-1.2.116/tests/test_verifiers.py +0 -2928
- freesolo_flash_dev-1.2.116/tests/test_verl_checkpoint_export.py +0 -598
- freesolo_flash_dev-1.2.116/tests/test_verl_child_plugins.py +0 -796
- freesolo_flash_dev-1.2.116/tests/test_verl_silence_watchdog.py +0 -223
- freesolo_flash_dev-1.2.116/tests/test_vram_architecture.py +0 -231
- freesolo_flash_dev-1.2.116/tests/test_wandb_link.py +0 -393
- freesolo_flash_dev-1.2.116/tests/test_wandb_naming.py +0 -167
- freesolo_flash_dev-1.2.116/tests/test_warmstart_adapter_download.py +0 -321
- freesolo_flash_dev-1.2.116/tests/test_warmstart_cross_repo.py +0 -1612
- freesolo_flash_dev-1.2.116/tests/test_warmstart_error_attribution.py +0 -60
- freesolo_flash_dev-1.2.116/tests/test_warmstart_image_adapters.py +0 -222
- freesolo_flash_dev-1.2.116/tests/test_weight_cache.py +0 -4907
- freesolo_flash_dev-1.2.116/tests/test_worker_dryrun.py +0 -171
- freesolo_flash_dev-1.2.116/tests/test_worker_hardexit.py +0 -298
- freesolo_flash_dev-1.2.116/tests/test_worker_image.py +0 -42
- freesolo_flash_dev-1.2.116/tests/test_worker_init_heartbeat.py +0 -1705
- freesolo_flash_dev-1.2.116/tests/test_worker_stack.py +0 -2222
- freesolo_flash_dev-1.2.116/tests/test_worker_thinking.py +0 -248
- freesolo_flash_dev-1.2.116/tests/test_zero2_sharding_gate.py +0 -266
- freesolo_flash_dev-1.2.116/uv.lock +0 -5817
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/.dockerignore +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/.github/CODEOWNERS +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/.github/dependabot.yml +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/.github/workflows/dev-kernel-cache.yml +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/.github/workflows/main-source-guard.yml +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/.github/workflows/notify-tests-repo.yml +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/.github/workflows/production-kernel-cache-ready.yml +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/.github/workflows/publish-dev.yml +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/.github/workflows/publish.yml +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/.github/workflows/version-parity.yml +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/.gitignore +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/CODE_OF_CONDUCT.md +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/Dockerfile +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/Dockerfile.serve +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/LICENSE +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/NOTICE +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/README.md +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/SECURITY.md +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/SELF_HOSTING.md +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/build/kernel_cache/.gitignore +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/build/kernel_cache/.keep +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/deploy/infisical/README.md +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/deploy/infisical/entrypoint.sh +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/docker/Dockerfile.kernelcache +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/docker/Dockerfile.kernelcache.relayer +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/docker/bake_kernel_cache.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/docker/bake_pod_entry.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/docker/extract_cudart_fix.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/_internal/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/_internal/fileio.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/_internal/logging.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/_internal/openai_sse.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/_internal/paths.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/adapters/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/adapters/artifacts.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/adapters/fused_experts.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/adapters/targets.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/cli/commands/env/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/cli/ui → freesolo_flash_dev-1.2.118/flash/cli/commands/env/ops}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/cli/commands/env → freesolo_flash_dev-1.2.118/flash/cli/commands/env/ops}/setup_wandb.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/content → freesolo_flash_dev-1.2.118/flash/cli/commands/env/testing}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/cli/commands/env → freesolo_flash_dev-1.2.118/flash/cli/commands/env/testing}/eval_args.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/core → freesolo_flash_dev-1.2.118/flash/cli/commands/ops}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/cli/commands → freesolo_flash_dev-1.2.118/flash/cli/commands/ops}/prompt_budget.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine/plan → freesolo_flash_dev-1.2.118/flash/cli/commands/serving}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine/profiling → freesolo_flash_dev-1.2.118/flash/cli/parsing}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/cli → freesolo_flash_dev-1.2.118/flash/cli/parsing}/errors.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/cli/scaffold/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine/result → freesolo_flash_dev-1.2.118/flash/cli/ui}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/cli/ui/env_panels.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/cli/ui/tty.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/client/config.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/client/runtime_secrets.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/client/shapes.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/client/specs.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/client/streaming.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine/worker/entry → freesolo_flash_dev-1.2.118/flash/content}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/content/image_descriptors.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/content/reasoning_normalization.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/content/structured_outputs.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/content/thinking.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine/worker/io → freesolo_flash_dev-1.2.118/flash/core}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/core/catalog.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/core/grpo.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/cost/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/cost/currency.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/cost/spec.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine/worker/model → freesolo_flash_dev-1.2.118/flash/engine/plan}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/plan/kv_sizing.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/plan/prompt_budget.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/plan/recipe.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine/worker/runtime → freesolo_flash_dev-1.2.118/flash/engine/profiling}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/profiling/reasoning_render.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/profiling/sft_image_rows.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/profiling/workload_profile.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine/worker/teacher → freesolo_flash_dev-1.2.118/flash/engine/result}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/result/accounting.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/result/rollout_samples.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine/worker/train → freesolo_flash_dev-1.2.118/flash/engine/support}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine → freesolo_flash_dev-1.2.118/flash/engine/support}/huggingface.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine → freesolo_flash_dev-1.2.118/flash/engine/support}/verl_policy.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine/worker/train/core → freesolo_flash_dev-1.2.118/flash/engine/worker/entry}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine/worker/train/opd → freesolo_flash_dev-1.2.118/flash/engine/worker/io}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine/worker/train/opd/child → freesolo_flash_dev-1.2.118/flash/engine/worker/model}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/model/chatml_mask.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/model/lora.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/model/packing.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/perf/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/perf/diagnostics.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/perf/liger.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/perf/memory.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine/worker/train/rl → freesolo_flash_dev-1.2.118/flash/engine/worker/runtime}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/runtime/kernel_warmup.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/runtime/rng.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine/worker/train/rl/child → freesolo_flash_dev-1.2.118/flash/engine/worker/teacher}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/teacher/encoding.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/teacher/tokenizer_align.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine/worker/train/sft → freesolo_flash_dev-1.2.118/flash/engine/worker/train}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/envs/package → freesolo_flash_dev-1.2.118/flash/engine/worker/train/core}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/train/core/child/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/train/core/child/glue.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/train/core/child/runtime.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/providers/_lifecycle → freesolo_flash_dev-1.2.118/flash/engine/worker/train/core/lifecycle}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine/worker/train/core → freesolo_flash_dev-1.2.118/flash/engine/worker/train/core/lifecycle}/step_timing.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/providers/artifacts → freesolo_flash_dev-1.2.118/flash/engine/worker/train/entry}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine/worker → freesolo_flash_dev-1.2.118/flash/engine/worker/train/entry}/backend_common.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine/worker/train/core → freesolo_flash_dev-1.2.118/flash/engine/worker/train/entry}/prompt_rows.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine/worker → freesolo_flash_dev-1.2.118/flash/engine/worker/train/entry}/score_batcher.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/runner/results → freesolo_flash_dev-1.2.118/flash/engine/worker/train/opd}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/runner/supervise → freesolo_flash_dev-1.2.118/flash/engine/worker/train/opd/bridging}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/server/billing → freesolo_flash_dev-1.2.118/flash/engine/worker/train/opd/child}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/train/opd/child/bridge.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/train/opd/child/entry.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/train/opd/child/multiturn.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/train/opd/child/plugin.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/train/opd/child/replay_guard.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/train/opd/child/runtime.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/train/opd/child/structured.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/server/domain → freesolo_flash_dev-1.2.118/flash/engine/worker/train/opd/multiturn}/__init__.py +0 -0
- /freesolo_flash_dev-1.2.116/flash/engine/worker/train/opd/multiturn_media.py → /freesolo_flash_dev-1.2.118/flash/engine/worker/train/opd/multiturn/media.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/server/platform → freesolo_flash_dev-1.2.118/flash/engine/worker/train/opd/orchestration}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine/worker/train/opd → freesolo_flash_dev-1.2.118/flash/engine/worker/train/opd/orchestration}/gkd.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine/worker/train/opd → freesolo_flash_dev-1.2.118/flash/engine/worker/train/opd/orchestration}/validation.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/serving → freesolo_flash_dev-1.2.118/flash/engine/worker/train/rl}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/teacher → freesolo_flash_dev-1.2.118/flash/engine/worker/train/rl/child}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/train/rl/child/entry.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/train/rl/child/multiturn.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/train/rl/child/patches.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/train/rl/child/plugin.py +0 -0
- {freesolo_flash_dev-1.2.116/tests/live → freesolo_flash_dev-1.2.118/flash/engine/worker/train/rl/launch}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116/tests/serving_conformance → freesolo_flash_dev-1.2.118/flash/engine/worker/train/rl/rollout}/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine/worker/train/rl → freesolo_flash_dev-1.2.118/flash/engine/worker/train/rl/rollout}/identity.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/engine/worker/train/rl → freesolo_flash_dev-1.2.118/flash/engine/worker/train/rl/rollout}/reward_module.py +0 -0
- /freesolo_flash_dev-1.2.116/flash/py.typed → /freesolo_flash_dev-1.2.118/flash/engine/worker/train/sft/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/train/sft/child/entry.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/train/sft/child/plugin.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/verl/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/verl/child_io.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/verl/parent_work.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/engine/worker/verl/process_census.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/envs → freesolo_flash_dev-1.2.118/flash/envs/meta}/dataset_selection.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/envs/package/direct_tokens.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/envs/package/limits.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/envs/package/unpack.py +0 -0
- /freesolo_flash_dev-1.2.116/flash/providers/_lifecycle/bootstrap_console.py → /freesolo_flash_dev-1.2.118/flash/providers/_lifecycle/bootstrapping/console.py +0 -0
- /freesolo_flash_dev-1.2.116/flash/providers/_lifecycle/bootstrap_pip.py → /freesolo_flash_dev-1.2.118/flash/providers/_lifecycle/bootstrapping/pip.py +0 -0
- /freesolo_flash_dev-1.2.116/flash/providers/_lifecycle/bootstrap_secrets.py → /freesolo_flash_dev-1.2.118/flash/providers/_lifecycle/bootstrapping/secrets.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/providers/_lifecycle/host/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/providers/_lifecycle/host/deadline_sleep.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/providers/_lifecycle/host/failmark.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/providers/_lifecycle/host/hostlog.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/providers/_lifecycle → freesolo_flash_dev-1.2.118/flash/providers/_lifecycle/net}/auth.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/providers/_lifecycle → freesolo_flash_dev-1.2.118/flash/providers/_lifecycle/net}/deadline.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/providers/lambda_/jobs/reap.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/runner/supervise/retry_decision.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/runtime_capsule/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/runtime_capsule/build.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/runtime_capsule/manifest.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/serve/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/serve/app/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/serve/app/__main__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/serve/app/bootstrap.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/serve/app/launch.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/serve/app/progress.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/serve → freesolo_flash_dev-1.2.118/flash/serve/contract}/profiles.py +0 -0
- /freesolo_flash_dev-1.2.116/flash/serve/contract.py → /freesolo_flash_dev-1.2.118/flash/serve/contract/protocol.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/serve → freesolo_flash_dev-1.2.118/flash/serve/contract}/provenance.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/serve/control/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/serve/control/_canonical.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/serve/control/_serialization.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/serve/control/_urls.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/serve/control/credentials.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/serve/control/planning.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/serve → freesolo_flash_dev-1.2.118/flash/serve/deployment}/preflight.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/serve → freesolo_flash_dev-1.2.118/flash/serve/deployment}/readiness.py +0 -0
- /freesolo_flash_dev-1.2.116/flash/serve/provisioning/_common.py → /freesolo_flash_dev-1.2.118/flash/serve/provisioning/common/records.py +0 -0
- /freesolo_flash_dev-1.2.116/flash/serve/provisioning/_modal_wrapper.py → /freesolo_flash_dev-1.2.118/flash/serve/provisioning/modal/planning/wrapper.py +0 -0
- /freesolo_flash_dev-1.2.116/flash/serve/provisioning/_runpod_mutations.py → /freesolo_flash_dev-1.2.118/flash/serve/provisioning/runpod/mutations.py +0 -0
- /freesolo_flash_dev-1.2.116/flash/serve/provisioning/_runpod_protocol.py → /freesolo_flash_dev-1.2.118/flash/serve/provisioning/runpod/protocol.py +0 -0
- /freesolo_flash_dev-1.2.116/flash/serve/provisioning/_runpod_transport.py → /freesolo_flash_dev-1.2.118/flash/serve/provisioning/runpod/transport.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/serve → freesolo_flash_dev-1.2.118/flash/serve/request}/runtime_support.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/serve/runtime/errors.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/serve/runtime/prompt.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/server/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/server/billing/charges.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/server/domain → freesolo_flash_dev-1.2.118/flash/server/domain/ops}/serving_resources.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/server/domain → freesolo_flash_dev-1.2.118/flash/server/domain/registry}/projects.py +0 -0
- /freesolo_flash_dev-1.2.116/flash/server/domain/teacher_errors.py → /freesolo_flash_dev-1.2.118/flash/server/domain/teacher/errors.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/server/platform/auth.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/server/platform/db.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/server/routes/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/server/routes/meta.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/serving/src/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/serving/src → freesolo_flash_dev-1.2.118/flash/serving/src/engine}/prequant_config.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/serving/src → freesolo_flash_dev-1.2.118/flash/serving/src/http}/body_limit.py +0 -0
- /freesolo_flash_dev-1.2.116/flash/serving/src/http_headers.py → /freesolo_flash_dev-1.2.118/flash/serving/src/http/headers.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/serving/src → freesolo_flash_dev-1.2.118/flash/serving/src/store}/persisted_columns.py +0 -0
- {freesolo_flash_dev-1.2.116/flash/serving/src → freesolo_flash_dev-1.2.118/flash/serving/src/store}/settings.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/teacher/limits.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/teacher/provider_status.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/flash/teacher/retry_contract.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/scripts/build_dev_dist.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/scripts/check_file_size.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/scripts/check_function_size.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/scripts/check_rollout_identity_actor.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/scripts/scrub_history.sh +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/serve_launch.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/_helpers/__init__.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/_helpers/chat_provenance.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/_helpers/chat_transport.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/_helpers/server_api_plugin.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/_helpers/source_snapshot.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/_helpers/specs.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/_helpers/teacher.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/_helpers/vast.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/capture_image_sft_processor_oracle.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/capture_qwen38_27b_metadata.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/fixtures/image_sft_processor_oracle.json +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/fixtures/qwen35_9b_target_metadata.json +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/fixtures/qwen38_27b_target_metadata.json +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/live/conftest.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/live/test_sft_thinking_render_live.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/serving/test_openai_stream_options.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_accounting_coverage.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_algorithms.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_backend_jobspec_contract.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_base_model_provenance.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_build_context_contract.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_capture_qwen38_metadata.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_cli_managed.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_client_stream_reads.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_config_overrides.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_cost_currency.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_dataset_profile.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_flashinfer_cache_dirs.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_freesolo_api_transport.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_grpo_process_census.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_health_liveness.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_hf_retry.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_image_incremental_processor.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_image_sft_markers.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_image_sft_processor_parity.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_image_tokens.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_infisical_secrets.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_internal_client.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_kernel_cache.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_kv_util.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_logging.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_lora_rank_coverage.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_lora_rank_nested_rung.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_managed_config_fields.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_metrics_schema_agent_contract.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_mig_guard.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_opd_limits.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_opd_replay_guard.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_packing.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_serve_app_launch.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_serve_app_manifest.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_serve_app_materialize.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_serve_control.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_serve_runtime_adapters.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_serve_runtime_types.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_server_auth_singleflight.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_server_locks_coverage.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_serving_context_preflight.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_sft_example_selection.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_sft_gc_off.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_sft_step_floor.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_step_floor.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_structured_outputs.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_teacher_encoding_contract.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_thinking_config.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_train_context_preflight.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_type_comment_prose.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_version.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_vl_warmstart_adapter_keys.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_workflow_contracts.py +0 -0
- {freesolo_flash_dev-1.2.116 → freesolo_flash_dev-1.2.118}/tests/test_workload_profile.py +0 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# flash control plane (operator-side). copy to .env and fill in.
|
|
2
|
+
# provider credentials live only here; clients never see them and authenticate
|
|
3
|
+
# with their api key.
|
|
4
|
+
#
|
|
5
|
+
# everything under "required" is checked by `flash/providers/core/preflight.py` at
|
|
6
|
+
# startup; `flash-server` refuses to serve if any of them is missing. settings
|
|
7
|
+
# that only degrade the plane (a single-account runpod pool, no `github_token`)
|
|
8
|
+
# warn at startup instead of blocking it.
|
|
9
|
+
#
|
|
10
|
+
# self-hosting? read the self-hosting guide first - the short version is the two lines
|
|
11
|
+
# below, and it is a much smaller list than this file suggests:
|
|
12
|
+
#
|
|
13
|
+
# FLASH_STANDALONE=1
|
|
14
|
+
# FREESOLO_INTERNAL_KEY=$(openssl rand -hex 32)
|
|
15
|
+
#
|
|
16
|
+
# IMPORTANT: `flash-server` does NOT read this file. It reads the process
|
|
17
|
+
# environment, so copying it to .env is not by itself enough — load it:
|
|
18
|
+
#
|
|
19
|
+
# set -a && . ./.env && set +a && flash-server # shell
|
|
20
|
+
# docker run --env-file .env ... # docker
|
|
21
|
+
|
|
22
|
+
# --- required: GPU substrate (AT LEAST ONE of the three) ---
|
|
23
|
+
# Flash allocates across RunPod, Lambda, and Vast. Configure the ones you have an
|
|
24
|
+
# account with; a provider whose key is unset is simply never considered, and the
|
|
25
|
+
# allocator ranks candidates only on the substrates you configured. One is enough
|
|
26
|
+
# to run. The preflight fails only when ALL THREE are missing.
|
|
27
|
+
#
|
|
28
|
+
# RunPod: one key, or several comma-separated for multi-account failover. A
|
|
29
|
+
# single-account pool works but cannot fail over or reap across accounts, so the
|
|
30
|
+
# preflight warns.
|
|
31
|
+
RUNPOD_API_KEY=
|
|
32
|
+
# Lambda Cloud API key.
|
|
33
|
+
LAMBDA_API_KEY=
|
|
34
|
+
# Vast.ai API key.
|
|
35
|
+
VAST_API_KEY=
|
|
36
|
+
|
|
37
|
+
# --- required: artifacts ---
|
|
38
|
+
# HuggingFace token with write access to the dataset repos flash creates for artifacts
|
|
39
|
+
# (code upload + streamed checkpoints/adapters). The repo is assigned by the control
|
|
40
|
+
# plane and scoped to the ENVIRONMENT, so runs sharing an environment share a repo and
|
|
41
|
+
# each run lands under its own prefix. It is not a user-authored field: the TOML parser
|
|
42
|
+
# rejects a [train] hf_repo set by hand.
|
|
43
|
+
HF_TOKEN=
|
|
44
|
+
# The HuggingFace user or org those artifact repos are created under. Defaults to
|
|
45
|
+
# Freesolo's namespace, which a self-hoster's token cannot write to - so on a
|
|
46
|
+
# self-hosted plane SET THIS to a namespace your HF_TOKEN owns, or every run fails at
|
|
47
|
+
# the code upload before training starts.
|
|
48
|
+
# FLASH_HF_NAMESPACE=your-hf-username
|
|
49
|
+
|
|
50
|
+
# --- required: control-plane auth ---
|
|
51
|
+
# The plane's own auth key. On a self-hosted (FLASH_STANDALONE=1) deployment this is
|
|
52
|
+
# the ONLY credential the plane accepts and is therefore the entire trust boundary -
|
|
53
|
+
# generate a high-entropy value and treat it like a root password:
|
|
54
|
+
#
|
|
55
|
+
# export FREESOLO_INTERNAL_KEY=$(openssl rand -hex 32)
|
|
56
|
+
#
|
|
57
|
+
# On a managed deployment it is the shared internal key that maps to a single service
|
|
58
|
+
# identity without a network call, alongside per-user keys verified against
|
|
59
|
+
# {FREESOLO_BASE_URL}/api/auth/verify.
|
|
60
|
+
FREESOLO_INTERNAL_KEY=
|
|
61
|
+
|
|
62
|
+
# --- optional: self-hosting ---
|
|
63
|
+
# Run without a Freesolo backend. Off by default. With it set, the plane stops calling
|
|
64
|
+
# out for project/environment/billing validation and trusts FREESOLO_INTERNAL_KEY as a
|
|
65
|
+
# single-tenant operator credential; external bearer tokens are REJECTED rather than
|
|
66
|
+
# accepted unverified. Single tenant - see SELF_HOSTING.md before enabling.
|
|
67
|
+
# FLASH_STANDALONE=1
|
|
68
|
+
|
|
69
|
+
# --- optional: deployment topology ---
|
|
70
|
+
# Where Flash keeps its local state: the saved login, the SQLite database, run records, and
|
|
71
|
+
# results. Defaults to ~/.flash (= /root/.flash for the container's default user, which is the
|
|
72
|
+
# path the Dockerfile declares as a VOLUME). Set this for a rootless container, a Kubernetes
|
|
73
|
+
# PVC, a read-only home directory, or a systemd unit with ProtectHome. Everything moves
|
|
74
|
+
# together, so point it at ONE durable location and mount a volume there.
|
|
75
|
+
# FLASH_DATA_DIR=/var/lib/flash
|
|
76
|
+
# Log verbosity for `flash-server`: DEBUG, INFO, WARNING, ERROR, CRITICAL. The server defaults
|
|
77
|
+
# to INFO -- provider resolution, capability revocation, reaper startup, and degraded-config
|
|
78
|
+
# warnings are all reported at INFO/WARNING. An unrecognized value falls back to the default
|
|
79
|
+
# rather than blocking startup.
|
|
80
|
+
# FLASH_LOG_LEVEL=INFO
|
|
81
|
+
# `text` (default) or `json`. JSON emits one object per line for a structured log sink. The
|
|
82
|
+
# same information is logged either way; only the punctuation differs.
|
|
83
|
+
# FLASH_LOG_FORMAT=text
|
|
84
|
+
# Bind address for `flash-server`. Defaults to 127.0.0.1; the container image passes 0.0.0.0
|
|
85
|
+
# explicitly. The --host and --port flags win over both of these.
|
|
86
|
+
# FLASH_SERVER_HOST=127.0.0.1
|
|
87
|
+
# Port for `flash-server`, default 8080. Must be 1-65535: an unusable value stops startup
|
|
88
|
+
# rather than silently binding the default, since a plane listening on the wrong port looks
|
|
89
|
+
# healthy and is unreachable.
|
|
90
|
+
# FLASH_SERVER_PORT=8080
|
|
91
|
+
# How long (seconds) to wait for a SQLite lock held by another writer, default 30. Raise it on
|
|
92
|
+
# networked storage, where a lock can be held far longer than on a local volume. This changes
|
|
93
|
+
# only patience: journal mode, synchronous, and foreign keys are correctness settings and are
|
|
94
|
+
# deliberately not configurable.
|
|
95
|
+
# FLASH_SQLITE_BUSY_TIMEOUT_SECONDS=30
|
|
96
|
+
|
|
97
|
+
# --- optional ---
|
|
98
|
+
# Server token for the environment repository. Without it, environments hosted in a
|
|
99
|
+
# private GitHub repo cannot be fetched; environments in public GitHub repos still work,
|
|
100
|
+
# so this warns at startup rather than blocking it. (A local directory is never a valid
|
|
101
|
+
# environment source - the GPU worker fetches the environment itself.)
|
|
102
|
+
GITHUB_TOKEN=
|
|
103
|
+
# the managed opd teacher credential stays on the control plane. submissions without it
|
|
104
|
+
# fail before gpu allocation; workers receive only an attempt-scoped broker capability.
|
|
105
|
+
PARASAIL_API_KEY=
|
|
106
|
+
# this plane's own public https origin, where gpu workers reach the teacher broker route. it is
|
|
107
|
+
# not the client's FLASH_API_URL / --api-url, which may be a private address (a tunnel, a vpn,
|
|
108
|
+
# http://your-plane:8080) that no rented worker can resolve. required for opd; a value workers
|
|
109
|
+
# cannot reach only surfaces after the gpu is allocated.
|
|
110
|
+
FLASH_PUBLIC_URL=https://flash.example.com
|
|
111
|
+
# Where to verify user keys. Defaults to https://api.freesolo.co when unset. Ignored
|
|
112
|
+
# under FLASH_STANDALONE=1, which verifies nothing over the network.
|
|
113
|
+
# FREESOLO_BASE_URL=
|
|
114
|
+
# Adapter serving is delegated to a multi-LoRA serving app (a Modal app that serves
|
|
115
|
+
# every adapter on one GPU per base model, scaling to zero when idle).
|
|
116
|
+
# `flash deploy`/`undeploy`/`chat` register/deregister/chat against it. Defaults to the
|
|
117
|
+
# hosted URL when unset; point it at your own deployment to self-host serving.
|
|
118
|
+
#
|
|
119
|
+
# Under FLASH_STANDALONE=1 there is NO default: those three commands error out until this
|
|
120
|
+
# is set to a backend YOU operate. Every serving request carries FREESOLO_INTERNAL_KEY,
|
|
121
|
+
# which on a self-hosted plane is the credential controlling that plane, so pointing it at
|
|
122
|
+
# a service you do not run would hand that credential over. Training never uses this.
|
|
123
|
+
#
|
|
124
|
+
# A Freesolo-hosted value is refused the same way an unset one is -- assigning the hosted
|
|
125
|
+
# URL here does not get you past the guard, it just produces the same error. Set it to
|
|
126
|
+
# YOUR serving deployment; the managed plane gets the hosted URL from the code default.
|
|
127
|
+
# FREESOLO_SERVING_URL=https://serving.example.internal
|
|
128
|
+
# The worker container image is not configurable: every provider runs the published
|
|
129
|
+
# ghcr.io/freesolo-co/flash-worker tags (per-GPU-arch kernel-cache variants, falling back to the
|
|
130
|
+
# base :cu128), selected by GPU class in flash/providers/_lifecycle/net/worker.py.
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
name: auto-rebake per-arch kernel cache
|
|
2
|
+
|
|
3
|
+
# Keeps the per-arch ghcr.io/freesolo-co/flash-worker:cu128-sm* images fresh whenever the :cu128 base
|
|
4
|
+
# is rebuilt. Each cu128-smXX is physically `FROM :cu128` + a baked mega-cache, so a new base leaves
|
|
5
|
+
# the per-arch tags pointing at the OLD base until rebaked. "Out of date" has two flavors, keyed off
|
|
6
|
+
# the fp_cache / fp_base labels worker-image.yml stamps on :cu128 (docker/kernel_fingerprint.py):
|
|
7
|
+
#
|
|
8
|
+
# * fp_cache changed -> promote a matching dev-ready cache by free re-layer. a real gpu re-warm is
|
|
9
|
+
# only the fail-safe when the required candidate is absent.
|
|
10
|
+
# * fp_cache same but fp_base changed -> the cache is still valid, the base just moved (FA wheel /
|
|
11
|
+
# causal-conv1d / rp_handler / a non-kernel dep) -> a FREE re-layer grafts the existing cache onto
|
|
12
|
+
# the fresh base (docker/Dockerfile.kernelcache.relayer), no GPU.
|
|
13
|
+
# * both same -> skip (this is the pure-flash-code case the old reminder over-fired on).
|
|
14
|
+
#
|
|
15
|
+
# The gate READS the published labels (authoritative for what was actually built, incl. a manual FA2
|
|
16
|
+
# override) rather than recomputing from the checkout, and aborts unless the base's revision label ==
|
|
17
|
+
# the build's head_sha (so a superseded base build or a `tag=...` dispatch that never touched :cu128
|
|
18
|
+
# can't trigger a stale rebake).
|
|
19
|
+
|
|
20
|
+
on:
|
|
21
|
+
workflow_run:
|
|
22
|
+
workflows: ["flash worker image"]
|
|
23
|
+
types: [completed]
|
|
24
|
+
|
|
25
|
+
permissions:
|
|
26
|
+
contents: read
|
|
27
|
+
packages: write
|
|
28
|
+
actions: read
|
|
29
|
+
issues: write
|
|
30
|
+
|
|
31
|
+
# Scope the group to the triggering base build's commit so a no-op completion (e.g. a tag=cu128-test
|
|
32
|
+
# worker-image run, whose head_sha differs) can't cancel an in-flight real bake. The revision guard
|
|
33
|
+
# already neutralizes superseded runs, so a global cancel-in-progress isn't needed.
|
|
34
|
+
concurrency:
|
|
35
|
+
group: auto-rebake-${{ github.event.workflow_run.head_sha }}
|
|
36
|
+
cancel-in-progress: true
|
|
37
|
+
|
|
38
|
+
env:
|
|
39
|
+
BASE: ghcr.io/freesolo-co/flash-worker:cu128
|
|
40
|
+
|
|
41
|
+
jobs:
|
|
42
|
+
gate:
|
|
43
|
+
# Upstream only -- see publish.yml. Guarded at the GATE rather than on each downstream job so
|
|
44
|
+
# one condition covers the whole chain: `gpu-warm` calls bake-kernel-cache.yml, which spends
|
|
45
|
+
# real GPU money, and `relayer` wants the org's larger runner. A fork can never reach either if
|
|
46
|
+
# the gate does not run.
|
|
47
|
+
if: >-
|
|
48
|
+
github.repository == 'freesolo-co/flash'
|
|
49
|
+
&& github.event.workflow_run.conclusion == 'success'
|
|
50
|
+
runs-on: ubuntu-latest
|
|
51
|
+
# Registry metadata reads only (crane digest/config per arch); every recorded gate run
|
|
52
|
+
# finishes inside a minute. The cap bounds a hung GHCR call, not real work.
|
|
53
|
+
timeout-minutes: 15
|
|
54
|
+
outputs:
|
|
55
|
+
proceed: ${{ steps.base.outputs.proceed }}
|
|
56
|
+
relayer_matrix: ${{ steps.classify.outputs.relayer_matrix }}
|
|
57
|
+
gpu_sms: ${{ steps.classify.outputs.gpu_sms }}
|
|
58
|
+
fp_cache: ${{ steps.base.outputs.fp_cache }}
|
|
59
|
+
fp_base: ${{ steps.base.outputs.fp_base }}
|
|
60
|
+
base_ref: ${{ steps.base.outputs.base_ref }}
|
|
61
|
+
base_revision: ${{ steps.base.outputs.revision }}
|
|
62
|
+
steps:
|
|
63
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
64
|
+
with:
|
|
65
|
+
ref: ${{ github.event.workflow_run.head_sha }}
|
|
66
|
+
|
|
67
|
+
# Downloaded to disk and checksum-verified before extraction, rather than piped straight
|
|
68
|
+
# into tar: a piped stream is extracted as it arrives, so a corrupted or substituted
|
|
69
|
+
# artifact is already on PATH by the time anything could notice. Bump the version and the
|
|
70
|
+
# digest together (the vendor publishes checksums.txt alongside each release).
|
|
71
|
+
- name: Install crane
|
|
72
|
+
run: |
|
|
73
|
+
set -euo pipefail
|
|
74
|
+
ver=v0.20.2
|
|
75
|
+
sha=c14340087103ba9dadf61d45acd20675490fd0ccbd56ac7901fc1b502137f44b
|
|
76
|
+
curl -fsSL -o /tmp/crane.tar.gz \
|
|
77
|
+
"https://github.com/google/go-containerregistry/releases/download/${ver}/go-containerregistry_Linux_x86_64.tar.gz"
|
|
78
|
+
echo "${sha} /tmp/crane.tar.gz" | sha256sum -c -
|
|
79
|
+
sudo tar -xz -C /usr/local/bin -f /tmp/crane.tar.gz crane
|
|
80
|
+
rm -f /tmp/crane.tar.gz
|
|
81
|
+
crane version
|
|
82
|
+
|
|
83
|
+
- name: Log in to GHCR
|
|
84
|
+
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
|
|
85
|
+
with:
|
|
86
|
+
registry: ghcr.io
|
|
87
|
+
username: ${{ github.actor }}
|
|
88
|
+
password: ${{ secrets.GITHUB_TOKEN }}
|
|
89
|
+
|
|
90
|
+
- name: Read base labels
|
|
91
|
+
id: base
|
|
92
|
+
env:
|
|
93
|
+
HEAD_SHA: ${{ github.event.workflow_run.head_sha }}
|
|
94
|
+
run: |
|
|
95
|
+
# canonical digest ref (repo@sha256, no tag) so every tool (crane/docker/runpod) accepts it.
|
|
96
|
+
digest=$(crane digest "$BASE")
|
|
97
|
+
repo=${BASE%:*}
|
|
98
|
+
cfg=$(crane config "$repo@$digest")
|
|
99
|
+
fpc=$(echo "$cfg" | jq -r '.config.Labels["co.freesolo.flash.kernelcache.fp_cache"] // ""')
|
|
100
|
+
fpb=$(echo "$cfg" | jq -r '.config.Labels["co.freesolo.flash.kernelcache.fp_base"] // ""')
|
|
101
|
+
rev=$(echo "$cfg" | jq -r '.config.Labels["org.opencontainers.image.revision"] // ""')
|
|
102
|
+
echo "base_ref=$repo@$digest" >> "$GITHUB_OUTPUT"
|
|
103
|
+
echo "fp_cache=$fpc" >> "$GITHUB_OUTPUT"
|
|
104
|
+
echo "fp_base=$fpb" >> "$GITHUB_OUTPUT"
|
|
105
|
+
echo "revision=$rev" >> "$GITHUB_OUTPUT"
|
|
106
|
+
# Only proceed if this base IS the build that triggered us: its revision label must match the
|
|
107
|
+
# build's head_sha. Guards (a) a newer base that already superseded this run, and (b) a
|
|
108
|
+
# `tag=cu128-test` dispatch that never updated :cu128 (the workflow_run payload can't reveal
|
|
109
|
+
# the dispatch tag). An unlabeled base (pre-rollout) also no-ops here.
|
|
110
|
+
if [ -n "$fpc" ] && [ "$rev" = "$HEAD_SHA" ]; then
|
|
111
|
+
echo "proceed=true" >> "$GITHUB_OUTPUT"
|
|
112
|
+
echo "base $BASE@$digest is rev $rev (== head_sha) fp_cache=$fpc fp_base=$fpb"
|
|
113
|
+
else
|
|
114
|
+
echo "proceed=false" >> "$GITHUB_OUTPUT"
|
|
115
|
+
echo "::notice::auto-rebake no-op: base rev '$rev' != head_sha '$HEAD_SHA' (or base unlabeled)"
|
|
116
|
+
fi
|
|
117
|
+
|
|
118
|
+
- name: Classify arches
|
|
119
|
+
id: classify
|
|
120
|
+
if: steps.base.outputs.proceed == 'true'
|
|
121
|
+
env:
|
|
122
|
+
FP_CACHE: ${{ steps.base.outputs.fp_cache }}
|
|
123
|
+
FP_BASE: ${{ steps.base.outputs.fp_base }}
|
|
124
|
+
REV: ${{ steps.base.outputs.revision }}
|
|
125
|
+
run: |
|
|
126
|
+
# flash/providers/_lifecycle/net/worker.py is the single source of truth for the arch list; the bake
|
|
127
|
+
# matrix mirrors it. read the canonical assignment statically without importing flash.
|
|
128
|
+
arches=$(python3 docker/kernel_fingerprint.py --print-baked-arches)
|
|
129
|
+
relayer=(); gpu=()
|
|
130
|
+
summary="| arch | published fp_cache | published fp_base | action |\n|---|---|---|---|\n"
|
|
131
|
+
for sm in $arches; do
|
|
132
|
+
img="ghcr.io/freesolo-co/flash-worker:cu128-$sm"
|
|
133
|
+
if cfg=$(crane config "$img" 2>/dev/null); then
|
|
134
|
+
pc=$(echo "$cfg" | jq -r '.config.Labels["co.freesolo.flash.kernelcache.fp_cache"] // ""')
|
|
135
|
+
pb=$(echo "$cfg" | jq -r '.config.Labels["co.freesolo.flash.kernelcache.fp_base"] // ""')
|
|
136
|
+
else
|
|
137
|
+
pc="(missing)"; pb="(missing)"
|
|
138
|
+
fi
|
|
139
|
+
if [ "$pc" != "$FP_CACHE" ]; then
|
|
140
|
+
candidate="ghcr.io/freesolo-co/flash-worker:cu128-dev-ready-$sm"
|
|
141
|
+
candidate_pc=""; candidate_ref=""
|
|
142
|
+
if candidate_digest=$(crane digest "$candidate" 2>/dev/null); then
|
|
143
|
+
candidate_ref="${candidate%:*}@$candidate_digest"
|
|
144
|
+
fi
|
|
145
|
+
if [ -n "$candidate_ref" ] && candidate_cfg=$(crane config "$candidate_ref" 2>/dev/null); then
|
|
146
|
+
candidate_pc=$(echo "$candidate_cfg" | jq -r '.config.Labels["co.freesolo.flash.kernelcache.fp_cache"] // ""')
|
|
147
|
+
fi
|
|
148
|
+
if [ "$candidate_pc" = "$FP_CACHE" ]; then
|
|
149
|
+
relayer+=("$(jq -cn --arg sm "$sm" --arg source "$candidate_ref" '{sm:$sm, source:$source}')")
|
|
150
|
+
action="promote dev cache (free)"
|
|
151
|
+
else
|
|
152
|
+
gpu+=("$sm"); action="gpu re-warm (candidate missing)"
|
|
153
|
+
fi
|
|
154
|
+
elif [ "$pb" != "$FP_BASE" ]; then
|
|
155
|
+
relayer+=("$(jq -cn --arg sm "$sm" --arg source "$img" '{sm:$sm, source:$source}')")
|
|
156
|
+
action="re-layer (free)"
|
|
157
|
+
else
|
|
158
|
+
action="up to date"
|
|
159
|
+
fi
|
|
160
|
+
echo "$sm: pc=$pc pb=$pb -> $action"
|
|
161
|
+
summary="$summary| $sm | \`$pc\` | \`$pb\` | $action |\n"
|
|
162
|
+
done
|
|
163
|
+
if [ ${#relayer[@]} -gt 0 ]; then
|
|
164
|
+
relayer_json=$(printf '%s\n' "${relayer[@]}" | jq -cs .)
|
|
165
|
+
else
|
|
166
|
+
relayer_json='[]'
|
|
167
|
+
fi
|
|
168
|
+
gpu_csv=$(IFS=,; echo "${gpu[*]}")
|
|
169
|
+
echo "relayer_matrix=$relayer_json" >> "$GITHUB_OUTPUT"
|
|
170
|
+
echo "gpu_sms=$gpu_csv" >> "$GITHUB_OUTPUT"
|
|
171
|
+
{
|
|
172
|
+
echo "### auto-rebake plan (base rev \`$REV\`, fp_cache \`$FP_CACHE\` fp_base \`$FP_BASE\`)"
|
|
173
|
+
echo ""
|
|
174
|
+
echo -e "$summary"
|
|
175
|
+
echo ""
|
|
176
|
+
echo "re-layer (free): \`$relayer_json\` | GPU re-warm (paid, auto-started): \`${gpu_csv:-none}\`"
|
|
177
|
+
} >> "$GITHUB_STEP_SUMMARY"
|
|
178
|
+
|
|
179
|
+
# FYI notification (not an action item -- the bake auto-runs). Keeps a heads-up + cost trail of
|
|
180
|
+
# which arches a paid GPU re-warm fired for.
|
|
181
|
+
- name: Notify GPU re-bake auto-started
|
|
182
|
+
if: steps.base.outputs.proceed == 'true' && steps.classify.outputs.gpu_sms != ''
|
|
183
|
+
env:
|
|
184
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
185
|
+
GPU_SMS: ${{ steps.classify.outputs.gpu_sms }}
|
|
186
|
+
REV: ${{ steps.base.outputs.revision }}
|
|
187
|
+
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
|
|
188
|
+
run: |
|
|
189
|
+
title="kernel-cache: per-arch GPU re-bake auto-started"
|
|
190
|
+
body=$(printf 'The kernel toolchain changed (fp_cache), so a PAID GPU re-warm auto-started for these per-arch images (no approval needed):\n\n- arches: `%s`\n- base rev: `%s`\n\nTrack it in the run: %s' "$GPU_SMS" "$REV" "$RUN_URL")
|
|
191
|
+
# best-effort: a labeling/permission hiccup must never fail the gate. self-heal the label so
|
|
192
|
+
# no manual setup is needed, then reuse one open issue (comment) instead of spamming new ones.
|
|
193
|
+
gh label create kernel-rebake-pending --color B60205 --description "per-arch kernel cache GPU re-bake auto-started" 2>/dev/null || true
|
|
194
|
+
existing=$(gh issue list --label kernel-rebake-pending --state open --json number -q '.[0].number' 2>/dev/null || true)
|
|
195
|
+
if [ -n "${existing:-}" ]; then
|
|
196
|
+
gh issue comment "$existing" --body "$body" || true
|
|
197
|
+
else
|
|
198
|
+
gh issue create --title "$title" --body "$body" --label kernel-rebake-pending \
|
|
199
|
+
|| gh issue create --title "$title" --body "$body" || true
|
|
200
|
+
fi
|
|
201
|
+
|
|
202
|
+
# FREE path: graft the existing valid cache onto the fresh base, no GPU. Runs automatically.
|
|
203
|
+
relayer:
|
|
204
|
+
needs: gate
|
|
205
|
+
if: needs.gate.outputs.proceed == 'true' && needs.gate.outputs.relayer_matrix != '[]' && needs.gate.outputs.relayer_matrix != ''
|
|
206
|
+
runs-on: ubuntu-24.04-8core
|
|
207
|
+
# The graft pulls two ~20GB images and pushes one. 21min is the slowest auto-rebake run on
|
|
208
|
+
# record; 60 covers a slow registry without holding the org's larger runner indefinitely.
|
|
209
|
+
timeout-minutes: 60
|
|
210
|
+
strategy:
|
|
211
|
+
fail-fast: false
|
|
212
|
+
matrix:
|
|
213
|
+
include: ${{ fromJson(needs.gate.outputs.relayer_matrix || '[]') }}
|
|
214
|
+
env:
|
|
215
|
+
BASE_REF: ${{ needs.gate.outputs.base_ref }}
|
|
216
|
+
FP_CACHE: ${{ needs.gate.outputs.fp_cache }}
|
|
217
|
+
FP_BASE: ${{ needs.gate.outputs.fp_base }}
|
|
218
|
+
BASE_REVISION: ${{ needs.gate.outputs.base_revision }}
|
|
219
|
+
steps:
|
|
220
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
221
|
+
with:
|
|
222
|
+
ref: ${{ github.event.workflow_run.head_sha }}
|
|
223
|
+
|
|
224
|
+
# The graft pulls two ~20GB images (old per-arch tag + fresh base); reclaim runner disk first.
|
|
225
|
+
- name: Free disk space
|
|
226
|
+
run: |
|
|
227
|
+
sudo rm -rf /usr/share/dotnet /opt/ghc /usr/local/.ghcup \
|
|
228
|
+
/usr/local/lib/android /opt/hostedtoolcache /usr/share/swift \
|
|
229
|
+
/usr/local/share/boost /usr/local/lib/node_modules \
|
|
230
|
+
/usr/local/share/powershell /usr/share/miniconda || true
|
|
231
|
+
sudo apt-get clean || true
|
|
232
|
+
sudo docker image prune -af || true
|
|
233
|
+
df -h /
|
|
234
|
+
|
|
235
|
+
- uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4.3.0
|
|
236
|
+
|
|
237
|
+
- name: Log in to GHCR
|
|
238
|
+
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
|
|
239
|
+
with:
|
|
240
|
+
registry: ghcr.io
|
|
241
|
+
username: ${{ github.actor }}
|
|
242
|
+
password: ${{ secrets.GITHUB_TOKEN }}
|
|
243
|
+
|
|
244
|
+
# Pin OLDCACHE by digest so a concurrent overwrite of the source tag can't graft a wrong cache.
|
|
245
|
+
- name: Resolve old per-arch cache digest
|
|
246
|
+
id: old
|
|
247
|
+
run: |
|
|
248
|
+
img="${{ matrix.source }}"
|
|
249
|
+
if [[ "$img" == *@sha256:* ]]; then
|
|
250
|
+
echo "ref=$img" >> "$GITHUB_OUTPUT"
|
|
251
|
+
else
|
|
252
|
+
digest=$(docker buildx imagetools inspect "$img" --format '{{.Manifest.Digest}}')
|
|
253
|
+
# canonical digest ref (repo@sha256, no tag) for the FROM in the relayer build.
|
|
254
|
+
echo "ref=${img%:*}@$digest" >> "$GITHUB_OUTPUT"
|
|
255
|
+
fi
|
|
256
|
+
|
|
257
|
+
- name: Re-layer cache onto the fresh base (no GPU)
|
|
258
|
+
uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
|
|
259
|
+
with:
|
|
260
|
+
context: .
|
|
261
|
+
file: docker/Dockerfile.kernelcache.relayer
|
|
262
|
+
push: true
|
|
263
|
+
tags: ghcr.io/freesolo-co/flash-worker:cu128-${{ matrix.sm }}
|
|
264
|
+
provenance: false
|
|
265
|
+
build-args: |
|
|
266
|
+
BASE=${{ env.BASE_REF }}
|
|
267
|
+
OLDCACHE=${{ steps.old.outputs.ref }}
|
|
268
|
+
FP_CACHE=${{ env.FP_CACHE }}
|
|
269
|
+
FP_BASE=${{ env.FP_BASE }}
|
|
270
|
+
BASE_REVISION=${{ env.BASE_REVISION }}
|
|
271
|
+
|
|
272
|
+
# PAID path: re-warm the cache on a real GPU per arch. Runs automatically -- the fingerprint gate
|
|
273
|
+
# above is the only thing that decides it fires (only when fp_cache changed), so no manual approval.
|
|
274
|
+
gpu-warm:
|
|
275
|
+
needs: gate
|
|
276
|
+
if: needs.gate.outputs.proceed == 'true' && needs.gate.outputs.gpu_sms != ''
|
|
277
|
+
uses: ./.github/workflows/bake-kernel-cache.yml
|
|
278
|
+
with:
|
|
279
|
+
sms: ${{ needs.gate.outputs.gpu_sms }}
|
|
280
|
+
fp_cache: ${{ needs.gate.outputs.fp_cache }}
|
|
281
|
+
fp_base: ${{ needs.gate.outputs.fp_base }}
|
|
282
|
+
base_ref: ${{ needs.gate.outputs.base_ref }}
|
|
283
|
+
base_revision: ${{ needs.gate.outputs.base_revision }}
|
|
284
|
+
secrets: inherit
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
name: flash worker kernel-cache (per-arch)
|
|
2
|
+
|
|
3
|
+
# Builds per-SM worker images with the compiled-kernel mega-cache baked in, killing the ~10-15 min
|
|
4
|
+
# first-use JIT on a cold worker (the regression #194 reintroduced). Each matrix leg:
|
|
5
|
+
# 1. offloads the warmup to a RunPod GPU of that arch (GH runners have none) -> build/kernel_cache,
|
|
6
|
+
# 2. docker build --build-arg BUILD_KERNEL_CACHE=true -> ghcr.io/freesolo-co/flash-worker:cu128-<sm>,
|
|
7
|
+
# 3. pushes it. The allocator then selects the cu128-<sm> tag per GPU class for baked arches
|
|
8
|
+
# (see flash/providers/_lifecycle/net/worker.py).
|
|
9
|
+
#
|
|
10
|
+
# Depends on the base ghcr.io/freesolo-co/flash-worker:cu128 image existing (worker-image.yml) — the
|
|
11
|
+
# warmup runs INSIDE it so the cache matches the image's pinned torch/triton/fla/liger toolchain.
|
|
12
|
+
#
|
|
13
|
+
# Secrets: RUNPOD_API_KEY (the warmup GPU pod) + HF_TOKEN (the temp dataset that ferries code + the
|
|
14
|
+
# cache artifact) are native repo Actions secrets, synced from Infisical (prod:/flash-ci) by the
|
|
15
|
+
# github-ci-flash Secret Sync; the GHCR push uses the default GITHUB_TOKEN. Heavy + paid,
|
|
16
|
+
# but UNGATED: the fingerprint detection in auto-rebake.yml decides WHEN this runs (only on a real
|
|
17
|
+
# kernel-toolchain change), so there is no manual approval step. Invoked by hand (workflow_dispatch)
|
|
18
|
+
# OR automatically by auto-rebake.yml (workflow_call) when the kernel toolchain changed.
|
|
19
|
+
|
|
20
|
+
on:
|
|
21
|
+
workflow_dispatch:
|
|
22
|
+
inputs:
|
|
23
|
+
sms:
|
|
24
|
+
description: "comma-separated sm list to bake; default is all validated arches"
|
|
25
|
+
default: "sm80,sm86,sm89,sm90,sm120,sm100"
|
|
26
|
+
required: false
|
|
27
|
+
target_tag_prefix:
|
|
28
|
+
description: "target image tag before the -sm suffix"
|
|
29
|
+
default: "cu128"
|
|
30
|
+
required: false
|
|
31
|
+
# auto-rebake.yml calls this for the EXPENSIVE path (the cache is invalid and must be re-warmed on a
|
|
32
|
+
# real GPU). It passes the arch subset, the fingerprints to stamp, and a digest-pinned base so the
|
|
33
|
+
# warm runs inside the exact :cu128 the per-arch tag will sit on.
|
|
34
|
+
workflow_call:
|
|
35
|
+
inputs:
|
|
36
|
+
sms:
|
|
37
|
+
type: string
|
|
38
|
+
required: true
|
|
39
|
+
fp_cache:
|
|
40
|
+
type: string
|
|
41
|
+
required: false
|
|
42
|
+
default: ""
|
|
43
|
+
fp_base:
|
|
44
|
+
type: string
|
|
45
|
+
required: false
|
|
46
|
+
default: ""
|
|
47
|
+
base_ref:
|
|
48
|
+
type: string
|
|
49
|
+
required: false
|
|
50
|
+
default: "ghcr.io/freesolo-co/flash-worker:cu128"
|
|
51
|
+
base_revision:
|
|
52
|
+
type: string
|
|
53
|
+
required: false
|
|
54
|
+
default: ""
|
|
55
|
+
target_tag_prefix:
|
|
56
|
+
type: string
|
|
57
|
+
required: false
|
|
58
|
+
default: "cu128"
|
|
59
|
+
|
|
60
|
+
permissions:
|
|
61
|
+
contents: read
|
|
62
|
+
packages: write
|
|
63
|
+
|
|
64
|
+
jobs:
|
|
65
|
+
# Ungated: the PAID RunPod bake runs as soon as it's called/dispatched. The decision of WHEN to run
|
|
66
|
+
# lives in auto-rebake.yml's fingerprint gate (it only invokes this when fp_cache changed), so a
|
|
67
|
+
# second manual approval here would be redundant. Re-add an `approve` job with `environment: gpu-bake`
|
|
68
|
+
# (and `needs: approve`) if you ever want a human checkpoint back.
|
|
69
|
+
bake:
|
|
70
|
+
# Upstream only -- see publish.yml. "Ungated" above means no human APPROVAL step; it never meant
|
|
71
|
+
# any repository may start it. This workflow is directly dispatchable (`workflow_dispatch`), so
|
|
72
|
+
# a fork reaches it without passing auto-rebake's fingerprint gate, and it both requests the
|
|
73
|
+
# org-only `ubuntu-24.04-8core` runner (a label a fork has no runner for, so the job QUEUES
|
|
74
|
+
# instead of failing) and creates paid RunPod resources. `workflow_call` from auto-rebake still
|
|
75
|
+
# satisfies this, because a called workflow evaluates `github.repository` as the CALLER's repo.
|
|
76
|
+
if: github.repository == 'freesolo-co/flash'
|
|
77
|
+
runs-on: ubuntu-24.04-8core
|
|
78
|
+
# 47min is the slowest run on record (the rest sit at 12-23min); 120 absorbs a slow provider
|
|
79
|
+
# allocation without letting a hung bake hold the runner for the 6-hour default.
|
|
80
|
+
#
|
|
81
|
+
# This bounds the RUNNER, and only indirectly the spend. The rented pod is released by the
|
|
82
|
+
# `finally` in docker/bake_kernel_cache.py, so the pod outlives the timeout in exactly the case
|
|
83
|
+
# the timeout exists for: if the controller is wedged inside a blocking call, GitHub kills it
|
|
84
|
+
# and that `finally` may never complete, leaving a billed pod with nothing left to terminate it.
|
|
85
|
+
# Closing that needs a server-side pod lifetime or an out-of-band reaper -- a change to the bake
|
|
86
|
+
# tooling rather than to this workflow, so it is deliberately NOT bundled here. Until then, read
|
|
87
|
+
# this cap as "the runner stops waiting", not "the bill stops".
|
|
88
|
+
timeout-minutes: 120
|
|
89
|
+
strategy:
|
|
90
|
+
fail-fast: false
|
|
91
|
+
matrix:
|
|
92
|
+
include:
|
|
93
|
+
- {
|
|
94
|
+
sm: sm80,
|
|
95
|
+
arch: "8.0",
|
|
96
|
+
allowed_cuda: "",
|
|
97
|
+
}
|
|
98
|
+
- {
|
|
99
|
+
sm: sm86,
|
|
100
|
+
arch: "8.6",
|
|
101
|
+
allowed_cuda: "",
|
|
102
|
+
}
|
|
103
|
+
# the controller walks ordered same-sm secure-cloud gpu types from its per-sm map.
|
|
104
|
+
# preferred datacenter cards stay first, but one empty sku cannot strand this architecture
|
|
105
|
+
# on a stale image and send ordinary starts through jit.
|
|
106
|
+
- {
|
|
107
|
+
sm: sm89,
|
|
108
|
+
arch: "8.9",
|
|
109
|
+
allowed_cuda: "",
|
|
110
|
+
}
|
|
111
|
+
- {
|
|
112
|
+
sm: sm90,
|
|
113
|
+
arch: "9.0",
|
|
114
|
+
allowed_cuda: "",
|
|
115
|
+
}
|
|
116
|
+
# blackwell needs cuda-13 hosts to jit its ptx (matches min_cuda_for in the provider).
|
|
117
|
+
- {
|
|
118
|
+
sm: sm120,
|
|
119
|
+
arch: "12.0",
|
|
120
|
+
allowed_cuda: "13.0",
|
|
121
|
+
}
|
|
122
|
+
# datacenter blackwell is distinct from sm120. b200 is the only validated sm100 type.
|
|
123
|
+
- {
|
|
124
|
+
sm: sm100,
|
|
125
|
+
arch: "10.0",
|
|
126
|
+
allowed_cuda: "13.0",
|
|
127
|
+
}
|
|
128
|
+
steps:
|
|
129
|
+
# Gate FIRST (no checkout needed) so skipped arches do no crane / checkout / build work.
|
|
130
|
+
- name: Should bake ${{ matrix.sm }}?
|
|
131
|
+
id: gate
|
|
132
|
+
run: |
|
|
133
|
+
req="${{ inputs.sms || 'sm80,sm86,sm89,sm90,sm120,sm100' }}"
|
|
134
|
+
req="${req// /}" # tolerate spaces, e.g. "sm80, sm86"
|
|
135
|
+
case ",$req," in
|
|
136
|
+
*,${{ matrix.sm }},*) echo "run=true" >> "$GITHUB_OUTPUT" ;;
|
|
137
|
+
*) echo "run=false" >> "$GITHUB_OUTPUT"; echo "skipping ${{ matrix.sm }}" ;;
|
|
138
|
+
esac
|
|
139
|
+
|
|
140
|
+
# Downloaded to disk and checksum-verified before extraction, rather than piped straight
|
|
141
|
+
# into tar: a piped stream is extracted as it arrives, so a corrupted or substituted
|
|
142
|
+
# artifact is already on PATH by the time anything could notice. Bump the version and the
|
|
143
|
+
# digest together (the vendor publishes checksums.txt alongside each release).
|
|
144
|
+
- name: Install crane
|
|
145
|
+
if: steps.gate.outputs.run == 'true'
|
|
146
|
+
run: |
|
|
147
|
+
set -euo pipefail
|
|
148
|
+
ver=v0.20.2
|
|
149
|
+
sha=c14340087103ba9dadf61d45acd20675490fd0ccbd56ac7901fc1b502137f44b
|
|
150
|
+
curl -fsSL -o /tmp/crane.tar.gz \
|
|
151
|
+
"https://github.com/google/go-containerregistry/releases/download/${ver}/go-containerregistry_Linux_x86_64.tar.gz"
|
|
152
|
+
echo "${sha} /tmp/crane.tar.gz" | sha256sum -c -
|
|
153
|
+
sudo tar -xz -C /usr/local/bin -f /tmp/crane.tar.gz crane
|
|
154
|
+
rm -f /tmp/crane.tar.gz
|
|
155
|
+
crane version
|
|
156
|
+
|
|
157
|
+
- name: Log in to GHCR
|
|
158
|
+
if: steps.gate.outputs.run == 'true'
|
|
159
|
+
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
|
|
160
|
+
with:
|
|
161
|
+
registry: ghcr.io
|
|
162
|
+
username: ${{ github.actor }}
|
|
163
|
+
password: ${{ secrets.GITHUB_TOKEN }}
|
|
164
|
+
|
|
165
|
+
# Resolve the base + fingerprints BEFORE checkout, so the checkout (hence the warmed flash code)
|
|
166
|
+
# is pinned to the EXACT commit the base was built from. auto-rebake passes everything (fast path);
|
|
167
|
+
# a manual dispatch READS the labels off the published base, so the per-arch image always matches
|
|
168
|
+
# the base it extends (same source of truth as the gate) instead of recomputing from the checkout.
|
|
169
|
+
- name: Resolve base + fingerprints
|
|
170
|
+
id: base
|
|
171
|
+
if: steps.gate.outputs.run == 'true'
|
|
172
|
+
run: |
|
|
173
|
+
if [ -n "${{ inputs.fp_cache }}" ]; then
|
|
174
|
+
echo "ref=${{ inputs.base_ref }}" >> "$GITHUB_OUTPUT"
|
|
175
|
+
echo "fp_cache=${{ inputs.fp_cache }}" >> "$GITHUB_OUTPUT"
|
|
176
|
+
echo "fp_base=${{ inputs.fp_base }}" >> "$GITHUB_OUTPUT"
|
|
177
|
+
echo "revision=${{ inputs.base_revision }}" >> "$GITHUB_OUTPUT"
|
|
178
|
+
else
|
|
179
|
+
base="${{ inputs.base_ref || 'ghcr.io/freesolo-co/flash-worker:cu128' }}"
|
|
180
|
+
digest=$(crane digest "$base"); repo=${base%:*}
|
|
181
|
+
cfg=$(crane config "$repo@$digest")
|
|
182
|
+
echo "ref=$repo@$digest" >> "$GITHUB_OUTPUT"
|
|
183
|
+
echo "fp_cache=$(echo "$cfg" | jq -r '.config.Labels["co.freesolo.flash.kernelcache.fp_cache"] // ""')" >> "$GITHUB_OUTPUT"
|
|
184
|
+
echo "fp_base=$(echo "$cfg" | jq -r '.config.Labels["co.freesolo.flash.kernelcache.fp_base"] // ""')" >> "$GITHUB_OUTPUT"
|
|
185
|
+
echo "revision=$(echo "$cfg" | jq -r '.config.Labels["org.opencontainers.image.revision"] // ""')" >> "$GITHUB_OUTPUT"
|
|
186
|
+
fi
|
|
187
|
+
|
|
188
|
+
# Pin the checkout to the base's source commit so the warmed flash code matches the base exactly
|
|
189
|
+
# (the cache is content-keyed by the code that compiled it). Falls back to the event sha if the
|
|
190
|
+
# base predates the revision label.
|
|
191
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
192
|
+
if: steps.gate.outputs.run == 'true'
|
|
193
|
+
with:
|
|
194
|
+
ref: ${{ steps.base.outputs.revision || github.sha }}
|
|
195
|
+
|
|
196
|
+
- name: Install uv
|
|
197
|
+
if: steps.gate.outputs.run == 'true'
|
|
198
|
+
uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
|
|
199
|
+
with:
|
|
200
|
+
# pin the installed binary as well as the action implementation.
|
|
201
|
+
version: "0.12.5"
|
|
202
|
+
# no cache: the post-run cache-prune calls `uv`, but the "Free disk space" step deletes
|
|
203
|
+
# /opt/hostedtoolcache (where setup-uv put uv), so the post step fails ("uv not found") and
|
|
204
|
+
# marks the whole job red even though the bake + push already succeeded.
|
|
205
|
+
enable-cache: false
|
|
206
|
+
|
|
207
|
+
- name: Sync deps (flash + runpod + hf)
|
|
208
|
+
if: steps.gate.outputs.run == 'true'
|
|
209
|
+
run: uv sync --extra server
|
|
210
|
+
|
|
211
|
+
# RUNPOD_API_KEY (the warmup GPU pod) + HF_TOKEN (the temp dataset that ferries code/cache) are
|
|
212
|
+
# native repo Actions secrets, synced from Infisical (prod:/flash-ci) by the github-ci-flash
|
|
213
|
+
# Secret Sync. No Infisical CLI/login at job time -- Infisical stays the source of truth and
|
|
214
|
+
# rotations propagate via the sync. BASE_IMAGE
|
|
215
|
+
# is digest-pinned so the warm runs inside the EXACT base the per-arch tag will sit on.
|
|
216
|
+
- name: Warm kernels on a RunPod ${{ matrix.sm }} GPU -> build/kernel_cache
|
|
217
|
+
if: steps.gate.outputs.run == 'true'
|
|
218
|
+
env:
|
|
219
|
+
RUNPOD_API_KEY: ${{ secrets.RUNPOD_API_KEY }}
|
|
220
|
+
HF_TOKEN: ${{ secrets.HF_TOKEN }}
|
|
221
|
+
BASE_IMAGE: ${{ steps.base.outputs.ref }}
|
|
222
|
+
run: |
|
|
223
|
+
uv run python docker/bake_kernel_cache.py \
|
|
224
|
+
--arch "${{ matrix.arch }}" --sm "${{ matrix.sm }}" \
|
|
225
|
+
--allowed-cuda "${{ matrix.allowed_cuda }}" \
|
|
226
|
+
--image "$BASE_IMAGE" \
|
|
227
|
+
--out build/kernel_cache
|
|
228
|
+
|
|
229
|
+
- name: Free disk space
|
|
230
|
+
if: steps.gate.outputs.run == 'true'
|
|
231
|
+
run: |
|
|
232
|
+
sudo rm -rf /usr/share/dotnet /opt/ghc /usr/local/.ghcup \
|
|
233
|
+
/usr/local/lib/android /opt/hostedtoolcache /usr/share/swift \
|
|
234
|
+
/usr/local/share/boost /usr/local/lib/node_modules \
|
|
235
|
+
/usr/local/share/powershell /usr/share/miniconda || true
|
|
236
|
+
sudo apt-get clean || true
|
|
237
|
+
sudo docker image prune -af || true
|
|
238
|
+
df -h /
|
|
239
|
+
|
|
240
|
+
- uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4.3.0
|
|
241
|
+
if: steps.gate.outputs.run == 'true'
|
|
242
|
+
|
|
243
|
+
# thin layer FROM the SAME base the warmup ran inside -> the cache toolchain always matches the
|
|
244
|
+
# shipped image (rebuilding the full Dockerfile.worker from the checkout could drift from the
|
|
245
|
+
# published base and bake a cache that silently won't load). GHCR auth from the login step above.
|
|
246
|
+
- name: Build + push baked per-sm image (thin layer on the warmed base)
|
|
247
|
+
if: steps.gate.outputs.run == 'true'
|
|
248
|
+
uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
|
|
249
|
+
with:
|
|
250
|
+
context: .
|
|
251
|
+
file: docker/Dockerfile.kernelcache
|
|
252
|
+
push: true
|
|
253
|
+
tags: ghcr.io/freesolo-co/flash-worker:${{ inputs.target_tag_prefix || 'cu128' }}-${{ matrix.sm }}
|
|
254
|
+
provenance: false
|
|
255
|
+
build-args: |
|
|
256
|
+
BASE=${{ steps.base.outputs.ref }}
|
|
257
|
+
FP_CACHE=${{ steps.base.outputs.fp_cache }}
|
|
258
|
+
FP_BASE=${{ steps.base.outputs.fp_base }}
|
|
259
|
+
BASE_REVISION=${{ steps.base.outputs.revision }}
|