Windows&AMD製GPUでディープラーニング環境構築!?【Intel NUCのパワーをAIに解放】
>> 関連記事 : Windows&AMD製GPUでディープラーニング環境構築!?【Intel NUCのパワーをAIに解放】②
とある悩み
11月初旬、僕は悩んでいました。
ディープラーニング(深層学習)がやりたい……!!
いや、勝手にやればええやんけ。今やMicrosoftやAmazon、Googleなどの各社が提供する課金制のクラウドサービスを使えば、簡単にディープラーニングが始められる状況になってきています。なのでやりたいと思えばこれらのサービスに登録するだけで10分もかからずにディープラーニングを始めることができます。じゃあいったい僕は何で悩んでいたのか?
(自分のマシンで)ディープラーニング(深層学習)がやりたい……!!
こちらの超クールなマシンはIntel NUC。小型ながらもかなりのハイスペックを誇るマシンで、Digital DIYでもVRハンズオンイベントなどで使用しています(なんと20台保有!)。おわかりいただけたでしょうか?そう、何もクラウドサービスに高いお金払い続けなくても、せっかく目の前にハイスペックPCがあるんだからこれを使ってディープラーニングがやりたい!というわけです。
目の前に立ちはだかる2つの大きな壁
しかしそうは問屋が卸さない……。このNUCでディープラーニングをやるには、主に次の2つの壁があるのです。
(1)NUCに搭載してあるOSであるWindowsではディープラーニングはやりにくい
(2)多くのメジャーなディープラーニング用フレームワークを動かすのに必要なNVIDIA社製のGPUが搭載されていない
まず(1)ですが、現状ディープラーニングは殆どUNIX系のOS(中でもUbuntuと呼ばれるOSを使う人が多いです)で行われているという事実があり、対応するライブラリやサポート環境の多くはこれに準じています。逆にWindowsはというと、正直あまりよいサポート状況とは言えません。じゃあUbuntuをNUCに入れればいいんじゃないの?と思うかもしれませんが、いまから新しいOS入れるのは抵抗があるし、他のアプリ開発なども並行してやることを考えると、いちいちWindowsと切り替えて使うのは面倒です。なにより、僕はWindowsが使いたいよ!(わがままポイントその1)
さらに問題なのが(2)。ディープラーニングは高い計算能力をPCに要求するので、通常はGPUと呼ばれる演算装置
(もともとは3Dゲームなど高い描画性能を要求する処理のために使われるもの。詳しくはこちらを参照!を動かしてこれを解決しています。
ただこのGPU、実はNVIDIA社という会社のものでしか実質ディープラーニング用のフレームワークを動かすことはできません。残念なことに、NUCに搭載されているGPUはAMDという会社のものなのです。このNUCに搭載されているAMDのGPUも、VRなどのハイパフォーマンスを要求する3D描画に耐えうるものなのですが、NVIDIAのものでない、というだけでディープラーニング用に使うことができないのです!ひどいよ!
もちろんNVIDIA製のグラフィックカード(GPUを搭載したPCパーツ)を買ってきてNUCに外付けして使うという手もなくはないですが、無駄に場所をとっちゃうし、何より結構高いので僕の財政状況ではキツイです……(わがままポイントその2)
NUCを持っている、という方じゃなくても、上のいずれかの理由でディープラーニングを始めるのを諦めてしまった方はかなり多いことでしょう。全国のWindows & AMD製GPUユーザーの皆さん、我々はこのまま屈するしかないのでしょうか……?
しかし!
ジャジャン!
今回我々Digital DIYは、この2点の問題を解決し、「自分のWindowsPC上ですべて完結し、かつAMD製GPUを計算に使えるディープラーニング環境」を作り上げました!バンザイ!使ったのはすべてフリーで公開されているオープンソースのライブラリやツール。この記事では、これらを使ってWindows上にゼロからディープラーニング環境を作り上げていく方法を紹介します。また、そもそもディープラーニングって何ナノ!?というところから解説していきますので、完全初心者の方もご安心を!
ディープラーニング(深層学習)とは?
ディープラーニングを説明するために、まずAIと機械学習について触れておきましょう!
AIはいわゆる人工知能のことで、SF映画とかに登場するロボットなどをイメージするとわかりやすいと思います。とはいってもいま現在実現されているAIは人間のように思考し行動するものではなく、画像の分類や物体の認識など特定のタスクをこなすために開発されているものが殆ど。このAIの能力を実現するために使われる技術の一つが、機械学習と呼ばれるものです。機械学習は、数理や統計学の理論を用いることでデータに隠れた法則や特徴を見つけることを可能にする技術であり、現在までに様々なアルゴリズムが考案、実装されてきています。
実はディープラーニングとは、この機械学習の手法のうちの一つなので す!ディープラーニングの他の手法と異なる特徴の一つは、人間の脳の中で情報処理を担っているニューラルネットワークと呼ばれるシステムを模しているという点で、このようにして実装されたアルゴリズムを特に「ディープニューラルネットワーク(DNN)」と言ったりします。このシステムを導入することで、AIがより自律的に学習を行えるようになり、学習性能が飛躍的に上昇したのです!
理論が全部分かる必要はない!?利用するだけなら超簡単です
そんなディープラーニングですが、多くの方の想像通り、その理論は非常に高度な数学によって構成され、それらをすべて理解するにはかなりの知識が要求されます……。ではディープラーニングプログラミングを行っている人が全員それを理解しているかというと全くそんなことはありません!実際に理論をしっかりと理解する必要があるのは基礎理論や技術を研究する限られた人たちだけで、例えば開発しているアプリケーションにディープラーニングを使った画像認識を実装したければ、様々な会社が提供している専用のAPIを呼び出すだけで済みます。
また自分でモデルを作る場合でも、このあと説明するフレームワークを使用すれば難しい数学の部分に触れずとも比較的簡単にモデル作成を行うことができます。一口にディープラーニングといっても、深い部分まで理解することが必ずしも求められるわけではない、ということはおさえておきましょう!
様々な深層学習用フレームワーク
今回は「自分でディープラーニングを使って学習モデルを作りたい」という人向けの記事なので、そこに焦点をあてて解説していきます。ディープラーニングの爆発的な流行を契機として、GoogleやFacebook、Microsoftなどの大手企業をはじめ、様々な企業から「フレームワーク」と呼ばれるディープラーニングのためのライブラリが無償で公開されています。ユーザーはこのフレームワークを利用することで、高度な数学を理解することなくモデルを構築することができます。メジャーどころのフレームワークには次のようなものがあります。
TensorFlow
Caffe
Chainer
PyTorch
CNTK
Keras
それぞれのフレームワークにはモデル構築の考え方のレベルから異なる特徴があり、使い易さにも差があったりします。ちなみに今回の環境構築では、Kerasという初心者にも扱いやすいフレームワークをインストールします。
使用するプログラミング言語
C++やJavaなど複数のメジャー言語に対応しているフレームワークもありますが、データサイエンスの世界でいま最も使用されているプログラミング言語はPythonです!Pythonは比較的シンプルで短くコードを書ける上に、文法もそこまで難しくないのでプログラミング初心者にも向いていると言われるほど。Python自体はどちらかというと計算速度も早くなく一見機械学習には向いていないように思えるのですが、数値計算やデータ分析のための非常に強力なライブラリが数多く提供されており、最近の流行もあって非常に機械学習プログラミングをしやすい環境が整ってきています。ご多分にもれず、今回の記事でもPythonを使ったプログラミング環境を構築します。
>> 関連記事 : 自作PCをお勧めする 7つの 理由:その5 – プログラミングをするなら自作 PC の知識は必要
おわりに
今回は、ディープラーニングについての簡単な基礎知識について紹介しました。次回からはいよいよ環境構築に入っていきます。お楽しみに!