10

Stan は、Gelman らによる新しいベイジアン解析ソフトウェアです。

RStan は、R 内から Stan を呼び出す方法であると推測しています。

Stan / RStan は、Linux オペレーティング システムを搭載したスーパーコンピューターで実行されますか? また、そうであれば、スーパーコンピューターのマルチプロセッサを利用できますか? WinBUGS は Linux マシンでは動作しない、またはスーパーコンピュータのマルチプロセッサを利用できない、またはその両方であると言われました。

ベイジアン分析を数週間から数日/時間にスピードアップする方法を探しています。

4

5 に答える 5

20

Stan と rstan は、依存関係をサポートする Linux、Mac、または Windows で実行する必要があります。BSD または Oracle ではテストしていませんが、g++ または clang コンパイラのいずれかで動作することを期待しています (ただし、Oracle コンパイラではありません)。

Stan または rstan には明示的に並列化されたコードはありませんが、バイナリが複数のプロセスによって同時に実行されるのを防ぐコードもありません。たとえば、bash シェルのコマンド ラインから Stan を使用する場合、次のようにすることができます。

./my_model --data=my_data.dump --seed=12345 --chain_id=1 --samples=samples_1.csv &
./my_model --data=my_data.dump --seed=12345 --chain_id=2 --samples=samples_2.csv &

など、好きなだけチェーンを作成できます。並列で実行する場合は、同じシードを使用するが別の chain_id を使用することが重要です。

rstan パッケージを使用している場合はstan()、R とオペレーティング システムでサポートされている任意の並列エンジンを使用して main 関数を呼び出すことができます。繰り返しますが、同じシードと異なる chain_id を渡すのが最善です。現在rstan v1.0.3(まだリリースされていません)、並行して生成された可能性のあるオブジェクトsflist2stanfit()のリストを取得し、分析のためにそれらを 1 つのオブジェクトに結合するという関数があります。stanfitstanfit

詳細については、次の場所に並列実行専用のスレッドがあります。

https://groups.google.com/d/topic/stan-users/3goteHAsJGs/discussion

于 2012-10-21T11:10:32.477 に答える
5

学んだことを投稿すると書いた。

大学のスーパーコンピューティングセンターは、R​​Stanが自分のマシンで実行されると信じています。ただし、アカウントを申請する必要があり、時間がかかる場合があります。したがって、RStanがこれらのマシンでしばらく実行されるかどうかはまだわかりません。彼らの施設の正式な名前に値するのは、「北極圏スーパーコンピューティングセンター」です。

デスクトップにRStanをインストールするのに問題があり、OITの支援を受けなければなりませんでした。それで、これが私が使用したステップとOIT紳士によって使用されたコードです。私はWindows7Professionalオペレーティングシステムを持っています。

  1. R2.15.1を使用する必要がありました

  2. ディレクトリ'C:\ R \ R-2.15.1'にRをインストールしたので、ディレクトリ名にスペースがありません

  3. Rtoolsをインストールする必要がありました。

  4. ディレクトリ「C:\Rtools」にRtoolsをインストールしました

  5. RがRtoolsでC++コンパイラを見つけることができるように、Rtoolsがパスに表示されていることを確認してください

  6. チェックする:

    コンピューター、プロパティ、高度なシステム設定、環境変数、パス。

    'c:\ Rtools \ bin'と:'c:\ Rtools \ gcc-4.6.3\bin'の両方を含める必要があると思います

  7. Rを開く

  8. 入力するRコードは次のとおりです(このコードはここに表示されます: http ://code.google.com/p/stan/wiki/RStanGettingStarted ):

    install.packages('inline')

    install.packages('Rcpp')

    install.packages('RcppEigen')

    options(repos = c(getOption( "repos")、rstan = "http://wiki.stan.googlecode.com/git/R"))

    install.packages('rstan'、type ='source')

    ライブラリ(rstan)

  9. 次に、ここから学校の例を実行しました。

http://code.google.com/p/stan/wiki/RStanGettingStarted

先週、上記のリンクの手順ではなく、PDFファイル「stan-reference-1.0.2」に含まれている手順を使用してSTANをインストールしようとしていました。

これが他の人の役に立つことを願っています。RStanがスーパーコンピューティングセンターのマシンで確実に実行されるかどうかを知ったら、ここに私が学んだことを投稿します。

上記の手順をテストするためにSTANをアンインストールしていません。うまくいけば、上記の手順でエラーが発生しませんでした。

于 2012-10-15T18:33:07.277 に答える
3

ソースコードをテキストとして受け取る具体的な並列化関数を次に示します。

library(rstan)
library(parallel)

parallel_stan <- function(code, data, cores=detectCores(), chains=8, iter=2000, seed=1234) {
    cat("parallel_stan: cores=", cores, ", chains=", chains, ", iter=", iter, ", seed=", seed, "\n", sep="")
    cat("--- Step 1: compile the model (and run it once, very briefly, ignoring its output)\n")
    f1 = stan(model_code = code, data = data, iter = 1, seed = seed, chains = 1, chain_id = 1)
    cat("--- Step 2: run more chains in parallel\n")
    sflist <- mclapply(
        1:chains
        , mc.cores = cores
        , function(i) stan(fit = f1, data = data, iter = iter, seed = seed, chains = 1, chain_id = i)
    )
    # ... passing the same seed to all chains follows example(sflist2stanfit)
    # ... important to use the same seed but different chain_id when executing in parallel
    cat("--- Finished.\n")
    return(sflist2stanfit(sflist))
}
于 2013-12-31T13:16:09.043 に答える
1

RSeek 検索 (Rstan gelman) の最初のヒットは、1 つのリンクをたどった後にこれをもたらしました。

https://github.com/stan-dev/rstan/wiki/RStan-Getting-Started

まだCRANにはありません。

于 2012-10-11T22:39:13.753 に答える
1

これは、ベイジアン MCMC 計算に関する一般的なコメントです。

通常、スーパーコンピューターは、デスクトップ クラスではなくサーバー クラスのプロセッサを実行します。Stan やその他の MCMC プログラムは、ほとんどの場合、チェーンごとにかなり厳密にシリアル化されています。つまり、複数のプロセッサを使用することで、単一のチェーンの速度が向上する可能性はほとんどありません。デュアル Xeon クラスのサーバーと、ワークステーションとしての通常のデスクトップ マシンを 2 台備えた小さなクラスターがあります。ワークステーションの Core-i7s プロセッサは、16GB の RAM 制限内にとどまっている限り、実際の計算を実行する場合、サーバー よりも通常約 40%高速です。

この種の計算を実行する最速のマシンは、水冷式 CPU を搭載したオーバークロックのカスタム ゲーム マシンになる可能性があります。

もちろん、上で指摘したように、異なるチェーンを並行して実行することもできます。

于 2015-03-23T16:37:52.500 に答える