主要内容

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

深層ニュートラル ネットワークの量子化

デジタル ハードウェアでは、数値はバイナリ ワードで格納されます。バイナリ ワードとは固定長の連続ビット (1 と 0) です。この 1.と 0の連続をハードウェア コンポーネントやソフトウェア関数が解釈する方法はデータ型によって定義されます。数値は、スケーリングされた整数 (通常は固定小数点と呼ばれる) または浮動小数点データ型として表現されます。

事前学習済みのニューラル ネットワークと 深度学习工具箱™ を使用して学習させたニューラル ネットワークのほとんどで、単精度浮動小数点データ型が使用されます。小規模な学習済みニューラル ネットワークであっても大量のメモリが必要であり、浮動小数点演算を実行可能なハードウェアが必要です。このような制限が、低消費電力のマイクロコントローラーや FPGAへの深層学習機能の展開を妨げている可能性があります。

深度学习工具箱模型量化库サポート パッケージを使用すれば、ネットワークを量子化して 8.ビットにスケーリングされた整数データ型を使用できます。

ニューラル ネットワークの量子化には、GPU、GPU编码器™ 深度学习图书馆的界面サポート パッケージ、および 深度学习工具箱模型量化库サポート パッケージが必要です。GPUを使用するには、计算能力6.1、6.3、またはそれ以上の 库达®対応 英伟达®GPUが必要です。

精度と範囲

スケーリングされた 8.ビット整数データ型は、単精度浮動小数点データ型に比べて精度と範囲が制限されます。数値を大きな浮動小数点データ型から固定長の小さなデータ型にキャストするときの数値に関する考慮事項を以下に示します。

  • 桁落ち: 桁落ちは丸め誤差です。桁落ちが起きると、値がそのデータ型で表現可能な最も近い数値に丸められます。同数の場合は、次のように丸められます。

    • 正の数値は、正の無限大方向の最も近い表現可能な値に。

    • 負の数値は、負の無限大方向の最も近い表現可能な値に。

    MATLAB®では、関数圆形的を使用してこのような丸めを実行できます。

  • アンダーフロー: アンダーフローは桁落ちの一種です。アンダーフローは、値がデータ型によって表現可能な最小値より小さい場合に発生します。これが発生すると、値が 0に飽和します。

  • オーバーフロー: 値がデータ型で表現可能な最大値より大きい場合にオーバーフローが発生します。オーバーフローが発生すると、値がデータ型で表現可能な最大値に飽和します。

ダイナミック レンジのヒストグラム

ディープ ネットワーク量子化器アプリを使用して、ネットワークの畳み込み層と全結合層の重みとバイアスのダイナミック レンジと、ネットワーク内のすべての層のアクティベーションのダイナミック レンジを収集して可視化します。このアプリは、ネットワークの畳み込み層の重み、バイアス、およびアクティベーションにスケーリングされた 8.ビット整数データ型を割り当てます。また、これらのパラメーターのそれぞれのダイナミック レンジのヒストグラムを表示します。これらのヒストグラムの生成方法を以下の手順で説明します。

  1. たとえば、まずはネットワークの実行中にパラメーターに記録される以下の値について検討します。

  2. 記録されるパラメーターの値ごとに理想的なバイナリ表現を探します。

    最上位ビット (MSB)はバイナリ ワードの左端のビットです。このビットが数値に最も貢献します。各値の MSBが黄色で強調表示されます。

  3. バイナリ ワードを整列させることによって、記録されたパラメーター値に使用されるビットの分布を把握することができます。記録された値の集計を表示するために各列の MSBの数値を合計します。

  4. 各ビット位置の MSBの数をヒート マップとして表示します。このヒート マップでは、ビット位置内の MSBの数値が大きいと、より濃い青色で領域が示されます。

  5. ソフトウェアは、ほとんどの情報を取得するビット位置を表現することができるデータ型を割り当てます。この例では、ソフトウェアは 2.3.~ 2-3のビットを表現するデータ型を選択します。値の符号属性を表現するには、追加の符号ビットが必要です。

  6. データ型を割り当てた後、そのデータ型以外のすべてのビットが削除されます。このサンプルでは、最初の値 0.03125でアンダーフローが発生するため、量子化された値は 0になります。理想値 2.1では桁落ちが発生するため、量子化された値は 2.125になります。値 16.250はそのデータ型で表現可能な最大値を上回っているため、オーバーフローが発生します。量子化された値は 15.874に飽和します。

  7. アプリは、ネットワークの畳み込み層と全結合層内の各学習可能パラメーターについて、このヒート マップ ヒストグラムを表示します。ヒストグラムの灰色の領域は、データ型では表現できないビットを表しています。

参考

アプリ

関数