こんにちは、データアナリストの青木とエンジニアの樋口です。
引き続き、Spark Summit 2017 San Fransiscoの記事です。Keynoteやセッションで特に興味深かったものを紹介していきます。
Keynote
Coming in Spark 2.2
まずは、Spark2.2に関する情報がきました。注目点は以下。
コストベースSQLの最適化
structured streamingがproduction-readyとなった
pip install pyspark が可能となる
すでにgitではv.2.2.0-rc4のtagが打たれていることから、リリース間近なようですね。
続いて大きな発表がありました。
Two new open source from Databricks
おそらくこの発表がSummitの目玉だったようです。 今後Databricksは以下2つについて、特に力を入れていくとのこと。
Streaming Performance
Deep Learning
みんな大好きDeep Learning。画像分野を中心に華やかな成果を上げてはいますが、TensorFlowやKrasなど既存のDeep Learning系オープンソースはまだまだAPIとしてlow-level。これに対してDatabricksはDeep Learning Pipelinesというhigh-levelなAPIを用意するぜ!とのことでした。これにより、
よくあるユースケースについては、コード数行でモデルを作成できる
Spark上で自動的に分散処理してくれる
バッチやストリーミングアプリ、SparkSQLにモデルをデプロイできる
ができるようになるとのことです。以下のDatabricksの記事に詳しい説明があります。
Streaming Performance
Spark Streamingにおけるデータに対し、DataFrameやSparkSQLなど、バッチと同様のhigh-levelのAPIを提供しつつ、レイテンシーを抑えるとのこと。microbatchの処理はやめて、continuous progressという新たな処理仕様になるようですが、既存のコード自体は変える必要はないようです。リアルタイム処理にSpark Streamingをコアとしている弊社にとってはうれしい話かもしれません。
Streaming PerformanceについてもDatabricksの以下の記事が詳しいです。
そのほか、DatabricksのServerlessの話もありました。
次はセッション。 各セッションの動画については来週末くらいにuploadされるみたいなので、その際にまたlinkと共に更新します。
Sessions
NEXT GENERATION WORKSHOP CAR DIAGNOSTICS AT BMW POWERED BY APACHE SPARK
概要
現在の販売店での車両診断は、手動で生成された決定木(人が作って来た条件分岐)に基づいていて、車種の多様化、車両システムの複雑化(hybrid, connective)に伴い、すでに限界に達しているとのこと。BMWでは、自動車やワークショップから入手できるデータを利用して、交換するべき部品や取るべき行動を予測できるモデルを作成し、そこから得られた結果をWeb-Applicationとして提供して、複雑化した車両整備を現場の人だけで解決できるような形にして出力しているそうです。
感想
これこそ、IoTの事例といった感じでしょうか。このアプリケーションを作り始めた理由としては、概要にも少し書いてありますが、車両システムの複雑化により整備者の知識だけでは交換すべき部品が分からないという背景があったそうです。この傾向は車業界に限らず発生することだと思うので、似たような事例が今後も出てくることになりそうです。impulseは異常検知に特化したソフトウェアとして作っているため、もしかしたら、impulseでも、、、?
DEEP LEARNING IN SECURITY—AN EMPIRICAL EXAMPLE IN USER AND ENTITY BEHAVIOR ANALYTICS (UEBA)
概要
このプレゼンテーションでは、顧客の攻撃検出例を使ってDeep Learningがどのように適用されて、どうセキュリティ問題を解決したのか、経験の共有、また、ディープラーニングや一般的な機械学習をより広範なセキュリティに展開するための課題とガイドラインについても説明していました。Deep Learningについては、以下の2つの実例が挙げられていました。
- 畳み込みニューラルネットワーク(CNN)を使用するユーザ行動異常検出ソリューション
- LSTMを使用するステートフルなユーザーリスクスコアリングシステム
感想
セキュリティ業界では、ルールベースの検知が限界とされて久しいですが、今回のプレゼンテーションではDeep Learning(CNN, LSTM)を使って異常検知をした実例を説明してくれました。CNNへの入力は、ユーザの通信状態(プロトコル毎)の画像。出力はどのユーザかのid。idがいつもと違うものになれば異常とする算段なのですが、これだけだと検知精度は良くないらしいです。対策として、CNNと併せてLSTMへ、フィッシングメールがあるかどうか、不審なDNSクエリがあるか、大量データ送信があるかなどをエンコードしたベクトルを入力して各段階でスコアを算出し、実際の検知を行っているとのこと。また、プレゼンの最後にセキュリティの異常検知はDeep Learningだけでは解決不能で企業のルール等も鑑みながらロジックを組み立てており、Deep Learningは異常検知の機能の一部分でしかないことを強調していた事が非常に印象的でした。
RAY: A CLUSTER COMPUTING ENGINE FOR REINFORCEMENT LEARNING APPLICATIONS
概要
UC Berkeleyの学生たちによるSpark をベースとした強化学習のフレームワーク(Ray)についてのプレゼン
機械学習が成熟するにつれて、標準的な教師あり学習は学習データの量と正確性という観点から十分な手段ではなくなりました。
昨今の機会学習アプリケーションでは、静的に学習したモデルから単一の予測を作成して提供する代わりに、一連のアクションを実行した結果を再評価する事で、動的環境の変化に対応する必要性が高まっています。強化学習という手段はこの要求に対して良い成果を出すことが知られています。 ただし、これらのアプリケーションは非常に厳しい計算要件を必要とし、動的なグラフ計算もサポートする必要があります。彼らは、この要件に対してスケールアウトが容易であるSparkをコンピューティングエンジンとして選択しており、そのアーキテクチャー及び一部実装方法についてがプレゼンの内容となっています。
感想
強化学習は違ったパラメータでシミュレーションを行いそれを評価してルールを更新し、再度違ったパラメータでシミュレーションを行い再評価して。。。という事をするのですが、彼らはそれを並列化して大量にシミュレーションを行いたいと、、、これこそ、Sparkの出番!!という感じで、単純にああなるほどね。と納得しました。
また講演では、人の走るという行為を強化学習でシミュレーションするサンプルアプリケーションのデモ動画が流されていて、最初の方は一歩進むのもままならない状態のものが、1歩・2歩と進むようになり、最終的には(不格好ながらも)ずっと走り続けるようになる結果を見て、単純におもしろいなと思いました。
GoogleのAlphaGoが強化学習とDeep Learningを利用して強くなったことはあまりに有名ですが、エンタープライズの世界でも(Sparkをベースとした!?)強化学習によりブレークスルーが起きるか要注目ですね。
BIG DATA AT AUDI: ROOT CAUSE ANALYSIS IN AN AUTOMOTIVE PAINT SHOP USING MLLIB
概要
アウディの自動車塗装において取得できる、約2500のセンサーデータを活用した話。塗装工程は非常に複雑かつ、温度や湿度等の影響をうけるため、どの工程でどのような失敗が起きるのかセンサーデータにSparkのDataFrame APIやMLlibを使って原因を突き止めることを試みたとのことです。
感想
個人的に興味深かったのは、時刻調整や補正に関する話です。自動車が塗装されるタイミングにおけるセンサーデータの時刻調整の話や、ある時間間隔におけるデータの代表値を平均か回帰で補正するのかなど、弊社も似たようなことをやっているなと感じました。こういった親近感のような感想を得られたことは、ある意味収穫ではありました。
終わりに
Keynoteでもありましたが、これからSparkはDeep Learningのサポート・ストリーミングのマイクロバッチ廃止など、更に進化していきます。個人的にはDeep Learningの機能は早く使ってみたいですし、とても楽しみにしています。 今後もまだまだ、Sparkの進化から目が離せませんね!