学習モデルのバックアップとリカバリ

サーバープロセスは、メモリ上で機械学習に関するデータを管理しています。 メモリ上でデータを管理するという性質上、サーバープロセスの終了とともに Jubatus 上のデータは失われます。

Jubatus では、予期せぬプロセスの終了や誤ったオペレーションに備え、バックアップとリカバリのための機能を提供しています。

現在、Jubatus では、以下の手段を提供しています。

Save and Load

サーバープロセスの学習モデルをファイルに保存し、そのファイルを読み込むことで、サーバープロセスの学習モデルを復元する機能です。

Jubatus では、この機能をクライアント向けに MessagePack-RPC インタフェースで提供しています。

現在、学習モデルを保存した環境と異なる環境(Jubatusのバージョン、クラスタ構成台数、configファイルの内容)への復元はサポートしていません。

Save

Save は、クライアントからの save という RPCメソッド の呼び出しによりサーバープロセスの学習モデルをファイル出力する機能です。

ファイルの出力先は、サーバープロセスの起動オプション -d, --datadir で指定することができ、標準では /tmp が設定されます。

ファイルは、以下の命名規則に従ったファイル名で出力されます。すでに同じ名前のファイルが存在する場合、ファイルの上書きを行うため、save メソッドの引数には十分に注意する必要があります。

${IPADDR}_${PORT}_${TYPE}_${ID}.jubatus
${IPADDR} Jubatus サーバが RPCリクエストを受け付ける Ipv4 アドレス
${PORT} Jubatus サーバが RPCリクエストを受け付ける ポート番号
${TYPE} サーバプログラムの種類 (classifier, recommender, ...)
${ID}
save メソッドの引数
a-zA-Z0-9_- からなる 100文字

Save で出力されたファイルは、Jubatus のバージョンに依存する形式で出力され、互換性のあるバージョンの Jubatus でしか後述する Load を行うことができません。

Save による出力されたファイルの構造に関しては、 開発者向けWikiの該当ページ を参照してください。

Load

Load は、Save で作成されたファイルを読み込み、サーバープロセスの学習モデルをファイルに保存された状態へ復元する機能です。 クライアントからの load メソッドコールにより実行されます。

ファイルの読込先は、Jubatus サーバの起動オプション -d, --datadir で指定することができ、標準では /tmp が設定されます。

save メソッドでの引数で指定した ${ID}load メソッドの引数に指定することで、読み込み対象のファイルを指定します。

ファイルの読み込み時、サーバープロセスは保存されたデータに対しバージョンの互換換性や設定内容のチェックを行います。

保存データが復元先と異なるバージョンのJubatusで保存されていた場合や、復元先と設定ファイルの内容が異なる環境で保存された場合、保存データの復元には失敗します。