Trial and Error

ITで色々やってることを書いてくチラシの裏です

機械学習&openstack検証用マシンを調達してみた

はじめに

実は前回記事のsantanderコンペは自前のmacbook(メモリ8GB)で戦っていた。
この型落ちmacでkaggle戦うのは流石にキツイよな…と思ったので、この際思い切ってGPU搭載マシンを調達することにした。

あと、元openstackerとしてopenstackで以前やりたかったけどできなかった事もこの際やりたいので、openstack検証マシンとしての側面も持たせたい。

要件

  • 機械学習用(GPU搭載/当面の使用目的はkaggle。可能なら画像コンペでも戦えるスペックが欲しい)
  • 仮想プラットフォーム検証用(当面の使用目的はopenstack検証)
  • 予算は税込みで20-30万程度

調査

参考資料(機械学習方面)

参考にさせていただいた先人の取り組みを以下に列挙。
ただほとんどが2018年以前のものなので、最重要パーツであるGPUについて情報が古くなってしまったものが多い。

自作式

少し前の記事だが、各パーツについての詳しい考察付き。
roomba.hatenablog.com
echomist.com

半自作式

一部パーツだけ自前調達して、他はBTOベアボーンキットでまとめて調達した事例は以下、

グラボのみ自前調達で、他はBTOから調達した事例。
www.petitmonte.com

ベアボーンキットにSSDとメモリを追加して組んだ例。
blog.hotolab.net

参考資料(openstack方面)

openstackのデプロイツールはdevstackとかjujuとか色々あるものの、今回はall-in-oneでの使用を想定&お手軽に欲しいので、Packstack(RDO)を採用予定。

2019/5時点で最新のStein releaseの要件は以下、*1
https://www.rdoproject.org/install/packstack/

Software
Red Hat Enterprise Linux (RHEL) 7 is the minimum recommended version, or the equivalent version of one of the RHEL-based Linux distributions such as CentOS, Scientific Linux, and so on. x86_64 is currently the only supported architecture.

RHEL7以上かそれと同等のRHELベースlinuxとのことなので、OSはオーソドックスにcentos7以上のものを使えば良さそう。

Hardware
Machine with at least 16GB RAM, processors with hardware virtualization extensions, and at least one network adapter.

きょうびのRDOはメモリ16GB以上も必要なのね…

選定

自作,半自作, or BTO

各パーツとそれらの関係考えながらあれこれ悩みつつ、一つ一つパーツ調達して組み立てるの楽しそうだなーと先人の記録を読んで思ったものの、諸事情により選定&構築に費やせるリソースは残念ながらあまり多くない。

したがってBTO方式メインで行くことに。
まず各社BTOで見積もり取ってみて、予算オーバー!となったら一部パーツの自前調達を検討する。

GPU

以下記事がとても参考になった(界隈では有名記事らしい)
最新GPUがリリースされると更新されるのもありがたい。
timdettmers.com

2019/5現在新しめの日本語情報は以下。
beiznotes.org

関連して、ゲーミング用途での解説ではあるものの、スペックや設置についてまで詳しく解説されており勉強になった記事はこちら。
chimolog.co

同じサイトからRTX2070の解説記事。こちらも勉強になった。
chimolog.co

上記ら情報を比較検討した結果、

  • 仮想通貨マイニングの影響でGTX1080系は品薄であまり安くなっておらず、現時点ではコスパが良くない
  • GPUメモリが少ないと、大きいニューラルネットとかブン回した時に不利と耳にしたので少なくとも8GBくらいは欲しい
  • 深層学習でtensor core使ってみたい

という理由からRTX2070を選定。

CPU

intelの最新はcore i9だが、お財布と相談してcore i7系で行くことに。
型番末尾にkがつくタイプは、オーバークロックの必要性を感じない&CPUクーラーを別途購入しないといけないので除外。

メモリ

仮想マシン立ててopenstack検証することになったら、RDOの要件考慮して余裕を持ってメモリ32Gくらいは仮想マシンに割り振りたい所。
なのでメモリはケチらず基本上限(64GB)まで積むことにする。

kaggleで画像コンペ戦う場合でも64GBあれば困らないはず。

SSD,HDD

データを速く読み書きするためのSSDと、他のデータを置いておくHDDそれぞれ1台ずつ欲しい。
SSD 250GB & HDD 2TBくらいあればまずは充分かな?と雑な感じで見積もる(足りなければ足せばいいし)

電源

電源ユニットの最大W数の半分くらいで電力変換効率がベストになる、とのこと。
今回は800-850W程度あれば充分のはず。

OS

要件にあるようにRDOを導入するならRHEL系のディストリが必要。

しかしtensorflowやchainer等の深層学習ライブラリは基本的にubuntu 1stで作られているとのこと。*2
なのでこれらライブラリやGPUを走らせるにはubuntuが望ましい。

本当は、

「マシン本体にcentosインスト→RDOインスト→openstackで作ったインスタンスubuntu入れる→そこにライブラリとGPU載せてkaggleでバトル!」

が、できたら嬉しい(&かっこいい)ものの、初っ端から元々の設定全部潰してopenstack突っ込むのもちょっと…なので、最初のうちは仮想centos上にRDO入れて様子見、という選択肢を残しておきたい。

なので当分の間マシン本体のOSはデフォルトのwindows(OS無しが選べる場合はそれにして自分でubuntuインスト)にして、仮想centos上でのopenstack検証が一通り終わったら物理マシンOSにcentos/ubuntu入れて機械学習(DL)方面の検証を進めることにする。*3

買ったもの

以上選定品をまとめると、

GPU RTX2070
CPU core i7 無印
メモリ 上限まで積む(64GB)
SSD/HDD 250GB/2TB程度
電源 800-850W
OS 当面デフォルトのまま(OS無しが選べるならそれ)

BTO5,6社で上記条件で見積ってみると、大体税込25万前後だった。


が、フロンティアでタイミングよくお買い得セール品を見つけてしまった。
f:id:niaoz:20190514143351p:plain

あれ?これでいいんじゃね?

という訳で購入!

費用も税込20万以内で収まりましたとさ。

この次

設置→初期設定→仮想環境構築→openstack構築みたいな流れになると思う。

届くのはまだ先なので、それまでに設置場所(物理)を確保したり、openstack周り中心に知識整備を進める予定。

反省点

*1:Stein releaseに訂正。https://www.openstack.org/software/stein

*2:https://deepinsider.jp/tutor/prepareenv/gpuubuntu

*3:当分の間はopenstack検証を進めるつもりなので、ubuntuが必要になる機械学習環境を整えるのは先になりそう、という事情もある。