Amazon UbuntuでTensorFlowのソースからのコンパイルに失敗する

RoboForex - Forex市場のプロフェッショナルサービス

参考リンク:

  • <https://github.com/tensorflow/tensorflow/issues/7660>
  • <https://github.com/tensorflow/tensorflow/issues/349>

Amazon AWSのUbuntuサーバー上でTensorFlowをソースからコンパイルしていたとき、奇妙なビルドエラーが繰り返し発生しました。かなり検索してみましたが、明確な答えは見つかりませんでした。

ビルド中にTensorFlowが必要とする可能性がある swig をインストールしました。これが決定打だったかどうかはわかりませんが、確認しておく価値はあります。

sudo apt install swig

より可能性が高い原因は、コンパイル中に単純にメモリ不足になっていたことでした。回避策のひとつは、Bazelの並列ビルドジョブ数を減らすことです。--local_resources 2048,0.5,1.0 を渡すとBazelのローカルリソース使用量を制限でき、--jobs 1 によってビルドを一度に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

また、スワップファイルも追加しました。

4 GBのスワップファイルを作成します。この方法は比較的遅いです。

sudo dd if=/dev/zero of=/swapfile bs=1G count=4

または、fallocate を使います。

sudo fallocate -l 4G /swapfile

次に、適切な権限を設定し、スワップとして初期化して有効化します。

sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

このスワップファイルを起動時に自動で使用したい場合は、次の行を /etc/fstab に追記します。

/swapfile none swap sw 0 0

ビンゴ!

Leave a Reply