在 Amazon Ubuntu 上从源码编译 TensorFlow 失败

RoboForex - 外汇市场专业服务

参考链接:

  • <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

搞定!

Leave a Reply