Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
GCEをTensorFlowの
「計算エンジン」にする
⾃⼰紹介
さとうきよし
有限会社ジーワークス
⽩⾺在住
ニューラルネット(NN)
との関わり
今はやりのディープラーニングは第3次ブーム
第2次ブームのバックプロパゲーションの頃にニューラル
ネットワークやりたくて⼤学に⼊る
⼤学でスキーにはまり研究には打ち込まず⽩⾺に移住し
て現在に⾄る
こんなことを話します
Google	Compute	Engine(GCE)でTensorFlowを使うと
gcloudコマンドのおかげで
Googleの速いマシンが⼿元にある気分で使えるよ
ディープラーニングを
すごくざっくり説明
ディープラーニングはすごく多層でも学習できる
バックプロパゲーション
バックプロパゲーションは多層でも学習可能な
パーセプトロン
パーセプトロンは1層だけのニューラルネット
パーセプトロンてなに?
ニューロンという神経細胞モデルで脳をモデル化
最初期のニューラルネットワーク
基本的な学習⽅法はディープラーニングもだいたい同じ
バックプロパゲーション
パーセプトロンを多層にしても学習可能にした
教師信号が出⼒層から⼊⼒層へ向かって伝搬していくの
でバックプロパゲーションと呼ばれる
バックプロパゲーション概念図
ディープラーニング
バックプロパゲーションを単に多層にしてもうまく学習
が収束しなかった
技術的⼯夫により超多層でも収束するようになった
CNN(畳み込みNN)は画像認識でよく使われている
ディープラーニング(CNN)概念図
ネオコグニトロン
第2時ブームの時すでに存在してた多層NN
CNNの先祖と⾔われている
ネオコグニトロンと現在のCNNの違いは?
実はほとんど違いがない
ネオコグニトロン概念図
ディープラーニングの
本質的進化は?
当時は今ほどはうまくいかなかった
Dropout,	LeRU	(AutoEncoderはCNNでは使われない)
などの技術的進化はあった
…が本質的進化か?
じゃあなにが本質的進化だったのか?
⼤規模ネットワークと
⼤規模教師データ
実験できるネットワーク規模がぜんぜん違う
学習に使えるCPUパワーが桁違い
SPARCstation20-61	(60MHz)	:	unixbench	10
Corei5	(1コア-2.6GHz)	:	u...
巨⼤なネットワークで
⼤規模データを
学習させてこその
ディープラーニング
⾼速化
学習には⾮常にCPUパワーが必要
結果を出すだけなら実は軽い
並列化と⼤変相性が良い
マルチCPUやGPUを使って学習を⾼速化する
TensorFlowとは
TensorFlowはGoogle製の機械学習ライブラリ
Pythonから利⽤する
汎⽤のTensor(⾏列)演算ライブラリ
マルチCPUやGPUをそのままで活⽤できる
Google	Compute	Engineとは
Google	Compute	Engine(GCE)はGCP版のEC2
安い
プリエンプティブでさらに安い(7割引き)
速い
最低10分で1分きざみ
VMの起動時間が短い
gcloudコマンドで操...
GCEと他との⽐較
サービス名 unixbench ⽉額
GCEスタンダード	(n1-standard-1) 1640 $26
EC2	(m3.medium) 920 $26
Azure	(Standard	A1) 680 $29
EC2	(G...
GCEは「Compute	Engine」
と⾔うだけあって
計算⽤途と相性が良い
GCEを使えるようにする
Googleアカウントの準備
Google	Developer	Consoleへのアクセス
Compute	Engineからプロジェクトの作成
住所⽒名やクレジットカード情報の登録
インスタンス⽣成時の注意点
ゾーン:us-east1-b
usだと値段が安い
マシンタイプ:vCPUx1	($25.95/⽉)
ブートディスク:Ubuntu	16.04	LTS
TensorFlowが簡単に⼊る
可⽤性ポリシー:プリエンプティブ...
インスタンスの⽣成
「作成」ボタンを押すと⽣成される
だいたい20〜30秒ほどで起動
「接続」のカラムの「SSH」を押すとブラウザの別ウィ
ンドウが開いてその中でSSHのコンソールが動く
ユーザはGoogleアカウント名で勝⼿に作られるので注意
gcloudとは
ローカルのコンソール上からGCEを操作出来るコマンド
ツール
vagrantでVMを扱っているような気軽さでGCEを使える
ので⼤変便利
Linux/Mac/Windowsのどの環境からでも利⽤できる
gcloudコマンドの
インストール
環境にあったファイルをダウンロードしてインストール
$ wget https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-clou...
Googleアカウントのひも付け
gcloudコマンドでどのGoogleアカウントに対して操作を
⾏なうかひも付ける
ブラウザが開いてGoogleアカウント選択画⾯になる
選択するとそのアカウントとひも付け設定が保存
$ gcloud auth...
gcloudのデフォルト設定
gcloudコマンドで使うデフォルトのプロジェクトとゾー
ン指定
$ gcloud config set project tfexample
$ gcloud config set compute/zone us-...
稼働してるインスタンスの
確認
$ gcloud compute instances list
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
tensorfl...
gcloudコマンドでの
インスタンスの稼働
GCEコンソール最終⾏の「同等の	REST	またはコマンド
ライン」から「コマンドライン」を選択
「gcloudコマンドライン」が表⽰されるのでこれをコン
ソールにコピペして実⾏
$ gcloud ...
gcloudコマンドからssh接続
現在のログイン名のユーザが勝⼿に作られます
これは最初だいぶびっくりしますがGCEではそういうも
んだ、と思うことにしました
$ gcloud compute ssh tensorflow-1
通常のsshコマンドで接続
「config-ssh」で現在起動しているインスタンスへのssh
接続設定が「.ssh/config」に作られる
$ gcloud compute config-ssh
FQDN名は【インスタンス名】.【ゾーン名】....
GCP操作アプリ
Google	Cloud	Console
スマホ⽤アプリからもGoogle	Cloud	Platformの操作が可
能
インスタンスの状況確認やスタート・ストップが可能
sshも可能だからトラブル発⽣時に出先から対応ができそ
う
TensorFlowのインストール
python環境を整える
$ sudo apt-get install python-pip python-dev
TensorFlowを⼊れる
$ export TF_BINARY_URL=https://...
MNISTを学習させてみる
チュートリアルのファイルを持ってくる
$ git clone https://github.com/tensorflow/tensorflow
$ cd tensorflow/tensorflow/g3doc/tut...
ansibleで学習⾃動化
mnist.yml
- hosts: targets
user: tfuser
tasks:
- shell: python mnist/fully_connected_feed.py > mnist.log
- f...
Google様のマシンが
⾃分ちにある気分!
インスタンス毎の学習時間
⽐較
TensorFlowのMNISTサンプル10,000epoch学習時間
CPU数 時間(秒) 倍率
1 59.207 1.0
4 36.877 1.6
16 26.778 2.2
そんなに画期的に速くはならない…
EC2のGPUインスタンスとの
⽐較
AWS	GPUインスタンスでは7〜8倍になる
やっぱGPUのほうが速い
GCEはGPUインスタンスが「ない」
やっぱAWSのほうが
いいんでは…?
Google	Cloud	Machine	Learning
(Cloud	ML)
スケーラブルな機械学習プラットフォーム
TensorFlowを利⽤する
GPUで⾼速化されると書かれている
ただし、まだ「LIMITED	PREVIEW」
Tensor	Processing	Unit
(TPU)
TPUはGoogleが機械学習専⽤に開発したチップ
AlphaGoもTPUで動かしたらしい
Cloud	MLもTPUでサービスという記事もあったがほん
と?
きっとCloud	ML始まったら
めちゃ速いはず!
(…と期待)
まとめ
機械学習はとりあえずTensorFlowベースで書いとくのが
良さそう
gcloudコマンドのおかげで⼿元に速いマシンがある気分
で学習させられる
早くCloud	ML使えるようになるといいなあ
Upcoming SlideShare
Loading in …5
×

GCEをTensorFlowの「計算エンジン」にする

3,245 views

Published on

TensorFlowを使ったディープラーニングの学習に、GCEをgcloudコマンドから使うことで、Googleのマシンが手元にあるような感覚で安く便利に使うことが出来るよという紹介。

Published in: Technology

GCEをTensorFlowの「計算エンジン」にする

  1. 1. GCEをTensorFlowの 「計算エンジン」にする
  2. 2. ⾃⼰紹介 さとうきよし 有限会社ジーワークス ⽩⾺在住
  3. 3. ニューラルネット(NN) との関わり 今はやりのディープラーニングは第3次ブーム 第2次ブームのバックプロパゲーションの頃にニューラル ネットワークやりたくて⼤学に⼊る ⼤学でスキーにはまり研究には打ち込まず⽩⾺に移住し て現在に⾄る
  4. 4. こんなことを話します Google Compute Engine(GCE)でTensorFlowを使うと gcloudコマンドのおかげで Googleの速いマシンが⼿元にある気分で使えるよ
  5. 5. ディープラーニングを すごくざっくり説明 ディープラーニングはすごく多層でも学習できる バックプロパゲーション バックプロパゲーションは多層でも学習可能な パーセプトロン パーセプトロンは1層だけのニューラルネット
  6. 6. パーセプトロンてなに? ニューロンという神経細胞モデルで脳をモデル化 最初期のニューラルネットワーク 基本的な学習⽅法はディープラーニングもだいたい同じ
  7. 7. バックプロパゲーション パーセプトロンを多層にしても学習可能にした 教師信号が出⼒層から⼊⼒層へ向かって伝搬していくの でバックプロパゲーションと呼ばれる バックプロパゲーション概念図
  8. 8. ディープラーニング バックプロパゲーションを単に多層にしてもうまく学習 が収束しなかった 技術的⼯夫により超多層でも収束するようになった CNN(畳み込みNN)は画像認識でよく使われている ディープラーニング(CNN)概念図
  9. 9. ネオコグニトロン 第2時ブームの時すでに存在してた多層NN CNNの先祖と⾔われている ネオコグニトロンと現在のCNNの違いは? 実はほとんど違いがない ネオコグニトロン概念図
  10. 10. ディープラーニングの 本質的進化は? 当時は今ほどはうまくいかなかった Dropout, LeRU (AutoEncoderはCNNでは使われない) などの技術的進化はあった …が本質的進化か? じゃあなにが本質的進化だったのか?
  11. 11. ⼤規模ネットワークと ⼤規模教師データ 実験できるネットワーク規模がぜんぜん違う 学習に使えるCPUパワーが桁違い SPARCstation20-61 (60MHz) : unixbench 10 Corei5 (1コア-2.6GHz) : unixbench 1000 ⼤量のタグ付き画像データが利⽤できる
  12. 12. 巨⼤なネットワークで ⼤規模データを 学習させてこその ディープラーニング
  13. 13. ⾼速化 学習には⾮常にCPUパワーが必要 結果を出すだけなら実は軽い 並列化と⼤変相性が良い マルチCPUやGPUを使って学習を⾼速化する
  14. 14. TensorFlowとは TensorFlowはGoogle製の機械学習ライブラリ Pythonから利⽤する 汎⽤のTensor(⾏列)演算ライブラリ マルチCPUやGPUをそのままで活⽤できる
  15. 15. Google Compute Engineとは Google Compute Engine(GCE)はGCP版のEC2 安い プリエンプティブでさらに安い(7割引き) 速い 最低10分で1分きざみ VMの起動時間が短い gcloudコマンドで操作出来るのがすごく良い
  16. 16. GCEと他との⽐較 サービス名 unixbench ⽉額 GCEスタンダード (n1-standard-1) 1640 $26 EC2 (m3.medium) 920 $26 Azure (Standard A1) 680 $29 EC2 (GPU+32CPU オンデマンド) $1872 GCE (32CPU ⾮プリエンプティブ) $622 (参考) http://www.apps-gcp.com/cloud-bench-20160705/
  17. 17. GCEは「Compute Engine」 と⾔うだけあって 計算⽤途と相性が良い
  18. 18. GCEを使えるようにする Googleアカウントの準備 Google Developer Consoleへのアクセス Compute Engineからプロジェクトの作成 住所⽒名やクレジットカード情報の登録
  19. 19. インスタンス⽣成時の注意点 ゾーン:us-east1-b usだと値段が安い マシンタイプ:vCPUx1 ($25.95/⽉) ブートディスク:Ubuntu 16.04 LTS TensorFlowが簡単に⼊る 可⽤性ポリシー:プリエンプティブ(オン) 24時間しかもたないインスタンスだが7割安!
  20. 20. インスタンスの⽣成 「作成」ボタンを押すと⽣成される だいたい20〜30秒ほどで起動 「接続」のカラムの「SSH」を押すとブラウザの別ウィ ンドウが開いてその中でSSHのコンソールが動く ユーザはGoogleアカウント名で勝⼿に作られるので注意
  21. 21. gcloudとは ローカルのコンソール上からGCEを操作出来るコマンド ツール vagrantでVMを扱っているような気軽さでGCEを使える ので⼤変便利 Linux/Mac/Windowsのどの環境からでも利⽤できる
  22. 22. gcloudコマンドの インストール 環境にあったファイルをダウンロードしてインストール $ wget https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-115.0. $ tar -zxf google-cloud-sdk-115.0.0-linux-x86_64.tar.gz $ google-cloud-sdk/install.sh $ source .bashrc
  23. 23. Googleアカウントのひも付け gcloudコマンドでどのGoogleアカウントに対して操作を ⾏なうかひも付ける ブラウザが開いてGoogleアカウント選択画⾯になる 選択するとそのアカウントとひも付け設定が保存 $ gcloud auth login
  24. 24. gcloudのデフォルト設定 gcloudコマンドで使うデフォルトのプロジェクトとゾー ン指定 $ gcloud config set project tfexample $ gcloud config set compute/zone us-east1-b
  25. 25. 稼働してるインスタンスの 確認 $ gcloud compute instances list NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS tensorflow-1 us-east1-b n1-standard-1 10.142.0.2 TERMINATE tensorflow-2 us-east1-b n1-standard-1 10.142.0.3 TERMINATE
  26. 26. gcloudコマンドでの インスタンスの稼働 GCEコンソール最終⾏の「同等の REST またはコマンド ライン」から「コマンドライン」を選択 「gcloudコマンドライン」が表⽰されるのでこれをコン ソールにコピペして実⾏ $ gcloud compute instances start tensorflow-1 $ gcloud compute instances stop tensorflow-1
  27. 27. gcloudコマンドからssh接続 現在のログイン名のユーザが勝⼿に作られます これは最初だいぶびっくりしますがGCEではそういうも んだ、と思うことにしました $ gcloud compute ssh tensorflow-1
  28. 28. 通常のsshコマンドで接続 「config-ssh」で現在起動しているインスタンスへのssh 接続設定が「.ssh/config」に作られる $ gcloud compute config-ssh FQDN名は【インスタンス名】.【ゾーン名】.【プロジェ クト名】 scpやansibleも普通に使える! $ ssh tensorflow-1.us-east1-b.tfexample
  29. 29. GCP操作アプリ Google Cloud Console スマホ⽤アプリからもGoogle Cloud Platformの操作が可 能 インスタンスの状況確認やスタート・ストップが可能 sshも可能だからトラブル発⽣時に出先から対応ができそ う
  30. 30. TensorFlowのインストール python環境を整える $ sudo apt-get install python-pip python-dev TensorFlowを⼊れる $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.9 $ sudo pip install --upgrade $TF_BINARY_URL
  31. 31. MNISTを学習させてみる チュートリアルのファイルを持ってくる $ git clone https://github.com/tensorflow/tensorflow $ cd tensorflow/tensorflow/g3doc/tutorials/mnist fully_connected_feed.py を修正 #from tensorflow.examples.tutorials.mnist import input_data #from tensorflow.examples.tutorials.mnist import mnist import input_data import mnist MNIST学習実⾏ $ python fully_connected_feed.py
  32. 32. ansibleで学習⾃動化 mnist.yml - hosts: targets user: tfuser tasks: - shell: python mnist/fully_connected_feed.py > mnist.log - fetch: src=mnist.log dest=logs hosts [targets] tensorflow-1.us-east1-b.tfexample tensorflow-4.us-east1-b.tfexample tensorflow-16.us-east1-b.tfexample ansibleで⼀気に実⾏ $ ansible-playbook -i hosts mnist.yml
  33. 33. Google様のマシンが ⾃分ちにある気分!
  34. 34. インスタンス毎の学習時間 ⽐較 TensorFlowのMNISTサンプル10,000epoch学習時間 CPU数 時間(秒) 倍率 1 59.207 1.0 4 36.877 1.6 16 26.778 2.2 そんなに画期的に速くはならない…
  35. 35. EC2のGPUインスタンスとの ⽐較 AWS GPUインスタンスでは7〜8倍になる やっぱGPUのほうが速い GCEはGPUインスタンスが「ない」
  36. 36. やっぱAWSのほうが いいんでは…?
  37. 37. Google Cloud Machine Learning (Cloud ML) スケーラブルな機械学習プラットフォーム TensorFlowを利⽤する GPUで⾼速化されると書かれている ただし、まだ「LIMITED PREVIEW」
  38. 38. Tensor Processing Unit (TPU) TPUはGoogleが機械学習専⽤に開発したチップ AlphaGoもTPUで動かしたらしい Cloud MLもTPUでサービスという記事もあったがほん と?
  39. 39. きっとCloud ML始まったら めちゃ速いはず! (…と期待)
  40. 40. まとめ 機械学習はとりあえずTensorFlowベースで書いとくのが 良さそう gcloudコマンドのおかげで⼿元に速いマシンがある気分 で学習させられる 早くCloud ML使えるようになるといいなあ

×