{"record":{"id":"14f1666ef57be9e6","repo":"sgl-project/sglang","slug":"calculated-target-latency-self-target-latency-2f","errorCode":null,"errorMessage":"Calculated target_latency={self.target_latency:.2f}ms is not positive. Check warmup data quality.","messagePattern":"Calculated target_latency=(.+?)ms is not positive\\. Check warmup data quality\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/managers/scheduler_pp_mixin.py","lineNumber":1586,"sourceCode":"            f\"[ChunkSizePredictor] Fitted coefficients: a={fitted_a:.2e}, \"\n            f\"b={fitted_b:.2e}, c={fitted_c:.2e}\"\n        )\n\n    def set_target_latency(self, base_chunk_size: int):\n        \"\"\"Set target latency based on base chunk size: target = f(base_chunk_size) - f(0).\"\"\"\n\n        def f(length: float) -> float:\n            \"\"\"Total latency function: f(length) = a*length^2 + b*length + c.\"\"\"\n            return (\n                self.quadratic_coeff_a * length * length\n                + self.linear_coeff_b * length\n                + self.constant_coeff_c\n            )\n\n        self.target_latency = f(float(base_chunk_size)) - f(0.0)\n\n        if self.target_latency <= 0:\n            raise ValueError(\n                f\"Calculated target_latency={self.target_latency:.2f}ms is not positive. \"\n                \"Check warmup data quality.\"\n            )\n\n        logger.info(\n            f\"[ChunkSizePredictor] Target latency: {self.target_latency:.2f}ms \"\n            f\"(base_chunk_size={base_chunk_size})\"\n        )\n\n    def predict_next_chunk_size(\n        self,\n        history_len: int,\n        base_chunk_size: int,\n        page_size: int,\n        context_len: int,\n        max_chunk_size: Optional[int] = None,\n    ) -> Optional[int]:\n        \"\"\"","sourceCodeStart":1568,"sourceCodeEnd":1604,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/managers/scheduler_pp_mixin.py#L1568-L1604","documentation":"After fitting, the computed target latency f(base_chunk_size)-f(0) came out <=0, which is impossible for real latency data; indicates corrupted or pathological warmup measurements.","triggerScenarios":"profile_and_init_predictor finishes fitting but the derived per-chunk target latency is non-positive — e.g. fitted coefficients yield f(base_chunk_size)<=f(0) due to bad samples.","commonSituations":"Noisy warmup measurements, clocks ramping during profiling, or a bad base_chunk_size configuration.","solutions":["Re-run profiling on an idle machine","Verify base_chunk_size / chunked-prefill-size settings are sane","Check earlier logged fitted coefficients (a,b,c) for signs of noisy data"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"try:\n    predictor.set_target_latency(...)\nexcept ValueError as e:\n    if 'target_latency' in str(e):\n        reprofile_with_more_samples()\n    raise","preventionTips":["Verify GPU clocks are stable (locked clocks) during profiling","Inspect fitted a,b,c before trusting target latency"],"tags":["pipeline-parallel","profiling","data-quality"],"backgroundTag":"insufficient-data-for-fit","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}