TensorFlow

Snowflake ML Model Registry는 TensorFlow(tensorflow.Module``에서 파생된 모델) Keras v2 모델(Keras 버전 3.0.0 이상의 ``keras.Model)을 사용하여 생성된 모델을 지원합니다.

참고

Keras 3.0.0 이상의 경우, Keras 처리기를 사용합니다.

log_model 을 호출할 때 options 사전에서 다음 추가 옵션을 사용할 수 있습니다.

옵션

설명

target_methods

모델 오브젝트에서 사용할 수 있는 메서드의 이름 목록입니다. TensorFlow 모델에는 기본 대상 메서드로 ``__call__``이 있습니다. Keras v2 모델에는 기본 대상 메서드로 ``predict``가 있습니다.

cuda_version

GPU로 플랫폼에 배포할 때 사용할 CUDA 런타임 버전으로 기본값은 11.8입니다. 수동으로 None 으로 설정하면 GPU가 있는 플랫폼에 모델을 배포할 수 없습니다.

multiple_inputs

모델이 여러 텐서 입력을 예상하는지 여부입니다. 기본값은 False 입니다. ``True``인 경우 모델은 단일 텐서 대신 텐서 목록을 입력으로 허용합니다.

레지스트리가 대상 메서드의 서명을 알도록 TensorFlow 모델을 로깅할 때 sample_input_data 또는 signatures 매개 변수를 지정해야 합니다.

참고

Keras v2 모델에는 대상 메서드가 하나만 있을 수 있습니다.

참고

pandas DataFrames를 사용하는 경우(기본적으로 float64 사용), TensorFlow 모델이 변수 및 tf.TensorSpec 입력 시그니처에 ``tf.float64``를 사용하여 데이터 유형 불일치 오류를 방지하는지 확인합니다.

이러한 예제에서는 ``reg``가 ``snowflake.ml.registry.Registry``의 인스턴스라고 가정합니다.

TensorFlow 모듈

다음 예제에서는 ``tf.Module``을 서브클래싱하여 TensorFlow 모델을 생성하고, 이를 Snowflake ML Model Registry에 기록하고, 추론을 실행하는 방법을 보여줍니다.

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

Keras v2 순차 모델

다음 예제에서는 Keras v2 순차 모델을 학습시켜 Snowflake ML Model Registry에 기록하고 추론을 실행하는 방법을 보여줍니다.

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")
Copy