cloud datalabとbigqueryを使ったアドホックデータ解析
TRANSCRIPT
Cloud DatalabとBigQueryを使ったアドホックデータ解析
gcp ja night #31 2016-01-21 Takashi Nishibayashi (@hagino3000)
1
最適化処理や機械学習を実装してアプリケーションに組みこむ !
実験・モデリング・実装 (多腕バンディットアルゴリズム/機械学習/最適化)
前処理 ログ収集
人間の意思決定をサポートするためのデータ分析 施策の効果検証・検定
主にこっち
Zucks AdNetworkにおける データ解析チームの仕事
We are hiring
• 広告リクエストに対して最も適切な広告を返す
• CTR (Click through Rate) の予測 • p(Click | Request, 広告枠, 広告キャンペーン)
• CVR (Conversion Rate) の予測
• p(Conversion | 広告枠, 広告キャンペーン)
• 最適な入札価格の決定
• 広告枠ごとのインプレッション(リクエスト)予測
• 異常枠の検知
• 広告配信システムのログを活用できる状態にする
今日の話• 広告配信システムのログをいい感じにBigQueryに流しこんでる
• AWS to GCP
• BigQueryに入れたデータを使ったアドホックな解析にCloud Datalabを使いはじめた
前処理
広告配信 サーバー
広告計測 サーバー
ログ
広告計測 サーバー
広告配信 サーバー
ログ
S3前処理
SNS トピック
SQS キュー
GCP
Cloud Storage
ログ
BigQuery
テーブル
テーブル
テーブル
配信システムAWS
通知
実験環境
予測 処理
予測 データ
Why BigQuery• Hadoopクラスタ持ってない
• まずはAdHocにデータを利用できる環境が必要
• 利用人数は数人
• 300GB/day 突っこめれば良い
• マネージドサービスなので運用が楽
• 安い (1TByteでStorage費用が20$/Month)
Data Load
• 配信システムのログがS3に配置されるので、S3からの通知をトリガーにGCSにコピー
• 1時間に1回ファイルをGCS上でまとめてBatch Load
• Stream Insertはお金がかかるので、速く欲しいログだけ対応する方針
• 今作るならEmbulkやCloud Dataflowを使うかも
Job管理• Luigiを使っている
• タスク間の依存性定義 (ロード → 前処理 → 集計 → xxx)
• 入出力対象の抽象化 (S3, GCS, BigQuery, Local File, etc.)
• リトライ/エラー通知
• モニタリング用UI
• 処理は全てPythonで記述
• http://qiita.com/hagino3000/items/b9a7761dad1f352ec723
チーム内での共有• Googleスプレッドシート + GAS
• クエリをスケジュール実行してグラフを作ったり
• クエリをセルに入力して実行できるシートをチームで共有
• GASいいよねー、みたいな話はいろんな人がしてる
• gcp ja night #28, #29 の資料を見ていただければ
re:dash• http://redash.io/
• KPI可視化やクエリ1発で終るような調べ物には便利
• 1分で使い始められる
• EC2, GCEのイメージが用意されている
• ちゃんと使うなら • TLS化 + Googleアカウント認証のみにする
About Cloud Datalab• Jupyter Notebookベースの対話環境をGCP上に立てられる
• AppEngine + Managed VM 上で動作
• Github上で開発が進んでいる
• https://github.com/GoogleCloudPlatform/datalab
対話環境を何に使っているか• データ調査・分析
• 実験
• 本に書いてあるコードを実行
• メモ
• 大抵の言語は動く
• https://github.com/ipython/ipython/wiki/IPython-kernels-for-other-languages
2014年~
• 共用のIPython Notebook (旧Jupyter) Server
• 毎日再起動 (生きているsessionを全クリア)
• よくノートが壊れて動かなくなる
• ユーザーアカウントという概念は無し
2015年~
• 各自Jupyter Notebook on ローカルマシン
• Githubにノートをpushして共有
• BigQueryへのアクセス
• BigQuery-Python, pandas.io.gbq
2016年~• Cloud Datalab上でノートをコミットして共有
• 特に再起動とかしていない
• 再起動したい時はvmにsshしてdocker restart
• BigQueryへのアクセスは
• import gcp.bigquery as bq
• Good
• 30秒で使いはじめられる • GCPプロジェクトのアカウントが使える • ノートの共有が前よりは楽にできる • カスタマイズ欲が無くなる
• Bad • 他人の変更を取りこむのが割と面倒 • 数式がまだ使えない (masterブランチでは修正済み) • 既存ノートが動かなかったりする
Tips• Charting APIsあたりを全て覚えなくても良い
• 今まで通りmatplotlib, Seaborn を使えばいい
• 地図へのプロットはCharting APIが楽
• 環境構築はノートにしておく
• インスタンスタイプの変更はLaunchページのクエリパラメータで
• http://datalab.cloud.google.com?cpu=2&memorygb=7.5&diskgb=200