- 試しに機械学習のプログラムを動かしてみたい
- 機械学習をするために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インスタンス立ち上げ
通常のインスタンスを作成する
「NVIDIA Volta Deep Learning AMI」を選択する
このイメージはnvidia-dockerがデフォルトで入っているため、環境構築が簡単
「NVIDIA Volta Deep Learning AMI」を選択している場合、p3系しか選択できなくなる
特に必要なければデフォルトで問題ない
種類や容量は好きなように設定する
特に指定は無いが、わかりやすいようにAIとしている
Jupyterは8888ポート、TensorBoardは6006ポートを利用する
機械学習環境構築
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イメージを作成
作成したAIインスタンスを選択し、「アクション」→「イメージ」→「イメージの作成」を選択する
作成する前にインスタンスを停止しておいたほうがよい
イメージ名やイメージの説明を入力して作成
これも1時間以上時間がかかる
イメージの作成が完了したら、EC2インスタンスは削除してよい
※そのままにしておくと、通常のレートでどんどん課金されていくので注意
スポットインスタンスの設定
① 作成したAMIイメージを選択
② インスタンスタイプは機械学習環境構築で使ったp3.2xlargeを選択
③ EBSボリューの削除にチェック
④ セキュリティグループは機械学習環境構築で設定したセキュリティグループを選択
⑤キーペアは機械学習環境構築で設定したキーペア名
⑥インスタンス起動時にコマンドを実行させたい場合は、ここにシェルを記載(#!/bin/shから始める)
起動時にjupyterも同時に起動しておくことも可能
⑦リクエスト有効期間の終了は24時間に設定するなどしてスポットインスタンス停止忘れ防止