Google がディープラーニング ライブラリ TensorFlow Fold をリリース、動的計算グラフをサポート

Google がディープラーニング ライブラリ TensorFlow Fold をリリース、動的計算グラフをサポート

ほとんどの機械学習プロセスでは、トレーニングと推論に使用するデータを前処理する必要があります。前処理により、さまざまな入力データ (画像など) が同じサイズに正規化され、バッチで保存されます。このステップにより、TensorFlow などの高性能ディープラーニング ライブラリは、バッチ内のすべての入力を並列に同じ計算グラフで処理できるようになります。バッチ処理では、最新の GPU とマルチコア CPU の SIMD (Single Instruction Multiple Data) パフォーマンスを使用して、計算実行を高速化します。しかし、自然言語理解における解析ツリー、ソースコード内の抽象構文ツリー、Web ページのドキュメントツリー (DOM ツリー) など、入力データのサイズや構造が変化すると、多くの問題が発生します。このような場合、異なる入力データには異なる計算グラフが必要となり、通常はそれらをまとめてバッチ処理することができないため、プロセッサ、メモリ、およびキャッシュの使用率が低下します。

[[182852]]

本日、これらの困難に対処するために TensorFlow Fold をリリースします。 TensorFlow Fold を使用すると、さまざまなサイズや構造のデータを処理するディープラーニング モデルの実装が容易になります。さらに、TensorFlow Fold はこれらのモデルにバッチ処理の利点をもたらし、CPU では 10 倍以上、GPU では 100 倍以上高速に実行します (他の実装と比較して)。この改善は動的バッチ処理技術によるもので、詳細は私たちの論文 (動的計算グラフを使用したディープラーニング) で説明されています。

上記のアニメーションは、動的バッチ処理で実行されるリカレント ニューラル ネットワークを示しています。同じ色の操作はグループ化され、TensorFlow でより高速に実行できるようになります。 Embed 操作は単語をベクトル表現に変換します。完全接続 (FC) 操作は、単語ベクトルを結合して段落ベクトル表現を形成します。ネットワークの出力は完全な文のベクトル表現です。上の図は文の解析ツリーのみを示していますが、このネットワークは任意の形状とサイズのさまざまな解析ツリーに対してバッチ操作を実行し、実装することもできます。

TensorFlow Fold ライブラリは、まず入力ごとに個別の計算グラフを作成します。

個々の入力のサイズや構造は異なる場合があり、計算グラフも異なる可能性があります。動的バッチ処理では、これらのグラフを自動的に結合して、入力内および入力間でのバッチ処理の機会を活用し、バッチ処理された操作間でデータを移動するための追加の命令を挿入します。 (技術的な詳細については論文を参照してください)

さらに詳しく知りたい場合は、github アドレス (https://github.com/tensorflow/fold) もご覧ください。 TensorFlow Fold が、研究者や実務者が TensorFlow で動的に計算されたニューラル ネットワークを展開するのに役立つことを願っています。

論文: 動的計算グラフによるディープラーニング

概要: グラフ構造を計算するニューラル ネットワークは、自然言語処理 (構文解析ツリー) や化学情報科学 (分子グラフ) など、多くの分野の問題を解決するための自然なアプローチです。ただし、各入力の計算グラフは形状とサイズが異なるため、通常、ネットワークを直接バッチトレーニングまたは推論することはできません。また、これらのライブラリは静的なデータフローグラフに基づいているため、一般的なディープラーニングライブラリにデプロイすることも困難です。異なる入力グラフ(異なる形状)間の操作をバッチ処理できるだけでなく、単一の入力グラフ内の異なるノード間の操作もバッチ処理できる、動的バッチ処理と呼ばれる手法を紹介します。このテクノロジーにより、静的グラフを作成したり、一般的なライブラリを使用したり、任意の形状やサイズの動的な計算グラフをシミュレートしたりできるようになります。さらに、動的グラフ モデルの作成プロセスを簡素化するビルディング ブロックの高レベル ライブラリも紹介します。このライブラリを使用して、文献に記載されているさまざまなモデルの簡潔で合理的なバッチ並列実装を示します。

元記事: https://research.googleblog.com/2017/02/announcing-tensorflow-fold-deep.html

[この記事は、51CTOコラムニストのMachine Heart、WeChatパブリックアカウント「Machine Heart(id:almosthuman2014)」によるオリジナル翻訳です]

この著者の他の記事を読むにはここをクリックしてください

<<:  複数の負荷分散アルゴリズムとそのJavaコード実装

>>:  Spark を使用して行列分解推奨アルゴリズムを学習する

ブログ    
ブログ    

推薦する

...

...

初心者向けのオープンソース機械学習フレームワーク、Scikit-learnについて

Python 言語に精通している研究者は、オープンソースの Python ベースの科学計算ツールキッ...

...

欧州宇宙機関が初のAI衛星を打ち上げ、AIチップ+アルゴリズムで雲画像をフィルタリング

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

...

AI時代が到来。プロの写真家は淘汰されるのか?

テクノロジー業界では、AI の進化により、プロの写真家を含む多くの仕事が置き換えられるだろうという意...

...

...

AI分野 | ゲームのルールを変える画期的なアイデア10選

[[357174]] AI の旅が始まって以来、私は無限の可能性を秘め、輝かしい歴史に足跡を残してき...

このレポートを読めば、人工知能に関するあなたの常識は基本的に正しいものとなるでしょう。

[[266878]]中国における人工知能に関する議論の多くは体系化されておらず、断片的であり、人工...

英国はAI大規模モデルの分野で利用するためのスーパーコンピュータの開発に2億2500万ポンドを投資する予定

英国政府は11月2日、国の人工知能能力をさらに強化するため、人工知能研究資源への投資を2023年3月...

...

TalkingDataはビッグデータとAIについて語ります

[51CTO.com からのオリジナル記事] Singularity University の CE...