DockerでCmdStanが使えるRStudio Server環境を作った話
ベイズ統計を最近また勉強しはじめたのでDockerを使ってRStudio ServerでCmdStanが利用できる環境を作った。
環境を作る上で実現したかったことは以下のとおり。
- rocker/geospatialをベースとする
- 日本のLocale設定
- CmdStanRがすぐ利用できる
- rstanはもうダメらしい
Dockerfile等
以下GitHubに置いてあります。
Dockerfileを書く際に工夫?した点は次のとおりです。
- Rstudioの設定ファイル (rstudio-prefs.json)
- 以下でコンテナ内のディレクトリにコピーしています。
COPY ./rstudio-prefs.json /home/rstudio/.config/rstudio/rstudio-prefs.json
- 以下でコンテナ内のディレクトリにコピーしています。
- Localeの日本語化
- 以下の記事を参考にさせていただきました。フォントはIPAexフォントを使わせていただいています。
- 各パッケージのインストール
- install2.rを使ってインストールしています。詳細を書いてくださっているわかりやすい記事があるので詳しくはそちらをご覧下さい。
- CmdStanRのGetting startedで使われているパッケージの他に、EDAが楽にできるDataExoloreもインストールしています。
- CmdStanRのインストールについては、以下のコードでレポジトリを指定しています。
install2.r --error --deps TRUE --repos https://mc-stan.org/r-packages/ cmdstanr
- 以下のコードで (1) CmdStanのインストールディレクトリの作成、(2) CmdStanのインストール、(3) ディレクトリ所有者を実行ユーザー(rstudio)に変更、を行っています。コンテナ起動後すぐにCmdStanRを使えます。
mkdir /home/rstudio/.cmdstanr/ \ && Rscript -e "cmdstanr::install_cmdstan(dir = '/home/rstudio/.cmdstanr/', cores = 2)" \ && Rscript -e "cmdstanr::set_cmdstan_path(path = '/home/rstudio/.cmdstanr/cmdstan-2.28.0')" \ && chown rstudio -R /home/rstudio/
起動方法
docker-compose up
した後、localhost:8787/にブラウザでアクセスしてください。
所感
サンプリングがrstanよりずっと早い。 ちゃんとパラメータ推定できていますね。