Macのrstanは負担が大きい?

結論から先に言うと,OS環境下によって挙動が違いますよ、って話。特にMacは不利です(´Д` )

 

rstanのサンプルコードで8schoolsというのがありますが,それの実行にかかる時間が実は全然違う。

Ubuntuとwindowsはいずれもmacの仮想環境上で働いているんだけど,実行結果はこんな感じ。

まずUbuntu.

rstan_ubuntu

4つめの鎖だけですが,瞬殺(0.04sec)。次いでWindows.

rstan_win

これも0.05sec。ところがMacだと

rstan_mac

0.5sec…。いや,十分速いんですけど,10倍の違いがあるのはびっくり。

これは簡単な回帰モデルだから,ほとんど時間を感じませんけど,今個人的に書いているコードはちょい複雑。なので,Macで300秒ぐらいかかって,仕方ねえなあと思っていましたが,共同研究者がどうも結果をスイスイ出すので,?とおもって環境を変えてUbuntuにしてみたら,13secで答えが出た。コレはちょっと驚き。

多分rstanのコードがmacのコンパイラに最適化されていないんでしょうね。詳しくないのでわかりませんが。

ちなみに,結果ですが,それはそんなに心配しなくてもOKだとおもう。順にUbuntu,Windows,Macでの結果をのせます。

rstan_result.ubuntu

rstan_result_win

rstan_result_mac

乱数の発生機序がちがったりするから,同じになるはずは内し,まあ少なくとも1の位のオーダーでは狂ってないし,収束の程度(Rhat)も「こっちなら収束するのに?!」なんてことはないようです(たぶん)。

絵面を見ると,Mac>Ubuntu>Winの順で美しいですが,スピードが遅すぎるのはちょっと困るなぁ。ということで、当方しばらくは仮想環境上で仕事しようと思います。

 

※もし壮大な勘違いかなんかで,こうすればいいんだよ,というご指摘があればお願いします。