type個人的な勉強の記録です。データ分析、可視化などをメイントピックとしています。DRStanのmap_rect使うchain内並列化は、たぶんデータ点が10万ぐらいはないとご利益ないような...。その10万個を切って並列処理する感じ。導入PyStanは2.18.0系からStanに搭載されたThreading機能を使うことができるようになりました。公式のドキュメントはこちらになります*1。chainごとにスレッドをフォークして並列化するのではなく、MCMCサンプル内での並列化です。先程のリンク先のExampleの欄にも書かれているとおりに、chain数×設定スレッド数分の並列化ができるように成りました。作りかけの機能であるため、運用上は幾つか疑問点があります。chainの場合でも並列化されるのか?並列化したことで推論結果が悪くなることはあるのか?設定スレッドはモデルのコンパイル時のみ影響するのか?サンプリング時にも影響するのか?以上の疑問を解決するために、モデルを実際に動かしてみました。problemのデータとモデルをそのまま利用します。1])パラメータモデルは次の4つをコンパイルしました。STAN_NUM_THREADS=8と指定(THREADS8と呼称)これとは別に以下のパラメータをサンプリング時に指定しました。labの%timeitオプションを付けて実行しました。各パラメータセットごとに7回反復されて、平均が取られました。notebookはこちらです。timeの単位は秒です。VanillaはSTAN_NUM_THREADSが1の場合と殆ど変わりません。