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
190
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
第28回 著者ゼミ:Identification of drug responsible glycogene signature in liver carcinoma from meta-analysis using RNA-seq data
ktatsuya
0
74
夏データフェス 育てろ!! まだ最強じゃないみんなのデータアーキテクチャ
ktatsuya
0
22
アンケートシステムを強くするアプリケーションデータ基盤
ktatsuya
0
35
Other Decks in Science
See All in Science
[NeurIPS 2023 論文読み会] Wasserstein Quantum Monte Carlo
stakaya
0
370
PRML Chapter 9
snkmr
1
100
Pokemon Roughs
shoryuuken
0
430
Machine Learning for Materials (Lecture 4)
aronwalsh
0
700
Endocannabinology 101
drbonci
PRO
0
280
Transformer系機械学習モデルを取り巻くライブラリや用語を整理する
bobfromjapan
2
550
Direct Preference Optimization
zchenry
0
190
OptimizationNight~機械学習と数理最適化の融合~
hidenari
0
380
Mastering Feature Engineering: Mining the Hidden Salary Formula with CakeResume
tlyu0419
0
190
ざっと学んでみる確率過程 〜その1 : ブラウン運動〜
nearme_tech
0
160
WeMeet Group - 採用資料
wemeet
0
470
バックアップ『しながら』ランサムウェア検出も!? セキュリティ強化が満載 Veeam 12.1
climbteam
0
420
Featured
See All Featured
Fontdeck: Realign not Redesign
paulrobertlloyd
77
5k
Six Lessons from altMBA
skipperchong
22
3.1k
The Invisible Side of Design
smashingmag
294
50k
Stop Working from a Prison Cell
hatefulcrawdad
266
19k
Optimizing for Happiness
mojombo
372
69k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
42
4.6k
Side Projects
sachag
451
41k
Typedesign – Prime Four
hannesfritz
36
2.2k
A Philosophy of Restraint
colly
198
16k
Become a Pro
speakerdeck
PRO
13
4.7k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
87
45k
Infographics Made Easy
chrislema
238
18k
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