
何が起きたか
nn.Linear(784, 256)層を追い、200704個の重みと256個のバイアス、FP32で約785 KiBがCPU SIMD、GPU Tensor Core、FPGA DSP/BRAM、ASIC MACアレイを流れる。
なぜ重要か
同じ数学的パラメータでもハードウェアでは全く異なる姿になると記事は論じる。設計の本当の問いは、200704個の重みをどこに置きMACユニットへどう届けるかであり、乗算の速さだけではない。
注目点
8ビットのMAC1000基なら1 GHzで8 Tbit/sが必要な点は帯域問題だと記事は指摘。重み再利用がメモリトラフィックを削減できるかが試金石で、FPGAの速度と面積のトレードオフも挙げる。
誰に効くかこれはCPU、GPU、FPGA、ASICの対象を比較検討するハードウェアおよびAIアクセラレータのエンジニア、そしてFPGAやASICの設計を書くチームにとって重要だ。MACユニットを何基造り、200704個の重みをどこに格納するかの判断が、速度、電力、チップ面積を決める。
こういう要約が、毎朝あなたのメールに届きます。
記事はPythonの1行、nn.Linear(784, 256)から出発し、4つのハードウェアの世界をたどる。その過程で、この層がy = xWᵀ + bを計算し、ニューラルネットワークの根底にある支配的な演算が積和演算(MAC)、つまり784回の積和を256個の出力それぞれで繰り返すものだと指摘する。CPUでは重みはDRAMからL3、L2、L1キャッシュを経てレジスタへ運ばれ、SIMD/FMA命令が処理する。CPUに専用のLinear回路はなく、大きな行列積を計算しているだけだ。
GPUでは同じ重みがPCIeか統合メモリを通ってHBMやGDDRへ移り、L2キャッシュと共有メモリを経てCUDAかTensor Coreへ届き、タイル化されたGEMMとして乗算を処理する。FPGAでは、と記事は説明する。Linear回路そのものを構築できる。重みはBRAMかURAMへ入り(INT8に量子化すれば重みは約1.61 Mbit)、DSPブロックがMACユニットになり、forループの使われない部分は空間へ展開するかパイプライン化して毎クロック新たなデータが届くようにできる。ASICはさらに進み、設計者はWeight SRAMをMACアレイのすぐ隣に置け、37のような固定値をビットシフトと加算に変えて重みデータを完全に消せるため、情報はメモリではなく回路構造に宿る。
記事の統一的な論点は、同じ数学的パラメータWが、DRAMの32ビット浮動小数、HBMの行列データ、BRAMのビットか論理、専用SRAM、さらにはアナログ・コンピュート・イン・メモリの物理量としてさえ存在しうるということだ。設計の鍵は重みの供給にあると記事は示唆する。1000基のMACが各サイクル8ビットを必要とすれば1 GHzで8 Tbit/sになるため、AIアクセラレータを造る者にとって、再利用やWeight Stationaryのようなデータフローは、生の乗算速度と同じくらい重要になりそうだ。
業界と使っているAIツールを選ぶと、仕事に関係するニュースが毎朝届きます。
登録無料・Googleアカウントなら30秒・いつでも解除できますAITodayについて →
この記事についてわからないことをAIに質問できます。AIはこの記事・AIToday の過去記事・Wikipedia を読み、出典を付けて答えます。Q&Aはこのページに公開され、他の読者も読めます。