Skip to content
This repository has been archived by the owner on Mar 1, 2024. It is now read-only.

[模型转换] 待实现的代码 #7

Open
nxdong opened this issue Sep 18, 2023 · 1 comment
Open

[模型转换] 待实现的代码 #7

nxdong opened this issue Sep 18, 2023 · 1 comment

Comments

@nxdong
Copy link

nxdong commented Sep 18, 2023

运行命令:

model_transform.py --model_name glm_block_0 --model_def /workspace/model/glm_block_0.onnx --mlir glm_block_0.mlir

报错:

SOPHGO Toolchain v1.3.beta.1-65-g0d07945a-20230918
2023/09/18 18:36:07 - INFO : 
         _____________________________________________________ 
        | preprocess:                                           |
        |   (x - mean) * scale                                  |
        '-------------------------------------------------------'
  config Preprocess args : 
        resize_dims           : same to net input dims
        keep_aspect_ratio     : False
        keep_ratio_mode       : letterbox
        pad_value             : 0
        pad_type              : center
        --------------------------
        mean                  : [0.0, 0.0, 0.0]
        scale                 : [1.0, 1.0, 1.0]
        --------------------------
        pixel_format          : bgr
        channel_format        : nchw

Input_shape assigned
ConstantFolding finished
skip_fuse_bn: False
Onnxsim opt finished
ConstantFolding finished
num_const: 2
Traceback (most recent call last):
  File "/workspace/tpu-mlir/python/tools/model_transform.py", line 273, in <module>
    tool.model_transform(args.mlir, args.add_postprocess)
  File "/workspace/tpu-mlir/python/tools/model_transform.py", line 50, in model_transform
    self.converter.generate_mlir(mlir_origin)
  File "/workspace/tpu-mlir/python/transform/OnnxConverter.py", line 526, in generate_mlir
    self.onnxop_factory.get(n.op_type, lambda x: NoneAndRaise(x))(n)
  File "/workspace/tpu-mlir/python/transform/OnnxConverter.py", line 234, in <lambda>
    "Where": lambda node: self.convert_where_op(node),
  File "/workspace/tpu-mlir/python/transform/OnnxConverter.py", line 2009, in convert_where_op
    assert (0)  # TODO: to be implement
AssertionError
@nxdong
Copy link
Author

nxdong commented Sep 20, 2023

这个问题可以通过在 tpu-mlir 项目的 ./python/transform/OnnxConverter.py 文件的 convert_where_op 函数内 增加

        elif num_const == 2:
            x_is_const = False
            y_is_const = False
            if self.isScalar(tbrn):
                x_is_const = True
                x_const_val = self.getScalar(tbrn)
                t_opd = self.mlir.none_op
            else:
                t_opd = tbrn_opd
                x_const_val = 0
            if self.isScalar(fbrn):
                y_is_const = True
                y_const_val = self.getScalar(fbrn)
                f_opd = self.mlir.none_op
            else:
                f_opd = fbrn_opd
                y_const_val = 0
            new_op = top.WhereOp(self.unranked_type,
                                 cond_opd,
                                 t_opd,
                                 f_opd,
                                 x_is_const=x_is_const,
                                 y_is_const=y_is_const,
                                 x_const_val=x_const_val,
                                 y_const_val=y_const_val,
                                 loc=self.get_loc("{}_{}".format(onnx_node.name,
                                                                 onnx_node.op_type)),
                                 ip=self.mlir.insert_point).output
        else:
            print("num_const:", num_const)
            assert (0)  # TODO: to be implement

来跳过。(是否合理待验证)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant