freesolo-flash 0.2.0__tar.gz → 0.2.2__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-0.2.0 → freesolo_flash-0.2.2}/.env.example +1 -1
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/PKG-INFO +1 -1
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/__init__.py +1 -1
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/cli/main/__init__.py +1 -1
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/client/http.py +1 -1
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/runpod/pricing.py +11 -2
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/server/auth.py +1 -1
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/pyproject.toml +1 -1
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/.dockerignore +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/.github/workflows/ci.yml +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/.github/workflows/main-source-guard.yml +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/.github/workflows/publish-image.yml +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/.github/workflows/publish.yml +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/.github/workflows/worker-image.yml +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/.gitignore +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/Dockerfile +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/Dockerfile.worker +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/LICENSE +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/README.md +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/docker/make_rp_handler.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/_fileio.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/_logging.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/catalog.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/cli/__init__.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/cli/main/__main__.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/cli/main/commands.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/cli/main/envpush.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/client/__init__.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/client/config.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/client/specs.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/engine/__init__.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/engine/accounting.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/engine/chalk_kernels.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/engine/multiturn_rollout.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/engine/recipe.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/engine/vram.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/engine/worker/__init__.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/engine/worker/__main__.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/engine/worker/lora.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/engine/worker/perf.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/envs/__init__.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/envs/adapter/__init__.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/envs/adapter/rubric.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/envs/base.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/envs/registry.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/mcp/__init__.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/mcp/server.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/__init__.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/_auth.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/_http.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/_poll.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/allocator.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/base.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/preflight.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/runpod/__init__.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/runpod/api.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/runpod/auth.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/runpod/gpus.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/runpod/jobs.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/runpod/preflight.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/runpod/train/__init__.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/runpod/train/deps.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/runpod/train/endpoints.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/vast/__init__.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/vast/_bootstrap.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/vast/api.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/vast/auth.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/vast/gpus.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/vast/jobs/__init__.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/vast/jobs/builders.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/vast/preflight.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/vast/pricing.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/providers/vast/train.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/py.typed +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/runner/__init__.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/runner/deploy.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/runner/lifecycle.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/schema/__init__.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/schema/fields.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/serve/__init__.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/serve/deploy.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/server/__init__.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/server/__main__.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/server/app.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/server/db.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/server/envs.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/flash/spec.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/__init__.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/_helpers/__init__.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/_helpers/runner.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/_helpers/specs.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/_helpers/vast.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/conftest.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/fixtures/math_eval.jsonl +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/fixtures/math_train.jsonl +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/live/__init__.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/live/conftest.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/live/test_runpod_live.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/live/test_vast_live.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_agent_slm_cli_contract.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_algorithms.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_allocator.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_backend_jobspec_contract.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_cancel_remote.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_catalog_consistency.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_chalk_kernels.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_cli_commands.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_cli_errors.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_cli_managed.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_client.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_client_server_integration.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_config_overrides.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_disk_gb.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_endpoint_name.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_env_install.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_env_publish.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_env_push.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_envs_coverage.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_flash_mvp.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_flash_worker.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_gpus.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_grpo_params.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_jobs.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_logging.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_login_perms.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_metrics_schema_agent_contract.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_multiturn_rollout.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_open_model_policy.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_orchestrator_flash.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_preflight.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_pricing_cache.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_provider_routing.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_providers_symmetry.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_runmgmt.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_runpod_api_delete.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_serve.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_serve_modes.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_server_api.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_spec_and_validation.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_thinking_config.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_vast_api.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_vast_offers.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_vast_runner.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_verifiers.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_version.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_wandb_naming.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_worker_dryrun.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_worker_hardexit.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_worker_stack.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/tests/test_worker_thinking.py +0 -0
- {freesolo_flash-0.2.0 → freesolo_flash-0.2.2}/uv.lock +0 -0
|
@@ -23,7 +23,7 @@ PRIME_API_KEY=
|
|
|
23
23
|
# flash's adapter registration calls to the freesolo serving app (below).
|
|
24
24
|
FREESOLO_INTERNAL_KEY=
|
|
25
25
|
# Where to verify user keys. In compose this is the backend on the internal network;
|
|
26
|
-
# defaults to https://api.freesolo.co when unset.
|
|
26
|
+
# defaults to https://api-dev.freesolo.co when unset.
|
|
27
27
|
FREESOLO_BASE_URL=http://backend:8000
|
|
28
28
|
|
|
29
29
|
# --- FreeSolo serving (adapter deploy/chat) ---
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: freesolo-flash
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.2
|
|
4
4
|
Summary: Flash — managed LoRA post-training (SFT/GRPO) for verifiers 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
|
|
@@ -79,7 +79,7 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
79
79
|
login.add_argument(
|
|
80
80
|
"--freesolo-url",
|
|
81
81
|
dest="freesolo_url",
|
|
82
|
-
help="freesolo backend base URL (default: FREESOLO_BASE_URL or https://api.freesolo.co)",
|
|
82
|
+
help="freesolo backend base URL (default: FREESOLO_BASE_URL or https://api-dev.freesolo.co)",
|
|
83
83
|
)
|
|
84
84
|
login.add_argument(
|
|
85
85
|
"--api-url", help="flash control-plane URL for training calls (default: FLASH_API_URL)"
|
|
@@ -29,7 +29,7 @@ class ApiError(ClientError):
|
|
|
29
29
|
# Login is handled by the freesolo backend (not the flash control plane): `flash login`
|
|
30
30
|
# verifies the user's freesolo API key here. The same key authenticates the flash
|
|
31
31
|
# control plane, which accepts freesolo-issued keys.
|
|
32
|
-
DEFAULT_FREESOLO_BASE_URL = "https://api.freesolo.co"
|
|
32
|
+
DEFAULT_FREESOLO_BASE_URL = "https://api-dev.freesolo.co"
|
|
33
33
|
FREESOLO_AUTH_VERIFY_PATH = "/api/auth/verify"
|
|
34
34
|
|
|
35
35
|
|
|
@@ -24,7 +24,7 @@ logger = get_logger(__name__)
|
|
|
24
24
|
|
|
25
25
|
CACHE_TTL_S = 6 * 3600.0 # 6h price cache
|
|
26
26
|
_CACHE_PATH = Path.home() / ".flash" / "gpu_rates.json"
|
|
27
|
-
_MEM: dict = {"ts": 0.0, "rates": {}}
|
|
27
|
+
_MEM: dict = {"ts": 0.0, "rates": {}, "failed_ts": 0.0, "warned": False}
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
def _static_rates() -> dict[str, float]:
|
|
@@ -76,6 +76,12 @@ def live_rates(refresh: bool = False) -> dict[str, float]:
|
|
|
76
76
|
if not refresh:
|
|
77
77
|
if _MEM["rates"] and now - _MEM["ts"] < CACHE_TTL_S:
|
|
78
78
|
return {**static, **_MEM["rates"]}
|
|
79
|
+
# A recent live fetch FAILED (e.g. the client has no `runpod` module, no network, or no
|
|
80
|
+
# RunPod key — none of which change mid-process). The static rates are correct, so don't
|
|
81
|
+
# re-attempt (and re-warn) on every lookup; without this a single `flash gpus`/`train`
|
|
82
|
+
# logs the warning once per GPU class. Retry only after the cache TTL.
|
|
83
|
+
if _MEM["failed_ts"] and now - _MEM["failed_ts"] < CACHE_TTL_S:
|
|
84
|
+
return static
|
|
79
85
|
try:
|
|
80
86
|
disk = json.loads(_CACHE_PATH.read_text())
|
|
81
87
|
if now - float(disk.get("ts", 0)) < CACHE_TTL_S and disk.get("rates"):
|
|
@@ -87,7 +93,10 @@ def live_rates(refresh: bool = False) -> dict[str, float]:
|
|
|
87
93
|
try:
|
|
88
94
|
fetched = _fetch_live_rates()
|
|
89
95
|
except Exception as exc:
|
|
90
|
-
|
|
96
|
+
_MEM["failed_ts"] = now # remember the failure so we don't refetch/rewarn every call
|
|
97
|
+
if not _MEM["warned"]: # warn once per process, not once per GPU class
|
|
98
|
+
logger.warning("live GPU pricing unavailable (%s); using static rates", exc)
|
|
99
|
+
_MEM["warned"] = True
|
|
91
100
|
fetched = {}
|
|
92
101
|
if fetched:
|
|
93
102
|
_MEM.update(ts=now, rates=fetched)
|
|
@@ -25,7 +25,7 @@ INTERNAL_KEY_ENV = "FREESOLO_INTERNAL_KEY"
|
|
|
25
25
|
# the bearer to this control plane. Any non-internal token is verified against the freesolo
|
|
26
26
|
# backend and (on success) resolved to a per-token identity.
|
|
27
27
|
FREESOLO_BASE_URL_ENV = "FREESOLO_BASE_URL"
|
|
28
|
-
DEFAULT_FREESOLO_BASE_URL = "https://api.freesolo.co"
|
|
28
|
+
DEFAULT_FREESOLO_BASE_URL = "https://api-dev.freesolo.co"
|
|
29
29
|
_VERIFY_TIMEOUT_S = 5.0
|
|
30
30
|
_VERIFY_CACHE_TTL_S = 300.0 # short TTL so it isn't a backend round-trip per request
|
|
31
31
|
# Negative verdicts get a much SHORTER TTL than positives. The freesolo verify endpoint
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "freesolo-flash"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.2"
|
|
4
4
|
description = "Flash — managed LoRA post-training (SFT/GRPO) for verifiers environments, driven by the `flash` CLI"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
# RunPod Flash supports Python 3.10-3.12 (not 3.13 yet).
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|