AIの需要が劇的に増えている昨今、ディープラーニングで膨大な量の計算処理を必要とするシーンが増えています。そんな中、ディープラーニング用にGPUが注目される理由やGPUの選び方について、GPUの世界的リーディングカンパニーNVIDIA(エヌビディア)社の佐々木 邦暢氏に伺いました。
GPUの成長とNVIDIA社の歴史
カゴヤ・ジャパン株式会社 森:
まずは佐々木様が御社で担当されている業務内容をお聞かせ下さい。
佐々木様:
わたしはエンタープライズマーケティングという部門に所属しておりまして、その中でもハイパフォーマンスコンピューティングという分野や、AIを支えるディープラーニングの分野のマーケティングを担当しています。またDeep Learning Instituteというハンズオントレーニングのイベントの企画・運営に携わっております。
―ありがとうございます。
今回お話しいただくディープラーニングに関するマーケティングを担当されているのですね。次に御社の歴史や、御社のGPUがAI分野で活用されるようになった背景について教えていただけますか?
佐々木様:
NVIDIAは、AIの分野においてディープラーニング関連で最近注目いただいておりますが、創業は古くて1993年です。当時はGPUコンピューティングという言葉はまだなく、NVIDIAはグラフィックアクセラレータを作る会社として始まっています。
そして今に至る過程でいくつか象徴的な出来事があります。その1つが1995年に当時人気のあったアーケードゲーム「バーチャファイター」を、弊社のNV1というグラフィックアクセラレータで動くようにPC版に移植いただいたことがあげられますね。
―なつかしいですね。わたしもそのゲームを持っていました。
佐々木様:
それからマイクロソフトのDirectXというグラフィックのAPIが発表されたのが1996年。このあたりからグラフィックアクセラレータの重要性も高まってきました。
そして、1999年にNVIDIAは「GeForce 256」を発表、この時GPUを「1000 万ポリゴン/秒以上を処理できる、変換、ライティング、トライアングルセットアップおよびクリッピング、レンダリングなどの各エンジンを 1 枚のチップに統合したシングルチッププロセッサ」と定義しました。GeForce 256 は1500万ポリゴン/秒の処理能力を持っていました。
―GPUコンピューティングの歴史もそこから始まるんですね。
佐々木様:
はい、そうです。
GPUの性能が向上するにつれ、グラフィックス描写のために培ってきた高い計算能力が、気象や地震のシミュレーションのような数値計算に役立つのではないかといったことに科学者の方々が気付いたんですね。その結果として実現したのが2006年のCUDA (Compute Unified Device Architecture/クーダ)の発表です。
―CUDAとはどういったものですか?
佐々木様:
簡単に言うと、GPUが絵を描くために培ってきた計算能力を、汎用的な用途に拡張するためのプログラムを書くのに使う、エンジニア向けの枠組みです。CUDAによって、プログラマーの方々が慣れ親しんだC言語というプログラミング言語を拡張するようなかたちで、GPUの計算能力を存分に活かすことができるようになりました。
―なるほど、CUDAをきっかけにして、GPUコンピューティングが隆盛していくのですね。
佐々木様:
はい。2008年には東京工業大学の『TSUBAME 1.2』が世界初のGPUスーパーコンピューターとしてTop500というスパコン番付に載り、2012年には18,688基のGPUを搭載するオークリッジ国立研究所のスーパーコンピューター『Titan』が世界で一番計算の早いスパコンになりました。
―はじめはAI分野以外のところで、GPUが注目されたんですね。
佐々木様:
そうですね。その後にAIの基本となる機械学習やニューラルネットワークを研究していた科学者もGPUを活用し始めます。そして2012年に、GPUでトレーニングされたAlexNetというディープニューラルネットワークが、画像認識のコンテストで圧勝しました。これが、ディープラーニングが爆発的なブームとなる第一歩です。
―GPUを使ったディープラーニングで、具体的に画像認識はどのくらい進化したのでしょうか。
佐々木様:
ディープラーニング以前の画像認識では、たとえば101種類の対象にたいして6割ぐらいの正解率だったんですね。
当時は、「AIが人間並みの正解率は難しいね」と言われており、2010年~2011年にも2パーセントぐらいしか正解率が上がらなかったのに、その翌年にディープラーニングを適用した途端約10%もはねあがり正解率が8割を超えました。これが画像認識のブレークスルーだったといわれています。
なぜディープラーニング・AI開発でGPUが選ばれるのか
ここまでは、AI/ディープラーニングの分野でGPUが選ばれた歴史について教えていただきました。それを踏まえ、ここからはディープラーニングやAI開発において、なぜGPUが採用されるのか理由をくわしく伺います。
―GPUがディープラーニングやAIの開発に使われるようになった背景については理解できました。それではなぜ、GPUの計算能力がディープラーニングに適しているのか、教えていただけますか。
佐々木様:
そもそも、GPUが培ってきたグラフィックスの描写能力とは、数値を計算する能力なんです。
たとえば、先ほど話に出たバーチャファイターという格闘ゲームですが、あれはポリゴンと呼ばれる小さな三角形の組み合わせによって、キャラクターや格闘するステージ、背景などを構成します。そうしてその三角形というのは全て座標の集合からできているんです。言い換えると、要は膨大な数値の羅列なんです。
3Dの世界は、X座標・Y座標、くわえて奥行を表すZ座標による何百万個もの数字の集合からできています。その上で、キャラクターが動きますよね。三次元のオブジェクトが複雑にかたちをかえて動くのですが、このとき、ある座標をこっちに動かすであるとか、座標の変換・回転という処理をたくさんしなければなりません。
―その処理を行っているのがGPUの計算能力ということですね。
佐々木様:
その通りです。最終的には、わたしたちにきれいなグラフィックスとして見えている内容も、コンピューターの中では全て数字の塊として処理されています。
そのようにずらっと並んだ数字のことを行列と呼ぶのですが、行列をかけたり足したりといった演算をひたすら繰り返すことでグラフィックスを成立させているのです。
くわえて、3次元の座標の中で計算しても、実際に描写が行なわれるディスプレイは平面ですよね。御存じのようにディスプレイはピクセル(画素)という単位によってできており、たとえばフルHDで200万画素ほどあります。その膨大な画素の1つ1つに対して、何色で点灯させるかというのも全て計算によって決めなければなりません。
―途方もない計算量ですね。
佐々木様:
はい。さらに言うと当時のバーチャファイターであると秒間30コマくらいで動いていましたが、最近登場したVRであると秒間90コマくらいになっています。つまり数百万画素あるディスプレイの計算を毎秒90コマ書き換える、つまり1/90秒以内に全ての計算を終えてデータを転送しなければならないわけです。
というわけで描写能力を磨くということは計算能力を磨くということなのです。
―PCの中の頭脳というとCPUがありますが、画像の描写にCPUではなくGPUが使われるのはなぜでしょうか。
佐々木様:
簡単に言うと、CPUと同じ方法で画像の描写をしていたらCPUより早くなることはないので、GPUは画像の描写に特化したんです。
具体的に言うと、グラフィックスを構成している何十万・何百万という座標の計算では、全て座標に対して同じ数をかけているんですね。やらなければならない計算量は膨大でも、同じような種類の計算を同時に行っているのです。
そこでGPUでは、スレッドと呼ばれる処理単位をたくさん並べて並列的に処理するようにしています。極端に言うとCPUでは1つずつ処理しているところをGPUではたくさんの計算を同時にできる。たとえばTesla P100というGPUには3,584機の演算器が搭載されていますが、つまり3,584個の計算をいっぺんにできるということです。
―GPUの計算能力の概要やCPUとの違いは分かりました。それがディープラーニングに適している理由を教えていただけますか。
佐々木様:
はい。そのためにはまずディープラーニングの概要について理解いただく必要があります。
ディープラーニングにおいて何がディープかといえば、ニューラルネットワークという構造の階層が非常に深いという意味です。
画像認識を例にとりましょう。犬の画像をニューラルネットワークに投入すると、たくさんのパラメーターをもとにそれが犬であると認識します。それができるようになるまで、たくさんの画像をニューラルネットワークへ投入し、どのパラメーターに着目すれば正解に近づくかという重みづけの調整を繰り返すのです。最初は重みをランダムに決めたりしますので、犬を猫と判断するように、デタラメな答えがでるんですが、間違ったら「じゃあ、このあたりの重みの数字をかえてみよう」と繰り返すことで正解に近づく。
そして、このとき犬の画像自体もコンピューターの世界では数字の羅列であり、どのパラメーターに重みを置くかというのも重み行列という数値で表現しています。このパラメーターの数はとにかく膨大です。そのため結果的に何百万・何千万という計算を繰り返すことになります。
この時行っている主な計算というのが、重みの行列に別の行列をかけて足し合わせる「行列の積和演算」という処理であり、実はこの処理が三次元のグラフィックスのポリゴンを移動させたり回転させたりするときの行列演算とそのまんま同じだったんですね。
そのため、ディープラーニングの学習については、GPUはCPUの何十倍、場合によっては何百倍もの速度で計算が完了する、GPUにむいているタスクである、というのを科学者の方々が気付いたわけです。
以前は、科学者の方々はCUDAのプログラムを自前で作成していましたが、最近では既存のフレームワークを使いディープラーニングを行っています。そして、最近ではGoogleさんのTensorFlowや、日本だとPFNさんのChainerなどさまざまなフレームワークがありますが、そのすべてがNVIDIAのGPUに対応しています。そのくらいGPUとディープラーニングは相性が良かったんです。
―ありがとうございます。GPUがディープラーニングで活用されている理由がよく分かりました。
次に、具体的にGPUがどんなところで利用されているか事例を教えていただけますでしょうか。ディープラーニングはもろちん、それ以外でも事例があればご紹介ください。
佐々木様:
まずディープラーニングでは、Horus Technologyさんが開発した目の不自由な方を助けられるウェラブルデバイスがおもしろいですね。このデバイスの中には、小さなGPU付きのコンピューターが搭載されていて、デバイスに付属したカメラで撮影した画像をもとにディープラーニングを行います。
その上で、入力画像がGPUによって分類され、たとえば「今あなたの目の前に5人の人がいます」とか「目の前の人は怒っています」といった感情認識も行い、その結果を音声で伝えるんです。
―なるほど興味深いデバイスですね。こんなデバイスが使えれば、目の不自由な方も助かりそうですね。他にはありますか?
佐々木様:
画像分類以外ではPayPalさんが行っている決済サービスの事例があります。PayPalさんでは毎日膨大な数のお金のトランザクション処理をされていますが、その中から「この取引は怪しい、不正ではないか」と判別する必要があります。
従来の手法と比較して、ディープラーニングを活用することで誤報率を半分にできたとのことです。
また、人工衛星で撮影した画像データベースをもとに、「このあたりは温暖化で砂漠化している」といった判別をディープラーニングで行っているNASAの事例、メールの添付ファイルからウイルスを検出するロジックをディープラーニングで生成しているCylance PROTECTという製品の事例などもありますね。
―いろいろなシーンでGPUのディープラーニングが使われているのですね。
佐々木様:
はい。あとは、SAPさんのBrand Impactというアプリケーションの事例も興味深いですよ。このアプリケーションでは、たとえば車のレースを映したテレビの中継映像の中で、車の車体やコースの脇に掲載された広告について、「どのメーカーの広告が何秒映ったか」というのを、画像認識により導き出し、広告の効果測定に活用しています。
―ディープラーニングでそんなこともできるんですね。
佐々木様:
はい、人間の目で行うより正確かつ効率的に行えていると思います。
―ディープラーニング以外で、GPUを使った事例はありますか?
佐々木様:
そうですね、これはどちらかというとGPUがもつグラフィックスの描写能力を使った事例ですが、我々が発売準備しているHolodeckというバーチャルリアリティ環境がありますね。この環境では、別々の場所にいる人がそれぞれVRゴーグルをかけ同じ仮想空間にログインします。
―具体的には、その環境でどのようなことができるんですか。
佐々木様:
たとえば、日本・アメリカ・ヨーロッパなど別々の場所にいる車の設計士が同じ仮想空間にログインするとしますね。その上で、その仮想空間の中で、CADで使うような本物のデータを使って本物の車を再現し、それをみながら設計者同士で話し合いができるんです
仮想空間の中では、たとえば車体の色をかえたり、車のエンジンを搭載するとどう見えるかといったことを再現したりする機能もあります。これによって設計が効率化できるのです。
このレベルのグラフィックスを自在に動かそうとすると本当に高い能力が必要ですが、Tesla P100クラスのGPUが4枚程度あればかなりスムーズにうごきます。最近NVIDIAは、AIやディープラーニング分野で注目されていますか、本来のグラフィックスの分野も会社の柱としてきちんと存在しているんです。
AI開発環境の作り方、GPUの選び方
GPUがAI/ディープラーニングに適している理由はわかりました。次に、開発環境や業務の本番環境で、GPUをどのようにえらべばよいか解説いただきました。
―企業でこれからGPUを使って開発を行おうとする際に、GPUをどうやってえらべばよいか簡単に教えていただけますか?
佐々木様:
分かりました。それではNVIDIAの製品のおおまかな一覧をご覧ください。組み込み系などを除き、サーバー用・パソコン用では3種類に分かれます。
まずはコンシューマー向けのGeForceという製品ラインですね。ディープラーニングを学生さんがちょっと試してみようとか開発環境で使うのであれば2万円程度のGeForceでも十分です。
―そのぐらいの価格であれば、学生さんが勉強のために用意したり、企業が開発環境として使ったりする際にもハードルは低そうですね。
佐々木様:
ただし、これを業務で使うとなると話は別になってきます。業務で大量のデータを入力して何時間も学習してとか、お客様からのリクエストに応えて分類処理を行い間断なく返答を返す、24時間サービス提供するといった用途であれば、信頼性の高い環境が必要です。
そのような環境で利用されるのがTeslaという製品ラインですね。
―Teslaは弊社のサービス「Tesla GPUサーバー」でも採用させていただいています。ただ、Teslaの中でもこちらのサービスで利用しているのはP40・P100という2種類のGPUです。この違いを教えていただけますでしょうか。
佐々木様:
分かりました。P40・P100はどちらも高性能なんですが、それぞれ性格が異なります。
単純に数字だけみるとP100の方が優れているようにみえるんですが、必ずしもそういうわけではなくて、性能のある部分だけみるとP40の方が優れているということもあります。
―単純に数字が大きい方を使った方がよいというわけではないということですね。
佐々木様:
その通りです。簡単に言うと、P100の方が守備範囲は広いです。ディープラーニング用としての他、ハイパフォーマンスコンピューティング用にも適しています。
ハイパフォーマンスコンピューティングでは、ディープラーニングよりさらに高い精度の計算能力が求められるのですが、そのためにはP100が必要です。もう少し技術的な話をすると、64ビットの浮動小数点演算が必要な領域ではP100を使うことになります。
―P40はどういったときにえらぶとよいのでしょうか。
佐々木様:
ディープラーニングに関しては、倍精度の演算性能は必須ではありません。それよりも大きなメモリがあった方が得策という面があります。GPU上のメモリは、P100よりP40の方が大きいんです。16GBのメモリを搭載するP100に対して、P40はその1.5倍の24GBのメモリを搭載しています。
―ディープラーニング用途であればP40もかなり高性能ということですね。
佐々木様:
はい。そういった意味ではハイパフォーマンスコンピューティングでもなんでもできる万能選手がP100で、ディープラーニングに特化した専門家がP40という風に選び分けていただくのがよいですね。
―3つの製品ラインのうち、残りのQuadroはどういったシーンに使うとよいのでしょうか。
佐々木様:
Quadroはワークステーション向けですね。たとえば自動車の会社でCADのエンジニアの方が、自分の机のワークステーションに搭載して利用するといったかたちです。
あとは開発環境でGeForceを使い、本番環境でTeslaを使う、そういった使い分けが一番わかりやすいのではないでしょうか。
カゴヤ「Tesla GPUサーバー」の魅力
カゴヤでは2017年11月から、お話しにもでた「Tesla P100」「Tesla P40」を搭載したベアメタルサーバー「Tesla GPUサーバー」を、時間単位でもご利用いただけるサービスを提供開始いたしました。Tesla GPUサーバーでは、ディープラーニングやVDIに最適なサーバーインフラを、1時間370円~という業界最安級価格でご利用いただけます。ここでは、NVIDIA様からみたTesla GPU サーバーサービスの魅力について語っていただいています。
―Teslaの製造元であるNVIDIAさんは、弊社のサービス「Tesla GPUサーバー」をどのように評価いただいているでしょうか。
佐々木様:
われわれからすると、Teslaの中でもPascalという新しい世代のGPUを2種類採用して下さっていて、それが日本国内で利用できるというのがありがたいですね。
われわれはディープラーニングを行うためのソフトウェアの詰め合わせ「NVIDIA GPU CLOUD」略して「NGC」という仕組みを作っています。これを使うとすごく簡単にディープラーニングが始められるんですが、対応しているのがPascal世代以降のGPUなんですね。またNGCでは、毎月NVIDIAがソフトウェアの詰め合わせを更新しているので、あとはもうNGCのコンテナをもってくるだけで常に最新の安定した環境をご利用いただけるので、ディープラーニングの環境構築に苦労がなくなります。そもそもクラウドのサービスを使えばサーバーのセットアップなどによるエンジニアの工数が削減されますよね。またソフトウェアの部分でもエンジニアそれぞれが好むフレームワークごとに独立した環境を用意できるので、そういった意味でもNGCに対応したPascalのGPUを使えるのは大きなポイントです。
それから、1時間単位の従量課金があってリーズナブルに使えるようにしていただいているのがありがたいですね。たとえば最低1ヵ月の利用でいくらからのようになると、ちょっと試してみたいというときに途端に敷居が高くなってしまいますが、従量課金で手軽に使っていただけるというのは弊社としてもありがたいですね。
―素晴らしい評価をしていただいてありがとうございます。最後に、NVIDIAさんの今後の展望についてお聞かせいただけますでしょうか。
佐々木様:
昨今AIがブームになっていますが、その具体的な技術要素がディープラーニングです。それを支える計算能力をGPUで提供するという路線は今後も伸ばしていきたいですね。
ディープラーニングのモデルは最新の研究でどんどん精度があがりモデルも複雑になっており、たとえば「メモリがもっとあればいいね」といった要望をお客様からいただくこともあります。そういったご要望に応えるようなGPUを提供していきたいです。
あとNVIDIAではより性能の高いGPUをリリースするというだけでなく、先ほどのNVIDIA GPU CLOUDもそうなんですが、その性能を簡単に引き出すためのソフトウェアを一緒に提供していくというのもわれわれの展望としてあります。そのあたりは、たとえばカゴヤさんのGPUサーバーを利用すると、NVIDIAの環境がそろっている、といったように協力していければうれしいですね。
そして、私としては、冒頭にお伝えした通りディープラーニングのハンズオントレーニングを企画しておりますので、たとえばカゴヤさんのサーバーを使って同様のイベントをジョイントできるといいな、という希望もあります。
お話しいただいたように、GPUは今後もAI/ディープラーニングの分野であつい視線を集め続け、その需要は今後も増していくことでしょう。そんな中、NVIDIA様は、GPUのさらなる計算能力向上や、GPUの性能をより簡単に使いこなせる環境づくりを目指していらっしゃいます。弊社のTesla GPUサーバーもまた、手軽に使えるAI/ディープラーニング用の相棒として活用を検討いただければ幸いです。
※Tesla GPUサーバーの提供は終了しております。
NECのスーパーコンピューター「SX-Aurora TSUBASA」をクラウド環境でご利用できる業界随一のサービスです。
世界トップクラスのスペックで大規模データの高速処理を実現するベクトル型スーパーコンピューターを、月額定額料金のクラウドサービスとして利用できます。