Moneo: Distributed GPU System Monitoring for AI Workflows
Microsoft has introduced a new open-source GPU monitoring framework named Moneo (Latin for monitor). Moneo orchestrates metric collection (DCGMI + Prometheus DB) and visualization (Grafana) across multi-GPU/node systems. This provides useful insights into workflow and system level characterization.
GPUs are optimized for high throughput, massively parallel, workloads. Efficient use of GPUs is dependent on a few factors such as workload characteristics, system characteristics, and sometimes physical environment. GPU system level monitoring determines GPU utilization and facilitates workload characterization. This aids in exploring how to utilize the GPU more efficiently.
Monitoring GPU metrics on a single system over a period may be trivial. However, formatting and analyzing the raw metric data so that it can provide intuitive insights can prove to be a tedious task. Our goal is to pair system level characterization with application metrics to determine the efficiency of our use of the GPUs.
Given that there is already some complexity with collecting and analyzing GPU metrics on a single system, unsurprisingly, scaling the same methodology for multiple systems is difficult.
For certain deep learning models use of distributed multi-GPU systems is the only feasible way to train in a reasonable time frame. Much of the application complexity is abstracted away by high level AI frameworks, but there are still configurations and design choices that users must make that ultimately affect the throughput and behavior of model training.
Moneo’s usefulness in providing system level insights can help guide design choices to achieve the efficient use of GPU systems.
Moneo Design
Figure 1: Design
Three categories of metrics that Moneo monitors:
- Device Counters
- Compute/Memory Utilization
- Streaming multiprocessor (SM) and Memory Clock frequency
- Temperature
- Power
- ECC Counts
- Profiling Counters
- SM Activity
- Memory Dram Activity
- NVLink Activity
- PCIE Rate
- InfiniBand Network Counters
- IB TX/RX rate
Once Moneo has been launched these metrics can be viewed from the Grafana portal. See figures 2,3,4 for snapshots of the different metric views.
Figure 2: Device Counter View
Figure 3: Profiling Counter View
Figure 4: IB Counter View
Getting Started
Starting with Moneo is easy. Just clone the latest release from the Moneo Repo and follow the README for detailed setup instructions or take a look at the quick start guide. In a short period, you should be able to launch Moneo with a single command and log into the Grafana portal to start seeing results!
Moneo is also available on Azure HPC + AI Ubuntu images. Just navigate to “/opt/azurehpc/tools/Moneo”. The image has all the required dependencies installed. So, all that’s necessary is configuring and deploying Moneo.
Quick start instructions:
- Clone Moneo from Github and install ansible.
- git clone https://github.com/Azure/Moneo.git
- cd Moneo
- python3 -m pip install ansible
- Next create a host.ini config file.
-
Note: The master node can also be a worker node as well. The master node will have the Grafana and Prometheus docker containers deployed to it.
-
Note: If you have configured password less SSH already, [all:vars] section can be skipped.
-
Note: The master node must be able to ssh into itself.
-
- Now deploy Moneo
- ansible-playbook -i host.ini src/ansible/deploy.yaml
- Log into the portal by navigating to http://master-ip-or-domain:3000 and inputting your credentials
- Note: By default, username/password are set to "azure". This can be changed here "src/master/grafana/grafana.env"
- Navigating Moneo Grafana Portal
- The current view is labeled in the top left corner:
- VM instance and GPU can be selected from the drop-down menus in the top left corner:
- Various actions such as dashboard selection or data source configuration can be achieved using the left screen menu:
- Metric groups are collapsible:
- The current view is labeled in the top left corner:
Published on:
Learn moreRelated posts
From Business Central to SharePoint: The Right Way to Save PDF Files in Power Automate
If you’re pulling PDF files from Microsoft Dynamics 365 Business Central and saving them to SharePoint using Power Automate, there’s one criti...
How to Build Environment-Aware Flows by Fetching CRM Metadata Dynamically in Power Automate
Stop relying on OData workarounds and use a professional API-based pattern instead. When building flows in Power Automate, you often need envi...
Action ‘Update_a_record’ failed: An error has occurred. No resources were found when selecting for update – Fixing Cross-Company Update Issues in Finance & Operations Using Dataverse Virtual Entities (Power Automate)
Recently, while trying to update the Projects table in Finance & Operations using the Fin & Ops Apps actions in Power Automate, we ran...
Power Automate Forward A Meeting Invite In Outlook
A Power Automate flow can forward a meeting invite to a new attendee in Outlook. ... The post Power Automate Forward A Meeting Invite In Outlo...
Power Automate Generative Actions
Power Automate Generative Actions Build Intelligent Automations with Natural Language and AI 📅 Released: Preview (2024-2025) 🎯 Status: Publi...
Create Excel File in OneDrive Using Power Automate and Insert Records Dynamically from Dataverse
Exporting Dataverse records into Excel is a common requirement in Dynamics 365 and Power Platform projects—whether for reporting, backup, or d...
Fixing the “Only 1 of 2 keys provided for lookup, provide keys for dataAreaId, ProjectID / Not found” Error in Power Automate (Fin & Ops Apps)
Recently, while working with the Projects table from a Finance & Operations (F&O) environment, we ran into an error while using the Ge...
Rules of Engagement: How Plugins, Workflows, and Power Automate Coexist in the Execution Pipeline
Understanding how the three automation engines interact—Plugins, Classic Workflows, and Power Automate—is essential for designing predictable,...
Power Automate: Fixing the ‘ChildFlowNeverPublished’ Error
While trying to enable one of the cloud flows from a managed solution I had installed, I encountered the following error: “{“erro...