
Open Neural Network Exchange (ONNX)는 AI 개발자가 프로젝트가 발전함에 따라 올바른 도구를 선택할 수 있도록하는 Open Ecosystem입니다. Onnx는 딥 러닝 및 전통적인 ML의 AI 모델에 대한 오픈 소스 형식을 제공합니다. 확장 가능한 계산 그래프 모델과 내장 연산자 및 표준 데이터 유형의 정의를 정의합니다. 현재 추론에 필요한 기능 (점수)에 중점을 둡니다.
ONNX는 널리 지원되며 많은 프레임 워크, 도구 및 하드웨어에서 찾을 수 있습니다. 다양한 프레임 워크 간의 상호 운용성을 가능하게하고 연구에서 생산으로 경로를 간소화하면 AI 커뮤니티의 혁신 속도를 높일 수 있습니다. 우리는 커뮤니티를 초대하여 우리와 함께 Onx를 더 진화시킵니다.
ONNX는 커뮤니티 프로젝트이며 공개 거버넌스 모델은 여기에 설명되어 있습니다. 노력에 참여하고 피드백, 아이디어 및 코드를 제공하는 것이 좋습니다. 특수 관심 그룹 및 실무 그룹에 참여하여 ONNX의 미래를 형성 할 수 있습니다.
시작하려면 기여 가이드를 확인하십시오.
일부 연산자가 ONNX 사양에 추가해야한다고 생각되면이 문서를 읽으십시오.
운영위원회, 실무 그룹 및 SIG의 정기 회의 일정은 여기에서 찾을 수 있습니다.
커뮤니티 모임은 1 년에 한 번 이상 개최됩니다. 이전 커뮤니티 모임의 콘텐츠는 다음과 같습니다.
더 많은 실시간 토론을 위해 더 많은 실시간 토론을 위해 Slack (아직 가입하지 않은 경우이 링크를 사용하여 그룹에 가입하십시오)을 사용하는 것이 좋습니다.
최신 ONNX 뉴스를 최신 상태로 유지하십시오. [Facebook] [Twitter]
로드맵 프로세스는 매년 진행됩니다. 자세한 내용은 여기에서 확인할 수 있습니다
ONNX 릴리스 패키지는 PYPI에 게시됩니다.
pip install onnx # or pip install onnx[reference] for optional reference implementation dependenciesONNX 주간 패키지는 실험 및 조기 테스트를 가능하게하기 위해 PYPI로 게시됩니다.
Onnx는 VCPKG의 유지 보수 목록에 있으며 VCPKG를 사용하여 제작 및 설치할 수 있습니다.
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.bat # For powershell
./bootstrap-vcpkg.sh # For bash
./vcpkg install onnxONNX의 이진 빌드는 Conda-Forge의 Conda에서 제공됩니다.
conda install -c conda-forge onnx 소스에서 구축하기 전에 기존 버전의 Onnx pip uninstall onnx 하십시오.
C ++ 17 이상의 C ++ 컴파일러 버전은 소스에서 ONNX를 빌드하려면 필요합니다. 그럼에도 불구하고 사용자는 Onnx를 구축하기 위해 자신의 CMAKE_CXX_STANDARD 버전을 지정할 수 있습니다.
Protobuf가 설치되지 않은 경우 ONNX는 ONNX 빌드를위한 내부적으로 다운로드하여 제작됩니다.
또는 앞으로 진행하기 전에 지정된 버전으로 Protobuf C/C ++ 라이브러리 및 도구를 수동으로 설치할 수 있습니다. 그런 다음 protobuf를 설치하는 방법에 따라 환경 변수 cmake_args를 "-donnx_use_protobuf_shared_libs = on"또는 "-donnx_use_protobuf_shared_libs = off"로 설정해야합니다. 예를 들어 다음 명령을 실행해야 할 수도 있습니다.
Linux :
export CMAKE_ARGS= " -DONNX_USE_PROTOBUF_SHARED_LIBS=ON "Windows :
set CMAKE_ARGS = " -DONNX_USE_PROTOBUF_SHARED_LIBS=ON "온/오프는 어떤 종류의 프로토 부프 라이브러리에 달려 있습니다. 공유 라이브러리는*.dll/*. so/*. dylib로 끝나는 파일입니다. 정적 라이브러리는 *.a/ *. lib로 끝나는 파일입니다. 이 옵션은 Protobuf 라이브러리를 얻는 방법과 그것이 구축 된 방법에 따라 다릅니다. 그리고 기본값입니다. 정적 Protobuf 라이브러리를 사용하려면 위의 명령을 실행할 필요가 없습니다.
Source에서 Onnx를 구축하는 경우 정적 라이브러리로서 Protobuf를 로컬로 구축하는 것이 좋습니다. Conda-Forge와 함께 배포 된 버전은 DLL이지만 Onnx는 정적 라이브러리가 될 것으로 예상합니다. 로컬로 제작하면 Protobuf 버전을 제어 할 수 있습니다. 테스트 및 권장 버전은 3.21.12입니다.
이 readme의 지침은 Visual Studio를 사용하고 있다고 가정합니다. "x64 기본 도구 명령 프롬프트 (vs 2019)"에서 시작한 쉘에서 모든 명령을 실행하고 CMake의 빌드 시스템 생성기 (예 : CMake -G "Visual Studio 16 2019")를 ONNX를 구축하는 동안 일관되게 유지하는 것이 좋습니다.
다음 명령을 실행하여 Protobuf를 얻을 수 있습니다.
git clone https://github.com/protocolbuffers/protobuf.git
cd protobuf
git checkout v21.12
cd cmake
cmake -G " Visual Studio 16 2019 " -A x64 -DCMAKE_INSTALL_PREFIX= < protobuf_install_dir > -Dprotobuf_MSVC_STATIC_RUNTIME=OFF -Dprotobuf_BUILD_SHARED_LIBS=OFF -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_EXAMPLES=OFF .
msbuild protobuf.sln /m /p:Configuration=Release
msbuild INSTALL.vcxproj /p:Configuration=Release그런 다음 정적 라이브러리로 제작되어 <Protobuf_install_dir>에 설치됩니다. BIN 디렉토리 (Protoc.exe 포함)를 경로에 추가하십시오.
set CMAKE_PREFIX_PATH = < protobuf_install_dir > ; %CMAKE_PREFIX_PATH%참고 : protobuf_install_dir에 공백이 포함 된 경우 그 주위에 인용 표시를 추가 하지 마십시오 .
대안 : 경로를 변경하지 않으려면 대신 ONNX_PROTOC_EXECUTABLE을 설정할 수 있습니다.
set CMAKE_ARGS = -DONNX_PROTOC_EXECUTABLE= < full_path_to_protoc.exe >그런 다음 onnx를 다음과 같이 구축 할 수 있습니다.
git clone https://github.com/onnx/onnx.git
cd onnx
git submodule update --init --recursive
# prefer lite proto
set CMAKE_ARGS=-DONNX_USE_LITE_PROTO=ON
pip install -e . -v
먼저 Protobuf를 설치해야합니다. ONNX가 요구하는 최소 Protobuf 컴파일러 (PROTOC) 버전은 3.6.1입니다. 이전 프로토 버전은 CMAKE_ARGS=-DONNX_USE_LITE_PROTO=ON 에서 작동하지 않을 수 있습니다.
Ubuntu 20.04 (및 새로운) 사용자는
apt-get install python3-pip python3-dev libprotobuf-dev protobuf-compiler 이 경우 onnx 빌드 단계에서 -DONNX_USE_PROTOBUF_SHARED_LIBS=ON 에 on을 추가해야합니다.
보다 일반적인 방법은 소스에서 빌드하고 설치하는 것입니다. 자세한 내용은 아래 지침을 참조하십시오.
데비안/우분투 :
git clone https://github.com/protocolbuffers/protobuf.git
cd protobuf
git checkout v21.12
git submodule update --init --recursive
mkdir build_source && cd build_source
cmake ../cmake -Dprotobuf_BUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_POSITION_INDEPENDENT_CODE=ON -Dprotobuf_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release
make -j $( nproc )
make installCentos/Rhel/Fedora :
git clone https://github.com/protocolbuffers/protobuf.git
cd protobuf
git checkout v21.12
git submodule update --init --recursive
mkdir build_source && cd build_source
cmake ../cmake -DCMAKE_INSTALL_LIBDIR=lib64 -Dprotobuf_BUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_POSITION_INDEPENDENT_CODE=ON -Dprotobuf_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release
make -j $( nproc )
make install여기 "-dcmake_position_independent_code = on"은 중요합니다. 기본적으로 정적 라이브러리는 "-fpic"플래그없이 구축되며, 독립 코드를 위치시키지 않습니다. 그러나 공유 라이브러리는 위치 독립 코드 여야합니다. Python C/C ++ 확장 (ONNX 등)은 공유 라이브러리입니다. 따라서 정적 라이브러리가 "-fpic"으로 제작되지 않은 경우 그러한 공유 라이브러리에 연결할 수 없습니다.
빌드가 성공하면 protobuf 경로를 포함하도록 업데이트 경로.
그런 다음 onnx를 다음과 같이 구축 할 수 있습니다.
git clone https://github.com/onnx/onnx.git
cd onnx
git submodule update --init --recursive
# Optional: prefer lite proto
export CMAKE_ARGS=-DONNX_USE_LITE_PROTO=ON
pip install -e . -v export NUM_CORES= ` sysctl -n hw.ncpu `
brew update
brew install autoconf && brew install automake
wget https://github.com/protocolbuffers/protobuf/releases/download/v21.12/protobuf-cpp-3.21.12.tar.gz
tar -xvf protobuf-cpp-3.21.12.tar.gz
cd protobuf-3.21.12
mkdir build_source && cd build_source
cmake ../cmake -Dprotobuf_BUILD_SHARED_LIBS=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON -Dprotobuf_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release
make -j ${NUM_CORES}
make install빌드가 성공하면 protobuf 경로를 포함하도록 업데이트 경로.
그런 다음 onnx를 다음과 같이 구축 할 수 있습니다.
git clone --recursive https://github.com/onnx/onnx.git
cd onnx
# Optional: prefer lite proto
set CMAKE_ARGS=-DONNX_USE_LITE_PROTO=ON
pip install -e . -v설치 후 실행하십시오
python -c " import onnx "그것이 작동하는지 확인합니다.
전체 목록은 cmakelists.txt를 참조하십시오
USE_MSVC_STATIC_RUNTIME 1 또는 0이어야합니다. 1 ONNX 링크로 설정하면 정적으로 런타임 라이브러리로 설정됩니다. 기본값 : USE_MSVC_STATIC_RUNTIME=0
DEBUG 0 또는 1이어야합니다. 1 ONNX로 설정하면 디버그 모드에서 내장되어 있습니다. 또는 Debug 버전의 종속성은 cmakelists 파일을 열고 패키지 이름 줄 끝에 문자 d 추가해야합니다. 예를 들어, NAMES protobuf-lite NAMES protobuf-lited 됩니다. 기본값 : Debug=0
ONNX_USE_PROTOBUF_SHARED_LIBS OFF ON 있어야합니다. 기본값 : ONNX_USE_PROTOBUF_SHARED_LIBS=OFF USE_MSVC_STATIC_RUNTIME=0 ONNX_USE_PROTOBUF_SHARED_LIBS ONNX가 Protobuf 라이브러리에 링크하는 방법을 결정합니다.
ON 에 설정하면 protobuf 공유 리브에 동적으로 연결되며, Protobuf_use_dlls는 여기에 설명 된대로 정의됩니다.OFF 로 설정된 경우 -ONNX는 정적으로 Protobuf에 연결됩니다. ONNX_USE_LITE_PROTO OFF ON 있어야합니다. ON 로 설정하면 완전 프로토 부프 대신 Lite Protobuf를 사용합니다. 기본값 : ONNX_USE_LITE_PROTO=OFF
ONNX_WERROR ON OFF 있어야합니다. 경고로 ON 하면 오류로 취급됩니다. 기본값 : ONNX_WERROR=OFF ON
참고 : import onnx 명령은 소스 체크 아웃 디렉토리에서 작동하지 않습니다. 이 경우 ModuleNotFoundError: No module named 'onnx.onnx_cpp2py_export' . 이 오류를 해결하기 위해 다른 디렉토리로 변경하십시오.
정적 라이브러리로 Protobuf를 구축하는 동안 모든 문제가 발생하는 경우 Libprotobuf와 같은 공유 프로토 부프 라이브러리가 장치 나 Conda 환경에 설치되지 않도록하십시오. 이러한 공유 라이브러리가 존재하는 경우, 소스에서 정적 라이브러리로 프로토 비프를 빌드하여 소스에서 프로토 바 빌 빌드를 건너 뛰기 위해 공유 버전을 직접 사용하십시오.
소스에서 ONNX를 구축하는 동안 문제가 발생하고 오류 메시지가 읽히면 Could not find pythonXX.lib python 및 pip 와 같은 일반적인 명령에 대한 일관된 Python 버전이 있는지 확인하십시오. 기존 빌드 파일을 모두 정리하고 ONNX를 다시 재건하십시오.
Onnx는 pytest를 테스트 드라이버로 사용합니다. 테스트를 실행하려면 먼저 pytest 설치해야합니다.
pip install pytest nbvalPytest를 설치 한 후 다음 명령을 사용하여 테스트를 실행하십시오.
pytest지침은 기고자 안내서를 확인하십시오.
아파치 라이센스 v2.0
ONNX 오픈 소스 행동 강령