When the reranker hung on rerank=True there were zero log lines after 'retrieved=N (no threshold)', which made it impossible to tell whether the hang was in _load (CrossEncoder construction), in get_reranker's lock acquisition, or in predict. Structlog routing may also be the culprit since we never saw the 'Loading RAG reranker' info line. Add unconditional stderr prints at each milestone — entered, device resolved, before CrossEncoder, after CrossEncoder, rerank entered, predict starting, predict done. These bypass any logger config and show up directly in /tmp/studio.log next to the rest of the captured stdout/stderr. Leaving structlog logger.info calls in place too so the structured stream still gets the same data when routing works. |
||
|---|---|---|
| .. | ||
| assets | ||
| auth | ||
| core | ||
| loggers | ||
| models | ||
| plugins | ||
| requirements | ||
| routes | ||
| state | ||
| storage | ||
| tests | ||
| utils | ||
| __init__.py | ||
| _platform_compat.py | ||
| colab.py | ||
| main.py | ||
| run.py | ||
| startup_banner.py | ||