Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

2016/7/23のGCPUG信州 キックオフ勉強会での発表内容。
TensorFlowを使ったディープラーニングの学習に、GCEをgcloudコマンドから使うことで、Googleのマシンが手元にあるような感覚で安く便利に使うことが出来るよという紹介。

SATOH Kiyoshi

March 18, 2022
Tweet

More Decks by SATOH Kiyoshi

Other Decks in Technology

Transcript

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

  2. ⾃⼰紹介 さとうきよし 有限会社ジーワークス ⽩⾺在住

  3. ニューラルネット(NN) との関わり 今はやりのディープラーニングは第3次ブーム 第2次ブームのバックプロパゲーションの頃にニューラル ネットワークやりたくて⼤学に⼊る ⼤学でスキーにはまり研究には打ち込まず⽩⾺に移住し て現在に⾄る

  4. こんなことを話します Google Compute Engine(GCE)でTensorFlowを使うと gcloudコマンドのおかげで Googleの速いマシンが⼿元にある気分で使えるよ

  5. ディープラーニングを すごくざっくり説明 ディープラーニングはすごく多層でも学習できる バックプロパゲーション バックプロパゲーションは多層でも学習可能な パーセプトロン パーセプトロンは1層だけのニューラルネット

  6. パーセプトロンてなに? ニューロンという神経細胞モデルで脳をモデル化 最初期のニューラルネットワーク 基本的な学習⽅法はディープラーニングもだいたい同じ

  7. バックプロパゲーション パーセプトロンを多層にしても学習可能にした 教師信号が出⼒層から⼊⼒層へ向かって伝搬していくの でバックプロパゲーションと呼ばれる バックプロパゲーション概念図

  8. ディープラーニング バックプロパゲーションを単に多層にしてもうまく学習 が収束しなかった 技術的⼯夫により超多層でも収束するようになった CNN(畳み込みNN)は画像認識でよく使われている ディープラーニング(CNN)概念図

  9. ネオコグニトロン 第2時ブームの時すでに存在してた多層NN CNNの先祖と⾔われている ネオコグニトロンと現在のCNNの違いは? 実はほとんど違いがない ネオコグニトロン概念図

  10. ディープラーニングの 本質的進化は? 当時は今ほどはうまくいかなかった Dropout, LeRU (AutoEncoderはCNNでは使われない) などの技術的進化はあった …が本質的進化か? じゃあなにが本質的進化だったのか?

  11. ⼤規模ネットワークと ⼤規模教師データ 実験できるネットワーク規模がぜんぜん違う 学習に使えるCPUパワーが桁違い SPARCstation20-61 (60MHz) : unixbench 10 Corei5

    (1コア-2.6GHz) : unixbench 1000 ⼤量のタグ付き画像データが利⽤できる
  12. 巨⼤なネットワークで ⼤規模データを 学習させてこその ディープラーニング

  13. ⾼速化 学習には⾮常にCPUパワーが必要 結果を出すだけなら実は軽い 並列化と⼤変相性が良い マルチCPUやGPUを使って学習を⾼速化する

  14. TensorFlowとは TensorFlowはGoogle製の機械学習ライブラリ Pythonから利⽤する 汎⽤のTensor(⾏列)演算ライブラリ マルチCPUやGPUをそのままで活⽤できる

  15. Google Compute Engineとは Google Compute Engine(GCE)はGCP版のEC2 安い プリエンプティブでさらに安い(7割引き) 速い 最低10分で1分きざみ

    VMの起動時間が短い gcloudコマンドで操作出来るのがすごく良い
  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. GCEは「Compute Engine」 と⾔うだけあって 計算⽤途と相性が良い

  18. GCEを使えるようにする Googleアカウントの準備 Google Developer Consoleへのアクセス Compute Engineからプロジェクトの作成 住所⽒名やクレジットカード情報の登録

  19. インスタンス⽣成時の注意点 ゾーン:us-east1-b usだと値段が安い マシンタイプ:vCPUx1 ($25.95/⽉) ブートディスク:Ubuntu 16.04 LTS TensorFlowが簡単に⼊る 可⽤性ポリシー:プリエンプティブ(オン)

    24時間しかもたないインスタンスだが7割安!
  20. インスタンスの⽣成 「作成」ボタンを押すと⽣成される だいたい20〜30秒ほどで起動 「接続」のカラムの「SSH」を押すとブラウザの別ウィ ンドウが開いてその中でSSHのコンソールが動く ユーザはGoogleアカウント名で勝⼿に作られるので注意

  21. gcloudとは ローカルのコンソール上からGCEを操作出来るコマンド ツール vagrantでVMを扱っているような気軽さでGCEを使える ので⼤変便利 Linux/Mac/Windowsのどの環境からでも利⽤できる

  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. Googleアカウントのひも付け gcloudコマンドでどのGoogleアカウントに対して操作を ⾏なうかひも付ける ブラウザが開いてGoogleアカウント選択画⾯になる 選択するとそのアカウントとひも付け設定が保存 $ gcloud auth login

  24. gcloudのデフォルト設定 gcloudコマンドで使うデフォルトのプロジェクトとゾー ン指定 $ gcloud config set project tfexample $

    gcloud config set compute/zone us-east1-b
  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. gcloudコマンドでの インスタンスの稼働 GCEコンソール最終⾏の「同等の REST またはコマンド ライン」から「コマンドライン」を選択 「gcloudコマンドライン」が表⽰されるのでこれをコン ソールにコピペして実⾏ $ gcloud

    compute instances start tensorflow-1 $ gcloud compute instances stop tensorflow-1
  27. gcloudコマンドからssh接続 現在のログイン名のユーザが勝⼿に作られます これは最初だいぶびっくりしますがGCEではそういうも んだ、と思うことにしました $ gcloud compute ssh tensorflow-1

  28. 通常のsshコマンドで接続 「config-ssh」で現在起動しているインスタンスへのssh 接続設定が「.ssh/config」に作られる $ gcloud compute config-ssh FQDN名は【インスタンス名】.【ゾーン名】.【プロジェ クト名】 scpやansibleも普通に使える!

    $ ssh tensorflow-1.us-east1-b.tfexample
  29. GCP操作アプリ Google Cloud Console スマホ⽤アプリからもGoogle Cloud Platformの操作が可 能 インスタンスの状況確認やスタート・ストップが可能 sshも可能だからトラブル発⽣時に出先から対応ができそ

  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. 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. 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. Google様のマシンが ⾃分ちにある気分!

  34. インスタンス毎の学習時間 ⽐較 TensorFlowのMNISTサンプル10,000epoch学習時間 CPU数 時間(秒) 倍率 1 59.207 1.0 4

    36.877 1.6 16 26.778 2.2 そんなに画期的に速くはならない…
  35. EC2のGPUインスタンスとの ⽐較 AWS GPUインスタンスでは7〜8倍になる やっぱGPUのほうが速い GCEはGPUインスタンスが「ない」

  36. やっぱAWSのほうが いいんでは…?

  37. Google Cloud Machine Learning (Cloud ML) スケーラブルな機械学習プラットフォーム TensorFlowを利⽤する GPUで⾼速化されると書かれている ただし、まだ「LIMITED

    PREVIEW」
  38. Tensor Processing Unit (TPU) TPUはGoogleが機械学習専⽤に開発したチップ AlphaGoもTPUで動かしたらしい Cloud MLもTPUでサービスという記事もあったがほん と?

  39. きっとCloud ML始まったら めちゃ速いはず! (…と期待)

  40. まとめ 機械学習はとりあえずTensorFlowベースで書いとくのが 良さそう gcloudコマンドのおかげで⼿元に速いマシンがある気分 で学習させられる 早くCloud ML使えるようになるといいなあ