Errors
Troubleshooting
Most Compute failures are one of four things: the image cannot be pulled, SSH
cannot log in, the provider firewall blocks a port, or the model does not fit the
GPU engine. The messages below say which.
Where to look first
- Host card → Test. A timeout is usually network or firewall; a 401 is the token; a 503 is a missing container token.
- Host card → Container logs. This is the container's stdout: startup, model loading, training and crashes.
- /health on port 8080. It is open and lists the loaded accelerators and the inference backend.
- Training run panel. The log tail shows the job's own stages; the error line shows a refusal or upload failure.
- Studio → Settings → Providers → Compute → Edit. The image, token, SSH fields and ports are what the helper actually uses.
SSH
| Message | Cause and fix |
| Could not reach host:22 |
The instance is stopped, the IP changed, or the firewall blocks 22. Check the provider console. |
| SSH login failed |
Wrong user, wrong key, or the public key is not in authorized_keys. Add it once from the web console; use the Copy public key button. |
| The private key file was not found |
The path is local to this PC. Browse to it or press Create key. |
| The passphrase for this key looks incorrect |
Enter the key passphrase, or use a key without one. A password below can be used instead. |
| No SSH key or password was given |
No key path, password, or default ~/.ssh/id_ed25519 was found. Create a key in Edit. |
| Host key warning |
The helper trusts the key on first use. For a stricter setup, pin the host key before exposing the host. |
Images and pulls
| Message | Fix |
| pull access denied for sharpmind-server |
The image has no registry prefix. Use your-name/sharpmind-server:gpu. Setup now refuses local-only names before pulling. |
| repository does not exist |
Wrong Docker Hub user/repository, or it was never pushed. Check the tag in Edit against docker images. |
| unauthorized / denied |
A private repository. Make it public or run docker login on the host with credentials for the registry. |
| Pull is slow or appears stuck |
The GPU image is about 1.6 GB. Watch the host card log; the first pull takes minutes depending on the region. |
| No space left on device |
The image plus models need several GB. Grow the instance disk or remove old images/models. |
Ports and network
- 8080 is the Compute API; 5117 is the remote Studio UI. Both must be allowed in the provider firewall.
- A timeout from Studio while SSH works is almost always the firewall, not a dead container.
- Port 8080 or 5117 is already used means another container owns the port. Remove it or change the container name/ports.
- The container binds 5118 for the LAN listener; it does not need to be public.
- If the API answers on localhost but not from this PC, the host is bound to loopback or the firewall is local to the provider.
GPU and accelerators
| Message | Fix |
| No CUDA or OpenCL device is available |
The container was started without --gpus all, the driver is missing, or the toolkit is not configured. Tick GPU host and run setup again; verify nvidia-smi on the host. |
| No NVIDIA driver found |
The helper does not install drivers. Use a GPU provider image or install the driver and reboot. |
| LayerNorm, only RMSNorm |
Use a LLaMA/Qwen-style base for GPU fine-tuning. GPT-2/BERT bases can still use GPU inference. |
| only LoRA adapters are trainable |
The job is a from-scratch pretrain. It belongs on the CPU; drop the GPU requirement or accept the fallback. |
| MoE |
MoE training is not supported by the GPU engine. Use the CPU. |
| GPU works but training is slow |
Check the engine line: [Cuda] means the device; a "Retrying on the CPU" line means the base was refused. |
Training jobs
- Validation split produced no documents: the corpus is too small for a 64-token window; training continues without a curve.
- No output for a while: the run panel refreshes itself. If it does not, press Interrupt once to force a render, then update Studio; older builds could miss the notifications.
- Interrupted during download: the host finished but the local copy was cancelled. The export remains on the host; rerun or download again.
- Upload seems stuck: large base models dominate the first minutes. The log reports progress in 25% steps.
- Remote job keeps running after cancel: cancellation is best-effort. Use the run record's cancel or the host API; the process may finish its current step.
Tokens and 401
- /health is open; every other API route needs Authorization: Bearer <token>.
- 401 means the token in Studio and the token in the container differ. Either update Studio or redeploy the container with the saved token.
- After rotating a token, restart Studio so it reloads the encrypted value from compute.json.
- 503 with "SHARPMIND_TOKEN is not configured" means the container started without a token; redeploy.
- Do not use PASTE_YOUR_TOKEN or a short word on an internet-facing host.
Billing
- Vultr: stopping an instance does not stop billing. Destroy it. Snapshots are optional and billed separately.
- Runpod: terminate the pod; a stopped pod may still hold resources. A network volume bills separately.
- Local: free, but a GPU run still uses your power and desktop responsiveness.
Reset a host
- Stop the container on the card (keeps /data/SharpMind).
- Set up & deploy again to replace the container with the saved image and token.
- If the image changed, publish/push it first; the host pulls the tag in the card.
- To start completely fresh, remove the host's data folder or use a new volume; this deletes models, uploads and training output.
Deleting the host's data is permanent. Download models and exports
before removing a volume or destroying an instance.