まとまりのないブログ

something which something is something

Tips 雑記・雑学

tensorflow 1.5 をインストールしようとしてみたが断念

投稿日:

最新のtensorflowのバージョンは現在のところ2.4がリリースされているが、バージョン1.6以降のtensorflowはAVX(Advanced Vector Extensions)をサポートしないCPUでは動かないということらしい。古いCPUを使っているマシンではだめということ。なのでtensorflow ver1.5が必要になったのでインストールをして環境構築をしようとしたが、無理だった。

試したこと

tensorflow 1.5 のソースをダウンロードする

https://github.com/tensorflow/tensorflow/releases/tag/v1.5.0

tensorflowをコンパイルするためにbazelをインストールする

tensorflowのソースをビルドするにはbazelというコンパイラが必要とのこと。
https://docs.bazel.build/versions/master/install-ubuntu.html

sudo apt install curl gnupg
curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg –dearmor > bazel.gpg
sudo mv bazel.gpg /etc/apt/trusted.gpg.d/
echo “deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8” | sudo tee /etc/apt/sources.list.d/bazel.list

CUDA9.0 と cuDNN 7.6.5 をインストール

bazelのコンパイルでcudaを使う設定にするときは対応しているCUDAとcuDNNをインストールする必要があるとのこと。

どうやらこのバージョンのCUDAとcuDNNが対応しているらしい。

コンパイルエラーだらけ

ERROR: /root/.cache/bazel/_bazel_root/8aaf01c14305585657a643e6741f796b/external/grpc/BUILD:431:1: C++ compilation of rule ‘@grpc//:gpr_base’ failed (Exit 1).
external/grpc/src/core/lib/support/log_linux.cc:42:13: error: ambiguating new declaration of ‘long int gettid()’
42 | static long gettid(void) { return syscall(__NR_gettid); }
| ^~~~~~
In file included from /usr/include/unistd.h:1170,
from external/grpc/src/core/lib/support/log_linux.cc:40:
/usr/include/x86_64-linux-gnu/bits/unistd_ext.h:34:16: note: old declaration ‘__pid_t gettid()’
34 | extern __pid_t gettid (void) __THROW;
| ^~~~~~
external/grpc/src/core/lib/support/log_linux.cc:42:13: warning: ‘long int gettid()’ defined but not used [-Wunused-function]
42 | static long gettid(void) { return syscall(__NR_gettid); }
| ^~~~~~
Target //tensorflow/tools/pip_package:build_pip_package failed to build
Use –verbose_failures to see the command lines of failed build steps.

Traceback (most recent call last):
File “/root/.cache/bazel/_bazel_root/8aaf01c14305585657a643e6741f796b/execroot/org_tensorflow/bazel-out/host/bin/external/cython/cython_binary.runfiles/org_tensorflow/../cython/cython.py”, line 17, in
main(command_line = 1)
File “/root/.cache/bazel/_bazel_root/8aaf01c14305585657a643e6741f796b/external/cython/Cython/Compiler/Main.py”, line 720, in main
result = compile(sources, options)
File “/root/.cache/bazel/_bazel_root/8aaf01c14305585657a643e6741f796b/external/cython/Cython/Compiler/Main.py”, line 695, in compile
return compile_multiple(source, options)
File “/root/.cache/bazel/_bazel_root/8aaf01c14305585657a643e6741f796b/external/cython/Cython/Compiler/Main.py”, line 666, in compile_multiple
context = options.create_context()
File “/root/.cache/bazel/_bazel_root/8aaf01c14305585657a643e6741f796b/external/cython/Cython/Compiler/Main.py”, line 589, in create_context
return Context(self.include_path, self.compiler_directives,
File “/root/.cache/bazel/_bazel_root/8aaf01c14305585657a643e6741f796b/external/cython/Cython/Compiler/Main.py”, line 75, in __init__
from . import Builtin, CythonScope
File “/root/.cache/bazel/_bazel_root/8aaf01c14305585657a643e6741f796b/external/cython/Cython/Compiler/CythonScope.py”, line 5, in
from .UtilityCode import CythonUtilityCode
File “/root/.cache/bazel/_bazel_root/8aaf01c14305585657a643e6741f796b/external/cython/Cython/Compiler/UtilityCode.py”, line 3, in
from .TreeFragment import parse_from_strings, StringParseContext
File “/root/.cache/bazel/_bazel_root/8aaf01c14305585657a643e6741f796b/external/cython/Cython/Compiler/TreeFragment.py”, line 17, in
from .Visitor import VisitorTransform
File “/root/.cache/bazel/_bazel_root/8aaf01c14305585657a643e6741f796b/external/cython/Cython/Compiler/Visitor.py”, line 15, in
from . import ExprNodes
File “/root/.cache/bazel/_bazel_root/8aaf01c14305585657a643e6741f796b/external/cython/Cython/Compiler/ExprNodes.py”, line 2875
await = None
^
SyntaxError: invalid syntax
Target //tensorflow/tools/pip_package:build_pip_package failed to build

SyntaxErrorの解決は私には無理すぎ。

tensorflowのコンパイルがエラーなく終わる気がしないので諦めた。

他に試してみたがだめだったこと

pip install tensorflow==1.5
リストにはfrom versions: 2.2.0rc1, 2.2.0rc2, 2.2.0rc3, 2.2.0rc4, 2.2.0, 2.2.1, 2.3.0rc0, 2.3.0rc1, 2.3.0rc2, 2.3.0, 2.3.1, 2.4.0rc0, 2.4.0rc1, 2.4.0rc2, 2.4.0rc3 とあり1.5がないため駄目
anacondaでインストールしてみる

/root/anaconda3/conda.exe: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.4′ not found (required by /root/anaconda3/conda.exe)

GLIBC_2.4が見つからないとか言われてanaconda自体をインストールできなかったので断念

tensorflow 1.5.1 のwhl形式のファイルがあったのでそれで試してみる
https://pypi.org/project/tensorflow/1.5.1/

ERROR: tensorflow-1.5.1-cp36-cp36m-manylinux1_x86_64.whl is not a supported wheel on this platform.

pipが対応していないから駄目

まとめ

tensorflowインストールして試してみるだけだったのにめちゃくちゃ大変だった。古いCPUだと対応していない機能があるので古いバージョンのtensorflowをインストールする必要がある→それにはbazelをインストールする必要がある→CUDAとCuDNNも古いバージョンをインストールする必要がある→なんかエラーが出るのでpythonのバージョンも下げてみる→またなんかエラーが出たのでさらに調べる→エンドレス

tensorflowの環境構築だけでこれほど苦労することになるとは。。バージョンを下げて環境構築というのはちょいハードルが高い作業なのかもしれない。

結局は

我らがraspberry pi大先生で環境構築することにした。

# pip install tensorflow

これ一発で環境構築完成

-Tips, 雑記・雑学

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

関連記事

no image

ANAREA Battle Royale というバトロワゲーが事実上開発中止になっている件

ANAREA Battle Royaleとは? ANAREA Battle Royale https://store.steampowered.com/app/1103950/ANAREA_Battl …

cocos2d-x javascript no.0 基本

cocos2dの構成。cocos2d-jsは下記のような構成要素を持つ。 Director シーン レイヤー スプライト Director 実行環境やシーンの制御など、ゲームを構成するすべてを管理する …

no image

フレームワークの有効性

フレームワークを使う利点は、フレームワークを使わない場合の欠点を知らないと生きてこない。しかしそれを実感するには十分な知識と実践と時間が必要になる。ライブラリやフレームワークを使えば自然と開発の時間が …

no image

パソコンがフリーズする要因

パソコンがフリーズする要因は以下が考えられる。 主記憶(メモリ)に不具合がある場合 補助記憶(HDD、SSDなど)に不具合がある場合 OS・ソフトウェアに不具合がある場合

no image

Gigazine倉庫問題の民事裁判で判決が出た模様

「GIGAZINE倉庫破壊事件」で編集長が敗訴した理由 バトルは控訴審へ – 弁護士ドットコム 内容は、 Gigazine側が敗訴 問題となっていた倉庫の撤去・退去を命じられる 賃料相当の …