Snowflake ML-Versionshinweise

Dieser Artikel enthält die Versionshinweise für Snowflake ML, einschließlich der folgenden, sofern zutreffend:

  • Verhaltensänderungen

  • Neue Features

  • Fehlerkorrekturen für Kunden

Bemerkung

Diese Hinweise enthalten keine Änderungen an Features, die noch nicht angekündigt wurden. Solche Features können im Quellcode von Snowflake ML erscheinen, aber nicht in der öffentlichen Dokumentation.

Siehe Snowflake ML: Umfassendes maschinelles Lernen für die Dokumentation.

Überprüfen Sie das snowflake-ml-python-Paket

Alle Snowflake-Pakete sind signiert, sodass Sie ihre Herkunft überprüfen können. Um das Paket snowflake.ml.python zu überprüfen, führen Sie die folgenden Schritte aus:

  1. Installieren Sie cosign. Dieses Beispiel verwendet die Go-Installation: Installation von cosign mit Go.

  2. Laden Sie die Datei von einem Repository wie PyPi herunter.

  3. Laden Sie eine .sig-Datei für dieses Release von der GitHub Releases-Seite herunter.

  4. Überprüfen Sie die Signatur mit cosign. Beispiel:

cosign verify-blob snowflake_ml_python-1.7.0.tar.gz --key snowflake-ml-python-1.7.0.pub --signature resources.linux.snowflake_ml_python-1.7.0.tar.gz.sig

cosign verify-blob snowflake_ml_python-1.7.0.tar.gz --key snowflake-ml-python-1.7.0.pub --signature resources.linux.snowflake_ml_python-1.7.0
Copy

Bemerkung

Dieses Beispiel verwendet die Bibliothek und die Signatur für Version 1.7.0 des Pakets. Verwenden Sie die Dateinamen der Version, die Sie überprüfen.

Hinweise zum Veralten

  • snowflake.ml.fileset.FileSet ist veraltet und wird in einer zukünftigen Version entfernt werden. Verwenden Sie stattdessen snowflake.ml.dataset.Dataset und snowflake.ml.data.DataConnector.

  • Die „CamelCase“-Funktionsnamen in snowflake.ml.cortex sind veraltet und werden in einer zukünftigen Version entfernt. Verwenden Sie stattdessen die „snake_case“-Namen für diese Funktionen. Verwenden Sie zum Beispiel classify_text anstelle von ClassifyText.

  • Der partitioned_inefrerence_api-Decorator ist veraltet und wird in einer zukünftigen Version entfernt werden. Verwenden Sie stattdessen custom_model.partitioned_api.

Version 1.8.5 (2025-05-27)

Verhaltensänderungen

Das Verhalten der ML-Jobs ändert sich:

  • Das Argument num_instances wurde in target_instances in Auftragsübermittlungs-APIs umbenannt und ist nun erforderlich.

Fehlerkorrekturen

Fehlerkorrekturen an der Modell-Registry:

  • Ein Fehler beim Auflisten und Löschen von Container-Diensten wurde behoben.

  • Es wurde ein Fehler bei der Protokollierung von scikit-learn-Pipelines behoben, bei dem die Funktion explain nicht erstellt wurde.

  • Bei der Protokollierung eines reinen Container-Modells wird nicht mehr geprüft, ob die erforderliche Version von snowflake-ml-python im Snowflake-Conda-Kanal verfügbar ist.

Fehlerbehebungen zur Erklärbarkeit:

  • Die Mindestversion von streamlit wurde auf 1.30 gesenkt, um die Kompatibilität zu verbessern.

Fehlerkorrekturen bei der Modellierung:

  • xgboost ist jetzt wieder eine erforderliche Abhängigkeit (in v1.8.4 war sie optional).

Neue Features

Neue Features von ML-Jobs:

  • Der Job Decorator verfügt jetzt über das Argument min_instances, das einen Job warten lässt, bis die angegebene Anzahl von Workern bereit ist, bevor er gestartet wird.

Version 1.8.4 (2025-05-12)

Verhaltensänderungen

Das Verhalten der ML-Jobs ändert sich:

  • Die Eigenschaft id ist jetzt der vollqualifizierte Name des Jobs. Eine neue Eigenschaft, name, wurde eingeführt, um den ML-Jobnamen darzustellen.

  • Die Methode list_jobs gibt jetzt den ML-Jobnamen statt der Job-ID zurück.

Verhaltensänderungen an der Modell-Registry:

  • Unter log_model führt die Aktivierung von Erklärbarkeit, wenn das Modell nur für Snowpark Container Services bereitgestellt wird, jetzt zu einem Fehler statt zu einer Warnung und verhindert die Fertigstellung des Protokollvorgangs.

Fehlerkorrekturen

Fehlerkorrekturen an der Modell-Registry:

  • Es wurde ein Fehler bei der Protokollierung von PyTorch- und TensorFlow-Modellen behoben, der zu UnboundLocalError: local variable 'multiple_inputs' referenced before assignment.

Neue Features

Neue Features der Modell-Registry:

  • Aktivieren Sie automatisch die Erklärbarkeit für Modelle, die in einem Warehouse eingesetzt werden können.

Neue Erklärbarkeits-Features:

  • Neue Visualisierungsfunktionen in snowflake.ml.monitoring Plot-Erklärungen in Notebooks.

  • Unterstützung für kategorische Transformationen in Scikit-Learn-Pipelines.

Neue Modeling-Funktionen:

  • Unterstützung kategorischer Typen für xgboost.DMatrix-Eingaben in XGBoost-Modellen.

Version 1.8.3 (2025-04-28)

Neue Features

Neue Features der Modell-Registry:

  • Standardmäßig wird ein CUDA-Container-Image verwendet, falls verfügbar, wenn ein GPU-fähiges Modell für die Bereitstellung auf Container Runtime for ML protokolliert wird.

  • Die Modellversionen verfügen über eine run_job-Methode, die Inferenzmethoden als Snowpark Container Services-Job mit einem Knoten ausführt. Diese Methode steht für alle Modelle zur Verfügung, auch für diejenigen, die nicht in der Container Runtime für ML bereitgestellt werden.

  • Die Zielplattform ist standardmäßig auf ein Snowflake Warehouse eingestellt, wenn Sie ein partitioniertes Modell protokollieren.

Version 1.8.2 (2025-04-15)

Neue Features

Die ML Jobs-API, mit der Sie Code auf Container Runtime für ML von Ihrem lokalen Arbeitsplatz aus ausführen können, ist in der Vorschau verfügbar. Dementsprechend ist die Dokumentation für diese API in der Snowflake ML-API-Referenz verfügbar, und Änderungen an der API werden in diesen Versionshinweisen aufgeführt. Neue Features in de rML Jobs-API erscheinen hier vielleicht erst, wenn sie öffentlich angekündigt werden, aber sie erscheinen in der API-Referenz.

Neue Features der Modell-Registry:

  • Sie können den Pfad zum Schreiben der Modellversionsdateien, die im Stagingbereich des Modells gespeichert sind, mit der Option save_location in der Methode log_model angeben.

  • Bei der Protokollierung von Modellen in Container Runtime für ML werden Modellabhängigkeiten jetzt standardmäßig in pip_requirements aufgenommen.

Version 1.8.1 (2025-03-20)

Fehlerkorrekturen

Fehlerkorrekturen an der Modell-Registry:

  • Behebung des Fehlers unsupported model type beim Protokollieren eines scikit-learn-Modells mit einer score_samples-Inferenzmethode.

  • Behebung eines Fehlers bei der Erstellung eines Inferenzdienstes für einen bestehenden angehaltenen Dienst.

Neue Features

Neue Features der Modell-Registry:

  • Das Erstellen einer Kopie einer Modellversion mit log_model mit nicht unterstützten Argumenten löst jetzt eine Ausnahme aus.

Version 1.8.0 (2025-03-20)

Verhaltensänderungen

Verhaltensänderungen an der Modell-Registry:

  • Automatisch abgeleitete Signaturen in transformers.Pipeline wurden geändert, um die Aufgabenklasse FeatureGroupSpec zu verwenden, einschließlich:

    • Unterschrift für „fill-mask“-Aufgaben:

        ModelSignature(
            inputs=[
                FeatureSpec(name="inputs", dtype=DataType.STRING),
            ],
            outputs=[
                FeatureSpec(name="outputs", dtype=DataType.STRING),
            ],
      )
      
      Copy
    • Signatur für Token-Klassifizierungsaufgaben:

      ModelSignature(
          inputs=[
              FeatureSpec(name="inputs", dtype=DataType.STRING),
          ],
          outputs=[
              FeatureSpec(name="outputs", dtype=DataType.STRING),
          ],
      )
      
      Copy
    • Unterschrift für Aufgaben zur Beantwortung von Fragen:

      ModelSignature(
          inputs=[
              FeatureSpec(name="question", dtype=DataType.STRING),
              FeatureSpec(name="context", dtype=DataType.STRING),
          ],
          outputs=[
              FeatureSpec(name="outputs", dtype=DataType.STRING),
          ],
      )
      
      Copy
    • Unterschrift für Aufgaben zur Beantwortung von Fragen, wenn top_k größer als 1 ist:

      ModelSignature(
          inputs=[
              FeatureSpec(name="question", dtype=DataType.STRING),
              FeatureSpec(name="context", dtype=DataType.STRING),
          ],
          outputs=[
              FeatureSpec(name="outputs", dtype=DataType.STRING),
          ],
      )
      
      Copy
    • Signatur für Textklassifizierungsaufgaben, wenn top_k None ist:

      ModelSignature(
          inputs=[
              FeatureSpec(name="text", dtype=DataType.STRING),
              FeatureSpec(name="text_pair", dtype=DataType.STRING),
          ],
          outputs=[
              FeatureSpec(name="label", dtype=DataType.STRING),
              FeatureSpec(name="score", dtype=DataType.DOUBLE),
          ],
      )
      
      Copy
    • Signatur für Textklassifizierungsaufgaben, wenn top_k nicht None ist:

      ModelSignature(
          inputs=[
              FeatureSpec(name="text", dtype=DataType.STRING),
              FeatureSpec(name="text_pair", dtype=DataType.STRING),
          ],
          outputs=[
              FeatureSpec(name="outputs", dtype=DataType.STRING),
          ],
      )
      
      Copy
    • Signatur für Aufgaben zur Texterstellung:

      ModelSignature(
          inputs=[FeatureSpec(name="inputs", dtype=DataType.STRING)],
          outputs=[
              FeatureSpec(name="outputs", dtype=DataType.STRING),
          ],
      )
      
      Copy
  • PyTorch- und TensorFlow-Modelle erwarten nun standardmäßig eine einzelne Tensor-Eingabe und -Ausgabe, wenn sie in der Modellregistrierung angemeldet werden. Um mehrere Tensoren zu verwenden (bisheriges Verhalten), setzen Sie options={"multiple_inputs": True}.

    Beispiel mit einem einzigen Tensor-Eingang:

    import torch
    
    class TorchModel(torch.nn.Module):
        def __init__(self, n_input: int, n_hidden: int, n_out: int, dtype: torch.dtype = torch.float32) -> None:
            super().__init__()
            self.model = torch.nn.Sequential(
                torch.nn.Linear(n_input, n_hidden, dtype=dtype),
                torch.nn.ReLU(),
                torch.nn.Linear(n_hidden, n_out, dtype=dtype),
                torch.nn.Sigmoid(),
            )
    
        def forward(self, tensor: torch.Tensor) -> torch.Tensor:
            return cast(torch.Tensor, self.model(tensor))
    
    # Sample usage:
    data_x = torch.rand(size=(batch_size, n_input))
    
    # Log model with single tensor
    reg.log_model(
        model=model,
        ...,
        sample_input_data=data_x
    )
    
    # Run inference with single tensor
    mv.run(data_x)
    
    Copy

    Für mehrere Tensor-Eingänge oder -Ausgänge verwenden Sie:

    reg.log_model(
        model=model,
        ...,
        sample_input_data=[data_x_1, data_x_2],
        options={"multiple_inputs": True}
    )
    
    Copy
  • enable_explainability ist jetzt standardmäßig auf False eingestellt, wenn das Modell in Snowpark Container Services bereitgestellt werden kann.

Fehlerkorrekturen

Fehlerkorrekturen bei der Modellierung:

  • Behebung eines Fehlers in einigen Metriken, durch den eine nicht unterstützte Version von numpy automatisch in der gespeicherten Prozedur installiert werden konnte, was bei der Ausführung zu einem numpy-Fehler führte.

Fehlerkorrekturen an der Modell-Registry:

  • Behebung eines Fehlers, der zu einer falschen Model does not have _is_inference_api-Fehlermeldung führt, wenn ein unterstütztes Modell als Eigenschaft eines CustomModel zugewiesen wird.

  • Behebung eines Fehlers, bei dem die Inferenz nicht funktioniert, wenn Modelle mit mehr als 500 Eingabe-Features auf SPCS bereitgestellt werden.

Neue Features

Neue Features der Modell-Registry:

  • Unterstützung für die Verwendung eines einzelnen torch.Tensor, tensorflow.Tensor und tensorflow.Variable als Eingabe- oder Ausgabedaten.

  • Unterstützung für xgboost.DMatrix datatype für XGBoost-Modelle.

Version 1.7.5 (2025-03-06)

snowflake-ml-python 1.7.5 bietet Unterstützung für Python 3.12.

Fehlerkorrekturen

Fehlerkorrekturen an der Modell-Registry:

  • Es wurde ein Kompatibilitätsproblem behoben, bei dem bei Verwendung von snowflake-ml-python 1.7.0 oder höher zum Speichern eines tensorflow.keras-Modells mit keras 2.x das Modell nicht in Snowflake ausgeführt werden konnte. Dieses Problem trat auf, wenn relax_version auf True (oder Standard) eingestellt ist und eine neue Version von snowflake-ml-python verfügbar ist. Wenn Sie ein betroffenes Modell protokolliert haben, können Sie es wiederherstellen, indem Sie es mit ModelVerison.load laden und es mit der neuesten Version von snowflake-ml-python erneut protokollieren.

  • Die Validierung, die verhindert, dass Daten, die keine Nicht-Null-Werte haben, an ModelVersion.run übergeben werden, wurde entfernt.

Neue Features

Neue Features der Modell-Registry:

  • Unterstützung für Hugging Face-Modellkonfigurationen mit automatischer Zuordnung.

  • Unterstützung für keras 3.x-Modelle mit Tensorflow- und Pytorch-Backends.

Neue Features zur Erklärbarkeit von Modellen:

  • Unterstützung für native und snowflake-ml-python-sklearn-Pipelines.

Version 1.7.4 (2025-01-28)

Wichtig

snowflake.ml.fileset.FileSet ist veraltet und wird in einer zukünftigen Version entfernt werden. Verwenden Sie stattdessen snowflake.ml.dataset.Dataset und snowflake.ml.data.DataConnector.

Fehlerkorrekturen

Fehlerkorrekturen in der Registry:

  • Es wurde ein Problem behoben, bei dem die Pipelines von Hugging Face mit einem falschen Datentyp geladen wurden.

  • Es wurde ein Problem behoben, bei dem beim Ableiten einer Modellsignatur nur eine Zeile tatsächlich verwendet wurde.

Neue Features

Neue Cortex-Features:

  • Neue Option guardrails in der Funktion Complete.

Version 1.7.3 (2025-01-09)

Abhängigkeits-Upgrades

  • fsspec und s3fs müssen 2024.6.1 oder höher und geringer als 2026 sein.

  • mlflow muss 2.16.0 oder höher und geringer als 3 sein.

Neue Features

Neue Cortex-Features:

  • Cortex-Funktionen haben jetzt „snake_case“-Namen. Zum Beispiel ist ClassifyText jetzt classify_text. Die alten „CamelCase“-Namen funktionieren noch, werden aber in einem zukünftigen Release entfernt.

Neue Features der Modell-Registry:

  • Registry unterstützt jetzt mehr als 500.000 Features.

  • Das Argument user_files wurde zu Registry.log_model hinzugefügt, um Bilder oder andere Dateien mit dem Modell zu verbinden.

  • Unterstützung für die Handhabung von Konfigurationen des Modells Hugging Face mit automatischer Zuordnung wurde hinzugefügt.

Neue Features für Daten:

  • Der DataConnector.from_sql-Konstruktor wurde hinzugefügt.

Fehlerkorrekturen

Fehlerkorrekturen in der Registry:

  • Es wurde ein Fehler behoben, der auftrat, wenn ein Nicht-Bereichsindex pandas DataFrame als Eingabe an ModelVersion.run übergeben wurde.

  • Die Generierung zufälliger Modellregistrierungsnamen wurde verbessert, um Kollisionen zu vermeiden.

  • Es wurde ein Problem behoben, das beim Ableiten einer Signatur oder beim Ausführen einer Inferenz mit Snowpark DataFrame auftrat, wenn eine Spalte vom Typ ARRAY ist und einen Wert NULL enthält.

  • ModelVersion.run akzeptiert jetzt einen vollqualifizierten Dienstnamen.

  • Ein Fehler in log_model für alle scikit-learn-Modelle, die nur Daten vorverarbeiten, einschließlich der Pipeline-Modelle, die nur Daten vorverarbeiten, wurde behoben.

Fehlerbehebungen bei der Überwachung:

  • Ein Problem bei der Erstellung von Monitoren mit vollqualifizierten Namen wurde behoben.