Loading [MathJax]/extensions/tex2jax.js

CPU,GPU,TPU,VPU,NPU,QPUの違い

Screenshot of en.wikipedia.org

AI企業のプレスリリースなどで、TPU,VPU,NPU,QPUなど馴染みの無い言葉が増えてきましたので、これらの用語を整理してみたいと思います。いわゆるAIチップに搭載された計算ユニットの説明です。

大学に入って教養課程で情報処理の教科書を買ったときに、「CPU」というのは出てくるのですが、GPU(Graphics Processing Unit)というのは出てきましたか?少なくとも20世紀には出てきませんでした。3Dゲームとか無かったですからね。

でも21世紀にはGPUも大事になってきましたし、2012年のディープラーニング革命の後は、ニューラルネットワーク専用のコプロセッサ(補助プロセッサ)であるNPU(Neural network Processing Unit)が物凄い勢いで開発されて各社から発売されるようになりました。ニューラルネットワークの計算に特化した計算機(NPU)をサブルーチンのように呼び出して計算時間を短縮する仕組みです。

ここで各プロセッサの意義を復習いたします。NPUの派生プロセッサもご紹介いたします。TPU,VPU,KPU,DPUなど色んな用語がプレスリリースなどで出てきますが気にすることはありません。わかりやすく言えば、動物の脳神経細胞を真似したニューラルネットワークのデジタル実装なのです。「ああNPUの一種ね」と思えば良いのです。NPUを理解するにはニューラルネットワークを理解する必要があります。ニューラルネットワークの中でどのような計算が行われているかを学びましょう。

ニューラルネットワーク

神経細胞の数学的モデル
動物の脳細胞の構成要素である神経細胞を数学的にモデル化すると、入力信号の総和が一定レベルを超えると次の神経細胞に信号伝達される仕組みが無数に繰り返されていることが分かります。ニューラルネットワークの機械学習や未知データ適用は、比較的単純な計算(行列計算)を無数に繰り返していることが分かります。この計算は8ビットとか16ビットで十分計算できるもので、普通のCPUのように64ビット浮動小数点の計算などは必要ありません。効率よく計算するためには、16ビットなどの低性能プロセッサ(計算コア)を多数用意した方が良いということになるわけです。

神経細胞

CPU・・・Central Processing Unit、中央処理装置。AND,OR,NOTの論理演算を行うデジタル回路。チューリングマシンのデジタル実装。2進数データ(バイナリコード)のプログラムを読み込んで解読し、データ処理して、結果をメモリに書き込みすることをひたすら繰り返します。ブール代数により、ゼロと1のAND/OR/NOTの論理演算を繰り返すことにより、あらゆる十進法の数値計算を行うことができると分かり、計算機械の設計が促進されました。バベッジの解析機関のように、チューリングマシンは機械式歯車でも実現することができます。チューリングの伝記映画イミテーションゲームを観れば機械式コンピューターの動作が分かります。現代のCPUは、いわば超高速の電子版ソロバンです。

FPU・・・これは、Floating Point Unit 浮動小数点計算ユニットで、1990年代中ごろまで使われていたCPUの隣に装着するコプロセッサでした。いまではCPUの中に浮動小数点演算ユニットが内臓されています。最も有名なFPUはi8087です。昔はこれを10万円出して買ったりしてました。

GPU・・・Graphics Processing Unit、2次元画像処理、3次元画像処理を効率的に行うため多数の並列演算ユニットを備えた画像処理プロセッサ。デスクトップ用CPUはビット数や命令数やレジスタ数やキャッシュメモリ容量を増やして高機能化を追求していますが、画像処理(RGB各8ビット)では低機能なCPUが沢山あった方が有利となります。そのような低機能CPU(計算コア)を多数並列配置しているのがGPUです。例えばnVidiaのRTX3090tiでは10752コアが実装されています。並列演算機能を流用して、仮想通貨ロックチェーンのproof of workの演算処理に使われたり、ニューラルネットワークのAIデータ処理に使われています。

NPU・・・Neural network Processing Unt、生物の脳神経細胞を数学モデル化したニューラルネットワークの機械学習と、学習結果を用いた推論処理(画像認識、音声認識、意味認識)などを行うための行列計算に特化した並列処理プロセッサ。機械学習および推論のサブルーチンを実行する場合に高速処理するための専用ハードウェア。神経細胞のように、例えば2とか3の入力信号を合計し、一定の閾値を超えていれば出力信号を発生する「計算機」です。並列演算器はGPUの計算ユニットを流用することもできるので、極端に言えば NPUとGPUは同じものと言えます。

TPU・・・Tensor Processing Unit, google が開発したNPU。テンソルは行列表現できる多次元配列(データの集まり)です。

VPU・・・Vision Processing Unit, インテルが2016年に買収したMovidius 社のAIアクセラレーターNPU。Myriad2 MA2450など。

KPU・・・Knowledge Processing Unit, 仮想通貨採掘Canaan 社が開発した並列計算機NPU、同社のKendryte K210 に使われています。K210はRISC-VのCPUとKPU並列計算機がワンチップに収められたAIチップです。仮想通貨をマイニングするときの効率を追求するために並列計算機を自社開発したら、それがニューラルネットワークの計算にも使えるので発売したということでしょうか。

BPU・・・Brain Processing Unit, 中国のベンチャー企業Horizon Robotics社のNPU。

IPU・・・Intelligent Processor Unit, 英国のAIスタートアップ Graphcore社のNPU。GC200はTSMC 7nmプロセスで設計され、594億個のトランジスタを搭載し、1472個の浮動小数点演算ユニットを並列で持っています。

DPU・・・Deeplearning Processing Unit, 富士通のAIプロセッサDLUに搭載された整数演算NPU。Deep learning integer という16ビット整数演算で浮動小数点タイプに劣らない精度を出しています。

APU・・・AI Processing Unit, メディアテック社Mediatek のSocに搭載されたNPU。まぎらわしいのですが、AMDのGPU内臓CPUのことを、Accelerated Processing Unit、略してAPUと呼ぶことがあります。

QPU・・・Quantum Processing Unit, 量子コンピュータの量子ビットのことをQPUと呼びます。量子コンピュータは通常のコンピュータ(古典コンピュータ)とのハイブリッド形式で提供されます。QPUが得意な量子フーリエ変換(QFT)を爆速で処理できます。QPUは量子コンピュータが得意な計算をサブルーチンの様に処理します。NPUのように機械学習に使うこともできます。量子機械学習(QML)、量子人工知能です。

いずれのNPUも、ニューラルネットワークの機械学習と推論を高速で処理できるように、並列計算に特化した構成になっています。これはノイマン型とはちょっと違うコンピューターの構成になります。バベッジとかチューリングとかノイマンとか、現在のコンピューターを発明した人々がこのNPUの構成を知ったら何と言うでしょうか。「そうか、21世紀には新しいコンピューターが発明されたのか!」と言うんじゃないかと思います。NPUはチューリングマシンであることは間違いないのですが、従来の意味でプログラムは存在せず、しいて言えば学習済みニューラルネットワーク(分類器)が存在するということになります。

QPUは、量子コンピュータそのものであり、これを従来の古典コンピュータに組み込んで呼び出す時の呼称になります。

※参考記事

チューリングマシンの仕組みと歴史

tk80でチューリングマシンを学べ!

シンギュラリティ革命と量子コンピュータ

※参考書籍

CQ出版社、インターフェース2020年10月号

シンギュラリティ年表

2012年は奇跡の年です。ディープラーニングニューラルネットワークによる画像認識エンジンが画像認識コンテストで初優勝した年であり、キャットペーパー論文が発表され、同時に遺伝子編集のクリスパーキャス9酵素が論文発表され、ビットコイン財団が設立され、ヒッグス粒子が観測され素粒子論の標準模型が完成し、量子コンピューターの部品となる量子もつれの距離143kmの実験が成功した年です。シンギュラリティ革命の萌芽が全て出現し、もの凄い勢いで拡大し始めた年なのです。


投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です