於 WWW論文読み会(webkai) 東京大学 岡崎直観(辻井研究室) 以下のURLに置いてあります ◦ http://www.chokkan.org/www2009/ H. Yan, S. Ding, and T. Suel. (NYU & Yahoo! Research) Inverted index compression and query processing with optimized document ordering, WWW2009, pp. 401-410. 転置リスト(inverted list; posting list) ◦ “直観”: [[56, 1, [34]], [198, 2, [14,23]], [1034, 1, [43]]] 文書ID 頻度 出現位置 d-gapによる転置インデックスの圧縮 ◦ 文書IDの最割り当て アイディア: 文書IDをうまく並べ替えて,転置リスト中の文書ID を互いに近い値にしたい うまい方法: 文書のURLのアルファベット順に文書IDを再割当 ↑「直観」という語はwww.chokkan.orgドメインで頻出する “直観”: [[56, 1, [34]], [57, 2, [14,23]], [60, 1, [43]]] ◦ 文書IDの差分(d-gap)で転置リストを表現 “直観”: [[55, 1, [34]], [0, 2, [14,23]], [2, 1, [43]]] d-gapは小さい値を取るので,圧縮しやすくなる d-gapは0か ら始まる Var-Byte Coding ◦ 表現形式: fddddddd(f: 連結フラグ; d: 値) fが1なら後に続く8bitの数値と連結する ◦ 142 = (10001110)b → 10000001 00001110 ◦ 2 = (10)b → 00000010 ◦ デコードは速いけど,圧縮率が低い Rice Coding ◦ 表現形式: 1q0rrrr…(q個の1の後0,続いてm bitのr) q = int(n / 2m), r = n % 2m m = 4のとき, 142 → (q = 8, r = 14) → 1111111101110 2 → (q = 0, r = 2) → 00010 Var-Byte Codingよりはデコードが遅いけど,圧縮率が良い Simple9 (S9) ◦ 表現形式: ssssdddd dddddddd dddddddd dddddddd 4 bitのステータスコードで,dの箇所に何個の数字が詰まってい るかを表す(以下の9通り) 0000: 0010: 0100: 0110: 1000: 28個の数(1bit),0001: 14個の数(2bit), 9個の数(3bit),0011: 7個の数(4bit), 5個の数(5bit),0101: 4個の数(7bit), 3個の数(9bit),0111: 2個の数(14bit), 1個の数(28bit) ◦ (142 2 17)をS9で表現すると 01100100 01110000 00001000 00100010 ◦ ステータスコードの部分をビットマスクで取り出し,テーブ ルジャンプでデータを読み取れば,高速にデコードできる ◦ S16という拡張は,16通りのデータ表現で圧縮率を向上 PForDelta ◦ 数値をN個ずつエンコードする(例えばN = 128) それらの数値の90%を格納できるビット長bを決める 2b以上の数値は,例外として別に格納する ◦ (23, 41, 8, 12, 30, 68, 18, 45, 21, 9, …)を格納する 90%以上が25 = 32未満とし,m = 5と決定 |1 23 3 8 12 30 1 18 2 21 9 …|… 45 68 41| 先頭の例外位置 これらの数字は5bitで格納 ◦ 高速化のテクニック 例外は4バイトで表現 (逆順に並べる) 異なるb毎にハードコーディングしておく キャッシュに載るようにブロック毎にデコードする Interpolative Coding ◦ 面白いけど省略 PForDelta (PFD) を速度,圧縮率の面で改良する 転置リストに含まれる頻度数値の圧縮方法を提案 ◦ move-to-front codingにインスパイアされた 文書IDを並べ替えることの効果を調べる ◦ TREC GOV2でインデックスのサイズを50%削減 様々な圧縮方法の速度,圧縮率を調べる ◦ 転置リスト毎に圧縮方法を適応的に決める方法を示す TREC GOV2とは ◦ 2004年にクロールされた.govドメインの2520万件の ウェブページと,10万件のクエリ例 NewPFD ◦ 既存のPFDの問題点 オフセットの値が2bに収まりきらないとき,2bよりも小さい数を 例外扱いにして,オフセットのリストを連結しなければならない ◦ 改善法 例外を格納する配列,例外の位置を示す配列を分離させる (23, 41, 8, 12, 30, 68, 18, 45, 21, 9, …)でm=5の場合 下位ビット数値配列: (21 9 8 12 30 4 18 13 21 9 …) 例外オフセット配列: (1 3 1 …) S16でエンコードする 上位ビット数値配列: (9 4 13) OptPFD ◦ デコード速度と圧縮率はトレードオフの関係にある ◦ インデックスのサイズとデコード速度の比が最小になるよう にmを決める(詳細は省略) 単調増加ではないが… ◦ 文書IDをURL順で整列すれば, 似たような頻度が近くに出現 同じドメインのウェブページの単語 頻度分布は似る 先頭移動法 ◦ Move-To-Front (MTF) ◦ Burrows-Wheeler変換(ブロッ クソート)等と組み合わせて, データ圧縮に用いられる Most-Likely-Next (MLN) ◦ Q個の数値に対してQ×Qの行列 を作り,i行j列が,数値iの後に (j+1)番目に出現しやすい数値を 格納しておく ◦ jのインデックス番号のみをエン コードする これらの手法は同一,もしく は似たような頻度の数値が連 続するときに有効 # 値 テーブル 符号 0 (1, 2, 3, 4, 5) () 1 5 (5, 1, 2, 3, 4) (5) 2 5 (5, 1, 2, 3, 4) (5, 1) 3 5 (5, 1, 2, 3, 4) (5, 1, 1) 4 3 (3, 5, 1, 2, 4) (5, 1, 1, 4) 5 2 (2, 3, 5, 1, 4) (5, 1, 1, 4, 4) 6 2 (2, 3, 5, 1, 4) (5, 1, 1, 4, 4, 1) (5, 5, 5, 3, 2, 2)をMTF圧縮する例 J. Chen, L. Subramanian, J. Li. (NYU) RuralCafe: Web Search in the Rural Developing World, WWW2009, pp. 411-420 世界にはWebに繋がりづらい地域がたくさんある ◦ 100-1000人のユーザーが,128Kbpsの帯域を分け合っ ている大学や会社など インドのBPO部門では,50-100人のスタッフが64Kbpsの インターネット回線を共有している ◦ 携帯電話におけるデータ転送よりもSMSのコストが安い ので,SMSベースで検索をやることがある ◦ 巡回インターネット・キオスク アジア,アフリカ,ラテンアメリカの農村部において,バ スなどで巡回しているWiFiインターネット・キオスク ◦ 停電が頻発する地域もある 2009年9月10日 ◦ BBC News (動画有り) http://news.bbc.co.uk/2/hi /africa/8248056.stm ◦ ITMedia News http://www.itmedia.co.jp/n ews/articles/0909/10/news 075.html 伝書鳩 ◦ 4GBのメモリースティックを 装着した生後11ヶ月のハト が,80kmを1時間8分で飛ぶ ◦ コンピュータとメモリース ティック間のデータを転送す る時間を含めても,2時間6 分57秒だった ◦ その間,通信会社大手のテル コムのデータ転送は,4%し か完了しなかった RuralCafeと呼ばれる検索環境を提案する ◦ シンプルな検索インタフェースを提供 従来の検索インタフェースは,断続的なインターネット接 続環境に十分とは言えない ◦ ローカルなキャッシュの検索をサポート ◦ よく用いられる検索フレーズをローカルに保存 ユーザーのクエリは不十分だったり曖昧であることが多い ◦ 断続的なインターネット接続環境の様々なケースに対応 ◦ 検索結果の先読みを行い,ローカルなキャッシュ上で検 索できるように準備する クエリ拡張やクエリ訂正を行う ペーン 検索ジョブの進行状況 を表示するペーン 通常のクエリ,合成クエリ(OR 連結),エンティティ絞り込み検 索(電話番号など) 曖昧(たくさんの短い検索結果が 返される),普通,深い(長めの 少ない検索結果が返される) 「テキストのみ」「テキス トと画像」「全部」 ローカル検索 N-gramによるク エリ拡張・訂正 データ転送制御 S. Ding, J. He, H. Yan, T. Suel. (NYU & Yahoo! Research) Using Graphics Processors for High Performance IR Query Processing, WWW2009, pp. 421-430. 情報検索システムは数千のサーバーでクラスター化 ◦ 1サーバーあたりの速度を向上させることも大切 本研究では,以下のタスクにおいてGPUの利用を考える ◦ 圧縮された転置リストのデコード ◦ 圧縮された転置リストをデコードしながらjoinを取る GPUの利用環境 ◦ NVIDIA GeForce 8800 GTS (640MB; 32 threds) ◦ Compute Unified Device Architecture (CUDA) Inclusive parallel prefix sum ◦ [a0, a1, …, an-1] → [a0, a0+a1, …, a0+a1+…+an-1] Exclusive parallel prefix sum ◦ [a0, a1, …, an-1] → [0, a0, a0+a1, …, a0+a1+…+an-2] 普通に実装すると,並列化が難しい ◦ for (i =1;i <= n;++i) s[i] = s[i-1] + a[i-1] ◦ n回の加算演算でO(n) CUDAによる実装は,以下の資料を参照 ◦ http://developer.download.nvidia.com/compute/cuda/sd k/website/projects/scan/doc/scan.pdf ◦ 2*(n-1)回の加算,(n-1)回のコピーで,O(n) 演算回数は増えているが,32個のスレッドを使うので高速 Rice符号でエンコードさ れたd-gap列から文書ID 列を復元 ◦ Rice符号をデコードしながら Parallel Prefix Sumを取る 文書ID列をd-gap列に変 換しRice符号エンコード ◦ 文書IDs: [143, 146, 164] ◦ d-gaps: [142, 2, 17] ◦ Rice符号 (m = 4 のとき) q系列: 111111110010 r系列: 111000100001 通常のrice符号とは異なり,qとrを 別々のビットストリームに格納 文書ID列のデコード ◦ q系列のデコード まず,q系列を1-bitで構成された 数値列と見なしてparallel prefix sumを計算 [1, 2, 3, 4, 5, 6, 7, 8, 8, 8, 9, 9] 元々のq系列で0が埋められていた 箇所の数字を抜き出して配列に [8, 8, 9] ◦ r系列のデコード 4-bitで構成される数値列と見なし てparallel prefix sumを計算 [14, 16, 17] ◦ 最後にまとめる [8*24+14+1, 8*24+16+2, 9*24+17+3] = [143, 146, 164] Rice符号 ◦ GPUよりもCPUの方が若干高速だった ◦ ただし,CPUはd-gapから文書IDの復元を行っていない のに対し,GPUでは同時に行っている PForDelta ◦ CPUよりもGPUの方が高速だった 基本的なアイディア ◦ 2つの転置リストをマージするとき,分割要素を適当に決め て,転置リストをセグメントに分割する ◦ 分割されたセグメント同士でリストのマージを並列に行う 実際には,転置リストを2分割する処理を分割統治で 再帰的に行い,セグメントを細分化してマージする スキップポインタを用いた集合和・積 GPUを用いた並列スコア計算 ◦ 今回の実験ではBM25を利用している GPUを用いたtop-k文書選択 OR検索のサポート ◦ Term-At-A-Time (TAAT)で文書ID毎にスコアを計算 CPUとGPUを上手く組み合わせるスケジューリング
© Copyright 2024 ExpyDoc