システム開発をしている永松です。
何かしらのソフトを作るのが好きです。
レゴなどのハードで何か作るのは好きではないです。
ハードで何か作るのが嫌いというより、作ったものを残しておけないのが嫌いです。
ソフトは残しても物理的容量がしれているのですごくいいです。すごく。
さて、今回の題材ですが、今更感はありつつも、一度も触れないわけにもいかないだろうと思っていて、とはいえどこを書くのがいいのかとずっと悩んでいた話題、AIについて話してみようかと思います。
じゃあAIのどんな話を書くかですが、すごい盛り上がってるのにいまいちみんなわかってなさそうなNVIDIAって何者?ってことを書いてみようと思います。
なんとなく、GPUってのがあって、それ作ってる会社で、GPUってのが今のAIにすごい使われてるから調子いい会社、今後もAIは伸びるからGPUも需要あるしもっとすごいことになりそう。
多分こんな感じのイメージじゃないでしょうか。
今回は、皆さんのそんなイメージがもうちょっと具体的になり、だからNVIDIAのGPU使われてるんだとなればいいなと思い書いてみます。
そもそもGPUっていつ出来たもの?
昔からパソコン使っていた皆様でもGPUって最近耳にするようになったものかと思います。
実際私も最初聞いたときはGPU?って感じでした。
じゃあGPUとは最近出来たものかというとそんなことはなく、昔はグラフィックボード(グラボ)と呼ばれてました。
なんだグラボかよ、じゃあグラボでいいじゃねーかとなりそうなものですが、そもそも最初から正式名称がGPU(Graphics Processing Unit)だったんです。
でも当時のパーツ名称の流行りとか色々あって、一部界隈であだ名的にグラフィックボードで広がってしまい、ずっとあだ名で呼ばれてましたが、一般化したことにより正式名称で呼ばれるようになったという流れです。
なお、GPUっていつできたかというと、1999年に最初のGPUが出来たと言われているようです。
そもそもGPUって何するもの?
パソコンで処理する重要なパーツと言えばCPUです。
このCPUに似た名前のGPUとは何か、一言で言うと行列演算に特化したCPUとなります。
いきなり昔聞いたような聞いてないような、最初仲良く出来そうだったのにベクトルと絡んだ辺りから疎遠になった行列という言葉が出てきましたが、そもそも行列って何か。
これは単純な演算をまとめて計算するための記述方法だと思ってもらえればいいです。
どういうことかというと、例えば以下のような計算をしないといけなくなったとします。
1+10=
2+11=
3+12=
4+23=
5+24=
6+25=
これを行列で表すとこんな感じになります。
やってることはそれぞれ足してるだけなので足し算を連ねた結果となんら変わらない足し算なんですが、この記述が出来るというのがパソコンにとってはすごく重要でした。
なお、この例では足し算だけですが、行列は他にも引き算、掛け算が出来ます。
※割り算は逆行列というものを使えば出来ますが、ややこしくなるので省略します。
そんな計算いつ使うの?
そんな単純な足し算するときってそんなにありますか?という話ですが、実際そんなにありませんでした、あるものが出てくるまでは。
ではそのあるものとは何かというと、その正体はゲームでした。
それまでのパソコンは、処理に時間がかかってもある程度の時間で終わればいいやって感じだったのですが、ゲームはそんな余裕かましてられませんでした。
もちろん最初はCPUに処理を任せたのですが、CPUはゲームを実行中でも他の処理も同時に行うので、その中でゲームの計算をさせると、間に合うときもあるけど間に合わないときもある、という状況になってしまいました。
この問題をなんとか解決出来ないかと賢い人たちが考えた結果、以下の結果となりました。
ゲームで重い処理は?というと、ほとんど座標計算。
例えば2次元のアクションゲームだと、キャラが今いる位置から1ピクセル右に動けば、キャラのX座標に1足す。
ゲームの画面ではキャラクターだけではなく、敵キャラ、背景、構造物など色々あるので、表示されているすべてのX座標に1を足す、または引かないといけなくなります。
計算量は多いけど計算する内容は単純(それぞれに1ピクセル足したり引いたり)だから、行列で表すことが出来るんじゃないか。
じゃあ行列を専用で計算するパーツ作っちゃえばいいんじゃない?
となり、試行錯誤の結果、行列を計算するためのパーツが出来上がりました。
ではこのパーツをどう呼ぶか、となったとき、そもそもがゲームの処理をするためのパーツで、座標計算はグラフィックに影響するものだからGPUと呼ばれるようになりました。(たぶん)
グラフィックボードってどこが作ってるの?
世界で最初に出来たグラフィックボードはGeForce 256と呼ばれるものでした。
その後色々作られたのですが、結構早い段階でGeForce(ジーフォース)とRadeon(レイディオン、ラディオン)という2シリーズがほぼすべてという状態となり、今もこの状態は維持されています。
なお、RadeonはAMDという会社、GeForceはNVIDIAが作っています。
つまり、NVIDIAは最初にGPUを作った会社ということになります。
また、AMDはGPUだけでなくCPUも作っているのに対し、NVIDIAはGPUだけを作っている会社でした。
GPUメーカーとして争っていた2社ですが、そんな中NVIDIAは2007年にCUDAと呼ばれるものを発表します。
これはソフト開発者が自由にGeForceを操作出来る開発ツールだったのですが、マニアの中のマニアにしか響かず、正直なんでこんなの作ったんだろう?というものでした。
しかし、このCUDAが後々、この2社の争いに1つの決着をもたらすこととなります。
なんでNVIDIAなの?
GPUは上でも書いた通り、AMDとNVIDIAが作っています。
正直どちらも性能はよく、いつもどっちが上かでネット上を騒がせています。一部の。
じゃあなんで今GPUが足りないと言われてる中、NVIDIAだけが話題になってAMDはそんなに話題にならないのでしょうか。
そもそもGPUはゲームのためのものという時代が長く続いていたのですが、ある日GPUをゲーム以外で使うという猛者が現れたことにより、GPU業界の流れが大きく変わることとなります。
この流れを例えるなら、数人集める程度の地下アイドルが急に地上波に出たぐらいのインパクトと思ってもらえればわかりやすいでしょうか。いや、この例えいらないか。
流れを変えたのは、2009年に産声を上げ、2010年頃から密かに人気が出始めていた仮想通貨(ビットコイン)でした。
仮想通貨を増やしたりやり取りするための計算としてマイニングという計算が必要なのですが、最初はこの計算にCPUを使っていました。
でもある日、そもそもマイニングの計算って単純な計算をいっぱいするんだから、これもゲームみたいに行列で表せるんじゃない?行列で表せるってことはGPU使えるんじゃない?
となり、実際に使ってみるとCPUのみに比べたら比較にならないスピードで処理出来ました。
この情報が広まると、マイニングする人たちは自分も使いたい、と、どんどんGPUを買い漁り始めました。
このとき、漁られるGPUはNVIDIA一択でした。
なぜRadeonは選ばれなかったのか、その理由はマイニング用のプログラムにありました。
マイニング用のプログラムを作った人は、みんなも使いなよと作ったプログラムをネットで配ったのですが、そのプログラムは当然GPUを使っています。
GPUを使うためには開発ツールが必要だったのですが、ここで当時 なんでこんなの作った?となったCUDA(開発ツール)が使われました。
配布されるプログラムにCUDAが使われている、ということは、使う人達も必然的にNVIDIAのGPUが必要となり、結果、AMDのRadeonではなくNVIDIAのGeForceが選ばれるようになりました。
AIでもGPUなの?
そもそもAIとは人工知能のことですが、この人工知能を作るための手段は結構あります。
実は今までも何度かAIブームはあり、今は第3期AIブームと呼ばれています。
今のブームを支えている手段はディープラーニングと呼ばれ、その中でもニューラルネットワークという概念が使われています。
このニューラルネットワークというものは、人間の脳を思いっきり小さな部分で見ると、電気信号の強弱で判断していて、これがいっぱい集まっていろんな判断しているんだから、これを機械で再現すれば機械で人間の脳を再現、つまり機械に思考させることが出来るんじゃないか?というものです。
電気信号の強弱で判断するということは、単純計算をいっぱいしなければいけない、単純計算をするということは行列で表すことが出来る、行列ならGPUだ!となり、今のAIでもGPUが使われることとなりました。
なので、AIだからGPU、ではなく、今のAIがニューラルネットワーク主流だからGPU、となっているというのが現状です。
また、AIのプログラムでも当然開発ツールが必要なので、仮想通貨同様CUDAが採用され、GPUにはNVIDIAが使われるという流れが継続しています。
まとめ
NVIDIAとは何者なのか、なぜNVIDIAこんなに話題なのか、というのがちょっとでも伝わったでしょうか。
正直これで伝わるのか?という疑問はありますが、よくわからないという人は直接捕まえて聞いて下さい。
さて、ここまでの話を見るとAIブームはまだまだ終わりそうにないし、今後もNVIDIA安泰だなとなりそうですが、ちょっと気をつけないといけないことがあります。
それはAIにGPUを使っている理由についてです。
というのも、AIに最も最適なパーツはGPUだ、となって採用されているのではなく、AIで最もパフォーマンスが出るパーツは今のところGPUだ、ということで採用されている、つまりしゃーなしで使っているという点です。
実際元々ゲーム目的で作られたGPUなので、AI作る側視点で見ると無駄な処理も多々あります。
既にこの問題に対してのアプローチも発表されていますし、仮想通貨よりも規模が大きくなってきたAIなので、専用パーツを作る会社も出てくると思います。
そうなったとき、NVIDIAはどうするのか、他の企業は黙っているのか。
まだまだAIの話題でいろんな味が楽しめそうです。
余談
今回の記事ですが、ブログ担当そろそろだなぁと思った辺りからこの記事の構想を考えていて、順番が来たら書こうと思ってました。
尋常じゃないスピードで技術が進歩するAIなので、頑張って記事を書いても1週間もすると古くて意味ないって内容になりかねないので、なかなかAIを題材にブログ書くのが難しいなと思ってたのですが、この話ならそうそう変わらないだろうと思い、今回の題材でブログを書こうと思いました。
ブログを書いて確認のためちょっとネット見てたら、ちょうどNVIDIA以外のGPUでいい成績出したぞ、という発表が目に飛び込んできました。
この話すら賞味期限早いのか、と驚愕しつつ、まぁAIの話ってよりGPUの歴史の話だからいいよね、と自分に言い聞かせながら公開ボタンを押したことをお伝えし、今回のブログを締めたいと思います。
永松
この記事を書いた人黙々とパソコンに向き合い、少々の無理難題にも粛々と応える、お悟りお開き系エンジニア。AND SPACEの様々なシステム案件を任されているだけでなく、会社全体の運営にも的を射た意見で常々存在感を発揮する。顧客や同僚にいくら駄々をこねられても、淡々と正論を繰り出す姿は、「ナガえもん」と呼ばれて然り。いかなるシステム案件も、最初は粗々で構わないと言い切れるのは、ユーザー目線の「実際の使用感」が大切なことを重々承知しているから。そこからの喧々諤々こそ真骨頂。皆々、度々、多々、救われる。