{"record":{"id":"07a1954e88c2d5c9","repo":"sgl-project/sglang","slug":"repetition-penalty-must-be-in-0-2-1-0-no-pen","errorCode":null,"errorMessage":"repetition_penalty must be in (0, 2] (1.0 = no penalty), got {self.repetition_penalty}.","messagePattern":"repetition_penalty must be in \\(0, 2\\] \\(1\\.0 = no penalty\\), got (.+?)\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/sampling/sampling_params.py","lineNumber":184,"sourceCode":"            raise ValueError(\n                f\"top_k must be -1 (disable) or at least 1, got {self.top_k}.\"\n            )\n        if not -2.0 <= self.frequency_penalty <= 2.0:\n            raise ValueError(\n                \"frequency_penalty must be in [-2, 2], got \"\n                f\"{self.frequency_penalty}.\"\n            )\n        if not -2.0 <= self.presence_penalty <= 2.0:\n            raise ValueError(\n                \"presence_penalty must be in [-2, 2], got \" f\"{self.presence_penalty}.\"\n            )\n        if not 0.0 < self.repetition_penalty <= 2.0:\n            raise ValueError(\n                \"repetition_penalty must be in (0, 2] (1.0 = no penalty), \"\n                f\"got {self.repetition_penalty}.\"\n            )\n        if not 0 <= self.min_new_tokens:\n            raise ValueError(\n                f\"min_new_tokens must be in [0, max_new_tokens], got \"\n                f\"{self.min_new_tokens}.\"\n            )\n        if self.max_new_tokens is not None:\n            if self.max_new_tokens < 0:\n                raise ValueError(\n                    f\"max_new_tokens must be at least 0, got {self.max_new_tokens}.\"\n                )\n            if not self.min_new_tokens <= self.max_new_tokens:\n                raise ValueError(\n                    f\"min_new_tokens must be in [0, max_new_tokens({self.max_new_tokens})], got \"\n                    f\"{self.min_new_tokens}.\"\n                )\n        if self.logit_bias is not None:\n            for token_id in self.logit_bias:\n                if not 0 <= int(token_id) < vocab_size:\n                    raise ValueError(\n                        f\"logit_bias must has keys in [0, {vocab_size - 1}], got \"","sourceCodeStart":166,"sourceCodeEnd":202,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/sampling/sampling_params.py#L166-L202","documentation":"SamplingParams.verify() requires repetition_penalty to lie in (0, 2], where 1.0 means no penalty. Zero, negative values, and values above 2 raise this ValueError during normalize()/verify(). repetition_penalty is a multiplicative penalty on repeated-token logits (CTRL paper style), so 0 or negatives are undefined.","triggerScenarios":"Passing SamplingParams(repetition_penalty=0) (e.g. intending 'disabled'), a negative value, or > 2 such as 3.0; verify() runs via normalize().","commonSituations":"Users setting 0 meaning 'off' instead of 1.0; HF transformers configs with repetition_penalty up to ~5 ported directly; hyperparameter sweeps exceeding the cap.","solutions":["Use repetition_penalty=1.0 to disable","Keep values in (0, 2]; typical range 1.0-1.3","Clamp: max(1.0, min(2.0, rp)) if you need a safe default"],"exampleFix":"# before\nparams = SamplingParams(repetition_penalty=0)\n# after\nparams = SamplingParams(repetition_penalty=1.0)","handlingStrategy":"validation","validationCode":"repetition_penalty = repetition_penalty if isinstance(repetition_penalty,(int,float)) and 0.0 < repetition_penalty <= 2.0 else 1.0\nparams = SamplingParams(repetition_penalty=repetition_penalty)","typeGuard":"def valid_repetition_penalty(p):\n    return isinstance(p,(int,float)) and 0.0 < p <= 2.0","tryCatchPattern":"try:\n    llm.generate(prompts, SamplingParams(repetition_penalty=p))\nexcept ValueError as e:\n    if 'repetition_penalty' in str(e):\n        p = 1.0\n    else:\n        raise","preventionTips":["Use 1.0 (not 0) to disable repetition penalty","Note SGLang caps at 2.0 even though HF allows higher values"],"tags":["sampling-params","repetition-penalty","validation","sglang"],"backgroundTag":"sampling-parameter-validation-failed","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}