Slide 1

Slide 1 text

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


Slide 2

Slide 2 text

SPCS上にRStudioセットアップとShinyアプリケーションのデプロイを行う方法を検証した件を 話します。
 
 以前zennで書いたこちらの内容の話がメインになります。
 https://zenn.dev/t_koreeda/articles/db9a5265a8b708 
 <お話しないこと>
 ・Rを使った具体的な分析・可視化方法
 ・統計モデリングや機械学習の話
 今日お話すること 


Slide 3

Slide 3 text

なぜRなのか 
 Rはバイオインフォマティクス、エピデミオロジー、統計遺伝学など、バイオ系やヘルスケア業界で広く利用 されています。またアップデートも頻繁に行われております。(昨日、4.3.3がリリースされました)。データサ イエンティスト協会の出している図の中でも、Pythonと並んでRが紹介されています。
 
 モチベーション 
 https://cran.r-project.org/

Slide 4

Slide 4 text

Python と R それぞれの強み 
 Python の強み 
 ・ AI システムや Web アプリケーション、IoT 機器・クラウド等 と相性が良い 
 ・機械学習・深層学習モデルが構築しやすい
 
 
 
 R の強み
 ・ 統計学の理論に基づいた結果を算出しやすい(例:信頼区 間、p 値など) 
 ・可視化されるグラフがシンプルで美しい(個人的に)

Slide 5

Slide 5 text

・バイオインフォマティクスに特化した専門的 なライブラリが豊富
 ・ggplot2による作画がきれい
 ・統計解析に強み
 ・dplyrによるデータフレーム操作が簡便
 個人的に感じるRの良いところ 
 James Ding et al., 2020 Characterisation of CD4+ T-cell subtypes using single cell RNA sequencing and the impact of cell number and sequencing depth

Slide 6

Slide 6 text

snowflakeでのRの位置づけ 
 ・皆さんご存知の通り、snowflakeはPythonを使う ことがメイン
 
 ・DatabricksならSparkRが使えるのに
 
 ・そのためこれまでsnowflakeでRを使う方法がな かったが、Snowpark Container Serviceの登場に より、Rが使える可能性がでてきた。
 snowflake社が出しているSPCSの画像でも「R」のマー クがある!


Slide 7

Slide 7 text

7
 実践


Slide 8

Slide 8 text

・docker imageをローカルからpushしてRstudioをホスト
 ・Shinyアプリケーションもホストしてみる
 今回作成する構成図 
 Snowpark Container Service ローカル環境
 internal stage (repository)

Slide 9

Slide 9 text

Rstudio 
 ・Rユーザーが開発するためのIDE。Posit社が管理している。
 ・Rをより使いやすく、効率的に扱うための多くの機能を提供
 


Slide 10

Slide 10 text

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) 


Slide 11

Slide 11 text

Docker Image 
 docker pull kinngut/single-cell:latest で使えます
 ベースイメージ
 バイオインフォ向けに拡張させたイメージ


Slide 12

Slide 12 text

Spec
 ・containers. volumeMounts 
 コンテナ内の特定のパスにボリュームをマウント する設定です。
 ・volumes.source 
 ボリュームのソースとして、Snowflakeのステージ を指定
 ・volumes.uid, gid 
 ボリュームの所有者のユーザーID, グループID。 ステージ ボリュームにマウントされたファイルにア クセスするために必要


Slide 13

Slide 13 text

Rstudio Serverの起動 
 指定されたエンドポイントにアクセスし、snowflakeユーザーで認証すると、Rstudio Serverが起動できます。ggplot2でirisデータも問題 なく可視化できました!


Slide 14

Slide 14 text

Rパッケージのインストールでエラー 
 cranへの名前解決ができていなさそう….
 >外部とのネットワーク通信ができていな い?


Slide 15

Slide 15 text

ネットワークルールを定義して、 CREATE SERVICE の際に EXTERNAL ACCESS INTEGRATIONを設定することで解 決!
 ネットワークルール定義
 EXTERNAL ACCESS INTEGRATION 


Slide 16

Slide 16 text

せっかくなのでセットアップしたR環境で解析してみる 
 single-cell RNA sequencing:個々の細胞内の遺伝子発現パターンを研究するために使用される方法です。これにより、細胞集団内の個々の細 胞での遺伝子発現を分析することができます。今回は、COVID-19患者の末梢血細胞群のサンプルを使ったscRNA-seqデータを使って各免疫細胞 をラベリングしてみようと思います。
 
 解析に必要なファイル snowflakeの外部ステージにアップ ロードして、 SPCS上のRstudioで解 析してみます Stephanie Hicks「Welcome to the World of Single-Cell RNA-Sequencing」

Slide 17

Slide 17 text

データのアップロード 
 データは250MB以下ならsnowsight上から内部ステージにアップロードできます(それ以上はsnowSQLのPUT経由でいれ る)。予めspecで設定したステージにファイルをアップロードすると、Rstudioのターミナルでボリュームに設定したパスの位 置にファイルが確認できます。
 snowsql -a [アカウント名] -u [ユーザー名] PUT file://[ローカルのファイルパス] @[ステージへのパス];


Slide 18

Slide 18 text

解析に用いるコード 
 色々と書いていますが、前処理でクオリティの 低いcellを除いた後にスケーリングさせ、PCAで 次元圧縮させたものをreferenceデータベースを 基に細胞種ラベリングを行い、UMAPで可視化 させています。


Slide 19

Slide 19 text

結果
 無事Rstudio上でUMAPの可視化ができました!


Slide 20

Slide 20 text

- R言語のためのWebアプリケーションフレームワーク。Pythonでいうstreamlitの ような位置づけです。 
 - セットアップ: Rの知識があれば、Shinyアプリケーションを比較的簡単に作成でき ますが、Streamlitと比べると若干複雑です。
 - コーディング: UIとサーバーのロジックを分けて書く必要があり、リアクティブプログ ラミングの概念を理解しておく必要があります。
 - インタラクティビティ : 高度にインタラクティブなウェブアプリケーションを作成でき、 カスタムUIコンポーネントを作成するオプションもあります。
 - カスタマイズ: HTML、CSS、JavaScriptを使用して高度にカスタマイズ可能です。
 - デプロイ: Shiny ServerやShinyApps.ioを通じてアプリケーションを公開できます。
 
 
 shinyアプリケーション

Slide 21

Slide 21 text

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


Slide 22

Slide 22 text

shinyアプリケーションのホスト 
 - https://github.com/Kan-E/RNAseqChef/tree/v1.0.0


Slide 23

Slide 23 text

23
 まとめ


Slide 24

Slide 24 text

Rstudio・ shinyともに 
 Snowpark Container Service で動かすことができま した!
 検証結果


Slide 25

Slide 25 text

- サクッとコンピューティングリソースの変更が可能。CREATE COMPUTEの際に、「INSTANCE_FAMILY」 を変更するだけ
 
 
 
 - 個人がクラウド解析環境をさっと用意できるところは◎
 - リソースを必要とする分析環境が欲しいときに便利
 - snowflake独自のOauth認証を使ってユーザー単位でコンテナにアクセスさせられる
 - 簡単なアプリをホストしたとき、snowflakeユーザーを払い出すだけでログイン認証が作れる
 - (Python以外にも)いろんな言語でアプリケーション開発やデータ操作ができるようになった
 
 SPCSの気に入っているところ 


Slide 26

Slide 26 text

- 顧客向けのアプリで利用するにはコストがきつい(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の微妙なところ 


Slide 27

Slide 27 text

27
 最後に


Slide 28

Slide 28 text

snowflakeで創薬研究 
 snowflakeでアカデミックな領域へ挑戦したい…!


Slide 29

Slide 29 text

Snowflakeで研究活動したい方募集してます!! 
 ・snowflakeを使って研究をしたい方向けのコミュニティを作りたいと思っています(非公式)
 ・理論系、シミュレーション、インフォマティクス(バイオインフォ、ケモインフォ、マテリアルインフォ)、オミクス 解析(プロテオーム、トランスクリプトーム、メタボローム、エピゲノム)、数理統計学、画像解析など
  ・(理想)snowflakeを使った共同研究で論文執筆までできたら最高
 
 興味ある方は、これえだのSNSまでリプライ 📤ください!! 
 X: @cs_dev_engineer 
 Linkedin : https://www.linkedin.com/in/tkoreeda