参考链接:
- <https://github.com/tensorflow/tensorflow/issues/7660>
- <https://github.com/tensorflow/tensorflow/issues/349>
我在 Amazon AWS Ubuntu 服务器上从源码编译 TensorFlow 时,一直遇到奇怪的构建错误。查了很多资料之后,仍然没有找到明确答案。
我安装了 swig,TensorFlow 在构建过程中可能会用到它。我不确定这是不是决定性因素,但值得检查一下:
sudo apt install swig
更可能的原因只是编译过程中内存耗尽。一个解决办法是减少 Bazel 并行构建任务的数量。传入 --local_resources 2048,0.5,1.0 会让 Bazel 限制本地资源使用,而 --jobs 1 会让构建一次只运行一个任务:
bazel build -c opt --jobs 1 --local_resources 2048,0.5,1.0 --verbose_failures --config=cuda //tensorflow/tools/pip_package:build_pip_package
我还添加了一个 swap 文件。
创建一个 4 GB 的 swap 文件。这个方法相对较慢:
sudo dd if=/dev/zero of=/swapfile bs=1G count=4
也可以使用 fallocate:
sudo fallocate -l 4G /swapfile
然后设置正确的权限,将其初始化为 swap,并启用它:
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
如果想在启动时自动使用这个 swap 文件,请把下面这一行追加到 /etc/fstab:
/swapfile none swap sw 0 0
搞定!
