はじめに
みなさんの使っている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を買い替えるほうがいいのだろうか・・・。