Skip to content

Commit a915db9

Browse files
Make test changes for from_segmet_ids_and_pos API change. Also some nits.
Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com>
1 parent 1e45c66 commit a915db9

1 file changed

Lines changed: 12 additions & 23 deletions

File tree

tests/jax/test_fused_attn.py

Lines changed: 12 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -547,13 +547,14 @@ def _setup_inputs(self):
547547
else:
548548
self.softmax_offset = None
549549

550-
def gen_valid(bs, max_seqlen, pad_ratio):
550+
def generate_valid_segment_ids_and_pos(bs, max_seqlen, pad_ratio):
551551
pad_len = int(max_seqlen * pad_ratio)
552552
valid_len = max_seqlen - pad_len
553553
tokens = jnp.concatenate([jnp.ones((bs, valid_len)), jnp.zeros((bs, pad_len))], axis=-1)
554-
return tokens, jnp.logical_not(tokens)
554+
segment_pos = jnp.broadcast_to(jnp.arange(max_seqlen, dtype=tokens.dtype), tokens.shape)
555+
return tokens, segment_pos, jnp.logical_not(tokens)
555556

556-
def generate_random_segment_ids(
557+
def generate_random_segment_ids_and_pos(
557558
batch_size,
558559
sequence_length,
559560
num_segments,
@@ -601,7 +602,7 @@ def generate_random_segment_ids(
601602
return segment_ids, segment_pos, segment_pad
602603

603604
if self.qkv_layout.is_thd():
604-
self.segment_ids_q, self.segment_pos_q, self.pad_q = generate_random_segment_ids(
605+
self.segment_ids_q, self.segment_pos_q, self.pad_q = generate_random_segment_ids_and_pos(
605606
self.batch_size, self.max_seqlen_q, self.num_segments_per_seq, seed=42
606607
)
607608
self.seqlens_q, self.offsets_q = get_seqlens_and_offsets(self.segment_ids_q)
@@ -617,7 +618,7 @@ def generate_random_segment_ids(
617618
self.window_size is not None or self.attn_mask_type.is_bottom_right()
618619
): # SWA or BRCM requires kv_len >= q_len
619620
min_segment_len = self.seqlens_q
620-
self.segment_ids_kv, self.segment_pos_kv, self.pad_kv = generate_random_segment_ids(
621+
self.segment_ids_kv, self.segment_pos_kv, self.pad_kv = generate_random_segment_ids_and_pos(
621622
self.batch_size,
622623
self.max_seqlen_kv,
623624
self.num_segments_per_seq,
@@ -626,13 +627,12 @@ def generate_random_segment_ids(
626627
)
627628
self.seqlens_kv, self.offsets_kv = get_seqlens_and_offsets(self.segment_ids_kv)
628629
else:
629-
self.segment_ids_q, self.pad_q = gen_valid(
630+
self.segment_ids_q, self.segment_pos_q, self.pad_q = generate_valid_segment_ids_and_pos(
630631
self.batch_size, self.max_seqlen_q, pad_ratio
631632
)
632-
self.segment_ids_kv, self.pad_kv = gen_valid(
633+
self.segment_ids_kv, self.segment_pos_kv, self.pad_kv = generate_valid_segment_ids_and_pos(
633634
self.batch_size, self.max_seqlen_kv, pad_ratio
634635
)
635-
self.segment_pos_q = self.segment_pos_kv = None
636636
self.seqlens_q = self.seqlens_kv = self.offsets_q = self.offsets_kv = None
637637

638638
# For reference code
@@ -682,24 +682,15 @@ def generate_random_segment_ids(
682682
(self.offsets_q, self.offsets_kv),
683683
)
684684
case SeqDescFormat.SegmentIDs:
685-
# Exercise the path to generate the segment_pos in from_segment_ids_and_pos()
686-
# if no CP and load balancing, else explicitly pass the segment_pos
685+
# from_segment_ids_and_pos requires explicit segment_pos.
687686
self.sequence_desciptor = SequenceDescriptor.from_segment_ids_and_pos(
688687
(
689688
self.cp_reorder_fn(self.segment_ids_q),
690689
self.cp_reorder_fn(self.segment_ids_kv),
691690
),
692691
(
693-
(
694-
self.cp_reorder_fn(self.segment_pos_q),
695-
self.cp_reorder_fn(self.segment_pos_kv),
696-
)
697-
if self.cp_size > 1 and self.cp_load_balanced
698-
else None
699-
),
700-
is_thd=self.qkv_layout.is_thd(),
701-
is_segment_ids_reordered=(
702-
True if self.cp_size > 1 and self.cp_load_balanced else False
692+
self.cp_reorder_fn(self.segment_pos_q),
693+
self.cp_reorder_fn(self.segment_pos_kv),
703694
),
704695
)
705696
case _:
@@ -727,9 +718,7 @@ def generate_random_segment_ids(
727718
case SeqDescFormat.SegmentIDs:
728719
self.sequence_desciptor = SequenceDescriptor.from_segment_ids_and_pos(
729720
(self.segment_ids_q, self.segment_ids_kv),
730-
None,
731-
is_thd=self.qkv_layout.is_thd(),
732-
is_segment_ids_reordered=False,
721+
(self.segment_pos_q, self.segment_pos_kv),
733722
)
734723
case _:
735724
raise ValueError(f"Unknown {self.seq_desc_format=}")

0 commit comments

Comments
 (0)