Personalização de tempos de execução com bibliotecas e pacotes externos
É possível usar especificação de software customizada para referenciar qualquer biblioteca de terceiro, pacotes Python criados pelo usuário ou ambos. Bibliotecas de terceiros ou pacotes Python criados pelo usuário devem ser especificados como extensões de pacote para que possam ser referenciados em uma especificação de software customizada.
Você pode customizar os tempos de execução de implementação nestes modos:
- Defina personalizações em um projeto watsonx.ai Studio e, em seguida, promova-as em um espaço de implantação
- Crie extensões de pacotes e especificações de software personalizadas em um espaço de implantação usando o cliente Python de tempo de execução watsonx.ai
Definir personalizações em um projeto watsonx.ai Studio e, em seguida, promovê-las para um espaço de implantação
Os ambientes nos projetos do watsonx.ai Studio podem ser personalizados para incluir bibliotecas de terceiros que podem ser instaladas a partir do Anaconda ou do repositório PyPI.
Para obter mais informações, consulte Ambientes.
Como parte da criação do ambiente customizado, estas etapas são executadas internamente (visível para o usuário):
- Uma extensão de pacote que contém os detalhes de bibliotecas de terceiros é criada em
conda YAML format - Uma especificação de software customizado com o mesmo nome que o ambiente customizado é criado e a extensão de pacote criada é associada a essa especificação de software customizado.
Os modelos ou funções/scripts Python criados com o ambiente personalizado devem fazer referência à especificação do software personalizado quando forem salvos no repositório watsonx.ai Runtime no escopo do projeto.
Propagando especificações de software e extensões de pacotes de projetos para espaços de implantação
Para exportar especificações de software personalizado e extensões de pacote que foram criadas em um projeto do watsonx.ai Studio para um espaço de implementação:
- A partir da sua interface de projeto, clique na guia Gerenciar .
- Selecione Ambientes.
- Clique na guia Templates .
- A partir do menu Opções do seu ambiente personalizado, selecione Promover para o espaço.

Como alternativa, quando você promove qualquer modelo ou função Python associada a um ambiente personalizado de um projeto watsonx.ai Studio para um espaço de implementação, a especificação de software personalizado associada e a extensão de pacote também são promovidas para o espaço de implementação.
Se desejar atualizar as especificações de software e as extensões de pacote depois de promovê-las para o espaço de implementação, siga estas etapas:
- No espaço de implementação, exclua as especificações de software, extensões de pacotes e modelos associados (opcionais) usando o cliente watsonx.ai Python .
- Em um projeto, promova o modelo, a função ou o script que está associado à especificação de software customizada alterada e à extensão de pacote para o espaço..
As especificações do software também são incluídas quando você importa um projeto ou espaço que inclua um.
Criação de extensões de pacotes e especificações de software personalizadas em um espaço de implantação usando o cliente Python de tempo de execução watsonx.ai
Você pode usar as APIs de tempo de execução do watsonx.ai ou o cliente Python para definir uma especificação de software personalizada que seja derivada de uma especificação básica.
Etapas de alto nível para criar uma especificação de software customizada que usa bibliotecas de terceiros ou pacotes Python criados pelo usuário:
Opcional: Salve um arquivo
condaYAML que contenha uma lista de bibliotecas de terceiros ou salve uma biblioteca Python criada pelo usuário e crie uma extensão de pacote.Nota: essa etapa não será necessária se o modelo não tiver nenhuma dependência de uma biblioteca de terceiros ou de uma biblioteca Python criada pelo usuário.Crie uma especificação de software customizada
Inclua uma referência das extensões de pacotes na especificação de software personalizada que você criou.
Salvando um arquivo conda YAML que contém uma lista de bibliotecas de terceiros
Para salvar um arquivo conda YAML que contém uma lista de bibliotecas de terceiros como uma extensão de pacote e criar uma especificação de software personalizada vinculada à extensão do pacote:
Autentique e crie o cliente.
Crie e configure o espaço de implementação padrão, em seguida, liste as especificações de software disponíveis.
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'Crie os metadados para extensões de pacote a serem incluídas na especificação de base.
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' }Crie um arquivo yaml que contenha a lista de pacotes e, em seguida, salve-o como
customlibrary.yamlExemplo de arquivo yaml:
name: add-regex-package dependencies: - regexPara obter mais informações, consulte Exemplos de customizações
Armazene as informações de extensão do pacote.
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)Crie os metadados para a especificação de software e armazene a especificação de software.
# 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'] ))
Salvando uma biblioteca Python criada pelo usuário e criando uma extensão de pacote
Para obter mais informações, consulte Requisitos para usar componentes customizados em modelos.
Para salvar um pacote Python criado pelo usuário como uma extensão de pacote e criar uma especificação de software customizada vinculada à extensão de pacote:
Autentique e crie o cliente.
Crie e configure o espaço de implementação padrão, em seguida, liste as especificações de software disponíveis.
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'Crie os metadados para extensões de pacote a serem incluídas na especificação de base.
Nota:É possível especificar
pip_zipsomente como um valor para a propriedade de metadadoswml_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' }Especifique o caminho da biblioteca Python criada pelo usuário.
python_lib_file_path="my-python-library-0.1.zip"Para obter mais informações, consulte Requisitos para usar componentes customizados em modelos.
Armazene as informações de extensão do pacote.
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)Crie os metadados para a especificação de software e armazene a especificação de software.
# 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'] ))
Resolução de problemas
Quando uma instalação de biblioteca personalizada baseada em conda yml falhar com este erro: Encountered error while installing custom library, tente estas alternativas:
Use uma versão diferente do mesmo pacote que está disponível em Anaconda para a versão em questão Python .
Instale a biblioteca do repositório
pypi, usandopip. Edite o conteúdo do arquivo de instalaçãocondayml:name: <conda yml file name> dependencies: - numpy - pip: - pandas==1.2.5