Download presentation
Presentation is loading. Please wait.
1
Rを用いたブートストラップ法の 大規模並列計算
東京工業大学・情報理工 下平英寿 統計連合大会
2
概要 東工大のスパコン TSUBAME の紹介 Rの並列化ライブラリ snow の紹介
大規模並列計算の体験談: pvclust, scaleboot
3
東工大のスパコン TSUBAME
4
TSUBAME @ Tokyo Tech TSUBAME: 10000 cpu くらい らしいですが 混雑しています
TSUBASA: さいきん,GCOE(計算世界観)が700cpu くらい調達しました
5
Sun Fire X4600 Enterprise-Class Data Center Compute Engine
大規模分散並列型演算サーバ 高性能密結合分散並列型演算サーバ (合計: 639台) CPU : 8ソケット800 シリーズAMD Opteron 2.4GHz メモリ : 32GB (32x DIMM スロット) OS : SuSE Enterprise Linux 9 SP3 IB card : Voltaire HCA 400Ex-D single port 4X x 2 (latency/ 3.5μs) メモリ共有型演算サーバ群 (合計: 16台) CPU : 8ソケット800 シリーズAMD Opteron 2.6GHz メモリ : 64GB (32x DIMM スロット) OS : SuSE Enterprise Linux 9 SP3 合算ピーク性能 : 50.4 Tera Flops 合算メモリ容量 : 21.4 Tera Bytes Full performance Opteron processor modules (8 -total) Dual-Core Available CPU Module 6 PCI-Express slots - 4 – x8-lane slots - 2 – x4-lane slots Redundant, hot- plug fans 2 PCI-X slots (133MHz/64-bit) 24” deep
6
東京工業大学 学術国際情報センター TSUBAME Grid Cluster
大規模分散並列型演算サーバ 高性能密結合分散並列型演算サーバ メモリ共有型演算サーバ群 Sun Fire X4600 655nodes 16CPU/node 10480CPU Memory: 21.4TB type nodes CPU clock MEM/node A 639 2.4GHz 32GB B 16 2.6GHz 64GB ClearSpeed 360枚 ・・・655nodes InfiniBand Network Voltaire ISR 9288 ×8 100ギガビット級ネットワーク装置 200bps (片方向) 24Gbps (片方向) SuperTitanet ・・・ 42台 500GB 48disks 500GB 48disks 500GB 48disks ストレッジサーバA Sun Thumper (Code Name) 物理容量 1PB ストレッジサーバB NEC iStorage S1800AT 物理容量 96TB RAID6 ペタバイト級ストレッジサーバ
7
TSUBASA GCOE(計算世界観) Sun Blade X6250 ×90ノード 以下ノードあたり
* Quad core Xeon E GHz × 2 (8コア) * メモリ DDR2 8GB (ただし,うち25ノードは16GB) * HDD 80GB SATA * InfiniBand (10GBps) * SUSE Enterprise Linux 9
8
ふつうにログインして使います
9
Rの並列化ライブラリ snow
10
Rとは? データ解析を主目的に開発された,オープンソー スのプラットフォーム
C-likeなプログラミングのインタープリターで,いち おうオブジェクト指向 2000年ころからメジャー化したが,前身はAT&Tの ベル研で1984年ころ開発されたS CRANに登録された「公式ライブラリ」だけで1008 個(2007/03/05) すごい勢いで増殖! 特に,バイオインフォマティクスとか機械学習など の最新手法は,Rで実装されることが多い.(バイ オスタットの定型業務は昔からSAS)
11
Rにおける並列化 CRANのsnowライブラリを使うのが簡単. snowは内部でRmpiライブラリを利用します.
OSでlambootをあらかじめ実行しておきます.
12
Using snow library: parLapply
y[[1]] <- myfunc(x[[1]]) y[[2]] <- myfunc(x[[2]]) … y[[1000]] <- myfunc(x[[1000]]) ### multiple CPUs ### ## cluster initialization library(snow) cl <- makeCluster(100) ## computation y <- parLapply(cl, x, myfunc) ### single CPU ### ## computation y <- lapply(x, myfunc) cpu cpus
13
Simple Example @ Shimodaira-lab
14
pvclust @ Shimodaira-lab
15
ブートストラップ リサンプリング法 複製データ n’=5 2 5 1 2 4 データ n=5 重複をゆるして 要素を選ぶ 1 2 3 4 5
ブートストラップ リサンプリング法 複製データ n’=5 2 5 1 2 4 データ n=5 重複をゆるして 要素を選ぶ 1 2 3 4 5 4 3 3 5 1 10,000回繰り返す 1 5 2 5 4 30年くらい前に提案され,広く利用されている.
16
pvclust (鈴木了太 くんの修論) 並列版のparPvclust関数 シングルCPU版 pvclust関数
ブートストラップ法では乱数で数値をかえて10000回くらいの繰り返し計算を行う.そこでR標準の繰り返し関数「lapply」をsnowで実装されてる「parLapply」におきかえている
17
snowにおける並列化と問題点 データx[1],...,x[10000]に関数fをクラスタclで計算する とき,parLapply(cl,x,f)とやる.R標準ではlapply(x,f)と やることを単純に並列化する. length(cl)=10なら,ベクトルxを10分割してノードに割 り振るだけ.そしてparLapplyは仕事をclusterApplyに 投げる. 粒度がそろわないときや,スレーブ能力にバラツキが あるとき,効率が悪い. 計算をある程度まとまった固まりにする(粒度を調 整)すると,効率がよくなる. 分枝限定法のような高度な並列化はできない.デ バッグも困難.snowにかわるライブラリの必要性.
18
snowにおけるロードバランシングの努力(あまり効果ない?)
標準のclusterApplyを改良?したのがclusterApplyLB.ためし に使ってみたら,スレーブのジョブ終了確認をポーリングで やっていて,すごく遅い.使わないほうがマシ.(ブートストラッ プは粒度がだいたいそろっているという事情もあります)
19
大規模並列計算の体験談
20
TSUBAME 704 cpu でも 20秒足らず OSレベルでジョブの投入に時間がかかります
21
利用例:ピクセルごとに数値計算してアルゴリズムのパフォーマンスを視覚化
263 sec * pixels / (60*60) = cpu cpus クラスタがなければ,やろうとは思わないような計算 bootstrap probability one-sided p-value two-sided p-value
22
CPU数を変化させて計算時間を測定 マルチスケール・ブートストラップ法 (スケールは13コにした) B=10,000回の反復
pvclust: 階層型クラスタリング (マイクロアレイデータの分析につかった) scaleboot: 新たらしいマルチスケール法の実装 (系統樹推定につかった) RELL法: 対数尤度を直接リサンプリングするため,ブートストラップ法は行列計算だけ
23
CPU数 vs 計算速度 7分 @ 704 cpus 80時間 @ 1 cpu 並列化による改善
24
まとめ: snowによる並列計算 単純な反復計算ならば,既存のコードを簡単に並列 化できる.
ブートストラップ法のように相互通信のない計算なら ば,CPU数(コア数)にほぼ比例して速くなる.CPUが 200個くらいまでなら,ほとんどリニアに増える. いろいろ問題もあります.
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.