Comments
Transcript
美添 一樹 @東京大学 湊離散構造処理系プロジェクト セミナー 2012/2/24
超並列 分散モンテカルロ木探索 美添 一樹 @東京大学 湊離散構造処理系プロジェクト セミナー 2012/2/24 1 1 自己紹介 過去の研究内容 2 2 投機並列実行 • ループ等を複数のCPUに割当てて強引に並列実行 し、後から依存関係を解決 • 依存関係の原因:分岐、レジスタ、メモリ • メモリアクセスを介した依存関係が一番難しい • キャッシュ同期プロトコルの拡張で対処する手法を提案 • 問題点: 性能向上が小さい • そもそも投機並列実行自体が、ハードウェア資源を要求 する割に性能向上が少ない (4コアで2割程度) • 当時はマルチコアがまだ一般的でなかったので、レジス タ間の依存関係も対処が難しい 3 3 デジタル無線通信 • (株) 富士通研究所 • モバイルコミュニケーション開発研究所 • • 現在はワイヤレス研究所 携帯電話 無線基地局関連の開発研究 • 無線通信シミュレータの開発 • • Adaptive Array Antenna 方式の開発研究 • • 性能検証のため 富士通研究所 @YRP5番館 複数のアンテナを利用した指向性のある通信(の制御) Digital Signal Processor のプログラミング • VLIWのアセンブリを手書き 4 4 証明数探索によるAND/OR木探索 • グラフ(木)の形状を手がかりに探索する手法 • 枝分かれの少ない方を優先して探索する • • 詰将棋には理想的な性質 • • 相手の選択肢を狭めるように探索する [長井2002] ほとんど全ての詰将棋を解く(df-pn) その他、多くのゲームの終盤にも有効 • • 五目並べの先手必勝証明 [Allis1992] checkers の引き分け証明 (Scienceに掲載) [Schaeffer, 岸本 et al. 2007] 人間にも読み切れる問題は コンピュータ圧倒的に優勢 だが例外あり 5 5 証明数探索の弱点 熟練した人間に負ける問題 開いた 詰碁 詰みのない 将棋の終盤 閉じた 詰碁は 解ける 難しい 倉庫番 6 6 領域の開いた問題を解いた [Yoshizoe, Kishimoto, Müller 2007] [Yoshizoe 2009] 既存のアルゴリズムが苦手とする 領域の開いた問題を解いた 「分岐因子が大きくかつ一様な探 索空間にも有効」 脅威度 (λorder) の概念と深さ優 先証明数探索 (df-pn) の組合せ おまけ これだと 別解あり 7 7 静脈認証の安全性評価 背景: FAR と FRR 及びその問題点 • FAR, FRR が標準的に用いられてきた • • • FAR: 他人受入率 0.8" FRR: 本人拒否率 0.6" 人工物によるなりすましは考慮外 • • • • 1" 0.4" FRR" 0.2" 指紋認証 グミ指 0" 虹彩認証 眼の写真 0" 10" 20" 30" 40" 50" 静脈認証 プラスチック, (大根) 「ウルフ攻撃確率の提案」[宇根 et al. 2006] • • FAR" FAR: False Acceptance Rate FRR: False Reject Rate 人間由来でないデータを考慮した基準 ウルフ: 人間ではないのに複数の人間と 誤一致するデータ • cf. 赤ずきんちゃん、音声認識 8 8 ウルフ攻撃確率 (WAP) false2acceptance2rate 50% 50% 0.03% 0.03% 0.01% FAR= 0.05% 100% 100% 0.01% 0.05% 特に、攻撃者が アルゴリズムの 性質を知っている 場合を想定 WAP= 安易に本人拒否率(FRR) を下げようとすると、 ウルフが発生する可能性がある しかし、ウルフ攻撃確率の推定は難しい 9 9 ウルフ攻撃確率(WAP)の推定 目的 認証アルゴリズムが与えられ たときに、WAPを推定する ある静脈認証方式の万能鍵 (ユニバーサルウルフ) を 探索アルゴリズムで発見 [田辺,美添,今井2008] SCIS2008論文賞 [Tanabe,Yoshizoe, Imai 2009] アルゴリズムは 単純だったが、 結果が面白かった このパターンを 敷き詰めた画像を 提示すると、 どんな画像にも マッチする 10 10 量子計算機シミュレータ • • 量子bitを表現するには膨大なメモリが必要 • 36量子bit を倍精度で表現するには 1TB 必要 SSDを記憶領域として利用し、量子演算をエミュレー ションする • 32GB SSD x 4 を使用 Intel X-25E Extreme • • • Read 984MB / sec, Write 685MB / sec PC全部で約30万円 Hadamard 変換の時間を測定 • • • 規則的な行列乗算を複数回行う SSDの性能に合わせてブロック化などを調整 32 qubit Hadamard変換 に約380秒 (メモリ64GB) • 参考: BlueGene/L (256 MPI process) で約70秒 11 11 背景: SAT solver (¬x1 ¬x2 ¬x3 ) (x2 ) (x1 x2 ) (x1 ¬x2 x3 ) (¬x1 x3 ) • SAT はもちろんNP完全 • しかし実際には多くの問題が実用的な時間 で解ける • 変数が多いだけでは難しくならない • 毎年SAT競技会が開催されている • キーテクニック • DPLL, Conflict-Driven Clause Learning (CDCL) 12 12 DPLL+CDCL (¬x1 (¬x1 ¬x2 ¬x3 ) ¬x3 ) (x1 (x1 x2 ) (¬x1 x3 ) (x1 x2 = 1 x1 = 1 (¬x3 ) (x2 ) DPLL = Davis, Putnum, Logemann, Loveland M. Davis, G. Logemann, and D. Loveland. “A machine program for theorem proving” Comm. ACM,Vol. 5, No. 7, pp. 394-397, 1962. (x3 ) x3 ) x1 = 0 (x3 ) ¬x2 x3 ) (¬x1 x3 ) 近年のSAT solverは DPLL に学習説 x3 = 1 充足不能なので、 充足 1, back track するか、 2, 学習節を生成し追加、restart CDCL = Conflict-Driven Clause Learning (¬x2 ¬x1 ) cf. MiniSAT 13 13 分散並列 SAT solver 1, Master-Worker 3, TDS方式 (詳細略) 分散ハッシュテーブル を用いた並列化手法を SAT solver に適用 負荷分散が問題 •1, 2, は既存方式 2, Portfolio •最新のクラスタ上で実 個別に複数のソルバを実行 装、性能測定 •3, は新提案 学習節だけ交換 •まだ実装が不安定 14 14 Image provided by Tokyo Institute of Technology Photographer: Takahiro Uozumi Scalable Distributed Monte Carlo Tree Search Kazuki Yoshizoe ([email protected]) Dept. of Computer Science The University of Tokyo Joint work with A. Kishimoto, H. Yoshimoto, T. Kaneko and Y. Ishikawa 15 Graph search Root Branch (Edge) Node Path Leaf Main component of many AI (Artificial Intelligence) applications 16 16 背景 1 背景 2 モンテカルロ木探索 (MCTS) ランダムサンプリング+ 木探索 分散ハッシュテーブルを 用いた並列探索 (TDS) [Romain et al. 1999] [Coulom 2006][Kocsis, Szepesvári 2006] 分散並列モンテカルロ木探索 TDS-‐df-‐UCT: 1,200core で600-‐750倍高速化 ただしまだ仮想ゲーム木での性能 (Transposition table Driven Scheduling, depth-first, Upper Confidence bound for Trees) 17 17 背景その1 モンテカルロ木探索 とコンピュータ囲碁 あるいは二人ゼロ和完全確定情報ゲームの進歩 18 18 普通の二人ゼロ和完全情報ゲーム min-max探索 + αβ枝刈り (αβ探索) αβカットにより探索が 省略される。理想的には 探索節点数が sqrt になる [Knuth, Moore 1975] Max node Min node 50 24 70 25 47 15 67 65 19 19 普通の二人ゼロ和完全情報ゲーム min-max探索 + αβ枝刈り (αβ探索) αβカットにより探索が 省略される。理想的には 探索節点数が sqrt になる 50 50 47 50 [Knuth, Moore 1975] 70 47 67 Max node Min node 50 24 70 25 47 15 67 65 19 19 普通の二人ゼロ和完全情報ゲーム min-max探索 + αβ枝刈り (αβ探索) αβカットにより探索が 省略される。理想的には 探索節点数が sqrt になる 50 50 47 50 [Knuth, Moore 1975] 70 47 67 Max node Min node 50 24 70 25 47 15 67 65 19 19 普通の二人ゼロ和完全情報ゲーム min-max探索 + αβ枝刈り (αβ探索) αβカットにより探索が 省略される。理想的には 探索節点数が sqrt になる 50 50 47 50 [Knuth, Moore 1975] 70 47 67 Max node Min node 50 24 70 25 47 15 67 65 19 19 αβ探索によるAIの強さ チェッカー オセロ チェス 1994年に世界チャンピオンに勝利 2007年に引き分け証明 1997年に世界チャンピオンに完勝 1997年に世界チャンピオンに勝利 (IBM DeepBlue vs Kasparov) 将棋 そろそろ羽生さんと良い勝負 囲碁 アマ3級くらい? 明らかに囲碁だけ突出して弱い 囲碁も二人ゼロ和完全情報ゲームなのになぜか? 20 20 囲碁の難しさ 探索空間が巨大 チェッカー 1020 良い評価関数が作れる オセロ 1028 チェス 1050 手生成、機械学習などによる 高速、正確な評価関数 将棋 71 10 囲碁(9路) 1038 囲碁(19路) 10171 μ秒オーダー 9割方当たる (この表現の意味は置いておいて) 囲碁には、良い 評価関数が作れない 21 21 Monte Carlo Simulation とゲームAI • 確率的なゲームに使うのは自然なアイデア • • • • Poker (Texas hold em) Scrabble Back Gammon 完全情報ゲームに使うのは… • • 一見奇抜なアイデア 「原始モンテカルロ碁」 • 1993年頃に提案 [Brügmann 1993][Bouzy][Cazenave] 22 22 Playout とは • 囲碁は終盤に近づくにつれ て合法手が減少する • 合法手の中からランダムに 選んで打つだけのプレイ ヤーでも終局可能 • ただし、少し制約が必要 「眼に 打たない」 • playoutは造語 • 既存の用語は simulation, episode 等 23 23 原始モンテカルロ囲碁 playout による局面評価 黒の手番 白の手番 playout 黒勝ち 白勝ち 24 24 もちろん、 原始モンテカルロ囲碁は弱い • playout の回数が多ければ強くなるという期待 • しかし、深さが2段以上の木に対しては、最善 手を返す保証がない • • 相手のミスに期待した手を打つ特徴がある 正しい応手の数が少ない場合は特にその傾向が強い • どのくらいが強さの限界か調べた論文あり • GNU Go 相手の勝率は1割くらいだったようです H.Yoshimoto, K.Yoshizoe, T. Kaneko, A. Kishimoto, and K. Taura Monte Carlo Go Has a Way to Go, AAAI06, 25 25 [Coulom 2006] CrazyStone の登場 • 2006年 Computer Olympiad (@Torino) 囲碁9路盤部門優勝プログラム • 作者は Rémi Coulom (フランス) • • using Monte-Carlo method ! 優勢だと手堅く逃げ切り、劣勢だと無理な手を 打つ • CrazyStone が使っていたのが、原始モンテ カルロを改良したアルゴリズム • これがモンテカルロ木探索の発明とされる 26 26 モンテカルロ木探索 Monte Carlo Tree Search 有望な手で多くの playout を実行 playout の回数が 閾値を超えたら 木が成長する 27 27 Normal search algorithm Monte Carlo Tree Search (MCTS) Leaves are evaluated using evaluation function MCTS dramatically improved Go programs [R. Coulom 2006, L. Kocsis and C. Szepezvári 2006] Do random samplings at leaves So-called Monte Carlo Tree Search (sampling is called playout in game AI) 28 28 UCT algorithm [L. Kocsis and C. Szepezvári 2006] Upper Confidence bound applied to Trees Upper Confidence Bound is a way of comparing probability distributions w 2 ln t s + mean s [P. Auer, N. Cesa-Bianchi and P. Fischer 2002] bias Multi-Armed Bandit Problem UCT algorithm applied UCB to tree search Proof: UCT converges to the optimal node with infinite playouts 29 29 MCTS applications [H. Nakhost and M. Müller] “Monte-Carlo Exploration for Deterministic Planning”, IJCAI’09 2 player games Multi player games Planning Constraints Satisfaction Problem [S. Baba,Y. Joe, A. Iwasaki and M.Yokoo] “Real-time Solving of Quantified CSPs based on Monte-Carlo Game Tree Search”, IJCAI’11 Canadian Traveler Problem Single player game (puzzle) [Z. Bnaya, A. Felner, D. Fried, O. Maksin, S. E. Shimony:] “Repeated-Task Canadian Traveler Problem”, SOCS 2011 30 30 特に囲碁の進歩は • • 2005年以前はアマ3級程度で停滞 2006年末、MCTSの発明によりアマ初段 • • 2012年2月現在、最強のプログラムはアマ7段格 • • • • kgs 1d を達成 kgs 5d-6d あと少しで都道府県代表を狙える (7dあれば狙える) 1年で1段程度の進歩 プロは kgs 9d 以上 トッププロは 11d-12d と推測 31 31 背景その2 分散ハッシュテーブル によるIDA*探索 またはクラスタでルービックキューブを解くには 32 32 A*探索 • A*探索は評価関数付きダイクストラ • 反復深化と組み合わせたIDA*探索はよく使われる • Iterative Deepening A* • 様々な問題に適用可能 • • 普通の最短経路、何らかの最適化、パズルの解法 ルービックキューブの20手証明にもおそらくIDA*探索 が用いられている [Rokicki, Kociemba, Davidson and Dethridge 2010] God’s Number is 20 ( http://cube20.org/ ) 33 33 Hash table and Search 何らかの hash 関数 によって、節点の hash 値を計算 (cf. Zobrist hash) 01001011 Hash Table Hash Key 11010001 10001110 違う手順で同一局面に至ることを transposition と呼ぶので、transposition table と言う。 合流の検知、履歴を用いた高速化 (反復深化など) で利用される。 探索アルゴリズムでは標準的なテクニック。 34 34 Straightforward parallel search • • Simple approach • • Divide tree into subtrees Do Work Stealing if there are idle CPUs Difficulties • Communication overhead for Work Stealing • Needs accurate workload prediction for uniform load balancing • Transpositions (DAG) 35 35 Hash table based parallelization Transposition table Driven Scheduling [Romein et al. 1999] CPU ID 11 01001011 3 CPU0 Hash Table CPU1 Hash Table Hash Key 2 1 10 11010001 01 10001110 CPU2 Hash Table CPU3 Hash Table cf. Distributed Hash Table (DHT) •Disadvantage: frequent inter-‐CPU communicaJons •Advantage 1: all communicaJons are 1 to 1 (no broadcast) •Advantage 2: communicaJon and computaJon can overlap 36 36 Parallel IDA* by TDS [Romein et al. 1999] • IDA* search (depth first A*) • • Iterative Deepening A* 最短経路を発見する • 並列化の準備 • 通常の A* 探索 • • 結果を上の節点に返す 上に結果を返さないA*探索 • • ボトルネックを回避 少しのオーバーヘッドで可能 37 37 TDS (TDS-IDA*) mechanism Evaluation Search Search Search Search Search Search Search Search Search Search job queue Search Search Search Search Search hash table CPU0 CPU1 CPU2 38 38 TDS performs extremely well The secret is elimination of upward communication Speedup Speedup (a) 15-puzzles Speedup Parallel IDA* search speedup Fig. 5 [Romein et al. 1999] (b) 14-puzzles (c) Rubik’s Cube 39 39 TDS の適用例 • A* search • original TDS [Romein et al. 1999] • • • パズル、大規模グラフの最短経路問題 Alpha-beta search • TDSAB [Kishimoto 2002] • • • TDS = IDA* + TDS TDSAB = MTD(f) + YBWC + TDS 二人ゼロ和完全情報ゲーム 並列モンテカルロ木探索 • TDS-df-UCT [Yoshizoe et al. 2011] • • TDS-df-UCT = df-UCT + TDS これから話します 40 40 Distributed Parallel Monte-Carlo Tree Search スーパーコンピュータでモンテカルロ木探索 41 41 Parallel computing All computers will be parallel Shared memory CPU CPU Main Memory CPU Distributed memory CPU CPU CPU Main Memory Main Memory Main Memory CPU CPU CPU CPU Fast communication, few CPUs, easy to use Network Slow communication, many CPUs, difficult to use 42 42 Existing parallel approach Root parallelization (Portfolio) Many trees with different random seeds Achieves 32 to 64 fold speedup Similar approach is effective for other problems. e. g. SAT solver, CSP solver Portfolio based parallel SAT solver cf. SATzilla Share important information 43 43 r TDS-UCT Original UCB formula w + s a add virtual loss to UCB b How to distribute CPUs? UCT: UCB applied to Trees UCB: Upper Confidence Bound 2 ln t s w + s+d 2 ln(t + D) s+d award a penalty if other CPU(s) are searching the node TDS: Transposition table Driven Scheduling 44 44 TDS-UCT mechanism Playout Report Search Search Search Search Search Search Report Report Report job queue Search Search Report Report Search hash table CPU0 CPU1 CPU2 45 45 Total number of jobs • Number of jobs has to be greater than number of CPUs • Appropriate number of jobs are not known (We used 20 x no. CPU, but maybe too many) • • • 3 x no. CPU seems better Many jobs • Less idle CPUs, more strength degradation Fewer jobs • More idle CPUs, less strength degradation 46 46 Experiments 6 combinatorial problems 3 synthesized game trees (branches 8, 40, 150) 2 playout Jmes (0.1 ms, 1.0 ms) Pure speedup is measured (Jme for 6M, 20M samplings) (not strength speedup) Image provided by Tokyo Institute of Technology Photographer: Takahiro Uozumi TSUBAME2 supercomputer (Tokyo InsJtute of Technology) Used 100 compute nodes, 1200 CPU cores (Xeon 2.93 GHz), QDR InfiniBand x 2 (80 Gbps) 47 47 Naïve TDS-UCT speedup 0.1-‐ms playout 14 12 Branch 40 10 Branch 8 8 6 4 2 0 120 100 Branch 40 Branch 150 80 Speedup Speedup 200 400 600 800 1000 1200 Branch 8 60 Branch 150 40 20 0 1.0-‐ms playout 0 0 Number of CPU cores 200 400 600 800 1000 1200 Number of CPU cores Slower sampling yields be`er speedup Too slow 48 48 TDS-UCT with ad hoc enhancement 14 12 10 Speedup 8 6 4 2 0 120 100 1.0-‐ms playout Branch 40 Branch 8 Branch 150 60 40 20 0 200 400 600 800 1000 1200 Branch 40 80 Speedup 0.1-‐ms playout Branch 8 Branch 150 0 0 Number of CPU cores 200 400 600 800 1000 1200 Number of CPU cores Using CPU0 only for communication results in a slight improvement 49 49 The bottleneck Number of received jobs per CPU (20M playouts) Max Avg. Ret. lv. 21.7M 685K 20.6 and avg. levels of returns Communications concentrate on one CPU Ad hoc solution was not enough 50 50 Solving the bottleneck r f c a d r g f e b Normal UCT unnecessarily returns to the root node c a d g e df-UCT also sends records of branch comparison b Depth First UCT skips unnecessary returns [H.Yoshimoto, A. Kishimoto, T. Kaneko, K.Yoshizoe* 2007] Published only in Japanese 51 51 Depth First UCT r f c a d b g e w + s 2 ln t s Depth 0 1 2 Best wf sf 2nd wg sg wc sc wa sa wd sd wb sb Best と 2nd best の値を保持したスタックを持つ (正確には virtual loss の値も持つ) 比較はスタック中の値で行い、余計なリターンを回避 ただし、jobあたりの通信サイズは増大する (96bytes for naive TDS-‐UCT, 2K bytes for TDS-‐df-‐UCT) 52 52 df-UCT vs UCT on a single core Ignoring 3rd child did not affect the strength r f c a d b g e w + s 2 ln t s df-UCT vs UCT in P-Game with 100K po. / move 3rd child can become the best (with prob. 1.0-‐2.4%) but ignored because table only has 2 entries Br. Dp. 先手 後手 Win Loss Draw 8 30 UCT df 80 119 1 8 30 df UCT 84 116 0 40 20 UCT df 157 39 4 40 20 df UCT 159 36 5 150 10 UCT df 58 140 2 150 10 df UCT 65 130 5 53 53 TDS-df-UCT speedup 0.1-‐ms playout 400 Branch 8 300 1.0-‐ms playout 800 Branch 8 600 200 100 Speedup Speedup Branch 40 Branch 150 400 200 Branch 40 Branch 150 Naïve TDS-UCT results Naïve TDS-UCT results 0 0 200 400 600 800 1000 1200 0 0 Number of CPU cores 200 400 600 800 1000 1200 Number of CPU cores 250-‐330 fold speedup (0.1-‐ms) 600-‐740 fold speedup (1.0-‐ms) Max Avg. Ret. lv. Naïve 21.7M 685K 20.6 df 100K 82K 2.64 Number of received jobs 54 54 Number of upward jobs Branch 8 Branch 40 Branch 150 max avg. RP/pl. max avg. RP/pl. max avg. RP/pl. UCT1 21.7M 685K 20.6 20.4M 243K 7.28 20.0M 18.3K 5.50 UCT2 21.8M 697K 20.9 20.0M 240K 7.21 20.0M 18.7K 5.61 df-‐UCT 100K 82.0K 2.64 118K 66.9K 2.01 158K 58.0K 1.74 Number of report jobs received at each CPU 0.1ms playout, 600cores, 20M playouts There is a big gap between max and avg. for naïve TDS-UCT. TDS-df-UCT almost equally distributes report jobs. RP/pl. shows the number of report jobs per playout. It shows that df-UCT jobs only returns 2 levels in average. 55 55 Job gathering overhead • Naïve TDS-UCT は毎回 root 節点に返る • • オーバーヘッドはあるが、常に最新の情報が root にある TDS-df-UCT は、木の末端近くにとどまる • • • root 節点の情報がそのままではなかなか更新されない 終了時に job を root 節点に「呼び戻す」必要がある このオーバーヘッドが大きい (job gathering overhead) • • • 1,200 core だと、実行時間 8秒で overhead 2秒など オーバーヘッドの大きさは job 総数と木の深さで決まる job の総数を減らして、探索時間を長くすれば軽減で きるが、さらに高速化を目指す場合には問題となる 56 56 TDS-df-UCT w/o overhead 400 300 200 100 Branch 8 Branch 150 Branch 40 0 800 600 400 200 0 200 400 600 800 1000 1200 1.0-‐ms sampling 1,000 Speedup 500 Speedup 0.1-‐ms sampling Branch 8 Branch 150 Branch 40 0 0 Number of CPU cores 200 400 600 800 1000 1200 Number of CPU cores Execution time includes 1-‐3 sec. fixed time overhead (for 1,200 cores). Speedup without the overhead reaches 1000 fold. 57 57 Conclusions and future work • Solved bottleneck in parallel MCTS and achieved 740 fold speedup (existing results are less than 64 fold speedup) • • • Proposed promising approach for other search algorithms • • Provide new applications for supercomputers Improve speedup further, hopefully up to 50,000 fold Apply parallel MCTS to problems other than game tree (Constraints Satisfaction Problems, Planning, ...) Beat human Go champion using a supercomputer (reproducing IBM Deep Blue vs Kasparov) 58 58 Conclusions and future work • Solved bottleneck in parallel MCTS and achieved 740 fold speedup (existing results are less than 64 fold speedup) • • • Proposed promising approach for other search algorithms • • Provide new applications for supercomputers Improve speedup further, hopefully up to 50,000 fold Apply parallel MCTS to problems other than game tree (Constraints Satisfaction Problems, Planning, ...) Beat human Go champion using a supercomputer (reproducing IBM Deep Blue vs Kasparov) 58 58 今後の方向性 • (未発表の) 4,800 core の実験によれば、探索 終了時の Job gathering overhead はかなり 本質的である • これを解決する必要がある • 並列化したUCTの収束の証明 • (並列化を離れて) UCBを置き換える • 理論的には良いが計算時間がかかるものを実用化 • 最適なパラメータを自動調整 • 囲碁プログラムをこの上で動作させて… 59 59