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:

  1. Der Anbieter entwickelt ein Snowflake ML-Modell und trägt es in das Snowflake Model Registry ein.

  2. 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.

  3. Der Anbieter erstellt das Modell im Setup-Skript der App.

  4. 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.

  5. 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.

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

  1. Laden Sie die Modellartefakte herunter. Siehe Snowflake Model Registry.

  2. Verwenden Sie eine der folgenden Methoden, um die Artefakte des maschinellen Lernens in den Stagingbereich hochzuladen, in dem sich Ihre App-Ressourcen befinden:

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');
Copy

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;
Copy

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;
Copy

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(...);
Copy

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(...);
Copy

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.