まとまりのないブログ

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

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

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

no image

ZeroLink: unknown symbol '_NSApplicationMain'

[Session started at 2008-03-21 00:22:13 +0900.] ZeroLink: unknown symbol ‘_NSApplicationMain&# …

no image

thinkpad r500とsl510の比較

似たようなスペックのthinkpad r500とsl510を利用することができたのでいろいろと比較してみる。SL510はその当時の製品ラインナップで最も低価格の製品という位置づけだった模様。R500は …

モンブラン シニアム ボールペン レビュー

モンブラン シニアム 発売日:2004年頃 現在は廃盤 種類:ボールペン、ローラーボールペン、ファインライナーの3種。ボールペンはノック式でローラーボールとファインライナーはキャップ式。カラーはシルバ …

no image

電子書籍のメリットとデメリット

電子書籍のメリットとデメリットについて メリット 書店に買いに行かなくてもインターネットを介して入手できる 場所を取らない・本棚がいらない ポイント購入に対応している場合がある デメリット 販売主がサ …