{"record":{"id":"63418bf4f5f407ae","repo":"xai-org/x-algorithm","slug":"all-dumps-are-none","errorCode":null,"errorMessage":"All dumps are None","messagePattern":"All dumps are None","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"phoenix/xrex/models/transformer.py","lineNumber":572,"sourceCode":"        segment_ids_k=segment_ids_k,\n        name=f\"{name_prefix}_0\",\n        global_layer_index=global_layer_index + layer_index_offset,\n        seqpack_layout=seqpack_layout,\n    )\n    h = d.output\n    if debug_tensor_dump_output_folder is not None:\n        layer_dumps.append(d.layer_dumps)\n\n    if debug_tensor_dump_output_folder is not None:\n        num_elements = len(layer_dumps[0])\n\n        concatenated_dumps = []\n        for i in range(num_elements):\n            dumps = [dump[i] for dump in layer_dumps]\n            if any(dump is None for dump in dumps):\n                non_none_dump = next((dump for dump in dumps if dump is not None), None)\n                if non_none_dump is None:\n                    raise ValueError(\"All dumps are None\")\n                dummy_tensor = jnp.zeros_like(non_none_dump)\n                dumps = [dump if dump is not None else dummy_tensor for dump in dumps]\n            concatenated_dumps.append(jnp.stack(dumps, axis=0))\n        layer_dumps = tuple(concatenated_dumps)\n\n    return h, DecoderOutput(\n        output=jnp.zeros(()),\n        layer_dumps=layer_dumps,\n    )\n\n\n@dataclass\nclass Transformer(hk.Module):\n    config: TransformerConfig\n    sharding_context: ShardingContext\n    name: Optional[str] = None\n\n    summarizer_prefix: str = \"\"","sourceCodeStart":554,"sourceCodeEnd":590,"githubUrl":"https://github.com/xai-org/x-algorithm/blob/24c60942c5c5fdad3a6addffb4c6e6d2f228f04f/phoenix/xrex/models/transformer.py#L554-L590","documentation":"layer_stack_block gathers per-layer dumps across a stacked/unstacked layer loop. For one dump slot across layers it replaces None entries with zeros_like of a non-None dump; if every layer produced None for that slot, there is no template to copy and it raises ValueError('All dumps are None').","triggerScenarios":"Running with debug/dump collection enabled (or model variant where layers return no dumps) such that every layer's dump tuple has None at position i for some i, e.g. all layers returning None for an activation dump that the code still tries to stack.","commonSituations":"Disabling intermediate dumping in all layers but leaving dump-collection logic active; a model refactor where layers stopped returning dumps; mixed layer types where none implement dumps.","solutions":["Ensure at least one layer in the stack returns a real (non-None) dump for each slot, e.g. re-enable dumping in at least one layer","Skip concatenation for slots that are all-None instead of stacking (patch layer_stack_block to append None)"],"exampleFix":"# before\ndumps = [dump[i] for dump in layer_dumps]\n# ...raises if all None\n# after\nif all(dump is None for dump in dumps):\n    concatenated_dumps.append(None)\n    continue","handlingStrategy":"validation","validationCode":"assert any(dump[i] is not None for dump in layer_dumps), f'all dumps None at slot {i}'","typeGuard":"def has_any_real_dump(dumps) -> bool:\n    return any(d is not None for d in dumps)","tryCatchPattern":"try:\n    out = layer_stack_block(...)\nexcept ValueError as e:\n    if 'All dumps are None' in str(e):\n        # rerun with dumping enabled in at least one layer\n        ...","preventionTips":["Enable dump collection in at least one layer when inspecting dumps","Test dump paths in CI with a tiny model"],"tags":["transformer","dumps","debug","jax","layer-stack"],"backgroundTag":"none-value-in-aggregation","analyzedSha":"24c60942c5c5fdad3a6addffb4c6e6d2f228f04f","analyzedAt":"2026-08-28T11:40:14.686Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}