前回NVIDIAのGPUロードマップを解説したので、AIの講義が一回空いてしまったが、前々回の連載562回までで「そもそもAI(正確にはConvolutional Neural Network)はどんな計算処理をしているのか」は理解いただけたと思う。
もちろん連載562回は2013年ごろのネットワークの話なので古典であり、そこから急速にネットワークそのものも進化しているし、新しいネットワーク構造も登場している。
さらに言えば昨今は教師なし学習の分野もずいぶん盛んである。こうした新しい分野では多少要求されるニーズは変わってくると言えば変わってくるのだが、それでも大きく要求されるものが変化する、ということは現在のところはなく、基本的には積和演算(MAC:Multiply-ACcumulate operation)が山盛りという形になっている。
ただし、研究が進むにつれて学習(Training)と推論(Inference)では、求められる要件に違いが出てき始めた。
学習には大量の演算が必要
これにはGPUが有利
学習に関して言えば、もちろん計算量も半端ではないし、かつ計算精度もあまり極端には落とせないので、ひたすら計算機をブン廻す必要がある。
こうなってくると、大量のMAC演算を行なうことに特化した構造になっているGPUは非常に有利である。
またNVIDIAは早い時期からDNN(Deep Neural Network:深層学習)に取り組んでおり、CUDAでDNNを実行するためのさまざまな環境やライブラリーを提供していたこともあって、必然的に学習=NVIDIAのGPUを並べてCUDAで記述、という図式が出来上がることになった。
速度が求められる推論は
どこまで精度を落とすかがカギ
その一方で推論は「精度より速度」という傾向になった。計算精度を引き上げてもそれほど推論の精度は上がらず、逆に計算精度を落としても推論の精度が落ちにくいことが見えてきたからだ。
学習の時にはFP32(単精度浮動小数点演算)を利用して計算しても、そこで学習したネットワークを利用して推論する場合は、FP16(半精度浮動小数点演算)や、場合によってはINT8(8bit整数)でも結構いけることになった。
もちろん浮動小数点演算を前提にしたネットワークにそのまま整数演算を通せるわけではないのでやや手直しは必要だが、整数演算にすることでより小規模な演算回路で済むし、データも8bit幅で済むため、SIMD形式で処理すれば同時に処理できる数が増えることになる。
そして推論に関しては、計算精度を上げるよりも層数を増やした方が有利という傾向が見え始めた。
例えるなら、16bitで演算する5層のネットワークより、8bitで演算する10層の方が高い精度を出せる感じだ。
ネットワークの層数を増やすと必要になる計算量やメモリー利用量が増えるので、これを計算精度を落とすことで帳尻を合わせる方が有利なのが明確に見え始めた。
加えて言うと、実際のアプリケーションの利用の仕方を考えると、認識精度が高いけど遅いよりも、認識精度が少し低くても高速な方が使いやすいという要望も上がってきた。
例えば顔認識。通常ならカメラを組み合わせて、撮影した画像をリアルタイムで処理して「これは誰か」、あるいは「これはなにか」を判断するわけだが、その際に例えば毎秒10回判断して、その結果を統計を取るようにした方が確度が高い、というアプリケーション側からの要件である。
どんなに精度を上げても、100%というのはなかなか到達しない。通常は70%から80%の確度になるわけで、そうであれば顔の向きを少しづつ変えながら撮影して、その結果を判断することで、より確実性を増せるという話になる。
こうなると、推論側に関しては「どこまで精度を落とせるか」という新たなチャレンジが発生することになった。通常CPUにしてもGPUにしてもDSPにしても、2013年の時点で扱えるのは下表のあたりだった。
| 整数 | INT 8/16/32/64 |
|---|---|
| 浮動小数点 | FP32/64 |
ところが、まずFP32では大きすぎるということで、より精度を落としたFP16をサポートするハードウェアが出始めた。FP32というのは連載468回で言うところのBinary32、FP16というのは同じくBinary16に相当する。
これでデータの幅が半分になったので、同じ演算器を使っても理論上は倍の性能が出ることになる。ただFP16では仮数部が大きすぎ、逆に指数部が小さすぎるという要求が出てくるようになった。
これはネットワーク内で利用する係数の問題だが、一部のネットワークは桁数が異様に多い関係で、FP16では処理ができないケースが発生した。
これに向けて登場したのが、BFloat16である。BFloat16は塩田氏の記事で解説があるが、仮数部を7bit(有効桁数2桁)に減らし、その分指数部を8桁に増やしたフォーマットである。
これはIEEE-754には定義されていない、いわば業界標準フォーマットであるが、まずインテルで採用され、次いでGoogle TPU、Arm、NVIDIA、AMDなどで相次いで採用されるようになった。

この連載の記事
-
第852回
PC
Google最新TPU「Ironwood」は前世代比4.7倍の性能向上かつ160Wの低消費電力で圧倒的省エネを実現 -
第851回
PC
Instinct MI400/MI500登場でAI/HPC向けGPUはどう変わる? CoWoS-L採用の詳細も判明 AMD GPUロードマップ -
第850回
デジタル
Zen 6+Zen 6c、そしてZen 7へ! EPYCは256コアへ向かう AMD CPUロードマップ -
第849回
PC
d-MatrixのAIプロセッサーCorsairはNVIDIA GB200に匹敵する性能を600Wの消費電力で実現 -
第848回
PC
消えたTofinoの残響 Intel IPU E2200がつなぐイーサネットの未来 -
第847回
PC
国産プロセッサーのPEZY-SC4sが消費電力わずか212Wで高効率99.2%を記録! 次世代省電力チップの決定版に王手 -
第846回
PC
Eコア288基の次世代Xeon「Clearwater Forest」に見る効率設計の極意 インテル CPUロードマップ -
第845回
PC
最大256MB共有キャッシュ対応で大規模処理も快適! Cuzcoが実現する高性能・拡張自在なRISC-Vプロセッサーの秘密 -
第844回
PC
耐量子暗号対応でセキュリティ強化! IBMのPower11が叶えた高信頼性と高速AI推論 -
第843回
PC
NVIDIAとインテルの協業発表によりGB10のCPUをx86に置き換えた新世代AIチップが登場する? -
第842回
PC
双方向8Tbps伝送の次世代光インターコネクト! AyarLabsのTeraPHYがもたらす革新的光通信の詳細 - この連載の一覧へ












