Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

大規模グラフアルゴリズムの最先端

58 561 vues

Publié le

Publié dans : Technologie
  • Secrets to making $$$ with paid surveys...  https://tinyurl.com/make2793amonth
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • Earn $500 for taking a 1 hour paid survey! read more... ♣♣♣ https://tinyurl.com/make2793amonth
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici

大規模グラフアルゴリズムの最先端

  1. 1. 2012/01/12 PFI セミナー 大規模グラフアルゴリズムの 最先端 秋葉 拓哉 (@iwiwi)
  2. 2. 挨拶• 自己紹介 – 秋葉拓哉 / @iwiwi – 東京大学 コンピュータ科学専攻 M1 – アルゴリズム系の研究室 – プログラミングコンテストが好き – 2009 年にインターンさせてもらって以来アルバイト アリ本 (グラフの話もあるよ) 1
  3. 3. いろんなグラフ 道路・交通ネットワーク • 頂点:交差点,駅など • 辺:道,路線など やりたいことの例 • 案内,交通管制 • 輸送や災害のための解析 • 地理情報と絡めたサービス • … 2
  4. 4. いろんなグラフ ソーシャルネットワーク • 頂点:人 • 辺:人間関係 やりたいことの例 • 「知り合いかも?」とか • 重要度・影響度の解析 • コミュニティ解析 • 情報の伝播力の解析 • … (MentionMap で作成) 映画 3
  5. 5. いろんなグラフ ウェブグラフ • 頂点:Web ページ • 辺:リンク関係 やりたいことの例 • PageRank, HITS • Web ページの関連性 • … (Gephi HTTP Graph) 「ネットは広大」 4
  6. 6. 大規模グラフ処理の需要 界隈 種類 頂点数 (辺数はもっと) OR 等 交通ネットワーク 全米:> 2 × 107 Twitter:> 2 × 108 人 ソーシャルネットワーク・ Web 等 Facebook:> 5 × 108 人 Web グラフ Google:> 109 ページ 生物情報 タンパク質間相互作用など > 109 アメリカ国土安全保障省: 国防 (?) 謎 > 1015 [Kolda+’04]• みんなデカいグラフを処理したいんだ!• 馬鹿げたサイズのものもある• 他にも一杯あると思います 5
  7. 7. アカデミックな方々の関心• アルゴリズム界隈はもちろん• VLDB (データベース界のトップ会議) – 2011 では “Graph Data” なるセッションが 3 つ• SC (HPC 界のトップ会議) – 2010 でセッション “Graph Algorithms”• 多分他でも… 6
  8. 8. HPC 界の関心 [http://blog.goo.ne.jp/sdpaninf/e/fdd6d1c59516418ccae7514a6512b0d1]• Top500 の新しい仲間• スパコンをグラフの処理能力で格付け• 日本は現在 TSUBAME が 3 位 7
  9. 9. 日本のアカデミック界でも関心 [http://blog.goo.ne.jp/sdpaninf/e/87c8bf7886310ecfab1e56c8967e4b1e]JST CREST にも超大規模グラフに挑戦するチーム 8
  10. 10. インダストリアルからも関心 Graph DB 大人気! 9
  11. 11. 話すことアルゴリズムの話をします (いっぱい話すので概要です)• アルゴリズム界隈での話題 – 特に道路ネットワークでの最短路• DB 界隈での話題 最短路 – 特に複雑ネットワークでの最短路 ばっかり…• HPC 界隈での話題 (´・_・`) – 特に並列分散環境での最短路 (大げさなタイトルに してすみませんでした) 10
  12. 12. 特に道路ネットワークでの最短路1. アルゴリズム界隈の話題 (画像: Google Maps) 11
  13. 13. アルゴリズム界隈 河原林先生• トップ会議 (日本が誇る世界のトップ!!) – STOC, FOCS, SODA, … – 理論系.証明.証明のためのアルゴリズム. oxyさんも まけてない!! – 実装して意味のあるアルゴリズムは少ない.• 実験系アルゴリズムの会議 – ALENEX, SEA, ESA (engineering track), … – 実装して良い感じのアルゴリズムはこっちに. – 最近すこし良い感じなんですか? • SEA: workshop → symposium,ALENEX: workshop → meeting SODA, ALENEX は来週京都で開催!! アメリカ以外での開催は多分はじめて!! 岩間先生 (oxy 神のとこの先生) の還暦祝いという噂 12
  14. 14. 実験系界隈でのグラフアルゴリズム• Graph Partitioning, Graph Clustering – 超流行,最近だと毎回 2,3 本は論文がある – 去年,5 年ぶりの DIMACS Implementation Challenge の題材に – グラフを良い感じに分割したい – 様々な応用: ソーシャルネットワーク解析,分散処理,CV,…• その他,計算困難問題 – クリークカバー (ALENEX’12), TSP (SEA’11), シュタイナー木 (ALENEX’10), …• その他,基礎的な操作 – 最短路と仲間 (いっぱい), トポロジカルソート (ALENEX’11), 直径, … 13
  15. 15. 最短経路クエリ処理1. 前処理 前計算 データ 活用2. クエリ処理 「本郷から駒場」 「30 分です」 「中野から秋葉原」 「20 分です」 「札幌から那覇」 「7 時間です」
  16. 16. 道路ネットワークでの最短路クエリ • 構造を活かしやすい • 様々な効率的な技法 有名な手法 • A*, ALT [HNR’72, IHI+’94, GH’05, …] • Reach Pruning [Gut’04, …] • Highway Hierarchy […] • Transit Nodes […] 最新の手法 • Highway Dimension [Abraham+, SODA’10] + • Hub-Based Labeling Algorithm [Abraham+, SEA’11] 15
  17. 17. Dijkstra → 双方向 Dijkstra Dijkstra 双方向 Dijkstra s t s t 最短路が得られている 両側からやると 頂点が広がってゆく 余計な頂点が減る. アルゴリズム. 16
  18. 18. 三角不等式• ������������ ������, ������ ≔ グラフ ������ 上での ������, ������ の最短距離• ������������ ������, ������ ≤ ������������ (������, ������) + ������������ (������, ������)• ������������ ������, ������ ≥ ������������ ������, ������ − ������������ (������, ������) ★今回はこっち(下界)(������ は任意の頂点)
  19. 19. A*, ALT アルゴリズム A* ALT s v s t t l人工知能等の探索でもお馴染み. ランドマークの頂点を用意. 近そうなところから探索. そこからの距離と三角不等式で 距離の下界を推定し A*. この辺は実装が楽,速度はそこそこ. (state-of-the-art と比べると全然) 18
  20. 20. 双方向 Dijkstra + Reach Pruning の効果 Dijkstra 双方向 Dijkstra 双方向 RE [http://research.microsoft.com/en-us/people/goldberg/hwd.pdf] やばすぎ!効果絶大! 19
  21. 21. Highway Dimension [Abraham+, SODA’10]• これらの手法はヒューリスティクスだった – 「なんとなく」うまくいきそうな手法 – 実験してみるとたしかにうまくいく• うまくいくことを解析したい!→ 道路ネットワークを数理的にモデル化• 道路ネットワーク ≒ “Highway Dimension” の 小さいグラフ [Abraham+, SODA’10] 「ある程度の距離になる最短路は, 必ず限られた頂点のどれかを通る」 (限られた頂点≒大都市的な. で,Highway Dimension が小さい ≒限られた頂点集合が割りと小さい.定義はもっとフォーマル) 20
  22. 22. Hub-Labeling Algorithm [Abraham+, SEA’11]• Hub-Labeling Algorithm – DB 界隈で 2-Hop と呼ばれるものと同じ – 各頂点に関して,中継点候補を前計算 あらゆる頂点対について, 最短路を与える共通の頂点対が 存在するようにしておく 前計算アルゴリズムの性能で, 中継点のサイズが違ってきて, 小さくできるほど良い• Highway Dimension が小さいというモデルで解析をする と,これが凄い速そう → 少し工夫して実装してみたら実際爆速!! 21
  23. 23. Hub-Labeling Algorithm [Abraham+, SEA’11] はやいwwww 5 ランダムアクセスぐらい? 22
  24. 24. 特に複雑ネットワークでの最短路2. データベース界隈の話題 23
  25. 25. 会議と話題• DB 系の会議: SIGMOD, VLDB, ICDE, CIKM, EDBT, … – Web, IR 界隈とも近い – インダストリアルとの距離が近い – プラクティカルな話題が多い• グラフデータベース,分散グラフ処理系• グラフアルゴリズム – パターン検索,コミュニティ抽出,頻出パターン抽出 – RDF のクエリ処理,構造のある検索 – Uncertain Graph 上での各種処理 (枝に不確定性) – 到達可能性クエリ,最短路クエリ (亜種もいっぱい) 24
  26. 26. 最短路クエリの応用例: Social Search
  27. 27. 最短路クエリの応用例: Social Search
  28. 28. 最短路クエリの応用例: Context-Aware Search 「木」 を検索
  29. 29. 最短路クエリの応用例: Context-Aware Search 「木」 を検索
  30. 30. 最短路クエリの応用例• Social Search – Social Network: 人を頂点,枝を友人関係• Context-Aware Search – Web Graph: ページを頂点,枝をリンク これらのグラフ上での最短距離を 結果のランキングの指標に使う
  31. 31. 複雑ネットワークでの最短路クエリ • 構造がカオス • 交通ネットワークと比べ難しい 有名な手法 • 2-HOP [Cohen+, SODA’02] [Cheng+, EDBT’09] • 対称性の活用 [Xiao+, EDBT’09] • ランドマーク系 (近似) [Potamias+, CIKM’09] [Das Sarma+, WSDM’10] [Gubichev+, CIKM’10] 最新の手法 • 木分解による Core-Fringe 構造の活用 [Wei, SIGMOD’10] [Akiba+, EDBT’12] ← Christian さん 河原林先生 → 30
  32. 32. 三角不等式• ������������ ������, ������ ≔ グラフ ������ 上での ������, ������ の最短距離• ������������ ������, ������ ≤ ������������ (������, ������) + ������������ (������, ������) ★今回はこっち(上界)• ������������ ������, ������ ≥ ������������ ������, ������ − ������������ (������, ������)(������ は任意の頂点)
  33. 33. 上界による最短距離推定 (単一ランドマーク)• ������������ ������, ������ ≤ ������������ (������, ������) + ������������ (������, ������) ★ uこれをそのまま使う s t1. 前処理 – 頂点 ������ を1つ選ぶ(ランドマーク) – ������������ (∗, ������), ������������ ������,∗ を全頂点に対し前計算しておく (幅優先探索)2. クエリ処理 ������������ ������, ������ = ������������ ������, ������ + ������������ (������, ������)
  34. 34. 上界による最短距離推定 (複数ランドマーク)ランドマークを単一 (������ ) から複数 (������) にしよう• ������������ ������, ������ ≤ ������������ (������, ������) + ������������ (������, ������) ★複数頂点に使う s t1. 前処理 – 一定数の頂点集合 ������を決める(ランドマーク) – 各 ������ ∈ ������に対し ������������ (∗, ������), ������������ ������,∗ を全長点に対し前計算 (BFS)2. クエリ処理 ������������ ������, ������ = min{ ������������ ������, ������ + ������������ (������, ������)} ������∈������
  35. 35. ランドマークの選択• ランドマークの選び方で近似性能が大きく変わる – ベースライン:ランダム• 実は次数が大きいものから選ぶだけで良くなる! [Potamias+’09] – 他にも Closeness Centrality や Graph Partitioning を使う方法 – 労力の割に大差ないかも [Potamias+’09, Table2] 34
  36. 36. 複雑ネットワークの Core-Fringe 構造 [Lu’00] 複雑ネットワークは 以下の 2 つ (3 つ) に分けられる • 密な “Core” Core • 木に近い “Trails” • (“Middle Layer”)Fringe よりフォーマルには,モデル (恣意的な可視化) の仮定のもとで証明可 35
  37. 37. 木分解の活用 [Wei’10], [Akiba+’12] 木分解 • グラフ → 頂点集合の木 • どちらかというと理論界の道具 • グラフが“木っぽい”とオイシイ (よりフォーマルには木幅が小さいと良い) 複雑ネットワーク • 全体としては木っぽくない • しかし Fringe 部分は木っぽい! – 木分解してウマウマ • Core はやっぱしんどい – 諦めるor頑張る 36
  38. 38. 木分解の活用 [Akiba+’12] 数 M 頂点・辺ぐらいまでなら厳密解で爆速クエリ処理 クエリ時間 (μs) それ以上はシンドイので,近似手法と組み合わせる (5 M 頂点,70 M 辺 → 数十 μs,数%エラー) 37
  39. 39. 特に並列分散環境での最短路3. HPC 界隈の話題 38
  40. 40. 会議と話題• HPC 系の会議: SC, ICS, ISCA, …• 話題 (全て並列or分散) – 連結成分分解 – BFS, SSSP (最短路) – Eigenvector (PageRank, HITS) –…特に IBM と LLNL 辺りが力いれてる SC? でバイオリンを弾く 平木先生 39
  41. 41. 並列・分散環境でのグラフアルゴリズムグラフアルゴリズムの性質• ランダムなアクセスパターン• データの再利用がない→ 時間的局所性・空間的局所性の両方が超低い• 並列化はとても難しい – 簡単には逐次を超えられない 40
  42. 42. Graph 500 日本では CRESTスパコンのベンチマーク (超デカいグラフ) のチームの方々• 現在 BFS のみ でやっています• 次に SSSP が入るという噂• 更にその次は極大独立集合• グラフは難しいので,ベンチマークとしては逆に良い – Top 500 の LINPACK は “簡単” ?• 将来の需要も考慮• 現状,アルゴリズム・実装の優劣も大きく影響 – 配られてるリファレンス実装はスケールしない – まだまだアプローチに「決定版」がない – アツい! (しかしスパコンのベンチマークになっているかは謎) 41
  43. 43. 並列 BFS (共有メモリ)並列 BFS の基本アルゴリズム1. キューに始点入れる2. キューが空でない間: ←このループを並列に – キューから頂点 v だす – v に隣接する全頂点で未訪問のものをキューに追加 42
  44. 44. 並列 BFS (共有メモリ) の最適化 [Agarwal+’10]基本• 到達したかのフラグをビットセットに – キャッシュミス減• ロックする前に値みてからロックソケット超えの最適化• ソケットごとにキューを別に (inter-socket queue) – ソケット内での push とソケット外への push を別に – ソケット外から push されたのは後でまとめて処理 – 良い感じの lock-free queue• Inter-socket キューの処理の batching – 何個か頂点まとめて push/pop → 通信を整理
  45. 45. 実験結果 (性能向上) Nehalem-EX 8 コア × 4 ソケット (= 32 コア) [Agarwal+’10, Figure 5]
  46. 46. 分散 BFS (クラスタ) [Buluc+’11]他 繰り返す1 次元分割 × = 隣接行列 距離 i で到達可能な 距離 i+1 で到達可能な 頂点集合 頂点集合 全体全通信が必要となりスケールしない 45
  47. 47. 分散 BFS (クラスタ) [Buluc+’11]他 繰り返す2 次元分割 ■ ■ ■ ■ ■ ■ × = + ■ ■ ■ ■ ■ ■ 隣接行列 距離 i で到達可能な 距離 i+1 で到達可能な 頂点集合 頂点集合 通信が √n 倍程度減る (n はノード数) (しかし,これをベースに頑張り 40K コア使っても, SMP 32 コアの数十倍程度とかだったりしたりしなかったり…?) 46
  48. 48. 終わりです:まとめ• アルゴリズム界隈の話題: 道路ネットワーク – A*, ALT, Highway Dimension, Hub-Labeling• DB 界隈の話題:複雑ネットワーク – Landmark, Core-Fringe Tree-Decomposition• HPC 界隈の話題:並列分散 – ソケット超えの最適化,1D/2D 分割法 ありがとうございました (・__________・)/ 47
  49. 49. 宣伝 48
  50. 50. 宣伝 第二版が出ます!! • 4 つの新トピック – 計算幾何 – 枝刈り探索 – 分割統治法 – 文字列アルゴリズム • 練習問題コーナー • 発展内容コーナー 49
  51. 51. 宣伝 第二版が出ます!! • 4 つの新トピック – 計算幾何 – 枝刈り探索 – 分割統治法 – 文字列アルゴリズム • 練習問題コーナー • 発展内容コーナー よろしくお願いします! 1/27 発売! 50

×