低価格FPGAを用いた文字認識AI推論の全体像:FPGAにニューラルネットワークを実装する(1)(1/3 ページ)
FPGAにニューラルネットワークを実装するプロセスを学ぶ本連載。第1回では、連載の狙いや、文字認識AIモデルの概要、どのようにFPGA上で文字認識を行うかなど全体の流れを紹介する。
はじめに
本連載は、PCで学習した文字認識のAI(人工知能)モデルのニューラルネットワークを、低価格で入手できるFPGA開発ボードに実装して推論実行することを目指します。第1回記事である本稿では、筆者が何をしようとしているのか、またどこを目指しているのかを共有するために全体的な流れを紹介したいと思います。
使用するのは低価格のFPGA開発ボード「Tang Nano 9K」
今回は、8×8のLEDドットマトリックス上の5×5ドットの枠内に表示された文字を認識するニューラルネットワークを用います。学習はPCで行い、推論(実行)はFPGAで行います。
FPGA開発ボードはSipeedが製造/発売している「Tang Nano 9K(以下、Tang Nano)」を用いました。Tang Nanoに搭載されているFPGAはGOWIN Semiconductorが製造元です。本連載では、同社のIDE(統合開発環境)を利用する場面も出てきます。
Tang Nanoは安価なことで知られており、秋月電子通商では2980円(税込み)で販売されています(2023年12月末時点)。インテル(旧アルテラ)やAMD(旧ザイリンクス)などのFPGAと比べれば手軽にFPGAに触れられる製品になっています。
Tang Nanoのスペックは以下の通りです。
- Logic units(LUT4):8640
- Registers(FF):6480
- ShadowSRAM SSRAM(ビット):17280
- Block SRAM BSRAM(ビット):468K
- Number of B-SRAM:26
- User flash(ビット):608K
- SDR SDRAM(ビット):64M
- 18 x 18 Multiplier:20
- SPI FLASH:32Mビット
- Number of PLL:2
ここで重要なのはRegisters(FF)の数です。今回はFPGAで実行させるのは推論だけなのでこのリソースはあまり使わないのですが、学習もFPGAで行うことになると大量に消費します。Tang NanoのFPGAは他にもメモリ系を豊富に搭載していますが、ニューラルネットワークを用いた推論ではあまり機能しません。これらのメモリはバスアクセスの幅が制限されるので、結局のところCPUでニューラルネットワークを実装したのと同じになりFPGAで実装する意味がなくなります。FPGAでニューラルネットワークを実装する良さは並列処理できる演算を一気に実行できるところにあり、そのためには記憶系素子のメモリはニューラルネットワークを実装する回路内になくてはならないのです。そのため、Registers(FF)を大量に消費してしまうというわけです。
実のところ、Tang Nanoで推論だけではなく学習も試みたのですが、このRegisters(FF)が不足しており十分な性能を出せませんでした。そこで、FPGAによる学習は断念し今回のように学習はPCで行うというシステム構成にしました。ただし、Tang Nanoよりリソースが充実している「Tang Nano 20K」であれば学習も可能でしょう。本連載とは別の機会に報告ができればと思っています。
ということで、本連載では低スペックFPGAへのニューラルネットワークの実装について、できること、できないことをしっかりと吟味したいと思います。
なお、本連載では、FPGAボードはTang NanoにLEDドットマトリックスをマウントしたものを使用します。これについては、連載「オリジナルCPUでバイナリコード入門」の第4回記事『新たな教材となる「Tang Nano 9K」を使ってLEDマトリクスを制御する』をご確認ください。
Copyright © ITmedia, Inc. All Rights Reserved.