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
140
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
17
アンケートシステムを強くするアプリケーションデータ基盤
ktatsuya
0
29
Other Decks in Science
See All in Science
障害物を回避する バイナリマニピュレータの軌道の設計 / Design of binary manipulator trajectories avoiding obstacles
konakalab
0
100
『データ可視化学入門』を PythonからRに翻訳した話
bob3bob3
1
380
AI(人工知能)の過去・現在・未来 —AIは人間を超えるのか—
tagtag
0
230
データで課題を解決する -因果関係を調べる統計的因果推論-
sshimizu2006
4
1.4k
Ph.D. defense "Convex Manifold Approximation for Tensors"
gkazunii
0
200
Mastering Feature Engineering: Mining the Hidden Salary Formula with CakeResume
tlyu0419
0
150
Pokemon Roughs
shoryuuken
0
400
The Universe, How it works
arafkarsh
0
110
脳とAIは似ているか ― NeuroAI の挑戦
ykamit
9
6.9k
B-Cubed: Leveraging analysis-ready biodiversity datasets and cloud computing for timely and actionable biodiversity monitoring
peterdesmet
0
170
機械学習を理論から真剣に取り組んでみた件 その2:線形化に挑戦しよう!
nearme_tech
0
100
WeMeet Group - 採用資料
wemeet
0
260
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
782
250k
A Tale of Four Properties
chriscoyier
153
22k
Building Adaptive Systems
keathley
32
1.9k
Web Components: a chance to create the future
zenorocha
306
41k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
9
1.3k
Mobile First: as difficult as doing things right
swwweet
217
8.6k
Making Projects Easy
brettharned
109
5.5k
Side Projects
sachag
451
41k
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
Designing for humans not robots
tammielis
247
25k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
12
1.1k
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
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