まとまりのないブログ

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

Package libcudnn8 is not installed.

cudnnをインストールしようとしたらエラーが出た。 dpkg: dependency problems prevent configuration of libcudnn8-dev: libcudn …

no image

クラファンでゲームを企画したが失敗した事例まとめ

Project Phoenix 2013年開始 発起人はヴァイオリン奏者の由良浩明氏 クラウドファンディングで102万ドルを集めることに成功 2019年を最後に開発状況の更新を停止。 【Project …

no image

ジャパンネット銀行がPayPay銀行に改名したらしい

2021年4月5日、ジャパンネット銀行はPayPay銀行としてスタートしました サービスは良いところもある。例えばヤフオクなどで商品を売ったときの売上が確定したら即口座へ振り込み手数料無しで振り込むこ …

no image

メルカリで梱包・発送たのメル便を分解した状態で発送した

フリマサイトのメルカリで出品して、梱包・発送たのメル便での発送をしてみた。品物はテーブルで結構な大きさがある。梱包・発送たのメル便は梱包を全部配送の人がやってくれて発送できるというサービスで梱包の仕方 …

no image

海外通販で注文したラズベリーパイゼロが届いた

pimoroniというラズベリーパイを中心に売っている海外の通信販売サイトで注文したラズパイゼロが届いた。注文から到着まで約1周間強といったところ。普通の通販と違って海外からなので最悪届かないんじゃな …