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, but its install location has to 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
- 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.ModuleNotFoundError: No module named 'freesolo' (local authoring)
ModuleNotFoundError: No module named 'freesolo' (local authoring)
Worker import fails with ModuleNotFoundError
Worker import fails with ModuleNotFoundError
flash train --dry-run validates the config, but it does not prove every
remote 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 validate locally:unsupported algorithm
unsupported algorithm
algorithm must be sft (the default) or grpo. Fix the value and
re-validate with --dry-run.Run fit and resource use
GRPO costs or fits differently than SFT
GRPO costs or fits differently than SFT
group_size, reduce max_tokens, reduce max_length,
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_length, max_tokens, or group_size, or switch to a smaller model.
If you recently enabled thinking = true, remember that 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_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_tokens budget as the answer. A
max_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_tokensso the reasoning and the answer both fit (e.g. a task that needs ~200 answer tokens may needmax_tokens = 2048with thinking on), and make suremax_lengthis 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.Qwen3.5 thinking multi-turn SFT learns doubled thinking tags
Qwen3.5 thinking multi-turn SFT learns doubled thinking tags
Did pressing Ctrl-C kill my run?
Did pressing Ctrl-C kill my run?
Ctrl-C during flash train just 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_length, max_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> deregisters the adapter.Calling the endpoint from my own code is rejected
Calling the endpoint from my own code is rejected
flash deployments
as the base_url and the <run-id> as the model. The OpenAI SDK requires
an api_key, and the serving endpoint requires it — pass your Freesolo API key
(the same key flash login uses); serving authorizes every request against the
org that owns the adapter, so a placeholder key is rejected (401/403). See
Use it from your own code.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.