{"record":{"id":"2585aabe2878d0de","repo":"huggingface/transformers","slug":"deepgemm-experts-path-requires-bfloat16-hidden-sta","errorCode":null,"errorMessage":"DeepGEMM experts path requires bfloat16 hidden states, got {hidden_states.dtype}","messagePattern":"DeepGEMM experts path requires bfloat16 hidden states, got (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"src/transformers/integrations/deepgemm.py","lineNumber":629,"sourceCode":"        (qinput_2d, _coerce_sf_for_kernel(scale_2d, is_sm100(), expected_mn=qinput_2d.size(0))),\n        (weight, _coerce_sf_for_kernel(weight_scale_inv, is_sm100(), expected_mn=weight.size(0))),\n        output,\n        recipe=sf_recipe,\n    )\n    output = output.view(input.shape[:-1] + (weight.shape[0],))\n    if bias is not None:\n        output.add_(bias)\n    return output\n\n\ndef deepgemm_bf16_experts_forward(\n    self: torch.nn.Module,\n    hidden_states: torch.Tensor,\n    top_k_index: torch.Tensor,\n    top_k_weights: torch.Tensor,\n) -> torch.Tensor:\n    if hidden_states.dtype != torch.bfloat16:\n        raise ValueError(f\"DeepGEMM experts path requires bfloat16 hidden states, got {hidden_states.dtype}\")\n\n    deepgemm = load_deepgemm_kernel()\n    # Non-transposed weights (E, N, K) → NT kernel; transposed (E, K, N) → NN kernel.\n    grouped_bf16_matmul = deepgemm.grouped_bf16_matmul_nn if self.is_transposed else deepgemm.grouped_bf16_matmul_nt\n\n    device = hidden_states.device\n    num_top_k = top_k_index.size(-1)\n    num_tokens = hidden_states.size(0)\n    hidden_dim = hidden_states.size(-1)\n\n    (\n        sorted_hidden,\n        sorted_weights,\n        expert_ids_g,\n        sentinel_mask,\n        perm,\n        sorted_to_padded,\n        grouped_layout,","sourceCodeStart":611,"sourceCodeEnd":647,"githubUrl":"https://github.com/huggingface/transformers/blob/a597f974857b3d92939971296bc0deb93d33d780/src/transformers/integrations/deepgemm.py#L611-L647","documentation":"Error \"DeepGEMM experts path requires bfloat16 hidden states, got {hidden_states.dtype}\" thrown in huggingface/transformers.","triggerScenarios":"Raised in DeepGEMM MoE expert path when hidden states are not bfloat16.","commonSituations":"DeepGEMM expert kernels invoked on fp16 or fp32 hidden states; experts require bf16.","solutions":["Cast hidden states to bfloat16 before the DeepGEMM experts path."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a597f974857b3d92939971296bc0deb93d33d780","analyzedAt":"2026-08-14T18:24:08.354Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}