query = query.transpose(1, 2).reshape(-1, query.shape[1], query.shape[-1])
key = key.transpose(1, 2).reshape(-1, key.shape[1], key.shape[-1])
value = value.transpose(1, 2).reshape(-1, value.shape[1], value.shape[-1])
if attention_mask is None and is_causal:
npu_mask = _get_compressed_causal_mask(query.device)
sparse_mode = 3
else:
npu_mask = None if attention_mask is None else _npu_attention_mask(attention_mask)
return query, key, value, "TND", npu_mask, sparse_mode