* Update ONNX to 1.12 (#11924) Follow-ups that need to happen after this and before the next ORT release: * Support SequenceMap with https://github.com/microsoft/onnxruntime/pull/11731 * Support signal ops with https://github.com/microsoft/onnxruntime/pull/11778 Follow-ups that need to happen after this but don't necessarily need to happen before the release: * Implement LayerNormalization kernel for opset version 17: https://github.com/microsoft/onnxruntime/issues/11916 Fixes #11640 * Dll version fix ovep4.1 (#11953) * Setting default version values for ovep dlls as well * Update backend_manager.cc Co-authored-by: mayavijx <mayax.vijayan@intel.com> Co-authored-by: mohsin <mohsinx.mohammad@intel.com> * Optimize t5 encoder in beam search (#11926) * ooptimize t5 encoder * update * update * update * refactor expand impl * cuda tests passed * update * alignment * more alignments * review comments * Allow saving on CPU usage for infrequent inference requests by reducing thread spinning (#11841) Introduce Start/Stop threadpool spinning switch Add a session config option to force spinning stop at the end of the Run() * Restructure function inliner (#11731) * Add nested function call tests * Add overload for Specialize * Pass symboltable to onnx shape inference * Avoid renaming empty names * Enable sequence_map tests which failed before this change * Deprecate APIs returning raw ptrs and provide replacements (#11922) Provider better documentation * register signal ops for opset 17 (#11778) * Register signal ops for op set 17 Note code is mostly being moved, not added. These ops were previously only registered as Microsoft contrib ops and only built if `BUILD_MS_EXPERIMENTAL_OPS=1`. They've been added to the ai.onnx standard op set in version 17. Main components of this change: * Move the kernels from the conrib_ops directory to the core directory. * Add function bodies for ms experimental ops. This will allow old models that use the contrib ops to continue to function. All the function bodies consist of a single op (the new standard op), so performance overhead should be minimal. Minor clean-up also in this change: * De-duplicate get_scalar_value_from_tensor: put it in a new utils.h. * Fix some bugs that caused compilation errors with the experimental ops. Tested with `build.sh --ms_experimental` * Fix some spelling errors and lint violations. * Replace a couple of switch statements with `MLTypeCallDispatcher`. * Use `InlineVector` instead of `std::vector`. Unblocks https://github.com/microsoft/onnxruntime/issues/11640 * Include opset 15 in Conv+BatchNormalization fusion (#11960) * Fix WinML Tests are still targetting deprecated (deleted) experimental signal op definitions (#12006) * fix winml tests * remove legacy test * switch idft -> dft+inverse attr * upgrade opset 13->17 for signal ops tests * [C# Tests] Add support for double tensor output in TestPreTrainedModels. (#12008) Add support for double tensor output in TestPreTrainedModels. * DML EP ResNet50 opset 15 fails in ONNX checker for FusedBatchNormalization lacking training_mode attribute (#12010) FusedBatchNormalization include training_mode attribute * Generalize native op creation (#11539) * create op from ep * read input count from context * create holder to host nodes * fix typo * cast type before comparison * throw error on API fail * silence warning from minimal build * switch to unique_ptr with deleter to host nodes * fix typo * fix build err for minimal * fix build err for minimal * add UT for conv * enable test on CUDA * add comment * fix typo * use gsl::span and string view for Node constructor * Added two APIs - CopyKernelInfo and ReleaseKernelInfo * pass gsl::span by value * switch to span<NodeArg* const> to allow for reference to const containers * fix typo * fix reduced build err * fix reduced build err * refactoring node construction logic * rename exceptions * add input and output count as arguments for op creation * refactor static member * use ORT_CATCH instead of catch * cancel try catch * add static value name map * format input definition and set err code * fix comments * fix typo * [DML EP] Pad operator: Handle negative pad counts (#11974) * Pad fallback to CPU * Added queryPad in operatorRegistration.cpp * Acknowledged PR comments * Used any_of * used none_of instead of any_of Co-authored-by: Sumit Agarwal <sumitagarwal@microsoft.com> * Add warning about future computation change for ConvTranspose with auto_pad (#11984) * Add warning about future computation change for Convtranspose with auto_pad * improve msg * update TODO to make lint happy * update more contents for warning and add if * valid was not infected * move it into kernel registration * parse auto_pad myself * try to use conv_transpose_attrs_.auto_pad directly * update roialign cuda impl to onnx opset16 (#12036) * roialign opset16 * fix * fix * Fix windows eager build break by pinning to torch version 1.11.0 (#12033) Fix windows and linux eager build to torch 1.11.0. * Skip Constant Folding for ops producing an optional type output (#11839) * Disable sequence-type tests since C# infra doesn't support well (#12037) * Extend lifetime of KernelDef when creating a standalone op (#12057) place tmp kernel def as local variable to cover the lifetime of kernel creation * Add targets files for new .net6 frameworks (#12016) * Add net6 targets. Remove maccatalyst as we don't have a native build targetting that. * Set platform in macos targets * Add targetFramework entries * Move NativeLib.DllName definition and set using preprocessor values for simplicity. Couldn't get it to build with the preprocessor based setup when it was in a separate file. Update the nuspec generation to set platform version for .net6 targets. TODO: Validate versions. I copied them from the managed nuget package the packaging pipeline generated prior to adding targets. Possibly w could/should lower some of the versions. Hopefully the need to specify a version goes away when the release version of VS2022 supports .net6. * Try android 31.1 as https://github.com/actions/virtual-environments/blob/main/images/win/Windows2022-Readme.md suggests that should be available on the CI machines * Fix patch version mismatch Add some extra debug info in case it helps * Debug nuget location in CI * Add workspace entry back in * Add steps * One more attempt with hardcoded nuget.exe path and original android31.0 version * Better fix - found explicit nuget download and updated version there. * flake8 fixes * Fix black complaints. * Exit Microsoft_ML_OnnxRuntime_CheckPrerequisites for net6 iOS. * Removed outdated comment * Fix DML custom operators which set descriptor heap to command list (#12059) * Make C# runtest.sh automatically set latest opset (#12039) * Update C# runtest.sh for opset 17 Should have been part of https://github.com/microsoft/onnxruntime/pull/11924 * get appropriate opset version from onnx doc * use absolute rather than relative path * fix typo in var name * Disable DML command list reuse for Xbox (#12063) disable cl reuse for xbox * Add data type check in ConvAddRelu fusion (#12058) * Add undocumented attribute to disable generation of Java bindings from the Android AAR. (#12075) The generated bindings causes C# build errors that require workaround code. Disabling generation should avoid the need for any workarounds. As the user has the C# ORT package with the C# to C bindings there's no need for binding generation that calls the ORT Java API (which is C# -> Java ->C). * enable the extensions custom build for java and android (#11823) * generate quantization parameter for outputs (#12089) * DML EP Update to DML 1.9 (#12090) * Update to DML 1.9 * Appease obnoxious Python formatting tool * Fix orttraining-linux-ci-pipeline - Symbolic shape infer (#11965) fix symbolic shape error due to upgraded numpy + legacy sympy * check consumers of dq node before swap dq and transpose (#12099) * check consumers of dq node before swap dq and transpose * add unit test Co-authored-by: Gary Miguel <garymiguel@microsoft.com> Co-authored-by: Preetha Veeramalai <preetha.veeramalai@intel.com> Co-authored-by: mayavijx <mayax.vijayan@intel.com> Co-authored-by: mohsin <mohsinx.mohammad@intel.com> Co-authored-by: Ye Wang <52801275+wangyems@users.noreply.github.com> Co-authored-by: Dmitri Smirnov <yuslepukhin@users.noreply.github.com> Co-authored-by: G. Ramalingam <grama@microsoft.com> Co-authored-by: Dwayne Robinson <dwayner@microsoft.com> Co-authored-by: Sheil Kumar <smk2007@gmail.com> Co-authored-by: Edward Chen <18449977+edgchen1@users.noreply.github.com> Co-authored-by: sumitsays <sumitagarwal330@gmail.com> Co-authored-by: Sumit Agarwal <sumitagarwal@microsoft.com> Co-authored-by: Chun-Wei Chen <jacky82226@gmail.com> Co-authored-by: George Wu <jywu@microsoft.com> Co-authored-by: Wil Brady <25513670+WilBrady@users.noreply.github.com> Co-authored-by: Hariharan Seshadri <shariharan91@gmail.com> Co-authored-by: Wei-Sheng Chin <wschin@outlook.com> Co-authored-by: Scott McKay <skottmckay@gmail.com> Co-authored-by: Jeff Bloomfield <38966965+jeffbloo@users.noreply.github.com> Co-authored-by: Justin Stoecker <justoeck@microsoft.com> Co-authored-by: Wenbing Li <10278425+wenbingl@users.noreply.github.com> Co-authored-by: Yufeng Li <liyufeng1987@gmail.com> Co-authored-by: pengwa <pengwa@microsoft.com> |
||
|---|---|---|
| .. | ||
| .vscode | ||
| common | ||
| node | ||
| react_native | ||
| web | ||
| .clang-format | ||
| .eslintrc.js | ||
| .gitignore | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| tsconfig.tools.json | ||
ONNX Runtime JavaScript API
This directory contains multiple NPM projects:
Development
This folder contains a .vscode folder for Visual Studio Code workspace configs. Using VSCode to open this folder
will allow code-formatting and linting features on typescript and C/C++ source code inside this folder. Following files
are used for code-formatting and linting features for developers:
- .vscode/**
- package.json
- packages-lock.json
- .eslintrc.js
- .clang-format
Please follow the steps described below to setup development environment.
Prerequisites
-
Node.js (16.0+): https://nodejs.org/ - (Optional) Use nvm (Windows / Mac/Linux) to install Node.js
-
Python (2.7 or 3.6+): https://www.python.org/downloads/
- python should be added to the PATH environment variable
-
Visual Studio Code: https://code.visualstudio.com/
- required extension: ESLint
- required extension: Clang-Format
- required extension: Debugger for Chrome
-
Chrome or Edge Browser
Setup TypeScript development environment
In <ORT_ROOT>/js, run:
npm ci
This will install Clang-format and ESLint for code-formatting and linting features. This is a one-time setup unless a git clean is performed or folder <ORT_ROOT>/js/node_modules is removed manually.
Using VSCode:
Use VSCode to open folder <ORT_ROOT>/js.
Make sure to open the correct folder to allow VSCode to load workspace configuration. Otherwise typescript and code formatter may not work as expected.
To populate typescript type declarations, in each project folder, run npm ci.
Run code formatter and linter manually
In <ORT_ROOT>/js, use npm run lint to run ESLint , and use npm run format to run clang-format.
onnxruntime-common
language: typescript
dependency:
folder: <ORT_ROOT>/js/common
This project is designed to include all "common" code, which are pure javascript that can run in both Node.js and browsers.
Requirements
Node.js v12+ (recommended v14+)
Build
Use following command in folder <ORT_ROOT>/js/common to install NPM packages, build typescript files and generate bundles:
npm ci
Distribution
It should be able to consumed by both from projects that uses NPM packages (through a Node.js folder structure of node_modules folder that generated by npm install onnxruntime-common) and from a CDN service that serves a .min.js bundle file.
Features
Following features are included in onnxruntime-common:
InferenceSessioninterfacesTensor/OnnxValueinterfaces, implementation and a set of utility functionsBackendinterfaces and a set of functions for backend registration
Generate API reference document
Use following command in folder <ORT_ROOT>/js/common to generate API reference document:
npx typedoc
Document will be generated in folder <ORT_ROOT>/js/common/docs.
onnxruntime-node
language: typescript/C++
dependency: onnxruntime-common, ONNXRuntime.dll
folder: <ORT_ROOT>/js/node
This project is designed to be used as a NPM package to enable Node.js users to consume ONNX Runtime via Node.js binding, in Node.js or any Node.js compatible environment.
Requirements
Node.js v12+ (recommended v14+)
Build
Build ONNX Runtime and Node.js binding
Follow instructions for building ONNX Runtime Node.js binding
Build Node.js binding only
Use following command in folder <ORT_ROOT>/js/node to install NPM packages and build typescript files:
npm ci
This will download the latest pre-built ONNX Runtime binaries for the current platform.
Distribution
It should be able to consumed by from projects that uses NPM packages (through a Node.js folder structure of node_modules folder that generated by npm install onnxruntime-node).
onnxruntime-web
language: typescript
dependency: onnxruntime-common, ONNXRuntime WebAssembly
folder: <ORT_ROOT>/js/web
This project is a library for running ONNX models on browsers. It is the successor of ONNX.js.
Build
-
Install NPM packages
- in
<ORT_ROOT>/js/, runnpm ci. - in
<ORT_ROOT>/js/common/, runnpm ci. - in
<ORT_ROOT>/js/web/, runnpm ci.
- in
-
Prepare ONNX Runtime WebAssembly artifacts.
You can either use the prebuilt artifacts or build it by yourself.
-
Setup by script.
In
<ORT_ROOT>/js/web/, runnpm run pull:wasmto pull WebAssembly artifacts for latest master branch from CI pipeline. -
Download artifacts from pipeline manually.
you can download prebuilt WebAssembly artifacts from Windows WebAssembly CI Pipeline. Select a build, download artifacts "Release_ort-wasm" and "Release_ort-wasm-threaded" and unzip. See instructions below to put files into destination folders.
-
Build WebAssembly artifacts.
-
Build ONNX Runtime WebAssembly
Follow instructions for building ONNX Runtime WebAssembly. (TODO: document is not ready. we are working on it. Please see steps described as below.)in
<ORT_ROOT>/, run one of the following commands to build WebAssembly:# In windows, use 'build' to replace './build.sh' # The following command build debug. ./build.sh --build_wasm # The following command build debug with debug info. ./build.sh --build_wasm --skip_tests --enable_wasm_debug_info # The following command build release. ./build.sh --config Release --build_wasm --skip_tests --disable_wasm_exception_catching --disable_rttiTo build with multi-thread support, append flag
--enable_wasm_threadsto the command. To build with SIMD support, append flag--enable_wasm_simdto the command. Make sure to build both single-thread and multi-thread with and without SIMD before next step. -
Copy following files from build output folder to
<ORT_ROOT>/js/web/dist/:- ort-wasm.wasm
- ort-wasm-threaded.wasm (build with flag '--enable_wasm_threads')
- ort-wasm-simd.wasm (build with flag '--enable_wasm_simd')
- ort-wasm-simd-threaded.wasm (build with flags '--enable_wasm_threads --enable_wasm_simd')
-
Copy following files from build output folder to
<ORT_ROOT>/js/web/lib/wasm/binding/:- ort-wasm.js
- ort-wasm-threaded.js (build with flag '--enable_wasm_threads')
- ort-wasm-threaded.worker.js (build with flag '--enable_wasm_threads')
-
-
-
Use following command in folder
<ORT_ROOT>/js/webto build:npm run build
Test
We use command npm test (test runner) and npm run test:e2e (E2E test) for tests in ONNXRuntime Web.
test runner
In folder <ORT_ROOT>/js/web,
- Run
npm test -- --helpfor a full CLI instruction. - Run
npm test -- <your-args> --debugto run one or more test cases.
There are multiple levels of tests for ONNXRuntime Web:
-
unit test: tests for individual components written in TypeScript. Launch unit test by:
npm test -- unittest -
model test: run a single model. The model folder should contains one .onnx model file and one or more folders for test cases, each folder contains several input**.pb and output**.pb as test data. Launch model test by:
npm test -- model <model_folder> -
op test: test a single operator. An op test is described in a
.jsoncfile which specify the operator type, its attributes and one or more test case(s), each includes a list of expected input tensor(s) and output tensor(s). The.jsoncfile is located at<ORT_ROOT>/js/web/test/data/ops. Launch op test by:npm test -- op <file_name> -
suite test: suite test includes unit test, a list of model tests and op tests. Launch suite test by:
npm test
E2E test
E2E test is for testing end-to-end package consuming. In this test, NPM packages for onnxruntime-common and onnxruntime-web are generated and a clean folder is used for installing packages. Then a simple mocha test is performed to make sure package can be consumed correctly.
To launch E2E test:
npm run test:e2e
Debugging
Debugging TypeScript on Desktop/Chrome
To debug the code from test-runner on Chrome:
- Launch
npm test -- <your_args> --debug. It opens an instance of Chrome browser. - In the open Chrome browser, click the
DEBUGbutton on the top-right of the page. - In VSCode, click [side bar]->Run and Debug->select [Attach to Chrome]->click [Start Debugging] to attach.
- put breakpoints in source code, and Refresh the page to reload.
Debugging TypeScript on iOS/Safari
To debug on an Apple iOS device, please refer to the following steps:
- install RemoteDebug iOS WebKit Adapter by following its instructions.
- launch the adapter in commandline:
remotedebug_ios_webkit_adapter --port=9000. - in VSCode, select debug configuration
Remote Browser via Webkit Adaptor. - follow the steps above to debug.
Debugging TypeScript on Android/Chrome
To debug on an Android device, please refer to the following steps:
- Install Android SDK Platform Tools and make sure
adbis ready to use. - Follow instructions in Remote Debugging on Android to launch
adb. Make sure to use port 9000 so that the existing debug configuration works. - in VSCode, select debug configuration
Remote Browser via Webkit Adaptor. - follow the steps above to debug.
Debugging C/C++ for ONNX Runtime WebAssembly
To debug C/C++ code for ONNX Runtime WebAssembly, you need to build ONNX Runtime with debug info (see Build).
Currently debugging C/C++ code in WebAssembly is not supported in VSCode yet. Please follow this instruction to debug in browser devtool using extension C/C++ DevTools Support (DWARF).
Generating Document
This section describes how to generate the latest document for ONNX Runtime Web.
The document contains information about operators WebGL backend supports. It should align with the operator resolve rules in code and spec definition from ONNX.
In folder <ORT_ROOT>/js/web, use command npm run build:doc to generate the latest documents.
Distribution
It should be able to consumed by both from projects that uses NPM packages (through a Node.js folder structure of node_modules folder that generated by npm install onnxruntime-web) and from a CDN service that serves a ort.min.js file and one or multiple .wasm file(s).
Reduced WebAssembly artifacts
By default, the WebAssembly artifacts from onnxruntime-web package allows use of both standard ONNX models (.onnx) and ORT format models (.ort). There is an option to use a minimal build of ONNX Runtime to reduce the binary size, which only supports ORT format models. See also ORT format model for more information.
Reduced JavaScript bundle file fize
By default, the main bundle file ort.min.js of ONNX Runtime Web contains all features. However, its size is over 500kB and for some scenarios we want a smaller sized bundle file, if we don't use all the features. The following table lists all available bundles with their support status of features.
| bundle file name | file size | file size (gzipped) | WebGL | WASM-core | WASM-proxy | WASM-threads | ES5 backward compatibility |
|---|---|---|---|---|---|---|---|
| ort.es5.min.js | 594.15KB | 134.25KB | O | O | O | O | O |
| ort.min.js | 526.02KB | 125.07KB | O | O | O | O | X |
| ort.webgl.min.js | 385.25KB | 83.83KB | O | X | X | X | X |
| ort.wasm.min.js | 148.56 | 44KB | X | O | O | O | X |
| ort.wasm-core.min.js | 40.56KB | 12.74KB | X | O | X | X | X |
Build ONNX Runtime as a WebAssembly static library
When --build_wasm_static_lib is given instead of --build_wasm, it builds a WebAssembly static library of ONNX Runtime and creates a libonnxruntime_webassembly.a file at a build output directory. Developers who have their own C/C++ project and build it as WebAssembly with ONNX Runtime, this build option would be useful. This static library is not published by a pipeline, so a manual build is required if necessary.
onnxruntime-react-native
language: typescript, java, objective-c
dependency: onnxruntime-common
folder: <ORT_ROOT>/js/react_native
This project provides an ONNX Runtime React Native JavaScript library to run ONNX models on React Native Android and iOS app.
Requirements
- Yarn
- Android SDK and NDK, which can be installed via Android Studio or sdkmanager command line tool
- A Mac computer with the latest macOS
- Xcode
- CMake
- Python 3
Models with ORT format
By default, ONNX Runtime React Native leverages ONNX Runtime Mobile package with ORT format. Follow the instruciton to covert ONNX model to ORT format.
Build
-
Install NPM packages for ONNX Runtime common JavaScript library and required React Native JavaScript libraries
- in
<ORT_ROOT>/js/, runnpm ci. - in
<ORT_ROOT>/js/common/, runnpm ci. - in
<ORT_ROOT>/js/react_native/, runyarn.
- in
-
Build Android ONNX Runtime package
-
To use a published Android ONNX Runtime Mobile package from Maven, go to step 5.
-
Set up an Android build environment referring to instruction
-
In
<ORT_ROOT>, run this python script to build ONNX Runtime Android archive file. In windows, this requires an admin account to build. To build a model specific package with reduced size, refer to instruction.python tools/ci_build/github/android/build_aar_package.py tools/ci_build/github/android/default_mobile_aar_build_settings.json --config MinSizeRel --android_sdk_path <ANDROID_SDK_PATH> --android_ndk_path <ANDROID_NDK_PATH> --build_dir <BUILD_DIRECTORY> --include_ops_by_config tools/ci_build/github/android/mobile_package.required_operators.config -
Copy
<BUILD_DIRECTORY>/aar_out/MinSizeRel/com/microsoft/onnxruntime/onnxruntime-mobile/<version>/onnxruntime-mobile-<version>.aarinto<ORT_ROOT>/js/react_native/android/libsdirectory. -
To verify, open Android Emulator and run this command from
<ORT_ROOT>/js/react_native/android./gradlew connectedDebugAndroidTest
-
-
Build iOS ONNX Runtime package
-
To use a published c/c++ ONNX Runtime Mobile package from CocoaPods, skip all steps below.
-
Set up iOS build environment referring to instruction.
-
Build a fat ONNX Runtime Mobile Framework for iOS and iOS simulator from
<ORT_ROOT>using this command,python tools/ci_build/github/apple/build_ios_framework.py tools/ci_build/github/apple/default_mobile_ios_framework_build_settings.json --config MinSizeRel --include_ops_by_config tools/ci_build/github/android/mobile_package.required_operators.configIt creates
Headers,LICENSE, andonnxruntime.xcframeworkinbuild/iOS_framework/framework_outdirectory. Fromframework_outdirectory, create an archive file namedonnxruntime-mobile-c.zipas follows and copy to<ORT_ROOT>/js/react_native/local_podsdirectory.zip -r onnxruntime-mobile-c.zip . -
To verify, open iOS Simulator and run this command from
<ORT_ROOT>/js/react_native/ios. Change a destination to specify a running iOS Simulator.pod install xcodebuild test -workspace OnnxruntimeModule.xcworkspace -scheme OnnxruntimeModuleTest -destination 'platform=iOS Simulator,OS=latest,name=iPhone 13'
-
-
Test Android and iOS apps. In Windows, open Android Emulator first.
debug.keystoremust be generated ahead for Android example.keytool -genkey -v -keystore <ORT_ROOT>/js/react_native/e2e/android/debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -keysize 2048 -validity 999999 -dname "CN=Android Debug,O=Android,C=US"From `<ORT_ROOT>/js/react_native,
yarn bootstrapWhen testing with a custom built ONNX Runtime Android package, copy
<BUILD_DIRECTORY>/aar_out/MinSizeRel/com/microsoft/onnxruntime/onnxruntime-mobile/<version>/onnxruntime-mobile-<version>.aarinto<ORT_ROOT>/js/react_native/e2e/node_modules/onnxruntime-react-native/android/libsdirectory. Using a custom built ONNX Runtime iOS package, copyonnxruntime-mobile-c.zipinto<ORT_ROOT>/js/react_native/local_podsdirectory if it's not already done.From
<ORT_ROOT>/js/react_native/e2e/android, run e2e Android tests as follows,./gradlew :app:connectedDebugAndroidTestFrom
<ORT_ROOT>/js/react_native/e2e/ios, run e2e iOS tests as follows,xcrun xcodebuild test -workspace OnnxruntimeModuleExample.xcworkspace -scheme OnnxruntimeModuleExample -destination 'platform=iOS Simulator,OS=latest,name=iPhone 13'yarn bootstrapchangespackages.jsonandyarn.lockfiles. Once testing is done, restore changes to avoid unwanted commit. -
Run Android and iOS apps.
yarn e2e android yarn e2e ios
NPM Packaging
-
Update a version using
npm verison <version>from<ORT_ROOT>/js/react_nativefolder. If it's for a dev, usenpm version <version>-dev.<subversion> -
Run
npm packand verify NPM package contents -
Run
npm publish <tgz> --dry-runto see how it's going to be published -
Run
npm publish <tgz>to publish to npmjs. If it's for a dev, add flag--tag dev.
Distribution
It should be able to consumed by React Native projects that uses Yarn packages through yarn add onnxruntime-react-native.