Help us understand the problem. What is going on with this article?

ディープラーニングでNVIDIA GPUを使おう

More than 1 year has passed since last update.

この記事は NTTテクノクロス Advent Calendar 2018 の3日目です。
こんにちは、遠藤と申します。
普段は NTTテクノクロスで、深層学習関連のプロジェクトをしております。

はじめに

何社か有名な半導体メーカはあれど、現状ディープラーニングをがっつりやろうとした場合には、NVIDIA社製のGPUを選択することになると思います。
本記事ではそんなNVIDIA GPUについて紹介します。

プロダクトの種類

NVIDIAのGPUには大きく分けて3つのブランド(シリーズ)があります。
値段はもちろんプロダクトにもよるので、あくまで目安。

  • GeForce:コンシューマー向けで最も知名度が高く一般的。
    5~10万円くらい。GeForce 1070とか。
  • Quadro:ワークステーション向け。GeForceとTeslaの中間の気もするが、業務向け。
    30万円~100万円くらい。Quadro P6000とか。
  • Tesla:データセンタやスパコンなど、高い信頼性と性能を求める方向け。
    100万円~。Tesla V100とか。

QuadroとTeslaは3年保証ですが、GeForceは1年保証です。
またNVIDIAはGeForceシリーズをデータセンタで使うことは禁止しているので、データセンタでGPUを使う方はご注意を。少しニュースにもなったので、ググって知っておきましょう。

GPUのアーキテクチャ

NVIDIAはアーキテクチャの世代ごとに、有名な科学者の名前を付けています。
おおよそ1年半から2年で新しいアーキテクチャが発表になります。
ここ数年で並べるとこんな感じ。Turingが最新です。

Maxwell < Pascal < Volta < Turing

例えば、Tesla P100というGPUのPはPascal世代を、TITAN VのVはVolta世代であることを示します。
プロダクト名に世代の頭文字を付けているGPUも多いです。

アーキテクチャが1世代進むと5~10倍性能が上がったりしますので、GPUを購入する際は、上のプロダクトの種類とこの世代をもとに、具体的にどのGPUを購入するかを検討します。
そしてNVIDIAはこのアーキテクチャの世代ごとに、CUDAやNVIDIAの関連ライブラリのバージョンを管理しています。

CUDA

CUDAとはNVIDIAが開発提供している統合開発環境です。何でも屋です。
CやC++でGPUを操作するAPIを提供したり、メモリからGPUメモリにデータをロードしたり、GPUの各コアに並列処理を依頼する仕組みも提供してくれます。
ほとんどの方はCUDAでプログラミングするのではなく、TensorFlowやChainerといったフレームワークを使っていると思います。
そのフレームワークがCUDAへのアクセスを担当してくれるので、インストールだけしてCUDAを意識する人は少ないと思いますが、NVIDIA GPUを使う上では必須になります。

バージョンの依存

NVIDIA GPUを使う上で、バージョンの依存関係は注意しましょう。
以下3つには依存関係があります。

NVIDIA Driver <-> CUDA <-> フレームワーク

NVIDIA DriverとCUDA

CUDAのdeveloperサイトを参照してもよいですが、個人的にはこちらがわかりやすいです。
CUDAのバージョンに応じて、要求されるNVIDIA Driverが変わってきます。

CUDAとフレームワーク

使っているフレームワークによりますが例えばTensorFlowであれば、Requirementsを見るに現在はCUDA9.0を指定しています。

この辺の依存関係やそれから関連ライブラリなどのバージョンは、しっかり公式がサポートしている環境で使いましょう。

nvidia-docker

バージョンアップも多く、その他NVIDIAの関連ライブラリにも依存関係があるので、ホストではなくdockerでの利用をお勧めします。
ただ通常のdockerだとホストのGPUを操作できませんので、NVIDIAが提供するnvidia-dockerを使います。

ざっくり手順をまとめるとこんな感じ。

  1. NVIDIA Driverをインストールする
  2. dockerをインストールする
  3. nvidia-dockerをインストールする (手順)
  4. NVIDIAがCUDA導入済みのdockerイメージを配布しているので、これを使う (配布先)

まとめ

  • 依存関係に注意してNVIDIA GPUを使おう。
  • nvidia-dockerおすすめです。
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away