Tensorflowをソースからビルドするも、tensorflow.keras使えなくて萎える件


はじめに

みなさんの使っているPCのCPUは、AVX命令に対応していますか?ここ10年以内にIntelCPUのPCを新規で買った人には関係ないとは思います。それが、普通なのかもしれません。しかし、私のGPUを使えるマシンではCPUがAVX命令に対応していません。AVX命令がないとなんの不自由があるのかって?Ver.1.6以降のTensorflowが、AVXがないCPUだと動かんのですよ。
昨年、Githubから先達のPythonソースをもらってきて動かそうとすると・・・そいつがTesorflow2.2以降を要求するのです。あー、はいはい、Tensorflowね、っと Pip インストールとかして、まぁ文句も言われずインストールできたのですが、いざ、動かそうとすると「無言で終了する」現象が発生していました。そういうものか、と思っていたのですが、そうではなくて、先達のPythonスクリプトが呼び出したTensorflowが動作せずにエラーが出ているのを、エラーメッセージの出力なしにストップしていただけということがわかり・・・。理由をしらべてみると、Tensorflow2.xは古いCPUでは動かないという情報を発見。いったんこのPCの利用をやめてしまったのですが・・・

こいつがうちで唯一のWindowsOSマシンであり、GPUを積んでメモリが64GBも積んであるXeonマシン。WindowsOSのデベロッパープレビューではWSLからGPUを使えるようになったと情報(日本語での方法案内は、例えば、こちらこちら)を受け、そのパフォーマンスが悪くないとのうわさも聞いて何とか動かせないかと・・・PCの買い替えは今使ってるPCの処分方法にも困る(購入資金の問題、処分どうする?問題という多重の問題を発生させる)ので、避けたいところです。

Tensorflowをソースからビルドする

当該AVX非対応PCにて、WSL2上でTensowflowをソースしてはどうか、というのが私の考え。そこで、公式に従ってビルドするのですが・・・なんですか、このビルドに要する時間の長さ!12時間ほどかかりましたよ。ビルド時間すら時間かかりすぎじゃね?ビルド中のCPU使用率をみても20%前後の低空飛行。全力で2時間で終わらせろよ!とか思ってしまいました・・・

先の参考記事の参考でWSL2でのパフォーマンスは素のWindows利用時よりも落ちることとその理由がCPUの使い方に制限があるかも、とか、ビルド中にWindowsのファイルシステムにアクセスしてるのかも・・とも推察できるのですが、その解決方法もわからず耐え忍ぶことにしました。

耐え忍びながら、調べてみた参考情報。

WSL2でつくる快適なUbuntu環境
wsl.conf と .wslconfig -- roy-n-roy メモ

とりあえず、WSL2 linux 側に /etc/wsl.conf を作って次の書き込みを行っておきました。

[interop]
enabled=true                # WSL内からWindowsプログラムの起動をサポートする (ver1809以降)
appendWindowsPath=true      # WSL内のPATH環境変数に、WindowsのPATH環境変数を追加する (ver1809以降)

いざ、実行・・・だが・・・

さて、ビルドのできたTensorflowを(これも公式の手順にしたがって)Python pip でインストール。意気揚々と、元来の目的の先達のPythonスクリプトを実行したのでありますが・・・

だめです。

tensorflow.keras が見つかりません、というようなエラーがでます。うーんまぁ、kerasが見つかればいいんだよね、ということで、pip でkerasをインストールして、ソースも書き換えてから実行すると・・・今度は、kerasがTensorflowが見つかりません、というようなエラーを出し・・・あ、そうか自前でビルドしたTensorflowをpyplのkerasは見つけてくれないのか・・・と。

じゃぁ、tensorflowをソースからビルドしたひとはどうやってkerasを使うのか。わからん。

そんなの解説したマニアックな先達がGoogleでは見つからない。2020年中ごろから、kerasってtensorflowの一部に統合されているのでtensorflowをビルドすれば一緒にできあがるのでは、と勝手に期待して・・・。公式に加えて、以下を実行。

python3 -m pip install keras-applications

意味があるのかどうか、わかりませんが・・・

再度、ビルド命令・・・。また、12時間。

だめかも

まだ、ビルドが終わりませんけど、あんまり期待しておりません。WindowsではDocker-composeが使いづらい(-Vパスの指定の方法が理解できない)ので、今回だめだったら、WSL2もあきらめて、OSをUbuntuに変えようと思っています。・・・というか、PCを買い替えるほうがいいのだろうか・・・。