『スケーラブルデータサイエンス データエンジニアのための実践Google Cloud Platform』を読んだので, 概要と GCP のデータ分析を支えるサービスを整理しておきます。
本書は Google Certified Professional – Data Engineer を取得する際にも役立ちました。
『スケーラブルデータサイエンス』の概要
本書の原著は Google の Valliappa Lakshmanan 氏による『Data Science on the Google Cloud Platform Implementing End-to-End Real-Time Data Pipelines: From Ingest to Machine Learning』である。
機械学習の利用は身近となったが, データが大規模になるに連れて処理が難しくなる。GCP や AWS などのクラウド環境を利用することでスケーラブルな機械学習を実現することができる。
本書では, GCP でスケーラブルなデータ分析パイプラインを構築する例として, 米国運輸統計局 (BTS) から入手できる航空会社の運行データを用いて, フライトの到着遅延時間を予測するモデル構築を解説している。
運行データは安価なストレージサービスである Google Cloud Storage (GCS) に保存する。GCS に置くことで GCP の各種マネージドサービスから高速にアクセスすることができる。GCP Console からもアップロードできるが, gsutil コマンドラインツールを用いる方が手取り早い。
説明のためのダッシュボード
次に、ダッシュボードを作成する。この段階におけるダッシュボードの作成は, 探索的データ解析 (Exploratory data analysis; EDA) のためではなく, エンドユーザまたは意思決定者に向けた, 後ほど構築するモデルを説明するためである。この利点として, モデルの予測に説明する情報を付け加えることで共感が得られやすくなり建設的な改善案が得られる点を挙げている。
GCS にアップロードしたデータを Cloud SQL (マネージド MySQL) のテーブルにインポートする。 GCP の BI ソリューションである Google Data Studio (日本での名称はデータポータル) を用いてダッシュボードを作成する。Data Studio に類似した機能を有する商用の BI ツールとしては Tableau, AWS では Amazon QuickSight などがある。
イベントデータの取り込み
現実のデータは日々刻々と生成されるため, リアルタイムにデータを取り込み処理したい場合がある。本書では, 運行データセットのタイムスタンプを用いて擬似的にリアルタイムストリーミングを再現している。 イベントデータの取り込みは GCP のメッセージングサービスである Cloud Pub/Sub を用いる。
Apache Beam パイプラインのマネージド実行環境である Cloud Dataflow で, Cloud Pub/Sub からデータを受信し処理する。Dataflow ではウィンドウを用いたストリーミング集計を行い, 分析用に BigQuery に保存する。また, Data Studio で BigQuery をデータソースとすることでリアルタイム可視化を行う。
探索的データ解析
堅牢な統計モデルを構築する上でデータセットに対する理解を深めることが必要である。 大規模データセットに対する分析用途では, 高速なサーバレス型の列指向DBである Google BigQuery が向いている。
また, Jupyter などのノートブック環境は対話的に分析を行えるため EDA に向いている。GCP の Cloud Datalab は Jupyter のホスト環境で, その実装は OSS 化されている。Cloud Datalab から BigQuery へのアクセスは付属の datalab.bigquery が使える。
機械学習モデルの構築とデプロイ
機械学習モデル構築の段階では, 以下の2つの方法を紹介している。
- Cloud Dataproc (Hadoop/Spark) 上で Spark MLlib を用いた機械学習モデルの構築
- AI Platform (Cloud ML Engine) 上で TensorFlow を用いた機械学習モデルの構築
モデル構築後, デプロイのために Dataflow パイプラインに予測用の前処理を追加, 訓練したモデルをマイクロサービス化し, 締めくくりとしてリアルタイムデータに対するモデルの評価を行っている。
GCP のデータ分析を支えるサービス
本書で紹介された GCP のデータ分析系サービスを整理する。Cloud Bigtable や Cloud Spanner, Cloud Firestore, AutoML などは本書の流れからやや逸れるので省略する。
product | use-case | description | corresponding to AWS |
---|---|---|---|
Cloud Pub/Sub | イベントストリームの取り込み | フルマネージドのリアルタイムメッセージングサービス | Amazon Kinesis |
Cloud Dataflow | データパイプライン | フルマネージドのストリームデータ処理とバッチデータ処理に対応したサービス | – |
Google BigQuery | 大規模データのリアルタイム分析 | ANSI SQL を使用して PB 規模のデータを高速に分析できるサーバレス型クラウド DWH | Amazon Redshift |
Cloud Dataproc | スケーラブルな分散データ処理 (ETL/機械学習) | フルマネージドの Apache Hadoop と Apache Spark 環境 | Amazon EMR |
AI Platform | 機械学習モデルの開発 (TensorFlow, scikit-learn, XGBoost etc) | 機械学習の開発ライフサイクルをカバーしたプラットフォーム | Amazon SageMaker |
Google Data Studio | データの可視化と共有 | GCP 上の様々なデータソースに対応した BI ツール | Amazon QuickSight |
Cloud Pub/Sub
Cloud Pub/Sub はフルマネージドのメッセージングサービスである。
Publisher は Topic に対してイベントデータを送信, Subscriber は非同期に受信を行う。複数の Subscriber に対して最低1回のメッセージ配信を保証する。1回のみを配信を行うには Dataflow で重複削除を行う。また, 異なる Publisher からのメッセージの順序を維持するにはユーザ側で工夫が必要となる。
GCP でのリアルタイム分析では, Cloud Pub/Sub でデータを取り組み, Cloud Dataflow で ETL を行い BigQuery で分析というパターンがよく見られる。
Cloud Dataflow
Cloud Dataflow はデータパイプラインのフレームワークを提供するサービスである。
パイプラインは Apache Beam (Python/Java) で定義し, 同じコードでストリーミング処理とバッチ処理に対応できる。
また, ストリーミング処理時にも静的データを Side Input としてイベントデータと結合でき, 処理後には複数の Sink に出力することができる。ストリーミング処理での Dataflow での集計はタイムウィンドウでのストリーミング集計となる。
Google BigQuery
Google BigQuery は ANSI SQL を使用して TB から PB 規模のデータを高速に分析できるサーバレス型クラウド データウェアハウス (DWH) である。
列指向DB で列単位でデータ圧縮されるため, 高速な SELECT クエリの実行が可能で, 分析のユースケースに向いている。一方で, UPDATE, DELETE は非効率となる。BigQuery は様々なデータソースへのコネクタを用意している。
テーブルデータから機械学習モデルを構築できる BigQuery ML や, 地理空間分析を支援する BigQuery GIS などの機能もある。
Cloud Dataproc
Cloud Dataproc は Hadoop/ Spark の実行環境を提供する。オンプレミスの Hadoop クラスタの運用と以下の点で大きく異なる。
- 作業が完了したら Hadoop クラスタ自体を削除する
- HDFS でなく GCS を永続データの保存先とする
- Worker にプリエンプティブインスタンスを利用する
AI Platform
AI Platform は 機械学習ワークフロー (訓練, モデルのバージョン管理, デプロイ, オンライン予測, バッチ予測) をサポートするサービスである。
AI Platform のコンポーネントは以下である。
- トレーニング サービス
- 予測サービス
- Notebooks
- Data Labeling Service (β版)
- Deep Learning VM Image
AI Platform は GCP Console, gcloud コマンドラインツール, REST API で操作ができる。AWS の Amazon SageMaker 同様, 活発に機能追加されている印象。
Google Data Studio
Google Data Studio (日本での名称はデータポータル) は様々なデータソースに対応した BI ツールである。基本的なグラフやレイアウトに対応している。
以下の様々なデータソースをサポートしており, コーディング不要でデータを取り込める。
- Google マーケティング プラットフォーム サービス (Google 広告, アナリティクス, ディスプレイ&ビデオ 360, 検索広告 360 etc)
- Google の一般向けサービス (スプレッドシート, YouTube、Search Console etc)
- DB (BigQuery, Cloud SQL etc)
- Google Cloud Storage
- ソーシャル メディア プラットフォーム (Facebook, Reddit, Twitter etc)