外部ライブラリーおよびパッケージを使用したランタイムのカスタマイズ

カスタム・ソフトウェア仕様を使用して、任意のサード・パーティーのライブラリーまたはユーザー作成の Python パッケージ、あるいはその両方を参照できます。 サード・パーティー・ライブラリーまたはユーザー作成の Python パッケージは、カスタム・ソフトウェア仕様で参照できるように、パッケージ拡張として指定する必要があります。

デプロイメント ・ランタイムは、以下の方法でカスタマイズできます。

Watson Studio プロジェクトでカスタマイズを定義してから、それらを デプロイメント・スペース にプロモートする

Watson Studio プロジェクト内の環境は、 Anaconda または PyPI リポジトリーからインストールできるサード・パーティー・ライブラリーを含むようにカスタマイズできます。

詳しくは、『 環境』』を参照してください。

カスタム環境の作成の一部として、以下のステップが内部で実行されます (ユーザーに表示されます)。

  • サード・パーティー・ライブラリーの詳細を含むパッケージ拡張が conda YAML formatに作成されます。
  • カスタム環境と同じ名前のカスタム・ソフトウェア仕様が作成され、作成されたパッケージ拡張機能がこのカスタム・ソフトウェア仕様に関連付けられます。

カスタム環境で作成されたモデルまたは Python 関数/スクリプトは、プロジェクト・スコープの Watson Machine Learning リポジトリーに保存されるときに、カスタム・ソフトウェア仕様を参照する必要があります。

プロジェクトから デプロイメント・スペース へのソフトウェア仕様とパッケージ拡張の伝搬

Watson Studio プロジェクトで作成されたカスタム・ソフトウェア仕様およびパッケージ拡張を デプロイメント・スペース にエクスポートするには、以下のようにします。

  1. プロジェクト・インターフェースから、 管理 タブをクリックします。
  2. 環境 を選択します。
  3. テンプレート 」タブをクリックします。
  4. From your custom environment's オプション(O) menu, select スペースへのプロモート.

Watson Studio インターフェースでのカスタム環境の「 スペースへのプロモート 」の選択

あるいは、 Watson Studio プロジェクトから デプロイメント・スペースPython 関数をプロモートすると、関連付けられているカスタム・ソフトウェア仕様とパッケージ拡張も デプロイメント・スペース

ソフトウェア仕様およびパッケージ拡張を デプロイメント・スペース

  1. デプロイメント・スペースwatsonx.ai Python クライアントを使用して、ソフトウェア仕様、パッケージ拡張、および関連モデル (オプション) を削除します。
  2. プロジェクトで、変更されたカスタム・ソフトウェア仕様およびパッケージ拡張に関連付けられたモデル、関数、またはスクリプトをスペースにプロモートします。

ソフトウェア仕様は、ソフトウェア仕様を含むプロジェクトまたはスペースをインポートするときにも含められます。

Watson Machine Learning Python クライアントを使用した、 デプロイメント・スペース でのパッケージ拡張およびカスタム・ソフトウェア仕様の作成

Watson Machine Learning API または Python クライアントを使用して、基本仕様から派生したカスタム・ソフトウェア仕様を定義できます。

サード・パーティー・ライブラリーまたはユーザー作成の Python パッケージを使用するカスタム・ソフトウェア仕様を作成するためのステップの概要は、以下のとおりです。

  1. オプション: サード・パーティー・ライブラリーのリストを含む conda YAML ファイルを保存するか、ユーザー作成の Python ライブラリーを保存してパッケージ拡張を作成します。またはユーザー作成の ライブラリーを保存してパッケージ拡張を作成します。

    注: モデルがサード・パーティー・ライブラリーまたはユーザー作成の Python ライブラリーに依存していない場合は、このステップは不要です。
  2. カスタム・ソフトウェア仕様を作成する。

  3. 作成したカスタム・ソフトウェア仕様に、パッケージ拡張の参照を追加します。

サード・パーティー・ライブラリーのリストを含む conda YAML ファイルの保存

サード・パーティー・ライブラリーのリストを含む conda YAML ファイルをパッケージ拡張として保存し、パッケージ拡張にリンクされたカスタム・ソフトウェア仕様を作成するには、以下のようにします。

  1. 認証を行い、クライアントを作成します。

  2. デフォルトのデプロイメントスペースを作成して設定し、利用可能なソフトウェア仕様を一覧表示します。

     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'
    
  3. 基本仕様に追加するパッケージ拡張用のメタデータを作成します。

    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'
    }
    
  4. パッケージのリストを含む yaml ファイルを作成し、それを customlibrary.yamlとして保存します。

    YAMLファイルの例:

    name: add-regex-package
    dependencies:
        - regex
    

    詳しくは、以下を参照してください。

  5. パッケージ拡張情報を保存します。

    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)
    
  6. ソフトウェア仕様のメタデータを作成し、ソフトウェア仕様を保管します。

    # 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 パッケージをパッケージ拡張として保存し、パッケージ拡張にリンクされたカスタム・ソフトウェア仕様を作成するには、以下のようにします。

  1. 認証を行い、クライアントを作成します。

  2. デフォルトのデプロイメントスペースを作成して設定し、利用可能なソフトウェア仕様を一覧表示します。

     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'
    
  3. 基本仕様に追加するパッケージ拡張用のメタデータを作成します。

    注。

    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'
    }
    
  4. ユーザー作成の Python ライブラリーのパスを指定します。

    python_lib_file_path="my-python-library-0.1.zip"
    

    詳しくは、『モデルでのカスタム・コンポーネントの使用に関する要件』( を参照してください。

  5. パッケージ拡張情報を保存します。

    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)
    
  6. ソフトウェア仕様のメタデータを作成し、ソフトウェア仕様を保管します。

    # 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リポジトリーからライブラリーをインストールします。 conda yml インストール・ファイルの内容を編集します。

    name: <conda yml file name>
    dependencies:
    - numpy
    - pip:
        - pandas==1.2.5
    
  • カスタム・イメージの使用

conda および pip パッケージの取得方法を制御する設定のカスタマイズ

Watson Machine Learning 内のすべての デプロイメント ランタイムには、パッケージとライブラリーの事前選択セットが含まれています。 特定のライブラリーまたはパッケージが標準の デプロイメントランタイムに含まれていない場合は、condaおよびpipパッケージの取得方法を制御する設定をカスタマイズすることにより、それらを追加できます。 デプロイメント

詳細については、以下のトピックを参照してください: