TensorFlow: сборка из исходного кода для Node JS (Windows 10) - PullRequest
0 голосов
/ 05 августа 2020

Чтобы собрать TensorFlow из исходного кода (для Node JS на Windows 10), я следовал инструкциям, приведенным на официальной странице .

После установки я следовал эти инструкции (GitHub) .

Для компиляции использовались следующие команды:

python ./configure.py
bazel build --config=opt --config=monolithic //tensorflow/tools/lib_package:libtensorflow

После завершения компиляции я получил файл bazel-bin/tensorflow/tools/lib_package/libtensorflow.tar.gz и скопировал его в path-to-my-project/node_modules/@tensorflow/tfjs-node/deps и разархивировать.

Я заметил, что предыдущие файлы, хранящиеся в папке deps, отличаются. Исходное содержимое было:

│   LICENSE
│   THIRD_PARTY_TF_C_LICENSES
│
├───include
│   └───tensorflow
│       └───c
│           │   c_api.h
│           │   tf_attrtype.h
│           │   tf_datatype.h
│           │   tf_status.h
│           │   tf_tensor.h
│           │
│           └───eager
│                   c_api.h
│
└───lib
        tensorflow.dll
        tensorflow.lib

После удаления старого содержимого и распаковки libtensorflow.tar.gz новые файлы:

│   LICENSE
│   THIRD_PARTY_TF_C_LICENSES
│
├───include
│   └───tensorflow
│       ├───c
│       │   │   c_api.h
│       │   │   c_api_experimental.h
│       │   │   tensor_interface.h
│       │   │   tf_attrtype.h
│       │   │   tf_datatype.h
│       │   │   tf_file_statistics.h
│       │   │   tf_status.h
│       │   │   tf_tensor.h
│       │   │   tf_tstring.h
│       │   │
│       │   └───eager
│       │           c_api.h
│       │           c_api_experimental.h
│       │           dlpack.h
│       │
│       └───core
│           └───platform
│                   ctstring.h
│                   ctstring_internal.h
│
└───lib
        tensorflow.dll
        tensorflow_framework.dll

Больше инструкций нет, поэтому я предположил, что Я должен выполнить следующую команду:

npm rebuild @tensorflow/tfjs-node --build-from-source

Но я получил следующую ошибку:

> @tensorflow/tfjs-node@2.0.1 install C:\tensorflow-node-test\node_modules\@tensorflow\tfjs-node
> node scripts/install.js

CPU-windows-2.0.1.zip
* Building TensorFlow Node.js bindings
node-pre-gyp install failed with error: Error: Command failed: node-pre-gyp install --fallback-to-build
node-pre-gyp WARN Using needle for node-pre-gyp https download
gyp ERR! build error
gyp ERR! stack Error: `C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onExit (C:\Users\SERVER\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\lib\build.js:194:23)
gyp ERR! stack     at ChildProcess.emit (events.js:315:20)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
gyp ERR! System Windows_NT 10.0.19041
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\SERVER\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "build" "--fallback-to-build" "--module=C:\\tensorflow-node-test\\node_modules\\@tensorflow\\tfjs-node\\lib\\napi-v6\\tfjs_binding.node" "--module_name=tfjs_binding" "--module_path=C:\\tensorflow-node-test\\node_modules\\@tensorflow\\tfjs-node\\lib\\napi-v6" "--napi_version=6" "--node_abi_napi=napi" "--napi_build_version=6" "--node_napi_label=napi-v6"
gyp ERR! cwd C:\tensorflow-node-test\node_modules\@tensorflow\tfjs-node
gyp ERR! node -v v12.18.2
gyp ERR! node-gyp -v v5.1.0
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute 'C:\Program Files\nodejs\node.exe C:\Users\SERVER\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js build --fallback-to-build --module=C:\tensorflow-node-test\node_modules\@tensorflow\tfjs-node\lib\napi-v6\tfjs_binding.node --module_name=tfjs_binding --module_path=C:\tensorflow-node-test\node_modules\@tensorflow\tfjs-node\lib\napi-v6 --napi_version=6 --node_abi_napi=napi --napi_build_version=6 --node_napi_label=napi-v6' (1)
node-pre-gyp ERR! stack     at ChildProcess.<anonymous> (C:\tensorflow-node-test\node_modules\node-pre-gyp\lib\util\compile.js:83:29)
node-pre-gyp ERR! stack     at ChildProcess.emit (events.js:315:20)
node-pre-gyp ERR! stack     at maybeClose (internal/child_process.js:1021:16)
node-pre-gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5)
node-pre-gyp ERR! System Windows_NT 10.0.19041
node-pre-gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\tensorflow-node-test\\node_modules\\node-pre-gyp\\bin\\node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd C:\tensorflow-node-test\node_modules\@tensorflow\tfjs-node
node-pre-gyp ERR! node -v v12.18.2
node-pre-gyp ERR! node-pre-gyp -v v0.14.0
node-pre-gyp ERR! not ok

@tensorflow/tfjs-node@2.0.1 C:\tensorflow-node-test\node_modules\@tensorflow\tfjs-node

Если я выполню npm rebuild @tensorflow/tfjs-node --build-from-source с исходными файлами папки deps, все будет работать отлично.

Какие шаги после компиляции и копирования libtensorflow.tar.gz в папку deps?

...