Upgrade to Pro — share decks privately, control downloads, hide ads and more …

グラフ分析ナイト(エンジニア向け) - Azure での大規模非構造データの解析によるグラフ化

iwashi++
February 12, 2020

グラフ分析ナイト(エンジニア向け) - Azure での大規模非構造データの解析によるグラフ化

グラフ分析ナイトでの発表資料です.
https://dllab.connpass.com/event/159148/

iwashi++

February 12, 2020
Tweet

More Decks by iwashi++

Other Decks in Programming

Transcript

  1. Copyright © PERSOL PROCESS & TECHNOLOGY CO., LTD. All Rights

    Reserved. グラフ分析ナイト(エンジニア向け) Azure での⼤規模⾮構造データの解析によるグラフ化 パーソルプロセス&テクノロジー株式会社 ⾼橋 達哉 16/07/01
  2. Copyright © PERSOL PROCESS & TECHNOLOGY CO., LTD. All Rights

    Reserved. 1、本⽇お話すること • まず初めに,グラフの活⽤事例についてお話しします. • 次に,巨⼤グラフを扱うときのシステム的なテクニックについてお話しします. 2 1,事例のご紹介 2,システム的なテクニック
  3. Copyright © PERSOL PROCESS & TECHNOLOGY CO., LTD. All Rights

    Reserved. 2、⾃⼰紹介 • ⾼橋 達哉(たかはし たつや) • Twitter: iwashi++(@iwa_sheep) • パーソルプロセス&テクノロジー株式会社 • 4⽉から社会⼈⼤学院⽣(CS) – マルチモーダル系の研究 3
  4. Copyright © PERSOL PROCESS & TECHNOLOGY CO., LTD. All Rights

    Reserved. 3、事例1 国⽴がん研究センター 課題 4 • AMED事業の1つである,⾰新がん研究を促進する国⽴がん研究センターとの共同研究開発事例[1]です. • 研究者ネットワークのグラフを作成し,解析を⾏いました. 課題 • どれだけ優れた新薬の研究を⾏っても, それを⽬的の臓器に届けることができな ければ効果が発揮できない. • 医学系とは異なる研究者の知⾒を取り⼊ れたデリバリー技術が必要になる.その ために専⾨外領域についての研究を理解 し,その研究者を知らなければならない が,それは容易いことではない. 原因 • ⾰新的な異分野融合は,思いも寄らない ⼈と繋がることで起こることが少なくな い.論⽂データベースや検索サービスは 世の中にたくさんある.しかし,それら は⽬的の情報を探すことには有効だが, 思いも寄らない繋がりを発⾒することは できない. [1]論⽂などから研究者どうしの関係性を可視化する「AI マッピング システム」を開発、異分野融合の促進で⾰新的がん医療の実⽤化を⽀援 https://customers.microsoft.com/en-us/story/748715-national-cancer-center-healthcare-azure-jp-japan
  5. Copyright © PERSOL PROCESS & TECHNOLOGY CO., LTD. All Rights

    Reserved. 3、事例1 国⽴がん研究センター 提案⼿法 5 • 従来の引⽤・被引⽤や,共著でのネットワークではなく,論⽂の内容から関⼼の近さでネットワークを作成 しました.最終的には1,000万ノード,5億エッジになりました. [2] 参考⽂献 Haipeng Sun et al., 2019. Bilingual Word Embedding: A Survey from Supervised to Unsupervised Mikel Artetxe et al. 2018.A robust self-learning method for fully unsupervised cross-lingual mappings of word embeddings 1,論⽂からtf-idf(OKAPI BM25) で特徴語を抽出 2,著者にタグ付けをする 1st Author 2nd 3rd Last 1st Author 2nd 3rd Last 3,⽇本語の類義語モデルと,英語の類 義語モデルを作成し,それらをBWE (Bilingual word embedding)[2]により 同⼀の潜在空間に埋め込む. Japanese English 4,著者関連タグと,タグ類似タグを著者に紐づけ, jaccard係数(MinHash)によるマッピングを⾏う. 著者タグ 類似 類似スコア
  6. Copyright © PERSOL PROCESS & TECHNOLOGY CO., LTD. All Rights

    Reserved. 3、事例1 国⽴がん研究センター 期待される効果 6 • 期待する効果として,テキストマイニングによる研究者ネットワークをグラフで表現し,下記図[3]のような 潜在的な関係性の発⾒をすることが挙げられます. [3]情報の価値化・知識化技術の実現へ向けて : 3.テキストマイニングによる潜在的知識の発⾒⽀援 https://ipsj.ixsq.nii.ac.jp/ej/?action=pages_view_main&active_action=repository_view_main_item_detail&item_id=65870&item_no=1&page_id=13&block_id=8
  7. Copyright © PERSOL PROCESS & TECHNOLOGY CO., LTD. All Rights

    Reserved. 3、事例1 国⽴がん研究センター システム構成図 7 [monitor] Monitor Application [Master DB] Store Master Data. [prep] Text Cleaning [Analysis] We analyze research paper by distributed cluster- computing. Azure Blob Storage Azure Databricks Azure SQL Database Azure COSMOS DB Azure Web Apps Import Azure Container Registry Import Azure Virtual Machine Azure Virtual Machine BULK Azure Web Application Firewall Azure DevOps Services Azure Application Insights [Bulk Insert] Using same region VM . BULK [Graph DB] Use for find shortest path. AMED Data Notify
  8. Copyright © PERSOL PROCESS & TECHNOLOGY CO., LTD. All Rights

    Reserved. 3、事例1 国⽴がん研究センター なぜグラフ(グラフDB)か? 8 • 潜在的な繋がりを発⾒するにあたり,関係者の関係者の関係者の・・・と追っていく時に,RDBだとネスト が深くなりパフォーマンスも劣化するが,ノードとエッジのシンプルなグラフ構造だと追いやすいです. • 経路検索やネットワーク中⼼性を計算する時にも,グラフ構造であると計算がしやすいかつ,グラフDBを利 ⽤することにより,簡単なトラバーサルの記述で実装できるので実装コストが⼤幅に短縮できます. 引⽤:グラフデータベースとは何か 〜ネットワーク状のデータ構造から瞬時に情報を検索するDBを解説 https://www.imagazine.co.jp/12805-2/
  9. Copyright © PERSOL PROCESS & TECHNOLOGY CO., LTD. All Rights

    Reserved. 3、事例1 国⽴がん研究センター なぜグラフ(グラフDB)か? 9 • 今回の例で⾔うと,任意の研究者の最初の繋がりはやはり共著の研究者が多く出る傾向にありましたが,そ れより深くネットワークを広げることにより,潜在的な繋がりを発⾒しやすくなりました.従来のRDB的な, 1:1, 1:多でのリレーションでは表現が難しいです. 潜在的な繋がり 既知の繋がり (共著など)
  10. Copyright © PERSOL PROCESS & TECHNOLOGY CO., LTD. All Rights

    Reserved. 3、事例1 国⽴がん研究センター なぜグラフ(グラフDB)か? 10 • リアルタイムな経路検索を⾏い,研究者間の繋がりを表⽰し,繋がりの根拠を表⽰することにより,繋がり の納得性と新薬創製プロジェクト組成時の根拠の⼀部として⽤いることができる. ⼤規模な複雑ネットワークから,任意の研究者間の最短経路(実質は,関係性がより強い順の経路)をリアルタイムに算出・可視化
  11. Copyright © PERSOL PROCESS & TECHNOLOGY CO., LTD. All Rights

    Reserved. 3、事例1 国⽴がん研究センター なぜグラフ(グラフDB)か? 11 • 当初はRDBにデータを蓄積し,可視化しようと検討していた.グラフ構造の場合とデータの本質的な差異は ないのだが,表現の仕⽅の直感的なわかりやすさ,経路検索やネットワーク中⼼性の計算のしやすさから, グラフ構造かつグラフDBを選択した,これは使う側の⽬的によって取捨選択するべきである. 研究者 関連性のある研究者 関連度 A B 1 B' 0.7 B'' 0.2 B C 1 C' 0.7 C'' 0.2 C D 1 D' 0.7 D'' 0.2 A B C D RDB的な表現 グラフ的な表現 Bʼ Bʼʼ Cʼ Cʼʼ Dʼ Dʼʼ AとDが潜在的に繋がっていることは,グラフ表現の⽅が直感的にわかりやすい
  12. Copyright © PERSOL PROCESS & TECHNOLOGY CO., LTD. All Rights

    Reserved. 3、事例1 国⽴がん研究センター デモ 12
  13. Copyright © PERSOL PROCESS & TECHNOLOGY CO., LTD. All Rights

    Reserved. 4、事例2 社員エンゲージメント分析 概要 13 • 会社内コミュニケーションツール(Teams)のパブリックチャンネルの発⾔を解析しています[4]. • 社員同⼠の関係性をグラフ化し,可視化して⽰唆を得たり,グラフ解析を⾏なっていたりします[5]. [4]Microsoft Teams Scraping https://qiita.com/iwashi-kun/items/f0cfc2a00b5c9b885bcc [5]社内のConfidential情報が多く,実際の画⾯やデータをお⾒せすることはできません.また今は限定的に⼀部の⼈物に対しての許諾を経てその⼈物を対象に⾏なっています.
  14. Copyright © PERSOL PROCESS & TECHNOLOGY CO., LTD. All Rights

    Reserved. 4、事例2 社員エンゲージメント分析 背景 14 • 中規模組織の中で,組織を超えた情報の共有がほとんど⾏われていないという問題がありました. • その他にもタレントマネジメントの⾃動化,退職予測の精度向上などを⽬指しています. 課題 原因 • 組織の中で類似サービス・ソリューショ ンのカニバライゼーションが発⽣してい る. • 組織を横断したタレントマネジメントが できていない. • 組織の中で次のキャリアを模索できずに 退職していく社員の増加. • 部署間の連携が薄く,営業も⾃部⾨の商 材の理解にとどまっている. • 任意の管理者が把握できる社員のスキ ル・適正の量には限界がある.タレマネ システムは導⼊しているが,活⽤する⾵ ⼟がない(スキルが棚卸しされていな い).
  15. Copyright © PERSOL PROCESS & TECHNOLOGY CO., LTD. All Rights

    Reserved. 4、事例2 社員エンゲージメント分析 提案⼿法 15 • Teamsのパブリックチャンネルの情報を解析し,発⾔の内容,いいね・返信の関係,発⾔数などの情報から社員 をn次元のベクトルに変換し,距離の近さからedgeを張っています. ・Pythonに関⼼がある ・社員Bによく返信している ・発⾔数多め ・arxiv.orgホストのリンクをよく投稿している ・Web系の話題のチャンネルの発⾔によくいいねをしている 例)任意の社員A
  16. Copyright © PERSOL PROCESS & TECHNOLOGY CO., LTD. All Rights

    Reserved. 4、事例2 社員エンゲージメント分析 施策1 スキルマネジメント 16 • 発⾔・いいね対象の内容から,実務とは関係ない領域からも個⼈の関⼼のあるスキルを可視化できます. • スキルをノードとしておくことにより,スキルを主語としたスキルに関⼼の強い社員を部署横断で検索できます. [6]実際には,部署ごとの予算や経費があるため,部署を横断してプロジェクトを組成することは多くない.会社制度から⾒直す必要がある. データ サイエンス • ⾃⾝周りのネットワークを調べることで,⾃⾝が思い もよらなかった⼈との繋がりと新たな関⼼の創出->エ ンゲージメント増加へとつなげている. • 部署横断の社内交流会(ランチ)を実施するときに, 関⼼の近そうな⼈材を集めている. • 部署をまたいだタレントマネジメントが⾏える.プロ ジェクト組成時に部署内リソースを超えてテクノロ ジーカットで⼈材をアサインすることが可能になる [6]. 具体施策 画像 解析 CNN Kaggle MLOps
  17. Copyright © PERSOL PROCESS & TECHNOLOGY CO., LTD. All Rights

    Reserved. 4、事例2 社員エンゲージメント分析 施策2 ネットワーク中⼼性 17 • 社員ネットワークを対象とした,全社員の媒介中⼼性を計算する. • そこから話題の中⼼(ハブ)⼈物を特定したり,コミュニティ分割を⾏い⽰唆を得ています. [引⽤]グラフ・ネットワーク分析で遊ぶ(4):コミュニティ検出(クラスタリング) https://tjo.hatenablog.com/entry/2015/12/14/190000 • 技術リーダーの候補などを探す場合に,媒介中⼼性の ⾼い社員を候補として⾒ている. • コミュニティ分割により,部署配置を最適化する上で の⼀つの指標として⽤いることができる. 具体施策
  18. Copyright © PERSOL PROCESS & TECHNOLOGY CO., LTD. All Rights

    Reserved. 4、事例2 社員エンゲージメント分析 施策3 グラフ畳み込みと予測 18 • 社員グラフを畳み込み関係性を特徴量に加え,退職者の予測などを⾏なっています. • 退職予測に関しては勤怠などのデータも併せて解析しています. • 退職者との関係性の近さが,退職予測の精度に寄与す るという仮説を⽴てて⾏なっている. • まだ実現できていないが,SNSの投稿やエントリー シートの内容からこのグラフ上に表現し,将来的なパ フォーマンスを予測を⾏うなどの試作も検討している. 具体施策 A B C D Bʼ Bʼʼ Cʼ Cʼʼ Dʼ Dʼʼ 退職者
  19. Copyright © PERSOL PROCESS & TECHNOLOGY CO., LTD. All Rights

    Reserved. 5、巨⼤グラフをAzureで実現 グラフDB 19 • AzureでグラフDBを利⽤する場合,IaaSに任意のDBサーバーを⽴てるか,SQL Database, COSMOS DBという選択肢があります. 管理 OSレベルでの管理 PaaSなので⼿軽 PaaSなので⼿軽 クエリ DBサーバーによる(Neo4jならCypher) 独⾃のSQL構⽂ Gremlin スケー ル VMのスケールとDBサーバーの設定変更 ポータルで設定変更 ポータルで設定変更 価格 中(VMの価格) 中 ⾼ 経路検 索 match (start:L_Station {name:"品川"}), (end:L_Station{name:"新宿"}), path = shortestPath((start)-[:Line*]-(end)) return path with cte as ( select S.駅名 as 発駅, E.駅名 as 着駅, cast(R.距離 as decimal(10, 1)) as 距離, R. 分, cast(concat(S.駅名, '-', E.駅名) as nvarchar(max)) as ルート, 1 as cnt from G_駅 S, G_路線 R, G_駅 E where match (S - (R) -> E) and S.駅名 = N'新宿' union all select cte.着駅, E.駅名, cast(cte.距離 + R.距離 as decimal(10, 1)), cte.分 + R.分, cast(concat(cte.ルート, '-', E.駅名) as nvarchar(max)), cte.cnt + 1 from cte, G_駅 S, G_路線 R, G_駅 E where cte.着駅 = S.駅名 and match (S - (R) -> E) and charindex(E.駅名, cte. ルート) = 0 ) select top(1) cte.ルート , cte.距離 , cte.分 , cte.cnt from cte where cte.着駅 = N'新宿' order by cte.距離 g.V(). has(""station"", ""name"", ""品川 "").emit().repeat(bothE(""connectedTo"").otherV().sim plePath()).until(has(""name"", ""新宿 "").or().loops().is(eq(6))).has(""name"", ""Marble Arch"").path().unfold().hasLabel(""station"") [参考] SQL Server 2019では,グラフ機能が⼤幅にアップデートされているのでぜひ体験して⾒てください. https://www.sqlshack.com/graph-database-features-in-sql-server-2019-part-1/
  20. Copyright © PERSOL PROCESS & TECHNOLOGY CO., LTD. All Rights

    Reserved. 5、巨⼤グラフをAzureで実現 COSMOS DB + Gremlin 20 • AzureでCOSMOS DBで巨⼤なグラフを実現しようとすると,綿密なパーティション設計と膨⼤なコス トがかかるためあまり現実的ではありません. [参照] Cosmos DB のパーティショニング https://sqlazure.jp/b/cosmosdb/cosmic/2861/ COSMOS DBのパーティションについて • 物理パーティションはCOSMOS DBによって 勝⼿に決められ,論理パーティションは,1 パーティション内で10GB以内に収まるよう に⾃由に作れる. • 1,000万ノード,5億エッジのデータを, 50,000RU+500GBで利⽤しようとすると, おおよそ\383,740/Monthの⾦額がかかる (2020/02/12 現在).
  21. Copyright © PERSOL PROCESS & TECHNOLOGY CO., LTD. All Rights

    Reserved. 5、巨⼤グラフをAzureで実現 COSMOS DB + Gremlin 21 • それでもCOSMOS DBで実現したいのであれば,必ずデータはBulk Executorを利⽤すること. [参照] Azure Cosmos DB Bulk Executor ライブラリの概要 https://docs.microsoft.com/ja-jp/azure/cosmos-db/bulk-executor-overview • 必ずCOSMOS DBと同⼀リージョンのVMから実⾏してくださ い. • 私の実験結果では,1,000万ノード5億エッジのデータを, 10,000RUのCOSMOS DBにINSERTしたときは32時間ほどで 終了しました. • 429(リクエスト過多)エラーを⾃動でキャッチアップしてく れるので便利です.
  22. Copyright © PERSOL PROCESS & TECHNOLOGY CO., LTD. All Rights

    Reserved. 5、巨⼤グラフをAzureで実現 多種のDB・ストレージを組み合わせる 22 • 国⽴がん研究センターでのプロジェクトでは,マスタデータ・トランザクションデータはSQL Database,ノードとエッジのデータはAzure Storageに格納し,パフォーマンスを維持したままコス ト削減を達成しました. • 関係性の表⽰やネットワークの拡⼤はストレージから取得し,リアルタイムに取得したデータを COSMOS DBにINSERTします.そして表⽰されたネットワークの中での経路検索などのクエリを COSMOS DBで実⾏しています. • パーティションはユーザーごとに設定しています. • 現在プレビュー機能として,RUを⾃動スケールする[7]ものが選択可能です. [7]オートパイロット モードで Azure Cosmos のコンテナーとデータベースを作成する (プレビュー) https://docs.microsoft.com/ja-jp/azure/cosmos-db/provision-throughput-autopilot
  23. Copyright © PERSOL PROCESS & TECHNOLOGY CO., LTD. All Rights

    Reserved. 6、まとめ 23 • 国⽴がん研究センターでのプロジェクトでは,研究者ネットワークをグラフで表現し,潜在的な繋が りを発⾒しようとした. • なるべくインフラ構築の⼿間を減らしてコア業務に専念したかったので,Graph DB含めPaaSをメイ ンに構築した. • ⼤量グラフデータをCOSMOS DBに登録するのはあまり現実的ではない.RDBやストレージと併⽤し て利⽤すると良い. • 社内のデータドリブンな⼈事戦略として,社員ネットワークをグラフで表現している. • 社員グラフの活⽤経路は多く,主にタレントマネジント施策に組み込もうとしている. [7]オートパイロット モードで Azure Cosmos のコンテナーとデータベースを作成する (プレビュー) https://docs.microsoft.com/ja-jp/azure/cosmos-db/provision-throughput-autopilot