
Open Neural Network Exchange (ONNX) adalah ekosistem terbuka yang memberdayakan pengembang AI untuk memilih alat yang tepat ketika proyek mereka berkembang. ONNX menyediakan format sumber terbuka untuk model AI, baik pembelajaran mendalam dan ML tradisional. Ini mendefinisikan model grafik komputasi yang dapat diperluas, serta definisi operator bawaan dan tipe data standar. Saat ini kami fokus pada kemampuan yang dibutuhkan untuk inferencing (mencetak).
ONNX didukung secara luas dan dapat ditemukan dalam banyak kerangka kerja, alat, dan perangkat keras. Mengaktifkan interoperabilitas antara kerangka kerja yang berbeda dan merampingkan jalur dari penelitian ke produksi membantu meningkatkan kecepatan inovasi di komunitas AI. Kami mengundang komunitas untuk bergabung dengan kami dan lebih lanjut berkembang ONNX.
ONNX adalah proyek komunitas dan model tata kelola terbuka dijelaskan di sini. Kami mendorong Anda untuk bergabung dengan upaya dan menyumbangkan umpan balik, ide, dan kode. Anda dapat berpartisipasi dalam kelompok kepentingan khusus dan kelompok kerja untuk membentuk masa depan ONNX.
Lihat panduan kontribusi kami untuk memulai.
Jika Anda berpikir beberapa operator harus ditambahkan ke spesifikasi ONNX, silakan baca dokumen ini.
Jadwal pertemuan rutin Komite Pengarah, Kelompok Kerja dan SIG dapat ditemukan di sini
Pertemuan komunitas diadakan setidaknya setahun sekali. Konten dari pertemuan komunitas sebelumnya ada di:
Kami mendorong Anda untuk membuka masalah, atau menggunakan Slack (jika Anda belum bergabung, silakan gunakan tautan ini untuk bergabung dengan grup) untuk diskusi yang lebih real-time.
Tetap up to date dengan berita ONNX terbaru. [Facebook] [Twitter]
Proses peta jalan berlangsung setiap tahun. Rincian lebih lanjut dapat ditemukan di sini
Paket yang dirilis ONNX diterbitkan di PYPI.
pip install onnx # or pip install onnx[reference] for optional reference implementation dependenciesPaket mingguan ONNX diterbitkan dalam PYPI untuk memungkinkan eksperimen dan pengujian awal.
ONNX ada dalam daftar pemeliharaan VCPKG, Anda dapat dengan mudah menggunakan VCPKG untuk membangun dan menginstalnya.
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.bat # For powershell
./bootstrap-vcpkg.sh # For bash
./vcpkg install onnxBangunan biner Onnx tersedia dari Conda, di Conda-Forge:
conda install -c conda-forge onnx Sebelum membangun dari sumber uninstall versi onnx pip uninstall onnx .
Versi kompiler C ++ C ++ 17 atau lebih tinggi diperlukan untuk membangun ONNX dari sumber. Namun, pengguna dapat menentukan versi CMAKE_CXX_STANDARD mereka sendiri untuk membangun ONNX.
Jika Anda tidak menginstal Protobuf, ONNX akan mengunduh secara internal dan membangun Protobuf untuk Onnx Build.
Atau, Anda dapat secara manual menginstal perpustakaan dan alat protobuf C/C ++ dengan versi yang ditentukan sebelum melanjutkan. Kemudian tergantung pada bagaimana Anda menginstal protobuf, Anda perlu mengatur variabel lingkungan cmake_args ke "-donnx_use_protobuf_shared_libs = on" atau "-donnx_use_protobuf_shared_libs = off". Misalnya, Anda mungkin perlu menjalankan perintah berikut:
Linux:
export CMAKE_ARGS= " -DONNX_USE_PROTOBUF_SHARED_LIBS=ON "Windows:
set CMAKE_ARGS = " -DONNX_USE_PROTOBUF_SHARED_LIBS=ON "On/off tergantung pada jenis perpustakaan protobuf yang Anda miliki. Perpustakaan bersama adalah file yang diakhiri dengan*.dll/*. Jadi/*. Dylib. Perpustakaan statis adalah file yang diakhiri dengan *.a/ *. Lib. Opsi ini tergantung pada bagaimana Anda mendapatkan perpustakaan protobuf Anda dan bagaimana itu dibangun. Dan itu default. Anda tidak perlu menjalankan perintah di atas jika Anda lebih suka menggunakan perpustakaan protobuf statis.
Jika Anda membangun Onnx dari sumber, disarankan agar Anda juga membangun protobuf secara lokal sebagai perpustakaan statis. Versi yang didistribusikan dengan Conda-Forge adalah DLL, tetapi Onnx mengharapkannya menjadi perpustakaan statis. Membangun Protobuf secara lokal juga memungkinkan Anda mengontrol versi protobuf. Versi yang diuji dan direkomendasikan adalah 3.21.12.
Instruksi dalam readme ini menganggap Anda menggunakan Visual Studio. Dianjurkan agar Anda menjalankan semua perintah dari shell yang dimulai dari "X64 Native Tools Command Prompt untuk VS 2019" dan menjaga generator sistem build untuk CMake (misalnya, CMake -g "Visual Studio 16 2019") konsisten saat membangun protobuf serta ONNX.
Anda bisa mendapatkan protobuf dengan menjalankan perintah berikut:
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=ReleaseMaka itu akan dibangun sebagai pustaka statis dan diinstal ke <protob_install_dir>. Harap tambahkan direktori bin (yang berisi protoc.exe) ke jalur Anda.
set CMAKE_PREFIX_PATH = < protobuf_install_dir > ; %CMAKE_PREFIX_PATH%Harap dicatat: Jika protobuf_install_dir Anda berisi spasi, jangan tambahkan tanda kutip di sekitarnya.
Alternatif: Jika Anda tidak ingin mengubah jalur Anda, Anda dapat mengatur onnx_protoc_executable sebagai gantinya.
set CMAKE_ARGS = -DONNX_PROTOC_EXECUTABLE= < full_path_to_protoc.exe >Maka Anda dapat membangun onnx sebagai:
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
Pertama, Anda perlu menginstal protobuf. Versi Protobuf Compiler (Protoc) minimum yang diperlukan oleh ONNX adalah 3.6.1. Harap dicatat bahwa versi protok lama mungkin tidak berfungsi dengan CMAKE_ARGS=-DONNX_USE_LITE_PROTO=ON .
Pengguna Ubuntu 20.04 (dan lebih baru) dapat memilih untuk menginstal Protobuf melalui
apt-get install python3-pip python3-dev libprotobuf-dev protobuf-compiler Dalam hal ini, diperlukan untuk menambahkan -DONNX_USE_PROTOBUF_SHARED_LIBS=ON ke cmake_args dalam langkah build onnx.
Cara yang lebih umum adalah membangun dan menginstalnya dari sumber. Lihat instruksi di bawah ini untuk detail lebih lanjut.
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 installDi sini "-dcmake_position_independent_code = on" sangat penting. Secara default perpustakaan statis dibangun tanpa bendera "-ficpic", mereka bukan posisi kode independen. Tetapi perpustakaan bersama harus menjadi kode independen. Ekstensi Python C/C ++ (seperti ONNX) adalah perpustakaan bersama. Jadi jika perpustakaan statis tidak dibangun dengan "-fpic", itu tidak dapat ditautkan ke perpustakaan bersama seperti itu.
Setelah build berhasil, perbarui jalur untuk menyertakan jalur protobuf.
Maka Anda dapat membangun onnx sebagai:
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 installSetelah build berhasil, perbarui jalur untuk menyertakan jalur protobuf.
Maka Anda dapat membangun onnx sebagai:
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 . -vSetelah instalasi, jalankan
python -c " import onnx "untuk memverifikasi itu berhasil.
Untuk daftar lengkap, lihat cmakelists.txt
USE_MSVC_STATIC_RUNTIME harus 1 atau 0, bukan hidup atau mati. Saat diatur ke 1 tautan ONNX secara statis ke pustaka runtime. Default : USE_MSVC_STATIC_RUNTIME=0
DEBUG harus 0 atau 1. Ketika diatur ke 1 ONNX dibangun dalam mode debug. Atau versi debug dari dependensi, Anda perlu membuka file cmakelists dan menambahkan huruf d di akhir baris nama paket. Misalnya, NAMES protobuf-lite akan menjadi NAMES protobuf-lited . Default : Debug=0
ONNX_USE_PROTOBUF_SHARED_LIBS harus ON atau OFF . Default : ONNX_USE_PROTOBUF_SHARED_LIBS=OFF USE_MSVC_STATIC_RUNTIME=0 ONNX_USE_PROTOBUF_SHARED_LIBS menentukan bagaimana tautan ONNX ke perpustakaan protobuf.
ON - ONNX akan secara dinamis terhubung ke Protobuf Shared Libs, protobuf_use_dlls akan didefinisikan seperti yang dijelaskan di sini.OFF - ONNX akan menautkan secara statis ke protobuf. ONNX_USE_LITE_PROTO harus ON atau OFF . Saat diatur ke ON menggunakan lite protobuf alih -alih protobuf penuh. Default : ONNX_USE_LITE_PROTO=OFF
ONNX_WERROR harus ON atau OFF . Ketika diatur ON peringatan diperlakukan sebagai kesalahan. Default : ONNX_WERROR=OFF di build lokal, ON dalam CI dan rilis pipa.
Catatan: Perintah import onnx tidak berfungsi dari direktori checkout sumber; Dalam hal ini Anda akan melihat ModuleNotFoundError: No module named 'onnx.onnx_cpp2py_export' . Ubah ke direktori lain untuk memperbaiki kesalahan ini.
Jika Anda mengalami masalah apa pun saat membangun Protobuf sebagai perpustakaan statis, harap pastikan bahwa perpustakaan protobuf yang dibagikan, seperti LibProtobuf, tidak diinstal pada perangkat Anda atau di lingkungan Conda. Jika ada perpustakaan bersama ini, hapus baik untuk membangun protobuf dari sumber sebagai pustaka statis, atau lewati protobuf build dari sumber untuk menggunakan versi bersama secara langsung.
Jika Anda mengalami masalah apa pun saat membangun Onnx dari sumber, dan pesan kesalahan Anda berbunyi, Could not find pythonXX.lib , pastikan Anda memiliki versi Python yang konsisten untuk perintah umum, seperti python dan pip . Bersihkan semua file build yang ada dan bangun kembali ONNX lagi.
ONNX menggunakan Pytest sebagai driver uji. Untuk menjalankan tes, pertama -tama Anda harus menginstal pytest :
pip install pytest nbvalSetelah menginstal Pytest, gunakan perintah berikut untuk menjalankan tes.
pytestLihat panduan kontributor untuk instruksi.
Lisensi Apache v2.0
ONNX Kode Etik Open Source