Tensorflow解説、tf-nightlyって何だ?

単語埋め込み (Word embeddings)
https://www.tensorflow.org/tutorials/text/word_embeddings?hl=ja
上記のようなTensorFlowのチュートリアルを読んでいると

!pip install -q tf-nightly
import tensorflow as tf

こういう感じのコードが出てきます。

tf-nightlyって何だ?

tf-nightlyをインストールしているくせに、
import tf-nightly
みたいなコードは出てきません。

使わないならなんでpip install でtf-nightlyをインストールするんだ?

tf-nightlyに関する説明は、チュートリアルには出てきません。

インストール
https://www.tensorflow.org/probability/install?hl=ja
上記のページには

毎晩のビルド
tfp-nightly tf-nightlyとtf-nightly-gpuいずれかに依存する、pipパッケージtfp-nightly下にTensorFlow Probabilityのナイトリービルドもあります。ナイトリービルドには新しい機能が含まれていますが、バージョン付きのリリースよりも安定性が低い場合があります。

という説明があります。

import tensorflow as tf

上記のコードでtensorflowをインストールすると、2020年8月現在でtensorflow2.3.0がインポートされます。

これは数か月に1回位のペースでビルドされてバージョンが新しくなります。
tf-nightlyは毎晩(nightly)ビルドされる超最新バージョンみたいな意味のようです。

「2.3.0よりも新しいバージョン。最新機能が使えるけど実験段階だからバグもあるよ」
ってことですね。

!pip install -q tf-nightly
import tensorflow as tf

上記のようにtf-nightlyをインストールして、
import tensorflowをすれば、勝手にnightlyバージョンのTensorFlowがインポートされています。

tf-nightlyを使っちゃうと、いまはtf-nightlyで実験的に採用されている機能が、いつの間にか消えてなくなっていたみたいなことになる可能性も。
コードが気づいたら動かなくなってるみたいなことになるので、特別な理由がなければ
!pip install -q tf-nightly
は使わない方がいいでしょう。

メジャーバージョンで書いたコードなら
「このコードはTensorFlow2.3なら動く」
というのが明確になります。
最新版がTensorFlow3.0とかになった場合も、意図的にTensorFlow2.3を導入して古いコードを動かすみたいなことができます。

!pip install -q tf-nightly
を使っちゃうと、いざコードがバージョン違いで動かなくなったときに、あの当時の「tf-nightly」と同じ環境を再現したいと思っても、たぶん難しいです。

いいなと思ったら応援しよう!