microsoft/onnxruntime-extensions

Public

mirrored from https://github.com/microsoft/onnxruntime-extensionsAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
clipex

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

docs/development.md

73lines · modeblame

0647ce6dWenbing Li3 years ago1# Build and Development
2
3This project supports Python and can be built from source easily, or a simple cmake build without Python dependency.
fb2a8c28Wenbing Li2 years ago4
0647ce6dWenbing Li3 years ago5## Python package
fb2a8c28Wenbing Li2 years ago6
0647ce6dWenbing Li3 years ago7The package contains all custom operators and some Python scripts to manipulate the ONNX models.
fb2a8c28Wenbing Li2 years ago8
972cb17aWenbing Li2 years ago9- Install Visual Studio with C++ development tools on Windows, or gcc(>8.0) for Linux or xcode for macOS, and cmake on the unix-like platform.
10- If running on Windows, ensure that long file names are enabled, both for the [operating system](https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=cmd) and for git: `git config --system core.longpaths true`
11- Make sure the Python development header/library files be installed, (like `apt-get install python3-dev` for Ubuntu Linux)
12- `pip install .` to build and install the package.<br/> OR `pip install -e .` to install the package in the development mode, which is more friendly for the developer since the Python code change will take effect without having to copy the files to a different location in the disk.(**hints**: debug=1 in setup.cfg wil make C++ code be debuggable in a Python process.)
13- Add the following argument `--config-settings "ortx-user-option=use-cuda"` in the pip command line to enable **CUDA** kernels for the package.
14- The flags that can be used in --config-settings are:
fb2a8c28Wenbing Li2 years ago15- use-cuda: enable CUDA kernel build in Python package.
16- no-azure: disable AzureOp kernel build in Python package.
17- no-opencv: disable operators based on OpenCV in build.
5d558bd3Wenbing Li2 years ago18- cc-debug: generate debug info for extensions binaries and disable C/C++ compiler optimization.
2d02a687Wenbing Li1 years ago19- pp-api: enable pre-processing C ABI Python wrapper, `from onnxruntime_extensions.pp_api import *`
5d558bd3Wenbing Li2 years ago20- cuda-archs: specify the CUDA architectures(like 70, 85, etc.), and the multiple values can be combined with semicolon. The default value is nvidia-smi util output of GPU-0
3649db06cao lei2 years ago21- ort\_pkg\_dir: specify ONNXRuntime package directory the extension project is depending on. This is helpful if you want to use some ONNXRuntime latest function which has not been involved in the official build
fb2a8c28Wenbing Li2 years ago22
5d558bd3Wenbing Li2 years ago23For example:`pip install . --config-settings "ortx-user-option=use-cuda,cc-debug" `, This command builds CUDA kernels into the package and installs it, accompanied by the generation of debug information.
0647ce6dWenbing Li3 years ago24
25Test:
fb2a8c28Wenbing Li2 years ago26
0647ce6dWenbing Li3 years ago27- 'pip install -r requirements-dev.txt' to install pip packages for development.
28- run `pytest test` in the project root directory.
29
30For a complete list of verified build configurations see [here](<./ci_matrix.md>)
31
32## Java package
fb2a8c28Wenbing Li2 years ago33
0647ce6dWenbing Li3 years ago34`bash ./build.sh -DOCOS_BUILD_JAVA=ON` to build jar package in out/<OS>/Release folder
35
36## Android package
fb2a8c28Wenbing Li2 years ago37
0647ce6dWenbing Li3 years ago38- pre-requisites: [Android Studio](https://developer.android.com/studio)
39
63fe165eEdward Chen3 years ago40Use `./tools/android/build_aar.py` to build an Android AAR package.
0647ce6dWenbing Li3 years ago41
42## iOS package
fb2a8c28Wenbing Li2 years ago43
63fe165eEdward Chen3 years ago44Use `./tools/ios/build_xcframework.py` to build an iOS xcframework package.
0647ce6dWenbing Li3 years ago45
5fd6bcf4Sayan Shaw2 years ago46## NuGet package
47
972cb17aWenbing Li2 years ago48In order to build a local NuGet package for testing, run `nuget.exe pack ./nuget/WinOnlyNuget.nuspec` to build a NuGet package for Windows.
fb2a8c28Wenbing Li2 years ago49
972cb17aWenbing Li2 years ago50Note: you might need to update the src paths in the ./nuget/WinOnlyNuget.nuspec file if the appropriate ortextensions.dll files do not exist/are not in the given location.
5fd6bcf4Sayan Shaw2 years ago51
0647ce6dWenbing Li3 years ago52## Web-Assembly
fb2a8c28Wenbing Li2 years ago53
972cb17aWenbing Li2 years ago54ONNXRuntime-Extensions will be built as a static library and linked with ONNXRuntime due to the lack of a good dynamic linking mechanism in WASM. Here are two additional arguments [–-use_extensions and --extensions_overridden_path](https://github.com/microsoft/onnxruntime/blob/860ba8820b72d13a61f0d08b915cd433b738ffdc/tools/ci_build/build.py#L416) on building onnxruntime to include ONNXRuntime-Extensions footprint in the ONNXRuntime package.
0647ce6dWenbing Li3 years ago55
a6012b38Wenbing Li3 years ago56## The C++ shared library
b5dce955Wenbing Li3 years ago57
fb2a8c28Wenbing Li2 years ago58For any alternative scenarios, execute the following commands:
59
60- On Windows: Run `build.bat`.
61- On Unix-based systems: Execute `bash ./build.sh`.
62
972cb17aWenbing Li2 years ago63The generated DLL or library is typically located in the `out/<OS>/<FLAVOR>` directory. To validate the build, utilize the unit tests available in the `test/test_static_test` and `test/shared_test` directories.
a6012b38Wenbing Li3 years ago64
5d558bd3Wenbing Li2 years ago65**CUDA Build**
66The cuda build can be enabled with -DOCOS_USE_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=<arch>
67
a6012b38Wenbing Li3 years ago68**VC Runtime static linkage**
972cb17aWenbing Li2 years ago69If you want to build the binary with VC Runtime static linkage, please add a parameter _-DCMAKE_MSVC_RUNTIME_LIBRARY="MultiThreaded$<$<CONFIG:Debug>:Debug>"_ when running build.bat
a6012b38Wenbing Li3 years ago70
b5dce955Wenbing Li3 years ago71## Copyright guidance
fb2a8c28Wenbing Li2 years ago72
972cb17aWenbing Li2 years ago73Check this link [here](https://docs.opensource.microsoft.com/releasing/general-guidance/copyright-headers/) for source file copyright header.