前回のCasual Talkでいただいたご要望に対する進捗状況
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 9,056 views

 

Statistics

Views

Total Views
9,056
Views on SlideShare
885
Embed Views
8,171

Actions

Likes
3
Downloads
2
Comments
0

12 Embeds 8,171

http://blog.jubat.us 7646
http://snuffkin.hatenablog.com 358
http://cptl.corp.yahoo.co.jp 110
https://twitter.com 19
http://feedly.com 17
http://2023884025454259159_72fe9922d69be86dcda13bb0adbe886583a5d5ad.blogspot.com 8
http://www.feedspot.com 4
https://www.google.co.jp 3
http://2023884025454259159_72fe9922d69be86dcda13bb0adbe886583a5d5ad.blogspot.jp 3
http://translate.googleusercontent.com 1
http://digg.com 1
http://www.google.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

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