はじめに
前回、AIでライオンとネコを検出する!と題してTensorflowを使ってObject Detectionをやってみました。うまく識別はできたのですが、CPUで学習を行ったため大変時間がかかってしまいました。今回はGPUを使ってやってみようと思います。
ちょっと長くなるので2回に分けます。今回は1回目。
前提
今回は、GoogleのGPUインスタンスを使ってやってみようと思います。
GCP(Google Cloud Platform)を使えるようにアカウントの取得等はしておいてください。
本稿ではサーバ(VM)が作成できる状況から始めます。
環境構築
まずは、GCPでGPUを搭載したVMのインスタンスを作成します。
GPUの使用申請
GCPの「IAMと管理」の画面で「割り当て」を選択します。
割り当ての画面で指標で「gpu」と入力するとgpuに関するサービスがリストアップされます。
いろいろと種類がありますが、それぞれで性能と価格が違います。価格のイメージとしては下記のような感じ。
とりあえず、今回は初めてなので一番安いK80をつってみようと思います。自分でVMを作成したいロケーションのサービスを選択して、上部の「割り当てを編集」をクリックして申請します。
申請すると、大体早ければ数時間で、遅くとも2日くらいで割り当てをしてくれます。
GPUインスタンスの作成
GPUインスタンスの作成は簡単で、通常のVMインスタンスの作成画面で、CPUの設定のところでGPUを追加し、OSにGPU対応のTensorflowが含まれているものを選択するだけです。
GPUの追加は下記のようにGPUの指定のところで指定してあげます。
OSは下記のとおり、CUDAとTensorFlowが入っているものを選びます。
あとは、IPアドレスの設定など通常のVMの設定をしましょう。
基本はsshでログインして捜査をしますので、sshでログインできるようにはしておいてください。
環境構築
GPUの設定
ログインをすると最初にドライバをインストールするかを聞いてきますので、「y」と回答してください。これだけでGPUが使える環境になります。
GPUが正しく認識できているかはnvidia-smi
を実行してください。下記のはK80を8個搭載した場合の例です。しっかりと8個認識できていますね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
$ nvidia-smi Sun Feb 24 16:55:29 2019 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 410.72 Driver Version: 410.72 CUDA Version: 10.0 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla K80 Off | 00000000:00:04.0 Off | 0 | | N/A 33C P0 58W / 149W | 0MiB / 11441MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 1 Tesla K80 Off | 00000000:00:05.0 Off | 0 | | N/A 35C P0 69W / 149W | 0MiB / 11441MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 2 Tesla K80 Off | 00000000:00:06.0 Off | 0 | | N/A 32C P0 56W / 149W | 0MiB / 11441MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 3 Tesla K80 Off | 00000000:00:07.0 Off | 0 | | N/A 36C P0 74W / 149W | 0MiB / 11441MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 4 Tesla K80 Off | 00000000:00:08.0 Off | 0 | | N/A 34C P0 58W / 149W | 0MiB / 11441MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 5 Tesla K80 Off | 00000000:00:09.0 Off | 0 | | N/A 35C P0 70W / 149W | 0MiB / 11441MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 6 Tesla K80 Off | 00000000:00:0A.0 Off | 0 | | N/A 33C P0 62W / 149W | 0MiB / 11441MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 7 Tesla K80 Off | 00000000:00:0B.0 Off | 0 | | N/A 33C P0 83W / 149W | 0MiB / 11441MiB | 46% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+ |
ここまでできればあとはObject Detectionの設定をして行くだけです。
次回へ。
コメント