カスタム・ソフトウェア仕様を使用して、任意のサード・パーティーのライブラリーまたはユーザー作成の Python パッケージ、あるいはその両方を参照できます。 サード・パーティー・ライブラリーまたはユーザー作成の Python パッケージは、カスタム・ソフトウェア仕様で参照できるように、パッケージ拡張として指定する必要があります。
デプロイメント・ランタイムは、以下の方法でカスタマイズできます。
- watsonx.aiStudio プロジェクトでカスタマイズを定義し、デプロイメントスペースに昇格します。
- watsonx.aiRuntimePythonクライアントを使用して、デプロイメントスペースでパッケージ拡張とカスタムソフトウェア仕様を作成する。
watsonx.aiStudio プロジェクトでカスタマイズを定義し、デプロイメントスペースにプロモートする
watsonx.aiStudio プロジェクトの環境は、Anaconda またはPyPIリポジトリからインストールできるサードパーティライブラリを含めるようにカスタマイズできます。
詳しくは、 環境を参照してください。
カスタム環境の作成の一環として、以下のステップが内部で実行されます (ユーザーに表示されます)。
- サード・パーティー・ライブラリーの詳細を含むパッケージ拡張は、
conda YAML format
で作成されます。 - カスタム環境と同じ名前のカスタム・ソフトウェア仕様が作成され、作成されたパッケージ拡張がこのカスタム・ソフトウェア仕様に関連付けられます。
カスタム環境で作成されたモデルやPython関数/スクリプトは、プロジェクトスコープ内のwatsonx.aiRuntime リポジトリに保存される際に、カスタムソフトウェア仕様を参照する必要があります。
プロジェクトからデプロイメント・スペースへのソフトウェア仕様およびパッケージ拡張の伝搬
watsonx.aiStudio プロジェクトで作成されたカスタムソフトウェア仕様とパッケージ拡張をデプロイメントスペ ースにエクスポートします:
- プロジェクト・インターフェースから、 「管理」 タブをクリックします。
- 「環境」を選択します。
- 「テンプレート」 タブをクリックします。
- カスタム環境の 「オプション」 メニューから、 「スペースにプロモート」を選択します。
または、カスタム環境に関連付けられたモデルやPython関数をwatsonx.aiStudio プロジェクトからデプロイメント スペースに昇格させると、関連付けられたカスタム ソフトウェア仕様とパッケージ拡張子もデプロイメント スペースに昇格します。
ソフトウェア仕様およびパッケージ拡張をデプロイメント・スペースにプロモートした後に更新する場合は、以下の手順を実行します。
- デプロイメント・スペースで、 watsonx.ai Python クライアントを使用して、ソフトウェア仕様、パッケージ拡張、および関連モデル (オプション) を削除します。
- プロジェクトで、変更されたカスタム・ソフトウェア仕様およびパッケージ拡張に関連付けられているモデル、関数、またはスクリプトをスペースにプロモートします。
ソフトウェア仕様は、それを含むプロジェクトまたはスペースをインポートするときにも組み込まれます。
watsonx.aiRuntimePythonクライアントを使用した、デプロイメントスペースでのパッケージ拡張とカスタムソフトウェア仕様の作成
watsonx.aiRuntime API またはPythonクライアントを使用して、基本仕様から派生したカスタムソフトウェア仕様を定義することができます。
サード・パーティー・ライブラリーまたはユーザー作成の Python パッケージを使用するカスタム・ソフトウェア仕様を作成する手順の概要は、以下のとおりです。
オプション: サード・パーティー・ライブラリーのリストを含む conda YAML ファイルを保存する か、 ユーザー作成の Python ライブラリーを保存してパッケージ拡張を作成します。
注: モデルがサード・パーティー・ライブラリーまたはユーザー作成の Python ライブラリーに依存していない場合、このステップは必要ありません。カスタム・ソフトウェア仕様を作成する。
作成したカスタム・ソフトウェア仕様にパッケージ拡張の参照を追加します。
サード・パーティー・ライブラリーのリストを含む conda YAML ファイルの保存
サード・パーティー・ライブラリーのリストを含む conda YAML ファイルをパッケージ拡張として保存し、パッケージ拡張にリンクされたカスタム・ソフトウェア仕様を作成するには、以下のようにします。
認証してクライアントを作成します。
デフォルトのデプロイメント・スペースを作成して設定してから、使用可能なソフトウェア仕様をリストします。
metadata = { wml_client.spaces.ConfigurationMetaNames.NAME: 'examples-create-software-spec', wml_client.spaces.ConfigurationMetaNames.DESCRIPTION: 'For my models' } space_details = wml_client.spaces.store(meta_props=metadata) space_uid = wml_client.spaces.get_id(space_details) # set the default space wml_client.set.default_space(space_uid) # see available meta names for software specs print('Available software specs configuration:', wml_client.software_specifications.ConfigurationMetaNames.get()) wml_client.software_specifications.list() asset_id = 'undefined' pe_asset_id = 'undefined'
基本仕様に追加するパッケージ拡張用のメタデータを作成します。
pe_metadata = { wml_client.package_extensions.ConfigurationMetaNames.NAME: 'My custom library', # optional: # wml_client.software_specifications.ConfigurationMetaNames.DESCRIPTION: wml_client.package_extensions.ConfigurationMetaNames.TYPE: 'conda_yml' }
パッケージのリストを含む yaml ファイルを作成し、
customlibrary.yaml
という名前で保存します。yaml ファイルの例:
name: add-regex-package dependencies: - regex
詳しくは、 カスタマイズの例を参照してください。
パッケージ拡張情報を保存します。
pe_asset_details = wml_client.package_extensions.store( meta_props=pe_metadata, file_path='customlibrary.yaml' ) pe_asset_id = wml_client.package_extensions.get_id(pe_asset_details)
ソフトウェア仕様のメタデータを作成し、ソフトウェア仕様を保管します。
# Get the id of the base software specification base_id = wml_client.software_specifications.get_id_by_name('default_py3.9') # create the metadata for software specs ss_metadata = { wml_client.software_specifications.ConfigurationMetaNames.NAME: 'Python 3.9 with pre-installed ML package', wml_client.software_specifications.ConfigurationMetaNames.DESCRIPTION: 'Adding some custom libraries like regex', # optional wml_client.software_specifications.ConfigurationMetaNames.BASE_SOFTWARE_SPECIFICATION: {'guid': base_id}, wml_client.software_specifications.ConfigurationMetaNames.PACKAGE_EXTENSIONS: [{'guid': pe_asset_id}] } # store the software spec ss_asset_details = wml_client.software_specifications.store(meta_props=ss_metadata) # get the id of the new asset asset_id = wml_client.software_specifications.get_id(ss_asset_details) # view new software specification details import pprint as pp ss_asset_details = wml_client.software_specifications.get_details(asset_id) print('Package extensions', pp.pformat( ss_asset_details['entity']['software_specification']['package_extensions'] ))
ユーザー作成の Python ライブラリーの保存とパッケージ拡張の作成
詳しくは、 モデルでカスタム・コンポーネントを使用するための要件を参照してください。
ユーザー作成の Python パッケージをパッケージ拡張として保存し、パッケージ拡張にリンクされたカスタム・ソフトウェア仕様を作成するには、以下のようにします。
認証してクライアントを作成します。
デフォルトのデプロイメント・スペースを作成して設定してから、使用可能なソフトウェア仕様をリストします。
metadata = { wml_client.spaces.ConfigurationMetaNames.NAME: 'examples-create-software-spec', wml_client.spaces.ConfigurationMetaNames.DESCRIPTION: 'For my models' } space_details = wml_client.spaces.store(meta_props=metadata) space_uid = wml_client.spaces.get_id(space_details) # set the default space wml_client.set.default_space(space_uid) # see available meta names for software specs print('Available software specs configuration:', wml_client.software_specifications.ConfigurationMetaNames.get()) wml_client.software_specifications.list() asset_id = 'undefined' pe_asset_id = 'undefined'
基本仕様に追加するパッケージ拡張用のメタデータを作成します。
注:pip_zip
は、wml_client.package_extensions.ConfigurationMetaNames.TYPE
メタデータ・プロパティーの値としてのみ指定できます。pe_metadata = { wml_client.package_extensions.ConfigurationMetaNames.NAME: 'My Python library', # optional: # wml_client.software_specifications.ConfigurationMetaNames.DESCRIPTION: wml_client.package_extensions.ConfigurationMetaNames.TYPE: 'pip.zip' }
ユーザー作成の Python ライブラリーのパスを指定します。
python_lib_file_path="my-python-library-0.1.zip"
詳しくは、 モデルでカスタム・コンポーネントを使用するための要件を参照してください。
パッケージ拡張情報を保存します。
pe_asset_details = wml_client.package_extensions.store( meta_props=pe_metadata, file_path=python_lib_file_path ) pe_asset_id = wml_client.package_extensions.get_id(pe_asset_details)
ソフトウェア仕様のメタデータを作成し、ソフトウェア仕様を保管します。
# Get the id of the base software specification base_id = wml_client.software_specifications.get_id_by_name('default_py3.9') # create the metadata for software specs ss_metadata = { wml_client.software_specifications.ConfigurationMetaNames.NAME: 'Python 3.9 with pre-installed ML package', wml_client.software_specifications.ConfigurationMetaNames.DESCRIPTION: 'Adding some custom libraries like regex', # optional wml_client.software_specifications.ConfigurationMetaNames.BASE_SOFTWARE_SPECIFICATION: {'guid': base_id}, wml_client.software_specifications.ConfigurationMetaNames.PACKAGE_EXTENSIONS: [{'guid': pe_asset_id}] } # store the software spec ss_asset_details = wml_client.software_specifications.store(meta_props=ss_metadata) # get the id of the new asset asset_id = wml_client.software_specifications.get_id(ss_asset_details) # view new software specification details import pprint as pp ss_asset_details = wml_client.software_specifications.get_details(asset_id) print('Package extensions', pp.pformat( ss_asset_details['entity']['software_specification']['package_extensions'] ))
トラブルシューティング
When a conda yml-based custom library installation fails with this error: Encountered error while installing custom library
, try these alternatives:
該当する Python バージョンに対して、Anaconda で使用可能な同じパッケージの別のバージョンを使用してください。
pip を使用して、pypi リポジトリーからライブラリーをインストールします。 conda yml インストール・ファイルの内容を編集します:
name: <conda yml file name> dependencies: - numpy - pip: - pandas==1.2.5
親トピック: デプロイメント・ランタイムのカスタマイズ