Download OpenAPI specification:Download
InfraGraph or infrastructure graph
defines a model-driven, vendor-neutral, standard
interface for capturing a system of systems suitable for use in co-designing AI/HPC solutions.
This model allows for defining physical infrastructure as a logical system of systems using graph like terminology. In addition to defining a logical graph, an unlimited number of different physical characteristics can be associated with logical endpoints.
node (vertex)
is the fundamental unit or entity within an infrastructure graph; represented as a endpoint with the following syntax:switch.0.asic.0
and switch.0.port.0
edge
is a combination of two nodes (endpoints)
in a graph such as (switch.0.asic.0
, switch.0.port.0
)path
is a sequence of edges that allows for traversal through the graph such as [server.0.npu.0
, server.0.nic.0
, switch.0.port.0
, switch.0.asic.0
]Contributions to the API and models schema can be made in the following ways:
Given an infrastructure object this API method will create a fully qualified infrastructure graph and validate it.
Creating a fully qualified infrastructure graph requires the following steps:
name | string^[\sa-zA-Z0-9-_()><\[\]]+$ The name of the infrastructure. Globally unique name of an object. It also serves as the primary key for arrays of objects. |
description | string A detailed description of the infrastructure. |
Array of objects (Device) An inventory of devices and components. | |
Array of objects (Link) An inventory of the links present in the infrastructure edges. | |
Array of objects (Instance) An inventory of the device instances present in the infrastructure edges. | |
Array of objects (Infrastructure.Edge) An array of edge objects used to connect instance devices and components to other instance devices and components. These edge objects are used to form a fully qualified qualified graph. |
{- "name": "string",
- "description": "string",
- "devices": [
- {
- "name": "string",
- "description": "string",
- "components": [
- {
- "name": "string",
- "description": "string",
- "count": 0,
- "choice": "custom",
- "custom": { },
- "device": { },
- "cpu": { },
- "npu": { },
- "nic": { },
- "memory": { },
- "port": { }
}
], - "links": [
- {
- "name": "string",
- "description": "string",
- "physical": {
- "bandwidth": {
- "choice": "gigabits_per_second",
- "gigabits_per_second": 0,
- "gigabytes_per_second": 0,
- "gigatransfers_per_second": 0
}, - "latency": {
- "choice": "ms",
- "ms": 0,
- "us": 0,
- "ns": 0
}
}
}
], - "edges": [
- {
- "ep1": {
- "device": "string",
- "component": "string"
}, - "ep2": {
- "device": "string",
- "component": "string"
}, - "scheme": "one2one",
- "link": "string"
}
]
}
], - "links": [
- {
- "name": "string",
- "description": "string",
- "physical": {
- "bandwidth": {
- "choice": "gigabits_per_second",
- "gigabits_per_second": 0,
- "gigabytes_per_second": 0,
- "gigatransfers_per_second": 0
}, - "latency": {
- "choice": "ms",
- "ms": 0,
- "us": 0,
- "ns": 0
}
}
}
], - "instances": [
- {
- "name": "string",
- "description": "string",
- "device": "string",
- "count": 0
}
], - "edges": [
- {
- "ep1": {
- "instance": "string",
- "component": "string"
}, - "ep2": {
- "instance": "string",
- "component": "string"
}, - "scheme": "one2one",
- "link": "string"
}
]
}
{- "warnings": [
- "string"
]
}
This will return the current graph.
format | string Value: "networkx" The format that the graph will be returned in. |
{- "format": "networkx"
}
{- "choice": "networkx",
- "networkx": "string"
}
Extend the current graph created by the set_graph
API.
rank=0
choice | string Enum: "nodes" "edges" |
Array of objects (Annotation.Node) | |
Array of objects (Annotation.Edge) |
{- "choice": "nodes",
- "nodes": [
- {
- "name": "string",
- "attribute": "string",
- "value": "string"
}
], - "edges": [
- {
- "ep1": "string",
- "ep2": "string",
- "attribute": "string",
- "value": "string"
}
]
}
{- "warnings": [
- "string"
]
}
Query the current fully expanded graph using a declarative query syntax.
NPU
or NIC
choice | string Enum: "node_filters" "shortest_path_filters" |
Array of objects (QueryNodeFilter) | |
Array of objects (QueryShortestPathFilter) Under Review: Proposal to abstract the shortest path interface to the graph. Add shortest path filters to retrive the shortest path between source and destination nodes |
{- "choice": "node_filters",
- "node_filters": [
- {
- "name": "string",
- "choice": "attribute_filter",
- "attribute_filter": {
- "name": "string",
- "operator": "eq",
- "value": "string",
- "logic": "and"
}, - "id_filter": {
- "operator": "eq",
- "value": "string",
- "logic": "and"
}
}
], - "shortest_path_filters": [
- {
- "name": "string",
- "source": "string",
- "destination": "string"
}
]
}
{- "choice": "node_matches",
- "node_matches": [
- {
- "id": "string",
- "attributes": [
- {
- "name": "string",
- "value": "string"
}
]
}
], - "shortest_path_matches": [
- {
- "name": "string",
- "nodes": [
- "string"
]
}
]
}