【ディープラーニング】GPUマシンでモデルの学習はどれくらい速くなるのか
最終更新日: 2017/09/16 5:09pm
こんにちは。経理の小高です。
川越も台風が近づいてきたようで、外が暗くなってきました。電車が止まると困るので、今日は早めに切り上げないとです。
さて、久しぶりのAI関連の投稿です。
弊社も期末をむかえておりまして、来期の計画など作っています。
技術的なテーマとしては「大きなコンピュータと小さなコンピュータ」というイメージにしようと考えています。「大きなコンピュータ」とは今日のテーマの高速なコンピュータ、小さなコンピュータとは、ラズベリーパイ周辺のコンピュータやマイコンのことです。既存技術(クラウドやホームページ、サポート技術)などにも目標はありますが、流行りにものっかって、AI(大きなコンピュータ)とIoT(小さなコンピュータ)に取り組む予定です。
「おいおい、そんなに欲張って大丈夫か?」というご意見をいただきそうですが、目標は高くないと面白くありませんよね。
以前の投稿で、弊社の保守サポート管理システム(オクトパス)にディープラーニング(深層学習)を導入しました、と報告させていただきました。
ブログ「ITサポートシステムに深層学習(ディープラーニング)を導入しました」
システムでは、簡単な画像認識(ソフトマックスをつかった画像の多クラス分類問題)にAI技術の1つである深層学習モデル(DNNモデル)を取り入れています。先のブログに書いたモデルでは、4500枚程度の画像を使って30エポックのトレーニング(135,000枚相当の計算量)を行っています。
DNNモデルにはAlexNetというチャンピオンモデルを選択肢て、初期状態から学習を行っています(=転移学習ではない)。パラメータは6M以上あるので、相当の計算能力が必要になります。ここで登場するのがGPUです。
クラウド(Amazon Web Services)にもGPUインスタンス(Type PかType Gのインスタンス)というのがありまして、東京リージョンで1時間あたり約100円から借りていました。ところが、みるみるお金がかかってしまい(∵ディープラーニングではタスクにとてつもなく時間がかかってしまう場合があるため)、専用のマシンを導入することになりました。これが下のマシンです。
自社利用ということで、お得意のノーブランドの機械。このマシンにはGeForce GTX1080Ti 11GB という「すごい奴(とはいえ、GeForceとTitanの中間)」を乗せました。それが下。じゃじゃん。
残念ながらファンで見えません。。。。
NVIDIAのページ(NVIDIA Pascal GEFORCE GTX1080TI)に現物があります。
GPUを使う場合、メモリをCPUと共有できません。
CPUのメモリー空間からGPUのメモリー空間へデータをコピーして計算を行いますので、感覚的には(自分の実験のサイズでは)10Gくらいはほしいと思いました。画像データそのものがそれなりにサイズが大きい上に、学習のためにたくさんのデータを使うからです。
CPUはIntel Core i5-7400 3GHz/4Core(ケイビーレイク)です。
このマシンに以下をインストールしました。(Linuxサーバーの設定はお仕事柄得意)
- Ubuntu 16.04LTS:OS
- CUDA8.0:GPGPUのためのインターフェイス
- cuDNN6.0:DNN特有の数値計算(特に畳み込みニューラルネットワークでのフィルターパラメータ推定計算)を提供するライブラリ
- Python3:開発環境
- Chainer:深層学習フレームワーク
- その他もろもろ:OpenCV3とか
さて、前置きが長くなってしまいましたが、結果から言いますと、自分のタスク(上述)では177倍という結果になりました。
タスクの実行時に、標準出力に進行状況を表示していましたので、そのオーバーヘッドを含んだ数字です。
これだけ早いと「さて、もう1回学習してみよう」という気になります。
今後の計画。
Chainerがv2にアップしてシンタックスが変わりました。これを機にKeras + TensorFlowに乗り換えようと考えています。
←「お問い合わせフォームとスパム・迷惑メール対策」前の記事へ 次の記事へ「【ディープラーニング】AIで何がかわるか」→