Streamlit in Snowflake 정보

주의

이 기능은 AWS 및 Microsoft Azure 상업 리전 의 계정에서 사용할 수 있습니다. AWS PrivateLinkAzure Private Link 는 지원되지 않습니다.

이 항목에서는 Streamlit in Snowflake 를 사용하여 Streamlit 애플리케이션을 개발하고 실행하는 방법을 설명합니다.

Streamlit in Snowflake 정보

Streamlit 은 머신 러닝과 데이터 과학을 위한 사용자 지정 웹 앱을 쉽게 만들고 공유할 수 있게 해주는 오픈 소스 Python 라이브러리입니다. Streamlit을 사용하면 강력한 데이터 애플리케이션을 신속하게 개발하여 배포할 수 있습니다. 오픈 소스 라이브러리에 대한 자세한 내용은 Streamlit 라이브러리 설명서 를 참조하십시오.

개발자는 Streamlit in Snowflake 로 Snowflake의 데이터 클라우드에서 Streamlit 앱을 안전하게 개발, 배포, 공유할 수 있습니다. Streamlit in Snowflake 를 사용하면 데이터나 애플리케이션 코드를 외부 시스템으로 이동하지 않고도 Snowflake에서 데이터를 처리하고 사용하는 애플리케이션을 만들 수 있습니다.

Streamlit in Snowflake 사용의 전제 조건

Streamlit in Snowflake 를 사용하려면 다음 전제 조건을 충족했는지 확인하십시오.

Streamlit 앱 생성 및 사용에 필요한 권한

Streamlit in Snowflake 내에서 Streamlit 앱은 Snowflake 액세스 제어 프레임워크 를 준수하는 보안 오브젝트입니다. Streamlit 앱은 소유자 권한을 기반으로 하는 권한 모델을 사용합니다. 자세한 내용은 소유자 권리 및 Streamlit in Snowflake 앱 이해하기 섹션을 참조하십시오.

앱 편집자와 Streamlit 앱이 포함된 스키마의 소유자는 앱 사용 권한을 가진 역할을 결정할 수 있습니다. 사용자는 앱과 상호 작용할 수 있으며 Streamlit 앱에 표시되는 모든 것을 볼 수 있습니다. 사용자는 소유자와 동일한 앱 뷰를 갖습니다.

자세한 내용은 Streamlit 앱 공유하기 섹션을 참조하십시오.

Streamlit 앱을 생성하는 데 필요한 권한

Streamlit 앱은 스키마 수준 오브젝트입니다.

Streamlit in Snowflake 를 사용하여 Streamlit 앱을 만들고 편집하려면 스키마에 대한 OWNERSHIP 권한이 있거나 다음 권한이 모두 있는 역할을 사용해야 합니다.

  • Streamlit 앱이 포함된 데이터베이스에 다음 권한이 부여됩니다.

    • USAGE

  • Streamlit 앱이 포함된 스키마에 다음 권한이 부여됩니다.

    • USAGE

    • CREATE STREAMLIT

    • CREATE STAGE

다음 예에 표시된 것처럼 GRANT <권한> 명령을 사용하여 역할에 이러한 권한을 부여합니다.

GRANT USAGE ON SCHEMA streamlit_db.streamlit_schema TO ROLE streamlit_creator;
GRANT USAGE ON DATABASE streamlit_db TO ROLE streamlit_creator;
GRANT CREATE STREAMLIT ON SCHEMA streamlit_db.streamlit_schema TO ROLE streamlit_creator;
GRANT CREATE STAGE ON SCHEMA streamlit_db.streamlit_schema TO ROLE streamlit_creator;
Copy

데이터베이스 또는 스키마에 향후 부여되는 권한이 정의된 경우 사용자가 향후 권한 부여에 정의된 역할을 사용하여 Streamlit 앱을 만드는지 확인하십시오.

Streamlit 앱을 보는 데 필요한 권한

Streamlit 앱을 보려면 Snowflake 계정이 있고 계정에 로그인되어 있어야 합니다. 또한 다음에 대한 USAGE 권한이 부여된 역할을 사용해야 합니다.

  • Streamlit 앱이 포함된 데이터베이스.

  • Streamlit 앱이 포함된 스키마.

  • Streamlit 앱.

대부분의 경우 앱 소유자가 Streamlit 앱을 다른 역할과 공유하면 USAGE 권한이 자동으로 새 역할에 부여됩니다. 그러나 MANAGED ACCESS가 있는 스키마에서 Streamlit 앱이 생성된 경우 USAGE 권한을 새 역할에 수동으로 부여해야 합니다.

스키마 소유자 또는 MANAGE GRANTS 권한이 있는 역할의 사용자는 다음 예에 표시된 대로 GRANT <권한> 명령을 사용하여 USAGE 권한을 부여해야 합니다.

GRANT USAGE ON DATABASE streamlit_db TO ROLE streamlit_user;
GRANT USAGE ON SCHEMA streamlit_db.streamlit_schema TO ROLE streamlit_user;
GRANT USAGE on STREAMLIT streamlit_db.streamlit_schema.streamlit_app to ROLE streamlit_user;
Copy

참고

향후 권한 부여 가 STREAMLIT 오브젝트에는 지원되지 않습니다.

지원되는 Streamlit 라이브러리 버전

Streamlit in Snowflake 는 Streamlit 라이브러리의 v1.22.0 및 v1.26.0을 지원합니다. Streamlit 라이브러리의 새 버전에 대한 지원은 나중에 포함될 예정입니다.

각 버전의 릴리스 정보를 보려면 Streamlit 라이브러리 변경 로그 를 참조하십시오. 오픈소스 Streamlit 라이브러리의 일부 기능은 Streamlit in Snowflake 에서 지원되지 않습니다. 지원되지 않는 Streamlit 기능 섹션을 참조하십시오.

Streamlit 라이브러리 버전 선택하기

각 Streamlit in Snowflake 앱에 대해 Snowsight 에서 Streamlit 라이브러리 버전을 선택하거나 앱의 environment.yml 파일에 버전을 고정할 수 있습니다. 버전을 고정하지 않으면 사용 가능한 최신 버전이 사용됩니다.

Snowflake에서는 Streamlit의 새 버전이 Snowflake Anaconda Channel에서 제공될 때 앱이 업그레이드되지 않도록 Streamlit 버전을 고정할 것을 권장합니다.

Snowsight의 Streamlit 앱에서 Streamlit 버전 선택하기

Snowsight 의 Streamlit 앱에서 사용할 버전을 선택하는 방법은 다음과 같습니다.

  1. CREATE STREAMLIT 권한을 가진 사용자로 Snowsight 에 로그인합니다.

  2. 탐색 메뉴에서 Projects » Streamlit 를 선택합니다.

  3. Streamlit 앱을 선택합니다.

  4. Edit 를 선택합니다.

  5. Streamlit 편집기 상단에서 Packages 를 선택합니다.

  6. Streamlit 버전을 선택합니다.

environment.yml 파일에 Streamlit 버전 고정하기

environment.yml 파일에 Streamlit 버전을 고정하려면 다음 예를 사용하십시오.

name: sf_env
channels:
- snowflake
dependencies:
- scikit-learn
- streamlit=1.26
Copy

지원되는 외부 패키지

기본적으로 Streamlit in Snowflake 에는 사용자 환경에 미리 설치된 python, streamlit, snowflake-snowpark-python 패키지가 포함됩니다. 또한 이 환경은 이러한 패키지에 필요한 종속성에 액세스할 수 있습니다.

Streamlit in Snowflake 앱은 Python 3.8에서 실행됩니다.

Streamlit 앱에 추가 패키지를 설치할 수 있습니다. 지원되는 패키지 목록은 Snowflake Anaconda 채널 을 참조하십시오.

Streamlilt 앱에 지원되는 패키지를 포함하는 방법에 대한 자세한 내용은 다음 항목을 참조하십시오.

Streamlit in Snowflake 에 대한 동시성 고려 사항

Streamlit in Snowflake 는 Streamlit 앱에 대한 수요 증가 기간을 다루기 위해 Snowflake 내에서 세션 제한 및 자동 크기 조정 기능을 제공합니다. Streamlit in Snowflake 는 클라우드 서비스 인스턴스와 가상 웨어하우스 인스턴스의 조합을 사용합니다. 자세한 내용은 주요 개념과 아키텍처 섹션을 참조하십시오.

Snowflake의 무결성을 유지하기 위해 Streamlit in Snowflake 는 클라우드 서비스 인스턴스가 처리할 수 있는 동시 Streamlit 세션 수에 인스턴스별, 계정별, 사용자별 제한을 적용합니다. Streamlit 세션은 모든 인스턴스가 동시 세션 제한에 도달할 때까지 이러한 인스턴스 간에 로드 밸런싱됩니다. 제한에 도달하면 추가 세션을 지원하기 위해 인스턴스 크기가 자동으로 조정됩니다.

참고

Streamlit 앱 사용자의 요청이 일시적으로 제한될 수 있습니다. 자동 크기 조정이 시작되면 사용자에게 “잠시 기다려 주십시오”라는 메시지가 표시될 수 있습니다.

Streamlit in Snowflake 에 대한 청구 고려 사항

Streamlit in Snowflake 에서는 Streamlit 앱을 실행하고 SQL 쿼리를 수행하는 데 가상 웨어하우스 가 필요합니다. Streamlit 앱을 실행하려면 앱 자체와 앱의 쿼리를 모두 실행할 단일 가상 웨어하우스를 선택해야 합니다. 이 웨어하우스는 앱의 WebSocket 연결이 활성화되어 있는 동안 활성 상태로 유지됩니다. Streamlit 앱의 가상 웨어하우스를 활성 상태로 유지하는 WebSocket 연결은 앱을 마지막으로 사용한 지 약 15분 후에 만료됩니다.

크레딧을 절약하려면 가상 웨어하우스를 일시 중단할 수 있습니다. 또는 앱을 실행 중인 웹페이지를 닫으면 실행 중인 가상 웨어하우스를 자동으로 일시 중단할 수 있습니다.

Streamlit in Snowflake 에서 웨어하우스를 선택할 때의 지침

Streamlit in Snowflake 에서 Streamlit 앱을 실행하면 Streamlit 앱의 복잡성, 웨어하우스 가용성, 대기 시간, 비용을 비롯한 여러 요소가 성능에 영향을 미칠 수 있습니다. 다음 섹션에서는 Streamlit in Snowflake 에서 가상 웨어하우스를 사용하기 위한 일반적인 지침을 제공합니다.

더 작은 웨어하우스 사용하기

Streamlit in Snowflake 에서 Streamlit 앱을 실행할 때 가능한 한 가장 작은 웨어하우스를 선택해야 합니다.

실행 시 웨어하우스는 Streamlit 앱에서 사용하는 Python 패키지의 캐시를 유지합니다. Python 패키지를 캐싱하면 패키지를 다시 다운로드하는 대신 캐시된 버전의 패키지를 사용하여 이후의 앱 로딩 시 성능이 향상됩니다. 웨어하우스가 일시 중단되면 캐시가 제거되며, 이로 인해 웨어하우스가 재개된 후 처음에 앱 로딩 속도가 느려질 수 있습니다. 재개된 웨어하우스가 더 많은 앱을 계속 실행함에 따라 패키지 캐시가 다시 작성되며 캐시를 활용할 수 있는 앱의 앱 로딩 성능이 향상됩니다.

초당 크레딧 청구 및 자동 일시 중단 덕분에 융통성 있게 작은 웨어하우스로 시작한 다음 Streamlit 앱의 워크로드에 맞게 웨어하우스 크기를 조정할 수 있습니다. 웨어하우스의 크기는 언제든지 늘릴 수 있습니다. 자세한 내용은 Streamlit 앱의 웨어하우스 변경하기 섹션을 참조하십시오.

전용 웨어하우스 사용하기

Streamlit in Snowflake 를 사용할 때는 Streamlit 앱 실행을 위한 전용 웨어하우스를 사용하는 것이 좋습니다. 이를 통해 Streamlit 앱 실행 비용을 분리할 수 있습니다. 전용 웨어하우스는 다른 워크로드를 관리할 필요가 없으므로 앱 로드 시간을 개선할 수도 있습니다.

자세한 내용은 웨어하우스 고려 사항 섹션을 참조하십시오.

초기화 중에 웨어하우스 일시 중단을 방지하려면 자동 일시 중단을 최소 30초로 설정하는 것이 좋습니다.