ホーム » Tensor2Tensor

Tensor2Tensor」カテゴリーアーカイブ

TensorFlow : Tensor2Tensor

TensorFlow : Tensor2Tensor (翻訳)

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 07/11/2018 (v1.6.6)

* Tensor2Tensor は 2017 年 6 月に v1.0 が公開されましたが、1 年が経過して現在では v1.6.6 まで更新されていますので、ドキュメントを再翻訳します。
* 本ページは、github の tensorflow/tensor2tensor の README.md – “Tensor2Tensor” を翻訳した上で適宜、補足説明したものです:

* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

本文

Tensor2Tensor, あるいは短縮して T2T は、深層学習をより利用しやすくて ML 研究を加速化するために設計された深層学習モデルとデータセットのライブラリです。T2T は Google Brain チームとユーザ・コミュニティ内の研究者と技術者により実際に使用されて保守されています。

 

提案されるデータセットとモデル

以下に、(適切な問題上で適切なモデルを訓練するとき) T2T で解決できる多くのタスクをリストアップします。問題とモデルを与えて (私達のセットアップで) 上手く動作することが分かっているハイパーパラメータの設定を提案します。私達は通常は Cloud TPU か 8-GPU マシン上で実行します ; 異なるセットアップ上で実行する場合にはハイパーパラメータを変更する必要があるかもしれません。

 

画像分類

画像分類については、多くの標準的なデータセットを持ちます :

  • ImageNet (巨大データセット): –problem=image_imagenet, またはリスケールされたバージョンの一つ (image_imagenet224, image_imagenet64, image_imagenet32)
  • CIFAR-10: –problem=image_cifar10 (またはデータ増強を無効にするために –problem=image_cifar10_plain)
  • CIFAR-100: –problem=image_cifar100
  • MNIST: –problem=image_mnist

ImageNet については、ResNet か Xception を使用することを提案します、i.e. use –model=resnet –hparams_set=resnet_50 または –model=xception –hparams_set=xception_base です。Resnet は ImageNet 上で 76% top-1 精度以上に到達するはずです。

CIFAR と MNIST については、shake-shake モデルを試すことを提案します: –model=shake_shake –hparams_set=shakeshake_big です。–train_steps=700000 で訓練されたこの設定は CIFAR-10 上で 97% 近い精度を生成するはずです。

 

言語モデリング

言語モデリングについては、T2T でこれらのデータセットを持ちます :

  • PTB (小さいデータセット): 単語レベル・モデリングのための –problem=languagemodel_ptb10k と文字レベル・モデリングのための –problem=languagemodel_ptb_characters
  • LM1B (10 億単語の語彙): 部分語レベル・モデリングのための –problem=languagemodel_lm1b32k と文字レベル・モデリングのための –problem=languagemodel_lm1b_characters

このタスク上では –model=transformer で始め、そして PTB のために –hparams_set=transformer_small を使用して LM1B のために –hparams_set=transformer_base を使用することを提案します。

 

センチメント解析

センテンスのセンチメントを認識するタスクのためには、次を使用してください :

  • IMDB データセット: –problem=sentiment_imdb

ここでは –model=transformer_encoder を使用することを提案します、そしてそれは小さいデータセットですので、–hparams_set=transformer_tiny を試して少ないステップ (e.g., –train_steps=2000) のために訓練してください。

 

スピーチ認識

スピーチ-to-テキストのためには、T2T でこれらのデータセットを持ちます :

  • Librispeech (US English): セット全体のための –problem=librispeech そしてより小さいけれども素晴らしくフィルタされたパートのための –problem=librispeech_clean
  • Mozilla Common Voice (US English): セット全体のための –problem=common_voice そして品質チェックされたサブセットのための –problem=common_voice_clean

 

要約

より長いテキストをより短いテキストに要約するためには、これらのデータセットを持ちます :

  • 数センテンスに要約された CNN/DailyMail 記事: –problem=summarize_cnn_dailymail32k

このタスクのためには –model=transformer と –hparams_set=transformer_prepend を使用することを提案します。これは良い ROUGE スコアを生成します。

 

翻訳

T2T には多くの翻訳データセットがあります :

  • 英独: –problem=translate_ende_wmt32k
  • 英仏: –problem=translate_enfr_wmt32k
  • 英語-チェコ語: –problem=translate_encs_wmt32k
  • 英中: –problem=translate_enzh_wmt32k
  • 英越 (英語-ベトナム語): –problem=translate_envi_iwslt32k

problem 名に _rev を付加することで他の方向の翻訳を得ることができます、e.g., 独英のためには –problem=translate_ende_wmt32k_rev を使用します (t2t-datagen –problem=translate_ende_wmt32k で元データをダウンロードする必要が依然としてあることに注意してください)。

総ての翻訳問題に対して、Transformer モデルを試すことを提案します : –model=transformer。まずは基本設定 –hparams_set=transformer_base を試すのがベストです。8 GPU 上で 300K ステップ訓練するとき、英独データセット上でこれはおよそ 28 の BLEU スコアに達するはずで、これは最先端に近いです。シングル GPU 上で訓練する場合には、–hparams_set=transformer_base_single_gpu 設定を試してください。非常に良い結果やより巨大なデータセット (e.g., 英仏) のためには、–hparams_set=transformer_big で大きなモデルを試してください。

 

基本

ウォークスルー

WMT データ上で Attention Is All You Need からの Transformer モデルを使用して良い英独翻訳モデルを訓練するウォークスルーがここにあります :

pip install tensor2tensor

# See what problems, models, and hyperparameter sets are available.
# You can easily swap between them (and add new ones).
t2t-trainer --registry_help

PROBLEM=translate_ende_wmt32k
MODEL=transformer
HPARAMS=transformer_base_single_gpu

DATA_DIR=$HOME/t2t_data
TMP_DIR=/tmp/t2t_datagen
TRAIN_DIR=$HOME/t2t_train/$PROBLEM/$MODEL-$HPARAMS

mkdir -p $DATA_DIR $TMP_DIR $TRAIN_DIR

# Generate data
t2t-datagen \
  --data_dir=$DATA_DIR \
  --tmp_dir=$TMP_DIR \
  --problem=$PROBLEM

# Train
# *  If you run out of memory, add --hparams='batch_size=1024'.
t2t-trainer \
  --data_dir=$DATA_DIR \
  --problem=$PROBLEM \
  --model=$MODEL \
  --hparams_set=$HPARAMS \
  --output_dir=$TRAIN_DIR

# Decode

DECODE_FILE=$DATA_DIR/decode_this.txt
echo "Hello world" >> $DECODE_FILE
echo "Goodbye world" >> $DECODE_FILE
echo -e 'Hallo Welt\nAuf Wiedersehen Welt' > ref-translation.de

BEAM_SIZE=4
ALPHA=0.6

t2t-decoder \
  --data_dir=$DATA_DIR \
  --problem=$PROBLEM \
  --model=$MODEL \
  --hparams_set=$HPARAMS \
  --output_dir=$TRAIN_DIR \
  --decode_hparams="beam_size=$BEAM_SIZE,alpha=$ALPHA" \
  --decode_from_file=$DECODE_FILE \
  --decode_to_file=translation.en

# See the translations
cat translation.en

# Evaluate the BLEU score
# Note: Report this BLEU score in papers, not the internal approx_bleu metric.
t2t-bleu --translation=translation.en --reference=ref-translation.de

 

インストール

# Assumes tensorflow or tensorflow-gpu installed
pip install tensor2tensor

# Installs with tensorflow-gpu requirement
pip install tensor2tensor[tensorflow_gpu]

# Installs with tensorflow (cpu) requirement
pip install tensor2tensor[tensorflow]

バイナリ :

# Data generator
t2t-datagen

# Trainer
t2t-trainer --registry_help

ライブラリ使用方法 :

python -c "from tensor2tensor.models.transformer import Transformer"

 

特徴

  • 多くの最先端で基準となるモデルが組み込まれていて新しいモデルは簡単に追加できます (issue をオープンするかプルリクエストしてください!)
  • 様式 – テキスト、音声、画像 – に渡る多くのデータセットが生成と使用のために利用可能で、新しいものも簡単に追加できます。
  • モデルは任意のデータセットと入力モードで使用できます (あるいは複数でさえも) ; 総ての様式特定の処理 (e.g. テキスト・トークンのための埋め込み検索) は Modality オブジェクトで成され、これはデータセット/タスク仕様で特徴毎に指定されます。
  • マルチ GPU マシンと同期 (1 マスター、多数ワーカー) と非同期 (パラメータ・サーバを通して同期する独立的なワーカー) 分散訓練 のサポート。
  • データ生成スクリプト t2t-datagen と訓練スクリプト t2t-trainer でコマンドライン・フラグによるデータセットとモデル内の容易なスワップ。
  • Google Cloud MLCloud TPUs 上の訓練。

 

T2T 概要

データセット

Datasets は tensorflow.Example protocol buffers で TFRecord ファイル上に総て標準化されています。総てのデータセットは データ generator で登録されて生成され、多くの一般的なシークエンス・データセットは生成と使用のために既に利用可能です。

 

問題と様式

Problems はデータセットとタスクのための訓練時のハイパーパラメータを主として入力と出力様式 (e.g. シンボル、画像、音声、ラベル) と (利用可能であれば) 語彙を設定することにより定義します。総ての problems は problem_hparams.py で定義されるか、@registry.register_problem で登録されます (総ての利用可能な problems のリストを見るためには t2t-datagen を実行してください)。Modalities (様式)modality.py で定義され、models が様式独立な tensor を扱えるように入力と出力データ型を抽象化します。

 

モデル

T2TModel は、入出力様式やタスク独立に、中心的な tensor-to-tensor 変換を定義します。Models は密 tensor を取って密 tensor を生成します、それから最後のステップでタスク依存の様式で変換されるかもしれません (e.g. クラスに渡る softmax のためのロジットを生成するために最後の線形変換を通して供給等)。総てのモデルは models サブパッケージ でインポートされ、(t2t_model.py で定義された) T2TModel から継承されて @registry.register_model で登録されます。

 

ハイパーパラメータ・セット

Hyperparameter セット@registry.register_hparams のコードで定義されて登録され、tf.contrib.training.HParams オブジェクトでエンコードされます。HParams は problem 仕様と model の両者で利用可能です。hyperparameter の基本セットは common_hparams.py で定義されて hyperparameter セット関数は他の hyperparameter セット関数を構成できます。

 

トレーナー

trainer バイナリは訓練、評価、そして推論のための主要なエントリポイントです。ユーザは –model, –problem と –hparams_set フラグを使用して problems, models, そして hyperparameter セット間で容易に切り替えることができます。特定の hyperparameters は –hparams フラグでオーバーライド可能です。–schedule と関連フラグはローカルと分散訓練/評価を制御します (distributed training ドキュメント)。

 

貴方自身のコンポーネントを追加する

T2T のコンポーネントは、新しいものを容易に追加してコマンドライン・フラグでそれらの中で容易に交換することを可能にする、中心的な登録メカニズムを使用して登録されます。t2t-trainer で –t2t_usr_dir フラグを指定することにより T2T コードベースを編集することなしに貴方自身のコンポーネントを追加することができます。

models, hyperparameter sets, modalities と problems に対してそのようにできます。サンプルのユーザ・ディレクトリについては example_usr_dir を見てください。

 

データセットを追加する

新しいデータセットを追加するためには、Problem をサブクラス化してそれを @registry.register_problem で登録してください。サンプルのためには TranslateEndeWmt8k を見てください。

また data generators README も見てください。

 

ペーパー

(訳注: citation 表記については 原文 を確認してください。)

Tensor2Tensor は多くの最先端技術のモデルと深層学習メソッドを開発するために使用されました。ここでは、最初から T2T に基づいて、T2T を紹介する Google Research ブログ記事 で説明されている方法でその特徴とアーキテクチャから恩恵を受けた幾つかのペーパーをリストアップします。

Note:これは公式 Google プロダクトではありません。

 
以上






AI導入支援 #2 ウェビナー

スモールスタートを可能としたAI導入支援   Vol.2
[無料 WEB セミナー] [詳細]
「画像認識 AI PoC スターターパック」の紹介
既に AI 技術を実ビジネスで活用し、成果を上げている日本企業も多く存在しており、競争優位なビジネスを展開しております。
しかしながら AI を導入したくとも PoC (概念実証) だけでも高額な費用がかかり取組めていない企業も少なくないようです。A I導入時には欠かせない PoC を手軽にしかも短期間で認知度を確認可能とするサービの紹介と共に、AI 技術の特性と具体的な導入プロセスに加え運用時のポイントについても解説いたします。
日時:2021年10月13日(水)
会場:WEBセミナー
共催:クラスキャット、日本FLOW(株)
後援:働き方改革推進コンソーシアム
参加費: 無料 (事前登録制)
人工知能開発支援
◆ クラスキャットは 人工知能研究開発支援 サービスを提供しています :
  • テクニカルコンサルティングサービス
  • 実証実験 (プロトタイプ構築)
  • アプリケーションへの実装
  • 人工知能研修サービス
◆ お問合せ先 ◆
(株)クラスキャット
セールス・インフォメーション
E-Mail:sales-info@classcat.com