More Related Content
Similar to 前回のCasual Talkでいただいたご要望に対する進捗状況
Similar to 前回のCasual Talkでいただいたご要望に対する進捗状況 (20)
More from JubatusOfficial
More from JubatusOfficial (19)
前回のCasual Talkでいただいたご要望に対する進捗状況
- 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
- 5. 想定する使い方
• 学習中にsave APIを呼び出す。
• 出力されたモデルデータ(binary形式)をjubadumpに入
力する。
• 出力されたJSON形式のモデルを表示し、中の状態を確
認する。
デー
タ
ソー
ス
分析用
クライアン
ト
save API
学習用
クライアン
ト
Jubatus
サーバ
学習モデル
○○○.js
jubadump
© 2013 NTT Software Innovation Center
JSON形式
のモデル
5
- 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
- 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