CADSでMLOps#4モデルリフレッシュ

CADSでMLOps#4モデルリフレッシュ

SPSS Modelerで作ったモデルをCADSと組み合わせてMLOpsで管理していきます。

MLOpsを4つのパートに分けて説明します。
この記事ではモデルリフレッシュ・パイプライン作成について説明します。

1.[モデル作成](https://qiita.com/kawada2017/items/b5e1f94fafadbd2452eb)
2.[スコアリング](https://qiita.com/kawada2017/items/f7aa3716bb916ca76603)
3.[モデルモニタリング](https://qiita.com/kawada2017/items/43ea5d0a4589f402d9eb)
**4.モデルリフレッシュ**

全体イメージの中では、フィードバックデータからモデルリフレッシュ・パイプライン（CADSジョブ）でモデルを再作成して、CADSのレポジトリに保存するところまでの解説になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/77b90bd0-1b6a-07f2-2fc3-70409f56e905.png)


# モデルリフレッシュジョブの作成
まず、スコアリングのジョブをコピーして貼り付け、名前を付けます。ここでは「キャンペーン予測モデルリフレッシュ」としました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/6f687205-ed5b-bb8f-2bfa-aa0d42bbf202.png)

コピーして作成したジョブを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/4f57c27c-172d-fc1b-9dae-12bc88182044.png)


ジョブステップ名は「キャンペーン予測モデルリフレッシュ」を指定しました。
ここではスコアリングと異なりオブジェクトのバージョンは「LATEST」に指定しました。
「タイプ」を「更新」とし、二つのモデルナゲットを更新対象とするチェックを付けました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/ae58e6e5-3727-1a7e-26a3-3b41dd7ec2be.png)

これはストリーム内の二つのモデルナゲットを更新するという意味です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/8b14f75e-dca1-4e88-0a1f-4b74df7714f9.png)

「データファイル」タブに移り、
スコアリングデータ.csvノードには「スコアリングデータ.csv」
学習データ.csvノードには「${JobVariable.FILENAME}」としてジョブ変数を指定します。
つまりモデルを再学習するために使う学習データをジョブ変数で与えることを意図しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/0e9ad038-6020-5232-cdf0-3cd6a3c34d76.png)

# モデルリフレッシュジョブの実行
設定ができたので「保存」で保存をして、「オプションありでジョブを実行」してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/6257c632-6243-c693-6046-c5ee3774781f.png)

FILENAMEに「フィードバックデータ.csv」を指定します。これは「フィードバックデータ.csv」を使ってモデルを作り直すことを意図しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/3205764a-72d6-6648-412b-4769dc56bc21.png)


ジョブ実行が成功したら、モニタリングのパイプラインで精度を確認してみます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/f350e932-2465-10ca-885b-5abf7cf5243c.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/6b501307-4f1c-a84b-8967-1a66bae2eca4.png)

インデックスが81に上昇し、緑丸のアイコンが表示されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/d3556e88-b0a5-33e6-c09a-fe462802f09e.png)

# 更新されたモデルの確認
Modelerでモデルリフレッシュのパイプラインが更新した最新バージョンのストリームを取得してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/2d9b63a3-9094-1a1f-e03d-a09e64b85904.png)

確かにフィードバックデータで学習して、精度が8割程度に上がっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/6c08c542-68fe-d9d3-a623-2831fcb70fdd.png)

モデルもSYSTEMによって更新されていることがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/2c031370-d2c7-46d2-b90c-c897208c7d76.png)

# サンプルストリームやデータ、PES

https://github.com/hkwd/spsssample/tree/master/220805CADSMLOps

* テスト環境
  * Modeler 18.3
  * CADS 8.3
  * Windows 2019


# 参考情報
なぜMLOpsが必要なのか(vol97-0014-ai) 
https://community.ibm.com/community/user/japan/blogs/provision-ibm1/2021/08/17/vol97-0014-ai

失敗しないMLOps (vol97-0017-ai) 
https://community.ibm.com/community/user/japan/blogs/provision-ibm1/2021/10/31/vol97-0017-ai

MLOpsのキホンと動向 | IBM ソリューション ブログ 
https://www.ibm.com/blogs/solutions/jp-ja/mlops-2021-data/