UbuntuにTensorFlowをインストールする【機械学習システム公開のため】

UbuntuにTensorFlowをインストールする【機械学習システム公開のため】 サーバー

機械学習(TensorFlow利用)を用いたサービスを公開しようと考えています。
やはり、そうなるとLinuxサーバーでTensorFlowを動かす必要があります。

なお、TensorFlow 2をインストールします。
TensorFlow 2は、旧バージョンであるTensorFlow 1.xとかなり異なります。

そこで、今回は契約中のVPSにTensorFlowをインストールしていきます。
基本的には、公式のマニュアルに沿ってのインストールとなります。

本記事の内容

  • システム要件の確認
  • ハードウェア要件の確認
  • Python 開発環境のインストール
  • pip によるTensorFlowのインストール

それでは、上記に沿ってインストールを行っていきます。

システム要件の確認

公式では、Linuxに対してはUbuntuしか正式に対応を記載していませんね。
以下は、Ubuntuに関する要件です。
Windowsのみに関する要件は除外しています。

  • Python 3.5–3.7
  • pip 19.0 以降(manylinux2010 サポートが必要)
  • Ubuntu 16.04 以降(64 ビット)
  • GPU サポートには CUDA® 対応カードが必要(Ubuntu、Windows 用)

なお、インストール先サーバーとして用いるVPSは、以下の記事のモノです。

格安であるため、もちろんGPUには対応していません。
そのため、GPUに関する要件も今回は関係ありませんね。

では、ここではOSのバージョンを念のため確認しておきます。

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.4 LTS
Release:        18.04
Codename:       bionic

Ubuntu 18.04です。
よって、Ubuntu 16.04 以降の要件をクリアしています。

あと、アーキテクチャの確認もしておきましょう。

$ arch
x86_64

これで64ビットのシステムだと確認が取れました。
以上より、「Ubuntu 16.04 以降(64 ビット)」の要件はクリアです。

残り(2つ)要件は、「Python 開発環境のインストール」において対応します。

ハードウェア要件の確認

公式には、次の要件が記載されています。

  • TensorFlow 1.6 以降、バイナリは AVX 命令を使用するので、古い CPU では動作しないことがあります。
  • Ubuntu または Windows 上で CUDA® 対応の GPU カードをセットアップするには、GPU サポートのガイドをご確認ください。

TensorFlow 1.6 以降をインストールするため、確認は必要です。
また、GPUの要件はここでも無視します。

では、Ubuntu上でCPUの確認です。
確認には、次のコマンドを用います。

$ sudo lshw -class processor
  *-cpu                     
       description: CPU
       product: Intel Xeon E312xx (Sandy Bridge)
       vendor: Intel Corp.
       physical id: 401
       bus info: cpu@0
       slot: CPU 1
       size: 2GHz
       capacity: 2GHz
       width: 64 bits
       capabilities: fpu fpu_exception wp de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx x86-64 constant_tsc rep_good nopl cpuid pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx hypervisor lahf_lm pti xsaveopt

CPUが対応しているかどうかは、次のページで確認可能。
https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#CPUs_with_AVX

Sandy Bridgeは、AVX 命令に対応していることを確認できます。
でも、結構ギリギリですね。。。
やはり、格安サーバーだと感じました。

Python 開発環境のインストール

Python開発環境を構築するには、以下の3つが必要です。

  • Python
  • pip パッケージ マネージャー
  • Virtualenv

まずは、それぞれがインストール済みかどうかを確認します。
インストールされていなければ、インストールしていきます。

なお、Virtualenvは無視します。
なぜなら、仮想環境は利用しないためです。

Python

システム要件の「Python 3.5–3.7」が、前提です。

$ python3 --version
Python 3.6.9

すでにインストー済みですね。
インストールされていない場合は、以下からインストールしてください。

Python公式
https://www.python.org/

pip パッケージ マネージャー

$ pip3 --version

Command 'pip3' not found, but can be installed with:

sudo apt install python3-pip

インストールされていませんね。
Pythonとは異なり、pipがインストールされていないケースはあるでしょう。

では、指示通りにインストールします。
ただ、その前にパッケージ一覧を更新しておきます。

$ sudo apt update

pip パッケージ マネージャーのインストールは、次のコマンドを実行します。

$ sudo apt install python3-pip

インストールできたどうか確認します。

$ pip3 --version                                                                                                                        
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)

インストール自体は成功できています。
しかし、バージョンがかなり低いです。

システム要件では、「pip 19.0 以降」が条件でした。
そのため、pip自体をアップデートします。

$ pip3 install --upgrade pip
Collecting pip
  Downloading https://files.pythonhosted.org/packages/5a/4a/39400ff9b36e719bdf8f31c99fe1fa7842a42fa77432e584f707a5080063/pip-20.2.2-py2.py3-none-any.whl (1.5MB)
    100% |████████████████████████████████| 1.5MB 700kB/s                                                                                         
Installing collected packages: pip
Successfully installed pip-20.2.2

上手くいったようです。
確認します。

$ pip3 --version
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
pip 20.2.2 from /home/ubuntu/.local/lib/python3.6/site-packages/pip (python 3.6)

なんか、いろいとと警告されていますね。
「直接pipを使うな」ということらしいです。
下記のようにして、使えばOKということ。

$ python3 -m pip --version
pip 20.2.2 from /home/ubuntu/.local/lib/python3.6/site-packages/pip (python 3.6)

pip によるTensorFlowのインストール

ここからは、公式マニュアルには従いません。
公式マニュアルでは、仮想環境とシステムの両方に対するインストール方法が記載されています。

ただ、仮想環境はまず却下です。
開発やテストで利用するだけなら、仮想環境でも構わないです。

しかし、実際に運用していく上で仮想環境は信用できません。
というより、運用していく上でトラブルの少なそうな方を選択するというだけです。
そうなれば、仮想環境ではなく普通にシステムにインストールすることになります。

よって、システムにインストールすることにします。
公式では、以下のコマンドでTensorFlowをインストールしていますね。

$ pip3 install --user --upgrade tensorflow  # install in $HOME

ただ、直接pipは使わないルールがあります。
そのため、次のコマンドでインストールを行います。

$ python3 -m pip install tensorflow

では、インストールの確認を行います。
公式では、次のようなコードを実行するように記載されています。

$ python3 -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

しかし、このコードよりももっと簡潔に確認する方法があります。
それが、以下のコマンドです。

$ python3 -c "import tensorflow as tf; print( tf.__version__ )"
2020-09-05 09:08:31.173614: W tensorflow/stream_executor/platform/default/dso_loader.cc:59] Could not load dynamic library 'libcudart.so.10.1'; dlerror: libcudart.so.10.1: cannot open shared object file: No such file or directory
2020-09-05 09:08:31.173838: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
2.3.0

単純にインストール済みTensorFlowのバージョンを表示するモノです。
最後に「2.3.0」と表示されています。
これが表示されていれば、TensorFlowのインストールは成功と言えます。

ただ、途中で2行ほど警告が表示されていますね。
これは、GPUを利用するケースでなければ無視しても問題ありません。

とにかく、文末にバージョン(今回は2.3.0)らしきモノが表示されていれば、OKです。
では、これにて「UbuntuにTensorFlowをインストールする【機械学習システム公開のため】」は終了です。

タイトルとURLをコピーしました