時間

MCMCの計算時間を短縮する方法

投稿日:

MCMCでどの程度計算時間がかかるのか、どうしたら計算時間を短縮できるかを調べました。なお、MCMCだけでは情報が集まらなかった為、MCMCだけでなく、モンテカルロシュミレーションまで範囲を広げて情報を集めてみました。

モンテカルロシュミレーションの所用時間

計算内容所要時間
囲碁9路盤100万局の乱数対戦10時間46分
囲碁19路盤10万局の乱数対戦61時間
MCMCによるサンプルケース(R)25時間

計算時間が長くなる場合

  • パラメータが多い
  • パラメータ間の相関が大きい
  • logをとる
  • プログラムがいまいち

MCMCについて 水産資源学におけるベイズ統計の応用ワークショップ

Mplusを使う

計算速度がRstanに比して速い

  • rstanで1分かかるのが、Mplusだと5秒で終わる
  • コアをchainごとに分けられるので, さらに速い
MCMCでマルチレベルモデル

MCMCでマルチレベルモデル

繰り返し処理の回避

コードの適正化

  • forではなくapplyを使う
  • 繰り返し処理はさせずベクトル演算を使う

パッケージを用いた並列処理化

  • snow packageでapplyを並列処理化

「R」でGPUを使ってみた|技術コラム|GPUサーバープラットフォームの設計/構築なら「技術力」のNTTPC

GPUによる並列処理

GPUを使い並列計算処理を行うことで高速化を図ります。

CUDAとは?

CUDA(Compute unified device architecture)はGPUを使用して高速な並列計算処理を行うためのアーキテクチャです。GPUメーカーであるNVIDIAが開発・提供しています。

GPU向けのC言語統合開発環境であるCUDA ToolkitはMicrosoft Windows, Linux, macOS, Androidで利用することができます。公式サイトはこちらです。 >> CUDA Zone

モンテカルロシュミレーションへの応用

モンテカルロ法と並列処理は高い親和性を持ち、CPUで計算した場合に比して100倍以上の高速化が実現できる場合もあります。

CUDAを使ったオプションプライシング、リスクアナリ シス、アルゴリズムトレーディングの現在進行中の分野があります。乱数発生器におけるいくつかの代表的な表に伴うこの研究およびモンテカルロシミュレー ションは、下記に紹介されています。

計算ファイナンス | NVIDIA
通常のプログラムによりCPUで計算した場合に比べ、GPUでは計算が大幅に高速化できる例があります。
モンテカルロ法では100倍以上の高速化を得られる場合もあり、計算時間の短縮、もしくはサンプル・パス数の増加による計算精度の向上を図ることが可能です。みずほ第一フィナンシャルテクノロジー:GPUコンピューティング
モンテカルロ法についても並列処理によって計算時間を短縮することができる。特に、モンテカルロ法のアルゴリズムは並列処理と親和性が非常に高く、モンテカルロ法の並列処理による高速化の要請は高まっている。モンテカルロ法の効率的な並列処理手法

RでGPUを使う(NVBLAS

Rの線形演算ライブラリBLASを高速化することによりRを高速化する方法が紹介されています。

-NVBLASgputoolsgpuR
概要GPUを使用する
BLASを実装する
GPUを使用する
新たな関数を実装する
GPUを使用する
新たな関数を実装する
インストール方法CUDA®同梱R packageR package
GPUNVIDIA®NVIDIA®NVIDIA®、AMD®など
(openCLが動けば良い)

BLASは、基本的な線形演算のライブラリ、例えば行列やベクトルの基本的な計算を行う関数群です。「R」にもBLASが使われているため、「BLASの高速化=Rの高速化」ということになります。

「R」でGPUを使ってみた|技術コラム|GPUサーバープラットフォームの設計/構築なら「技術力」のNTTPC

RでGPUを使う(Rpud)

RStanの並列処理

ベイズ推論とMCMCのフリーソフト - 岩波データサイエンス" url="https://sites.google.com/site/iwanamidatascience/vol1/support_tokushu"]Stan2.7.0以降から簡単になりました。具体的には計算の前にR上で以下を実行してオプションを設定しておくだけで並列化されます。

GPU×MCMCの実現方法

古い記事ですが、GPUを使ってMCMCを行うためのソフトウェアやパッケージが紹介されています。>> pythonでGPUとMCMC(とR) - xiangze's sparse blog

見出しだけ抜粋しました。

  • PyCUDA,PyOpenCL
  • Reikna,CLUDA
  • gpustats
  • Theano
  • Gnumpy, cudamat
  • pygml
  • Numba(pro)
  • R+GPU(gputools)

GPGPUとは?

かつてはCPUは演算処理中心、GPUは画像処理専用という棲み分けられていた。ところが近年、GPUを画像処理以外の計算にも応用しようという動きが出てきた。これが(General-purpose computing on graphics processing units; GPUによる汎用計算)である。

大量処理性能・高速メモリアクセスという2点に特化する形でGPUが大きく進化を遂げた結果、CPUは演算処理中心、GPUは画像処理専用とすみ分けられるようになった。
ところが最近、このGPUを画像処理以外の計算にも応用しようとするGPGPU化の動きが出てきており、従来のすみ分けに変化が起き始めている。リスク管理プロセスを変える高速化技術|2012年5月号|金融ITフォーカス|刊行物|NRI Financial Solutions
GPGPU(General-purpose computing on graphics processing units; GPUによる汎用計算)とは、GPUの演算資源を画像処理以外の目的に応用する技術のことである。GPGPU - Wikipedia

アーキテクチャとは?

アーキテクチャとは、情報システムの設計方法、設計思想、およびその設計思想に基づいて構築されたシステムの構造などのことである。

アーキテクチャはもともと、建築分野における設計思想や建築様式のことを意味していた。IT分野では、IBMが最初の汎用コンピュータであるSystem/360の設計思想を表現するために「アーキテクチャ」という語を用いた。その後、主要メーカーが自社システムの設計方式を示すためにこの語を用いた。

アーキテクチャとは何?Weblio辞書

-R, 時系列データ分析

Copyright© LESS , 2019 All Rights Reserved Powered by STINGER.