- put_diffを取り漏らした時などに学習モデルがズレる
- 新規マシンを追加する機能がない
- モデルにバージョン番号を埋め込む事で一番多くmixを受け取ったモデルを識別可能にする
- get_diff時にバージョン番号を埋め込む事でそのdiffをmixに利用するかを判断する
- put_diff時にバージョン番号を埋め込む事で受け取った側が今持っているモデルが最新かどうかを判断する
- 今持っているモデルが最新でないと判断したら他のプロセスからモデルを受け取る
/jubatus/actors/classifier/[NAME]/active
を追加- これは
nodes
と異なり「ProxyがRPCを投げても良いプロセス」を意味するEphemeralノード - これに伴い
nodes
は「ZKから生きていると認識されているプロセスとなるよう意味を変更
- これは
- save/load時のデータ非互換
- バージョン番号のメンバを加えた分、save/load時に型が合わない
- masterとして公開する際にコンバータを用意するなどで対処予定(別のパッチ)
- バージョン番号のメンバを加えた分、save/load時に型が合わない
- put_diffの戻り値を
void
からbool
へ変更- これまでput_diffは成功シナリオのみしか想定していなかったが、バージョン番号埋め込みと共に失敗するパターンを考慮する必要がある
- フレームワークとしてのJubatusは個々のアルゴリズム内部に踏み込まない為、アルゴリズム側から「put_diffに失敗した」と教えてもらう必要がある
- classifier以外のすべてのアルゴリズムは暫定的にput_diffはすべてtrueを返す。これはこれまでの挙動を全く変更しない。
- それらのアルゴリズムでモデルの最新バージョン獲得機能を使いたい場合にはput_diffにfalseを返せば良い(regressionもできるがやるとしたら別のパッチ)