flash errors print one clean line; add the global --debug flag before
the subcommand (e.g. flash --debug train config.toml) for the full traceback.
Installation & CLI
flash: command not found
flash: command not found
flash command. Its install location must be
on your PATH.- If you installed with
uv tool install freesolo-flash, make sure uv’s tool bin directory is on yourPATH(runuv tool update-shell, then restart your shell). - Confirm the install with
flash version.
I installed `flash` but it's the wrong tool
I installed `flash` but it's the wrong tool
freesolo-flash. The bare flash name
belongs to an unrelated project. Reinstall the right one:Authentication
flash login fails or commands report 401 / invalid key
flash login fails or commands report 401 / invalid key
flash train --cost does not submit.- Create a key in your dashboard at freesolo.co.
- Log in once:
flash login --api-key <your-key>(or setFREESOLO_API_KEYinstead of passing--api-key). - Confirm who the stored key resolves to:
flash whoami.
Pointing at a non-default Freesolo deployment
Pointing at a non-default Freesolo deployment
https://api.freesolo.co. To target a different
deployment, set --freesolo-url (or FREESOLO_BASE_URL) at login.Environments
flash env push fails
flash env push fails
environment.py file with a
load_environment() function that returns a Freesolo environment. Then:your-org/math) to put in your config’s
[environment] id. If you pass --name namespace/name, the namespace must
match your Freesolo org; otherwise pass a bare name such as math.Worker import fails with ModuleNotFoundError
Worker import fails with ModuleNotFoundError
flash train --dry-run runs server-side submit preflights, but it does not
execute the GPU worker or prove every environment dependency is installed.
If flash log <run-id> shows
your environment.py failed while importing a task library, add that
package to [environment].pip, publish the environment, and submit again:pyproject.toml, requirements.txt, or lockfile bundled
with the environment; keep managed-run dependencies in [environment].pip.[environment].pip breaks training startup
[environment].pip breaks training startup
[environment].pip is for task dependencies imported by your environment. Do
not pin Flash’s managed training stack there, such as torch, trl, vllm,
peft, or bitsandbytes, unless your environment directly imports that
package. Extra pins can conflict with the worker’s tested training recipe.
Remove the pin and resubmit.flash env pull says the archive is too large
flash env pull says the archive is too large
I republished an environment and want to verify the data
I republished an environment and want to verify the data
flash env pull to inspect the exact packaged file:Environment won't import / name collision
Environment won't import / name collision
What id do I reference in my config?
What id do I reference in my config?
[environment] id must be a published Freesolo environment id, produced
by flash env push, for example your-org/your-env.
A local file path is not a valid id, so publish it first or reference an
existing published id. Use flash env pull your-org/your-env only when you
want a local copy to edit or inspect.Configuration
unsupported model '...'
unsupported model '...'
model must be one of the ids in the curated catalog. List the valid ids:Unknown config key or section rejected
Unknown config key or section rejected
[train] keys at parse time.
Check the key against the
configuration reference and run authenticated
server-side validation:[train] schema differences.unsupported algorithm
unsupported algorithm
algorithm must be sft (the default), grpo, or opd. Fix the value and
re-validate with --dry-run.Run rejected: training context exceeds serving context
Run rejected: training context exceeds serving context
max_model_len). A LoRA trained longer than it
is served wastes compute and learns positions never used at inference. SFT
checks train.max_context_tokens; GRPO and OPD check the rollout prompt plus
max_completion_tokens. Most models serve at 32768; Qwen/Qwen3.6-35B-A3B
serves at 4096. Lower max_context_tokens and, for GRPO/OPD,
max_completion_tokens to at or below the serving context. See context
window.Warm-start rank, alpha, or revision mismatch
Warm-start rank, alpha, or revision mismatch
train.lora_rank and train.lora_alpha when using init_from_adapter. A
pinned model_revision must match the source exactly. Use server-side
--dry-run to resolve and validate the source; local --cost may use
defaults and warn.The run used a different GPU than expected
The run used a different GPU than expected
[gpu] exact_type to an active
validated class from flash gpus. Add provider = "runpod", "lambda", or
"vast" only when the provider must also be fixed. These constraints persist
across retries and cost estimates.Run fit and resource use
GRPO costs or fits differently than SFT
GRPO costs or fits differently than SFT
group_size, reduce max_completion_tokens, reduce
max_context_tokens, or start with SFT.Pre-flight says the run is too large
Pre-flight says the run is too large
group_size, or a larger base model than the task needs. Reduce
max_context_tokens, max_completion_tokens, or group_size, or switch to
a smaller model.
If you recently enabled thinking = true, reasoning and the final answer
share the same token budget.Training runs
When am I charged for a run?
When am I charged for a run?
Run submit reports insufficient balance
Run submit reports insufficient balance
group_size, shorter
max_completion_tokens, and SFT smoke tests are the fastest ways to lower the
pre-flight estimate.GRPO reward is stuck at 0
GRPO reward is stuck at 0
Reward is stuck at 1 (or never moves)
Reward is stuck at 1 (or never moves)
Reward collapses to ~0 with `thinking = true`
Reward collapses to ~0 with `thinking = true`
thinking = true, the model emits a reasoning trace before its answer,
and that trace counts against the same max_completion_tokens budget as
the answer. A max_completion_tokens tuned for a non-thinking run is usually
too small once reasoning is added: the reasoning eats the budget and the actual
answer is truncated or never emitted. If your reward parses the answer (e.g.
extracts a JSON object), it then sees nothing and scores ~0 across the board —
even though the model is “working”.Fixes:- Raise
max_completion_tokensso the reasoning and the answer both fit (e.g. a task that needs ~200 answer tokens may needmax_completion_tokens = 2048with thinking on), and make suremax_context_tokensis large enough to hold the prompt plus that budget. - Optionally set
thinking_length_penalty_coefto nudge the model toward shorter reasoning so the answer reliably lands inside the budget. - Score the answer text by default. In thinking mode
response_textremains string-compatible answer text and also exposesresponse_text.completion,response_text.thinking, andresponse_text.rawfor rewards that intentionally inspect reasoning.
max_tokens or it returns empty content and
the judge silently scores 0.OPD run underperforms SFT, or its rollouts never terminate
OPD run underperforms SFT, or its rollouts never terminate
lora_rank and lora_alpha because the source
values are authoritative:"<sft-run-id>/step-N" for a saved checkpoint. Verify that
the selected teacher clearly beats the student on held-out task examples.There is no auxiliary EOS loss. For rollouts that reach
max_completion_tokens without stopping:- Start from an SFT adapter with the desired stopping behavior.
- Give the teacher a hard answer or reasoning budget in the system prompt.
- Add
stop_sequenceswhen the task has reliable textual terminators. - Track
truncated_rolloutsto diagnose termination.
kl_penalty_coef must be greater than 0.Did pressing Ctrl-C kill my run?
Did pressing Ctrl-C kill my run?
Ctrl-C during flash train detaches you; the run keeps going
on Freesolo. Re-follow it any time, and cancel explicitly if you mean to:flash cancel takes a long time to return
flash cancel takes a long time to return
cancelled when it completes.A capacity or resource-fit issue interrupted training
A capacity or resource-fit issue interrupted training
flash log <run-id> -f or poll status with
flash status <run-id> -f. If the same shape repeatedly fails before useful
metrics, reduce max_context_tokens, max_completion_tokens, or group_size.Serving
Deploy fails: run has no run-level adapter
Deploy fails: run has no run-level adapter
flash deploy <run-id> cannot serve it. The error lists the run’s
saved checkpoint steps and the exact command to use — deploy one of them
instead:Deploy or the first request is slow
Deploy or the first request is slow
How is serving billed?
How is serving billed?
flash undeploy <run-id> disables the alias and immutable revisions.Calling the endpoint from my own code is rejected
Calling the endpoint from my own code is rejected
openai_base_url from flash deployments --json, set model to the run
alias or a full immutable revision, and pass your Freesolo API key.401: missing or invalid key.402: insufficient org balance.403: the key’s org does not own the adapter.503: backend temporarily unavailable; retry with backoff.
Getting help
Still stuck? Add--debug to surface the full traceback, then reach out through
freesolo.co/contact with the run id (flash runs)
and the failing command.