从源代码构建 Tensorflow 时,编译是从头开始还是在修复错误后恢复?

Posted

技术标签:

【中文标题】从源代码构建 Tensorflow 时,编译是从头开始还是在修复错误后恢复?【英文标题】:Does compilation start from beginning or resume after fixing error while building Tensorflow from source? 【发布时间】:2019-10-31 16:07:00 【问题描述】:

我需要从源代码编译 Tensorflow 以获得计算能力 3.0

我正在编译 Tensorflow,编译 6 小时后出现此错误:

cache/bazel/_bazel_maydin/435ff134a8a529ccec16636685173684/execroot/org_tensorflow/bazel-out/host/bin/tensorflow/create_tensorflow.python_api_2_tf_python_api_gen_v2.runfiles/org_tensorflow/tensorflow/python/keras/preprocessing/__init__.py", line 21, in <module>
   import keras_preprocessing
ModuleNotFoundError: No module named 'keras_preprocessing'
Target //tensorflow/tools/pip_package:build_pip_package failed to build
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 20674.165s, Critical Path: 247.43s
INFO: 12297 processes: 12297 local.
FAILED: Build did NOT complete successfully

在下面的链接中,我找到了这个答案,我认为它会起作用。 Error Compiling Tensorflow From Source - No module named 'keras_applications'

pip install keras_applications==1.0.4 --no-deps
pip install keras_preprocessing==1.0.2 --no-deps
pip install h5py==2.8.0

在开始构建之前我也遇到了类似的错误,它说缺少 numpy,我只是通过 pip 安装它并开始构建没有问题。

但我害怕再次运行构建命令。因为我不想再编译一遍 6 个小时。

如果我重新开始构建,它是从头开始还是从失败的地方继续?

我使用的构建命令是这样的: bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package

我克隆了 tensorflow 存储库,签出到分支 2.0 并开始构建。

有关系统的其他信息:

库达 10.0.130 cuDNN 7.6.2 巴泽尔 0.26.1 Ubuntu 18.04

【问题讨论】:

在尝试修复后害怕再次运行构建不是问题。请使用您的尝试结果编辑您的问题。如果修复确实解决了你的问题,那么这是重复的,否则如果你遇到一个新的错误,那么它可能会变成一个合法的问题。 问题是如果我再次运行构建,它是从头开始还是从失败的地方继续。为了清楚起见,我编辑了问题。 现在您的问题变得非常混乱;您的标题和正文是关于 keras 包的,而您的实际问题是关于恢复 bazel 构建。我建议你确定你想问什么,并保持简短,以便社区尽可能地帮助你。 【参考方案1】:

修复错误后,它会从中断的地方继续编译。

【讨论】:

Bazel 是增量的。它不会重新执行已经完成的工作,除非您运行 bazel cleanbazel clean --expunge,这很少需要。 好像不是这样。巴泽尔很糟糕

以上是关于从源代码构建 Tensorflow 时,编译是从头开始还是在修复错误后恢复?的主要内容,如果未能解决你的问题,请参考以下文章

用Tensorflow和FastAPI构建图像分类API

TensorFlow中的cudnn编译配置

在Ubuntu中从源码编译TensorFlow

从源代码构建TensorFlow流程记录

用于在头文件更改时构建简单 c 项目重新编译的示例 makefile

Android Studio外部本机构建预编译头