Aug 18, 2018

GCPUG BD & ML 2018

Google Cloud Next 2018 Extended BigData & ML Dayに行ってきました。前半はメモレベルですが今回のミートアップについて、後半はBQMLとAsterの簡単な比較について書いてみます。BigQueryでHardware Accelerationを使ってるのは初めて知ったんですが、結構驚きでした。

# BigQuery New Feature by satoluxx
BQML
- 今のところ線形回帰とロジスティック回帰のみが使用できる
本筋とは関係ないですが、モデルの説明を画面に保存できるの地味に凄い助かるやつですね...! Create Model文も自動で保存してくれていたりしたら言うことなしな気がします。

GIS
- PostGISで実装されている
- WKTとGeoJSON (ShapeFileは変換する必要あり)
- 現在はベーダだが可視化もできる

Clusterd Tables
- 今まではテーブルの分割は時間軸だったのに対し、任意のカラムでサブテーブルに分ける(パーティションのイメージ)

# Cloud TPU by kazunori_279
TPU
- John Hennessy:ソフトウェアだけで解決できる時代は終わりつつある → Domain Specific Hardwareが必要
- 実はBigQueryはHardware Accelerationを使っているので速い
- GPUは電力を食う、DCの費用の1/3~1/2は電力代とも言われている。これが理由で東京のDCはGPUを置かせてくれなかったりする
- GPUも並列とはいえCPUと同様の処理が動いている
- TPUはメモリへのアクセス回数を減らすことで性能および電力消費量を大幅に改善している
- Cloud TPU v2 の料金体系はNormal とPreemptible(優先度低)で値段差がある
- DAWNBenchでベンチマークおよびコストパフォーマンスが公開されている

TPU Pod
- MPIライクなものを使ってTPU同士で通信している(all reduce)
今まではParameter ServerとNodeはgRPCで通信している
- eBayの事例ではaccuracy +10%, 100x faster。試行錯誤の回数も増えるのでaccuracyも向上

# Auto ML by shuhei_fujiwara
Auto ML Vision
- Cloud Storageに画像をアップロードし、csv(path, label)を用意し、実行するとWebAPIが生えてくる

AutoML Natural Language
- CSVをアップロードする(文書, カテゴリ)

AutoML Translation
TMXファイルをアップロードする
English→Japneseは既にあるが、逆はまだ

学習後に学習過程の遷移やConfusionMatrix、間違った部分なども表示してくれる
- AutoMLのモデルダウンロードは時期が未定だがいずれ可能になる予定

モデルの作成の価格
- Auto ML Vision (20$/per)
- AutoML Natural Language (3$/per)
- AutoML Translation (76$/per)
VisionはNASNetがベースとなっている

~~~

次に、BQMLとAsterの簡単な違いについて見ていきたいと思います。Teradataの製品であるAsterもBQMLと同様にSQLで機械学習を行えます。現在BQMLは線形回帰とロジスティック回帰の2つのようですが、Asterはなななんと100種類以上もの関数が用意されていて、NeuralNetXGBoostなんかもサポートしています。各関数はJavaで書かれているのですが、足りない関数があれば自分で書いてUDFとしてインストールできるのが個人的には気に入っています。両者をシンタックスレベルで並べると以下のようになります。Aster側は見慣れていないとやや奇妙な印象を受けますね。BQMLはシンタックスから想像する限り、説明変数Numeric/Categoryは自動で判別してくれているのでしょうか...?もしそうだとしたら良いですね〜。

-- BQML (Train)
CREATE  `bqml_model` 
OPTIONS(model_type='logistic_reg') AS
SELECT
  label,
  os,
  is_mobile,
  country,
  pageviews
FROM
  `bigquery-public-data.google_analytics_sample.ga_sessions_*`;

-- BQML (Predict)
SELECT  *
FROM
  ml.EVALUATE(MODEL `bqml_codelab.sample_model`, (
SELECT
  label,
  os,
  is_mobile,
  country,
  pageviews
FROM
  `bigquery-public-data.google_analytics_sample.ga_sessions_*`;

-- Aster (Train)
SELECT * FROM GLM (
  ON (SELECT 1)
  PARTITION BY 1
  InputTable ('aster_train')
  OutputTable ('aster_model')
  InputColumns ('pageviews')
  CategoricalColumns ('os', 'is_mobile', 'county')
);

-- Aster (Predict)
 SELECT * FROM GLMPredict (
  ON aster_test
  ModelTable ('aster_model'')
  Family ('LOGISTIC')
  Link ('LOGIT')
);

ミートアップで紹介されていたリンクはこれから見ていくつもりです。
GCPUG http://gcpug.jp/
Google Cloud Platformのノウハウ https://github.com/gcpug/nouhau
Google Cloud Next 2018 まとめ https://github.com/gcpug/nouhau/issues/60