博客
关于我
KuiperInfer深度学习推理框架-源码阅读和二次开发(3):计算图
阅读量:791 次
发布时间:2023-01-29

本文共 751 字,大约阅读时间需要 2 分钟。

为什么选择PNNX?

在深度学习模型开发中,ONNX(Open Neural Network Exchange)是一个很流行的格式,因为它是跨平台的、开源的,并且支持多种框架,默认情况下能够很好地导出模型结构和权重。然而,在实际应用中,我们也会遇到一些问题,使得选择其他工具或框架成为必要。

关于PyTorch与ONNX导出的问题,确实有如下几点值得注意:

  • PyTorch导出的ONNX模型在某些算子上可能存在不匹配或不完整的情况,导致在目标框架运行时出现错误或性能问题。

  • 导出ONNX模型过程中,部分激活函数或算子之间的接口可能不够完善或稳定,这会在实际应用中引起不必要的困扰。

  • 针对这一问题,PNNX(Personal Neural Network Exchange)提供了一些更好的解决方案。PNNX不仅支持模型的高效导入,还提供了一些优化选项,使得在不同框架之间迁移更加顺畅。

  • PNNX本身具有以下优势:

  • 算子接口的完善性:相比于ONNX,PNNX在算子实现上更加严谨,支持更多的创新激活函数和优化技巧。

  • 模型优化的可控性:通过灵活的配置选项,PNNX可以更好地满足具体应用需求,同时优化模型的速度和加速效果。

  • 智能量化工具:PNNX提供一些自动化量化工具,可以在不影响模型准确性的前提下显著减少模型体积。

  • 在实际工作中,PNNX的这些优化手段展示了其在模型性能和效率方面的优势。对于需要定制化优化的开发者而言,PNNX提供了一种更灵活的解决方案,同时也避免了一些迁移过程中常见的坑点。

    总而言之,虽然ONNX在理论上具有很高的兼容性,但在实际应用中,我们可能会遇到一些不愿意接受的局限性。选择PNNX主要是为了更好地控制模型优化方向,特别是在需要针对性定制模型时,PNNX展现了其独特的优势。

    转载地址:http://xrryk.baihongyu.com/

    你可能感兴趣的文章
    《机器学习Python实现_10_06_集成学习_boosting_gbdt分类实现》
    查看>>
    看明白这两种情况,才敢说自己懂跨链! | 喵懂区块链24期
    查看>>
    Android DEX加固方案与原理
    查看>>
    iOS_Runtime3_动态添加方法
    查看>>
    我用wxPython搭建GUI量化系统之最小架构的运行
    查看>>
    selenium+python之切换窗口
    查看>>
    Find Familiar Service Features in Lightning Experience
    查看>>
    map[]和map.at()取值之间的区别
    查看>>
    VTK:可视化之RandomProbe
    查看>>
    【编程】C语言入门:1到 100 的所有整数中出现多少个数字9
    查看>>
    pair的用法
    查看>>
    javaWeb服务详解(含源代码,测试通过,注释) ——Emp的Dao层
    查看>>
    echarts 基本图表开发小结
    查看>>
    TreeSet、TreeMap
    查看>>
    GitHub上传时,项目在已有文档时直接push出现错误解决方案
    查看>>
    嵌入式系统试题库(CSU)
    查看>>
    00010.02最基础客户信息管理软件(意义类的小项目,练习基础,不涉及数据库)
    查看>>
    00013.05 字符串比较
    查看>>
    UE4 错误列表 error码(只记录我遇到的情况,持续添加,未完成)
    查看>>
    cmd编译.java文件 : java:720: 错误: 编码GBK的不可映射字符 Why ? ? ? ?
    查看>>