← back to Exo
Set swa_idx and ga_idx for single layer (#1202)
73b3f87e070183b9e36c357c9075d3076401f3b8 · 2026-01-19 12:31:11 +0000 · rltakashige
## Motivation
Layer types does not contain either "sliding_attention" or
"full_attention" for pipeline parallel (single layer).
## Changes
<!-- Describe what you changed in detail -->
## Why It Works
<!-- Explain why your approach solves the problem -->
## Test Plan
### Manual Testing
Manually tested single layer of GPT OSS. Doesn't crash
### Automated Testing
<!-- Describe changes to automated tests, or how existing tests cover
this change -->
<!-- - -->
Files touched
M src/exo/worker/engines/mlx/auto_parallel.py
Diff
commit 73b3f87e070183b9e36c357c9075d3076401f3b8
Author: rltakashige <rl.takashige@gmail.com>
Date: Mon Jan 19 12:31:11 2026 +0000
Set swa_idx and ga_idx for single layer (#1202)
## Motivation
Layer types does not contain either "sliding_attention" or
"full_attention" for pipeline parallel (single layer).
## Changes
<!-- Describe what you changed in detail -->
## Why It Works
<!-- Explain why your approach solves the problem -->
## Test Plan
### Manual Testing
Manually tested single layer of GPT OSS. Doesn't crash
### Automated Testing
<!-- Describe changes to automated tests, or how existing tests cover
this change -->
<!-- - -->
---
src/exo/worker/engines/mlx/auto_parallel.py | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/src/exo/worker/engines/mlx/auto_parallel.py b/src/exo/worker/engines/mlx/auto_parallel.py
index 46d812e3..7ae9c527 100644
--- a/src/exo/worker/engines/mlx/auto_parallel.py
+++ b/src/exo/worker/engines/mlx/auto_parallel.py
@@ -168,11 +168,21 @@ def pipeline_auto_parallel(
inner_model_instance.layer_types = inner_model_instance.layer_types[ # type: ignore
start_layer:end_layer
]
- inner_model_instance.swa_idx = inner_model_instance.layer_types.index( # type: ignore
- "sliding_attention"
+ # We can assume the model has at least one layer thanks to placement.
+ # If a layer type doesn't exist, we can set it to 0.
+ inner_model_instance.swa_idx = (
+ 0
+ if "sliding_attention" not in inner_model_instance.layer_types # type: ignore
+ else inner_model_instance.layer_types.index( # type: ignore
+ "sliding_attention"
+ )
)
- inner_model_instance.ga_idx = inner_model_instance.layer_types.index( # type: ignore
- "full_attention"
+ inner_model_instance.ga_idx = (
+ 0
+ if "full_attention" not in inner_model_instance.layer_types # type: ignore
+ else inner_model_instance.layer_types.index( # type: ignore
+ "full_attention"
+ )
)
_set_layers(model, layers)
← 746589ba tidy: remove context manager from api (#1199)
·
back to Exo
·
Custom mlx layer composition (#1201) ea058842 →