IBMのThink 2018で発表されたAIプラットフォーム「Watson Studio」をザクッと紹介してみる


![image](https://qiita-image-store.s3.amazonaws.com/0/108535/80c0b3a2-50f2-5e96-b955-83cb5cb6935e.png)

# はじめに
(記事執筆時点 2018/03/26) 先週、ラスベガスで開催されたIBMのイベント Think 2018で「**Watson Studio**」ってのが発表されました。世間的に一番注目されるのは「**ディープ・ラーニング**」でしょうが、Watson Studioは他にもいろんな要素がいっぱい詰まっていて、全容を理解するのが難しいような気がしたので、自分なりに整理してザクッとご紹介してみます。

# 要は何が変わったの?　～1分で説明する

「Watson Studio」は突然公開された「真新しいサービス」というわけではなく、従来「Watson Data Platform」の冠の下で提供されてきた「DSX」「WML」などのデータ・サイエンス系のサービス群を発展的に整理統合・機能拡張したものです。従来のサービス群は今回、以下のように強化・再編されました。

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/617804e7-ca00-4a57-b345-c58b9977068e.png)

一言で申せば「**AIのプラットフォームとして、ディープ・ラーニングやWatsonとの連携を今後さらに進めていきますよ～**」ということかと思います。

- 従来の冠（総称）である「Watson Data Platform」は「IBM Watson」に統合されました
- 「DSX」は「Watson Studio」に名称が変わり、従来の「データサイエンス・チームのためのプラットフォーム」が「AI/Watson/ディープ・ラーニングのプラットフォーム」に拡張されました
- 「Machine Learning」に**ディープ・ラーニング**の機能が加わりました
- 「Data Refinery」は単独のサービスではなくなり、「機能」として統合されます
- Watson Studioで様々なWatson APIを使いやすくするUIが提供されます。第一弾としてVisual Recognitionが追加されています
- 「Data Catalog」は「Watson Knowledge Catalog」に名称が変わります 

:triangular_flag_on_post: Watson Studioを始め、上記はすでにIBM Cloud上で利用可能です。無料のライト・アカウントでも使えます。上記の名称変更・再編に伴い、**カタログのアイコンが新しいものに変更になっています**のでご注意ください。

:alarm_clock: 1分終了です。
ここからはもう少し詳しくご紹介しますので、お時間あればお読みください。
# Watson Studioの全体図

以下がWatson Studioの全体図です(日本語に翻訳)
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/4de3d987-f2ca-7ea8-0cf8-07d260cce701.png)

- ①はソリューションやアプリケーションの層ですが、英語の世界の話で日本語はまだ先だと思うので今はスルーします。
- ②のWatson Studioが③のWatson APIを包含しているのは全体で１つのプラットフォームである、との主張でしょうか。実際、今まではWatson API群とWatson Data Platformのサービス群はブランディングとして「Watson」という名前は共通していましたが、「しくみ」面では殆ど関係ないものでした。今後は**１つの統合された=使いやすい AIプラットフォームとして育てていくよ**、という方向性を示したものと理解しています。
- ④は今までのDSXの領域、⑤は今までのWMLの領域ですね
- ⑥も従来のData Calalog＝データガバナンスの領域です。⑥で目新しいものに「Data Kits」というのがあります。これは様々な業界別に事前に整理されたデータのAPI群です。例えば「Watson Data Kit for food menus」は全米21,000の都市の70万のレストランのメニューのデータをAPIでご提供します。（っても、こちらも英語の世界なので当面はスルー、ですが）
- まとめると、大きくは②Watson Studioと⑥Watson Knowledge Catalogの二本柱で進めていく、という感じでしょうか。

# Watson Studioのコンセプト

従来のサービスをご存知の方には釈迦に説法でしょうが、初めての方向けに簡単にご紹介します。

- よく「データサイエンティストに求められるスキル」として①業務の知識 ②統計解析の知識 ③ITの知識が挙げられます。とはいえ、この３つをすべて兼ね備えた「スーパーマン」のような人材はそう多くはありません。
- 「AI」という言葉が一般化し、企業がデジタル・イノベーションの手段としてのAI/データサイエンスの可能性に注目するにつれ、AIプロジェクトの数とサイズは飛躍的に増加しています。
- そのような背景で、昨今、AI(≒データサイエンス) プロジェクトは以下のように様々な役割のメンバーからなるチームで推進される「**チーム・スポーツ**」にならざるを得ません。

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/e5df7eeb-aa74-c31b-75d8-4de0e25fa94b.png)

「Watson Studio」はAIプロジェクト・チームの生産性を向上するプラットフォームとして、以下のアプローチを取っています。

① プロジェクトの全ライフサイクルを１つのプラットフォーム上でサポート
② オープンなプログラミング言語/フレームワークを積極的に採用
③ 役割毎に様々なツールの選択肢を用意し、各人は好みのツールを使用可能
④ ツール間連携、成果物/アセットのシェアなどチームのコラボを促進
⑤ 上記一式をクラウド上のサービスとして迅速に提供

要は下記の絵のように、各人はお好みのツールを使いながらも、全体は１つの共通プラットフォーム上でコラボしてプロジェクトを進める感じです。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/9471c589-17b1-59e9-6932-8ad1630d937a.png)

:triangular_flag_on_post: (2018/7/28追記) Watson Studioの**チーム機能**って例えばどんなもの？という紹介記事を[こちら](https://qiita.com/ishida330/items/75be527ebf97f3e30a82)に書きましたのでよろしければご参照ください。

# で、どんなことができるのか?
以下はWatson Studioにログイン直後の画面に表示されるメニューです。このメニューに沿って、「できること」をザクッと簡単にご紹介していきます。

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/1733527f-69bd-02e6-9f4a-6f929a06b290.png)


:point_right: Watson Studioの元になったDSXについて[この記事](https://qiita.com/ishida330/items/db496801290279aa015d)でご紹介しています

## Project(プロジェクト)

Watson Studioでは「プロジェクト」という枠組みでデータサイエンス・チームが分析や開発で使うデータや機械学習モデル、プログラムなどを管理できます。（旧DSXの機能と同じです）

- 「プロジェクト」の下に、様々な分析アセットを格納・管理します

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/b64347c4-9513-1d5e-f584-ede2cd4c7b7a.png)


## Refine Data（データの準備)

四則演算、フィルタリング、集約、ジョイン等様々な加工・補正が行えます。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/a36827a1-0a62-3a44-c496-a4ad5b0b80ce.png)

データの品質を確認し、傾向を理解するための可視化もできます。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/704c8d05-a5dd-d976-b62a-94099470eda4.png)

:triangular_flag_on_post: (2018/6/14追記) Data Refineryの紹介記事を[こちら](https://qiita.com/ishida330/items/d7a6dcbce040eeee436a)に書きましたのでよろしければご参照ください。

## Notebook

おなじみのJupyter Notebookが使えます。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/2104c20d-f25a-500f-9e5c-ef4be93fcafd.png)

標準で以下のフレームワークをサポートしています。詳しくは[Supported Frameworks](https://dataplatform.ibm.com/docs/content/analyze-data/pm_service_supported_frameworks.html)を。下記以外をご自身でインストールすることも、もちろんできます。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/37895622-45aa-fbbd-17c8-8fea8c3c72cd.png)

Rがお好きな方はR Studioでどうぞ。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/c443add8-2b16-ddbf-36fa-47c47e9bd809.png)

## Deep Learning(ディープ・ラーニング)

ここで言う「ディープ・ラーニング」とは、機械学習の一手法である「**ニューラル・ネットワーク**」のことです。従来もDSXのJupyter Notebook上でTensorFlowやKerasを自分でインストールしてプログラムからAPIをたたいて動かすことは可能でしたが、今回はDeep learning as a Service(DLaaS)として、ニューラルネットワークのモデル作成～トレーニング～デプロイをサポートする新たな機能が追加されています。(2018/04/14追記) 詳しくは[Watson Studioのディープラーニング機能(DLaaS)を使ってみた](https://qiita.com/ishida330/items/b093439a1646eba0f7c6)の記事をご参照ください。

#### ニューラル・ネットワーク･モデルの開発の流れ

通常、ニューラル・ネットワーク(NN)でのモデル構築では最適な出力を得るため(=最適な特徴量を探すため)にパラメーターの組み合わせを変えて何度も（時には数百・数千回も）トレーニングを実行します。結果、手作業でのトレーニング実行が煩雑であったり、トレーニングの実行時間が数日に及ぶこともあります。Watson Studioではトレーニングの自動実行やGPUの利用&トレーニングの並列実行により、NNのモデル開発を楽に/速く行えます。

#### Watson StudioでのDLaaS機能
以下が大きな流れです。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/bb7bfd61-0193-d724-68ec-62fa4c811be0.png)

:small_blue_diamond:下記のフレームワークをサポートしています。細かい仕様は[こちら](https://dataplatform.ibm.com/docs/content/analyze-data/ml_dlaas_supported_frameworks.html?audience=wdp&context=analytics)
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/7d725049-df62-41fa-311b-34dcac04ba7f.png)


###### ①ニューラル・ネットワークのデザイン

「Neural Network Designer」を使って、コーディングせずにベースとなるニューラルネットワークのモデルが作れます。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/d9842120-5b12-29e1-1c0d-8a7cc56a9bbe.png)

(Neural Network Designerを使わず、コードで対応することも可能です)

###### ②パラメーターのバリエーション

②～④は「 Experiment Assistant 」が様々な機能を提供します。

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/2ba972b8-dbdc-8760-da33-10f074daa7f4.png)

①の結果は「Training Definition」としてデプロイされます。Experiment Assistantでは「Training Definition」を入力にしてモデルのパラメーターの組み合わせを様々に変化させて最適な性能のモデルを作り出すHPO(ハイパー・パラメーター最適化)機能が搭載されていますので、手作業でのパラメーター調整をトライ&エラーで行う必要がありません。（HPOを使わず、ご自身で調整することも可能です）
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/82f560b4-0fd7-6e0f-6f03-f1bf090e00bb.png)

###### ③トレーニングの実行

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/1263c8ac-15ed-d1d8-feee-20d7bf1d61fc.png)

:small_blue_diamond:NVIDIAのGPUをオンデマンドで利用できます。実際にモデル構築などでGPUを使っている時間だけに課金され、データを整備している間などは課金されませんので、お得です。
:small_blue_diamond: 一台のマシンのGPUでは能力が不足な場合、Kubernetesクラスター環境で並列にトレーニングを実行することも可能です.(現時点ではTensorFlowのみ）

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/7da37771-9d5c-65cd-614e-3a52e4ed29a3.png)

###### ④性能の評価

トレーニングの進行状況の表示、多数のトレーニングの結果の性能比較などをブラウザー上のUIで参照できます。もう実行ログから数字を拾う必要はありません。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/65e3f824-91e8-dfd3-beec-c32d730b1e75.png)

以下のMediumの記事も参考になります。
[Accelerate Your Deep Learning Experiments with IBM’s Neural Network Modeler](https://medium.com/ibm-watson/accelerate-your-deep-learning-experiments-with-ibms-neural-network-modeler-dd0c92fba814)
[Deep Learning as a service now in IBM Watson Studio](https://medium.com/ibm-watson/deep-learning-now-in-ibm-watson-studio-d8ba311e4ff1)

性能が満足いくものであれば、本番に反映です。作ったモデルはMachine Learning上のUIを使って、簡単に本番へデプロイできます。(APIでプログラム的にデプロイすることも可能）


## Modeler Flow( モデラー・フロー )

SPSS Modelerがブラウザー上での新しいUIを伴ってWatson Studio上で利用できます。

- 現時点ではPC版のアイコンが全部移植されているわけではありません(６－７割の感じでしょうか)
- PC版のSPSS Modelerのストリーム・ファイル(*.str)をアップロードして利用できます。(逆方向も可）

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/5b997ba2-aa63-120c-6900-923be859fed7.png)

## Model( モデル )
Watson Machine Learingサービスの扱う領域です。機械学習モデルの構築～性能評価～本番デプロイ～監視～再構築のフルサイクル＝「継続的な学習」を自動できます。(下記赤い枠がMachine Learningの担当部分)

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/5a033349-2499-f9c9-19e3-279debcc8057.png)

:point_right: WMLについては[この記事](https://qiita.com/ishida330/items/0b60bc6f715df9da641c)でご紹介しています

#### AIモデルの構築とトレーニング
:small_blue_diamond:コーディングせずとも、予測モデル（教師あり=分類と回帰）をウイザードで簡単に作ることができます。「予測したいフィールド」と「入力フィールド」を指定するだけです。
- データは自動的に「モデル構築用」「評価用」「テスト用」に分割します
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/c4d3ebde-7bf3-f529-dbd6-fae9dd1855b9.png)

:small_blue_diamond:トレーニング後のモデル性能も見られます
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/7bd563f3-6646-c517-b553-9ed543eb5e3e.png)

#### AIモデルのデプロイ
作成したモデルの本番環境へのデプロイもウイザードで簡単に行えます
:small_blue_diamond:実行モードは ①オンライン ②バッチ ③ストリーミングから選べます 
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/74fec712-18cb-2bb9-45af-527861efb8da.png)

:small_blue_diamond:デプロイ後のモデルのテストも行えます

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/6d030802-fd5b-cef1-3e63-87ba20ddf598.png)


#### モニター、分析、管理
継続的な本番運用で必要な以下の項目も自動化できます

- 本番での性能モニター
- モデル性能が劣化した場合のモデルの再構築
- 再構築したモデルの自動デプロイ

下記は時系列で本番のモデル性能をモニターしている様子です
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/6319e481-8b82-4478-6a0b-c7abd91837be.png)

:point_right: WMLの「継続的学習システム」については[この記事](https://qiita.com/ishida330/items/7bdbf180b0f523d84d50)でご紹介しています

## Streams Flow ( ストリーム・フロー )  

IoTのユースケースで、刻一刻と流れてくる大量のストリーミング・データをリアルタイムで分析することもできます。Stream Designerを使えばプログラミングも不要です。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/e55a95a5-463e-a49e-e37c-f73fcd279cb8.png)


ここまでは基本的なメニューを順番にご紹介してきましたが、他にも以下のようなことができます。

## Watson APIとの統合

Watson API向けのUIを提供します。第一弾として、画像認識のサービスであるVisual Recognition API向けのUIが提供されており、カスタマイズした画像の判定/識別モデルを作成できます。[2018/08/10にはNLUも正式リリース](https://www.ibm.com/blogs/bluemix/2018/08/watson-nlc-tooling-ga/)しました。今後、いろいろな機能が追加されていくのでしょう。

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/cc27a02d-ed54-c9bf-42a5-41e8ebfa63f2.png)

- カスタマイズの可否はWatson API側の機能に依存する話だと思うので、Watson StudioはメニューやUIを統合することで「Watsonを使いやすくする」ことに注力するのかな～、と想像しています

## Dashboard

プロジェクトでの分析の結果を簡単にダッシュボード化して、チームにシェアしたり、公開できます。

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/57163658-fc68-7463-1aa7-b852c83288f9.png)

# ICP for Dataとの連携
別途、**プライベート・クラウド**向けのデータサイエンス・プラットフォームとして[IBM Cloud Private for Data](https://www.ibm.com/analytics/cloud-private-for-data/)が発表されています。ICP for Dataとは

- Kubernetesベースのプライベート・クラウド・プラットフォームであるICP( IBM Cloud Private)上に追加でデプロイ可能なコンテナ・サービス群です
- プライベート・クラウド上で、データベース/データ統合/ガバナンス/マシンラーニングなどの機能をまとめてご提供します

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/79dff956-d202-bd46-4c05-05e8215f8447.png)

Watson StudioはICP for Dataと連携し、データ、機械学習モデルやメタデータをシームレスに統合できます。たとえば、ディープ・ラーニングでは通常ひとつだけモデルを作ることは無く、パラメーターを変えながら多数のモデルを作り最適な性能のモデルを探ります。その作業は大量のCPUリソースが必要なので、実行はGPUを活用できるクラウド上のWatson Studioが向いています。Watson Studioで最適なモデルができたら、それをダウンロードしてICP for Dataに取り込んで実行する、といったことが可能になります。

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/fd6f65d9-905c-09ab-e757-02e3ba2e0166.png)

## Watson Knowledge Catalog
今までData Catalogと呼ばれていたサービスの名称変更＆機能強化です。要はデータ・レイクを含む企業内の様々なデータをカタログ化して、すぐに使える状態に管理します。データ・ガバナンスの領域のサービス、といったらわかりやすいですかね。

# 文献
[Introducing IBM Watson Studio](https://medium.com/ibm-watson/introducing-ibm-watson-studio-e93638f0bb47) - 紹介Blog
[Welcome to Watson Studio and Watson Knowledge Catalog](https://dataplatform.ibm.com/docs/content/getting-started/welcome-main.html) - ドキュメント
[IBM Watson and Cloud Platform Learning Center](https://developer.ibm.com/clouddataservices/) - スキル
[Learning Center - Watson Studio](https://developer.ibm.com/clouddataservices/docs/ibm-data-science-experience/)
[MediumのWatson AI&Data系の最新記事ポータル](https://medium.com/ibm-watson)
[IBM Watson Studio in 10 videos](https://medium.com/ibm-watson/ibm-watson-studio-in-10-videos-6acf96cc608a)

#### 独り言
:sweat_smile: どうでもいい話ですが、最近のIBMは「コグニティブ」ではなく「AI」という言葉を使うようになってきたようですね。昔は「いや、AIではなく専門家の知識を強化・拡張する意味でコグニティブと言ってですね。。」とか話をしてたんですが、世間一般に「AI」という言葉が広く認知・収斂したので、「もう説明すんの面倒くさいからAIでいいや。。」となったのかな～と想像。あ、色々変わったから、今まで書いた記事、またアップデートしないと。。。:cold_sweat: