IIR輪講復習 #4 Index construction

Slides:



Advertisements
Similar presentations
Ddによる複製 2004/05/24 伊原 秀明(Port139).
Advertisements

IIR輪講復習 #2 The term vocabulary and postings lists
MPIを用いたグラフの並列計算 情報論理工学研究室 藤本 涼一.
Windows HPC Server を使ってみる
区間グラフにおける区間表現からMPQ-treeを効率よく構成するアルゴリズム
4.3 マージソート.
情報検索概説II 第8回 パソコン組み立てと記憶装置 1999/11/25.
計算機工学III オペレーティングシステム #14 ファイル: より進んだファイルシステム 2006/07/21 津邑 公暁
Chapter11-4(前半) 加藤健.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Webアプリケーション開発の 基本的なポイント
LZ圧縮回路の設計とハード・ソフト 最適分割の検討 電子情報デザイン学科 高性能計算研究室 4回生 中山 和也 2009/2/27.
入 出 力 管 理 オペレーティングシステム 6/26/09.
Android と iPhone (仮題) 情報社会とコンピュータ 第13回
ラベル付き区間グラフを列挙するBDDとその応用
近似アルゴリズム 第10章 終了時刻最小化スケジューリング
全体ミーティング (4/25) 村田雅之.
「Self-Organizing Map 自己組織化マップ」 を説明するスライド
報告 (2006/9/6) 高橋 慧.
情報知能学科「アルゴリズムとデータ構造」
検索エンジンに関して The Anatomy of a Large-Scale Hypertextual Web Search Engine
P,Q比が変更可能なScaLAPACKの コスト見積もり関数の開発
記 憶 管 理(2) オペレーティングシステム 第10回.
データ構造とアルゴリズム 分割統治 ~ マージソート~.
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
LogStructuredFileSystem Servey
IIR輪講復習 #5 Index compression
メモリ管理 4.3, 4.4 章 さだ.
二分探索木によるサーチ.
IIR輪講復習 #1 Boolean retrieval
過負荷時の分散ソフトウェアの 性能劣化を改善する スケジューリングの提案
MPIによるwavからmp3圧縮の検証 情報論理工学研究室 04‐1‐47‐200 木村 惇一.
高速剰余算アルゴリズムとそのハードウェア実装についての研究
SPARS-J デモ 山本哲男 立命館大学 情報工学部 2018/12/1 SPARS-J デモ.
IIR輪講復習 #10 XML retrieval
定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻
リモートホストの異常を検知するための GPUとの直接通信機構
IIR輪講復習 #17 Hierarchical clustering
IIR輪講復習 #3 Dictionaries and tolerant retrieval (前半)
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
知識情報演習Ⅲ(後半第3回) 辻 慶太
コンピュータの基本構成について 1E16M001-1 秋田梨紗 1E16M010-2 梅山桃香 1E16M013-3 大津智紗子
通信機構合わせた最適化をおこなう並列化ンパイラ
実行時情報を用いて通信を最適化するPCクラスタ上の並列化コンパイラ
先進的計算基盤システムシンポジウム SACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」
Data Clustering: A Review
数独の解生成と 解に対する番号付け 理学部 情報科学科 渡辺研究室 戸神星也.
知識情報演習Ⅲ(後半第3回) 辻 慶太
同志社大学工学研究科 知的システムデザイン研究室 修士2年 中尾昌広
コンピュータの仕組み 〜ハードウェア〜 1E15M009-3 伊藤佳樹 1E15M035-2 柴田将馬 1E15M061-1 花岡沙紀
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
Peer-to-Peerシステムにおける動的な木構造の生成による検索の高速化
第4章 識別部の設計 4-5 識別部の最適化 発表日:2003年5月16日 発表者:時田 陽一
ナップサック問題 クマさん人形をめぐる熱いドラマの結末.
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
Data Clustering: A Review
第4回 メモリ管理 主記憶(メインメモリ)の管理 固定区画方式と可変区画方式 空き領域の管理 スワッピング.
ISO23950による分散検索の課題と その解決案に関する検討
パターン認識 ークラスタリングとEMアルゴリズムー 担当:和田 俊和 部屋 A513
「マイグレーションを支援する分散集合オブジェクト」
卒業研究 JCSPを用いたプログラム開発  池部理奈.
表紙 分散遺伝的アルゴリズムのための 新しい交叉法.
MPIを用いた 並列処理 情報論理工学研究室 06‐1‐037‐0246 杉所 拓也.
分散メモリ型並列計算機上での行列演算の並列化
JXTA総まとめ P2P特論 最終回 /
ベイジアンネットワークと クラスタリング手法を用いたWeb障害検知システムの開発
Ibaraki Univ. Dept of Electrical & Electronic Eng.
TList リスト構造とは? 複数のデータを扱うために、 データの内容と、次のデータへのポインタを持つ構造体を使う。
プログラミング論 バイナリーサーチ 1.
Presentation transcript:

IIR輪講復習 #4 Index construction

お知らせ たつをさんによる補足情報 復習資料おきば http://chalow.net/clsearch.cgi?cat=IIR http://bloghackers.net/~naoya/iir/ppt/

参考 http://www-csli.stanford.edu/~hinrich/information-retrieval-book.html 本資料は書籍の輪読会に向けたサマリ 資料内で一部上記ドキュメントからの引用あり

4章のテーマ インデックス構築に関する実装面の話題 扱う手法 巨大なインデックスをどう構築するか 主にソートの話題 ハードウェアの制限とインデクシングアルゴリズムの関係 扱う手法 BSBI, SPIMI Distributed Indexing (MapReduce) Dynamic Indexing (logarythmic merging)

検索とハードウェア

検索システムとハードウェア 検索システムの構成はハードウェアの特徴に依存する 速度 ディスクは遅い、大きい メモリは速い、小さい メモリ: 5 x 10^-9 sec / byte ディスク: 2 x 10^-8 sec / byte

2007年における典型的な数字

ディスクの読み書き ヘッドのシーク時間が支配的 CPU処理とI/O処理のオーバーラップ ひとつの塊なら 10MB を 0.2 sec 隣接させて読み書きしよう CPU処理とI/O処理のオーバーラップ 圧縮して読み書きすると良い時がある

BSBI

インデックス作成時の問題点 インデックス作成 term, docID ペアを集める docID → postings list として組織化 巨大だとメモリだけでは処理できない → ディスクI/Oが発生するため遅い

ディスクを使うなら 外部ソート ソート中のランダムなディスクのシーク回数を最小化する なるべくシーケンシャルに読む

BSBI blocked sort-based indexing コレクションを等しいサイズに分割 各断片の termID, docIDs ペアをインメモリでソート (単語 → termID のマッピングが必要) 中間のソート結果をディスク上に保存 最後に中間ファイルをマージ

BSBI

BSBIのポイント メモリブロックでディスクI/Oを最適化 ディスクのブロックサイズと同じ(もしくは整数倍) の固定サイズのメモリブロックに結果を書き出す メモリブロックが一杯になったらディスクに中間ファイルとして出力 新しいメモリブロックを用意 最後に中間ファイルをマージ 優先度付きキューなどを使うと良い。

BSBIの図

BSBIの複雑度 Θ(T log T) ソート処理に依存 ただし、全体の処理は PARSENEXTBLOCK と最後のマージ (MERGEBLOCKS) が支配的

SPIMI

BSBIの欠点 単語 → termID マップが必要 巨大なコレクションではこのマップがメモリにフィットしない

SPIMI single-pass in-memory indexing ディスク容量が許す限りどんなサイズでもインデクシングできる termID は使わない term, docID ペアをストリームで処理 ブロック毎に辞書も書き込む ディスク容量が許す限りどんなサイズでもインデクシングできる

SPIMI

SPIMI のポイント BSBI と前処理、後処理は似ている BSBI が termID, docID ペア全体をインメモリで扱うのに対し、SPIMI は term, docID をストリームで 各postings list のサイズは最初には見積もることができない → 足りなくなったら倍々に増やす

BSBI と SPIMI の違い SPIMI は a posting を postings list に直接追加する ソートがないため高速 termID が必要ないのでメモリを節約できる 単一のブロックでの処理比較は SPIMI の方が効率が良い

SPIMI の複雑度 Θ(T) BSBI は Θ(T log T) ソートが要らない ほとんどのオペレーションがコレクションサイズに対して線形

Distributed Indexing

分散インデックス WWW検索規模などでは、インデクス構築は単一マシンでは時間、サイズともに実現が難しい 計算機クラスタでのインデクス構築 ∴ 分散インデックス

partitioned index インデックス全体を docID か termID のどちらかを軸に分割する term partitioned index, document partitioned index

MapReduce Google の分散インデックス構築システム 計算機クラスタによる並列計算 並列計算をするための分散ハードウェア環境と、ソフトウェア環境 コモディティなマシンで構成 「100 ~ 1000台」 計算途中でノードが壊れても自律的に復旧

Map と Reduce マスタノードがワーカー群に指示 ワーカーの役割 Map Reduce ワーカーはどちらにでもなり得る

Map key, value ペアを別の key, value ペアにする {docID, 文書}, {docID, 文書} ... → {term, docID}, {term, docID}, {term, doc} ... できあがった key, value ペアは中間ファイル”群” (segment files) として保存する ファイル1 a-f: {apple => 1}, {apple => 2} ... ファイル2 g-p: {hatena => 1}, {naoya => 2} ... ファイル3 q-z: {tatuwo => 5}, { unix => 5} ...

Reduce Map がはき出した sefment files から、同じ key の key, value ペアを集めて所望の出力を作る {“apple”, 1}, {“apple”, 5}, {“apple”, 6} → apple => [1, 5, 6] (すなわち term => postings list)

マスタノード Map や Reduce を実行するノードを管理 与えられた入力を断片に分割、これを空いているなワーカーに振り分ける 中間ファイルはネットワークI/Oを最小化するため、Map ノードのローカルに。

MapReduce

MapReduce ほか 完成した分散インデックスからの検索 document partitioned index フロントエンドから複数の検索サーバーに並行して問い合わせて、結果をマージする document partitioned index term partitioned index を document partitioned index に変換するのも MapReduce の役割 MapReduce は汎用的な並列計算クラスタ MapReduce のアーキテクチャに適合する多用な問題を解くことができる

Dynamic Indexing

Dynamic Indexing 更新があまりないドキュメント群 更新が多いドキュメント群 スクラッチからインデックスを作り直す スクラッチからビルド? Dynamic Indexing 補助インデックス + メインインデックス

補助インデックス + メインデックス 補助インデックス 補助インデックスが追加によって大きくなりすぎたら、メインインデックスへマージ インメモリ、追加可能 検索は両方のインデックスに行い、マージ 削除は Invalidation bit vector + フィルタ 更新 = 削除 + 追加 補助インデックスが追加によって大きくなりすぎたら、メインインデックスへマージ

インデックスのマージ マージのコスト: インデックスの保存形態に依存 各 postings list 毎にファイル: ○ マージは簡単 × ファイルシステムは大量のファイルを効率的に扱うことができない postings list を一つのファイルに × マージが大変 ○ postings list が大量になっても処理できる

Logarithmic merging マージ T/n 個の posting をマージ → Θ(T^2 / 2) T postings の合計数 Logarithmic merging アルゴリズム Θ(T^2/n) → log( T log(T/n) )

Logarithmic merging

Logarithmic merging n個の postings を扱うインメモリのインデックス Z0 Z0 が一杯 → ディスク上に 2^0 * n 個の I0 次に Z0 が一杯 → 2^1 x n 個の Z1 Z0 + I0 → Z1 Z1 I1 がなければ I1 としてソート I1 があったら Z2 にマージ ... (繰り返し)

複数インデックスの欠点 正確な統計情報が単純な探索では分からなくなる (検索ヒット数など) スペル訂正アルゴリズム、ranked retrieval などに影響 実際の Dynamic Indexing はもっと複雑 大きなサーチエンジンではスクラッチからの再構築が使われることも多い 最近は Dynamic Indexing も?

まとめ 検索システムの設計は対象のドキュメント群のサイズとハードウェアの性質に依存 ドキュメントが少い → 力業でシンプルに メモリとディスクの性能のギャップ ドキュメントが少い → 力業でシンプルに 多少多くても単一マシンで処理できる程度 → BSBI や SPIMI が有効 複数サーバーが必要とされるような大規模な問題となるとパラダイムが変わる。MapReduce。 別の軸の問題として、インデックスの再構築問題がある 定期的なスクラッチからの再構築 Dynamic Indexing