qairt-visualizer 0.6.0__py3-none-macosx_11_0_arm64.whl → 0.8.0__py3-none-macosx_11_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- qairt_visualizer/core/launchers/electron_launcher_context.py +31 -6
- qairt_visualizer/core/ui/dist/browser/assets/i18n/common/en.json +1 -1
- qairt_visualizer/core/ui/dist/browser/assets/i18n/graph/en.json +20 -10
- qairt_visualizer/core/ui/dist/browser/assets/i18n/panels/en.json +4 -3
- qairt_visualizer/core/ui/dist/browser/assets/i18n/panels/model-diff/en.json +12 -4
- qairt_visualizer/core/ui/dist/browser/assets/i18n/workspaces/en.json +3 -0
- qairt_visualizer/core/ui/dist/browser/chunk-EDLT7DPU.js +120 -0
- qairt_visualizer/core/ui/dist/browser/{chunk-QD7PA2I4.js → chunk-LIDZK7LW.js} +12 -12
- qairt_visualizer/core/ui/dist/browser/{chunk-3SMGFPTN.js → chunk-NPWGWH4M.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/eaix.js +24 -0
- qairt_visualizer/core/ui/dist/browser/index.html +2 -2
- qairt_visualizer/core/ui/dist/browser/main-4KT5O4ZZ.js +1 -0
- qairt_visualizer/core/ui/dist/browser/{styles-52VQCFP5.css → styles-2Z5PB4WZ.css} +1 -1
- qairt_visualizer/core/ui/dist/browser/view.js +1 -0
- qairt_visualizer/core/ui/dist/browser/worker-X453S7QD.js +1 -0
- qairt_visualizer/core/ui/dist/browser/worker-XEMTCBTU.js +4 -0
- qairt_visualizer/core/ui/dist/qairt_visualizer.app/Contents/Frameworks/QAIRT Visualizer Helper (GPU).app/Contents/Info.plist +1 -1
- qairt_visualizer/core/ui/dist/qairt_visualizer.app/Contents/Frameworks/QAIRT Visualizer Helper (Plugin).app/Contents/Info.plist +1 -1
- qairt_visualizer/core/ui/dist/qairt_visualizer.app/Contents/Frameworks/QAIRT Visualizer Helper (Renderer).app/Contents/Info.plist +1 -1
- qairt_visualizer/core/ui/dist/qairt_visualizer.app/Contents/Frameworks/QAIRT Visualizer Helper.app/Contents/Info.plist +1 -1
- qairt_visualizer/core/ui/dist/qairt_visualizer.app/Contents/Info.plist +1 -1
- qairt_visualizer/core/ui/dist/qairt_visualizer.app/Contents/Resources/app.asar +0 -0
- qairt_visualizer/core/ui/dist/qairt_visualizer.app/Contents/Resources/icon.icns +0 -0
- qairt_visualizer/core/ui/helpers/post_install.py +181 -7
- qairt_visualizer/core/ui/helpers/windows_helpers.py +97 -0
- {qairt_visualizer-0.6.0.dist-info → qairt_visualizer-0.8.0.dist-info}/METADATA +5 -5
- {qairt_visualizer-0.6.0.dist-info → qairt_visualizer-0.8.0.dist-info}/RECORD +31 -29
- qairt_visualizer/core/ui/dist/browser/chunk-M7SD7HRU.js +0 -129
- qairt_visualizer/core/ui/dist/browser/main-VGWU2273.js +0 -1
- qairt_visualizer/core/ui/dist/browser/worker-CECUQ4FG.js +0 -1
- qairt_visualizer/core/ui/dist/browser/worker-IGSZ74QJ.js +0 -4
- {qairt_visualizer-0.6.0.dist-info → qairt_visualizer-0.8.0.dist-info}/LICENSE.pdf +0 -0
- {qairt_visualizer-0.6.0.dist-info → qairt_visualizer-0.8.0.dist-info}/WHEEL +0 -0
- {qairt_visualizer-0.6.0.dist-info → qairt_visualizer-0.8.0.dist-info}/entry_points.txt +0 -0
- {qairt_visualizer-0.6.0.dist-info → qairt_visualizer-0.8.0.dist-info}/top_level.txt +0 -0
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
import os
|
|
11
11
|
import platform
|
|
12
12
|
import subprocess
|
|
13
|
+
import threading
|
|
13
14
|
import time
|
|
14
15
|
from pathlib import Path
|
|
15
16
|
from typing import List, Optional, cast
|
|
@@ -88,6 +89,11 @@ class ElectronLauncherContext(BaseUILauncherContext):
|
|
|
88
89
|
|
|
89
90
|
def _launch(self, extra_args: List[str]) -> None:
|
|
90
91
|
p = platform.system().lower()
|
|
92
|
+
if p == "linux" and not os.getenv("DISPLAY"):
|
|
93
|
+
self.logger.error(
|
|
94
|
+
"No $DISPLAY detected. Set the $DISPLAY environment variable to run the application."
|
|
95
|
+
)
|
|
96
|
+
return
|
|
91
97
|
if p == "darwin":
|
|
92
98
|
extra_args = ["--args"] + extra_args if extra_args else extra_args
|
|
93
99
|
command_line_args = ["open", "-a", self._get_electron_path(p)] + extra_args
|
|
@@ -96,14 +102,33 @@ class ElectronLauncherContext(BaseUILauncherContext):
|
|
|
96
102
|
|
|
97
103
|
self.logger.debug("Launching Visualizer application.")
|
|
98
104
|
self.logger.debug("Launch command: %s", command_line_args)
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
+
try:
|
|
106
|
+
proc = subprocess.Popen( # pylint: disable=consider-using-with
|
|
107
|
+
command_line_args,
|
|
108
|
+
stdout=subprocess.DEVNULL,
|
|
109
|
+
stderr=subprocess.PIPE,
|
|
110
|
+
start_new_session=True,
|
|
111
|
+
text=True,
|
|
112
|
+
bufsize=1,
|
|
113
|
+
)
|
|
114
|
+
except OSError as e:
|
|
115
|
+
raise RuntimeError(f"Spawning QAIRT visualizer application failed: {e}") from e
|
|
105
116
|
self.set_pid(proc.pid)
|
|
106
117
|
|
|
118
|
+
capture_seconds = 3.0
|
|
119
|
+
if proc.stderr:
|
|
120
|
+
start_time = time.time()
|
|
121
|
+
|
|
122
|
+
def _capture_initial_stderr():
|
|
123
|
+
while True:
|
|
124
|
+
if proc.poll() is not None or time.time() - start_time > capture_seconds:
|
|
125
|
+
break
|
|
126
|
+
line = proc.stderr.readline().rstrip() if proc.stderr else None
|
|
127
|
+
if line:
|
|
128
|
+
self.logger.error("Error while starting QAIRT Visualizer: %s", line)
|
|
129
|
+
|
|
130
|
+
threading.Thread(target=_capture_initial_stderr, daemon=True).start()
|
|
131
|
+
|
|
107
132
|
def _get_existing_zmq_port(self) -> Optional[int]:
|
|
108
133
|
"""Check for existing ZMQ port from temp file"""
|
|
109
134
|
try:
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"OVERVIEW": "Visualize your model and runtime metrics produced on your Qualcomm hardware with Qualcomm AI Runtime.",
|
|
61
61
|
"SELECT_FILE_FOLDERS": "Select files and folders",
|
|
62
62
|
"SELECT_FROM_COMPUTER": "Select from your computer",
|
|
63
|
-
"SUPPORTED_FORMATS": "Supported formats:\nmodels: onnx, tensorflow, tflite, dlc, pytorch\nreports: optrace, qhas, qairt profile
|
|
63
|
+
"SUPPORTED_FORMATS": "Supported formats:\nmodels: onnx, tensorflow, tflite, dlc, pytorch\nreports: optrace, runtrace, genie trace, qhas, qairt profile",
|
|
64
64
|
"WELCOME": "Welcome to Qualcomm AI Runtime Visualizer"
|
|
65
65
|
},
|
|
66
66
|
"MENU": {
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
+
"ACCURACY_PANEL": {
|
|
3
|
+
"HIGHLIGHT_TARGET_NOT_FOUND": "{{highlightTarget}} could not be found in Accuracy Metrics report"
|
|
4
|
+
},
|
|
2
5
|
"ANALYSIS": {
|
|
3
6
|
"SORTING": {
|
|
4
7
|
"HIGH_TO_LOW": "High to Low",
|
|
@@ -8,12 +11,9 @@
|
|
|
8
11
|
}
|
|
9
12
|
},
|
|
10
13
|
"GRAPH_PANEL": {
|
|
11
|
-
"ACCURACY_LIST_TOOLTIP": "View accuracy metrics for each output operation, comparing generated outputs with expected values",
|
|
12
|
-
"ACCURACY_METRICS": "Accuracy Metrics",
|
|
13
|
-
"ACCURACY_METRICS_TOOLTIP": "Analyze the model's accuracy through graphical and list views, comparing outputs using verifiers such as CosineSimilarity, RtolAtol, etc. Use the legend to toggle data series on and off",
|
|
14
14
|
"ANALYSIS": "Analysis",
|
|
15
|
-
"ANALYSIS_TAB_TOOLTIP": "Review comprehensive performance and accuracy reports, providing insights into the model's evaluation metrics and efficiency",
|
|
16
15
|
"HIDE": "Hide",
|
|
16
|
+
"HIGHLIGHT_TARGET_NOT_FOUND": "{{highlightTarget}} could not be found in the model graph",
|
|
17
17
|
"LIST": "List",
|
|
18
18
|
"MODEL_INPUTS_TOOLTIP": "Names and dimensions of the network input layers",
|
|
19
19
|
"MODEL_OUTPUTS_TOOLTIP": "Names and dimensions of the network output layers",
|
|
@@ -21,17 +21,15 @@
|
|
|
21
21
|
"MODEL_PROPERTIES_TOOLTIP": "Provides information about the loaded model, such as the input and output shapes, the framework used to create the model, and the version of the framework",
|
|
22
22
|
"NODE_ATTRIBUTES_TOOLTIP": "Displays the properties and settings specific to a node, such as layer type, parameters, and other configuration details that affect how the node processes data",
|
|
23
23
|
"NODE_INPUTS_TOOLTIP": "Lists the data or tensors that are fed into this node from previous layers or operations, including their shapes and types",
|
|
24
|
-
"NODE_NOT_FOUND": "{{nodeName}} could not be found in the model graph",
|
|
25
24
|
"NODE_OUTPUTS_TOOLTIP": "Shows the data or tensors generated by this node, including their shapes and types",
|
|
26
25
|
"NODE_PROPERTIES": "Node Properties",
|
|
27
26
|
"NODE_PROPERTIES_TOOLTIP": "Provides information about the properties of individual nodes or layers in the neural network model",
|
|
28
27
|
"PERFORMANCE_LIST_TOOLTIP": "View execution timing for each op",
|
|
29
|
-
"PERFORMANCE_METRICS_TOOLTIP": "Analyze the model's performance with graphical data, summary reports, and a detailed list. Use the legend to toggle data series on and off",
|
|
30
28
|
"PERFORMANCE_SUMMARY_TOOLTIP": "View performance details, including execution and init times",
|
|
31
29
|
"PROPERTIES": "Properties",
|
|
32
30
|
"PROPERTIES_TAB_TOOLTIP": "View the model and node-specific properties, including layer types, configurations, and parameters",
|
|
33
31
|
"RESET_ZOOM": "Reset zoom",
|
|
34
|
-
"SEARCH": "Search
|
|
32
|
+
"SEARCH": "Search",
|
|
35
33
|
"SEARCH_PLACEHOLDER": "Search nodes or edges",
|
|
36
34
|
"SHOW": "Show",
|
|
37
35
|
"SHOW_MODEL_DIFF": "Add model to compare",
|
|
@@ -47,6 +45,18 @@
|
|
|
47
45
|
"graph.controls.expandAll.tooltip": "Expand all layers",
|
|
48
46
|
"graph.controls.flattenLayers.tooltip": "Flatten namespace layers",
|
|
49
47
|
"graph.controls.restoreLayers.tooltip": "Restore namespace layers",
|
|
48
|
+
"graph.legend.categories.activation": "Activation",
|
|
49
|
+
"graph.legend.categories.data": "Data",
|
|
50
|
+
"graph.legend.categories.default": "Default",
|
|
51
|
+
"graph.legend.categories.math": "Math",
|
|
52
|
+
"graph.legend.categories.namespaceLayer": "Namespace Layer",
|
|
53
|
+
"graph.legend.categories.nnLayer": "NN Layer",
|
|
54
|
+
"graph.legend.categories.normalization": "Normalization",
|
|
55
|
+
"graph.legend.categories.pooling": "Pooling",
|
|
56
|
+
"graph.legend.categories.quantization": "Quantization",
|
|
57
|
+
"graph.legend.categories.shape": "Shape",
|
|
58
|
+
"graph.legend.categories.syntheticLayer": "Synthetic Layer",
|
|
59
|
+
"graph.legend.categories.transform": "Transform",
|
|
50
60
|
"graph.panel.legend": "Legend",
|
|
51
61
|
"graph.panel.processing.collapse": "Collapsing layer(s)",
|
|
52
62
|
"graph.panel.processing.expand": "Expanding layer(s)",
|
|
@@ -72,7 +82,7 @@
|
|
|
72
82
|
"graph.panel.sidePanel.properties.label.tensor": "tensor",
|
|
73
83
|
"graph.panel.sidePanel.properties.label.type": "type",
|
|
74
84
|
"OPTRACE_PANEL": {
|
|
75
|
-
"
|
|
85
|
+
"HIGHLIGHT_TARGET_NOT_FOUND": "{{highlightTarget}} could not be found in Optrace as it might have been optimized or fused with another op."
|
|
76
86
|
},
|
|
77
87
|
"PANEL_CONTROLS": {
|
|
78
88
|
"CLOSE": "Close panel",
|
|
@@ -83,10 +93,10 @@
|
|
|
83
93
|
},
|
|
84
94
|
"PERFORMANCE_METRICS": {
|
|
85
95
|
"AVG": "Avg",
|
|
96
|
+
"HIGHLIGHT_TARGET_NOT_FOUND": "{{highlightTarget}} could not be found in Performance Metrics",
|
|
86
97
|
"MAX": "Max",
|
|
87
98
|
"MIN": "Min",
|
|
88
|
-
"NODE_NOT_FOUND": "{{nodeName}} could not be found in Performance Metrics",
|
|
89
99
|
"RESET_CHART": "Reset chart"
|
|
90
100
|
},
|
|
91
101
|
"UNMATCHED_FILE_TYPE": "Invalid file type for {{fileName}}, expected {{expectedFileType}}"
|
|
92
|
-
}
|
|
102
|
+
}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
|
-
"panels.accuracy.info": "
|
|
2
|
+
"panels.accuracy.info": "Analyze the model's accuracy through graphical and list views, comparing outputs using comparators such as TopK, RtolAtol, etc. Use the legend to toggle data series on and off",
|
|
3
|
+
"panels.accuracy.label": "Accuracy",
|
|
3
4
|
"panels.graph.actions.view_op_tensor_mappings.tooltip": "View Op / Tensor Mapping",
|
|
4
5
|
"panels.graph.actions.view_op_tensor_mappings.tooltip.disabled": "Please convert the source model with SDK version 2.39 or above, with framework trace enabled, to view op / tensor mappings",
|
|
5
6
|
"panels.graph.actions.view_op_tensor_mappings.tooltip.invalidPythonVersion": "To view op / tensor mappings, you must use Python version {{versionRange}}",
|
|
6
7
|
"panels.graph.actions.view_op_tensor_mappings.tooltip.mac": "Op / Tensor Mapping not supported on Mac",
|
|
7
8
|
"panels.graph.info": "Graphically view model architecture, including connectivity, node, and tensor parameters",
|
|
8
9
|
"panels.graph.label": "Graph",
|
|
9
|
-
"panels.modeldiff.info": "Visualize operation, tensor, attribute, and structure differences between two models and generate a summary table",
|
|
10
|
+
"panels.modeldiff.info": "Visualize operation, tensor, attribute, and structure differences between two models and generate a summary table. Operations are matched by structure, not by name. If an operation is renamed but performs the same role in the graph, it appears as \"modified\" rather than deleted and re-added.",
|
|
10
11
|
"panels.modeldiff.label": "Diff",
|
|
11
12
|
"panels.opTensorMappings.actions.viewMappings.alerts.fetchTopologyError": "Topology file for {{filename}} could not be found or retrieved",
|
|
12
13
|
"panels.opTensorMappings.actions.viewMappings.alerts.noMappings": "No mapped ops or tensors found",
|
|
@@ -15,7 +16,7 @@
|
|
|
15
16
|
"panels.opTensorMappings.label": "Op Tensor Mappings",
|
|
16
17
|
"panels.optrace.info": "Opstats data for a model, which helps get insight on the performance bottlenecks in the AI model execution",
|
|
17
18
|
"panels.optrace.label": "Optrace",
|
|
18
|
-
"panels.performance.info": "
|
|
19
|
+
"panels.performance.info": "Analyze the model's performance with graphical data, summary reports, and a detailed list. Use the legend to toggle data series on and off",
|
|
19
20
|
"panels.performance.label": "Performance",
|
|
20
21
|
"panels.qhas.info": "QNN HTP Analysis Summary (QHAS) reports with summarized data and charts from running models with HTP runtime",
|
|
21
22
|
"panels.qhas.label": "QNN HTP Analysis",
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
{
|
|
2
|
-
"modelDiff.
|
|
3
|
-
"modelDiff.
|
|
2
|
+
"modelDiff.report.action.collapseAll": "Collapse all",
|
|
3
|
+
"modelDiff.report.action.expandAll": "Expand all",
|
|
4
|
+
"modelDiff.report.column.category.label": "Category",
|
|
5
|
+
"modelDiff.report.column.changeType.label": "Change Type",
|
|
6
|
+
"modelDiff.report.column.field.label": "Field",
|
|
7
|
+
"modelDiff.report.column.name.label": "Name",
|
|
8
|
+
"modelDiff.report.column.newValue.label": "New",
|
|
9
|
+
"modelDiff.report.column.originalValue.label": "Original",
|
|
4
10
|
"modelDiff.stats.operations.label": "Operations",
|
|
5
|
-
"modelDiff.stats.tensors.label": "Tensors"
|
|
6
|
-
|
|
11
|
+
"modelDiff.stats.tensors.label": "Tensors",
|
|
12
|
+
"modelDiff.tabs.report.title": "Diff report",
|
|
13
|
+
"modelDiff.tabs.stats.title": "Diff stats"
|
|
14
|
+
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"workspaces.error.couldNotOpen": "Unable to open workspace due to an unknown error.",
|
|
3
3
|
"workspaces.error.couldNotUndock": "Unable to undock workspace due to an unknown error.",
|
|
4
|
+
"workspaces.menu.closeAll.label": "Close All",
|
|
5
|
+
"workspaces.menu.closeOthers.label": "Close Others",
|
|
6
|
+
"workspaces.menu.closeOthersRight.label": "Close to the Right",
|
|
4
7
|
"workspaces.menu.rename.label": "Rename Workspace",
|
|
5
8
|
"workspaces.menu.undock.label": "Move To New Window",
|
|
6
9
|
"workspaces.name.default": "Untitled"
|