JP7213890B2 - 高速化された大規模な類似度計算 - Google Patents

高速化された大規模な類似度計算 Download PDF

Info

Publication number
JP7213890B2
JP7213890B2 JP2020560917A JP2020560917A JP7213890B2 JP 7213890 B2 JP7213890 B2 JP 7213890B2 JP 2020560917 A JP2020560917 A JP 2020560917A JP 2020560917 A JP2020560917 A JP 2020560917A JP 7213890 B2 JP7213890 B2 JP 7213890B2
Authority
JP
Japan
Prior art keywords
data
entities
processing unit
correlation
data arrays
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
JP2020560917A
Other languages
English (en)
Other versions
JP2021522605A (ja
Inventor
リン・マ
ネイサン・ウィーガント
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of JP2021522605A publication Critical patent/JP2021522605A/ja
Application granted granted Critical
Publication of JP7213890B2 publication Critical patent/JP7213890B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/22Matching criteria, e.g. proximity measures
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/288Entity relationship models
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/243Classification techniques relating to the number of classes
    • G06F18/2431Multiple classes

Landscapes

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

Description

本明細書は、大規模な類似度計算のための計算プロセスに関する。
多くの場合、入力サンプルが複数の記憶されたレコードと一致するかどうか、またはどれぐらいよく一致するかを判定することが望ましいことがある。一例として、DNAサンプルがDNAレコードのデータベースに記憶されたレコードのいずれかと一致するかどうかを判定することが望ましいことがある。データベースは、多くのDNAレコード(たとえば、数十万またはさらには数百万のレコード)を含む可能性が高い。概して、入力サンプルに応答して、ある数n個の記憶されたレコードをデータベースから取り出すことが望ましいことがある。入力サンプルは、入力サンプルに対してn個の最も近い一致であると判定される、データベース内のn個のレコードであり得る。取り出されるレコードの数nは、データベース内のレコードの総数よりも小さく、典型的には、かなり小さい。n個の取り出されたレコードは、最も確かなものから順に配列され得る。通常、そのような取り出しプロセスは、入力サンプルとデータベースに記憶されたあらゆるレコードとの間の類似度の測定値を計算することと、次いで、計算された類似度の測定値のうちで最も高い値を有するn個のレコードを特定することとを含み得る。n個の取り出されたレコードは、計算された類似度の測定値の値に関連して配列されるように順序を変えられ得る。記憶されたレコードの数が増えるにつれて、このプロセスは、次第に計算負荷が高く、時間がかかるものとなる。
エンティティ相関システムの第1のプロセッサを使用して、ストレージデバイスに記憶されたデータを取得するための、コンピュータストレージ媒体に符号化されたコンピュータプログラムを含む、方法、システム、および装置。データは、複数のエンティティについての情報を含む。第1のプロセッサは、取得されたデータを使用してデータ配列を生成する。各データ配列は、複数のエンティティに関するパラメータ値を含み、第2のプロセッサのそれぞれの計算セルにおける処理のために構成される。本システムは、データ配列を第2のプロセッサに提供する。第2のプロセッサは、それぞれの計算セルにおいてデータ配列を同時に処理するために相関アルゴリズムを実行するように構成される。第2のプロセッサは、アルゴリズムおよびパラメータ値を使用して、セルにおいて実行される計算に基づいて、相関スコアを計算する。本システムは、相関スコアに基づいて、データ配列のエンティティの間の関係を決定する。この関係は、エンティティのサブセットの間に存在する重なり合う属性を示す。
本明細書に記載の主題の一態様は、コンピュータによって実施される方法に具現化され得る。本方法は、エンティティ相関システムの第1の処理ユニットによって、ストレージデバイスに記憶されたデータを取得するステップであって、データが、複数のエンティティについての情報を含む、ステップと、第1の処理ユニットにおいて、データストレージデバイスから取得されたデータを使用して複数のデータ配列を生成するステップとを含む。複数のデータ配列の各データ配列は、i)複数のエンティティに関するパラメータ値を含み、ii)第2の処理ユニットのそれぞれの計算セルにおける処理のために構成される。本方法は、エンティティ相関システムにおいて、少なくとも2つのデータ配列を第2の処理ユニットに提供するステップであって、第2の処理ユニットが、第2の処理ユニットのそれぞれの計算セルにおいて少なくとも2つのデータ配列を同時に処理するために相関アルゴリズムを実行するように構成される、ステップと、相関アルゴリズムおよび複数のエンティティに関するパラメータ値を使用してそれぞれの計算セルにおいて実行される計算に基づいて、相関スコアを第2の処理ユニットにおいて計算するステップと、エンティティ相関システムにおいて、計算された相関スコアに基づいて、少なくとも2つのデータ配列のエンティティの間の関係を決定するステップであって、この関係が、エンティティの少なくとも1つのサブセットの間に存在する重なり合う属性を示す、ステップとを含む。
これらのおよびその他の実装例は各々、任意で、以下の特徴のうちの1つまたは複数を含み得る。たとえば、いくつかの実装例において、相関スコアを計算するステップは、特定の相関アルゴリズムを類似度アルゴリズムまたは条件付き確率アルゴリズムとして選択するステップと、特定の相関アルゴリズムを使用して、少なくとも2つのデータ配列のエンティティの間の積集合(intersection)および少なくとも2つのデータ配列のエンティティの間の和集合(union)を計算するステップと、積集合および和集合に基づいて、相関スコアを計算するステップとを含む。いくつかの実装例において、第1の処理ユニットは、複数のデータ配列を生成するためにデータストレージデバイスから取得されたデータを予めソートする中央演算処理装置(CPU)であり、第2の処理ユニットは、少なくとも2つのデータ配列のエンティティに関するパラメータ値を使用して並列計算を実行するグラフィックス処理ユニット(GPU)であり、特定の相関アルゴリズムは、Jaccard類似度アルゴリズム、コサイン類似度アルゴリズム、または条件付き確率アルゴリズムである。
いくつかの実装例において、生成するステップは、複数のエンティティについての情報を含むデータをスケッチアルゴリズム(sketching algorithm)に基づいてソートするステップと、ソートするステップに応じて、データのスケッチ(sketch)表現を生成するステップであって、各スケッチ表現が、複数のデータ配列の各々に対応する、生成するステップとを含む。いくつかの実装例において、各データ配列は、ストレージデバイスに記憶されたデータのスケッチ表現であり、複数のデータ配列の少なくとも1つのサブセットは、各々が所定の数のエンティティを有するそれぞれのデータ配列を含む。いくつかの実装例において、各スケッチ表現は、第2の処理ユニットに含まれる計算セル(computing cell)の量に応じてサイズを決められる。いくつかの実装例において、提供するステップは、第2の処理ユニットのメモリキャッシュに各データ配列を記憶するステップであって、メモリキャッシュが、第2の処理ユニットのコンパクトなメモリを表し、各データ配列が、コンパクトなメモリのデータ容量に応じてサイズを決められる、記憶するステップを含む。
いくつかの実装例において、データ配列のうちの少なくとも1つは、第2の処理ユニットに含まれる複数の計算セルの各々によるアクセスのために構成される。いくつかの実装例において、エンティティの間の関係を決定するステップは、計算された相関スコアが閾値スコアを超えるかどうかを判定するステップと、計算された相関スコアが閾値スコアを超えるとの判定に応じて、閾値スコアを超える相関スコアを使用してランク付けされるエンティティのリストを生成するステップとを含む。
本明細書に記載の主題の別の態様は、コンピュータによって実施される方法に具現化され得る。本方法は、第1の処理ユニット(たとえば、CPU)において第1のデータアイテムを受け取るステップと、第1の処理ユニットによって、少なくとも受け取られた第1のデータアイテムから、データ構造を生成するステップであって、各データ構造が、それぞれのデータセットを表す、ステップと、第2の処理ユニット(たとえば、GPU)のメモリにデータ構造を記憶するステップと、第1の処理ユニットにおいてユーザからクエリを受け取るステップと、第2の処理ユニットによって、第2の処理ユニットに記憶されたデータ構造のうちの2つ以上に対してクエリを並列に処理するステップと、処理の結果を第2の処理ユニットから第1の処理ユニットに返すステップとを含む。
これらのおよびその他の実装例は各々、任意で、以下の特徴のうちの1つまたは複数を含み得る。たとえば、いくつかの実装例において、第2の処理ユニットは、複数の処理コアを含み、第2の処理ユニットによって、データ構造に対してクエリを処理するステップは、データ構造のうちのそれぞれのデータ構造に対して各処理コアにおいて並列してクエリを処理するステップを含む。いくつかの実装例において、第2の処理ユニットによって、第2の処理ユニットに記憶されたデータ構造に対してクエリを処理するステップは、第2の処理ユニットに記憶されたデータ構造に関して、データ構造とクエリとの間の類似度のそれぞれの測定値を決定することを含む。いくつかの実装例において、処理の結果を第2の処理ユニットから第1の処理ユニットに返すステップは、クエリに対するn個の最良の一致であるデータ構造を特定する情報を返すことを含む。
いくつかの実装例において、本方法は、第1の処理ユニットが受け取られたクエリからクエリデータ構造を生成し、クエリデータ構造をGPUに送信するステップを含み、第2の処理ユニットによってクエリを処理するステップは、第2の処理ユニットに記憶されたデータ構造に対してクエリデータ構造を処理することを含む。いくつかの実装例において、データ構造およびクエリデータ構造は、KMVスケッチである。いくつかの実装例において、第2の処理ユニットによって、第2の処理ユニットに記憶されたデータ構造に対してクエリを処理するステップは、クエリデータ構造および記憶されたデータ構造の和集合を決定するステップを含む。いくつかの実装例において、第2の処理ユニットによって、第2の処理ユニットに記憶されたデータ構造に対してクエリを処理するステップは、クエリデータ構造および記憶されたデータ構造の積集合を決定するステップを含む。いくつかの実装例において、第2の処理ユニットによって、第2の処理ユニットに記憶されたデータ構造に対してクエリを処理するステップは、クエリデータ構造とデータ構造との間のJaccard類似度を決定するステップを含む。
いくつかの実装例において、第1の処理ユニットにおいてデータアイテムを受け取るステップは、データホスティングサービスからデータアイテムを受け取るステップを含み、本方法は、処理の結果を第1の処理ユニットからデータホスティングサービスに返すステップをさらに含む。いくつかの実装例において、本方法は、第1の処理ユニットにおいて第2のクエリを受け取るステップと、第2の処理ユニットによって、第2の処理ユニットに記憶されたデータ構造に対して第2のクエリを処理するステップとをさらに含む。
いくつかの実装例において、本方法は、第1の処理ユニットにおいて第2のデータアイテムを受け取るステップと、第1の処理ユニットによって、少なくとも受け取られた第2のデータアイテムから、更新されたデータ構造を生成するステップであって、各更新されたデータ構造が、それぞれのデータセットを表す、ステップと、更新されたデータ構造を第2の処理ユニットのメモリに記憶するステップとをさらに含む。いくつかの実装例において、本方法は、第1の処理ユニットにおいて第3のクエリを受け取るステップと、第2の処理ユニットによって、第2の処理ユニットに記憶された更新されたデータ構造に対して第3のクエリを処理するステップとをさらに含む。
いくつかの実装例においては、第2の処理ユニットと通信する第1の処理ユニットを含む処理システムが、この概要の上述の段落のいずれか1つにおいて定義された方法を実行するように構成される。いくつかの実装例においては、コンピュータ可読媒体が、記憶された命令を含み、命令は、第2の処理ユニットと通信する第1の処理ユニットを含む処理システムによって実行されるときに、処理システムに、この概要の上述の段落のいずれか1つにおいて定義された方法を実行させる。
本開示の態様は、第1の処理ユニットにおいて第1のデータアイテムを受け取るステップと、第1の処理ユニットによって、少なくとも受け取られた第1のデータアイテムからデータ構造を生成するステップであって、各データ構造が、それぞれのデータセットを表す、ステップと、第2の処理ユニットのメモリにデータ構造を記憶するステップと、第1の処理ユニットにおいてユーザからクエリを受け取るステップと、第2の処理ユニットによって、第2の処理ユニットに記憶されたデータ構造のうちの2つ以上に対してクエリを並列に処理するステップと、処理の結果を第2の処理ユニットから第1の処理ユニットに返すステップとを含む方法を提供する。この態様において、第1の処理ユニットは、CPU(中央演算処理装置)であってもよく、第2の処理ユニットは、GPU(グラフィックス処理ユニット)であってもよい。
本明細書に記載の主題の特定の実施形態は、以下の利点のうちの1つまたは複数を実現するように実装されることが可能である。グラフィックス処理ユニットが、その他のデータ相関システムに比べて高められた速度で予めソートされたデータ配列のエンティティの間の相関スコア、計算結果、および/または類似度の関係を決定し得る。グラフィックスプロセッサは、相関アルゴリズムを実行する前にデータをソートする/予めソートすることなくデータ相関アルゴリズム(Jaccard類似度アルゴリズム)を実行することに関連する必要な計算を実行し得る。さらに、グラフィックスプロセッサは、その他の相関システムに比べてほとんどまたはまったくスレッド間データ通信を関与せずに必要な計算を実行し得る。これは、グラフィックスプロセッサの各計算セルがシステムのユーザによって送られた各クエリに関してデータ配列の特定の集合に対して計算を実行するためである。
たとえば、特定の低コストなグラフィックスプロセッサを使用して、説明される技術は、グラフィックスプロセッサの単一の計算セルのみを使用して1秒以内に2千万を超える類似度計算を成し遂げるために実装され得る。いくつかの実装例において、少なくとも2千万の類似度計算を成し遂げるための1秒の継続時間は、標準的なプロセッサ(たとえば、CPU)が同じ量の計算を実行するために必要とされる時間の10倍を超える速さである。したがって、説明される技術は、所与のプロセッサが所与の時間内により大きなデータ配列を処理し(またはより短い時間内に所与のサイズのデータ配列を処理し)、したがって、事実上、その他のデータ処理装置に比べてデータの相関の計算を成し遂げるための高められた計算能力を提供することを可能にする。また、説明される技術は、最小限の人の介入を含み、データを予めソートすること、データ配列を生成すること、またはデータ配列のサイズを構成することを手動で実行することを必要としない繰り返すことができる自動化されたプロセスを提供する。したがって、技術は、グラフィックスプロセッサ/GPUコンピューティング環境においてデータをソートするためにk-min-hashまたはk-最小値アルゴリズムを使用することにともなう課題が原因でシステムが以前は自動的に速く実行することができなかった動作(たとえば、相当数の類似度計算)をコンピューティングシステムが迅速に実行することを可能にする。
本明細書において説明される主題の1つまたは複数の実施形態の詳細が、添付の図面および以下の説明に記載されている。主題のその他の特徴、態様、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
コンピューティングシステムのプロセッサを使用してエンティティの間の相関を決定するための例示的なコンピューティングシステムのブロック図である。 エンティティの間の関係を決定するための例示的なプロセスの流れ図である。 図1のコンピューティングシステムの少なくとも1つのプロセッサに関連する例示的なアーキテクチャの図である。 図1のコンピューティングシステムの少なくとも1つのプロセッサに関連する別の例示的なアーキテクチャの図である。 本明細書において説明される方法に関連して使用され得るコンピューティングシステムのブロック図である。
様々な図面における同様の参照番号および参照指示は、同様の要素を示す。
本明細書は、エンティティの間の関係を計算するためにグラフィックス処理ユニット(GPU)に予めロードされるデータをソートするためのk-min-hashまたはk-最小値(「KMV」)データ処理アルゴリズムを実装するための技術を説明する。特に、説明される技術は、GPUの計算セルがエンティティの間の関係を迅速に決定し得るようにGPUに予めソートされたデータを記憶することによって、たとえば、エンティティの間の類似度を決定するためのデータの相関の計算を高速化するために使用され得る。GPUは、特定の種類の相関アルゴリズムを実行することによって関係を決定する。関係は、GPUが相関アルゴリズムを実行する前にデータを予めソートするようにもはや要求されないので、現在のシステムに比べて高められた速度でGPUにおいて計算されるかまたは決定されることが可能である。
たとえば、エンティティ相関システムが、異なるエンティティを記述する情報を含む大量のデータを記憶する。システムは、データストレージデバイスからデータを取得し、データを予めソートし、それぞれが所定の量のエンティティを含む複数の予めソートされたデータ配列を生成するように構成される中央演算処理装置(CPU)を含み得る。データを予めソートすることおよびデータ配列を生成することは、CPUが取得されたデータを処理するためにKMVスケッチアルゴリズムを実行することに応じて行われる。データ配列は、データのそれぞれの集合(またはデータセット)に対応する。概して、1つのデータセットのエンティティは、アイテム(item)、人、または様々な電子的なおよび実在するオブジェクトとすることが可能である。たとえば、1つのデータセットのエンティティは、特定の地理的地域(たとえば、イギリス(U.K.))に住む特定の層(たとえば、20代男性)の人またはユーザとすることが可能である。同様に、別のデータセットのエンティティは、同じ地理的地域にやはり居住する別の層(たとえば、一般住民(general population))のユーザとすることが可能である。
システムは、GPUのメモリデバイスに記憶するために少なくとも2つのデータ配列(たとえば、テンソル)を予めロードするように構成されるテンソルデータフローインターフェースを含む。システムが情報に関するユーザのクエリを受け取ることに応答して、GPUは、それぞれのデータセット内のエンティティの間の相関(たとえば、類似度)を効率的に計算する。たとえば、クエリは、U.K.の一般住民に比べてU.K.の20歳男性がどのドメイン名をより面白いと思うのかを示す情報を求め得る。システムは、異なるデータセットのエンティティの間の関係を特徴付ける相関スコアを計算するために特定の種類の相関アルゴリズム(たとえば、Jaccard類似度アルゴリズム)を実行することによって相関を計算する。システムは、GPUにおいて計算された相関スコアを使用して、受け取られたクエリに応答する情報を提供する結果セットを生成する。
図1は、コンピューティングシステムのプロセッサを使用してエンティティの間の関係を決定するためのコンピューティングシステム100のブロック図である。システム100は、概して、コンピューティングサーバ102、エンティティ相関システム104、データストレージデバイス106、およびデータ取り込み構成要素108を含む。以下でより詳細に説明されるように、システム100は、k-min-hashまたはk-最小値(「KMV」)アルゴリズムを実装するための特定の計算規則を実行するように構成された専用ハードウェア回路を含む。これらの特定の規則の実行は、大きなエンティティのデータセットのソート(たとえば、事前ソート)および特定の種類の処理ユニットにおけるエンティティのデータセットの事前ロードを可能にする。処理ユニットは、データセットのエンティティの間の関係を計算するように構成されたプロセッサデバイス(たとえば、グラフィックス処理ユニット(GPU))とすることが可能である。特に、システム100を使用して実装される技術は、たとえば、エンティティの間の重なり合う属性および/または類似度を決定するための異なるデータの相関の計算を高速化するために使用される。
ここでシステム100の要素を参照すると、コンピューティングサーバ102は、エンティティ相関システム104を使用して少なくとも異なるデータセットのエンティティの間の相関を決定するように構成される。いくつかの実装例において、エンティティ相関システム104は、2つ以上のプロセッサマイクロチップを含むハードウェア回路(たとえば、専用回路)のサブシステムとしてサーバ102に含まれる。概して、サーバ102は、サーバ102のコンピュータシステムを集合的に形成するプロセッサ(たとえば、CPUおよびGPU)、メモリ、およびデータストレージデバイス106を含み得る。これらのコンピュータシステムのプロセッサは、システム100の例示的なディスプレイモニタにおいて出力するためにグラフィカルな情報を表示するための、メモリまたはデータストレージデバイス106に記憶された命令を含む、サーバ102によって実行するための命令を処理する。
いくつかの実装例において、記憶された命令の実行は、本明細書において説明される行為のうちの1つまたは複数をサーバ102またはシステム104によって実行させる。その他の実装においては、複数のプロセッサが、複数のメモリおよび複数の種類のメモリと一緒に適宜使用され得る。たとえば、サーバ102は、複数のその他のコンピューティングデバイスに接続される可能性があり、それぞれのデバイス(たとえば、サーババンク、サーバのグループ、モジュール、またはマルチプロセッサシステム)が、本明細書において説明される行為、動作、または論理フローの一部を実行する。
システム104は、データホスティングサービス110、データフローモジュール112、およびプロセッサモジュール114を含む。ホスティングサービス110は、データ取り込み構成要素108におけるユーザインタラクションに応答してモジュール114における処理のためのデータを提供するためにデータフローモジュール112を使用してプロセッサモジュール114とインターフェースをとるように構成される。いくつかの実装例において、ホスティングサービス110は、異なる種類のデータを取得するかまたは受け取るための様々な異なるデータソースへのリアルタイムアクセスのために構成される。取得されたデータは、データフローモジュール112の(下で説明される)データフロー管理の特徴を使用してモジュール114における処理のためにプロビジョニングされ得る。たとえば、システム104およびホスティングサービス110は、取り込み構成要素108におけるユーザインタラクションから生成されたクエリデータ120を受け取るために取り込み構成要素108とインタラクションすることができる。同様に、システム104およびホスティングサービス110は、モジュール114における処理のためにデータの様々な集合(たとえば、データセット)を取得するためにストレージデバイス106にアクセスすることができる。
ホスティングサービス110は、「スケッチ」に対応する情報のデータベースを含む。いくつかの実装例において、これらのスケッチは、ストレージデバイス106から取得されたデータセットに対して実行された分析および情報のソートに基づいてホスティングサービス110のデータベースに記憶するために生成される。ホスティングサービス110のデータベースは、情報の種類によってグループ分けされるかまたはそうでなければ特徴付けられる様々なスケッチを含み得る。たとえば、データベースは、異なる種類のユーザのクエリ、人もしくは個人、異なる地理的地域に関する人口統計、ドメイン名、商品、または様々なデジタルのおよび実在するアイテムもしくはオブジェクトに対応する予めソートされたエンティティデータのスケッチを含み得る。いくつかの実装例において、データベースに記憶された各スケッチは、スケッチを形成するエンティティ(またはクエリ)についての情報を特徴付けるための一意のタイプインジケータによって特定される。たとえば、一意のタイプインジケータは、スケッチを、特定の種類のエンティティ(たとえば、人、場所、デジタル資産、もしくはそれぞれの組合せ)、またはクエリデータ120を使用して取得され、スケッチのエンティティを参照する特定の種類のクエリに関する情報を含むものとして特定することができる。
本明細書において使用されるとき、「スケッチ」は、人の集合またはものの集合を記述するデータ配列である。たとえば、スケッチは、U.S.に住む人の集合またはU.K.に住む人の別の集合とすることが可能である。追加的にまたは代替的に、スケッチは、人、デジタル資産、または識別子(たとえば、特定の日におよび/もしくは特定の地理的位置から特定のURL (たとえば、www.example.com)にアクセスしたIPアドレス)の集合とすることが可能である。いくつかの実装例において、複数のスケッチのデータベース内の各スケッチは、一意のタイプインジケータによってグループ化される人の集合(または人もしくはアイテムに割り振られたそれぞれの識別子)とすることが可能である。たとえば、第1のスケッチが18歳の人を含むことが可能であり、それぞれの18歳の人がはっきり区別可能なエンティティであり、U.K.内の特定の都市(たとえば、ロンドン)に住んでいる一方、第2の異なるスケッチは、特定の時間枠の間にユーザによってクリックされたかまたはインタラクションされた特定の種類のオンラインコンテンツ(たとえば、スポンサー付きのコンテンツアイテム)を含むことが可能である。
以下でより詳細に説明されるように、システム104は、クエリデータ120から特定されたクエリおよびストレージデバイス106から取得されたデータセットを使用して複数のデータ配列を生成するように構成される。データ配列は、ユーザが取り込み構成要素108とインタラクションすることによって送られたクエリに応答する結果セットを生成するためにモジュール114において処理される。いくつかの実装例において、クエリは、取り込み構成要素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は、モジュール114における処理のためのデータセットを受け取るまたは取得するためにホスティングサービス110と通信する。以下でより詳細に説明されるように、CPU 116は、それぞれが予め定義されたサイズ属性を有する複数のそれぞれのスケッチまたはデータ配列を生成するためにKMVアルゴリズムを実行することによってデータセットを処理する。さらに、モジュール114の第2のプロセッサ118 (たとえば、GPU 118)が、第2のプロセッサ118のメモリキャッシュにロードするために複数のデータ配列の少なくとも1つのサブセットを受け取り得る。概して、第2のプロセッサ118は、例示的なGPUであり、本明細書においては「GPU 118」と呼ばれ得る。
データフローモジュール112のMLフレームを使用して、システム100は、GPU 118のメモリキャッシュにロードされるデータ配列を使用して相関分析を実行するためのアルゴリズム(たとえば、相関アルゴリズム)をGPU 118に実行させる。特に、GPU 118は、異なる種類のMLアルゴリズムを実行するために使用されるいくつかの種類のGPUのいずれか1つとすることが可能である。この文脈で、データフローモジュール112は、モジュール114のプロセッサデバイスとして含まれ得る異なる種類のGPUの各々とインターフェースをとるために特定のカーネル(kernel)が提供されるように構成される。いくつかの実装例において、データフローモジュール112は、モジュール114に含まれ得る異なる種類のGPUにおいて実行するためのソフトウェア命令およびその他の符号化されたアルゴリズムを設計者が生成し得るように構成される。いくつかの実装例において、アルゴリズムは、エンティティに関連する類似度、推論、確率、および相関を決定するため、または統計分析を使用して大きなデータセットのエンティティの間の関係を見分けるための計算を実行するために実行され得る。
プロセッサモジュール114は、CPU 116およびGPU 118を含む。上で示されたように、CPU 116は、ホスティングサービス110を介して取得されたデータセットを受け取り、KMVデータ処理アルゴリズムを実行してデータを予めソートし、KMVアルゴリズム(たとえば、スケッチアルゴリズム)の実行および予めソートされたデータに基づいて複数のデータ配列を生成する。モジュール114は、所定の処理スケジュールに基づいてCPU 116において起動または実行されるバッチ処理(たとえば、1日1回のバッチ処理)を使用してデータセット内のエンティティデータをソートし、データ配列を生成するように構成され得る。いくつかの実装例において、モジュール114は、ホスティングサービス110を介して取得されたデータセット内のエンティティデータのストリームの分析に基づいて予めソートされたデータ配列を生成するように構成される。
複数の予めソートされたデータ配列の各々は、それぞれが予め定義されたサイズ属性を有するそれぞれのスケッチに対応する。たとえば、予め定義されたサイズは、各データ配列が64,000 (「64k」)個以下のエンティティを含むように設定され得る。いくつかの実装例において、サイズ属性は、64k個を超えるエンティティであるが、GPU 118の特定のメモリ容量を超えるエンティティの特定の量未満とすることが可能である。いくつかの実装例において、データ配列の予め定義されたサイズ属性は、GPU 118のキャッシュメモリ容量に基づいて設定される。
GPU 118は、GPU 118のメモリ/ストレージ媒体にロードされる複数のデータ配列またはデータ配列の複数のグループを受け取る。たとえば、1つの場合に、GPU 118は、CPU 116がデータ配列を生成した後にGPUにおいて行われる1回のデータロードに基づいて複数のエンティティに関する情報を受け取る。データ配列は、GPUのその他のメモリセクションに比べて「コンパクト」と見なされ得るGPUメモリのエリアにロードされ、記憶される。たとえば、複数のデータ配列は、データ配列毎に64k個のエンティティの予め定義されたサイズ属性に基づいてGPUのコンパクトなキャッシュメモリにロードされ得る。言い換えると、データ配列は、64k個のエンティティの各エンティティに関する情報密度(たとえば、パラメータ値)がコンパクトなキャッシュメモリの閾値の容量を超えないとき、コンパクトなキャッシュメモリに記憶するためにそれぞれ構成される。いくつかの実装例において、データ配列は、テンソルを表すことができ、したがって、本明細書においてはデータ構造またはクエリテンソルもしくはエンティティテンソルと呼ばれ得る。いくつかの実装例において、テンソルは、幾何学オブジェクトであり、例示的な幾何学オブジェクトは、行列およびデータ配列を含む。例示的なテンソルは、1次元幾何学オブジェクトまたは多次元幾何学オブジェクトとすることが可能である。
図2から図4を参照して以下でより詳細に説明されるように、システム100において受け取られた所与のクエリに関して、GPU 118がクエリに対する応答を生成するためのデータを受け取るように、単一のデータロード動作が実行され得る。ロード動作中に、GPU 118は、異なるエンティティについての情報を有し、受け取られたクエリのタイプインジケータに一致するエンティティタイプインジケータを有する少なくとも1つのデータ配列を受け取り得る。GPU 118は、受け取られたクエリに関連するかまたは受け取られたクエリと閾値の量の関連性を有するクエリテンソルを受け取ることもできる。GPU 118は、データロード動作中に取得された情報を使用してクエリに対する応答を生成する。いくつかの実装例においては、システム104がホスティングサービス110のデータベースのための多数のスケッチを計算するバッチプロセスが実行される。そして、GPU 118は、データフローモジュール112に関連するAPIを通じて複数のスケッチまたはデータ配列の各々に関する情報またはパラメータ値をロードする。いくつかの実装例において、GPU 118は、ホスティングサービス110を介してアクセス可能な例示的なインパス(impasse)データベースからGPU 118自体の内部メモリにこのデータをロードする。インパスデータベースは、データ配列をロードし、取り込み構成要素108において受け取られたクエリを発するためにデータフローAPIを通じてCPU 116およびGPU 118と通信するインパスサービスに関連付けられ得る。たとえば、実行時間の間に、発せられたクエリは、ホスティングサービス110からデータフローモジュール112のAPIを通じてGPU 118に至る問い合わせ経路を使用してGPU 118にロードされたデータ配列に対して処理される。
図2は、それぞれのデータ配列のエンティティの間の関係を決定するための例示的なプロセス200の流れ図である。たとえば、プロセス200は、GPU 118において実行される類似度アルゴリズムを使用してエンティティの間の類似度を計算するためのプロセスフローであり得る。プロセス200は、上述のシステム100を使用して実施されるかまたは実行されることが可能であり、プロセス200の説明は、システム100の上述のコンピューティングリソースを参照し得る。いくつかの実装例において、プロセス200の説明される行為は、本明細書において説明されるコンピューティングシステムの少なくとも1つのプロセッサおよびメモリによって実行可能なプログラミングされたソフトウェア命令によって可能にされる。
ここでプロセス200を参照すると、システム100の第1の処理ユニット(たとえば、CPU) 116が、ストレージデバイス106に記憶されたデータを取得する。取得されたデータは、複数のエンティティについての情報を含む(202)。たとえば、1つのデータ配列のエンティティは、異なる種類のアイテム、人、または様々な電子的なおよび実在するアイテムもしくはオブジェクトを含むデータセットによって表され得る。たとえば、1つのデータセット(データ配列)のエンティティは、特定の地理的地域(たとえば、イギリス(U.K.))に住む特定の人口グループ(たとえば、20代男性)の人またはユーザとすることが可能である。同様に、別のデータセットのエンティティは、様々な種類のアイテム、または同じ地理的地域にやはり居住する別の層のユーザ(たとえば、一般住民のユーザ)とすることが可能である。
処理ユニット/CPU 116は、ストレージデバイスから取得されたデータを使用して複数のデータ配列306を生成する(204)。複数のデータ配列306のそれぞれの生成されたデータ配列308、310、312は、概して、データ配列に割り振られた複数のエンティティの各エンティティに関する1つまたは複数のパラメータ値を含む。つまり、図3のDataArray_1 308の「Entity_1,1」は、DataArray_1の複数のエンティティのうちの第1のエンティティに関する1つまたは複数のパラメータ値を示すことが可能であり、図3のDataArray_1 308の「Entity_1,2」は、第2のエンティティに関する1つまたは複数のパラメータ値を示し、以下同様である。パラメータ値は、特定の種類のエンティティを定義し、データ配列内の個々のエンティティの属性または特徴を定義することができる。たとえば、パラメータ値は、エンティティタイプを人に対応するものとして定義することが可能であり、人(たとえば、エンティティ)の属性は、人の性別、人の年齢、または人の地理的位置などの人が提供した情報を含む。いくつかの実装例において、エンティティタイプは、ウェブに基づくまたはデジタルリソース(たとえば、エンティティ)に対応することが可能であり、ウェブに基づくリソース/エンティティの属性は、ウェブに基づくエンティティに関連するドメイン名、ユニフォームリソースロケータ(URL)、またはインターネットプロトコル(IP)アドレスとすることが可能である。
本明細書において検討されるシステムがユーザについての個人情報を収集するおよび/または使用する状況に関して、ユーザは、個人情報(たとえば、ユーザのソーシャルネットワーク、ソーシャルな行為もしくは活動、ユーザの好み、またはユーザの現在位置についての情報)を収集するおよび/または使用し得るプログラムまたは特徴を有効化する/無効化するまたは制御する機会を与えられ得る。さらに、特定のデータが、ユーザに関連する個人を特定できる情報が削除されるように、記憶されるかまたは使用される前に1つまたは複数の方法で処理され得る。たとえば、ユーザのアイデンティティ(identity)が、個人を特定できる情報がユーザに関して決定されることが不可能であるか、または位置情報が取得される場合にユーザの地理的位置が(都市、郵便番号、もしくは州のレベルなどに)一般化される可能性があり、したがって、ユーザの特定の位置が決定されることが不可能であるように匿名化され得る。
システム100は、ストレージデバイス106を介してアクセス可能なデータの異なるソースを分析し、処理するように構成される。たとえば、CPU 116は、特定のユーザによってインタラクションされるインプレッション(impression)ログを含むデータソース、または異なるユーザによってアクセスされた検索エンジンからの検索データなどのデータソースを分析し、処理することができる。いくつかの実装例においては、ユーザのグループによってまたはそれぞれのユーザに関するユーザ識別子(ID)のグループによって形成されるエンティティが、グループ内の各ユーザの年齢、性別、関心、位置、またはその他の特徴に基づいて異なるグループに分けられ得る。
KMVアルゴリズムは、エンティティのグループ内の各ユーザまたは各ユーザIDについての情報を使用して処理される例示的なハッシュアルゴリズムを表し得る。いくつかの実装例においては、ユーザIDの複数の集合が、データ配列を生成するためにデータを予めソートするためのエミッタ(emitter)として機能する大きなパラメータ値として表される。たとえば、データを予めソートすることは、データ配列を生成するために整数の任意の列を一様に分散されたエミッタにハッシュするハッシュアルゴリズムを使用して行われる。したがって、例示的なユースケースに関して、CPU 116は、何らかの予め定義されたユーザセット全体を表すスケッチを生成するためにユーザIDに対してソートするためにKMVアルゴリズムを実行する。たとえば、スポーツに関連するインプレッションとインタラクションする18歳から35歳までの男性についての1千万個のユーザIDのユーザセット全体から、CPU 116は、最小64,000個のユーザIDのみのスケッチまたはデータ配列をユーザセット全体のスケッチ表現として生成するためにソートを実行し得る。いくつかの実装例においては、ユーザIDに関してソートするよりも、システム100は、情報に含まれる任意の属性またはパラメータ値に関してデータセット内の情報をソートするように構成され得る。
生成されたデータ配列の各々は、第2の処理ユニット(たとえば、GPU) 118のそれぞれの計算セルにおける処理のために構成される。システム100は、スコアデータを計算し、計算されたスコアデータに基づいてデータ配列のエンティティの間の関係を決定するためにGPU 118に少なくとも2つのデータ配列を提供する(206)。たとえば、スケッチが、少なくとも1つのクエリセッションに関して1つの場合にGPU 118のメモリにロードされる。クエリセッションは、エンティティ相関システム104がスケッチのエンティティの間の関係を示す結果セットを取得しようとするユーザによって問い合わせされる時間を表す。したがって、問い合わせ時に、システムはクエリを処理するために使用されるデータを既に予めソートし、予めロードしてあるので、ユーザによって送られたクエリに対する応答が、その他の相関システムに比べて高められた速度および効率で決定され得る。いくつかの実装例においては、任意の所与の瞬間に、ユーザが、問い合わせ経路を介してシステム104にクエリとして新しいスケッチを渡すことによってシステム104にアクセスし、ランダムに問い合わせすることができる。
GPU 118は、GPU 118のそれぞれのセルにおいてデータ配列を同時に処理するために相関アルゴリズムを実行するように構成される。たとえば、処理ユニット118は、それぞれの計算セルにおいて実行される計算に基づいて1つまたは複数の相関スコアを計算する(208)。特に、GPU 118は、データ配列内のエンティティに関するパラメータ値を使用して相関アルゴリズム(たとえば、Jaccard類似度アルゴリズム)を実行し、相関スコアを計算する。パラメータ値は、相関アルゴリズムを含む数学的計算のための入力として与えられる。システム100は、計算された相関スコアに基づいて少なくとも2つのデータ配列のエンティティの間の関係を決定する(210)。いくつかの実装例において、関係は、エンティティの少なくとも1つのサブセットの間の重なり合う属性またはそれぞれのデータ配列のエンティティの間の類似度を示す。たとえば、システム100は、GPU 118の単一の計算セルにおける積集合および和集合と、積集合および和集合を特徴付ける対応する相関スコアとを計算することによってエンティティの間の類似度を決定する。
関係のスコア付けおよび決定をさらに示すために、実行時間の動作シナリオの間に、ホスティングサービス110は、クエリに応答する結果を決定するための処理のためのクエリテンソルとして新しいスケッチを渡すためにGPU 118とインターフェースをとる。たとえば、ユーザは、ホスティングサービス110がユーザのクエリに対する応答を(たとえば、リアルタイムで)提供するリアルタイムサービスプラットフォームの一部であるシステム100にアクセスすることができる。いくつかの実装例において、ユーザは、ホスティングサービス110を介して提供されるGPU 118へのインターフェースを使用してGPU 118によってリアルタイムで処理するためにクエリを送る。GPU 118は、ユーザによって送られたクエリに対する応答として結果または結果のセットを返すために本明細書において説明される技術を使用してクエリを処理する。GPU 118は、データベース内の所与の集合(またはデータセット)に関するあらゆるデータ配列とのユーザのクエリの積集合および和集合を計算するために相関アルゴリズムを実行する。
たとえば、積集合および和集合ならびに対応する相関スコアを決定するための大規模な計算の一部は、GPU 118の個々の計算セルにおいて扱われる。クエリは、GPU 118の各計算セル(たとえば、スレッドまたはコア)にロードされたスケッチまたはデータ配列を表すデータ構造に対して処理される。システム104は、GPUのあらゆる計算セルがデータ構造のうちのそれぞれのデータ構造に対してクエリを処理するために使用されることを含み得る大規模な並列計算を実行することによってクエリを処理する。言い換えると、データ構造のうちのそれぞれのデータ構造は、単一のGPU計算セルに処理のためにロードされるエンティティの異なるデータ配列を表し得る。たとえば、U.S.に住む特定の年齢グループの女性(第1のエンティティ)に関する64k個のユーザIDを有する第1のスケッチが、クエリがこの第1のスケッチの第1のエンティティに対して処理され得るように第1の計算セルにロードされることが可能である。同様に、U.K.に住む特定の年齢グループの男性(第2のエンティティ)に関する64k個のユーザIDを有する第2のスケッチが、クエリがこの第2のスケッチの第2のエンティティに対して処理され得るように第2の異なる計算セルにロードされることが可能である。
いくつかの実装例において、ホスティングサービス110は、クエリを受け取り、処理して、エンティティの間の類似度またはエンティティの異なる集合を含む条件付き確率などの関係を示す結果を返す情報ライブラリを表す。たとえば、クエリ(またはコマンド)は、「何らかの以前のクエリに関連するすべての条件付き確率は?」とすることが可能である。別のクエリは、特定のウェブサイトまたはURLを訪れる人のすべての年齢の条件付き確率に関連し得る。同様に、別のクエリは、「U.K.に住む40歳男性に関連して、U.S.に住む30歳女性によって訪問される重複するURLは何か?」とすることが可能である。所与のクエリに関して、システム100は、ユーザが送ったクエリに基づいて生成されたクエリのスケッチに対して、第1のデータ配列のエンティティと第2のデータ配列のエンティティとの間の関係を決定するために積集合および和集合を計算し得る。
たとえば、システム100は、GPU 118のそれぞれの計算セルを使用してJaccard類似度アルゴリズムを実行することによって関係を決定するための積集合および和集合を計算し得る。いくつかの実装例において、実行されるアルゴリズムは、クエリによって示される制約に対してGPU 118のそれぞれの計算セルにおいて処理されるデータ構造のエンティティの間の類似度のそれぞれの測定値を示す類似度スコアを決定するために使用される。システム104は、GPU 118を使用して、少なくとも2つの集合またはデータ配列に含まれるエンティティの比較に基づいてJaccard類似度(または相関)スコアを計算する。たとえば、Jaccard類似度スコアは、どのエンティティが2つの集合の間で共有されるかおよびどのエンティティが2つの集合の間で異なるかの数値的なインジケーションを提供し得る。いくつかの実装例において、Jaccard類似度スコアは、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は、選択された類似度計算方法を指定することができる。いくつかの実装例において、選択された類似度計算方法は、Jaccard類似度の方法またはコサイン類似度の方法などの方法とすることが可能である。
積集合および和集合に関して、システム100は、任意の2つの集合(2つの異なる配列/スケッチのエンティティ)の積集合のサイズならびに通常の集合演算に関連する積集合および和集合の比を計算することができる。これらの計算は、様々なその他の計算プロセスが構築され得る基礎的な土台を提供する。この文脈で、システム100は、情報の様々なソースから取得されたデータを使用してエンティティの集合の間の複数の種類の統計的関係を決定し得る。たとえば、Jaccard類似度が、決定され得る1つの統計的関係であり、一方、確率(たとえば、条件付き確率)が、別の統計的関係を示す。概して、任意の関連する統計が、説明される教示に基づいて集合の濃度(cardinality)で計算され得る。
システム104は、アルゴリズムのサブセットの中から特定の相関アルゴリズムを選択するように構成され得る。アルゴリズムは、類似度アルゴリズムまたは条件付き確率アルゴリズムのうちの1つとして選択され得る。GPU 118は、特定の相関アルゴリズムを実行し、少なくとも2つのデータ配列のエンティティの間の積集合および少なくとも2つのデータ配列のエンティティの間の和集合を計算する。システム104は、積集合および和集合に基づいて相関スコアを計算する。いくつかの実装例において、選択される相関アルゴリズムは、Jaccard類似度アルゴリズム、コサイン類似度アルゴリズム、独自の統計的アルゴリズム、またはデータの集合の間の条件付き確率を決定するための特定の計算プロセスである。
図3は、図1のコンピューティングシステムの少なくとも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のエンティティは、特定の地理的地域(たとえば、イギリス(U.K.))に住む特定の層(たとえば、20代男性)のユーザとすることが可能である。相関の計算は、少なくとも、GPU 118のコンパクトなメモリに記憶されるそれぞれのデータ配列308および310内の予めソートされたエンティティの集合を使用して実行される。データ配列は、データ配列の予め定義されたサイズおよびデータ構造に基づいてGPU 118のコンパクトなメモリまたはデータキャッシュに記憶するために構成される。たとえば、予め定義されたサイズは、各データ配列が64,000 (「64k」)個以下のエンティティを含むように設定され得る。いくつかの実装例において、それぞれのデータ配列のこの予め定義されたサイズ属性は、GPU 118のプロセッサコアの構造に基づいて導出され得る。
計算を実行するための相関アルゴリズムの実行は、GPU 118内で大規模な同時処理(たとえば、超並列計算)を行わせる。たとえば、同時処理は、1つまたは複数の転送ブロック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のメモリキャッシュに各データ配列をロードし、記憶するための記憶位置をGPU 118にフェッチさせるプロセス402を実行する。GPU 118のメモリキャッシュは、コンパクトなメモリを表すことが可能であり、各データ配列は、コンパクトなメモリ内の記憶位置のデータ容量に従ってサイズを決められる。GPU 118にロードされる少なくとも1つのデータ配列は、GPU 118の計算セルの各々におけるアクセスのために構成されるクエリテンソル(たとえば、データ配列312)である。たとえば、クエリテンソルは、それぞれのデータ配列のエンティティの間の関係(たとえば、類似度)を計算するためにGPU 118において複製され、並列にアクセスされる。各計算セルは、各セルにおいてそれぞれの相関スコアを計算するためにクエリテンソルのクエリ情報にアクセスし、使用する。
システム104は、少なくとも2つのデータ配列がGPU 118において並列的にクエリテンソルに対して同時に処理されるときに、異なるデータ配列のエンティティの間の類似度およびその他の関係を決定する。特に、アーキテクチャ400は、エンティティの間の類似度およびその他の関係を決定するためのデータ計算を高速化するための技術を実装するために使用され得る。たとえば、技術は、GPU 118のメモリの閾値を超えないサイズ属性(たとえば、64k)を有するように予めソートされたデータ配列を構成することを含み得る。技術は、GPU 118にデータ配列を記憶することと、各データ配列をGPU 118の特定の計算セルに割り振ることとをさらに含み得る。システム104は、セルがエンティティの間の関係を決定するために関連するデータに迅速にアクセスすることができるように計算セルへの各データ配列の割り振りを決定し得る。
いくつかの実装例において、システム104は、CPU 116にGPU 118によって生成された計算結果をフェッチさせるプロセス404を実行する。たとえば、CPU 116は、計算結果を表す相関スコアを取得し、クエリを送ったユーザに出力するために提供されるクエリ応答を生成するために結果を処理する。いくつかの実装例において、エンティティの間の関係を決定することは、計算された相関スコアが閾値スコアを超えるかどうかを判定することを含む。計算された相関スコアが閾値スコアを超えると判定することに応じて、システム104は、閾値スコアを超える相関スコアを使用してランク付けされるエンティティのリストを生成する。
いくつかの実装例において、システム104は、クエリへのn個の最良の一致である1つまたは複数のデータ配列を特定する情報を返すことによってGPU 118において実行された計算の結果をCPU 116に返す。たとえば、システム104は、データ配列がそれぞれの計算セルにおいてクエリテンソルに対して処理されるときに計算される相関スコアを使用してクエリへのn個の最良の一致を決定する。いくつかの実装例においては、クエリへのn個の最良の一致であるデータ構造が、閾値の相関スコアを超える相関スコアを使用してランク付けされるエンティティの生成されたリストに含まれる。したがって、クエリへのn個の最良の一致であるデータ配列が、ランク付けされたエンティティの生成されたリストの分析に基づいて特定され得る。
いくつかの実装例において、GPU 118は、その他の相関システムに比べて高められた速度でスコア、計算結果、および/またはエンティティの間の関係を決定する。これは、説明される技術が特定の相関アルゴリズムを実行する前にデータをソートする/予めソートすることなくGPU 118が必要な計算を実行することを可能にするおかげである。さらに、GPU 118は、その他の相関システムに比べて最小限のスレッド間データ通信によってまたはスレッド間データ通信なしに必要な計算を実行し得る。これは、説明される技術がさらなる処理のために隣接したスレッドブロックに中間結果を伝達する必要なしにデータ配列の特定の集合に対してGPU 118の各計算セルが計算を実行することを可能にするおかげである。
図5は、本明細書に記載のシステムおよび方法を、クライアントとしてかまたは1つのサーバもしくは複数のサーバとしてかのどちらかで実装するために使用され得るコンピューティングデバイス500、550のブロック図である。コンピューティングデバイス500は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、およびその他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すように意図される。コンピューティングデバイス550は、携帯情報端末、セルラ電話、スマートフォン、スマートウォッチ、頭部装着型デバイス、およびその他の同様のコンピューティングデバイスなどの様々な形態のモバイルデバイスを表すように意図される。本明細書に示される構成要素、それらの構成要素の接続および関係、ならびにそれらの構成要素の機能は、単に例示的であるように意図されており、本明細書において説明および/または特許請求される実装を限定するように意図されていない。
コンピューティングデバイス500は、プロセッサ502、メモリ504、ストレージデバイス506、メモリ504および高速拡張ポート510に接続する高速インターフェース508、ならびに低速バス514およびストレージデバイス506に接続する低速インターフェース512を含む。構成要素502、504、506、508、510、および512の各々は、様々なバスを用いて相互接続されており、共通のマザーボードに搭載されるか、または適宜その他の方法で搭載され得る。プロセッサ502は、高速インターフェース508に結合されたディスプレイ516などの外部入力/出力デバイス上にGUIのためのグラフィカルな情報を表示するために、メモリ504またはストレージデバイス506に記憶された命令を含む、コンピューティングデバイス500内で実行するための命令を処理することができる。その他の実装においては、複数のプロセッサおよび/または複数のバスが、複数のメモリおよび複数の種類のメモリと一緒に適宜使用され得る。また、複数のコンピューティングデバイス500が、各デバイスが必要な動作の一部を提供するようにして、たとえば、サーババンク、一群のブレードサーバ、またはマルチプロセッサシステムとして接続され得る。
メモリ504は、コンピューティングデバイス500内で情報を記憶する。1つの実装において、メモリ504は、コンピュータ可読媒体である。1つの実装において、メモリ504は、1つの揮発性メモリユニットまたは複数の揮発性メモリユニットである。別の実装において、メモリ504は、1つの不揮発性メモリユニットまたは複数の不揮発性メモリユニットである。
ストレージデバイス506は、コンピューティングデバイス500に大容量ストレージを提供することができる。1つの実装において、ストレージデバイス506は、コンピュータ可読媒体である。様々な異なる実装において、ストレージデバイス506は、フロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリもしくはその他の同様のソリッドステートメモリデバイス、またはストレージエリアネットワークもしくはその他の構成内のデバイスを含む一群のデバイスであり得る。1つの実装においては、コンピュータプログラム製品が、情報担体内に有形で具現化される。コンピュータプログラム製品は、実行されるときに上述の方法などの1つまたは複数の方法を実行する命令を含む。情報担体は、メモリ504、ストレージデバイス506、またはプロセッサ502上のメモリなどのコンピュータ可読媒体または機械可読媒体である。
高速コントローラ508は、コンピューティングデバイス500に関する帯域集約的な動作を管理し、一方、低速コントローラ512は、より低い帯域集約的な動作を管理する。役割のそのような割り当ては、例示的であるに過ぎない。1つの実装において、高速コントローラ508は、メモリ504と、たとえば、グラフィックスプロセッサまたはグラフィックスアクセラレータを介してディスプレイ516と、様々な拡張カード(図示せず)を受け入れ得る高速拡張ポート510とに結合される。実装において、低速コントローラ512は、ストレージデバイス506および低速拡張ポート514に結合される。様々な通信ポート、たとえば、USB、Bluetooth(登録商標)、イーサネット、ワイヤレスイーサネットを含む可能性がある低速拡張ポートは、キーボード、ポインティングデバイス、スキャナなどの1つもしくは複数の入力/出力デバイスと結合され得るか、またはたとえばネットワークアダプタを介してスイッチもしくはルータなどのネットワークデバイスと結合され得る。
コンピューティングデバイス500は、図に示されるように、多くの異なる形態で実装され得る。たとえば、コンピューティングデバイス500は、1つの標準的なサーバ520として実装されるか、または一群のそのようなサーバ内で複数回実装され得る。コンピューティングデバイス500は、ラックサーバシステム524の一部として実装される可能性もある。さらに、コンピューティングデバイス500は、ラップトップコンピュータ522などのパーソナルコンピュータで実装され得る。代替的に、コンピューティングデバイス500の構成要素は、デバイス550などのモバイルデバイスのその他の構成要素(図示せず)と組み合わされ得る。そのようなデバイスの各々は、コンピューティングデバイス500、550のうちの1つまたは複数を含む可能性があり、システム全体が、互いに通信する複数のコンピューティングデバイス500、550によって構成され得る。
コンピューティングデバイス550は、構成要素の中でもとりわけ、プロセッサ552、メモリ564、ディスプレイ554などの入力/出力デバイス、通信インターフェース566、およびトランシーバ568を含む。デバイス550は、追加的なストレージを提供するために、マイクロドライブまたはその他のデバイスなどのストレージデバイスを備える可能性もある。構成要素550、552、564、554、566、および568の各々は、様々なバスを使用して相互接続されており、構成要素のうちのいくつかは、共通のマザーボードに搭載されるか、または適宜その他の方法で搭載され得る。
プロセッサ552は、メモリ564に記憶された命令を含め、コンピューティングデバイス550内で実行するための命令を処理することができる。プロセッサは、別個のアナログプロセッサおよびデジタルプロセッサも含む可能性がある。プロセッサは、たとえば、ユーザインターフェース、デバイス550によって実行されるアプリケーション、およびデバイス550によるワイヤレス通信の制御などの、デバイス550のその他の構成要素の調整を行う可能性がある。
プロセッサ552は、ディスプレイ554に結合された制御インターフェース558およびディスプレイインターフェース556を介してユーザとコミュニケーションし得る。ディスプレイ554は、たとえば、TFT LCDディスプレイもしくはOLEDディスプレイ、またはその他の適切なディスプレイテクノロジーであり得る。ディスプレイインターフェース556は、ユーザに対してグラフィカルな情報およびその他の情報を提示するようにディスプレイ554を駆動するための適切な回路を含む可能性がある。制御インターフェース558は、ユーザからコマンドを受信し、それらのコマンドを、プロセッサ552に送るために変換し得る。さらに、その他のデバイスとのデバイス550の近距離通信を可能にするために、プロセッサ552と通信する外部インターフェース562が設けられ得る。たとえば、外部インターフェース562は、たとえば、ドッキング手順による有線通信、またはたとえば、Bluetooth(登録商標)もしくはその他のそのようなテクノロジーによるワイヤレス通信を提供し得る。
メモリ564は、コンピューティングデバイス550内で情報を記憶する。1つの実装において、メモリ564は、コンピュータ可読媒体である。1つの実装において、メモリ564は、1つの揮発性メモリユニットまたは複数の揮発性メモリユニットである。別の実装において、メモリ564は、1つの不揮発性メモリユニットまたは複数の不揮発性メモリユニットである。また、拡張メモリ574が設けられ、たとえば、SIMMカードインターフェースを含む可能性がある拡張インターフェース572を介してデバイス550に接続され得る。そのような拡張メモリ574は、デバイス550に追加的な記憶空間を提供し得るか、またはデバイス550に関するアプリケーションもしくはその他の情報を記憶する可能性もある。特に、拡張メモリ574は、上述のプロセスを実行または補足する命令を含む可能性があり、安全な情報を含む可能性もある。したがって、たとえば、拡張メモリ574は、デバイス550のセキュリティモジュールとして設けられる可能性があり、デバイス550の安全な使用を可能にする命令を用いてプログラミングされ得る。さらに、ハッキングすることができない方法でSIMMカードに識別情報を置くなど、追加的な情報とともに、安全なアプリケーションがSIMMカードによって提供され得る。
メモリは、たとえば、以下で検討されるように、フラッシュメモリおよび/またはMRAMメモリを含む可能性がある。1つの実装においては、コンピュータプログラム製品が、情報担体内に有形で具現化される。コンピュータプログラム製品は、実行されるときに上述の方法などの1つまたは複数の方法を実行する命令を含む。情報担体は、メモリ564、拡張メモリ574、またはプロセッサ552上のメモリなどのコンピュータ可読媒体または機械可読媒体である。
デバイス550は、必要に応じてデジタル信号処理回路を含む可能性がある通信インターフェース566を介してワイヤレス通信し得る。通信インターフェース566は、とりわけ、GSM音声電話、SMS、EMS、またはMMSメッセージング、CDMA、TDMA、PDC、WCDMA(登録商標)、CDMA2000またはGPRSなどの様々な方式またはプロトコルで通信を提供し得る。そのような通信は、たとえば、無線周波数トランシーバ568を介して行われ得る。さらに、近距離通信が、Bluetooth(登録商標)、WiFi、またはその他のそのようなトランシーバ(図示せず)を用いるなどして行われ得る。さらに、GPS受信機モジュール570が、追加的なワイヤレスデータをデバイス550に提供し得、それらの追加的なワイヤレスデータは、デバイス550上で実行されるアプリケーションにより適宜使用され得る。
デバイス550は、ユーザから発話された情報を受け取り、その情報を使用可能なデジタル情報に変換し得る音声コーデック560を使用して、聞こえるようにもコミュニケーションし得る。同じく、音声コーデック560は、たとえば、デバイス550のハンドセットのスピーカを介するなどして、ユーザのための聞くことができる音声を生成し得る。そのような音声は、音声電話通話の音声を含む可能性があり、記録された音声、たとえば、ボイスメッセージ、音楽ファイルなどを含む可能性があり、デバイス550上で動作するアプリケーションによって生成された音声を含む可能性もある。
コンピューティングデバイス550は、図に示されるように、多くの異なる形態で実装され得る。たとえば、コンピューティングデバイス550は、セルラ電話580として実装され得る。また、コンピューティングデバイス550は、スマートフォン582、携帯情報端末、またはその他の同様のモバイルデバイスの一部として実装される可能性もある。
本明細書に記載のシステムおよび技術の様々な実装は、デジタル電子回路、集積回路、特別に設計されたASIC、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはこれらの組合せに実現され得る。これらの様々な実装は、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受け取り、それらにデータおよび命令を送信するために結合された、専用または汎用であり得る少なくとも1つのプログラミング可能なプロセッサを含むプログラミング可能なシステム上の、実行可能および/または解釈可能な1つまたは複数のコンピュータプログラムへの実装を含み得る。
プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとしても知られるこれらのコンピュータプログラムは、プログラミング可能なプロセッサ用の機械命令を含み、高レベル手続き型プログラミング言語および/もしくはオブジェクト指向プログラミング言語、ならびに/またはアセンブリ/機械言語で実装され得る。本明細書で使用されるとき、用語「機械可読媒体」、「コンピュータ可読媒体」は、機械命令を機械可読信号として受信する機械可読媒体を含む、プログラミング可能なプロセッサに機械命令および/またはデータを提供するために使用される任意のコンピュータプログラム製品、装置、および/またはデバイス、たとえば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD)を指す。用語「機械可読信号」は、プログラミング可能なプロセッサに機械命令および/またはデータを提供するために使用される任意の信号を指す。
ユーザとのインタラクションを提供するために、本明細書に記載のシステムおよび技術は、ユーザに対して情報を表示するためのディスプレイデバイス、たとえば、CRT (ブラウン管)またはLCD (液晶ディスプレイ)モニタ、ならびにユーザがコンピュータに入力を与えることができるキーボードおよびポインティングデバイス、たとえば、マウスまたはトラックボールを有するコンピュータ上に実装され得る。その他の種類のデバイスが、ユーザとのインタラクションを提供するためにやはり使用されることが可能であり、たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであることが可能であり、ユーザからの入力は、音響、発話、または触覚による入力を含む任意の形態で受け取られることが可能である。
本明細書に記載のシステムおよび技術は、バックエンド構成要素を、たとえば、データサーバとして含むか、またはアプリケーションサーバなどのミドルウェア構成要素を含むか、またはユーザが本明細書に記載のシステムおよび技術の実装とインタラクションすることができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータなどのフロントエンド構成要素を含むか、またはそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムに実装され得る。システムの構成要素は、通信ネットワークなどのデジタルデータ通信の任意の形態または媒体によって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)、広域ネットワーク(「WAN」)、およびインターネットを含む。
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントおよびサーバは、概して互いに離れており、通常は通信ネットワークを通じてインタラクションする。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されており、互いにクライアント-サーバの関係にあるコンピュータプログラムによって生じる。
本明細書において使用されるとき、用語「モジュール」は、コンピュータの処理ユニット/デバイスに1つまたは複数の機能を実行させるプログラムコードを含む1つまたは複数のソフトウェアプログラムを実行するように構成された1つまたは複数のコンピュータを含むように意図されているがこれに限定されない。用語「コンピュータ」は、デスクトップコンピュータ、ラップトップコンピュータ、メインフレームコンピュータ、携帯情報端末、サーバ、ハンドヘルドデバイス、スマートフォン、タブレットコンピュータ、電子リーダ、またはデータを処理することができる任意のその他の電子デバイスなどの任意のデータ処理またはコンピューティングデバイス/システムを含むように意図される。
いくつかの実施形態が、説明された。しかしながら、本発明の趣旨および範囲から逸脱することなく、様々な修正がなされ得ることが、理解されるであろう。したがって、その他の実施形態は、以下の特許請求の範囲の範囲内にある。本明細書は、多くの特定の実装の詳細を含むが、これらは、特許請求され得るものの範囲に対する限定と見なされるべきではなく、むしろ、特定の実施形態に固有であり得る特徴の説明と見なされるべきである。別々の実施形態の文脈で本明細書において説明されている特定の特徴が、単一の実施形態において組み合わせて実装されることも可能である。
反対に、単一の実施形態の文脈で説明されている様々な特徴が、複数の実施形態において別々にまたは任意の好適な部分的組合せで実装されることも可能である。さらに、特徴は、特定の組合せで動作するものとして上述されていることがあり得、そのようなものとして最初に特許請求すらされ得るが、特許請求される組合せからの1つまたは複数の特徴は、場合によっては、その組合せから削除されることが可能であり、特許請求される組合せは、部分的組合せ、または部分的組合せの変形を対象とし得る。
同様に、動作が図中に特定の順序で示されているが、これは、そのような動作が示された特定の順序でもしくは逐次的順序で実行されること、または所望の結果を達成するために示されたすべての動作が実行されることを必要とするものと理解されるべきでない。特定の状況においては、マルチタスクおよび並列処理が有利であり得る。さらに、上述の実施形態における様々なシステムモジュールおよび構成要素の分割は、すべての実施形態においてそのような分割を必要とするものと理解されるべきでなく、説明されたプログラム構成要素およびシステムは、概して、単一のソフトウェア製品に一緒に統合されるか、または複数のソフトウェア製品にパッケージングされることが可能であることが理解されるべきである。
主題の特定の実施形態が説明されてきた。その他の実施形態は、以下の特許請求の範囲の範囲内にある。たとえば、特許請求の範囲において挙げられる行為は、異なる順序で実行され、依然として所望の結果を達成することができる。一例として、添付の図に示されたいくつかのプロセスは、所望の結果を達成するために、必ずしも示された特定の順序または逐次的順序を必要とするとは限らない。
100 コンピューティングシステム
102 コンピューティングサーバ
104 エンティティ相関システム
106 データストレージデバイス
108 データ取り込み構成要素
110 データホスティングサービス
112 データフローモジュール
114 プロセッサモジュール
116 第1のプロセッサ、CPU
118 第2のプロセッサ、GPU
120 クエリデータ
200 プロセス
300 アーキテクチャ
302 GPU/CPU転送ブロック
304 スレッドブロック
306 データ配列
308 データ配列
310 データ配列
312 データ配列、クエリテンソル
400 処理アーキテクチャ
402 プロセス
404 プロセス
500 コンピューティングデバイス
502 プロセッサ
504 メモリ
506 ストレージデバイス
508 高速インターフェース、高速コントローラ
510 高速拡張ポート
512 低速インターフェース、低速コントローラ
514 低速バス、低速拡張ポート
516 ディスプレイ
520 サーバ
522 ラップトップコンピュータ
524 ラックサーバシステム
550 コンピューティングデバイス
552 プロセッサ
554 ディスプレイ
556 ディスプレイインターフェース
558 制御インターフェース
560 音声コーデック
562 外部インターフェース
564 メモリ
566 通信インターフェース
568 トランシーバ
570 GPS受信機モジュール
572 拡張インターフェース
574 拡張メモリ
580 セルラ電話
582 スマートフォン

Claims (21)

  1. エンティティ相関システムの第1の処理ユニットによって、ストレージデバイスに記憶されたデータを取得するステップであって、前記データが、複数のエンティティについての情報を含む、ステップと、
    前記第1の処理ユニットにおいて、前記ストレージデバイスから取得された前記データを使用して複数のデータ配列を生成するステップであって、前記複数のデータ配列の各データ配列が、
    i)複数のエンティティのそれぞれに関するパラメータ値を含み、
    ii)第2の処理ユニットのそれぞれの計算セルにおける処理のために構成される、ステップと、
    前記エンティティ相関システムにおいて、前記複数のデータ配列のうちの少なくとも2つのデータ配列を前記第2の処理ユニットに提供するステップであって、前記第2の処理ユニットが、前記第2の処理ユニットのそれぞれの計算セルにおいて前記少なくとも2つのデータ配列を同時に処理するために相関アルゴリズムを実行するように構成される、ステップと、
    前記第2の処理ユニットにおいて、前記相関アルゴリズムおよび前記複数のエンティティに関する前記パラメータ値を使用して、前記それぞれの計算セルにおいて実行される計算に基づいて、前記少なくとも2つのデータ配列の相関スコアを計算するステップと、
    前記エンティティ相関システムにおいて、前記計算された相関スコアに基づいて、前記少なくとも2つのデータ配列のエンティティの間の関係を決定するステップであって、前記関係が、どのエンティティが前記少なくとも2つのデー配列の間で共有されるか、および/または、どのエンティティが前記少なくとも2つのデータ配列の間で異なるかを示す、ステップと
    を含む、コンピュータによって実施される方法。
  2. 前記相関スコアを計算するステップが、
    特定の相関アルゴリズムを類似度アルゴリズムまたは条件付き確率アルゴリズムとして選択するステップと、
    前記特定の相関アルゴリズムを使用して、前記少なくとも2つのデータ配列のエンティティの間の積集合および前記少なくとも2つのデータ配列のエンティティの間の和集合を計算するステップと、
    前記積集合および前記和集合に基づいて前記相関スコアを計算するステップと
    を含む、請求項1に記載の方法。
  3. 前記第1の処理ユニットが、前記複数のデータ配列を生成するために前記ストレージデバイスから取得されたデータを予めソートする中央演算処理装置(CPU)であり、
    前記第2の処理ユニットが、前記少なくとも2つのデータ配列のエンティティに関する前記パラメータ値を使用して並列計算を実行するグラフィックス処理ユニット(GPU)であり、
    前記特定の相関アルゴリズムが、Jaccard類似度アルゴリズム、コサイン類似度アルゴリズム、または条件付き確率アルゴリズムである、請求項2に記載の方法。
  4. 生成するステップが、
    前記複数のエンティティについての情報を含む前記データをスケッチアルゴリズムに基づいてソートするステップと、
    ソートするステップに応じて、前記データのスケッチ表現を生成するステップであって、各スケッチ表現が、前記複数のデータ配列の各々に対応する、生成するステップと
    を含む、請求項1に記載の方法。
  5. 各データ配列が、前記ストレージデバイスに記憶された前記データのスケッチ表現であり、
    前記複数のデータ配列の少なくとも1つのサブセットが、各々が所定の数のエンティティを有するそれぞれのデータ配列を含む、請求項1に記載の方法。
  6. 各スケッチ表現が、前記第2の処理ユニットに含まれる計算セルの量に応じてサイズを決められる、請求項5に記載の方法。
  7. 提供するステップが、
    前記第2の処理ユニットのメモリキャッシュに各データ配列を記憶するステップであって、前記メモリキャッシュが、前記第2の処理ユニットのコンパクトなメモリを表し、各データ配列が、前記コンパクトなメモリのデータ容量に応じてサイズを決められる、記憶するステップ
    を含む、請求項1に記載の方法。
  8. 前記データ配列のうちの少なくとも1つが、前記第2の処理ユニットに含まれる複数の計算セルの各々によるアクセスのために構成される、請求項1に記載の方法。
  9. エンティティの間の関係を決定するステップが、
    前記計算された相関スコアが閾値スコアを超えるかどうかを判定するステップと、
    前記計算された相関スコアが前記閾値スコアを超えるとの判定に応じて、前記閾値スコアを超える前記相関スコアを使用してランク付けされるエンティティのリストを生成するステップと
    を含む、請求項1に記載の方法。
  10. 1つまたは複数の処理デバイスと、
    1つまたは複数の非一時的機械可読ストレージデバイスであって、
    エンティティ相関システムの第1の処理ユニットによって、ストレージデバイスに記憶されたデータを取得することであって、前記データが、複数のエンティティについての情報を含む、取得すること、
    前記第1の処理ユニットにおいて、前記ストレージデバイスから取得された前記データを使用して複数のデータ配列を生成することであって、前記複数のデータ配列の各データ配列が、
    i)複数のエンティティのそれぞれに関するパラメータ値を含み、
    ii)第2の処理ユニットのそれぞれの計算セルにおける処理のために構成される、生成すること、
    前記エンティティ相関システムにおいて、少なくとも2つのデータ配列を前記第2の処理ユニットに提供することであって、前記第2の処理ユニットが、前記第2の処理ユニットのそれぞれの計算セルにおいて前記少なくとも2つのデータ配列を同時に処理するために相関アルゴリズムを実行するように構成される、提供すること、
    前記第2の処理ユニットにおいて、前記相関アルゴリズムおよび前記複数のエンティティに関する前記パラメータ値を使用して前記それぞれの計算セルにおいて実行される計算に基づいて、前記少なくとも2つのデータ配列の相関スコアを計算すること、ならびに
    前記エンティティ相関システムにおいて、前記計算された相関スコアに基づいて、前記少なくとも2つのデータ配列のエンティティの間の関係を決定することであって、前記関係が、どのエンティティが前記少なくとも2つのデータ配列の間で共有されるか、および/または、どのエンティティが前記少なくとも2つのデータ配列の間で異なるかを示す、決定すること
    を含む動作の実行を引き起こすために、前記1つまたは複数の処理デバイスによって実行可能な命令を記憶する、1つまたは複数の非一時的機械可読ストレージデバイスと
    を備える、電子システム。
  11. 前記相関スコアを計算することが、
    特定の相関アルゴリズムを類似度アルゴリズムまたは条件付き確率アルゴリズムとして選択することと、
    前記特定の相関アルゴリズムを使用して、前記少なくとも2つのデータ配列のエンティティの間の積集合および前記少なくとも2つのデータ配列のエンティティの間の和集合を計算することと、
    前記積集合および前記和集合に基づいて、前記相関スコアを計算することと
    を含む、請求項10に記載の電子システム。
  12. 前記第1の処理ユニットが、前記複数のデータ配列を生成するために前記ストレージデバイスから取得されたデータを予めソートする中央演算処理装置(CPU)であり、
    前記第2の処理ユニットが、前記少なくとも2つのデータ配列のエンティティに関する前記パラメータ値を使用して並列計算を実行するグラフィックス処理ユニット(GPU)であり、
    前記特定の相関アルゴリズムが、Jaccard類似度アルゴリズム、コサイン類似度アルゴリズム、または条件付き確率アルゴリズムである、請求項11に記載の電子システム。
  13. 生成することが、
    前記複数のエンティティについての情報を含む前記データをスケッチアルゴリズムに基づいてソートすることと、
    ソートすることに応じて、前記データのスケッチ表現を生成することであって、各スケッチ表現が、前記複数のデータ配列の各々に対応する、生成することと
    を含む、請求項10に記載の電子システム。
  14. 各データ配列が、前記ストレージデバイスに記憶された前記データのスケッチ表現であり、
    前記複数のデータ配列の少なくとも1つのサブセットが、各々が所定の数のエンティティを有するそれぞれのデータ配列を含む、請求項10に記載の電子システム。
  15. 各スケッチ表現が、前記第2の処理ユニットに含まれる計算セルの量に応じてサイズを決められる、請求項14に記載の電子システム。
  16. 提供することが、
    前記第2の処理ユニットのメモリキャッシュに各データ配列を記憶することであって、前記メモリキャッシュが、前記第2の処理ユニットのコンパクトなメモリを表し、各データ配列が、前記コンパクトなメモリのデータ容量に応じてサイズを決められる、記憶すること
    を含む、請求項10に記載の電子システム。
  17. 前記データ配列のうちの少なくとも1つが、前記第2の処理ユニットに含まれる複数の計算セルの各々によるアクセスのために構成される、請求項10に記載の電子システム。
  18. エンティティの間の関係を決定することが、
    前記計算された相関スコアが閾値スコアを超えるかどうかを判定することと、
    前記計算された相関スコアが前記閾値スコアを超えるとの判定に応じて、前記閾値スコアを超える前記相関スコアを使用してランク付けされるエンティティのリストを生成することと
    を含む、請求項10に記載の電子システム。
  19. エンティティ相関システムにおいて、エンティティのセットの中の関係に関連するデータのためのクエリを受信するステップと、
    受信した前記クエリに応答して前記エンティティの中にて決定された前記関係を示すデータを提供するステップと
    をさらに含み、
    前記複数のデータ配列を生成するステップは、前記クエリに関連するエンティティタイプをさらに使用して複数のデータ配列を生成する
    請求項1から9のいずれか一項に記載の方法。
  20. 前記1つまたは複数の非一時的機械可読ストレージデバイスは、
    エンティティ相関システムによって、エンティティのセットの中の関係に関連するデータのためのクエリを受信すること、
    受信した前記クエリに応答して前記エンティティの中にて決定された前記関係を示すデータを提供すること
    を含む動作の実行をさらに引き起こすために、前記1つまたは複数の処理デバイスによって実行可能な命令を記憶し、
    前記複数のデータ配列を生成することは、前記クエリに関連するエンティティタイプをさらに使用して複数のデータ配列を生成する
    請求項10から18のいずれか一項に記載の電子システム。
  21. 命令を記憶したコンピュータ可読記憶媒体であって、前記命令は、第2の処理ユニットと通信する第1の処理ユニットを含む処理システムによって実行されるときに、前記処理システムに、請求項1から9および請求項19のいずれか一項に記載の方法を実行させる、コンピュータ可読記憶媒体。
JP2020560917A 2018-05-01 2018-05-01 高速化された大規模な類似度計算 Active JP7213890B2 (ja)

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
JP2021522605A JP2021522605A (ja) 2021-08-30
JP7213890B2 true JP7213890B2 (ja) 2023-01-27

Family

ID=62486629

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020560917A Active JP7213890B2 (ja) 2018-05-01 2018-05-01 高速化された大規模な類似度計算

Country Status (6)

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

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 (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4976578B1 (ja) 2011-09-16 2012-07-18 楽天株式会社 画像検索装置およびプログラム
US20120321175A1 (en) 2011-06-17 2012-12-20 Microsoft Corporation Location-aided recognition
JP2017079080A (ja) 2016-12-21 2017-04-27 株式会社Jvcケンウッド 情報処理装置、情報処理方法、情報処理プログラム

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5415591Y2 (ja) 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
US5560006A (en) * 1991-05-15 1996-09-24 Automated Technology Associates, Inc. Entity-relation database
US5339257A (en) * 1991-05-15 1994-08-16 Automated Technology Associates Inc. Real-time statistical process monitoring system
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
US7716217B2 (en) * 2006-01-13 2010-05-11 Bluespace Software Corporation Determining relevance of electronic content
US8140530B2 (en) 2006-08-03 2012-03-20 Nec Corporation Similarity calculation device and information search device
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
WO2011014471A1 (en) * 2009-07-27 2011-02-03 Sensis Corporation System and method for correlating past activities, determining hidden relationships and predicting future activities
WO2011102432A1 (ja) * 2010-02-18 2011-08-25 Inoue Katsumi 情報絞り込み検出機能を備えたメモリ、このメモリを用いた情報検出方法、このメモリを含む装置、情報の検出方法、メモリの使用方法、およびメモリアドレス比較回路
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
CN102855259B (zh) * 2011-06-30 2015-05-13 Sap欧洲公司 大规模数据聚类分析的并行化
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
US9916538B2 (en) * 2012-09-15 2018-03-13 Z Advanced Computing, Inc. Method and system for feature detection
US9317875B2 (en) * 2012-10-08 2016-04-19 Linkedin Corporation Methods and systems for identifying similar schools
US8862662B2 (en) * 2012-10-29 2014-10-14 The Boeing Company Determination of latent interactions in social networks
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
US20160239499A1 (en) * 2015-02-12 2016-08-18 Red Hat, Inc. Object Creation Based on Copying Objects Corresponding to Similar Entities
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 阿里巴巴集团控股有限公司 数据处理方法及系统
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 (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120321175A1 (en) 2011-06-17 2012-12-20 Microsoft Corporation Location-aided recognition
JP2014523015A (ja) 2011-06-17 2014-09-08 マイクロソフト コーポレーション ロケーションを利用した認識
JP4976578B1 (ja) 2011-09-16 2012-07-18 楽天株式会社 画像検索装置およびプログラム
JP2017079080A (ja) 2016-12-21 2017-04-27 株式会社Jvcケンウッド 情報処理装置、情報処理方法、情報処理プログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
津田 宏治 外,離散構造処理系-知能情報処理を支えるアルゴリズムの技法 大規模データの類似度検索技術,人工知能学会誌,日本,(社)人工知能学会 ,2012年05月01日,第27巻 第3号,pp. 239--245
菅野 健太 外,メニーコアプロセッサを用いた大規模な集合間類似結合の高速化,第10回データ工学と情報マネジメントに関するフォーラム (第16回日本データベース学会年次大会) [Online] ,日本,電子情報通信学会データ工学研究専門委員会 日本データベース学会 情報処理学会データベースシステム研究会,2018年03月06日,pp. 1--5

Also Published As

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

Similar Documents

Publication Publication Date Title
US9454580B2 (en) Recommendation system with metric transformation
US10504120B2 (en) Determining a temporary transaction limit
US9218630B2 (en) Identifying influential users of a social networking service
US20170140038A1 (en) Method and system for hybrid information query
US11782991B2 (en) Accelerated large-scale similarity calculation
US20140006369A1 (en) Processing structured and unstructured data
US20150234883A1 (en) Method and system for retrieving real-time information
CN103177066A (zh) 分析和表示人际关系
CN104615723B (zh) 查询词权重值的确定方法和装置
CN111435376A (zh) 信息处理方法及系统、计算机系统和计算机可读存储介质
Fageeri et al. An efficient log file analysis algorithm using binary-based data structure
CN118093962A (zh) 数据检索方法、装置、系统、电子设备及可读存储介质
Zhao et al. Monochromatic and bichromatic ranked reverse boolean spatial keyword nearest neighbors search
Szczuka et al. Using domain knowledge in initial stages of KDD: optimization of compound object processing
CN115422429A (zh) 关联词的确定方法、装置、计算机设备和存储介质
WO2016144360A1 (en) Progressive interactive approach for big data analytics
US20180276294A1 (en) Information processing apparatus, information processing system, and information processing method
Hussan et al. An optimized user behavior prediction model using genetic algorithm on mobile web structure
Kakkar et al. Interactive analysis of big geospatial data with high‐performance computing: A case study of partisan segregation in the United States
CN116910229A (zh) 针对指标的智能查询方法和装置
CN114756654A (zh) 动态地名地址匹配方法、装置、计算机设备和存储介质
CN116910604A (zh) 用户分类方法、装置、计算机设备、存储介质和程序产品
CN118229251A (zh) 邮件检索展示方法、装置、计算机设备和存储介质
CN117874057A (zh) 数据的查询方法及装置、电子设备
CN117112724A (zh) 搜索推送方法、装置、设备、存储介质和计算机程序产品

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210115

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201223

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220301

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220801

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220809

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20221219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230117

R150 Certificate of patent or registration of utility model

Ref document number: 7213890

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150