linux 上安装 nGraph-HE 踩坑笔记(wsl2),【因为用的是win1


nGraph-HE为intel研究团队提出的 将神经网络代码与同态加密结合的 开源编译框架

总的安装过程中可能遇到的问题

常常是由于网络不好导致相关包无法下载。【因为用的是 win10+wsl2 所以在Linux上FQ的问题就省略了。】

  • 期间需要编译Tensorflow (利用bazel),经验上使用 有线网+ExpressVPN 是比较好的;否则就是缺什么包,手动下载,再到指定文件夹下面的workspace.bzl或者WORKSPACE改读取路径(路径中有空格需要加引号)。
  • 报错 icu//': java.io.IOException: Error downloading 表示缺一个叫icu的包。手动下载后还需要修改路径上方的SHA校验码。见 bazel build failed · Issue #24135 · tensorflow/tensorflow
  • 整个过程比较吃内存,32G明显比16G快很多ORZ,编译TF那里约1w7个文件吧。
  • bazel 安装时应把readme中提示的--user选项去掉进行全局安装,整个项目安装完成后若有必要可再把全局的卸载重新安装在用户目录~/bin下以避免多版本冲突
    • 原因make install过程需要sudo提权,但是sudo make -j intstall 无法读取安装在~/bin下的bazel

master

master : Ubuntu 18.04 + python 3.6 + cmake 3.22 + virtualenv 20.13.1 + (venv-tf-py3) numpy 1.18.5 : ngraph-tensorflow-bridge 0.22.0rc3

保证网络稳定正常安装就行。

Unit-test和Cryptonets的密文推理能跑通,复杂网络的密文推理没试因为太吃配置。

v0.2-benchmarks-2

v0.2-benchmarks-2 : Ubuntu 16.04 + python 3.5 + cmake 3.12.4 + virtualenv 16.1.0 + (venv-tf-py3) numpy 1.18.5 = ngraph-tensorflow-bridge 0.9.0

v0.2-benchmarks-2 : Ubuntu 18.04 + python 3.6 + cmake 3.21.6 + virtualenv 20.13.1 + (venv-tf-py3) numpy 1.13.3 = ngraph-tensorflow-bridge 0.9.0

说明,虽然官网给的requirements是1604,但是建议在Ubuntu18.04上装,感觉莫名其妙报错会少一点,而且1804感觉好用一点。

  • 在Ubuntu18.04上安装,需要在根目录下的CMakeLists.txt的约61行处修改python版本(Ubuntu1804默认好像是python3.6),不然后面virtualenv按照python3.5建文件夹会报错东西找不到。

    # Build options
    # python version used in virtual environment
    if(NOT DEFINED PYTHON_VENV_VERSION)
        set(PYTHON_VENV_VERSION "python3.5")
    endif()
    
  • numpy版本高于1.19.0会报错: C++ compilation of rule '//tensorflow/python:bfloat16_lib' failed · Issue #40688 · tensorflow/tensorflow

    • 解决:按FAILED: Build did NOT complete successfully · Issue #41086 · tensorflow/tensorflow修改代码,或者手动进入虚拟环境 (venv-tf-py3) 给numpy降版本。
  • Ubuntu16.04 需使用 virtualenv 16.1.0,否则报错NameError: name 'prev' is not defined · Issue #130 · NervanaSystems/he-transformer

  • nGraph-HE论文中提到的所有benchmark 在这个brunch的benchmark中皆有给出实验代码。报错,到第六行被杀掉,感觉应该是笔记本16G内存不够造。没有在台式机上重新安装的原因是,这个版本感觉太旧了。

  • 对每个运算单元的测试(unit-test)没跑通是因为链接的SEAL库有问题导致没办法对明文0进行NTT操作。类似这个报错Getting a crash when running CryptoNets' test.py with NGRAPH_ENCRYPT_MODEL=1 · Issue #129 · NervanaSystems/he-transformer。【说明,我没看懂给出的修改建议】

本文来自博客园,作者:yx21,转载请注明原文链接:https://www.cnblogs.com/quixotiiiiic/p/16066623.html

「你一定要看到花开 你一定等燕子归来」

评论关闭