• 开放神经网络交换(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 usersystem 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>in;%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

     

    人工智能芯片与自动驾驶
  • 相关阅读:
    Razor 视图
    可选参数和命名参数
    CPU性能分析工具原理
    从硬件到语言,详解C++的内存对齐(memory alignment)
    谈谈C++的volatile关键字以及常见的误解
    C++11的value category(值类别)以及move semantics(移动语义)
    C++基于范围循环(range-based for loop)的陷阱
    C++模板入门教程(一)——模板概念与基本语法
    自己动手实现深度学习框架-8 RNN文本分类和文本生成模型
    自己动手实现深度学习框架-7 RNN层--GRU, LSTM
  • 原文地址:https://www.cnblogs.com/wujianming-110117/p/14088450.html
Copyright © 2020-2023  润新知