6 年前にセットアップした GPU つきの Linux マシンで GAN (敵対的生成ネットワーク) のプログラムをうごかそうとかんがえた. Ubuntu を 14.04 から 16.04, 18.04 を経て 20.04 に upgrade し,Python も Python 2 から Python 3.9 にした. TensorFlow はこれまでつかったことがなかったが,いまはこれがメジャーなので最新の GPU ベースの TensorFlow 環境をのせようとしたが,そこでつまづいた. GPU がふるいことはたぶん問題ではないが,CPU として安価な Pentium をつかっていたことが,いまになってたたった. 安価な Core i3 にのせかえてみようとおもっている.
螺旋 3D 印刷による造形は generative であることが特徴だ. ベンチャーで generative design,generative art をやってきた者にとって,その先端技術は GAN (generative adversarial networks) だ. だから,これをぜひ螺旋 3D 印刷に適用してみたい.
そのためには GAN が実行できる環境が必要だから,6 年前に深層学習 (deep learning) のためにつくった環境をつくりかえて,とりあえずそこでためしてみたい. 6 年前につくったのは Intel の安価な CPU をつかったマシンに NVIDIA GeForce 740 をのせたものだ. 当時,実行性能において重要なのは GPU であり CPU は安価なものでよいだろうとかんがえて,Core i はもちろん CoreDuo もつかわず,Pentium G3450 という石をつかった. 当時はこの決定があとでたたるなどということは,もちろんまったくかんがえていなかった.
このマシンの OS は当時は最新だった Ubuntu 14.04 だ. 会社でもおなじ Linux distribution をつかっていたから,他の OS たとえば Windows をつかうなどということは,まったくかんがえなかった. Ubuntu のこともこの 6 年間ほとんどかんがえたことがなかった. しかし,そのあいだに 3 回メジャーな更新があって現在は ver. 20 になっていることがわかり,どうやってあたらしい環境にいれかえるかが問題になった. しかし,検討するのもめんどうなので,とりあえず再インストールでなく更新をくりかえしていくことにした. いきなり 20.04 に更新されないので,16.04,18.04 を経て 20.04 に更新した. その際にもともとのせてあった NVIDIA の環境はじゃまになったので,更新しないようにした. NVIDIA の更新をとめれば,ほかにはとくに問題はおこらなかった.
MacBook 上にはすでに Tensorflow がつかえる環境をつくっていたが,それが GPU で実行できる環境がつくりたいから 6 年前のマシンをもちだしてきたわけだ. MacBook には最近リリースされた Python 3.10 の環境がつくってある (工学院大学の授業でも演習においておなじ環境をつかった). しかし,機械学習の環境は標準の Python 環境でなく Anaconda (Miniconda) をつかうことで容易に構築できる. そこでの最新の Python は 3.9 だ. MacBook 上の Tensorflow はこの環境のうえで動作する.
GPU をつかわない,おなじ環境をまず Ubuntu 20.4 上につくろうとした. 操作をできるだけ MacBook からの ssh で実行したかったので,まず ssh をインストールし,Miniconda と Tensorflow をインストールした. ここまでは比較的うまくいき,CPU でニューラルネットが動作するようになった. しかし,あまりにおそい. Core i5 つきの MacBook では MNIST が epoch あたり 100 秒くらいなのが,Pentium では 200 秒くらいかかる. GPU がなければつかいものにならないのはあきらかだ.
そこで,いったんフリーズした NVIDIA の環境をあらためてのせようとこころみた. かんたんな方法をためしてもうまくいかないので,つぎのページにしたがって環境をつくってみた.
Install NVIDIA [495.44 / 470.86 / 390.144 / 340.108] Drivers on Debian / Ubuntu / Linux Mint / LMDE
これにしたがって環境構築し,2 回めの reboot をかけたところ,kernel panic が発生して,Ubuntu がたちあがらなくなった. あとからかんがえるともっと安全な方法をさきにためすべきだったのではないかとおもうが,いまさらいってもしかたがない. Kernel のメッセージのなかで BIOS を更新することをもとめていたので,ともかく気をとりなおして ASUS のマザーボードの BIOS パネルをひらき,2014 年の BIOS を最新の (といっても 2018 年の) BIOS に更新した. ASUS のサイトから最新の BIOS をダウンロードし,BIOS パネルの GUI からよびだせる UEFI BIOS Utility で書き込んでから再起動すると,Ubuntu がうまくたちあがった. ただし,GPU を計算につかえるように graphic ドライバをいれかえようとしているので,GUI がたちあがっていない状態で上記の web ページのつづきの部分を実行していった. それは問題なく実行できて,再起動すると Ubuntu の GUI が動作した.
ところが,そこで Pentium G3450 がネックになった. GPU を使用する Tensorflow をインストールしようとしたが,標準に構築した環境では AVX という拡張命令群を使用する. ところが Pentium には SSE 命令群はあっても AVX 命令群はないので,その版の Tensorflow は動作しない. ネットをさがして,やっと AVX なしの Tensorflow をさがしだしたが,インストールできなかった. Tensorflow のソース・プログラムからコンパイルすればほしい環境がつくれるだろうが,そのやりかたをネットでさがしても決定版がない. 時間をかければ自分で試行錯誤して適当な方法をみつけることができるだろうが,たぶんそんなにすんなりとはいかないだろう.
こんなところに時間をかけてもしかたがないので,あきらめて G3450 を Core i3 に交換してみることにした. G3450 よりふるくても,Core i3 ならば AVX がサポートされている. 6 年前には Core i は高価だったとおもうが,いま 2012 年ごろの Core i3 なら 4000 円以下で入手できる. 中古なら同程度の値段で Core i5 も買えるが,たぶんコア数が 2 から 4 になるだけで,コアの性能はかわらないとかんがえられるから,未使用品の Core i3 にしておこうとおもう.
このつづきは CPU を Core i3 に交換してからまた書くことにしようとおもう.