Path: blob/master/site/ja/guide/migrate/tpu_embedding.ipynb
25118 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.TPUEmbedding
API を使用する場合、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.FeatureConfig
tf.tpu.experimental.embedding.TableConfig
(詳細については、関連する API ドキュメントを参照してください。)
以上でトレーニングデータセットを使用してモデルをトレーニングする準備が整いました。
最後に、評価データセットを使用してモデルを評価します。
次のステップ
TPU 固有の埋め込みの設定の詳細については、API ドキュメントを参照してください。
tfrs.layers.embedding.TPUEmbedding
: 特に特徴量と表の構成、オプティマイザの設定、モデルの作成(Keras functional API を使用するか、サブクラス化tf.keras.Model
を介して)、トレーニング/評価、およびtf.saved_model
を使用したモデルの提供tf.tpu.experimental.embedding.TableConfig
tf.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 から入手できます。