0 / 0
Torna alla versione inglese della documentazione
Personalizzazione dei runtime con librerie e pacchetti esterni
Ultimo aggiornamento: 21 nov 2024
Personalizzazione dei runtime con librerie e pacchetti esterni

Puoi utilizzare la specifica del software personalizzato per fare riferimento a qualsiasi libreria di terze parti, ai pacchetti Python creati dall'utente o a entrambi. Le librerie di terze parti o i package Python creati dall'utente devono essere specificati come estensioni del package in modo che sia possibile farvi riferimento in una specifica software personalizzata.

È possibile personalizzare i runtime di distribuzione nei seguenti modi:

Definizione delle personalizzazioni in un progetto watsonx.ai Studio e successiva promozione in uno spazio di distribuzione

Gli ambienti dei progetti watsonx.ai Studio possono essere personalizzati per includere librerie di terze parti che possono essere installate da Anaconda o dal repository PyPI.

Per ulteriori informazioni, consultare Ambienti.

Come parte della creazione dell'ambiente personalizzato, queste operazioni vengono eseguite internamente (visibili all'utente):

  • Un'estensione del pacchetto che contiene i dettagli delle librerie di terze parti viene creata in conda YAML format.
  • Viene creata una specifica software personalizzata con lo stesso nome dell'ambiente personalizzato e l'estensione del pacchetto creata viene associata a questa specifica software personalizzata.

I modelli o le funzioni/script Python creati con l'ambiente personalizzato devono fare riferimento alle specifiche del software personalizzato quando vengono salvati nel repository watsonx.ai Runtime nell'ambito del progetto.

Propagazione delle specifiche software e delle estensioni dei package dai progetti agli spazi di distribuzione

Per esportare le specifiche software personalizzate e le estensioni dei pacchetti create in un progetto watsonx.ai Studio in uno spazio di distribuzione:

  1. Dall'interfaccia del progetto, fare clic sul separatore Gestisci .
  2. Selezionare Ambienti.
  3. Fare clic sulla scheda Modelli .
  4. Dal menu Opzioni dell'ambiente personalizzato, seleziona Promuovi allo spazio.

Selezione di "Promuovi nello spazio" per un ambiente personalizzato nell'interfaccia di watsonx.ai Studio

In alternativa, quando si promuove un modello o una funzione Python associata a un ambiente personalizzato da un progetto watsonx.ai Studio a uno spazio di distribuzione, anche la specifica del software personalizzato e l'estensione del pacchetto associati vengono promossi allo spazio di distribuzione.

Se si desidera aggiornare le specifiche del software e le estensioni del pacchetto dopo averle promosse allo spazio di distribuzione, attenersi alla seguente procedura:

  1. Nello spazio di distribuzione, elimina le specifiche del software, le estensioni del package e i modelli associati (facoltativo) utilizzando il client watsonx.ai Python .
  2. In un progetto, promuovere il modello, la funzione o lo script associato alla specifica software personalizzata e all'estensione del pacchetto modificati nello spazio.

Le specifiche software sono incluse anche quando si importa un progetto o uno spazio che ne include uno.

Creare estensioni di pacchetti e specifiche software personalizzate in uno spazio di distribuzione utilizzando il client watsonx.ai Runtime Python

È possibile utilizzare le API di runtime watsonx.ai o il client Python per definire una specifica software personalizzata derivata da una specifica di base.

Passi di alto livello per creare una specifica software personalizzata che utilizza librerie di terze parti o package Python creati dall'utente:

  1. Facoltativo: Salva un file conda YAML che contiene un elenco di librerie di terzi o salva una libreria Python creata dall'utente e crea un'estensione pacchetto.

    Nota: questo passo non è richiesto se il modello non ha alcuna dipendenza da una libreria di terze parti o da una libreria Python creata dall'utente.
  2. Crea una specifica software personalizzata

  3. Aggiungere un riferimento delle estensioni package alla specifica software personalizzata creata.

Salvataggio di un file conda YAML che contiene un elenco di librerie di terze parti

Per salvare un file YAML conda che contiene un elenco di librerie di terze parti come estensione di un pacchetto e creare una specifica software personalizzata collegata all'estensione del pacchetto:

  1. Autenticare e creare il client.

  2. Creare e impostare lo spazio di distribuzione predefinito, quindi elencare le specifiche software disponibili.

     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. Creare i metadati per le estensioni package da aggiungere alla specifica di 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. Creare un file yaml che contiene l'elenco di package e salvarlo come customlibrary.yaml.

    File yaml di esempio:

    name: add-regex-package
    dependencies:
        - regex
    

    Per ulteriori informazioni, consultare Esempi di personalizzazione.

  5. Informazioni sull'estensione del package del negozio.

    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. Creare i metadati per la specifica software e memorizzare la specifica 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']
    ))
    

Salvataggio di una libreria Python creata dall'utente e creazione di un'estensione del package

Per ulteriori informazioni, consultare Requisiti per l'utilizzo di componenti personalizzati nei modelli.

Per salvare un pacchetto Python creato dall'utente come estensione del pacchetto e creare una specifica software personalizzata collegata all'estensione del pacchetto:

  1. Autenticare e creare il client.

  2. Creare e impostare lo spazio di distribuzione predefinito, quindi elencare le specifiche software disponibili.

     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. Creare i metadati per le estensioni package da aggiungere alla specifica di base.

    Nota:

    È possibile specificare pip_zip solo come valore per la proprietà dei metadati 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. Specificare il percorso della libreria Python creata dall'utente.

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

    Per ulteriori informazioni, consultare Requisiti per l'utilizzo di componenti personalizzati nei modelli.

  5. Informazioni sull'estensione del package del negozio.

    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. Creare i metadati per la specifica software e memorizzare la specifica 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']
    ))
    

Risoluzione dei problemi

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

  • Utilizzare una versione differente dello stesso package disponibile in Anaconda per la relativa versione di Python .

  • Installare la libreria dal repository pypi, utilizzando pip. Modificare il contenuto del file di installazione di conda yml:

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

Argomento principale Personalizzazione dei runtime di distribuzione

Ricerca e risposta AI generativa
Queste risposte sono generate da un modello di lingua di grandi dimensioni in watsonx.ai basato sul contenuto della documentazione del prodotto. Ulteriori informazioni