0 / 0
Retourner à la version anglaise de la documentation
Personnaliser les moteurs d'exécution avec des bibliothèques et des paquets externes
Dernière mise à jour : 21 nov. 2024
Personnaliser les moteurs d'exécution avec des bibliothèques et des paquets externes

Vous pouvez utiliser une spécification logicielle personnalisée pour faire référence à des bibliothèques tierces et/ou des packages Python créés par l'utilisateur. Les bibliothèques tierces ou les packages Python créés par l'utilisateur doivent être spécifiés en tant qu'extensions de package afin qu'ils puissent être référencés dans une spécification logicielle personnalisée.

Vous pouvez personnaliser les environnements d'exécution de déploiement de l'une des manières suivantes:

Définir des personnalisations dans un projet watsonx.ai Studio et les promouvoir ensuite dans un espace de déploiement

Les environnements des projets watsonx.ai Studio peuvent être personnalisés pour inclure des bibliothèques tierces qui peuvent être installées à partir d'Anaconda ou du dépôt PyPI.

Pour plus d'informations, voir Environnements.

Dans le cadre de la création d'environnement personnalisé, ces étapes sont effectuées en interne (visible par l'utilisateur):

  • Une extension de package contenant les détails des bibliothèques tierces est créée dans conda YAML format.
  • Une spécification logicielle personnalisée portant le même nom que l'environnement personnalisé est créée et l'extension de package créée est associée à cette spécification logicielle personnalisée.

Les modèles ou les fonctions/scripts Python créés avec l'environnement personnalisé doivent faire référence à la spécification du logiciel personnalisé lorsqu'ils sont enregistrés dans le référentiel watsonx.ai Runtime dans le cadre du projet.

Propagation des spécifications logicielles et des extensions de package des projets vers les espaces de déploiement

Pour exporter des spécifications logicielles personnalisées et des extensions de paquetage créées dans un projet watsonx.ai Studio vers un espace de déploiement :

  1. Dans l'interface de votre projet, cliquez sur l'onglet Gérer .
  2. Sélectionnez Environnements.
  3. Cliquez sur l'onglet Modèles .
  4. Dans le menu Options de votre environnement personnalisé, sélectionnez Promouvoir dans l'espace.

Sélection de "Promouvoir dans l'espace" pour un environnement personnalisé dans l'interface de watsonx.ai Studio

Par ailleurs, lorsque vous promouvez un modèle ou une fonction Python associé à un environnement personnalisé d'un projet watsonx.ai Studio vers un espace de déploiement, la spécification du logiciel personnalisé associé et l'extension du paquetage sont également promus vers l'espace de déploiement.

Si vous souhaitez mettre à jour les spécifications logicielles et les extensions de package après les avoir promies dans l'espace de déploiement, procédez comme suit:

  1. Dans l'espace de déploiement, supprimez les spécifications logicielles, les extensions de package et les modèles associés (facultatif) à l'aide du client Python watsonx.ai .
  2. Dans un projet, promouvez le modèle, la fonction ou le script associé à la spécification de logiciel personnalisée modifiée et à l'extension de package dans l'espace.

Les spécifications logicielles sont également incluses lorsque vous importez un projet ou un espace qui en inclut un.

Création d'extensions de paquets et de spécifications logicielles personnalisées dans un espace de déploiement en utilisant le client Python watsonx.ai Runtime

Vous pouvez utiliser les API d'exécution de watsonx.ai ou le client Python pour définir une spécification logicielle personnalisée dérivée d'une spécification de base.

Etapes de haut niveau pour créer une spécification logicielle personnalisée qui utilise des bibliothèques tierces ou des packages Python créés par l'utilisateur:

  1. Facultatif: Sauvegardez un fichier YAML conda qui contient une liste de bibliothèques tierces ou sauvegardez une bibliothèque Python créée par l'utilisateur et créez une extension de package.

    Remarque: Cette étape n'est pas requise si le modèle n'a pas de dépendance à une bibliothèque tierce ou à une bibliothèque Python créée par l'utilisateur.
  2. Créez une spécification logicielle personnalisée.

  3. Ajoutez une référence des extensions de package à la spécification de logiciel personnalisée que vous avez créée.

Enregistrement d'un fichier YAML conda contenant une liste de bibliothèques tierces

Pour sauvegarder un fichier YAML conda contenant une liste de bibliothèques tierces en tant qu'extension de package et créer une spécification de logiciel personnalisée liée à l'extension de package:

  1. Authentifiez et créez le client.

  2. Créez et désignez l'espace de déploiement par défaut, puis listez les spécifications logicielles 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. Créez les métadonnées pour des extensions de package à ajouter à la spécification 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'
    }
    
  4. Créez un fichier yaml contenant la liste des packages, puis enregistrez-le en tant que customlibrary.yaml.

    Exemple de fichier yaml :

    name: add-regex-package
    dependencies:
        - regex
    

    Pour plus d'informations, voir Exemples de personnalisations.

  5. Stockez les informations d'extension de package.

    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. Créez les métadonnées pour la spécification logicielle et stockez celle-ci.

    # 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']
    ))
    

Sauvegarde d'une bibliothèque Python créée par l'utilisateur et création d'une extension de package

Pour plus d'informations, voir Conditions d'utilisation des composants personnalisés dans les modèles.

Pour sauvegarder un package Python créé par l'utilisateur en tant qu'extension de package et créer une spécification logicielle personnalisée liée à l'extension de package:

  1. Authentifiez et créez le client.

  2. Créez et désignez l'espace de déploiement par défaut, puis listez les spécifications logicielles 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. Créez les métadonnées pour des extensions de package à ajouter à la spécification de base.

    Remarque :

    Vous pouvez spécifier pip_zip uniquement en tant que valeur pour la propriété de métadonnées 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. Indiquez le chemin de la bibliothèque Python créée par l'utilisateur.

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

    Pour plus d'informations, voir Conditions d'utilisation des composants personnalisés dans les modèles.

  5. Stockez les informations d'extension de package.

    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. Créez les métadonnées pour la spécification logicielle et stockez celle-ci.

    # 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']
    ))
    

Traitement des incidents

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

  • Utilisez une version différente du même package disponible dans Anaconda pour la version Python concernée.

  • Installez la bibliothèque à partir du référentiel pypi, à l'aide de pip. Editez le contenu du fichier fichier d'installation yml conda :

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

Rubrique parent: Personnalisation des environnements d'exécution de déploiement

Recherche et réponse à l'IA générative
Ces réponses sont générées par un modèle de langue de grande taille dans watsonx.ai en fonction du contenu de la documentation du produit. En savoir plus