Floydhubとは
Floydhub とはDeepLearningのためのHerokuのようなサービスです。
TensorFlowやKerasを使ったプログラムをCloud上で動かすことができるサービスです。
Floydhubの最大の特徴として、2時間のGPU無料枠があるということです。
また、Cloud9のように、アカウントの作成にクレジットカードは必要ないので簡単にGPU環境を使うことが出来ます。
そして、コストもAWSの約50%で課金は秒単位でリーズナブルです。
また、TensorFlowやKeras意外にも、ChainerやPyTorchやtheano等も使えます。
アカウント作成
https://www.floydhub.com にアクセスすると下記ページに飛びます。
真ん中の青いボタン(Sign Up Free)から無料でアカウントを作製できます。
登録に必要なのは、5つです。
- username
- password
- Full Name
- Company or School
以上入力して、SIGN UPを押すと下記ページに飛びます。
Get Started
Floydhubからメールが届いていますので、メールのリンクを押して認証します。
ターミナル上で、適当な作業ディレクトリに移動してからfloyd-cliをインストールします。
pip install -U floyd-cli
次に下記を入力しエンターすることでログインします。
floyd login
すると、
Authentication token page will now open in your browser. Continue? [Y/n]:
と聞かれますので、__y__を入力し進めるとブラウザが立ち上がり、Welcome pageが開きます。
ターミナルに、Welcome PageのCにtokenがありますので、コピーを行い、
This is an invisible field. Paste token and press ENTER:
と表示されているターミナルに貼り付けて、Enterキーを押すことで、__Login Successful__と表示されます。
Quick Start
https://docs.floydhub.com/getstarted/quick_start/
を参考に、TensorFlowの環境を作って見ましょう。
$ git clone https://github.com/floydhub/quick-start.git
Cloning into 'quick-start'...
...
$ cd quick-start
$ ls
eval.py LICENSE mnist_cnn.ipynb README.md train_and_eval.py train.py
$ floyd init quick-start
Project "quick-start" initialized in the current directory
下記コマンドで実行した場合は、CPUインスタンスでの実行になります。
$ floyd run "python train.py"
GPUインスタンスで実行したい場合は、__--gpu__オプションをつけることで実行できます。
$ floyd run \
--gpu \
--data mckay/datasets/mnist/1:/mnist \
--env tensorflow-1.3 \
"python train.py"
$ floyd status
JOB NAME CREATED STATUS DURATION(s) INSTANCE DESCRIPTION
-------------------------------- -------------- -------- ------------- ---------- -------------
aiacademy/projects/quick-start/1 38 seconds ago success
データセットをアップロードする
$ floyd data init <ファイル名>
続けて以下を入力するとアップロードが開始されます。
$ floyd data upload
アップロードが完了するとID名が発行されますので、以降呼び出すときはそのID名を使用します。
新規プロジェクト
下記URLから新しくプロジェクトを作成できます。
https://www.floydhub.com/projects/create
Project nameは適当に、「my-first-project」とし、
Visibility LevelはPrivateにします。
そしてCreate projectボタンを押します。
それでは、ターミナルで下記を実行してください。
$ mkdir my-first-project
$ cd my-first-project
$ floyd init my-first-project
Project "my-first-project" initialized in current directory
$ floyd data init quick-start
$ floyd data upload
エラーが出る場合は、再度
$ floyd init my-first-project
Project "my-first-project" initialized in current directory
そして、最後に下記コマンドを実行することで、Jupyter Notebookが立ち上がります。
floyd run --env keras --mode jupyter --gpu
では、実際にKerasのコードを実行してみましょう。
右上のNew タブから、Python3を選択し、セルに下記コードを貼り付けてください。
from keras.models import Sequential
from keras.layers.convolutional import Conv2D
from keras.layers.pooling import MaxPool2D
from keras.optimizers import Adam
from keras.layers.core import Dense, Activation, Dropout, Flatten
from keras.utils import plot_model
from keras.callbacks import TensorBoard
from keras.datasets import cifar10
from keras.utils import np_utils
(X_train, y_train),(X_test, y_test) = cifar10.load_data()
# floatに型変換
X_train = X_train.astype('float32')
X_test = X_test.astype('float32')
# 各画素値を正規化
X_train /= 255.0
X_test /= 255.0
nb_classes = 10
batch_size=256
nb_epoch=10
Y_train = np_utils.to_categorical(y_train, nb_classes)
Y_test = np_utils.to_categorical(y_test, nb_classes)
# モデルの定義
model = Sequential()
model.add(Conv2D(32,3,input_shape=(32,32,3)))
model.add(Activation('relu'))
model.add(Conv2D(32,3))
model.add(Activation('relu'))
model.add(MaxPool2D(pool_size=(2,2)))
model.add(Conv2D(64,3))
model.add(Activation('relu'))
model.add(MaxPool2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(1024))
model.add(Activation('relu'))
model.add(Dropout(1.0))
model.add(Dense(nb_classes, activation='softmax'))
adam = Adam(lr=1e-4)
model.compile(optimizer=adam, loss='categorical_crossentropy', metrics=["accuracy"])
history = model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=1, validation_split=0.1)
実行すると、下記のように学習が進めば環境構築完成です。
参考記事1
http://sanshonoki.hatenablog.com/entry/2017/06/17/222515
参考記事2
http://nami3373.hatenablog.com/entry/2017/07/01/123847
参考動画1
https://www.youtube.com/watch?v=OJsirsSBX-A
参考動画2
https://www.youtube.com/watch?v=ScoHw0i33rM
まとめ
100時間分のGPU無料利用できるDeepLearningのためのHerokuのようなサービスFloydhubの
簡単な使い方を見てきました。
これからDeep Learningを学ぶ場として一旦、無料枠を通じてDeep Learningの学習を進めて頂けたらと思います。
AI Academy
オンラインによるマンツーマンレッスンでAIプログラミングが学べるスクール。
AI Academy 「AI(人工知能)技術をかつてないほどに多くの人々にとって身近にし、AI時代にAIを活用できる人材を創出する」 ことを掲げ、AIエンジニア育成をしている。
http://aiacademy.jp/
AI Academy 1day BootCamp
Python文法速習以外にも、色々なイベントを開催しています。
是非他のイベントも見てみてください!
https://connpass.com/user/AI_Academy/open/
AI Academy Community
AI Academy CommunityはオープンなFacebookグループです。
メンバー数は現在約350名で、毎日AIに関する情報を5件〜10件ほどお届けします。
定期的にAIに関する情報を知りたい方は、是非参加してください! お待ちしております! https://www.facebook.com/groups/1892746874314837/
※参加するには、Facebookアカウントが必要です。