Ein trainiertes Modell in eine App einbinden¶
Unter diesem Thema wird beschrieben, wie Sie einen zuvor trainierten Modus in eine Snowflake Native App einbinden.
Workflow – Ein Modell zu einer App hinzufügen¶
Das folgende Verfahren skizziert den typischen Arbeitsablauf eines Anbieters beim Erstellen und Hinzufügen eines Snowflake ML-Modells zu einer App:
Der Anbieter entwickelt ein Snowflake ML-Modell und trägt es in das Snowflake Model Registry ein.
Der Anbieter exportiert die Modellartefakte aus der Snowflake Model Registry und lädt sie in einen Stagingbereich hoch, damit sie für das Anwendungspaket zugänglich sind.
Der Anbieter erstellt das Modell im Setup-Skript der App.
Die App erstellt während der Installation oder nach einem Upgrade ein Modell aus diesen Artefakten im Konto des Verbrauchers. Optional kann die App einer Anwendungsrolle Zugriff auf das Modell gewähren.
Der Verbraucher nutzt das Modell des maschinellen Lernens, wenn der Anbieter die App so konfiguriert, dass er Zugriff darauf gewährt.
Bemerkung
Ein Anbieter ist nicht verpflichtet, dem Verbraucher Zugriff auf das Modell zu gewähren. Das Modell kann als Objekt erstellt werden, das von der App intern verwendet wird, aber für den Verbraucher nicht zugänglich ist.
Entwickeln eines Modells für maschinelles Lernen¶
Anbieter können neue Modelle des maschinellen Lernens entwickeln oder bestehende Modelle in eine App integrieren.
Informationen zur Entwicklung von Modellen finden Sie unter Snowflake ML-Modellentwicklung.
Informationen zur Verwaltung von Modellen in einer Snowflake Model Registry finden Sie unter Snowflake Model Registry.
Exportieren dere Modellartefakte und Hochladen in einen Stagingbereich¶
Um ein Modell in eine Anwendung einzubinden, müssen Anbieter die Modellartefakte exportieren und in einen Stagingbereich hochladen, in dem sie für das Anwendungspaket zugänglich sind.
Modellartefakte manuell exportieren und in einen Stagingbereich hochladen¶
Laden Sie die Modellartefakte herunter. Siehe Snowflake Model Registry.
Verwenden Sie eine der folgenden Methoden, um die Artefakte des maschinellen Lernens in den Stagingbereich hochzuladen, in dem sich Ihre App-Ressourcen befinden:
Um die Dateien mit Snowsight hochzuladen, siehe Bereitstellen von Dateien im Stagingbereich mit Snowsight.
Um die Dateien mit Hilfe des Snowflake-CLI hochzuladen, verwenden Sie den Befehl
snow app deploy
. Siehe Anwendungspaket und Anwendungsobjekt zusammen erstellen.Um die Dateien mit SQL hochzuladen, siehe Staging von Datendateien aus einem lokalen Dateisystem.
Gespeicherte Prozedur verwenden, um die Modellartefakte zu exportieren und sie in einen Stagingbereich hochzuladen¶
Anbieter können das folgende Beispiel für eine gespeicherte Prozedur als Vorlage verwenden, um den Prozess des Herunterladens der Modellartefakte und des Hochladens in einen Stagingbereich zu automatisieren:
CREATE OR REPLACE PROCEDURE copy_model_artifacts_to_stage(src_registry_schema_fqn string, src_model string, src_model_version string, dst string)
RETURNS STRING
LANGUAGE python
runtime_version = 3.11
handler = 'copy_model_artifacts_to_stage'
packages = ('snowflake-snowpark-python')
execute as caller
as
$$
def copy_model_artifacts_to_stage(session, src_registry_schema_fqn, src_model, src_model_version, dst):
session.use_schema(src_registry_schema_fqn)
list_files = session.sql(f"list 'snow://model/{src_model}/versions/{src_model_version}/'")
list_files.collect()
for row in list_files.toLocalIterator():
parts = row["name"].rsplit('/', 1)
directory = parts[0]
filename = parts[1]
session.file.get(f"snow://model/{src_model}/{directory}/{filename}", f"/tmp/{directory}")
session.file.put(f"/tmp/{directory}/{filename}", f"{dst}/{src_model}/{directory}", auto_compress=False, overwrite=True, source_compression="NONE")
return f"Copied [snow://model/{src_model}/versions/{src_model_version}/*] to [{dst}/{src_model}/{directory}/]"
$$;
CALL copy_model_artifacts_to_stage('my_db.my_model_registry, 'my_model', 'V1', '@my_app_pkg.source_schema.source_stage/models');
Modellobjekte im Kundenkonto erstellen¶
Um die Modellobjekte im Konto des Verbrauchers zu erstellen, fügt der Anbieter dem Setup-Skript die erforderlichen SQL-Befehle hinzu wie im folgenden Beispiel gezeigt:
CREATE APPLICATION ROLE IF NOT EXISTS app_user;
CREATE OR ALTER VERSIONED SCHEMA app_code;
GRANT USAGE ON SCHEMA app_code TO APPLICATION ROLE app_user;
CREATE OR REPLACE MODEL app_code.my_model FROM '/models/my_model/versions/V1;
Optional können Anbieter Verbrauchern Zugriff auf das Modell gewähren, indem sie einer Anwendungsrolle die Berechtigung USAGE für das Modell erteilen:
GRANT USAGE ON MODEL app_code.my_model TO APPLICATION ROLE app_user;
Zugriff auf das Modell innerhalb der App¶
Um das Modell intern als Teil der Anwendung zu verwenden, fügen Anbieter dem Setup-Skript eine SELECT-Anweisung hinzu wie im folgenden Beispiel gezeigt:
SELECT app_code.my_model!predict(...);
Verwenden des Modells als Verbraucher¶
Wenn ein Anbieter einem Verbraucher die Berechtigung für das Modell erteilt, kann der Verbraucher den folgenden Befehl ausführen, um auf das Modell zuzugreifen:
SELECT app_code.my_model!predict(...);
Um diesen Befehl auszuführen, müssen die Verbraucher eine Rolle verwenden, die eine der folgenden Eigenschaften hat
Die Berechtigung USAGE für das Modell.
Die Berechtigung OWNERSHIP für das Anwendungsobjekt.