はじめに
こんにちわ! IBMのMLaaS(Machine Learning as a Service)である Watson Studioの「売り文句」の一つは「AIプロジェクトのチームを支援」です。「Pickerの方もCoderの方もお好きなツールを!」ってのはいいとして、それ以外に「チームの生産性を上げるために、どんな機能が盛りこまれているのかな?」と思ったので、調べてみました。ディープラーニングのような「派手」な機能ではないですが、結構地味にいい機能があったので、いくつかピックアップしてご紹介させてください。
プロジェクト
「チーム支援」といえば、まずはWatson Stduioには初めから「プロジェクト」という枠組みが用意されていることがあげられます。AIプロジェクトでの成果物=アセット(ノートブックやモデルなど)はプロジェクト単位にまとめられ、チームでシェアできます。「プロジェクト」とはチームの作業場であり、権限を与えられた全員でシェアできます。市場にはJupyperノートブックの環境をSaaSとして提供するものは色々ありますが、「チーム」の観点は薄く「個人の分析環境」に留まっているものが多い印象です。(具体的に申せば、Aさんが作ったNotebookをBさんがレビュー/修正する場合にどうすればいいでしょうか? メールで送る? ファイルをs3上でシェア?Watson Studioなら簡単です)
コラボするメンバーを招待するには
まずは「管理」-「アカウント」-「ユーザー」からユーザーを招待します。(この手順はIBM Cloudの通常の流れであり、Watson Studio固有の手順ではありません)
次にWatson Studioの「プロジェクト」の「Collaborators」タブでコラボしたいユーザーおよび役割を指定します。
結果、以下のように「プロジェクト」毎に異なる参加メンバーを指定でき、適切な権限を保持しながらコラボレーションを進められます。
データ
当然ですが、プロジェクトのデータ・アセットはチームでシェアできます。
コネクション
ここでご紹介したいのはコネクションです。Watson Studioでは他社クラウドやオンプレミスを含めた多様なデータソースを利用できますが、各々の接続情報は「コネクション」としてアセット登録して再利用できます。ので「えーと、s3上のファイル使いたいんだけど、アクセスキー何だっけ?」のような接続情報を各人が記録・記憶しておく必要は無く、全員で定義を共用/再利用できます。(変更時も一箇所変えればオーケーなので楽ですね)
データ・カタログ
データ・カタログ自体がデータに対するガバナンスをチームや関係者に提供するものではありますが、「チーム」面でお伝えしたい点としては
評価・コメント
下記のようにデータに関する評価やコメントを投稿することができます。
Jupyter Notebook
ロック
Notebookの編集中はロックがかかります。別の人は参照のみ可能です。ロックはNotebookのタブを閉じるか、鍵のマークのクリック(unlock)で解除できます。
また、Watson StudioのJupyter Notebookでは通常の機能に加え、「チーム向け」に以下の機能が独自に追加されています。(Notebook編集中のメニュー)
# | 機能 | 説明 |
---|---|---|
1 | Publish on GitHub | GitHub/GistへのNotebook公開 |
2 | Share | インターネット上でのシェア |
3 | Insert Project Token | プロジェクト・トークンの挿入 |
4 | Notebook Info | ノートブック情報 |
5 | Versions | バージョン管理 |
6 | Comments | コメント |
7 | Data | データアクセス・コードの生成 |
8 | Find Resource in the community | コミュニティの検索 |
以下、主なものをご紹介します。
1. GitHub/Gistへの公開(publish)
以下のようなNotebookがあり、公開したくない認証情報については@hidden_cellでタグ付けしてあるものとします。
ここでPublish to GitHubを実行します。デフォルトでは@hidden_cellタグの内容は公開されません。
以下のようにGitHub/Gistいずれでも同じように認証情報は隠しつつ、公開できました。
【ご参考】上記を実施する場合は事前にプロジェクトのSettingsで対象GitHubのリポジトリの場所を登録しておく必要があります。
現時点(2018/05)での公開対象はパブリックのGitHubのみです。GitHub Enterprise等は現時点では未対応です
現時点ではGitHubに分析結果などを「公開(Publish)」するだけであって、「Pull」や「CommitT」など、ブランチやバージョン管理などGitHubの全機能を使えるわけではありません。
マニュアル:Publish notebooks on GitHub
2. インターネット上でのノートブックの直接的なシェア
「URLを知ってる人は誰でも参照できる」でよいならば、Notebookを直接公開することもできます
- 公開内容のレベルが選択できます
- 公開されるのは「最新状態の内容」ではなく「最新のバージョン」です。よって公開したい状態で「Save Version」して最新のバージョンを作ってください。逆に言えばノートブックの公開と変更・更新作業は別々に進められる、ということです。
デフォルトの「Only text and output」ではコードは公開されませんので、コメントと結果だけを参照することになります。
3. プロジェクト・トークンの挿入
Notebookからプロジェクト上のアセット(データやコネクションなど)にアクセスする場合はプロジェクト・トークンが必要です。プロジェクト・トークンは下記のようにプロジェクトのSettingsメニューで生成します。
プロジェクト・トークンをNotebookのコードで利用する場合は下記の「insert project token」メニューを使うとコーディングの手間が省けます。
マニュアル:Manually add the project token
5. バージョン管理
Watson Stduio上で作ったNotebookは単にSaveするだけではなくバージョン管理できます。
右側のアイコンからも操作可能です。特定のバージョン時点に戻ることも、もちろん可能です。
6. コメント
Notebookにはコメントをつけられますのでレビューなどに便利です。
7. アクセス・コードの生成と挿入
アセットとして登録してあるデータにアクセスするPythonコードを自動的に生成できます。Notebookのセル上の挿入したい場所にカーソルを置いて、ファイルを選択して「Insert to code」を選択すると、該当のコードが生成されます。
以下の例ではIBM Cloud Object Storage上に置いてあるcsvファイルをPandasのDataFrameとしてアクセスするコードが生成されました。常にPandasというわけではなく、データの種類により適切なコードが選べるようになっています。
以下はファイルではなくコネクションの定義を生成した例です。AWSのS3やICOSなどの定義を生成しています、
Db2 Warehouseの場合はテーブルにアクセスするコードが生成できます。
8. コミュニティ・リソースの参照
スケジュール実行
Notebook作成時のランタイムとしてSparkを選択すれば、Notebookをスケジュール実行できます。
Spark上で動くNotebookの場合は追加で時計のアイコンが表示されます。
スケジュールされたNotebookには時計マークが付きます。
View Job Detailsではジョブのスケジュール情報は見られますが、実行結果は見られません。
ジョブの実行結果はWatson StudioではなくSparkサービス側のメニューから見られます。
マニュアル:Schedule a notebook to run at specific intervals
モデル
SPSS Modeler Flowでのバージョン管理
Modeler Flowでは以下のように最大10バージョンまで保持できます。
Modeler Builderでのバージョン管理
Model Builderを使った自動モデリング(Sparkベース)では、継続的学習システムの一環としてモデルの自動トレーニング~自動デプロイが可能です。前のバージョンのモデルも保持されており、そちらに戻すこともできます。
以上、簡単ですがWatson Studioでは単なる「個人用の分析環境」を越えた「チーム」支援機能が色々と追加されていることをご紹介しました。Watson Studioは永久無料のライトアカウントでも利用できますので、ぜひ一度触ってみてください。