Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
awslabs avatar

Hyperpod Nccl

  • 64 installs
  • 850 repo stars
  • Updated August 3, 2026
  • awslabs/agent-plugins

hyperpod-nccl is a Claude skill that runs read-only diagnostics for NCCL and training-pod failures on SageMaker HyperPod GPU clusters.

About

This skill diagnoses NCCL and adjacent training-pod failures on SageMaker HyperPod GPU clusters, including training hangs, AllReduce timeouts, EFA errors, container and GPU OOM, and CrashLoopBackOff. Its read-only nccl-diagnose.sh reads state via AWS APIs, kubectl, and SSM and points each finding at a remediation section. A developer uses it when distributed GPU training stalls or collective ops time out.

  • Diagnoses NCCL failures and training-pod failures on HyperPod GPU clusters (EKS or Slurm)
  • Covers AllReduce timeouts, EFA/libfabric errors, TCP fallback, OOMKilled, and NCCL version mismatch
  • Read-only nccl-diagnose.sh reads state via AWS APIs, kubectl, and SSM and routes each [FAIL]

Hyperpod Nccl by the numbers

  • 64 all-time installs (skills.sh)
  • Ranked #279 of 596 Debugging skills by installs in the Skillselion catalog
  • Data as of Aug 4, 2026 (Skillselion catalog sync)
At a glance

hyperpod-nccl capabilities & compatibility

Capabilities
hyperpod node debugger · hyperpod cluster debugger · hyperpod performance debugger · hyperpod version checker
Works with
aws · kubernetes
Use cases
debugging · devops
From the docs

What hyperpod-nccl says it does

Never run a command that changes cluster, node, or workload state — present each one as a **Suggested command (run this yourself)** block and wait for the customer.
SKILL.md
"No events" on a training-time NCCL issue is expected, not a clean bill of health.
SKILL.md
npx skills add https://github.com/awslabs/agent-plugins --skill hyperpod-nccl

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs64
repo stars850
Last updatedAugust 3, 2026
Repositoryawslabs/agent-plugins

What it does

Diagnose NCCL and training-pod failures on HyperPod GPU clusters read-only.

Who is it for?

Operators triaging distributed GPU training hangs and NCCL timeouts on HyperPod

Skip if: Single-node hardware faults (hyperpod-node-debugger) or cluster-creation EFA/SSM failures (hyperpod-cluster-debugger)

When should I use this skill?

Distributed training hangs, an AllReduce times out, or pods hit OOMKilled or CrashLoopBackOff

What you get

Each NCCL or pod failure is diagnosed and routed to a specific remediation section, commands left for the customer.

  • Per-finding root cause and suggested remediation commands

By the numbers

  • Default sample of 3 nodes
  • P0/P1/P2 priority tags

Files

SKILL.mdMarkdownGitHub ↗

HyperPod NCCL Debugger

Operating policy. Run read-only diagnostics yourself. Never run a command that changes cluster, node, or workload state — present each one as a Suggested command (run this yourself) block and wait for the customer. Destructive order: investigate → reboot → replace (replace destroys root + secondary volumes; not supported on Slurm controller nodes). Never discard training state on speculation.

Diagnose NCCL failures on SageMaker HyperPod (EKS and Slurm). scripts/nccl-diagnose.sh reads state via AWS APIs, kubectl, and SSM, then prints each issue as [FAIL] ... → references/<file>.md § <section>. Read-only.

Signal sourcing: list-cluster-events carries infrastructure-level state only (lifecycle, bootstrap, EFA health check, capacity, replacement, reboot, AMI rollback). It does not carry NCCL timeouts, GPU XID/ECC, or per-pod training signals — those come from pod logs, CloudWatch training streams, on-node SSM probes, and NCCL env audit. "No events" on a training-time NCCL issue is expected, not a clean bill of health.

---

Workflow

1. Collect cluster name, region, namespace/job (EKS), exact NCCL error string. 2. Run the diagnostic (always — the output drives everything else). 3. For every [FAIL] line, Read the referenced section. 4. Present finding, root cause, and the Suggested-command block with concrete values (instance IDs, SG IDs, namespaces) filled in from the script output. Wait for customer approval. 5. Re-run the diagnostic to confirm.

If a finding has no matching section, report it as a bug — do not invent a fix.

Step 1: Authenticate kubectl (EKS)

EKS_ARN=$(aws sagemaker describe-cluster --cluster-name <HYPERPOD-NAME> --region <REGION> \
  --query 'Orchestrator.Eks.ClusterArn' --output text)
EKS_NAME=$(echo "$EKS_ARN" | awk -F'/' '{print $NF}')
aws eks update-kubeconfig --name "$EKS_NAME" --region <REGION>
kubectl get nodes

Step 2: Run the diagnostic

# Basic:
bash scripts/nccl-diagnose.sh --cluster <HYPERPOD-NAME> --region <REGION>

# Scope to an EKS job/namespace:
bash scripts/nccl-diagnose.sh --cluster <NAME> --region <REGION> --namespace <NS> --job <JOB>

# Force orchestrator:
bash scripts/nccl-diagnose.sh --cluster <NAME> --region <REGION> --orchestrator slurm

# Larger hardware sample (default 3):
bash scripts/nccl-diagnose.sh --cluster <NAME> --region <REGION> --sample-nodes 10

# Specific node only:
bash scripts/nccl-diagnose.sh --cluster <NAME> --region <REGION> --node i-0abc123def456

Tags: [PASS] · [FAIL] (counted in Issues Found, has reference pointer) · [WARN] · [INFO]. Priorities: P0 blocks training · P1 degraded · P2 informational.

---

Remediation index

Each [FAIL] line in the script already points directly at the right section. This table is a lookup for manual triage.

FindingSection
SG missing inbound/outbound self-referenceoperations.md § 8
Blocking NetworkPolicy / allow-all missingoperations.md § 8
Slurm node DOWN / DRAINING / RemoveIPCoperations.md § 7
GPU XID / SYSTEM_ERROR / hardware faulthyperpod-node-debugger § F / § G
GPU row-remap / DCGM Fail / silent NaNshyperpod-node-debugger § G.1.a/b
NCCL timeout / rendezvous / stragglerdebugging-guide.md § 1
EFA configuration / not useddebugging-guide.md § 6
EFA TCP fallback (NET/OFI Using TCP)debugging-guide.md § 13
NCCL version mismatch across podsdebugging-guide.md § 10
Container OOM (pod killed, exit 137)debugging-guide.md § 4
GPU OOM (CUDA out of memory)debugging-guide.md § 11
RDMA memlock / /dev/shm too smalldebugging-guide.md § 17
MASTER_ADDR DNS / headless Servicedebugging-guide.md § 12
NVLS / PXN / topology tuningdebugging-guide.md § 19
Any NCCL / EFA / rendezvous log patternerror-patterns-quick-ref.md
Performance / nccl-tests / bandwidthperformance-testing.md

---

Prerequisites

  • aws CLI v2.13+ authenticated (aws sts get-caller-identity)
  • jq, python3, bash 4.2+
  • unbuffer (from the expect package: yum install expect / apt install expect)
  • kubectl authenticated to the EKS cluster (K8s checks skipped if absent)
  • session-manager-plugin for on-node hardware checks

Defaults

  • Region — required: pass --region or set $AWS_DEFAULT_REGION.
  • Orchestrator — auto-detected; override with --orchestrator eks|slurm.
  • Namespace / job (EKS) — all namespaces; scope with --namespace <NS> --job <JOB>.
  • Hardware sampling — 3 nodes over SSM (capped at 50). --node <ID> for a specific node. Node probes run serially (180 s per node): --sample-nodes 10 can take ~30 min.
  • CloudWatch window — last 2 hours.
  • Colors — auto-disabled on non-TTY or TERM=dumb.

Error handling

FailureScriptTell the customer
aws sts get-caller-identity failsExit 1 with the AWS error"Fix AWS credentials and rerun."
describe-cluster AccessDeniedWarn, add Missing IAM for sagemaker:DescribeCluster"Grant sagemaker:DescribeCluster (operations.md § 2)."
Cluster not foundExit 1 after listing region's clusters"Confirm HyperPod cluster name and region."
kubectl absent / unauthenticatedWarn, skip K8s checks"aws eks update-kubeconfig --name <EKS> --region <R>."
SSM plugin absentWarn, skip on-node hardware checks"Install session-manager-plugin."
SSM times out (180s)Partial output, mark node unreachable"Rerun with --node <ID> --sample-nodes 1; check SSM agent on the node."
CloudWatch log group not foundSkip CloudWatch scan"Enable CloudWatch on the cluster (operations.md § 4)."
Cluster events API throttledWarn, continue with partial data"Rerun later — script is idempotent."

Exit codes: 0 diagnostic complete · 1 fatal prerequisite missing or cluster unreachable.

IAM permissions

Full policy + RBAC in operations.md § 2. SSM on HyperPod uses start-session against sagemaker-cluster:<cluster-id>_<group>-<iid> targets — grant ssm:StartSession / ssm:TerminateSession, not ssm:SendCommand.

Scale strategy

ScopeMethodCoverage
All nodessagemaker:ListClusterNodes (paginated)100% nodes
All K8s objectskubectl100% pods/nodes/policies
HardwareSSM --sample-nodes N (default 3)Sampled
Node logsCloudWatch100% nodes

Large clusters: the PyTorch NCCL backend defaults to a 10-minute collective-op timeout (per the PyTorch distributed docs). Large clusters routinely exceed that on first rendezvous; raise it via torch.distributed.init_process_group(timeout=timedelta(seconds=<N>)). HyperPod support has also observed NCCL topology-graph-search hangs on 256+ node clusters when memlock is unlimited; using a large fixed memlock (e.g. 8388608) in pod securityContext or /etc/security/limits.conf has cleared these in field cases. This memlock pattern is a field observation, not AWS- or NCCL-documented behavior.

For FSDP, DeepSpeed, or Megatron-LM tuning: debugging-guide.md § 18.

Skill delegation

NeedUse
Cluster creation / deployment failureshyperpod-cluster-debugger (§ A / B / C / H + --validate)
Post-deployment cluster-wide managementhyperpod-cluster-debugger
Per-node issues (disk, lifecycle, hardware)hyperpod-node-debugger
Trainium/Inferentia collective-comm (AWS Neuron Collectives, not NCCL)hyperpod-node-debugger § G.2
Shell on nodeshyperpod-ssm
Version comparison across nodeshyperpod-version-checker
Diagnostic bundle for AWS Supporthyperpod-issue-report
MFU / performance degradationhyperpod-mfu-debugger

Escalate to AWS Support

Escalate when:

1. All SG rules correct, EFA verified on-node, but NCCL still times out. 2. Hardware checks pass on all nodes but AllReduce still hangs. 3. Issues Found: 0 but training still fails. 4. GPU XID errors persist after node replacement. 5. Collective-op timeout raised and memlock workaround applied but large-cluster rendezvous still hangs.

Before opening the case

# 1. Cluster identity + status
aws sagemaker describe-cluster --cluster-name <C> --region <R>

# 2. Full NCCL diagnostic (sample more nodes for escalation)
bash scripts/nccl-diagnose.sh --cluster <C> --region <R> --sample-nodes 10 > nccl-diag.txt

# 3. Per-node log/config bundle to S3 (delegates to hyperpod-issue-report)
#    See skills/hyperpod-issue-report/SKILL.md for the exact invocation.

Include in the case

  • Cluster name + ARN and AWS region
  • Orchestrator (EKS or Slurm) and EKS cluster name / Slurm controller node
  • Timestamp window (UTC start / end) of the failure
  • Exact NCCL / libfabric error strings (copy verbatim from pod logs or journalctl)
  • Affected instance IDs / node names / pod names / namespace / job name
  • nccl-diag.txt from step 2 above
  • S3 URI of the hyperpod-issue-report bundle from step 3
  • NCCL env vars in effect (printenv | grep -E '^NCCL|^FI_|^TORCH_' from one pod)

References

  • error-patterns-quick-ref.md — log pattern → code → fix table
  • debugging-guide.md — per-scenario procedures (21 sections incl. NVLS/PXN/topology)
  • performance-testing.md — nccl-tests, bandwidth thresholds, straggler detection
  • operations.md — IAM, SSM format, CloudWatch, env-var reference, node labels, Slurm ops, remediations

Related skills

FAQ

Does no cluster event mean the training is fine?

No. list-cluster-events carries infrastructure state only; NCCL timeouts and per-pod signals come from pod logs, CloudWatch, and on-node probes.

Is this skill safe to run on a live job?

Yes. It is read-only and presents state-changing commands for the customer to run, and never discards training state on speculation.

Debugginginframonitoring

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.