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
130
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
16
アンケートシステムを強くするアプリケーションデータ基盤
ktatsuya
0
29
Other Decks in Science
See All in Science
AI科学の何が“哲学”の問題になるのか ~問いマッピングの試み~
rmaruy
1
1.4k
救急外来でのめまい診療_中枢性めまいを見逃さない!
psasa
0
200
B-Cubed: Leveraging analysis-ready biodiversity datasets and cloud computing for timely and actionable biodiversity monitoring
peterdesmet
0
170
「国と音楽」 ~spotifyrを用いて~ #muana
bob3bob3
2
340
ultraArmをモニター提供してもらった話
miura55
0
120
名古屋市立大学データサイエンス学部 秋のオープンキャンパス模擬授業20231111
trycycle
0
1.7k
DEIM2024 チュートリアル ~AWSで生成AIのRAGを使ったチャットボットを作ってみよう~
yamahiro
3
720
BigQueryで参加するレコメンドコンペ / bq-recommend-competition-kaggle-meetup-tokyo-2023
shimacos
1
1.3k
Pandas 2 vs Polars vs Dask (PyDataGlobal 2023 December)
ianozsvald
0
480
遺伝子発現プロファイルに基づく新しい薬物間相互作用予測法
tagtag
0
110
WeMeet Group - 採用資料
wemeet
0
190
最新のAI技術を使った材料シミュレーションで材料研究現場に変革を
matlantis
0
510
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
398
65k
Git: the NoSQL Database
bkeepers
PRO
423
63k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
0
91
Mobile First: as difficult as doing things right
swwweet
217
8.6k
Building Flexible Design Systems
yeseniaperezcruz
320
37k
Happy Clients
brianwarren
92
6.4k
How to name files
jennybc
65
93k
Being A Developer After 40
akosma
67
580k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
275
13k
Rebuilding a faster, lazier Slack
samanthasiow
74
8.3k
Docker and Python
trallard
35
2.7k
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