[NEW] Snowpark에 최적화된 대용량 메모리 웨어하우스

Hyuna J
Snowflake Korea
Published in
3 min readFeb 20, 2023

Snowflake의 사용자분들이 원하는 병렬도에 맞춰 쿼리들을 수행할 수 있도록 XS, S, M, L, XL부터 6XL까지 다양한 사이즈의 웨어하우스 엔진을 제공하고 있습니다.
사용자들은 자신들의 워크로드에 따라 자유롭게 엔진을 분리해서 구성하고, 워크로드의 헤비한 정도에 따라 적합한 사이즈의 웨어하우스 엔진을 구성하게 됩니다.

만약 여러분들이 ML 모델 트레이닝 작업을 수행하고 싶다면 적합한 사이즈의 웨어하우스 엔진을 선택하고, snowpark 라이브러리를 통해 python으로 ML 모델 트레이닝을 수행하실 수 있을 겁니다.
Snowpark는 SQL문을 빌드하기 위한 프로그래밍 언어들을 제공하며 사용자가 입력한 코드를 snowflake 데이터베이스로 푸시하여 분석에 snowflake의 컴퓨트 엔진을 활용하면서 네트워크로 전송되는 데이터 양을 줄여줍니다.

이런 작업들은 snowflake의 고성능 엔진들을 더 많이 활용할 수 있어 더욱 효율적인 환경을 만들어주지만 때로는 더 큰 대량의 메모리 환경이 필요한 경우가 있습니다.
이 경우 새로 출시된 ‘Snowpark Optimized Warehouse’ 노드에서 사용자 코드를 사용하여 ML 모델을 트레이닝 시킬 수 있습니다.
Snowpark Optimized Warehouse’는 기존 snowflake 웨어하우스와 비교하여 노드당 16배의 메모리를 제공하여 메모리 요구사항이 큰 워크로드에서 사용하기 적합합니다.

다음과 같이 SQL문을 통해서나 UI상에서 해당 웨어하우스를 만들어 연결 구성정보에 사용하실 수 있습니다.
python을 비롯한 여러분들이 원하시는 언어에서 자유롭게 snowflake 고메모리 엔진을 사용하실 수 있습니다.

CREATE OR REPLACE WAREHOUSE snowpark_opt_wh WITH
WAREHOUSE_SIZE = 'MEDIUM'
WAREHOUSE_TYPE = 'SNOWPARK-OPTIMIZED'
AUTO_SUSPEND = 600;

Tip) Snowpark UDF 또는 프로시저를 실행할 때 해당 웨어하우스의 CPU 및 메모리 리소스를 최대화해서 사용하고 싶으신 경우, 동시성 설정을 1로 맞춰줍니다.

alter warehouse snowpark_opt_wh set max_concurrency_level = 1;

하나의 작업만이 해당 웨어하우스의 모든 리소스를 사용해서 수행되게 됩니다.

--

--

Hyuna J
Snowflake Korea

Interested in working with DATA | Sales Engineer at Snowflake. Previously at AWS and Oracle