cpdctl ツールを使用した CP4DaaS の AI ライフサイクル・イベント管理

# 目次
0:概要
1:cpdctlのインストールと構成
2:IBM Cloud CLIのインストールとログイン
3:cpdctlによるプロジェクト作成とSPSSストリームの準備
4:cpddtlコマンドによるSPSSジョブの実行

# 0:概要
IBM Cloud Pak for Data Command Line Interface (cpdctl) は、IBM Cloud Pak for Data (CP4D) および IBM Cloud Pak for Data as a Service (CP4DaaS)で、資産の作成から運用を自動化するためのCLIツールです。
本記事ではcpdctlツールを使用して、東京リージョンのCP4DaaSに新規プロジェクト作成及びジョブの実行を行います。
今回の検証コードは[GitHub](https://github.com/s-kochi/samples_cpdctl)にアップロードしてありますのでご活用ください。


:::note info
インフォメーション
弊社よりリリースされているcpdctlツールは、ツール実行環境のOS/アーキテクチャ毎にインストール用のファイルが異なります。
実際に手順を実施される場合は、ご使用される環境に応じたcpdctlツールを選択してください。
本検証では、Mac_M1環境において検証を行ないます。
cpdctlツールのダウンロードページ
https://github.com/IBM/cpdctl/releases/
:::

# 1:cpdctlのインストールと構成
1-1：[samples_cpdctlリポジトリ](https://github.com/s-kochi/samples_cpdctl)から、検証コードを実行環境にダウンロード。
1-2：samples_cpdctlファイルを開き、cpdctl.ipynbを起動。
1-3：ライブラリのインストール
![スクリーンショット 2023-09-05 16.57.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/c4eb82ed-8d29-10fd-cb00-3e3929973f1d.png)
※エラーが発生する場合は適宜、pip install してください。
1-4：cpdctlのインストール
![スクリーンショット 2023-09-05 16.57.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/4d6648f7-dcae-960c-e48d-6f70095c03a9.png)
[実行OS環境](https://github.com/IBM/cpdctl/releases/)に合わせて、下記コード部分を変更。
```ruby:
CPDCTL_ARCH = "{}_amd64".format(PLATFORM)
```
正常にダウンロードされた場合は、cpdctlインストーラーが表示される。
![スクリーンショット 2023-09-06 9.12.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/0fd00b2b-7113-18fe-a27b-99c9633d899b.png)

1-5：cpdctlバージョンチェック
インストールされたバージョンを確認。
本検証時点では1.4.34がインストールされている。
![スクリーンショット 2023-09-06 9.14.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/c845fe42-dbee-da25-194b-a7a2b4b01b4c.png)




# 2:IBM Cloud CLIのインストールとログイン
2-1：IBM Cloud CLIのインストール
OS環境に合わせて[インストールコマンド](https://cloud.ibm.com/docs/cli?topic=cli-getting-started#cli-install-devtools-manually)を選択してください。
検証環境がMacOSなので、下記のコマンドを選択します。
```ruby:
curl -fsSL https://clis.cloud.ibm.com/install/osx | sh
```
ターミナルを開き、インストールコマンドを実行してください。
![スクリーンショット 2023-09-06 9.29.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/662ba754-7935-f0de-854a-6fce87fe03e9.png)

:::note info
インフォメーション
curlコマンドがうまく機能しない場合は、[CLIインストーラー](https://github.com/IBM-Cloud/ibm-cloud-cli-release/releases/)
をローカルに落として、インストールを行う。
:::

2-2：APIキーの発行(※APIキーを発行していない方のみ）
IBM Cloudにログインし、IAMからAPIキーを発行。


2-3：IBM Cloud　ログイン
APIキーの部分に、2-2で発行したAPIキーを記入。
![スクリーンショット 2023-09-06 10.01.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/a5dbbcdc-ce28-078b-43a9-5441cab0ce7c.png)
今回は、東京リージョンにログインするため、末尾に "-r jp-tok" をつけて実行。
東京リージョン以外を選択する場合は、以下の地域コードを入れて実行。
![スクリーンショット 2023-09-06 10.09.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/ef3aaea8-5350-e36b-2e38-28853b349ef0.png)

2-4：IBM Cloud サービスインスタンスの確認
IBM Cloudへのログインが成功すると、現在立ち上げているサービスインスタンス一覧が表示される。
![スクリーンショット 2023-09-07 9.23.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/a0ca5a3c-ac33-318d-e378-087e7f8d0be6.png)

# 3:cpdctlによるプロジェクト作成とSPSSストリームの準備
3-1：IBM Cloud Object Storage（以下ICOSと省略）の作成

ICOSの作成は、[CP4DaaS Watson Studio で作成したSPSSジョブをAPI (Python Code)で実行する方法](https://qiita.com/c_crisp/items/3e69a6e3d456cf57e293)の第2章を参考にしてください。
以降は、ICOSインスタンスが作成済みであることを前提とします。

3-2：サービスインスタンスIDの確認
再度サービスインスタンスをリストし、作成ICOSインスタンスが表示されることを確認。

![スクリーンショット 2023-09-07 9.40.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/fb9e9be0-65c5-24a0-dc64-2c76f1a1d6fc.png)
"Cloud Object Storage-TVE-CP4DaaS"に移動すると、サービスインスタンスの詳細を確認できます。
後工程で、”ID”と”GUID”を使用するためコピー。
![スクリーンショット 2023-09-07 9.45.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/6a00f952-449e-d98f-b7a4-b9615532be21.png)

3-3：Jsonファイルの作成
cpdctlコマンドで新規にプロジェクトを作成するために必要なJsonファイルを作成する。
先ほどメモした、”ID”と”GUID”をペースト。
また、"type"には、"bmcos_object_storage"を記入。
現在、実行中のNotebookと同じ階層に保存（※今回は、storage.jsonで保存）。
![スクリーンショット 2023-09-07 9.55.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/d65f364e-d959-2f67-e517-88c867f38972.png)

3-4：新規プロジェクト作成
新規プロジェクト名は、”import-project_t1”。（※必要に応じて、プロジェクトネームを変更してください。）
末尾に"--storage @storage.json"をつけて実行。
![スクリーンショット 2023-09-07 10.09.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/1b5bd2a4-4b4f-46d9-cf1a-2aaa912e798f.png)
WebブラウザでCP4DaaSのUIにアクセスし、プロジェクトが作成されたことを確認。
![スクリーンショット 2023-09-07 10.03.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/7802b92a-1419-57bf-2160-a4e02f54fce5.png)

IBM cloudにログインをした2-3で表示されているアカウントIDを使用することによって、cpdctl上でプロジェクトを確認することが可能。
![スクリーンショット 2023-10-27 15.51.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/9e02956a-b9f3-44fd-eedf-2a80ffa26e54.png)
![スクリーンショット 2023-09-07 10.40.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/18562783-a0d5-e01e-f74e-a580ddb8df38.png)

3-5:SPSSストリームの準備
SPSSストリームの作成は、[CP4DaaS Watson Studio で作成したSPSSジョブをAPI (Python Code)で実行する方法](https://qiita.com/c_crisp/items/3e69a6e3d456cf57e293)の第3章を参考にしてください。
以降は、SPSSストリームが作成されていることを前提とします。

:::note info
インフォメーション
cpdctlコマンドを用いて、他のプロジェクトで使用した資産をインポートすることが可能です。

STEP1:プロジェクトIDをメモ
![スクリーンショット 2023-09-07 10.42.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/39e15f7f-7b70-1b80-55b3-3e492ec3f809.png)

STEP2:使用したい資産をCP4DaaSのプロジェクトからインポート（※zip形式）

STEP3:インポートするzipファイルを実行中のNotebookと同じ階層に保存（※今回はTVE_cpdctl_1.zipで保存）

STEP4:cpdctlコマンド実行
![スクリーンショット 2023-09-07 10.46.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/104b929b-16bc-1fb1-0431-a8942f74169e.png)

以下のように、資産が追加される。
（※ICOSなどプロジェクトローカル外との接続は切れるため、再度認証が必要になる。）
![スクリーンショット 2023-09-07 10.48.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/fac6b5c9-e618-28ef-9631-9c68797f8931.png)

:::

# 4:cpdctlコマンドによるSPSSジョブの実行
:::note info
前提条件
今回の検証で使用するSPSSストリーム使用は以下の通りです。
・モデル読み込みデータはICOSに存在。
・モデル実行ごとに、ICOSからデータ読み込み。
・計算結果は、拡張エクスポートでICOSに出力。
:::

4-1:SPSSストリームのジョブを作成
![スクリーンショット 2023-09-07 11.04.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/54c1c72d-35f2-26b9-1868-ecc6dfed06f9.png)

4-2:SPSSアセットサーチ
作成したジョブがavailable状態にあることを確認。
![スクリーンショット 2023-09-07 11.06.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/1f1837b4-d5d9-a4d8-f511-96c9996fda61.png)

４-3:SPSSジョブの実行
4-3-1:APIキー認証（※SPSSジョブを新規に作成し、実行するためにはAPIキー認証が必要。）
![スクリーンショット 2023-09-07 11.44.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/569db273-ec47-f082-91d6-292cff42fba7.png)
既存のAPIキーを発行している方は、既存のAPI鍵を使用をタップし、認証作業を行う。
APIキー未発行の方は、新しいAPI鍵の生成をタップし、認証作業を行う。
![スクリーンショット 2023-09-07 11.45.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/eb7300f8-db37-db73-8fd5-78ecf22db744.png)
4-3-2:SPSSジョブの実行
”project-id”　本記事 3-5:SPSSストリームの準備で控えたプロジェクトIDを記入
”job-id”　　　本記事 4-2:SPSSアセットサーチで確認したジョブのIDを記入
問題なく実行されると、Startingに移行。
![スクリーンショット 2023-09-07 12.02.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/151e2d13-2d5f-477f-d02c-e5ae918fb6df.png)

:::note info
インフォメーション
Notebookのジョブを実行する場合は、"NOTEBOOK_PARAMETER=example value"に変更してください。
```ruby:
{"env_variables": ["NOTEBOOK_PARAMETER=example value"]}
```
:::

”run-id”を記入し、実行ステータスを確認。
正常にジョブが進行すると、SPSSストリームのジョブ実行が完了し Stream execution complete と表示される。
![スクリーンショット 2023-09-07 12.09.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/4cef3bb0-27c0-2941-e5b0-6a8405e19cae.png)
CP4DaaS上でも、ジョブが問題なく実行完了していることを確認。
![スクリーンショット 2023-09-07 12.11.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/63102189-d4e5-63a2-739e-34468181be63.png)
拡張エクスポート先である、ICOSに計算結果が出力される。
![スクリーンショット 2023-09-07 12.12.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031347/616fb659-011c-0889-b31d-b05e1bf62007.png)

cpdctl ツールを使用した AI ライフサイクル・イベントの管理の解説は以上になります。

# 参照資料
[IBM CPDCTL GitHub](https://github.com/IBM/cpdctl#linking-profile-with-ibm-cloud-cli-configuration)
[IBM Cloud サービスID作成方法](https://qiita.com/c_crisp/items/4c12ee8209283a6e7972)
[IBM cpdctl CLI on IBM Cloud](https://medium.com/@jami.ibct0uge/ibm-cpdctl-cli-on-ibm-cloud-27dceb4825ca)