{"record":{"id":"11db1441859670db","repo":"sgl-project/sglang","slug":"unknown-sparse-algorithm-algorithm-name","errorCode":null,"errorMessage":"Unknown sparse algorithm: {algorithm_name}","messagePattern":"Unknown sparse algorithm: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/mem_cache/sparsity/factory.py","lineNumber":40,"sourceCode":"\n_ALGORITHM_REGISTRY = {\n    \"quest\": lambda config, device, **kw: QuestAlgorithm(config, device, **kw),\n    \"deepseek_dsa\": lambda config, device, **kw: DeepSeekDSAAlgorithm(\n        config, device, **kw\n    ),\n}\n\n\ndef _create_sparse_algorithm(\n    config: SparseConfig,\n    device: torch.device,\n    **kwargs,\n) -> BaseSparseAlgorithm:\n    algorithm_name = config.algorithm.lower()\n    factory = _ALGORITHM_REGISTRY.get(algorithm_name)\n\n    if factory is None:\n        raise ValueError(f\"Unknown sparse algorithm: {algorithm_name}\")\n\n    return factory(config, device, **kwargs)\n\n\ndef _create_backend_adaptor(\n    backend: str,\n    device: torch.device,\n    sparse_algorithm: BaseSparseAlgorithm,\n    req_to_token_pool,\n):\n    \"\"\"Create backend adaptor.\"\"\"\n    if isinstance(sparse_algorithm, DeepSeekDSAAlgorithm):\n        return DSABackendAdaptor(device, req_to_token_pool)\n\n    if backend in [\"fa3\", \"flashattention\"]:\n        return FlashAttentionAdaptor(device)\n\n    raise ValueError(f\"Unknown attention backend: {backend}\")","sourceCodeStart":22,"sourceCodeEnd":58,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/mem_cache/sparsity/factory.py#L22-L58","documentation":"The sparse algorithm factory looks up config.algorithm.lower() in _ALGORITHM_REGISTRY; an unknown name raises ValueError('Unknown sparse algorithm: ...'). Only algorithms registered in the factory (e.g. quest, and the DeepSeek DSA entries) can be created.","triggerScenarios":"Calling create_sparse_coordinator / _create_sparse_algorithm with config.algorithm set to an unregistered string — typo (e.g. 'Qest', 'topk-quest'), or a name from a newer/older version.","commonSituations":"Setting the sparse attention algorithm via config/CLI with a misspelled or version-mismatched name; a docs example referencing an algorithm not present in the installed sglang version.","solutions":["Check the registry keys in sglang.srt.mem_cache.sparsity.factory._ALGORITHM_REGISTRY and use an exact (case-insensitive) name","Upgrade/downgrade sglang to the version that implements the algorithm you want","Fix typos in the algorithm config string"],"exampleFix":"# before\nconfig.algorithm = \"qest\"\n# after\nconfig.algorithm = \"quest\"","handlingStrategy":"validation","validationCode":"from sglang.srt.mem_cache.sparsity.factory import _ALGORITHM_REGISTRY\nname = config.algorithm.lower()\nif name not in _ALGORITHM_REGISTRY:\n    raise ValueError(f\"unknown sparse algorithm {name}; valid: {sorted(_ALGORITHM_REGISTRY)}\")","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Echo valid algorithm names in config validation","Pin the sglang version your config was written for"],"tags":["sparse-attention","factory","algorithm-name","value-error"],"backgroundTag":"unknown-algorithm-name","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}