エッジコンピューティング

0.章の概要

この章では、エッジコンピューティングを含めた、モデルを軽量化するための代表的な方法を解説しています。
特に、プルーニング(枝刈り)、蒸留(Distillation)、量子化(Quantization)の3手法は、試験でも問われやすいので各法の違いを明確に理解しましょう。

1. モデルの軽量化

学習キーワード: エッジコンピューティング、IoTデバイス、プルーニング(枝刈り)、蒸留(Distillation)、量子化(Quantization)

概要

軽量化技術とは、計算量が多い深層学習モデルを、実務やモバイルでも高速処理で使用できるよう、モデル圧縮を行う技術を指します。
軽量化技術として、エッジコンピューティングや、プルーニング(枝刈り)蒸留(Distillation)量子化(Quantization)などがあります。


エッジコンピューティング

エッジコンピューティングは、データ処理を行うサーバを、エッジ(端、端末機器の近くというニュアンス)に分散配置させるネットワーク技法です。クラウドコンピューティングでは、クラウドの一か所にデータを集中、処理する方法ですが、エッジで処理することで、データ処理を行う際の時間短縮につながり、処理遅延を防ぐことができます。

エッジコンピューティングは、IoT機器との連携が特に重要です。IoT(Internet of Things)機器は、センサーを通じて大量のデータを収集し、それをクラウドやデータセンターに送信する機器を指し、例として、スマホ、自動運転車のカメラ、スマートウォッチなどが挙げられます。
エッジコンピューティングは、このデータをIoT機器自体や、その近くに配置されたサーバーで処理し、分析を行うことで、リアルタイム性を向上させ、ネットワークの負荷を軽減します。

エッジコンピューティングのメリットとしては、

  • 処理のリアルタイム性向上
  • ネットワーク負荷の軽減
  • セキュリティの強化
  • 障害発生時のリスク軽減備
  • などが挙げられますが、コストやセキュリティ面(クラウドコンピューティングよりは改善)、分散化によりモデルの同期やアップデートが複雑化する。などの課題があります。


    プルーニング(枝刈り)

    プルーニングは、重要度(寄与度)の低いニューロンを「枝刈り」(重みを0に)し、軽量化したニューラルネットワークを生成する手法を指します。Dropoutは学習時にランダムで削除しますが、プルーニングは学習後にノード自体を削除し、再度学習させて精度を上げるという違いがあります。

    ※プルーニングは、「大規模なモデルには大量のパラメータがあるが、推論に寄与しているのはその一部ではないか?」という仮説から成り立っています。

    プルーニングによるモデル構造の軽量化

    蒸留(Distillation)

    蒸留は、複雑な「教師モデル(Teacher Model)」から学習し、単純な「生徒モデル(Student Model)」を生成する技術です。教師モデルの出力確率(ソフトターゲット)を使用し、単純なニューラルネットワーク(生徒モデル)の損失に加算して生徒モデルを訓練します。

    • 教師モデル: 予測精度の高い、複雑なモデル
    • 生徒モデル: 教師モデルをもとに作られる軽量なモデル
    distillation

    量子化(Quantization)

    量子化は、モデル内の重みやアクティベーションを下位のフォーマットに変換することで、計算量を削減する技術です。具体的には、重みパラメータの勾配などの浮動小数点数の精度を下げて計算量を削減します。通常は64bitや32bitであることが多いですが、4bitなどで計算することで、全体の計算量が大幅に削減されます。

    注意点としては、量子化により計算速度は速くなりますが、精度が低下する可能性があります。


    関連用語の補足
    • soft target loss: 教師モデルの出力確率分布(ソフトターゲット)と生徒モデルの出力分布の間の誤差を測定する損失関数です。 主にKLダイバージェンスが用いられます。
    • hard target loss: 生徒モデルの出力と、正解ラベル(ハードターゲット)との間の誤差を測定する損失関数です。 主にクロスエントロピー損失が使用されます。

    キーワードまとめ

    エッジコンピューティング、IoTデバイス、プルーニング(枝刈り)、蒸留(Distillation)、量子化(Quantization)