BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース GoogleがTensorFlow Lite向けにトレーニング後の整数量子化をリリース

GoogleがTensorFlow Lite向けにトレーニング後の整数量子化をリリース

ブックマーク

原文(投稿日:2019/07/23)へのリンク

Googleは、モデルのサイズと推論の待機時間を削減するTensorFlow Liteディープラーニングフレームワーク向けの新しいツールを発表した。このツールは、トレーニング済みモデルの重みを浮動小数点表現から8ビット符号付き整数に変換する。これにより、モデルのメモリ要件が低減され、浮動小数点アクセラレーターを必要とせず、そして、モデルの品質を犠牲にすることなく、モデルをハードウェアで実行できる。

TensorFlowチームは最近のブログ投稿で、モデルの重みを8ビット整数に変換するために整数量子化を使用するアプローチについて説明した。このツールキットには、整数演算のみを使用するテンソル演算も含まれており、浮動小数点ハードウェアアクセラレーションを持たないハードウェアで最高の実行時パフォーマンスを提供する。これにより、ベースラインの浮動小数点モデルと比較して、予測結果の精度が1%未満の低下で「最大2~4倍高速かつ1/4に小型化された」モデルが生成される。

浮動小数点数は、ニューラルネットワークで重みとアクティベーションを表す最も正確な方法である。ただし、これらの数値の数学的操作には、迅速なスループットを実現するために専用のハードウェアが必要である。多くのモバイルまたは組み込みデバイスにはこのハードウェアがないため、浮動小数点演算を使用してニューラルネットワークから結果を計算するのに時間がかかります。整数量子化は、4バイトまたは8バイトの浮動小数点数をシングルバイト整数に変換する手法である。これらの整数は、必要なメモリが少ないだけでなく、整数を使用した演算は汎用CPUで迅速に実行できる。精度の低下は、ニューラルネットワークの精度に影響を及ぼするが、調査では、特にメモリフットプリントと実行時間の大幅な削減を考慮した場合、損失は一般的には許容できるほど小さいことが示されている。

1バイトは-128~127の数値しか表すことができないため、浮動小数点から整数へのアクティベーションの変換には、スケーリングパラメーターを決定するためのキャリブレーションステップが必要である。これは、浮動小数点モデルを介して入力データのいくつかの例を実行することにより行われます。これにより、アクティベーションの最大値と最小値の推定値が得られます。これらの極値は、スケーリングパラメーターが計算するためにそれぞれ127と-128にマッピングされる。このリリースの前に、TensorFlow Liteはモデルの重みを8ビットに変換するだけの「ハイブリッド量子化」スキームを使用していた。ネットワークのアクティベーションを計算するには、依然として浮動小数点計算が必要だったため、スケーリング手順は必要なかった。しかし、浮動小数点計算のために、推論の待ち時間は長くなっていた。

TensorFlowには、「contrib」ライブラリの一部として量子化認識トレーニングも含まれている。これは「公式にはサポートされておらず、予告なく変更または削除される可能性がある」。このメソッドは、整数演算用にすでに最適化されたモデルを出力する。ただし、トレーニング後の量子化は「はるかに使いやすく、ほとんどのモデルで同等の精度を提供する」。ただし、Armデバイスの開発者サイトでは、「iOSでCoreMLを介して8ビットの量子化TensorFlowモデルをデプロイすることは現在不可能である」と述べられている。

もう1つの主要なディープラーニングフレームワークであるFacebookPyTorchには、昨年リリースされたQNNPACKと呼ばれる類似のツールがある。リリース発表のブログ投稿によると、「QNNPACKベースのCaffe2オペレータは、さまざまな携帯電話でTensorFlow Liteの約2倍高速である。」

量子化ツールは、GitHubで利用可能なTensorFlowの最新リリースに含まれている。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT