Базельская кросс-компиляция тензорного потока для ARM не удалась - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь собрать тензор потока для работы на Zynq, в частности, на Z7020. У меня есть petalinux, работающий на плате, и python 3.4.9. При попытке построить тензор потока следуйте инструкциям, найденным здесь: [https://www.tensorflow.org/install/install_raspbian#cross-compiling_from_sources] Обратите внимание, что и petalinux, и raspbian являются производными от Debian, а Z7020 имеет те же ядра CortexA9, что и платы серии raspberry-pi 0 и 1.

Я пытаюсь собрать на хосте Ubuntu 16.04. Команда, которую я использую для сборки:

sudo CI_DOCKER_EXTRA_PARAMS="-e CI_BUILD_PYTHON=python3 -e CROSSTOOL_PYTHON_INCLUDE=/home/rklein/Python-3.4.9/Include" tensorflow/tools/ci_build/ci_build.sh PI-PYTHON3 tensorflow/tools/ci_build/pi/build_raspberry_pi.sh PI_ONE

Базель взбалтывает около 2 часов и возвращается со следующим сообщением об ошибке:

    /home/rklein/tensorflow/bazel-ci_build-cache/.cache/bazel/_bazel_root/eab0--lots of hex digits--85e8/external/arm_compiler/bin/arm-linux-gnueablhf-gcc --lots of options

    In file included from /usr/include/python2.7/Python.h:8:0, from ./tensorflow/python/lib/core/bfloat16.h:19, 
                     from tensorflow/python/lib/core/bfloat16.h:18:
                     from /usr/include/python2.7/pyconfig.h:13:54: 
    fatal error: arm-linux-gnueabihf/python2.7/pyconfig.h: No such file or directory
    #include <arm-linux-gnueabihf/python2.7/pyconfig.h>
                                                       ^
    compilation terminated.

Какие настройки необходимы, чтобы Bazel сказал использовать python3? Обратите внимание, что на хост-компьютере нет каталога /usr/include/python2.7, поэтому я подозреваю, что в Базеле за кулисами происходит какое-то вуду. Команда

find ~ -name python2.7

выходит пустым.

Я пытался прочитать как можно больше о Базеле, но документация кажется довольно скудной - любые хорошие ссылки будут приветствоваться.

1 Ответ

0 голосов
/ 04 февраля 2019

Я не могу помочь вам с вашим сообщением об ошибке (или Bazel в целом). Однако я установил TensorFlow на Xilinx Zynq Ultrascale + с ядром Petalinux и корневой файловой системой Ubuntu (arm64). Это не тот же самый чип (но процесс установки должен быть похожим). Я не собирал TensorFlow самостоятельно, вместо этого я использовал пакеты, предоставленные проектом tenorflow-on-arm . Возможно, мой опыт будет полезен другим людям для запуска TensorFlow:

  1. Вам нужна рабочая ОС (для этого у Xilinx есть документация). В зависимости от вашего чипа вам понадобятся либо 32 (armhf), либо 64 bit (arm64) rootfs. Я использовал Ubuntu rootfs, поэтому я мог использовать apt-install.

  2. Вам необходимо установить некоторые зависимости. Я следовал инструкциям из проекта tenorflow-on-arm .
    apt-get install openjdk-8-jdk automake autoconf curl zip unzip libtool swig libpng12-dev zlib1g-dev pkg-config git g++ wget xz-utils

  3. Вам также нужен Python (обязательно установите Python v3.5, а не Python v3.6 и т. Д.).
    apt-get install python3-numpy python3-dev python3-pip python3-mock

  4. Мне также нужно было установить два не перечисленных пакета.
    apt-get install cython3 libhdf5-dev

  5. Установите некоторые пакеты pip3 (вы можете установить их в виртуальной среде, а также обновить pip3).
    pip3 install -U --user keras_applications==1.0.5 --no-deps
    pip3 install -U --user keras_preprocessing==1.0.3 --no-deps
    pip3 install -U --user numpy grpcio h5py

  6. Теперь вы должны загрузить пакет пипсов TensorFlow. Различные пакеты перечислены в Releases . Я выбрал TensorFlow v.1.12 для Python v3.5 и arm64 / aarch64.
    wget https://github.com/lhelontra/tensorflow-on-arm/releases/download/v1.12.0/tensorflow-1.12.0-cp35-none-linux_aarch64.whl

  7. Теперь вы можете установить пакет с pip3.
    pip3 install -U --user tensorflow-1.12.0*

Надеюсь, у вас это сработало!

...