5.3. カスタムモデルの設定
組織管理者は、組織の既存の Ansible コンテンツでトレーニングされた、微調整されたカスタムモデルを作成して使用できます。この機能を使用すると、組織の自動化パターンに合わせてモデルを調整し、コード推奨エクスペリエンスを向上させることができます。
カスタムモデルを作成したら、次のいずれかのアクセスタイプを指定できます。
組織内の全ユーザーのアクセスを有効にする
組織のデフォルトモデルとしてカスタムモデルを設定できます。組織内の全ユーザーがカスタムモデルを使用できます。
組織内の一部の Ansible ユーザーのアクセスを有効にする
Ansible VS Code 拡張機能の model-override 設定を使用すると、特定の Ansible ユーザーは、Ansible Lightspeed サービスを調整して、デフォルトモデルではなくカスタムモデルを使用できます。
5.3.1. カスタムモデル設定のプロセス
カスタムモデルを設定するには、以下のタスクを実行します。
5.3.2. コンテンツパーサーツールを使用したトレーニングデータセットの作成
コマンドラインインターフェイス (CLI) ツールであるコンテンツパーサーツールを使用して、既存の Ansible ファイルをスキャンし、カスタムモデルトレーニングデータセットを生成します。トレーニングデータセットには、Ansible ファイルのリストと、プロジェクトルートからの相対パスが含まれています。次に、このデータセットを IBM watsonx Code Assistant にアップロードし、これを使用して、組織の既存の Ansible コンテンツに登録されたカスタムモデルを作成できます。
5.3.2.1. トレーニングセットの作成方法
次のいずれかの方法を使用して、トレーニングデータセットを生成できます。
ansible-lint 前処理を使用する場合
デフォルトでは、コンテンツパーサーツールは、ansible-lint 前処理を使用してトレーニングデータセットを生成します。コンテンツパーサーツールは、ansible-lint ルールを使用して Ansible ファイルをスキャンし、コンテンツが Ansible のベストプラクティスに準拠していることを確認します。ルール違反が見つかった場合、コンテンツパーサーツールは生成された出力からこれらのファイルを除外します。このようなシナリオでは、ルール違反を解決し、コンテンツパーサーツールを再度実行して、生成された出力にすべての Ansible ファイルが含まれるようにする必要があります。
ansible-lint 前処理を使用しない場合
ansible-lint の前処理を行わずにトレーニングデータセットを生成できます。この方法では、コンテンツパーサーツールは Ansible ファイルの ansible-lint ルール違反をスキャンしないため、トレーニングデータセットにはすべてのファイルが含まれます。トレーニングデータセットにはすべてのファイルが含まれていますが、Ansible のベストプラクティスに準拠していない可能性があり、コード推奨エクスペリエンスの品質に影響を与える可能性があります。
5.3.2.2. サポートされるデータソース
コンテンツパーサーツールは、以下のディレクトリーおよびファイル形式をスキャンします。
- ローカルディレクトリー
-
アーカイブファイル (
.zip
、.tar
、.tar.gz
、.tar.bz2
、.tar.xz
ファイルなど) - Git リポジトリー URL (プライベートリポジトリーとパブリックリポジトリーの両方を含む)
5.3.2.3. トレーニングデータセットの作成プロセス
カスタムモデルトレーニングデータセットを作成するには、次のタスクを実行します。
- コンテンツパーサーツールをコンピューターにインストールする
- カスタムモデルトレーニングデータセットを生成する
- 生成されたトレーニングデータセットを表示する
- ansible-lint ルール違反を解決する (オプション: ansible-lint 前処理を使用してトレーニングデータセットを生成し、ansible-lint ルール違反を検出した場合)
- 複数のトレーニングデータセットを 1 つの JSONL ファイルにマージする (オプション: 複数のトレーニングデータセットを生成した場合)
5.3.2.4. コンテンツパーサーツールのインストール
コマンドラインインターフェイス (CLI) ツールであるコンテンツパーサーツールをコンピューターにインストールします。
前提条件
コンピューターに次のいずれかのサポートされている OS があることを確認します。
- Python バージョン 3.10 以降。
Linux や Mac OS などの UNIX OS。
注記Microsoft Windows OS へのコンテンツパーサーツールのインストールはサポートされていません。
手順
作業ディレクトリーを作成し、
venv
Python 仮想環境を設定します。$ python -m venv ./venv
$ source ./venv/bin/activate
pip
リポジトリーから最新バージョンのコンテンツパーサーツールをインストールします。$ pip install --upgrade pip
$ pip install --upgrade ansible-content-parser
以下のいずれかのタスクを実行します。
- ansible-lint の前処理なしでトレーニングデータセットを生成するには、カスタムモデルトレーニングデータセットの生成 セクションを参照してください。
ansible-lint 前処理を使用してトレーニングデータセットを生成するには、最新バージョンの ansible-lint がコンピューターにインストールされていることを確認してください。
コンピューターにインストールされている ansible-lint のバージョンを表示します。
$ ansible-content-parser --version
$ ansible-lint --version
アプリケーションのバージョンとその依存関係のリストが表示されます。
コンテンツパーサーツールでインストールされた ansible-lint のバージョンが、以前にインストールされた ansible-lint のバージョンと同じであることを出力で確認します。インストールされている ansible-lint のバージョンが一致しないと、コンテンツパーサーツールと ansible-lint の結果が矛盾します。
たとえば、次の出力では、コンテンツパーサーツールのインストールには、以前にインストールされた ansible-lint バージョン 6.13.1 とは一致しない ansible-lint バージョン 6.20.0 が含まれています。
ansible-content-parser --version ansible-lint --version
$ ansible-content-parser --version ansible-content-parser 0.0.1 using ansible-lint:6.20.0 ansible-core:2.15.4 $ ansible-lint --version ansible-lint 6.13.1 using ansible 2.15.4 A new release of ansible-lint is available: 6.13.1
6.20.0 Copy to Clipboard Copied! ansible-lint のバージョンが一致しない場合は、
venv
Python 仮想環境を非アクティブ化して、アクティブ化し直します。$ deactivate
$ source ./venv/bin/activate
コンテンツパーサーツールでインストールされた ansible-lint のバージョンが、以前にインストールされた ansible-lint のバージョンと同じであることを確認します。
$ ansible-content-parser --version
$ ansible-lint --version
たとえば、次の出力は、コンピューター上の両方の ansible-lint インストールがバージョン 6.20.0 であることを示しています。
ansible-content-parser --version ansible-lint --version
$ ansible-content-parser --version ansible-content-parser 0.0.1 using ansible-lint:6.20.0 ansible-core:2.15.4 $ ansible-lint --version ansible-lint 6.20.0 using ansible-core:2.15.4 ansible-compat:4.1.10 ruamel-yaml:0.17.32 ruamel-yaml-clib:0.2.7
Copy to Clipboard Copied!
5.3.2.5. カスタムモデルトレーニングデータセットの生成
コンテンツパーサーツールをインストールした後、それを実行してカスタム Ansible ファイルをスキャンし、カスタムモデルトレーニングデータセットを生成します。その後、トレーニングデータセットを IBM watsonx Code Assistant にアップロードし、組織向けのカスタムモデルを作成できます。ansible-lint 前処理を使用していてルール違反が発生した場合は、トレーニングデータセットを IBM watsonx Code Assistant にアップロードする前に ルール違反を解決する 必要があります。
次のいずれかの方法を使用して、トレーニングデータセットを生成できます。
ansible-lint 前処理を使用する場合
デフォルトでは、コンテンツパーサーツールは、ansible-lint 前処理を使用してトレーニングデータセットを生成します。コンテンツパーサーツールは、ansible-lint ルールを使用して Ansible ファイルをスキャンし、コンテンツが Ansible のベストプラクティスに準拠していることを確認します。ルール違反が見つかった場合、コンテンツパーサーツールは生成された出力からこれらのファイルを除外します。このようなシナリオでは、ルール違反を解決し、コンテンツパーサーツールを再度実行して、生成された出力にすべての Ansible ファイルが含まれるようにする必要があります。
ansible-lint 前処理を使用しない場合
ansible-lint の前処理を行わずにトレーニングデータセットを生成できます。この方法では、コンテンツパーサーツールは Ansible ファイルの ansible-lint ルール違反をスキャンしないため、トレーニングデータセットにはすべてのファイルが含まれます。トレーニングデータセットにはすべてのファイルが含まれていますが、Ansible のベストプラクティスに準拠していない可能性があり、コード推奨エクスペリエンスの品質に影響を与える可能性があります。
前提条件
- コンピューターにコンテンツパーサーツールがインストール済みである。
- コンテンツパーサーツールでインストールされた ansible-lint のバージョンが、以前にインストールされた ansible-lint のバージョンと同じであることを確認する必要があります。
手順
コンテンツパーサーツールを実行してトレーニングデータセットを生成します。
-
ansible-lint 前処理を使用する場合:
$ ansible-content-parser source output
ansible-lint 前処理を使用しない場合:
$ ansible-content-parser source output -S
次の表に、必要なパラメーターをまとめています。
パラメーター 説明 source
トレーニングデータセットのソースを指定します。
output
トレーニングデータセットの出力を指定します。
-S
または--skip-ansible-lint
トレーニングデータセットの生成中に ansible-lint の前処理をスキップするように指定します。
例: ソースが Github URL https://github.com/ansible/ansible-tower-samples.git で、出力ディレクトリーが
/tmp/out
の場合、コマンドプロンプトは、
$ ansible-content-parser https://github.com/ansible/ansible-tower-samples.git/tmp/out
のようになります。-
ansible-lint 前処理を使用する場合:
オプション: 追加情報を含むトレーニングデータセットを生成するには、コンテンツパーサーツールの実行中に次のパラメーターを指定します。
パラメーター 説明 --source-license
source ディレクトリーのライセンス情報をトレーニングのデータセットに含めるように指定します。
--source-description
トレーニングデータセットにソースディレクトリーの説明を含めるように指定します。
--repo-name
トレーニングデータセットにリポジトリー名を含めるように指定します。リポジトリー名を指定しない場合、コンテンツパーサーツールはソース名からリポジトリー名を自動的に生成します。
--repo-url
トレーニングデータセットにリポジトリー URL を含めるように指定します。リポジトリー URL を指定しない場合、コンテンツパーサーツールはソース URL からリポジトリー URL を自動的に生成します。
-v
または--verbose
コンソールのログ情報を表示します。
Github リポジトリー ansible-tower-samples のコマンドプロンプトの例
ansible-content-parser --profile min \ --source-license undefined \ --source-description Samples \ --repo-name ansible-tower-samples \ --repo-url 'https://github.com/ansible/ansible-tower-samples' \ git@github.com:ansible/ansible-tower-samples.git /var/tmp/out_dir
$ ansible-content-parser --profile min \ --source-license undefined \ --source-description Samples \ --repo-name ansible-tower-samples \ --repo-url 'https://github.com/ansible/ansible-tower-samples' \ git@github.com:ansible/ansible-tower-samples.git /var/tmp/out_dir
Copy to Clipboard Copied! Github リポジトリーの ansible-tower-samples 用に生成されたトレーニングデータセットの例
トレーニングデータセットは、コマンドライン JSON 処理ツールである Jeff Goldblum (jg) でフォーマットされます。
cat out_dir/ftdata.jsonl| jq { "data_source_description": "Samples", "input": "---\n- name: Hello World Sample\n hosts: all\n tasks:\n - name: Hello Message", "license": "undefined", "module": "debug", "output": " debug:\n msg: Hello World!", "path": "hello_world.yml", "repo_name": "ansible-tower-samples", "repo_url": "https://github.com/ansible/ansible-tower-samples" }
$ cat out_dir/ftdata.jsonl| jq { "data_source_description": "Samples", "input": "---\n- name: Hello World Sample\n hosts: all\n tasks:\n - name: Hello Message", "license": "undefined", "module": "debug", "output": " debug:\n msg: Hello World!", "path": "hello_world.yml", "repo_name": "ansible-tower-samples", "repo_url": "https://github.com/ansible/ansible-tower-samples" }
Copy to Clipboard Copied!
5.3.2.6. 生成されたトレーニングデータセットの表示
コンテンツパーサーツールは、Ansible ファイルをスキャンした後、出力ディレクトリーにトレーニングデータセットを生成します。トレーニングデータセットには、コンテンツパーサーツールのメイン出力である ftdata.jsonl ファイルが含まれています。このファイルは JSON Lines ファイル形式で利用でき、各行のエントリーは JSON オブジェクトを表します。カスタムモデルを作成するには、この JSONL ファイルを IBM watsonx Code Assistant にアップロードする必要があります。
結果
生成された出力ディレクトリーには、以下のファイル構造があります。
output/ |-- ftdata.jsonl # Training dataset |-- report.txt # A human-readable report | |-- repository/ | |-- (files copied from the source repository) | |-- metadata/ |-- (metadata files generated during the execution)
output/
|-- ftdata.jsonl # Training dataset
|-- report.txt # A human-readable report
|
|-- repository/
| |-- (files copied from the source repository)
|
|-- metadata/
|-- (metadata files generated during the execution)
詳細は以下のようになります。
- ftdata.jsonl: コンテンツパーサーツールのメイン出力であるトレーニングデータセットファイル。このファイルは JSON Lines ファイル形式で利用でき、各行のエントリーは JSON オブジェクトを表します。カスタムモデルを作成するには、この JSONL ファイルを IBM watsonx Code Assistant にアップロードする必要があります。
- report.txt: すべてのコンテンツパーサーツールの実行をまとめた、人間が判読できるテキストファイル。
- repository: ソースリポジトリーのファイルを含むディレクトリー。場合によっては、ansible-lint は設定されたルールに従ってディレクトリーを更新するため、出力ディレクトリーのファイルの内容がソースリポジトリーと異なる場合があります。
- metadata: 各コンテンツパーサーツールの実行中に生成されるメタデータファイルが複数含まれるディレクトリー。
次のステップ
report.txt ファイルを使用して ansible-lint ポリシー違反を解決できます。report.txt ファイルには、次の情報が含まれています。
- タイプごとのファイル数: Playbook、タスク、ハンドラー、jinja2 などのファイルタイプに応じたファイルのリスト。
- 識別された Ansible ファイルのリスト: ansible-lint によってファイル名別、ファイルタイプ別に識別されたファイルのリスト。そのファイルが以降の処理から除外されたか、または ansible-lint によって自動的に修正されたかどうかが示されます。
- タスクで検出された Ansible モジュールのリスト: ansible-lint によってモジュール名別、モジュールタイプ別に識別されたモジュールのリスト。また、ファイルが以降の処理から除外されたか、または ansible-lint によって自動的に修正されたかどうかが示されます。
- ansible-lint で検出された問題: ansible-lint の実行結果の概要と問題のリスト。ansible-lint は最初の実行で構文チェックエラーのあるファイルに遭遇すると、2 回目の実行を開始し、エラーのあるファイルをスキャンから除外します。この情報を使用して、ansible-lint ルール違反を解決できます。
5.3.2.7. ansible-lint ポリシー違反について
デフォルトでは、コンテンツパーサーツールは、ansible-lint ルールを使用して Ansible ファイルをスキャンし、コンテンツが Ansible のベストプラクティスに準拠していることを確認します。ルール違反が見つかった場合、コンテンツパーサーツールは生成された出力からこれらのファイルを除外します。このようなシナリオでは、トレーニングデータセットを IBM watsonx Code Assistant にアップロードする前に、ルール違反のあるファイルを修正することを推奨します。
デフォルトでは、ansible-lint は、Ansible ファイルのスキャン中に ansible-lint/src/ansiblelint/rules
に設定されているルールを適用します。ansible-lint ルールの詳細は、Ansible Lint のドキュメント を参照してください。
5.3.2.7.1. コンテンツパーサーツールはルール違反をどのように処理しますか?
自動修正の使用
コンテンツパーサーツールは
--fix=all
オプションを指定して ansible-lint を実行し、自動修正し、そのルールによって特定された問題を修正し、ルールで識別された問題修正を簡素化します。ansible-lint で、自動修正が関連付けられているルール違反が特定されると、ルール違反がある問題を自動的に修正するか、修正を簡素化します。ansible-lint は、自動修正が関連付けられていないルール違反を特定した場合、これらのインスタンスを手動で修正する必要があるルール違反として報告します。自動修正の詳細は、Ansible Lint ドキュメントの 自動修正 を参照してください。
syntax-checks の使用
Ansible-lint は、Ansible ファイルのスキャン中に構文チェックも実行します。syntax-check エラーが見つかった場合、ansible-lint はファイルの処理を停止します。syntax-check エラーの詳細は、Ansible Lint ドキュメントの syntax-check を参照してください。
コンテンツパーサーツールは、次の方法で syntax-check ルールの違反を処理します。
-
ansible-lint の最初の実行で
syntax-check
エラーが見つかった場合、コンテンツパーサーツールはルール違反を含むファイルのリストを生成します。 -
ansible-lint の最初の実行で 1 つ以上の
syntax-check
エラーが見つかった場合、コンテンツパーサーツールは ansible-lint を再度実行しますが、構文チェックエラーのあるファイルは除外されます。スキャンが完了すると、コンテンツパーサーツールはルール違反を含むファイルのリストを生成します。リストには、syntax-check エラーやその他のルール違反の原因となったすべてのファイルが含まれます。コンテンツパーサーツールは、今後の全スキャンでルール違反のあるファイルを除外するため、最終的なトレーニングデータセットには除外されたファイルのデータは含まれません。
-
ansible-lint の最初の実行で
5.3.2.8. ansible-lint ルール違反の解決
コンテンツパーサーツールが Ansible ファイルで ansible-lint ポリシー違反を見つける場合は、トレーニングデータセットを IBM watsonx Code Assistant にアップロードする前に、ルール違反のあるファイルを修正することを推奨します。ルールの条件を解決しない場合、コンテンツパーサーツールはこれらのファイルを生成された出力から除外します。
手順
ansible-lint ルール違反を解決するには、次のいずれかの方法を使用します。
--no-exclude
オプションを指定してコンテンツパーサーツールを実行します。構文チェックエラーなどのルール違反が見つかった場合、実行はエラーで中止され、トレーニングデータセットは作成されません。
--profile
オプションを使用して、ansible-lint がデータのスキャンに使用するルールのセットを制限します。ルール違反のあるファイルを修正することを推奨します。ただし、ソースファイルを変更しない場合は、ansible-lint がデータのスキャンに使用するルールのセットを制限できます。ansible-lint がデータのスキャンに使用するルールのセットを制限するには、事前定義されたプロファイル (例:
min
、basic
、moderate
、safety
、shared
、またはproduction
プロファイル) で--profile
オプションを指定するか、ansible-lint 設定ファイルを使用して指定します。詳細は、Ansible Lint のドキュメント を参照してください。ansible-lint の前処理をスキップしてコンテンツパーサーツールを実行します。
ansible-lint の前処理なしでコンテンツパーサーを実行できます。コンテンツパーサーツールは、ansible-lint ルール違反をスキャンせずにトレーニングデータセットを生成します。
ansible-lint 前処理を行わずにコンテンツパーサーツールを実行するには、
$ ansible-content-parser source output -S
のコマンドを実行します。詳細は以下のようになります。
-
Source
: トレーニングデータセットのソースを指定します。 -
output
: 登録データセットの出力を指定します。 -
-S
または--skip-ansible-lint
: トレーニングデータセットの生成中に ansible-lint の前処理をスキップするように指定します。
-
5.3.2.9. 複数のトレーニングデータセットの単一ファイルへの結合
実行ごとに、コンテンツパーサーツールは ftdata.jsonl という名前のトレーニングデータセット JSONL ファイルを作成します。カスタムモデルを作成するために、このファイルを IBM watsonx Code Assistant にアップロードします。コンテンツパーサーツールを複数回実行すると、複数の JSONL ファイルが作成されます。IBM watsonx Code Assistant は、単一の JSONL ファイルのアップロードのみをサポートします。したがって、複数の JSONL ファイルがある場合は、それらを 1 つの連結されたファイルにマージする必要があります。親ディレクトリー内の複数のサブディレクトリーに生成された複数の JSONL ファイルを 1 つのファイルにマージすることもできます。
手順
- コマンドプロンプトを使用して、親ディレクトリーに移動します。
-
find . -name ftdata.json | xargs cat > concatenated.json
コマンドを実行して、連結されたファイルを 1 つ作成します。 - オプション: 識別しやすいように、連結されたファイルの名前を変更します。
これで、マージされた JSONL ファイルを IBM watsonx Code Assistant にアップロードし、カスタムモデルを作成できるようになります。
5.3.3. IBM watsonx Code Assistant でのカスタムモデルの作成およびデプロイ
コンテンツパーサーツールがカスタムモデルトレーニングデータセットを生成した後、JSONL ファイル ftdata.jsonl を IBM watsonx Code Assistant にアップロードし、組織用のカスタムモデルを作成します。
IBM watsonx Code Assistant は、トレーニングデータセットのサイズによっては、カスタムモデルの作成に数時間かかる場合があります。カスタムモデル作成のステータスは、IBM Tuning Studio を引き続き監視する必要があります。
IBM watsonx Code Assistant でカスタムモデルを作成およびデプロイする方法は、IBM watsonx Code Assistant のドキュメント を参照してください。
5.3.4. カスタムモデルを使用するための Red Hat Ansible Lightspeed の設定
IBM watsonx Code Assistant でカスタムモデルを作成してデプロイした後に、組織のカスタムモデルを使用できるように Red Hat Ansible Lightspeed を設定する必要があります。
カスタムモデルを使用するには、以下のいずれかの設定を指定できます。
組織内の全ユーザーのアクセスを有効にする
組織のデフォルトモデルとしてカスタムモデルを設定できます。組織内の全ユーザーがカスタムモデルを使用できます。
組織内の一部の Ansible ユーザーのアクセスを有効にする
Ansible VS Code 拡張機能の model-override 設定を使用すると、特定の Ansible ユーザーは、Ansible Lightspeed サービスを調整して、デフォルトモデルではなくカスタムモデルを使用できます。たとえば、組織管理者とエンドユーザーの両方として Red Hat Ansible Lightspeed を使用している場合、一部の Ansible ユーザー向けのカスタムモデルをテストしてから、組織内のすべてのユーザーにそのモデルを提供することが可能です。
手順
カスタムモデルには、次の設定のいずれかを選択します。
組織内のすべての Ansible ユーザーのカスタムモデルを設定します。
- 組織管理者として Ansible Lightspeed with IBM watsonx Code Assistant Hybrid Cloud Console にログインします。
カスタムモデルのモデル ID を指定します。
- Model Settings をクリックします。
- Model ID で Add Model ID をクリックします。Model ID を入力する画面が表示されます。
- カスタムモデルの Model ID を入力します。
- オプション: Test model ID をクリックしてモデル ID を検証します。
- Save をクリックします。
組織内の一部の Ansible ユーザーのカスタムモデルを設定します。
- Red Hat アカウントを使用して VS Code アプリケーションにログインします。
-
アクティビティーバーから、Extensions アイコン
をクリックします。
- Installed Extensions リストから Ansible を選択します。
- Ansible 拡張機能ページで、Settings アイコンをクリックし、Extension Settings を選択します。
- 設定のリストから、Ansible Lightspeed を選択します。
Model ID Override フィールドに、カスタムモデルのモデル ID を入力します。
設定は VS Code に自動的に保存され、カスタムモデルを使用できるようになります。