Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Snowflake上でRを使う: RStudioセットアップとShinyアプリケーションのデプロイ

Snowflake上でRを使う: RStudioセットアップとShinyアプリケーションのデプロイ

「Snowpark Container Servicesで解き放つ!データアプリケーションの魔法!」で発表した資料になります。

https://techplay.jp/event/934878

Tatsuya Koreeda

March 01, 2024
Tweet

More Decks by Tatsuya Koreeda

Other Decks in Science

Transcript

  1. Python と R それぞれの強み 
 Python の強み 
 ・ AI

    システムや Web アプリケーション、IoT 機器・クラウド等 と相性が良い 
 ・機械学習・深層学習モデルが構築しやすい
 
 
 
 R の強み
 ・ 統計学の理論に基づいた結果を算出しやすい(例:信頼区 間、p 値など) 
 ・可視化されるグラフがシンプルで美しい(個人的に)
  2. Rstudioをホストする戦略 
 Rstudio Server 
 Rstudio がLinux上のWebサーバーをベースに動くRstudio。ブラウザからRstudioの利用が可能。今回は Rockerプロジェクトの公開しているimageをベースにSPCS上にホストしていきます。
 
 RockerプロジェクトのDockerコンテナ


    • r-ver:Rがインストールされたイメージでバージョンごとにタグが振られている(r-ver:latestのDockerfile) 
 • rstudio:r-verの上にRStudioをインストールしたイメージ(rstudio:latestのDockerfile) 
 • tidyverse:rstudioの上にtidyverseパッケージやdevtoolsパッケージなどをインストールしたイメージ(tidyverse:latestのDockerfile) 
 • verse:tidyverseの上にTinyTeXなどをインストールしたイメージ(verse:latestのDockerfile) 
 • geospatial:verseの上に各種Rパッケージをインストールしたイメージ(geospatial:latestのDockerfile) 

  3. Spec
 ・containers. volumeMounts 
 コンテナ内の特定のパスにボリュームをマウント する設定です。
 ・volumes.source 
 ボリュームのソースとして、Snowflakeのステージ を指定


    ・volumes.uid, gid 
 ボリュームの所有者のユーザーID, グループID。 ステージ ボリュームにマウントされたファイルにア クセスするために必要

  4. - R言語のためのWebアプリケーションフレームワーク。Pythonでいうstreamlitの ような位置づけです。 
 - セットアップ: Rの知識があれば、Shinyアプリケーションを比較的簡単に作成でき ますが、Streamlitと比べると若干複雑です。
 - コーディング:

    UIとサーバーのロジックを分けて書く必要があり、リアクティブプログ ラミングの概念を理解しておく必要があります。
 - インタラクティビティ : 高度にインタラクティブなウェブアプリケーションを作成でき、 カスタムUIコンポーネントを作成するオプションもあります。
 - カスタマイズ: HTML、CSS、JavaScriptを使用して高度にカスタマイズ可能です。
 - デプロイ: Shiny ServerやShinyApps.ioを通じてアプリケーションを公開できます。
 
 
 shinyアプリケーション
  5. shiny と Streamlitの比較 Shiny (R言語) 
 • 用途: インタラクティブなウェブアプリケーションを作成することができ、特に統計的な分析 やグラフィカルな表示に優れています。


    • 特徴: UIとサーバーコンポーネントを定義することでアプリケーションを構築します。Shiny アプリは、反応性が高く、ユーザーの入力に基づいてリアルタイムで結果を更新できます。
 
 Streamlit (Python言語) 
 • 用途: データ分析や機械学習モデルのデモンストレーションに向いており、コードを最小限 に抑えつつ迅速にプロトタイピングすることが可能です。
 • 特徴: スクリプトのようにコードを書くだけで、インタラクティブなウェブアプリを簡単に作成 できます。コンポーネントは自動的にUIに変換されます。
 

  6. - サクッとコンピューティングリソースの変更が可能。CREATE COMPUTEの際に、「INSTANCE_FAMILY」 を変更するだけ
 
 
 
 - 個人がクラウド解析環境をさっと用意できるところは◎
 -

    リソースを必要とする分析環境が欲しいときに便利
 - snowflake独自のOauth認証を使ってユーザー単位でコンテナにアクセスさせられる
 - 簡単なアプリをホストしたとき、snowflakeユーザーを払い出すだけでログイン認証が作れる
 - (Python以外にも)いろんな言語でアプリケーション開発やデータ操作ができるようになった
 
 SPCSの気に入っているところ 

  7. - 顧客向けのアプリで利用するにはコストがきつい(0.11クレジット/h [CPU_X64_XS])
 - snowflakeのエンタープライスエディションの場合、1ヶ月コンテナを動かす場合は
 > 0.11 × 24(h)× 31(日)×

    4.3 ($) = 351.912 ドル
 > AWS Fargate で同じくらいのスペックを動かすのに、大体121.90ドル
 - 顧客が利用するアプリケーションでの利用は難しそう
 - トランザクションを利用するならHybridテーブルとのセットが前提になりそう
 - アプリケーションのworkerに使うには物足りない?やりようはありそう
 - サービス関数をコンピュートプールの起動無しでサーバレス課金にしてほしい
 - Lambda的なユースケースはストアドプロシージャで代用するしかない
 
 SPCSの微妙なところ