Skip to main content

Aidge module for model explorer: https://github.com/google-ai-edge/model-explorer.

Project description

Aidge Model Adapter

Pipeline status Python coverage Latest Release

Plugin of the framework Google Model Explorer to visualize Aidge graphs. For more information on how to use Model Explorer, you can refer yourself to the official documentation of the framework.

Installation

To install this plugin, you can install it using the pipy repository:

pip install aidge_core aidge_backend_cpu aidge_onnx aidge_model_explorer

Of course, this is only a plugin

Installation for devs

If you want to install this module locally, you can use this command at the root of the git project:

pip install -e .

Note: -e allow editable install, meaning that you would not have to reinstall each time you change the python code.

🚀 Features

Visualize ONNX file

You can use directly the model-explorer CLI with the extension aidge_model_explorer to visualize an ONNX graph like so:

model-explorer aidge_mobilenetV2.onnx --extensions=aidge_model_explorer

This will allow you to see how Aidge will import your ONNX graph, looking at potential MetaOperator created. Also GenericOperator have a specific background allowing to easily see which operator is not supported natively by Aidge.

Visualize wrapper method

This function wrap every call to the model explorer API, allowing to only call one line to visualize your graph.

Note: This function will automatically embed the visualization in a Jupyter Notebook cell if ran in a notebook, otherwise it will simply open a page in your browser.

import aidge_core
import aidge_model_explorer

lstm = aidge_core.LSTM(in_channels=4, hidden_channels=8, seq_length=5)
model = aidge_core.get_connected_graph_view(lstm)

aidge_model_explorer.visualize(model, "LSTM")

:warning: When using model-explorer from a distant server, port forwarding is not always automatic. Make sure to open the right port. (You can force the port to use by providing the argument port)

Visualize from config

You can also use the model_explorer API by using a aidge_model_explorer.Config() which is an overridden class enabling full compatibility with the model_explorer API.

import aidge_core
import aidge_model_explorer
import model_explorer


lstm = aidge_core.LSTM(in_channels=4, hidden_channels=8, seq_length=5)
lstm_model = aidge_core.get_connected_graph_view(lstm)

config = aidge_model_explorer.config()
config.add_graphview(lstm_model, "lstm")
model_explorer.visualize_from_config(config)

Synchronize graphs with node ids

Model explorer support an option to synchronize two graphs using node id. You can use this functionality to visualize a graph before and after graph modifications:

import aidge_core
import aidge_model_explorer
import model_explorer


lstm = aidge_core.LSTM(in_channels=4, hidden_channels=8, seq_length=5)
lstm_model = aidge_core.get_connected_graph_view(lstm)


config = aidge_model_explorer.config()
# Note: need to add graphview before doing any manipulation to keep the ids
config.add_graphview(lstm_model, "lstm")

aidge_core.expand_metaops(lstm_model)
config.add_graphview(lstm_model, "lstm_expanded")

model_explorer.visualize_from_config(config)

Once the GUI is opened, you can then explorer the two models like this:

Node styling

Note: Screen recording taken using v0.1.5 of model explorer.

Add attributes & metadata

import aidge_core
import aidge_onnx
import aidge_model_explorer
import model_explorer


model = aidge_onnx.load_onnx("aidge_mobilenetV2.onnx")

conv_config = aidge_model_explorer.ConverterConfig()
conv_config.add_attribute("isConv",
                          lambda node: "" if (node.type() == "Conv2D" or node.type() == "ConvDepthWise2D") else None)

conv_config.add_output_metadata("mean",
                          lambda _, tensor: str(tensor.mean()))

config = aidge_model_explorer.config()
config.add_graphview(model, "model1", conv_config)

model_explorer.visualize_from_config(config)

Once the GUI is opened, you can then play with the node styler to easily see the nodes that are convolutions.

Node styling

Note: Screen recording taken using v0.1.5 of model explorer.

Update node style

If you want to apply a specific style, you can add the following attributes to your nodes:

  • model_explorer:bg_color: Changes the background color of the node. The value must be a string representing a valid color in hexadecimal format (e.g., "#ff0800" for red). The string should follow the standard 6-digit RGB hex code format, beginning with a #.
  • model_explorer:border_color: Changes the border color of the node. The value must be a string representing a valid color in hexadecimal format (e.g., "#ff0800" for red). The string should follow the standard 6-digit RGB hex code format, beginning with a #.
  • model_explorer:h_border_color: Changes the border color on hover of the node. The value must be a string representing a valid color in hexadecimal format (e.g., "#ff0800" for red). The string should follow the standard 6-digit RGB hex code format, beginning with a #.

Example:

import aidge_core
import aidge_model_explorer
from aidge_model_explorer.visualize import visualize_from_config

node = aidge_core.ReLU(name="Colorized Node!")
node.attributes().set_attr(name="model_explorer:bg_color", value="#ff0800")
node.attributes().set_attr(name="model_explorer:border_color", value="#00ff4c")
node.attributes().set_attr(name="model_explorer:h_border_color", value="#1100ff")

g = aidge_core.sequential([node])
conf = aidge_model_explorer.config()

conf.add_graphview(g, "test_color")
visualize_from_config(conf)

📊 Default visualizations

Aidge model explorer propose some default visualization in order to let the user get started quickly.

Has an implementation

Add an attribute to every node for which we cannot find an implementation to use (for example because input/output datatype does not match). This attribute is named fail_best_match and contains the description of the current node specs and the specs for which Aidge has a registered implementation.

To use this function use:

my_graph: aidge_core.GraphView
aidge_model_explorer.has_best_match(my_graph, "cpu")

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aidge_model_explorer-0.9.0-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

Details for the file aidge_model_explorer-0.9.0-py3-none-any.whl.

File metadata

File hashes

Hashes for aidge_model_explorer-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 035ec6124e287011720885342b255034c2c65b1958743cc2200b576d27806777
MD5 e6770e342ba7d83aa8391eec338e94e1
BLAKE2b-256 3a24e69b9d41420239e8dff420bc68eeb1446c6bc3b8b898014c04d3ac22a481

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page