HumanSignal / HumanSignal/label-studio-ml-backend

No way to tell if prediction is running — backend silently pegs CPU (~800%) with zero status feedback

Open
#908 0 comments 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.