Spaces:
Running
Running
Update dualpipe implementaion
Browse files- src/strategies.py +14 -11
src/strategies.py
CHANGED
@@ -589,17 +589,20 @@ def generate_dualpipe_schedule(config: ScheduleConfig):
|
|
589 |
# Step 4 (Main step): nF0B1F1B0
|
590 |
step_4_count = half_num_chunks - num_devices + half_rank + 1
|
591 |
for i in range(step_4_count):
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
|
|
|
|
|
|
603 |
# Overlap F1 and B0_D, then schedule W0
|
604 |
_schedule_forward_backward_chunk(
|
605 |
device_id, 1, 0, is_in_second_half
|
|
|
589 |
# Step 4 (Main step): nF0B1F1B0
|
590 |
step_4_count = half_num_chunks - num_devices + half_rank + 1
|
591 |
for i in range(step_4_count):
|
592 |
+
if i == 0:
|
593 |
+
if is_middle_rank:
|
594 |
+
# Schedule F0, B1_D, W1 sequentially for middle ranks on first iteration
|
595 |
+
_schedule_forward_chunk(device_id, 0, is_in_second_half) # F0
|
596 |
+
_schedule_backward_chunk(device_id, 1, is_in_second_half)# B1
|
597 |
+
else:
|
598 |
+
# Overlap F0 and B1_D, then schedule W1
|
599 |
+
_schedule_forward_backward_chunk(
|
600 |
+
device_id, 0, 1, is_in_second_half
|
601 |
+
) # F0+B1
|
602 |
+
else:
|
603 |
+
_schedule_forward_backward_chunk(
|
604 |
+
device_id, 0, 1, is_in_second_half
|
605 |
+
) # F0+B1
|
606 |
# Overlap F1 and B0_D, then schedule W0
|
607 |
_schedule_forward_backward_chunk(
|
608 |
device_id, 1, 0, is_in_second_half
|