日立製作所 研究開発グループ 自動運転研究部は、GPUによるCNN(Convolutional Neural Network:畳み込みニューラルネットワーク)処理において期待したような性能が出ない理由やその対処方法について、「DAシンポジウム2022 −システムとLSIの設計技術−」(情報処理学会 システムとLSIの設計技術研究会(SLDM)が2022年8月31日~9月2日に開催)で発表した。CNN処理は、ADAS(先進運転支援システム)や自動運転における画像認識でよく使われる演算である。
発表した日立の島村光太郎氏によれば、CNN処理をGPUで実行すると、その演算性能がGPUメーカー発表のピーク性能より桁違いに低い場合があるという(図1)。例えば、データセンターでの推論処理でよく使われている米NVIDIA(エヌビディア)のGPUカード「Tesla T4」の16ビット浮動小数点演算(FP16)のピーク性能は65TFLOPSだが、同氏が検討した例では1.7TFLOPSだった。
今回、Tesla T4上で物体検知用CNNモデル「YOLOv4」を稼働させて、性能低下要因を探り、対処方法を見いだした。YOLOv4は、複数のレイヤーからなるCNNで、各レイヤーでは3つの演算を行う(図2)。畳み込み、バイアス加算、活性化関数である。
ベーシックな処理手順では、畳み込み演算のみにNVIDIAのDNN演算ライブラリー「cuDNN(CUDA Deep Neural Network library)」を適用し、3つの演算のそれぞれの前後で外部メモリーにアクセスする(図3の左側の【オリジナル】)。この外部メモリーへのアクセスが全体の処理時間の増大に響いていそうなので、畳み込みとバイアス加算の両方にcuDNNを適用し、外部メモリーアクセスを削減した(図3の右側の【ステップ1】)。