{"record":{"id":"16312011941c126a","repo":"vllm-project/vllm","slug":"output-format-output-requires-proton-data-tree","errorCode":null,"errorMessage":"{output_format} output requires proton_data='tree'","messagePattern":"(.+?) output requires proton_data='tree'","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"vllm/config/profiler.py","lineNumber":229,"sourceCode":"            raise ValueError(\n                \"proton_profiler_dir must be set when profiler is 'proton'\"\n            )\n        if proton_profiler_dir:\n            if _is_uri_path(proton_profiler_dir):\n                raise ValueError(\"proton_profiler_dir must be a local directory\")\n            self.proton_profiler_dir = os.path.abspath(\n                os.path.expanduser(proton_profiler_dir)\n            )\n\n        if self.profiler == \"proton\":\n            output_format = self.proton_output_format\n            if output_format == \"chrome_trace\" and self.proton_data != \"trace\":\n                raise ValueError(\"chrome_trace output requires proton_data='trace'\")\n            if (\n                output_format in (\"hatchet\", \"hatchet_msgpack\")\n                and self.proton_data != \"tree\"\n            ):\n                raise ValueError(f\"{output_format} output requires proton_data='tree'\")\n\n        if self.capture_torch_profiler and self.profiler != \"torch\":\n            raise ValueError(\n                \"capture_torch_profiler is only applicable when profiler is \"\n                \"set to 'torch'\"\n            )\n\n        return self\n","sourceCodeStart":211,"sourceCodeEnd":238,"githubUrl":"https://github.com/vllm-project/vllm/blob/c794754062d49a8fdb63ab3c5215b488b865030c/vllm/config/profiler.py#L211-L238","documentation":"ProfilerConfig raises when proton_output_format is 'hatchet' or 'hatchet_msgpack' but proton_data is not 'tree'. Hatchet formats are produced from the hierarchical tree profile data; trace-mode data cannot be serialized to hatchet.","triggerScenarios":"Passing proton_output_format='hatchet' (or 'hatchet_msgpack') with proton_data='trace' while profiler='proton'.","commonSituations":"Configs that set proton_data='trace' for Chrome traces then switch only the output format to hatchet without reverting the data mode.","solutions":["Set proton_data='tree' (the default) when using hatchet/hatchet_msgpack output.","Or keep proton_data='trace' and use proton_output_format='chrome_trace'."],"exampleFix":"# before\nProfilerConfig(profiler='proton', proton_profiler_dir='/tmp/p', proton_data='trace', proton_output_format='hatchet')\n\n# after\nProfilerConfig(profiler='proton', proton_profiler_dir='/tmp/p', proton_output_format='hatchet')  # proton_data defaults to 'tree'","handlingStrategy":"validation","validationCode":"def validate_proton_output(data: str, fmt: str | None) -> None:\n    if fmt in (\"hatchet\", \"hatchet_msgpack\") and data != \"tree\":\n        raise SystemExit(f\"proton_output_format={fmt!r} requires proton_data='tree'\")","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Only override proton_data when switching to chrome_trace output; leave 'tree' default for hatchet formats."],"tags":["profiling","proton","configuration"],"backgroundTag":null,"analyzedSha":"c794754062d49a8fdb63ab3c5215b488b865030c","analyzedAt":"2026-08-14T21:17:39.825Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}