KR20210002647A - 가속화된 대규모 유사성 계산 - Google Patents

가속화된 대규모 유사성 계산 Download PDF

Info

Publication number
KR20210002647A
KR20210002647A KR1020207033966A KR20207033966A KR20210002647A KR 20210002647 A KR20210002647 A KR 20210002647A KR 1020207033966 A KR1020207033966 A KR 1020207033966A KR 20207033966 A KR20207033966 A KR 20207033966A KR 20210002647 A KR20210002647 A KR 20210002647A
Authority
KR
South Korea
Prior art keywords
data
processing unit
entities
query
processing
Prior art date
Application number
KR1020207033966A
Other languages
English (en)
Other versions
KR102495793B1 (ko
Inventor
린 마
나탄 위간드
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20210002647A publication Critical patent/KR20210002647A/ko
Application granted granted Critical
Publication of KR102495793B1 publication Critical patent/KR102495793B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/906Clustering; Classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Algebra (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

엔티티 상관 시스템의 제 1 프로세서를 사용하여 저장 디바이스에 저장된 데이터를 획득하기 위한 컴퓨터 저장 매체에 인코딩된 컴퓨터 프로그램을 포함하는 방법, 시스템 및 장치가 제공된다. 데이터는 여러 아이템에 대한 정보를 포함한다. 제 1 프로세서는 획득된 데이터를 사용하여 데이터 어레이들을 생성한다. 각 데이터 어레이는 여러 엔티티들에 대한 파라미터 값들을 포함하며 제 2 프로세서의 각각의 컴퓨팅 셀에서 프로세싱하도록 구성된다. 시스템은 제 2 프로세서에 데이터 어레이를 제공한다. 제 2 프로세서는 각각의 컴퓨팅 셀에서 데이터 어레이를 동시에 프로세싱하기 위해 상관 알고리즘을 실행하도록 구성된다. 제 2 프로세서는 알고리즘과 파라미터 값을 사용하여 셀에서 수행된 계산에 기초하여 상관 점수를 계산한다. 시스템은 상관 점수에 기초하여 데이터 어레이들의 엔터티들 간의 관련성들을 결정한다. 관련성들은 엔티티들의 서브세트들 간에 존재하는 중첩 속성들 또는 유사성들을 나타낸다.

Description

가속화된 대규모 유사성 계산
본 발명은 대규모 유사성 계산을 위한 컴퓨팅 프로세스에 관한 것이다.
많은 경우에, 입력 샘플이 다수의 저장된 레코드들과 일치하는지 여부 또는 얼마나 잘 일치하는지를 결정하는 것이 바람직할 수 있다. 일례로, DNA 샘플이 DNA 레코드 데이터베이스에 저장된 레코드들과 일치하는지 여부를 결정하는 것이 바람직할 수 있다. 데이터베이스에는 수많은 DNA 레코드(예를 들어, 수십만 또는 수백만 개의 레코드)가 포함될 가능성이 있다. 일반적으로, 입력 샘플에 응답하여, 데이터베이스에서 소정 개수인 n 개의 저장된 레코드를 검색하는 것이 바람직할 수 있다. 입력 샘플은 입력 샘플과 가장 가까운 n 개의 매치들이라고 판별된 데이터베이스에 있는 n 개의 레코드일 수 있다. 검색된 레코드들의 개수 n 은 데이터베이스에 있는 전체 레코드들의 개수보다 작으며 일반적으로는 훨씬 더 작다. 검색된 n 개의 레코드들은 가장 가능성이 높은 것이 먼저인 순서대로 배열될 수 있다. 일반적으로, 이러한 검색 프로세스는 입력 샘플과 데이터베이스에 저장된 모든 레코드들 사이의 유사성 측정값을 계산한 다음, 계산된 유사성 측정값 중에서 가장 높은 값들을 갖는 n 개의 레코드들을 식별하는 것을 포함할 수 있다. n 개의 검색된 레코드들은 계산된 유사성 측정값을 참조하여 배열되도록 재 순서화될 수 있다. 저장된 레코드들의 개수가 증가함에 따라, 이러한 프로세스는 점점 계산 집약적이고 시간소모적이다.
엔티티 상관(correlation: 이하, "상관" 또는 "상관관계"라 함) 시스템의 제 1 프로세서를 이용하여 저장 디바이스에 저장된 데이터를 획득하기 위한, 컴퓨터 저장 매체에 인코딩된 컴퓨터 프로그램을 포함하는 방법들, 시스템들, 및 장치들이 제공된다. 상기 데이터는 여러 엔티티들에 대한 정보를 포함한다. 제 1 프로세서는 획득된 데이터를 사용하여 데이터 어레이들을 생성한다. 각 데이터 어레이는 여러 엔티티들에 대한 파라미터 값들을 포함하며, 제 2 프로세서의 각 컴퓨팅 셀에서 프로세싱하도록 구성된다. 상기 시스템은 데이터 어레이들을 제 2 프로세서에 제공한다. 제 2 프로세서는 각각의 컴퓨팅 셀에서 데이터 어레이들을 동시에 프로세싱하기 위해 상관 알고리즘을 실행하도록 구성된다. 제 2 프로세서는 알고리즘과 파라미터 값들을 사용하여 셀들에서 수행된 계산에 기초하여 상관 점수를 계산한다. 시스템은 상관 점수에 기초하여 데이터 어레이들의 엔티티들 간의 관련성을 결정한다. 관련성은 엔티티들의 서브세트들 간에 존재하는 중첩 속성들을 나타낸다.
본 명세서에서 설명된 주제의 일 양상은, 컴퓨터로 구현되는 방법으로 실시될 수 있다. 상기 방법은, 엔티티 상관 시스템의 제 1 프로세싱 유닛에 의해, 저장 디바이스에 저장된 데이터를 획득하는 단계, 상기 데이터는 다수의 엔티티에 관한 정보를 포함하며; 그리고 제 1 프로세싱 유닛에서, 상기 저장 디바이스로부터 획득된 데이터를 사용하여 복수의 데이터 어레이들을 생성하는 단계를 포함한다. 상기 복수의 데이터 어레이들의 각각의 데이터 어레이는, i) 복수의 엔티티들에 대한 파라미터 값들을 포함하고, ii) 제 2 프로세싱 유닛의 각각의 컴퓨팅 셀에서 프로세싱하도록 구성된다. 상기 방법은 또한 엔티티 상관 시스템에서, 상기 복수의 데이터 어레이들 중 적어도 2 개의 데이터 어레이를 제 2 프로세싱 유닛에 제공하는 단계를 포함하고, 상기 제 2 프로세싱 유닛은 제 2 프로세싱 유닛의 각각의 컴퓨팅 셀에서 적어도 2 개의 데이터 어레이를 동시에 프로세싱하기 위해 상관 알고리즘을 실행하도록 구성되며; 제 2 프로세싱 유닛에서, 상관 알고리즘 및 복수의 엔티티들에 대한 파라미터 값들을 사용하여 각각의 컴퓨팅 셀에서 수행된 계산들에 기초하여 상관 점수를 계산하는 단계; 및 엔티티 상관 시스템에서, 계산된 상관 점수에 기초하여, 상기 적어도 2 개의 데이터 어레이들의 엔티티들 간의 관련성들을 결정하는 단계를 포함하고, 상기 관련성들은 엔티티들의 적어도 서브세트 사이에 존재하는 중첩 속성을 나타낸다.
이들 및 다른 구현예들은 각각 다음 특징들 중 하나 또는 그 이상을 포함할 수 있다. 예를 들어, 일부 구현예에서, 상관 점수를 계산하는 단계는, 유사성 알고리즘 또는 조건부 확률 알고리즘으로서 특정 상관 알고리즘을 선택하는 단계; 상기 특정 상관 알고리즘을 사용하여, 적어도 2 개의 데이터 어레이들의 엔티티들 사이의 교집합(intersection) 및 적어도 2 개의 데이터 어레이들의 엔티티들 사이의 합집합(union)을 계산하는 단계; 및 상기 교집합과 합집합에 기초하여 상관 점수를 계산하는 단계를 포함한다. 일부 구현예에서, 제 1 프로세싱 유닛은 복수의 데이터 어레이들을 생성하기 위해 데이터 저장 디바이스로부터 획득된 데이터를 사전 정렬하는 중앙 프로세싱 유닛(CPU)이고; 제 2 프로세싱 유닛은 적어도 2 개의 데이터 어레이들의 엔티티들에 대한 파라미터 값들을 사용하여 병렬 계산을 수행하는 그래픽 프로세싱 유닛(GPU)이며; 및 상기 특정 상관 알고리즘은 자카드(Jaccard) 유사성 알고리즘, 코사인 유사성 알고리즘 또는 조건부 확률 알고리즘이다.
일부 구현예에서, 상기 복수의 데이터 어레이들을 생성하는 단계는, 스케칭(sketching) 알고리즘에 기초하여, 다수의 엔티티들에 대한 정보를 포함하는 데이터를 정렬하는 단계; 및 정렬에 응답하여, 상기 데이터에 대한 스케치 표현을 생성하는 단계를 포함하고, 각각의 스케치 표현은 복수의 데이터 어레이들 각각에 대응한다. 일부 구현예에서, 각각의 데이터 어레이는 저장 디바이스에 저장된 데이터의 스케치 표현이며; 그리고 복수의 데이터 어레이들의 적어도 서브세트는 미리 결정된 개수의 엔티티들을 각각 갖는 각각의 데이터 어레이를 포함한다. 일부 구현예에서, 각각의 스케치 표현은 제 2 프로세싱 유닛에 포함된 컴퓨팅 셀들의 수량에 따른 사이즈를 갖는다. 일부 구현예에서, 상기 적어도 2 개의 데이터 어레이를 제공하는 단계는, 각각의 데이터 어레이를 상기 제 2 프로세싱 유닛의 메모리 캐시에 저장하는 단계를 포함하고, 상기 메모리 캐시는 상기 제 2 프로세싱 유닛의 콤팩트 메모리를 나타내고, 각각의 데이터 어레이는 상기 콤팩트 메모리의 데이터 용량에 따른 사이즈를 갖는다.
일부 구현예에서, 상기 데이터 어레이들 중 적어도 하나는 제 2 프로세싱 유닛에 포함된 복수의 컴퓨팅 셀들 각각에 의해 액세스되도록 구성된다. 일부 구현예에서, 상기 엔티티들 간의 관련성들을 결정하는 단계는, 계산된 상관 점수가 임계 점수를 초과하는지를 결정하는 단계; 및 계산된 상관 점수가 임계 점수를 초과한다는 결정에 응답하여, 임계 점수를 초과하는 상관 점수를 사용하여 순위화된(ranked) 엔티티들의 목록을 생성하는 단계를 포함한다.
본 명세서에 기술된 주제의 다른 양상은 컴퓨터로 구현되는 방법에 의해 실시될 수 있다. 상기 방법은 제 1 프로세싱 유닛(예컨대, CPU)에서 제 1 데이터 아이템들을 수신하는 단계; 제 1 프로세싱 유닛에 의해 그리고 적어도 상기 수신된 제 1 데이터 아이템들로부터, 데이터 구조들을 생성하는 단계, 각각의 데이터 구조는 각각의 데이터세트를 나타내며; 제 2 프로세싱 유닛(예컨대, GPU)의 메모리에 데이터 구조들을 저장하는 단계; 제 1 프로세싱 유닛에서, 사용자로부터 질의를 수신하는 단계; 제 2 프로세싱 유닛에 의해, 제 2 프로세싱 유닛에 저장된 2 이상의 데이터 구조들에 대하여 상기 질의를 병렬로 프로세싱하는 단계; 및 제 2 프로세싱 유닛으로부터 제 1 프로세싱 유닛으로, 프로세싱 결과들을 반환하는 단계를 포함한다.
이들 및 다른 구현예들은 각각 다음 특징들 중 하나 이상을 포함할 수 있다. 예를 들어, 일부 구현예에서, 제 2 프로세싱 유닛은 다수의 프로세싱 코어들을 포함하고, 상기 제 2 프로세싱 유닛에 의해, 질의를 병렬로 프로세싱하는 단계는, 상기 데이터 구조들 각각에 대하여, 각각의 프로세싱 코어에서 상기 질의를 병렬로 프로세싱하는 단계를 포함한다. 일부 구현예에서, 상기 제 2 프로세싱 유닛에 의해, 제 2 프로세싱 유닛에 저장된 2 이상의 데이터 구조들에 대하여 상기 질의를 병렬로 프로세싱하는 단계는, 상기 제 2 프로세싱 유닛에 저장된 데이터 구조에 대하여, 데이터 구조와 질의 간의 유사성에 대한 각각의 측정치를 결정하는 단계를 포함한다. 일부 구현예에서, 상기 제 2 프로세싱 유닛으로부터 제 1 프로세싱 유닛으로 프로세싱 결과들을 반환하는 단계는, 상기 질의에 최상으로 매칭되는 n 개의 데이터 구조들을 식별하는 정보를 반환하는 단계를 포함한다.
일부 구현예에서, 상기 방법은 제 1 프로세싱 유닛이 수신된 질의로부터 질의 데이터 구조를 생성하고 그리고 생성된 질의 데이터 구조를 제 2 프로세싱 유닛으로 전송하는 단계를 포함하고, 상기 제 2 프로세싱 유닛에 의해, 제 2 프로세싱 유닛에 저장된 2 이상의 데이터 구조들에 대하여 상기 질의를 병렬로 프로세싱하는 단계는, 상기 제 2 프로세싱 유닛에 저장된 데이터 구조들에 대하여, 상기 질의 데이터 구조를 프로세싱하는 단계를 포함한다. 일부 구현예에서, 상기 데이터 구조들 및 질의 데이터 구조는 KMV 스케치이다. 일부 구현예에서, 상기 제 2 프로세싱 유닛에 의해, 제 2 프로세싱 유닛에 저장된 2 이상의 데이터 구조들에 대하여 상기 질의를 병렬로 프로세싱하는 단계는, 상기 질의 데이터 구조와 상기 저장된 데이터 구조의 합집합을 결정하는 단계를 포함한다. 일부 구현예에서, 상기 제 2 프로세싱 유닛에 의해, 제 2 프로세싱 유닛에 저장된 2 이상의 데이터 구조들에 대하여 상기 질의를 병렬로 프로세싱하는 단계는, 상기 질의 데이터 구조와 상기 저장된 데이터 구조의 교집합을 결정하는 단계를 포함한다. 일부 구현예에서, 상기 제 2 프로세싱 유닛에 의해, 제 2 프로세싱 유닛에 저장된 2 이상의 데이터 구조들에 대하여 상기 질의를 병렬로 프로세싱하는 단계는, 상기 질의 데이터 구조와 상기 데이터 구조 사이의 자카드 유사성(Jaccard similarity)을 결정하는 단계를 포함한다.
일부 구현예에서, 상기 제 1 프로세싱 유닛에서 제 1 데이터 아이템들을 수신하는 단계는, 데이터 호스팅 서비스로부터 제 1 데이터 아이템들을 수신하는 단계를 포함하고, 상기 방법은 제 1 프로세싱 유닛으로부터 데이터 호스팅 서비스로 프로세싱 결과를 반환하는 단계를 더 포함한다. 일부 구현예에서, 상기 방법은 제 1 프로세싱 유닛에서, 제 2 질의를 수신하는 단계; 및 제 2 프로세싱 유닛에 의해, 제 2 프로세싱 유닛에 저장된 데이터 구조들에 대하여, 상기 제 2 질의를 프로세싱하는 단계를 더 포함한다.
일부 구현예에서, 상기 방법은 제 1 프로세싱 유닛에서 제 2 데이터 아이템들을 수신하는 단계; 제 1 프로세싱 유닛에 의해 그리고 적어도 수신된 제 2 데이터 아이템들로부터, 업데이트된 데이터 구조들을 생성하는 단계, 업데이트된 데이터 구조들 각각은 각각의 데이터세트를 나타내고; 그리고 업데이트된 데이터 구조들을 제 2 프로세싱 유닛의 메모리에 저장하는 단계를 더 포함한다. 일부 구현예에서, 상기 방법은 제 1 프로세싱 유닛에서, 제 3 질의를 수신하는 단계; 및 제 2 프로세싱 유닛에 의해, 제 2 프로세싱 유닛에 저장된 업데이트된 데이터 구조들에 대하여 상기 제 3 질의를 프로세싱하는 단계를 더 포함한다.
일부 구현예에서, 제 2 프로세싱 유닛과 통신하는 제 1 프로세싱 유닛을 포함하는 프로세싱 시스템은 본 요약 부분의 선행하는 문단들 중 임의의 문단에 정의된 방법을 실행하도록 구성된다. 일부 구현예에서, 저장된 명령들을 포함하는 컴퓨터 판독가능 매체가 제공되며, 상기 명령들은 제 2 프로세싱 유닛과 통신하는 제 1 프로세싱 유닛을 포함하는 프로세싱 시스템에 의해서 실행될 때, 상기 프로세싱 시스템으로 하여금 본 요약 부분의 선행하는 문단들 중 임의의 문단에 정의된 방법을 실행하도록 구성된다.
본 발명의 일 양상은 방법을 제공하며, 상기 방법은, 제 1 프로세싱 유닛에서 제 1 데이터 아이템들을 수신하는 단계; 제 1 프로세싱 유닛에 의해 그리고 적어도 상기 수신된 제 1 데이터 아이템들로부터, 데이터 구조들을 생성하는 단계, 각각의 데이터 구조는 각각의 데이터세트를 나타내며; 제 2 프로세싱 유닛의 메모리에 데이터 구조들을 저장하는 단계; 제 1 프로세싱 유닛에서, 사용자로부터 질의를 수신하는 단계; 제 2 프로세싱 유닛에 의해, 제 2 프로세싱 유닛에 저장된 2 이상의 데이터 구조들에 대하여 상기 질의를 병렬로 프로세싱하는 단계; 및 제 2 프로세싱 유닛으로부터 제 1 프로세싱 유닛으로, 프로세싱 결과들을 반환하는 단계를 포함한다. 본 양상에서, 제 1 프로세싱 유닛은 CPU(중앙 프로세싱 유닛)일 수 있으며, 제 2 프로세싱 유닛은 GPU(그래픽 프로세싱 유닛)일 수 있다.
본 명세서에서 서술된 특정 실시예들은 다음의 장점들 중 하나 이상을 실현하도록 구현될 수 있다. 그래픽 프로세싱 유닛은 다른 데이터 상관 시스템들에 비하여 더 빠른 속도로, 상관 점수들, 계산 결과들, 및/또는 사전 정렬된 데이터 어레이들의 엔티티들 간의 유사성 관련성들을 결정할 수 있다. 그래픽 프로세서는 상관 알고리즘을 실행하기 전에 데이터를 정렬/사전 정렬하지 않고, 데이터 상관 알고리즘(자카드 유사성 알고리즘) 실행과 관련된 필요한 계산들을 수행할 수 있다. 또한 그래픽 프로세서는 다른 상관 시스템들에 비하여, 스레드 간 데이터 통신을 거의 또는 전혀 사용하지 않고도 필요한 계산을 수행할 수 있다. 이는 그래픽 프로세서의 각 컴퓨팅 셀이 시스템 사용자가 제출한 각각의 질의에 대한 데이터 어레이들의 특정 세트들에 대해 계산을 수행하기 때문이다.
예를 들어, 일부 저가형 그래픽 프로세서를 사용하여, 본 명세서에 설명된 기술들은 그래픽 프로세서의 오직 단일 컴퓨팅 셀을 사용하여 일초 이내에 2 천만(20 million) 이상의 유사성 계산들을 달성하도록 구현될 수 있다. 일부 구현예에서, 적어도 2 천만 이상의 유사성 계산들을 달성하기 위한 1 초라는 지속 기간은, 동일한 양의 계산을 수행하기 위해 표준 프로세서(예를 들어, CPU)에 요구되는 시간보다 10 배 이상 빠른 것이다. 따라서, 본 명세서에 설명된 기술은 소정 프로세서가 소정 시간에 더 큰 데이터 어레이들을 프로세싱할 수 있게하며(또는 소정 사이즈의 데이터 어레이를 더 짧은 시간에 프로세싱함) 그리고 다른 데이터 프로세싱 장치에 비하여, 데이터 상관 계산들을 달성하기 위한 향상된 컴퓨팅 성능을 효율적으로 제공할 수 있게한다. 또한 본 명세서에 설명된 기술은 사람의 개입을 최소화하고 그리고 데이터 사전 정렬, 데이터 어레이 생성 또는 데이터 어레이 사이즈 설정을 수동으로 실행할 필요가 없는 반복가능한 자동화된 프로세스를 제공한다. 따라서, 본 발명의 기술은 컴퓨팅 시스템이, 그래픽 프로세서/GPU 컴퓨팅 환경에서 데이터를 정렬하기 위한 k-min-hash 또는 k-최소값 알고리즘의 사용이라는 과제 때문에 시스템들이 이전에는 고속 방식으로 자동으로 수행할 수 없었던 연산들(예컨대, 상당한 개수의 유사성 계산들)을 신속하게 수행할 수 있게 한다.
본 명세서에 서술된 본 발명의 주제의 하나 이상의 실시예들의 세부 사항은 첨부된 도면들 및 이하의 설명 부분에서 설명될 것이다. 본 발명의 주제의 다른 특징들, 양상들 및 장점들은 발명의 상세한 설명, 도면들 및 청구 범위로부터 명백해질 것이다.
도 1은 컴퓨팅 시스템의 프로세서들을 이용하여 엔티티들 사이의 상관(correlation)을 결정하기 위한 컴퓨팅 시스템의 일례를 나타낸 블록도이다.
도 2는 엔티티들 간의 상관을 결정하기 위한 예시적인 프로세스의 흐름도이다.
도 3은 도 1의 컴퓨팅 시스템에서 적어도 하나의 프로세서와 관련된 예시적인 아키텍처이다.
도 4는 도 1의 컴퓨팅 시스템에서 적어도 하나의 프로세서와 관련된 또 다른 예시적인 아키텍처이다.
도 5는 본 명세서에 기술된 방법과 관련하여 사용될 수 있는 컴퓨팅 시스템의 블록도이다.
여러 도면들에서 유사한 참조 번호 및 지정은 동일한 요소를 나타낸다.
본 명세서는 엔티티들 간의 관련성을 계산하기 위해 그래픽 프로세싱 유닛(GPU)에 미리-로딩된 데이터를 정렬하는 k-mim-hash 또는 k-최소값(minimum value)("KMV") 데이터 프로세싱 알고리즘을 구현하기 위한 기술들을 설명한다.
구체적으로, 서술된 기술들은 GPU의 컴퓨팅 셀들이 엔티티들 간의 관련성을 신속하게 결정할 수 있도록 GPU에 미리-정렬된 데이터를 저장함으로써, 예를 들어 엔티티들 간의 유사성을 결정하기 위한 데이터 상관 계산을 가속화하는데 사용될 수 있다. GPU는 특정 유형의 상관 알고리즘을 실행함으로써 관련성들을 결정한다. 관련성들은 현재 시스템에 비하여 증가된 속도로 GPU에서 계산 또는 결정될 수 있는데, 이는 상관 알고리즘을 실행하기 전에 GPU가 데이터를 더 이상 사전-정렬할 필요가 없기 때문이다.
예를 들어, 엔티티 상관 시스템은 서로 다른 엔티티들을 기술하는 정보를 포함하는 대용량 데이터를 저장한다. 시스템은 데이터 저장 디바이스로부터 데이터를 획득하고, 데이터를 사전 정렬하고(pre-sort), 그 각각이 미리 결정된 분량의 엔티티를 포함하는 다수의 사전 정렬된 데이터 어레이를 생성하도록 구성된 중앙 프로세싱 유닛(CPU)을 포함할 수 있다. 데이터를 사전 정렬하고 데이터 어레이를 생성하는 것은 획득된 데이터를 프로세싱하기 위해 KMV 스케치 알고리즘을 실행하는 CPU에 응답하여 발생한다. 데이터 어레이는 데이터의 각각의 세트들(또는 데이터세트들)에 해당한다. 일반적으로, 하나의 데이터 세트의 엔티티들은 아이템들, 사람들 또는 다양한 전자적 객체들 및 실세계의 객체들일 수 있다. 예를 들어, 하나의 데이터세트의 엔티티들은 특정 지역(예컨대, 영국(UK))에 거주하는 특정 인구 통계(예: 20 대 남성)의 사람들 또는 사용자들일 수 있다. 유사하게, 다른 데이터 세트의 엔티티들은 동일한 지역에 거주하는 다른 인구 통계(예: 일반 인구)의 사용자들일 수 있다.
시스템은 GPU의 메모리 디바이스에 저장하기 위해 적어도 2개의 데이터 어레이들(예컨대, 텐서들)을 사전-로딩(pre-load)하도록 구성된 텐서 데이터 플로우 인터페이스(tensor data flow interface)를 포함한다. 정보에 대한 사용자 질의를 시스템이 수신함에 응답하여, GPU는 각 데이터 세트들의 엔티티들 간의 상관관계들(예를 들어, 유사성들)을 효율적으로 계산한다. 예를 들어, 상기 질의는 영국의 일반 인구에 비해 영국의 20살 남성들이 어떤 도메인 이름들에 보다 많은 관심을 갖는지를 나타내는 정보를 찾고자 하는 것일 수 있다. 시스템은 서로 다른 데이터세트들에 있는 엔티티들 간의 관련성들을 특징화하는 상관 점수를 계산하는 특정 유형의 상관 알고리즘(예컨대, 자카드(jaccard) 유사성 알고리즘)을 실행함으로써, 상관관계를 산출한다. 시스템은 GPU에서 계산된 상관 점수를 사용하여 결과 세트를 생성하며, 결과 세트는 수신된 질의에 응답하는 정보를 제공한다.
도 1은 컴퓨팅 시스템의 프로세서를 이용하여 엔티티들 사이의 상관관계를 결정하는 컴퓨팅 시스템(100)의 블록도이다. 시스템(100)은 일반적으로 컴퓨팅 서버(102), 엔티티 상관 시스템(104), 데이터 저장 디바이스(106) 및 데이터 수집(ingest) 컴포넌트(108)를 포함한다. 아래에서 더 상세히 설명되는 바와 같이, 시스템(100)은 k-min-hash 또는 k-최소값("KMV") 알고리즘을 구현하기 위해 특정 컴퓨팅 규칙들을 실행하도록 구성된 특수-목적 하드웨어 회로를 포함한다. 이러한 특정 규칙들을 실행하면, 대형의 엔티티 데이터세트들을 정렬(예컨대, 사전 정렬)하고, 특정 유형의 프로세싱 유닛에 엔티티 데이터세트들을 사전 로딩할 수 있다. 프로세싱 유닛은 데이터세트들의 엔티티들 간의 관련성을 계산하도록 구성된 프로세서 디바이스(예를 들어, 그래픽 프로세싱 유닛 GPU)일 수 있다. 구체적으로, 시스템(100)을 사용하여 구현된 기법들은 예를 들어, 엔티티들 간의 중첩 속성들 및/또는 유사성들을 결정하기 위한, 상이한 데이터 상관 계산들을 가속화하는데 이용될 수 있다.
이제 시스템(100)의 요소들을 참조하면, 컴퓨팅 서버(102)는 엔티티 상관 시스템(104)을 이용하여, 적어도 상이한 데이터세트들의 엔티티들 간의 상관관계들을 결정한다. 일부 구현예에서, 엔티티 상관 시스템(104)은 2 개 이상의 프로세서 마이크로칩을 포함하는 하드웨어 회로(예를 들어, 특수 목적 회로)의 서브-시스템으로서 서버(102) 내에 포함된다. 일반적으로, 서버(102)는 서버(102)의 컴퓨터 시스템을 집합적으로 형성하는 프로세서(예를 들어, CPU 및 GPU), 메모리 및 데이터 저장 디바이스(106)를 포함할 수 있다. 이들 컴퓨터 시스템의 프로세서는 시스템(100)의 예시적인 디스플레이 모니터에서 출력하도록 그래픽 정보를 디스플레이하기 위해 메모리 또는 데이터 저장 디바이스(106)에 저장된 명령들을 포함하여, 서버(102)에 의한 실행을 위한 명령들을 프로세싱한다.
일부 구현예에서, 상기 저장된 명령들의 실행은 본 명세서에 서술된 하나 이상의 액션들이 서버(102) 또는 시스템(104)에 의해 수행되게 할 수 있다. 다른 구현예에서, 다수의 프로세서들은 다수의 메모리들 및 임의 유형의 메모리와 함께 적절하게 사용될 수 있다. 예를 들어, 서버(102)는 여러 다른 컴퓨팅 디바이스와 연결될 수 있으며, 본 명세서에 서술된 액션들, 동작들, 또는 논리적 흐름들의 일부를 수행하는 각각의 디바이스(예를 들어, 서버 뱅크, 서버 그룹, 모듈들 또는 다중 프로세서 시스템)에 연결될 수 있다.
시스템(104)은 데이터 호스팅 서비스(110), 데이터플로우 모듈(112) 및 프로세서 모듈(114)을 포함한다. 데이터 호스팅 서비스(110)는 데이터플로우 모듈(112)을 이용하여 프로세서 모듈(114)과 인터페이스하도록 구성되어, 데이터 수집 컴포넌트(108)에서의 사용자 상호작용에 응답하여 모듈(114)에서 프로세싱하기 위한 데이터를 제공한다. 일부 구현예에서, 호스팅 서비스(110)는 상이한 유형들의 데이터를 획득하거나 수신하기 위해, 다양한 상이한 데이터 소스들에 대한 실시간 액세스를 하도록 구성된다. 획득된 데이터는 데이터 플로우 모듈(112)의 데이터 플로우 관리 피처(후술 됨)을 사용하여 모듈(114)에서 프로세싱하기 위해 제공될 수 있다. 예를 들어, 시스템(104) 및 호스팅 서비스(110)는 수집 컴포넌트(108)와 상호작용하여, 수집 컴포넌트(108)에서의 사용자 상호작용으로부터 생성된 질의 데이터(120)를 수신한다. 유사하게, 시스템(104) 및 호스팅 서비스(110)는 저장 디바이스(106)에 액세스하여, 모듈(114)에서 프로세싱하기 위해 다양한 세트들의 데이터(예를 들어, 데이터 세트들)를 획득할 수 있다.
호스팅 서비스(110)는 "스케치(sketches)"에 대응하는 정보 데이터베이스를 포함한다. 일부 구현예에서, 이러한 스케치들은 저장 디바이스(106)로부터 획득된 데이터세트들에 대해 수행된 분석 및 정보 분류에 기초하여 호스팅 서비스(110)의 데이터베이스에 저장하기 위해 생성된다. 호스팅 서비스(110)의 데이터베이스는 다양한 스케치들을 포함할 수 있는바, 이들 스케치들은 정보 유형에 의해서 그룹화되거나 또는 달리 특징화될 수 있다. 예를 들어, 데이터베이스는 다양한 유형의 사용자 질의들, 사람들, 개인들, 상이한 지리적 지역들에 대한 인구 통계(demographics), 도메인 이름들, 상용 제품들 또는 다양한 디지털 및 실제 아이템 또는 객체들에 대응하는 사전 정렬된 엔티티 데이터의 스케치들을 포함할 수 있다. 일부 구현예에서, 데이터베이스에 저장된 각 스케치는 스케치를 형성하는 엔티티들(또는 질의들)에 대한 정보를 특징화하기 위한 고유한 유형 표시자에 의해 식별된다. 예를 들어, 고유한 유형 표시자는 특정 유형의 엔티티(예컨대, 사람들, 위치들, 디지털 자산 또는 각각의 조합) 또는 질의 데이터(120)를 사용하여 획득되고 스케치의 엔티티들을 참조하는 특정 유형들의 질의들에 대한 정보를 포함하는 것으로 스케치를 식별할 수 있다.
본 명세서에서 이용되는 바와 같이, "스케치"는 사람들의 세트 또는 사물들(things)의 세트를 서술하는 데이터 어레이이다. 예를 들어, 스케치는 미국에 사는 사람들의 세트 또는 영국에 사는 사람들의 다른 세트가 될 수 있다. 추가적으로 또는 대안적으로 스케치는 사람들, 디지털 자산들 또는 식별자들의 세트일 수 있다(예컨대, 특정 날짜에 및/또는 특정 지리적 위치에서 특정 URL(예: www.example.com)에 액세스한 IP 어드레스들). 일부 구현예에서, 다수의 스케치들의 데이터베이스에 있는 각 스케치는 고유한 유형 표시기를 통해 그룹화된 사람들(또는 사람들 또는 아이템들에 할당된 각각의 식별자)의 세트들일 수 있다. 예를 들어, 제 1 스케치는 영국의 특정 도시(예: 런던)에 거주하는 18세의 사람들(18-year-olds)를 포함할 수 있고(여기서 각 18 세는 개별 엔티티이며), 반면에 제 2 스케치는 소정 시간-프레임 동안 사용자에 의해 클릭되거나 상호작용되었던 소정 유형들의 온라인 컨텐츠(예컨대, 스폰서된 컨텐츠 아이템)를 포함할 수 있다.
아래에 보다 상세히 설명되는 바와 같이, 시스템(104)은 저장 디바이스(106)로부터 획득된 데이터세트들 및 질의 데이터(120)로부터 식별된 질의들을 이용하여 다수의 데이터 어레이를 생성하도록 구성된다. 데이터 어레이는 모듈(114)에서 프로세싱되어 결과 세트들을 생성하며, 결과 세트들은 수집 컴포넌트(108)와 상호작용하는 사용자에 의해 제출된 질의에 응답한다. 일부 구현예에서, 상기 질의는 수집 컴포넌트(108)를 통해 시스템(100)에 의해 실시간으로 수신되는 현재 질의이다. 일부 구현예에서, 시스템(104)은 수신된 질의와 연관된 엔티티 유형을 결정하고, 호스팅 서비스(110)의 데이터베이스로부터 액세스된 적어도 2 개의 데이터 어레이들(또는 스케치들)를 식별하도록 연관된 엔티티 유형을 이용하고, 그리고 데이터베이스로부터 액세스된 적어도 2 개의 데이터 어레이들을 이용하여 질의를 프로세싱한다. 질의를 프로세싱함에 응답하여, 시스템(104)은 질의에 응답하는 결과 세트를 생성한다.
데이터 플로우 모듈(112)은 시스템(100)의 데이터 플로우 관리 기능을 제공하도록 구성된 컴퓨팅 모듈일 수 있다. 일부 구현예에서, 데이터 플로우 모듈(112)은 애플리케이션 프로그램 인터페이스(API) 및 머신-러닝(ML) 프레임워크를 제공하도록 구성된다. API 및 ML 프레임워크는 시스템(100)이 호스팅 서비스(110)를 통해 모듈(114)에서 수신된 데이터세트들을 프로세싱 및 정렬하기 위한 KMV 데이터 프로세싱 알고리즘을 사용할 수 있게한다. 예를 들어, 모듈(114)의 제 1 프로세서(116)(예를 들어, CPU 116)는 데이터 플로우 모듈(112)의 API 기능을 이용하여 사전 정렬된 데이터 어레이들을 생성하기 위해 데이터세트들을 수신할 수 있다. 일반적으로, 제 1 프로세서(116)는 예시적인 CPU 이며, 여기서 "CPU(116)"으로 지칭될 수 있다. 일부 구현예에서, 데이터 플로우 모듈(112)은 호스팅 서비스(110)와 통신하여, 모듈(114)에서 처리하기 위한 데이터세트들을 수신하거나 획득한다. 아래에 더 상세히 설명되는 바와 같이, CPU(116)는 KMV 알고리즘을 실행함으로써 데이터세트들을 프로세싱하여, 다수의 각각의 스케치들 또는 데이터 어레이들을 생성하며, 이들 각각은 미리정의된 크기 속성을 갖는다. 또한, 모듈(114)의 제 2 프로세서(118)(예를 들어, GPU 118)는 제 2 프로세서(118)의 메모리 캐시에 로딩하기 위한 다수의 데이터 어레이들의 적어도 서브세트를 수신할 수 있다. 일반적으로, 제 2 프로세서(118)는 예시적인 GPU이고, 여기서는 "GPU 118"로 지칭된다.
데이터 플로우 모듈(112)의 ML 프레임워크를 이용하여, 시스템(100)은 GPU(118)로 하여금 알고리즘(예컨대, 상관 알고리즘)을 실행하게 하여, GPU(118)의 메모리 캐시에 로딩된 데이터 어레이들을 이용하여 상관 분석을 수행한다. 특히, GPU(118)는 다양한 유형의 ML 알고리즘들을 실행하는데 사용되는 여러 유형의 GPU들 중 임의의 것이 될 수 있다. 이러한 맥락에서, 데이터 플로우 모듈(112)은, 모듈(114)의 프로세서 디바이스로서 포함될 수 있는 상이한 유형들의 GPU들 각각과 인터페이스하기 위해 특정 커널이 제공되도록 구성된다. 일부 구현예에서, 데이터 플로우 모듈(112)은 모듈(114)에 포함될 수 있는 상이한 유형들의 GPU들에서 실행하기 위한 소프트웨어 명령 및 기타 코딩된 알고리즘을 설계자가 생성할 수 있도록 구성된다. 일부 구현예에서, 계산들을 수행하도록 알고리즘들이 실행될 수 있는바, 이는 엔티티들과 관련된 유사성들, 추론들, 확률들 및 상관관계들을 결정하기 위해, 또는 대규모 데이터세트들의 엔티티들 간의 관계들을 식별하도록 통계 분석을 이용하기 위한 것이다.
프로세서 모듈(114)은 CPU(116)와 GPU(118)를 포함한다. 전술한 바와 같이, CPU(116)는 호스팅 서비스(110)를 통해 획득된 데이터세트를 수신하고, KMV 데이터 프로세싱 알고리즘을 실행하여 데이터를 사전 정렬하고, 그리고 KMV 알고리즘(예컨대, 스케치 알고리즘)을 실행 및 사전 정렬된 데이터에 기초하여 다수의 데이터 어레이들을 생성한다. 모듈(114)은 미리결정된 프로세싱 스케줄(예를 들어, 하루에 한 번 배치(batch) 프로세싱)에 기초하여 CPU(116)에서 구동 또는 실행되는 배치(batch) 프로세스를 이용하여 데이터세트에서 엔티티 데이터를 정렬하고 데이터 어레이를 생성하도록 구성될 수 있다. 일부 구현예에서, 모듈(114)은 호스팅 서비스(110)를 통해 획득된 데이터세트에서 엔티티 데이터의 스트림들의 분석에 기초하여 사전 정렬된 데이터 어레이를 생성하도록 구성된다.
다수의 사전 정렬된 데이터 어레이들 각각은 미리정의된 사이즈 속성을 각각 갖는 각각의 스케치들에 대응한다. 예를 들어, 미리정의된 크기는 각 데이터 어레이가 64,000("64k") 엔티티들 이하를 포함하도록 설정될 수 있다. 일부 구현예에서, 사이즈 속성은 64k 엔티티 보다 많을 수도 있지만, GPU(118)의 소정 메모리 용량을 초과하는 특정 수량의 엔티티 보다 적을 수 있다. 일부 구현예에서, 데이터 어레이의 미리정의된 사이즈 속성은 GPU(118)의 캐시 메모리 용량에 기초하여 설정된다.
GPU(118)는 GPU(118)의 메모리/저장 매체에 로드되는 복수의 데이터 어레이 또는 데이터 어레이들의 다수의 그룹들을 수신한다. 예를 들어, 하나의 일례에서, GPU(118)는 CPU(118)가 데이터 어레이를 생성한 이후에 GPU에서 발생하는 단일 데이터 로드에 기초하여 다수의 엔티티들에 대한 정보를 수신한다. 데이터 어레이는 GPU의 다른 메모리 섹션에 비해 "콤팩트"하다고 간주될 수 있는 GPU 메모리 영역에 로딩 및 저장된다. 예를 들어, 다수의 데이터 어레이들은 데이터 어레이 당 64k 엔티티들의 미리정의된 사이즈 속성을 기반으로 GPU의 컴팩트 캐시 메모리에 로드될 수 있다. 즉, 64k 엔티티들의 각 엔티티에 대한 정보 밀도(예를 들어, 파라미터 값)가 컴팩트 캐시 메모리의 임계 용량을 초과하지 않는 경우, 데이터 어레이들은 각각 컴팩트 캐시 메모리에 저장하도록 구성된다. 일부 구현예에서, 데이터 어레이는 텐서를 나타낼 수 있으며, 따라서 본 명세서에서 데이터 구조 또는 질의 텐서 또는 엔티티 텐서로 지칭될 수 있다. 일부 구현예에서, 텐서는 기하학적 객체이고, 예시적인 기하학적 객체들는 매트릭스들 및 데이터 어레이들을 포함한다. 예시적인 텐서는 단일 차원 기하학적 객체 또는 다차원 기하학적 객체일 수 있다.
도 2 내지 도 4를 참조하여 아래에서 더 상세히 설명되는 바와 같이, 시스템(100)에서 수신된 소정 질의에 대하여, 단일 데이터 로딩 동작이 수행될 수 있으며, 따라서 GPU(118)는 질의에 대한 응답을 생성하기 위한 데이터를 수신한다. 로딩 동작 동안, GPU(118)는 상이한 엔티티들에 대한 정보를 갖고 그리고 수신된 질의의 유형 표시자와 매칭되는 엔티티 유형 표시자를 갖는 적어도 하나의 데이터 어레이를 수신할 수 있다. GPU(118)는 또한 수신된 질의에 관련되거나 수신된 질의에 대해 임계 분량의 관련성을 갖는 질의 텐서를 수신할 수 있다. GPU(118)는 데이터 로딩 동작 동안 획득된 정보를 사용하여 질의에 대한 응답을 생성한다. 일부 구현예에서, 배치 프로세스가 실행되어, 시스템(104)은 호스팅 서비스(110)의 데이터베이스에 대한 다수의 스케치들을 계산한다. 그런 다음 GPU(118)는 데이터 플로우모듈(112)과 연관된 API를 통해 다수의 스케치들 또는 데이터 어레이들 각각에 대한 정보 또는 파라미터 값들을 로드한다. 일부 구현예에서, GPU(118)는 호스팅 서비스(110)를 통해 액세스가능한 예시적인 교착(impasse database) 데이터베이스로부터 그 자신의 내부 메모리로 이러한 데이터를 로딩한다. 교착 데이터베이스는 데이터 어레이들을 로드하고 수집 컴포넌트(108)에서 수신된 질의들을 발행하기 위해 데이터플로우 API를 통해 CPU(116) 및 GPU(118)와 통신하는 교착 서비스와 연관될 수 있다. 예를 들어, 런타임 동안, 발행된 질의들은 호스팅 서비스(110)로부터, 데이터플로우 모듈(112)의 API를 통해, GPU(118) 로의 질의 경로를 사용하여 GPU(118)에 로드된 데이터 어레이에 대해 프로세싱된다.
도 2는 각 데이터 어레이의 엔티티들 간의 상관을 결정하기 위한 예시적인 프로세스(200)의 흐름도이다. 예를 들어, 프로세스(200)는 GPU(116)에서 실행되는 유사성 알고리즘을 사용하여 엔티티들 간의 유사성을 계산하기 위한 프로세스 흐름 일 수 있다. 프로세스(200)는 위에서 설명된 시스템(100)을 사용하여 구현되거나 실행될 수 있으며, 프로세스(200)의 설명들은 위에서 언급된 시스템(100)의 컴퓨팅 리소스들을 참조할 수 있다. 일부 실시예에서, 프로세스(200)의 설명된 액션들은 본 문서에 서술된 컴퓨팅 시스템의 적어도 하나 이상의 프로세서 및 메모리에 의해 실행될 수 있는 프로그래밍된 소프트웨어 명령들로 구현될 수 있다.
이제, 프로세스(200)를 참조하면, 시스템(100)의 제 1 프로세싱 유닛(예를 들어, CPU)(116)은 저장 디바이스(106)에서 저장된 데이터(116)를 획득한다. 획득된 데이터는 다수의 엔티티들(202)에 대한 정보를 포함한다. 예를 들어, 하나의 데이터 어레이의 엔티티들은 다양한 유형들의 아이템들, 사람들, 또는 다양한 전자적 및 실제 아이템들 혹은 객체들을 포함하는 데이터 세트로 표현될 수 있다. 예를 들어, 하나의 데이터세트(데이터 어레이)의 엔티티들은 소정의 지리적 영역(예컨대, 영국(UK))에 거주하는 특정 인구 그룹(예컨대, 20 대 남성)의 사람들 또는 사용자들일 수 있다. 유사하게, 다른 데이터세트의 엔티티들은 다양한 유형들의 아이템들 또는 동일한 지리적 영역에 또한 거주하는 다른 인구 통계(예: 일반 인구의 사용자들)의 사용자들일 수 있다.
프로세싱 유닛/CPU(116)는 저장 디바이스(204)로부터 획득된 데이터를 이용하여 다수의 데이터 어레이들(306)을 생성한다. 다수의 데이터 어레이들(306)의 각각의 생성된 데이터 어레이(308, 310, 312)는 일반적으로 그 데이터 어레이에 할당된 다수의 엔티티들의 각 엔티티에 대한 하나 이상의 파라미터 값들을 포함한다. 즉, 도 3의 DataArray_1(308)의 "Entity_1,1"은 DataArray_1에 있는 다수의 엔티티들 중 제 1 엔티티에 대한 하나 이상의 파라미터 값들을 나타낼 수 있으며,도 3의 DataArray_1(308)의 "Entity_1,2"는 제 2 엔티티에 대한 하나 이상의 파라미터 값들을 나타낼 수 있다(기타 등등). 파라미터 값들은 특정 유형들의 엔티티들을 정의할 수 있을 뿐만 아니라, 데이터 어레이에서 개별 엔티티들의 속성들 또는 특징들을 정의할 수 있다. 예를 들어, 파라미터 값은 사람에 해당하는 엔티티 유형을 정의할 수 있으며, 여기서 사람(예컨대, 엔티티)의 속성들은 사람의 성별, 사람의 나이 또는 사람의 지리적 위치와 같이 사람이 제공한 정보를 포함한다. 일부 구현예에서, 엔티티 유형은 웹 기반 또는 디지털 리소스(예를 들어, 엔티티)에 대응할 수 있고 웹 기반 리소스/엔티티의 속성들은 도메인 이름, URL(uniform resource locator) 또는 웹 기반 엔티티와 연관된 인터넷 프로토콜(IP) 어드레스일 수 있다.
본 명세서에서 논의되는 시스템이 사용자들에 대한 개인 정보를 수집 및/또는 사용하는 경우, 개인 정보(예를 들어, 사용자의 소셜 네트워크, 소셜 활동 또는 활동들, 사용자의 선호도 또는 사용자의 현재 위치에 대한 정보)를 수집 및/또는 사용할 수 있는 프로그램들 또는 피처들을 활성화/비활성화 또는 제어할 수 있는 기회가 사용자에게 제공될 수 있다. 또한, 소정 데이터는 저장 또는 사용되기 전에 하나 이상의 방식으로 처리될 수 있으므로 사용자와 관련된 개인 식별 정보가 제거된다. 예를 들어, 사용자의 신원을 익명화하여 개인 식별 정보가 사용자에 대해 결정되지 않도록하거나 또는 사용자의 특정 위치를 확인할 수 없도록, 위치 정보가 획득된 사용자의 지리적 위치가 일반화될 수 있다(예컨대, 도시 레벨, 우편 번호 레벨 또는 주 레벨로).
시스템(100)은 저장 디바이스(106)를 통해 액세스가능한 상이한 데이터 소스들을 분석 및 프로세싱하도록 구성된다. 예를 들어, CPU(116)는 소정 사용자들에 의해 상호작용되는 임프레션 로그들(impression logs: "노출 로그"라고도 함)을 포함하는 데이터 소스들 또는 다른 사용자들이 액세스한 검색 엔진으로부터의 검색 데이터와 같은 데이터 소스들을 분석 및 프로세싱할 수 있다. 일부 구현예에서, 사용자 그룹들에 의해 또는 각 사용자에 대한 사용자 식별자(ID) 그룹들에 의해 형성되는 엔티티들은 연령, 성별, 관심사, 위치 또는 그룹 내 각 사용자의 다른 특징에 기초하여 서로 다른 그룹들로 나누어질 수 있다.
KMV 알고리즘은 엔티티들의 그룹 내의 각 사용자 또는 각 사용자 ID에 대한 정보를 이용하여 프로세싱되는 예시적인 해시 알고리즘을 나타낼 수 있다. 일부 구현예에서, 다수의 사용자 ID 세트들은 데이터 어레이를 생성하기 위해 데이터를 사전 정렬하기 위한 이미터로서 기능하는 큰 파라미터 값들로 표현된다. 예를 들어, 데이터 사전 정렬은 임의의 정수 문자열을 균일하게 분산된 이미 터로 해시하여 데이터 어레이를 생성하는 해시 알고리즘을 사용하여 수행된다. 따라서, 예시적인 사용 사례의 경우, CPU(116)는 미리 정의된 전체 사용자 세트를 나타내는 스케치를 생성하기 위해 사용자 ID를 정렬하도록 KMV 알고리즘을 실행한다. 예를 들어, 스포츠 관련 노출(impression)과 상호작용하는 18 세에서 35 세 사이 남성의 1000 만 사용자 ID들로 구성된 전체 사용자 세트로부터, CPU(116)는 정렬을 수행하여, 전체 사용자 세트에 대한 스케치 표현으로서, 오직 최소 64,000 개의 사용자 ID의 스케치 또는 데이터 어레이를 생성할 수 있다. 일부 구현예에서, 사용자 ID들을 참조하여 정렬하는 대신에, 시스템(100)은 정보에 포함된 임의의 속성 또는 파라미터 값을 참조하여 데이터 세트의 정보를 정렬하도록 구성될 수 있다.
생성된 각각의 데이터 어레이는 제 2 프로세싱 유닛(예를 들어, GPU)(118)의 각각의 컴퓨팅 셀에서 프로세싱되도록 구성된다. 시스템(100)은 적어도 2 개의 데이터 어레이를 GPU(118)에 제공하여, 스코어링 데이터를 결정하고 그리고 계산된 스코어링 데이터(206)에 기초하여 데이터 어레이들의 엔티티들 사이에서의 관련성을 결정한다. 예를 들어, 하나 이상의 질의 세션에 대한 단일 인스턴스에서 스케치들이 GPU(118)의 메모리에 로드된다. 질의 세션은 스케치들의 엔티티들 간의 관련성을 나타내는 결과 세트를 획득하고자 하는 사용자에 의해 엔티티 상관 시스템(104)이 질의되는 시간을 나타낸다. 따라서, 질의 시간에서, 사용자가 제출한 질의에 대한 응답이 다른 상관 관계 시스템에 비하여 향상된 속도와 효율성으로 결정될 수 있는데, 왜냐하면 질의를 프로세싱하는데 사용되는 데이터를 시스템이 미리 사전 정렬하였으며 그리고 미리 로딩하였기 때문이다. 일부 구현예에서, 임의의 주어진 순간에, 사용자는 질의 경로를 통해 질의로서 새로운 스케치를 시스템(104)에 전달함으로써, 시스템(104)에 액세스하고 랜덤하게 질의할 수 있다.
GPU(118)는 GPU(118)의 각 셀에서 데이터 어레이를 동시에 프로세싱하기 위해 상관 알고리즘을 실행하도록 구성된다. 예를 들어, 프로세싱 유닛(118)은 각각의 컴퓨팅 셀(208)에서 수행된 계산들에 기초하여, 하나 이상의 상관 점수를 계산한다. 특히, GPU(118)는 상관 알고리즘(예를 들어, 자카드 유사성 알고리즘)을 실행하고 그리고 데이터 어레이의 엔티티들에 대한 파라미터 값들을 사용하여 상관 점수를 계산한다. 파라미터 값들은 상관 알고리즘을 포함하는 수학적 계산을 위한 입력으로 제공된다. 시스템(100)은 계산된 상관 점수에 기초하여 적어도 2 개의 데이터 어레이들의 엔티티들 간의 관련성을 결정한다(210). 일부 구현예에서, 이러한 관련성은 엔티티들의 적어도 서브세트 간의 중첩 속성 또는 각각의 데이터 어레이의 엔티티들 간의 유사성을 나타낸다. 예를 들어, 시스템(100)은 GPU(118)의 단일 컴퓨팅 셀에서 교집합들(intersections) 및 합집합들(unions)을 계산하고 교집합 및 합집합을 특징화하는 상응하는 상관 점수를 계산함으로써 엔티티들 간의 유사성을 결정한다.
관련성들의 스코어링 및 결정을 추가로 예시하기 위하여, 런 타임 동작 시나리오 동안, 호스팅 서비스(100)는 프로세싱을 위한 질의 텐서로서 새로운 스케치를 전달하기 위해 GPU(118)와 인터페이스하여, 질의에 응답하는 결과를 결정한다. 예를 들어, 사용자는 호스팅 서비스(110)가 사용자 질의에 대한 응답을 제공하는(예를 들어, 실시간으로) 실시간 서비스 플랫폼의 일부인 시스템(100)에 액세스할 수 있다. 일부 구현예에서, 사용자는 호스팅 서비스(110)를 통해 제공되는 GPU(118)에 대한 인터페이스를 사용하여 GPU(118)에 의한 실시간 프로세싱을 위한 질의를 제출한다. GPU(118)는 본 문서에서 설명된 기술들을 사용하여 질의를 프로세싱하여, 사용자가 제출한 질의에 대한 응답으로서 결과, 또는 결과들의 세트들을 반환한다. GPU(118)는 상관 알고리즘을 실행하여 데이터베이스 내의 소정 세트(또는 데이터세트)에 대한 모든 데이터 어레이와 사용자 질의의 교집합 및 합집합을 계산한다.
예를 들어, 교집합들(intersections) 및 합집합들(unions) 그리고 대응하는 상관 점수를 결정하기 위한 대규모 계산의 일부분들은 GPU(118)의 개별 컴퓨팅 셀들에서 처리된다. 질의는, GPU(118)의 각각의 컴퓨팅 셀(예컨대, 스레드 또는 코어)에 로딩된 스케치들 또는 데이터 어레이들을 나타내는 데이터 구조들에 대하여 프로세싱된다. 시스템(104)은 대규모 병렬 계산들을 수행함으로써 질의를 프로세싱하며, 이는 데이터 구조들 각각에 대하여 질의를 프로세싱하는데 사용되는 GPU의 모든 컴퓨팅 셀을 포함할 수 있다. 달리 말하면, 각각의 데이터 구조는 하나의 GPU 컴퓨팅 셀에서 프로세싱되기 위해 로딩되는 엔티티들의 다른 데이터 어레이를 나타낼 수 있다. 예를 들어, 미국에 거주하는 특정 연령 그룹의 여성들(제 1 엔티티)에 대한 64k 사용자 ID들을 갖는 제 1 스케치는 제 1 컴퓨팅 셀에 로딩될 수 있으며, 따라서 이러한 제 1 스케치의 제 1 엔티티들에 대하여 질의가 프로세싱될 수 있다. 이와 유사하게, 영국에 거주하는 특정 연령대의 남성들(제 2 엔티티)에 대한 64k 사용자 ID들을 갖는 제 2 스케치는 제 2의 상이한 컴퓨팅 셀에 로딩될 수 있으며, 따라서 이러한 제 2 스케치의 제 2 엔티티들에 대하여 질의가 프로세싱될 수 있다.
일부 구현예에서, 호스팅 서비스(110)는 엔티티들 간의 유사성들 또는 엔티티들의 서로 다른 세트들을 포함하는 조건부 확률들과 같은 관련성들을 나타내는 결과들을 반환하도록 질의들을 수신 및 프로세싱하는 정보 라이브러리를 나타낸다. 예를 들어, 질의(또는 커맨드)는 "일부 이전 질의와 관련된 모든 조건부 확률들은 무엇입니까?"일 수 있다. 또 다른 질의는 특정 웹사이트나 URL을 방문한 모든 연령대의 사람들의 조건부 확률들과 관련이 있을 수 있다. 마찬가지로, 또 다른 질의는“영국에 거주하는 40 세 남성들에 대한, 미국에 거주하는 30 세 여성들이 방문한 중복 URL들은 무엇입니까?" 일 수 있다. 임의의 질의에 대해, 시스템(100)은 제 1 데이터 어레이의 엔티티들 대(vs) 제 2 데이터 어레이의 엔티티들 간의 관련성들 및 사용자가 제출한 질의에 기초하여 생성된 질의 스케치에 대한 관련성을 결정하기 위해 교집합들 및 합집합들을 계산할 수 있다.
예를 들어, 시스템(100)은 자카드(Jaccard) 유사성 알고리즘을 실행하는 GPU(118)의 각각의 컴퓨팅 셀을 이용함으로써, 관련성들을 결정하기 위해 교집합들 및 합집합들을 계산할 수 있다. 일부 구현예들에서, 실행된 알고리즘은, 질의에 의해 표시된 제약들에 대해 GPU(118)의 각각의 컴퓨팅 셀에서 프로세싱된 데이터 구조들의 엔티티들 사이의 유사성의 각각의 측정을 나타내는 유사성 점수를 결정하기 위해 사용된다. 시스템(104)은 GPU(118)를 사용하여 적어도 2 개의 세트들 또는 데이터 어레이들에 포함된 엔티티들의 비교에 기초하여 자카드 유사성(또는 상관) 점수를 계산한다. 예를 들어, 자카드(jaccard) 유사성 점수는 2 개의 세트들 사이에서 어떤 엔티티들이 공유되는지 및 2 개의 세트들 사이에서 어떤 엔티티들이 구별되는지에 대한 수치적 표시를 제공할 수 있다. 일부 구현예에서, 자카드 유사성 점수는 0 %에서 100 %까지의 범위를 갖는, 2 개의 데이터 세트들에 대한 유사성 측정값을 제공한다. 예를 들어, 백분율이 높을수록 엔티티들의 2 개의 세트들이 더 유사하다. 일반적으로 상관 점수는 유사성 점수, 조건부 확률, 통계적 관계를 나타내는 메트릭 또는 사용자 질의에 결과를 제공하기 위한 관심 순위들을 정의하는 특정한 출GPU(118)는 다음의 커맨드들 i) 내지 iv)를 실행하도록 구성될 수 있다. 이들 커맨드들은 데이터 어레이들의 엔터티들 간의 관련성들을 결정하기 위한 컴퓨터로 구현되는 규칙들의 특정 세트를 나타낼 수 있다:
i) tf.sketch_gpu_load_table(query_tensor)
ii) tf.sketch_gpu_load_table(GPU_table_uri)
iii) tf.sketch_gpu_method(simlarity_method_enum)
→ J(X, Y) = |X∩Y|/|X∪Y|(formula_similarity_score)
iv) tf.sketch_gpu_results(top_k_return)
이러한 커맨드들을 실행함에 응답하여, 시스템(104)은, 특정한 유사성 방법에 기초하여 그리고 GPU_table_uri 의해 사전-로딩 및 지정되는 엔티티 데이터를 이용하여, 질의 텐서의 최상위 k 개의 유사한 결과들을 반환한다. 일부 구현예에서, query_tensor는 벡터화된 방식으로 질의 엔티티를 나타내는 벡터(예를 들어, 고차원 벡터)일 수 있다. GPU_table_uri는 테이블 유형과 테이블 이름(예컨대, sstable a1_inmarket_profile)을 지정할 수 있으며, 여기서 이러한 테이블은 로드 커맨드 tf.sketch_gpu_load_table을 사용하여 GPU(118)에 미리 로딩된다. Simlarity_method_enum은 선택된 유사성 계산 방법을 지정할 수 있다. 일부 구현예에서, 선택된 유사성 계산 방법은 자카드 유사성 방법 또는 코사인 유사성 방법과 같은 방법일 수 있다.
교집합들(intersections) 및 합집합들(unions)을 참조하여, 시스템(100)은 임의의 2개의 세트들(2개의 상이한 어레이들/스케치들의 엔티티들)의 교집합의 사이즈 및 일반적인 세트 동작을 참조하여 교집합 및 합집합의 비율을 계산할 수 있다. 이러한 계산들은 다양한 다른 컴퓨팅 프로세스들이 구축될 수 있는 기본적인 기준을 제공한다. 이러한 맥락에서, 시스템(100)은 다양한 정보 소스들로부터 획득된 데이터를 사용하여, 엔티티들의 세트들 간의 여러 유형들의 통계적 관련성을 결정할 수 있다. 예를 들어, 자카드 유사성은 결정될 수 있는 하나의 통계적 관련성인 반면에, 확률들(예: 조건부 확률들)은 다른 통계적 관련성을 나타낸다. 일반적으로, 임의의 관련된 통계는 설명된 가르침에 따라 세트들의 카디널리티들에 대해 계산될 수 있다.
시스템(104)는 알고리즘들의 서브세트들 중에서 특정한 상관 알고리즘을 선택하도록 구성될 수 있다. 알고리즘은 유사성 알고리즘 또는 조건부 확률 알고리즘 중 하나로 선택할 수 있다. GPU(118)는 특정 상관 알고리즘을 실행하고 그리고 적어도 2 개의 데이터 어레이들의 엔티티들 사이의 교집합 및 적어도 2 개의 데이터 어레이들의 엔티티 사이들의 합집합(union)을 계산한다. 시스템(104)은 교집합 및 합집합에 기초하여 상관 점수를 계산한다. 일부 구현예에서, 선택된 상관 알고리즘은 자카드 유사성 알고리즘, 코사인 유사성 알고리즘, 고유한 통계 알고리즘 또는 데이터 세트들 간의 조건부 확률을 결정하기 위한 특정 계산 프로세스이다.
도 3 은 도 1의 컴퓨팅 시스템의 적어도 하나의 프로세서와 연관된 예시적인 아키텍처(300)이다. 아키텍처(300)는 GPU/CPU 전송 블록(302) 및 각각의 데이터 어레이(308, 310 및 312)를 포함한다. 일부 구현예에서, 데이터 어레이(312)는 수집 컴포넌트(108)를 통해 수신된 사용자 질의에 기초하여 생성되는 질의 텐서이다. 아래에서 보다 상세히 설명되는 바와 같이, 질의 텐서(312)는 수신된 질의에 응답하는 결과를 결정하기 위해 프로세싱된다. 전술한 바와 같이, 생성된 데이터 어레이들(308, 310, 312) 각각은 CPU(116)를 사용하여 생성되고 그리고 전송 블록(302)을 사용하여 GPU(118)에 로드된다. 특히, 데이터 어레이들(308, 310, 312) 각각은 GPU(118)의 컴퓨팅 셀 각각에서 프로세싱하도록 구성된다. 시스템(100)은 전송 블록(302) 및 컴팩트 메모리(예를 들어, GPU 캐시)를 사용하여, 데이터 어레이의 다양한 사전 정렬된 엔티티들을 나타내는 데이터를 로드하고 저장한다.
예를 들어, 적어도 데이터 어레이들(308 및 310)의 엔티티들은, 특정한 지리적 영역(예를 들어, 영국)에 거주하는 특정 인구 통계(예컨대, 20대 남성들)의 사용자들일 수 있다. GPU(118)의 콤팩트 메모리에 저장되는 데이터 어레이들(308 및 310) 각각의 사전 정렬된 엔티티들의 세트들을 적어도 이용하여 상관 계산이 수행된다. 데이터 어레이들은 데이터 어레이들의 미리정의된 사이즈 및 데이터 구조에 기초하여 GPU(118)의 콤팩트 메모리 또는 데이터 캐시에 저장되도록 구성된다. 예를 들어, 각각의 데이터 어레이가 64,000("64k")개 이하의 엔티티들을 포함하도록, 상기 미리정의된 사이즈가 설정될 수 있다. 일부 구현예에서, 각각의 데이터 어레이의 이러한 미리정의된 사이즈 속성은 GPU(118)의 프로세서 코어 구조에 기초하여 도출될 수 있다.
계산들을 수행하기 위해 상관 알고리즘을 실행하면, GPU(118) 내에서 대규모 동시 프로세싱(예를 들어, 대량의 병렬 연산)을 유발할 수 있다. 예를 들어, 동시 프로세싱은 하나 이상의 전송 블록들(302) 내의 컴퓨팅 셀들(스레드 블록들 304)의 서브세트들을 수반할 수 있다. 계산들이 GPU(118)의 모든 컴퓨팅 셀들의 임계 백분율 이상을 사용하는 경우, 계산들은 "대규모 동시 프로세싱" 또는 "대량의 병렬" 이라고 간주될 수 있다. 예를 들어, 대량의 병렬 계산은 GPU(118)에서 사용가능한 컴퓨팅 셀들의 70% 이상을 사용할 수 있다(또는 일부 다른 적절한 임계 분량). 스레드 그룹들(스레드 블록들)은 직렬 및 병렬 실행 모두에 대해 구성될 수 있다. 일부 구현예에서, GPU(118)는 수천 개의 컴퓨팅 셀들 또는 스레드 블록(304)의 스레드들을 포함한다. 본 명세서에서 사용되는 바와 같이, GPU(118)의 컴퓨팅 셀은 스레드들의 그룹을 나타내는 스레드 블록에 의해 정의된다. 도 3에 도시된 바와 같이(후술됨), 각각의 스레드 블록은 대응하는 전송 블록(302)에 매핑될 수 있다. 일부 구현예에서, 시스템(100)은 다수의 전송 블들을 포함하고 그리고 각각의 전송 블록은 CPU 생성 스케치들이 스레드 블록(304)의 컴퓨팅 셀들에 로딩되기 위해 전송되는 전송 경로를 정의한다.
도 4는 CPU(116) 및 GPU(118)를 포함하는 컴퓨팅 프로세스와 관련된 예시적인 프로세싱 아키텍처(400)이다. GPU(118)의 각각의 스레드 블록(304)(다수의 컴퓨팅 셀들을 포함함)에 로드 및 저장되는 각각의 데이터 어레이는, 그래픽 프로세서에 포함된 컴퓨팅 셀들의 분량에 따라 사이즈가 결정된다. 일부 구현예에서, 시스템(104)은 GPU(118)로 하여금 GPU의 메모리 캐시에 각각의 데이터 어레이를 로딩 및 저장하기 위한 저장 위치들을 페치(fetch)하게하는 프로세스(402)를 실행한다. GPU(118)의 메모리 캐시는 컴팩트 메모리를 나타낼 수 있으며, 각 데이터 어레이는 컴팩트 메모리의 저장 위치들의 데이터 용량에 따라 크기가 결정된다. GPU(118)에 로딩된 적어도 하나의 데이터 어레이는 GPU(118)의 컴퓨팅 셀 각각에서 액세스하도록 구성된 질의 텐서(예: 데이터 어레이 312)이다. 예를 들어, 각각의 데이터 어레이의 엔티티들 간의 관련성들(예를 들어, 유사성들)를 계산하도록, 질의 텐서는 복제되고 GPU(118)에서 병렬로 액세스된다. 각각의 컴퓨팅 셀은 질의 텐서의 질의 정보를 액세스 및 사용하여 각 셀에서의 각각의 상관 점수를 계산한다.
적어도 2 개의 데이터 어레이들이 질의 텐서에 대하여 GPU(118)에서 병렬 방식으로 동시에 프로세싱될 때, 시스템(104)은 별개의 데이터 어레이들의 엔티티들 간의 유사성들 및 다른 관련성들을 결정할 수 있다. 구체적으로, 엔티티들 간의 유사성들 및 다른 관련성들을 결정하기 위한 데이터 계산들을 가속화하는 기술들을 구현하는데 아키텍처(400)가 이용될 수 있다. 예를 들어, 기술들은 GPU(118)의 메모리 임계값을 초과하지 않는 사이즈 속성(예를 들어, 64k)을 갖도록 사전 정렬된 데이터 어레이를 구성하는 것을 포함할 수 있다. 기술들은 또한, GPU(118)에 데이터 어레이들을 저장하고 그리고 GPU(118)의 특정 컴퓨팅 셀에 각각의 데이터 어레이를 할당하는 것을 포함할 수 있다. 셀이 엔티티들 간의 관련성들을 결정하기 위한 관련 데이터에 신속하게 액세스할 수 있도록, 시스템(104)은 컴퓨팅 셀에 대한 각 데이터 어레이의 할당을 결정할 수 있다.
일부 구현예에서, 시스템(104)은 프로세스(404)를 실행하여, GPU(118)에 의해 산출된 계산 결과들을 CPU(116)가 페치(fetch)하게 한다. 예를 들어, CPU(116)는 계산 결과들을 나타내는 상관 점수들을 획득하고 그리고 결과들을 프로세싱하여 질의를 제출한 사용자에게 출력하기 위해 제공되는 질의 응답들을 생성한다. 일부 구현예에서, 엔티티들 간의 관련성들을 결정하는 것은 계산된 상관 점수들이 임계 점수를 초과하는지 여부를 결정하는 것을 포함한다. 계산된 상관 점수들이 임계 점수를 초과한다라고 결정함에 응답하여, 시스템(104)은 임계 점수를 초과하는 상관 점수들을 이용하여 랭킹화된 엔티티들의 목록을 생성한다.
일부 구현예에서, 시스템(104)은 질의에 대한 n 개의 베스트 매치들인 하나 이상의 데이터 어레이들을 식별하는 정보를 반환함으로써, GPU(118)에서 수행된 계산들의 결과들을 CPU(116)에 반환한다. 예를 들어, 시스템(104)은 각각의 컴퓨팅 셀에서 질의 텐서에 대하여 데이터 어레이들이 프로세싱될 때 계산되는 상관 점수들을 이용하여, 질의에 대한 n 개의 베스트 매치들을 결정한다. 일부 구현예에서, 질의와 가장 잘 매칭되는 n 개의 데이터 구조는, 임계 상관 점수를 초과하는 상관 점수를 사용하여 랭킹화된 엔티티의 생성된 목록에 포함된다. 따라서, 랭킹화된 엔티티들에 대해 생성된 목록을 분석함으로써, 질의에 가장 잘 매칭되는 n 개의 데이터 어레이가 식별될 수 있다.
일부 구현예에서, GPU(118)은 다른 여타의 상관 시스템들에 비하여, 엔티티들 간의 점수들, 계산 결과들, 및/또는 관련성들을 보다 빠른 속도로 결정할 수 있다. 이것은, 본 발명의 기술에 따르면, 특정 상관 알고리즘을 실행하기 전에 데이터를 정렬/사전 정렬함이 없이, 필요한 계산들을 GPU(118)가 수행할 수 있기 때문이다. 추가적으로, 다른 상관 시스템에 비하여, GPU(118)는 스레드 간 데이터 통신을 최소화하거나 또는 전혀 없이도 필요한 계산을 수행할 수 있다. 이것은, 본 발명의 기술에 따르면, GPU(118)의 각 컴퓨팅 셀이 추가 프로세싱을 위해 인접한 스레드 블록에 중간 결과를 전달할 필요없이, 특정 데이터 어레이 세트에 대한 계산을 수행할 수 있기 때문이다.
도 5는 클라이언트로서 또는 다수의 서버들 중 서버로서, 본 명세서에 설명된 시스템 및 방법을 구현하는데 사용될 수 있는 컴퓨팅 디바이스들(500,550)의 블록도이다. 컴퓨팅 디바이스(500)는 랩톱, 데스크톱, 워크 스테이션, 개인용 디지털 보조 디바이스, 서버, 블레이드 서버, 메인 프레임 및 기타 적절한 컴퓨터와 같은 다양한 형태의 디지털 컴퓨터를 나타내도록 의도된다. 컴퓨팅 디바이스(550)는 개인용 디지털 보조 디바이스, 셀룰러 전화, 스마트 폰, 스마트 워치, 헤드 착용 디바이스 및 기타 유사한 컴퓨팅 디바이스와 같은 다양한 형태의 모바일 디바이스를 나타내도록 의도된다. 여기에 표시된 컴포넌트, 연결 및 관계 및 기능은 단지 예시일 뿐이며 본 명세서에서 설명 및/또는 청구된 구현예들을 제한하기 위한 것이 아니다.
컴퓨팅 디바이스(500)는 프로세서(502), 메모리(504), 저장 디바이스(506), 메모리(504) 및 고속 확장 포트(510)에 연결되는 고속 인터페이스(508), 및 저속 버스(514) 및 저장 디바이스(506)에 연결되는 저속 인터페이스(512)를 포함한다. 각 컴포넌트(502, 504, 506, 508, 510 및 512)는 다양한 버스들을 사용하여 상호연결되며 공통 마더보드 상에 또는 기타 적절한 방식으로 장착될 수 있다. 프로세서(502)는, 고속 인터페이스(508)에 결합된 디스플레이(516)와 같은 외부 입력/출력 디바이스 상에 GUI를 위한 그래픽 정보를 디스플레이하기 위해서, 컴퓨팅 디바이스(500) 내에서의 실행을 위한 명령들(여기에는 메모리(504) 내에 저장된 명령들 혹은 저장 디바이스(506) 상에 저장된 명령들이 포함됨)을 프로세싱할 수 있다. 다른 구현예들에서, 다수의 프로세서들 및/또는 다수의 버스들이 다수의 메모리들 및 다수 유형의 메모리들과 함께 적절하게 사용될 수 있다. 또한, 다수의 컴퓨팅 디바이스들(500)은 필요한 동작들의 일부들을 제공하는 각각의 디바이스에 연결될 수 있다(예컨대, 서버 뱅크, 블레이드 서버 그룹, 또는 다중 프로세서 시스템으로서).
메모리(504)는 컴퓨팅 디바이스(500) 내에 정보를 저장한다. 일 구현에서, 메모리(504)는 컴퓨터 판독가능 매체이다. 일 구현에서, 메모리(504)는 휘발성 메모리 유닛(들)이다. 다른 구현에서, 메모리(504)는 비휘발성 메모리 유닛(들)이다.
저장 디바이스(506)는 컴퓨팅 디바이스(500)를 위한 대용량 저장소를 제공할 수 있다. 일 구현에서, 저장 디바이스(506)는 컴퓨터-판독가능 매체이다. 다양한 구현들에서, 저장 디바이스(506)는 플로피 디스크 디바이스, 하드 디스크 디바이스, 광학 디스크 디바이스 혹은 테이프 디바이스, 플래시 메모리 혹은 다른 유사한 솔리드 스테이트 메모리 디바이스, 또는 디바이스들의 어레이(여기에는 저장 영역 네트워크 혹은 다른 구성들 내의 디바이스들이 포함됨)일 수 있다. 일 구현에서, 컴퓨터 프로그램 제품은 정보 캐리어에 실체적으로(tangibly) 구현될 수 있다. 컴퓨터 프로그램 제품은 또한 명령들을 포함할 수 있는데, 여기서 명령들은 그 실행시 앞서 설명된 것들과 같은 하나 이상의 방법들을 수행한다. 정보 캐리어는 메모리(504), 저장 디바이스(506), 혹은 프로세서(502) 상의 메모리와 같은 컴퓨터-판독가능 매체 또는 머신-판독가능 매체이다.
고속 콘트롤러(508)는 컴퓨팅 디바이스(500)에 대한 대역폭 집약적 동작을 관리하는 반면, 저속 콘트롤러(512)는 보다 낮은 대역폭 집약적 동작을 관리한다. 임무들의 이러한 할당은 단지 예시일뿐이다. 일 구현에서, 고속 콘트롤러(508)는 메모리(504), 디스플레이(516)(예를 들어, 그래픽 프로세서 또는 가속기를 통해) 및 다양한 확장 카드(도시되지 않음)를 수용할 수 있는 고속 확장 포트(510)에 연결된다. 일 구현에서, 저속 콘트롤러(512)는 저장 디바이스(506) 및 저속 확장 포트(514)에 연결된다. 다양한 통신 포트(예를 들어, USB, 블루투스, 이더넷, Wi-Fi)를 포함할 수 있는 저속 확장 포트는 키보드, 포인팅 디바이스, 스캐너와 같은 하나 이상의 입력/출력 디바이스에 연결될 수 있다. 다양한 통신 포트들(예를 들어, USB, 블루투스, 이더넷, Wi-Fi)을 포함할 수 있는 저속 확장 포트는 하나 이상의 입력/출력 디바이스들에 결합될 수 있는데, 예를 들어, 키보드, 포인팅 디바이스, 스캐너, 또는 (예를 들어, 네트워크 어댑터를 통해) 스위치 혹은 라우터와 같은 네트워킹 디바이스에 결합될 수 있다.
컴퓨팅 디바이스(500)는 도면에서 제시되는 바와 같이 여러 가지 다양한 형태들로 구현될 수 있다. 예를 들어, 컴퓨팅 디바이스(500)는 표준 서버(520)로서 구현될 수 있거나, 또는 이러한 서버들의 그룹으로 여러 번 구현될 수 있다. 컴퓨팅 디바이스(500)는 또한 랙 서버 시스템(524)의 일부로서 구현될 수 있다. 추가적으로, 컴퓨팅 디바이스(500)는 랩탑 컴퓨터(522)와 같은 개인용 컴퓨터 내에 구현될 수 있다. 대안적으로, 컴퓨팅 디바이스(500)로부터의 컴포넌트들은 디바이스(550)와 같은 모바일 디바이스(미도시) 내의 다른 컴포넌트들과 결합될 수 있다. 이러한 디바이스들 각각은 컴퓨팅 디바이스(500, 550) 중 하나 이상을 포함할 수 있고, 전체 시스템은 서로 통신하는 복수의 컴퓨팅 디바이스들(500, 550)로 구성될 수 있다.
컴퓨팅 디바이스(550)는 다른 컴포넌트들 중에서도, 프로세서(552), 메모리(564), 디스플레이(554)와 같은 입력/출력 디바이스, 통신 인터페이스(566), 및 송수신기(568)를 포함한다. 디바이스(550)에는 또한, 추가적인 저장소를 제공하기 위해 마이크로드라이브 혹은 다른 디바이스와 같은 저장 디바이스가 제공될 수 있다. 컴포넌트들(550, 552, 564, 554, 566, 및 568) 각각은 다양한 버스들을 사용하여 상호연결되고, 그리고 컴포넌트들 중 수개의 컴포넌트들은 공통 마더보드 상에 장착될 수 있거나, 또는 적절하게 다른 방식으로 장착될 수 있다.
프로세서(552)는 컴퓨팅 디바이스(550) 내의 명령들(여기에는 메모리(564)에 저장되는 명령들이 포함됨)을 실행할 수 있다. 프로세서는 별개의 아날로그 및 디지털 프로세서들을 포함할 수 있다. 프로세서는 예를 들어, 사용자 인터페이스들의 제어, 디바이스(550)에 의해 실행되는 어플리케이션들의 제어, 그리고 디바이스(550)에 의한 무선 통신의 제어와 같은 디바이스(550)의 다른 컴포넌트들의 조정(coordination)을 제공할 수 있다.
프로세서(552)는 제어 인터페이스(558) 및 디스플레이(554)에 연결된 디스플레이 인터페이스(556)를 통해 사용자와 통신할 수 있다. 디스플레이(554)는, 예를 들어 TFT LCD(박막 트랜지스터 액정 디스플레이) 또는 OLED(유기 발광 다이오드) 디스플레이 또는 다른 적절한 디스플레이일 수 있다. 디스플레이 인터페이스(556)는 그래픽 및 다른 정보를 사용자에게 제시하기 위해 디스플레이(554)를 구동하기 위한 적절한 회로를 포함할 수 있다. 제어 인터페이스(558)는 사용자로부터 커맨드들을 수신할 수 있고, 이들을 프로세서(552)에 제출하기 위해 변환할 수 있다. 추가적으로, 디바이스(550)가 다른 디바이스들과 근거리 통신을 할 수 있도록, 프로세서(552)와 통신하는 외부 인터페이스(562)가 제공될 수 있다. 외부 인터페이스(562)는 예를 들어, 도킹 절차를 통해 유선 통신을 제공할 수 있고, 또는 블루투스 혹은 다른 이러한 기술들을 통해 무선 통신을 제공할 수도 있다.
메모리(564)는 컴퓨팅 디바이스(550) 내에 정보를 저장한다. 일 구현에서, 메모리(564)는 컴퓨터-판독가능 매체이다. 일 구현에서, 메모리(564)는 휘발성 메모리 유닛(들)이다. 일 구현에서, 메모리(564)는 비-휘발성 메모리 유닛(들)이다. 중 하나 이상의 것으로서 구현될 수 있다. 확장 메모리(574)가 또한 확장 인터페이스(572)를 통해 디바이스(550)에 제공 및 연결될 수 있고, 이는 예를 들어, SIMM(Single In Line Memory Module; 단일 인라인 메모리 모듈) 카드 인터페이스를 포함할 수 있다. 이러한 확장 메모리(574)는 디바이스(550)를 위한 추가 저장 공간을 제공할 수 있고, 또는 디바이스(550)를 위한 어플리케이션들 혹은 다른 정보를 또한 저장할 수 있다. 구체적으로, 확장 메모리(574)는 앞서 설명된 프로세스들을 달성 혹은 보충하기 위한 명령들을 포함할 수 있고, 보안 정보를 또한 포함할 수 있다. 따라서, 예를 들어, 확장 메모리(574)는 디바이스(550)를 위한 보안 모듈로서 제공될 수 있고, 디바이스(550)의 보안 사용을 허용하는 명령들로 프로그래밍될 수 있다. 추가적으로, 보안 어플리케이션들은 예를 들어, 해킹가능하지 않는 방식으로 SIMM 카드 상에 식별 정보를 위치시키는 것과 같이, 추가적인 정보와 함께 SIMM 카드들을 통해 제공될 수 있다.
메모리는 아래에서 논의되는 바와 같이, 예를 들어, 플래시 메모리 및/또는 MRAM 메모리를 포함할 수 있다. 일 구현예에서, 컴퓨터 프로그램 제품은 정보 캐리어에 실체적으로 구현될 수 있다. 컴퓨터 프로그램 제품은 명령들을 포함하며, 여기서 명령들은 그 실행시 앞서 설명된 것들과 같은 하나 이상의 방법들을 수행한다. 정보 캐리어는 예를 들어, 메모리(564), 확장 메모리(574), 혹은 프로세서(552) 상의 메모리와 같은 컴퓨터-판독가능 매체 또는 머신-판독가능 매체이다.
디바이스(550)는 통신 인터페이스(566)를 통해 무선으로 통신할 수 있으며, 통신 인터페이스(566)는 필요한 경우 디지털 신호처리 회로를 포함할 수 있다. 통신 인터페이스(566)는 다양한 모드들 또는 프로토콜들 하에서 통신을 제공할 수 있는바 가령, GSM 음성 호출, SMS, EMS 또는 MMS 메시징, CDMA, TDMA, PDC, WCDMA, CDMA2000, 또는 GPRS 등에서 통신을 제공할 수 있다. 이러한 통신은 예를 들어 무선 주파수 송수신기(568)를 통해 수행될 수 있다. 또한, Bluetooth, Wi-Fi 또는 다른 그러한 송수신기(도시되지 않음)를 사용하는 것과 같이 단거리 통신이 수행될 수 있다. 또한, GPS(Global Positioning System) 수신기 모듈(570)은 추가 무선 데이터를 디바이스(550)에 제공할 수 있으며, 이는 디바이스(550) 상에서 실행되는 어플리케이션에 의해 적절히 사용될 수 있다.
디바이스(550)는 또한 사용자로부터 음성 정보를 수신하고 그것을 이용가능한 디지털 정보로 변환할 수 있는 오디오 코덱(560)을 사용하여 청각적으로 통신 할 수 있다. 오디오 코덱(560)은 마찬가지로, 예를 들어 디바이스(550)의 핸드 세트의 스피커를 통하는 것과 같이, 사용자를 위한 가청 사운드를 생성할 수 있다. 이러한 사운드는 음성 전화 호출로부터의 사운드를 포함할 수 있고, 녹음된 사운드(예컨대, 음성 메시지, 음악 파일들 등)을 포함할 수 있고 그리고 또한 디바이스(550) 상에서 동작하는 어플리케이션에 의해 생성된 사운드를 포함할 수 있다.
컴퓨팅 디바이스(550)는 도면에 도시된 바와 같이 다수의 상이한 형태로 구현될 수 있다. 예를 들어, 그것은 셀룰러 전화(580)로서 구현될 수 있다. 또한 스마트 폰(582), 개인 휴대 정보 단말기(personal digital assistant), 또는 다른 유사한 모바일 디바이스의 일부로서 구현될 수 있다.
여기에 설명된 시스템 및 기술의 다양한 구현예는 디지털 전자 회로, 집적 회로, 특별히 설계된 ASIC(주문형 집적 회로), 컴퓨터 하드웨어, 펌웨어, 소프트웨어 및/또는 이들의 조합으로 실현될 수 있다. 이러한 다양한 구현들은 하나 이상의 컴퓨터 프로그램들에서의 구현을 포함할 수 있는데, 이들 컴퓨터 프로그램들은, 특수 또는 범용일 수 있으며 데이터와 명령들을 송수신하기 위하여 저장 시스템, 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스에 접속되는 적어도 하나의 프로그램가능 프로세서를 포함하는 프로그램가능 시스템 상에서 실행가능하고 및/또는 해석가능하다.
이들 컴퓨터 프로그램들(프로그램, 소프트웨어, 소프트웨어 어플리케이션 또는 코드로도 알려짐)은 프로그램가능 프로세서에 대한 머신 명령어를 포함하고, 하이 레벨 절차적 프로그래밍 언어 및/또는 객체 지향 프로그래밍 언어 및/또는 어셈블리/머신 언어로 구현될 수 있다. 본 명세서에 사용된 바와 같이, "머신-판독가능한 매체" , "컴퓨터 판독가능 매체"는 프로그램 가능 프로세서에 머신 명령들 및/또는 데이터를 제공하는데 사용되는 임의의 컴퓨터 프로그램 제품, 디바이스 및/또는 디바이스(예컨대, 자기 디스크, 광 디스크, 메모리, 프로그램 가능 논리 디바이스(PLD))을 지칭하며, 머신 판독가능 신호로서 머신 명령을 수신하는 머신 판독가능한 매체를 포함한다. "머신 판독가능 신호"라는 용어는 머신 명령 및/또는 데이터를 프로그램가능 프로세서에 제공하는데 사용되는 임의의 신호를 지칭한다.
사용자와의 상호작용을 제공하기 위해, 여기에 설명된 시스템 및 기술은 컴퓨터 상에서 구현될 수 있으며, 상기 컴퓨터는 사용자에게 정보를 제공하기 위한 디스플레이 디바이스(예를 들면, CRT 또는 LCD 모니터) 및 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스(예를 들어, 마우스 또는 트랙볼)를 갖는다. 사용자와의 상호작용을 제공하기 위해 다른 종류의 디바이스가 사용될 수도 있다. 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 감각 피드백(예를 들어, 시각적 피드백, 청각 피드백 또는 촉각 피드백)일 수 있으며; 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다.
여기에 설명된 시스템 및 기술은 백 엔드 컴포넌트(예: 데이터 서버)를 포함하거나 미들웨어 컴포넌트(예: 어플리케이션 서버)를 포함하거나, 프런트 엔드 컴포넌트(예컨대, 그래픽 사용자 인터페이스를 갖는 클라이언트 컴퓨터 또는 웹 브라우저, 이를 통해 사용자는 여기에 설명된 시스템 및 기술의 구현예와 상호작용할 수 있음)를 포함하거나 또는 그러한 백 엔드, 미들웨어 또는 프런트 엔드 컴포넌트의 조합을 포함할 수 있다. 시스템의 컴포넌트들은, 임의 포맷 혹은 매체의 디지털 데이터 통신(예: 통신 네트워크)에 의해서 상호연결될 수 있다. 통신 네트워크의 예는 근거리 통신망( "LAN"), 광역 통신망( "WAN") 및 인터넷을 포함한다.
컴퓨팅 시스템은 클라이언트 및 서버를 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 멀리 떨어져 있으며 일반적으로 통신 네트워크를 통해 상호작용한다. 클라이언트와 서버의 관계는 각각의 컴퓨터에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램의 덕택으로 발생한다.
본 명세서에서 사용되는 바와 같이, "모듈" 이라는 용어는 컴퓨터의 프로세싱 유닛(들)/디바이스(들)로 하여금 하나 이상의 기능들을 실행하게하는 프로그램 코드를 포함하는 하나 이상의 소프트웨어 프로그램을 실행하도록 구성된 하나 이상의 컴퓨터를 포함하도록 의도되지만 이에 한정되지 않는다. "컴퓨터"라는 용어는 데스크탑 컴퓨터, 랩톱 컴퓨터, 메인 프레임 컴퓨터, 퍼스널 디지털 어시스턴트, 서버, 핸드 헬드 디바이스, 스마트 폰, 태블릿 컴퓨터, 전자책 리더기 또는 데이터 처리할 수 있는 기타 전자 디바이스와 같은 임의의 데이터 프로세싱 또는 컴퓨팅 디바이스/시스템을 포함하도록 의도된다.
다수의 실시예들이 서술되었다. 그럼에도 불구하고, 본 발명의 사상 및 범위를 벗어남이 없이도 다양한 변형들이 이루어질 수 있음을 이해할 것이다. 따라서, 다른 실시예들은 다음의 청구항들의 범위에 속한다. 본 명세서는 많은 특정 구현 세부 사항들을 포함하지만, 이들은 청구될 수 있는 범위에 대한 제한으로 해석되어서는 안되며, 특정 실시예에 특정될 수 있는 피처들에 대한 설명으로 해석되어야 한다. 별도의 실시예의 맥락에서 본 명세서에 설명된 특정한 피처들은 또한 단일 실시예에서 조합되어 구현될 수 있다.
이와 반대로, 단일 실시예의 문맥에서 설명된 여러 가지 피처들은 또한 다수의 실시예들에서 별도로 또는 임의의 적합한 하위조합으로 구현될 수 있다. 더욱이, 비록 피처들이 소정 조합으로 작용하는 것으로 위에서 설명될 수 있고 심지어 처음에는 그렇게 청구될 수도 있지만, 청구된 조합으로부터 하나 이상의 피처들은 어떤 경우에는 조합으로부터 배제될 수 있고, 그리고 청구된 조합은 하위 조합 또는 하위 조합의 변형예에 대한 것일 수도 있다.
이와 유사하게, 비록 동작들이 도면들에서 특정 순서로 도시되어 있지만, 이러한 동작들이 도시된 특정 순서 또는 순차적으로 수행될 것을 요구하는 것으로 이해되어서는 안되며, 또는 바람직한 결과를 획득하기 위하여, 예시된 모든 동작들이 수행될 것을 요구하는 것으로 이해되어서는 안된다. 특정 상황에서는 멀티 태스킹 및 병렬 처리가 유리할 수 있다. 더욱이, 위에서 설명된 실시예들에서 다양한 시스템 모듈들 및 컴포넌트들의 분리는 모든 실시예에서 그러한 분리를 요구하는 것으로 이해되어서는 안되며, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 또는 여러 소프트웨어 제품으로 패키징될 수도 있음을 이해해야 한다.
본 발명의 주제에 대한 특정한 실시예들이 서술되었다. 다른 실시예들은 다음 청구항들의 범위 내에 있다. 예를 들어, 청구항들에 언급된 동작들은 다른 순서로 수행될 수 있으며 여전히 바람직한 결과를 얻을 수 있다. 일례로서, 첨부 도면들에 도시된 일부 프로세스들은 바람직한 결과를 얻기 위해 도시된 특정 순서 또는 순차적인 순서를 반드시 필요로하지 않는다.

Claims (33)

  1. 컴퓨터로 구현되는 방법으로서,
    엔티티 상관 시스템의 제 1 프로세싱 유닛에 의해, 저장 디바이스에 저장된 데이터를 획득하는 단계, 상기 데이터는 다수의 엔티티에 관한 정보를 포함하며;
    제 1 프로세싱 유닛에서, 상기 저장 디바이스로부터 획득된 데이터를 사용하여 복수의 데이터 어레이들을 생성하는 단계, 상기 복수의 데이터 어레이들의 각각의 데이터 어레이는,
    i) 복수의 엔티티들에 대한 파라미터 값들을 포함하고,
    ii) 제 2 프로세싱 유닛의 각각의 컴퓨팅 셀에서 프로세싱하도록 구성되며;
    엔티티 상관 시스템에서, 상기 복수의 데이터 어레이들 중 적어도 2 개의 데이터 어레이를 제 2 프로세싱 유닛에 제공하는 단계, 상기 제 2 프로세싱 유닛은 제 2 프로세싱 유닛의 각각의 컴퓨팅 셀에서 적어도 2 개의 데이터 어레이를 동시에 프로세싱하기 위해 상관 알고리즘을 실행하도록 구성되며;
    제 2 프로세싱 유닛에서, 상관 알고리즘 및 복수의 엔티티들에 대한 파라미터 값들을 사용하여 각각의 컴퓨팅 셀에서 수행된 계산들에 기초하여 상관 점수를 계산하는 단계; 및
    엔티티 상관 시스템에서, 계산된 상관 점수에 기초하여, 상기 적어도 2 개의 데이터 어레이들의 엔티티들 간의 관련성들을 결정하는 단계
    를 포함하고,
    상기 관련성들은 엔티티들의 적어도 서브세트 사이에 존재하는 중첩 속성을 나타내는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  2. 제1항에 있어서,
    상기 상관 점수를 계산하는 단계는,
    유사성 알고리즘 또는 조건부 확률 알고리즘으로서 특정 상관 알고리즘을 선택하는 단계;
    상기 특정 상관 알고리즘을 사용하여, 적어도 2 개의 데이터 어레이들의 엔티티들 사이의 교집합(intersection) 및 적어도 2 개의 데이터 어레이들의 엔티티들 사이의 합집합(union)을 계산하는 단계; 및
    상기 교집합과 합집합에 기초하여 상관 점수를 계산하는 단계
    를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  3. 제1항에 있어서,
    제 1 프로세싱 유닛은 복수의 데이터 어레이들을 생성하기 위해 데이터 저장 디바이스로부터 획득된 데이터를 사전 정렬하는 중앙 프로세싱 유닛(CPU)이고;
    제 2 프로세싱 유닛은 적어도 2 개의 데이터 어레이들의 엔티티들에 대한 파라미터 값들을 사용하여 병렬 계산을 수행하는 그래픽 프로세싱 유닛(GPU)이며; 및
    상기 특정 상관 알고리즘은 자카드(Jaccard) 유사성 알고리즘, 코사인 유사성 알고리즘 또는 조건부 확률 알고리즘인 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  4. 제1항에 있어서,
    상기 복수의 데이터 어레이들을 생성하는 단계는,
    스케칭(sketching) 알고리즘에 기초하여, 다수의 엔티티들에 대한 정보를 포함하는 데이터를 정렬하는 단계; 및
    정렬에 응답하여, 상기 데이터에 대한 스케치 표현을 생성하는 단계를 포함하고,
    각각의 스케치 표현은 복수의 데이터 어레이들 각각에 대응하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  5. 제1항에 있어서,
    각각의 데이터 어레이는 저장 디바이스에 저장된 데이터의 스케치 표현이며; 그리고
    복수의 데이터 어레이들의 적어도 서브세트는 미리 결정된 개수의 엔티티들을 각각 갖는 각각의 데이터 어레이를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  6. 제5항에 있어서,
    각각의 스케치 표현은 제 2 프로세싱 유닛에 포함된 컴퓨팅 셀들의 수량에 따른 사이즈를 갖는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  7. 제1항에 있어서,
    상기 적어도 2 개의 데이터 어레이를 제공하는 단계는,
    각각의 데이터 어레이를 상기 제 2 프로세싱 유닛의 메모리 캐시에 저장하는 단계를 포함하고,
    상기 메모리 캐시는 상기 제 2 프로세싱 유닛의 콤팩트 메모리를 나타내고, 각각의 데이터 어레이는 상기 콤팩트 메모리의 데이터 용량에 따른 사이즈를 갖는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  8. 제1항에 있어서,
    상기 데이터 어레이들 중 적어도 하나는 제 2 프로세싱 유닛에 포함된 복수의 컴퓨팅 셀들 각각에 의해 액세스되도록 구성되는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  9. 제1항에 있어서,
    상기 엔티티들 간의 관련성들을 결정하는 단계는,
    계산된 상관 점수가 임계 점수를 초과하는지를 결정하는 단계; 및
    계산된 상관 점수가 임계 점수를 초과한다는 결정에 응답하여, 임계 점수를 초과하는 상관 점수를 사용하여 순위화된(ranked) 엔티티들의 목록을 생성하는 단계
    를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  10. 전자 시스템으로서,
    하나 이상의 프로세싱 디바이스들; 및
    명령들을 저장하는 하나 이상의 비일시적 머신 판독가능 저장 디바이스들
    을 포함하고, 상기 명령들은 상기 하나 이상의 프로세싱 디바이스들에 의해 실행될 때,
    엔티티 상관 시스템의 제 1 프로세싱 유닛에 의해, 저장 디바이스에 저장된 데이터를 획득하는 동작, 상기 데이터는 다수의 엔티티에 관한 정보를 포함하며;
    제 1 프로세싱 유닛에서, 상기 저장 디바이스로부터 획득된 데이터를 사용하여 복수의 데이터 어레이들을 생성하는 동작, 상기 복수의 데이터 어레이들의 각각의 데이터 어레이는,
    i) 복수의 엔티티들에 대한 파라미터 값들을 포함하고,
    ii) 제 2 프로세싱 유닛의 각각의 컴퓨팅 셀에서 프로세싱하도록 구성되며;
    엔티티 상관 시스템에서, 적어도 2 개의 데이터 어레이를 제 2 프로세싱 유닛에 제공하는 동작, 상기 제 2 프로세싱 유닛은 제 2 프로세싱 유닛의 각각의 컴퓨팅 셀에서 적어도 2 개의 데이터 어레이를 동시에 프로세싱하기 위해 상관 알고리즘을 실행하도록 구성되며;
    제 2 프로세싱 유닛에서, 상관 알고리즘 및 복수의 엔티티들에 대한 파라미터 값들을 사용하여 각각의 컴퓨팅 셀에서 수행된 계산들에 기초하여 상관 점수를 계산하는 동작; 및
    엔티티 상관 시스템에서, 계산된 상관 점수에 기초하여, 상기 적어도 2 개의 데이터 어레이들의 엔티티들 간의 관련성들을 결정하는 동작
    를 포함하는 포함하는 동작들이 수행되게 하며,
    상기 관련성들은 엔티티들의 적어도 서브세트 사이에 존재하는 중첩 속성을 나타내는 것을 특징으로 하는 전자 시스템.
  11. 제10항에 있어서,
    상기 상관 점수를 계산하는 동작은,
    유사성 알고리즘 또는 조건부 확률 알고리즘으로서 특정 상관 알고리즘을 선택하는 동작;
    상기 특정 상관 알고리즘을 사용하여, 적어도 2 개의 데이터 어레이들의 엔티티들 사이의 교집합(intersection) 및 적어도 2 개의 데이터 어레이들의 엔티티들 사이의 합집합(union)을 계산하는 동작; 및
    상기 교집합과 합집합에 기초하여 상관 점수를 계산하는 동작
    을 포함하는 것을 특징으로 하는 전자 시스템.
  12. 제10항에 있어서,
    제 1 프로세싱 유닛은 복수의 데이터 어레이들을 생성하기 위해 데이터 저장 디바이스로부터 획득된 데이터를 사전 정렬하는 중앙 프로세싱 유닛(CPU)이고;
    제 2 프로세싱 유닛은 적어도 2 개의 데이터 어레이들의 엔티티들에 대한 파라미터 값들을 사용하여 병렬 계산을 수행하는 그래픽 프로세싱 유닛(GPU)이며; 및
    상기 특정 상관 알고리즘은 자카드(Jaccard) 유사성 알고리즘, 코사인 유사성 알고리즘 또는 조건부 확률 알고리즘인 것을 특징으로 하는 전자 시스템.
  13. 제10항에 있어서,
    상기 복수의 데이터 어레이들을 생성하는 동작은,
    스케칭(sketching) 알고리즘에 기초하여, 다수의 엔티티들에 대한 정보를 포함하는 데이터를 정렬하는 동작; 및
    정렬에 응답하여, 상기 데이터에 대한 스케치 표현을 생성하는 동작을 포함하고,
    각각의 스케치 표현은 복수의 데이터 어레이들 각각에 대응하는 것을 특징으로 하는 전자 시스템.
  14. 제10항에 있어서,
    각각의 데이터 어레이는 저장 디바이스에 저장된 데이터의 스케치 표현이며; 그리고
    복수의 데이터 어레이들의 적어도 서브세트는 미리 결정된 개수의 엔티티들을 각각 갖는 각각의 데이터 어레이를 포함하는 것을 특징으로 하는 전자 시스템.
  15. 제14항에 있어서,
    각각의 스케치 표현은 제 2 프로세싱 유닛에 포함된 컴퓨팅 셀들의 수량에 따른 사이즈를 갖는 것을 특징으로 하는 전자 시스템.
  16. 제10항에 있어서,
    상기 적어도 2 개의 데이터 어레이를 제공하는 동작은,
    각각의 데이터 어레이를 상기 제 2 프로세싱 유닛의 메모리 캐시에 저장하는 동작을 포함하고,
    상기 메모리 캐시는 상기 제 2 프로세싱 유닛의 콤팩트 메모리를 나타내고, 각각의 데이터 어레이는 상기 콤팩트 메모리의 데이터 용량에 따른 사이즈를 갖는 것을 특징으로 하는 전자 시스템.
  17. 제10항에 있어서,
    상기 데이터 어레이들 중 적어도 하나는 제 2 프로세싱 유닛에 포함된 복수의 컴퓨팅 셀들 각각에 의해 액세스되도록 구성되는 것을 특징으로 하는 전자 시스템.
  18. 제10항에 있어서,
    상기 엔티티들 간의 관련성들을 결정하는 동작은,
    계산된 상관 점수가 임계 점수를 초과하는지를 결정하는 동작; 및
    계산된 상관 점수가 임계 점수를 초과한다는 결정에 응답하여, 임계 점수를 초과하는 상관 점수를 사용하여 순위화된(ranked) 엔티티들의 목록을 생성하는 동작
    을 포함하는 것을 특징으로 하는 전자 시스템.
  19. 방법으로서,
    제 1 프로세싱 유닛에서 제 1 데이터 아이템들을 수신하는 단계;
    제 1 프로세싱 유닛에 의해 그리고 적어도 상기 수신된 제 1 데이터 아이템들로부터, 데이터 구조들을 생성하는 단계, 각각의 데이터 구조는 각각의 데이터세트를 나타내며;
    제 2 프로세싱 유닛의 메모리에 데이터 구조들을 저장하는 단계;
    제 1 프로세싱 유닛에서, 사용자로부터 질의를 수신하는 단계;
    제 2 프로세싱 유닛에 의해, 제 2 프로세싱 유닛에 저장된 2 이상의 데이터 구조들에 대하여 상기 질의를 병렬로 프로세싱하는 단계; 및
    제 2 프로세싱 유닛으로부터 제 1 프로세싱 유닛으로, 프로세싱 결과들을 반환하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  20. 제19항에 있어서,
    제 2 프로세싱 유닛은 다수의 프로세싱 코어들을 포함하고,
    상기 제 2 프로세싱 유닛에 의해, 질의를 병렬로 프로세싱하는 단계는,
    상기 데이터 구조들 각각에 대하여, 각각의 프로세싱 코어에서 상기 질의를 병렬로 프로세싱하는 단계를 포함하는 것을 특징으로 하는 방법.
  21. 제19항 또는 제20항에 있어서,
    상기 제 2 프로세싱 유닛에 의해, 제 2 프로세싱 유닛에 저장된 2 이상의 데이터 구조들에 대하여 상기 질의를 병렬로 프로세싱하는 단계는,
    상기 제 2 프로세싱 유닛에 저장된 데이터 구조에 대하여, 데이터 구조와 질의 간의 유사성에 대한 각각의 측정치를 결정하는 단계를 포함하는 것을 특징으로 하는 방법.
  22. 제19항 내지 제21항 중 어느 한 항에 있어서,
    상기 제 2 프로세싱 유닛으로부터 제 1 프로세싱 유닛으로 프로세싱 결과들을 반환하는 단계는,
    상기 질의에 최상으로 매칭되는 n 개의 데이터 구조들을 식별하는 정보를 반환하는 단계를 포함하는 것을 특징으로 하는 방법.
  23. 제19항 내지 제22항 중 어느 한 항에 있어서,
    제 1 프로세싱 유닛이 수신된 질의로부터 질의 데이터 구조를 생성하고 그리고 생성된 질의 데이터 구조를 제 2 프로세싱 유닛으로 전송하는 단계를 더 포함하며,
    상기 제 2 프로세싱 유닛에 의해, 제 2 프로세싱 유닛에 저장된 2 이상의 데이터 구조들에 대하여 상기 질의를 병렬로 프로세싱하는 단계는,
    상기 제 2 프로세싱 유닛에 저장된 데이터 구조들에 대하여, 상기 질의 데이터 구조를 프로세싱하는 단계를 포함하는 것을 특징으로 하는 방법.
  24. 제19항 내지 제23항 중 어느 한 항에 있어서,
    상기 데이터 구조들 및 질의 데이터 구조는 KMV 스케치인 것을 특징으로 하는 방법.
  25. 제19항 내지 제24항 중 어느 한 항에 있어서,
    상기 제 2 프로세싱 유닛에 의해, 제 2 프로세싱 유닛에 저장된 2 이상의 데이터 구조들에 대하여 상기 질의를 병렬로 프로세싱하는 단계는,
    상기 질의 데이터 구조와 상기 저장된 데이터 구조의 합집합을 결정하는 단계를 포함하는 것을 특징으로 하는 방법.
  26. 제19항 내지 제24항 중 어느 한 항에 있어서,
    상기 제 2 프로세싱 유닛에 의해, 제 2 프로세싱 유닛에 저장된 2 이상의 데이터 구조들에 대하여 상기 질의를 병렬로 프로세싱하는 단계는,
    상기 질의 데이터 구조와 상기 저장된 데이터 구조의 교집합을 결정하는 단계를 포함하는 것을 특징으로 하는 방법.
  27. 제19항 내지 제25항 중 어느 한 항에 있어서,
    상기 제 2 프로세싱 유닛에 의해, 제 2 프로세싱 유닛에 저장된 2 이상의 데이터 구조들에 대하여 상기 질의를 병렬로 프로세싱하는 단계는,
    상기 질의 데이터 구조와 상기 데이터 구조 사이의 자카드 유사성(Jaccard similarity)을 결정하는 단계를 포함하는 것을 특징으로 하는 방법.
  28. 제19항 내지 제27항 중 어느 한 항에 있어서,
    상기 제 1 프로세싱 유닛에서 제 1 데이터 아이템들을 수신하는 단계는,
    데이터 호스팅 서비스로부터 제 1 데이터 아이템들을 수신하는 단계를 포함하고,
    상기 방법은 제 1 프로세싱 유닛으로부터 데이터 호스팅 서비스로 프로세싱 결과를 반환하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  29. 제19항 내지 제28항 중 어느 한 항에 있어서,
    제 1 프로세싱 유닛에서, 제 2 질의를 수신하는 단계; 및
    제 2 프로세싱 유닛에 의해, 제 2 프로세싱 유닛에 저장된 데이터 구조들에 대하여, 상기 제 2 질의를 프로세싱하는 단계
    를 더 포함하는 것을 특징으로 하는 방법.
  30. 제19항 내지 제29항 중 어느 한 항에 있어서,
    제 1 프로세싱 유닛에서 제 2 데이터 아이템들을 수신하는 단계;
    제 1 프로세싱 유닛에 의해 그리고 적어도 수신된 제 2 데이터 아이템들로부터, 업데이트된 데이터 구조들을 생성하는 단계, 업데이트된 데이터 구조들 각각은 각각의 데이터세트를 나타내고; 그리고
    업데이트된 데이터 구조들을 제 2 프로세싱 유닛의 메모리에 저장하는 단계
    를 더 포함하는 것을 특징으로 하는 방법.
  31. 제30항에 있어서,
    제 1 프로세싱 유닛에서, 제 3 질의를 수신하는 단계; 및
    제 2 프로세싱 유닛에 의해, 제 2 프로세싱 유닛에 저장된 업데이트된 데이터 구조들에 대하여 상기 제 3 질의를 프로세싱하는 단계
    를 더 포함하는 것을 특징으로 하는 방법.
  32. 제 2 프로세싱 유닛과 통신하는 제 1 프로세싱 유닛을 포함하는 프로세싱 시스템으로서, 상기 프로세싱 시스템은 제19항 내지 제31항 중 어느 한 항에 따른 방법을 실행하도록 구성된 것을 특징으로 하는 프로세싱 시스템.
  33. 저장된 명령들을 포함하는 컴퓨터 판독가능 매체로서, 상기 명령들은 제 2 프로세싱 유닛과 통신하는 제 1 프로세싱 유닛을 포함하는 프로세싱 시스템에 의해서 실행될 때, 상기 프로세싱 시스템으로 하여금 제19항 내지 제31항 중 어느 한 항에 따른 방법을 실행하게 하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
KR1020207033966A 2018-05-01 2018-05-01 가속화된 대규모 유사성 계산 KR102495793B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2018/030486 WO2019212537A1 (en) 2018-05-01 2018-05-01 Accelerated large-scale similarity calculation

Publications (2)

Publication Number Publication Date
KR20210002647A true KR20210002647A (ko) 2021-01-08
KR102495793B1 KR102495793B1 (ko) 2023-02-06

Family

ID=62486629

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207033966A KR102495793B1 (ko) 2018-05-01 2018-05-01 가속화된 대규모 유사성 계산

Country Status (6)

Country Link
US (2) US11379535B2 (ko)
EP (1) EP3631646A1 (ko)
JP (1) JP7213890B2 (ko)
KR (1) KR102495793B1 (ko)
CN (1) CN110959157B (ko)
WO (1) WO2019212537A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102495793B1 (ko) 2018-05-01 2023-02-06 구글 엘엘씨 가속화된 대규모 유사성 계산
CN111984916B (zh) * 2020-10-09 2021-01-12 北京应用物理与计算数学研究所 一种数理方程解算构件及并行软件研发方法与系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140122586A1 (en) * 2012-10-29 2014-05-01 The Boeing Company Determination of latent interactions in social networks
US20160239499A1 (en) * 2015-02-12 2016-08-18 Red Hat, Inc. Object Creation Based on Copying Objects Corresponding to Similar Entities

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5415591Y2 (ko) 1972-10-19 1979-06-22
US4905162A (en) * 1987-03-30 1990-02-27 Digital Equipment Corporation Evaluation system for determining analogy and symmetric comparison among objects in model-based computation systems
US5339257A (en) * 1991-05-15 1994-08-16 Automated Technology Associates Inc. Real-time statistical process monitoring system
US5560006A (en) * 1991-05-15 1996-09-24 Automated Technology Associates, Inc. Entity-relation database
JP3611601B2 (ja) 1994-09-01 2005-01-19 富士通株式会社 リスト処理システムとその方法
US5943663A (en) * 1994-11-28 1999-08-24 Mouradian; Gary C. Data processing method and system utilizing parallel processing
JPH08272824A (ja) 1995-03-31 1996-10-18 Hitachi Software Eng Co Ltd 遺伝子配列データ自動検索方法
US6128608A (en) 1998-05-01 2000-10-03 Barnhill Technologies, Llc Enhancing knowledge discovery using multiple support vector machines
US6774917B1 (en) 1999-03-11 2004-08-10 Fuji Xerox Co., Ltd. Methods and apparatuses for interactive similarity searching, retrieval, and browsing of video
US6694325B2 (en) * 2000-10-16 2004-02-17 Frank Jas Database method implementing attribute refinement model
IES20010724A2 (en) * 2001-07-30 2003-02-05 Univ Dublin Data processing system and method
KR100483321B1 (ko) 2001-10-17 2005-04-15 한국과학기술원 하이퍼사각형 기반의 다차원 데이터 세그먼테이션을이용한 유사성 검색 장치와 그 방법
JP3903783B2 (ja) 2001-12-14 2007-04-11 日本電気株式会社 顔メタデータ生成方法および装置、並びに顔類似度算出方法および装置
US20040002818A1 (en) * 2001-12-21 2004-01-01 Affymetrix, Inc. Method, system and computer software for providing microarray probe data
US7069268B1 (en) * 2003-01-13 2006-06-27 Cisco Technology, Inc. System and method for identifying data using parallel hashing
US6947933B2 (en) 2003-01-23 2005-09-20 Verdasys, Inc. Identifying similarities within large collections of unstructured data
US20090270717A1 (en) * 2008-04-25 2009-10-29 Welch Allyn, Inc. Apparatus and method for diagnosis of optically identifiable ophthalmic conditions
US7483034B2 (en) 2004-02-25 2009-01-27 Siemens Medical Solutions Usa, Inc. System and method for GPU-based 3D nonrigid registration
US7706633B2 (en) 2004-04-21 2010-04-27 Siemens Corporation GPU-based image manipulation method for registration applications
US20050246333A1 (en) * 2004-04-30 2005-11-03 Jiang-Liang Hou Method and apparatus for classifying documents
US7899796B1 (en) * 2004-11-23 2011-03-01 Andrew Borthwick Batch automated blocking and record matching
WO2007082308A2 (en) * 2006-01-13 2007-07-19 Bluespace Software Corp. Determining relevance of electronic content
WO2008016102A1 (fr) 2006-08-03 2008-02-07 Nec Corporation dispositif de calcul de similarité et dispositif de recherche d'informations
WO2008092147A2 (en) * 2007-01-26 2008-07-31 Information Resources, Inc. Analytic platform
US8099401B1 (en) * 2007-07-18 2012-01-17 Emc Corporation Efficiently indexing and searching similar data
US7987177B2 (en) 2008-01-30 2011-07-26 International Business Machines Corporation Method for estimating the number of distinct values in a partitioned dataset
US8166047B1 (en) * 2008-08-06 2012-04-24 At&T Intellectual Property I, L.P. Systems, devices, and/or methods for managing data
US9171077B2 (en) 2009-02-27 2015-10-27 International Business Machines Corporation Scaling dynamic authority-based search using materialized subgraphs
US9413527B2 (en) 2009-04-30 2016-08-09 HGST Netherlands B.V. Optimizing signature computation and sampling for fast adaptive similarity detection based on algorithm-specific performance
US8065257B2 (en) * 2009-07-27 2011-11-22 Saab Sensis Corporation System and method for correlating past activities, determining hidden relationships and predicting future activities
CN102906739A (zh) * 2010-02-18 2013-01-30 井上克己 具备信息过滤检测功能的存储器、使用该存储器的信息检测方法、含有该存储器的装置、信息检测方法、存储器使用方法及存储器地址比较电路
US8620930B2 (en) * 2010-03-11 2013-12-31 Yahoo! Inc. Method and system for determining similarity score
FI20105252A0 (fi) * 2010-03-12 2010-03-12 Medisapiens Oy Menetelmä, järjestely ja tietokoneohjelmatuote biologisen tai lääketieteellisen näytteen analysoimiseen
US20180181705A1 (en) * 2010-03-12 2018-06-28 Medisapiens Oy Method, an arrangement and a computer program product for analysing a biological or medical sample
US10474647B2 (en) * 2010-06-22 2019-11-12 Primal Fusion Inc. Methods and devices for customizing knowledge representation systems
US8407215B2 (en) * 2010-12-10 2013-03-26 Sap Ag Text analysis to identify relevant entities
US9152882B2 (en) * 2011-06-17 2015-10-06 Microsoft Technology Licensing, Llc. Location-aided recognition
CN102855259B (zh) * 2011-06-30 2015-05-13 Sap欧洲公司 大规模数据聚类分析的并行化
JP4976578B1 (ja) 2011-09-16 2012-07-18 楽天株式会社 画像検索装置およびプログラム
US9916538B2 (en) * 2012-09-15 2018-03-13 Z Advanced Computing, Inc. Method and system for feature detection
US8873813B2 (en) * 2012-09-17 2014-10-28 Z Advanced Computing, Inc. Application of Z-webs and Z-factors to analytics, search engine, learning, recognition, natural language, and other utilities
US9317875B2 (en) * 2012-10-08 2016-04-19 Linkedin Corporation Methods and systems for identifying similar schools
US9141823B2 (en) * 2013-03-15 2015-09-22 Veridicom, Sa De Cv Abstraction layer for default encryption with orthogonal encryption logic session object; and automated authentication, with a method for online litigation
US20150363553A1 (en) * 2013-06-18 2015-12-17 Naryan L. Rustgi Medical registry
US9396253B2 (en) * 2013-09-27 2016-07-19 International Business Machines Corporation Activity based analytics
US10042894B2 (en) * 2013-10-31 2018-08-07 Microsoft Technology Licensing, Llc Temporal-based professional similarity
US11001900B2 (en) * 2015-06-30 2021-05-11 Psomagen, Inc. Method and system for characterization for female reproductive system-related conditions associated with microorganisms
US20170161591A1 (en) * 2015-12-04 2017-06-08 Pilot Ai Labs, Inc. System and method for deep-learning based object tracking
US10402750B2 (en) * 2015-12-30 2019-09-03 Facebook, Inc. Identifying entities using a deep-learning model
US10268749B1 (en) * 2016-01-07 2019-04-23 Amazon Technologies, Inc. Clustering sparse high dimensional data using sketches
US20170270245A1 (en) * 2016-01-11 2017-09-21 Edico Genome, Corp. Bioinformatics systems, apparatuses, and methods for performing secondary and/or tertiary processing
US10585893B2 (en) * 2016-03-30 2020-03-10 International Business Machines Corporation Data processing
US10353911B2 (en) * 2016-06-19 2019-07-16 Data.World, Inc. Computerized tools to discover, form, and analyze dataset interrelations among a system of networked collaborative datasets
US10922761B2 (en) * 2016-08-02 2021-02-16 Mastercard International Incorporated Payment card network data validation system
US10635739B1 (en) * 2016-08-25 2020-04-28 Cyber Atomics, Inc. Multidimensional connectivity graph-based tensor processing
CN107818069B (zh) * 2016-09-12 2021-10-01 阿里巴巴集团控股有限公司 数据处理方法及系统
JP6414192B2 (ja) 2016-12-21 2018-10-31 株式会社Jvcケンウッド 情報処理装置、情報処理方法、情報処理プログラム
US10565498B1 (en) * 2017-02-28 2020-02-18 Amazon Technologies, Inc. Deep neural network-based relationship analysis with multi-feature token model
US11068453B2 (en) * 2017-03-09 2021-07-20 data.world, Inc Determining a degree of similarity of a subset of tabular data arrangements to subsets of graph data arrangements at ingestion into a data-driven collaborative dataset platform
US11238109B2 (en) * 2017-03-09 2022-02-01 Data.World, Inc. Computerized tools configured to determine subsets of graph data arrangements for linking relevant data to enrich datasets associated with a data-driven collaborative dataset platform
US11138516B2 (en) * 2017-06-30 2021-10-05 Visa International Service Association GPU enhanced graph model build and scoring engine
KR102495793B1 (ko) 2018-05-01 2023-02-06 구글 엘엘씨 가속화된 대규모 유사성 계산

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140122586A1 (en) * 2012-10-29 2014-05-01 The Boeing Company Determination of latent interactions in social networks
US20160239499A1 (en) * 2015-02-12 2016-08-18 Red Hat, Inc. Object Creation Based on Copying Objects Corresponding to Similar Entities

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Yiqiu Wang 등, "FLASH : Randomized Alorithm Accelerated over CPU-GPU for Ultra-High Dimensional Similarity Search", https://zrxiv.org/pdf/1709.01190v1.pdf, sections 1~3, (2017.9.4.)* *

Also Published As

Publication number Publication date
US20210026889A1 (en) 2021-01-28
EP3631646A1 (en) 2020-04-08
US11782991B2 (en) 2023-10-10
US20220309101A1 (en) 2022-09-29
WO2019212537A1 (en) 2019-11-07
CN110959157B (zh) 2024-03-12
CN110959157A (zh) 2020-04-03
JP2021522605A (ja) 2021-08-30
US11379535B2 (en) 2022-07-05
JP7213890B2 (ja) 2023-01-27
KR102495793B1 (ko) 2023-02-06

Similar Documents

Publication Publication Date Title
US9934512B2 (en) Identifying influential users of a social networking service
US10546006B2 (en) Method and system for hybrid information query
US11756059B2 (en) Discovery of new business openings using web content analysis
US11782991B2 (en) Accelerated large-scale similarity calculation
CN110476151A (zh) 使用并行处理的k选择
US20140006369A1 (en) Processing structured and unstructured data
US20170109403A1 (en) Pre-caching
CN113268667B (zh) 一种基于中文评论情感引导的序列推荐方法及系统
Fageeri et al. An efficient log file analysis algorithm using binary-based data structure
US20150120697A1 (en) System and method for analysis of a database proxy
CN104615723B (zh) 查询词权重值的确定方法和装置
US11036700B2 (en) Automatic feature generation for machine learning in data-anomaly detection
Subha et al. Apache Spark based analysis on word count application in Big Data
Trinks A classification of real time analytics methods. an outlook for the use within the smart factory
US10817519B2 (en) Automatic conversion stage discovery
Vollset et al. Making use of external company data to improve the classification of bank transactions
Wu et al. Supervised discrete matrix factorization hashing for cross-modal retrieval
Dass et al. Amelioration of big data analytics by employing big data tools and techniques
Hussan et al. An optimized user behavior prediction model using genetic algorithm on mobile web structure
US11550834B1 (en) Automated assignment of data set value via semantic matching
Chandrashekariah et al. Structured query language query join optimization by using rademacher averages and mapreduce algorithms
CN117196801A (zh) 银行活动数据的分析方法、装置、计算机设备和存储介质
Jiang et al. An efficient location-aware publish/subscribe index with Boolean expressions
CN118093962A (zh) 数据检索方法、装置、系统、电子设备及可读存储介质
CN116910604A (zh) 用户分类方法、装置、计算机设备、存储介质和程序产品

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant