freesolo-flash-dev 0.2.35__tar.gz → 0.2.37__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.35 → freesolo_flash_dev-0.2.37}/Dockerfile.worker +1 -1
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/PKG-INFO +6 -6
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/README.md +2 -2
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/docs/cli-style/generate.py +4 -2
- freesolo_flash_dev-0.2.37/docs/cli-style/index.html +343 -0
- freesolo_flash_dev-0.2.37/flash/adapter_artifacts.py +7 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/catalog.py +13 -20
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/cli/__init__.py +1 -1
- freesolo_flash_dev-0.2.37/flash/cli/_tty.py +32 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/cli/commands.py +77 -45
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/cli/envpush.py +58 -41
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/cli/render.py +3 -5
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/cli/training_doc.py +14 -4
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/client/__init__.py +9 -1
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/client/http.py +110 -6
- freesolo_flash_dev-0.2.37/flash/cost/spec.py +109 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/worker/__init__.py +6 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/worker/adapter.py +2 -1
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/worker/heartbeat.py +12 -1
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/worker/hf.py +5 -6
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/worker/lora.py +67 -14
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/worker/perf/__init__.py +0 -4
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/envs/adapter.py +3 -31
- freesolo_flash_dev-0.2.37/flash/envs/archive_policy.py +52 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/envs/loader.py +39 -36
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/envs/pull.py +154 -28
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/envs/registry.py +1 -1
- freesolo_flash_dev-0.2.37/flash/lora_rank.py +193 -0
- freesolo_flash_dev-0.2.37/flash/providers/_hf_retry.py +76 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/_poll.py +13 -4
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/lambdalabs/__init__.py +10 -11
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/lambdalabs/jobs/__init__.py +4 -3
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/runpod/jobs.py +23 -22
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/runpod/train/__init__.py +3 -54
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/runpod/train/deps.py +1 -1
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/runner/__init__.py +49 -4
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/runner/checkpoints.py +25 -7
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/runner/deploy.py +40 -23
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/runner/lifecycle.py +4 -4
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/schema/__init__.py +12 -2
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/serve/deploy.py +3 -41
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/server/_internal_client.py +79 -3
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/server/_runtime.py +23 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/server/app.py +1 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/server/environment_registry.py +19 -47
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/server/envs.py +149 -62
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/server/routes/envs.py +21 -1
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/server/routes/meta.py +7 -1
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/server/routes/serving.py +117 -6
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/server/run_registry.py +8 -18
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/pyproject.toml +8 -10
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/_helpers/specs.py +1 -1
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_agent_flash_cli_contract.py +1 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_algorithms.py +1 -1
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_backend_jobspec_contract.py +2 -1
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_catalog_consistency.py +18 -24
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_checkpoints.py +171 -25
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_cli_commands.py +87 -4
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_cli_estimate.py +13 -145
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_cli_render_theme.py +4 -8
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_client.py +77 -2
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_disk_gb.py +2 -0
- freesolo_flash_dev-0.2.37/tests/test_env_download.py +101 -0
- freesolo_flash_dev-0.2.37/tests/test_env_download_api.py +99 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_env_pull.py +6 -1
- freesolo_flash_dev-0.2.37/tests/test_env_pull_managed_control_plane.py +165 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_env_push.py +7 -7
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_envs_coverage.py +3 -2
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_gpus.py +2 -2
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_grpo_params.py +1 -0
- freesolo_flash_dev-0.2.37/tests/test_health_liveness.py +44 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_jobs.py +138 -0
- freesolo_flash_dev-0.2.37/tests/test_lora_rank_preflight.py +100 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_managed_hf_repo.py +2 -2
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_provider_routing.py +2 -2
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_runmgmt.py +88 -2
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_serve.py +11 -39
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_server_api.py +233 -8
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_serving_contract.py +14 -14
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_spec_and_validation.py +28 -7
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_thinking_config.py +2 -1
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_verifiers.py +94 -47
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_vl_warmstart_adapter_keys.py +48 -3
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_vl_warmstart_recombine.py +40 -11
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_wandb_naming.py +2 -1
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_weight_cache.py +3 -3
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_worker_init_heartbeat.py +54 -5
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/uv.lock +8 -8
- freesolo_flash_dev-0.2.35/docs/cli-style/index.html +0 -657
- freesolo_flash_dev-0.2.35/flash/cost/spec.py +0 -248
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/.dockerignore +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/.env.example +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/.github/workflows/auto-rebake.yml +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/.github/workflows/bake-kernel-cache.yml +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/.github/workflows/ci.yml +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/.github/workflows/main-source-guard.yml +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/.github/workflows/notify-tests-repo.yml +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/.github/workflows/publish-dev.yml +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/.github/workflows/publish-image.yml +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/.github/workflows/publish.yml +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/.github/workflows/version-parity.yml +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/.github/workflows/worker-image.yml +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/.gitignore +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/Dockerfile +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/LICENSE +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/build/kernel_cache/.gitignore +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/build/kernel_cache/.keep +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/docker/Dockerfile.kernelcache +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/docker/Dockerfile.kernelcache.relayer +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/docker/bake_kernel_cache.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/docker/bake_pod_entry.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/docker/kernel_fingerprint.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/docker/make_rp_handler.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/docs/cli-style/README.md +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/docs/cli-style/preview.png +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/docs/cli-style/themed-errors.png +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/docs/kernel-cache.md +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/__init__.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/_channel.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/_fileio.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/_logging.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/_update_check.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/cli/__main__.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/client/config.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/client/runtime_secrets.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/client/specs.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/cost/__init__.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/cost/analytical.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/cost/facts.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/cost/types.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/__init__.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/accounting.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/chalk_kernels.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/multiturn_rollout.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/recipe.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/vram.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/worker/__main__.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/worker/_pkg.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/worker/decoding.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/worker/finalize.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/worker/gpu_setup.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/worker/grpo.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/worker/kernel_warmup.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/worker/packing.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/worker/perf/attn.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/worker/perf/diagnostics.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/worker/perf/lifecycle.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/worker/perf/liger.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/worker/perf/loraplus.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/worker/perf/memory.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/worker/rl.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/worker/sft.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/engine/worker/wandb_log.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/envs/__init__.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/envs/base.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/__init__.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/_auth.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/_http.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/_instance.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/_instance_bootstrap.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/allocator.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/base.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/lambdalabs/api.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/lambdalabs/auth.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/lambdalabs/gpus.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/lambdalabs/jobs/builders.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/lambdalabs/preflight.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/lambdalabs/pricing.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/lambdalabs/train.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/preflight.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/realized.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/runpod/__init__.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/runpod/api.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/runpod/auth.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/runpod/cost.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/runpod/gpus.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/runpod/keys.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/runpod/preflight.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/runpod/preload.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/runpod/pricing.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/runpod/slots.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/providers/runpod/train/endpoints.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/py.typed +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/schema/fields.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/serve/__init__.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/serve/export.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/serve/pricing.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/server/__init__.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/server/__main__.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/server/_deps.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/server/_locks.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/server/auth.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/server/billing.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/server/billing_retry.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/server/checkpoints.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/server/db.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/server/reconcile.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/server/routes/__init__.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/server/routes/runs.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/flash/spec.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/infisical-entrypoint.sh +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/scripts/build_dev_dist.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/__init__.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/_helpers/__init__.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/_helpers/runner.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/conftest.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/fixtures/math_eval.jsonl +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/fixtures/math_train.jsonl +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/live/__init__.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/live/conftest.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/live/test_lambda_live.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/live/test_runpod_live.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_allocator.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_b200_rollout_opt.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_billing_retry.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_cancel_remote.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_chalk_kernels.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_charge_pricing.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_cli_errors.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_cli_help.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_cli_managed.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_client_server_integration.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_config_overrides.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_cost_analytical.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_cost_equation.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_cost_estimate.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_cost_hardware.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_cost_models.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_cost_rewards.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_dev_channel.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_endpoint_name.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_env_cache_evict.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_env_delete.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_env_no_install.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_env_publish.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_env_rate_limit_resolve.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_export.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_flash_mvp.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_flash_worker.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_flashinfer_cache_dirs.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_github_urlopen_retry.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_grpo_mask_aware.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_grpo_sleep_gate.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_idle_endpoint_reaper.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_internal_client.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_kernel_cache.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_kernel_fingerprint.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_kv_util.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_lambda_runner.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_logging.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_login_perms.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_metrics_schema_agent_contract.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_mig_guard.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_multiturn_rollout.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_oom_escalate_gpu.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_open_model_policy.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_orchestrator_flash.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_packing.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_poll_helpers.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_preflight.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_provider_teardown_robustness.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_providers_symmetry.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_realized_cost.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_resolve_params_b.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_resume_on_retry.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_runpod_api_delete.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_runpod_key_fingerprint.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_runpod_key_waterfall.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_runpod_slots.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_server_billing.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_server_db.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_sft_gc_off.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_update_check.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_version.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_vl_weight_sync.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_warmstart_cross_repo.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_worker_dryrun.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_worker_hardexit.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_worker_image.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_worker_stack.py +0 -0
- {freesolo_flash_dev-0.2.35 → freesolo_flash_dev-0.2.37}/tests/test_worker_thinking.py +0 -0
|
@@ -63,7 +63,7 @@ RUN pip install --no-cache-dir \
|
|
|
63
63
|
"tilelang==0.1.11" \
|
|
64
64
|
"apache-tvm-ffi==0.1.11" \
|
|
65
65
|
"hf_transfer" \
|
|
66
|
-
"freesolo>=0.2.
|
|
66
|
+
"freesolo>=0.2.54" \
|
|
67
67
|
"runpod"
|
|
68
68
|
# Gated-DeltaNet (Qwen3.5/3.6) runs on flash-linear-attention's Triton kernels. On consumer cards
|
|
69
69
|
# (Ampere/Ada/Blackwell) the Triton path is correct. On Hopper (sm90) fla's GDN chunk_bwd is
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: freesolo-flash-dev
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.37
|
|
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
|
|
@@ -18,7 +18,7 @@ Requires-Python: <3.13,>=3.11
|
|
|
18
18
|
Provides-Extra: dev
|
|
19
19
|
Requires-Dist: datasets>=2.19; extra == 'dev'
|
|
20
20
|
Requires-Dist: fastapi; extra == 'dev'
|
|
21
|
-
Requires-Dist: freesolo>=0.2.
|
|
21
|
+
Requires-Dist: freesolo>=0.2.54; extra == 'dev'
|
|
22
22
|
Requires-Dist: httpx>=0.27; extra == 'dev'
|
|
23
23
|
Requires-Dist: huggingface-hub>=0.34; extra == 'dev'
|
|
24
24
|
Requires-Dist: mypy>=1.13.0; extra == 'dev'
|
|
@@ -31,7 +31,7 @@ Provides-Extra: gpu
|
|
|
31
31
|
Requires-Dist: accelerate>=1.4; extra == 'gpu'
|
|
32
32
|
Requires-Dist: bitsandbytes>=0.49; extra == 'gpu'
|
|
33
33
|
Requires-Dist: datasets>=2.19; extra == 'gpu'
|
|
34
|
-
Requires-Dist: freesolo>=0.2.
|
|
34
|
+
Requires-Dist: freesolo>=0.2.54; extra == 'gpu'
|
|
35
35
|
Requires-Dist: huggingface-hub>=0.34; extra == 'gpu'
|
|
36
36
|
Requires-Dist: peft>=0.19; extra == 'gpu'
|
|
37
37
|
Requires-Dist: torch==2.10.0; extra == 'gpu'
|
|
@@ -41,7 +41,7 @@ Requires-Dist: vllm==0.19.1; extra == 'gpu'
|
|
|
41
41
|
Provides-Extra: server
|
|
42
42
|
Requires-Dist: datasets>=2.19; extra == 'server'
|
|
43
43
|
Requires-Dist: fastapi; extra == 'server'
|
|
44
|
-
Requires-Dist: freesolo>=0.2.
|
|
44
|
+
Requires-Dist: freesolo>=0.2.54; extra == 'server'
|
|
45
45
|
Requires-Dist: httpx>=0.27; extra == 'server'
|
|
46
46
|
Requires-Dist: huggingface-hub>=0.34; extra == 'server'
|
|
47
47
|
Requires-Dist: runpod-flash; extra == 'server'
|
|
@@ -62,7 +62,7 @@ The allocator picks the cheapest validated managed GPU class that fits the run.
|
|
|
62
62
|
- `flash checkpoints`, `flash deploy`, `flash chat` — serving for trained adapters,
|
|
63
63
|
including deployable intermediate RL checkpoints.
|
|
64
64
|
- **Freesolo SDK environments.** Every run names a Freesolo environment id.
|
|
65
|
-
Scaffold `environment.py` plus `
|
|
65
|
+
Scaffold `environment.py` plus `dataset/train.jsonl`, upload `.` or another
|
|
66
66
|
folder with `flash env push --name <name> <folder>`, then reference the
|
|
67
67
|
returned id. The worker loads it through `freesolo.environments`. There are no
|
|
68
68
|
built-in task environments. Single-turn and bounded multi-turn environments are
|
|
@@ -84,7 +84,7 @@ The allocator picks the cheapest validated managed GPU class that fits the run.
|
|
|
84
84
|
(task-specific grading lives with its example, not in the engine)
|
|
85
85
|
- `flash/envs/` — environment machinery: registry and the adapter that loads
|
|
86
86
|
Freesolo SDK environments onto the worker's interface
|
|
87
|
-
- `flash env setup` — scaffold a starter local Freesolo env, `
|
|
87
|
+
- `flash env setup` — scaffold a starter local Freesolo env, `dataset/train.jsonl`,
|
|
88
88
|
ready-to-run configs, and a `TRAINING.md` playbook with common failure modes and
|
|
89
89
|
mitigations
|
|
90
90
|
- `flash/serve/`, `flash/server/` — adapter serving and the FastAPI control
|
|
@@ -11,7 +11,7 @@ The allocator picks the cheapest validated managed GPU class that fits the run.
|
|
|
11
11
|
- `flash checkpoints`, `flash deploy`, `flash chat` — serving for trained adapters,
|
|
12
12
|
including deployable intermediate RL checkpoints.
|
|
13
13
|
- **Freesolo SDK environments.** Every run names a Freesolo environment id.
|
|
14
|
-
Scaffold `environment.py` plus `
|
|
14
|
+
Scaffold `environment.py` plus `dataset/train.jsonl`, upload `.` or another
|
|
15
15
|
folder with `flash env push --name <name> <folder>`, then reference the
|
|
16
16
|
returned id. The worker loads it through `freesolo.environments`. There are no
|
|
17
17
|
built-in task environments. Single-turn and bounded multi-turn environments are
|
|
@@ -33,7 +33,7 @@ The allocator picks the cheapest validated managed GPU class that fits the run.
|
|
|
33
33
|
(task-specific grading lives with its example, not in the engine)
|
|
34
34
|
- `flash/envs/` — environment machinery: registry and the adapter that loads
|
|
35
35
|
Freesolo SDK environments onto the worker's interface
|
|
36
|
-
- `flash env setup` — scaffold a starter local Freesolo env, `
|
|
36
|
+
- `flash env setup` — scaffold a starter local Freesolo env, `dataset/train.jsonl`,
|
|
37
37
|
ready-to-run configs, and a `TRAINING.md` playbook with common failure modes and
|
|
38
38
|
mitigations
|
|
39
39
|
- `flash/serve/`, `flash/server/` — adapter serving and the FastAPI control
|
|
@@ -127,7 +127,6 @@ class FakeClient:
|
|
|
127
127
|
"mode": "dev",
|
|
128
128
|
"openai_model": run_id,
|
|
129
129
|
"endpoint_name": "https://api.freesolo.co/v1",
|
|
130
|
-
"gpu": "RTX 4090",
|
|
131
130
|
}
|
|
132
131
|
|
|
133
132
|
def undeploy(self, run_id):
|
|
@@ -137,7 +136,10 @@ class FakeClient:
|
|
|
137
136
|
return [
|
|
138
137
|
{
|
|
139
138
|
"run_id": "flash-1718900000-a1b2c3d4",
|
|
140
|
-
"deployment": {
|
|
139
|
+
"deployment": {
|
|
140
|
+
"state": "ready",
|
|
141
|
+
"endpoint_name": "https://api.freesolo.co/v1",
|
|
142
|
+
},
|
|
141
143
|
}
|
|
142
144
|
]
|
|
143
145
|
|
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en"><head><meta charset="utf-8">
|
|
3
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
4
|
+
<title>Flash CLI - output style</title>
|
|
5
|
+
<style>
|
|
6
|
+
:root{--navy:#1b1b4b;--bg:#0a0a16;--ink:#cdd2e6;--mut:#8a93a8;--line:#23244a;--accent:#5f72ff;--accent2:#97a3ff;--green:#57ff8f}
|
|
7
|
+
*{box-sizing:border-box}
|
|
8
|
+
body{margin:0;background:radial-gradient(1200px 600px at 50% -10%,#5f72ff22,transparent),var(--bg);
|
|
9
|
+
color:var(--ink);font:15px/1.55 ui-sans-serif,-apple-system,"Segoe UI",Roboto,Inter,sans-serif}
|
|
10
|
+
.wrap{max-width:1320px;margin:0 auto;padding:56px 24px 80px}
|
|
11
|
+
.brand{display:inline-flex;align-items:center;gap:10px;font-weight:700}
|
|
12
|
+
.brand .dot{width:9px;height:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 14px var(--accent)}
|
|
13
|
+
.brand b{color:var(--accent)}
|
|
14
|
+
h1{font-size:30px;margin:18px 0 8px;letter-spacing:-.4px}
|
|
15
|
+
.lede{color:var(--mut);max-width:760px}
|
|
16
|
+
.legend{display:flex;gap:18px;flex-wrap:wrap;margin-top:22px;color:var(--mut);font-size:13px}
|
|
17
|
+
.legend span{display:inline-flex;align-items:center;gap:7px}
|
|
18
|
+
.sw{width:11px;height:11px;border-radius:3px;display:inline-block}
|
|
19
|
+
.card{border:1px solid var(--line);border-radius:14px;margin:22px 0;overflow:hidden;
|
|
20
|
+
box-shadow:0 1px 0 #ffffff0a inset,0 18px 40px -28px #000}
|
|
21
|
+
.card>.head{display:flex;align-items:baseline;gap:12px;padding:15px 18px;border-bottom:1px solid var(--line)}
|
|
22
|
+
.card>.head code{font:600 14px/1 ui-monospace,SFMono-Regular,Menlo,monospace}
|
|
23
|
+
.card>.head .sub{color:var(--mut);font-size:13px}
|
|
24
|
+
.cols{display:grid;grid-template-columns:1fr 1fr 1fr}
|
|
25
|
+
.col+.col{border-left:1px solid var(--line)}
|
|
26
|
+
.col .tag{display:flex;align-items:center;gap:8px;padding:9px 16px;color:var(--mut);font-size:11px;
|
|
27
|
+
letter-spacing:.14em;text-transform:uppercase;border-bottom:1px solid var(--line);background:#0d0d22}
|
|
28
|
+
.col .tag .pill{width:7px;height:7px;border-radius:50%}
|
|
29
|
+
.before .pill{background:#3a3c63}
|
|
30
|
+
.after .pill{background:var(--green);box-shadow:0 0 10px #57ff8f88}
|
|
31
|
+
pre{margin:0;padding:18px;overflow-x:auto;font:13px/1.5 ui-monospace,SFMono-Regular,Menlo,"Cascadia Code",monospace;
|
|
32
|
+
color:#aeb6cf;background:#0d0d22}
|
|
33
|
+
.after pre{background:#09091a}
|
|
34
|
+
.before pre{color:#868eaa}
|
|
35
|
+
/* the light column previews how the theme looks on a light terminal */
|
|
36
|
+
.light .tag{background:#eef0f7;color:#5b6472;border-bottom-color:#e2e5f0}
|
|
37
|
+
.light pre{background:#ffffff;color:#1b1b4b}
|
|
38
|
+
@media(max-width:900px){.cols{grid-template-columns:1fr}.col+.col{border-left:0;border-top:1px solid var(--line)}}
|
|
39
|
+
footer{color:var(--mut);font-size:13px;margin-top:48px;border-top:1px solid var(--line);padding-top:20px}
|
|
40
|
+
footer code{color:var(--accent2)}
|
|
41
|
+
</style></head><body><div class="wrap">
|
|
42
|
+
<header>
|
|
43
|
+
<div class="brand"><span class="dot"></span><span><b>flash</b> cli</span></div>
|
|
44
|
+
<h1>A standardized output theme for every command</h1>
|
|
45
|
+
<p class="lede">One visual language across the whole CLI, in the Freesolo website palette
|
|
46
|
+
(navy <code>#1b1b4b</code>, periwinkle <code>#5f72ff</code>, green <code>#57ff8f</code>): a brand
|
|
47
|
+
header, colored status badges, aligned tables, key/value panels, and syntax-highlighted JSON. Like
|
|
48
|
+
the website, it ships <b>light and dark</b> variants (auto-detected from the terminal background,
|
|
49
|
+
or forced with <code>FLASH_THEME</code>) — each command below shows both. The themed view
|
|
50
|
+
renders on an interactive terminal; piped or scripted output stays byte-for-byte plain, so
|
|
51
|
+
<code>jq</code>, scripts, and the agent contract are untouched.</p>
|
|
52
|
+
<div class="legend">
|
|
53
|
+
<span><i class="sw" style="background:#5f72ff"></i>periwinkle — accent / links</span>
|
|
54
|
+
<span><i class="sw" style="background:#57ff8f"></i>green — success / done</span>
|
|
55
|
+
<span><i class="sw" style="background:#24c2a8"></i>teal — amounts</span>
|
|
56
|
+
<span><i class="sw" style="background:#9a8cff"></i>indigo — literals</span>
|
|
57
|
+
<span><i class="sw" style="background:#ff6b6b"></i>red — failure</span>
|
|
58
|
+
<span><i class="sw" style="background:#4d5470"></i>structure</span>
|
|
59
|
+
</div>
|
|
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.2.36</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.2.36</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.2.36</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
|
+
|
|
63
|
+
account ml-team@acme.ai
|
|
64
|
+
org org_acme
|
|
65
|
+
user usr_4192
|
|
66
|
+
key fs_live_8Kd2… (freesolo key)</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> <span style="font-weight:700">logged in to flash</span>
|
|
67
|
+
|
|
68
|
+
<span style="opacity:.62">account</span> ml-team@acme.ai
|
|
69
|
+
<span style="opacity:.62">org </span> org_acme
|
|
70
|
+
<span style="opacity:.62">user </span> usr_4192
|
|
71
|
+
<span style="opacity:.62">key </span> fs_live_8Kd2… <span style="opacity:.62">(freesolo key)</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> <span style="font-weight:700">logged in to flash</span>
|
|
72
|
+
|
|
73
|
+
<span style="opacity:.62">account</span> ml-team@acme.ai
|
|
74
|
+
<span style="opacity:.62">org </span> org_acme
|
|
75
|
+
<span style="opacity:.62">user </span> usr_4192
|
|
76
|
+
<span style="opacity:.62">key </span> fs_live_8Kd2… <span style="opacity:.62">(freesolo key)</span></pre></div></div></section><section class="card"><div class="head"><code>flash whoami</code><span class="sub">identity behind the stored key</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre>logged in to flash
|
|
77
|
+
|
|
78
|
+
account ml-team@acme.ai
|
|
79
|
+
org org_acme
|
|
80
|
+
user usr_4192
|
|
81
|
+
key fs_live_8Kd2… (freesolo key)</pre></div><div class="col after"><div class="tag"><span class="pill"></span>after · dark</div><pre><span style="font-weight:700">logged in to flash</span>
|
|
82
|
+
|
|
83
|
+
<span style="opacity:.62">account</span> ml-team@acme.ai
|
|
84
|
+
<span style="opacity:.62">org </span> org_acme
|
|
85
|
+
<span style="opacity:.62">user </span> usr_4192
|
|
86
|
+
<span style="opacity:.62">key </span> fs_live_8Kd2… <span style="opacity:.62">(freesolo key)</span></pre></div><div class="col after light"><div class="tag"><span class="pill"></span>after · light</div><pre><span style="font-weight:700">logged in to flash</span>
|
|
87
|
+
|
|
88
|
+
<span style="opacity:.62">account</span> ml-team@acme.ai
|
|
89
|
+
<span style="opacity:.62">org </span> org_acme
|
|
90
|
+
<span style="opacity:.62">user </span> usr_4192
|
|
91
|
+
<span style="opacity:.62">key </span> fs_live_8Kd2… <span style="opacity:.62">(freesolo key)</span></pre></div></div></section><section class="card"><div class="head"><code>flash models</code><span class="sub">supported base models</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre>Qwen/Qwen3.5-0.8B
|
|
92
|
+
openbmb/MiniCPM5-1B
|
|
93
|
+
Qwen/Qwen3.5-2B
|
|
94
|
+
Qwen/Qwen3.5-4B
|
|
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>
|
|
97
|
+
<span style="color:#4d5470">────────────────────────────────────────────────────────────────────────────</span>
|
|
98
|
+
<span style="color:#4d5470">•</span> <span style="color:#97a3ff">Qwen/Qwen3.5-0.8B</span>
|
|
99
|
+
<span style="color:#4d5470">•</span> <span style="color:#97a3ff">openbmb/MiniCPM5-1B</span>
|
|
100
|
+
<span style="color:#4d5470">•</span> <span style="color:#97a3ff">Qwen/Qwen3.5-2B</span>
|
|
101
|
+
<span style="color:#4d5470">•</span> <span style="color:#97a3ff">Qwen/Qwen3.5-4B</span>
|
|
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>
|
|
104
|
+
|
|
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>
|
|
106
|
+
<span style="color:#9aa1b5">────────────────────────────────────────────────────────────────────────────</span>
|
|
107
|
+
<span style="color:#9aa1b5">•</span> <span style="color:#3a46c8">Qwen/Qwen3.5-0.8B</span>
|
|
108
|
+
<span style="color:#9aa1b5">•</span> <span style="color:#3a46c8">openbmb/MiniCPM5-1B</span>
|
|
109
|
+
<span style="color:#9aa1b5">•</span> <span style="color:#3a46c8">Qwen/Qwen3.5-2B</span>
|
|
110
|
+
<span style="color:#9aa1b5">•</span> <span style="color:#3a46c8">Qwen/Qwen3.5-4B</span>
|
|
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>
|
|
113
|
+
|
|
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 $/hr
|
|
115
|
+
RTX 4090 24G 0.69
|
|
116
|
+
RTX 5090 32G 0.99
|
|
117
|
+
A100 PCIe 80G 1.39
|
|
118
|
+
A100 SXM 80G 1.49
|
|
119
|
+
RTX Pro 6000 96G 2.09
|
|
120
|
+
H100 80G 3.29
|
|
121
|
+
H200 141G 4.39
|
|
122
|
+
B200 180G 5.89
|
|
123
|
+
|
|
124
|
+
Tip: GPU class selection is fully automatic — the submit-time allocator always picks the
|
|
125
|
+
cheapest validated managed 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
|
+
<span style="color:#4d5470">────────────────────────────────────────────────────────────────────────────</span>
|
|
127
|
+
<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>
|
|
128
|
+
<span style="color:#4d5470">──────────── ────── ─────</span>
|
|
129
|
+
<span style="color:#97a3ff">RTX 4090 </span> <span style="color:#8a93a8"> 24 GB</span> <span style="color:#24c2a8">$0.69</span>
|
|
130
|
+
<span style="color:#97a3ff">RTX 5090 </span> <span style="color:#8a93a8"> 32 GB</span> <span style="color:#24c2a8">$0.99</span>
|
|
131
|
+
<span style="color:#97a3ff">A100 PCIe </span> <span style="color:#8a93a8"> 80 GB</span> <span style="color:#24c2a8">$1.39</span>
|
|
132
|
+
<span style="color:#97a3ff">A100 SXM </span> <span style="color:#8a93a8"> 80 GB</span> <span style="color:#24c2a8">$1.49</span>
|
|
133
|
+
<span style="color:#97a3ff">RTX Pro 6000</span> <span style="color:#8a93a8"> 96 GB</span> <span style="color:#24c2a8">$2.09</span>
|
|
134
|
+
<span style="color:#97a3ff">H100 </span> <span style="color:#8a93a8"> 80 GB</span> <span style="color:#24c2a8">$3.29</span>
|
|
135
|
+
<span style="color:#97a3ff">H200 </span> <span style="color:#8a93a8">141 GB</span> <span style="color:#24c2a8">$4.39</span>
|
|
136
|
+
<span style="color:#97a3ff">B200 </span> <span style="color:#8a93a8">180 GB</span> <span style="color:#24c2a8">$5.89</span>
|
|
137
|
+
|
|
138
|
+
<span style="opacity:.62">Tip: GPU class selection is fully automatic — the submit-time allocator always picks the
|
|
139
|
+
cheapest validated managed 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>
|
|
140
|
+
<span style="color:#9aa1b5">────────────────────────────────────────────────────────────────────────────</span>
|
|
141
|
+
<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>
|
|
142
|
+
<span style="color:#9aa1b5">──────────── ────── ─────</span>
|
|
143
|
+
<span style="color:#3a46c8">RTX 4090 </span> <span style="color:#5b6472"> 24 GB</span> <span style="color:#0e7490">$0.69</span>
|
|
144
|
+
<span style="color:#3a46c8">RTX 5090 </span> <span style="color:#5b6472"> 32 GB</span> <span style="color:#0e7490">$0.99</span>
|
|
145
|
+
<span style="color:#3a46c8">A100 PCIe </span> <span style="color:#5b6472"> 80 GB</span> <span style="color:#0e7490">$1.39</span>
|
|
146
|
+
<span style="color:#3a46c8">A100 SXM </span> <span style="color:#5b6472"> 80 GB</span> <span style="color:#0e7490">$1.49</span>
|
|
147
|
+
<span style="color:#3a46c8">RTX Pro 6000</span> <span style="color:#5b6472"> 96 GB</span> <span style="color:#0e7490">$2.09</span>
|
|
148
|
+
<span style="color:#3a46c8">H100 </span> <span style="color:#5b6472"> 80 GB</span> <span style="color:#0e7490">$3.29</span>
|
|
149
|
+
<span style="color:#3a46c8">H200 </span> <span style="color:#5b6472">141 GB</span> <span style="color:#0e7490">$4.39</span>
|
|
150
|
+
<span style="color:#3a46c8">B200 </span> <span style="color:#5b6472">180 GB</span> <span style="color:#0e7490">$5.89</span>
|
|
151
|
+
|
|
152
|
+
<span style="opacity:.62">Tip: GPU class selection is fully automatic — the submit-time allocator always picks the
|
|
153
|
+
cheapest validated managed 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, dataset/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>
|
|
154
|
+
<span style="color:#4d5470">────────────────────────────────────────────────────────────────────────────</span>
|
|
155
|
+
<span style="color:#57ff8f;font-weight:700">✓</span> scaffold ready
|
|
156
|
+
|
|
157
|
+
<span style="color:#97a3ff">environment.py </span> <span style="opacity:.62">env entrypoint — edit the reward + prompt</span>
|
|
158
|
+
<span style="color:#97a3ff">dataset/train.jsonl</span> <span style="opacity:.62">starter training rows</span>
|
|
159
|
+
<span style="color:#97a3ff">configs/rl.toml </span> <span style="opacity:.62">GRPO run config</span>
|
|
160
|
+
<span style="color:#97a3ff">configs/sft.toml </span> <span style="opacity:.62">SFT run config</span>
|
|
161
|
+
<span style="color:#97a3ff">TRAINING.md </span> <span style="opacity:.62">how to train well — read this first</span>
|
|
162
|
+
|
|
163
|
+
<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>
|
|
164
|
+
<span style="color:#9aa1b5">────────────────────────────────────────────────────────────────────────────</span>
|
|
165
|
+
<span style="color:#00695c;font-weight:700">✓</span> scaffold ready
|
|
166
|
+
|
|
167
|
+
<span style="color:#3a46c8">environment.py </span> <span style="opacity:.62">env entrypoint — edit the reward + prompt</span>
|
|
168
|
+
<span style="color:#3a46c8">dataset/train.jsonl</span> <span style="opacity:.62">starter training rows</span>
|
|
169
|
+
<span style="color:#3a46c8">configs/rl.toml </span> <span style="opacity:.62">GRPO run config</span>
|
|
170
|
+
<span style="color:#3a46c8">configs/sft.toml </span> <span style="opacity:.62">SFT run config</span>
|
|
171
|
+
<span style="color:#3a46c8">TRAINING.md </span> <span style="opacity:.62">how to train well — read this first</span>
|
|
172
|
+
|
|
173
|
+
<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>`):
|
|
174
|
+
.
|
|
175
|
+
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>
|
|
176
|
+
<span style="color:#4d5470">────────────────────────────────────────────────────────────────────────────</span>
|
|
177
|
+
<span style="color:#8a93a8;font-weight:700">local sources</span><span style="opacity:.62"> (publish with flash env push --name <name> <path>)</span>
|
|
178
|
+
<span style="color:#4d5470">·</span> <span style="color:#97a3ff">.</span>
|
|
179
|
+
<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>
|
|
180
|
+
<span style="color:#9aa1b5">────────────────────────────────────────────────────────────────────────────</span>
|
|
181
|
+
<span style="color:#5b6472;font-weight:700">local sources</span><span style="opacity:.62"> (publish with flash env push --name <name> <path>)</span>
|
|
182
|
+
<span style="color:#9aa1b5">·</span> <span style="color:#3a46c8">.</span>
|
|
183
|
+
<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
|
|
184
|
+
reference it in your config:
|
|
185
|
+
|
|
186
|
+
[environment]
|
|
187
|
+
id = "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> published <span style="font-weight:700">acme/math-grader</span>
|
|
188
|
+
|
|
189
|
+
<span style="opacity:.62">reference it in your config:</span>
|
|
190
|
+
<span style="color:#97a3ff">[environment]</span>
|
|
191
|
+
<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> published <span style="font-weight:700">acme/math-grader</span>
|
|
192
|
+
|
|
193
|
+
<span style="opacity:.62">reference it in your config:</span>
|
|
194
|
+
<span style="color:#3a46c8">[environment]</span>
|
|
195
|
+
<span style="color:#3a46c8">id = "acme/math-grader"</span></pre></div></div></section><section class="card"><div class="head"><code>flash train rl.toml</code><span class="sub">submit a run and follow its logs</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre>error: [train] unknown key(s): seeds (allowed: advantage_clip, batch_size, epochs, group_size, hf_repo, init_from_adapter, kl_penalty_coef, learning_rate, lora_alpha, lora_rank, max_examples, max_length, max_steps, max_tokens, save_every, steps, stop_sequences, temperature, thinking_length_penalty_coef)
|
|
196
|
+
</pre></div><div class="col after"><div class="tag"><span class="pill"></span>after · dark</div><pre><span style="color:#ff6b6b;font-weight:700">✗</span> <span style="color:#ff6b6b;font-weight:700">error:</span> [train] unknown key(s): seeds (allowed: advantage_clip, batch_size, epochs, group_size, hf_repo, init_from_adapter, kl_penalty_coef, learning_rate, lora_alpha, lora_rank, max_examples, max_length, max_steps, max_tokens, save_every, steps, stop_sequences, temperature, thinking_length_penalty_coef)
|
|
197
|
+
</pre></div><div class="col after light"><div class="tag"><span class="pill"></span>after · light</div><pre><span style="color:#cc3b3b;font-weight:700">✗</span> <span style="color:#cc3b3b;font-weight:700">error:</span> [train] unknown key(s): seeds (allowed: advantage_clip, batch_size, epochs, group_size, hf_repo, init_from_adapter, kl_penalty_coef, learning_rate, lora_alpha, lora_rank, max_examples, max_length, max_steps, max_tokens, save_every, steps, stop_sequences, temperature, thinking_length_penalty_coef)
|
|
198
|
+
</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> </pre></div><div class="col after"><div class="tag"><span class="pill"></span>after · dark</div><pre> </pre></div><div class="col after light"><div class="tag"><span class="pill"></span>after · light</div><pre> </pre></div></div></section><section class="card"><div class="head"><code>flash train --dry-run sft.toml</code><span class="sub">validate a config locally</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre> </pre></div><div class="col after"><div class="tag"><span class="pill"></span>after · dark</div><pre> </pre></div><div class="col after light"><div class="tag"><span class="pill"></span>after · light</div><pre> </pre></div></div></section><section class="card"><div class="head"><code>flash status <run></code><span class="sub">a run's full status</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre>{
|
|
199
|
+
"run_id": "flash-1718900000-a1b2c3d4",
|
|
200
|
+
"state": "done",
|
|
201
|
+
"spec": {
|
|
202
|
+
"model": "Qwen/Qwen3.5-4B",
|
|
203
|
+
"algorithm": "grpo",
|
|
204
|
+
"gpu": {
|
|
205
|
+
"type": "RTX 5090"
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
"remote": {
|
|
209
|
+
"provider": "runpod",
|
|
210
|
+
"gpu": "RTX 5090"
|
|
211
|
+
},
|
|
212
|
+
"cost_usd": 1.8421,
|
|
213
|
+
"realized_cost_usd": 1.774,
|
|
214
|
+
"created_at": 1718896400.0,
|
|
215
|
+
"updated_at": 1718900000.0,
|
|
216
|
+
"error": null,
|
|
217
|
+
"artifacts_dir": "acme/qwen3.5-4b-grpo-runs"
|
|
218
|
+
}</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">status</span>
|
|
219
|
+
<span style="color:#4d5470">────────────────────────────────────────────────────────────────────────────</span>
|
|
220
|
+
<span style="color:#57ff8f">● done</span>
|
|
221
|
+
|
|
222
|
+
<span style="color:#8a93a8">run id </span> <span style="color:#4d5470">·</span> <span style="color:#97a3ff">flash-1718900000-a1b2c3d4</span>
|
|
223
|
+
<span style="color:#8a93a8">model </span> <span style="color:#4d5470">·</span> Qwen/Qwen3.5-4B
|
|
224
|
+
<span style="color:#8a93a8">algorithm</span> <span style="color:#4d5470">·</span> GRPO
|
|
225
|
+
<span style="color:#8a93a8">gpu </span> <span style="color:#4d5470">·</span> RTX 5090
|
|
226
|
+
<span style="color:#8a93a8">cost </span> <span style="color:#4d5470">·</span> <span style="color:#24c2a8">$1.8421</span>
|
|
227
|
+
<span style="color:#8a93a8">realized </span> <span style="color:#4d5470">·</span> <span style="color:#24c2a8">$1.7740</span>
|
|
228
|
+
<span style="color:#8a93a8">created </span> <span style="color:#4d5470">·</span> 2024-06-20 15:13 UTC
|
|
229
|
+
<span style="color:#8a93a8">updated </span> <span style="color:#4d5470">·</span> 2024-06-20 16:13 UTC
|
|
230
|
+
<span style="color:#8a93a8">artifacts</span> <span style="color:#4d5470">·</span> acme/qwen3.5-4b-grpo-runs
|
|
231
|
+
|
|
232
|
+
<span style="opacity:.62">details</span>
|
|
233
|
+
{
|
|
234
|
+
<span style="color:#97a3ff">"run_id"</span><span style="color:#4d5470">:</span> <span style="color:#57ff8f">"flash-1718900000-a1b2c3d4"</span>,
|
|
235
|
+
<span style="color:#97a3ff">"state"</span><span style="color:#4d5470">:</span> <span style="color:#57ff8f">"done"</span>,
|
|
236
|
+
<span style="color:#97a3ff">"spec"</span><span style="color:#4d5470">:</span> {
|
|
237
|
+
<span style="color:#97a3ff">"model"</span><span style="color:#4d5470">:</span> <span style="color:#57ff8f">"Qwen/Qwen3.5-4B"</span>,
|
|
238
|
+
<span style="color:#97a3ff">"algorithm"</span><span style="color:#4d5470">:</span> <span style="color:#57ff8f">"grpo"</span>,
|
|
239
|
+
<span style="color:#97a3ff">"gpu"</span><span style="color:#4d5470">:</span> {
|
|
240
|
+
<span style="color:#97a3ff">"type"</span><span style="color:#4d5470">:</span> <span style="color:#57ff8f">"RTX 5090"</span>
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
<span style="color:#97a3ff">"remote"</span><span style="color:#4d5470">:</span> {
|
|
244
|
+
<span style="color:#97a3ff">"gpu"</span><span style="color:#4d5470">:</span> <span style="color:#57ff8f">"RTX 5090"</span>
|
|
245
|
+
},
|
|
246
|
+
<span style="color:#97a3ff">"cost_usd"</span><span style="color:#4d5470">:</span> <span style="color:#24c2a8">1.8421</span>,
|
|
247
|
+
<span style="color:#97a3ff">"realized_cost_usd"</span><span style="color:#4d5470">:</span> <span style="color:#24c2a8">1.774</span>,
|
|
248
|
+
<span style="color:#97a3ff">"created_at"</span><span style="color:#4d5470">:</span> <span style="color:#24c2a8">1718896400.0</span>,
|
|
249
|
+
<span style="color:#97a3ff">"updated_at"</span><span style="color:#4d5470">:</span> <span style="color:#24c2a8">1718900000.0</span>,
|
|
250
|
+
<span style="color:#97a3ff">"error"</span><span style="color:#4d5470">:</span> <span style="color:#9a8cff">null</span>,
|
|
251
|
+
<span style="color:#97a3ff">"artifacts_dir"</span><span style="color:#4d5470">:</span> <span style="color:#57ff8f">"acme/qwen3.5-4b-grpo-runs"</span>
|
|
252
|
+
}</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">status</span>
|
|
253
|
+
<span style="color:#9aa1b5">────────────────────────────────────────────────────────────────────────────</span>
|
|
254
|
+
<span style="color:#00695c">● done</span>
|
|
255
|
+
|
|
256
|
+
<span style="color:#5b6472">run id </span> <span style="color:#9aa1b5">·</span> <span style="color:#3a46c8">flash-1718900000-a1b2c3d4</span>
|
|
257
|
+
<span style="color:#5b6472">model </span> <span style="color:#9aa1b5">·</span> Qwen/Qwen3.5-4B
|
|
258
|
+
<span style="color:#5b6472">algorithm</span> <span style="color:#9aa1b5">·</span> GRPO
|
|
259
|
+
<span style="color:#5b6472">gpu </span> <span style="color:#9aa1b5">·</span> RTX 5090
|
|
260
|
+
<span style="color:#5b6472">cost </span> <span style="color:#9aa1b5">·</span> <span style="color:#0e7490">$1.8421</span>
|
|
261
|
+
<span style="color:#5b6472">realized </span> <span style="color:#9aa1b5">·</span> <span style="color:#0e7490">$1.7740</span>
|
|
262
|
+
<span style="color:#5b6472">created </span> <span style="color:#9aa1b5">·</span> 2024-06-20 15:13 UTC
|
|
263
|
+
<span style="color:#5b6472">updated </span> <span style="color:#9aa1b5">·</span> 2024-06-20 16:13 UTC
|
|
264
|
+
<span style="color:#5b6472">artifacts</span> <span style="color:#9aa1b5">·</span> acme/qwen3.5-4b-grpo-runs
|
|
265
|
+
|
|
266
|
+
<span style="opacity:.62">details</span>
|
|
267
|
+
{
|
|
268
|
+
<span style="color:#3a46c8">"run_id"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">"flash-1718900000-a1b2c3d4"</span>,
|
|
269
|
+
<span style="color:#3a46c8">"state"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">"done"</span>,
|
|
270
|
+
<span style="color:#3a46c8">"spec"</span><span style="color:#9aa1b5">:</span> {
|
|
271
|
+
<span style="color:#3a46c8">"model"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">"Qwen/Qwen3.5-4B"</span>,
|
|
272
|
+
<span style="color:#3a46c8">"algorithm"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">"grpo"</span>,
|
|
273
|
+
<span style="color:#3a46c8">"gpu"</span><span style="color:#9aa1b5">:</span> {
|
|
274
|
+
<span style="color:#3a46c8">"type"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">"RTX 5090"</span>
|
|
275
|
+
}
|
|
276
|
+
},
|
|
277
|
+
<span style="color:#3a46c8">"remote"</span><span style="color:#9aa1b5">:</span> {
|
|
278
|
+
<span style="color:#3a46c8">"gpu"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">"RTX 5090"</span>
|
|
279
|
+
},
|
|
280
|
+
<span style="color:#3a46c8">"cost_usd"</span><span style="color:#9aa1b5">:</span> <span style="color:#0e7490">1.8421</span>,
|
|
281
|
+
<span style="color:#3a46c8">"realized_cost_usd"</span><span style="color:#9aa1b5">:</span> <span style="color:#0e7490">1.774</span>,
|
|
282
|
+
<span style="color:#3a46c8">"created_at"</span><span style="color:#9aa1b5">:</span> <span style="color:#0e7490">1718896400.0</span>,
|
|
283
|
+
<span style="color:#3a46c8">"updated_at"</span><span style="color:#9aa1b5">:</span> <span style="color:#0e7490">1718900000.0</span>,
|
|
284
|
+
<span style="color:#3a46c8">"error"</span><span style="color:#9aa1b5">:</span> <span style="color:#6d28d9">null</span>,
|
|
285
|
+
<span style="color:#3a46c8">"artifacts_dir"</span><span style="color:#9aa1b5">:</span> <span style="color:#00695c">"acme/qwen3.5-4b-grpo-runs"</span>
|
|
286
|
+
}</pre></div></div></section><section class="card"><div class="head"><code>flash runs</code><span class="sub">all runs and their state/cost</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre>RUN_ID STATE ALGO COST($) GPU MODEL
|
|
287
|
+
flash-1718903000-e5f6a7b8 running SFT 0.4210 L40S Qwen/Qwen3.5-9B
|
|
288
|
+
flash-1718900000-a1b2c3d4 done GRPO 1.8421 RTX 5090 Qwen/Qwen3.5-4B
|
|
289
|
+
flash-1718800000-99887766 failed GRPO 0.0712 Qwen/Qwen3.5-2B
|
|
290
|
+
flash-1718700000-12ab34cd queued SFT 0.0000 openbmb/MiniCPM5-1B</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">runs</span> <span style="color:#8a93a8">4 run(s)</span>
|
|
291
|
+
<span style="color:#4d5470">────────────────────────────────────────────────────────────────────────────</span>
|
|
292
|
+
<span style="color:#8a93a8;font-weight:700">RUN ID </span> <span style="color:#8a93a8;font-weight:700">STATE </span> <span style="color:#8a93a8;font-weight:700">ALGO</span> <span style="color:#8a93a8;font-weight:700"> COST</span> <span style="color:#8a93a8;font-weight:700">GPU </span> <span style="color:#8a93a8;font-weight:700">MODEL </span>
|
|
293
|
+
<span style="color:#4d5470">───────────────────────── ───────── ──── ─────── ──────── ───────────────────</span>
|
|
294
|
+
<span style="color:#97a3ff">flash-1718903000-e5f6a7b8</span> <span style="color:#5f72ff">● running</span> <span style="color:#8a93a8">SFT </span> <span style="color:#24c2a8">$0.4210</span> <span style="color:#8a93a8">L40S </span> Qwen/Qwen3.5-9B
|
|
295
|
+
<span style="color:#97a3ff">flash-1718900000-a1b2c3d4</span> <span style="color:#57ff8f">● done </span> <span style="color:#8a93a8">GRPO</span> <span style="color:#24c2a8">$1.8421</span> <span style="color:#8a93a8">RTX 5090</span> Qwen/Qwen3.5-4B
|
|
296
|
+
<span style="color:#97a3ff">flash-1718800000-99887766</span> <span style="color:#ff6b6b">● failed </span> <span style="color:#8a93a8">GRPO</span> <span style="color:#24c2a8">$0.0712</span> <span style="color:#8a93a8"> </span> Qwen/Qwen3.5-2B
|
|
297
|
+
<span style="color:#97a3ff">flash-1718700000-12ab34cd</span> <span style="color:#8a93a8">○ queued </span> <span style="color:#8a93a8">SFT </span> <span style="color:#24c2a8">$0.0000</span> <span style="color:#8a93a8"> </span> openbmb/MiniCPM5-1B</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">runs</span> <span style="color:#5b6472">4 run(s)</span>
|
|
298
|
+
<span style="color:#9aa1b5">────────────────────────────────────────────────────────────────────────────</span>
|
|
299
|
+
<span style="color:#5b6472;font-weight:700">RUN ID </span> <span style="color:#5b6472;font-weight:700">STATE </span> <span style="color:#5b6472;font-weight:700">ALGO</span> <span style="color:#5b6472;font-weight:700"> COST</span> <span style="color:#5b6472;font-weight:700">GPU </span> <span style="color:#5b6472;font-weight:700">MODEL </span>
|
|
300
|
+
<span style="color:#9aa1b5">───────────────────────── ───────── ──── ─────── ──────── ───────────────────</span>
|
|
301
|
+
<span style="color:#3a46c8">flash-1718903000-e5f6a7b8</span> <span style="color:#5f72ff">● running</span> <span style="color:#5b6472">SFT </span> <span style="color:#0e7490">$0.4210</span> <span style="color:#5b6472">L40S </span> Qwen/Qwen3.5-9B
|
|
302
|
+
<span style="color:#3a46c8">flash-1718900000-a1b2c3d4</span> <span style="color:#00695c">● done </span> <span style="color:#5b6472">GRPO</span> <span style="color:#0e7490">$1.8421</span> <span style="color:#5b6472">RTX 5090</span> Qwen/Qwen3.5-4B
|
|
303
|
+
<span style="color:#3a46c8">flash-1718800000-99887766</span> <span style="color:#cc3b3b">● failed </span> <span style="color:#5b6472">GRPO</span> <span style="color:#0e7490">$0.0712</span> <span style="color:#5b6472"> </span> Qwen/Qwen3.5-2B
|
|
304
|
+
<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>{
|
|
305
|
+
"run_id": "flash-1718903000-e5f6a7b8",
|
|
306
|
+
"state": "cancelled"
|
|
307
|
+
}</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>
|
|
308
|
+
<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>
|
|
309
|
+
<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>{
|
|
310
|
+
"run_id": "flash-1718900000-a1b2c3d4",
|
|
311
|
+
"state": "deployed",
|
|
312
|
+
"mode": "dev",
|
|
313
|
+
"openai_model": "flash-1718900000-a1b2c3d4",
|
|
314
|
+
"endpoint_name": "https://api.freesolo.co/v1"
|
|
315
|
+
}</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
|
|
316
|
+
<span style="color:#8a93a8">run </span> <span style="color:#4d5470">·</span> <span style="color:#97a3ff">flash-1718900000-a1b2c3d4</span>
|
|
317
|
+
<span style="color:#8a93a8">endpoint</span> <span style="color:#4d5470">·</span> <span style="color:#57ff8f">https://api.freesolo.co/v1</span>
|
|
318
|
+
<span style="color:#8a93a8">url </span> <span style="color:#4d5470">·</span> <span style="color:#97a3ff">https://api.freesolo.co/v1/v1</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> deployed
|
|
319
|
+
<span style="color:#5b6472">run </span> <span style="color:#9aa1b5">·</span> <span style="color:#3a46c8">flash-1718900000-a1b2c3d4</span>
|
|
320
|
+
<span style="color:#5b6472">endpoint</span> <span style="color:#9aa1b5">·</span> <span style="color:#00695c">https://api.freesolo.co/v1</span>
|
|
321
|
+
<span style="color:#5b6472">url </span> <span style="color:#9aa1b5">·</span> <span style="color:#3a46c8">https://api.freesolo.co/v1/v1</span></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>{
|
|
322
|
+
"run_id": "flash-1718900000-a1b2c3d4",
|
|
323
|
+
"deleted_endpoints": [
|
|
324
|
+
"flash-a1b2c3d4-serve"
|
|
325
|
+
]
|
|
326
|
+
}</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>
|
|
327
|
+
<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>
|
|
328
|
+
<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 STATE ENDPOINT DETAIL
|
|
329
|
+
flash-1718900000-a1b2c3d4 ready 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>
|
|
330
|
+
<span style="color:#4d5470">────────────────────────────────────────────────────────────────────────────</span>
|
|
331
|
+
<span style="color:#8a93a8;font-weight:700">RUN ID </span> <span style="color:#8a93a8;font-weight:700">STATE</span> <span style="color:#8a93a8;font-weight:700">ENDPOINT </span> <span style="color:#8a93a8;font-weight:700">DETAIL</span>
|
|
332
|
+
<span style="color:#4d5470">───────────────────────── ───── ────────────────────────── ──────</span>
|
|
333
|
+
<span style="color:#97a3ff">flash-1718900000-a1b2c3d4</span> <span style="color:#57ff8f">ready</span> <span style="color:#57ff8f">https://api.freesolo.co/v1</span> <span style="color:#8a93a8"> </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">deployments</span> <span style="color:#5b6472">1 active</span>
|
|
334
|
+
<span style="color:#9aa1b5">────────────────────────────────────────────────────────────────────────────</span>
|
|
335
|
+
<span style="color:#5b6472;font-weight:700">RUN ID </span> <span style="color:#5b6472;font-weight:700">STATE</span> <span style="color:#5b6472;font-weight:700">ENDPOINT </span> <span style="color:#5b6472;font-weight:700">DETAIL</span>
|
|
336
|
+
<span style="color:#9aa1b5">───────────────────────── ───── ────────────────────────── ──────</span>
|
|
337
|
+
<span style="color:#3a46c8">flash-1718900000-a1b2c3d4</span> <span style="color:#00695c">ready</span> <span style="color:#00695c">https://api.freesolo.co/v1</span> <span style="color:#5b6472"> </span></pre></div></div></section><section class="card"><div class="head"><code>flash chat <run> -m ...</code><span class="sub">chat with a deployed adapter</span></div><div class="cols"><div class="col before"><div class="tag"><span class="pill"></span>before</div><pre>The capital of France is Paris. It has been the country's political and cultural center since the 12th century.</pre></div><div class="col after"><div class="tag"><span class="pill"></span>after · dark</div><pre><span style="color:#97a3ff;font-weight:700">assistant</span>
|
|
338
|
+
The capital of France is Paris. It has been the country's political and cultural center since the 12th century.</pre></div><div class="col after light"><div class="tag"><span class="pill"></span>after · light</div><pre><span style="color:#3a46c8;font-weight:700">assistant</span>
|
|
339
|
+
The capital of France is Paris. It has been the country's political and cultural center since the 12th century.</pre></div></div></section>
|
|
340
|
+
<footer>Rendered from the real <code>flash</code> handlers via <code>FLASH_STYLE=1</code>. The
|
|
341
|
+
plain column is the exact machine output (<code>FLASH_STYLE=0</code> / non-TTY). Pure standard
|
|
342
|
+
library, no new dependencies. Regenerate with <code>uv run python docs/cli-style/generate.py</code>.</footer>
|
|
343
|
+
</div></body></html>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"""Shared adapter artifact filenames used by training and control-plane code."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
# The PEFT adapter weights file a deployable adapter must carry. Modern saves use safetensors,
|
|
6
|
+
# but older PEFT/default settings may emit adapter_model.bin.
|
|
7
|
+
ADAPTER_WEIGHT_FILES = ("adapter_model.safetensors", "adapter_model.bin")
|