Snowpark는 2년 전 출시된 이후로 데이터 과학자, 데이터 엔지니어 및 애플리케이션 개발자가 Snowflake에서 아키텍처를 간소화하고, 개발을 가속화하고, 데이터 엔지니어링 및 ML/AI 워크로드의 성능을 높이는 데 도움이 되어 왔습니다. Snowflake는 올해 Summit에서 Snowpark 런타임 및 라이브러리에 대한 여러 가지 개선 사항을 기쁜 마음으로 발표했습니다. 이러한 개선 사항은 Snowflake에서 비(非)SQL 코드를 훨씬 더 간단하고 빠르고 안전하게 배포 및 처리할 수 있도록 해줍니다.

Snowpark — Snowflake 데이터 클라우드에서 비SQL 코드를 안전하게 배포하고 처리하기 위한 라이브러리 및 런타임 세트입니다.

Snowpark는 Snowflake가 비SQL 코드를 안전하게 배포 및 처리하는 방식으로, 다음과 같은 두 개의 계층으로 구성되어 있습니다.

익숙한 클라이언트 측 라이브러리 – Snowpark는 깊이 통합된 DataFrame 스타일 프로그래밍 및 OSS 호환 API를 데이터 실무자가 즐겨 사용하는 언어로 가져옵니다. 이는 데이터 준비, 정제, 전처리, 모델 훈련, 배포 작업을 비롯한 다양한 데이터 중심 작업에 익숙한 API를 제공합니다. 당사가 더 효율적인 모델 개발(공개 미리 보기 제공 중) 및 배포(비공개 미리 보기 제공 중)를 위해 새로운 ML API 세트도 지원하게 되었다는 소식을 기쁜 마음으로 전해 드립니다.

유연한 런타임 구조 – Snowpark는 사용자가 웨어하우스나 Snowpark 컨테이너 서비스(비공개 미리 보기 제공 중)를 통해 커스텀 로직을 가져오고 실행할 수 있도록 하는 유연한 컴퓨팅 및 런타임 구조를 제공합니다. 사용자는 웨어하우스 모델에서 사용자 정의 함수(UDF) 및 저장 프로시저(sprocs)를 사용하여 데이터 파이프라인, ML 모델 및 데이터 애플리케이션을 원활하게 실행하고 운영할 수 있습니다. GPU, 커스텀 런타임/라이브러리 또는 장기간 실행되는 풀스택 애플리케이션 호스팅과 같은 특수 하드웨어를 사용해야 하는 워크로드의 경우, Snowpark Container Services가 이상적인 솔루션을 제공합니다.

이러한 기능은 데이터 엔지니어, 데이터 과학자 및 개발자의 요구 사항과 선호에 맞는 강력한 확장성(extensibility)을 제공합니다. 이에 따라 조직은 Snowflake의 거버넌스 경계 밖에서 운영되는 복잡한 독립형 시스템을 가동 및 관리하는 부담스러운 작업에서 벗어날 수 있습니다. 기업은 컴퓨팅을 데이터에 더 가깝게 가져와 데이터 사일로를 해소하고, 보안 및 거버넌스 과제를 해결하고, 운영을 최적화할 수 있습니다. 또한 효율성을 향상시키면서 추가 시스템 및 인프라와 관련된 관리 오버헤드를 피할 수도 있습니다.

이 블로그에서는 Snowpark 클라이언트 라이브러리 및 웨어하우스의 서버 측 개선 사항에 대한 최신 발표를 자세히 살펴보겠습니다. Snowpark 컨테이너 서비스에 대해 자세히 알아보려면 여기에서 출시 블로그를 참고해 주세요.

새로운 기능: Python용 Snowpark

Python의 인기는 계속해서 치솟고 있으며, 데이터 과학자들이 선택한 언어이자 개발자들 사이에서 세 번째로 인기 있는 언어로 자리 잡았습니다. 당사는 Snowflake를 Python 실무자를 위한 동종 최고의 플랫폼으로 만들겠다는 사명을 띠고 있으며, Python용 Snowpark에 대한 종합적인 개선 사항 세트와 확장된 기능 세트를 출시했습니다. 

일반 플랫폼 업데이트

여러 Python 버전 3.9 및 3.10 지원(공개 미리 보기 제공 중) 사용자는 최신 버전으로 업그레이드해 Snowpark에서 Python 개선 사항과 호환되는 타사 패키지를 활용할 수 있습니다.

Snowflake 내부에서 새로운 Python(Anaconda) 라이브러리 지원 – Python의 힘은 오픈소스 패키지의 풍부한 생태계에 있습니다. 따라서 당사는 Python용 Snowpark의 일환으로 Anaconda 통합을 통해 데이터 클라우드에 대기업에도 적합한(enterprise-grade) 원활한 오픈소스 혁신을 도입하고 있습니다. 우리는 고객과 Snowflake 아이디어 보드의 피드백에 따라 Snowflake 채널에서 이용 가능한 5,000개 이상의 패키지로 구성된 기존 리포지토리에 패키지를 계속해서 추가하고 있습니다. 곧 출시될 최근 추가 항목 및 라이브러리로는 langchain, implicit, imbalanced-learn, rapidfuzz, rdkit, mlforecast, statsforecast, scikit-optimize, cikit-surprise 등이 있습니다.

Python 비정형 데이터 처리(공개 미리 보기 제공 중)이제 Python을 통한 비정형 데이터 처리가 기본적으로 지원됩니다. 사용자는 Python UDF, UDTF 및 저장 프로시저를 활용하여 내부/외부 스테이지 또는 온프레미스 스토리지에서 비정형 파일(예: 이미지, 비디오, 오디오 또는 커스텀 형식)로부터 통찰력을 안전하게 동적으로 읽어내고, 처리하고, 창출할 수 있습니다.

외부 네트워크 액세스(비공개 미리 보기 제공 중) – 사용자가 높은 보안 및 거버넌스를 유지하면서 Snowpark 코드(UDF/UDTF 및 저장 프로시저)에서 외부 엔드포인트에 원활하게 연결할 수 있습니다.

Python 패키지 정책(비공개 미리 보기 제공 중) – 적절한 권한이 있는 사용자가 자신의 계정에서 활용되는 Anaconda 패키지의 거버넌스를 향상시키기 위해 허용 목록과 차단 목록을 지정할 수 있습니다. 이 기능이 있으면 감사 및/또는 보안 요구 사항이 비교적 엄격한 고객이 Snowflake 환경에서 OSS python 패키지 사용에 대해 더욱 세부적인 명령과 거버넌스를 갖출 수 있습니다.

클라이언트 라이브러리 업데이트

Snowpark ML API 소개 – Snowflake에서 엔드 투 엔드 ML 개발을 더 쉽게 수행할 수 있도록 하는 ML 모델링 API(공개 미리 보기 제공 중) 및 ML 운영 API(비공개 미리 보기 제공 중)로 구성된 Snowpark ML API가 지원된다는 소식도 기쁜 마음으로 전해 드립니다. 

Snowpark ML 모델링 API(공개 미리 보기 제공 중) – Snowflake에서 기능 엔지니어링을 스케일 아웃하고 모델 훈련을 간소화할 수 있습니다.

  • 전처리: 이미 익숙한 sklearn 스타일의 API로 Snowflake의 데이터에 대해 직접적으로 일반적인 전처리 및 기능 엔지니어링 작업을 수행할 수 있습니다. 또한 분산된 다중 노드(multi-node)를 실행하여 대규모 데이터 세트에 맞게 스케일링하면서 향상된 성능과 Snowflake 병렬화의 이점을 누릴 수 있습니다.
  • 모델링: Snowflake의 데이터에 대해 직접 인기 있는 scikit-learn 및 xgboost 모듈을 사용해 모델을 훈련시킬 수 있습니다. 또한 저장 프로시저나 UDF를 수동으로 만들 필요 없이 턴키 방식으로 훈련을 실행할 수 있는 익숙한 API가 제공됩니다.

Snowpark ML 운영 API(비공개 미리 보기 제공 중) – 스케일링 가능하고 신뢰할 수 있는 Snowflake 인프라를 사용하여 추론을 위해 등록된 모델을 손쉽게 배포하도록 하는 Snowpark 모델 레지스트리(비공개 미리 보기 제공 중)가 포함되어 있습니다.

웨어하우스 런타임 계약 업데이트


사용자 정의 집계 함수(UDAF)(비공개 미리 보기 제공 중) –
사용자가 여러 행의 값에 대해 실행 가능하며, 실행 결과 집계된 단일 값을 반환할 수 있는 함수를 작성할 수 있습니다. 또한 이에 따라 Snowpark에서 원활하고 사용자 친화적인 커스텀 집계 시나리오를 구현할 수 있습니다.

벡터화된 UDTF(곧 공개 미리 보기 제공 예정) – 사용자가 파티션에서 pandas DataFrame으로 운영되고 결과를 pandas Dataframe 또는 pandas 시리즈/어레이 목록으로 반환하는 테이블 함수를 작성할 수 있습니다. 벡터화된 UDTF는 스칼라 UDTF의 행별 처리와 대비되는 파티션별 처리를 원활하게 구현합니다. 프로세스 함수에서 행별로 데이터를 수집하는 것보다 데이터 프레임을 연결하는 것이 더 빠르다는 점을 감안할 때, 이는 여러 독립 모델의 분산 훈련(예: 하이퍼 매개변수 튜닝), 분산 시계열 분석/예측, 여러 출력을 통한 모델 추론 등, 여러 사용 사례에서 성능을 개선합니다.

익명 저장 프로시저(공식 출시(GA))저장 프로시저와 비슷하지만, 추후 사용을 위해 저장되지 않는 익명 프로시저를 만들고 호출할 수 있습니다. 이는 지속될 필요가 없는 Snowpark 코드를 실행해야 하는 Snowpark 앱/통합을 개발하는 경우에 유용합니다. 백그라운드에서 익명 sprocs를 활용하는 dbt Python 모델Snowflake Python 워크시트를 예로 들 수 있습니다.

Python 테이블 저장 프로시저(공개 미리 보기 제공 중)저장 프로시저는 이전에는 스칼라 값만 반환했지만, 이제는 결과를 테이블로 반환할 수 있습니다. 이에 따라 사용자가 Snowpark 코드의 일환으로 다운스트림 처리를 위해 테이블을 편리하게 반환할 수 있습니다.

새로운 것: Snowflake의 DevOps

당사는 Summit에서 위와 같은 Snowpark 개선 사항 외에도 Snowpark 코드를 더 쉽게 작업, 관리, 테스트 및 운영할 수 있도록 하는 여러 가지 Snowflake DevOps 관련 개선 사항을 발표했습니다. 아래에서는 몇 가지 주목할만한 업데이트를 살펴보겠습니다.

이벤트 테이블(공개 미리 보기 제공 중)을 통한 로깅 및 추적 – 사용자는 UDF, UDTF, 저장 프로시저와 Snowpark 컨테이너에서 로그 및 추적을 계속 이용할 수 있고, 이는 안전한 고객 소유 이벤트 테이블로 원활하게 라우팅됩니다. 이벤트 테이블의 로깅 및 추적 이벤트 텔레메트리(telemetry)는 쿼리가 될 수 있으며, 사용자가 분석하여 애플리케이션 문제를 해결하거나 코드의 성능 및 동작에 대한 통찰력을 창출할 수도 있습니다. 또한 고객은 Snowflake 알림 및 이메일 통지와 같은 다른 텔레메트리 기능을 통해 애플리케이션의 새로운 이벤트와 오류에 대한 알림을 받을 수 있습니다.

Python 작업 API(곧 비공개 미리 보기 제공 예정) – Snowflake 작업/DAG 생성 및 관리를 위한 최고 수준의 Python API를 제공합니다.

Snowpark 로컬 테스팅(비공개 미리 보기 제공 중) – 사용자가 Snowflake에 대한 실시간 연결 없이 Snowpark 세션 및 DataFrame을 만들 수 있습니다. 사용자는 로컬 세션을 사용하여 Snowpark 테스트 슈트(test suite)를 가속화하고 크레딧을 절약할 수 있으며, 코드 변경 없이 원활하게 실시간 연결로 전환할 수 있습니다.

네이티브 Git 통합(곧 비공개 미리 보기 제공 예정) – Snowflake가 이제 git 리포지토리와의 네이티브 통합을 지원합니다! 사용자는 이 통합을 통해 Snowflake 계정에서 git 리포지토리에 안전하게 연결하고 Snowflake 내의 모든 분기(branch)/태그/커밋에서 콘텐츠에 액세스할 수 있습니다. 통합 이후에는 스테이지의 파일처럼 리포지토리 및 분기를 언급(reference)하기만 해도 UDF, 저장 프로시저, Streamlit 앱 및 기타 객체를 만들 수 있습니다.

Snowflake CLI(비공개 미리 보기 제공 중) – 개발자가 여러 앱 중심 워크로드에 걸쳐 구축 자동화 및 CI/CD 기능과 함께 앱을 손쉽게 생성, 관리, 업데이트하고 볼 수 있도록 하는 오픈소스 명령줄 인터페이스입니다. 

트리거된 작업(비공개 미리 보기 제공 중) – 이 새로운 작업 유형을 통해서는 Snowflake 스트림에서 데이터를 더 효율적으로 사용할 수 있습니다. 이전에는 작업이 1분 이내에 실행될 수 있었습니다. 트리거된 작업을 사용하면 스트림이 도착하는 즉시 데이터를 사용할 수 있으므로 대기 시간이 크게 줄어들고, 리소스 활용률이 최적화되며, 비용이 절감됩니다.

이와 같은 새로운 Snowpark 및 DevOps 업데이트는 모든 Python 개발자의 코딩을 간소화하여 이러한 개발자가 Snowflake의 거버넌스 및 성능 이점을 누리면서 익숙한 방식으로 작업할 수 있도록 합니다. 이러한 개선 사항을 통해 데이터 엔지니어는 ELT/ETL용 Spark에서 더 원활하게 마이그레이션하고, 데이터 과학자는 ML 모델을 기본적으로 구축 및 배포하고, 데이터 개발자는 Snowpark로 애플리케이션을 구축할 수 있습니다.

Snowpark 내부 구조

Snowpark가 어떻게 구축되었는지, 어떻게 작동하는지, 그리고 이것이 어떻게 Snowflake에서 Python/Java/Scala 코드를 쉽고 안전하게 처리할 수 있도록 하는지에 대한 Snowpark 엔지니어링 팀의 심층적인 블로그와 비디오를 확인해 보세요.

고객 성공 사례

Python용 Snowpark는 2022년 11월 Snowday에서 공식 출시(GA)가 발표된 이후 몇 달 동안 3배의 고객이 채택하는 등, 계속해서 강력한 성장을 보여 왔습니다. 현재는 수천 명의 고객이 데이터 엔지니어링 및 ML 사용 사례에 대해 Python용 Snowpark를 사용하여 워크로드의 개발과 성능을 가속화하고 있습니다. 

OpenStore는 대규모 데이터 변환을 위해 PySpark에서 Snowpark로 전환한 전자 상거래 회사로, 전환 후 엔드 투 엔드 런타임이 87% 감소하고, 처리량이 25% 증가했으며, 엔지니어링 유지 관리 시간이 80% 감소했습니다.

NYSE의 모회사 Intercontinental Exchange는 Snowpark를 사용하여 데이터 파이프라인을 간소화하고, 규제 관련 보고에 사용되는 미션 크리티컬 애플리케이션의 비용을 절감하고 있습니다. 

EDF Energy는 Snowpark를 사용하여 지능형 고객 엔진을 구축하고 있는 영국의 선도적인 에너지 공급업체입니다. EDF의 데이터 사이언스 책임자 Rebecca Vickery는 “기능 엔지니어링 같은 데이터 사이언스 관련 작업을 데이터가 있는 곳에서 직접 진행할 수 있다는 건 엄청난 일입니다. 덕분에 작업이 훨씬 더 효율적이고 즐거워졌습니다.”라고 말했습니다. 

Bridg에서는 Snowpark가 Snowflake 클러스터에서 데이터에 직접 액세스하고, 모델을 훈련하고, 작업을 실행하는 방법을 제공하여 프로세스를 완전히 포괄하고, 자동화하며, 효율적으로 만들고 있습니다. Bridg의 수석 데이터 과학자인 Dylan Sager는 “당사는 Snowflake와 Snowpark를 함께 사용하여 독점 머신 러닝 모델을 훨씬 더 빠른 속도로 개발 및 자동화할 수 있었습니다.”라고 말했습니다.

Snowpark 가속화 프로그램

당사는 또한 KX와 같은 새로운 파트너십을 비롯하여 파트너 생태계에서 계속해서 큰 관심이 쏠리고 있는 것을 기쁘게 생각합니다. Snowpark 가속화 프로그램의 일환으로 Snowflake의 수많은 파트너가 Python용 Snowpark를 활용하는 등, 통합을 통해 Snowflake를 기반으로 고객 경험을 향상시키고 있습니다.

Snowpark를 통한 더 빠르고 스마트한 작업

Snowpark의 목적은 무엇보다도 Snowflake 플랫폼의 단순성, 확장성과 보안을 갖춘 채 데이터를 사용하여 영향력이 큰 작업을 손쉽게 수행하는 것입니다. 우리는 고객 여러분이 Python용 Snowpark으로 무엇을 구축하실지 고대하고 있습니다. 

시작하는 데 도움을 받으려면 다음의 리소스를 참조하세요.

참고: 이 내용은 2023. 6. 28에 게시된 컨텐츠(Snowpark Offers Expanded Capabilities Including Fully Managed Containers, Native ML APIs, New Python Versions, External Access, Enhanced DevOps and More)에서 번역되었습니다.