参考
Strata
studio.ml
ModelDB
MLflow
Clipper
Azure Machine Learning Studio
Hydrosphere Serving
Hydrosphere.io のページを参照。
studio.ml
Pythonベースの機械学習モデル管理のフレームワーク。 対応しているのは、Keras、TensorFlow、scikit-learnあたり。
注意事項
studio.mlの公式GitHubのREADMEを読むと「Authentication」の項目があり、 studio.mlに何らかの手段で認証しないといけないようである。 ゲストモードがあるようだが極力アカウント情報を渡さずに使おうとしたが うまく動作しなかった。
インストールと動作確認
1 | $ /opt/Anaconda/default/bin/conda create -n studioml python |
以下のようなエラーが生じた。
1 | awscli 1.16.101 has requirement rsa<=3.5.0,>=3.1.2, but you'll have rsa 4.0 which is incompatible. |
1 | $ cd ~/Sources |
ここでGitHub上のREADMEに記載のとおり、~/.studioml/config.yamlのdatabaseセクションに
guest: trueを追加した。
いったんUIを起動してみる。
1 | $ studio ui |
以下のようなエラーが出た。
1 | File "/home/******/.conda/envs/studioml/lib/python3.7/site-packages/flask/app.py", line 1813, in full_dispatch_request rv = self.dispatch_request() File "/home/******/.conda/envs/studioml/lib/python3.7/site-packages/flask/app.py", line 1799, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "/home/******/.conda/envs/studioml/lib/python3.7/site-packages/studio/apiserver.py", line 37, in dashboard return _render('dashboard.html') File "/home/******/.conda/envs/studioml/lib/python3.7/site-packages/studio/apiserver.py", line 518, in _render auth = get_auth(get_auth_config()) File "/home/******/.conda/envs/studioml/lib/python3.7/site-packages/studio/apiserver.py", line 511, in get_auth_config return get_config()['server']['authentication'] |
設定を以下のように変えてみた。
1 | --- /home/dobachi/.studioml/config.yaml.2019021001 2019-02-10 01:04:10.751282800 +0900 |
ブラウザでhttp://localhost:5000にアクセスした所、開けたような気がしたが、
GitHubの404ページが表示された。
コンソール上のエラーは以下のとおり。
1 | requests.exceptions.ConnectionError: HTTPSConnectionPool(host='zoo.studio.ml', port=443): Max retries exceeded with url: /api/get_user_experiments (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7ff5a64a3da0>: Failed to establisha new connection: [Errno -2] Name or service not known')) |
ModelDB
注意点
ModelDBの公式GitHubを見ると、20190211時点で最近更新されていないようだ。(最新が6ヶ月前の更新)
概要
モデルの情報を構造的に管理するための仕組み。 「ModelDB's Light API」を通じて、モデルのメトリクスとメタデータを管理できるようになる。 spark.mlとscikit-learnはネイティブクライアントを利用する。 ★要確認
ModelDBの公式GitHubのREADMEにわかりやすいフロントエンドの紹介がある。
Light APIの例
ModelDB
BasicWorkflow.pyがワークフローの基本が分かる例。 基本は、
Syncerを使ってモデルの情報を登録する。 この例では、
- データセット
- モデル
- モデルのコンフィグ
- モデルのメトリクス
をModelDBに登録する。
ModelDB BasicSyncAll.pyがYAMLで登録する例。
Native API利用の例
ModelDB
Clientの例にmodeldb.sklearn_native.SyncableMetricsの利用例が記載されている。
ウェブUIの例
ModelDB ウェブUIの例に例が載っている。
MLflow
概要
MLflowのO'Reilly記事に動機と機能概要が書かれている。 また動画でウェブUIの使い方が示されている。
動機
- 無数のツールを組み合わせるのが難しい
- 実験をトレースするのが難しい
- 結果の再現性担保が難しい
- デプロイが面倒
機能
- トラッキング
- パラメータ、コードバージョン、メトリクス、アウトプットファイルなどを管理する
- プロジェクト
- コードをパッケージングし、結果の再現性を担保する。またユーザ間でプロジェクトを流通できる
- conda形式で依存関係を記述可能であり、実行コマンドも定義可能
- もしMLflowの機能でトラッキングしていれば、バージョンやパラメータをトラックする
- モデル
- モデルをパッケージングし、デプロイできるようにする
Clipper
Strata NY 2018でのClipper が講演のようだが、スライドが公開されていない。
Clipper: A Low-Latency Online Prediction Serving System
Clipperの論文によると、「A Low-Latency Online Prediction Serving System」と定義されている。 上記論文の図1を見るかぎり、モデルサービングを担い、複数の機械学習モデルをまとめ上げる「中層化」層の 役割も担うようだ。 また、モデル選択の機能、キャッシングなどの機能も含まれているようである。
これまでの研究では、学習フェーズに焦点が当たることが多かったが、 この研究では推論フェーズに焦点を当てている。
アーキ概要
- モデル抽象化層
- モデル選択層
論文Figure 1参照。
Azure Machine Learning Studio
Azure Machine Learning Studioには、「完全に管理されたクラウド サービスで、ユーザーは簡単に予測分析ソリューションを構築、デプロイ、共有できます。」と 記載されている。
Hydrosphere Serving
Hydrosphere.io のページを参照。