사용자 정의 소프트웨어 스펙을 사용하여 서드파티 라이브러리, 사용자 작성 Python 패키지 또는 둘 다를 참조할 수 있습니다. 사용자 정의 소프트웨어 스펙에서 참조할 수 있도록 써드파티 라이브러리 또는 사용자가 작성한 Python 패키지를 패키지 확장으로 지정해야 합니다.
다음과 같은 방법으로 배치 런타임을 사용자 정의할 수 있습니다.
- watsonx.ai Studio 프로젝트에서 사용자 정의를 정의한 다음 배포 공간으로 승격합니다
- 배포 공간에서 패키지 확장 및 사용자 정의 소프트웨어 사양을 생성하려면 watsonx.ai 런타임 Python 클라이언트를 사용하세요
watsonx.ai Studio 프로젝트에서 사용자 정의를 정의한 다음 배포 공간으로 승격하기
watsonx.ai Studio 프로젝트의 환경은 Anaconda 또는 PyPI 리포지토리에서 설치할 수 있는 타사 라이브러리를 포함하도록 사용자 지정할 수 있습니다.
자세한 정보는 환경을 참조하십시오.
사용자 정의 환경 작성의 일부로 다음 단계가 내부적으로 수행됩니다 (사용자에게 표시됨).
- 써드파티 라이브러리의 세부사항을 포함하는 패키지 확장은
conda YAML format
에서 작성됩니다. - 사용자 정의 환경과 동일한 이름의 사용자 정의 소프트웨어 스펙이 작성되고 작성된 패키지 확장이 이 사용자 정의 소프트웨어 스펙과 연관됩니다.
사용자 지정 환경에서 생성된 모델 또는 Python 함수/스크립트는 프로젝트 범위의 watsonx.ai 런타임 리포지토리에 저장할 때 사용자 지정 소프트웨어 사양을 참조해야 합니다.
프로젝트에서 배치 공간으로 소프트웨어 스펙 및 패키지 확장 전파
watsonx.ai Studio 프로젝트에서 생성한 사용자 지정 소프트웨어 사양 및 패키지 확장을 배포 공간으로 내보내려면 다음과 같이 하세요:
- 프로젝트 인터페이스에서 관리 탭을 클릭하십시오.
- 환경을 선택하십시오.
- 템플리트 탭을 클릭하십시오.
- 사용자 정의 환경의 옵션 메뉴에서 공간으로 승격을 선택하십시오.
또는 사용자 지정 환경과 연결된 모델 또는 Python 함수를 watsonx.ai Studio 프로젝트에서 배포 공간으로 승격하면 연결된 사용자 지정 소프트웨어 사양 및 패키지 확장도 배포 공간으로 승격됩니다.
소프트웨어 스펙 및 패키지 확장을 배치 영역으로 승격한 후 업데이트하려면 다음 단계를 수행하십시오.
- 배치 영역에서 watsonx.ai Python 클라이언트를 사용하여 소프트웨어 스펙, 패키지 확장 및 연관된 모델 (선택사항) 을 삭제하십시오.
- 프로젝트에서 변경된 사용자 정의 소프트웨어 스펙 및 패키지 확장과 연관된 모델, 함수 또는 스크립트를 공간으로 승격하십시오.
또한 소프트웨어 스펙을 포함하는 프로젝트 또는 공간을 가져올 때 소프트웨어 스펙도 포함됩니다.
배포 공간에서 패키지 확장 및 사용자 정의 소프트웨어 사양을 생성하기 위해 watsonx.ai 런타임 Python 클라이언트 사용
기본 사양에서 파생된 사용자 지정 소프트웨어 사양을 정의하기 위해 watsonx.ai 런타임 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
상위 주제: 배치 런타임 사용자 정의