Sie können eine angepasste Softwarespezifikation verwenden, um auf Bibliotheken anderer Anbieter, auf benutzererstellte Python-Pakete oder beides zu verweisen. Bibliotheken anderer Anbieter oder benutzerdefinierte Python -Pakete müssen als Paketerweiterungen angegeben werden, damit sie in einer angepassten Softwarespezifikation referenziert werden können.
Sie können Implementierungslaufzeiten wie folgt anpassen:
- Definieren Sie Anpassungen in einem watsonx.ai Studio-Projekt und verschieben Sie sie dann in einen Bereitstellungsbereich
- Erstellen von Paketerweiterungen und benutzerdefinierten Softwarespezifikationen in einem Deployment Space mit dem watsonx.ai Runtime Python Client
Definieren von Anpassungen in einem watsonx.ai Studio-Projekt und anschließendes Verschieben in einen Bereitstellungsbereich
Umgebungen in watsonx.ai Studio-Projekten können so angepasst werden, dass sie Bibliotheken von Drittanbietern enthalten, die von Anaconda oder aus dem PyPI installiert werden können.
Weitere Informationen finden Sie unter Umgebungen.
Im Rahmen der Erstellung einer angepassten Umgebung werden die folgenden Schritte intern ausgeführt (für den Benutzer sichtbar):
- Eine Paketerweiterung, die die Details von Bibliotheken anderer Anbieter enthält, wird in
conda YAML format
erstellt. - Eine angepasste Softwarespezifikation mit demselben Namen wie die angepasste Umgebung wird erstellt und die erstellte Paketerweiterung wird dieser angepassten Softwarespezifikation zugeordnet.
Die Modelle oder Python, die mit der benutzerdefinierten Umgebung erstellt werden, müssen auf die Spezifikation der benutzerdefinierten Software verweisen, wenn sie im watsonx.ai Runtime Repository im Projektumfang gespeichert werden.
Softwarespezifikationen und Paketerweiterungen von Projekten an Bereitstellungsbereiche weitergeben
So exportieren Sie benutzerdefinierte Softwarespezifikationen und Paketerweiterungen, die in einem watsonx.ai Studio-Projekt erstellt wurden, in einen Bereitstellungsbereich:
- Klicken Sie in Ihrer Projektschnittstelle auf die Registerkarte Verwalten .
- Wählen Sie Umgebungenaus.
- Klicken Sie auf die Registerkarte Vorlagen .
- Wählen Sie im Menü Optionen Ihrer angepassten Umgebung die Option In Bereich hochstufenaus.
Wenn Sie ein Modell oder eine Python, die mit einer benutzerdefinierten Umgebung verbunden ist, aus einem watsonx.ai Studio-Projekt in einen Bereitstellungsbereich verschieben, wird die zugehörige benutzerdefinierte Softwarespezifikation und Paketerweiterung ebenfalls in den Bereitstellungsbereich verschoben.
Gehen Sie wie folgt vor, wenn Sie Softwarespezifikationen und Paketerweiterungen aktualisieren möchten, nachdem Sie sie in den Bereitstellungsbereich hochgestuft haben:
- Löschen Sie im Bereitstellungsbereich die Softwarespezifikationen, Paketerweiterungen und zugehörigen Modelle (optional) mit dem Python -Client von watsonx.ai .
- Stufen Sie in einem Projekt das Modell, die Funktion oder das Script, das bzw. die der geänderten angepassten Softwarespezifikation und Paketerweiterung zugeordnet ist, in den Bereich hoch.
Softwarespezifikationen werden auch eingeschlossen, wenn Sie ein Projekt oder einen Speicherbereich importieren, das bzw. der eine enthält.
Erstellung von Paketerweiterungen und benutzerdefinierten Softwarespezifikationen in einem Deployment Space mit dem watsonx.ai Runtime Python Client
Sie können die watsonx.ai Runtime APIs oder den Python verwenden, um eine benutzerdefinierte Software-Spezifikation zu definieren, die von einer Basisspezifikation abgeleitet ist.
Allgemeine Schritte zum Erstellen einer angepassten Softwarespezifikation, die Bibliotheken anderer Anbieter oder benutzererstellte Python -Pakete verwendet:
Optional: Speichern Sie eine Conda-YAML-Datei mit einer Liste von Bibliotheken anderer Anbieter oder speichern Sie eine benutzererstellte Python -Bibliothek und erstellen Sie eine Paketerweiterung.
Hinweis: Dieser Schritt ist nicht erforderlich, wenn das Modell keine Abhängigkeit von einer Bibliothek eines anderen Anbieters oder einer benutzerdefinierten Python -Bibliothek aufweist.Erstellen Sie eine angepasste Softwarespezifikation.
Fügen Sie der von Ihnen erstellten angepassten Softwarespezifikation eine Referenz der Paketerweiterungen hinzu.
Conda-YAML-Datei mit einer Liste von Bibliotheken anderer Anbieter speichern
Gehen Sie wie folgt vor, um eine Conda-YAML-Datei zu speichern, die eine Liste von Bibliotheken anderer Anbieter als Paketerweiterung enthält, und eine angepasste Softwarespezifikation zu erstellen, die mit der Paketerweiterung verknüpft ist:
Authentifizieren und erstellen Sie den Client.
Erstellen und definieren Sie den Standardbereitstellungsbereich. Listen Sie dann die verfügbaren Softwarespezifikationen auf.
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'
Erstellen Sie die Metadaten für Paketerweiterungen, die der Basisspezifikation hinzugefügt werden sollen.
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' }
Erstellen Sie eine YAML-Datei, die die Liste der Pakete enthält, und speichern Sie sie als
customlibrary.yaml
.YAML-Beispieldatei:
name: add-regex-package dependencies: - regex
Weitere Informationen finden Sie unter Beispiele für Anpassungen.
Speichern Sie Paketerweiterungsinformationen.
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)
Erstellen Sie die Metadaten für die Softwarespezifikation und speichern Sie die Softwarespezifikation.
# 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'] ))
Benutzererstellte Python -Bibliothek speichern und Paketerweiterung erstellen
Weitere Informationen finden Sie unter Voraussetzungen für die Verwendung angepasster Komponenten in Modellen.
Gehen Sie wie folgt vor, um ein vom Benutzer erstelltes Python -Paket als Paketerweiterung zu speichern und eine angepasste Softwarespezifikation zu erstellen, die mit der Paketerweiterung verknüpft ist:
Authentifizieren und erstellen Sie den Client.
Erstellen und definieren Sie den Standardbereitstellungsbereich. Listen Sie dann die verfügbaren Softwarespezifikationen auf.
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'
Erstellen Sie die Metadaten für Paketerweiterungen, die der Basisspezifikation hinzugefügt werden sollen.
Hinweis:Sie können
pip_zip
nur als Wert für die Metadateneigenschaftwml_client.package_extensions.ConfigurationMetaNames.TYPE
angeben.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' }
Geben Sie den Pfad der vom Benutzer erstellten Python -Bibliothek an.
python_lib_file_path="my-python-library-0.1.zip"
Weitere Informationen finden Sie unter Voraussetzungen für die Verwendung angepasster Komponenten in Modellen.
Speichern Sie Paketerweiterungsinformationen.
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)
Erstellen Sie die Metadaten für die Softwarespezifikation und speichern Sie die Softwarespezifikation.
# 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'] ))
Fehlerbehebung
When a conda yml-based custom library installation fails with this error: Encountered error while installing custom library
, try these alternatives:
Verwenden Sie eine andere Version desselben Pakets, das in Anaconda für die betroffene Python -Version verfügbar ist.
Installieren Sie die Bibliothek mithilfe von pip aus dem pypi-Repository. Bearbeiten Sie den Inhalt der .yml-Installationsdatei von Conda:
name: <conda yml file name> dependencies: - numpy - pip: - pandas==1.2.5
Übergeordnetes Thema: Implementierungslaufzeiten anpassen