SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Data Engineering Conference 2015 Powered by Developers Summitレポート(AD)

Apache Sparkと機械学習、データ基盤にフォーカスした未来志向のテクノロジーカンファレンス

Data Engineering Conference 2015 Powered by Deverlopers Summit レポート

  • このエントリーをはてなブックマークに追加

 翔泳社は2015年11月17日、東京・六本木にあるベルサール六本木にて「Data Engineering Conference 2015 Powered by Developers Summit」を開催した(協賛:日本IBM)。翔泳社の開発者向けイベント「Developers Summit」のスペシャル版として、会場では、Apache Sparkや機械学習に着目したデータ基盤をテーマに、海外からもスピーカーを招聘して開発者向けセッションが行われた。本稿では、その模様をお伝えする。

  • このエントリーをはてなブックマークに追加
Data Engineering Conference 2015 Powered by Developers Summit会場の模様。立錐の余地もないほどの大入り満員だった
Data Engineering Conference 2015 Powered by Developers Summit会場の模様。
立錐の余地もないほどの大入り満員だった

AI(人工知能)の全体像――その歴史と現状、今後の展望

スピーカ-:株式会社KDDI総研 リサーチフェロー 小林 雅一氏

 「AI(人工知能)」の歴史を振り返ってみよう。初期のAIは1960年代前後、基本的にはルールベースで処理をしていた。しかし柔軟性に欠け、また処理性能などの課題があり、動きは一時停滞する。1980年代には統計学的なアプローチが始まる。IBMであればスーパーコンピュータ「ディープブルー」があり、チェスの世界王者との対戦で勝利するという成果を挙げるようになる。人工知能は人間と対峙するようになるものの、小林氏は「人間の考え方とは異なるアプローチをしている」と指摘する。ただし、今後は「脳科学を採り入れたアプローチで進む」(小林氏)のだという。

株式会社KDDI総研 リサーチフェロー 小林 雅一氏
株式会社KDDI総研 リサーチフェロー 小林 雅一氏

 現実に目を向けてみよう。ハードウェアの進化で演算や記憶のコストは低下しているため、近年ではさまざまな形でコンピュータを採り入れた製品が出てきている。スマートなテレビや掃除ロボットなどだ。人工知能の技術が進むことにより悲観的な見方もあるものの、小林氏は「見慣れた製品が生まれ変わり、既存の産業を活性化させる可能性を秘めている」と前向きな視点もあることを指摘する。

 例えば自動車。各社が人工知能技術を採り入れて自動運転を実現しようとしており、そこには主導権争いも起きている。IT企業は「革命的な製品」、既存の自動車メーカーは「ドライバー支援システム」とスタンスが異なる。

 自動車の自動運転で考えると、多数のセンサーから集めたデータを車内で処理して動きを制御する。スマートフォンやロボットを通じた質問応答であれば処理の一部をクラウド側のサーバーで実行することもあるが、自動車の場合は事情が異なる。常に通信できるとは限らず、遅延が起きれば致命的なことになるためだ。

 自動運転の処理をおおまかに見ると、まず目的地を設定、現在地を把握、周囲の状態を把握、動きを制御する、などの順で処理を進める。ポイントとなるのが周囲を走行している車や通行人や障害物など、周囲の状態を把握するところ。今のところ、ここには条件付き確率論のベイズ理論と計測の繰り返しにより精度を高めている。

 しかし、現実の自動車運転では統計学的には「ありえない」ような状況も起こりうる。例えば、前の車が突然減速して車間距離が縮まることがある。これは「ファットテール現象(問題)」ともいわれ、検知が遅れたらあわやの事態である。機械学習の手法の1つとして「ディープラーニング」があるが、こうした現実の課題を対処する技術として注目されるようになってきていると、小林氏はいう。

 自動車以外、例えばロボットで考えてみると、これまでは動きを制御するのが精いっぱいで動作が遅く、実用的にはほど遠かった。しかし「近年、プロセッサの進化などで技術的なブレイクスルーがあり、成果が出始めている」(小林氏)。今後さらに多方面で発展していくことが期待されているとして、小林氏はセッションを終えた。

きちんと知りたいApache Spark ~ 機械学習とさまざまな機能群

スピーカー:株式会社リクルートテクノロジーズ アドバンスドテクノロジーラボ ソフトウェアエンジニア 石川 有氏

 近年、大規模データの分散処理システム「Apache Spark(以下、Spark)」が注目を浴びてきている。Sparkには機械学習ライブラリがあるため、機械学習の分野でも可能性を秘めている。このセッションでは、Spark機械学習ライブラリ関連の開発に携わっている石川氏が、企業での同機能の導入に関して解説した。

株式会社リクルートテクノロジーズ アドバンスドテクノロジーラボ ソフトウェアエンジニア 石川 有氏
株式会社リクルートテクノロジーズ アドバンスドテクノロジーラボ ソフトウェアエンジニア 石川 有氏

 そもそもSparkとは、大規模データのための分散処理システムだ。先行してMapReduceなどの分散処理機能を提供してきたApache Hadoop(以下、Hadoop)などの後継プロダクトと目されている。主に企業におけるデータ分析の基盤として用いられており、標準でストリーミング、機械学習、グラフ処理のコンポーネントを備えているのも特徴だ。

 オープンソースソフトウェアとして開発されており、およそ3か月に1度のペースで新バージョンがリリースされる。現状の安定稼働バージョンは1.5だ。利用するプログラムはScala、Java、Python、Rで記述されることが多いという。現時点でサポートしているデータソースとしては、ビルトインではHadoopなどのHDFS、クラウドサービスのAmazon S3、RDBのMySQLやPostgreSQLなど。ほかにも外部ではApache HBase、Amazon Redshift、Cassandra、CSVなどもサポートしている。

 石川氏が開発に参画しているのは、Sparkの機械学習ライブラリ「MLlib」である。ビジネス面でMLlibに期待される機能の一つは、「協調フィルタリング」だろう。協調フィルタリングとは、リコメンデーション(顧客にお勧め商品などを提示するなど)の実現に用いられる手法の一つである。MLlibは協調フィルタリングのために「ALS(Alternative Least Squares:交互最小二乗法)」を使っている。MLlibでは、まずデータをロードし、次にALSのオブジェクトを作成して訓練し(Train Model)、そして評価を行う。この評価の結果によって、リコメンド(推薦)すべき商品などが0~1の数値で提示される。

ALSの最も単純な実行方法
ALSの最も単純な実行方法

 一見すると扱うのが難しそうであるが、石川氏は「トップレベルAPIがよくデザインされているので、簡単に機械学習ライブラリが使えます」と話し、利用のハードルが意外に低いことを会場の参加者にアピールした。

 Sparkには、MLlibのほかにもDataFrame APIとPipelie APIなどのコンポーネントがある。DataFrame APIははデータ操作を行うためのコンポーネントで、日付関数や数学関数、文字列関数などを標準サポートし、SQLでも処理を記述できる。驚きなのがその性能。石川氏によれば「DataFrame APIを用いれば少ないコードでかつ高速にデータを処理できる。性能はネイティブで単純に記述したときを上回る」という。

ALSのベンチマーク
ALSのベンチマーク

 一方、Pipeline APIは「実装面で考えれば、MLlibやDataFrameの上位に位置するもの」(石川氏)。例えば「レビューのテキストから評価を予測する」という処理をPipeline APIで行うと、途中でパラメータチューニングやクロスバリデーションなどがあるものの、APIという形で提供されるため複雑化を避けることができる。

 すでに様々な言語に対応しているSparkではあるが、石川氏は「機能面と開発速度の観点から使用言語はScalaがおすすめ」と話す。次の候補としてPython、SparkRがあるが、Spark StreamingではScalaしかサポートしていない機能があり、SparkRのML APIはまだ開発途上なのだそうだ。

 石川氏によると「Sparkのデータサイエンス機能は企業における実践を意識して作られています」という。先述したようなAPIなどを駆使すれば処理や管理が容易になる。そして最後に、石川氏はセッションを「Happy Spark ML Life!」と結んで、ステージを後にした。

Sparkがもたらすビジネス革新 - データドリブン・ソリューションの迅速な展開

スピーカー:Director of Marketing, IBM Analytics, IBM Corporation, Joel Horwitz氏

このセッションの資料がこちらのページからダウンロードできます このセッションの資料が こちらのページ からダウンロードできます。

 2015年6月、米IBMはApache Sparkへの投資を発表した。3500名の研究員を割り当てることや、同社の機械学習ツール「IBM SystemML」のオープンソース化などが盛り込まれていた。登壇したHorwitz氏は、この背景には何があるのか、Sparkがどのような可能性を秘めているのか、今後データドリブンとなるソリューションはどう展開していくのかについて解説した。

Director of Marketing, IBM Analytics, IBM Corporation, Joel Horwitz氏
Director of Marketing, IBM Analytics, IBM Corporation, Joel Horwitz氏

 Horwitz氏は冒頭にIBMと技術への投資の歴史を振り返った。IBMがこれまで各方面に向けて技術投資をしたなかで大きなものが3つあるという。まず1つは1964年のSystem 360。ここから周辺ソリューションや情報サイエンスが生み出された。次に1999年のLinux。ここから500種類以上のサーバーソリューションが生み出された。これらはIBMの中でも重要かつ転換点となる投資だったという。そして、2015年にIBMが発表したのがApache Sparkへの投資である。System 360やLinuxへの取り組みに並ぶものとして掲げたことからも、IBMがApache Sparkに相当な熱意や期待を抱えていると見ていいだろう。

 IBMはSparkを「アナリティクス用のOS」と目している。Sparkは多様なデータ環境に対応し、また処理と開発の高速化に寄与するため、分析用のプラットフォームに向いているというのがIBMの見方である。ほかにも、Horwitz氏は、開発者コミュニティで急速に成長していることや、先進的な分析ソリューションを開発するときのハードルが低くなること、機械学習ライブラリが提供されていることなどもSparkの利点として紹介。その上で、「IBMはSparkと連携することで、IBMの各種プラットフォームのコアに組み込んだり、Bluemix上のサービスとして販売するなどの施策で、顧客のニーズを満たしていく」(Horwitz氏)と意気込みを露わにした。

 先述したIBMの6月の発表では、Spark Technology Centerを開設してデータサイエンス新興のためのコミュニティ形成にも取り組むというのもあった。この施設は11月に完成した。場所は米国・サンフランシスコにある。また、時期は前後するが、IBMはSparkのマネージドサービス「IBM Analytics for Apache Spark」を10月27日より提供している。

 IBMでは、以前よりHadoop関連システムとして「IBM BigInsights for Apache Hadoop」を提供している。また、IoT分野で用いられる「IBM Infosphere Streams」もある。これらには今後、Spark技術が採り入れられていくのだという。ほかにも、SparkはInformixやDB2などのデータ管理ソリューションとも多様な形で連携していくことが予定されているとHorwitz氏。つまり、今後SparkはIBMのあらゆる製品やサービスに組み込まれていくということである。

 最後にHorwitz氏は「IBMはお客様の既存の投資に最新のオープンなハイブリッド機能を統合できる環境を提供します。Sparkと連携することで、データサイエンスとデータエンジニアリングをサポートする先進ソリューションを提供します」と話した。

SystemMLによる機械学習について

スピーカー:Software Developer, Spark Technology Center, Arvind Surve氏

このセッションの資料がこちらのページからダウンロードできます このセッションの資料が こちらのページ からダウンロードできます。

 このイベントには、IBMのSpark Technology Centerから2名のSparkエキスパートがわざわざ来日し、Sparkに関する最先端かつ高度な解説を行った。トップバッターはArvind Surve氏である。

 Surve氏はまず「SystemML」に触れた。MLはマシンラーニングを表し、IBMがオープンソース化を発表した機械学習ツールである。IBMのアルマデン研究所から開発が始まり、2010年ごろからスケーラブルな環境に対応するようになってきた。

Software Developer, Spark Technology Center, Arvind Surve氏
Software Developer, Spark Technology Center, Arvind Surve氏

 用途として、Surve氏は自動車製造業を例に挙げた。修理の履歴や診断結果などのデータを分析することで、顧客がいつごろ車を買い換えるかを予測するとしよう。このような条件では高度なセマンティックスや柔軟性などが必要になってくる。

 現状では、データサイエンティストは自身のコンピュータに必要なデータを取り込み、RやPythonといった言語で分析することが多い。しかし、分析に必要なデータが大容量となると、自身のコンピュータに取り込んで処理することができなくなる。また、ビッグデータを用いるとなると、データサイエンティストはHadoopやSparkのプログラマを通じてプログラムを書くことになり、スキルのあるエンジニアの関与が必要となっている。

 「IBMは機械学習が宣言的な言語の仕組みを使ったフレームワークで実行できることを目指している」とSurve氏はいう。「データサイエンティストはどの分析言語を用いようと、クエリは最適化されて各種データソースにアクセスできるようにする」(Surve氏) そのため、SystemMLにおいてはフロントエンドから複数の実行環境へのアクセスに、コストベースのオプティマイザを用いるというアプローチをとっている。多様な言語と多様な環境をつなぐ鍵となるのが、SystemMLのオプティマイザであるというわけだ。

 現在、SystemMLのソースコードはGitHubのリポジトリ「SparkTC/systemml」から入手できる。

Beyond Shuffling - tips & tricks for scaling Apache Spark(Apache Sparkをスケールアップするためのヒントとコツ)

スピーカー:Software Developer, Spark Technology Center, Holden Karau氏

このセッションの資料がこちらのページからダウンロードできます このセッションの資料が こちらのページ からダウンロードできます。

 Surve氏と同じく、Spark Technology Centerから来たKarau氏は『初めてのSpark』(オライリー・ジャパン刊)などのSpark関連書籍を執筆している。過去にはAlpine、Databricks、Google、Foursquare、およびAmazonでの検索や分類の仕事に携わってきた。このセッションはApache Sparkのジョブをスケールアップすることをテーマに行われた。

Software Developer, Spark Technology Center, Holden Karau氏
Software Developer, Spark Technology Center, Holden Karau氏

 SparkではRDD(Resilient Distributed Dataset:不変で並列実行可能なコレクション)が標準機能として利用できるようになっている。まずは再利用する場合について考える。ここで問題になるのがキー・バリュー・データに関する考慮点である。どのように分散しているか、どのような集計機能を使用する必要があるのかである。

 特に、問題になるのがキーの不均衡である。キーは均等に分散していないため、「groupByKey」により大量の処理が発生してしまう。Karau氏は「groupByKeyは悪!」と断言するほど。ほかにも、キー順にソートすることでパーティションサイズの制限やパフォーマンス劣化という問題が生じることがあると、Karau氏は指摘する。

 対策として挙げられたのは「Spark SQL」の使用だ。Spark SQLはSpark(RDD)の操作をSQLで行うためのクラス群である。Karau氏によると、データが構造化データまたは半構造化データの場合で、データのサブセットに対してのみ処理を行うケースでSpark SQLを用いると、パフォーマンスが改善することがあるという。

 そのほか、Karau氏はSparkの機械学習にコードを自動生成するものを組み込む方法と、そうして生成されたコードの例も示した。

【参考】Sparkのプログラミングガイド(Java、Python、Scalaに関するものも)

パネルディスカッション「アプリ・サービス開発者が学ぶべきデータアーキテクチャはこれだ!」

 本イベントの最後に行われたパネルディスカッションでは、Sparkに知見のあるメンバーが集い、現在のSparkについての特徴やこれからのデータ基盤として何を選ぶべきかなどを意見交換した。

モデレーター:谷川 耕一氏(ブレインハーツ株式会社 取締役)

パネラー:大谷 弘喜氏(ワークスアプリケーションズ 開発本部)
小野寺 民也氏(日本IBM東京基礎研究所 サービス型コンピューティング部長)
神林 飛志氏(株式会社ノーチラス・テクノロジーズ 代表取締役社長)

 大谷氏が所属するワークスアプリケーションズでは、昨年10月に「HUE」というクラウドベースERPを発表。「コンシューマ技術をエンタープライズに」を掲げ、CassandraやSparkなどを基礎技術として利用している。大谷氏は「ソフトウェアを高速化するにはアプリケーションの作りを変える。アルゴリズムを改善する」と話す。

 神林氏のノーチラス・テクノロジーズは業務系の分散処理を行うミドルウェア開発に携わっている。「いまHadoopを業務で用いているなら明日からSparkに」と勧めつつも、Sparkは「過渡期の産物でもあるため、導入はやさしいとはいえない。未導入であれば、まだ静観してもよいのでは」との見解を示した。

 日本IBM東京基礎研究所の小野寺氏は、「Sparkのソフトウェアスタックは巨大なヒープや大量のスレッドなどJava仮想マシン(JVM)への新たなチャレンジかのように見えるが、実際はJVM/OSへのチャレンジである」と、Sparkを実装レベルから見ている同氏らしい洞察を示した。

Sparkに対する各々の思いや考えが行き交ったパネルディスカッション……左から、谷川 耕一氏(ブレインハーツ)、大谷 弘喜氏(ワークスアプリケーションズ)、小野寺 民也氏(日本IBM東京基礎研究所)、神林 飛志氏(ノーチラス・テクノロジーズ)
Sparkに対する各々の思いや考えが行き交ったパネルディスカッション。
左から、谷川 耕一氏(ブレインハーツ)、大谷 弘喜氏(ワークスアプリケーションズ)、
小野寺 民也氏(日本IBM東京基礎研究所)、神林 飛志氏(ノーチラス・テクノロジーズ)

 モデレーターの谷川氏が「エンジニアがこれから学ぶべきデータアーキテクチャは?」と各パネラーにたずねると、大谷氏は「やはり突き詰めると好きなものではないか」と回答。小野寺氏はSparkを挙げて「まだ産まれたばかりの新しい技術ではあるが、参入するにはいいタイミング」と述べ、Sparkに挑戦することを促した。神林氏はSparkが主に大規模データ処理を想定していることを指摘しながら、「RDBのオプティマイザが何をしているのか。まずはそうした基本を理解することが大事です」とSparkを利用するに当たっての注意も喚起した。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9125 2016/03/15 13:10

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング