エッジAI機器の開発 ~組込みNPUにAIを実装するためには~
昨今、AIの登場によりさまざまな処理が容易におこなうことが出来るようになりました。例えば、防犯カメラを利用した不審者検知があり、現在はGPUサーバーを利用した中央集約型のシステムがよく利用されています。中央集約型のシステムではエッジ機器からの生データをすべて中央に集める必要があり、ネットワーク帯域/品質の問題やシステムコストなどの問題から、システムによっては各エンド(エッジ)の組込み機器内でAI処理をおこなうエッジAIの需要が増してきています。
その一方で、エッジ機器では大型GPUと違い、処理能力や消費電力に制約があるため、利用できるリソースを最大限に引き出せるような処理が求められています。
本記事では、Synaptics社の組込みProcessorを例にとり、エッジ機器にAIを実装するためのポイントを解説します。
GPUとNPUの違い
中央集約型のシステムではGPUサーバーなどでAI処理がおこなわれますが、エッジ機器はNPUと呼ばれるProcessorで処理されることが多いです。
GPUはGraphics Processing Unitの略で、主に映像処理のために利用されます。一方で、NPUはNeural network Processing Unitの略で、AI処理に特化したハードウェアです。どちらもCPUやDSPと比較し、単純な処理を並列に早くおこなうことに特化したユニットです。
GPUの性能指標は主にFLOPS(FLoating-point Operations Per Second)が用いられることに対して、NPUはTOPS(Tera Operations Per Second)が用いられます。
どちらも1秒間に何回の演算ができるかという指標ですが、演算に用いられる変数型が、FLOPSの場合float32やdouble64などの浮動小数点型に対し、TOPSはINT8やINT4などの整数型になります。
補足)
同じ”GPU”でも、組込みSoCで利用されるIPと、PC/サーバーで利用されるIPで違いがあり、ソフトウェア視点での利用方法には注意が必要です。AIサーバー向けなどの高性能GPUでは、一般的に並列演算処理のミドルウェアとしてNVIDIA社CUDAが良く利用されます。一方、組込みGPU向けではOpenCLやOpenVXなどが採用されています。
多くのAIソフトウェアはPCやサーバーでの実行を前提とされており、組込みGPU/NPUに対応していない場合が多いです。
例えば、Pytorchの場合、CUDAであればtorch.device()にてCPU or CUDAがサポートされており、組込みで一般的なImagination社GPUやVeriSilicon社NPUでの処理はサポートされていません。そのため、PC/サーバー向けのAIソフトウェアを組込みシステムにそのまま流用すると、CPUを利用した演算となり、SoCの性能が引き出せなくなってしまいます。
・参考:Pytorch torch.device
組込みNPUにAIを実装するためには
前章で解説した通り、多くのAIソフトウェアはPC/サーバー用GPUでの処理を前提としているため、浮動小数点数型の命令セットのある環境での実行が要求されます。しかし、前章の通り組込みNPUは整数演算型の命令セットが主なため、AI処理を実装するためには、Float -> int型への量子化が必要です。一般に、Float32からint8/int16へのキャストはデータをそぎ落とす形になるため、AI演算処理の精度が低下します。また、量子化によりデータ容量を減少させることになるので、RAMサイズに制約のある組込みシステムでも十分にロードできるサイズへ最適化する意味もあります。これらの処理を行うツールは、主に各SoCメーカーから提供されます。
※ツールを提供していないSoCベンダーの場合、ユーザーがOSS等を利用して独自に量子化を行うか、CPU処理を選択します。
量子化ツールの例
例えば、Synaptics社のASTRA SLシリーズSoC向けには、SyNAPというツールが用意されており、モデルの量子化はシェルのコマンドにて簡単におこなうことが可能です。
$ synap convert --target {$CHIP_MODEL} --model example.{$MODEL_FORMAT}
#$MODEL_FORMATはonnx, torchscript, tflite, prototxtなど各種モデルに対応
※SyNAPでは、量子化の各種設定(INT8 or INT16 or 複合量子化など)もおこなうことが可能です。
詳細マニュアルはSynaptics社AI developer(AI開発者向けポータルサイト)にあります。
エッジAIの利用例
ここではエッジAIの代表的な利用例を紹介します。既に製品化されている事例もあります。
・画像処理
・ISPの代替え
・オーディオ処理
・言語処理(SLM)
・マルチモーダルAI
画像処理
代表的なエッジAIの利用例として、画像処理が有名です。従来はDSP処理や大規模FPGAにて、非常に重いアルゴリズムが必要であった画像の人物検知やFace IDなどの処理が、YoloなどのオープンソースAIモデルの登場により、お手軽にハードウェアのリソースの限られた機器へ実装できるようになりました。
Yoloは前述したSynaptics社の提供するSyNAPに含まれるGstreamerプラグインを利用することで、シェル上のコマンドで簡単にお試しいただくことが可能です。
例:/dev/videoXソースでの物体検知
$ gst-launch-1.0 v4l2src device=/dev/videoX ! video/x-raw,framerate=30/1,format=YUY2,width=640,height=480 ! videoconvert ! tee name=t_data t_data. ! queue ! synapoverlay name=overlay label=/usr/share/synap/models/object_detection/coco/info.json ! videoconvert ! waylandsink t_data. ! queue ! videoconvert ! videoscale ! video/x-raw,width=640,height=384,format=RGB ! synapinfer model=/usr/share/synap/models/object_detection/coco/model/yolov8s-640x384/model.synap mode=detector frameinterval=3 ! overlay.inference_sink
https://synaptics-astra.github.io/doc/v/1.5.0/linux/index.html#gstreamer-synap-plugin
ISPの代替え
CMOSイメージセンサーを利用する場合、必須となるハードウェアとしてISP(Image Signal Processor)があります。センサーの生データを受け取り、レンズの歪み補正・ホワイトバランスなど各種調節・データ変換などの処理をおこない、YUVやRGBなどの一般的なデータ形式に変換する役割があります。メーカーによってはHDRからオートフォーカス機能まで備えた高性能ISPも存在します。近年、ISPの一部処理としてAI処理を用いる場合があり今後は一般的な処理となる可能性があります。
オーディオ処理
従来、ワイヤレスマイク/イヤホン・ヘッドホンなどで用いられてきたANC(Active Noise Cancel)やENC(Environment Noise Cancel)は、別途エラーマイクを取り付け、こちらから拾ったノイズ信号を逆位相で信号へ加算することで実現することが一般的でした。しかし、AIの登場により人間の声情報の分離や、特定の人の声を分離するなどの処理が可能になりました。
既に市場にはAIノイズキャンセルを謳っている製品がありますが、更に低価格帯の製品にもノイズキャンセル機能を実装できる可能性があります。
言語処理(SLM)

右図のような対話型AIは必ずサーバーで処理するものというイメージは無いでしょうか。
大規模言語モデル(LLM)のような高負荷処理を必要とするAIは、GPUクラスタなどの超高性能な演算処理が必要とされますが、組込みなどのローカル環境向けに小規模言語モデル(SLM)が登場しました。
組込み機器がローカル環境のみで対話型のAIを実装できるので、データセットのチューニングのみでスマートスピーカーのようなデバイスが開発できます。
実装例は下記リンクのOn-Device AI Voice Assistantをご参考ください。
・Synaptics AI developer -Llama on Astra
・Synaptics AI developer On-Device AI Voice Assistant
また、上記On-device-Assistantのソースコードは下記Gitで公開されております
マルチモーダルAI
マルチモーダルAIは単一のデータではなく、複数データの処理が可能な高度なAIです。現在は複数データ入力に対して複数モデルを同時にロードし、1モデル1データに対応させて、それぞれ処理をおこなうという流れが多いです。しかし、将来的には複数データを1モデルに入力するようなAI処理が開発される可能性があります。例えば、監視カメラでは音声と画像データを同時に利用することで、これまで感じ取れなかった周囲環境の雰囲気をAIが判定できるようになり、これまで考え付かなかったようなユースケースが生まれるかもしれません。
Synaptics社ASTRAシリーズ紹介
最後にこれまでに一部触れてきたSynaptics社のSoC/MCUシリーズを紹介します。
NPU搭載製品のラインナップがあり、SyNAPと呼ばれるAIソフト開発ツール及びマニュアルが充実しているためAIを実装するハードウェアとして推奨されている製品です。
ASTRA SLシリーズ
SLシリーズはARM Cortex-Aコアをメインとした組込みLinuxなどが動作するSoCです。SL1680, SL1640にVSI社のNPUを搭載しています。
SL1680ではVSI社提供のデバイスドライバではなく、よりハードウェアに最適化したSynaptics社独自開発のデバイスドライバを採用しています。同IPを提供する他社SoCはおおむね2TOPS程度のところ、7.9TOPS以上の性能を引き出した製品です。また、SL1680はHDMI(TMDS)信号が直接入出力可能や、その他MIPI DSI/CSI2ポートがある、オーディオ入出力ペリフェラルが豊富などの特徴があります。
ASTRA SLシリーズラインナップ
用途 | 品番 | 詳細 |
AI MPU | SL1680 |
ARM Cortex-A73 x4 (2.1GHz) 最大7.9+Tops NPU 3D/2D GPU (Imagination GE9920) |
AI MPU | SL1640 |
ARM Cortex-A55 x4 (1.9GHz) 最大1.6+Tops NPU 3D/2D GPU (Imagination GE9608) Audio DSP搭載 (Cadence® Tensilica® Dual HiFi 4) |
汎用 MPU | SL1620 |
ARM Cortex-A55 x4 (1.9GHz) 3D/2D GPU (Imagination BXE-2-32) |
※引用
ASTRA SRシリーズ
SRシリーズはARM Cortex-MコアをメインコアとしてARM Ethos-U NPUを搭載したマイコンです。主にRTOSまたはベアメタルソフトにて開発いただけます。
低消費電力性能に強みがあり、メインコア&メインNPUをフル動作させた際でも、約100mW程度の消費電流、Low-PowerドメインのARM Cortex-M4&Synaptics社µNPUでの動作で約10mW、さらに下位のALWAYS-ONドメインのハードウェアアクセラレーターの動作で約1mW程度です。MIPIのパススルー機能などもありますので、既存のCMOSカメラセンサーとHost Processorの間に置き、画像の前処理マイコンや、モーション検知でHost processorを起動するためのco-processorなどのユースケースに最適です。
本シリーズは2025/3に正式公開されましたが、AIモデルのRTOSへの組込み方や利用方法のマニュアルなど、様々な情報が順次Synaptics社HPにて追加される予定です。
ASTRA SRシリーズラインナップ
用途 | 品番 | 詳細 |
AI MPU | SR110 |
ARM Cortex-M55+U55(400MHz) + M4/µNPU(100MHz) 最大100 Gops NPU(U55) Tiny package(WLCSP84 5.2x2.7 mm) |
AI MPU | SR105 |
ARM Cortex-M55+U55(400MHz) 最大100 Gops NPU(U55) |
汎用 MPU | SR102 | ARM Cortex-M55(400MHz) |
※引用
・SR100 Series High-Performance AI MCUs Family Product Brief
・Synaptics ASTRA SRシリーズ
最後に
昨今、需要が高まっているエッジAI機器に関して、組み込みNPUにAIを実装するためのポイントや利用例を中心に紹介させて頂きましたがいかがでしたでしょうか。
Synaptics社のASTRAシリーズは、エッジAI開発の導入を促進する評価キットやAIソフト開発ツール、マニュアルが充実した製品です。
本情報が今後の皆様の開発の一助になれば幸いです。