Skip to content

HyperPod Slurm observability improvement - #857

Merged
shimomut merged 30 commits into
mainfrom
hpslurm-observability-20250819
Sep 16, 2025
Merged

HyperPod Slurm observability improvement#857
shimomut merged 30 commits into
mainfrom
hpslurm-observability-20250819

Conversation

@shimomut

Copy link
Copy Markdown
Collaborator

Description of changes:

  • Updating the CloudFormation template for the HyperPod Slurm observability stack. Now it automatically register Prometheus as the data-source for Grafana, and installs pre-configured dashboard to Grafana.
  • Updating lifecycle script to install metric exporters and OTEL collector in each node - more scalable architecture similar to the HyperPod EKS Observability.
  • Added "ObservabilityConfig" class in config.py. It has Prometheus Remote Write URL and advanced flag.

For more details - https://catalog.workshops.aws/sagemaker-hyperpod/en-US/09-observability

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

shimomut and others added 30 commits August 19, 2025 23:02
* Adding Dashboard Custom Resource for Slurm Observability template

* Fixing parameters for template
* Fixing parameters for template

* Updating observability custom resource lambda

* Updating json file for exporter metrics
* Updating EFA, Node and FSx metrics for slurm

* Updating OTEL Config, Adding cfn params for observability template, updating dashboard metrics

* Updating zip for dashboard
* Updating Node Dashboard JSON

* Updating Node Dashboard JSON
@shimomut
shimomut requested a review from nghtm September 16, 2025 05:11

@nghtm nghtm left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Concerns about several hard coded resources, adjustments made to docker installation in LCS

class ObservabilityConfig:

# Prometheus remote write URL
prometheus_remote_write_url = "https://aps-workspaces.us-west-2.amazonaws.com/workspaces/ws-abcd1234-abcd-1234-ab12-1234abcd1234/api/v1/remote_write"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this hardcoded to an AMP URL?!

@shimomut shimomut Sep 16, 2025

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a placeholder URL (used dummy ID with 1234, abcd, etc). Customer needs to replace with their URL. I can add additional comment to explain that.


from config import ObservabilityConfig

ExecuteBashScript("./utils/install_docker.sh").run()

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Docker should be installed on all SMHP nodes, regardless of if customer enables observability or not.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"install_docker.sh" is called when "enable_docker_enroot_pyxis" is True or "enable_observability" is True, not always. (This PR is not changing this condition.)

@@ -0,0 +1,47 @@
# Clocks

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wanted to put these two configuration files (basic and advanced) side by side in a single place, and download together with lifecycle script itself, just to avoid additional HTTP download. We can delete this file once the full production version of solution comes. But please let me know if this is a blocker.

IMAGE="nvcr.io/nvidia/k8s/dcgm-exporter:${DCGM_EXPORTER_VERSION}"
METRICS_CSV_URL="https://raw.githubusercontent.com/aws-samples/awsome-distributed-training/refs/heads/main/4.validation_and_observability/4.prometheus-grafana/dcgm-metrics.csv"
METRICS_CSV_PATH="/tmp/dcgm-metrics.csv"
ECR_ACCOUNT_ID=602401143452

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hard coded account ID?

@shimomut shimomut Sep 16, 2025

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is EKS add-on's ECR repo - officially documented here:
https://docs.aws.amazon.com/eks/latest/userguide/add-ons-images.html

I can add comment to clarify this point.

# Define the container name
CONTAINER_NAME="efa-exporter"

ECR_ACCOUNT_ID=602401143452

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hard coded account ID

@shimomut shimomut Sep 16, 2025

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is EKS add-on's ECR repo - officially documented here:
https://docs.aws.amazon.com/eks/latest/userguide/add-ons-images.html

I can add comment to clarify this point.

# Define the container name
CONTAINER_NAME="node-exporter"

ECR_ACCOUNT_ID=602401143452

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hard coded account ID

@shimomut shimomut Sep 16, 2025

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is EKS add-on's ECR repo - officially documented here:
https://docs.aws.amazon.com/eks/latest/userguide/add-ons-images.html

I can add comment to clarify this point.

IMAGE="public.ecr.aws/hpc-cloud/efa-node-exporter:latest"
CONTAINER_NAME="otel-collector"

ECR_ACCOUNT_ID=602401143452

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hard coded account ID

@shimomut shimomut Sep 16, 2025

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is EKS add-on's ECR repo - officially documented here:
https://docs.aws.amazon.com/eks/latest/userguide/add-ons-images.html

I can add comment to clarify this point.

@nghtm nghtm left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving as long as comments are resolved. Requesting future PRs for LCS be opened against new LCS repo being maintained by Mark Yu's team

@shimomut
shimomut merged commit 27a8033 into main Sep 16, 2025
4 checks passed
@shimomut
shimomut deleted the hpslurm-observability-20250819 branch September 16, 2025 18:17
KeitaW pushed a commit that referenced this pull request Feb 17, 2026
Description of changes:

- Updating the CloudFormation template for the HyperPod Slurm observability stack. Now it automatically register Prometheus as the data-source for Grafana, and installs pre-configured dashboard to Grafana.
- Updating lifecycle script to install metric exporters and OTEL collector in each node - more scalable architecture similar to the HyperPod EKS Observability.
- Added "ObservabilityConfig" class in config.py. It has Prometheus Remote Write URL and advanced flag.

For more details - https://catalog.workshops.aws/sagemaker-hyperpod/en-US/09-observability

---------

Co-authored-by: Madhubalasri-B <madbal@amazon.com>
newabdosheham pushed a commit to newabdosheham/awsome-distributed-training that referenced this pull request Feb 26, 2026
Description of changes:

- Updating the CloudFormation template for the HyperPod Slurm observability stack. Now it automatically register Prometheus as the data-source for Grafana, and installs pre-configured dashboard to Grafana.
- Updating lifecycle script to install metric exporters and OTEL collector in each node - more scalable architecture similar to the HyperPod EKS Observability.
- Added "ObservabilityConfig" class in config.py. It has Prometheus Remote Write URL and advanced flag.

For more details - https://catalog.workshops.aws/sagemaker-hyperpod/en-US/09-observability

---------

Co-authored-by: Madhubalasri-B <madbal@amazon.com>
paragao pushed a commit that referenced this pull request May 1, 2026
* Removed inclusion of nsight

* Boilerplate settings

* Added nsys profile for BioNemo

* Updated twith comments from PR

Signed-off-by: Ankur Srivastava <awsankur@amazon.com>

* Fix/readme - fix borked logo (#356)

* Change readme to refer to recent test cases & assets

* Remove borked ascii logo

* Deleting SMP/SMDDP test-cases based on PM's input (#617)

* HyperPod Slurm observability improvement (#857)

Description of changes:

- Updating the CloudFormation template for the HyperPod Slurm observability stack. Now it automatically register Prometheus as the data-source for Grafana, and installs pre-configured dashboard to Grafana.
- Updating lifecycle script to install metric exporters and OTEL collector in each node - more scalable architecture similar to the HyperPod EKS Observability.
- Added "ObservabilityConfig" class in config.py. It has Prometheus Remote Write URL and advanced flag.

For more details - https://catalog.workshops.aws/sagemaker-hyperpod/en-US/09-observability

---------

Co-authored-by: Madhubalasri-B <madbal@amazon.com>

* Add optional Training Plan support for HyperPod instance groups

* Standardize instance_groups to list objects with optional training plan ARN

* chore: revert unrelated regressions from bad rebase

---------

Signed-off-by: Ankur Srivastava <awsankur@amazon.com>
Co-authored-by: Pierre-Yves Aquilanti <pierreya@amazon.com>
Co-authored-by: Verdi March <marcverd@amazon.com>
Co-authored-by: Ankur Srivastava <awsankur@amazon.com>
Co-authored-by: Pierre-Yves <62559210+perifaws@users.noreply.github.com>
Co-authored-by: Tomonori Shimomura <59209764+shimomut@users.noreply.github.com>
Co-authored-by: Madhubalasri-B <madbal@amazon.com>
Co-authored-by: newabdosheham <ubuntu@L007313.mbzu.ae>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants