使用GPU支持为TensorFlow创建pip包会导致0字节的simple_console_for_windows.zip

时间:2018-09-18 20:40:18

标签: windows tensorflow bazel

在成功构建具有GPU支持的TensorFlow之后,我正在尝试构建pip包,但出现错误,提示它无法读取simple_console_for_windows.zip文件。

我已经确认该文件位于C:\ tensorflow \ bazel-bin \ tensorflow \ tools \ pip_package文件夹中,但它是0个字节。

这是我的pip构建命令:

bazel-bin\tensorflow\tools\pip_package\build_pip_package C:/tmp/tensorflow_pkg

这是完整的错误:

Unzipping simple_console_for_windows.zip to create runfiles tree...
[./bazel-bin/tensorflow/tools/pip_package/simple_console_for_windows.zip]
  End-of-central-directory signature not found.  Either this file is not
  a zipfile, or it constitutes one disk of a multi-part archive.  In the
  latter case the central directory and zipfile comment will be found on
  the last disk(s) of this archive.
unzip:  cannot find zipfile directory in one of ./bazel-bin/tensorflow/tools/pip_package/simple_console_for_windows.zip or
        ./bazel-bin/tensorflow/tools/pip_package/simple_console_for_windows.zip.zip, and cannot find ./bazel-bin/tensorflow/tools/pip_package/simple_console_for_windows.zip.ZIP, period.

我在Windows 10上使用Bazel 0.16.1,Tensorflow 1.11,CUDA 9.2和CUDNN 7.2.1。

我的构建命令是:

bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package

有人知道我可以尝试或检查些什么来构建pip包吗?

2 个答案:

答案 0 :(得分:1)

这是解决方法的未解决问题。 https://github.com/tensorflow/tensorflow/issues/20332

  1. 编辑以下文件,以删除所有带有“ .zip”的行。

    bazel-out / x64_windows-opt / bin / tensorflow / tools / pip_package / simple_console_for_windows.zip-0.params

  2. 运行以下命令行以生成所需的zip文件,在我的情况下约为107 MB。详细选项将列出所有文件。

    external \ bazel_tools \ tools \ zip \ zipper \ zipper.exe vcC bazel-out / x64_windows-opt / bin / tensorflow / tools / pip_package / simple_console_for_windows.zip @ bazel-out / x64_windows-opt / bin / tensorflow / tools /pip_package/simple_console_for_windows.zip-0.params

  3. 现在,原始的pip build命令将构建一个whl。

答案 1 :(得分:1)

这是一个已知问题,不幸的是,其根本原因是https://github.com/tensorflow/tensorflow/issues/22390 TF是一个很大的代码库,当zip文件的大小超过2 GB时,bazel的压缩工具会中断,因为它们仅使用zip32。

最终的解决方案是修复使用zip64的bazel,并使TensorFlow减轻一些重量,该包装最近已经大量增长。 但是,bazel团队能够为我们提供解决方法。 仅当构建pip软件包时,才应将IEquatable<T>添加到bazel命令中。您仍然将无法构建调试二进制文件,但是至少您将能够构建发行二进制文件。