インテル® Xeon Phi™ プロセッサーはマシンラーニング/ディープラーニング・アプリケーションとフレームワークにどのように役立つか

同カテゴリーの次の記事

AI に対するニーズの高まりに対応する

この記事は、インテル® デベロッパー・ゾーンに公開されている「How Intel® Xeon Phi™ Processors Benefit Machine Learning/Deep Learning Apps and Frameworks」の日本語参考訳です。


マシンラーニング (ML) は急速に普及しています。現在では、非常に大量のデータをマシンラーニング・アプリケーションに渡して、高い精度で起こりえる結果を予測することができます。これらのディープラーニング (DL) モデルの精度は、トレーニング・データセットのサイズに比例して高くなります。数兆個の接続されたデバイスがシステムにデータを送ると、データセットのサイズは数百テラバイトに達します。

我々は、このマシンラーニングの結果を、自動運転車、不正行為のリアルタイム検出、ソーシャル・ネットワーク・サービスの画像認識などの形で目にしています。

この記事では、まず新しいインテル® Xeon Phi™ 製品ファミリーがマシンラーニング・ワークロードの制御に非常に適している理由を説明します。次に、シングルノードのインテル® Xeon Phi™ プロセッサー・ベースのシステムおよび 128 ノードのインテル® Xeon Phi™ プロセッサー・ベースのクラスターでマシンラーニング・ワークロードを実行したときのパフォーマンス・テストの結果を紹介します。最後に、x86 アーキテクチャー向けのソフトウェア・ライブラリーおよび一般的なオープンソース・マシンラーニング・フレームワークを最適化するために行っている作業について説明します。

インテル® Xeon Phi™ プロセッサーの機能

第 2 世代インテル® Xeon Phi™ チップを設計する際、我々はセルフブート・ソケットで利用可能なマルチコア・プロセッサーを作成しました。セルフブート型にすることにより、個々のホストで OS を実行して PCIe* スロット経由でデータを渡す必要がなくなりました。(最新のインテル® Xeon Phi™ チップをコプロセッサーとして使用することを希望するユーザー向けに、PCIe* カード版も提供する予定です。)

インテル® Xeon Phi™ プロセッサー x200 製品ファミリーでは、利用可能なプロセッサー・コアの数が最大 72 に増加しました。コアあたりの浮動小数点パフォーマンスを向上するため、各コアに 2 つのインテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) SIMD プロセシング・ユニットを備えており、浮動小数点の乗算や積和演算 (FMA) のような一般的なマシンラーニング・アルゴリズムに効果的です。インテル® Xeon Phi™ プロセッサー x200 製品ファミリーは、単精度浮動小数点演算で最大 6TFLOPS の性能を達成します。そのマルチコア、マルチスレッドの能力は、オンパッケージの高帯域幅メモリー・サブシステム (マルチチャネル DRAM) およびインテル® Omni-Path アーキテクチャー (インテル® OPA) と呼ばれる統合ファブリック・テクノロジーにより実現されています。

高帯域幅統合メモリー (最大 16GB MCDRAM) は、非常に迅速にコアにデータを渡せるように支援し、最大 384GB のプラットフォーム・メモリー (DDR4) を補足します。プログラマーは、必要なデータのサイズと、データがいつ必要か指定して、メモリーを管理します。MCDRAM は、メモリー管理について考える必要がないように、データをキャッシュすることを好むユーザーに対する柔軟性も提供します。(MCDRAM は、L3 キャッシュとして、割り当て可能な NUMA メモリーとして、およびキャッシュとメモリーのハイブリッドの組み合わせで構成することができます。)

大量のマシンラーニング/ディープラーニング・ワークロードを処理する場合、1 つのノードから数百、数千のノードにスケーリングできることは非常に重要です。統合型インテル® OPA ファブリックにより、インテル® Xeon Phi™ プロセッサー x200 製品ファミリーはコア数およびスレッド数でほぼ線形にスケーリングすることができます。コーディング・レベルでは、このファブリックにより、最小のプログラミングで高速に、リモートストレージからローカルキャッシュにデータを効率的にフェッチすることができます。

これらの革新的な機能により、マシンラーニングおよびディープラーニングのトレーニング時間は大きく改善します。例えば、AlexNet では、128 ノードのインテル® Xeon Phi™ プロセッサー x200 製品ファミリーで、トレーニング時間がシングルノードの約 50 分の 1 になりました。GoogLeNet のトレーニングでは、32 ノードのインテル® Xeon Phi™ プロセッサー x200 製品ファミリーで、これまでに達成された最高値を 38% 上回る、87% のスケーリング効率を達成しました。

トレードオフは、この大量の並列マルチコア、マルチスレッド・アーキテクチャーを活用できるように、アプリケーションを並列化する必要があることです。並列化を行わないのであれば、シングルコア、シングルスレッドのパフォーマンスを受け入れる必要があります。

シングルコア、シングルスレッドのパフォーマンスが制限される 1 つの要因は、インテル® Xeon Phi™ プロセッサー x200 製品ファミリーの各コアに複数のベクトル・プロセシング・ユニットが備えられていることにより、全体的に計算の密度が高くなるためです。ワークロードが高レベルの並列処理やスレッド並列処理を活用できる場合、インテル® Xeon Phi™ プロセッサーは、より多くの計算をより小さなエリアにパックするため、ほかのソリューションよりも消費電力が少なくなります。

バイナリー互換

ソフトウェアの観点から見ると、インテル® Xeon Phi™ プロセッサーは、インテル® Xeon® プロセッサー E5 ファミリーを含む、x86 アーキテクチャーのプロセッサーとバイナリー互換です。つまり、第 2 世代インテル® Xeon Phi™ プロセッサーおよび既存のインテル® Xeon® プロセッサー・ベースのサーバーにおけるトレーニング時間を短縮するには、1 回だけコードを「現代化」する必要があります。ここで言う「現代化」とは、高度な並列コードを記述しなければならないという意味ではありません。我々は、一般的なインテル® マス・カーネル・ライブラリー (インテル® MKL) のようなツールを使用して汎用 x86 アーキテクチャー・ベースの CPU でマシンラーニング/ディープラーニング・コードの並列化がより簡単になるように作業を行っています。インテル® MKL 2017 には、ディープ・ニューラル・ネットワークを最適化するための新しい拡張機能が含まれています。また、Caffe* や Theano* のような一般的なオープンソースのマシンラーニング・フレームワーク上で x86 アーキテクチャー向けの最適化を行っています。さまざまな努力により、ハードウェアをアップグレードすることなく、ディープラーニング・アプリケーションのパフォーマンスは 30 倍に向上しました。

まとめ

第 2 世代インテル® Xeon Phi™ 製品ファミリーで、我々は、マシンラーニングおよびディープラーニング・アプリケーションの、計算を多用するトレーニング・フェーズに必要な多層ニューラル・ネットワークの大衆化という目標に 1 歩近づきました。その結果、マシンの意思決定機能を強化する、新しいクラスのワークロードを処理できるようになりました。

インテル® Xeon Phi™ プロセッサー x200 製品ファミリーは、フランクフルトで開催された ISC16 およびニューヨークで開催された ICML2016 で紹介されました。製品の技術的な情報は、XeonPhiDeveloper.com (英語) をご覧ください。

関連情報

Knights Landing – 開発者向け概要 (ビデオ)
https://software.intel.com/en-us/videos/knights-landing-an-overview-for-developers (英語)

Knights Corner から Knights Landing セルフブート・プラットフォームへのアプリケーションの移行
https://software.intel.com/en-us/articles/migrating-applications-from-knights-corner-to-knights-landing-self-boot-platforms (英語)

Myth Busted ブログ: 汎用 CPU はディープラーニング・ニューラル・ネットワーク・トレーニングに適していない
http://itpeernetwork.intel.com/myth-busted-general-purpose-cpus-cant-tackle-deep-neural-network-training/ (英語)

インテル® MKL のディープ・ニューラル・ネットワーク (DNN) プリミティブ
http://www.isus.jp/machine-learning/introducing-dnn-primitives-in-intelr-mkl/

開発コード名

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

関連記事