Translate

2017年7月21日金曜日

TensorFlow 1.3.0 rc0 がリリースされたことを知る

今朝、Twitterのタイムラインに

があがっていたので、リリースノートを勝手翻訳してみた。
以下参考にする方は at your own risk で参照のこと。

-----
TensorFlow 1.3.0-rc0


Release.1.3.0


主な機能と改善点



  • Tensorflowライブラリにcanned estimatorを追加。追加されたestimatorsのリスト:DNNClassifier、DNNRegressor、LinearClassifer、LinearRegressor、DNNLinearCombinedClassifier、DNNLinearCombinedRegressor
  • すべての組み込みバイナリをcuDNN 6でビルド。
  • GCSファイルシステムにファイルキャッシュを追加し、ファイル内容の設定を最大限に変更可能に。これにより、ファイルの内容をクローズ/オープン境界でキャッシュ可能に。
  • tf.gatherに軸パラメータを追加。
  • tf.padにconstant_valuesキーワードを追加。
  • データセットのインタリーブ変換を追加。
  • ConcatenateDatasetを追加して、2つのデータセットを連結。
  • Poetsトレーニングスクリプト用のTensorFlowにMobilenetサポートを追加。
  • 設定可能なブロックサイズとカウントでブロックキャッシュをGCSファイルシステムに追加。
  • SinhArcSinh bijectorが追加。
  • Dataset.list_files APIを追加。
  • Cloud TPUの新しい操作とPythonバインディングを紹介。
  • tensorflow-androidとの対称性のためのTensorFlow-iOS CocoaPodの追加
  • ClusterResolversの基本的な実装を紹介。
  • TensorShapeとPartialTensorShapeのメモリ表現を統一。その結果、テンソルの最大寸法は255でなく254に。
  • バージョン1.8.1を使用するようにLIBXSMMへの参照を変更。
  • TensorFlow Debugger(tfdbg):数値テンソル値のサマリーを-sフラグで表示して、print_tensorまたはptをコマンド。
  • 統計配布ライブラリtf.distributionsの初期リリース。
  • unary tf.whereとtf.nn.top_kのGPUカーネルと速度の改善。
  • 単調 Attentionラッパ が tf.contrib.seq2seq に追加。


APIの変更点



  • tf.RewriterConfigは1.2のリリース候補で利用可能になった後、Python APIから削除(これは実際のリリースではない)。 グラフの書き換えは、tf.RewriterConfigとしてではなく、利用可能。 代わりに、明示的なインポートを追加。
  • ネストされた構造を必要とする tf.contrib.data.Dataset APIへの変更を打ち切り。 リストは暗黙的に tf.Tensor に変換される。 既存のコードでリストの使用をタプルに変更する必要があるかもしれない。 さらに、 dicts はネストされた構造としてサポート。


contrib APIへの変更



  • ランク損失を改善可能な sampled-softmax variantを含む tf.contrib.nn.rank_sampled_softmax_lossを追加。
  • tf.contrib.metrics.{streaming_covariance, streaming_pearson_correlation} は、1単位の質量以下を見たときに nan を返すように変更。
  • contrib に時系列モデルを追加。 詳細は contrib/timeseries/ README.md を参照のこと。
  • tensorflow/contrib/lite/schema.fbs に完全一致を追加。


バグ修正とその他の変更


  • Pythonでint64 Tensorインデックスを使用してスライスすると、 'strides' と 'begin' dtype の不一致を修正。
  • 改良された畳み込みパディングのドキュメント。
  • タグ定数 gpu をGPUサポート付きのグラフに追加。
  • saved_model.utils は SparseTensors を透過的にサポートするように。
  • 非最大抑制のより効率的な実装。
  • 既にサポートしているオンライン L2 に加えて、 FtrlOptimizer に縮小タイプの L2 のサポートを追加。
  • モーメント計算における負の分散を修正。
  • UniqueOp ベンチマークテストを展開し、より多くの衝突のケースをカバー。
  • Mac上のGCSファイルシステムの安定性を向上。
  • HloCostAnalysis に時間推定を追加。
  • Estimator のコンストラクタの params がユーザー提供のパラメータの deepcopy ではないというバグを修正。このバグにより、誤って Estimator を作成した後にパラメータを変更して、未定義の動作が発生する可能性があった。
  • saver.restoreのsave_path のチェックを追加。
  • device_mgr のレガシ名でデバイスを登録すると、クラスタスペックで伝播された設定への移行が容易に。
  • VectorExponential がディストリビューションに追加。
  • bitwise_and 、 bitwise_or 、 bitwise_xor 、および invert 関数を含むビット単位のモジュールを追加。
  • 固定グリッドODE統合ルーチンを追加。
  • ScipyOptimizerInterface に境界を渡すことを許可。
  • fft_length パラメータの tf.spectral.rfft&tf.spectral.irfft を修正。
  • 'predict' メソッドを使用してエクスポートされたモデルシグネチャでは、入力キーと出力キーが無視され、  'inputs' と 'outputs' に書き換えられなくなった。モデルが1.2より前に異なる名前でエクスポートされ、テンソルフロー/サービングで提供されたモデルは、 'inputs' と 'outputs' を使用してリクエストを受け入れる。 1.2から、そのようなモデルはエクスポート中に指定されたキーを受け入れる。したがって、 'inputs' と 'outputs' を使った推論要求が失敗することがある。これを修正するには、トレーナコードで使用される実際の入力および出力キーを使用して要求を送信するように推論クライアントを更新するか、逆にトレーナコードを更新して入力および出力Tensorsの入力と出力をそれぞれ指定する。 'classify' と 'regress' メソッドを使用するシグネチャは、この変更の影響を受けない。入力キーと出力キーを以前と同じように標準化し続ける。
  • データセットAPIにメモリ内キャッシュを追加。
  • データセットイテレータのデフォルトの end_of_sequence 変数を false に設定。
  • [パフォーマンス] nn.bias_add を使用して use_bias = True に 2x を設定すると、 tf.layers.con2d のパフォーマンスが向上する。
  • iOSのサンプルを更新してCocoaPodを使用し、 tensorflow/examples/ios に移動。
  • tf.summary ops に family= attribute を追加して、Tensorboard で使用されるタブ名を制御して要約を整理できるように。
  • GPUが設定されている場合、 --config = cuda は不要に。代わりに、 configure スクリプトでGPUが要求されている場合は自動的にGPU用に構築される。
  • CPU/GPU多項式における小さな確率の誤ったサンプリングを修正。
  • セッション内で list_devices() APIを追加して、クラスタ内のデバイスを一覧表示。さらに、この変更により、 ListDevices マスタAPIがセッションの指定をサポートするように。
  • パラメータ化された分離可能な畳み込みの使用を許可。
  • TensorForest重回帰バグ修正。
  • フレームワークは現在 armv7 をサポート、 cocoapods.org は正しいページを表示するようになった。
  • CocoaPods用のiOSフレームワークを作成するためのスクリプト。
  • TensorFlowのAndroidリリースは、アプリケーションへの統合を容易にするため、 jcenter にプッシュされるように。詳細については、 https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/android/README.md を参照のこと。
  • マルチGPU設定で tfdbg が機能しなくなるバグを修正。
  • tf.Session.make_callable で tfdbg が動作しないバグを修正。

貢献者の方々への謝辞


このリリースには、Googleの多くの人々からの寄付と次のものが含まれています:

4F2E4A2E, Adriano Carmezim, Adrià Arrufat, Alan Yee, Alex Lattas, Alex Rothberg, Alexandr Baranezky, Ali Siddiqui, Andreas Solleder, Andrei Costinescu, Andrew Hundt, Androbin, Andy Kernahan, Anish Shah, Anthony Platanios, Arvinds-Ds, b1rd, Baptiste Arnaud, Ben Mabey, Benedikt Linse, Beomsu Kim, Bo Wang, Boyuan Deng, Brett Koonce, Bruno Rosa, Carl Thomé, Changming Sun, Chase Roberts, Chirag Bhatia, Chris Antaki, Chris Hoyean Song, Chris Tava, Christos Nikolaou, Croath Liu, cxx, Czxck001, Daniel Ylitalo, Danny Goodman, Darren Garvey, David Brailovsky, David Norman, DavidNorman, davidpham87, ddurham2, Dhruv, DimanNe, Drew Hintz, Dustin Tran, Earthson Lu, ethiraj, Fabian Winnen, Fei Sun, Freedom" Koan-Sin Tan, Fritz Obermeyer, Gao, Xiang, Gautam, Guenther Schmuelling, Gyu-Ho Lee, Hauke Brammer, horance, Humanity123, J Alammar, Jayeol Chun, Jeroen BéDorf, Jianfei Wang, jiefangxuanyan, Jing Jun Yin, Joan Puigcerver, Joel Hestness, Johannes Mayer, John Lawson, Johnson145, Jon Malmaud, Jonathan Alvarez-Gutierrez, Juang, Yi-Lin, Julian Viereck, Kaarthik Sivashanmugam, Karl Lessard, karl@kubx.ca, Kevin Carbone, Kevin Van Der Burgt, Kongsea, ksellesk, lanhin, Lef Ioannidis, Liangliang He, Louis Tiao, Luke Iwanski, LáSzló Csomor, magixsno, Mahmoud Abuzaina, Marcel Hlopko, Mark Neumann, Maxwell Paul Brickner, mdfaijul, MichaëL Defferrard, Michał JastrzęBski, Michele Colombo, Mike Brodie, Mosnoi Ion, mouradmourafiq, myPrecious, Nayana Thorat, Neeraj Kashyap, Nelson Liu, Niranjan Hasabnis, Olivier Moindrot, orome, Pankaj Gupta, Paul Van Eck, peeyush18, Peng Yu, Pierre, preciousdp11, qjivy, Raingo, raoqiyu, ribx, Richard S.Imaoka, Rishabh Patel, Robert Walecki, Rockford Wei, Ryan Kung, Sahil Dua, Sandip Giri, Sayed Hadi Hashemi, sgt101, Shitian Ni, Shuolongbj, Siim PõDer, Simon Perkins, sj6077, SOLARIS, Spotlight0xff, Steffen Eberbach, Stephen Fox, superryanguo, Sven Mayer, Tapan Prakash, Tiago Morais Morgado, Till Hoffmann, Tj Rana, Vadim Markovtsev, vhasanov, Wei Wu, windead, Yan (Asta) Li, Yan Chen, Yann Henon, Yi Wang, Yong Tang, yorkie, Yuan (Terry) Tang, Yuxin Wu, zhengjiajin, zhongzyd, 黄璞

私たちは、問題を提起したか、解決するのを助け、質問し、質問に答えた人全員にも感謝しています。


ダウンロード




-----

canned estimatorってたしかDevSummitでいっていた、学習済みモデルのことだとおもっていたが分類器と回帰で学習済みってことはなさそうだけど..

さわってみないと、わからんか..


あと、これみよがしに

Monotonic Attention wrappers added to tf.contrib.seq2seq.

と書いてあるってことは、MonotonicでないMulti Head Self-AttentionT2Tを見てねってことなのだろう..

なお、もちろんDocker Hubのtensorflow/tensorflowlatest1.3.0-rc0になっていた。


p.s.
2017年8月7日現在は、rc2がでています。

https://twitter.com/tensorflow/status/893593513954344960

2017年7月10日月曜日

Tensor2Tensor Transformers の README.md を翻訳してワークフローを動かしはじめた



今日、Twitterに流れてきたリンク

T2T: Tensor2Tensor Transformers
https://github.com/tensorflow/tensor2tensor

で T2T なるOSSがあることを知った。
Google正規プロジェクトモノではないらしいが..

ということで GitHub の README.md を翻訳してみた。
以下、翻訳内容だが、参照の際は at your own risk でお願いします。

-----

T2T: Tensor2Tensor Transformers


T2T はモジュール化された拡張可能なライブラリで、TensorFlowを使用した教師あり学習とSequneceタスクのサポートのためのバイナリです。 Google Brainチーム内の研究者やエンジニアが積極的に使用し維持しています。 Tensor2Tensorについて詳しくは、 最近のGoogle Research Blogの記事 をご覧ください。

私たちはT2Tを拡張する上であなたと協力したいと思っていますので、 GitHubでIssueを開  いたり、プルリクエストを送信してデータセットやモデルを追加してください。 詳細と未解決の問題については、弊社の貢献文書  をご覧ください。 そして、Gitterで我々や他のユーザたちとチャットしてください。



ウォークスルー


ここでは、論文 "Attention Is All You Need" にある WMTデータ上でTransformerモデルを使用して、英語からドイツ語への翻訳モデルをトレーニングするウォークスルーを紹介します。



pip install tensor2tensor

#どの問題、モデル、およびハイパーパラメータセットが利用可能かを確認すること。
#それらの間を簡単に入れ替えることができます(新しいものを追加することも可能)。

t2t-trainer --registry_help

PROBLEM=wmt_ende_tokens_32k
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

# データ生成
t2t-datagen \
  --data_dir=$DATA_DIR \
  --tmp_dir=$TMP_DIR \
  --num_shards=100 \
  --problem=$PROBLEM

cp $TMP_DIR/tokens.vocab.* $DATA_DIR

# トレーニング
# out of memoryとなる場合は、
# --hparams='batch_size=2048' (もしくは1024)を追加してください。
t2t-trainer \
  --data_dir=$DATA_DIR \
  --problems=$PROBLEM \
  --model=$MODEL \
  --hparams_set=$HPARAMS \
  --output_dir=$TRAIN_DIR

# デコード

DECODE_FILE=$DATA_DIR/decode_this.txt
echo "Hello world" >> $DECODE_FILE
echo "Goodbye world" >> $DECODE_FILE

BEAM_SIZE=4
ALPHA=0.6

t2t-trainer \
  --data_dir=$DATA_DIR \
  --problems=$PROBLEM \
  --model=$MODEL \
  --hparams_set=$HPARAMS \
  --output_dir=$TRAIN_DIR \
  --train_steps=0 \
  --eval_steps=0 \
  --decode_beam_size=$BEAM_SIZE \
  --decode_alpha=$ALPHA \
  --decode_from_file=$DECODE_FILE

cat $DECODE_FILE.$MODEL.$HPARAMS.beam$BEAM_SIZE.alpha$ALPHA.decodes



インストール




# tensorflowまたはtensorflow-gpuがインストールされていると仮定
pip install tensor2tensor

# tensorflow-gpuの場合
pip install tensor2tensor[tensorflow_gpu]

# tensorflow(cpu)の場合
pip install tensor2tensor[tensorflow]
 


バイナリ:
# データ生成
t2t-datagen

# トレーナー
t2t-trainer --registry_help
 
 
ライブラリの使い方:
python -c "from tensor2tensor.models.transformer import Transformer"



機能



  • 多くの最先端のモデルとベースラインモデルが組み込まれており、新しいモデルを簡単に追加できます(問題を開くかプルリクエストしてください)。
  • モダリティ(テキスト、オーディオ、画像)の生成と使用が可能な多くのデータセット、および新しいものを簡単に追加できます(Issueを開くか公開データセットを pull request !)。
  • モデルは、任意のデータセットおよび入力モード(または複数のモード)で使用できます。すべてのモダリティ固有の処理(例えば、テキストトークンのためのルックアップの埋め込み)は、データセット/タスク仕様の特徴ごとに指定された Modality オブジェクトで行われます。
  • マルチGPUマシンと同期(1マスター、多くのワーカー)および非同期(パラメタサーバーを介して同期する独立したワーカー)分散トレーニングをサポート。
  • データ生成スクリプト t2t-datagen とトレーニングスクリプト t2t-trainer を使用して、コマンドラインフラグでデータセットとモデル間を簡単にスワップします。

T2T 概要

データセット

データセット はすべて tensorflow.Exzample プロトコルバッファの TFRecord ファイルで標準化されています。すべてのデータセットは データジェネレータ  で登録および生成され、多くの共通シーケンスデータセットはすでに生成および使用可能です。



問題およびモダリティ


問題 は、主に入出力 モダリティ (記号、画像、音声、ラベルなど)とボキャブラリ(該当する場合)を設定することによって、データセットとタスクのトレーニング時のハイパーパラメータを定義します。 すべての問題は problem_hparams.py で定義されています。 modality.py で定義されている モダリティ は、モデルがモダリティに依存しないテンソルを扱うように入出力データ型を抽象化します。



モデル


T2TModels は、入力/出力モダリティまたはタスクとは独立したコア tensor-to-tensor 変換を定義します。 モデルは高密度のテンソルを取り込み、高密度のテンソルを生成し、タスクに依存するモダリティ(例えば、最終的な線形変換を介して与えられ、クラスに対するソフトマックスの logits を生成する)によって最後のステップで変換される。 すべてのモデルは models.py にインポートされ、 t2t_model.py で定義された T2TModel から継承されます。


  • そして、 @registry.register_modelで登録されてます。



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


ハイパーパラメータセット は、 @registry.register_hparams で定義され、コードで登録され、 tf.contrib.training.HParams オブジェクトにエンコードされます。 HParam は問題仕様とモデルの両方に対応しています。 ハイパーパラメータの基本セットは common_hparams.py で定義され、ハイパーパラメータセット関数は他のハイパーパラメータセット関数を構成することができます。



トレーナ


トレーナ バイナリは、トレーニング、評価、および推論の主要なエントリポイントです。 --model --problems --hparams_set フラグを使用することで、ユーザは問題、モデル、およびハイパーパラメータセットを簡単に切り替えることができます。 特定のハイパーパラメータは、 --hparams フラグで上書きすることができます。 --schedule   および関連フラグは、ローカルおよび分散トレーニング/評価( "分散トレーニングドキュメント"  )を制御します。



コンピュータの追加


T2Tのコンポーネントは、簡単に新しいものを追加し、コマンドラインフラグで簡単に交換できる中央登録メカニズムを使用して登録されます。 t2t-trainerに--t2t_usr_dirフラグを指定することで、T2Tコードベースを編集せずに独自のコンポーネントを追加できます。

現在、モデル、ハイパーパラメータセット、およびモダリティでこれを行うことができます。 あなたのコンポーネントが他の人にとって役に立ちそうな場合はプルリクエストを提出してください。

新しいハイパーパラメータセットを使用した例を次に示します:


# ~/usr/t2t_usr/my_registrations.py 内

from tensor2tensor.models import transformer
from tensor2tensor.utils import registry

@registry.register_hparams
def transformer_my_very_own_hparams_set():
  hparams = transformer.transformer_base()
  hparams.hidden_size = 1024
  ...


# ~/usr/t2t_usr/__init__.py 内
import my_registrations


t2t-trainer --t2t_usr_dir=~/usr/t2t_usr --registry_hel

登録されたHParamの下に、 transformer_my_very_own_hparams_set が表示されます。これはコマンドラインで --hparams_set フラグを使って直接使用できます。


データセットの追加


"データ生成 README" を参照のこと。

注:これは公式のGoogleサービスではありません。
---------

とりあえずワークフロー通りに打ち込んでいるのだけど、
データ取得がおもいのほか時間がかかっていて
もう1時間位たってるのだけど、まだおわっていない...

...やるしかないか

(翌日)
ようやくダウンロードおわっていたが、$HOMEを使ってるせいでパンパン。

でトレーニングを開始。

..問題なく始まった..とおもったらすぐに以下のメッセージが出て終了。

ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape[204,40,1,2048]
         [[Node: body/model/parallel_0/body/decoder/layer_0/conv_hidden_relu/Greater = Greater[T=DT_FLOAT,
 _device="/job:localhost/replica:0/task:0/gpu:0"](body/model/parallel_0/body/decoder/layer_0/conv_hidden_r
elu/conv1_single/Relu, body/model/parallel_0/body/decoder/layer_0/conv_hidden_relu/Greater/y)]]
         [[Node: body/model/parallel_0/body/decoder/layer_1/decoder_self_attention/dot_product_attention/M
ax/_2685 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device
="/job:localhost/replica:0/task:0/gpu:0", send_device_incarnation=1, tensor_name="edge_10090_body/model/pa
rallel_0/body/decoder/layer_1/decoder_self_attention/dot_product_attention/Max", tensor_type=DT_FLOAT, _de
vice="/job:localhost/replica:0/task:0/cpu:0"]()]]

OOM="Out Of Memory" だろうなあ..
ちなみに使ってるGPUは GeForce1050Ti/4GB。

しょうがないのでコメント欄にあったOOM対策をつかってみることに。
--hparams='batch_size=2048'でうごかしてみた。

INFO:tensorflow:global_step/sec: 1.34169
INFO:tensorflow:step = 102, loss = 8.53071 (74.533 sec)

が繰り返し出るようになったので、バッチが動き始めたようだ..


..で、コレいつおわるんだろう..

やっぱ論文にあるうんちゃらdaysかかるんだろうなあ..

しばらくは、放置プレイか..

ちなみにこの状態で進捗を確認したいのであれば、
別ターミナルで
tensorboard --logdir=/root/t2t_train/wmt_ende_tokens_32k/transformer-transformer_base_single_gpu
を実行して http://IPアドレス:6006/ を開けば
みんなだいすきTensorBardで状況が確認できます。






さすがOSS、SCALARSやGRAPHSだけでなく、IMAGESやDISTRIBUTIONS、HISTGRAMS、EMBEDDINGSまで可視化できるようになってる。


------
(数日後)

ふとトレーニングプロセスが落ちていることがわかった。lossをみると1.6あたりだったので
ワークフローを継続してみた。

root@07599f5e67a4:/notebooks/work/t2t# t2t-trainer --data_dir=$DATA_DIR --problems=$PROBLEM --model=$MODEL --hparams_set=$HPARAMS --output_dir=$TRAIN_DIR --tr
ain_steps=0 --eval_steps=0 --decode_beam_size=$BEAM_SIZE --decode_alpha=$ALPHA --decode_from_file=$DECODE_FILE
INFO:tensorflow:Creating experiment, storing model files in /root/t2t_train/wmt_ende_tokens_32k/transformer-transformer_base_single_gpu
INFO:tensorflow:datashard_devices: ['gpu:0']
INFO:tensorflow:caching_devices: None
INFO:tensorflow:Using config: {'_save_summary_steps': 100, '_keep_checkpoint_max': 20, '_tf_random_seed': None, '_num_ps_replicas': 0, '_task_id': 0, '_cluste
r_spec': , '_save_checkpoints_secs': 600, '_is_chief': True, '_tf_config': gpu_opt
ions {
  per_process_gpu_memory_fraction: 1.0
}
, '_model_dir': '/root/t2t_train/wmt_ende_tokens_32k/transformer-transformer_base_single_gpu', '_keep_checkpoint_every_n_hours': 10000, '_num_worker_replicas'
: 0, '_save_checkpoints_steps': None, '_master': '', '_session_config': allow_soft_placement: true
graph_options {
  optimizer_options {
  }
}
, '_evaluation_master': '', '_environment': 'local', '_task_type': None}
INFO:tensorflow:Performing Decoding from a file.
INFO:tensorflow:Getting sorted inputs
INFO:tensorflow: batch 1
INFO:tensorflow:Deocding batch 0
INFO:tensorflow:datashard_devices: ['gpu:0']
INFO:tensorflow:caching_devices: None
INFO:tensorflow:Beam Decoding with beam size 4
INFO:tensorflow:Doing model_fn_body took 2.638 sec.
INFO:tensorflow:This model_fn took 2.863 sec.
2017-07-18 08:58:57.662260: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these a
re available on your machine and could speed up CPU computations.
2017-07-18 08:58:57.662295: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these a
re available on your machine and could speed up CPU computations.
2017-07-18 08:58:57.900032: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:893] successful NUMA node read from SysFS had negative value (-1), but ther
e must be at least one NUMA node, so returning NUMA node zero
2017-07-18 08:58:57.900388: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 0 with properties:
name: GeForce GTX 1050 Ti
major: 6 minor: 1 memoryClockRate (GHz) 1.392
pciBusID 0000:01:00.0
Total memory: 3.94GiB
Free memory: 3.90GiB
2017-07-18 08:58:57.900416: I tensorflow/core/common_runtime/gpu/gpu_device.cc:961] DMA: 0
2017-07-18 08:58:57.900430: I tensorflow/core/common_runtime/gpu/gpu_device.cc:971] 0:   Y
2017-07-18 08:58:57.900446: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1050
 Ti, pci bus id: 0000:01:00.0)
INFO:tensorflow:Restoring parameters from /root/t2t_train/wmt_ende_tokens_32k/transformer-transformer_base_single_gpu/model.ckpt-250000
INFO:tensorflow:Inference results INPUT: Goodbye world
INFO:tensorflow:Inference results OUTPUT: Gunstige Welt (和訳:u上にウムラウトである場合「好調な世界」)
INFO:tensorflow:Inference results INPUT: Hello world
INFO:tensorflow:Inference results OUTPUT: Hallo Welt (和訳:こんにちは世界)
INFO:tensorflow:Writing decodes into /root/t2t_data/decode_this.txt.transformer.transformer_base_single_gpu.beam4.alpha0.6.decodes
root@07599f5e67a4:/notebooks/work/t2t#


Googbye はきちんと理解していないらしくGoodで代替したんじゃないかともう。

とりあえず、日独翻訳(Tensor2Tensor)はGeForce1050Tiでも動くことはわかった。

なので、ニューホライ●ンの3年のテキストから適当に文章を抜き出して翻訳させてみた。
以下、その実行である。

-----

日本語 原文の日本語訳
INPUT 原文(英語)
OUTPUT Tensor2tensor のアウトプットテキスト(ドイツ語)
GOOGLE 原文をGoogle翻訳でドイツ語に翻訳したテキスト



日本語 チームを全国大会に導くことができる選手になりたい。
INPUT I want to be a player who can lead a team to the national tournament.
OUTPUT Ich m\xf6chte ein Spieler sein, der ein Team zum nationalen Turnier f\xfchren kann.
GOOGLE Ich möchte ein Spieler sein, der ein Team zum nationalen Turnier führen kann.


日本語 第三に、私たちが学校の制服を着用するとき、私たちは学校に属していると感じることができます。
INPUT Third, when we wear school uniforms, we can feel that we belong to our school.
OUTPUT Drittens, wenn wir die Schulen tragen, k\xf6nnen wir das Gef\xfchl haben, dass wir unserer Schule angeh\xf6ren.
GOOGLE Drittens, wenn wir Schuluniformen tragen, können wir fühlen, dass wir zu unserer Schule gehören.


日本語 彼女が望んでいる世界は簡単に来ないかもしれないが、彼女はそれのために努力し続ける。
INPUT The world that she wants may not come easily, but she keeps striving for it.
OUTPUT Die Welt, die sie will, wird vielleicht nicht leicht, aber sie strebt immer wieder nach.
GOOGLE Die Welt, die sie will, mag nicht leicht kommen, aber sie strebt danach.


日本語 はい。 彼女はミャンマーの民主主義と人権のために戦う政治家です。
INPUT Yes. She is a political leader who fights for democracy and human rights in Myanmar.
OUTPUT Ja, sie ist ein Politiker, der f\xfcr Demokratie und Menschenrechte in Myanmar k\xe4mpft.
GOOGLE Ja. Sie ist ein politischer Führer, der für die Demokratie und die Menschenrechte in Myanmar kämpft.


日本語 彼女は合計15年間拘束されたが、決して諦めなかった。
INPUT She was locked up for 15 years in total, but she never gave up.
OUTPUT Sie wurde insgesamt 15 Jahre eingesperrt, aber sie hat nie aufgegeben.
GOOGLE Sie war für 15 Jahre gesperrt, aber sie gab niemals auf.


日本語 人々は強力なリーダーを必要とし、アウンサンスーチーに彼らに加わるように頼んだ。
INPUT People needed a strong leader, and asked Aung San Suu Kyi to join them.
OUTPUT Die Menschen brauchten einen starken Anf\xfchrer, und sie haben Aung San Suu Kyi aufgefordert, sich ihnen anzuschlie \xdfen.
GOOGLE Die Leute brauchten einen starken Führer und baten Aung San Suu Kyi, sich ihnen anzuschließen.


日本語 私たちはさまざまなアイデアを集め、結局素晴らしい映画を完成させました。
INPUT We brought different ideas together, and completed a wonderful movie in the end.
OUTPUT Wir haben verschiedene Ideen zusammengebracht und am Ende einen wunderbaren Film vervollst\xe4ndigt.
GOOGLE Wir brachten verschiedene Ideen zusammen und vervollständigten einen wunderbaren Film.


日本語 私はアメリカにも学校制服を持っていなければならないと思います。
INPUT I think that we should also have school uniforms in the United States.
OUTPUT Ich glaube, dass wir auch in den Vereinigten Staaten SchulUniformen haben sollten.
GOOGLE Ich denke, dass wir auch Schuluniformen in den Vereinigten Staaten haben sollten.


日本語 1989年、政府は彼女の運動を止めるために自宅で逮捕した。
INPUT In 1989, the government put her under house arrest to stop the movement.
OUTPUT 1989 hat die Regierung sie unter Hausarrest gestellt, um die Bewegung zu stoppen.
GOOGLE Im Jahr 1989 stellte die Regierung sie unter Hausarrest, um die Bewegung zu stoppen.


日本語 これは私の学校生活の中で最高の経験です。
INPUT This is the greatest experience that I've had in my school life.
OUTPUT Das ist die gr\xf6\xdfte Erfahrung, die ich in meinem Schulleben erlebt habe.
GOOGLE Das ist die größte Erfahrung, die ich in meinem Schulleben hatte.


日本語 私のグループには、4人のメンバがいましたが、それぞれに異なるアイデアや意見がありました。
INPUT My group had four members who all had different ideas and opinions.
OUTPUT Meine Fraktion hatte vier Mitglieder, die alle verschiedene Ideen und Meinungen hatten.
GOOGLE Meine Gruppe hatte vier Mitglieder, die alle verschiedene Ideen und Meinungen hatten.


日本語 映画制作は私の学校で非常に人気のある選択授業です。
INPUT Filmmaking is an elective class that is very popular in my school.
OUTPUT In meiner Schule ist die Filmforschung eine gew\xe4hlte Klasse, die sehr beliebt ist.
GOOGLE Filmmaking ist eine Wahlklasse, die in meiner Schule sehr beliebt ist.


日本語 結局、彼女はミャンマーに滞在し、再び彼を見たことはありませんでした。
INPUT In the end, she stayed in Myanmer and never saw him again.
OUTPUT Am Ende blieb sie in Myanmer und sah ihn nie wieder.
GOOGLE Am Ende blieb sie in Myanmar und sah ihn nie wieder.


日本語 映画製作は私に違いを受け入れ、他の人から学ぶことを教えてくれました。
INPUT Filmmaking taught me to accept differences and learn from other people.
OUTPUT Die Filme lehrten mich, Unterschiede zu akzeptieren und von anderen Menschen zu lernen.
GOOGLE Filmmaking lehrte mich, Unterschiede zu akzeptieren und von anderen Menschen zu lernen.


日本語 ニューヨークでは、世界中の人々と出会った。
INPUT In New York, I've met people from all over the world.
OUTPUT In New York habe ich Menschen aus aller Welt getroffen.
GOOGLE In New York habe ich Leute aus der ganzen Welt kennengelernt.


日本語 私は3年間バレーボールチームのメンバでした。
INPUT I've been a member of the volleyball team for three years.
OUTPUT Ich bin seit drei Jahren Mitglied des Volleyball-Teams.
GOOGLE Ich bin seit drei Jahren Mitglied des Volleyballteams.


日本語 多くの日本人学生は学校制服を着用しているが、アメリカ人のほとんどはそうではない。
INPUT Many Japanese students wear school uniforms, but most American do not.
OUTPUT Viele japanische Studenten tragen Schulen Uniformen, aber die meisten Amerikaner nicht.
GOOGLE Viele japanische Studenten tragen Schuluniformen, aber die meisten Amerikaner nicht.


日本語 1999年、アウンサンスーチーさんの夫はがんで死にそうになっていました。
INPUT In 1999, Aung San Suu Kyi's husband was dying of cancer.
OUTPUT 1999 starb der Mann von Aung San Suu Kyi an Krebs.
GOOGLE Im Jahr 1999 war Aung San Suu Kyis Ehemann an Krebs gestorben.


日本語 私と一緒になっていくのは簡単ではありませんでした。
INPUT It wasn't easy for me to get along with them.
OUTPUT Es war f\xfcr mich nicht leicht, sie zu unterst\xfctzen.
GOOGLE Es war nicht leicht für mich, mit ihnen zu kommen.


日本語 私の学校には様々な文化の学生もいます。
INPUT There are students of various cultures in my school, too.
OUTPUT Auch in meiner Schule gibt es Studenten verschiedener Kulturen.
GOOGLE Es gibt auch Studenten verschiedener Kulturen in meiner Schule.


日本語 私は以前に日本に住み、去年ここに移住しました。
INPUT I lived in Japan before, and moved here last year.
OUTPUT Ich habe zuvor in Japan gelebt und bin vergangenes Jahr hierher gegangen.
GOOGLE Ich wohnte schon in Japan und bin im letzten Jahr hierher gekommen.


日本語 私はニューヨークに住む15歳の少女、滝川恵理子です。
INPUT I'm Takigawa Erika, a 15-year-old girl living in New York.
OUTPUT Ich bin Takigawa Erika, ein 15-j\xe4hriges M\xe4dchen, das in New York lebt.
GOOGLE Ich bin Takigawa Erika, ein 15-jähriges Mädchen, das in New York lebt.


日本語 世界は、民主主義と人権のための彼女の努力を認識しました。
INPUT The world recognized her efforts for democracy and human rights.
OUTPUT Die Welt hat ihre Bem\xfchungen um Demokratie und Menschenrechte anerkannt.
GOOGLE Die Welt erkannte ihre Bemühungen um Demokratie und Menschenrechte.


日本語 それに加わった多数の人々が殺された。
INPUT A great number of people who joined it were killed.
OUTPUT Es wurden zahlreiche Menschen get\xf6tet.
GOOGLE Eine große Anzahl von Leuten, die sich ihm angeschlossen haben, wurde getötet.


結構いい感じの翻訳をだしていて、中にはGoogle翻訳本体と全く同じ答えもでていた。

ご参考迄。

-----
(後日談)NVIDIA K20C で Tensor2Tensor を動かしてみた
 

既存アプリケーションをK8s上でコンテナ化して動かす場合の設計注意事項メモ

既存アプリをK8sなどのコンテナにして動かすには、どこを注意すればいいか..ちょっと調べたときの注意事項をメモにした。   1. The Twelve Factors (日本語訳からの転記) コードベース   バージョン管理されている1つのコードベースと複数のデプロイ 依存関係 ...