*

機械学習最前線!Cloud Machine Learning を始めてみた!

公開日: : 最終更新日:2017/02/19 投稿者: GCP, 機械学習 , ,


最近、機械学習・深層学習というワードをよく耳にするようになりましたね。機械学習は知っているけど、実際に使ったことは無いという方もいるのでは無いでしょうか。昨年、Googleから機械学習のためのクラウド サービスが発表されました。それが、Google Cloud Machine Learningです。

Google Cloud Machine Learning は、サイズを問わず、あらゆるデータの機械学習モデルを簡単に構築できるマネージド プラットフォーム(Google Cloud Platformで提供)です。Google Cloud Machine Learning(以下Cloud ML)の裏では、Googleが開発した機械学習ライブラリであるTensorFlowが使われています。しかし、TensorFlowや機械学習の知識が無くても、Cloud MLは簡単に試すことができます。

今回は、機械学習のチュートリアルでよく使われるMNISTを使った画像分析をCloud MLで実行したいと思いますMNISTは、手書き数字の画像データと、正解のラベルが入ったデータセットです。このデータセットを使って機械学習モデルをトレーニングさせます。すると機械学習モデルは、手書き数字画像がどの数字を表すかを予測できるようになります。トレーニング用のスクリプトやデータセットはすでに用意されているので、コマンドを実行していくだけで完了です。ぜひお試しください。

※Cloud MLは現状ベータ版ですので、仕様が変更される可能性がありますのでご注意ください。

MNISTは、上の画像のような手書き数字の画像で構成され、それぞれに正解ラベルが割り当てられています。(MNIST For ML Beginnersより引用)

Google Cloud Machine Learning とは

Cloud MLとは、Googleが自社で使っているクラウド機械学習機能を一般ユーザーが利用できるようにしたサービスです。(2017年2月現在、ベータ版として提供されています。)

モデルの構築には、Google フォトから Google Cloud Speech まで多くの Google プロダクトを支えている強力な TensorFlow フレームワークを使用しています。Google のグローバルな負荷分散サービスと統合しているため、機械学習アプリケーションを自動的にスケーリングでき、全世界のユーザーに提供できます。

Cloud Machine Learning の料金

Cloud MLでは、モデルのトレーニングや予測の実行に対して料金が発生します。ただし、クラウド内の機械学習リソースの管理は無料で行うことができます。各アクションの料金詳細を後に記述します。

アクション 米国 ヨーロッパ/アジア
モデル トレーニング ML トレーニング ユニットごとに1時間あたり $0.49 ML トレーニング ユニットごとに1時間あたり $0.54
バッチ予測 予測1,000回あたり $0.10、プラス1時間あたり $0.40 予測1,000回あたり $0.11、プラス1時間あたり $0.44

※ここに記載されている費用の他に、Cloud ML のライフサイクルの間、モデルやリソースを Google Cloud Storage バケットに保存する必要があります。たとえば、モデルをトレーニングする際のトレーナー パッケージの投稿や、バージョンをデプロイする準備が完了したときのモデルファイルの保存などが該当します。また、トレーニングやバッチ予測の出力も Cloud Storage バケットに保存されます。いずれのケースでも、Cloud ML に関して長期的な保存は不要です。オペレーションが完了したら、すぐにファイルを削除できますのでよほど大規模に利用しない限りは費用面で大きな負担にはならないでしょう。

Cloud ML の トレーニング料金

MLトレーニングユニット

ユーザーは、ジョブをトレーニングする際に使用する処理クラスタのタイプを調整できます。簡単な方法として、「スケール階層」という事前に定義された構成の中から 1 つを選択することもできます。各スケール階層は、料金の基準となる ML トレーニング ユニット数が異なります。

スケール階層 ML トレーニング ユニット
BASIC 1
STANDARD_1 10
PREMIUM_1 75
CUSTOM 構成によって変わります。

 

トレーニング料金は、以下の様に計算されます。

以下に例を示します。

米国に住むデータ科学者が、STANDARD_1 スケール階層を選択して、トレーニング ジョブを実行したとします。このジョブに 15 分かかりました。

このジョブの料金は、総額 $1.23 となります。

Cloud ML の 予測料金

バッチ予測

バッチ予測では、予測回数(※1)と処理時間(※2)に対して料金が発生します。

リージョン 標準価格 大量利用割引価格(※3)
米国 予測 1,000 回あたり $0.10
プラス 1 ノード時間あたり $0.40
予測 1,000 回あたり $0.05
プラス 1 ノード時間あたり $0.40
ヨーロッパ/アジア 予測 1,000 回あたり $0.11
プラス 1 ノード時間あたり $0.44
予測 1,000 回あたり $0.05
プラス 1 ノード時間あたり $0.44

※1 予測回数は 1 か月ごとに累積され、料金はセントの単位に四捨五入されます。
※2 処理を実行すると、トレーニング ジョブごとに分単位で課金されます。最低料金として 10 分間分の料金が必ず発生します。
※3 大量利用割引価格は、その月のリクエストが 1 億回に達した後から適用されます。

オンライン予測

Cloud ML の他の機能はベータ版ですが、オンライン予測サービスはアルファ版機能として提供されます。オンライン予測がアルファ版の間は、この機能に限り無料でご利用いただけます。(2017年2月現在)

実際にCloud MLを動かしてみる

では、実際にCloud MLを動かしてみましょう。Cloud MLの操作は主にシェル上で行います。ローカル環境でも実行できますが、ローカル環境にソフトウェアをインストールする必要があります。クラウド環境で実行できるCloud Shellをお勧めします。今回はCloud Shellを使ってCloud MLを動かして行きましょう。実行の手順は以下の通りです。

  1. Cloud MLの実行に必要な環境を揃える
  2. トレーニングを行う
  3. モデルを作成する
  4. 手書き数字を予測させる

Cloud MLの実行に必要な環境を揃える

最初に行うのは、プロジェクトの設定と必要なファイルのインストールです。

必要なAPIを有効にする

メニューバーから「API Manager」を選択し、以下のAPIを有効にします。

(既に有効になっていれば、変える必要はありません)

  • Cloud Machine Learning API
  • Compute Engine API
  • Cloud Logging API
  • Cloud Storage API
  • Cloud Storage JSON API
  • BigQuery API

環境設定をする

プロジェクトの設定が終わったら、Cloud Shell上で環境設定を行います。

Cloud Shellを開くには、コンソール画面右上のアイコンをクリックします。

使用環境を確認する

インストールが完了したら以下のコマンドを実行し、適切な環境が設定されているかを確認します。

Success! Your environment is configured correctly.と表示されていれば正常にインストールされています。

Cloud ML プロジェクトを初期化する

Cloud MLがGoogle Cloudプロジェクト内のリソースにアクセスすることを許可します。

Cloud Storage上にバケットを追加する

Cloud MLは、モデルのトレーニングやバッチ予測の間にデータを読み書きするため、Cloud Storage のロケーションにアクセスする必要があります。Cloud StorageにCloud ML用のバケットを追加しましょう。名前は何でもいいですが、今回はプロジェクト名に「-ml」を付加したバケット名を設定します。

※バケットのリージョンは、Cloud MLのジョブを実行するリージョンと同じリージョンを選択してください。また、マルチリージョン(usなど)ではなく、単一のリージョン(us-central1など)を選択してください。

以上が完了したら、Cloud MLの準備は完了です。

トレーニングする

Cloud MLの準備が完了したら、機械学習モデルを作成するためのトレーニングを行います。トレーニングの実行手順は以下の通りです。

  1. ローカルでトレーニングできるかを確認する
  2. クラウド上にトレーニング スクリプトを送信する

 

ローカルでトレーニングする

クラウド上でのトレーニングの前に、ローカルでトレーニングができるかを確認しておきます。通常はデータセットの小さなサンプルを用意してトレーニングします。しかし、今回は70,000枚ほどの小さなデータセットを使います。なので、そのままのデータセットを使ってトレーニングします。

※この作業は必須ではありませんので、スキップしても構いません。

クラウド上でトレーニングする

ローカルでのトレーニングが完了したら、トレーニング ジョブの送信を行います。

ジョブの進行状況を確認し、終了するのを待ちます。

ジョブが完了すると、state: SUCCEEDED と表示され、ジョブ一覧に新しいジョブが追加されます。

Cloud Storageを見ると、作成したバケットにジョブ名と同じ名前のディレクトリが追加されています。

モデルを作成する

モデルを作成する方法は2通りあります。

Cloud Shellで作成する

GCPコンソールで作成する

GCPのコンソール上でモデルとバージョンを作成することも可能です。

 

  1. メニューから、[機械学習] > [モデル]を選択します。
  2. [モデルを作成]をクリックします。
  3. モデル名を入力します。
  4. [作成] をクリックします。
  5. モデル一覧画面に戻り、新しいモデルの名前をクリックします。
  6. [+ バージョンを作成] をクリックし、名前とソースを入力します。(ソースには${TRAIN_PATH}/model/を入力)
  7. [作成] をクリックし、モデル一覧画面に戻ります。

手書き数字を予測させる

手書き数字の識別パターンを学習したモデルが作成されました。これで、手書きの数字画像がどの数字を表しているのかをモデルに予測させる準備ができました。予測には作成したモデルと、予測させる画像データを使います。予測用のデータはJSONファイルとして用意されています。中身を少し見てみましょう。

image属性には、浮動値のリストとして手書き数字の画像データ(モデルに予測させるもの)が含まれています。key属性には、JSON ファイル中の画像のインデックスが含まれています。

上記のデータを画像に変換したものがこちらです。これをモデルがどう識別するかを見ていきましょう。

オンライン予測サービスの使用

以下のコマンドを実行して、Cloud ML オンライン予測サービスに予測リクエストを送ります。モデル名・JSONファイル名を指定します。

予測完了後の画面がこちらです。上の手書き画像と比較してみましょう。

最初の予測以外全て正解しています。10個中9個正解しているので、識別精度は9割といったところでしょうか。

今回は70,000枚ほどの小さなデータセットでトレーニングしました。もっと大きなデータセットでトレーニングすれば、精度が上がるかもしれません。

最後に一言

いかがでしたでしょうか。機会学習は奥が深く、なかなか始めるのは難しいと思いますが、この記事をきっかけに機械学習に興味を持ってもらえたら幸いです。

このブログでは、機械学習に止まらずGCPに関する情報を発信してまいりますので、引き続きapps-gcpをよろしくお願いします。また、弊社クラウドエース(Cloud Ace)では、GAEの受託開発、クラウドや機械学習に関するお悩み・ご相談をお受けしておりますので、お気兼ねなくお問い合わせください。

関連記事

2015/01/29 GCE vs AWS ベンチマーク

2015/01/29 GCE vs AWS ベンチマーク 本シリーズでは定期的にGCEとEC2のベ

記事を読む

Prediction API入門(前編)

データサイエンスとGoogle Prediction API みなさん、こんにちは。 ここ最

記事を読む

2015/06/17 GCE vs AWS ベンチマーク

2015/06/17 GCE vs AWS ベンチマーク 本シリーズでは定期的にGCEとEC2のベ

記事を読む

GAE/GOでVideo Intelligence APIを操作してみた!!〜事前準備編〜

先週のGCP Next 17’でGoogleから新しい機械学習APIが発表されました!その名

記事を読む

新しいRPCフレームワーク、gRPCをGoで試してみる。

  みなさん、今年の2月末にGoogleが発表したgRPCをご存知でしょうか?gRP

記事を読む

2016/08/12 GCE vs AWS vs Azure ベンチマーク

2016/08/12 GCE vs EC2 vs Azureベンチマーク 本シリー

記事を読む

S3からGCSへ簡単にファイル移行する方法

はじめに クラウドという言葉が当たり前になってきている現在、ファイルサーバは自前で持つ時代から、サ

記事を読む

GCP愛を語る

RGCP(GCP好き以外お断り) 技術的な話ばかりの中のAdventCalendarですが、本

記事を読む

2016/07/26 GCE vs AWS vs Azure ベンチマーク

2016/07/26 GCE vs EC2 vs Azureベンチマーク 本シリ

記事を読む

PaaS最前線!たったの15分でできるGAE/GO入門!

はじめに 2015年7月ついにGoogle App EngineのGO言語正式サポートが決定しまし

記事を読む

PAGE TOP ↑