Snowpark ML Data Connector

DataConnector 모듈은 Snowflake 데이터를 읽고 PyTorch 및 TensorFlow 와 같은 널리 사용되는 머신 러닝 프레임워크와 호환되는 형식으로 변환하기 위한 통합 인터페이스를 제공합니다.

DataConnector 는 Container Runtime for ML 에서 실행할 때 최적화된 데이터 수집을 자동으로 사용합니다.

참고

이 항목에서는 Snowpark ML 모듈이 설치되어 있다고 가정합니다. 설치되어 있지 않으면 로컬에서 Snowflake ML 사용하기 섹션을 참조하십시오.

DataConnector 만들기

DataConnector 인스턴스는 여러 가지 방법으로 만들 수 있습니다.

  • DataConnector.from_sql() 을 사용하는 SQL 쿼리에서

  • DataConnector.from_dataframe() 을 사용하는 Snowpark DataFrame 에서

  • DataConnector.from_dataset() 를 사용하는 Snowflake Dataset 에서

from snowflake.ml import dataset
from snowflake.ml.data import DataConnector

# Create a DataConnector from a SQL query
connector = DataConnector.from_sql("SELECT * FROM my_table", session=session)

# Create a DataConnector from a Snowpark DataFrame
df = session.table(my_table)
connector = DataConnector.from_dataframe(df)

# Create a DataConnector from a Snowflake Dataset
ds = dataset.load_dataset(session, "my_dataset", "v1")
connector = DataConnector.from_dataset(ds)
Copy

PyTorch에서 사용하기

PyTorch 에서 사용하려면 to_torch_dataset() 를 사용하여 IterableDataset 를 얻은 다음 PyTorch DataLoader로 전달할 수 있습니다. DataLoader 는 데이터를 반복하여 일괄 처리된 PyTorch 텐서를 산출합니다. 데이터 로딩은 효율성을 극대화하기 위해 스트림 방식으로 이루어집니다.

from torch.utils.data import DataLoader

torch_ds = connector.to_torch_dataset(
    batch_size=4,
    shuffle=True,
    drop_last_batch=True
)

for batch in DataLoader(torch_ds, batch_size=None, num_workers=0):
    print(batch)
Copy

TensorFlow에서 사용하기

TensorFlow 와 함께 사용하려면 to_tf_dataset() 메서드를 사용하여 텐서플로 데이터 세트를 가져옵니다. 데이터 세트를 반복하면 일괄 처리된 TensorFlow 텐서를 얻을 수 있습니다. 데이터 로딩은 효율성을 극대화하기 위해 스트림 방식으로 이루어집니다.

tf_ds = connector.to_tf_dataset(
    batch_size=4,
    shuffle=True,
    drop_last_batch=True
)

for batch in tf_ds:
    print(batch)
Copy

데이터 처리 옵션

셔플링

shuffle=True 로 전달하여 수집 중에 데이터를 무작위로 섞습니다. 이렇게 하면 모델 학습 중 과적합을 방지하는 데 도움이 됩니다. 데이터 섞기의 가치에 대한 논의는 머신 러닝 작업을 위해 데이터를 셔플링해야 하는 이유 를 참조하십시오.

배치

batch_size 매개 변수를 사용하여 데이터 배치의 크기를 제어합니다. 배치 작업은 데이터 수집 수준에서 효율적으로 처리됩니다. PyTorch DataLoaders 와 함께 사용하는 경우 이중 배치를 방지하기 위해 DataLoader 를 인스턴스화할 때 batch_size=None 을 명시적으로 전달해야 합니다. DataLoader 사용 예는 PyTorch에서 사용하기 섹션을 참조하십시오.

마지막 일괄 처리가 불완전할 경우 drop_last_batch=Trueto_torch_datapipe 또는 to_tf_dataset 에 전달하여 삭제할 수도 있습니다.