はじめに
落ちてた 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 使ったほうがよい。