OpenBMB / MiniCPM-V

MiniCPM-V 2.6: A GPT-4V Level MLLM for Single Image, Multi Image and Video on Your Phone
Apache License 2.0
12.75k stars 894 forks source link

请问能不能训练特定场景,然后转成ONNX #118

Closed shenyunhuan closed 6 months ago

shenyunhuan commented 6 months ago

如题,想在边缘设备上使用,算力不高1.5 TOPS

iceflame89 commented 6 months ago

感谢关注,1.5 TOPS算力可以试试MiniCPM-V 2.0,2.8B参数,更小的算力需求 转onnx需要根据具体硬件所支持的op进行一些定制适配,欢迎尝试~

Cuiunbo commented 6 months ago

@shenyunhuan If you can adapt it to ONNX, welcome! 欢迎合作!

Popsicle0-0 commented 4 months ago

转换vpm到onnx的过程中,出现算子不支持的情况,请问有方式解决吗 torch.onnx.errors.UnsupportedOperatorError: Exporting the operator 'aten::_upsample_bicubic2d_aa' to ONNX opset version 17 is not supported.

wenxingxingxing commented 4 months ago

转换vpm到onnx的过程中,出现算子不支持的情况,请问有方式解决吗 torch.onnx.errors.UnsupportedOperatorError: Exporting the operator 'aten::_upsample_bicubic2d_aa' to ONNX opset version 17 is not supported.

请问你是怎么转换onnx?

Popsicle0-0 commented 4 months ago

转换vpm到onnx的过程中,出现算子不支持的情况,请问有方式解决吗 torch.onnx.errors.UnsupportedOperatorError: Exporting the operator 'aten::_upsample_bicubic2d_aa' to ONNX opset version 17 is not supported.

请问你是怎么转换onnx?

感谢回复,我转换onnx的方式是 model_visual = AutoModelForCausalLM.from_pretrained( pretrained_model_path, device_map="cuda", torch_dtype=torch.float16, trust_remote_code=True,

fp16=True

    ).vpm.eval()

torch.onnx.export(model_visual, torch.randn( [1, 3, 364, 546]).to(device).half(), onnx_file_path, opset_version=18, input_names=['input'], output_names=['output'], dynamic_axes={ 'input': { 2: 'height', 3: 'width', }, 'output': { 1: 'output_dim' } } ) 我的torch版本是2.3.0,请问有可用的解决方案吗?

wenxingxingxing commented 4 months ago

转换vpm到onnx的过程中,出现算子不支持的情况,请问有方式解决吗 torch.onnx.errors.UnsupportedOperatorError: Exporting the operator 'aten::_upsample_bicubic2d_aa' to ONNX opset version 17 is not supported.

请问你是怎么转换onnx?

感谢回复,我转换onnx的方式是 model_visual = AutoModelForCausalLM.from_pretrained( pretrained_model_path, device_map="cuda", torch_dtype=torch.float16, trust_remote_code=True, # fp16=True ).vpm.eval()

torch.onnx.export(model_visual, torch.randn( [1, 3, 364, 546]).to(device).half(), onnx_file_path, opset_version=18, input_names=['input'], output_names=['output'], dynamic_axes={ 'input': { 2: 'height', 3: 'width', }, 'output': { 1: 'output_dim' } } ) 我的torch版本是2.3.0,请问有可用的解决方案吗?

我的也是这个算子不支持。不过我的是onnx opset version 18 is not supported

Popsicle0-0 commented 4 months ago

转换vpm到onnx的过程中,出现算子不支持的情况,请问有方式解决吗 torch.onnx.errors.UnsupportedOperatorError: Exporting the operator 'aten::_upsample_bicubic2d_aa' to ONNX opset version 17 is not supported.

请问你是怎么转换onnx?

感谢回复,我转换onnx的方式是 model_visual = AutoModelForCausalLM.from_pretrained( pretrained_model_path, device_map="cuda", torch_dtype=torch.float16, trust_remote_code=True, # fp16=True ).vpm.eval() torch.onnx.export(model_visual, torch.randn( [1, 3, 364, 546]).to(device).half(), onnx_file_path, opset_version=18, input_names=['input'], output_names=['output'], dynamic_axes={ 'input': { 2: 'height', 3: 'width', }, 'output': { 1: 'output_dim' } } ) 我的torch版本是2.3.0,请问有可用的解决方案吗?

我的也是这个算子不支持。不过我的是onnx opset version 18 is not supported

参考这个 https://pytorch.org/docs/stable/onnx_torchscript_supported_aten_ops.html#unsupported-operators 这个算子是还没支持的 不知道能不能找到这个运算符换种写法

huibinluo commented 3 months ago

转换vpm到onnx的过程中,出现算子不支持的情况,请问有方式解决吗 torch.onnx.errors.UnsupportedOperatorError: Exporting the operator 'aten::_upsample_bicubic2d_aa' to ONNX opset version 17 is not supported.

请问你是怎么转换onnx?

感谢回复,我转换onnx的方式是 model_visual = AutoModelForCausalLM.from_pretrained( pretrained_model_path, device_map="cuda", torch_dtype=torch.float16, trust_remote_code=True, # fp16=True ).vpm.eval() torch.onnx.export(model_visual, torch.randn( [1, 3, 364, 546]).to(device).half(), onnx_file_path, opset_version=18, input_names=['input'], output_names=['output'], dynamic_axes={ 'input': { 2: 'height', 3: 'width', }, 'output': { 1: 'output_dim' } } ) 我的torch版本是2.3.0,请问有可用的解决方案吗?

我的也是这个算子不支持。不过我的是onnx opset version 18 is not supported

参考这个 https://pytorch.org/docs/stable/onnx_torchscript_supported_aten_ops.html#unsupported-operators 这个算子是还没支持的 不知道能不能找到这个运算符换种写法

你好,这个转换onnx的过程解决了么

Popsicle0-0 commented 3 months ago

转换vpm到onnx的过程中,出现算子不支持的情况,请问有方式解决吗 torch.onnx.errors.UnsupportedOperatorError: Exporting the operator 'aten::_upsample_bicubic2d_aa' to ONNX opset version 17 is not supported.

请问你是怎么转换onnx?

感谢回复,我转换onnx的方式是 model_visual = AutoModelForCausalLM.from_pretrained( pretrained_model_path, device_map="cuda", torch_dtype=torch.float16, trust_remote_code=True, # fp16=True ).vpm.eval() torch.onnx.export(model_visual, torch.randn( [1, 3, 364, 546]).to(device).half(), onnx_file_path, opset_version=18, input_names=['input'], output_names=['output'], dynamic_axes={ 'input': { 2: 'height', 3: 'width', }, 'output': { 1: 'output_dim' } } ) 我的torch版本是2.3.0,请问有可用的解决方案吗?

我的也是这个算子不支持。不过我的是onnx opset version 18 is not supported

参考这个 https://pytorch.org/docs/stable/onnx_torchscript_supported_aten_ops.html#unsupported-operators 这个算子是还没支持的 不知道能不能找到这个运算符换种写法

你好,这个转换onnx的过程解决了么

还没有

wenxingxingxing commented 3 months ago

转换vpm到onnx的过程中,出现算子不支持的情况,请问有方式解决吗 torch.onnx.errors.UnsupportedOperatorError: Exporting the operator 'aten::_upsample_bicubic2d_aa' to ONNX opset version 17 is not supported.

请问你是怎么转换onnx?

感谢回复,我转换onnx的方式是 model_visual = AutoModelForCausalLM.from_pretrained( pretrained_model_path, device_map="cuda", torch_dtype=torch.float16, trust_remote_code=True, # fp16=True ).vpm.eval() torch.onnx.export(model_visual, torch.randn( [1, 3, 364, 546]).to(device).half(), onnx_file_path, opset_version=18, input_names=['input'], output_names=['output'], dynamic_axes={ 'input': { 2: 'height', 3: 'width', }, 'output': { 1: 'output_dim' } } ) 我的torch版本是2.3.0,请问有可用的解决方案吗?

我的也是这个算子不支持。不过我的是onnx opset version 18 is not supported

参考这个 https://pytorch.org/docs/stable/onnx_torchscript_supported_aten_ops.html#unsupported-operators 这个算子是还没支持的 不知道能不能找到这个运算符换种写法

你好,这个转换onnx的过程解决了么

还没有

已经转出来了,我这边的解决方式是在torch.nn.functional.py中找到这个算子的转换函数,利用upsample函数替换

Popsicle0-0 commented 3 months ago

转换vpm到onnx的过程中,出现算子不支持的情况,请问有方式解决吗 torch.onnx.errors.UnsupportedOperatorError: Exporting the operator 'aten::_upsample_bicubic2d_aa' to ONNX opset version 17 is not supported.

请问你是怎么转换onnx?

感谢回复,我转换onnx的方式是 model_visual = AutoModelForCausalLM.from_pretrained( pretrained_model_path, device_map="cuda", torch_dtype=torch.float16, trust_remote_code=True, # fp16=True ).vpm.eval() torch.onnx.export(model_visual, torch.randn( [1, 3, 364, 546]).to(device).half(), onnx_file_path, opset_version=18, input_names=['input'], output_names=['output'], dynamic_axes={ 'input': { 2: 'height', 3: 'width', }, 'output': { 1: 'output_dim' } } ) 我的torch版本是2.3.0,请问有可用的解决方案吗?

我的也是这个算子不支持。不过我的是onnx opset version 18 is not supported

参考这个 https://pytorch.org/docs/stable/onnx_torchscript_supported_aten_ops.html#unsupported-operators 这个算子是还没支持的 不知道能不能找到这个运算符换种写法

你好,这个转换onnx的过程解决了么

还没有

已经转出来了,我这边的解决方式是在torch.nn.functional.py中找到这个算子的转换函数,利用upsample函数替换

感谢回复 我把torch.nn.functional.py中抗锯齿这个注释掉了,转出来了 ` if input.dim() == 4 and mode == "bicubic": assert align_corners is not None

if antialias:

    #     return torch._C._nn._upsample_bicubic2d_aa(input, output_size, align_corners, scale_factors)
    return torch._C._nn.upsample_bicubic2d(input, output_size, align_corners, scale_factors)`

大佬你是只转了视觉层吗,有没有试过转tensorrt

wenxingxingxing commented 3 months ago

转换vpm到onnx的过程中,出现算子不支持的情况,请问有方式解决吗 torch.onnx.errors.UnsupportedOperatorError: Exporting the operator 'aten::_upsample_bicubic2d_aa' to ONNX opset version 17 is not supported.

请问你是怎么转换onnx?

感谢回复,我转换onnx的方式是 model_visual = AutoModelForCausalLM.from_pretrained( pretrained_model_path, device_map="cuda", torch_dtype=torch.float16, trust_remote_code=True, # fp16=True ).vpm.eval() torch.onnx.export(model_visual, torch.randn( [1, 3, 364, 546]).to(device).half(), onnx_file_path, opset_version=18, input_names=['input'], output_names=['output'], dynamic_axes={ 'input': { 2: 'height', 3: 'width', }, 'output': { 1: 'output_dim' } } ) 我的torch版本是2.3.0,请问有可用的解决方案吗?

我的也是这个算子不支持。不过我的是onnx opset version 18 is not supported

参考这个 https://pytorch.org/docs/stable/onnx_torchscript_supported_aten_ops.html#unsupported-operators 这个算子是还没支持的 不知道能不能找到这个运算符换种写法

你好,这个转换onnx的过程解决了么

还没有

已经转出来了,我这边的解决方式是在torch.nn.functional.py中找到这个算子的转换函数,利用upsample函数替换

感谢回复 我把torch.nn.functional.py中抗锯齿这个注释掉了,转出来了 if input.dim() == 4 and mode == "bicubic": assert align_corners is not None # if antialias: # return torch._C._nn._upsample_bicubic2d_aa(input, output_size, align_corners, scale_factors) return torch._C._nn.upsample_bicubic2d(input, output_size, align_corners, scale_factors)

大佬你是只转了视觉层吗,有没有试过转tensorrt

我是用torch.nn.upsample替换掉转出来的,目前还没有转tensorrt的需求