コンペにて時系列データに関する分析があったので、備忘録的な感じで書いています。
いままでも時系列データに関するコンペはあったのですが、GPU計算を行わずに、PCのCPU性能に任せた方法でしかやってませんでした。お陰でえらく時間がかかってました笑う。まだ経験自体も浅く、どうやって特徴量エンジニアリングを行うかばかりを考えてました。
GPUとは・・・(Graphics Processing Unit)つまり画像処理装置や映像の処理を専門に行うプロセッサー(装置)のことで、与える情報が画像や3次元構造のデータを扱うのに適した装置です。広義的に言えばPCのグラボのことですね。
CPUとどれくらい性能が違うかというと、これもそれぞれの性能にかなりよるのですが、私のGTX950とcore i7とで簡単な計算の速度を測定してみました。
CPUでの計算時間: 8.6169 秒
GPUでの計算時間: 3.1951 秒
GPU は CPU より 2.70 倍速い!
結果は一目瞭然ですね。くそしょぼなGPUでもこんだけ差がありました。笑
なぜ今回GPUに着目したかと言いますと、時系列モデルを扱うにあたって、RNN(リカレントニューラルネットワーク)は時系列を考慮したニューラルネットワークで、その時系列層をさらに改良したのがLSTMモデルになるのですが、計算量が膨大で大変だからでした。エクセルで例えるなら何十万にも及ぶ行数からなるサイズです。
ニューラルネットワークの図
そもそもニューラルネットワークとは・・・上図のように入力層に画像、ビデオ、音声、テキストなどのデータが入力され、それらに重みづけ(重要なものには重みを大きくしたり、足し算などなど、ごちゃごちゃ計算し、その結果を出力していく構造をしています。
そしてこの層が上下に何枚も層として立体的に広がっているのがディープラーニングの構造です。
話を戻します。GPU計算に任せようとしていたのですが、ここで一つ問題が。
Vscode上のpython君がGPUを認識してくれない!
インタープリタ(コードを機械語に翻訳してくれるもの)は正しく設定されているし、バージョンもあっているのに、なぜ?
3時間くらい悩んでいました笑 VscodeというMicrosoft社が提供しているエディタのターミナル(Windowsでいうコマンドプロンプトにあたるやつ)が別のpythonさんを参照していました。。
いくらライブラリをインストールしても、認識してくれないのは当たり前ですね。python君ではなく別のpythonさんにライブラリをインストールしてる訳なので。
結果的にちゃんとGPUも認識してくれてよかったです。
これを機に今まではテーブルデータばかり扱ってきましたが、画像処理の解析もやっていこうと思います。
それではこの辺で失礼いたします。