DMS is the measured record of what AI compute does to the grid. It reads every GPU on your own servers as fast as the card's sensor actually updates, a rate it measures rather than assumes, builds the load profile planners are now asking for, and checks it against your meters and against the models planners use. On a shared floor it splits the record by tenant, so the site answering to the grid can see whose load moved. When the grid calls for less power, it cuts at the cards in steps and records exactly what happened. Jobs run slower and keep going.
Two A100s running a scripted mix of training and inference. Every time a job started or stopped, the node moved by about 300 W within seconds.
ERCOT told its board in September that dynamic models for large loads "have proven to be inaccurate and thus are inadequate for studying their grid impacts." NERC's board adopted its first standards for computational loads in October, and they go to FERC by the end of the year. Every site of 50 MW and up connected at 100 kV or more will register, give the grid operator modeling data on how its computing equipment is used, check that data again after changes, and follow the operator's instructions. On a colo or neocloud floor, the site that registers answers for GPUs its tenants run. PJM has proposed that large computational loads recover to 90% within 2 seconds after a voltage dip, ERCOT already requires it, MISO has filed ramp limits, and Southern Company caps ramps at 20 MW a minute.
Most sites can't answer yet, because nobody has measured it. DMS measures it on your own servers and checks it against your meter, without touching your customers' jobs. The result is a record a planner, a utility or an aggregator can check line by line.
If you run more than 50 MW of GPUs, these six pieces cover the rules headed your way. Newest is first.
Run DMS read-only on one node for 48 hours. You get back how fast the load climbs when a job starts, how far it falls when one ends, and the biggest swing it made over any window between half a second and a minute.
One node can't tell you what a whole site does, so the profile gives two numbers. One assumes every node moves at once, like a single huge training run. The other assumes the jobs have nothing to do with each other and partly cancel out. Your site lands somewhere in between.
Run DMS next to a rack or server meter and it scores how closely the GPU and CPU readings track the meter, on data the check wasn't tuned on. Hand it a planner's simulated power curve and it shows where the model and the real load disagree: peaks, ramps, the size of every swing.
If a UPS or battery sits between your servers and the grid, every report says so, because then the GPUs aren't what the grid sees.
Tell DMS which nodes or GPUs belong to which tenant. It gives the site and every tenant their biggest swing in any 5 seconds and their biggest rise and fall inside any minute, scaled to the site's size and checked against the limits that apply. For each of the site's worst swings it shows which tenant moved and by how much.
When the voltage dips, it shows how long each tenant's load took to get back to 90%. When a driver, firmware or card changes, it logs the change and measures before against after.
Set a power limit for the node and DMS keeps it under, and you can cap how fast it's allowed to climb. When the grid calls, it lowers the cards a step at a time and writes a record of the cut. If DMS itself crashes, every card drops to a safe cap you picked ahead of time.
This is the first page of a real one, built from the two-A100 run below. Levels, the largest swings by window, every job start and stop, and the limits of the data, all on the page.
Compliance with a grid rule is judged by the operator's meter at the grid connection. DMS doesn't replace that meter. It explains what's behind it.
Twenty pieces, each marked with how it was tested. Hardware-tested means it has run on real GPUs. Simulation-tested means it passes its full test suite against simulated GPUs and meters and has not yet run on hardware.
A record is only worth something if someone else can check it. The method document says what DMS reads and how often, what every field in a report means, how each check is computed, and where the numbers stop being valid. That includes the limits: ten readings a second sees up to 5 Hz, on A100 and H100 each reading covers 25 ms of every 100, a GPU sensor isn't a revenue meter, and a battery between the servers and the grid changes what the grid sees. Faster swings come from the site's own recorder, which DMS reads.
You run DMS on one NVIDIA or AMD node for 48 hours, no root needed. It reads each GPU through the vendor's own library (NVML, the same one nvidia-smi uses, or AMD's amdsmi) and saves power readings and settings to a folder you pick. It doesn't look at what jobs are running. It also opens no ports and never touches the network, so you can unplug the node and it runs the same.
Want to read the code first? Ask and I'll send it with its SHA-256, so you can confirm the copy you run is the one you read. Send the folder back and you'll have your profile in three days.