Snowflake ML 릴리스 정보¶
이 문서에는 Snowflake ML 에 대한 릴리스 정보가 있는데, 해당되는 경우 다음을 포함합니다.
동작 변경 사항
새로운 기능
고객이 직면한 버그 수정
참고
이 참고 사항에는 공개적으로 발표되지 않은 기능의 변경 사항은 포함되지 않습니다 이러한 기능은 Snowflake ML 소스 코드에는 표시되지만 공개 설명서에는 표시되지 않을 수 있습니다.
설명서는 Snowflake ML: 엔드투엔드 머신 러닝 섹션을 참조하십시오.
snowflake-ml-python
패키지 확인하기¶
모든 Snowflake 패키지는 서명되어 있어 출처를 확인할 수 있습니다. snowflake.ml.python
패키지를 확인하려면 아래 단계를 따르십시오.
cosign
를 설치합니다. 이 예에서는 Go 설치: Go로 공동 서명 설치하기 를 사용합니다.PyPi 와 같은 리포지토리에서 파일을 다운로드합니다.
GitHub 릴리스 페이지 에서 해당 릴리스에 대한
.sig
파일을 다운로드합니다.cosign
을 사용하여 서명을 확인합니다. 예:
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
참고
이 예에서는 패키지 버전 1.7.0의 라이브러리와 서명을 사용합니다. 확인하려는 버전의 파일 이름을 사용합니다.
사용 중단 공지¶
snowflake.ml.fileset.FileSet
는 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 대신 snowflake.ml.dataset.Dataset 및 snowflake.ml.data.DataConnector 을 사용하십시오.snowflake.ml.cortex
의 “CamelCase” 함수 이름은 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 대신 이러한 함수에는 “snake_case” 이름을 사용합니다. 예를 들어,ClassifyText
대신classify_text
를 사용합니다.partitioned_inefrerence_api
데코레이터는 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다.custom_model.partitioned_api
를 대신 사용하십시오.
버전 1.8.5(2025-05-27)¶
동작 변경 사항¶
ML 작업 동작 변경 사항:
작업 제출 APIs 에서 인자
num_instances
가target_instances
으로 이름이 변경되었으며 이제 필수입니다.
버그 수정 사항¶
모델 레지스트리 버그 수정 사항:
컨테이너 서비스 목록 및 삭제 관련 버그를 수정했습니다.
explain
함수가 생성되지 않은 경우 scikit-learn 파이프라인을 기록하는 버그를 수정했습니다.컨테이너 전용 모델을 로그하면 더 이상 필수인
snowflake-ml-python
버전이 Snowflake conda 채널에서 사용 가능한지 확인하지 않습니다.
설명 가능성 버그 수정:
호환성 향상을 위해 최소
streamlit
버전이 1.30으로 낮아졌습니다.
모델링 버그 수정 사항:
xgboost
는 이제 다시 필수 종속성입니다(v1.8.4에서는 선택 사항이었음).
새로운 기능¶
ML Jobs 새로운 기능:
이제 작업 데코레이터에 지정된 수의 작업자가 준비될 때까지 기다렸다가 작업을 시작하도록 하는
min_instances
인자가 추가되었습니다.
버전 1.8.4(2025-05-12)¶
동작 변경 사항¶
ML 작업 동작 변경 사항:
id
속성은 이제 작업의 정규화된 이름입니다. ML 작업 이름을 나타내는 새로운 속성name
이 도입되었습니다.list_jobs
메서드는 이제 ID 작업 대신 ML 작업 이름을 반환합니다.
모델 레지스트리 동작 변경 사항:
log_model
에서 모델이 Snowpark Container Services에만 배포될 때 설명 기능을 활성화하면 이제 경고 대신 오류가 발생하여 로그 작업이 완료되지 않습니다.
버그 수정 사항¶
모델 레지스트리 버그 수정 사항:
PyTorch 및 TensorFlow 모델을 기록할 때
UnboundLocalError: local variable 'multiple_inputs' referenced before assignment.
를 유발하는 버그를 수정했습니다
새로운 기능¶
새로운 Model Registry 기능:
웨어하우스에 배포할 수 있는 모델에 대해 자동으로 설명 기능을 활성화합니다.
새로운 설명 기능:
노트북의
snowflake.ml.monitoring
플롯 설명에 새로운 시각화 함수가 추가되었습니다.스키킷 학습 파이프라인에서 범주형 변환을 지원합니다.
새로운 Modeling 기능:
XGBoost 모델에서
xgboost.DMatrix
입력에 대한 범주형 유형을 지원합니다.
버전 1.8.3(2025-04-28)¶
새로운 기능¶
새로운 Model Registry 기능:
GPU 지원 모델을 ML 용 Container Runtime에 배포하기 위해 로그할 때 사용 가능한 경우 기본값을 CUDA 컨테이너 이미지로 설정합니다.
모델 버전에는 추론 메서드를 단일 노드 Snowpark Container Services 작업으로 실행하는
run_job
메서드가 있습니다. 이 방법은 ML 용 Container Runtime에 배포되지 않은 모델을 포함한 모든 모델에 사용할 수 있습니다.파티션된 모델을 기록할 때 대상 플랫폼은 기본적으로 Snowflake 웨어하우스로 설정됩니다.
버전 1.8.2(2025-04-15)¶
새로운 기능¶
로컬 워크스테이션에서ML 용 Container Runtime에서 코드를 실행할 수 있는 ML Jobs API 를 미리 볼 수 있습니다. 따라서 이 API 에 대한 설명서는 Snowflake ML API 참조에서 사용 가능하며, API 에 대한 변경 사항은 이 릴리스 노트에 나와 있습니다. ML Jobs API 의 새로운 기능은 공개적으로 발표될 때까지 여기에 표시되지 않을 수 있지만, API 참조에는 표시됩니다.
새로운 Model Registry 기능:
log_model
메서드에서save_location
옵션을 사용하여 모델의 Snowflake 스테이지에 저장된 모델 버전 파일을 작성할 경로를 지정할 수 있습니다.ML 용 Container Runtime에서 모델을 로그할 때 이제 모델 종속성이
pip_requirements
에 기본적으로 포함됩니다.
버전 1.8.1(2025-03-20)¶
버그 수정 사항¶
모델 레지스트리 버그 수정 사항:
score_samples
추론 메서드를 사용하여 scikit-learn 모델을 기록할 때unsupported model type
오류를 수정했습니다.기존 일시 중단된 서비스에서 추론 서비스 생성 실패를 수정했습니다.
새로운 기능¶
새로운 Model Registry 기능:
이제 지원되지 않는 인자를 사용하여
log_model
로 모델 버전의 복사본을 생성하면 예외가 발생합니다.
버전 1.8.0(2025-03-20)¶
동작 변경 사항¶
모델 레지스트리 동작 변경 사항:
transformers.Pipeline
에서 자동 추론된 서명이FeatureGroupSpec
작업 클래스를 사용하도록 변경되었습니다.fill-mask 작업을 위한 서명:
ModelSignature( inputs=[ FeatureSpec(name="inputs", dtype=DataType.STRING), ], outputs=[ FeatureSpec(name="outputs", dtype=DataType.STRING), ], )
ModelSignature( inputs=[ FeatureSpec(name="inputs", dtype=DataType.STRING), ], outputs=[ FeatureGroupSpec( name="outputs", specs=[ FeatureSpec(name="sequence", dtype=DataType.STRING), FeatureSpec(name="score", dtype=DataType.DOUBLE), FeatureSpec(name="token", dtype=DataType.INT64), FeatureSpec(name="token_str", dtype=DataType.STRING), ], shape=(-1,), ), ], )
토큰 분류 작업에 대한 서명:
ModelSignature( inputs=[ FeatureSpec(name="inputs", dtype=DataType.STRING), ], outputs=[ FeatureSpec(name="outputs", dtype=DataType.STRING), ], )
ModelSignature( inputs=[FeatureSpec(name="inputs", dtype=DataType.STRING)], outputs=[ FeatureGroupSpec( name="outputs", specs=[ FeatureSpec(name="word", dtype=DataType.STRING), FeatureSpec(name="score", dtype=DataType.DOUBLE), FeatureSpec(name="entity", dtype=DataType.STRING), FeatureSpec(name="index", dtype=DataType.INT64), FeatureSpec(name="start", dtype=DataType.INT64), FeatureSpec(name="end", dtype=DataType.INT64), ], shape=(-1,), ), ], )
질문 답변 작업에 서명합니다.
ModelSignature( inputs=[ FeatureSpec(name="question", dtype=DataType.STRING), FeatureSpec(name="context", dtype=DataType.STRING), ], outputs=[ FeatureSpec(name="outputs", dtype=DataType.STRING), ], )
ModelSignature( inputs=[ FeatureSpec(name="question", dtype=DataType.STRING), FeatureSpec(name="context", dtype=DataType.STRING), ], outputs=[ FeatureGroupSpec( name="answers", specs=[ FeatureSpec(name="score", dtype=DataType.DOUBLE), FeatureSpec(name="start", dtype=DataType.INT64), FeatureSpec(name="end", dtype=DataType.INT64), FeatureSpec(name="answer", dtype=DataType.STRING), ], shape=(-1,), ), ], )
top_k
가 1보다 큰 경우 질문 답변 작업에 서명합니다.ModelSignature( inputs=[ FeatureSpec(name="question", dtype=DataType.STRING), FeatureSpec(name="context", dtype=DataType.STRING), ], outputs=[ FeatureSpec(name="outputs", dtype=DataType.STRING), ], )
ModelSignature( inputs=[ FeatureSpec(name="question", dtype=DataType.STRING), FeatureSpec(name="context", dtype=DataType.STRING), ], outputs=[ FeatureGroupSpec( name="answers", specs=[ FeatureSpec(name="score", dtype=DataType.DOUBLE), FeatureSpec(name="start", dtype=DataType.INT64), FeatureSpec(name="end", dtype=DataType.INT64), FeatureSpec(name="answer", dtype=DataType.STRING), ], shape=(-1,), ), ], )
top_k
가None
일 때 텍스트 분류 작업에 대한 서명입니다.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), ], )
ModelSignature( inputs=[ FeatureSpec(name="text", dtype=DataType.STRING), ], outputs=[ FeatureSpec(name="label", dtype=DataType.STRING), FeatureSpec(name="score", dtype=DataType.DOUBLE), ], )
top_k
가None
이 아닌 경우 텍스트 분류 작업에 대한 서명:ModelSignature( inputs=[ FeatureSpec(name="text", dtype=DataType.STRING), FeatureSpec(name="text_pair", dtype=DataType.STRING), ], outputs=[ FeatureSpec(name="outputs", dtype=DataType.STRING), ], )
ModelSignature( inputs=[ FeatureSpec(name="text", dtype=DataType.STRING), ], outputs=[ FeatureGroupSpec( name="labels", specs=[ FeatureSpec(name="label", dtype=DataType.STRING), FeatureSpec(name="score", dtype=DataType.DOUBLE), ], shape=(-1,), ), ], )
텍스트 생성 작업을 위한 서명:
ModelSignature( inputs=[FeatureSpec(name="inputs", dtype=DataType.STRING)], outputs=[ FeatureSpec(name="outputs", dtype=DataType.STRING), ], )
ModelSignature( inputs=[ FeatureGroupSpec( name="inputs", specs=[ FeatureSpec(name="role", dtype=DataType.STRING), FeatureSpec(name="content", dtype=DataType.STRING), ], shape=(-1,), ), ], outputs=[ FeatureGroupSpec( name="outputs", specs=[ FeatureSpec(name="generated_text", dtype=DataType.STRING), ], shape=(-1,), ) ], )
PyTorch 및 TensorFlow 모델은 이제 모델 레지스트리에 로그될 때 기본적으로 단일 텐서 입력 및 출력을 기대합니다. 다중 텐서를 사용하려면(이전 동작)
options={"multiple_inputs": True}
로 설정합니다.단일 텐서 입력의 예입니다.
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)
텐서 입력 또는 출력이 여러 개일 경우 사용하십시오.
reg.log_model( model=model, ..., sample_input_data=[data_x_1, data_x_2], options={"multiple_inputs": True} )
이제 모델이 Snowpark Container Services에 배포될 수 있는 경우
enable_explainability
는False
로 기본 설정됩니다.
버그 수정 사항¶
모델링 버그 수정 사항:
일부 메트릭에서 지원되지 않는 버전의 numpy가 저장 프로시저에 자동으로 설치되어 실행 시 numpy 오류가 발생할 수 있는 버그를 수정했습니다.
모델 레지스트리 버그 수정 사항:
지원되는 모델을
CustomModel
의 속성으로 할당할 때 잘못된Model does not have _is_inference_api
오류 메시지가 표시되는 버그를 수정했습니다.입력 기능이 500개가 넘는 모델을 SPCS 에 배포할 때 추론이 작동하지 않는 버그를 수정했습니다.
새로운 기능¶
새로운 Model Registry 기능:
단일
torch.Tensor
및tensorflow.Variable
를 입력 또는 출력 데이터로 사용하도록 지원합니다.XGBoost 모델에 대한
xgboost.DMatrix datatype
지원.
버전 1.7.5(2025-03-06)¶
snowflake-ml-python
1.7.5에서는 Python 3.12에 대한 지원이 추가됩니다.
버그 수정 사항¶
모델 레지스트리 버그 수정 사항:
snowflake-ml-python
1.7.0 이상을 사용하여tensorflow.keras
모델을 keras 2.x로 저장할 때, 해당 모델을 Snowflake에서 실행할 수 없는 호환성 문제를 수정했습니다. 이 문제는relax_version
이True
(또는 기본값)으로 설정되어 있고snowflake-ml-python
의 새 버전을 사용할 수 있을 때 발생했습니다. 영향을 받은 모델을 로딩한 경우ModelVerison.load
를 사용하여 해당 모델을 로딩하고 최신 버전snowflake-ml-python
으로 다시 로그하여 복구할 수 있습니다.Null이 아닌 값이 없는 데이터는
ModelVersion.run
으로 전달되지 않도록 하는 유효성 검사를 제거했습니다.
새로운 기능¶
새로운 Model Registry 기능:
자동 매핑 기능을 통해 Hugging Face 모델 구성을 지원합니다.
tensorflow 및 pytorch 백엔드가 포함된 keras 3.x 모델을 지원합니다.
새로운 모델 설명 기능:
네이티브 및
snowflake-ml-python
sklearn 파이프라인을 지원합니다.
버전 1.7.4(2025-01-28)¶
중요
snowflake.ml.fileset.FileSet
는 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 대신 snowflake.ml.dataset.Dataset 및 snowflake.ml.data.DataConnector 을 사용하십시오.
버그 수정 사항¶
레지스트리 버그 수정:
Hugging Face 파이프라인이 잘못된 데이터 타입을 사용하여 로딩되던 문제를 수정했습니다.
모델 서명을 추론할 때 실제로는 한 행만 사용되던 문제를 수정했습니다.
새로운 기능¶
새로운 Cortex 특성:
Complete
함수에guardrails
옵션이 새로 추가되었습니다.
버전 1.7.3(2025-01-09)¶
종속성 업그레이드¶
fsspec
과s3fs
는 2024.6.1 이상 2026 미만이어야 합니다.mlflow
2.16.0 이상이고 3 미만이어야 합니다.
새로운 기능¶
새로운 Cortex 특성:
이제 Cortex 함수는 “snake_case” 이름을 갖습니다. 예를 들어
ClassifyText
는 이제classify_text
입니다. 이전의 “CamelCase” 이름도 계속 작동하지만, 향후 릴리스에서 제거될 예정입니다.
새로운 Model Registry 기능:
이제 레지스트리는 50만 개 이상의 특성을 지원합니다.
모델에 이미지나 기타 파일을 포함하기 위해
Registry.log_model
에user_files
인자를 추가했습니다.자동 매핑 기능으로 Hugging Face 모델 구성 처리를 위한 지원을 추가했습니다.
새로운 데이터 기능:
DataConnector.from_sql
생성자를 추가했습니다.
버그 수정 사항¶
레지스트리 버그 수정:
범위가 아닌 인덱스 pandas DataFrame 을
ModelVersion.run
에 입력으로 제공할 때 발생하는 버그를 수정했습니다.충돌을 방지하기 위해 무작위 Model Registry 이름 생성을 개선했습니다.
유형이 ARRAY 이고 NULL 값을 포함하는 열이 있는 Snowpark DataFrame 으로 서명을 추론하거나 추론을 실행할 때 발생하는 문제를 수정했습니다.
ModelVersion.run
은 이제 정규화된 서비스 이름을 사용할 수 있습니다.전처리 전용 파이프라인 모델을 포함하여 데이터 전처리만 있는 모든 Scikit-learn 모델에 대한
log_model
의 오류를 수정했습니다.
버그 수정 모니터링:
정규화된 이름을 사용하여 모니터를 만들 때 발생하는 문제를 수정했습니다.