Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

前回のCasual Talkでいただいたご要望に対する進捗状況

13,203 views

Published on

  • Be the first to comment

前回のCasual Talkでいただいたご要望に対する進捗状況

  1. 1. 前回のCasual Talkでいただいた ご要望に対する進捗状況 Jubatus チーム 小田 哲 © 2013 Jubatusチーム
  2. 2. 要望:Java版クライアントをなんとかせよ © 2013 NTT Software Innovation Center 2
  3. 3. これまでの対応(完了) 自動生成されるクライアントを見直しました。 例:jubatus-java-skelton Datum d = new Datum(); d.string_values = new ArrayList<TupleStringString>(); d.num_values = new ArrayList<TupleStringDouble>(); TupleStringDouble tuple1, tuple2, tuple3; // user01 tuple1 = new TupleStringDouble(); tuple1.first = "movie_A"; tuple1.second = 5; d.num_values.add(tuple1); tuple2 = new TupleStringDouble(); tuple2.first = "movie_B"; tuple2.second = 2; d.num_values.add(tuple2); tuple3 = new TupleStringDouble(); tuple3.first = "movie_C"; tuple3.second = 3; d.num_values.add(tuple3); r.update_row(NAME, "user01", d); // user02 tuple1 = new TupleStringDouble(); tuple1.first = "movie_A"; tuple1.second = 2; d.num_values.add(tuple1); tuple2 = new TupleStringDouble(); tuple2.first = "movie_B"; tuple2.second = 5; d.num_values.add(tuple2); Datum d; // user01 d = new Datum().addNumber("movie_A", 5).addNumber("movie_B", 2) .addNumber("movie_C", 3); r.updateRow("user01", d); // user02 d = new Datum().addNumber("movie_A", 2).addNumber("movie_B", 5) .addNumber("movie_C", 1); r.updateRow("user02", d); // user03 d = new Datum().addNumber("movie_A", 5).addNumber("movie_B", 1) .addNumber("movie_C", 4); r.updateRow("user03", d); tuple3 = new TupleStringDouble(); tuple3.first = "movie_C"; tuple3.second = 1; d.num_values.add(tuple3); r.update_row(NAME, "user02", d); // user03 tuple1 = new TupleStringDouble(); tuple1.first = "movie_A"; tuple1.second = 5; d.num_values.add(tuple1); tuple2 = new TupleStringDouble(); tuple2.first = "movie_B"; tuple2.second = 1; d.num_values.add(tuple2); tuple3 = new TupleStringDouble(); tuple3.first = "movie_C"; tuple3.second = 4; d.num_values.add(tuple3); r.update_row(NAME, "user03", d); © 2013 NTT Software Innovation Center 3
  4. 4. 要望:モデルを取得できるように これまでの対応(70%・スタック) Jubadumpというsaveしたデータをdumpするサポートアプリケーションを公 開しました。 • 対応済み • classifier, (NN,Recommender等の)inverted_index • 未対応 • regression, bit_vector • チームがかかえる悩み • ハッシュ値を表示しても意味が分からない。どうすればいいか? © 2013 NTT Software Innovation Center 4
  5. 5. 想定する使い方 • 学習中にsave APIを呼び出す。 • 出力されたモデルデータ(binary形式)をjubadumpに入 力する。 • 出力されたJSON形式のモデルを表示し、中の状態を確 認する。 デー タ ソー ス 分析用 クライアン ト save API 学習用 クライアン ト Jubatus サーバ 学習モデル ○○○.js jubadump © 2013 NTT Software Innovation Center JSON形式 のモデル 5
  6. 6. 要望:障害に対する配慮を • エラーメッセージを見て何が起きているのか分からない • 障害に対する作りこみが足りない © 2013 NTT Software Innovation Center 6
  7. 7. これまでの対応(30%) • エラーメッセージについて • エラーメッセージを一部改善しました。 • 悪名高きRPC Error 2がでなくなりました。 • エラーメッセージ対応表を作成中です。 • classifier, recommender • サーバの追加、離脱において、極端に精度が悪化する問 題について対応中です。 • 0.5.Xもしくは、0.6.0にマージするための作業を実施中です。 起きうる動作 期待した動作 プロセス 1 プロセス 1 プロセス 2 プロセス 3 © 2013 NTT Software Innovation Center プロセス 2 プロセス 3 7
  8. 8. 要望:ミドルウェアとしてもっとシンプルに • 依存ライブラリが多すぎる • pficommon, msgpack, jubatus-messegepack-rpc, jubatusmpio, Google glog, pkg-config, zookeeper-c-client, re2, mecab, ux • 実装言語が多すぎる • C++, python, Haskell, Ocaml • 上記によりメンテナンスコストが膨大である。 © 2013 NTT Software Innovation Center 8
  9. 9. これまでの対応(50%) • 依存ライブラリを見直しました。 • ABIが発展途上であるpficommon, re2の依存をなくしました。 • 必須の依存ライブラリで、ライセンス的に問題ないものは同梱 するようになりました。 • バージョンの違いによる動作検証が減りました。 • 今後も必須ではないミドルウェアへの依存を減らしていきたい と考えています。 • 優先順位付けとそれに伴うpull requestをお待ちしております。 • 実装言語を減らしました。 • コードの自動生成に利用していたmpidl相当の機能を、 jeneratorに統合しました。これにより、Haskellを使わずに コード生成ができるようになりました。 © 2013 NTT Software Innovation Center 9
  10. 10. 要望:Mixの利点を示せ http://www.slideshare.net/hadoopxnttdata/jubatus-5より © 2013 NTT Software Innovation Center 10
  11. 11. これまでの対応(継続検討中) • Mixが活きる部分は以下のとおりと考えています • classifier, regression • 高次元でなかなか収束しない所 • recommender, clustering, NearestNeighbor • update, analyze頻度が極めて高いところ • 分散ハンズオンを実施しました • AWSを利用して、分散環境でnearest neighborを動作させるハ ンズオンを実施しました。 • http://download.jubat.us/event/handson_03/ • 今後とも、分散構成およびMixの使いドコロ、推奨設定、推奨 環境などの各種情報を提供してまいります。 © 2013 NTT Software Innovation Center 11
  12. 12. 要望:分散動作モデルのあり方を示せ • Shared-Everythingな動作モデルを前提とするのは正 しいのか? • Updateの速度をあげるのか? • 一台あたりが管理するデータの容量をさげるのか? © 2013 NTT Software Innovation Center 12
  13. 13. これまでの対応(継続検討中) • Jubatusの分散に対する2013年12月現在の考え方を整理し ました。 Jubatusはスループットを上げるために分散を行います。応答速度(レイ テンシ)は、オンラインアルゴリズムを積極的に選択する、などアルゴ リズムレベルの改善を進めていきます。 上げたい速度 担当する個所 スループット システム レイテンシ アルゴリズム © 2013 NTT Software Innovation Center 13
  14. 14. ありがとうございます • Jubatusチームでは、特に実際に使っていただけたこと で出てくる課題、要望などにできるだけ取り組んでいき たいと考えております。 • ご要望は以下まで • Github issue(http://github.com/jubatus) • Twitter @JubatusOfficial • E-mail jubatus@googlegroups.com • 引き続き、よろしくお願い致します。 © 2013 NTT Software Innovation Center 14

×