HumanSignal / HumanSignal/label-studio-ml-backend
No way to tell if prediction is running — backend silently pegs CPU (~800%) with zero status feedback
- Dominant language
- Python
- Stars
- 1.1k
- Forks
- 490
- Avg merge
- 1d 14h
- Merged PRs (30d)
- 3
Description
When requesting predictions for several tasks at once, there's **no signal that anything is happening**: the Label Studio UI shows nothing, yet the ML backend process sits at ~800% CPU in the background for a long time. You can't tell whether it's working, stuck, or dead.
**Why:** `/predict` is fully synchronous with no progress/status endpoint. gunicorn threads (`THREADS=8` by default) run multiple `predict()` calls concurrently, and some examples (e.g. `ppocr`) reload the model on every request — so the process thrashes CPU with no visibility.
**Ask:**
- A lightweight status/progress signal (`queued / processing / done / failed` per task) so users can tell it's actually working.
- Concurrency control (serialize or bound inference) to avoid the runaway CPU.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start at the /predict entry point and trace how synchronous predict() calls are handled under the default gunicorn THREADS=8 setting. Review the ppocr examples mentioned in the issue, then define how per-task queued, processing, done, and failed status should be exposed and how inference concurrency should be bounded.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- api, backend, performance
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100