はじめに

落ちてた i7 870 のパソコンにグラボを 2 枚刺して、機械学習専用サーバーを作りました。 このとき、最新の Tensorflow をインストールしても使えないので苦労しました。 これは i7 870 は Sandy Bridge 以前の CPU なので AVX 命令がないのが原因です。 この記事では i7 870 でも機械学習が出来るように、少し古めの Tensorflow の環境を構築する方法を解説します。

この情報は 2020 年 12 月に出来た方法です。

前提

  • CUDA 10.2
  • Nvidia Driver Version: 440.100
  • Anaconda をインストール

tensorflow v1.5.0 のインストール方法

はじめに、仮想環境の作成

$ conda create -n tf1 python==3.7 anaconda
$ conda activate tf1

tensorflow-gpu v1.15.0 を指定してインストール

$ conda install -c anaconda tensorflow-gpu==1.15.0
$ conda install -c anaconda keras

ついでに、tensorflow-datasets をインストール(conda で入るのはバージョンが古いので pip でインストール)

$ conda install tqdm
$ pip install tensorflow-datasets==3.2.1

tensorflow v2.0.0 のインストール方法

はじめに、仮想環境の作成

$ conda create -n tf2 python==3.7 anaconda
$ conda activate tf2

tensorflow-gpu v2.0.0 を指定してインストール(これより新しいバージョンは入らなかった)

$ conda install -c anaconda tensorflow-gpu==2.0.0
$ conda install -c anaconda keras

ついでに、tensorflow-datasets をインストール(conda で入るのはバージョンが古いので pip でインストール)

$ conda install tqdm
$ pip install tensorflow-datasets==3.2.1

MNIST のサンプルコード

import tensorflow as tf
import tensorflow_datasets as tfds

print(tf.__version__)

mnist = tfds.load('MNIST', data_dir="./data", shuffle_files=True, as_supervised=True)
train, test = mnist['train'].shuffle(buffer_size=1024).batch(64), mnist['test'].batch(64)

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(),
  tf.keras.layers.Dense(512, activation=tf.nn.relu),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])

model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])

model.fit(train, epochs=5)
result = model.evaluate(test)
dict(zip(model.metrics_names, result))

感想

最新の Tensorflow をソースからビルドしたほうがいいかもしれない。 あと、Google Colab 使ったほうがよい。