Google機械学習活用勉強会レポート

はじめに

AIシステム部・AI研究開発グループの森と申します。この4月にDeNAに転職し、現在は主に画像や音声に関するDeep Learningの研究開発に従事しています。

DeNAでは、機械学習・人工知能(AI)技術を積極的に事業活用していく方針が全社的に打ち出されており、その一環として、エンジニアを対象にしたGoogle社様による勉強会が定期的に開催されています。

8月に行われた1回目の勉強会では、

  • Googleの機械学習プロジェクト
  • 機械学習をビジネスに応用する際のポイント
  • Google Cloud Platformで提供されている機械学習APIの概要

などをGoogle Cloud ソリューションアーキテクトの中井悦司さんに講義していただきました。

リンク:Google機械学習系API勉強会レポート https://engineer.dena.jp/2017/08/googleapi.html

2回目である今回の勉強会では、前回同様に中井悦司さんにお越しいただき、Google Cloud Platform (GCP) が提供する機械学習サービスをより実践的な面から講義していただきました。本勉強会には、DeNAのエンジニアを中心に約80名が参加しました。

IMGP2658.JPG

勉強会の様子

GCPが提供する機械学習サービス

1回目の勉強会では、Cloud Vision API、Cloud Speech API、Cloud Natural Language APIなど学習済みモデルのWeb APIが中心的な話題でした。

google_ai_api5.pngのサムネール画像

講演資料より

今回は、学習済みモデルのAPIではなく、TensorFlowとCloud Machine Learning (ML) Engineを用いて、データからオリジナルモデルを学習し、新しいAPIをデプロイするまでの流れを一通り解説していただきました。以後、演習で使用した各サービスを簡単にレポートします。

End_to_End_Process_of_Machine_Learning_with_Structured_Data.png

講演資料より

データ

BigQueryで公開されているOpen Natality Datasetを使いました。母親のさまざまな属性(人種、年齢など)と生まれた赤ちゃんの体重に関連する表形式のデータです。このデータを用いて母親の属性から赤ちゃんの体重を予測する回帰モデルをGCPのサービスを組み合わせて実現するのが目的です。

Cloud Datalab

Cloud Datalabは、データの探索、分析、可視化、機械学習モデル構築を行うためのインタラクティブツールです。Pythonのデータ分析環境として有名なJupyter Notebookと同じユーザインタフェースでGCP上のさまざまなサービスと連携することができます。今回は、BigQueryからのデータ収集、可視化による統計分析、データ前処理、機械学習モデル構築まですべてCloud Datalab上で実行しました。

datalab.png

演習に用いたノートブック

BigQuery

BigQueryは、ペタバイト級のデータを格納できるデータウェアハウスサービスです。講義ではOpen Natality Datasetの公開データベースからSQLを使って500万件のデータを収集しました。BigQueryの検索結果は、Pythonのデータ解析ライブラリであるpandasのDataFrame形式に変換できるため高度な統計分析や可視化が簡単にできます。

Cloud Dataflow

Cloud Dataflowは、パイプライン処理によってデータ前処理ができるサービスです。今回は、BigQueryから収集したデータに対して、(1) 属性の変換 (2) 訓練データとテストデータへの分割 (3) CSV形式でCloud Storageに格納という一連のパイプラインを実行しました。

dataflow.png

講演資料より

Cloud Dataflowは、処理するデータ量によって自動的にインスタンスが立ち上がるオートスケールに対応しており、何も意識することなく高速にデータ処理ができます。実際に背後でGoogle Compute Engineのインスタンスが自動的に立ち上がる様子も確認できました。

TensorFlow

TensorFlowは、Googleが提供している機械学習ライブラリです。DeNAのAI開発部でも多くのエンジニアが日常的に活用しています。

今回の勉強会では、カテゴリ変数(母親の人種など)と量的変数(母親の年齢など)を組み合わせたモデルを作るために tf.contrib.learn.DNNLinearCombinedRegressor (Wide & Deep Model) を使いました。このような複雑なモデルもTensorFlowのhigh-level APIを活用すると簡単に書けます。

tensorflow.png

講演資料より

Cloud Machine Learning Engine

Cloud DataLab上では小規模データによるテストまで行い、本番の大規模データによるモデル学習は、Cloud ML Engineを使いました。

Cloud ML Engineは、TensorFlowで構築したモデルの訓練、訓練したモデルのデプロイ、APIの提供までGCP上でシームレスに実行できるサービスです。Experiment APIを用いてモデル・訓練データ・テストデータ・評価指標を設定することで分散環境で高速にモデル学習ができます。

学習経過のログはCloud Storageに保存されるため、Cloud DataLabからTensorboardを呼び出すことで学習経過を可視化することもできます。

tensorboard.png

Tensorboardの出力例

学習済みモデルも同様にCloud Storageに保存されます。この学習済みモデルはCloud ML EngineのWebインターフェイスまたはgcloudコマンドを使うことで簡単にデプロイできます。デプロイしたモデルは、Web APIとして提供されるのでアプリケーションからjson形式のリクエストを送ることで利用できます。Cloud ML Engine上ではリクエストの頻度などAPIの使用状況も確認できます。

Google App Engine

Google App Engineを使うことで、デプロイしたWeb APIを利用するWebアプリケーションが構築できます。今回は、母親の情報から赤ちゃんの体重を予測するアプリケーションを作成しました。

application.png

完成したWebアプリケーション

ハンズオン

後半のハンズオンでは各参加者にGCPプロジェクトのアカウントが配布され、前半の講義で習った内容を実際に手を動かして体験することができました。弊社のインフラ基盤チームとGoogleエンジニアによるサポートやSlackでの情報交換により演習を円滑に進めることができました。

まとめ

今回の勉強会では、Google Cloud Platform上で、機械学習アプリケーションを構築する流れを一通り体験することができました。

これまでオンプレミス環境でWebサーバを立てて、モデルをアップロードして、アプリケーションを書いてという流れは一通り経験していましたが、これらをすべてクラウド上でかつ簡単な操作で実現できることに驚かされました。

現在、AIシステム部では、さまざまな機械学習・AI案件に取り組んでおり、迅速なサービス開発・デプロイが求められることが多くなっています。今後は、Google Cloud PlatformとCloud ML Engineを積極的に活用して効率的にサービス展開していきたいと考えています。

より深く理解するために

講師の中井さんからGCPをより深く理解するためのリソースをご紹介いただきました。

GoogleCloudPlatform / training-data-analyst https://github.com/GoogleCloudPlatform/training-data-analyst
今回の演習で使ったGithubのリポジトリです。今回の演習では blogs/babyweight を使いました。

データサイエンスに関する初心者向けの参考書 http://enakai00.hatenablog.com/entry/2017/02/20/124112
中井さんのブログ記事です。

Data Engineering on Google Cloud Platform https://www.coursera.org/specializations/gcp-data-machine-learning
Courseraが提供している有料のコースです。今回の勉強会の内容をすべて含んでいます。

ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る