この記事は、インテル® AI Blog に公開されている「Accelerating INT8 Inference Performance for Recommender Systems」(https://www.intel.ai/wide-deep-model) の日本語参考訳です。
今日のほとんどの推論アプリケーションでは、低レイテンシー、高メモリー帯域幅、大きな計算能力が求められます。データセンターにおけるすべての推論ワークロードの 50-60% を占める推奨システムの使用拡大とメモリー・フットプリントの増加により[1], [2]、この要求はさらに高まることが予想されます。インテル® Xeon® スケーラブル・プロセッサーは引き続き、推論システム、特にアクセラレーターに収まらない大きなメモリー・フットプリントのスパースモデルにおいて、優れた推論を提供します。最近、8 ビットの乗数を使用することで精度をほとんどまたは全く損なうことなく、ディープラーニングの推論を低い精度で行えることをインテルの研究者が実証しました。低い精度を使用する利点は主に 2 つあります。1 つ目は、多くの操作はメモリー帯域幅依存であり、精度を下げることでキャッシュを効率良く利用し、帯域幅のボトルネックを軽減できます。2 つ目は、低い数値精度では乗数が必要とするシリコン面積と電力が少ないため、ハードウェアは 1 秒間により多くの操作を処理できるようになります。
記事では、ビルトインの AI 推論アクセラレーターを備えた唯一のマイクロプロセッサーである、第 2 世代インテル® Xeon® スケーラブル・プロセッサーで利用可能なインテル® ディープラーニング・ブースト (インテル® DL ブースト) を使用した INT8 データ型による高速化を説明します。第 2 世代インテル® Xeon® スケーラブル・プロセッサーは、512 ビット幅の積和演算 (FMA) 基本命令を含むインテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) 命令セットをサポートしています。これらの命令は、低い精度の乗算と高い精度の累算の利用を可能にします。これらの特殊なハイパフォーマンス命令は、インテル® DL ブーストを介して組込みアクセラレーションを提供し、低い精度の推論を高速化します。さらに、インテルは、そのような CPU 機能を直接利用するインテル® ディープ・ニューラル・ネットワーク・ライブラリー (インテル® DNNL) (英語) などのライブラリーで、最適化されたソフトウェア・サポートを提供しています。
また記事では、インテル® DL ブーストを使用してワイドおよびディープラーニングの推奨モデルのパフォーマンスを効率良く向上するため[3]、モデルの重みと活性化、およびインテル® DNNL で利用可能な低い数値精度の関数を量子化する方法も説明します。通常メモリー・フットプリントが高いモデルの組込みルックアップ部分は、インテル® Xeon® スケーラブル・プロセッサーの高メモリー帯域幅と大容量メモリーにより利点が得られます。計算負荷の高いニューラル・ネットワーク部分 (全結合層) は、インテル® DL ブーストで利用可能な低い精度 (INT8) によりパフォーマンスを高速化できます。データセットを考慮して、最高のパフォーマンスを達成するためモデルを最適化する方法を説明します。さらに、インテル® DNNL は、INT8 入力値と INT8 重み値を受け取り、行列乗算を実行して INT32 結果を出力する汎用行列乗算関数をサポートします。記事では、インテル® DNNL 関数を利用して推論パフォーマンスを高速化するため、ワイドおよびディープラーニングのモデルの深い部分の全結合層を量子化する方法を説明します。
インテル® DL ブーストは、INT8 で FP32 精度と比較して、精度の低下を 0.5% 未満に抑えつつ、2 倍の推論パフォーマンスを提供します[4]。これは、TensorFlow* や MXNet などの一般的なマシンラーニング・フレームワーク上の典型的な推奨システムにおいて、小さなバッチサイズのユースケースで実証されています。このパフォーマンス向上についての詳細は、記事を参照してください。AI 研究チームの最新情報は、Twitter (英語) をフォローしてください。
[1] Norman P. Jouppi et al., In-Datacenter Performance Analysis of a Tensor Processing Unit. https://arxiv.org/abs/1704.04760 (英語).
[2] Jongsoo Park et al., Deep Learning Inference in Facebook Data Centers: Characterization, Performance Optimizations and Hardware Implications, 2018. https://arxiv.org/abs/1811.09886 (英語).
[3] Heng-Tze Cheng, Wide & Deep Learning for Recommender Systems, 2016. https://arxiv.org/abs/1606.07792 (英語).
[4] システム構成: インテル® Xeon® Platinum 8280L プロセッサー、28 コア、インテル® ハイパースレッディング・テクノロジー有効、インテル® ターボ・ブースト・テクノロジー有効、合計メモリー 384GB (12 スロット/32GB/2933MHz)、BIOS: SE5C620.86B.0D.01.0348.011820191451 (ucode:0x5000017)、CentOS* 7.6、カーネル 4.19.5-1.el7.elrepo.x86_64、SSD 1x インテル® SSDSC2KG96 960GB、コンパイラー gcc 6.3.1。ディープラーニング・フレームワーク: GitHub* の tensorflow/tensorflow (英語) で公開されている TensorFlow* (Pull Request PR26169 (英語)、Pull Request PR26261 (英語)、および Pull Request PR26271 (英語) を適用)、[PK2] ディープニューラル・ネットワーク向けインテル® マス・カーネル・ライブラリー (インテル® MKL-DNN) v0.18、GitHub* の IntelAI/models (英語) で公開されている Wide & Deep、モデル: FP32 pretrained model (英語) と INT8 pretrained model (英語)。GitHub* の apache/incubator-mxnet で公開されている MXNet (patch (英語) を適用)。GitHub* と intel/mkl-dnn で公開されているインテル® MKL-DNN。GitHub* の intel/optimized-models (英語) で公開されている Wide & Deep。データセット: Criteo Display Advertisement Challenge、バッチサイズ = 512 (TensorFlow* で 28 バッチを同時実行)。推論パフォーマンスは 1 秒あたりのデータサンプル処理数で測定 (数値が高いほうが良い)。
法務上の注意書きと最適化に関する注意事項
性能の測定結果は 2019 年 3 月 1 日時点のインテルの社内テストに基づいています。また、現在公開中のすべてのセキュリティー・アップデートが適用されているとは限りません。絶対的なセキュリティーを提供できる製品またはコンポーネントはありません。
性能に関するテストに使用されるソフトウェアとワークロードは、性能がインテル® マイクロプロセッサー用に最適化されていることがあります。SYSmark* や MobileMark* などの性能テストは、特定のコンピューター・システム、コンポーネント、ソフトウェア、操作、機能に基づいて行ったものです。結果はこれらの要因によって異なります。製品の購入を検討される場合は、他の製品と組み合わせた場合の本製品の性能など、ほかの情報や性能テストも参考にして、パフォーマンスを総合的に評価することをお勧めします。 詳細については、http://www.intel.com/performance (英語) を参照してください。
インテル® アドバンスト・ベクトル・エクステンション (インテル® AVX)* は、特定のプロセッサー演算で高いスループットを示します。プロセッサーの電力特性の変動により、AVX 命令を利用すると、a) 一部の部品が定格周波数未満で動作する、b) インテル® ターボ・ブースト・テクノロジー 2.0 を使用する一部の部品が任意または最大のターボ周波数に達しない可能性があります。実際の性能はハードウェア、ソフトウェア、システム構成によって異なります。詳細については、http://www.intel.co.jp/jp/technology/turboboost/ を参照してください。
インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。
本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。
© Intel Corporation.
Intel、インテル、Intel ロゴ、Xeon は、アメリカ合衆国および / またはその他の国における Intel Corporation またはその子会社の商標です。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。