ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

开放神经网络交换(ONNX)工具

2020-12-05 08:32:35  阅读:348  来源: 互联网

标签:USE git protobuf ONNX 交换 神经网络 install onnx


开放神经网络交换(ONNX)工具

开放神经网络交换(ONNX)是一个开放的生态系统,它使人工智能开发人员能够在项目发展过程中选择正确的工具。ONNX为人工智能模型提供了一种开源格式,包括深度学习和传统ML,它定义了一个可扩展的计算图模型,以及内置运算符和标准数据类型的定义。目前我们关注的是推断(评分)所需的能力。             

ONNX受到广泛支持,可以在许多框架、工具和硬件中找到。实现不同框架之间的互操作性和简化从研究到生产的路径有助于提高人工智能社区的创新速度。

参考链接:https://github.com/onnx/onnx

Use ONNX

Learn about the ONNX spec

Programming utilities for working with ONNX Graphs

  • Stay up to date with the latest ONNX news. [Facebook] [Twitter]
  • A binary build of ONNX is available from Conda, in conda-forge:
  • You will need an install of Protobuf and NumPy to build ONNX. One easy way to get these dependencies is via Anaconda:
  • You can then install ONNX from PyPi (Note: Set environment variable ONNX_ML=1 for onnx-ml):
  • Alternatively, you can also build and install ONNX locally from source code:
  • Note: When installing in a non-Anaconda environment, make sure to install the Protobuf compiler before running the pip installation of onnx. For example, on Ubuntu:
  • Step 1: Build Protobuf locally
  • Step 2: Build ONNX
  • If you would prefer to use Protobuf from conda-forge instead of building Protobuf from source, you can use the following instructions.
  • If you are building ONNX on an ARM 64 device, please make sure to install the dependencies appropriately.
  • After installation, run
  • to verify it works.
  • Environment variables: USE_MSVC_STATIC_RUNTIME (should be 1 or 0, not ON or OFF)
  • CMake variables: ONNX_USE_PROTOBUF_SHARED_LIBS, Protobuf_USE_STATIC_LIBS
  • If ONNX_USE_PROTOBUF_SHARED_LIBS is ON then Protobuf_USE_STATIC_LIBS must be OFF and USE_MSVC_STATIC_RUNTIME must be 0.
    If ONNX_USE_PROTOBUF_SHARED_LIBS is OFF then Protobuf_USE_STATIC_LIBS must be ON and USE_MSVC_STATIC_RUNTIME can be 1 or 0.
  • Note that the import onnx command does not work from the source checkout directory; in this case you'll see ModuleNotFoundError: No module named 'onnx.onnx_cpp2py_export'. Change into another directory to fix this error.
  • Building ONNX on Ubuntu works well, but on CentOS/RHEL and other ManyLinux systems, you might need to open the CMakeLists file and replace all instances of /lib with /lib64.
  • If you want to build ONNX on Debug mode, remember to set the environment variable DEBUG=1. For debug versions of the dependencies, you need to open the CMakeLists file and append a letter d at the end of the package name lines. For example, NAMES protobuf-lite would become NAMES protobuf-lited.
  • You can also use the onnx-dev docker image for a Linux-based installation without having to worry about dependency versioning.
  • ONNX uses pytest as test driver. In order to run tests, you will first need to install pytest:
  • After installing pytest, use the following command to run tests.
  • Check out the contributor guide for instructions.

·       Installation

·       Binaries

·       conda install -c conda-forge onnx

·       Source

·       Linux and MacOS

·       # Use conda-forge protobuf, as default doesn't come with protoc
·       conda install -c conda-forge protobuf numpy
·       pip install onnx
·       git clone https://github.com/onnx/onnx.git
·       cd onnx
·       git submodule update --init --recursive
·       python setup.py install
·       sudo apt-get install protobuf-compiler libprotoc-dev
·       pip install onnx

·       Windows

·       如果在Windows上从源代码构建ONNX,建议也将Protobuf作为静态库在本地构建。与conda-forge一起发布的版本是一个DLL,这是一个冲突,因为ONNX希望它是一个静态库。

·       git clone https://github.com/protocolbuffers/protobuf.git
·       cd protobuf
·       git checkout 3.9.x
·       cd cmake
·       # Explicitly set -Dprotobuf_MSVC_STATIC_RUNTIME=OFF to make sure protobuf does not statically link to runtime library
·       cmake -G "Visual Studio 15 2017 Win64" -Dprotobuf_MSVC_STATIC_RUNTIME=OFF -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_EXAMPLES=OFF -DCMAKE_INSTALL_PREFIX=<protobuf_install_dir>
·       msbuild protobuf.sln /m /p:Configuration=Release
·       msbuild INSTALL.vcxproj /p:Configuration=Release
·       # Get ONNX
·       git clone https://github.com/onnx/onnx.git
·       cd onnx
·       git submodule update --init --recursive
·        
·       # Set environment variables to find protobuf and turn off static linking of ONNX to runtime library.
·       # Even better option is to add it to user\system PATH so this step can be performed only once.
·       # For more details check https://docs.microsoft.com/en-us/cpp/build/reference/md-mt-ld-use-run-time-library?view=vs-2017
·       set PATH=<protobuf_install_dir>\bin;%PATH%
·       set USE_MSVC_STATIC_RUNTIME=0
·        
·       # Optional: Set environment variable `ONNX_ML=1` for onnx-ml
·        
·       # Build ONNX
·       python setup.py install

·       Build ONNX on Windows with Anaconda

·       # Use conda-forge protobuf
·       conda install -c conda-forge numpy libprotobuf=3.11.3 protobuf
·        
·       # Get ONNX
·       git clone https://github.com/onnx/onnx.git
·       cd onnx
·       git submodule update --init --recursive
·        
·       # Set environment variable for ONNX to use protobuf shared lib
·       set USE_MSVC_STATIC_RUNTIME=0
·       set CMAKE_ARGS="-DONNX_USE_PROTOBUF_SHARED_LIBS=ON -DProtobuf_USE_STATIC_LIBS=OFF -DONNX_USE_LITE_PROTO=ON"
·        
·       # Build ONNX
·       # Optional: Set environment variable `ONNX_ML=1` for onnx-ml
·        
·       python setup.py install

·       Build ONNX on ARM 64

·       pip install cython protobuf numpy
·       sudo apt-get install libprotobuf-dev protobuf-compiler
·       pip install onnx

·       Verify Installation

·       python -c "import onnx"

·       Common Errors

·       Testing

·       pip install pytest nbval
·       pytest

·       Development

 

标签:USE,git,protobuf,ONNX,交换,神经网络,install,onnx
来源: https://www.cnblogs.com/wujianming-110117/p/14088450.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有