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

  • 9,724 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
9,724
On Slideshare
0
From Embeds
0
Number of Embeds
15

Actions

Shares
Downloads
3
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 前回のCasual Talkでいただいた ご要望に対する進捗状況 Jubatus チーム 小田 哲 © 2013 Jubatusチーム
  • 2. 要望:Java版クライアントをなんとかせよ © 2013 NTT Software Innovation Center 2
  • 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. 要望:モデルを取得できるように これまでの対応(70%・スタック) Jubadumpというsaveしたデータをdumpするサポートアプリケーションを公 開しました。 • 対応済み • classifier, (NN,Recommender等の)inverted_index • 未対応 • regression, bit_vector • チームがかかえる悩み • ハッシュ値を表示しても意味が分からない。どうすればいいか? © 2013 NTT Software Innovation Center 4
  • 5. 想定する使い方 • 学習中にsave APIを呼び出す。 • 出力されたモデルデータ(binary形式)をjubadumpに入 力する。 • 出力されたJSON形式のモデルを表示し、中の状態を確 認する。 デー タ ソー ス 分析用 クライアン ト save API 学習用 クライアン ト Jubatus サーバ 学習モデル ○○○.js jubadump © 2013 NTT Software Innovation Center JSON形式 のモデル 5
  • 6. 要望:障害に対する配慮を • エラーメッセージを見て何が起きているのか分からない • 障害に対する作りこみが足りない © 2013 NTT Software Innovation Center 6
  • 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. 要望:ミドルウェアとしてもっとシンプルに • 依存ライブラリが多すぎる • 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. これまでの対応(50%) • 依存ライブラリを見直しました。 • ABIが発展途上であるpficommon, re2の依存をなくしました。 • 必須の依存ライブラリで、ライセンス的に問題ないものは同梱 するようになりました。 • バージョンの違いによる動作検証が減りました。 • 今後も必須ではないミドルウェアへの依存を減らしていきたい と考えています。 • 優先順位付けとそれに伴うpull requestをお待ちしております。 • 実装言語を減らしました。 • コードの自動生成に利用していたmpidl相当の機能を、 jeneratorに統合しました。これにより、Haskellを使わずに コード生成ができるようになりました。 © 2013 NTT Software Innovation Center 9
  • 10. 要望:Mixの利点を示せ http://www.slideshare.net/hadoopxnttdata/jubatus-5より © 2013 NTT Software Innovation Center 10
  • 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. 要望:分散動作モデルのあり方を示せ • Shared-Everythingな動作モデルを前提とするのは正 しいのか? • Updateの速度をあげるのか? • 一台あたりが管理するデータの容量をさげるのか? © 2013 NTT Software Innovation Center 12
  • 13. これまでの対応(継続検討中) • Jubatusの分散に対する2013年12月現在の考え方を整理し ました。 Jubatusはスループットを上げるために分散を行います。応答速度(レイ テンシ)は、オンラインアルゴリズムを積極的に選択する、などアルゴ リズムレベルの改善を進めていきます。 上げたい速度 担当する個所 スループット システム レイテンシ アルゴリズム © 2013 NTT Software Innovation Center 13
  • 14. ありがとうございます • Jubatusチームでは、特に実際に使っていただけたこと で出てくる課題、要望などにできるだけ取り組んでいき たいと考えております。 • ご要望は以下まで • Github issue(http://github.com/jubatus) • Twitter @JubatusOfficial • E-mail jubatus@googlegroups.com • 引き続き、よろしくお願い致します。 © 2013 NTT Software Innovation Center 14