0 / 0
Volver a la versión inglesa de la documentación
Personalización de los tiempos de ejecución con bibliotecas y paquetes externos
Última actualización: 21 nov 2024
Personalización de los tiempos de ejecución con bibliotecas y paquetes externos

Puede utilizar la especificación de software personalizada para hacer referencia a las bibliotecas de terceros, los paquetes de Python creados por el usuario, o ambas cosas. Las bibliotecas de terceros o los paquetes Python creados por el usuario se deben especificar como extensiones de paquete para que se pueda hacer referencia a ellas en una especificación de software personalizada.

Puede personalizar los tiempos de ejecución de despliegue de estas maneras:

Definición de personalizaciones en un proyecto de watsonx.ai Studio y posterior promoción a un espacio de despliegue

Los entornos en los proyectos de watsonx.ai Studio pueden personalizarse para incluir librerías de terceros que pueden instalarse desde Anaconda o desde el repositorio PyPI.

Para obtener más información, consulte Entornos.

Como parte de la creación del entorno personalizado, estos pasos se realizan internamente (visibles para el usuario):

  • Una extensión de paquete que contiene los detalles de bibliotecas de terceros se crea en conda YAML format.
  • Se crea una especificación de software personalizada con el mismo nombre que el entorno personalizado y la extensión de paquete que se crea se asocia con esta especificación de software personalizada.

Los modelos o funciones/scripts Python creados con el entorno personalizado deben hacer referencia a la especificación de software personalizado cuando se guardan en el repositorio watsonx.ai Runtime en el ámbito del proyecto.

Propagación de especificaciones de software y extensiones de paquete de proyectos a espacios de despliegue

Para exportar especificaciones de software personalizadas y extensiones de paquetes creadas en un proyecto de watsonx.ai Studio a un espacio de despliegue:

  1. En la interfaz del proyecto, pulse el separador Gestionar .
  2. Seleccione Entornos.
  3. Pulse la pestaña Plantillas .
  4. En el menú Opciones del entorno personalizado, seleccione Promocionar al espacio.

Selección de "Promover al espacio" para un entorno personalizado en la interfaz de watsonx.ai Studio

De forma alternativa, cuando se promociona cualquier modelo o función Python que esté asociada a un entorno personalizado desde un proyecto de watsonx.ai Studio a un espacio de despliegue, la especificación de software personalizado y la extensión de paquete asociadas también se promocionan al espacio de despliegue.

Si desea actualizar las especificaciones de software y las extensiones de paquete después de promocionarlas al espacio de despliegue, siga estos pasos:

  1. En el espacio de despliegue, suprima las especificaciones de software, extensiones de paquete y modelos asociados (opcional) utilizando el cliente Python watsonx.ai .
  2. En un proyecto, promocione el modelo, función o script que está asociado con la especificación de software personalizada modificada y la extensión de paquete al espacio.

Las especificaciones de software también se incluyen cuando se importa un proyecto o espacio que incluye uno.

Creación de extensiones de paquetes y especificaciones de software personalizadas en un espacio de despliegue mediante el cliente watsonx.ai Runtime Python

Puede utilizar las API de tiempo de ejecución de watsonx.ai o el cliente Python para definir una especificación de software personalizada derivada de una especificación base.

Pasos de alto nivel para crear una especificación de software personalizada que utilice bibliotecas de terceros o paquetes Python creados por el usuario:

  1. Opcional: Guarde un archivo YAML de conda que contenga una lista de bibliotecas de terceros o guarde una biblioteca Python creada por el usuario y cree una extensión de paquete.

    Nota: Este paso no es necesario si el modelo no tiene ninguna dependencia de una biblioteca de terceros o de una biblioteca Python creada por el usuario.
  2. Cree una especificación de software personalizada

  3. Añada una referencia de las extensiones de paquete a la especificación de software personalizada que ha creado.

Guardar un archivo YAML de conda que contiene una lista de bibliotecas de terceros

Para guardar un archivo YAML de conda que contiene una lista de bibliotecas de terceros como una extensión de paquete y crear una especificación de software personalizada que está enlazada a la extensión de paquete:

  1. Autentique y cree el cliente.

  2. Cree y establezca el espacio de despliegue predeterminado y, a continuación, obtenga una lista de las especificaciones de software disponibles.

     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. Cree los metadatos para las extensiones de paquetes que se añaden a la especificación 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'
    }
    
  4. Cree un archivo yaml que contenga la lista de paquetes y, a continuación, guárdelo como customlibrary.yaml.

    Ejemplo de archivo yaml:

    name: add-regex-package
    dependencies:
        - regex
    

    Para obtener más información, consulte Ejemplos de personalizaciones.

  5. Almacene la información de extensión de paquete.

    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. Cree los metadatos para la especificación de software y almacene la especificación 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']
    ))
    

Guardar una biblioteca Python creada por el usuario y crear una extensión de paquete

Para obtener más información, consulte Requisitos para utilizar componentes personalizados en modelos.

Para guardar un paquete Python creado por el usuario como una extensión de paquete y crear una especificación de software personalizada que esté enlazada a la extensión de paquete:

  1. Autentique y cree el cliente.

  2. Cree y establezca el espacio de despliegue predeterminado y, a continuación, obtenga una lista de las especificaciones de software disponibles.

     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. Cree los metadatos para las extensiones de paquetes que se añaden a la especificación base.

    Nota:

    Sólo puede especificar pip_zip como un valor para la propiedad de metadatos 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. Especifique la vía de acceso de la biblioteca Python creada por el usuario.

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

    Para obtener más información, consulte Requisitos para utilizar componentes personalizados en modelos.

  5. Almacene la información de extensión de paquete.

    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. Cree los metadatos para la especificación de software y almacene la especificación 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']
    ))
    

Resolución de problemas

When a conda yml-based custom library installation fails with this error: Encountered error while installing custom library, try these alternatives:

  • Utilice una versión diferente del mismo paquete que está disponible en Anaconda para la versión de Python correspondiente.

  • Instale la biblioteca desde el repositorio pypi, utilizando pip. Edite el contenido del archivo de instalación yml de conda:

    name: <conda yml file name>
    dependencies:
    - numpy
    - pip:
        - pandas==1.2.5
    

Tema padre: Personalización de tiempos de ejecución de despliegue

Búsqueda y respuesta de IA generativa
Estas respuestas las genera un modelo de lenguaje grande en watsonx.ai que se basa en el contenido de la documentación del producto. Más información