COLUMN誰でもわかる!お役立ちコラム

エッジ活用支援コラム

エッジAIはなぜ難しいのか?

エッジAIとは

エッジAIとは、エッジコンピューティングとAIを組み合わせた用語です。つまり、IoTやエッジコンピューティングが可能なデバイスを導入することで、様々なデバイスなどから多岐にわたるデータを、ミリ秒単位といった短いサイクルで取得し、収集したデータをすぐにその場でAIが処理する、といった一連の流れを実現する仕組みを指しています。

これらを導入することで、例えば製造業の現場では、各装置や機器の稼働状況、生産実績、不良の発生などをリアルタイムに可視化するだけでなく、機械故障の予測等も実施し、生産計画を立てるといった業務プロセスの改革が可能になります。

エッジAIが求められる理由:セキュリティとリアルタイム性

エッジAIと対比される概念としてはAWS(Amazon Web Services)などでAIの処理を行うクラウドAIがあげられます。クラウドAIではなく、エッジAIが求められる理由としては下記の2点があげられます。

  • セキュリティ(情報の秘匿性)が求められる場合
    医療や金融など高度に情報の秘匿性が高い業界や個人が写り込んだ画像をAIで判定する場合には、インターネットを利用するクラウドの活用が避けられるケースがあります。このようなケースではよりセキュアに利用できるエッジAIは利活用しやすいと考えられます。
  • 即時性(リアルタイム性)が求められる場合
    ネットワークを通じてデータをクラウドに送るクラウドAIは、データ転送のレイテンシがかかってしまいます。自動運転システムや製造業の不良品検出システムなど、即時性が求められるケースではエッジAIが優位であると考えられます。

エッジAI運用基盤を提供するJetsonエッジMLOpsのPoC支援サービスはこちら→

エッジAIではモデル軽量化が必須

エッジAIにてリアルタイム性をより高めるためには、エッジデバイス上でのAIの処理を高速にする必要性があります。一方で、エッジデバイスはデータセンターに設置するケースは少ないため、大規模なコンピュータを設置することはできません。したがって、コンピュータはメモリやCPU・GPUのパワーには上限があります。

このようなデバイス上では、大規模なAIモデルをそのまま利用できないケースが存在します。
また、エッジAIで活用されるような機械学習モデルは、画像分類や物体検出といった計算量が多いモデルが利用されるケースが大半であり、医療や自動運転などの人命が関係する利用ケースにおいては精度を落とすわけにはいきません。いかにモデルの精度を保ったままメモリ使用量やCPU、GPUの計算負荷を削減し、処理時間を高速化できるかが、エッジAIにおいては非常に重要な検討ポイントになります。

そこで考えられる手法が、「モデル圧縮」です。モデル圧縮とは、計算量を小さくすることでAIの学習時間を短縮したり、CPUやメモリの使用量の削減によってより複雑なモデルを搭載できるようにしたりすることで、エッジデバイス上での機械学習処理を実現できるようにする手法です。

モデル軽量化の手法

モデルの軽量化手法について、代表的な手法は3つあります。

Pruning(枝刈り)

物体検出や画像認識技術で用いられるディープラーニングでは、複数のパラメータ(ノードと呼ばれます)が何層にも積み重なってアウトプットを出す仕組みとなっています。そのノード間の重みが小さい箇所の接続を削除する、または影響の小さいノードを削除することでパラメータ数を削減する手法です。

ノードが削除されることによって、モデル全体の計算量を減らすことができます。この手法によって、場合によっては80%〜90%程度のノードを削除できる場合もあります。なお、一般的にはPruningだけでは精度が落ちてしまうため、Pruning後に再学習を行うことで元の精度を保つということを実施します。

引用:https://towardsdatascience.com/pruning-neural-networks-1bb3ab5791f9

Knowledge Distillation(知識蒸留)

大きなモデル(教師)を使って小さなモデル(生徒)に知識を伝える手法です。つまり、一度学習したモデルの知識(予測結果)を教師データとして、別の小さいモデルに継承するということです。これにより、大きいモデルに匹敵する精度を持つ小さいモデルを作ることが期待できます。

この手法のポイントは最終的な正解ではなく、確率的に分類結果を出せるように、生徒モデルを訓練します。たとえば犬と猫とを判別するモデルを考えると、80%の確率で犬であり、20%の確率で猫である、といった答えを出せるようにします。このような工夫を行うことで、情報量が増えた場合でも計算量が少なく学習結果が出せるようになります。

引用:https://arxiv.org/pdf/2006.05525.pdf

Quantize(量子化)

重みなどのパラメータをより小さいビットで表現することで、モデルの軽量化を図る手法です。具体的には、ディープラーニングで利用される数値の型をFloat型の数値(32ビット)から、ほかの型(8ビット)に変換する、といった処理を行います。これにより、計算に必要なメモリを4分の1ほどに縮小します。端的に計算量を減少することができるため、その分処理が高速化します。

一方で、使用するビットを小さくするほど精度が低下する可能性が高いことに注意が必要です。

適切な手法の選択方法は?

モデルを軽量化することによってディープラーニングを活用できる可能性が広がることは間違いありません。一方で、上記に紹介した各手法はそれぞれメリットとデメリットが存在します。また、いきなり小さいモデルを作ればいいというだけでもなく、精度と計算量のトレードオフを考えながら実装していくことが重要です。

デバイスによる性能向上トレンド

モデルの軽量化のほかに、デバイス自体の性能向上による処理高速化も手法として考えられます。具体的な最新のデバイスとしては、『組込みGPU』と『AIアクセラレータ』があげられます。

組込みGPU

GPUとは、CPUと異なり、画像処理に特化した演算装置です。画像データはコンピュータ上では数字の塊で表現されているのですが、それらの数字の塊を一斉に処理するGPUは、高い並列計算機能を持っており、機械学習やディープラーニングの現場でも頻繁に利用されています。
例えば、GPU製造大手のNDIVIA社の実験では、CPUのみの場合と比較して最大20倍以上の速度で機械学習のモデル構築ができるようになっています。GPUはサーバーに搭載するものと、エッジデバイスに搭載するモデルがあり、後者が組込みGPUと呼ばれ、サーバー向けのものと比較して性能は若干低くなりますが、消費電力がより小さいメリットがあります。

代表的な製品としては、NVIDIA社の『Jetsonシリーズ』があり、様々なモデルがリリースされています。『Jetson AGX Xavier』などの上位モデルは性能が高くサーバーに搭載するモデルとほぼ同等のレベルになっており、複雑な機械学習モデルを利用するケースでの利用に期待がされています。

AIアクセラレータ

AIアクセラレータとは、ディープラーニングや機械学習などのAIアプリケーションを高速化するために設計された特殊なハードウェアまたは演算装置を指します。AIアクセラレータを用いた場合は、CPUを用いた場合と比較して最大30倍以上の速度でモデル構築が可能になった、という報告もあるほど処理の高速化が期待できます。

具体的な製品としては、Intel社の『Neural Compute Stick 2』やGoogle社の『Edge TPU』などがあげられます。まだ日本国内で直接購入できる商品は少ないため、利用を考える場合は専門の商社等へ問い合わせが必要になります。
エッジAI運用基盤を提供するJetsonエッジMLOpsのPoC支援サービスはこちら→

まとめ

エッジAIを活用する場面において、リアルタイム性を高めるためには、機械学習モデルを軽量化する方法と、デバイスの性能を上げる2つのアプローチがあります。前者についてはモデル検証の時間コストがかかり、後者に関してはデバイス購入のコストがかかります。また、それぞれを理解して運用できる人的リソースの考慮も必要です。

エッジデバイスを導入し、適切に運用していくために、どのような方法を選択することが最適なのかについては、専業のベンダーやコンサルタントに相談してみるのもいいでしょう。