TensorFlow 1.13.1がリリース: CUDA 10, TensorRT 5.0を採用
GitHubのReleasesページに書かれてある通り、1.13.1の情報がアップされた。
大きな変更
大きな変更は以下の通り
- TensorFlow Lite has moved from contrib to core. This means that Python modules are under tf.lite and source code is now under tensorflow/lite rather than tensorflow/contrib/lite.
- TensorFlow GPU binaries are now built against CUDA 10 and TensorRT 5.0.
-
Support for Python3.7 on all operating systems.
-
Moved NCCL to core.
日本語に訳すなら
- TensorFlow Liteがcontribからcoreへ移された。これはtf.liteとsource code以下にあるPythonモジュールがtensorflow/contrib/lite以下でなくtensorflow/lite以下にあると言うことを意味する。
-
TensorFlowのGPUバイナリーはCUDA 10とTensorRT 5.0に対してビルドされる。
(補足:対応ドライバーは410.x) -
すべてのOSでPython3.7がサポートされる。
-
NCLLがcoreへ移動。
と言った感じで個人的にはCUDA 10が使えるようになったのは大きいと思う。PyTorchでは10、TensorFlowでは9などと言うのは頂けないと思っていた。TensorFlowのために敢えて9.0を使う、というのもなんだか。
TensorFlow自体のrequirementsは変わっていないようだし、グラボの能力についても3.5以上が必要で、3.0ならソースコードからビルドしなくてはいけない。など基本的な考え方は今までと同じだと思う。
もうLinuxならDockerでやる方がいいと思う。(その場合でも母体のドライバーは410.xが必要。)
別項目にUbuntu 18.04LTSにDockerを入れる。と題してDockerの導入方法を記した。
ドライバーに関して、以前書いた記事Ubuntu 16.04LTSにTensorFlowをGPU付きでインストールする方法の中に最新ドライバーの調査、更新方法が書いてあるので、それを使ってインストールすればよい。
ただし一つ変更点がある。それはドライバーをインストールするところで
sudo apt-get install nvidia-390
とやっていたところを
sudo apt-get install nvidia-driver-390
としなければいけない点である。そうしないとエラーでインストールが止まってしまうことがある。(執筆時点ではnvidia-driver-410とする。)
振る舞いの変更
振る舞いの変更は以下の通り。
- Disallow conversion of python floating types to uint32/64 (matching behavior of other integer types) in tf.constant.
-
Make the gain argument of convolutional orthogonal initializers (convolutional_delta_orthogonal, convolutional_orthogonal_1D, convolutional_orthogonal_2D, convolutional_orthogonal_3D) have consistent behavior with the tf.initializers.orthogonal initializer, i.e. scale the output l2-norm by gain and NOT by sqrt(gain). (Note that these functions are currently in tf.contrib which is not guaranteed backward compatible).
日本語に訳すなら
- python 浮動小数点型をint32/64へと変換するのを許容しない。(他の整数型の振る舞いと一致させる)
-
convolutional orthogonal initializers(convolutional_delta_orthogonal, convolutional_orthogonal_1D, convolutional_orthogonal_2D, convolutional_orthogonal_3D)のゲインアーギュメントをtf.initializers.orthogonal initializerの振る舞いと整合させた。これはつまり、l2-norm 出力をゲインの平方根ではなく、ゲインで測るということである。(これら関数は現在は後方互換性を保証しないtf.contribに入っている事に注意せよ。)
ということで、類似オブジェクトの振る舞いに統一感を持たせていこうという方針の表れではないかと感じられる。
バグフィックスとその他の変更
たくさん・・・。