外部ライブラリーおよびパッケージを使用したランタイムのカスタマイズ
カスタム・ソフトウェア仕様を使用して、任意のサード・パーティーのライブラリーまたはユーザー作成の Python パッケージ、あるいはその両方を参照できます。 サード・パーティー・ライブラリーまたはユーザー作成の Python パッケージは、カスタム・ソフトウェア仕様で参照できるように、パッケージ拡張として指定する必要があります。
デプロイメント ・ランタイムは、以下の方法でカスタマイズできます。
- Watson Studio プロジェクトでカスタマイズを定義し、それらをデプロイメント・スペースにプロモートします
- Watson Machine Learning Python クライアントを使用して、デプロイメント・スペースにパッケージ拡張機能およびカスタム・ソフトウェア仕様を作成する
condaおよびpipパッケージの取得方法を制御する設定をカスタマイズします
Watson Studio プロジェクトでカスタマイズを定義してから、それらを デプロイメント・スペース にプロモートする
Watson Studio プロジェクト内の環境は、 Anaconda または PyPI リポジトリーからインストールできるサード・パーティー・ライブラリーを含むようにカスタマイズできます。
詳しくは、『 環境』』を参照してください。
カスタム環境の作成の一部として、以下のステップが内部で実行されます (ユーザーに表示されます)。
- サード・パーティー・ライブラリーの詳細を含むパッケージ拡張が
conda YAML formatに作成されます。 - カスタム環境と同じ名前のカスタム・ソフトウェア仕様が作成され、作成されたパッケージ拡張機能がこのカスタム・ソフトウェア仕様に関連付けられます。
カスタム環境で作成されたモデルまたは Python 関数/スクリプトは、プロジェクト・スコープの Watson Machine Learning リポジトリーに保存されるときに、カスタム・ソフトウェア仕様を参照する必要があります。
プロジェクトから デプロイメント・スペース へのソフトウェア仕様とパッケージ拡張の伝搬
Watson Studio プロジェクトで作成されたカスタム・ソフトウェア仕様およびパッケージ拡張を デプロイメント・スペース にエクスポートするには、以下のようにします。
- プロジェクト・インターフェースから、 管理 タブをクリックします。
- 環境 を選択します。
- 「 テンプレート 」タブをクリックします。
- From your custom environment's オプション(O) menu, select スペースへのプロモート.

あるいは、 Watson Studio プロジェクトから デプロイメント・スペースPython 関数をプロモートすると、関連付けられているカスタム・ソフトウェア仕様とパッケージ拡張も デプロイメント・スペース
ソフトウェア仕様およびパッケージ拡張を デプロイメント・スペース
- デプロイメント・スペースwatsonx.ai Python クライアントを使用して、ソフトウェア仕様、パッケージ拡張、および関連モデル (オプション) を削除します。
- プロジェクトで、変更されたカスタム・ソフトウェア仕様およびパッケージ拡張に関連付けられたモデル、関数、またはスクリプトをスペースにプロモートします。
ソフトウェア仕様は、ソフトウェア仕様を含むプロジェクトまたはスペースをインポートするときにも含められます。
Watson Machine Learning Python クライアントを使用した、 デプロイメント・スペース でのパッケージ拡張およびカスタム・ソフトウェア仕様の作成
Watson Machine Learning API または Python クライアントを使用して、基本仕様から派生したカスタム・ソフトウェア仕様を定義できます。
サード・パーティー・ライブラリーまたはユーザー作成の Python パッケージを使用するカスタム・ソフトウェア仕様を作成するためのステップの概要は、以下のとおりです。
オプション: サード・パーティー・ライブラリーのリストを含む
condaYAML ファイルを保存するか、ユーザー作成の 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'] ))
トラブルシューティング
conda yml ベースのカスタム・ライブラリーのインストールが失敗し、次のエラーが表示される。 Encountered error while installing custom library、以下の代替方法を試してください。
対象の Python バージョンで Anaconda で使用可能な同じパッケージの別のバージョンを使用します。
pipを使用して、pypiリポジトリーからライブラリーをインストールします。condayml インストール・ファイルの内容を編集します。name: <conda yml file name> dependencies: - numpy - pip: - pandas==1.2.5カスタム・イメージの使用
conda および pip パッケージの取得方法を制御する設定のカスタマイズ
Watson Machine Learning 内のすべての デプロイメント ランタイムには、パッケージとライブラリーの事前選択セットが含まれています。 特定のライブラリーまたはパッケージが標準の デプロイメントランタイムに含まれていない場合は、condaおよびpipパッケージの取得方法を制御する設定をカスタマイズすることにより、それらを追加できます。 デプロイメント
詳細については、以下のトピックを参照してください: