
Open Neural Network Exchange (ONNX) ist ein offenes Ökosystem, das KI -Entwicklern ermöglicht, die richtigen Tools zu wählen, während sich ihr Projekt weiterentwickelt. ONNX bietet ein Open -Source -Format für KI -Modelle, sowohl Deep Learning als auch traditionelles ML. Es definiert ein erweiterbares Berechnungsgraphenmodell sowie Definitionen integrierter Operatoren und Standarddatentypen. Derzeit konzentrieren wir uns auf die für die Inferenz erforderlichen Fähigkeiten (Wertung).
ONNX wird weit verbreitet und kann in vielen Frameworks, Tools und Hardware gefunden werden. Wenn Sie die Interoperabilität zwischen verschiedenen Rahmenbedingungen ermöglichen und den Weg von der Forschung zur Produktion optimieren, erhöht die Innovationsgeschwindigkeit in der KI -Community. Wir laden die Community ein, sich uns anzuschließen und uns weiter zu entwickeln.
ONNX ist ein Community -Projekt und das Open Governance -Modell wird hier beschrieben. Wir ermutigen Sie, sich den Bemühungen anzuschließen und Feedback, Ideen und Code beizutragen. Sie können an den speziellen Interessengruppen und Arbeitsgruppen teilnehmen, um die Zukunft von ONNX zu formen.
Schauen Sie sich unseren Beitragsführer an, um loszulegen.
Wenn Sie der Meinung sind, dass ein Bediener zur ONNX -Spezifikation hinzugefügt werden sollte, lesen Sie bitte dieses Dokument.
Die Zeitpläne der regulären Sitzungen des Lenkungsausschusses, der Arbeitsgruppen und der Sigs finden Sie hier
Community Meetups finden mindestens einmal im Jahr statt. Inhalte von früheren Community -Meetups finden Sie unter:
Wir empfehlen Ihnen, Probleme zu öffnen oder Slack zu verwenden (wenn Sie noch nicht beigetreten sind, verwenden Sie diesen Link, um sich der Gruppe anzuschließen), um mehr Echtzeitdiskussionen zu erhalten.
Bleiben Sie mit den neuesten OnNX -Nachrichten auf dem Laufenden. [Facebook] [Twitter]
Jedes Jahr findet ein Roadmap -Prozess statt. Weitere Details finden Sie hier
ONNX veröffentlichte Pakete werden in PYPI veröffentlicht.
pip install onnx # or pip install onnx[reference] for optional reference implementation dependenciesONNX Weekly -Pakete werden in PYPI veröffentlicht, um Experimente und frühe Tests zu ermöglichen.
ONNX befindet sich in der Wartungsliste von VCPKG. Sie können VCPKG problemlos zum Erstellen und Installieren verwenden.
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.bat # For powershell
./bootstrap-vcpkg.sh # For bash
./vcpkg install onnxEin binärer Gebäude von ONNX ist bei Conda in Conda-Forge erhältlich:
conda install -c conda-forge onnx Deinstallieren Sie vor vorhandenen Versionen von ONNX pip uninstall onnx .
C ++ 17 oder höher ist eine C ++ - Compiler -Version erforderlich, um ONNX aus der Quelle zu erstellen. Dennoch können Benutzer ihre eigene CMAKE_CXX_STANDARD -Version zum Erstellen von ONNX angeben.
Wenn Sie keine Protobuf installiert haben, wird ONNX intern Protobuf für Onnx -Build heruntergeladen und erstellt.
Sie können protobes C/C ++ - Bibliotheken und Tools mit einer angegebenen Version manuell installieren, bevor Sie weiter vorwärts fahren. Abhängig davon, wie Sie Protobuf installiert haben, müssen Sie die Umgebungsvariable cmake_args auf "-donnx_use_protobuf_shared_libs = on" oder "-donnx_use_protobuf_shared_libs = off" festlegen. Zum Beispiel müssen Sie möglicherweise den folgenden Befehl ausführen:
Linux:
export CMAKE_ARGS= " -DONNX_USE_PROTOBUF_SHARED_LIBS=ON "Fenster:
set CMAKE_ARGS = " -DONNX_USE_PROTOBUF_SHARED_LIBS=ON "Das Ein/Aus hängt davon ab, welche Art von Protobuf -Bibliothek Sie haben. Freigegebene Bibliotheken sind Dateien, die mit*.dll/*. So/*. Dylib enden. Statische Bibliotheken sind Dateien, die mit *.a/ *. Lib. Diese Option hängt davon ab, wie Sie Ihre Protobuf -Bibliothek erhalten und wie sie aufgebaut wurde. Und es ist standardmäßig ausgeschaltet. Sie müssen die obigen Befehle nicht ausführen, wenn Sie es vorziehen möchten, eine statische Protobuf -Bibliothek zu verwenden.
Wenn Sie aus der Quelle auf nx bauen, wird empfohlen, Protobuf auch lokal als statische Bibliothek zu erstellen. Die mit Conda-Forge verteilte Version ist eine DLL, aber Onnx erwartet, dass es sich um eine statische Bibliothek handelt. Durch das Aufbau von Protobuf lokal können Sie auch die Version von Protobuf steuern. Die getestete und empfohlene Version ist 3.21.12.
Die Anweisungen in diesem Readme gehen davon aus, dass Sie Visual Studio verwenden. Es wird empfohlen, alle Befehle aus einer Shell auszuführen, die mit der Eingabeaufforderung "X64 native Tools" für VS 2019 gestartet wurde und den Build -Systemgenerator für CMake (z.
Sie können Protobuf erhalten, indem Sie die folgenden Befehle ausführen:
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=ReleaseDann wird es als statische Bibliothek erstellt und in <protobuf_install_dir> installiert. Bitte fügen Sie das Bin -Verzeichnis (das Protoc.exe enthält) zu Ihrem Weg hinzu.
set CMAKE_PREFIX_PATH = < protobuf_install_dir > ; %CMAKE_PREFIX_PATH%Bitte beachten Sie: Wenn Ihr protobuf_install_dir Leerzeichen enthält, fügen Sie keine Anführungszeichen hinzu.
Alternative: Wenn Sie Ihren Pfad nicht ändern möchten, können Sie stattdessen auf nx_protoc_executable festlegen.
set CMAKE_ARGS = -DONNX_PROTOC_EXECUTABLE= < full_path_to_protoc.exe >Dann können Sie onnx bauen als:
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
Zuerst müssen Sie Protobuf installieren. Die von ONNX benötigte Minimum -Protobuf -Compiler -Version (Protoc) beträgt 3.6.1. Bitte beachten Sie, dass alte Protoc-Versionen möglicherweise nicht mit CMAKE_ARGS=-DONNX_USE_LITE_PROTO=ON funktionieren.
Ubuntu 20.04 (und neuere) Benutzer können sich für die Installation von ProtObUF via entscheiden
apt-get install python3-pip python3-dev libprotobuf-dev protobuf-compiler In diesem Fall müssen im Onnx -Build -Schritt -DONNX_USE_PROTOBUF_SHARED_LIBS=ON zu cmake_args hinzugefügt.
Ein allgemeinerer Weg ist es, es aus der Quelle zu bauen und zu installieren. Weitere Informationen finden Sie in den folgenden Anweisungen.
Debian/Ubuntu:
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 installHier ist "-dcmake_position_independent_code = on" von entscheidender Bedeutung. Standardmäßig werden statische Bibliotheken ohne "-fpic" -Flag erstellt, sie sind kein positioneller Code. Aber freigegebene Bibliotheken müssen positionell unabhängige Code sein. Python C/C ++ - Erweiterungen (wie ONNX) sind gemeinsame Bibliotheken. Wenn also eine statische Bibliothek nicht mit "-fpic" gebaut wurde, kann sie nicht mit einer solchen gemeinsamen Bibliothek verknüpft werden.
Sobald das Erstellen erfolgreich ist, aktualisieren Sie den Update -Pfad, um Protobuf -Pfade einzuschließen.
Dann können Sie onnx bauen als:
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 installSobald das Erstellen erfolgreich ist, aktualisieren Sie den Update -Pfad, um Protobuf -Pfade einzuschließen.
Dann können Sie onnx bauen als:
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 . -vNach der Installation ausführen
python -c " import onnx "Um zu überprüfen, ob es funktioniert.
Eine vollständige Liste finden Sie unter cmakelists.txt
USE_MSVC_STATIC_RUNTIME sollte 1 oder 0 und nicht ein- oder ausgeschaltet sein. Wenn Sie auf 1 ONNX -Links statisch mit der Laufzeitbibliothek eingestellt sind. Standard : USE_MSVC_STATIC_RUNTIME=0
DEBUG sollte 0 oder 1 sein. Wenn auf 1 Onnx eingestellt ist, ist im Debug -Modus eingebaut. Oder Debugg -Versionen der Abhängigkeiten müssen die CMakelists -Datei öffnen und am Ende der Paketnamenzeilen einen Brief d anhängen. Zum Beispiel werden NAMES protobuf-lite zu NAMES protobuf-lited . Standard : Debug=0
ONNX_USE_PROTOBUF_SHARED_LIBS sollte ON oder OFF sein. Standard : ONNX_USE_PROTOBUF_SHARED_LIBS=OFF USE_MSVC_STATIC_RUNTIME=0 ONNX_USE_PROTOBUF_SHARED_LIBS bestimmt, wie onnx mit protobuf bibliotheken verknüpft ist.
ON sind - wird onNX dynamisch mit protobuf gemeinsam genutzten Libs verknüpft, werden protobuf_use_dlls wie hier beschrieben definiert.OFF - wird ONNX statisch mit Protobuf verknüpft. ONNX_USE_LITE_PROTO sollte ON oder OFF sein. Wenn Sie auf ON eingestellt sind, verwenden Sie Lite Protobuf anstelle von vollem Protobuf. Standard : ONNX_USE_LITE_PROTO=OFF
ONNX_WERROR sollte ON oder OFF sein. Wenn Warnungen ON werden, werden als Fehler behandelt. Standard : ONNX_WERROR=OFF in lokalen Builds, ON CI- und Release -Pipelines.
HINWEIS: Der Befehl import onnx funktioniert nicht aus dem Quell -Checkout -Verzeichnis. In diesem Fall sehen Sie ModuleNotFoundError: No module named 'onnx.onnx_cpp2py_export' . Wechseln Sie in ein anderes Verzeichnis, um diesen Fehler zu beheben.
Wenn Sie bei der Erstellung von Protobuf als statische Bibliothek auf Probleme stoßen, stellen Sie sicher, dass gemeinsame Protobuf -Bibliotheken wie LibProtobuf nicht auf Ihrem Gerät oder in der Conda -Umgebung installiert sind. Wenn diese gemeinsam genutzten Bibliotheken vorhanden sind, entfernen Sie sie entweder, um Protobuf aus der Quelle als statische Bibliothek zu erstellen, oder überspringen Sie den Protobuf -Build von der Quelle, um die gemeinsam genutzte Version direkt zu verwenden.
Wenn Sie Probleme beim Erstellen von ONNX aus der Quelle erstellen und Ihre Fehlermeldung lautet, Could not find pythonXX.lib , stellen Sie sicher, dass Sie über konsistente Python -Versionen für gemeinsame Befehle wie python und pip verfügen. Reinigen Sie alle vorhandenen Build -Dateien und bauen Sie es erneut um.
Onnx verwendet PyTest als Testfahrer. Um Tests auszuführen, müssen Sie zunächst pytest installieren:
pip install pytest nbvalVerwenden Sie nach dem Installieren von PyTest den folgenden Befehl, um Tests auszuführen.
pytestWeitere Anweisungen finden Sie im Beitragsführer.
Apache -Lizenz v2.0
Open -Source -Verhaltenskodex auf