Spaces에서 Shiny 사용하기

Spaces에서 Shiny 사용하기

Shiny는 간단하고 아름답고 성능 좋은 데이터 애플리케이션을 만드는 오픈소스 프레임워크예요. 개발 목표는 오후에 한 번 배울 수 있을 만큼 간단하면서도 대규모 미션 크리티컬 애플리케이션을 감당할 수 있을 만큼 확장 가능한 것이었어요. 몇 분 만에 유용한 Shiny 앱을 만들 수 있고, 프로젝트 범위가 커져도 Shiny가 감당할 수 있다고 확신할 수 있어요.

출처: 문서

본문

Shiny를 다른 프레임워크와 구분하는 핵심 기능은 반응형 실행 모델이에요. Shiny 앱을 작성하면 프레임워크가 입력, 출력, 중간 계산 사이의 관계를 추론하고, 그 관계를 사용해 사용자 동작 결과로 바뀌어야 하는 것만 렌더링해요. 그 결과 사용자는 데이터를 명시적으로 캐시하거나 콜백 함수를 작성하지 않고도 효율적이고 확장 가능한 애플리케이션을 쉽게 개발할 수 있어요.

Shiny for Python

Shiny for Python는 Shiny를 순수 파이썬으로 구현한 것이에요. R을 쓰지 않고도 반응성, 복잡한 레이아웃, 모듈 같은 Shiny의 모든 훌륭한 기능에 접근할 수 있어요. Shiny for Python은 다른 Hugging Face 도구와 매끄럽게 통합되므로 Hugging Face 애플리케이션에 이상적이에요.

배포를 시작하려면 이 버튼을 클릭해 하드웨어를 선택하고 public 또는 private Space인지 지정하세요. Space 템플릿이 앱을 시작하는 데 필요한 몇 개의 파일을 채워줘요.

app.py

이 파일은 앱 로직을 정의해요. 수정 방법은 Shiny for Python 문서를 참고하세요. 앱이 복잡해지면 모듈로 애플리케이션 로직을 나누는 게 좋아요.

Dockerfile

Shiny for Python 앱의 Dockerfile은 라이브러리에 시스템 의존성이 많지 않아 매우 최소적이에요. 다만 애플리케이션에 추가 시스템 의존성이 있다면 이 파일을 수정해야 할 수 있어요. 이 파일의 핵심 기능은 Space README 파일에 지정된 포트(기본 7860)에서 앱을 노출하고 실행하는 거예요.

requirements.txt

Space는 requirements.txt 파일에 나열된 의존성을 자동으로 설치해요. 이 파일에 shiny가 반드시 포함되어야 해요.

Shiny for R

Shiny for R는 R 커뮤니티에서 인기 있고 확립된 애플리케이션 프레임워크예요. R 앱을 Hugging Face 인프라에 호스팅하거나 훌륭한 Shiny R 확장을 쓰고 싶다면 좋은 선택이에요. R 앱에 Hugging Face 도구를 통합하려면 httr2로 Hugging Face API를 호출하거나 reticulate로 Hugging Face Python SDK 중 하나를 호출하면 돼요.

R Shiny Space를 배포하려면 이 버튼을 클릭하고 Space 메타데이터를 채우세요. 이렇게 하면 시작에 필요한 모든 파일이 Space에 채워져요.

app.R 이 파일은 모든 애플리케이션 로직을 담아요. 원하면 ui.Rserver.R로 나눌 수 있어요.

Dockerfile

Dockerfile은 rocker shiny 이미지 기반으로 빌드돼요. 추가 패키지를 쓰려면 이 파일을 수정해야 해요. tidyverse 패키지를 많이 쓴다면 기본 이미지를 rocker/shinyverse로 바꾸는 걸 권장해요. 추가 R 패키지는 dockerfile의 RUN install2.r 섹션 아래에, github 패키지는 RUN installGithub.r 아래에 저장소를 추가해 설치할 수 있어요.

이 Dockerfile의 두 가지 주요 요구사항:

  • 파일이 README에 나열한 포트를 노출해야 해요. 기본은 7860이며 이유가 없다면 바꾸지 않는 걸 권장해요.
  • 현재로선 Hugging Face의 앱 타임아웃 문제를 해결하는 httpuv 개발 버전을 사용해야 해요.

더 알아보기 (Learn more)