Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Snowflake上でRを使う: RStudioセットアップとShinyアプリケーションのデプロイ
Search
Tatsuya Koreeda
March 01, 2024
Science
0
120
Snowflake上でRを使う: RStudioセットアップとShinyアプリケーションのデプロイ
「Snowpark Container Servicesで解き放つ!データアプリケーションの魔法!」で発表した資料になります。
https://techplay.jp/event/934878
Tatsuya Koreeda
March 01, 2024
Tweet
Share
More Decks by Tatsuya Koreeda
See All by Tatsuya Koreeda
夏データフェス 育てろ!! まだ最強じゃないみんなのデータアーキテクチャ
ktatsuya
0
13
アンケートシステムを強くするアプリケーションデータ基盤
ktatsuya
0
25
Other Decks in Science
See All in Science
Machine Learning for Materials (Lecture 1)
aronwalsh
1
1.5k
Microbiology Labs.
maleehafatima
0
140
遺伝子発現プロファイルに基づく新しい薬物間相互作用予測法
tagtag
0
100
2023-08-02_spatialLIBD_BioC2023_demo
lcolladotor
0
110
BigQueryで参加するレコメンドコンペ / bq-recommend-competition-kaggle-meetup-tokyo-2023
shimacos
1
1.3k
FIBA W杯の日本代表って組み合わせ次第で2次ラウンド行けたんじゃね?をデータで検証
saltcooky12
0
210
2023-10-03-FOGBoston
lcolladotor
0
180
汎用原子シミュレータMatlantis のご紹介
matlantis
0
130
Machine Learning for Materials (Lecture 9)
aronwalsh
0
120
Cross-Media Information Spaces and Architectures (CISA)
signer
PRO
3
25k
論文輪読会 第15回 "EEG decoding for effects of visual joint attention training on ASD patients with interpretable and lightweight convolutional neural network"
academix
0
100
Spark_Task_Optimization_Journey_How_I_Increased_10x_Speed_by_Performance_Tuning
tlyu0419
0
200
Featured
See All Featured
Clear Off the Table
cherdarchuk
85
310k
Rails Girls Zürich Keynote
gr2m
91
13k
Build The Right Thing And Hit Your Dates
maggiecrowley
25
2k
Scaling GitHub
holman
457
140k
Fantastic passwords and where to find them - at NoRuKo
philnash
39
2.5k
How to name files
jennybc
65
93k
For a Future-Friendly Web
brad_frost
172
9k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
123
39k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
11
1k
Making the Leap to Tech Lead
cromwellryan
125
8.5k
Design by the Numbers
sachag
274
18k
Visualization
eitanlees
137
14k
Transcript
Snowflake上でRを使う: RStudioセットアップとShinyアプリケーションのデプロイ 2024.03.01 Tatsuya Koreeda
是枝達也@cs_dev_engineer 趣味 バイオデータの解析・可視化(バイオインフォマティクス) クリエイティブサーベイ株式会社 プロダクト本部 データエンジニア snowflake west-usergroup-leader Koreeda et
al., under review
SPCS上にRStudioセットアップとShinyアプリケーションのデプロイを⾏う⽅法を検 証した件を話します。 以前zennで書いたこちらの内容の話がメインになります。 https://zenn.dev/t_koreeda/articles/db9a5265a8b708 <お話しないこと> ・Rを使った具体的な分析・可視化⽅法 ・統計モデリングや機械学習の話 今⽇お話すること
なぜRなのか Rはバイオインフォマティクス、エピデミオロジー、統計遺伝学など、バイオ系やヘルスケア業界 で広く利⽤されています。またアップデートも頻繁に⾏われております。(昨⽇、4.3.3がリリー スされました)。データサイエンティスト協会の出している図の中でも、Pythonと並んでRが紹 介されています。 モチベーション https://cran.r-project.org/
Python と R それぞれの強み Python の強み ・ AI システムや Web
アプリケーション、IoT 機器・ クラウド等と相性が良い ・機械学習・深層学習モデルが構築しやすい R の強み ・ 統計学の理論に基づいた結果を算出しやすい(例︓ 信頼区間、p 値など) ・可視化されるグラフがシンプルで美しい(個⼈的に)
・バイオインフォマティクスに特化した 専⾨的なライブラリが豊富 ・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
snowflakeでのRの位置づけ ・皆さんご存知の通り、snowflakeはPython を使うことがメイン ・DatabricksならSparkRが使えるのに ・そのためこれまでsnowflakeでRを使う⽅法 がなかったが、Snowpark Container Service の登場により、Rが使える可能性がでてきた。 snowflake社が出しているSPCSの画像でも「R」
のマークがある︕
実践
・docker imageをローカルからpushしてRstudioをホスト ・Shinyアプリケーションもホストしてみる 今回作成する構成図 Snowpark Container Service ローカル環境 internal stage
(repository)
Rstudio ・Rユーザーが開発するためのIDE。Posit社が管理している。 ・Rをより使いやすく、効率的に扱うための多くの機能を提供
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)
Docker Image docker pull kinngut/single-cell:latest で使えます ベースイメージ バイオインフォ向けに拡張させたイメージ
Spec ・containers. volumeMounts コンテナ内の特定のパスにボリュームをマウ ントする設定です。 ・volumes.source ボリュームのソースとして、Snowflakeのス テージを指定 ・volumes.uid, gid
ボリュームの所有者のユーザーID, グループ ID。ステージ ボリュームにマウントされた ファイルにアクセスするために必要
Rstudio Serverの起動 指定されたエンドポイントにアクセスし、snowflakeユーザーで認証すると、Rstudio Serverが起動できます。ggplot2 でirisデータも問題なく可視化できました︕
Rパッケージのインストールでエラー DSBOͷ໊લղܾ͕Ͱ͖͍ͯͳͦ͞͏ʜ ֎෦ͱͷωοτϫʔΫ௨৴͕Ͱ͖͍ͯ ͳ͍ʁ
ネットワークルールを定義して、 CREATE SERVICE の 際にEXTERNAL ACCESS INTEGRATIONを設定するこ とで解決︕ ネットワークルール定義 EXTERNAL
ACCESS INTEGRATION
せっかくなのでセットアップしたR環境で解析してみる single-cell RNA sequencingɿ個々の細胞内の遺伝⼦発現パターンを研究するために使⽤される⽅法です。これにより、細胞集団内の 個々の細胞での遺伝⼦発現を分析することができます。今回は、COVID-19患者の末梢⾎細胞群のサンプルを使ったscRNA-seqデータを 使って各免疫細胞をラベリングしてみようと思います。 ղੳʹඞཁͳϑΝΠϧ snowflakeͷ֎෦εςʔδʹΞοϓ ϩʔυͯ͠ɺSPCS্ͷRstudioͰ ղੳͯ͠Έ·͢
Stephanie Hicks「Welcome to the World of Single-Cell RNA-Sequencing」
データのアップロード σʔλ250MBҎԼͳΒsnowsight্͔Β෦εςʔδʹΞοϓϩʔυͰ͖·͢ʢͦΕҎ্snowSQLͷPUTܦ༝Ͱ ͍ΕΔʣɻ༧ΊspecͰઃఆͨ͠εςʔδʹϑΝΠϧΛΞοϓϩʔυ͢ΔͱɺRstudioͷλʔϛφϧͰϘϦϡʔϜʹ ઃఆͨ͠ύεͷҐஔʹϑΝΠϧ͕֬ೝͰ͖·͢ɻ snowsql -a [ΞΧϯτ໊] -u [Ϣʔβʔ໊] PUT
file://[ϩʔΧϧͷϑΝΠϧύε] @[εςʔδͷύε];
解析に⽤いるコード ৭ʑͱॻ͍͍ͯ·͕͢ɺલॲཧͰΫΦϦς Οͷ͍DFMMΛআ͍ͨޙʹεέʔϦϯάͤ͞ɺ 1$"Ͱ࣍ݩѹॖͤͨ͞ͷΛSFGFSFODFσ ʔλϕʔεΛجʹࡉ๔छϥϕϦϯάΛߦ͍ɺ 6."1ͰՄࢹԽ͍ͤͯ͞·͢ɻ
結果 ແࣄRstudio্ͰUMAPͷՄࢹԽ͕Ͱ͖·ͨ͠ʂ
R⾔語のためのWebアプリケーションフレームワーク。Pythonでいう streamlitのような位置づけです。 セットアップ: Rの知識があれば、Shinyアプリケーションを⽐較的簡単に作 成できますが、Streamlitと⽐べると若⼲複雑です。 コーディング: UIとサーバーのロジックを分けて書く必要があり、リアクテ
ィブプログラミングの概念を理解しておく必要があります。 インタラクティビティ: ⾼度にインタラクティブなウェブアプリケーション を作成でき、カスタムUIコンポーネントを作成するオプションもあります。 カスタマイズ: HTML、CSS、JavaScriptを使⽤して⾼度にカスタマイズ可 能です。 デプロイ: Shiny ServerやShinyApps.ioを通じてアプリケーションを公開で きます。 shinyアプリケーション
shiny と Streamlitの⽐較 Shiny (R⾔語) • ⽤途: インタラクティブなウェブアプリケーションを作成することができ、特に統 計的な分析やグラフィカルな表⽰に優れています。 •
特徴: UIとサーバーコンポーネントを定義することでアプリケーションを構築しま す。Shinyアプリは、反応性が⾼く、ユーザーの⼊⼒に基づいてリアルタイムで結 果を更新できます。 Streamlit (Python⾔語) • ⽤途: データ分析や機械学習モデルのデモンストレーションに向いており、コード を最⼩限に抑えつつ迅速にプロトタイピングすることが可能です。 • 特徴: スクリプトのようにコードを書くだけで、インタラクティブなウェブアプリ を簡単に作成できます。コンポーネントは⾃動的にUIに変換されます。
shinyアプリケーションのホスト IUUQTHJUIVCDPN,BO&3/"TFR$IFGUSFFW
まとめ
Rstudio・ shinyともに Snowpark Container Service で動かすことが できました︕ 検証結果
サクッとコンピューティングリソースの変更が可能。CREATE COMPUTEの際に、 「INSTANCE_FAMILY」を変更するだけ 個⼈がクラウド解析環境をさっと⽤意できるところは◎ リソースを必要とする分析環境が欲しいときに便利 snowflake独⾃のOauth認証を使ってユーザー単位でコンテナにアクセスさせられる
簡単なアプリをホストしたとき、snowflakeユーザーを払い出すだけでログイン認証が作れる (Python以外にも)いろんな⾔語でアプリケーション開発やデータ操作ができるようになった SPCSの気に⼊っているところ
顧客向けのアプリで利⽤するにはコストがきつい(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の微妙なところ
最後に
snowflakeで創薬研究 snowflakeでアカデミックな領域へ挑戦したい…!
Snowflakeで研究活動したい⽅募集してます︕︕ ・snowflakeを使って研究をしたい⽅向けのコミュニティを作りたいと思っています(⾮公式) ・理論系、シミュレーション、インフォマティクス(バイオインフォ、ケモインフォ、マテリア ルインフォ)、オミクス解析(プロテオーム、トランスクリプトーム、メタボローム、エピゲノ ム)、数理統計学、画像解析など ・(理想)snowflakeを使った共同研究で論⽂執筆までできたら最⾼ 興味ある⽅は、これえだのSNSまでリプライ📤ください︕︕ X: @cs_dev_engineer Linkedin
: https://www.linkedin.com/in/tkoreeda