class_docstr: Lazy causal mask, prevents the model from attending to future tokens.
  
  Attributes:
    offset: Offset of q start wrt kv. A positive offset shifts the bottom
      triangle upward, a negative one shifts it downward. A negative offset
      makes the first 'offset' rows of the attention matrix all 0s which leads
      to undefined softmax.
class_docstr_tok: ["Lazy","causal","mask",",","prevents","the","model","from","attending","to","future","tokens",".","Attributes",":","offset",":","Offset","of","q","start","wrt","kv",".","A","positive","offset","shifts","the","bottom","triangle","upward",",","a","negative","one","shifts","it","downward",".","A","negative","offset","makes","the","first","'offset","'","rows","of","the","attention","matrix","all","0s","which","leads","to","undefined","softmax","."]
code: def __eq__(self, other: object):
      if not isinstance(other, type(self)):
          return NotImplemented
  
      return (
          self.shape == other.shape
          and self.offset == other.offset
          and np.array_equal(self.q_sequence, other.q_sequence)
      )
  
imports: from __future__ import annotations
  import dataclasses
  from typing import Any, Callable, Sequence, Tuple
  import numpy
label_desc: Use image node_id 2 for calling the CausalMask obj's underlying member method code with example usage: obj.__eq__(other) and returns: unknown, NotImplemented