「夏真っ盛り!Spark + Python + Data Science祭り」を開催しました&Ibisを紹介しました #summerDS
2016/07/25に「夏真っ盛り!Spark + Python + Data Science祭り」を開催しました。
connpass.com今回はClouderaに入って初めてのコミュニティイベントということでしたが、なんと400人を超える応募をいただいてとてもありがたい限りです。 会場をご提供いただいたDMM.comラボ様、発表いただいたサイバーエージェントの内藤さん、DMM.comラボの加嵜さん、LTの皆様ありがとうございました。
togetter.compandasを大規模データにつなぐIbis
Ibis: すごい pandas ⼤規模データ分析もらっくらく #summerDS from Cloudera Japan www.slideshare.net
Ibisはpandasの作者でもある Wes McKinney(@wesmckinn) の作っているライブラリです。 ひとことで言うと、pandasのプログラマブルな処理を大規模データにもできるようにします。 大規模データは高速なSQLエンジンにまかせて、pandas likeなDSLでpandasと連携できるようにしており、データがTB以上のデータに対してもSQLを書かずに試行錯誤できます。
なお、日本語の情報はかなり少ないのですが1 、こちらのブログが参考になると思います。 もし、Impalaを試すのであればQuick Start VMか、Cloudera Directorを使うとブラウザでポチポチするだけでAWS, GCP, Azureに簡単にImpalaクラスターが立てれるのでおすすめです。Director導入方法はこちらが参考になります。
Ibisの詳細は資料を見ていただければと思いますが、いくつか補足をしたいと思います。
SQLじゃなくてプログラマブルなのは何が嬉しいの?
pandasをお使いの方はわかると思いますが、SQLに比べると試行錯誤がやりやすいと思います。例えば、SQLの途中結果を変数に格納できるので、途中までの処理は共通でそこから先を複数パターン作るというのも同じ変数に格納して、後段のメソッドチェーンを変えれば楽にできるというメリットが有ります。使っている感覚はRailsのActive Recordみたいなイメージです。
Sparkより7倍速いのは嬉しいの?
大事なのは15TBのデータを4.4秒で処理できる2 というスピード感です。処理を投げて帰ってくるまでの時間が短いと、思考の中断が減ります。 例えば、ビルドやテストに時間がかかってコーヒーをいれにいく、みたいな経験はあるんじゃないかと思います。その断絶がなくなるので、考えを継続できますし、ポッと思いついたことをどんどん試行錯誤できます。
Sparkとの住み分けは?
Ibisは、WesがPythonでend to endでPythonを使って分析をしたいという想いでスタートしています。 個人的にはJupyterとともに対話的に試行錯誤をする強力なツールになっていると思います。 もともとImpalaとPython/pandasをつなぐものとしてスタートしたのですが、RedshiftやPrestoなども今後対応していきたいということも言及されています。 なので、プロトタイピングにJupyterとIbisを使うというのが良いと思います。プロトタイプ後にSparkSQL3 でバッチとして安定化をはかるということもできるでしょう。
もう一つの方向性としては、NetflixがグローバルモデルをSparkで、国・地域のモデルをRで学習しているように、大規模な機械学習はSpark + MLlibで、絞った後のデータはIbis + scikit-learnでみたいな使い分けは可能だと思います。
サイバーエージェント内藤さん: Amebaにおけるレコメンデーションシステムの紹介
Amebaにおけるレコメンデーションシステムの紹介 from cyberagent www.slideshare.net
Amebaでの協調フィルタリングによるHBaseを使ったリアルタイムレコメンドの話。 Hadoopスタックだとリアルタイム性を出すのにはHBaseを使うのが多いのですが4 、更にClick数を取得してバンディットアルゴリズムも使っているというのは凄いですね。
単純なA/Bテストをするという話はDMM.comラボの加嵜さんもお話されていましたが、バンディットアルゴリズムを組み合わせることで、レコメンド結果が複数のロジックの中でも良い物に動的に改善されていくという仕組みが入っています。 僕個人としてはこうした取り組みを聞いたことがなかったので、とても驚きました。
DMM.comラボ加嵜さん:Sparkを活用したレコメンドエンジンのパフォーマンスチューニング&自動化
Sparkを活用したレコメンドエンジンのパフォーマンスチューニング&自動化 from knagato www.slideshare.net
チューニングの話もインパクトが大きかったですが、jsonで「レシピ」を書けば、自分のサービスのレコメンドモデルができるという話はとても驚きました。 これを使えば、レコメンドに詳しくない人でも簡単にサービスに導入できそうです。 おそらく、ログフォーマットをきちんと統一して横展開をしているのでしょうね。
LT
horiken4 さん:初めてのSparkでハマったこと
Google Data ProcでSparkを使ったら/tmpにjarが貯まるなど、いろいろハマった話を紹介いただきました。
uryyyyyyyさん:EMR上でPython3系でpysparkする話
qiita.comEMRにAnacondaをいれてPySparkでモデルを作る話でした。逆質問でJuliaを使ってると答えた人が2人くらいだったとのことで寂しかったです。
suthio さん:Sparkで実装しているレコメンドエンジンの基本的なパフォーマンスチューニング について
DAGを見よう!という話でした。そして、ポケモンGO仲間を募集しているとのことです。
終わりに
やはり、自社で手を動かして取り組まれているという話は、様々な知見が含まれていてとても楽しかったです。 AmebaのHBaseを使ったリアルタイムレコメンド+バンディットアルゴリズムという構成や、DMM.comラボさんのレコメンドの「レシピ」を書くだけで新規サービスのレコメンドモデルができるという話は衝撃的でした。
自分がホストしたイベントの中では過去最大の募集人数だったのですが、大盛況のうちに終わりました。ご協力・ご参加いただいた皆様ありがとうございました。 今回参加できなかった方もたくさんいらっしゃると思いますので、また次回もこういったイベントをできればと考えています。 乞うご期待ください。
しかし、日本でIbisというと某研究会しか出てこないので非常につらい ↩︎
http://blog.cloudera.com/blog/2016/02/new-sql-benchmarks-apache-impala-incubating-2-3-uniquely-delivers-analytic-database-performance/ ↩︎
こちらもIbisのスコープに入っています ↩︎
リクルートさんもHBaseを使ったリアルタイムレコメンドをしています ↩︎