「GPUを用いれば、機械学習がとてつもなく早くなる」という言葉を、はどこかで聞いたことがある人もいますよね。そこでGPUを用いた機械学習をしてみよう環境構築をしてみる人も多いでしょう。でも、いざ動かすとCUDAがどうとかというエラーが出てしまう、自分なりに調べてみてCUDAをインストールしてみても、何故か動かない、などのトラブルになってしまいます。
この記事では、CUDAとはそもそも何なのかという所から、CUDAのインストール方法、そしてインストールする上での注意事項などを解説します。この記事を読めば、機械学習にGPUを用いて、通常の10〜100倍もの速度で学習を行えるに違いありません。
そこで今回は、CUDAのインストール方法について一通り分かりやすく解説します。
CUDAとは
CUDAがGPUに関わる物だという事は分かるけれど、そもそもCUDAってどうGPUと関わる物なのか分からない方は多いですよね。一言でいうと、CUDAとは「NVIDIAが開発している、GPU向けの汎用並列処理プラットフォーム」です。どういうことなのか、一つ一つ見ていきましょう。
NVIDIAはGPUを開発している会社です。代表的なGPUだと、RTX30シリーズがあります。NVIDIA製のGPUは、機械学習に用いられるGPUのデファクトスタンダード(事実上の標準)と言えるでしょう。
NVIDIAはCUDAを開発している理由とは、GPUに並列処理をさせる為です。機械学習に限らずGPUを用いた処理をするには、ただGPUをPCにセットするだけではなく、GPUに命令を与えてあげて、はじめてGPUが仕事をします。その命令をする為のプラットフォームがCUDA。つまりCUDAは、GPUを動かすための命令をする土台というイメージで良いでしょう。
もちろん、層の重みを更新する時も、行列演算を用います。機械学習において、行列演算は中核だと言えるでしょう。並列処理はそれを高速化するのですから、当然機械学習全体も高速化されます。”汎用並列処理”とは、行列演算に限らず並列処理全てをカバーしているという事です。
以上の事を踏まえた上で、「CUDAとは、NVIDIAが開発している、GPU向けの汎用並列処理プラットフォーム」という説明です。また、Tensorflowなどの機械学習ライブラリにGPUを使いたい場合は、これに加えてcuDNNという物をインストールする必要があります。cuDNNはCUDAを用いた機械学習用のライブラリで、TensorflowはGPUを用いて処理するときにはcuDNNを用いるので、導入する必要があります。
CUDAをインストールをする前に、やっておく準備
CUDAをインストールする前にやっておくべき事は3つあります。1つはGPUがちゃんと機能するかを確認し、機能していないならばドライバを導入すること。もう1つは、自分の環境に合ったCUDAのバージョンを調べる事。最後に、cuDNNの会員登録を済ませておくこと。少し長い道のりですが、一つ一つは大した事はありません。順番に済ませましょう。
まずGPUが機能しているかを確認します。Linuxならターミナルにnvidia-smiと打ち込むと、適切にGPUが機能しているならばGPUの状態が表示されます。Windowsでもコマンドプロンプトにnvidia-smiと打ち込めば、同じ出力を得られます。そこの「Driver Version」に表示されているドライバーのバージョンをメモしてください。このバージョンにあわせて、CUDAのバージョンを選択しなければいけません。
もしもnvidia-smiが機能しないのであれば、ここからドライバーを導入します。そして自分のマシンの構成に合わせたドライバーをダウンロードし、インストールしてください。適切にインストールが完了すれば、nvidia-smiが機能します。
次に、CUDAのバージョンを調べましょう。このURLの「Cuda 11.1 Release Notes」にあるTable 2の「Cuda Toolkit and Compatible Driver Versions」を見てみましょう。
最後にcuDNNの会員登録を行いましょう。cuDNNは会員登録をしていなければ入手する事ができません。このURLのDownload cuDNNをクリックし、会員登録をする為にJoin nowをクリックしてください。
その後、登録事項を記入したり、簡単なアンケートに答える事になります。それが完了次第、cuDNNが入手可能になります。
CUDAのダウンロード方法
CUDAは以下のURLから入手する事ができます。
ここで、先ほど確認した自分の環境に合ったCUDAのバージョンを選択してください。バージョンを選択すると、自分のマシンの構成を聞かれるページに飛ばされるので、構成を選択していけば自分に最適なパッケージを提示してくれます。Linuxならターミナルにうつべきコマンドが表示され、Windowsならインストーラーがダウンロードできます。
CUDAのダウンロードが終わったら、cuDNNのダウンロードも済ませましょう。以下のURLのDownload cuDNNを選択してください。
ログインした後にcuDNNのリストが閲覧できるので、自分のインストールしたCUDAのバージョンに合わせたcuDNNを選択しましょう。例えば、CUDA 10.2をインストールした場合はDownload cuDNN v7.6.5 [November 18th, 2019], for CUDA 10.2を選択します。
その後、自分のOSに合わせたcuDNN Libraryをダウンロードします。例えば、Windows10の場合、cuDNN Library for Windows 10を選択します。Linuxの方は、cuDNN Library for Linuxではなく、自分のディストリビューションに合わせたDebパッケージ(cuDNN Runtime Library for XX [Deb])をダウンロードしましょう。
CUDAのインストール方法
CUDAに関しては、後は難しいことは何もなく、上記のURLの手順に従ってインストールすれば大丈夫です。例えばWindowsであれば、インストーラーをダウンロードした後に、画面の案内に従ってインストールするだけです。Linuxならば表示されたコマンドを入力していくだけです。具体的にはどのバージョンや構成でも、wgetでrunファイルをダウンロードした後に、runファイルを実行します。
Windowsの方は、入手したzipファイルを解凍ソフトで解凍しましょう。すると、cudaという名前のディレクトリが生成されます。このディレクトリの中身(ファイルやディレクトリ全て)をインストールしておいたCUDAのディレクトリにコピーします。CUDAはインストール時に自分でディレクトリを指定していなければ、「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vXX.X」(一番最後のvXX.Xはバージョン)にインストールされています。
コピーが完了したら、最後にシステムがcuDNNを認識できるように設定する必要があります。その為に、システム環境変数を設定しましょう。
そして変数名をCUDNN_PATH、変数値をCUDAをインストールしたディレクトリに指定しましょう。具体的には、値を「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vXX.X」(XX.Xはバージョン)に設定します。以上で、WindowsでのcuDNNの導入は完了です。
CUDAのインストールを確認する方法
CUDAについてはターミナルかコマンドプロンプトで”nvcc -V”と入力する事でインストールできているかが確認できます。nvcc -Vは導入されているCUDAのバージョンを確認するコマンドで、適切にインストールされていれば通常通りにバージョン情報が出力されますが、インストールされていない場合はエラーを吐いてしまいます。
cuDNNについてはコマンドでバージョンを確認するといった方法はなく、基本的にはCUDAにcuDNNのファイルが配置されているかを確認するしかありません。具体的には、CUDAのディレクトリに、includeディレクトリがあり、その中にcudnn.hファイルがある事を確認しましょう。
さて、今回はCUDAのインストール方法について解説しました。それでは、今回の記事の内容についてまとめましょう。
- CUDAとは、GPU向けの汎用並列処理プラットフォーム
- CUDAのインストールをする前には、まず一つはGPUがちゃんと機能するかを確認し、自分の環境に合ったCUDAのバージョンを調べ、cuDNNの会員登録を済ませておこう
- CUDAは公式ホームページからダウンロードし、機械学習のライブラリで使うcuDNNも合わせてダウンロードする
- CUDAは公式ホームページの手順に従えば簡単
- CUDAをインストールした後は、ターミナルで確認しよう
自分のマシンの環境に合わせて、適切なバージョンのCUDAとcuDNNがインストールするのは少し骨が折れる作業ですよね。しかし、その甲斐あって、とうとうGPUを用いた機械学習が可能になりました。
GPUを用いた機械学習は通常の10倍から100倍程度の速度で学習を行う事ができます。GPUの処理性能なくしては機械学習はここまで発展する事はなかったでしょう。CPUだけを用いた機械学習から一歩踏み出した貴方は、機械学習を行う大きな一歩を踏み出したと言えるでしょう。ぜひともこれからGPUをフル活用して、機械学習を始めましょう。