forked from open-mmlab/mmrazor
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Documentation] add ncnn backend docs (open-mmlab#122)
* add ncnn backend docs * remove fix version * reply for code review
- Loading branch information
1 parent
997f8dd
commit 46e0a3a
Showing
1 changed file
with
62 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,65 @@ | ||
## ncnn Support | ||
|
||
### Installation | ||
|
||
#### Install ncnn | ||
|
||
- Download VulkanTools for the compilation of ncnn. | ||
```bash | ||
wget https://sdk.lunarg.com/sdk/download/1.2.176.1/linux/vulkansdk-linux-x86_64-1.2.176.1.tar.gz?Human=true -O vulkansdk-linux-x86_64-1.2.176.1.tar.gz | ||
tar -xf vulkansdk-linux-x86_64-1.2.176.1.tar.gz | ||
export VULKAN_SDK=$(pwd)/1.2.176.1/x86_64 | ||
- Check your gcc version. | ||
You should ensure your gcc satisfies `gcc >= 6`. | ||
- Prepare ncnn Framework | ||
|
||
- Download ncnn source code | ||
```bash | ||
git clone git@github.com:Tencent/ncnn.git | ||
``` | ||
- <font color=red>Make install</font> ncnn library | ||
```bash | ||
cd ncnn | ||
mkdir build | ||
cmake -DNCNN_VULKAN=ON -DNCNN_SYSTEM_GLSLANG=ON -DNCNN_BUILD_EXAMPLES=ON -DNCNN_PYTHON=ON -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=ON -DNCNN_BUILD_TESTS=ON .. | ||
make install | ||
``` | ||
- Install pyncnn module | ||
```bash | ||
cd ncnn/python | ||
pip install . | ||
``` | ||
|
||
#### Build custom ops | ||
|
||
Some custom ops are created to support models in OpenMMLab, the custom ops can be built as follows: | ||
|
||
```bash | ||
cd ${MMDEPLOY_DIR} | ||
mkdir build | ||
cd build | ||
cmake -DBUILD_NCNN_OPS=ON .. | ||
make -j$(nproc) | ||
``` | ||
|
||
If you haven't installed NCNN in default path, please add `-DNCNN_DIR` flag in cmake. | ||
```bash | ||
cmake -DBUILD_NCNN_OPS=ON -DNCNN_DIR=${NCNN_DIR} .. | ||
make -j$(nproc) | ||
``` | ||
### Convert model | ||
- This follows the tutorial on [How to convert model](tutorials/how_to_convert_model.md). | ||
- The converted model has two files: `.param` and `.bin`, as model structure file and weight file respectively. | ||
### FAQs | ||
1. When running ncnn models for inference with custom ops, it fails and shows the error message like: | ||
``` | ||
TypeError: register mm custom layers(): incompatible function arguments. The following argument types are supported: | ||
1.(ar0: ncnn:Net) -> int | ||
Invoked with: <ncnn.ncnn.Net object at 0x7f7fc4038bb0> | ||
``` | ||
This is because of the failure to bind ncnn C++ library to pyncnn. You should build pyncnn from C++ ncnn source code, but not by `pip install` |