
يعد Open Neural Network Exchange (ONNX) نظامًا بيئيًا مفتوحًا يمكّن مطوري الذكاء الاصطناعي من اختيار الأدوات المناسبة مع تطور مشروعهم. يوفر ONNX تنسيقًا مفتوح المصدر لنماذج الذكاء الاصطناعى ، كل من التعلم العميق و ML التقليدي. إنه يحدد نموذج الرسم البياني للحساب القابل للتوسعة ، وكذلك تعريفات المشغلات المدمجة وأنواع البيانات القياسية. نحن نركز حاليًا على القدرات اللازمة للاستدلال (التسجيل).
يتم دعم ONNX على نطاق واسع ويمكن العثور عليه في العديد من الأطر والأدوات والأجهزة. يساعد تمكين قابلية التشغيل البيني بين الأطر المختلفة وتبسيط المسار من البحث إلى الإنتاج على زيادة سرعة الابتكار في مجتمع الذكاء الاصطناعي. ندعو المجتمع للانضمام إلينا وتطور ONNX.
ONNX هو مشروع مجتمعي ويتم وصف نموذج الحوكمة المفتوحة هنا. نشجعك على الانضمام إلى الجهد والمساهمة في التعليقات والأفكار والرمز. يمكنك المشاركة في مجموعات المصالح الخاصة ومجموعات العمل لتشكيل مستقبل ONNX.
تحقق من دليل المساهمة لدينا للبدء.
إذا كنت تعتقد أن بعض المشغل يجب إضافة إلى مواصفات ONNX ، فيرجى قراءة هذا المستند.
يمكن العثور على جداول الاجتماعات العادية للجنة التوجيهية ومجموعات العمل و SIGs هنا
يتم عقد لقاءات المجتمع مرة واحدة على الأقل في السنة. المحتوى من اجتماعات المجتمع السابقة في:
نحن نشجعك على فتح المشكلات ، أو استخدام Slack (إذا لم تكن قد انضمت بعد ، فيرجى استخدام هذا الرابط للانضمام إلى المجموعة) لمزيد من المناقشة في الوقت الفعلي.
ابق على اطلاع دائم بأحدث أخبار Onnx. [Facebook] [Twitter]
تتم عملية خريطة الطريق كل عام. يمكن العثور على مزيد من التفاصيل هنا
يتم نشر حزم ONNX التي تم إصدارها في PYPI.
pip install onnx # or pip install onnx[reference] for optional reference implementation dependenciesيتم نشر حزم ONNX الأسبوعية في 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 onnxيتوفر بناء ثنائي من Onnx من كوندا ، في كوندا فورج:
conda install -c conda-forge onnx قبل البناء من المصدر ، قم بإلغاء تثبيت أي إصدارات موجودة من ONNX pip uninstall onnx .
يلزم إصدار C ++ 17 أو إصدار برنامج التحويل البرمجي C ++ الأعلى لبناء ONNX من المصدر. ومع ذلك ، يمكن للمستخدمين تحديد إصدار CMAKE_CXX_STANDARD الخاص بهم لبناء ONNX.
إذا لم يكن لديك Protobuf مثبت ، فسيقوم OnNx بتنزيل وإنشاء Protobuf داخليًا لبناء OnNx.
أو يمكنك تثبيت مكتبات وأدوات Protobuf C/C ++ يدويًا مع إصدار محدد قبل المضي قدمًا. ثم بناءً على كيفية تثبيت protobuf ، تحتاج إلى تعيين بيئة متغير Cmake_args على "-donnx_use_protobuf_shared_libs = On" أو "-donnx_use_protobuf_shared_libs = Off". على سبيل المثال ، قد تحتاج إلى تشغيل الأمر التالي:
لينكس:
export CMAKE_ARGS= " -DONNX_USE_PROTOBUF_SHARED_LIBS=ON "Windows:
set CMAKE_ARGS = " -DONNX_USE_PROTOBUF_SHARED_LIBS=ON "يعتمد ON/OFF على نوع مكتبة Protobuf لديك. المكتبات المشتركة هي ملفات تنتهي بـ*.dll/*. SO/*. DILIB. المكتبات الثابتة هي ملفات تنتهي بـ *.a/ *. lib. يعتمد هذا الخيار على كيفية الحصول على مكتبة Protobuf وكيف تم بناؤها. وهو افتراضي. لا تحتاج إلى تشغيل الأوامر أعلاه إذا كنت تفضل استخدام مكتبة protobuf ثابتة.
إذا كنت تقوم ببناء ONNX من المصدر ، فمن المستحسن أيضًا إنشاء Protobuf محليًا كمكتبة ثابتة. الإصدار الموزع مع كوندا فورج هو DLL ، لكن Onnx يتوقع أن تكون مكتبة ثابتة. يتيح لك بناء Protobuf محليًا التحكم في إصدار Protobuf. الإصدار الذي تم اختباره وموصى به هو 3.21.12.
تفترض الإرشادات الواردة في هذا ReadMe أنك تستخدم Visual Studio. يوصى بتشغيل جميع الأوامر من قذيفة بدأت من "موجه أوامر الأدوات الأصليين X64 لـ VS 2019" والحفاظ على مولد نظام الإنشاء لـ CMAKE (على سبيل المثال ، CMAKE -G "Visual Studio 16 2019") ثابتًا أثناء بناء protobuf وكذلك 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_EXCUTABLE بدلاً من ذلك.
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. إصدار برنامج التحويل البروتوبوف الدنيا (protoc) المطلوب من قبل ONNX هو 3.6.1. يرجى ملاحظة أن إصدارات protoc القديمة قد لا تعمل مع CMAKE_ARGS=-DONNX_USE_LITE_PROTO=ON .
قد يختار المستخدمون Ubuntu 20.04 (وأحدث) تثبيت protobuf عبر
apt-get install python3-pip python3-dev libprotobuf-dev protobuf-compiler في هذه الحالة ، مطلوب إضافة -DONNX_USE_PROTOBUF_SHARED_LIBS=ON إلى cmake_args في خطوة بناء OnNx.
طريقة أكثر عمومية هي بناء وتثبيته من المصدر. انظر التعليمات أدناه لمزيد من التفاصيل.
ديبيان/أوبونتو:
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" ، فهي ليست رمزًا مستقلًا. لكن المكتبات المشتركة يجب أن تكون رمزًا مستقلًا. بايثون 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 ، تم تصميمه في وضع التصحيح. أو تصحيح إصدارات التبعيات ، تحتاج إلى فتح ملف cmakelists وإلحاق حرف d في نهاية خطوط اسم الحزمة. على سبيل المثال ، سيصبح NAMES protobuf-lite NAMES protobuf-lited . الافتراضي : Debug=0
يجب أن يكون ONNX_USE_PROTOBUF_SHARED_LIBS ON أو OFF . الافتراضي : ONNX_USE_PROTOBUF_SHARED_LIBS=OFF USE_MSVC_STATIC_RUNTIME=0 ONNX_USE_PROTOBUF_SHARED_LIBS يحدد كيفية ارتباطات ONNX إلى مكتبات protobuf.
ON - سوف يرتبط ONNX ديناميكيًا بـ Protobuf المشترك ، سيتم تعريف protobuf_use_dlls كما هو موضح هنا.OFF - سوف يرتبط ONNX بشكل ثابت مع protobuf. يجب أن يكون ONNX_USE_LITE_PROTO ON أو OFF . عند ضبطه على ON ، يستخدم Lite Protobuf بدلاً من protobuf الكامل. الافتراضي : ONNX_USE_LITE_PROTO=OFF
يجب أن يكون ONNX_WERROR ON أو OFF . عندما يتم ON على التحذيرات على أنه أخطاء. الافتراضي : ONNX_WERROR=OFF في التصميمات المحلية ، ON CI وإطلاق خطوط الأنابيب.
ملاحظة: لا يعمل أمر import onnx من دليل الخروج المصدر ؛ في هذه الحالة ، سترى ModuleNotFoundError: No module named 'onnx.onnx_cpp2py_export' . تغيير إلى دليل آخر لإصلاح هذا الخطأ.
إذا واجهت أي مشكلات أثناء إنشاء Protobuf كمكتبة ثابتة ، فيرجى التأكد من عدم تثبيت مكتبات Protobuf المشتركة ، مثل LibProtoBuf ، على جهازك أو في بيئة Conda. في حالة وجود هذه المكتبات المشتركة ، إما إزالتها لإنشاء protobuf من المصدر كمكتبة ثابتة ، أو تخطي بنية protobuf من المصدر لاستخدام الإصدار المشترك مباشرة.
إذا واجهت أي مشكلات أثناء إنشاء ONNX من المصدر ، وقراءة رسالة الخطأ الخاصة بك ، Could not find pythonXX.lib ، تأكد من أن لديك إصدارات ثعبان متسقة للأوامر المشتركة ، مثل python و pip . قم بتنظيف جميع ملفات الإنشاء الموجودة وإعادة بناء ONNX مرة أخرى.
يستخدم Onnx Pytest كبرنامج اختبار. من أجل إجراء الاختبارات ، ستحتاج أولاً إلى تثبيت pytest :
pip install pytest nbvalبعد تثبيت Pytest ، استخدم الأمر التالي لتشغيل الاختبارات.
pytestتحقق من دليل المساهم للحصول على التعليمات.
ترخيص Apache v2.0
ONNX Open Source Code of Doast