Path: blob/master/site/ja/guide/migrate/tpu_embedding.ipynb
38552 views
Copyright 2021 The TensorFlow Authors.
TPU embedding_columns から TPUEmbedding レイヤーに移行する
このガイドでは、TPU での埋め込みトレーニングを、TPUEstimator を使用した TensorFlow 1 の embedding_column API から TensorFlow 2 の TPUStrategy を使用した TPUEmbedding レイヤー API に移行する方法を示します。
埋め込みは(大きな)行列です。これらは、疎な特徴空間から密なベクトルにマップするルックアップテーブルです。埋め込みは、効率的で密な表現を提供し、特徴間の複雑な類似性と関係を捉えます。
TensorFlow には、TPU でのトレーニング埋め込みの特別なサポートが含まれています。この TPU 固有の埋め込みサポートにより、単一の TPU デバイスのメモリよりも大きい埋め込みをトレーニングし、TPU で疎で不規則な入力を使用できます。
TensorFlow 1 では、
tf.compat.v1.estimator.tpu.TPUEstimatorは、TPU で提供するためのトレーニング、評価、予測、およびエクスポートをカプセル化する高レベル API です。tf.compat.v1.tpu.experimental.embedding_columnを特にサポートしています。トレーニングと評価には、モデル構築(
tf.keras.Model)、オプティマイザ(tf.keras.optimizers.Optimizer)、およびModel.fitまたはtf.functionやtf.GradientTapeを使用したカスタムトレーニングループなど、Keras API と互換性のある TPU 分散ストラテジーtf.distribute.TPUStrategyを使用します。
詳細については、tfrs.layers.embedding.TPUEmbedding レイヤーの API ドキュメント、tf.tpu.experimental.embedding.TableConfig を参照してください。また、追加情報については、tf .tpu.experimental.embedding.FeatureConfig ドキュメントを参照してください。tf.distribute.TPUStrategy の概要については、分散トレーニングガイドと TPU の使用ガイドを参照してください。 TPUEstimator から TPUStrategy に移行する場合は、TPU 移行ガイドを参照してください。
セットアップ
TensorFlow Recommenders をインストールし、必要なパッケージをインポートします。
そして、デモ用に単純なデータセットを準備します。
TensorFlow 1: TPUEstimator を使用して TPU の埋め込みをトレーニングする
TensorFlow 1 では、tf.compat.v1.tpu.experimental.embedding_column API を使用して TPU の埋め込みを設定し、tf.compat.v1.estimator.tpu.TPUEstimator を使用して TPU でモデルをトレーニング/評価します。
入力は、ゼロから TPU 埋め込みテーブルの語彙サイズまでの範囲の整数です。tf.feature_column.categorical_column_with_identity を使用して、入力をカテゴリカル ID にエンコードすることから始めます。入力特徴量は整数値であるため、key パラメータには "sparse_feature" を使用します。num_buckets は埋め込み表の語彙サイズ(10)です。
次に、疎なカテゴリカル入力を tpu.experimental.embedding_column を使用して密な表現に変換します。ここで、dimension は埋め込み表の幅です。num_buckets ごとに埋め込みベクトルを格納します。
ここで、tf.estimator.tpu.experimental.EmbeddingConfigSpec を介して TPU 固有の埋め込み構成を定義します。後で embedding_config_spec パラメータとして tf.estimator.tpu.TPUEstimator に渡します。
次に、TPUEstimator を使用するには、以下を定義します。
トレーニングデータの入力関数
評価データの評価入力関数
TPUEstimatorに特徴とラベルを使用してトレーニング演算を定義する方法を指示するためのモデル関数
これらの関数を定義したら、クラスタ情報を提供する tf.distribute.cluster_resolver.TPUClusterResolver と tf.compat.v1.estimator.tpu.RunConfig オブジェクトを作成します。
定義したモデル関数に加えて、TPUEstimator を作成できるようになりました。ここでは、チェックポイントの保存をスキップしてフローを簡素化します。次に、TPUEstimator のトレーニングと評価の両方のバッチサイズを指定します。
TPUEstimator.train を呼び出して、モデルのトレーニングを開始します。
次に、TPUEstimator.evaluate を呼び出して、評価データを使用してモデルを評価します。
TensorFlow 2: TPUStrategy を使用して TPU の埋め込みをトレーニングする
TensorFlow 2 で TPU ワーカーをトレーニングするには、tf.distribute.TPUStrategy を Keras API とともに使用して、モデルの定義とトレーニング/評価を行います。(Keras Model.fit とカスタムトレーニングループ(tf.function と tf.GradientTape を使用)を使用したトレーニングのその他の例については、TPU の使用ガイドを参照してください。)
リモートクラスタに接続して TPU ワーカーを初期化するには初期化作業を行う必要があります。まず TPUClusterResolver を作成してクラスタ情報を提供し、クラスタに接続します。(詳しくは、TPU の使用ガイドの TPU 初期化 セクションを参照してください)。
次に、データを準備します。これは TensorFlow 1 の例でのデータセット作成方法と似ていますが、データセット関数に params ディクショナリではなく tf.distribute.InputContext オブジェクトが渡される点が異なります。このオブジェクトを使用して、ローカルバッチサイズ(およびこのパイプラインが対象とするホスト、データを適切に分割できるようにする)を決定できます。
tfrs.layers.embedding.TPUEmbeddingAPI を使用する場合、Dataset.batchでデータセットをバッチ処理するときにdrop_reminder=Trueオプションを含めることが重要です。TPUEmbeddingには固定のバッチサイズが必要なためです。さらに、評価とトレーニングが同じデバイスセットで行われている場合は、同じバッチサイズを使用する必要があります。
最後に、
tf.keras.utils.experimental.DatasetCreatorを特殊な入力オプションexperimental_fetch_to_device=Falseと共にtf.distribute.InputOptionsで使用する必要があります(ストラテジー固有の構成を保持します)。以下に例を示します
次に、データの準備ができたら、TPUStrategy を作成し、このストラテジーの範囲(Strategy.scope)でモデル、指標、およびオプティマイザを定義します。
Model.compile で steps_per_execution の数値を選択する必要があります。これは、各 tf.function 呼び出し中に実行するバッチの数を指定するためです。これはパフォーマンスに重要です。この引数は、TPUEstimator で使用される iterations_per_loop に似ています。
tf.tpu.experimental.embedding_column(および tf.tpu.experimental.shared_embedding_column)を介して TensorFlow 1 で指定された特徴量と表の構成は、TensorFlow 2 では 2 つの構成オブジェクト直接指定できます。
tf.tpu.experimental.embedding.FeatureConfigtf.tpu.experimental.embedding.TableConfig
(詳細については、関連する API ドキュメントを参照してください。)
以上でトレーニングデータセットを使用してモデルをトレーニングする準備が整いました。
最後に、評価データセットを使用してモデルを評価します。
次のステップ
TPU 固有の埋め込みの設定の詳細については、API ドキュメントを参照してください。
tfrs.layers.embedding.TPUEmbedding: 特に特徴量と表の構成、オプティマイザの設定、モデルの作成(Keras functional API を使用するか、サブクラス化tf.keras.Modelを介して)、トレーニング/評価、およびtf.saved_modelを使用したモデルの提供tf.tpu.experimental.embedding.TableConfigtf.tpu.experimental.embedding.FeatureConfig
TensorFlow 2 の TPUStrategy の詳細については、次のリソースを参照してください。
ガイド: TPU の使用(Keras
Model.fitを使用したトレーニング /tf.distribute.TPUStrategyを使用したカスタムトレーニングループと、tf.functionでパフォーマンスを改善するためのヒントを含む)
トレーニングのカスタマイズの詳細については、次を参照してください。
ガイド: トレーニングループの新規作成
TPU(Google の機械学習専用 ASIC)は、Google Colab、TPU Research Cloud、Cloud TPU から入手できます。
TensorFlow.org で表示
Google Colab で実行
GitHub でソースを表示
ノートブックをダウンロード