> ## Documentation Index
> Fetch the complete documentation index at: https://docs.platform.toloka.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Training errors

> Find exact CLI, input-validation, cost-estimate, and Training Run errors with corrective actions.

Search this page for the message printed by the CLI. Dynamic IDs, names, counts, and durations appear as `…`.

## Sign-in and project selection

| What you see | Meaning | Fix |
| - | - | - |
| `Not logged in. Run toloka login once to sign in through your browser on this machine:` | No stored browser session or API key is available. | Run `toloka login`, or configure `TOLOKA_API_KEY` for noninteractive automation. |
| `No project selected. Run toloka project create for a new project, toloka project add for an existing project, or cd into a checkout.` | The command cannot resolve a project. | Create, add, or switch a project, or pass `--project-id`. |
| `Training … was not found or is ambiguous.` | A name matched zero or multiple Trainings. | Run `toloka training list` and pass the `trg.…` ID. |

## Dataset and upload errors

| What you see | Meaning | Fix |
| - | - | - |
| `Dataset "…" does not exist in project …` | The target dataset does not exist. | Run `toloka dataset create <name>`, then upload again. |
| `Another upload is already in progress. Complete or cancel it before starting a new one.` | That dataset already has a pending upload. | Wait for it to finish, or upload to another dataset. |
| `The … selection contains … invalid example(s)` | One or more selected training or validation rows violate the chat contract. | Dataset rows cannot be edited or removed. Upload corrected rows to a new dataset, run `toloka training update <training> --dataset <new-dataset>`, then calculate again. |
| `The … selection contains no valid examples` | The selected split parts contain no usable rows. | Add valid rows or select the intended train parts, update the Training to a new slice, and calculate again. |
| `The … selection has … valid rows; supported range is 1-100000` | The selection is empty or too large. | Select between 1 and 100,000 valid rows; see [Training limits](https://docs.platform.toloka.ai/docs/train/reference/limits.md#training-and-selection-limits). |
| `The training selection leaves … rows for training; batchSize … needs at least that many rows` | The selected train parts have too few valid rows, after any fallback validation holdout. | Add train rows and freeze a new slice, or lower `--batch-size`. The smallest batch is 8. If the slice supplies no validation rows, the 10% holdout must also fit. |
| `The … selection has an example above … tokens; raise maxSequenceLength … or shorten the examples` | An example exceeds the Training's token budget. | Raise `--max-sequence-length` up to 16,384 or shorten the example. |

A valid training row must have a `messages` array, at least one user turn, and a final assistant turn with content. System turns must precede the conversation, repeated adjacent roles are rejected except for system and tool turns, and tool calls must have matching tool responses. See [How Training works](https://docs.platform.toloka.ai/docs/train/concepts/how-training-works.md#data).

## Dataset selection errors

These errors come from `--dataset`, `--slice`, `--split-column`, and `--parts`. [Slices and split columns](https://docs.platform.toloka.ai/docs/train/reference/settings.md#slices-and-split-columns) describes the commands named in the fixes.

| What you see | Meaning | Fix |
| - | - | - |
| `--dataset or --slice is required.` | `toloka training create` received neither option. | Pass `--dataset <dataset>` to split the dataset and freeze a slice, or `--slice <slice-id>` for a ready slice. |
| `Pass --dataset or --slice, not both.` | Both options were passed. | Keep one of them. |
| `Dataset … has no rows yet, so a slice would have nothing to freeze. Upload rows first.` | The dataset is empty. | Upload rows, then run the command again. |
| `Slice … is …, not ready.` | The slice passed with `--slice` is still being frozen or has failed. | Check it with `toloka dataset slice show <slice-id>`. Wait until it is `ready`, or freeze a new slice. |
| `Slice … failed: …` | Freezing the slice failed for the reason shown. | Fix the reason, for example a `--filter` that matches no row, and run the command again. |
| `Stopped waiting for …; it keeps running. Check it with toloka ….` | The command stopped waiting for the dataset's fields, a split column, or a slice; the work continues. | Run the printed check command. When a slice that `--dataset` started is `ready`, pass it with `--slice` instead of `--dataset`. |
| `Dataset … has the split columns ….` | The dataset has more than one split column, and the command named none. | Pass `--split-column <name>`. |
| `Dataset … has no field …, but its uploaded rows have one.` | The split column to use exists only as a field of the uploaded rows. | Run `toloka dataset fields add <dataset> <field>` to use its values as parts, or pass `--split-column <new-name>` to create a new split column. |
| `Splitting column … failed: …` | Filling the split column failed, for example because the `--balance-by` field has more than 1,000 distinct values. | Fix the cause and run `toloka dataset split` again. Rows that already have a part keep it. |
| `Column … is not a split column.` | `--split-column` names an ordinary column. | Name a split column listed by `toloka dataset columns <dataset>`, or make one with `toloka dataset split <dataset> --column <name>`. |
| `Dataset … has no column ….` | `--split-column` names no column of the slice's dataset. | List the columns with `toloka dataset columns <dataset>`. |
| `Slice … freezes no split column, so nothing keeps test rows out of training. Split the dataset, then take a new slice` | The slice was frozen before the dataset had a split column. | Run `toloka dataset split <dataset>`, freeze a new slice, and pass it with `--slice`. `--dataset <dataset>` does both. |
| `Slice … freezes the split columns …; pass splitFieldId to choose one` | The slice freezes more than one split column. | Pass `--split-column <name>`. |
| `Slice … does not freeze split column …` | `--split-column` names a split column created after the slice was frozen. | Freeze a new slice, or name a split column the slice freezes. |
| `Parts … of split column … have no train role` | `--parts` names a part without the `train` role. | Pass only train parts. `toloka dataset columns <dataset>` lists each part's roles. |
| `Split column … has no part with the train role, so it cannot be trained on` | The chosen split column has no train part. | Choose another column with `--split-column`, or create one with `toloka dataset split <dataset> --column <new-name>`. |
| `Training … has no split slice to train on; update it with a sliceId of a slice that freezes a split column before you estimate or run it` | The Training was created before Trainings read split slices. | Run `toloka training update <training> --dataset <dataset>`, or pass `--slice <slice-id>`. |

## Model source and method errors

| What you see | Meaning | Fix |
| - | - | - |
| `Choose exactly one of --base-model and --model-version.` | Both source flags were set, or neither was set. | Pass exactly one source. |
| `Training from a Model Version requires a LoRA adapter source` | The selected Model Version contains full weights. | Use a Model Version produced by SFT, or pass a Base model. |
| `Gisting publishes a full model and supports the qwen3-4b and qwen3-8b Base Models; larger tiers exceed the Model Version size limits` | The selected gisting source resolves to a larger Base model. | Use `qwen3-4b`, `qwen3-8b`, or an SFT adapter based on one of them. |
| `--prompt-file applies to gisting only.` | A prompt file was passed to SFT. | Remove it, or create a gisting Training. |
| `--prompt-file is required for gisting.` | A gisting Training has no prompt file. | Pass `--prompt-file <path>`. |
| `--lora-rank applies to SFT; gisting takes --gist-tokens.` | A gisting Training received an SFT-only setting. | Use `--gist-tokens`. |
| `--gist-tokens applies to gisting; SFT takes --lora-rank.` | An SFT Training received a gisting-only setting. | Use `--lora-rank`. |

## Prompt-file errors

| What you see | Fix |
| - | - |
| `--prompt-file must point to a file.` | Pass the path to a regular file. |
| `The gisting prompt file is empty.` | Add non-whitespace prompt text. |
| `The gisting prompt file exceeds the 256 KiB limit.` | Shorten the file to 256 KiB or less. |
| `The gisting prompt file must contain valid UTF-8 text.` | Save it as UTF-8. |
| `prompt_changed` | The file changed after it was uploaded and snapshotted. Create or update the Training with the intended file and calculate again. |

## Cost-estimate errors

A blocked estimate begins with:

```text theme={null}
Training cannot run with these inputs:
```

It exits with code 1 and prints each issue on a separate `- <message>` line to stderr. With `--json`, a blocked estimate writes nothing to stdout.

| What you see | Meaning | Fix |
| - | - | - |
| `This Training would take up to … hours on 1 GPU, which exceeds the 6-hour limit.` | The predicted maximum training wall time is over six hours. | For SFT, choose `qwen3-32b` or `qwen3-235b`, or reduce rows or epochs. For gisting, reduce rows or epochs. |
| `This Training would take up to … hours on 8 GPUs, which exceeds the 6-hour limit.` | The predicted maximum training wall time is over six hours even with eight GPUs. | Reduce rows or epochs. |
| `Training Cost Estimate changed; calculate it again` | The Training or frozen input no longer matches the saved fingerprint. | Calculate a new estimate. |
| `Training Cost Estimate Input Set has expired` | More than 24 hours passed since the estimate was requested. | Calculate again. |
| `Training already has 3 unconsumed Cost Estimate Input Sets` | Three open estimates already exist. | Use one or wait for one to expire. |
| `Training inputs are not runnable: …` | A saved estimate became blocked when the Training Run was created. | Fix the first reported issue and calculate again. |

## Model Version naming errors

| What you see | Meaning | Fix |
| - | - | - |
| `A Model Version with this name already exists` | A completed or active Training Run already uses the requested name in this Model. | Pass `--version-name` with a new name. |
| `Training Cost Estimate Input Set is already in use` | That ready estimate already started a Training Run. | Calculate a new estimate. |

## Blocked Training Runs

| Status | Meaning | Fix |
| - | - | - |
| `blocked`, reason `funds` | The initial maximum-charge hold could not be placed. | Add funds and run `toloka training resume <run-id>`, or cancel. |
| `blocked`, reason `payment` | The final charge could not be collected. | Add funds and resume before the payment deadline. Cancellation is unavailable. |
| `blocked`, reason `billing_review` | Billing needs Toloka staff review. | Wait. Resume and cancel are unavailable. |

`Training Run payment window expired` means the seven-day payment window ended. The Training Run fails with `payment_window_expired` and cannot resume.

`Training Run cannot be canceled while …` means the Training Run has reached output validation, settlement, payment collection, or publication. Wait for its terminal state. A billing review must be resolved by an administrator.

## Terminal failure codes

| Code | Meaning | Next action |
| - | - | - |
| `data_export_failed` | The selected data could not be prepared. | Inspect the message, correct the data or split parts, update the Training to a new slice, and calculate a new estimate before starting another run. |
| `input_report_mismatch` | Prepared inputs no longer match the validated report. | Calculate a fresh estimate and start again. |
| `billing_rejected` | Billing rejected the hold or final charge. | Correct the team balance or billing issue, then start a new Training Run if the state is terminal. |
| `provider_failed` | The platform could not complete training. | Inspect `toloka training logs <run-id>`. |
| `provider_timeout` | Training timed out. | Inspect `toloka training logs <run-id>` for the timeout details before starting a new Training Run. |
| `invalid_provider_output` | Produced files failed output validation. | Inspect the message. The run is not charged and publishes no Model Version. |
| `provider_output_changed` | Produced files changed during validation. | Start a new Training Run. |
| `prompt_changed` | The gisting prompt changed after upload. | Update the Training with the intended prompt and start again. |
| `payment_window_expired` | Final payment was not completed before the deadline. | Add funds and start a new Training Run. |

A terminal `failed` or `canceled` Training Run cannot resume.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.