9장 병렬 및 분산 정보검색 목차 9.1 소개 9.2 병렬 정보 검색 9.3 분산 정보 검색(Distributed IR) 9.4 연구 동행 및 쟁점 9.5 참고 문헌 고찰 최신정보검색론 Chapter9
9.1 소개 9.1.1 병렬 컴퓨팅 병렬 컴퓨팅(parallel computing) 동시적인 응용 - 단일 문제를 해결하기 위한 멀티 프로세서들의 동시적인 응용 - 각 프로세서는 해당 문제의 한 부분을 줄이기 위해 동작 최신정보검색론 Chapter9
9.1.1 병렬 컴퓨팅(계속) Flynn – 일반적인 병렬구조 4가지 분류를 정의 - SISD: 단일 명령어 스트림(single instruction stream) 과 단일 데이터 스트림(single data stream) - SIMD: 단일 명령어 스트림(single instruction stream) 과 다중 데이터 스트림(multiple data stream) - MISD: 다중 명령어 스트림(multiple instruction stream) - MIMD: 다중 명령어 스트림(multiple instruction stream) 최신정보검색론 Chapter9
9.1.2 성능 측정 측정 기준 정의 Amdah의 법칙 S= 효율성 - 주어진 문제에 대한 최대 속도 향상은 f(연속적으로 처리 되어야 하는 비율)에 관련 효율성 최고 순차 알고리즘의 실행시간 S= 병렬 알고리즘의 실행시간 S:속도향상 N:프로세서의 수 S:속도향상 N:프로세서의 수 =1 일때 이상적인 효율 최신정보검색론 Chapter9
9.2 병렬 정보 검색 9.2.1 서론 병렬 정보검색 알고리즘의 개발 방향 - 첫번째 가능성: 병렬 구현에 직접 적용 가능한 새로운 검색 기법을 개발 예) 신경망(neural network) 위에서 동작하는 텍스트 탐색 절차 - 두번째 가능성: 잘 연구된 기존의 정보 검색 알고리즘을 병렬 처리에 적용 최신정보검색론 Chapter9
9.2.2 MIMD 구조 MIMD 구조 - 문제를 해결하기 위해 제공해야 하는 병렬성에 융통성을 제공 최신정보검색론 Chapter9
9.2.2 MIMD 구조(계속) 다중 프로세서 분산-질의 응답시간 향상 최신정보검색론 Chapter9
9.2.2 MIMD 구조(계속) 데이터의 분할 방법 1) 문헌 분할(document partitioning) 방법 - 데이터 행렬을 수평으로 나누어 서브 태스크의 문헌들로 나누는 것 2) 용어 분할(term partitioning) 방법 - 데이터 행렬을 수직으로 나누는 것 최신정보검색론 Chapter9
9.2.2 MIMD 구조(계속) 정보 검색 처리 일반적으로 데이터 당 처리율 특성으로 나타냄 어떻게 처리 작업을 분할할 것인가는 어떻게 데이터를 분할할 것인가로 축약 색인항목 [그림 9.3] 검색 알고리즘에 의해 처리되는 기본 데이터 요소 문 헌 [그림 9.3] 검색 알고리즘에 의해 처리되는 기본 데이터 요소 최신정보검색론 Chapter9
9.2.2 MIMD 구조(계속) <역파일> 논리적 문헌분할 데이터 분할 – 기본적인 역파일 색인을 사용 term i P0 P1 term i [그림 9.4] 문헌 분할을 위해 확장된 사전 엔트리 P2 P3 [그림 9.4] 문헌 분할을 위해 확장된 사전 엔트리 최신정보검색론 Chapter9
9.2.2 MIMD 구조(계속) <역파일> 물리적 문헌 분할 - 각 부분 컬렉션은 자신만의 역파일을 가짐 - 검색프로세스는 질의 처리 과정에서 어떠한 것도 공유하지 않음 - 질의가 시스템에 제기되면 분배기는 병렬 검색 프로세스 에 질의 분배 - 각 병렬 검색 프로세스는 지역적인 중간 적중 리스트 (local intermediate hit-list)를 생성 - 분배기는 모든 병렬 검색 프로세스로부터 중간 적중 리스트를 모으고 최종적인 적중 리스트로 병합 최신정보검색론 Chapter9
9.2.2 MIMD 구조(계속) <역파일> 용어 분할(Term Partitioning) - 역파일 기반 시스템에 사용될 때, 논리적 문헌 분할을 위한 병렬 구성 기술을 이용하면 단일 역파일 생성 - 역리스트는 프로세서에 분산 - 질의는 색인 항목으로 분해되고 각각의 색인 항목은 관련된 역리스트를 가지는 프로세서에 보내짐 - 프로세서는 부분적인 문헌 평가를 가지는 적중 리스트를 생성하여 분배기에 전달 - 분배기는 질의의 의미에 따라 적중 리스트들을 결합 최신정보검색론 Chapter9
9.2.2 MIMD 구조(계속) <접미사 배열> 접미사 배열에 대한 용어 분할 - 단일 접미사 배열을 다중 프로세서에 분배하는 형태 - 각 프로세서가 접미사 배열의 사전 어휘순 일정 부분을 책임지도록 함 - 질의 처리에서 분배기는 접미사 배열의 일부를 가지고 있는 프로세서들에 질의를 분배하고 처리 결과를 병합 - 접미사 배열 탐색시, 모든 프로세서가 전체 텍스트에 대한 액세스를 요구한다는 점에 주의 최신정보검색론 Chapter9
9.2.2 MIMD 구조(계속) <요약 파일> 요약 파일을 이용한 시스템에서 문헌 분할 - 문헌들을 프로세서 사이에 분배 - 각 프로세서가 요약(signature)을 만들도록 함 - 질의 처리 분배기는 질의에 대한 요약을 생성하고 이를 모든 병렬 프로세서들에 분배 - 각 프로세서는 독립적인 컬렉션으로 간주하여 질의 요약을 처리 - 결과들은 분배기로 보내지고 분배기는 최종 적중 리스트로 결합 최신정보검색론 Chapter9
9.2.3 SIMD 구조 SIMD 구조 CM-2 - MIMD 구조보다 제한된 문제 영역에 적합 - SIMD 컴퓨터는 MIMD 컴퓨터보다 덜 일반적 예) Thinking Machines사의 CM-2 CM-2 - 요약 파일과 역파일 기반 정보 검색 알고리즘을 지원 - 각 처리 요소는 1비트 산술 논리 연산장치(Arithmetic Logic Unit ; ALU)와 작은 양의 지역 메모리를 가짐 - 이들은 지역적이거나 비지역적인 병렬 명령을 수행 최신정보검색론 Chapter9
9.2.3 SIMD 구조 <요약 파일> 요약 파일에 대한 기본적인 검색 프로세스 - 검색 시스템은 질의 용어에 대한 요약을 구성 - 질의 요약과 컬렉션에 있는 모든 문헌의 요약을 비교 - 정합되는 경우에 연관 가능성이 있는 문헌으로 표시 - 최종적으로 검색 시스템은 착오 드롭을 제거 - 연관 가능성이 있는 문헌의 전문을 조사하여 부합되는 문서에 대해 순위를 부여 - 적중 리스트를 반환 최신정보검색론 Chapter9
9.2.3 SIMD 구조(계속) <요약 파일> 서브루틴 probe_doc (P_bit Doc_sig[], char *term) { int i; P_int Doc_match; Doc_match = 1; for (i = 0; i < num_hashes; i++) { Doc_match &= Doc_sig[hash (i, term)]; } return Doc_match; probe_doc (P_bit Doc_sig[], char *term) { int i; P_int Doc_match; Doc_match = 1; for (i = 0; i < num_hashes; i++) { Doc_match &= Doc_sig[hash (i, term)]; } return Doc_match; 그림 9.5 probe_doc [그림 9.5] probe_doc 최신정보검색론 Chapter9
9.2.3 SIMD 구조(계속) <요약 파일> 재귀프로시저 bool_search (P_bit Doc_sig[], bquery_t query) { switch (query.op) { case AND: return (bool_search (Doc_sig, query.arg1) && bool_search (Doc_sig, query.arg2)); case OR: || bool_search (Doc_sig, query.arg2)); case NOT: return (!bool_search (Doc_sig, query.arg1)); case WORD: return (probe_doc (Doc_sig, query.arg1)); } bool_search (P_bit Doc_sig[], bquery_t query) { switch (query.op) { case AND: return (bool_search (Doc_sig, query.arg1) && bool_search (Doc_sig, query.arg2)); case OR: || bool_search (Doc_sig, query.arg2)); case NOT: return (!bool_search (Doc_sig, query.arg1)); case WORD: return (probe_doc (Doc_sig, query.arg1)); } 그림 9.6 bool_search [그림 9.6] bool_search 최신정보검색론 Chapter9
9.2.3 SIMD 구조(계속) <요약 파일> 순위 부여 시스템을 구축하기 위한 probe_doc의 사용 rank_search (P_bit Doc_sig[], wquery_t query) { int i; P_float Doc_score; P_bool Doc_match; Doc_score = 0; for (i = 0; i < query.num_terms; i++) Doc_match = probe_doc (Doc_sig, query.terms[i]); where (Doc_match) { Doc_score += query.weights[i]; } return (Doc_score); rank_search (P_bit Doc_sig[], wquery_t query) { int i; P_float Doc_score; P_bool Doc_match; Doc_score = 0; for (i = 0; i < query.num_terms; i++) Doc_match = probe_doc (Doc_sig, query.terms[i]); where (Doc_match) { Doc_score += query.weights[i]; } return (Doc_score); 그림 9.7 rank_search [그림 9.7] rank_search 최신정보검색론 Chapter9
9.2.3 SIMD 구조(계속) <요약 파일> 일반적인 일괄 처리 형태의 문헌 처리 - 각 일괄 처리 단위마다 판독을 위한 I/O를 필요로 하기 때문에 낮은 성능으로 실행 일괄 처리 형태에 대한 대안 - Panagopoulos와 Faloutsos에 의해 제안된 병렬 비트 슬라이스 요약 파일(bit-sliced ature file) 이용 0 1 1 0 1 1 1 0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 1 0 1 1 1 0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 1 그림 9.8 문헌 요약 [그림 9.8] 문헌 요약 최신정보검색론 Chapter9
9.2.3 SIMD 구조<역파일> 소규모 문헌 컬렉션과 실제 포스팅 최신정보검색론 Chapter9 문 헌 포스팅 This little piggy This little piggy This little piggy went to market. stayed home had roast beef. 포스팅 색 인 beef 2 had 2 home 1 little 0 little 1 ittle 2 market 0 piggy 0 piggy 1 piggy 2 roast 2 stayed 1 this 0 this 1 this 2 to 0 went 0 First Last Row Pos Row Pos Term Beef 0 0 0 0 had 0 1 0 1 home 0 2 0 2 little 0 3 1 1 market 1 2 1 2 piggy 1 3 2 1 roast 2 2 2 2 stayed 2 3 2 3 this 3 0 3 2 to 3 3 3 3 went 4 0 4 0 포스팅 테이블 그림 9.9 병렬 역파일 2 2 1 0 1 2 0 0 1 2 2 1 0 1 2 0 [그림 9.9] 병렬 역파일 최신정보검색론 Chapter9
9.2.3 SIMD 구조(계속) <역파일> 가중치가 부여된 용어의 평가를 위한 완전한 알고리즘 score_term ( P_float Doc_score[], P_posting Posting[], term_t term) { int i; int first_pos; int last_pos; P_int Doc_row; P_int Doc_pos; P_float Weight; score_term (P_float Doc_score[], P_posting Posting[], term_t term) { int i; int first_pos; int last_pos; P_int Doc_row; P_int Doc_pos; P_float Weight; for (i = term.first_row; i <= term.last_row; i++) { first_pos = (i == term.first_row ? term.first_pos : 0); last_pos = (i == term.last_row ? term.last_pos : N_PROCS - 1); where (Position >= first_pos && Position <= last_pos) { Doc_row = Posting[i].row; Doc_pos = Posting[i].pos; Weight = term.weight * Posting[i].weight; [Doc_pos]Doc_score[Doc_row] += Weight; } 최신정보검색론 Chapter9
9.2.3 SIMD 구조(계속) <역파일> 가중치가 부여된 용어의 평가를 위한 완전한 알고리즘(계속) for ( i = term.first_row; i <= term.last_row; i++) { first_pos = ( i == term.first_row ? term.first_pos : 0); last_pos = ( i == term.last_row ? term.last_pos : N_PROCS - 1); where ( Position >= first_pos && Position <= last_pos) { Doc_row = Posting[i].row; Doc_pos = Posting[i].pos; Weight = term.weight * Posting[i].weight; [Doc_pos]Doc_score[Doc_row] += Weight; } [그림 9.10] score_term [그림 9.10] score_term 최신정보검색론 Chapter9
9.2.3 SIMD 구조(계속) <역파일> (a)는 포스팅이 어떻게 두 개의 프로세서를 한 테이블에 적재하는가에 대하여 (b)는 세 행 세그먼트를 사용한 경우 (a) home 1 beef 2 little 0 had 2 little 1 little 2 market 0 piggy 2 Piggy 0 roast 2 piggy 1 this 2 stayed 1 this 0 this 1 to 0 went 0 (b) home 1 beef 2 little 0 had 2 little 1 little 2 market 0 piggy 2 Piggy 0 roast 2 piggy 1 stayed 1 this 2 this 0 this 1 to 0 went 0 그림 9.11 불균형적으로 분할된 포스팅 [그림 9.11] 불균형적으로 분할된 포스팅 최신정보검색론 Chapter9
9.2.3 SIMD 구조(계속) <역파일> 포스팅 테이블과 색인의 수정 색인 용어 첫번째 분할 마지막 분할 태그 포스팅 테이블 Beef 0 0 0 had 0 0 1 home 0 0 2 little 0 0 3 market 1 1 0 piggy 1 1 1 roast 1 1 2 stayed 2 2 0 this 2 2 1 to 3 3 0 went 3 3 1 2 1 0 0 3 0 1 0 3 1 3 0 0 0 1 0 1 0 2 0 1 1 0 1 1 0 1 0 0 0 2 1 0 0 3 0 10 00 10 1020 11 0110 10 00 [그림 9.12] 분할된 포스팅 파일 최신정보검색론 Chapter9
9.2.3 SIMD 구조(계속) <역파일> 수정된 용어 평가 알고리즘 ppf_score_term (P_float Doc_score[], P_posting Posting[], term_t term) { int i; P_int Doc_row; P_float Weight; for ( i = term.first_part * N_ROWS; i < (term.last_part + 1) * N_ROWS; i++) { where (Posting[i].tag == term.tag) { Doc_row = Posting[i].row; Weight = term.weight * Posting[i].weight; Doc_score[Doc_row] += Weight; } ppf_score_term (P_float Doc_score[], P_posting Posting[], term_t term) { int i; P_int Doc_row; P_float Weight; for (i = term.first_part * N_ROWS; i < (term.last_part + 1) * N_ROWS; i++) { where (Posting[i].tag == term.tag) { Doc_row = Posting[i].row; Weight = term.weight * Posting[i].weight; Doc_score[Doc_row] += Weight; } [그림 9.13] ppf_score_term [그림 9.13] ppf_score_term 최신정보검색론 Chapter9
9.3 분산 정보 검색(Distributed IR) 9.3.1 개요 분산 컴퓨팅 - 단일 문제를 해결하기 위해 다중 컴퓨터들을 네트워크로 연결한 응용분야 - 상대적으로 늦은 프로세서간 통신 채널과 이질적인 프로세서 집합을 가지는 MIMD 병렬 프로세서 분산 시스템 - 전형적으로 독립된 프로세싱 노드에서 동작되는 서버 프로세스 집합 - 클라이언트의 요구를 받아 서버로 분산 - 서버로부터 중간 결과를 수집하여 클라이언트를 위한 최종 결과로 통합 최신정보검색론 Chapter9
9.3.1 개요(계속) 프로토콜은 클라이언트에 최소한다음 사항들을 허용해야 함 - 검색 서버에 대한 정보를 얻음 9.3.1 개요(계속) 프로토콜은 클라이언트에 최소한다음 사항들을 허용해야 함 - 검색 서버에 대한 정보를 얻음 예) 서버에서 검색을 위해 사용 가능한 데이터베이스의 목록 및 데이터베이스에 관계된 통계 정보 - 잘 정의된 질의 언어를 사용하여 하나 또는 그 이상의 데이터베이스들에 대한 검색 질의를 제기 - 잘 정의된 형태로 검색 결과를 받음 - 검색 결과에서 식별된 항목들을 검색 최신정보검색론 Chapter9
9.3.2 컬렉션 분할 분산 시스템이 중앙 집중적으로 관리될 때의 선택 사항 1) 모든 검색 서버들에 컬렉션을 단순하게 중복 9.3.2 컬렉션 분할 분산 시스템이 중앙 집중적으로 관리될 때의 선택 사항 1) 모든 검색 서버들에 컬렉션을 단순하게 중복 - 높은 가용성(availability)과 질의 처리량이 요구될 때 적합 2) 문헌의 임의 분배 - 문헌들이 마치 하나의 논리적인 컬렉션의 일부인 것처럼 취급되고 검색되는 경우에 적합 3) 문헌들의 명백한 의미 분할 - 문헌들은 기술분류 등과 같은 원칙에 따라 의미적으로 나누어진 컬렉션으로 미리 구성 최신정보검색론 Chapter9
9.3.3 소스 선택 소스 선택(source selection) - 현재 질의와 관련된 문헌을 포함할 가능성이 있어서 9.3.3 소스 선택 소스 선택(source selection) - 현재 질의와 관련된 문헌을 포함할 가능성이 있어서 질의를 받아야 하는 분산된 문헌 컬렉션을 결정하는 과정 - 모든 컬렉션이 관련 문헌을 포함할 가능성이 동일하다고 가정하고 질의를 모든 컬렉션에 전송 - 이 접근 방법은 문헌들이 임의로 분할되어 있거나 컬렉션 사이에 중요한 의미적 겹침이 있는 경우에 적절 최신정보검색론 Chapter9
9.3.4 질의 처리 분산 정보 검색 시스템에서 질의 처리의 진행 순서 (1) 검색을 위한 컬렉션을 선택 9.3.4 질의 처리 분산 정보 검색 시스템에서 질의 처리의 진행 순서 (1) 검색을 위한 컬렉션을 선택 (2) 질의를 선택된 컬렉션에 분산 (3) 분산된 컬렉션에 대해 질의를 병렬로 평가 (4) 분산된 컬렉션으로부터의 결과들을 최종 결과로 결합 최신정보검색론 Chapter9
9.3.5 웹 쟁점 Harvest 시스템 - 문헌을 수집, 요약, 중복, 분산 및 검색하는 수많은 컴포넌트들로 이루어져 있음 9.3.5 웹 쟁점 Harvest 시스템 - 문헌을 수집, 요약, 중복, 분산 및 검색하는 수많은 컴포넌트들로 이루어져 있음 - 질의는 수집기(gatherer)와 다른 분배기로부터 정보를 수집하여 정리하는 분배기에 의해 처리 - 특정 분배기에서의 정보는 전형적으로 가장 적절한 - 분배기에 직접 질의를 제기하는 것을 허용 - 중앙의 분배기 레지스트리는 질의에 대한 최상의 분배기를 발견할 수 있도록 도와줌(그림 13.4 참조) 최신정보검색론 Chapter9
9.4 연구동향 및 쟁점 병렬 컴퓨팅은 현재 성능 및 확장 쟁점에 대한 잠재적인 해결책을 가지고 있음 분산 컴퓨팅은 상대적으로 프로세서간 높은 통신비용을 필요로 하는 MIMD 컴퓨팅의 형태로 볼 수 있음 병렬 색인, 역파일, 접미사 배열 등을 기반으로 하는 시스템을 위한 검색 기술 조사 및 개발에 첨가하여 두 가지의 명확한 시도가 진행되고 있음 1) 대규모 텍스트 컬렉션에 대한 검색 효과를 측정 2) 상호 운용성(interoperability) 또는 이질적인 컴포넌트들로 분산 정보 검색 시스템을 구축 최신정보검색론 Chapter9