はじめに
まだまだ現役で利用されているシーンも多いかとは思いますが、下記のようなUSBに接続するタイプのアクセラレータが 2018年~2019年ごろ発売され始めて以降、特に進化したバージョンが現れてニュースを騒がせたりしていない気がします(私が知らないだけかもしれませんが)。
今更なのですが、少しスペックを見ながら考察してみようと思います。
仕様調査
仕様を調べてみて、あまり不確かでない情報や ChatGPT の回答などもあるのですが、なんとなくそれっぽい値をかき集めてみました。
| Intel Neural Compute Stick 2 | Coral USB Accelerator | |
|---|---|---|
| インターフェース | USB 3.1 gen1 ? | USB 3.1 gen1 |
| 演算能力 | 4 TOPS | 4 TOPS |
| プロセッサ | Intel Movidius Myriad X VPU | Google Edge TPU |
| プロセッサの周波数 | 700MHz | 500MHz? |
| メモリ | 4GB 32bit@1600MHz | 8MB (on chip) ? |
| 消費電力 | 1~2.5W? | 2 W per TOPS |
| 価格 | 69ドル | 74.99ドル |
推定で書いてる個所もあるので、間違いがあったらすみません。
計算帯域を考えてみる
どちらも USB3.1 Gen1 のように予想されるので、恐らく理論限界の転送性能は 5Gbps(625MByte/s) ではないかと思います。一応 USB3 以降は全二重通信なので、往復路のそれぞれで 5Gbps が期待できるのかと思います(もっとも、実際の実行帯域としては半分ぐらいでは無いかとは思いますが、理論値で計算します)。
この時、理論限界の帯域が出たとしても INT8 一個の転送の間に 5GHz のプロセッサだとの 8サイクル分の計算が出来る事になります。昨今のマルチコアでSIMD命令も持っているCPUだと8サイクルに 100 OPS ぐらい計算してしまいかねず、これより十分多い量の演算をしないとペイしないことになります。
アクセラレータはどちらも 4TOPS という事なので、恐らく 1秒当たり 2T 回の積和演算ができる計算かと思います。これは 625MByte/s に対して1Byte(INT8)に 6,400 OPS の計算、積和だと 3,200 回適用できることになります。ひとまずこの段階で計算量的にはペイしそうです。
一旦シンプルに1層で100x100 ぐらいの DenseAffine を計算することにすると、1データあたり 1層で100回の積和となるので、32層ぐらいの深さのネットがバランスが取れた規模となるのかと思います。
もちろんこれが CNN や Transformer とかネットのアーキテクチャが変わってくるとまた変わってくると思いますが、大雑把な規模感としてそんな感じかなと思います。
もちろんこれは、パラメータは事前に転送済みの前提で、パラメータの入れ替えも並行して行うとパラメータ転送帯域が律速することが用意に想像できます。
先の 100x100 Dense Affine の例だと、パラメータは 10,000個 ですので、データ100個に対して、都度都度これを再転送していたらデータ転送の100倍以上の帯域をパラメータ転送で消費してしまいかねません。これは LLM などの大パラメータのネットを使おうとすると凄まじく巨大なメモリを持っていない限り成り立たないことになる気がします。
電力を考えてみる
USB3.0 では標準で 4.5W の給電が可能なようです。現時点で 2W 程度使っているようですのでマージン考えると割とすでに現実的な数字です。
今後、半導体プロセスの微細化が続て電力効率の増加は期待できるとは思いますが、以前のように指数関数的な性能向上は望めなくなってきているので、「USB電力で駆動できる範囲」での伸びしろはそれほど多くないのかもしれません。
電源アダプタなどで補助電源を繋ぐ手もあるかもしれませんが、そこまでするなら転送帯域も含めて PCIe のカードにした方が良いような気もします。
なんとなくまとめ
纏めようのない流れになってしまったのですが、感覚的に、これらの既存USBアクセラレータは、現在のデバイスやインターフェース規格の上でかなりバランスよく完成してしまっており、デバイスやインターフェース規格にブレークスルーが起こらないと大きな進展が起こらないのではないかという気もし始めました。
なかなか興味深いデバイスだったので今後の発展に期待したいところだったのですが、ある程度収まるところに収まっている印象です。
おまけの駄文
今回の記事を書いていてふと思いだしたのですが USB2.0 時代に EZ-FPGA というものがありました。
USB3.0 版で同じぐらい安くてお気軽な FPGA ボードがあるといろいろ遊べるのになと、ふと思ってみた次第です。 どこかにいいものないかなぁ?
参考にしたURLのメモ
- https://www.intel.com/content/dam/support/us/en/documents/boardsandkits/neural-compute-sticks/NCS2_Product-Brief-English.pdf
- https://www.taxan.co.jp/jp/information/products_topics/pdf/ncs2_brochure.pdf
- https://community.intel.com/t5/Intel-Distribution-of-OpenVINO/How-many-Flops-of-NCS2/m-p/1223152
- https://community.intel.com/t5/Intel-Distribution-of-OpenVINO/How-much-memory-is-available-in-NCS-2-how-large-model-can-fit/m-p/1143053
- https://www.qnap.com/ja-jp/product/mustang-v100
- https://coral.ai/docs/accelerator/datasheet/


