CMAKEよりも高速にビルドできると言われるninjaがあります。
機械学習などのライブラリを使うときにもninjaを求められる場合があります
Ubuntuでインストールしてみましたので紹介します。
Ubuntuでninja-buildをインストールしてみた
Ubuntuでninjaをインストールしました。
下記手順で対応可能でした。(現時点での最新Ver1.11.1をUbuntu18.04にインストール)
1 2 3 4 |
wget https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-linux.zip sudo unzip ninja-linux.zip -d /usr/local/bin/ sudo update-alternatives --install /usr/bin/ninja ninja /usr/local/bin/ninja 1 --force /usr/bin/ninja --version |
GitHub上にあるninjaのソースコードとしては下記です。
今回インストールしたように、すぐ使えるようにバイナリをZIP形式でダウンロードできます。
https://github.com/ninja-build/ninja/releases
手順を参考にさせていただいた記事は下記となります。
下記はUbuntu14.04にninjaの1.82Verをインストールしていました。
https://www.claudiokuenzler.com/blog/756/install-newer-ninja-build-tools-ubuntu-14.04-trusty
RuntimeError: Ninja is required to load C++ extensions
今回ninjaを使用した理由としては、FPGAの開発環境(Vitis-AI)で必要になったためです。
「pytorch_nndct」というpytorchでの量子化で使うモジュールです。
下記記事で紹介しています。(リンク先はこちら)
ninjaインストール前はインポートする際に下記エラーになりました。
RuntimeError: Ninja is required to load C++ extensions
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
(vitis-ai-pytorch) Vitis-AI /workspace/src/Vitis-AI-Quantizer/vai_q_pytorch/pytorch_binding > python -c "import pytorch_nndct" Traceback (most recent call last): File "<string>", line 1, in <module> File "/workspace/src/Vitis-AI-Quantizer/vai_q_pytorch/pytorch_binding/pytorch_nndct/__init__.py", line 14, in <module> from .apis import * File "/workspace/src/Vitis-AI-Quantizer/vai_q_pytorch/pytorch_binding/pytorch_nndct/apis.py", line 25, in <module> from .qproc import TorchQuantProcessor File "/workspace/src/Vitis-AI-Quantizer/vai_q_pytorch/pytorch_binding/pytorch_nndct/qproc/__init__.py", line 1, in <module> from .base import TorchQuantProcessor, dump_xmodel File "/workspace/src/Vitis-AI-Quantizer/vai_q_pytorch/pytorch_binding/pytorch_nndct/qproc/base.py", line 30, in <module> from pytorch_nndct.quantization import TORCHQuantizer, FakeQuantizer File "/workspace/src/Vitis-AI-Quantizer/vai_q_pytorch/pytorch_binding/pytorch_nndct/quantization/__init__.py", line 2, in <module> from .torch_qalgo import * File "/workspace/src/Vitis-AI-Quantizer/vai_q_pytorch/pytorch_binding/pytorch_nndct/quantization/torch_qalgo.py", line 28, in <module> from pytorch_nndct.nn import fake_quantize_per_tensor, fake_quantize_per_channel File "/workspace/src/Vitis-AI-Quantizer/vai_q_pytorch/pytorch_binding/pytorch_nndct/nn/__init__.py", line 1, in <module> from pytorch_nndct.nn.modules import functional File "/workspace/src/Vitis-AI-Quantizer/vai_q_pytorch/pytorch_binding/pytorch_nndct/nn/modules/__init__.py", line 16, in <module> from .sigmoid import * File "/workspace/src/Vitis-AI-Quantizer/vai_q_pytorch/pytorch_binding/pytorch_nndct/nn/modules/sigmoid.py", line 26, in <module> from .fix_ops import NndctSigmoidTableLookup, NndctSigmoidSimulation File "/workspace/src/Vitis-AI-Quantizer/vai_q_pytorch/pytorch_binding/pytorch_nndct/nn/modules/fix_ops.py", line 24, in <module> from ..load_kernels import * File "/workspace/src/Vitis-AI-Quantizer/vai_q_pytorch/pytorch_binding/pytorch_nndct/nn/load_kernels.py", line 104, in <module> is_python_module=is_python_module) File "/home/vitis-ai-user/.local/lib/python3.7/site-packages/torch/utils/cpp_extension.py", line 997, in load keep_intermediates=keep_intermediates) File "/home/vitis-ai-user/.local/lib/python3.7/site-packages/torch/utils/cpp_extension.py", line 1202, in _jit_compile with_cuda=with_cuda) File "/home/vitis-ai-user/.local/lib/python3.7/site-packages/torch/utils/cpp_extension.py", line 1268, in _write_ninja_file_and_build_library verify_ninja_availability() File "/home/vitis-ai-user/.local/lib/python3.7/site-packages/torch/utils/cpp_extension.py", line 1323, in verify_ninja_availability raise RuntimeError("Ninja is required to load C++ extensions") RuntimeError: Ninja is required to load C++ extensions |
ググって同様のissueを見つけると、素直にninjaをインストールすればOKということでした。
https://github.com/Xilinx/Vitis-AI/issues/128
一番最初で紹介した手順でインストール出来ました。
(下記はPCの環境にインストールしていますが、docker環境でもインストール出来ています)
ninjaをインストールすることでエラー解消できました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
iotengineer@iotengineer-Inspiron-3650:~/Vitis-AI$ wget https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-linux.zip --2022-10-23 08:14:44-- https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-linux.zip Resolving github.com (github.com)... 20.27.177.113 Connecting to github.com (github.com)|20.27.177.113|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/1335132/005a4a3d-e7df-4538-b14e-b755068548c5?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20221022%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221022T231444Z&X-Amz-Expires=300&X-Amz-Signature=61a1ab3f1cc7d6ab70dd14985e45a235724da63e45eaf54087ddf047e546411b&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=1335132&response-content-disposition=attachment%3B%20filename%3Dninja-linux.zip&response-content-type=application%2Foctet-stream [following] --2022-10-23 08:14:44-- https://objects.githubusercontent.com/github-production-release-asset-2e65be/1335132/005a4a3d-e7df-4538-b14e-b755068548c5?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20221022%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221022T231444Z&X-Amz-Expires=300&X-Amz-Signature=61a1ab3f1cc7d6ab70dd14985e45a235724da63e45eaf54087ddf047e546411b&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=1335132&response-content-disposition=attachment%3B%20filename%3Dninja-linux.zip&response-content-type=application%2Foctet-stream Resolving objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.110.133, 185.199.108.133, 185.199.109.133, ... Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.110.133|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 119463 (117K) [application/octet-stream] Saving to: ‘ninja-linux.zip’ ninja-linux.zip 100%[================================================================================================================>] 116.66K --.-KB/s in 0.02s 2022-10-23 08:14:45 (6.03 MB/s) - ‘ninja-linux.zip’ saved [119463/119463] iotengineer@iotengineer-Inspiron-3650:~/Vitis-AI$ sudo unzip ninja-linux.zip -d /usr/local/bin/ [sudo] password for iotengineer: Archive: ninja-linux.zip inflating: /usr/local/bin/ninja iotengineer@iotengineer-Inspiron-3650:~/Vitis-AI$ sudo update-alternatives --install /usr/bin/ninja ninja /usr/local/bin/ninja 1 --force update-alternatives: using /usr/local/bin/ninja to provide /usr/bin/ninja (ninja) in auto mode iotengineer@iotengineer-Inspiron-3650:~/Vitis-AI$ /usr/bin/ninja --version 1.11.1 |
まとめ
Ubuntuでninjaをインストール出来ました。
色々な箇所で使われているビルド環境ですので、必要な際はインストールしてみて下さい。
今回の記事含めて、第6回AIエッジコンテストの一環でした。
下記にてコンテストでテスト・実施したことのまとめを紹介しています。
コメント