- 試しに機械学習のプログラムを動かしてみたい
- 機械学習をするために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
で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時間に設定するなどしてスポットインスタンス停止忘れ防止