Skip to content

Commit 4645d33

Browse files
ray-train: wire in reusable multi-node EFA/NCCL test
- pipeline: add run-efa-test input + efa-test job (uses _reusable.efa-tests.yml, 2x EFA GPU instances, all_reduce_perf across nodes). Add ci-config job to read platform; gate EFA to the ec2 config only (interconnect is identical across eks/ec2 — run the expensive 2x p4d test once). release-gate now needs efa-test. - pr-gpu: add test/efa/** path + efa-test-change filter; run EFA on build or EFA test changes (matches pytorch convention) - autorelease-gpu: run-efa-test: true so releases are gated on multi-node EFA
1 parent 1efabe0 commit 4645d33

3 files changed

Lines changed: 36 additions & 1 deletion

File tree

.github/workflows/ray-train.autorelease-gpu.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,6 @@ jobs:
3434
with:
3535
config-file: ${{ matrix.config_file }}
3636
tag-suffix: ${{ github.run_id }}
37+
run-efa-test: true
3738
release: true
3839
secrets: inherit

.github/workflows/ray-train.pipeline.yml

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ on:
3131
required: false
3232
type: boolean
3333
default: true
34+
run-efa-test:
35+
description: "Run multi-node EFA/NCCL test (2x EFA GPU instances)"
36+
required: false
37+
type: boolean
38+
default: false
3439
release:
3540
description: "Run release job after tests pass"
3641
required: false
@@ -42,6 +47,16 @@ on:
4247
value: ${{ jobs.build.outputs.image-uri }}
4348

4449
jobs:
50+
ci-config:
51+
runs-on: ubuntu-latest
52+
outputs:
53+
platform: ${{ steps.parse.outputs.platform }}
54+
steps:
55+
- uses: actions/checkout@v6
56+
- id: parse
57+
run: |
58+
echo "platform=$(yq '.metadata.platform // ""' '${{ inputs.config-file }}')" >> $GITHUB_OUTPUT
59+
4560
build:
4661
if: ${{ inputs.build }}
4762
concurrency:
@@ -97,6 +112,20 @@ jobs:
97112
config-file: ${{ inputs.config-file }}
98113
image-uri: ${{ needs.build.outputs.image-uri || '' }}
99114

115+
# Multi-node EFA/NCCL test (2x EFA GPU instances). The interconnect layer is
116+
# identical across the eks/ec2 stages, so run it once — on the ec2 config only —
117+
# to avoid doubling the expensive 2x p4d cost.
118+
efa-test:
119+
if: ${{ always() && !failure() && !cancelled() && inputs.run-efa-test && needs.ci-config.outputs.platform == '' }}
120+
needs: [build, ci-config]
121+
concurrency:
122+
group: ${{ github.workflow }}-efa-test-${{ inputs.config-file }}-${{ github.ref }}
123+
cancel-in-progress: false
124+
uses: ./.github/workflows/_reusable.efa-tests.yml
125+
with:
126+
config-file: ${{ inputs.config-file }}
127+
image-uri: ${{ needs.build.outputs.image-uri || '' }}
128+
100129
release-gate:
101130
if: >-
102131
github.ref == 'refs/heads/main' &&
@@ -105,7 +134,7 @@ jobs:
105134
inputs.release &&
106135
!failure() && !cancelled() &&
107136
needs.build.result == 'success'
108-
needs: [build, sanity-test, security-test, telemetry-test]
137+
needs: [build, sanity-test, security-test, telemetry-test, efa-test]
109138
runs-on: ubuntu-latest
110139
outputs:
111140
should-release: ${{ steps.check.outputs.should-release }}

.github/workflows/ray-train.pr-gpu.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ on:
1717
- "test/sanity/**"
1818
- "test/security/data/ecr_scan_allowlist/ray/**"
1919
- "test/telemetry/**"
20+
- "test/efa/**"
2021
- "!docs/**"
2122

2223
permissions:
@@ -40,6 +41,7 @@ jobs:
4041
build-change: ${{ steps.changes.outputs.build-change }}
4142
sanity-test-change: ${{ steps.changes.outputs.sanity-test-change }}
4243
telemetry-test-change: ${{ steps.changes.outputs.telemetry-test-change }}
44+
efa-test-change: ${{ steps.changes.outputs.efa-test-change }}
4345
steps:
4446
- uses: actions/checkout@v6
4547
- uses: dorny/paths-filter@v4
@@ -58,6 +60,8 @@ jobs:
5860
telemetry-test-change:
5961
- "scripts/docker/telemetry/**"
6062
- "test/telemetry/**"
63+
efa-test-change:
64+
- "test/efa/**"
6165
6266
discover:
6367
needs: [gatekeeper]
@@ -85,5 +89,6 @@ jobs:
8589
run-sanity-test: ${{ needs.check-changes.outputs.build-change == 'true' || needs.check-changes.outputs.sanity-test-change == 'true' }}
8690
run-security-test: ${{ needs.check-changes.outputs.build-change == 'true' }}
8791
run-telemetry-test: ${{ needs.check-changes.outputs.build-change == 'true' || needs.check-changes.outputs.telemetry-test-change == 'true' }}
92+
run-efa-test: ${{ needs.check-changes.outputs.build-change == 'true' || needs.check-changes.outputs.efa-test-change == 'true' }}
8893
release: false
8994
secrets: inherit

0 commit comments

Comments
 (0)