IBM watsonx Code Assistant for Red Hat Ansible Lightspeedでカスタマイズ・モデルの作成

#### はじめに

IBM watsonx Code Assistant for Red Hat Ansible Lightspeed で既存コードのデータからカスタマイズ・モデルの作成を実行したログです。


![スクリーンショット 2024-05-11 9.20.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/a8ca2bcc-4bb3-3288-01de-fbd0204dedf9.png)



以前の記事でチューニングに使用するデータ作成方法を確認しています :arrow_down:

https://qiita.com/c_u/items/78d46c5a52c588a34744


---

#### 環境

・IBM watsonx Code Assistant for Red Hat Ansible Lightspeed 
　(IBM Cloud のSaaS, standard plan)

・VSCode + Ansible Extension
　　- Ansible 2.16.5
　　- python 3.12.3

・Red Hat Ansible Automation Platform subscription


---

#### チューニングの実施


[IBM Cloud Docs watsonx Code Assistant for Red Hat Ansible Lightspeed の IBM 基本コード・モデルのチューニング](https://cloud.ibm.com/docs/watsonx-code-assistant?topic=watsonx-code-assistant-tutorial-tune-ansible) の流れに沿って実施します。


① watsonx Code Assistant インスタンスのウェルカム・ページで、 「モデルのチューニング」 をクリックし、メニューからプロジェクトを選択

<br>

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/0acda071-f5da-3519-25d5-e0629450e1e7.png)


ここでは"プロジェクト"を1つ作成済みです。(作成過程省略)

--

② エクスペリメントの分かりやすい名前と説明を指定し、チューニング・エクスペリメントの作成」 をクリック

<br>

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/d2c61e15-e41b-1b3a-6be1-86d37f3f8c86.png)



<br>

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/1928926c-1a51-8180-145d-ee752a102ffc.png)


--

③ チューニング・データを JSONL 形式でアップロード

<br>

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/89ecea5b-9864-81e5-6ff2-4b317f50450f.png)

--

④ データを IBM 基本コード・モデルのトレーニング・データと比較し「チューニングの開始」 をクリック

<br>

![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/dcef771e-e324-280b-f1b6-fefb1c064862.png)


チューニングが開始されます。

![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/cb1e5a19-70a8-e192-49f2-6c18f0b3a5a9.png)

<br>

実行中...

![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/cf0db64d-2432-b3bf-8e9e-6dd18957ffb3.png)

--

⑤ チューニングが完了しました。「チューニング済みモデルのデプロイ」 をクリック

<br>

![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/c7b96a50-46c9-a127-9912-b0cd94431957.png)


--

⑥ プロイメント名前を指定、モデルのデプロイメント・スペースを選択、作成 をクリック

<br>

![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/dbdc8ab5-c836-3999-6c29-d16ce49acfcf.png)

ここで新しいデプロイメント・スペースを作成することも可能です。

--



<br>

![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/b59388e3-d020-4dfe-637e-db86e8327b57.png)





![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/00c1eef6-99ab-fdbd-1fbb-e0c3517b94e5.png)

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/d81bbe56-c279-b480-328c-91999a9f242e.png)

--

⑦デプロイメントが完了後、モデルの概要ページで モデル ID を確認。
Ansible Lightspeed 管理ポータルを開く。


![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/bfd458cd-9cfa-8a07-1f8a-fb761f220138.png)

カスタマイズ・モデルのIDが作成されているのでこちらをコピーして設定に使用します。

---

#### Red Hat Ansible Admin Portal での設定変更

[Red Hat Ansible Admin Portal](https://c.ai.ansible.redhat.com/console/admin/settings)でモデルID のアップロードとモデルIDの有効性をテストします。

![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/ab2beb28-f634-60b6-390f-c1176adb86bd.png)

Update Model IDでカスタマイズ・モデルIDを入力し、Save後、Test を実行しています。
画面右上のメッセージで モデルIDが valid (有効)であることが返ってきています。


----
####  VSCode の設定


Ansible 拡張機能の Ansible Lightspeed セクションにある Model IDを更新します。

ユーザー、ワークスペース両方に設定しました。

![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/ad52170e-0da6-2d7d-4f70-06565433ddd3.png)

![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/e698d466-9889-734d-ad86-55f7a71f0cfa.png)




----

#### モデル変更前後の確認

同じplaybook内で前にファイルシステム作成コードが存在する次のタスクでファイルシステム作成の assert (条件評価) 文を追加する内容を生成コードとします。

```
- name: assert filesystem creation 
```


##### デフォルトモデルで assert 文の生成を実行した場合

![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/3979939e-7746-26fd-c09a-dc3ec0423c94.png)


ファイルシステムが正しく作成されたかどうかのチェックをしているようには見えていません...


<br>


##### トレーニングしたモデルで assert 文の生成を実行した場合

![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/7d9bc127-ddec-42a7-264a-5d225072d0ee.png)


変数"filesystem" にあたる文字列が mount コマンドの実行で1行分の出力があるかどうかを確認している内容に変更されました。


---


#### おわりに

watsonx Code Assistant はベースのモデルを比較的簡易にトレーニングしてカスタマイズ・モデルを作成することが可能です。


訓練に使用するデータによって失敗することがありましたのでその点は try and error と思います。

:::note warn
注意事項
・元となるデータセットによってはモデル生成が失敗した。
　(何によって引っかかったかは出力に出ることもあるので修正対応は可能)
・日本語が含まれたデータ(jsonlファイル)でのモデル生成は失敗し、日本語を除いてデータを作成すると成功した。
・モデル作られて設定しても正しく動作できないことがあった。(503エラーの発生)
:::


以上です。