エッジコンピューティング
- 0. 概要
- 1. モデルの軽量化
- キーワードまとめ
Contents
0.章の概要
この章では、エッジコンピューティングを含めた、モデルを軽量化するための代表的な方法を解説しています。
特に、プルーニング(枝刈り)、蒸留(Distillation)、量子化(Quantization)の3手法は、試験でも問われやすいので各法の違いを明確に理解しましょう。
1. モデルの軽量化
学習キーワード: エッジコンピューティング、IoTデバイス、プルーニング(枝刈り)、蒸留(Distillation)、量子化(Quantization)
概要
軽量化技術とは、計算量が多い深層学習モデルを、実務やモバイルでも高速処理で使用できるよう、モデル圧縮を行う技術を指します。
軽量化技術として、エッジコンピューティングや、プルーニング(枝刈り)、蒸留(Distillation)、量子化(Quantization)などがあります。
エッジコンピューティング
エッジコンピューティングは、データ処理を行うサーバを、エッジ(端、端末機器の近くというニュアンス)に分散配置させるネットワーク技法です。クラウドコンピューティングでは、クラウドの一か所にデータを集中、処理する方法ですが、エッジで処理することで、データ処理を行う際の時間短縮につながり、処理遅延を防ぐことができます。
エッジコンピューティングは、IoT機器との連携が特に重要です。IoT(Internet of Things)機器は、センサーを通じて大量のデータを収集し、それをクラウドやデータセンターに送信する機器を指し、例として、スマホ、自動運転車のカメラ、スマートウォッチなどが挙げられます。
エッジコンピューティングは、このデータをIoT機器自体や、その近くに配置されたサーバーで処理し、分析を行うことで、リアルタイム性を向上させ、ネットワークの負荷を軽減します。
エッジコンピューティングのメリットとしては、
などが挙げられますが、コストやセキュリティ面(クラウドコンピューティングよりは改善)、分散化によりモデルの同期やアップデートが複雑化する。などの課題があります。
プルーニング(枝刈り)
プルーニングは、重要度(寄与度)の低いニューロンを「枝刈り」(重みを0に)し、軽量化したニューラルネットワークを生成する手法を指します。Dropoutは学習時にランダムで削除しますが、プルーニングは学習後にノード自体を削除し、再度学習させて精度を上げるという違いがあります。
※プルーニングは、「大規模なモデルには大量のパラメータがあるが、推論に寄与しているのはその一部ではないか?」という仮説から成り立っています。
蒸留(Distillation)
蒸留は、複雑な「教師モデル(Teacher Model)」から学習し、単純な「生徒モデル(Student Model)」を生成する技術です。教師モデルの出力確率(ソフトターゲット)を使用し、単純なニューラルネットワーク(生徒モデル)の損失に加算して生徒モデルを訓練します。
- 教師モデル: 予測精度の高い、複雑なモデル
- 生徒モデル: 教師モデルをもとに作られる軽量なモデル
量子化(Quantization)
量子化は、モデル内の重みやアクティベーションを下位のフォーマットに変換することで、計算量を削減する技術です。具体的には、重みパラメータの勾配などの浮動小数点数の精度を下げて計算量を削減します。通常は64bitや32bitであることが多いですが、4bitなどで計算することで、全体の計算量が大幅に削減されます。
注意点としては、量子化により計算速度は速くなりますが、精度が低下する可能性があります。
関連用語の補足
- soft target loss: 教師モデルの出力確率分布(ソフトターゲット)と生徒モデルの出力分布の間の誤差を測定する損失関数です。 主にKLダイバージェンスが用いられます。
- hard target loss: 生徒モデルの出力と、正解ラベル(ハードターゲット)との間の誤差を測定する損失関数です。 主にクロスエントロピー損失が使用されます。
キーワードまとめ
エッジコンピューティング、IoTデバイス、プルーニング(枝刈り)、蒸留(Distillation)、量子化(Quantization)