主要内容

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

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

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

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

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

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

精度と範囲

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

参考

アプリ

関数