はじめに
こんにちは。今回は社内の営業から問い合わせがあった内容について、思うところがあったのでまとめようと思います。AI開発専門の企業様や、熟練エンジニア向けの内容ではなく、AI初学者や同じく営業さん向けの内容になります。
さて、問い合わせがあったのは大まかに以下の内容です。
-
-
- 既存顧客にAIの提案をしたいが、中にはクラウドがNGなお客様も多い。クラウドは必須なのか
- 必須でないのならどのような構成が必要なのか
-
弊社はSIerなので、通常のシステム開発のノウハウは溜まっているのですが、AI開発に関するノウハウは現在集約中で、全社に浸透するには至ってないという問題を抱えております。恐らく同じような問題を抱えている企業様もいらっしゃるのではないかと思いますので、記事にまとめることでビジネスチャンスを増やすことができれば幸いです。
なお、必要スペックを求める際の考え方を主に述べます。結論だけで良い方はまとめまで飛ばしていただければ、あと20秒ほどで記事の本旨を理解できます。
そもそもAIとは
主題の前にまずAIとはの定義から入ろうと思います。
諸説ございますが、今回は「機械学習(Deep Learningを含む)によって人間の知能を代替するコンピューターシステム」とします。よって、今回の記事では機械学習のためのハードウェア構成が主題となります。
クラウドは必須なのか
クラウドが有利な理由は主に以下の二つがあると考えています。
-
-
- データの集約先として容易
- 開発時及び導入時の必要スペック差を吸収できる
-
機械学習を行うには大量のデータが必要になります。散っている場合、集約する必要がありますが、開発時に集約できていればひとまずは問題ないため、大規模なサーバを用意するよりクラウド上に準備した方が容易であると考えられます。
また、後述しますが、AIにおいては導入時より開発時のほうが非常に高いマシンスペックを必要とします。必要な時に必要なだけ、がクラウドサービス(特にIaaS)を用いる利点の一つですが、AIにおいては特に必要な時とそうでないときの差が大きいため、クラウドが適していると言えます。スペックが必要かつ、本当に必要なスペックが判明してない開発はクラウド上で行い、導入・運用は自社サーバで行うという事も可能なため、非常に便利な選択肢です。
ただし、使用用途があれば開発用PCを持つことも無駄ではないですし、条件さえ満たせばすべて自社サーバ上で行うことも十分可能です。AIと一言で言ってもそこまでの処理能力を必要としない場合もあります。
結論として、クラウドは便利だが必須ではないとなります。
どのような構成が必要なのか
基本的な考え方
AI開発・導入のためのハードウェア選定基準も、基本的には通常のシステム開発と変わりません。1回あたりの処理時間・必要なレスポンス・アクセス数から必要なハードウェア能力を決定し、それを満たすように選定するだけになります。
ただし、AI特有の部分として、GPU等の特殊な処理装置や、通常のシステム以上のメモリが必要になるということがあります。また、開発環境と本番環境で必要となるスペックが異なることもAI特有となります。
関係する要素が多すぎるため、これ!とは言えませんが、処理速度にかかわる部分で気にするべき視点を述べようと思います。
GPUの用途・選び方
用途
まずはAI特有のハードウェアであるGPUから入ります。GPUが必要な条件は「Deep Learning」を行うことです。
これは解説記事などが星の数ほど存在するので詳しくは話しませんが、Deep Learningで行う計算が、GPUの特性と相性が非常によく、CPUと相性が悪いためです。特に最近のDeep Learningモデルは重いものが多く、CPUではまともに処理が行えない場合が多いです。
逆に一言でAIといっても従来の機械学習手法(SVMやRandom Forest等)を用いる場合は必要ではないです。というかGPU対応しているフレームワークが非常に少ないため、導入してもほぼ意味がありません。
選び方
NVIDIA製のGPUを選びましょう。それ以外の選択肢もありますが、特にこだわりがなければNVIDIA製のGPUを選んでください。代表的なDeep Learningフレームワークは私の知る限りすべてNVIDIA製のGPUに対応しています。
NVIDIA製のGPUには大きく2種類あります。GeForceとTeslaです。計算能力あたりの価格はGeForceが安いですが、Teslaの方が可用性が高くなっています。また、NVIDIA GeForceソフトウェアお客様使用ライセンスにより、商用サービスのホスティングとデータセンターへの導入は禁止されています。
導入するスペックは個別に調べていただければ様々なサイトが紹介しています。注意点として、転移学習などで既存のモデルを用いることが決まっている場合は、モデルの必要メモリがGPUのメモリを超えないよう注意ください。例えばGoogle researchが公開しているBERTではGPU with 12GB – 16GB of RAMでないとOut of memoryが出ると書いてあります。ちなみに本番導入時にはEdgeで処理する用にFPGAやASIC等といった専用アーキテクチャを用いる手段もあります。
CPUの用途・選び方
用途
最近はGPUが注目されがちですが、CPUも様々な処理を担っています。主に前処理と呼ばれる、データを機械学習に適した形式に変換するという処理に用いられています。前処理はモデルに合わせて試行錯誤する部分であり、主に開発時に時間がかかるところです。
選び方
特に気にする必要はありません。通常搭載するようなCPUで十分である場合が多いです。特に個人で自作する場合を除けばメモリやGPUの要件を満たすようPC/サーバを導入すればCPUがボトルネックになることはないでしょう。
メモリの用途・選び方
用途
言うまでもない気もしますが、データの受け入れ・読み込み・処理結果の保持に使われます。CPU・GPUも同様ですが、開発時のほうが多く使う傾向にあります。学習のために推論の何千何万倍のデータを処理するためです。
選び方
データ依存のため他項目以上に曖昧な内容になりますがご容赦ください。
扱うデータが文章や画像の場合は必要な部分の取り出しや、ベクトル化の処理が増えるので数値をそのまま扱うよりはかかるかな?程度です。
メモリに乗らないデータは分割して実行するので、試行回数が増えることになります。その分処理時間が増えることにもなりますので、注意が必要です。また、参照するデータがある場合、DBに置くとDBとのデータのやり取りがネックになりますし、メモリに置く場合その分領域を確保しなくてはなりません。一回で参照しなければいけないデータがどのくらいあるか目安がつけられると良いですね。
参考構成
具体的に案件で用いたスペックを紹介いたします。あくまで参考としてご覧ください。
概要 | IoT/センサーデータを用いた異常予兆検知PoC(開発・導入) | 文章データ解析及び数値データによる予測 PoC(開発) |
OS | Windows 7 pro 64bit | Ubuntu 16.04 LTS |
CPU | Core™ i7-6700 | E5-2637v4(3.5GHz)×2 |
GPU | 無し | Tesla P40 |
メモリ | 16GB | 128GB |
ストレージ | 256SSD | 480SSD x2 |
備考 | 対象は数値データのみ | 多少オーバースペックですが、KAGOYAのTesla GPUサーバー(P40モデル)を使用しています。 |
まとめ
長々と話しましたが、「クラウドは便利だが必須ではない」です。
あとは「Deep LearningするならGPUを、しないなら不要」です。
Deep Learningを行うかは「文章・画像を扱うならDeep Learning、数値データのみなら既存の機械学習手法かDeep Learning(データ量や難易度で変化)」という考え方で基本はいいと思います。
「クラウドNGだからAI導入できないよね……」ではなく、条件を詰めていけば自社サーバや限定的なクラウド利用でAI開発・導入が可能ということを認識いただければ幸いです。
tdiのAI・コグニティブソリューションは下記からご覧ください。
執筆者プロフィール
-
入社して半年間ロボコン活動に専念。少しのJavaエンジニア期間を経てデータ分析や機械学習、Deep Learningをテーマに勤労しております。
昔取った杵柄を摩耗させつつ新たな支えを求めて試行錯誤中。
この執筆者の最新記事
- Pick UP!2020.10.30Python/Kerasで学習させたモデルをJavaで動かすだけじゃ速くならなかった
- ITコラム2020.08.04DL4Jを使うためにEclipseでMaven使おうとして困ったら
- AI2019.11.29AIの検証・開発を行うときに必要なハードウェア条件とは?
- AI2019.08.05Google Colaboratoryの無料GPU環境を使ってみた