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)
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)
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)
데이터 처리 옵션¶
셔플링¶
shuffle=True
로 전달하여 수집 중에 데이터를 무작위로 섞습니다. 이렇게 하면 모델 학습 중 과적합을 방지하는 데 도움이 됩니다. 데이터 섞기의 가치에 대한 논의는 머신 러닝 작업을 위해 데이터를 셔플링해야 하는 이유 를 참조하십시오.
배치¶
batch_size
매개 변수를 사용하여 데이터 배치의 크기를 제어합니다. 배치 작업은 데이터 수집 수준에서 효율적으로 처리됩니다. PyTorch DataLoaders 와 함께 사용하는 경우 이중 배치를 방지하기 위해 DataLoader
를 인스턴스화할 때 batch_size=None
을 명시적으로 전달해야 합니다. DataLoader
사용 예는 PyTorch에서 사용하기 섹션을 참조하십시오.
마지막 일괄 처리가 불완전할 경우 drop_last_batch=True
를 to_torch_datapipe
또는 to_tf_dataset
에 전달하여 삭제할 수도 있습니다.