KerasはバックエンドをTensorFlow、theano、CNTKから選択できる。 しかしさくらVPSでは結局どれも使えなかったのでKerasをあきらめた。
環境:CentOS7 on さくらVPS(v3)
さくらVPSではtensorflowをimportしようとすると次のエラーが出てしまってpythonが落ちてしまい、 そのためtensorflowが使えなかった。
traps: python3.6[1188] trap invalid opcode ip:7f40b6765880 sp:7ffee7c0e330 error:0 in libtensorflow_framework.so[7f40b6329000+c17000]
たぶんlibtensorflow_frameworks.soのファイルが、 VPSの仮想プロセッサーがサポートしていないインストラクションを使ったバイナリーなんだと思う。 実際、さくらVPSとConoha VPSとで/proc/cpuinfoを比べると次の表のように違いがあるので、 さくらの方で何か動かないものがあってもまあ仕方がないよね。 (もっとも、今使ってるさくらVPSは「さくらのVPS(v3) IK01」という古いものなので、 もしもっと新しいバージョンのVPSだと違う結果になるかも。)
VPS | flags |
---|---|
さくら | fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb lm constant_tsc nopl pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt aes hypervisor lahf_lm |
Conoha | fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt |
TensorFlowの代わりにCNTKをKerasのバックエンドとして使おうとしたところ、 以下のエラーで使えなかった。
ImportError: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/lib64/python3.6/site-packages/_cntk_py.cpython-36m-x86_64-linux-gnu.so)
エラーがよくわからないが、libstdc++のバージョンとか自分で入れ替える気にはならない。 そもそもCNTKはUbuntuが前提かもしれないので 初めからすなおにUbuntu使ってれば良かったのかもしれないが、 そうかといって今更OS入れ替える気にもなれない。
theanoをKerasのバックエンドとして使おうとしたところ、まあ動きはした。 動きはしたが、遅くて使い物にならなかった。
Conoha VPSでTensorFlowをバックエンドにすると10秒で終わる処理が さくらVPSでtheanoをバックエンドにすると180秒くらいかかるのでは、 ちょっとねー、 という感じである。
最終更新日:2018/03/03