がアップされました。
Intel(R) Xeon(R) Platinum 8180 CPUでは、ResNet50-I1k では、6.5 イメージ/秒だったが、
Intel nGraph + TensorFlow XLAでは、68.9 イメージ/秒 になり、約10倍になったと。。。
Intel nGraph + TensorFlow XLAでは、68.9 イメージ/秒 になり、約10倍になったと。。。
ちなみに、MKL-DNNにて最適化したTensorFlowでは、65 イメージ/秒。。。
Intel nGraphでは、次の2つのステップで最適化していますよ。
Google翻訳にそのまんまお願いしました。 私たちはそれをやった nGraph CPUバックエンドでのパフォーマンスの最適化 「IAトランス」とも呼ばれるnGraph CPUバックエンドは、多くの最適化を実装し、 インテルCPUプラットフォーム上で特定のモデルに最適なパフォーマンスを提供します。 ・フレームワークに依存しない最適化 迅速なDNNカーネルのために、MKL-DNNやEigenなどの最適化されたカーネルライブラリを活用します。 さらに、これらのカーネル実装に最適なデータレイアウトを選択し、 グラフレベルで全体のデータレイアウト変換を減らすグラフ最適化パスを組み込みます。 また、BatchNormやReLuのようなオペレーションを融合させることで、 メモリ要件の低い融合カーネルの実装をより有効に活用しています。 ・TF / XLA固有の最適化:TensorFlowには、モデルに特別なパッド操作を追加するAPIレベルの特質があります。 これらのオペレーションは不必要なデータレイアウト変換につながり、 MKL-DNNで利用可能なパディングされたコンボリューションカーネルでは回避できます。 これらのパッド操作を既存の畳み込み演算子に融合するために、これを利用しました。 これは、ベースのTensorFlowモデルに比べてパフォーマンスが向上しています。 さらに、XLAは、Float32からFloat32への型変換など、いくつかのID演算子を追加します。 これは、正確性に影響を与えずにグラフから削除することができます。
ここにあるように、オペレーションの融合、だけでなく、
全体のデータレイアウト変換を減らしたり、パッド操作の融合のように、メモリの移動にも注目しているんですよね。
全体のデータレイアウト変換を減らしたり、パッド操作の融合のように、メモリの移動にも注目しているんですよね。
その他、いろいろと書いてありますので読んでね。
それから、ここに書いてある内容が実際のソースコードでどのように実装しているかを
TensorFlow dynamically loadable XLA Plugin独演会にて、お話したいと思っています。
TensorFlow dynamically loadable XLA Plugin独演会にて、お話したいと思っています。
よろしくね。。。。