Browse Source

!1279 Remove treelib dependency

From: @liuchongming74
Reviewed-by: @ouwenchang,@yelihua
Signed-off-by: @yelihua
pull/1279/MERGE
mindspore-ci-bot Gitee 4 years ago
parent
commit
374f5f0df5
5 changed files with 29 additions and 93 deletions
  1. +3
    -58
      mindinsight/mindconverter/common/exceptions.py
  2. +12
    -15
      mindinsight/mindconverter/docs/error_code_definition.md
  3. +13
    -16
      mindinsight/mindconverter/docs/error_code_definition_cn.md
  4. +1
    -3
      mindinsight/mindconverter/graph_based_converter/framework.py
  5. +0
    -1
      requirements.txt

+ 3
- 58
mindinsight/mindconverter/common/exceptions.py View File

@@ -19,7 +19,6 @@ from enum import unique, Enum
from importlib import import_module from importlib import import_module


from lib2to3.pgen2 import parse from lib2to3.pgen2 import parse
from treelib.exceptions import DuplicatedNodeIdError, MultipleRootError, NodeIDAbsentError


from mindinsight.mindconverter.common.log import logger as log, logger_console as log_console from mindinsight.mindconverter.common.log import logger as log, logger_console as log_console


@@ -36,10 +35,9 @@ class ConverterErrors(ScriptConverterErrors):


BASE_CONVERTER_FAIL = 000 BASE_CONVERTER_FAIL = 000
GRAPH_INIT_FAIL = 100 GRAPH_INIT_FAIL = 100
TREE_CREATE_FAIL = 200
SOURCE_FILES_SAVE_FAIL = 300
GENERATOR_FAIL = 400
SUB_GRAPH_SEARCHING_FAIL = 500
SOURCE_FILES_SAVE_FAIL = 200
GENERATOR_FAIL = 300
SUB_GRAPH_SEARCHING_FAIL = 400




class ScriptNotSupport(MindInsightException): class ScriptNotSupport(MindInsightException):
@@ -273,30 +271,6 @@ class GraphInitError(MindConverterException):
return except_source return except_source




class TreeCreationError(MindConverterException):
"""The tree create fail."""

@unique
class ErrCode(Enum):
"""Define error code of TreeCreationError."""
UNKNOWN_ERROR = 0
NODE_INPUT_MISSING = 1
TREE_NODE_INSERT_FAIL = 2

BASE_ERROR_CODE = ConverterErrors.TREE_CREATE_FAIL.value
ERROR_CODE = ErrCode.UNKNOWN_ERROR.value
DEFAULT_MSG = "Error occurred when create hierarchical tree."

def __init__(self, msg=DEFAULT_MSG):
super(TreeCreationError, self).__init__(user_msg=msg)

@classmethod
def raise_from(cls):
"""Raise from exceptions below."""
except_source = NodeInputMissingError, TreeNodeInsertError, cls
return except_source


class SourceFilesSaveError(MindConverterException): class SourceFilesSaveError(MindConverterException):
"""The source files save fail error.""" """The source files save fail error."""


@@ -390,35 +364,6 @@ class RuntimeIntegrityError(GraphInitError):
return RuntimeError, AttributeError, ImportError, ModuleNotFoundError, cls return RuntimeError, AttributeError, ImportError, ModuleNotFoundError, cls




class NodeInputMissingError(TreeCreationError):
"""The node input missing error."""
ERROR_CODE = TreeCreationError.ErrCode.NODE_INPUT_MISSING.value

def __init__(self, msg):
super(NodeInputMissingError, self).__init__(msg=msg)

@classmethod
def raise_from(cls):
return ValueError, IndexError, KeyError, AttributeError, cls


class TreeNodeInsertError(TreeCreationError):
"""The tree node create fail error."""
ERROR_CODE = TreeCreationError.ErrCode.TREE_NODE_INSERT_FAIL.value

def __init__(self, msg):
super(TreeNodeInsertError, self).__init__(msg=msg)

@classmethod
def raise_from(cls):
"""Raise from exceptions below."""
except_source = (OSError,
DuplicatedNodeIdError,
MultipleRootError,
NodeIDAbsentError, cls)
return except_source


class NodeInputTypeNotSupportError(SourceFilesSaveError): class NodeInputTypeNotSupportError(SourceFilesSaveError):
"""The node input type NOT support error.""" """The node input type NOT support error."""
ERROR_CODE = SourceFilesSaveError.ErrCode.NODE_INPUT_TYPE_NOT_SUPPORT.value ERROR_CODE = SourceFilesSaveError.ErrCode.NODE_INPUT_TYPE_NOT_SUPPORT.value


+ 12
- 15
mindinsight/mindconverter/docs/error_code_definition.md View File

@@ -12,18 +12,15 @@
| ModelLoadingError | Fail to load the model | 1000001 | Given `--input_nodes`, `--output_nodes`, `--shape` don't match the input model; Meanwhile, the model file can not be loaded also can cause this error | | ModelLoadingError | Fail to load the model | 1000001 | Given `--input_nodes`, `--output_nodes`, `--shape` don't match the input model; Meanwhile, the model file can not be loaded also can cause this error |
| TfRuntimeError | Fail to initialize the TF runtime | 1000002 | Resources required by TensorFlow are not available | | TfRuntimeError | Fail to initialize the TF runtime | 1000002 | Resources required by TensorFlow are not available |
| RuntimeIntegrityError | Fail to locate required third party dependency | 1000003 | Caused by required third party packages are not installed | | RuntimeIntegrityError | Fail to locate required third party dependency | 1000003 | Caused by required third party packages are not installed |
| TreeCreateFailError | Fail to create code hierarchical tree | 2000000 | Mainly caused by usage of `torch.nn.functional.xxx`, `torch.xxx`, `torch.Tensor.xxx` in PyTorch |
| NodeInputMissingError | Fail to get the input node info | 2000001 | Fail to get input node info |
| TreeNodeInsertError | Fail to insert tree node | 2000002 | Mainly caused by wrong scope name |
| SourceFilesSaveError | Fail to generate or save converted script | 3000000 | Exception caused by 3000001~3000005 |
| NodeInputTypeNotSupportError | Fail to recognize the input type of converted operator | 3000001 | Wrong input type set in mapper |
| ScriptGenerationError | Fail to generate converted script | 3000002 | No left space on hard disk; Converted code is not legal; A file with the same name already exists in `--output` |
| ReportGenerationError | Fail to generate converted script | 3000003 | No left space on hard disk; No available operator to be converted;A file with the same name already exists in `--report` |
| CheckPointGenerationError | Fail to generate converted weight file | 3000004 | No left space on hard dist; A file with the same name already exists in `--output` |
| WeightMapGenerationError | Fail to generate weight map file | 3000005 | No left space on hard dist; A file with the same name already exists in `--output` |
| GeneratorError | Fail to generate code | 4000000 | Exception caused by 4000001~4000004 |
| NodeLoadingError | Fail to load node information | 4000001 | Essential parameters are missing after conversion of a node |
| NodeArgsTranslationError | Fail to translate the node's argument | 4000002 | Converted nodes have incorrect and conflicted information |
| ModuleBuildError | Fail to build module instance | 4000003 | Converted nodes have incorrect and conflicted information with module |
| CodeGenerationError | Fail to generate the code statement | 4000004 | Converted nodes have inconsistent information |
| SubGraphSearchingError | Fail to find frequent sub-graph | 5000000 | Generally, caused by IR graph topological order error |
| SourceFilesSaveError | Fail to generate or save converted script | 2000000 | Exception caused by 2000001~2000005 |
| NodeInputTypeNotSupportError | Fail to recognize the input type of converted operator | 2000001 | Wrong input type set in mapper |
| ScriptGenerationError | Fail to generate converted script | 2000002 | No left space on hard disk; Converted code is not legal; A file with the same name already exists in `--output` |
| ReportGenerationError | Fail to generate converted script | 2000003 | No left space on hard disk; No available operator to be converted;A file with the same name already exists in `--report` |
| CheckPointGenerationError | Fail to generate converted weight file | 2000004 | No left space on hard dist; A file with the same name already exists in `--output` |
| WeightMapGenerationError | Fail to generate weight map file | 2000005 | No left space on hard dist; A file with the same name already exists in `--output` |
| GeneratorError | Fail to generate code | 3000000 | Exception caused by 3000001~3000004 |
| NodeLoadingError | Fail to load node information | 3000001 | Essential parameters are missing after conversion of a node |
| NodeArgsTranslationError | Fail to translate the node's argument | 3000002 | Converted nodes have incorrect and conflicted information |
| ModuleBuildError | Fail to build module instance | 3000003 | Converted nodes have incorrect and conflicted information with module |
| CodeGenerationError | Fail to generate the code statement | 3000004 | Converted nodes have inconsistent information |
| SubGraphSearchingError | Fail to find frequent sub-graph | 4000000 | Generally, caused by IR graph topological order error |

+ 13
- 16
mindinsight/mindconverter/docs/error_code_definition_cn.md View File

@@ -11,19 +11,16 @@
| GraphInitFailError | 依据网络模型构建计算图失败 | 1000000 | 由1000001,1000002,1000003导致的计算图无法解析 | | GraphInitFailError | 依据网络模型构建计算图失败 | 1000000 | 由1000001,1000002,1000003导致的计算图无法解析 |
| ModelLoadingError | 模型加载失败 | 1000001 | 给定的`--input_nodes`, `--output_nodes`, `--shape`与实际模型不符;<br />或模型文件存在问题导致模型无法加载 | | ModelLoadingError | 模型加载失败 | 1000001 | 给定的`--input_nodes`, `--output_nodes`, `--shape`与实际模型不符;<br />或模型文件存在问题导致模型无法加载 |
| TfRuntimeError | TensorFlow库执行出错 | 1000002 | TensorFlow启动申请所需资源失败导致无法正常启动,<br />请检查系统资源(进程数、内存、显存占用、CPU占用)是否充足 | | TfRuntimeError | TensorFlow库执行出错 | 1000002 | TensorFlow启动申请所需资源失败导致无法正常启动,<br />请检查系统资源(进程数、内存、显存占用、CPU占用)是否充足 |
| RuntimeIntegrityError | 三方依赖库不完整 | 1000003 | MindConverter运行时所需的三方依赖库未安装 |
| TreeCreateFailError | 依据计算图构建模型树失败 | 2000000 | Tree用于生成最终代码结构,<br />通常由于PyTorch网络中存在`torch.nn.functional.xxx`, `torch.xxx`, `torch.Tensor.xxx`算子导致 |
| NodeInputMissingError | 网络节点输入信息丢失 | 2000001 | 节点的输入信息丢失 |
| TreeNodeInsertError | 树节点构建失败 | 2000002 | 由于scope name错误,无法找到该节点的父节点 |
| SourceFilesSaveError | 生成和保存转换后的脚本文件失败 | 3000000 | 由300000至3000005导致的脚本生成保存失败 |
| NodeInputTypeNotSupportError | 网络节点输入类型未知 | 3000001 | 映射关系中设置节点输入类型错误 |
| ScriptGenerationError | 转换脚本生成失败 | 3000002 | 空间不足;生成的脚本不符合PEP-8规范;`--output`目录下已有同名文件存在 |
| ReportGenerationError | 转换报告生成失败 | 3000003 | 空间不足;脚本中没有需要转换的算子;`--report`目录下已有同名文件存在 |
| CheckPointGenerationError | 转换权重生成失败 | 3000004 | 空间不足;`--output`目录下已有同名文件存在 |
| WeightMapGenerationError | 权重映射表生成失败 | 3000005 | 空间不足;`--output`目录下已有同名文件存在 |
| GeneratorError | 代码生成失败 | 4000000 |由4000001至4000004引发的代码生成模块错误 |
| NodeLoadingError | 节点读取失败 | 4000001 |转换后的节点缺少必要参数 |
| NodeArgsTranslationError | 节点参数转换失败 | 4000002 |转换后的节点参数信息不正确 |
| ModuleBuildError | 模块搭建失败 | 4000003 |转换后的节点信息不正确,与模块信息冲突,导致模块生成失败 |
| CodeGenerationError | 代码生成失败 | 4000004 |转换后的节点信息前后矛盾,生成过程产生冲突 |
| SubGraphSearchingError | 子图模式挖掘失败 | 5000000 | 通常由于模型生成对应的拓扑序错误导致 |
| RuntimeIntegrityError | 三方依赖库不完整 | 1000003 | MindConverter运行时所需的三方依赖库未安装 | |
| SourceFilesSaveError | 生成和保存转换后的脚本文件失败 | 2000000 | 由200000至2000005导致的脚本生成保存失败 |
| NodeInputTypeNotSupportError | 网络节点输入类型未知 | 2000001 | 映射关系中设置节点输入类型错误 |
| ScriptGenerationError | 转换脚本生成失败 | 2000002 | 空间不足;生成的脚本不符合PEP-8规范;`--output`目录下已有同名文件存在 |
| ReportGenerationError | 转换报告生成失败 | 2000003 | 空间不足;脚本中没有需要转换的算子;`--report`目录下已有同名文件存在 |
| CheckPointGenerationError | 转换权重生成失败 | 2000004 | 空间不足;`--output`目录下已有同名文件存在 |
| WeightMapGenerationError | 权重映射表生成失败 | 2000005 | 空间不足;`--output`目录下已有同名文件存在 |
| GeneratorError | 代码生成失败 | 3000000 |由3000001至3000004引发的代码生成模块错误 |
| NodeLoadingError | 节点读取失败 | 3000001 |转换后的节点缺少必要参数 |
| NodeArgsTranslationError | 节点参数转换失败 | 3000002 |转换后的节点参数信息不正确 |
| ModuleBuildError | 模块搭建失败 | 3000003 |转换后的节点信息不正确,与模块信息冲突,导致模块生成失败 |
| CodeGenerationError | 代码生成失败 | 3000004 |转换后的节点信息前后矛盾,生成过程产生冲突 |
| SubGraphSearchingError | 子图模式挖掘失败 | 4000000 | 通常由于模型生成对应的拓扑序错误导致 |

+ 1
- 3
mindinsight/mindconverter/graph_based_converter/framework.py View File

@@ -28,7 +28,7 @@ from mindinsight.mindconverter.graph_based_converter.constant import FrameworkTy
from mindinsight.mindconverter.graph_based_converter.generator import batch_add_nodes from mindinsight.mindconverter.graph_based_converter.generator import batch_add_nodes
from mindinsight.mindconverter.graph_based_converter.mapper import ONNXToMindSporeMapper from mindinsight.mindconverter.graph_based_converter.mapper import ONNXToMindSporeMapper
from mindinsight.mindconverter.common.log import logger as log, logger_console as log_console from mindinsight.mindconverter.common.log import logger as log, logger_console as log_console
from mindinsight.mindconverter.common.exceptions import GraphInitError, TreeCreationError, SourceFilesSaveError, \
from mindinsight.mindconverter.common.exceptions import GraphInitError, SourceFilesSaveError, \
BaseConverterError, UnknownModelError, GeneratorError, TfRuntimeError, RuntimeIntegrityError, ParamMissingError, \ BaseConverterError, UnknownModelError, GeneratorError, TfRuntimeError, RuntimeIntegrityError, ParamMissingError, \
BadParamError BadParamError
from mindinsight.mindconverter.graph_based_converter.third_party_graph import GraphFactory from mindinsight.mindconverter.graph_based_converter.third_party_graph import GraphFactory
@@ -160,7 +160,6 @@ def _extract_model_name(model_path):


@onnx_installation_validation @onnx_installation_validation
@GraphInitError.uniform_catcher() @GraphInitError.uniform_catcher()
@TreeCreationError.uniform_catcher()
@SourceFilesSaveError.uniform_catcher() @SourceFilesSaveError.uniform_catcher()
@GeneratorError.uniform_catcher() @GeneratorError.uniform_catcher()
def graph_based_converter_onnx_to_ms(graph_path: str, def graph_based_converter_onnx_to_ms(graph_path: str,
@@ -188,7 +187,6 @@ def graph_based_converter_onnx_to_ms(graph_path: str,
@tf_installation_validation @tf_installation_validation
@GraphInitError.uniform_catcher() @GraphInitError.uniform_catcher()
@TfRuntimeError.uniform_catcher() @TfRuntimeError.uniform_catcher()
@TreeCreationError.uniform_catcher()
@SourceFilesSaveError.uniform_catcher() @SourceFilesSaveError.uniform_catcher()
@GeneratorError.uniform_catcher() @GeneratorError.uniform_catcher()
def graph_based_converter_tf_to_ms(graph_path: str, def graph_based_converter_tf_to_ms(graph_path: str,


+ 0
- 1
requirements.txt View File

@@ -18,5 +18,4 @@ six>=1.12.0
Werkzeug>=1.0.0 Werkzeug>=1.0.0
pandas>=1.0.4 pandas>=1.0.4
yapf>=0.30.0 yapf>=0.30.0
treelib>=1.6.1
grpcio>=1.27.3 grpcio>=1.27.3

Loading…
Cancel
Save