BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース HadoopジョブをGPU上で実行するParallelX

HadoopジョブをGPU上で実行するParallelX

原文(投稿日:2013/12/26)へのリンク

MapReduceパラダイムは,大規模な計算集約的アルゴリズムを扱う場合には,必ずしも理想的ではない。ある企業家の小さなチームが,これを解決するためにParallelXという製品を開発している。GPUのパワーを活用してHadoopジョブを強力に加速することで,ボトルネックを解消しようというものだ。

ParalleXは "Javaで記述されたコードをOpenCLに変換して,それを当社のAWS GPUクラウド上で実行するGPUコンパイラです" と,創設者のひとりであるTony Diepenbrock氏は説明する。最終的な製品は,EC2 GPUインスタンスを使用するという違いを除けば,AmazonのElastic MapReduceと同じようなサービスになる。

GPUサーバを提供しているクラウドプロバイダは,もちろんAmazonだけではない。IBM/SoftlayerNimbixなどの会社でも,NVidia GPUを使用したサーバを提供している。ParallelXでAmazon以外のプロバイダをサポートする予定があるかという質問に,Tonyは次のように答えている "直近ではありませんが,ユーザがインハウスのHadoopクラスタで使用できるようにSDKを提供する予定です。GPUクラウドプロバイダのほとんどはHPCクラウド上でGPUを提供していますが,私たちとしては,もっと安価なGPUをクラウドで利用したいのです。何といっても,安価な市販ハードウェアで動作することを目標として,Hadoopは設計されているのですから。"

ParallelXコンパイラの動作についてもう少し理解するためには,GPUタイプの違いに加えて,並列コンピューティングのプラットフォームにもCUDAOpenCLといった違いがあることに注意する必要がある。その中でParallelXが対応するものは何か,Tonyの説明によれば,"コンパイラはJVMバイトコードをOpenCL 1.2のコードに変換します。それがOpenCLコンパイラを通じて,GPU上で実行するシェーダアセンブリにコンパイルされるのです。現在はOpenCLコードも実行可能なFPGAハードウェアを用意していますが,将来は一般的な並列ハードウェアをサポートする予定です。" リフレクションやネイティブコールを行うJavaコードはサポートされないとしても,MapReduceジョブに必要なコード変更を最小限に留めることがParallelXの目標だ。

ParallelXチームは現在,I/Oバウンドジョブのスループット向上を検討すると同時に,"リアルタイムプロセッシング,PigとHiveのコードで表記されたクエリ,それからI/Oバウンドジョブ用に大規模なデータセットのストリーミングをサポートする作業をしています" とTonyは話している。"当社のパイプラインフレームワークを使用することで,社内テストではGPUのスループットと同等のI/Oスループットを実現しています。"

現時点での開発はAmazon Hadoopディストリビューションが中心だが,チームはClouderaのCHDなど,その他のHadoopディストリビューションをターゲットにする計画を持っている。このような商用ディストリビューションで提供されているHivePigにある多数の改良点をParallelXのコンテキストで利用できるならば,それは間違いなく有効だろう。

ParallelXの生い立ちは実にユニークだ。Tonyはある記事で,このプロジェクトにまつわる2年半の冒険旅行について語っている。それはフラタニティ(学生を対象とする社交クラブ)用のソーシャルネットワークに始まり,Facebookのウィジェットを経て,盗用コードの識別ツールに達する旅路だ。これらのプロジェクトには,グラフ分析やアルゴリズムをGPU上で実行するという共通点があった。ParallelXのアイデアはそこから自然発生的に生み出されたのだ。

ParalellXに適したワークロードにはさまざまなものが存在するが,中心となるのは,機械学習やグラフ処理のような多量の解析に代表されるハイパフォーマンスコンピューティングである。その方面の能力を示すためにParallelXでは,大規模なフラタニティのネットワークをひとつのCPUで,1秒以内にクラスタ化することに成功している。他の手段ならば,6台のコンピュータで並列化しても1時間は必要な処理だ。ただし実用上の目的に制約がある訳ではなく,MapReduce用に書かれたものであれば何であれ,ParallelXを使ってGPUで動作するようにコンパイルすることができる。

ParallelXの開発チームでは,現実のワークロードにおける彼らのHadoop-to-GPUコンパイラのパフォーマンスを立証するために,将来的にデータやホワイトペーパの公開を予定している。この話題に対するコミュニティの反応は分かれている。このニュースがHacker Newsに掲載されたときの "特別な主張には特別な証拠が必要だ" というコメントに見られるように,ギアを切り替える前のホワイトペーパ公開を期待する声もある

GPUのパワーをHadoop上で味わうことならば,Aparapiを使えば現在でも可能だ。Aparapiは,JavaバイトコードをOpenCLに変換することで,指定されたコードフラグメントをGPU上で実行可能にするJava APIで,Javaで記述されたMapReduceジョブに組み込むことができる。

ParallelXは,複雑なアルゴリズムをますます必要とする研究志向のユーザに対して,Hadoopを普及させる上で重要なステップになるかも知れない。例えばグラフ解析アルゴリズムについては,Apache Hamaが一般化したバルク同期並列(BSP)モデルを用いることで,今日では非常に良好なパフォーマンスが得られている。グラフアルゴリズムをMapReduceジョブとして実行するApache GiraphのようなプロジェクトをParallelXに組み込むことができれば,データ科学者のグラフ解析用ツールに大きな付加価値を提供することになるだろう。

オンラインベータにサインアップするには,メールアドレスを入力すればよい。 ParallelXでは,限定的なストレージでパワフルなGPUにアクセス可能なフリーミアムプランをサポートする予定だ。

この記事に星をつける

おすすめ度
スタイル

BT