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
12
アンケートシステムを強くするアプリケーションデータ基盤
ktatsuya
0
25
Other Decks in Science
See All in Science
Introduction to Graph Neural Networks
joisino
4
1.5k
Презентация программы бакалавриата СПбГУ "Искусственный интеллект и наука о данных"
dscs
0
120
スポーツメトリクス設計に対比較法を使いまくる / Sports metrics design using pairwise comparison method (spoana#14)
konakalab
1
720
20240420 Global Azure 2024 | Azure Migrate でデータセンターのサーバーを評価&移行してみる
olivia_0707
2
680
量子コンピュータとデータサイエンティスト
fuyu_quant0
0
130
勉強会資料 / “Asymptotic Statistics” Section 2.1
asymptotic_minato
0
230
HAS Dark Site Orientation
astronomyhouston
0
5k
大規模画像テキストデータのフィルタリング手法の紹介
lyakaap
5
1.1k
Endocannabinology 101
drbonci
PRO
0
250
Machine Learning for Materials (Lecture 7)
aronwalsh
0
730
拡散モデルの概要 −§1. 拡散モデルで使われる確率微分⽅程式について−
nearme_tech
0
100
History towards Universal Neural Network Potential for Material Discovery
matlantis
0
150
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
12
1.5k
A Modern Web Designer's Workflow
chriscoyier
689
190k
From Idea to $5000 a Month in 5 Months
shpigford
378
45k
Facilitating Awesome Meetings
lara
43
5.6k
Making the Leap to Tech Lead
cromwellryan
125
8.5k
Teambox: Starting and Learning
jrom
128
8.4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
41
4.4k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
123
39k
What's new in Ruby 2.0
geeforr
337
31k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
155
14k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
Art, The Web, and Tiny UX
lynnandtonic
290
19k
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