Files
sglang/.claude/skills/clean-startup-log/references/noise-sources.md
T

71 lines
4.4 KiB
Markdown

# Startup noise-source hints
Read this only for an observed signature that needs investigation. Paths and
behaviors can change; search the current checkout and installed dependency before
proposing a fix. The accepted-output policy in `../SKILL.md` takes precedence.
These are investigation hints, not a list of changes to apply.
## Common signatures
| Observed output | Where to investigate | Decision to verify |
|---|---|---|
| HF warning printed in two formats | `utils/common.py`, HF logger handlers and propagation | A library handler plus root propagation can emit the same record twice. Keep one timestamped copy, including before full server logging setup. |
| `Skipping import of cpp extensions due to incompatible torch version` | `torchao/__init__.py`; imports through `hf_transformers_patches.py` and transformers quantizers | Determine whether torchao is needed for the requested model before proposing narrow import-time suppression. |
| `torch_dtype` is deprecated | Model code, loader, and HF utilities accessing `config.torch_dtype` | Prefer `config.dtype` where supported; change and verify only affected, tested models. |
| `BaseImageProcessorFast` is deprecated | Multimodal processor imports and type checks | Check the installed transformers replacement and compatible `isinstance` behavior. |
| `No platform detected. Using base SRTPlatform with defaults.` | Platform detection | Decide whether fallback is expected on this machine or indicates a missing plugin. |
| `Unexpected error during package walk` in CUTE_DSL | Installed cutlass package, its handler, root propagation, and `CUTE_DSL_LOG_LEVEL` | Inspect the actual exception and duplicate-handler path; do not assume the current log level or hide all warnings. |
| Repeated dtype, hybrid-model, or tokenizer fallback messages | Model-config and tokenizer construction in launcher, scheduler, and detokenizer | Multiple constructors may explain repetition. Retain meaningful per-process information and distinguish these from handler duplication. |
| Repeated template detection messages | `managers/template_detection.py` and `managers/template_manager.py` | Check whether a summary already contains the same information. |
| KV cache dtype logged separately from allocation | Model runner and memory pool | Check whether the allocation summary already carries dtype; retain useful allocation and SWA details. |
| CUTLASS backend disabled during graph capture | Attention backend selection | Expected fallback may be useful information; retain the reason and selected behavior. |
| `Ignore import error when loading ...` | Model, multimodal, or algorithm registries | Distinguish an unused optional model dependency from failure to load the requested model. |
| `Multiple NUMA nodes found for GPU ...` | `utils/numa_utils.py` | This differs from the accepted NUMA permission warning; evaluate its context separately. |
| `OpenAI Responses API (/v1/responses) disabled` | `entrypoints/http_server.py`, serving responses, and Harmony vocabulary loading | A real endpoint limitation should remain visible even if generation warmup succeeds. |
| `SyntaxWarning: invalid escape sequence` from a dependency | Installed package file named by the warning | Identify the upstream issue; avoid editing the installed package as a repository fix. |
Repeated constructors and separate processes are not blanket reasons to downgrade
messages. Constructor counts and import paths vary by model and checkout. Likewise,
cache-summary ordering and native library formats need no change merely because
they differ from a historical reference log.
## Targeted tracing
Start with source searches. For example:
```bash
rg -n 'SEARCH_STRING' python/sglang/srt/FOCUSED_DIRECTORY
rg -n '\.torch_dtype' python/sglang/srt/models/MODEL.py
```
If the emitter is clear but its call path is not, attach a temporary handler in an
isolated reproduction:
```python
import logging
import traceback
class TraceHandler(logging.Handler):
def emit(self, record):
if "SEARCH_STRING" in record.getMessage():
traceback.print_stack()
target = logging.getLogger("TARGET_LOGGER_NAME")
handler = TraceHandler()
target.addHandler(handler)
try:
reproduce_observed_warning()
finally:
target.removeHandler(handler)
```
For suspected native output, search only the identified shared library:
```bash
strings /path/to/library.so | rg -F 'SEARCH_STRING'
```
Keep diagnostic instrumentation out of committed fixes and baseline logs.