TensorFlow 1.14.0 リリースノート (翻訳)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 06/19/2019
* 本ページは、github TensorFlow の releases の TensorFlow 1.14.0 を翻訳したものです:
主要な特徴と改良
- これは compat.v2 モジュールを含む最初の 1.x リリースです。このモジュールはライブラリに 1.x と 2.x の両者で動作するコードを公開することを可能にするために必要です。このリリースの後、2.0 Python API においてどのような後方非互換な変更も許容されません。
- デフォルトで MKL-DNN contraction カーネルを有効にします。MKL-DNN は CPU ベクトルアーキテクチャに基づきベストなカーネル実装をディスパッチします。それらを無効にするには、–define=tensorflow_mkldnn_contraction_kernel=0 でビルドします。
- 非 Windows システム・ライブラリは今ではバージョン付けされます。これは殆どのユーザに対しては no-op であるはずです、何故ならばそれはシステムパッケージ保守者か TensorFlow への拡張を構築する人にだけ影響を与えるからです。
- Python wheels (Pip パッケージ) は一つのライブラリファイルを含みます。
- Linux: libtensorflow_framework.so.1
- MacOS: libtensorflow_framework.1.dylib
- libtensorflow tarball アーカイブは libtensorflow と 2 つの symlink を含みます。MacOS .dylib ライブラリも同じですが、MacOS ライブラリ命名要件に適合します (i.e. libtensorflow.1.dylib) :
- libtensorflow.so.1.14.0, 主ライブラリ
- libtensorflow.so.1, 主ライブラリへのシンボリックシンク
- libtensorflow.so, .so.1 へのシンボリックリンク
- Python wheels (Pip パッケージ) は一つのライブラリファイルを含みます。
動作変更
- 分散ストラテジーとカスタム訓練ループによる loss スケーリングの信頼性を改良するためにデフォルト loss reduction を AUTO として設定します。AUTO は reduction オプションが使用コンテキストにより決定されることを示しています。 殆ど総ての場合これは SUM_OVER_BATCH_SIZE がデフォルトになります。分散ストラテジースコープ内で使用されるとき、tf.keras compile と fit のような組み込み訓練ループの外では、reduction 値として ‘None’ か ‘SUM’ を想定します。他の値の使用はエラーを上げます。
- v2 Loss クラスのインスタンスでない、compile API に渡される損失 (文字列か v1 損失) を LossWrapper にラップします。=> 総ての損失は今ではデフォルトとして SUM_OVER_BATCH_SIZE reduction を使用します。
- add_metric か add_loss を使用してモデルに追加されたシンボリック tensor がある場合 run_eagerly と分散ストラテジーを無効にします。
- tf.linspace(start, stop, num) は今では最後の値として常に “stop” を使用します (for num > 1)。
- axis=None と batch_dims<0 のとき tf.gather の挙動は今では正しいです。
- オブジェクトが既に存在していないのであれば GCS ディレクトリ・オブジェクトを作成するだけです。
- map_vectorization 最適化で、ベクトル化された map ノードで並列化の次数を削減します。
- バグ修正: tf.distribute.Strategy を使用するとき損失と勾配はグローバルバッチサイズに関して今ではより確実に正しくスケールされるはずです。
- コサイン類似度損失を更新します – コサイン類似度から negate sign を除去しました。
- DType はもはや int に変換可能ではありません。同じ結果を得るために int(dtype) の代わりに dtype.as_datatype_enum を使用してください。
- for TPU embeddings のための勾配蓄積のためのデフォルトを true に変更しました。
- deferred build モデルが使用されるとき今では eager モードで callbacks は値を記録します。
- :pooling_ops への過渡的な依存性は除去されました。あるユーザはそのライブラリから演算子を参照する場合 :pooling_ops への明示的な依存性を追加する必要があるかもしれません。
バグ修正とその他の変更
- ドキュメント
- Deprecations とシンボル名変更。
- 使用されていない StringViewVariantWrapper を除去します。
- 使用されていない Fingerprint64Map op 登録を削除します。
- SignatureDef util 関数は deprecated になりました。
- 余分なところでは重複する “image” を除去するために tf.image 関数を名前変更しました
- tf.keras.experimental.export は tf.keras.experimental.export_saved_model に名前変更されました
- LayerNormalization API を args norm_axis と params_axis を axis で置き換えることにより標準化しました。
- Tensor::UnsafeCopyFromInternal は Tensor::BitcastFrom のために deprecated です。
- Keras & Python API
- 以下のための v2 モジュールエイリアスを追加します :
- tf.initializers => tf.keras.initializers
- tf.losses => tf.keras.losses & tf.metrics => tf.keras.metrics
- tf.optimizers => tf.keras.optimizers
- tf.keras.layers.AbstractRNNCell を TF v2 のための RNN セルの好ましい実装として追加します。ユーザはカスタム動作を持つ RNN セルを実装するためにそれを使用できます。
- eager におけるカスタム訓練ループの forward パスの最後に損失をクリアできるように clear_losses API を追加しています。
- Keras compile でリストのリストを metrics param に渡すためのサポートを追加
- precision への top-k と keras metrics への recall を追加しました。
- cumsum と cumprod keras backend 関数のための public API を追加しています。
- 修正: model.add_loss(symbolic_tensor) は eager 回りで動作するべきです。
- tf.string_split と tf.strings_split に name 引数を追加します。
- tf.keras.experimental.export を使用する Keras からエクスポートされた SavedModels へのマイナー変更。(評価モードのための SignatureDef キーは今では “test” の代わりに “eval” です)。これは近い将来に “test” に戻されるでしょう。
- 入力が確率であるときの Keras のバイナリ交差エントロピーロジックを更新します。確率をロジットに変換する代わりに、確率のための交差エントロピー式を使用しています。
- 生 TensorFlow 関数は今ではモデル作成の間に Keras Functional API と連動して使用できます。これは Functional API を使用するときユーザに殆どの場合 Lambda 層を作成する必要を除去します。Lambda 層のように、Variable 作成の結果になったり ops を割り当てる TensorFlow 関数はサポートされません。
- Keras 訓練と検証カーブは同じプロット上に表示されます。
- Layer と Model に dynamic constructor 引数を導入します、これは call メソッドで命令的な制御フローを使用しているときに True に設定されるべきです。
- initializers のコンストラクタの dtype と call の partition_info を除去しています。
- 以下のための v2 モジュールエイリアスを追加します :
- 新しい ops と改良された op 機能
- 幾つかのステートレス map のために OpKernels を追加します。
- AUCCurve と AUCSummationMethod enums のための v2 API を追加します。#tf-metrics-convergence
- tf.math.nextafter op を追加します。
- CompositeTensor 基底クラスを追加します。
- tf.linalg.tridiagonal_solve op を追加します。
- 共通テーブル演算のための opkernel テンプレートを追加します。
- TensorFlow 2.0 の TFLite のためのサポートを追加しました。
- グラフと profile 情報を集めるために summary trace API を追加します。
- tf.gather に batch_dims 引数を追加します。
- グラフ関数モードで add_metric のためのサポートを追加します。
- BatchMatMulV2 のための C++ Gradient を追加します。
- tf.random.binomial を追加しました。
- SparseToDense op のための勾配を追加しました。
- legacy string flat hash map op カーネルを追加します。
- ragged size op を追加してそれを op ディスパッチャーに登録します。
- tf.matmul にブロードキャスティング・サポートを追加します。
- tf.einsum() のための ellipsis (…) サポートを追加します。
- LinearOperator.adjoint と LinearOperator.H (エイリアス) を追加しました。
- tf.linalg.tridiagonal_solve の GPU 実装を追加しました。
- strings.byte_split を追加しました。
- RaggedTensor.placeholder() を追加します。
- 新しい “result_type” パラメータを tf.strings.split に追加します。
- run_eagerly=True で compile された Model の層の上で trainable=False を設定するとき update を無効にするサポートをするために add_update に zero-arg callable を渡すことができます。
- absl::string_view のために variant wrapper を追加します。
- 総ての nest.* メソッドに expand_composites 引数を追加します。
- Squeeze のために pfor converter を追加します。
- tf.tile 勾配のためのバグ修正。
- コアで CriticalSection を tf.CriticalSection として公開します。
- aliases を使用するために Fingerprint64Map を更新します。
- gather_nd のために ResourceVariable サポート。
- ResourceVariable の gather op はバッチ次元をサポートします。
- CPU で Variadic reduce がサポートされます。
- (SparseTensor と RaggedTensor のような) CompositeTensors のための基本的なサポートによって tf.function を拡張します。
- 検索テーブルを作成するためのテンプレートとインターフェイスを追加します。
- 訓練後量子化ツールは複数の演算により共有される重みの量子化をサポートします。このツールのバージョンで作成されたモデルは重みのために INT8 型を使用してこのバージョン以降からのインタープリタでのみ実行可能です。
- 不正な形式の gif 画像はフレームのカラーパレットで境界外へのアクセスという結果になります。今ではこれは修正されました。
- image.resize は今では正しいピクセル中心を考慮して新しいカーネル (incl. anti-aliasing) を用います。
- パフォーマンス
- デフォルトで MKL-DNN contraction を有効にします。MKL-DNN は CPU ベクトル・アーキテクチャに基づいてベストなカーネル実装を動的にディスパッチします。それらを無効にするには、–define=tensorflow_mkldnn_contraction_kernel=0 でビルドします。
- 分散ストラテジーのマルチホスト ncclAllReduce のためのサポート。
- スレッド数が Python ベンチマーク渡り変化することを可能にするフラグを公開します。
- TensorFlow 2.0 開発
- v2 スパース・カテゴリカル交差エントロピーを追加します。
- v2 損失を通して非 Tensor を許容します。
- tf2.0 のための新しい GRU 実装として UnifiedGRU を追加します。2.0 では GRU のためのデフォルトの recurrent 活性化関数を ‘hard_sigmoid’ から ‘sigmoid’ へ、そして ‘reset_after’ を True に変更します。歴史的には recurrent 活性は ‘hard_sigmoid’ です、何故ならばそれは ‘sigmoid’ よりも高速だからです。CPU と GPU モード間の新しい unified backend では、CuDNN カーネルが sigmoid を使用していますので、CPU モードのためのデフォルトもまた sigmoid に変更します。それにより、デフォルト GRU は CPU と GPU カーネルの両者と互換になります。これは GPU を持つユーザにデフォルトで CuDNN カーネルを使用して訓練で 10x パフォーマンス・ブーストを可能にします。これはチェックポイントの互換性を損なう変更であることに注意してください。ユーザが 1.x 事前訓練チェックポイントを使用することを望む場合、1.x 動作に落としこむために層を GRU(recurrent_activation=’hard_sigmoid’, reset_after=False) で構築してください。
- TF 2.0 – ユーザが compile で与えたものを常に反映するようにメトリック名を更新します。次のケースに影響します 1. 名前が ‘accuracy’/’crossentropy’ として与えられるとき 2. エイリアスされた関数名が使用されるとき e.g. ‘mse’ 3. 重み付けられたメトリック名から重み付けられた prefix を除去している
- C Eager API のために Go ラッパーを追加し始めました
- 2.0 で image.resize は今では新しい resize カーネルのための勾配をサポートします。
- v2 API から tf.string_split を除去しました
- tf.io で tf.contrib.proto.* ops を公開します (それらは TF2 で存在します)
- 2.0 で TFLiteConverter API を更新します。from_concrete_function から from_concrete_functions に変更します。
- eager モードで tf.distribute.experimental.MultiWorkerMirroredStrategy が動作することを可能にします。
- v2 hinge と squared hinge 損失でバイナリと -1/1 ラベル入力の両者をサポートします。
- TensorFlow Lite
- 2.0 で tflite_convert のためのサポートを追加します。
- 2.0 API から lite.OpHint, lite.experimental と lite.constant を除去します。
- tf.contrib
- https://arxiv.org/abs/1807.08518 で記述されているような Neural Turing 実装を追加しました。
- TF distributions 上の tf.contrib.timeseries 依存性を除去します。
- tf.data
- Add num_parallel_reads and passing in a Dataset containing filenames into TextLineDataset and FixedLengthRecordDataset
- Going forward we operate in TF 2.0, this change is part of the effort to slowly converting XYZDataset to DatasetV2 type which is the official version going to be used in TF 2.0 and motivated by some compatibility issue found, _BigtableXYZDataset (of type DatasetV2) does not implement the _as_variant_tensor() of DatasetV1, when moving contrib.bigtable to tensorflow_io. DatasetV2 への変換は TF 2.0 へ移行している一方で V1 を維持するためのオーバーヘッドを除去します。
- dataset ops を python Dataset オブジェクト作成の間に (それを iterator 作成時に行なう代わりに) グラフに追加します (または Eager execution でカーネルを作成します)。
- TensorArrays のためのサポートを tf.data Dataset に追加します。
- tf.data 関数を defun を使用するように切り替え、legacy Defun を使用し続けるための非常口を提供します。
- Toolchains
- CUDNN_INSTALL_PATH, TENSORRT_INSTALL_PATH, NCCL_INSTALL_PATH, NCCL_HDR_PATH は deprecated です。
- 代わりに TF_CUDA_PATHS を使用します、これは CUDA ライブラリとヘッダを見つけるために検索されるベースパスのカンマ区切りリストをサポートします。
- TF コードは今では tensorflow_core に存在して tensorflow は単なる virtual pip パッケージです。TensorFlow を使用するプロジェクトのためにコード変更は必要ではありません、変更は透過です。
- XLA
- XLA HLO グラフは今では interactive_graphviz ツールで調査できます。
- Estimator
- tf.estimator.inputs の代わりに tf.compat.v1.estimator.inputs を使用します。
- early_stopping.py の総ての API のために contrib 参照を tf.estimator.experimental.* で置き換えます。
- TPUEstimator or DistributionStrategy のための –iterations_per_loop の「正しい」値を決定することはユーザのために課題であり続けます。ユーザ target TPU 実行時間に基づいて –iterations_per_loop 変数を動的に調整することを提案します、特に訓練モードで TPUEstimator を使用するためには。ユーザは –iterations_per_loop=300s のような値を指定するかもしれません、これはホスト側演算間の TPU 上で消費されるのがおおよそ 300 秒という結果になります。
以上