qairt-visualizer 0.5.1__py3-none-win_amd64.whl → 0.7.0__py3-none-win_amd64.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/helpers/version.py +23 -0
- qairt_visualizer/core/launchers/base_ui_launcher_context.py +28 -7
- qairt_visualizer/core/launchers/electron_launcher_context.py +72 -3
- qairt_visualizer/core/parsers/dlc_parser/dlc_parser.py +105 -33
- qairt_visualizer/core/parsers/dlc_parser/get_source_topology.py +47 -0
- qairt_visualizer/core/parsers/dlc_parser/libDlModelToolsPy.pyd +0 -0
- qairt_visualizer/core/parsers/dlc_parser/libDlModelToolsPy.so +0 -0
- qairt_visualizer/core/parsers/dlc_parser/libPyIrGraph.pyd +0 -0
- qairt_visualizer/core/parsers/dlc_parser/libPyIrGraph.so +0 -0
- qairt_visualizer/core/parsers/dlc_parser/models/op_tensor_mappings.py +8 -4
- qairt_visualizer/core/ui/dist/browser/__init__.py +47 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/acuity.js → acuity.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/app.js → app.js} +63 -57
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/armnn-schema.js → armnn-schema.js} +590 -5
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/armnn.js → armnn.js} +3 -5
- qairt_visualizer/core/ui/dist/browser/assets/i18n/common/en.json +8 -2
- qairt_visualizer/core/ui/dist/browser/assets/i18n/graph/en.json +44 -36
- qairt_visualizer/core/ui/dist/browser/assets/i18n/panels/en.json +9 -3
- qairt_visualizer/core/ui/dist/browser/assets/i18n/panels/model-diff/en.json +6 -0
- qairt_visualizer/core/ui/dist/browser/assets/i18n/workspaces/en.json +3 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/barracuda.js → barracuda.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/base.js → base.js} +20 -16
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/bigdl.js → bigdl.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/browser.js → browser.js} +59 -49
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe.js → caffe.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe2-proto.js → caffe2-proto.js} +26 -26
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe2.js → caffe2.js} +113 -114
- qairt_visualizer/core/ui/dist/browser/chunk-3SMGFPTN.js +11 -0
- qairt_visualizer/core/ui/dist/browser/chunk-43LQFSHA.js +1 -0
- qairt_visualizer/core/ui/dist/browser/chunk-447NKSFT.js +1 -0
- qairt_visualizer/core/ui/dist/browser/chunk-5MAR72QP.js +1 -0
- qairt_visualizer/core/ui/dist/browser/chunk-7PTY53DS.js +5 -0
- qairt_visualizer/core/ui/dist/browser/chunk-GAUD627J.js +1 -0
- qairt_visualizer/core/ui/dist/browser/chunk-H7TLLCSI.js +1 -0
- qairt_visualizer/core/ui/dist/browser/chunk-HISUA6LZ.js +4 -0
- qairt_visualizer/core/ui/dist/browser/chunk-HXB7IAZI.js +1 -0
- qairt_visualizer/core/ui/dist/browser/chunk-JPD5T7FP.js +120 -0
- qairt_visualizer/core/ui/dist/browser/chunk-L3QJ7DR2.js +1 -0
- qairt_visualizer/core/ui/dist/browser/{chunk-HBP6TEQ6.js → chunk-MCR4N53U.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/chunk-QD7PA2I4.js +19 -0
- qairt_visualizer/core/ui/dist/browser/chunk-TKZG6FLW.js +12 -0
- qairt_visualizer/core/ui/dist/browser/chunk-WFAVWONI.js +5 -0
- qairt_visualizer/core/ui/dist/browser/chunk-WRMDGTCT.js +35 -0
- qairt_visualizer/core/ui/dist/browser/chunk-X25J6H7V.js +1 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/circle-schema.js → circle-schema.js} +17 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/circle.js → circle.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/cntk.js → cntk.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/coreml-proto.js → coreml-proto.js} +1 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/coreml.js → coreml.js} +24 -21
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dagre.js → dagre.js} +5 -5
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/darknet-metadata.json → darknet-metadata.json} +0 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/darknet.js → darknet.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/electron.mjs → desktop.mjs} +44 -131
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dl4j.js → dl4j.js} +5 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dlc-schema.js → dlc-schema.js} +8 -8
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dlc.js → dlc.js} +110 -29
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dnn.js → dnn.js} +2 -4
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dot.js → dot.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/eaix.js +24 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/espresso.js → espresso.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/executorch-schema.js → executorch-schema.js} +363 -42
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/executorch.js → executorch.js} +108 -40
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flatbuffers.js → flatbuffers.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flax.js → flax.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flux.js → flux.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/gguf.js → gguf.js} +44 -24
- qairt_visualizer/core/ui/dist/browser/grapher.css +145 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/grapher.js → grapher.js} +24 -48
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/hailo.js → hailo.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/hickle.js → hickle.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/imgdnn.js → imgdnn.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/index.html +15 -16
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/index.js → index.js} +2 -24
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/json.js → json.js} +28 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/kann.js → kann.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/keras-metadata.json → keras-metadata.json} +15 -7
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/keras.js → keras.js} +13 -7
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/kmodel.js → kmodel.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/lasagne.js → lasagne.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/lightgbm.js → lightgbm.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/main-EVI665MB.js +1 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mediapipe.js → mediapipe.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/megengine.js → megengine.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/message.js → message.js} +3 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mlir.js → mlir.js} +53 -17
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mlnet.js → mlnet.js} +2 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mnn-schema.js → mnn-schema.js} +9 -6
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mnn.js → mnn.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mslite.js → mslite.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mxnet.js → mxnet.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/ncnn.js → ncnn.js} +3 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnabla.js → nnabla.js} +4 -4
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnef.js → nnef.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/node.js +102 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/numpy.js → numpy.js} +9 -9
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/om.js → om.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onednn.js → onednn.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onnx-metadata.json → onnx-metadata.json} +3500 -233
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onnx-proto.js → onnx-proto.js} +436 -4
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onnx.js → onnx.js} +284 -199
- qairt_visualizer/core/ui/dist/browser/onnx.py +231 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/openvino.js → openvino.js} +36 -31
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/paddle-proto.js → paddle-proto.js} +54 -54
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/paddle.js → paddle.js} +22 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pickle.js → pickle.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/python.js → python.js} +743 -325
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pytorch-metadata.json → pytorch-metadata.json} +3217 -2934
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pytorch-proto.js → pytorch-proto.js} +4 -4
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pytorch.js → pytorch.js} +172 -86
- qairt_visualizer/core/ui/dist/browser/pytorch.py +304 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/qnn.js → qnn.js} +6 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/rknn.js → rknn.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/safetensors.js → safetensors.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/sentencepiece.js → sentencepiece.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/server.py → server.py} +95 -103
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/sklearn-metadata.json → sklearn-metadata.json} +15 -10
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/sklearn.js → sklearn.js} +5 -5
- qairt_visualizer/core/ui/dist/browser/{styles-MRR6DOT2.css → styles-2Z5PB4WZ.css} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tar.js → tar.js} +18 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tengine.js → tengine.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tensorrt.js → tensorrt.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tf-metadata.json → tf-metadata.json} +1255 -163
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tf-proto.js → tf-proto.js} +46 -12
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tf.js → tf.js} +36 -13
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tflite.js → tflite.js} +18 -21
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tnn.js → tnn.js} +1 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/torch.js → torch.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/transformers.js +171 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tvm.js → tvm.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/uff.js → uff.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/view.js → view.js} +1406 -1115
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/weka.js → weka.js} +3 -4
- qairt_visualizer/core/ui/dist/browser/worker-EHYFMTM7.js +1 -0
- qairt_visualizer/core/ui/dist/browser/worker-KX5DA6GL.js +4 -0
- qairt_visualizer/core/ui/dist/browser/xgboost.js +59 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/xml.js → xml.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/xmodel.js → xmodel.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/zip.js → zip.js} +38 -41
- qairt_visualizer/core/ui/dist/qairt_visualizer.exe +0 -0
- qairt_visualizer/core/ui/dist/resources/app.asar +0 -0
- {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.7.0.dist-info}/METADATA +1 -1
- qairt_visualizer-0.7.0.dist-info/RECORD +265 -0
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/CITATION.cff +0 -10
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/CONTRIBUTING.md +0 -29
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/LICENSE +0 -21
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/README.md +0 -36
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/jenkins/Jenkinsfile +0 -69
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/package-lock.json +0 -5743
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/package.js +0 -689
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/package.json +0 -53
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/package.py +0 -87
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/background.png +0 -0
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/background.svg +0 -5
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/background@2x.png +0 -0
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/electron-builder.json +0 -109
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/eslint.config.js +0 -231
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/forge.config.js +0 -87
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.html +0 -27
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.icns +0 -0
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.icns.svg +0 -175
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.ico +0 -0
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.png +0 -0
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.svg +0 -179
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/notarize.cjs +0 -24
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/pyproject.toml +0 -63
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/setup.py +0 -43
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/resolve_upgrade_merge.sh +0 -10
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/__init__.py +0 -41
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/cambricon.js +0 -32
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/favicon.ico +0 -0
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/grapher.css +0 -602
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/index.html +0 -2222
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/modular.js +0 -81
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/onnx.py +0 -227
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/pytorch.py +0 -298
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/qais/qcontrol.js +0 -207
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/qais/qgraph-toolkit.js +0 -123
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/qais/qsubgraph.js +0 -226
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/qais/qsummary-panel.js +0 -89
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/server.js +0 -250
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/backend.py +0 -80
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/measures.py +0 -27
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/models.js +0 -359
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/models.json +0 -8523
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/worker.js +0 -859
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/armnn +0 -33
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/bigdl +0 -33
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/caffe +0 -37
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/caffe-script.js +0 -12
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/circle +0 -43
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/circle-script.js +0 -87
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/circle_script.js +0 -73
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/cntk +0 -33
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/coreml +0 -49
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/dlc +0 -20
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/dlc.fbs +0 -165
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/dnn +0 -20
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/dnn.proto +0 -79
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/executorch +0 -41
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/flatc.js +0 -1315
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/gguf +0 -22
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/kann +0 -33
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/keras +0 -62
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/keras_metadata.py +0 -205
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/keras_script.py +0 -204
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mediapipe +0 -72
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/megengine +0 -47
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/megengine-script.js +0 -113
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/megengine_script.js +0 -112
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mnn +0 -40
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mslite +0 -45
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mslite-script.js +0 -83
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mslite_metadata.js +0 -82
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/nnabla +0 -79
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/nnabla_script.py +0 -145
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/om +0 -26
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/om.proto +0 -204
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/onnx +0 -135
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/onnx_metadata.py +0 -233
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/onnx_script.py +0 -332
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/paddle +0 -38
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/protoc.js +0 -1609
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/pytorch +0 -85
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/pytorch_metadata.py +0 -166
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/pytorch_script.py +0 -404
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/rknn +0 -20
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/rknn.fbs +0 -78
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/sentencepiece +0 -39
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/sklearn +0 -65
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/sklearn_metadata.py +0 -126
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/sklearn_script.py +0 -129
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tf +0 -97
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tf_metadata.py +0 -403
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tf_script.py +0 -422
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tflite-script.js +0 -87
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tflite_metadata.js +0 -73
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/uff +0 -20
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/uff.proto +0 -127
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/xmodel +0 -36
- qairt_visualizer/core/ui/dist/browser/chunk-3NAQCYEU.js +0 -1
- qairt_visualizer/core/ui/dist/browser/chunk-NFKTPX3Z.js +0 -11
- qairt_visualizer/core/ui/dist/browser/chunk-OMI6HJ5Y.js +0 -19
- qairt_visualizer/core/ui/dist/browser/chunk-TTZXMRJ5.js +0 -34
- qairt_visualizer/core/ui/dist/browser/main-NXPVOKMG.js +0 -1
- qairt_visualizer/core/ui/dist/browser/worker-5VPKG2GV.js +0 -4
- qairt_visualizer/core/ui/dist/browser/worker-UVGWDZ5K.js +0 -1
- qairt_visualizer-0.5.1.dist-info/RECORD +0 -337
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/acuity-metadata.json → acuity-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/armnn-metadata.json → armnn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/bigdl-metadata.json → bigdl-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/bigdl-proto.js → bigdl-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe-metadata.json → caffe-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe-proto.js → caffe-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe2-metadata.json → caffe2-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/catboost.js → catboost.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/circle-metadata.json → circle-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/cntk-metadata.json → cntk-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/cntk-proto.js → cntk-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/coreml-metadata.json → coreml-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dl4j-metadata.json → dl4j-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dlc-metadata.json → dlc-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dnn-metadata.json → dnn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dnn-proto.js → dnn-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/espresso-metadata.json → espresso-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flexbuffers.js → flexbuffers.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flux-metadata.json → flux-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/hailo-metadata.json → hailo-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/hdf5.js → hdf5.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/icon.png → icon.png} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/kann-metadata.json → kann-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/kann-schema.js → kann-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/keras-proto.js → keras-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/lasagne-metadata.json → lasagne-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/megengine-metadata.json → megengine-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/megengine-schema.js → megengine-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mlnet-metadata.json → mlnet-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mnn-metadata.json → mnn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mslite-metadata.json → mslite-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mslite-schema.js → mslite-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mxnet-metadata.json → mxnet-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/ncnn-metadata.json → ncnn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnabla-metadata.json → nnabla-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnabla-proto.js → nnabla-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnc.js → nnc.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/om-metadata.json → om-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/om-proto.js → om-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onednn-metadata.json → onednn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onnx-schema.js → onnx-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/openvino-metadata.json → openvino-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/paddle-metadata.json → paddle-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/paddle-schema.js → paddle-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/protobuf.js → protobuf.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pytorch-schema.js → pytorch-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/qnn-metadata.json → qnn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/rknn-metadata.json → rknn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/rknn-schema.js → rknn-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/sentencepiece-proto.js → sentencepiece-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tengine-metadata.json → tengine-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/text.js → text.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tflite-metadata.json → tflite-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tflite-schema.js → tflite-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tnn-metadata.json → tnn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/torch-metadata.json → torch-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/uff-metadata.json → uff-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/uff-proto.js → uff-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/worker.js → worker.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/xmodel-proto.js → xmodel-proto.js} +0 -0
- {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.7.0.dist-info}/LICENSE.pdf +0 -0
- {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.7.0.dist-info}/WHEEL +0 -0
- {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.7.0.dist-info}/entry_points.txt +0 -0
- {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.7.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
|
|
4
|
+
# All Rights Reserved.
|
|
5
|
+
# Confidential and Proprietary - Qualcomm Technologies, Inc.
|
|
6
|
+
#
|
|
7
|
+
# ==============================================================================
|
|
8
|
+
"""Extract Python Version"""
|
|
9
|
+
|
|
10
|
+
import platform
|
|
11
|
+
import sys
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def main():
|
|
15
|
+
"""
|
|
16
|
+
CLI entry point: Sends python version to stdout
|
|
17
|
+
"""
|
|
18
|
+
sys.stdout.write(platform.python_version())
|
|
19
|
+
sys.stdout.flush()
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
if __name__ == "__main__":
|
|
23
|
+
main()
|
|
@@ -125,23 +125,44 @@ class BaseUILauncherContext(ABC):
|
|
|
125
125
|
extract the port from that process first.
|
|
126
126
|
:return: The port number for the existing process, -1 if cannot be found
|
|
127
127
|
"""
|
|
128
|
+
process_attrs, port = self.locate_ui_process()
|
|
128
129
|
if self._pid:
|
|
129
|
-
port = self.find_ui_process_port_using_pid(self._pid)
|
|
130
130
|
if port is not self._PROCESS_NOT_FOUND:
|
|
131
131
|
return port
|
|
132
132
|
|
|
133
|
-
if platform.system().lower() == "windows":
|
|
134
|
-
process_name = self.application_name
|
|
135
|
-
process_attrs, port = self._find_ui_process_port_windows(process_name)
|
|
136
|
-
else:
|
|
137
|
-
process_attrs, port = self._find_ui_process_port_by_iteration()
|
|
138
|
-
|
|
139
133
|
if process_attrs is None or port == self._PROCESS_NOT_FOUND:
|
|
140
134
|
return self._PROCESS_NOT_FOUND
|
|
141
135
|
|
|
142
136
|
self.set_pid(process_attrs.pid)
|
|
143
137
|
return port
|
|
144
138
|
|
|
139
|
+
def locate_ui_process(self) -> Tuple[ProcessAttributes | None, int]:
|
|
140
|
+
"""
|
|
141
|
+
Will loop through all running processes and checks if any of them match the application_name provided
|
|
142
|
+
If a process is found, both process attributes and the port number is extracted. If _pid is set,
|
|
143
|
+
this function will attempt to locate the process and parse it to return process attributes and port.
|
|
144
|
+
:return: A tuple containing the ProcessAttributes and the port number
|
|
145
|
+
"""
|
|
146
|
+
port = None
|
|
147
|
+
process_attrs = None
|
|
148
|
+
if self._pid:
|
|
149
|
+
try:
|
|
150
|
+
process: psutil.Process = psutil.Process(self._pid)
|
|
151
|
+
process_attrs = ProcessAttributes(process.cmdline(), process.name(), pid=self._pid)
|
|
152
|
+
port = self.extract_port_from_process(process_attrs)
|
|
153
|
+
except psutil.NoSuchProcess:
|
|
154
|
+
process_attrs, port = [None, self._PROCESS_NOT_FOUND]
|
|
155
|
+
|
|
156
|
+
if port is not None and port is not self._PROCESS_NOT_FOUND:
|
|
157
|
+
return process_attrs, port
|
|
158
|
+
|
|
159
|
+
if platform.system().lower() == "windows":
|
|
160
|
+
process_name = self.application_name
|
|
161
|
+
process_attrs, port = self._find_ui_process_port_windows(process_name)
|
|
162
|
+
else:
|
|
163
|
+
process_attrs, port = self._find_ui_process_port_by_iteration()
|
|
164
|
+
return process_attrs, port
|
|
165
|
+
|
|
145
166
|
@classmethod
|
|
146
167
|
def set_pid(cls, pid: int) -> None:
|
|
147
168
|
"""Sets the pid class variable
|
|
@@ -7,9 +7,12 @@
|
|
|
7
7
|
# ==============================================================================
|
|
8
8
|
"""Electron launcher"""
|
|
9
9
|
|
|
10
|
+
import os
|
|
10
11
|
import platform
|
|
11
12
|
import subprocess
|
|
12
|
-
|
|
13
|
+
import time
|
|
14
|
+
from pathlib import Path
|
|
15
|
+
from typing import List, Optional, cast
|
|
13
16
|
|
|
14
17
|
from qairt_visualizer.core.launchers.base_ui_launcher_context import BaseUILauncherContext
|
|
15
18
|
from qairt_visualizer.core.launchers.models.process_attributes import ProcessAttributes
|
|
@@ -21,6 +24,9 @@ class ElectronLauncherContext(BaseUILauncherContext):
|
|
|
21
24
|
Concrete launcher class responsible for launching the Electron Visualization application.
|
|
22
25
|
"""
|
|
23
26
|
|
|
27
|
+
_DEFAULT_PORT = 5555
|
|
28
|
+
_PORT_FILE_LOCATION = os.path.expanduser("~/.qairt_visualizer/current_port.txt")
|
|
29
|
+
|
|
24
30
|
def __init__(self):
|
|
25
31
|
super().__init__()
|
|
26
32
|
self.application_name = "qairt_visualizer"
|
|
@@ -37,8 +43,42 @@ class ElectronLauncherContext(BaseUILauncherContext):
|
|
|
37
43
|
return process_attrs.proc_name == process_name
|
|
38
44
|
|
|
39
45
|
def launch(self) -> int:
|
|
40
|
-
"""Launches application in background at given port
|
|
41
|
-
port
|
|
46
|
+
"""Launches application in background at given port
|
|
47
|
+
:return: The port Visualizer is listening on
|
|
48
|
+
"""
|
|
49
|
+
process_attrs, existing_port = self.locate_ui_process()
|
|
50
|
+
|
|
51
|
+
visual_only_launched_previously_application_listening_for_connection = (
|
|
52
|
+
process_attrs is not None and existing_port != -1
|
|
53
|
+
)
|
|
54
|
+
if visual_only_launched_previously_application_listening_for_connection:
|
|
55
|
+
return existing_port
|
|
56
|
+
|
|
57
|
+
port_written_to_port_file = self._get_existing_zmq_port()
|
|
58
|
+
main_app_launched_listening_for_connection = (
|
|
59
|
+
process_attrs is not None and port_written_to_port_file is not None
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
if main_app_launched_listening_for_connection:
|
|
63
|
+
return cast(int, port_written_to_port_file)
|
|
64
|
+
|
|
65
|
+
has_stale_port_file = (
|
|
66
|
+
process_attrs is None and port_written_to_port_file is not None and self._is_port_file_old()
|
|
67
|
+
)
|
|
68
|
+
# This block handles when another python script may have launched
|
|
69
|
+
# visualizer while the above code already ran
|
|
70
|
+
if has_stale_port_file:
|
|
71
|
+
try:
|
|
72
|
+
port_file = Path(self._PORT_FILE_LOCATION)
|
|
73
|
+
port_file.unlink(missing_ok=True)
|
|
74
|
+
self.logger.debug("Deleted stale port file")
|
|
75
|
+
except OSError as e:
|
|
76
|
+
self.logger.error("Failed to delete stale port file: %s", e)
|
|
77
|
+
elif port_written_to_port_file is not None:
|
|
78
|
+
return port_written_to_port_file
|
|
79
|
+
# End handler for multi-python script scenario
|
|
80
|
+
|
|
81
|
+
port = self.detect_port(self._DEFAULT_PORT)
|
|
42
82
|
self._launch(["--port", f"{port}"])
|
|
43
83
|
return port
|
|
44
84
|
|
|
@@ -64,6 +104,35 @@ class ElectronLauncherContext(BaseUILauncherContext):
|
|
|
64
104
|
)
|
|
65
105
|
self.set_pid(proc.pid)
|
|
66
106
|
|
|
107
|
+
def _get_existing_zmq_port(self) -> Optional[int]:
|
|
108
|
+
"""Check for existing ZMQ port from temp file"""
|
|
109
|
+
try:
|
|
110
|
+
if os.path.exists(self._PORT_FILE_LOCATION):
|
|
111
|
+
with open(self._PORT_FILE_LOCATION, "r", encoding="utf-8") as f:
|
|
112
|
+
port = int(f.read().strip())
|
|
113
|
+
self.logger.debug("Found existing ZMQ port: %s", port)
|
|
114
|
+
return port
|
|
115
|
+
except (ValueError, IOError, OSError) as e:
|
|
116
|
+
self.logger.debug("Could not read port file: %s", e)
|
|
117
|
+
|
|
118
|
+
return None
|
|
119
|
+
|
|
120
|
+
def _is_port_file_old(self, seconds: int = 30) -> bool:
|
|
121
|
+
"""Check if the port file is older than the specified number of seconds"""
|
|
122
|
+
try:
|
|
123
|
+
if not os.path.exists(self._PORT_FILE_LOCATION):
|
|
124
|
+
return False
|
|
125
|
+
|
|
126
|
+
file_mod_time = os.path.getmtime(self._PORT_FILE_LOCATION)
|
|
127
|
+
current_time = time.time()
|
|
128
|
+
age_in_seconds = current_time - file_mod_time
|
|
129
|
+
|
|
130
|
+
return age_in_seconds > seconds
|
|
131
|
+
|
|
132
|
+
except OSError as e:
|
|
133
|
+
self.logger.debug("Error checking port file age: %s", e)
|
|
134
|
+
return False
|
|
135
|
+
|
|
67
136
|
def extract_port_from_process(self, process_attrs: ProcessAttributes) -> int:
|
|
68
137
|
app_extension = ""
|
|
69
138
|
process_name = self.application_name
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
"""DLC Parser class"""
|
|
9
9
|
|
|
10
10
|
import os
|
|
11
|
-
from
|
|
11
|
+
from collections import defaultdict
|
|
12
|
+
from typing import Any, Dict, Literal, Optional, Set, Tuple
|
|
12
13
|
|
|
13
14
|
from qairt_visualizer.core.errors import ArgumentError
|
|
14
15
|
from qairt_visualizer.core.parsers.dlc_parser.models.op_tensor_mappings import ( # type: ignore
|
|
@@ -28,9 +29,9 @@ from . import libPyIrGraph as ir_graph # type: ignore
|
|
|
28
29
|
_ = ir_graph
|
|
29
30
|
|
|
30
31
|
OP = 1
|
|
31
|
-
OPS_KEY = "ops"
|
|
32
|
+
OPS_KEY: Literal["ops"] = "ops"
|
|
32
33
|
TENSOR = 0
|
|
33
|
-
TENSOR_KEY = "tensors"
|
|
34
|
+
TENSOR_KEY: Literal["tensors"] = "tensors"
|
|
34
35
|
|
|
35
36
|
|
|
36
37
|
class DlcParser:
|
|
@@ -49,7 +50,7 @@ class DlcParser:
|
|
|
49
50
|
"""
|
|
50
51
|
|
|
51
52
|
if not dlc_file_path:
|
|
52
|
-
raise ArgumentError("A
|
|
53
|
+
raise ArgumentError("A DLC file path is required")
|
|
53
54
|
if not os.path.isfile(dlc_file_path):
|
|
54
55
|
raise FileNotFoundError(f"The input file path {dlc_file_path} does not exist")
|
|
55
56
|
if not os.path.splitext(dlc_file_path)[1] == ".dlc":
|
|
@@ -85,38 +86,78 @@ class DlcParser:
|
|
|
85
86
|
3. DLC tensor -> ONNX op/tensor
|
|
86
87
|
4. ONNX tensor -> DLC op/tensor
|
|
87
88
|
"""
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
dlc_ops_to_source_ops_and_tensors: Dict[str, Dict[str, Set[str]]] = {}
|
|
90
|
+
source_ops_to_dlc_ops_and_tensors: Dict[str, Dict[str, Set[str]]] = {}
|
|
91
|
+
dlc_tensors_to_source_ops_and_tensors: Dict[str, Dict[str, Set[str]]] = {}
|
|
92
|
+
source_tensors_to_dlc_ops_and_tensors: Dict[str, Dict[str, Set[str]]] = {}
|
|
92
93
|
|
|
93
|
-
|
|
94
|
+
dlc_ops_to_dlc_ops_and_tensors: Dict[str, Dict[str, Set[str]]] = {}
|
|
95
|
+
dlc_tensors_to_dlc_ops_and_tensors: Dict[str, Dict[str, Set[str]]] = {}
|
|
96
|
+
source_ops_to_source_ops_and_tensors: Dict[str, Dict[str, Set[str]]] = {}
|
|
97
|
+
source_tensors_to_source_ops_and_tensors: Dict[str, Dict[str, Set[str]]] = {}
|
|
98
|
+
|
|
99
|
+
dlc_item_to_source_set: Dict[Tuple[str, str], Set[str]] = defaultdict(set)
|
|
100
|
+
source_item_to_dlc_set: Dict[Tuple[str, str], Set[str]] = defaultdict(set)
|
|
101
|
+
|
|
102
|
+
for dlc_type, dlc_items in zip([OPS_KEY, TENSOR_KEY], [dlc_op_map, dlc_tensor_map]):
|
|
94
103
|
for dlc_item in dlc_items:
|
|
95
|
-
|
|
104
|
+
dlc_name = dlc_item.get_name()
|
|
96
105
|
source_items = dlc_item.get_trace_pair()
|
|
97
|
-
|
|
98
106
|
for source_item in source_items:
|
|
99
107
|
source_name = source_item.get_name()
|
|
100
|
-
source_type
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
self.update_mapping(dlc_ops_to_target_ops, dlc_item_name, source_type, source_name)
|
|
104
|
-
|
|
105
|
-
# ONNX -> DLC
|
|
106
|
-
self.update_mapping(target_ops_to_dlc_ops, source_name, category, dlc_item_name)
|
|
108
|
+
source_type: Literal["ops", "tensors"] = (
|
|
109
|
+
OPS_KEY if source_item.get_type() == OP else TENSOR_KEY
|
|
110
|
+
)
|
|
107
111
|
|
|
108
|
-
|
|
109
|
-
if category == TENSOR_KEY:
|
|
112
|
+
if dlc_type == OPS_KEY:
|
|
110
113
|
self.update_mapping(
|
|
111
|
-
|
|
114
|
+
dlc_ops_to_source_ops_and_tensors, dlc_name, source_type, source_name
|
|
115
|
+
)
|
|
116
|
+
else:
|
|
117
|
+
self.update_mapping(
|
|
118
|
+
dlc_tensors_to_source_ops_and_tensors, dlc_name, source_type, source_name
|
|
112
119
|
)
|
|
113
120
|
|
|
114
|
-
|
|
115
|
-
if source_type ==
|
|
121
|
+
dlc_type_literal: Any = dlc_type
|
|
122
|
+
if source_type == OPS_KEY:
|
|
123
|
+
self.update_mapping(
|
|
124
|
+
source_ops_to_dlc_ops_and_tensors, source_name, dlc_type_literal, dlc_name
|
|
125
|
+
)
|
|
126
|
+
else:
|
|
116
127
|
self.update_mapping(
|
|
117
|
-
|
|
128
|
+
source_tensors_to_dlc_ops_and_tensors, source_name, dlc_type_literal, dlc_name
|
|
118
129
|
)
|
|
119
130
|
|
|
131
|
+
dlc_item_to_source_set[(dlc_type, dlc_name)].add(f"{source_type}:{source_name}")
|
|
132
|
+
source_item_to_dlc_set[(source_type, source_name)].add(f"{dlc_type}:{dlc_name}")
|
|
133
|
+
|
|
134
|
+
def build_intra_relations(items_map, reverse_map, ops_map, tensors_map):
|
|
135
|
+
for (item_type, item_name), related_set in items_map.items():
|
|
136
|
+
for related_str in related_set:
|
|
137
|
+
related_type, related_name = related_str.split(":", 1)
|
|
138
|
+
other_items = reverse_map.get((related_type, related_name), set())
|
|
139
|
+
for other_str in other_items:
|
|
140
|
+
other_type, other_name = other_str.split(":", 1)
|
|
141
|
+
|
|
142
|
+
if item_type == OPS_KEY:
|
|
143
|
+
self.update_mapping(ops_map, item_name, other_type, other_name)
|
|
144
|
+
else:
|
|
145
|
+
self.update_mapping(tensors_map, item_name, other_type, other_name)
|
|
146
|
+
|
|
147
|
+
build_intra_relations(
|
|
148
|
+
dlc_item_to_source_set,
|
|
149
|
+
source_item_to_dlc_set,
|
|
150
|
+
dlc_ops_to_dlc_ops_and_tensors,
|
|
151
|
+
dlc_tensors_to_dlc_ops_and_tensors,
|
|
152
|
+
)
|
|
153
|
+
|
|
154
|
+
build_intra_relations(
|
|
155
|
+
source_item_to_dlc_set,
|
|
156
|
+
dlc_item_to_source_set,
|
|
157
|
+
source_ops_to_source_ops_and_tensors,
|
|
158
|
+
source_tensors_to_source_ops_and_tensors,
|
|
159
|
+
)
|
|
160
|
+
|
|
120
161
|
def convert_sets(d: Dict[str, Dict[str, Set[str]]]) -> Dict[str, MappingGroup]:
|
|
121
162
|
return {
|
|
122
163
|
k: MappingGroup(ops=sorted(v.get(OPS_KEY, [])), tensors=sorted(v.get(TENSOR_KEY, [])))
|
|
@@ -125,20 +166,34 @@ class DlcParser:
|
|
|
125
166
|
|
|
126
167
|
return (
|
|
127
168
|
OpTensorMappings(
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
169
|
+
dlc_ops_to_source_ops_and_tensors=convert_sets(dlc_ops_to_source_ops_and_tensors),
|
|
170
|
+
source_ops_to_dlc_ops_and_tensors=convert_sets(source_ops_to_dlc_ops_and_tensors),
|
|
171
|
+
dlc_tensors_to_source_ops_and_tensors=convert_sets(dlc_tensors_to_source_ops_and_tensors),
|
|
172
|
+
source_tensors_to_dlc_ops_and_tensors=convert_sets(source_tensors_to_dlc_ops_and_tensors),
|
|
173
|
+
dlc_ops_to_dlc_ops_and_tensors=convert_sets(dlc_ops_to_dlc_ops_and_tensors),
|
|
174
|
+
dlc_tensors_to_dlc_ops_and_tensors=convert_sets(dlc_tensors_to_dlc_ops_and_tensors),
|
|
175
|
+
source_ops_to_source_ops_and_tensors=convert_sets(source_ops_to_source_ops_and_tensors),
|
|
176
|
+
source_tensors_to_source_ops_and_tensors=convert_sets(
|
|
177
|
+
source_tensors_to_source_ops_and_tensors
|
|
178
|
+
),
|
|
132
179
|
)
|
|
133
|
-
if len(
|
|
134
|
-
or len(
|
|
135
|
-
or len(
|
|
136
|
-
or len(
|
|
180
|
+
if len(dlc_ops_to_source_ops_and_tensors)
|
|
181
|
+
or len(source_ops_to_dlc_ops_and_tensors)
|
|
182
|
+
or len(dlc_tensors_to_source_ops_and_tensors)
|
|
183
|
+
or len(source_tensors_to_dlc_ops_and_tensors)
|
|
184
|
+
or len(dlc_ops_to_dlc_ops_and_tensors)
|
|
185
|
+
or len(dlc_tensors_to_dlc_ops_and_tensors)
|
|
186
|
+
or len(source_ops_to_source_ops_and_tensors)
|
|
187
|
+
or len(source_tensors_to_source_ops_and_tensors)
|
|
137
188
|
else None
|
|
138
189
|
)
|
|
139
190
|
|
|
140
191
|
def update_mapping(
|
|
141
|
-
self,
|
|
192
|
+
self,
|
|
193
|
+
map_obj: Dict[str, Dict[str, Set[str]]],
|
|
194
|
+
name: str,
|
|
195
|
+
category: Literal["ops", "tensors"],
|
|
196
|
+
value: str,
|
|
142
197
|
) -> None:
|
|
143
198
|
"""Simple helper function for setting dictionary objects"""
|
|
144
199
|
group: Dict[str, Set[str]] = {OPS_KEY: set(), TENSOR_KEY: set()}
|
|
@@ -158,6 +213,23 @@ class DlcParser:
|
|
|
158
213
|
raise NotImplementedError("DLC's with multiple IR graphs not currently supported")
|
|
159
214
|
return self.model_reader.get_ir_graph(next(iter(graph_names)))
|
|
160
215
|
|
|
216
|
+
def get_source_topology(self):
|
|
217
|
+
"""
|
|
218
|
+
Get the source topology from the DLC, if available. Requires converting the source
|
|
219
|
+
model with the --enable_framework_trace argument. Source topology will always be the
|
|
220
|
+
first and only entry 0
|
|
221
|
+
"""
|
|
222
|
+
# Eventually when we support multiple source types, we need to
|
|
223
|
+
# get new enum values from the converter team to use for recordType
|
|
224
|
+
topology = self.model_reader.extract_record(
|
|
225
|
+
recordName="source.topology0", recordType=modeltools.DlcRecordType.SOURCE_TOPOLOGY
|
|
226
|
+
)
|
|
227
|
+
if topology.get_size() == 0:
|
|
228
|
+
raise ValueError(
|
|
229
|
+
f"DLC file {os.path.basename(self.dlc_path)} " + "does not contain its source topology"
|
|
230
|
+
)
|
|
231
|
+
return topology.get_bytes()
|
|
232
|
+
|
|
161
233
|
def close_file(self):
|
|
162
234
|
"""
|
|
163
235
|
Closes the model_reader file
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
|
|
4
|
+
# All Rights Reserved.
|
|
5
|
+
# Confidential and Proprietary - Qualcomm Technologies, Inc.
|
|
6
|
+
#
|
|
7
|
+
# ==============================================================================
|
|
8
|
+
"""Extract Source Topology From DLC"""
|
|
9
|
+
|
|
10
|
+
import sys
|
|
11
|
+
import tempfile
|
|
12
|
+
|
|
13
|
+
from qairt_visualizer.core.parsers.dlc_parser.dlc_parser import DlcParser
|
|
14
|
+
from qairt_visualizer.core.parsers.dlc_parser.helpers.exception_helpers import handle_exception
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def main():
|
|
18
|
+
"""
|
|
19
|
+
CLI entry point: Gets the DLC's topology, if available.
|
|
20
|
+
"""
|
|
21
|
+
if len(sys.argv) == 1:
|
|
22
|
+
raise ValueError("An argument for a DLC file path was not provided")
|
|
23
|
+
dlc_path = sys.argv[1]
|
|
24
|
+
|
|
25
|
+
reader = DlcParser(dlc_path)
|
|
26
|
+
source_topology = reader.get_source_topology()
|
|
27
|
+
|
|
28
|
+
sys.stdout.write(save_topology_to_tmp(source_topology))
|
|
29
|
+
sys.stdout.flush()
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def save_topology_to_tmp(topology) -> str:
|
|
33
|
+
"""
|
|
34
|
+
Saves the graph topology to a temp file, which must be removed by the caller
|
|
35
|
+
:param topology: The binary topology data to save to file
|
|
36
|
+
"""
|
|
37
|
+
try:
|
|
38
|
+
with tempfile.NamedTemporaryFile(delete=False, suffix=".onnx", mode="wb") as tmp:
|
|
39
|
+
tmp.write(topology)
|
|
40
|
+
return tmp.name
|
|
41
|
+
except Exception as e: # pylint: disable=broad-exception-caught
|
|
42
|
+
handle_exception(e)
|
|
43
|
+
return ""
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
if __name__ == "__main__":
|
|
47
|
+
main()
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -27,10 +27,14 @@ class OpTensorMappings(BaseModel):
|
|
|
27
27
|
Class defining the various op / tensor mapping relationships
|
|
28
28
|
"""
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
dlc_ops_to_source_ops_and_tensors: Dict[str, MappingGroup]
|
|
31
|
+
source_ops_to_dlc_ops_and_tensors: Dict[str, MappingGroup]
|
|
32
|
+
dlc_tensors_to_source_ops_and_tensors: Dict[str, MappingGroup]
|
|
33
|
+
source_tensors_to_dlc_ops_and_tensors: Dict[str, MappingGroup]
|
|
34
|
+
dlc_ops_to_dlc_ops_and_tensors: Dict[str, MappingGroup]
|
|
35
|
+
dlc_tensors_to_dlc_ops_and_tensors: Dict[str, MappingGroup]
|
|
36
|
+
source_ops_to_source_ops_and_tensors: Dict[str, MappingGroup]
|
|
37
|
+
source_tensors_to_source_ops_and_tensors: Dict[str, MappingGroup]
|
|
34
38
|
|
|
35
39
|
|
|
36
40
|
class DlcOpTensorMappings(BaseModel):
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
""" Python Server entry point """
|
|
2
|
+
|
|
3
|
+
import argparse
|
|
4
|
+
import logging
|
|
5
|
+
import os
|
|
6
|
+
import sys
|
|
7
|
+
|
|
8
|
+
from .server import __version__, serve, start, status, stop, wait, widget
|
|
9
|
+
|
|
10
|
+
__all__ = ["start", "stop", "status", "wait", "serve", "widget", "__version__"]
|
|
11
|
+
|
|
12
|
+
def main():
|
|
13
|
+
""" main entry point """
|
|
14
|
+
parser = argparse.ArgumentParser(description=
|
|
15
|
+
"Viewer for neural network, deep learning and machine learning models.")
|
|
16
|
+
parser.add_argument("file",
|
|
17
|
+
metavar="MODEL_FILE", help="model file to serve", nargs="?", default=None)
|
|
18
|
+
parser.add_argument("-b", "--browse",
|
|
19
|
+
help="launch web browser", action="store_true")
|
|
20
|
+
parser.add_argument("-p", "--port", help="port to serve", type=int)
|
|
21
|
+
parser.add_argument("--host",
|
|
22
|
+
metavar="ADDR", help="host to serve", default="localhost")
|
|
23
|
+
parser.add_argument("--verbosity",
|
|
24
|
+
metavar="LEVEL", help="log verbosity (quiet, default, debug)",
|
|
25
|
+
choices=[ "quiet", "debug", "default" ], default="default")
|
|
26
|
+
parser.add_argument("--version", help="print version", action="store_true")
|
|
27
|
+
args = parser.parse_args()
|
|
28
|
+
levels = {
|
|
29
|
+
"quiet": logging.CRITICAL,
|
|
30
|
+
"default": logging.INFO,
|
|
31
|
+
"debug": logging.DEBUG,
|
|
32
|
+
}
|
|
33
|
+
logging.basicConfig(level=levels[args.verbosity], format="%(message)s")
|
|
34
|
+
logger = logging.getLogger(__name__)
|
|
35
|
+
if args.file and not os.path.exists(args.file):
|
|
36
|
+
logger.error(f"Model file '{args.file}' does not exist.")
|
|
37
|
+
sys.exit(2)
|
|
38
|
+
if args.version:
|
|
39
|
+
logger.info(__version__)
|
|
40
|
+
sys.exit(0)
|
|
41
|
+
address = (args.host, args.port) if args.host else args.port if args.port else None
|
|
42
|
+
start(args.file, address=address, browse=args.browse)
|
|
43
|
+
wait()
|
|
44
|
+
sys.exit(0)
|
|
45
|
+
|
|
46
|
+
if __name__ == "__main__":
|
|
47
|
+
main()
|
|
@@ -5,7 +5,7 @@ acuity.ModelFactory = class {
|
|
|
5
5
|
|
|
6
6
|
async match(context) {
|
|
7
7
|
const obj = await context.peek('json');
|
|
8
|
-
if (obj && obj.MetaData && obj.Layers) {
|
|
8
|
+
if (obj && obj.MetaData && obj.Layers && Object.keys(obj).length < 256) {
|
|
9
9
|
return context.set('acuity', obj);
|
|
10
10
|
}
|
|
11
11
|
return null;
|
|
@@ -23,7 +23,7 @@ acuity.Model = class {
|
|
|
23
23
|
this.name = model.MetaData.Name;
|
|
24
24
|
this.format = `Acuity v${model.MetaData.AcuityVersion}`;
|
|
25
25
|
this.runtime = model.MetaData.Platform;
|
|
26
|
-
this.
|
|
26
|
+
this.modules = [new acuity.Graph(metadata, model, data, quantization)];
|
|
27
27
|
}
|
|
28
28
|
};
|
|
29
29
|
|
|
@@ -702,4 +702,4 @@ acuity.Error = class extends Error {
|
|
|
702
702
|
}
|
|
703
703
|
};
|
|
704
704
|
|
|
705
|
-
export const ModelFactory = acuity.ModelFactory;
|
|
705
|
+
export const ModelFactory = acuity.ModelFactory;
|