freesolo-flash-dev 0.2.27__tar.gz → 0.2.28__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-0.2.27 → freesolo_flash_dev-0.2.28}/PKG-INFO +1 -1
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/docs/cli-style/generate.py +3 -16
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/docs/cli-style/index.html +79 -131
- freesolo_flash_dev-0.2.28/docs/cli-style/themed-errors.png +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/catalog.py +11 -4
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/cli/__init__.py +71 -14
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/cli/commands.py +4 -13
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/cli/envpush.py +14 -24
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/cli/render.py +11 -20
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/cli/training_doc.py +6 -6
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/cost/spec.py +5 -6
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/accounting.py +1 -1
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/vram.py +22 -19
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/worker/__init__.py +2 -2
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/worker/adapter.py +5 -5
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/worker/hf.py +1 -1
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/worker/rl.py +10 -1
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/worker/wandb_log.py +2 -2
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/envs/registry.py +0 -25
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/_instance.py +1 -1
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/lambdalabs/__init__.py +1 -1
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/lambdalabs/jobs/__init__.py +2 -2
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/runpod/__init__.py +1 -1
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/runpod/jobs.py +1 -1
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/runpod/preload.py +2 -2
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/runpod/train/endpoints.py +2 -2
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/runner/__init__.py +28 -22
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/runner/checkpoints.py +5 -5
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/runner/deploy.py +17 -113
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/runner/lifecycle.py +35 -64
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/schema/__init__.py +3 -7
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/server/_runtime.py +0 -5
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/server/app.py +1 -1
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/server/run_registry.py +2 -4
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/spec.py +7 -3
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/pyproject.toml +2 -2
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_agent_flash_cli_contract.py +2 -10
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_algorithms.py +1 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_allocator.py +34 -2
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_backend_jobspec_contract.py +0 -2
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_billing_retry.py +7 -58
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_cancel_remote.py +23 -25
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_catalog_consistency.py +9 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_checkpoints.py +14 -14
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_cli_errors.py +4 -4
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_cli_estimate.py +2 -10
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_cli_managed.py +1 -1
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_cli_render_theme.py +77 -1
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_client_server_integration.py +1 -1
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_config_overrides.py +5 -3
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_cost_analytical.py +0 -8
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_disk_gb.py +1 -0
- freesolo_flash_dev-0.2.28/tests/test_env_no_install.py +59 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_env_publish.py +4 -5
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_env_push.py +29 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_env_rate_limit_resolve.py +1 -1
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_flash_mvp.py +1 -4
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_flash_worker.py +6 -6
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_gpus.py +3 -3
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_grpo_params.py +18 -23
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_grpo_sleep_gate.py +32 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_jobs.py +22 -69
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_kv_util.py +36 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_lambda_runner.py +9 -9
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_orchestrator_flash.py +5 -5
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_provider_routing.py +2 -3
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_resolve_params_b.py +8 -6
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_resume_on_retry.py +3 -3
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_runmgmt.py +66 -4
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_server_api.py +12 -12
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_server_billing.py +1 -1
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_spec_and_validation.py +8 -8
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_thinking_config.py +3 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_verifiers.py +13 -23
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_wandb_naming.py +2 -3
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_warmstart_cross_repo.py +4 -4
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_weight_cache.py +4 -4
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/uv.lock +1 -1
- freesolo_flash_dev-0.2.27/tests/test_env_install.py +0 -43
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/.dockerignore +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/.env.example +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/.github/workflows/auto-rebake.yml +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/.github/workflows/bake-kernel-cache.yml +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/.github/workflows/ci.yml +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/.github/workflows/main-source-guard.yml +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/.github/workflows/publish-dev.yml +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/.github/workflows/publish-image.yml +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/.github/workflows/publish.yml +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/.github/workflows/version-parity.yml +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/.github/workflows/worker-image.yml +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/.gitignore +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/Dockerfile +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/Dockerfile.worker +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/LICENSE +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/README.md +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/build/kernel_cache/.gitignore +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/build/kernel_cache/.keep +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/docker/Dockerfile.kernelcache +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/docker/Dockerfile.kernelcache.relayer +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/docker/bake_kernel_cache.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/docker/bake_pod_entry.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/docker/kernel_fingerprint.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/docker/make_rp_handler.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/docs/cli-style/README.md +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/docs/cli-style/preview.png +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/docs/cli-theme/README.md +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/docs/cli-theme/before-after-dark.png +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/docs/cli-theme/before-after-light.png +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/docs/cli-theme/gallery-dark.png +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/docs/cli-theme/gallery-light.png +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/docs/cli-theme/help-dark.png +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/docs/cli-theme/help-light.png +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/docs/kernel-cache.md +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/__init__.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/_channel.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/_fileio.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/_logging.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/_update_check.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/cli/__main__.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/client/__init__.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/client/config.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/client/http.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/client/runtime_secrets.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/client/specs.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/cost/__init__.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/cost/analytical.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/cost/facts.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/cost/types.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/__init__.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/chalk_kernels.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/multiturn_rollout.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/recipe.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/worker/__main__.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/worker/_pkg.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/worker/decoding.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/worker/finalize.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/worker/gpu_setup.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/worker/grpo.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/worker/heartbeat.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/worker/kernel_warmup.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/worker/lora.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/worker/packing.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/worker/perf/__init__.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/worker/perf/attn.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/worker/perf/diagnostics.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/worker/perf/lifecycle.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/worker/perf/liger.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/worker/perf/loraplus.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/worker/perf/memory.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/engine/worker/sft.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/envs/__init__.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/envs/adapter.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/envs/base.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/__init__.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/_auth.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/_http.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/_instance_bootstrap.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/_poll.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/allocator.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/base.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/lambdalabs/api.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/lambdalabs/auth.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/lambdalabs/gpus.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/lambdalabs/jobs/builders.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/lambdalabs/preflight.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/lambdalabs/pricing.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/lambdalabs/train.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/preflight.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/realized.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/runpod/api.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/runpod/auth.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/runpod/cost.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/runpod/gpus.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/runpod/keys.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/runpod/preflight.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/runpod/pricing.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/runpod/slots.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/runpod/train/__init__.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/providers/runpod/train/deps.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/py.typed +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/schema/fields.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/serve/__init__.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/serve/deploy.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/serve/export.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/serve/pricing.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/server/__init__.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/server/__main__.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/server/_deps.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/server/_locks.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/server/auth.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/server/billing.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/server/billing_retry.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/server/checkpoints.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/server/db.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/server/environment_registry.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/server/envs.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/server/reconcile.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/server/routes/__init__.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/server/routes/envs.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/server/routes/meta.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/server/routes/runs.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/flash/server/routes/serving.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/infisical-entrypoint.sh +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/scripts/build_dev_dist.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/__init__.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/_helpers/__init__.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/_helpers/runner.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/_helpers/specs.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/conftest.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/fixtures/math_eval.jsonl +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/fixtures/math_train.jsonl +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/live/__init__.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/live/conftest.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/live/test_lambda_live.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/live/test_runpod_live.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_chalk_kernels.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_cli_commands.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_cli_help.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_client.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_cost_equation.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_cost_estimate.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_cost_hardware.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_cost_models.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_cost_rewards.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_dev_channel.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_endpoint_name.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_envs_coverage.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_export.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_github_urlopen_retry.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_grpo_mask_aware.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_idle_endpoint_reaper.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_kernel_cache.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_kernel_fingerprint.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_logging.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_login_perms.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_managed_hf_repo.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_metrics_schema_agent_contract.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_mig_guard.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_multiturn_rollout.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_open_model_policy.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_packing.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_poll_helpers.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_preflight.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_provider_teardown_robustness.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_providers_symmetry.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_realized_cost.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_runpod_api_delete.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_runpod_key_fingerprint.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_runpod_key_waterfall.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_runpod_slots.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_serve.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_server_db.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_serving_contract.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_update_check.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_version.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_vl_warmstart_adapter_keys.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_vl_warmstart_recombine.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_vl_weight_sync.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_worker_dryrun.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_worker_hardexit.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_worker_image.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_worker_init_heartbeat.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_worker_stack.py +0 -0
- {freesolo_flash_dev-0.2.27 → freesolo_flash_dev-0.2.28}/tests/test_worker_thinking.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: freesolo-flash-dev
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.28
|
|
4
4
|
Summary: Flash — managed LoRA post-training (SFT/GRPO) for Freesolo environments, driven by the `flash` CLI
|
|
5
5
|
Project-URL: Homepage, https://github.com/freesolo-co/flash
|
|
6
6
|
Project-URL: Repository, https://github.com/freesolo-co/flash
|
|
@@ -300,20 +300,16 @@ def build_cases(tmp: Path):
|
|
|
300
300
|
cost_cfg.write_text(
|
|
301
301
|
'model = "Qwen/Qwen3.5-4B"\nalgorithm = "grpo"\n'
|
|
302
302
|
'[environment]\nid = "acme/math-grader"\n'
|
|
303
|
-
|
|
303
|
+
"[train]\nsteps = 150\nseeds = [0]\n"
|
|
304
304
|
'[gpu]\ntype = "RTX 5090"\n'
|
|
305
305
|
)
|
|
306
306
|
dry_cfg = tmp / "sft.toml"
|
|
307
307
|
dry_cfg.write_text(
|
|
308
308
|
'model = "Qwen/Qwen3.5-4B"\nalgorithm = "sft"\n'
|
|
309
309
|
'[environment]\nid = "acme/math-grader"\n'
|
|
310
|
-
|
|
310
|
+
"[train]\nepochs = 1\nseeds = [0]\n"
|
|
311
311
|
)
|
|
312
312
|
|
|
313
|
-
install_plain = (
|
|
314
|
-
"installed acme/math-grader; recorded in /Users/you/.flash/environments.json\n"
|
|
315
|
-
'use it via: [environment]\\nid = "acme/math-grader"'
|
|
316
|
-
)
|
|
317
313
|
push_plain = (
|
|
318
314
|
"published acme/math-grader\nreference it in your config:\n\n"
|
|
319
315
|
' [environment]\n id = "acme/math-grader"'
|
|
@@ -355,13 +351,7 @@ def build_cases(tmp: Path):
|
|
|
355
351
|
add_argv("flash models", "supported base models", ["models"])
|
|
356
352
|
add_argv("flash gpus", "managed GPU classes + $/hr", ["gpus"])
|
|
357
353
|
add_argv("flash env setup", "scaffold a starter environment", ["env", "setup"], cwd=setup_dir)
|
|
358
|
-
add_argv("flash env list", "
|
|
359
|
-
add_text(
|
|
360
|
-
"flash env install acme/math-grader",
|
|
361
|
-
"record a published environment",
|
|
362
|
-
lambda: render.env_installed("acme/math-grader", "/Users/you/.flash/environments.json"),
|
|
363
|
-
install_plain,
|
|
364
|
-
)
|
|
354
|
+
add_argv("flash env list", "local environment sources", ["env", "list"], cwd=list_dir)
|
|
365
355
|
add_text(
|
|
366
356
|
"flash env push --name math-grader .",
|
|
367
357
|
"package + upload a local environment",
|
|
@@ -478,9 +468,6 @@ def main():
|
|
|
478
468
|
# committed gallery doesn't churn on every regeneration.
|
|
479
469
|
sys.modules["flash.cli.commands"].new_run_id = lambda: "flash-1718900000-d0cf00ed"
|
|
480
470
|
with tempfile.TemporaryDirectory() as td:
|
|
481
|
-
# Point the installed-env registry at an empty temp manifest so `flash env list` never
|
|
482
|
-
# leaks a developer's real installed env slugs (~/.flash/envs.json) into the preview.
|
|
483
|
-
os.environ["FLASH_ENVS_MANIFEST"] = str(Path(td) / "empty-envs.json")
|
|
484
471
|
cases = build_cases(Path(td))
|
|
485
472
|
blocks = [HEAD]
|
|
486
473
|
for title, sub, plain, dark, light in cases:
|
|
@@ -58,7 +58,7 @@ footer code{color:var(--accent2)}
|
|
|
58
58
|
<span><i class="sw" style="background:#4d5470"></i>structure</span>
|
|
59
59
|
</div>
|
|
60
60
|
</header>
|
|
61
|
-
<section class="card"><div class="head"><code>flash version</code><span class="sub">package version</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre>flash 0
|
|
61
|
+
<section class="card"><div class="head"><code>flash version</code><span class="sub">package version</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre>flash 0+unknown</pre></div><div class="col after"><div class="tag"><span class="pill"></span>after · dark</div><pre><span style="color:#5f72ff;font-weight:700">flash</span> <span style="opacity:.62">v0+unknown</span></pre></div><div class="col after light"><div class="tag"><span class="pill"></span>after · light</div><pre><span style="color:#5f72ff;font-weight:700">flash</span> <span style="opacity:.62">v0+unknown</span></pre></div></div></section><section class="card"><div class="head"><code>flash login</code><span class="sub">verify + store your freesolo key</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre>✓ logged in to flash
|
|
62
62
|
|
|
63
63
|
account ml-team@acme.ai
|
|
64
64
|
org org_acme
|
|
@@ -92,13 +92,15 @@ footer code{color:var(--accent2)}
|
|
|
92
92
|
openbmb/MiniCPM5-1B
|
|
93
93
|
Qwen/Qwen3.5-2B
|
|
94
94
|
Qwen/Qwen3.5-4B
|
|
95
|
-
Qwen/Qwen3.5-9B
|
|
95
|
+
Qwen/Qwen3.5-9B
|
|
96
|
+
Qwen/Qwen3.6-35B-A3B</pre></div><div class="col after"><div class="tag"><span class="pill"></span>after · dark</div><pre><span style="color:#5f72ff;font-weight:700">flash</span> <span style="color:#4d5470">›</span> <span style="font-weight:700">models</span> <span style="color:#8a93a8">supported base models</span>
|
|
96
97
|
<span style="color:#4d5470">────────────────────────────────────────────────────────────────────────────</span>
|
|
97
98
|
<span style="color:#4d5470">•</span> <span style="color:#97a3ff">Qwen/Qwen3.5-0.8B</span>
|
|
98
99
|
<span style="color:#4d5470">•</span> <span style="color:#97a3ff">openbmb/MiniCPM5-1B</span>
|
|
99
100
|
<span style="color:#4d5470">•</span> <span style="color:#97a3ff">Qwen/Qwen3.5-2B</span>
|
|
100
101
|
<span style="color:#4d5470">•</span> <span style="color:#97a3ff">Qwen/Qwen3.5-4B</span>
|
|
101
102
|
<span style="color:#4d5470">•</span> <span style="color:#97a3ff">Qwen/Qwen3.5-9B</span>
|
|
103
|
+
<span style="color:#4d5470">•</span> <span style="color:#97a3ff">Qwen/Qwen3.6-35B-A3B</span>
|
|
102
104
|
|
|
103
105
|
<span style="color:#97a3ff">→</span> <span style="opacity:.62">train one with: flash train configs/rl.toml</span></pre></div><div class="col after light"><div class="tag"><span class="pill"></span>after · light</div><pre><span style="color:#5f72ff;font-weight:700">flash</span> <span style="color:#9aa1b5">›</span> <span style="font-weight:700">models</span> <span style="color:#5b6472">supported base models</span>
|
|
104
106
|
<span style="color:#9aa1b5">────────────────────────────────────────────────────────────────────────────</span>
|
|
@@ -107,56 +109,51 @@ Qwen/Qwen3.5-9B</pre></div><div class="col after"><div class="tag"><span class="
|
|
|
107
109
|
<span style="color:#9aa1b5">•</span> <span style="color:#3a46c8">Qwen/Qwen3.5-2B</span>
|
|
108
110
|
<span style="color:#9aa1b5">•</span> <span style="color:#3a46c8">Qwen/Qwen3.5-4B</span>
|
|
109
111
|
<span style="color:#9aa1b5">•</span> <span style="color:#3a46c8">Qwen/Qwen3.5-9B</span>
|
|
112
|
+
<span style="color:#9aa1b5">•</span> <span style="color:#3a46c8">Qwen/Qwen3.6-35B-A3B</span>
|
|
110
113
|
|
|
111
114
|
<span style="color:#3a46c8">→</span> <span style="opacity:.62">train one with: flash train configs/rl.toml</span></pre></div></div></section><section class="card"><div class="head"><code>flash gpus</code><span class="sub">managed GPU classes + $/hr</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre>gpu vram runpod$/hr
|
|
112
|
-
L4 24G 0.39
|
|
113
|
-
A40 48G 0.44
|
|
114
|
-
RTX 3090 24G 0.46
|
|
115
115
|
RTX A6000 48G 0.49
|
|
116
116
|
RTX 4090 24G 0.69
|
|
117
|
-
RTX 6000 Ada 48G 0.77
|
|
118
117
|
RTX 5090 32G 0.99
|
|
119
118
|
A100 PCIe 80G 1.39
|
|
120
119
|
A100 SXM 80G 1.49
|
|
121
120
|
RTX Pro 6000 96G 2.09
|
|
122
121
|
H100 80G 3.29
|
|
122
|
+
H200 141G 4.39
|
|
123
|
+
B200 180G 5.89
|
|
123
124
|
|
|
124
125
|
Tip: GPU class selection is fully automatic — the submit-time allocator always picks the
|
|
125
126
|
cheapest validated RunPod class that fits the model, so you don't pin a GPU type.</pre></div><div class="col after"><div class="tag"><span class="pill"></span>after · dark</div><pre><span style="color:#5f72ff;font-weight:700">flash</span> <span style="color:#4d5470">›</span> <span style="font-weight:700">gpus</span> <span style="color:#8a93a8">managed GPU classes</span>
|
|
126
127
|
<span style="color:#4d5470">────────────────────────────────────────────────────────────────────────────</span>
|
|
127
|
-
<span style="color:#8a93a8;font-weight:700">GPU </span> <span style="color:#8a93a8;font-weight:700">
|
|
128
|
-
<span style="color:#4d5470">────────────
|
|
129
|
-
<span style="color:#97a3ff">
|
|
130
|
-
<span style="color:#97a3ff">
|
|
131
|
-
<span style="color:#97a3ff">RTX
|
|
132
|
-
<span style="color:#97a3ff">
|
|
133
|
-
<span style="color:#97a3ff">
|
|
134
|
-
<span style="color:#97a3ff">RTX 6000
|
|
135
|
-
<span style="color:#97a3ff">
|
|
136
|
-
<span style="color:#97a3ff">
|
|
137
|
-
<span style="color:#97a3ff">
|
|
138
|
-
<span style="color:#97a3ff">RTX Pro 6000</span> <span style="color:#8a93a8">96 GB</span> <span style="color:#24c2a8">$2.09</span>
|
|
139
|
-
<span style="color:#97a3ff">H100 </span> <span style="color:#8a93a8">80 GB</span> <span style="color:#24c2a8">$3.29</span>
|
|
128
|
+
<span style="color:#8a93a8;font-weight:700">GPU </span> <span style="color:#8a93a8;font-weight:700"> VRAM</span> <span style="color:#8a93a8;font-weight:700"> $/HR</span>
|
|
129
|
+
<span style="color:#4d5470">──────────── ────── ─────</span>
|
|
130
|
+
<span style="color:#97a3ff">RTX A6000 </span> <span style="color:#8a93a8"> 48 GB</span> <span style="color:#24c2a8">$0.49</span>
|
|
131
|
+
<span style="color:#97a3ff">RTX 4090 </span> <span style="color:#8a93a8"> 24 GB</span> <span style="color:#24c2a8">$0.69</span>
|
|
132
|
+
<span style="color:#97a3ff">RTX 5090 </span> <span style="color:#8a93a8"> 32 GB</span> <span style="color:#24c2a8">$0.99</span>
|
|
133
|
+
<span style="color:#97a3ff">A100 PCIe </span> <span style="color:#8a93a8"> 80 GB</span> <span style="color:#24c2a8">$1.39</span>
|
|
134
|
+
<span style="color:#97a3ff">A100 SXM </span> <span style="color:#8a93a8"> 80 GB</span> <span style="color:#24c2a8">$1.49</span>
|
|
135
|
+
<span style="color:#97a3ff">RTX Pro 6000</span> <span style="color:#8a93a8"> 96 GB</span> <span style="color:#24c2a8">$2.09</span>
|
|
136
|
+
<span style="color:#97a3ff">H100 </span> <span style="color:#8a93a8"> 80 GB</span> <span style="color:#24c2a8">$3.29</span>
|
|
137
|
+
<span style="color:#97a3ff">H200 </span> <span style="color:#8a93a8">141 GB</span> <span style="color:#24c2a8">$4.39</span>
|
|
138
|
+
<span style="color:#97a3ff">B200 </span> <span style="color:#8a93a8">180 GB</span> <span style="color:#24c2a8">$5.89</span>
|
|
140
139
|
|
|
141
140
|
<span style="opacity:.62">Tip: GPU class selection is fully automatic — the submit-time allocator always picks the
|
|
142
141
|
cheapest validated RunPod class that fits the model, so you don't pin a GPU type.</span></pre></div><div class="col after light"><div class="tag"><span class="pill"></span>after · light</div><pre><span style="color:#5f72ff;font-weight:700">flash</span> <span style="color:#9aa1b5">›</span> <span style="font-weight:700">gpus</span> <span style="color:#5b6472">managed GPU classes</span>
|
|
143
142
|
<span style="color:#9aa1b5">────────────────────────────────────────────────────────────────────────────</span>
|
|
144
|
-
<span style="color:#5b6472;font-weight:700">GPU </span> <span style="color:#5b6472;font-weight:700">
|
|
145
|
-
<span style="color:#9aa1b5">────────────
|
|
146
|
-
<span style="color:#3a46c8">
|
|
147
|
-
<span style="color:#3a46c8">
|
|
148
|
-
<span style="color:#3a46c8">RTX
|
|
149
|
-
<span style="color:#3a46c8">
|
|
150
|
-
<span style="color:#3a46c8">
|
|
151
|
-
<span style="color:#3a46c8">RTX 6000
|
|
152
|
-
<span style="color:#3a46c8">
|
|
153
|
-
<span style="color:#3a46c8">
|
|
154
|
-
<span style="color:#3a46c8">
|
|
155
|
-
<span style="color:#3a46c8">RTX Pro 6000</span> <span style="color:#5b6472">96 GB</span> <span style="color:#0e7490">$2.09</span>
|
|
156
|
-
<span style="color:#3a46c8">H100 </span> <span style="color:#5b6472">80 GB</span> <span style="color:#0e7490">$3.29</span>
|
|
143
|
+
<span style="color:#5b6472;font-weight:700">GPU </span> <span style="color:#5b6472;font-weight:700"> VRAM</span> <span style="color:#5b6472;font-weight:700"> $/HR</span>
|
|
144
|
+
<span style="color:#9aa1b5">──────────── ────── ─────</span>
|
|
145
|
+
<span style="color:#3a46c8">RTX A6000 </span> <span style="color:#5b6472"> 48 GB</span> <span style="color:#0e7490">$0.49</span>
|
|
146
|
+
<span style="color:#3a46c8">RTX 4090 </span> <span style="color:#5b6472"> 24 GB</span> <span style="color:#0e7490">$0.69</span>
|
|
147
|
+
<span style="color:#3a46c8">RTX 5090 </span> <span style="color:#5b6472"> 32 GB</span> <span style="color:#0e7490">$0.99</span>
|
|
148
|
+
<span style="color:#3a46c8">A100 PCIe </span> <span style="color:#5b6472"> 80 GB</span> <span style="color:#0e7490">$1.39</span>
|
|
149
|
+
<span style="color:#3a46c8">A100 SXM </span> <span style="color:#5b6472"> 80 GB</span> <span style="color:#0e7490">$1.49</span>
|
|
150
|
+
<span style="color:#3a46c8">RTX Pro 6000</span> <span style="color:#5b6472"> 96 GB</span> <span style="color:#0e7490">$2.09</span>
|
|
151
|
+
<span style="color:#3a46c8">H100 </span> <span style="color:#5b6472"> 80 GB</span> <span style="color:#0e7490">$3.29</span>
|
|
152
|
+
<span style="color:#3a46c8">H200 </span> <span style="color:#5b6472">141 GB</span> <span style="color:#0e7490">$4.39</span>
|
|
153
|
+
<span style="color:#3a46c8">B200 </span> <span style="color:#5b6472">180 GB</span> <span style="color:#0e7490">$5.89</span>
|
|
157
154
|
|
|
158
155
|
<span style="opacity:.62">Tip: GPU class selection is fully automatic — the submit-time allocator always picks the
|
|
159
|
-
cheapest validated RunPod class that fits the model, so you don't pin a GPU type.</span></pre></div></div></section><section class="card"><div class="head"><code>flash env setup</code><span class="sub">scaffold a starter environment</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre>ensured environment.py, datasets/train.jsonl, configs
|
|
156
|
+
cheapest validated RunPod class that fits the model, so you don't pin a GPU type.</span></pre></div></div></section><section class="card"><div class="head"><code>flash env setup</code><span class="sub">scaffold a starter environment</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre>ensured environment.py, datasets/train.jsonl, configs/rl.toml, configs/sft.toml, TRAINING.md</pre></div><div class="col after"><div class="tag"><span class="pill"></span>after · dark</div><pre><span style="color:#5f72ff;font-weight:700">flash</span> <span style="color:#4d5470">›</span> <span style="font-weight:700">env setup</span> <span style="color:#8a93a8">starter Freesolo environment</span>
|
|
160
157
|
<span style="color:#4d5470">────────────────────────────────────────────────────────────────────────────</span>
|
|
161
158
|
<span style="color:#57ff8f;font-weight:700">✓</span> scaffold ready
|
|
162
159
|
|
|
@@ -164,6 +161,7 @@ cheapest validated RunPod class that fits the model, so you don't pin a GPU
|
|
|
164
161
|
<span style="color:#97a3ff">datasets/train.jsonl</span> <span style="opacity:.62">starter training rows</span>
|
|
165
162
|
<span style="color:#97a3ff">configs/rl.toml </span> <span style="opacity:.62">GRPO run config</span>
|
|
166
163
|
<span style="color:#97a3ff">configs/sft.toml </span> <span style="opacity:.62">SFT run config</span>
|
|
164
|
+
<span style="color:#97a3ff">TRAINING.md </span> <span style="opacity:.62">how to train well — read this first</span>
|
|
167
165
|
|
|
168
166
|
<span style="color:#97a3ff">→</span> <span style="opacity:.62">publish it: flash env push --name my-env .</span></pre></div><div class="col after light"><div class="tag"><span class="pill"></span>after · light</div><pre><span style="color:#5f72ff;font-weight:700">flash</span> <span style="color:#9aa1b5">›</span> <span style="font-weight:700">env setup</span> <span style="color:#5b6472">starter Freesolo environment</span>
|
|
169
167
|
<span style="color:#9aa1b5">────────────────────────────────────────────────────────────────────────────</span>
|
|
@@ -173,29 +171,19 @@ cheapest validated RunPod class that fits the model, so you don't pin a GPU
|
|
|
173
171
|
<span style="color:#3a46c8">datasets/train.jsonl</span> <span style="opacity:.62">starter training rows</span>
|
|
174
172
|
<span style="color:#3a46c8">configs/rl.toml </span> <span style="opacity:.62">GRPO run config</span>
|
|
175
173
|
<span style="color:#3a46c8">configs/sft.toml </span> <span style="opacity:.62">SFT run config</span>
|
|
174
|
+
<span style="color:#3a46c8">TRAINING.md </span> <span style="opacity:.62">how to train well — read this first</span>
|
|
176
175
|
|
|
177
|
-
<span style="color:#3a46c8">→</span> <span style="opacity:.62">publish it: flash env push --name my-env .</span></pre></div></div></section><section class="card"><div class="head"><code>flash env list</code><span class="sub">
|
|
176
|
+
<span style="color:#3a46c8">→</span> <span style="opacity:.62">publish it: flash env push --name my-env .</span></pre></div></div></section><section class="card"><div class="head"><code>flash env list</code><span class="sub">local environment sources</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre>local env sources (publish with `flash env push --name <name> <path>`):
|
|
178
177
|
.
|
|
179
|
-
environments/math-grader</pre></div><div class="col after"><div class="tag"><span class="pill"></span>after · dark</div><pre><span style="color:#5f72ff;font-weight:700">flash</span> <span style="color:#4d5470">›</span> <span style="font-weight:700">env list</span> <span style="color:#8a93a8">
|
|
178
|
+
environments/math-grader</pre></div><div class="col after"><div class="tag"><span class="pill"></span>after · dark</div><pre><span style="color:#5f72ff;font-weight:700">flash</span> <span style="color:#4d5470">›</span> <span style="font-weight:700">env list</span> <span style="color:#8a93a8">local environments</span>
|
|
180
179
|
<span style="color:#4d5470">────────────────────────────────────────────────────────────────────────────</span>
|
|
181
180
|
<span style="color:#8a93a8;font-weight:700">local sources</span><span style="opacity:.62"> (publish with flash env push --name <name> <path>)</span>
|
|
182
181
|
<span style="color:#4d5470">·</span> <span style="color:#97a3ff">.</span>
|
|
183
|
-
<span style="color:#4d5470">·</span> <span style="color:#97a3ff">environments/math-grader</span></pre></div><div class="col after light"><div class="tag"><span class="pill"></span>after · light</div><pre><span style="color:#5f72ff;font-weight:700">flash</span> <span style="color:#9aa1b5">›</span> <span style="font-weight:700">env list</span> <span style="color:#5b6472">
|
|
182
|
+
<span style="color:#4d5470">·</span> <span style="color:#97a3ff">environments/math-grader</span></pre></div><div class="col after light"><div class="tag"><span class="pill"></span>after · light</div><pre><span style="color:#5f72ff;font-weight:700">flash</span> <span style="color:#9aa1b5">›</span> <span style="font-weight:700">env list</span> <span style="color:#5b6472">local environments</span>
|
|
184
183
|
<span style="color:#9aa1b5">────────────────────────────────────────────────────────────────────────────</span>
|
|
185
184
|
<span style="color:#5b6472;font-weight:700">local sources</span><span style="opacity:.62"> (publish with flash env push --name <name> <path>)</span>
|
|
186
185
|
<span style="color:#9aa1b5">·</span> <span style="color:#3a46c8">.</span>
|
|
187
|
-
<span style="color:#9aa1b5">·</span> <span style="color:#3a46c8">environments/math-grader</span></pre></div></div></section><section class="card"><div class="head"><code>flash env
|
|
188
|
-
use it via: [environment]\nid = "acme/math-grader"</pre></div><div class="col after"><div class="tag"><span class="pill"></span>after · dark</div><pre><span style="color:#57ff8f;font-weight:700">✓</span> recorded <span style="font-weight:700">acme/math-grader</span>
|
|
189
|
-
<span style="opacity:.62"> manifest: /Users/you/.flash/environments.json</span>
|
|
190
|
-
|
|
191
|
-
<span style="opacity:.62">use it in your config:</span>
|
|
192
|
-
<span style="color:#97a3ff">[environment]</span>
|
|
193
|
-
<span style="color:#97a3ff">id = "acme/math-grader"</span></pre></div><div class="col after light"><div class="tag"><span class="pill"></span>after · light</div><pre><span style="color:#00695c;font-weight:700">✓</span> recorded <span style="font-weight:700">acme/math-grader</span>
|
|
194
|
-
<span style="opacity:.62"> manifest: /Users/you/.flash/environments.json</span>
|
|
195
|
-
|
|
196
|
-
<span style="opacity:.62">use it in your config:</span>
|
|
197
|
-
<span style="color:#3a46c8">[environment]</span>
|
|
198
|
-
<span style="color:#3a46c8">id = "acme/math-grader"</span></pre></div></div></section><section class="card"><div class="head"><code>flash env push --name math-grader .</code><span class="sub">package + upload a local environment</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre>published acme/math-grader
|
|
186
|
+
<span style="color:#9aa1b5">·</span> <span style="color:#3a46c8">environments/math-grader</span></pre></div></div></section><section class="card"><div class="head"><code>flash env push --name math-grader .</code><span class="sub">package + upload a local environment</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre>published acme/math-grader
|
|
199
187
|
reference it in your config:
|
|
200
188
|
|
|
201
189
|
[environment]
|
|
@@ -318,37 +306,37 @@ worker: pushing adapter -> acme/qwen3.5-4b-grpo-runs
|
|
|
318
306
|
<span style="color:#3a46c8">"error"</span><span style="color:#9aa1b5">:</span> <span style="color:#6d28d9">null</span>,
|
|
319
307
|
<span style="color:#3a46c8">"artifacts_dir"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">"acme/qwen3.5-4b-grpo-runs"</span>
|
|
320
308
|
}</pre></div></div></section><section class="card"><div class="head"><code>flash train --cost rl.toml</code><span class="sub">pre-flight cost estimate</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre>Run : Qwen/Qwen3.5-4B [GRPO, 150 steps]
|
|
321
|
-
GPU :
|
|
309
|
+
GPU : RTX A6000 on auto (48 GB; run needs >= 35 GB) @ $0.49/hr
|
|
322
310
|
Setup : 9.8 min (cold start: boot + deps + model load + vLLM init)
|
|
323
|
-
Per step :
|
|
324
|
-
Train :
|
|
325
|
-
Wall clock : 9.
|
|
326
|
-
TOTAL : $4.
|
|
311
|
+
Per step : 228.36 s
|
|
312
|
+
Train : 570.9 min
|
|
313
|
+
Wall clock : 9.68 h
|
|
314
|
+
TOTAL : $4.74
|
|
327
315
|
Notes :
|
|
328
316
|
- GRPO step = vLLM rollout of 64x8=512 completions @ 320 tok + reward (1.00s/completion, env acme/math-grader) + policy+reference update
|
|
329
317
|
- GPU sized with 10% VRAM headroom; static GPU $/hr</pre></div><div class="col after"><div class="tag"><span class="pill"></span>after · dark</div><pre><span style="color:#5f72ff;font-weight:700">flash</span> <span style="color:#4d5470">›</span> <span style="font-weight:700">train</span> <span style="color:#8a93a8">pre-flight cost estimate</span>
|
|
330
318
|
<span style="color:#4d5470">────────────────────────────────────────────────────────────────────────────</span>
|
|
331
319
|
<span style="color:#8a93a8">run </span> <span style="color:#4d5470">·</span> <span style="color:#97a3ff">Qwen/Qwen3.5-4B</span> <span style="opacity:.62">[GRPO, 150 steps]</span>
|
|
332
|
-
<span style="color:#8a93a8">gpu </span> <span style="color:#4d5470">·</span>
|
|
320
|
+
<span style="color:#8a93a8">gpu </span> <span style="color:#4d5470">·</span> RTX A6000 on auto <span style="opacity:.62">(48 GB; needs >= 35 GB)</span> @ <span style="color:#24c2a8">$0.49</span>/hr
|
|
333
321
|
<span style="color:#8a93a8">setup </span> <span style="color:#4d5470">·</span> 9.8 min <span style="opacity:.62">(cold start: boot + deps + model load + vLLM init)</span>
|
|
334
|
-
<span style="color:#8a93a8">per step </span> <span style="color:#4d5470">·</span>
|
|
335
|
-
<span style="color:#8a93a8">train </span> <span style="color:#4d5470">·</span>
|
|
336
|
-
<span style="color:#8a93a8">wall clock</span> <span style="color:#4d5470">·</span> 9.
|
|
322
|
+
<span style="color:#8a93a8">per step </span> <span style="color:#4d5470">·</span> 228.36 s
|
|
323
|
+
<span style="color:#8a93a8">train </span> <span style="color:#4d5470">·</span> 570.9 min
|
|
324
|
+
<span style="color:#8a93a8">wall clock</span> <span style="color:#4d5470">·</span> 9.68 h
|
|
337
325
|
<span style="color:#4d5470">────────────────────────────────────────────────────────────────────────────</span>
|
|
338
|
-
<span style="color:#8a93a8;font-weight:700">TOTAL </span> <span style="color:#4d5470">·</span> <span style="color:#24c2a8;font-weight:700">$4.
|
|
326
|
+
<span style="color:#8a93a8;font-weight:700">TOTAL </span> <span style="color:#4d5470">·</span> <span style="color:#24c2a8;font-weight:700">$4.74</span>
|
|
339
327
|
|
|
340
328
|
<span style="opacity:.62">notes</span>
|
|
341
329
|
<span style="color:#4d5470">·</span> <span style="opacity:.62">GRPO step = vLLM rollout of 64x8=512 completions @ 320 tok + reward (1.00s/completion, env acme/math-grader) + policy+reference update</span>
|
|
342
330
|
<span style="color:#4d5470">·</span> <span style="opacity:.62">GPU sized with 10% VRAM headroom; static GPU $/hr</span></pre></div><div class="col after light"><div class="tag"><span class="pill"></span>after · light</div><pre><span style="color:#5f72ff;font-weight:700">flash</span> <span style="color:#9aa1b5">›</span> <span style="font-weight:700">train</span> <span style="color:#5b6472">pre-flight cost estimate</span>
|
|
343
331
|
<span style="color:#9aa1b5">────────────────────────────────────────────────────────────────────────────</span>
|
|
344
332
|
<span style="color:#5b6472">run </span> <span style="color:#9aa1b5">·</span> <span style="color:#3a46c8">Qwen/Qwen3.5-4B</span> <span style="opacity:.62">[GRPO, 150 steps]</span>
|
|
345
|
-
<span style="color:#5b6472">gpu </span> <span style="color:#9aa1b5">·</span>
|
|
333
|
+
<span style="color:#5b6472">gpu </span> <span style="color:#9aa1b5">·</span> RTX A6000 on auto <span style="opacity:.62">(48 GB; needs >= 35 GB)</span> @ <span style="color:#0e7490">$0.49</span>/hr
|
|
346
334
|
<span style="color:#5b6472">setup </span> <span style="color:#9aa1b5">·</span> 9.8 min <span style="opacity:.62">(cold start: boot + deps + model load + vLLM init)</span>
|
|
347
|
-
<span style="color:#5b6472">per step </span> <span style="color:#9aa1b5">·</span>
|
|
348
|
-
<span style="color:#5b6472">train </span> <span style="color:#9aa1b5">·</span>
|
|
349
|
-
<span style="color:#5b6472">wall clock</span> <span style="color:#9aa1b5">·</span> 9.
|
|
335
|
+
<span style="color:#5b6472">per step </span> <span style="color:#9aa1b5">·</span> 228.36 s
|
|
336
|
+
<span style="color:#5b6472">train </span> <span style="color:#9aa1b5">·</span> 570.9 min
|
|
337
|
+
<span style="color:#5b6472">wall clock</span> <span style="color:#9aa1b5">·</span> 9.68 h
|
|
350
338
|
<span style="color:#9aa1b5">────────────────────────────────────────────────────────────────────────────</span>
|
|
351
|
-
<span style="color:#5b6472;font-weight:700">TOTAL </span> <span style="color:#9aa1b5">·</span> <span style="color:#0e7490;font-weight:700">$4.
|
|
339
|
+
<span style="color:#5b6472;font-weight:700">TOTAL </span> <span style="color:#9aa1b5">·</span> <span style="color:#0e7490;font-weight:700">$4.74</span>
|
|
352
340
|
|
|
353
341
|
<span style="opacity:.62">notes</span>
|
|
354
342
|
<span style="color:#9aa1b5">·</span> <span style="opacity:.62">GRPO step = vLLM rollout of 64x8=512 completions @ 320 tok + reward (1.00s/completion, env acme/math-grader) + policy+reference update</span>
|
|
@@ -362,7 +350,8 @@ Notes :
|
|
|
362
350
|
"id": "acme/math-grader",
|
|
363
351
|
"params": {},
|
|
364
352
|
"pip": [],
|
|
365
|
-
"secrets": []
|
|
353
|
+
"secrets": [],
|
|
354
|
+
"resolved_sha": ""
|
|
366
355
|
},
|
|
367
356
|
"train": {
|
|
368
357
|
"steps": null,
|
|
@@ -389,13 +378,12 @@ Notes :
|
|
|
389
378
|
"stop_sequences": []
|
|
390
379
|
},
|
|
391
380
|
"gpu": {
|
|
392
|
-
"type": "RTX
|
|
381
|
+
"type": "RTX A6000",
|
|
393
382
|
"disk_gb": 60,
|
|
394
383
|
"max_wall_seconds": 86400,
|
|
395
|
-
"max_retries":
|
|
384
|
+
"max_retries": 5,
|
|
396
385
|
"network_volume": null,
|
|
397
|
-
"network_volume_gb": 100
|
|
398
|
-
"datacenter": null
|
|
386
|
+
"network_volume_gb": 100
|
|
399
387
|
},
|
|
400
388
|
"run_id": "flash-1718900000-d0cf00ed",
|
|
401
389
|
"worker_env": {},
|
|
@@ -420,7 +408,8 @@ Notes :
|
|
|
420
408
|
<span style="color:#97a3ff">"id"</span><span style="color:#4d5470">:</span> <span style="color:#57ff8f">"acme/math-grader"</span>,
|
|
421
409
|
<span style="color:#97a3ff">"params"</span><span style="color:#4d5470">:</span> {},
|
|
422
410
|
<span style="color:#97a3ff">"pip"</span><span style="color:#4d5470">:</span> <span style="color:#57ff8f">[]</span>,
|
|
423
|
-
<span style="color:#97a3ff">"secrets"</span><span style="color:#4d5470">:</span> <span style="color:#57ff8f">[]</span
|
|
411
|
+
<span style="color:#97a3ff">"secrets"</span><span style="color:#4d5470">:</span> <span style="color:#57ff8f">[]</span>,
|
|
412
|
+
<span style="color:#97a3ff">"resolved_sha"</span><span style="color:#4d5470">:</span> <span style="color:#57ff8f">""</span>
|
|
424
413
|
},
|
|
425
414
|
<span style="color:#97a3ff">"train"</span><span style="color:#4d5470">:</span> {
|
|
426
415
|
<span style="color:#97a3ff">"steps"</span><span style="color:#4d5470">:</span> <span style="color:#9a8cff">null</span>,
|
|
@@ -445,13 +434,12 @@ Notes :
|
|
|
445
434
|
<span style="color:#97a3ff">"stop_sequences"</span><span style="color:#4d5470">:</span> <span style="color:#57ff8f">[]</span>
|
|
446
435
|
},
|
|
447
436
|
<span style="color:#97a3ff">"gpu"</span><span style="color:#4d5470">:</span> {
|
|
448
|
-
<span style="color:#97a3ff">"type"</span><span style="color:#4d5470">:</span> <span style="color:#57ff8f">"RTX
|
|
437
|
+
<span style="color:#97a3ff">"type"</span><span style="color:#4d5470">:</span> <span style="color:#57ff8f">"RTX A6000"</span>,
|
|
449
438
|
<span style="color:#97a3ff">"disk_gb"</span><span style="color:#4d5470">:</span> <span style="color:#24c2a8">60</span>,
|
|
450
439
|
<span style="color:#97a3ff">"max_wall_seconds"</span><span style="color:#4d5470">:</span> <span style="color:#24c2a8">86400</span>,
|
|
451
|
-
<span style="color:#97a3ff">"max_retries"</span><span style="color:#4d5470">:</span> <span style="color:#24c2a8">
|
|
440
|
+
<span style="color:#97a3ff">"max_retries"</span><span style="color:#4d5470">:</span> <span style="color:#24c2a8">5</span>,
|
|
452
441
|
<span style="color:#97a3ff">"network_volume"</span><span style="color:#4d5470">:</span> <span style="color:#9a8cff">null</span>,
|
|
453
|
-
<span style="color:#97a3ff">"network_volume_gb"</span><span style="color:#4d5470">:</span> <span style="color:#24c2a8">100</span
|
|
454
|
-
<span style="color:#97a3ff">"datacenter"</span><span style="color:#4d5470">:</span> <span style="color:#9a8cff">null</span>
|
|
442
|
+
<span style="color:#97a3ff">"network_volume_gb"</span><span style="color:#4d5470">:</span> <span style="color:#24c2a8">100</span>
|
|
455
443
|
},
|
|
456
444
|
<span style="color:#97a3ff">"run_id"</span><span style="color:#4d5470">:</span> <span style="color:#57ff8f">"flash-1718900000-d0cf00ed"</span>,
|
|
457
445
|
<span style="color:#97a3ff">"worker_env"</span><span style="color:#4d5470">:</span> {},
|
|
@@ -476,7 +464,8 @@ Notes :
|
|
|
476
464
|
<span style="color:#3a46c8">"id"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">"acme/math-grader"</span>,
|
|
477
465
|
<span style="color:#3a46c8">"params"</span><span style="color:#9aa1b5">:</span> {},
|
|
478
466
|
<span style="color:#3a46c8">"pip"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">[]</span>,
|
|
479
|
-
<span style="color:#3a46c8">"secrets"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">[]</span
|
|
467
|
+
<span style="color:#3a46c8">"secrets"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">[]</span>,
|
|
468
|
+
<span style="color:#3a46c8">"resolved_sha"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">""</span>
|
|
480
469
|
},
|
|
481
470
|
<span style="color:#3a46c8">"train"</span><span style="color:#9aa1b5">:</span> {
|
|
482
471
|
<span style="color:#3a46c8">"steps"</span><span style="color:#9aa1b5">:</span> <span style="color:#6d28d9">null</span>,
|
|
@@ -501,13 +490,12 @@ Notes :
|
|
|
501
490
|
<span style="color:#3a46c8">"stop_sequences"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">[]</span>
|
|
502
491
|
},
|
|
503
492
|
<span style="color:#3a46c8">"gpu"</span><span style="color:#9aa1b5">:</span> {
|
|
504
|
-
<span style="color:#3a46c8">"type"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">"RTX
|
|
493
|
+
<span style="color:#3a46c8">"type"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">"RTX A6000"</span>,
|
|
505
494
|
<span style="color:#3a46c8">"disk_gb"</span><span style="color:#9aa1b5">:</span> <span style="color:#0e7490">60</span>,
|
|
506
495
|
<span style="color:#3a46c8">"max_wall_seconds"</span><span style="color:#9aa1b5">:</span> <span style="color:#0e7490">86400</span>,
|
|
507
|
-
<span style="color:#3a46c8">"max_retries"</span><span style="color:#9aa1b5">:</span> <span style="color:#0e7490">
|
|
496
|
+
<span style="color:#3a46c8">"max_retries"</span><span style="color:#9aa1b5">:</span> <span style="color:#0e7490">5</span>,
|
|
508
497
|
<span style="color:#3a46c8">"network_volume"</span><span style="color:#9aa1b5">:</span> <span style="color:#6d28d9">null</span>,
|
|
509
|
-
<span style="color:#3a46c8">"network_volume_gb"</span><span style="color:#9aa1b5">:</span> <span style="color:#0e7490">100</span
|
|
510
|
-
<span style="color:#3a46c8">"datacenter"</span><span style="color:#9aa1b5">:</span> <span style="color:#6d28d9">null</span>
|
|
498
|
+
<span style="color:#3a46c8">"network_volume_gb"</span><span style="color:#9aa1b5">:</span> <span style="color:#0e7490">100</span>
|
|
511
499
|
},
|
|
512
500
|
<span style="color:#3a46c8">"run_id"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">"flash-1718900000-d0cf00ed"</span>,
|
|
513
501
|
<span style="color:#3a46c8">"worker_env"</span><span style="color:#9aa1b5">:</span> {},
|
|
@@ -629,69 +617,29 @@ flash-1718700000-12ab34cd queued SFT 0.0000
|
|
|
629
617
|
<span style="color:#3a46c8">flash-1718700000-12ab34cd</span> <span style="color:#5b6472">○ queued </span> <span style="color:#5b6472">SFT </span> <span style="color:#0e7490">$0.0000</span> <span style="color:#5b6472"> </span> openbmb/MiniCPM5-1B</pre></div></div></section><section class="card"><div class="head"><code>flash cancel <run></code><span class="sub">cancel a run</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre>{
|
|
630
618
|
"run_id": "flash-1718903000-e5f6a7b8",
|
|
631
619
|
"state": "cancelled"
|
|
632
|
-
}</pre></div><div class="col after"><div class="tag"><span class="pill"></span>after · dark</div><pre><span style="color:#
|
|
633
|
-
<span style="color:#
|
|
634
|
-
<span style="color:#
|
|
635
|
-
|
|
636
|
-
{
|
|
637
|
-
<span style="color:#97a3ff">"run_id"</span><span style="color:#4d5470">:</span> <span style="color:#57ff8f">"flash-1718903000-e5f6a7b8"</span>,
|
|
638
|
-
<span style="color:#97a3ff">"state"</span><span style="color:#4d5470">:</span> <span style="color:#57ff8f">"cancelled"</span>
|
|
639
|
-
}</pre></div><div class="col after light"><div class="tag"><span class="pill"></span>after · light</div><pre><span style="color:#5f72ff;font-weight:700">flash</span> <span style="color:#9aa1b5">›</span> <span style="font-weight:700">cancel</span>
|
|
640
|
-
<span style="color:#9aa1b5">────────────────────────────────────────────────────────────────────────────</span>
|
|
641
|
-
<span style="color:#5b6472">● cancelled</span> <span style="color:#3a46c8">flash-1718903000-e5f6a7b8</span>
|
|
642
|
-
|
|
643
|
-
{
|
|
644
|
-
<span style="color:#3a46c8">"run_id"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">"flash-1718903000-e5f6a7b8"</span>,
|
|
645
|
-
<span style="color:#3a46c8">"state"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">"cancelled"</span>
|
|
646
|
-
}</pre></div></div></section><section class="card"><div class="head"><code>flash deploy <run></code><span class="sub">serve a trained adapter</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre>{
|
|
620
|
+
}</pre></div><div class="col after"><div class="tag"><span class="pill"></span>after · dark</div><pre><span style="color:#57ff8f;font-weight:700">✓</span> cancel requested for <span style="color:#97a3ff">flash-1718903000-e5f6a7b8</span>
|
|
621
|
+
<span style="color:#8a93a8">● cancelled</span></pre></div><div class="col after light"><div class="tag"><span class="pill"></span>after · light</div><pre><span style="color:#00695c;font-weight:700">✓</span> cancel requested for <span style="color:#3a46c8">flash-1718903000-e5f6a7b8</span>
|
|
622
|
+
<span style="color:#5b6472">● cancelled</span></pre></div></div></section><section class="card"><div class="head"><code>flash deploy <run></code><span class="sub">serve a trained adapter</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre>{
|
|
647
623
|
"run_id": "flash-1718900000-a1b2c3d4",
|
|
648
624
|
"state": "deployed",
|
|
649
625
|
"mode": "dev",
|
|
650
626
|
"openai_model": "flash-1718900000-a1b2c3d4",
|
|
651
627
|
"endpoint_name": "https://api.freesolo.co/v1",
|
|
652
628
|
"gpu": "RTX 4090"
|
|
653
|
-
}</pre></div><div class="col after"><div class="tag"><span class="pill"></span>after · dark</div><pre><span style="color:#
|
|
654
|
-
<span style="color:#4d5470"
|
|
655
|
-
<span style="color:#
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
<span style="color:#
|
|
659
|
-
<span style="color:#
|
|
660
|
-
<span style="color:#97a3ff">"mode"</span><span style="color:#4d5470">:</span> <span style="color:#57ff8f">"dev"</span>,
|
|
661
|
-
<span style="color:#97a3ff">"openai_model"</span><span style="color:#4d5470">:</span> <span style="color:#57ff8f">"flash-1718900000-a1b2c3d4"</span>,
|
|
662
|
-
<span style="color:#97a3ff">"endpoint_name"</span><span style="color:#4d5470">:</span> <span style="color:#57ff8f">"https://api.freesolo.co/v1"</span>,
|
|
663
|
-
<span style="color:#97a3ff">"gpu"</span><span style="color:#4d5470">:</span> <span style="color:#57ff8f">"RTX 4090"</span>
|
|
664
|
-
}</pre></div><div class="col after light"><div class="tag"><span class="pill"></span>after · light</div><pre><span style="color:#5f72ff;font-weight:700">flash</span> <span style="color:#9aa1b5">›</span> <span style="font-weight:700">deploy</span>
|
|
665
|
-
<span style="color:#9aa1b5">────────────────────────────────────────────────────────────────────────────</span>
|
|
666
|
-
<span style="color:#6d28d9">● deployed</span> <span style="color:#3a46c8">flash-1718900000-a1b2c3d4</span>
|
|
667
|
-
|
|
668
|
-
{
|
|
669
|
-
<span style="color:#3a46c8">"run_id"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">"flash-1718900000-a1b2c3d4"</span>,
|
|
670
|
-
<span style="color:#3a46c8">"state"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">"deployed"</span>,
|
|
671
|
-
<span style="color:#3a46c8">"mode"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">"dev"</span>,
|
|
672
|
-
<span style="color:#3a46c8">"openai_model"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">"flash-1718900000-a1b2c3d4"</span>,
|
|
673
|
-
<span style="color:#3a46c8">"endpoint_name"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">"https://api.freesolo.co/v1"</span>,
|
|
674
|
-
<span style="color:#3a46c8">"gpu"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">"RTX 4090"</span>
|
|
675
|
-
}</pre></div></div></section><section class="card"><div class="head"><code>flash undeploy <run></code><span class="sub">tear down a serving endpoint</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre>{
|
|
629
|
+
}</pre></div><div class="col after"><div class="tag"><span class="pill"></span>after · dark</div><pre><span style="color:#57ff8f;font-weight:700">✓</span> deployed
|
|
630
|
+
<span style="color:#8a93a8">run </span> <span style="color:#4d5470">·</span> <span style="color:#97a3ff">flash-1718900000-a1b2c3d4</span>
|
|
631
|
+
<span style="color:#8a93a8">endpoint</span> <span style="color:#4d5470">·</span> <span style="color:#57ff8f">https://api.freesolo.co/v1</span>
|
|
632
|
+
<span style="color:#8a93a8">gpu </span> <span style="color:#4d5470">·</span> RTX 4090</pre></div><div class="col after light"><div class="tag"><span class="pill"></span>after · light</div><pre><span style="color:#00695c;font-weight:700">✓</span> deployed
|
|
633
|
+
<span style="color:#5b6472">run </span> <span style="color:#9aa1b5">·</span> <span style="color:#3a46c8">flash-1718900000-a1b2c3d4</span>
|
|
634
|
+
<span style="color:#5b6472">endpoint</span> <span style="color:#9aa1b5">·</span> <span style="color:#00695c">https://api.freesolo.co/v1</span>
|
|
635
|
+
<span style="color:#5b6472">gpu </span> <span style="color:#9aa1b5">·</span> RTX 4090</pre></div></div></section><section class="card"><div class="head"><code>flash undeploy <run></code><span class="sub">tear down a serving endpoint</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre>{
|
|
676
636
|
"run_id": "flash-1718900000-a1b2c3d4",
|
|
677
637
|
"deleted_endpoints": [
|
|
678
638
|
"flash-a1b2c3d4-serve"
|
|
679
639
|
]
|
|
680
|
-
}</pre></div><div class="col after"><div class="tag"><span class="pill"></span>after · dark</div><pre><span style="color:#
|
|
681
|
-
<span style="color:#
|
|
682
|
-
|
|
683
|
-
<span style="color:#97a3ff">"run_id"</span><span style="color:#4d5470">:</span> <span style="color:#57ff8f">"flash-1718900000-a1b2c3d4"</span>,
|
|
684
|
-
<span style="color:#97a3ff">"deleted_endpoints"</span><span style="color:#4d5470">:</span> [
|
|
685
|
-
<span style="color:#57ff8f">"flash-a1b2c3d4-serve"</span>
|
|
686
|
-
]
|
|
687
|
-
}</pre></div><div class="col after light"><div class="tag"><span class="pill"></span>after · light</div><pre><span style="color:#5f72ff;font-weight:700">flash</span> <span style="color:#9aa1b5">›</span> <span style="font-weight:700">undeploy</span>
|
|
688
|
-
<span style="color:#9aa1b5">────────────────────────────────────────────────────────────────────────────</span>
|
|
689
|
-
{
|
|
690
|
-
<span style="color:#3a46c8">"run_id"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">"flash-1718900000-a1b2c3d4"</span>,
|
|
691
|
-
<span style="color:#3a46c8">"deleted_endpoints"</span><span style="color:#9aa1b5">:</span> [
|
|
692
|
-
<span style="color:#00695c">"flash-a1b2c3d4-serve"</span>
|
|
693
|
-
]
|
|
694
|
-
}</pre></div></div></section><section class="card"><div class="head"><code>flash deployments</code><span class="sub">active serving deployments</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre>RUN_ID GPU ENDPOINT
|
|
640
|
+
}</pre></div><div class="col after"><div class="tag"><span class="pill"></span>after · dark</div><pre><span style="color:#57ff8f;font-weight:700">✓</span> torn down <span style="color:#97a3ff">flash-1718900000-a1b2c3d4</span>
|
|
641
|
+
<span style="opacity:.62"> deregistered flash-a1b2c3d4-serve</span></pre></div><div class="col after light"><div class="tag"><span class="pill"></span>after · light</div><pre><span style="color:#00695c;font-weight:700">✓</span> torn down <span style="color:#3a46c8">flash-1718900000-a1b2c3d4</span>
|
|
642
|
+
<span style="opacity:.62"> deregistered flash-a1b2c3d4-serve</span></pre></div></div></section><section class="card"><div class="head"><code>flash deployments</code><span class="sub">active serving deployments</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre>RUN_ID GPU ENDPOINT
|
|
695
643
|
flash-1718900000-a1b2c3d4 RTX 4090 https://api.freesolo.co/v1</pre></div><div class="col after"><div class="tag"><span class="pill"></span>after · dark</div><pre><span style="color:#5f72ff;font-weight:700">flash</span> <span style="color:#4d5470">›</span> <span style="font-weight:700">deployments</span> <span style="color:#8a93a8">1 active</span>
|
|
696
644
|
<span style="color:#4d5470">────────────────────────────────────────────────────────────────────────────</span>
|
|
697
645
|
<span style="color:#8a93a8;font-weight:700">RUN ID </span> <span style="color:#8a93a8;font-weight:700">GPU </span> <span style="color:#8a93a8;font-weight:700">ENDPOINT </span>
|
|
Binary file
|
|
@@ -39,6 +39,14 @@ class ModelInfo:
|
|
|
39
39
|
params: str
|
|
40
40
|
algos: tuple[str, ...]
|
|
41
41
|
min_vram_gb: int
|
|
42
|
+
# Total parameters in billions — the numeric model size the cost estimator + VRAM equations read
|
|
43
|
+
# DIRECTLY (no parsing of the ``params`` display string). Drives the memory/size terms (VRAM, disk,
|
|
44
|
+
# download), which always size the FULL checkpoint. REQUIRED: every ModelInfo must state it — a
|
|
45
|
+
# curated catalog model sets its true count, and the open-model policy passes the HF/estimated count
|
|
46
|
+
# (or 0.0 when the size is genuinely "unknown size"). ``test_every_catalog_entry_sets_params_b``
|
|
47
|
+
# asserts every curated MODELS entry sets it > 0, so a new entry can never silently fall back to a
|
|
48
|
+
# parsed string again.
|
|
49
|
+
params_b: float
|
|
42
50
|
quant: str = "bf16"
|
|
43
51
|
recommended_gpu: str = DEFAULT_GPU
|
|
44
52
|
# GRPO needs more VRAM than SFT (a colocated vLLM rollout engine holds a second copy of
|
|
@@ -70,10 +78,6 @@ class ModelInfo:
|
|
|
70
78
|
# the raw tokenizer count). Drives the GRPO fp32-logits memory term and the per-device
|
|
71
79
|
# completion cap. Curated per model below; defaults to the open-model fallback.
|
|
72
80
|
vocab_size: int = _DEFAULT_VOCAB_SIZE
|
|
73
|
-
# Total parameters in billions — the numeric model size the cost estimator reads directly
|
|
74
|
-
# (no parsing of the ``params`` display string). Drives the memory/size terms (VRAM, disk,
|
|
75
|
-
# download), which always size the FULL checkpoint. Curated per catalog model below.
|
|
76
|
-
params_b: float = 0.0
|
|
77
81
|
# Parameters ACTIVE per token in billions — only meaningful for an MoE, where a token routes
|
|
78
82
|
# through a small subset of experts. The cost estimator's per-token FLOPs/step-time term reads
|
|
79
83
|
# this (a token exercises only the active params), while VRAM/disk/download keep using the total
|
|
@@ -299,6 +303,9 @@ def _resolve_open_model(model_id: str, algo: str, gpu: str | None) -> ModelInfo:
|
|
|
299
303
|
id=model_id,
|
|
300
304
|
display_name=model_id,
|
|
301
305
|
params=params,
|
|
306
|
+
# Carry the estimated/HF param count straight through (0.0 when size is unknown) so downstream
|
|
307
|
+
# sizing reads ``params_b`` directly — no re-parsing the display string.
|
|
308
|
+
params_b=est.params_b or 0.0,
|
|
302
309
|
algos=ALGORITHMS,
|
|
303
310
|
min_vram_gb=math.ceil(est.est_gb) if est.est_gb else 24,
|
|
304
311
|
min_disk_gb=min_disk,
|