[CI] Export GB200 nightly logs to S3 (#23502)
This commit is contained in:
@@ -287,8 +287,15 @@ jobs:
|
|||||||
OSL: ${{ matrix.config.osl }}
|
OSL: ${{ matrix.config.osl }}
|
||||||
CONFIG_FILE: ${{ matrix.config.config_file }}
|
CONFIG_FILE: ${{ matrix.config.config_file }}
|
||||||
RESULT_FILENAME: gb200-${{ matrix.config.name }}
|
RESULT_FILENAME: gb200-${{ matrix.config.name }}
|
||||||
|
MATRIX_CONFIG_NAME: ${{ matrix.config.name }}
|
||||||
SQUASH_FILE: ${{ needs.prepare-image.outputs.squash_file }}
|
SQUASH_FILE: ${{ needs.prepare-image.outputs.squash_file }}
|
||||||
NGINX_SQUASH_FILE: ${{ needs.prepare-image.outputs.nginx_squash_file }}
|
NGINX_SQUASH_FILE: ${{ needs.prepare-image.outputs.nginx_squash_file }}
|
||||||
|
# S3 log-upload credentials — consumed by srt-slurm's postprocess stage
|
||||||
|
# to upload /logs after each Slurm job; prefix derived in launch_gb200.sh.
|
||||||
|
AWS_ACCESS_KEY_ID: ${{ secrets.NV_S3_ACCESS_KEY_ID }}
|
||||||
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.NV_S3_SECRET_ACCESS_KEY }}
|
||||||
|
S3_BUCKET: ${{ secrets.NV_S3_BUCKET }}
|
||||||
|
S3_ENDPOINT_URL: ${{ secrets.NV_S3_ENDPOINT_URL }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
@@ -361,6 +368,26 @@ jobs:
|
|||||||
echo "No log tarball found, skipping analysis"
|
echo "No log tarball found, skipping analysis"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
- name: Upload AI analysis to S3
|
||||||
|
if: failure()
|
||||||
|
continue-on-error: true
|
||||||
|
env:
|
||||||
|
ISL: ${{ matrix.config.isl }}
|
||||||
|
OSL: ${{ matrix.config.osl }}
|
||||||
|
run: |
|
||||||
|
ANALYSIS="${{ github.workspace }}/ai_analysis.md"
|
||||||
|
[ -f "$ANALYSIS" ] || { echo "no ai_analysis.md, skipping"; exit 0; }
|
||||||
|
case "${{ github.event_name }}" in
|
||||||
|
schedule) TRIGGER=cron ;;
|
||||||
|
workflow_dispatch) TRIGGER=manual ;;
|
||||||
|
*) TRIGGER="${{ github.event_name }}" ;;
|
||||||
|
esac
|
||||||
|
fmt() { if [ $(( $1 % 1024 )) -eq 0 ]; then echo "$(( $1 / 1024 ))k"; else echo "$1"; fi; }
|
||||||
|
SEQ_LEN="$(fmt "$ISL")$(fmt "$OSL")"
|
||||||
|
KEY="${TRIGGER}/${{ github.run_id }}-${{ github.run_attempt }}/${SEQ_LEN}/${{ matrix.config.name }}/ai_analysis.md"
|
||||||
|
aws --endpoint-url "$S3_ENDPOINT_URL" s3 cp "$ANALYSIS" "s3://${S3_BUCKET}/${KEY}"
|
||||||
|
echo "uploaded to s3://${S3_BUCKET}/${KEY}"
|
||||||
|
|
||||||
- name: Clean up Slurm jobs on failure/cancel
|
- name: Clean up Slurm jobs on failure/cancel
|
||||||
if: failure() || cancelled()
|
if: failure() || cancelled()
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|||||||
@@ -17,6 +17,11 @@
|
|||||||
# SLURM_ACCOUNT - Slurm account (default: sglang)
|
# SLURM_ACCOUNT - Slurm account (default: sglang)
|
||||||
# SRT_SLURM_BRANCH - branch of srt-slurm repo to check out
|
# SRT_SLURM_BRANCH - branch of srt-slurm repo to check out
|
||||||
# GITHUB_WORKSPACE - set automatically by GitHub Actions
|
# GITHUB_WORKSPACE - set automatically by GitHub Actions
|
||||||
|
# MATRIX_CONFIG_NAME- matrix entry name (e.g. dsr1-fp4-1k1k-mid-curve); used in S3 prefix
|
||||||
|
# S3_BUCKET - MinIO bucket for benchmark log uploads
|
||||||
|
# S3_ENDPOINT_URL - MinIO endpoint URL (e.g. https://minio.<host>.nip.io)
|
||||||
|
# AWS_ACCESS_KEY_ID - writer access key for S3_BUCKET (via GH secrets)
|
||||||
|
# AWS_SECRET_ACCESS_KEY - writer secret key for S3_BUCKET (via GH secrets)
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
set -x
|
set -x
|
||||||
@@ -90,6 +95,31 @@ fi
|
|||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
SRTCTL_ROOT="$SRT_REPO_DIR"
|
SRTCTL_ROOT="$SRT_REPO_DIR"
|
||||||
|
|
||||||
|
: "${S3_BUCKET:?S3_BUCKET must be set}"
|
||||||
|
: "${S3_ENDPOINT_URL:?S3_ENDPOINT_URL must be set}"
|
||||||
|
: "${AWS_ACCESS_KEY_ID:?AWS_ACCESS_KEY_ID must be set}"
|
||||||
|
: "${AWS_SECRET_ACCESS_KEY:?AWS_SECRET_ACCESS_KEY must be set}"
|
||||||
|
: "${MATRIX_CONFIG_NAME:?MATRIX_CONFIG_NAME must be set}"
|
||||||
|
: "${GITHUB_RUN_ID:?GITHUB_RUN_ID must be set}"
|
||||||
|
: "${GITHUB_RUN_ATTEMPT:?GITHUB_RUN_ATTEMPT must be set}"
|
||||||
|
|
||||||
|
# Map the GitHub trigger into a friendlier top-level prefix: cron/manual.
|
||||||
|
case "${GITHUB_EVENT_NAME:-}" in
|
||||||
|
schedule) TRIGGER=cron ;;
|
||||||
|
workflow_dispatch) TRIGGER=manual ;;
|
||||||
|
*) TRIGGER="${GITHUB_EVENT_NAME:-unknown}" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Format ISL/OSL as "1k1k" / "1k8k" / "8k1k" etc. for the S3 prefix, so logs
|
||||||
|
# group naturally by sequence-length bucket under each run.
|
||||||
|
fmt_seq_len() {
|
||||||
|
local n=$1
|
||||||
|
if (( n % 1024 == 0 )); then echo "$((n / 1024))k"; else echo "$n"; fi
|
||||||
|
}
|
||||||
|
SEQ_LEN="$(fmt_seq_len "$ISL")$(fmt_seq_len "$OSL")"
|
||||||
|
|
||||||
|
S3_PREFIX="${TRIGGER}/${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}/${SEQ_LEN}/${MATRIX_CONFIG_NAME}"
|
||||||
|
|
||||||
cat > srtslurm.yaml <<EOF
|
cat > srtslurm.yaml <<EOF
|
||||||
# SRT SLURM configuration for SGLang GB200 nightly CI
|
# SRT SLURM configuration for SGLang GB200 nightly CI
|
||||||
default_account: "${SLURM_ACCOUNT}"
|
default_account: "${SLURM_ACCOUNT}"
|
||||||
@@ -108,10 +138,20 @@ containers:
|
|||||||
dynamo-sglang: ${SQUASH_FILE}
|
dynamo-sglang: ${SQUASH_FILE}
|
||||||
nginx: ${NGINX_SQUASH_FILE}
|
nginx: ${NGINX_SQUASH_FILE}
|
||||||
nginx-sqsh: ${NGINX_SQUASH_FILE}
|
nginx-sqsh: ${NGINX_SQUASH_FILE}
|
||||||
|
|
||||||
|
# srt-slurm postprocess uploads /logs to this bucket after each Slurm job.
|
||||||
|
# Credentials are read from AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY env vars,
|
||||||
|
# not written to disk. srt-slurm appends /<date>/<slurm-job-id>/ after prefix.
|
||||||
|
reporting:
|
||||||
|
s3:
|
||||||
|
bucket: "${S3_BUCKET}"
|
||||||
|
prefix: "${S3_PREFIX}"
|
||||||
|
endpoint_url: "${S3_ENDPOINT_URL}"
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
echo "--- srtslurm.yaml ---"
|
echo "--- srtslurm.yaml ---"
|
||||||
cat srtslurm.yaml
|
cat srtslurm.yaml
|
||||||
|
echo "--- S3 log upload: s3://${S3_BUCKET}/${S3_PREFIX}/ ---"
|
||||||
|
|
||||||
make setup ARCH=aarch64
|
make setup ARCH=aarch64
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user