今すぐ安価で始められる機械学習環境の構築

  • 試しに機械学習のプログラムを動かしてみたい
  • 機械学習をするためにGPUがあれば高速に学習できるが、値段が高いから躊躇してる

という方におすすめ
超高速なGPUで機械学習のプログラミングができる環境を、月々3,828円で構築する手順

利用するインスタンス

AWS EC2 p3.2xlarge

搭載しているGPUはNVIDIA Tesla V100 販売価格126万 ※http://www.gdep.co.jp/products/list/v/59ce00a4ee5f6

月々の料金

3,828円

月々20日、1日2時間利用を想定
スポットインスタンスの金額 $0.87(2017/12/3時点)
20日 x 2時間 x $0.87 x 110円 = 3,828円/月

構築手順

EC2インスタンス立ち上げ

通常のインスタンスを作成する

f:id:masakiz_blog:20171207000854j:plain 「NVIDIA Volta Deep Learning AMI」を選択する
このイメージはnvidia-dockerがデフォルトで入っているため、環境構築が簡単

f:id:masakiz_blog:20171207000855j:plain 「NVIDIA Volta Deep Learning AMI」を選択している場合、p3系しか選択できなくなる

f:id:masakiz_blog:20171207000856j:plain 特に必要なければデフォルトで問題ない

f:id:masakiz_blog:20171207003511j:plain 種類や容量は好きなように設定する

f:id:masakiz_blog:20171207002753j:plain 特に指定は無いが、わかりやすいようにAIとしている

f:id:masakiz_blog:20171207002357j:plain Jupyterは8888ポート、TensorBoardは6006ポートを利用する

f:id:masakiz_blog:20171207002358j:plain

機械学習環境構築

SSHでEC2にログイン

ユーザ名:ubuntu
SSHキー:xxx.pem(EC2の構築で設定したキーペア)

日本時間に変更

$ sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

アップデート

$ sudo apt update -y
$ sudo apt upgrade -y

機械学習の設定が済んでいるDockerイメージを作成
1.5時間近く作成に時間がかかる
※DockerfileでOpenCV系を除外すれば早くなる

$ git clone https://github.com/masakiz/tensorflow.git
$ cd tensorflow
$ nvidia-docker build --no-cache --rm -t masakiz/tensorflow:latest .

Dockerイメージを起動

$ cd /home/ubuntu/tensorflow
$ mkdir -p notebooks/logs
$ nvidia-docker run --name tensorflow -p 6006:6006 -p 8888:8888 -v $PWD/notebooks:/notebooks -e LOGDIR=/notebooks/logs -e LANG=ja_JP.UTF-8 --device=/dev/fuse:/dev/fuse --privileged masakiz/tensorflow:latest

http://IPアドレス:8888/

でJupyterにアクセスできれば完了
機械学習の開発環境が整う

【オプション】S3フォルダをマウントする

goofysをインストール

$ sudo add-apt-repository -y ppa:longsleep/golang-backports
$ sudo apt-get update
$ sudo apt-get install -y golang-go
$ export GOPATH=/home/ubuntu/work
$ go get github.com/kahing/goofys
$ go install github.com/kahing/goofys

AWSの設定

$ sudo apt-get install -y python python-pip
$ sudo pip install awscli
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPXX
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKXX
Default region name [None]: ap-northeast-1
Default output format [None]: json

S3フォルダマウント

$ mkdir /home/ubuntu/tensorflow/notebooks/workspace
$ chown -R ubuntu:ubuntu /home/ubuntu/tensorflow/notebooks
$ sudo /home/ubuntu/work/bin/goofys -o allow_other --uid 1000 --gid 1000 --region ap-northeast-1 <S3のバケット名> /home/ubuntu/tensorflow/notebooks/workspace

AMIイメージを作成

f:id:masakiz_blog:20171207010401j:plain 作成したAIインスタンスを選択し、「アクション」→「イメージ」→「イメージの作成」を選択する
作成する前にインスタンスを停止しておいたほうがよい

f:id:masakiz_blog:20171207010405j:plain イメージ名やイメージの説明を入力して作成
これも1時間以上時間がかかる

イメージの作成が完了したら、EC2インスタンスは削除してよい
※そのままにしておくと、通常のレートでどんどん課金されていくので注意

スポットインスタンスの設定

f:id:masakiz_blog:20171207012055p:plain

① 作成したAMIイメージを選択
② インスタンスタイプは機械学習環境構築で使ったp3.2xlargeを選択
③ EBSボリューの削除にチェック
④ セキュリティグループは機械学習環境構築で設定したセキュリティグループを選択
⑤キーペアは機械学習環境構築で設定したキーペア名
⑥インスタンス起動時にコマンドを実行させたい場合は、ここにシェルを記載(#!/bin/shから始める)
 起動時にjupyterも同時に起動しておくことも可能
⑦リクエスト有効期間の終了は24時間に設定するなどしてスポットインスタンス停止忘れ防止