WirelessWire News Technology to implement the future

by Category

AI半導体のベンチマークはtoken/secに変わる

2023.09.28

Updated by Ryo Shimizu on September 28, 2023, 18:24 pm JST

シリコンバレーに来ています。
とあるAI半導体のアーキテクトと夕食を共にしました。

今マウンテンビューのとあるストリートには、50を超えるAI半導体スタートアップがあるそうです。いくらなんでも多すぎではないかと思います。

これまでAI半導体の性能指標は、「TOPS(Tera Operation Per Seconds)」でした。一秒間あたりに何兆回の計算ができるかという指標です。

しかしこのTOPSという数値は解釈の幅が大きく、この数字だけをみて単純に「あれがいい」とか「これがいい」とは決められません。

特に最近のAI半導体のアーキテクチャは、SambaNovaのような非ノイマン型のものから、Esperantoのようなスーパーコンピュータ型、テンストレントのようなヘテロジニアス型と幅広くなっています。もちろん旧来型のNVIDIAのグラフィックス向け半導体のAIへの転用という見方もあります。

これだと一概に「演算が一秒間にこれだけできる」の意味がそれぞれのアーキテクチャで変わってきます。
実際問題、現在のGPUによる代替的な計算では、計算そのものよりもメモリアクセスの時間とエネルギーが占める割合が大きく、このバランスが非常に重要なところです。

90年代の終わり、GPUは「秒間⚪︎百万ポリゴン」で争っていました。ポリゴンとは、小さい三角形のことで、小さい三角形をたくさん描画することで立体的な画像を表現していました。

例えば秒間300万ポリゴンを出せるゲームマシンのGPUは、一秒間に30フレーム描画するとして、1フレームあたり10万ポリゴン使えるわけです。

ドリームキャストは秒間300万ポリゴンでした。ところが同じ世代のPS2が登場した時に、「秒間6600万ポリゴン」というにわかには信じられない数値を掲げます。この「ポリゴン」の定義が、一般的にどのくらいの面積であるかというルールが各社の間で明確化されていませんでした。つまり、「1ピクセル」のごく小さな三角形を1ポリゴンと数えるのか、それとも画面の10%くらいの面積を持つ「数十ピクセル」のポリゴンを1ポリゴンとして数えるかという、「数え方」の問題になったわけです。

実際問題、300万ポリゴンのゲーム機に比べて6600万ポリゴンのゲーム機のグラフィックスが22倍綺麗ということにはなりませんでした。良くて倍、場合によってはチラついて画面が見劣りすることすらあったという記憶があります。

というのも、アーキテクチャがあまりにも違いすぎるので、単純に「ポリゴン数」がどれだけ出せるかを競っても、意味がないわけです。実際には「専門知識が少なくてもマシンの性能を引き出せる」といったプログラミングのしやすさや、トータルのメモリ容量、コントローラによる体験などなど、マシンの優劣を決定する要素は山ほどあったにも関わらず、「ポリゴン数」という単純な側面での比較になったわけです。ちなみに、PS2の後に発表されたXboxは、1兆ポリゴンと主張していました。もはや嘘かホントかもわからない話です。結局、Xboxも鳴かず飛ばずでPS2が勝ち、ポリゴン数はゲーム機の面白さとほとんど関係ないことが証明されました。

その後、プログラマブルシェーダーが流行すると、ポリゴン数に意味がなくなってきて、新たにピクセルフィルレート(一秒間に何回ピクセルを描画できるか)が一つの性能指標になりましたが、この頃にはそれがゲームの面白さとなんら直結しないことはみんなわかっていて。NintendoDSのようにポリゴン性能は低くても面白いゲーム機を作ろうという追求が始まりました。今でも任天堂はポリゴン数やピクセルフィルレートという指標に全くこだわっているように見えません。

AI半導体も同じことが言えます。
そもそも「演算」が何を意味するのか。それはベクトル同士の内積なのか外積なのか、行列の積なのか、もしくは加算なのか、Softmaxなのか、明確な定義がありません。また、アーキテクチャによって一度に処理できる数値の数が変化します。

また、AIソフトウェアに関しても、最近はFP32(32ビット浮動小数点)は推論では滅多に使われなくなり、基本的にFP16かBF16、場合によっては8ビット量子化や4ビット量子化、最近では部分的に2ビット量子化などという話もあります。

2ビットや4ビットの演算となると、現代のアーキテクチャではむしろ16ビット浮動小数点より遅いはずです。
なぜ遅いとわかっていてここまで極端な量子化をするかというと、スピードを犠牲にしてでも、メモリを節約してできるだけ大きなモデルを扱いたいからです。

ただ、例えばこれを考慮して高価で複雑な浮動小数点数を使うのではなく、最初から4ビット量子化したモデルを扱うことに特化した演算器を用意するか(原理的には4ビット量子化モデルを扱う方が浮動小数点数を扱うよりも安く高速にできる)、まあ戦略は色々考えられます。

また、メモリの配置も重要で、今のGPUみたいにテクスチャメモリに各コアがアクセスするという形だとどうしてもバスで輻輳が起きてしまうので、うまくスクラッチパッドやL1,L2キャッシュに逃すような仕組みが必要です。SambaNovaはデータフローという仕組みでこれを解決しようとしていて、Esperantoはスパコンのように各レーンにスクラッチパッドを用意することで解決しようとしています。

いずれにせよ、これらはAIソフトウェアの進歩の方向性と切っても切り離せない問題で、NVIDIA以外はどの会社もソフトウェアエンジニア不足という決定的な問題を抱えています。

そうした時に、「俺たちはこれがやりたいんだ」とソフト屋の立場から言わせていただくと、大規模言語モデルを動かす場合、VRAMがどうだアーキテクチャがどうだという話の前に、「結局、どのモデルが秒間何トークン吐けるんだ」ということが一つの大きな指標になっています。

この指標でNVIDIAに勝てれば、推論用半導体は勝ち目が出てくるでしょう。
今ほとんどのオープンソースのLLMはLlama2が標準なのでねLlama2を使って秒間⚪︎token/secは非常に説得力のある数値になります。

というのも、OpenAIにしろAzureにしろ、いざGPTシリーズを一般ユーザー企業ユーザーに解放しよう(そしてAPI利用料金で儲けよう)と思っても、GPUそのものが不足していて十分なサービスができないからです。これは、OpenAIのAPIを使う(だけ)のスタートアップにとっても深刻な問題です。

僕も本を2冊書くときにどちらもGPT-4のAPIを使って自動執筆するプログラムを書きましたが、GPT-4はそもそも遅い上に、かなりの頻度で「アクセスしすぎなのでしばらく話しかけるな」というモードに入ります。

僕は自分の本を書くだけなので我慢できますが、これがエンドユーザー相手の商売だったらゾッとします。
実際、僕は自分のWebサービスMemeplexで一時期GPT-3を使うサービスを実験的に提供していたのですが、あまりにGPTが止まるのでこれはクレーム対応ができないと思って取り下げました。

今、LLMマニア(と言っていいでしょう)の間では、M2 Ultraの128GBモデルだとLlama2が相当なスピードで動くとわかって盛り上がっています。僕も久しぶりの海外出張なのでM2 Maxを搭載したMacBookProのローカルで動くLlama.cppを機内で走らせたりしました。これまで全く役に立たなかったMetalがようやくうまく動いて大体50token/secくらいで、これなら個人で使うならまあ実用域かなと思います。APIのGPT-4はもっとずっと遅いです(モデル規模が全然違うので当然ですが)。Metalなしだと5token/secとかなり悲しいことになります。

まあM2 Ultraの128GBモデルって、70万円くらいするので、それだけ出せばA6000とか買えるだろと普通に思わなくもありません。

また一方で用途を絞ればPhi-1みたいな1.3Bモデルでもそれなりに応答してくれるので、結局ソフト屋としては「何に使いたいんだっけ」というところをかなり明確化しておく必要があるでしょう。

まあ今はでもどう考えてもデータの時代であって、どんなアルゴリズムを考えるか、ということも大事ですが、それは多分放っておいても世界の賢い人たちがやってくれるので、ソフト屋はどれだけユニークで価値あるデータを作れるかというところにシフトした方が、資本効率的に正解なのではないかと思います。

WirelessWire Weekly

おすすめ記事と編集部のお知らせをお送りします。(毎週月曜日配信)

登録はこちら

清水 亮(しみず・りょう)

新潟県長岡市生まれ。1990年代よりプログラマーとしてゲーム業界、モバイル業界などで数社の立ち上げに関わる。現在も現役のプログラマーとして日夜AI開発に情熱を捧げている。

RELATED TAG