class_docstr: Base mixin for all attention modules. The interface represented by this module
  is broadly:
  
  output = attention(query_key_value,
                     Optional[kv_cache],
                     Optional[attention_mask],
                     Optional[attention_bias])
class_docstr_tok: ["Base","mixin","for","all","attention","modules",".","The","interface","represented","by","this","module","is","broadly",":","output","=","attention","(","query_key_value",",","Optional","[","kv_cache","]",",","Optional","[","attention_mask","]",",","Optional","[","attention_bias","]",")"]
docstr: Property to calculate blocking granularity for the query dimension.
  This has no impact on the KV-cache structure, but will  affect the
  number of attention atoms associated with a batch.
docstr_tok: ["Property","to","calculate","blocking","granularity","for","the","query","dimension",".","This","has","no","impact","on","the","KV-cache","structure",",","but","will","affect","the","number","of","attention","atoms","associated","with","a","batch","."]
code: def q_block_size(self) -> int:
      """
      Property to calculate blocking granularity for the query dimension.
      This has no impact on the KV-cache structure, but will  affect the
      number of attention atoms associated with a batch.
      """
      raise NotImplementedError()
  
file_path: DeepSpeed/deepspeed/inference/v2/modules/interfaces/attention_base.py
imports: from typing import Any, Dict, Optional, Tuple, Type
  import torch
  from ...ragged import RaggedBatchWrapper
  from deepspeed.runtime.config_utils import DeepSpeedConfigModel
  from ..ds_module import DSModuleBase
  from ..module_registry import DSModuleRegistryBase
  from ..configs import DSSelfAttentionConfig
label_desc: Use image node_id 4 for calling the DSSelfAttentionBase obj's underlying member method code with example usage: obj.q_block_size() without return types