TensorFlow¶
Die Snowflake ML Model Registry unterstützt Modelle, die mit TensorFlow erstellt wurden (von tensorflow.Module abgeleitete Modelle) und Keras v2-Modelle (keras.Model mit Keras-Version < 3.0.0).
Bemerkung
Für Keras 3.0.0 oder höher verwenden Sie die Keras-Handler.
Die folgenden zusätzlichen Optionen können im options-Dictionary verwendet werden, wenn Sie log_model abrufen:
Option |
Beschreibung |
|---|---|
|
Liste mit den Namen der für das Modellobjekt verfügbaren Methoden. TensorFlow-Modelle haben |
|
Die Version der CUDA-Laufzeitumgebung, die beim Bereitstellen auf einer Plattform mit GPU verwendet werden soll. Der Standardwert ist 11.8. Wird das Modell manuell auf |
|
Ob das Modell mehrere Tensor-Eingaben erwartet. Die Standardeinstellung ist |
Sie müssen entweder den Parameter sample_input_data oder signatures angeben, wenn Sie ein TensorFlow-Modell protokollieren, damit die Registry die Signaturen der Zielmethoden kennt.
Bemerkung
Keras v2-Modelle können nur eine Zielmethode haben.
Bemerkung
Bei Verwendung von pandas DataFrames (die standardmäßig float64 verwenden) stellen Sie sicher, dass Ihr TensorFlow-Modell tf.float64 für Variablen und tf.TensorSpec-Eingabesignaturen verwendet, um dtype-Konfliktfehler zu vermeiden.
Beispiele¶
Diese Beispiele gehen davon aus, dass reg eine Instanz von snowflake.ml.registry.Registry ist.
TensorFlow-Modul¶
Das folgende Beispiel zeigt das Erstellen eines TensorFlow-Modells durch Unterklassen von tf.Module, Protokollieren in der Snowflake ML Model Registry und Ausführen von Ableitungen.
import tensorflow as tf
import pandas as pd
# Define a simple TensorFlow module
class LinearModel(tf.Module):
def __init__(self, name=None):
super().__init__(name=name)
self.weight = tf.Variable(2.0, dtype=tf.float64, name="weight")
self.bias = tf.Variable(1.0, dtype=tf.float64, name="bias")
@tf.function(input_signature=[tf.TensorSpec(shape=(None, 1), dtype=tf.float64)])
def __call__(self, x):
return self.weight * x + self.bias
# Create model instance
model = LinearModel(name="linear_model")
# Create sample input data as DataFrame
sample_df = pd.DataFrame({"input": [1.0, 2.0, 3.0, 4.0, 5.0]})
# Log the model
model_ref = reg.log_model(
model=model,
model_name="my_tf_linear_model",
version_name="v1",
sample_input_data=sample_df,
)
# Make predictions (default target method is __call__)
test_df = pd.DataFrame({"input": [6.0, 7.0, 8.0]})
result_df = model_ref.run(test_df)
Sequenzielles Keras v2-Modell¶
Das folgende Beispiel zeigt das Training eines sequenziellen Keras v2-Modells und Protokollierung in der Snowflake ML Model Registry und Ausführen von Ableitungen.
import tf_keras as keras
from sklearn import datasets, model_selection
# Load dataset
iris = datasets.load_iris(as_frame=True)
X = iris.data
y = iris.target
# Rename columns for valid Snowflake identifiers
X.columns = [col.replace(' ', '_').replace('(', '').replace(')', '') for col in X.columns]
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.2)
# Build Keras v2 model
model = keras.Sequential([
keras.layers.Dense(64, activation='relu', input_shape=(X_train.shape[1],)),
keras.layers.Dense(32, activation='relu'),
keras.layers.Dense(3, activation='softmax')
])
model.compile(
optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy']
)
# Train the model
model.fit(X_train, y_train, epochs=50, verbose=0)
# Log the model
model_ref = reg.log_model(
model=model,
model_name="my_iris_classifier",
version_name="v1",
sample_input_data=X_test,
)
# Make predictions
result_df = model_ref.run(X_test[-10:], function_name="predict")