(57)【要約】  エンティティ相関システムの第1のプロセッサを使用して、ストレージデバイスに記憶されたデータを取得するための、コンピュータストレージ媒体に符号化されたコンピュータプログラムを含む、方法、システム、および装置。データは、複数のエンティティについての情報を含む。第1のプロセッサは、取得されたデータを使用してデータ配列を生成する。各データ配列は、複数のエンティティに関するパラメータ値を含み、第2のプロセッサのそれぞれの計算セルにおける処理のために構成される。本システムは、データ配列を第2のプロセッサに提供する。第2のプロセッサは、それぞれの計算セルにおいてデータ配列を同時に処理するために相関アルゴリズムを実行するように構成される。第2のプロセッサは、アルゴリズムおよびパラメータ値を使用して、セルにおいて実行される計算に基づいて、相関スコアを計算する。本システムは、相関スコアに基づいて、データ配列のエンティティの間の関係を決定する。この関係は、エンティティのサブセットの間に存在する重なり合う属性または類似度を示す。
2021522605.tif 000002
【特許請求の範囲】
【請求項１】
エンティティ相関システムの第1の処理ユニットによって、ストレージデバイスに記憶されたデータを取得するステップであって、前記データが、複数のエンティティについての情報を含む、ステップと、
前記第1の処理ユニットにおいて、前記ストレージデバイスから取得された前記データを使用して複数のデータ配列を生成するステップであって、前記複数のデータ配列の各データ配列が、
i)複数のエンティティに関するパラメータ値を含み、
ii)第2の処理ユニットのそれぞれの計算セルにおける処理のために構成される、ステップと、
前記エンティティ相関システムにおいて、前記複数のデータ配列のうちの少なくとも2つのデータ配列を前記第2の処理ユニットに提供するステップであって、前記第2の処理ユニットが、前記第2の処理ユニットのそれぞれの計算セルにおいて前記少なくとも2つのデータ配列を同時に処理するために相関アルゴリズムを実行するように構成される、ステップと、
前記第2の処理ユニットにおいて、前記相関アルゴリズムおよび前記複数のエンティティに関する前記パラメータ値を使用して、前記それぞれの計算セルにおいて実行される計算に基づいて、相関スコアを計算するステップと、
前記エンティティ相関システムにおいて、前記計算された相関スコアに基づいて、前記少なくとも2つのデータ配列のエンティティの間の関係を決定するステップであって、前記関係が、前記エンティティの少なくとも1つのサブセットの間に存在する重なり合う属性を示す、ステップと
を含む、コンピュータによって実施される方法。
【請求項２】
前記相関スコアを計算するステップが、
特定の相関アルゴリズムを類似度アルゴリズムまたは条件付き確率アルゴリズムとして選択するステップと、
前記特定の相関アルゴリズムを使用して、前記少なくとも2つのデータ配列のエンティティの間の積集合および前記少なくとも2つのデータ配列のエンティティの間の和集合を計算するステップと、
前記積集合および前記和集合に基づいて前記相関スコアを計算するステップと
を含む、請求項1に記載の方法。
【請求項３】
前記第1の処理ユニットが、前記複数のデータ配列を生成するために前記ストレージデバイスから取得されたデータを予めソートする中央演算処理装置(CPU)であり、
前記第2の処理ユニットが、前記少なくとも2つのデータ配列のエンティティに関する前記パラメータ値を使用して並列計算を実行するグラフィックス処理ユニット(GPU)であり、
前記特定の相関アルゴリズムが、Jaccard類似度アルゴリズム、コサイン類似度アルゴリズム、または条件付き確率アルゴリズムである、請求項1に記載の方法。
【請求項４】
生成するステップが、
前記複数のエンティティについての情報を含む前記データをスケッチアルゴリズムに基づいてソートするステップと、
ソートするステップに応じて、前記データのスケッチ表現を生成するステップであって、各スケッチ表現が、前記複数のデータ配列の各々に対応する、生成するステップと
を含む、請求項1に記載の方法。
【請求項５】
各データ配列が、前記ストレージデバイスに記憶された前記データのスケッチ表現であり、
前記複数のデータ配列の少なくとも1つのサブセットが、各々が所定の数のエンティティを有するそれぞれのデータ配列を含む、請求項1に記載の方法。
【請求項６】
各スケッチ表現が、前記第2の処理ユニットに含まれる計算セルの量に応じてサイズを決められる、請求項5に記載の方法。
【請求項７】
提供するステップが、
前記第2の処理ユニットのメモリキャッシュに各データ配列を記憶するステップであって、前記メモリキャッシュが、前記第2の処理ユニットのコンパクトなメモリを表し、各データ配列が、前記コンパクトなメモリのデータ容量に応じてサイズを決められる、記憶するステップ
を含む、請求項1に記載の方法。
【請求項８】
前記データ配列のうちの少なくとも1つが、前記第2の処理ユニットに含まれる複数の計算セルの各々によるアクセスのために構成される、請求項1に記載の方法。
【請求項９】
エンティティの間の関係を決定するステップが、
前記計算された相関スコアが閾値スコアを超えるかどうかを判定するステップと、
前記計算された相関スコアが前記閾値スコアを超えるとの判定に応じて、前記閾値スコアを超える前記相関スコアを使用してランク付けされるエンティティのリストを生成するステップと
を含む、請求項1に記載の方法。
【請求項１０】
1つまたは複数の処理デバイスと、
1つまたは複数の非一時的機械可読ストレージデバイスであって、
エンティティ相関システムの第1の処理ユニットによって、ストレージデバイスに記憶されたデータを取得することであって、前記データが、複数のエンティティについての情報を含む、取得すること、
前記第1の処理ユニットにおいて、前記ストレージデバイスから取得された前記データを使用して複数のデータ配列を生成することであって、前記複数のデータ配列の各データ配列が、
i)複数のエンティティに関するパラメータ値を含み、
ii)第2の処理ユニットのそれぞれの計算セルにおける処理のために構成される、生成すること、
前記エンティティ相関システムにおいて、少なくとも2つのデータ配列を前記第2の処理ユニットに提供することであって、前記第2の処理ユニットが、前記第2の処理ユニットのそれぞれの計算セルにおいて前記少なくとも2つのデータ配列を同時に処理するために相関アルゴリズムを実行するように構成される、提供すること、
前記第2の処理ユニットにおいて、前記相関アルゴリズムおよび前記複数のエンティティに関する前記パラメータ値を使用して前記それぞれの計算セルにおいて実行される計算に基づいて相関スコアを計算すること、ならびに
前記エンティティ相関システムにおいて、前記計算された相関スコアに基づいて、前記少なくとも2つのデータ配列のエンティティの間の関係を決定することであって、前記関係が、前記エンティティの少なくとも1つのサブセットの間に存在する重なり合う属性を示す、決定すること
を含む動作の実行を引き起こすために、前記1つまたは複数の処理デバイスによって実行可能な命令を記憶する、1つまたは複数の非一時的機械可読ストレージデバイスと
を備える、電子システム。
【請求項１１】
前記相関スコアを計算することが、
特定の相関アルゴリズムを類似度アルゴリズムまたは条件付き確率アルゴリズムとして選択することと、
前記特定の相関アルゴリズムを使用して、前記少なくとも2つのデータ配列のエンティティの間の積集合および前記少なくとも2つのデータ配列のエンティティの間の和集合を計算することと、
前記積集合および前記和集合に基づいて、前記相関スコアを計算することと
を含む、請求項10に記載の電子システム。
【請求項１２】
前記第1の処理ユニットが、前記複数のデータ配列を生成するために前記ストレージデバイスから取得されたデータを予めソートする中央演算処理装置(CPU)であり、
前記第2の処理ユニットが、前記少なくとも2つのデータ配列のエンティティに関する前記パラメータ値を使用して並列計算を実行するグラフィックス処理ユニット(GPU)であり、
前記特定の相関アルゴリズムが、Jaccard類似度アルゴリズム、コサイン類似度アルゴリズム、または条件付き確率アルゴリズムである、請求項10に記載の電子システム。
【請求項１３】
生成することが、
前記複数のエンティティについての情報を含む前記データをスケッチアルゴリズムに基づいてソートすることと、
ソートすることに応じて、前記データのスケッチ表現を生成することであって、各スケッチ表現が、前記複数のデータ配列の各々に対応する、生成することと
を含む、請求項10に記載の電子システム。
【請求項１４】
各データ配列が、前記ストレージデバイスに記憶された前記データのスケッチ表現であり、
前記複数のデータ配列の少なくとも1つのサブセットが、各々が所定の数のエンティティを有するそれぞれのデータ配列を含む、請求項10に記載の電子システム。
【請求項１５】
各スケッチ表現が、前記第2の処理ユニットに含まれる計算セルの量に応じてサイズを決められる、請求項14に記載の電子システム。
【請求項１６】
提供することが、
前記第2の処理ユニットのメモリキャッシュに各データ配列を記憶することであって、前記メモリキャッシュが、前記第2の処理ユニットのコンパクトなメモリを表し、各データ配列が、前記コンパクトなメモリのデータ容量に応じてサイズを決められる、記憶すること
を含む、請求項10に記載の電子システム。
【請求項１７】
前記データ配列のうちの少なくとも1つが、前記第2の処理ユニットに含まれる複数の計算セルの各々によるアクセスのために構成される、請求項10に記載の電子システム。
【請求項１８】
エンティティの間の関係を決定することが、
前記計算された相関スコアが閾値スコアを超えるかどうかを判定することと、
前記計算された相関スコアが前記閾値スコアを超えるとの判定に応じて、前記閾値スコアを超える前記相関スコアを使用してランク付けされるエンティティのリストを生成することと
を含む、請求項10に記載の電子システム。
【請求項１９】
第1の処理ユニットにおいて第1のデータアイテムを受け取るステップと、
前記第1の処理ユニットによって、少なくとも前記受け取られた第1のデータアイテムからデータ構造を生成するステップであって、各データ構造が、それぞれのデータセットを表す、ステップと、
第2の処理ユニットのメモリに前記データ構造を記憶するステップと、
前記第1の処理ユニットにおいて、ユーザからクエリを受け取るステップと、
前記第2の処理ユニットによって、前記第2の処理ユニットに記憶された前記データ構造のうちの2つ以上に対して前記クエリを並列に処理するステップと、
前記処理の結果を前記第2の処理ユニットから前記第1の処理ユニットに返すステップと
を含む、方法。
【請求項２０】
前記第2の処理ユニットが、複数の処理コアを含み、前記第2の処理ユニットによって、前記データ構造に対して前記クエリを処理するステップが、
前記データ構造のうちのそれぞれのデータ構造に対して各処理コアにおいて並列に前記クエリを処理するステップ
を含む、請求項19に記載の方法。
【請求項２１】
前記第2の処理ユニットによって、前記第2の処理ユニットに記憶された前記データ構造に対して前記クエリを処理するステップが、前記第2の処理ユニットに記憶された前記データ構造に関して、前記データ構造と前記クエリとの間の類似度のそれぞれの測定値を決定することを含む、請求項19または20に記載の方法。
【請求項２２】
前記処理の結果を前記第2の処理ユニットから前記第1の処理ユニットに返すステップが、前記クエリに対するn個の最良の一致である前記データ構造を特定する情報を返すステップを含む、請求項19、20または21に記載の方法。
【請求項２３】
前記第1の処理ユニットが、前記受け取られたクエリからクエリデータ構造を生成し、前記クエリデータ構造を前記第2の処理ユニットに送信するステップを含み、
前記第2の処理ユニットによって前記クエリを処理するステップが、前記第2の処理ユニットに記憶された前記データ構造に対して前記クエリデータ構造を処理するステップを含む、請求項19から22のいずれか一項に記載の方法。
【請求項２４】
前記データ構造およびクエリデータ構造が、KMVスケッチである、請求項19から23のいずれか一項に記載の方法。
【請求項２５】
前記第2の処理ユニットによって、前記第2の処理ユニットに記憶された前記データ構造に対して前記クエリを処理するステップが、クエリデータ構造および前記記憶されたデータ構造の和集合を決定するステップを含む、請求項19から24のいずれか一項に記載の方法。
【請求項２６】
前記第2の処理ユニットによって、前記第2の処理ユニットに記憶された前記データ構造に対して前記クエリを処理するステップが、クエリデータ構造および前記記憶されたデータ構造の積集合を決定することを含む、請求項19から24のいずれか一項に記載の方法。
【請求項２７】
前記第2の処理ユニットによって、前記第2の処理ユニットに記憶された前記データ構造に対して前記クエリを処理するステップが、クエリデータ構造と前記データ構造との間のJaccard類似度を決定するステップを含む、請求項19から25のいずれか一項に記載の方法。
【請求項２８】
前記第1の処理ユニットにおいて前記第1のデータアイテムを受け取るステップが、データホスティングサービスから前記第1のデータアイテムを受け取るステップを含み、
前記方法が、前記処理の結果を前記第1の処理ユニットから前記データホスティングサービスに返すステップをさらに含む、請求項19から27のいずれか一項に記載の方法。
【請求項２９】
前記第1の処理ユニットにおいて第2のクエリを受け取るステップと、
前記第2の処理ユニットによって、前記第2の処理ユニットに記憶された前記データ構造に対して前記第2のクエリを処理するステップと
をさらに含む、請求項19から28のいずれか一項に記載の方法。
【請求項３０】
前記第1の処理ユニットにおいて第2のデータアイテムを受け取るステップと、
前記第1の処理ユニットによって、少なくとも前記受け取られた第2のデータアイテムから、更新されたデータ構造を生成するステップであって、各更新されたデータ構造が、それぞれのデータセットを表す、ステップと、
前記更新されたデータ構造を前記第2の処理ユニットの前記メモリに記憶するステップと
をさらに含む、請求項19から29のいずれか一項に記載の方法。
【請求項３１】
前記第1の処理ユニットにおいて第3のクエリを受け取るステップと、
前記第2の処理ユニットによって、前記第2の処理ユニットに記憶された前記更新されたデータ構造に対して前記第3のクエリを処理するステップと
をさらに含む、請求項30に記載の方法。
【請求項３２】
第2の処理ユニットと通信する第1の処理ユニットを含む処理システムであって、請求項19から31のいずれか一項に記載の方法を実行するように構成された、処理システム。
【請求項３３】
命令を記憶したコンピュータ可読記憶媒体であって、前記命令は、第2の処理ユニットと通信する第1の処理ユニットを含む処理システムによって実行されるときに、前記処理システムに、請求項19から31のいずれか一項に記載の方法を実行させる、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、大規模な類似度計算のための計算プロセスに関する。
【背景技術】
【０００２】
多くの場合、入力サンプルが複数の記憶されたレコードと一致するかどうか、またはどれぐらいよく一致するかを判定することが望ましいことがある。一例として、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つまたは複数を含み得る。たとえば、いくつかの実装例において、相関スコアを計算するステップは、特定の相関アルゴリズムを類似度アルゴリズムまたは条件付き確率アルゴリズムとして選択するステップと、特定の相関アルゴリズムを使用して、少なくとも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  スマートフォン
【図１】
2021522605.tif 000003
【図２】
2021522605.tif 000004
【図３】
2021522605.tif 000005
【図４】
2021522605.tif 000006
【図５】
2021522605.tif 000007
【手続補正書】
【提出日】令和3年1月15日(2021.1.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
エンティティ相関システムの第1の処理ユニットによって、ストレージデバイスに記憶されたデータを取得するステップであって、前記データが、複数のエンティティについての情報を含む、ステップと、
前記第1の処理ユニットにおいて、前記ストレージデバイスから取得された前記データを使用して複数のデータ配列を生成するステップであって、前記複数のデータ配列の各データ配列が、
i)複数のエンティティに関するパラメータ値を含み、
ii)第2の処理ユニットのそれぞれの計算セルにおける処理のために構成される、ステップと、
前記エンティティ相関システムにおいて、前記複数のデータ配列のうちの少なくとも2つのデータ配列を前記第2の処理ユニットに提供するステップであって、前記第2の処理ユニットが、前記第2の処理ユニットのそれぞれの計算セルにおいて前記少なくとも2つのデータ配列を同時に処理するために相関アルゴリズムを実行するように構成される、ステップと、
前記第2の処理ユニットにおいて、前記相関アルゴリズムおよび前記複数のエンティティに関する前記パラメータ値を使用して、前記それぞれの計算セルにおいて実行される計算に基づいて、相関スコアを計算するステップと、
前記エンティティ相関システムにおいて、前記計算された相関スコアに基づいて、前記少なくとも2つのデータ配列のエンティティの間の関係を決定するステップであって、前記関係が、前記エンティティの少なくとも1つのサブセットの間に存在する重なり合う属性を示す、ステップと
を含む、コンピュータによって実施される方法。
【請求項２】
前記相関スコアを計算するステップが、
特定の相関アルゴリズムを類似度アルゴリズムまたは条件付き確率アルゴリズムとして選択するステップと、
前記特定の相関アルゴリズムを使用して、前記少なくとも2つのデータ配列のエンティティの間の積集合および前記少なくとも2つのデータ配列のエンティティの間の和集合を計算するステップと、
前記積集合および前記和集合に基づいて前記相関スコアを計算するステップと
を含む、請求項1に記載の方法。
【請求項３】
前記第1の処理ユニットが、前記複数のデータ配列を生成するために前記ストレージデバイスから取得されたデータを予めソートする中央演算処理装置(CPU)であり、
前記第2の処理ユニットが、前記少なくとも2つのデータ配列のエンティティに関する前記パラメータ値を使用して並列計算を実行するグラフィックス処理ユニット(GPU)であり、
前記特定の相関アルゴリズムが、Jaccard類似度アルゴリズム、コサイン類似度アルゴリズム、または条件付き確率アルゴリズムである、請求項2に記載の方法。
【請求項４】
生成するステップが、
前記複数のエンティティについての情報を含む前記データをスケッチアルゴリズムに基づいてソートするステップと、
ソートするステップに応じて、前記データのスケッチ表現を生成するステップであって、各スケッチ表現が、前記複数のデータ配列の各々に対応する、生成するステップと
を含む、請求項1に記載の方法。
【請求項５】
各データ配列が、前記ストレージデバイスに記憶された前記データのスケッチ表現であり、
前記複数のデータ配列の少なくとも1つのサブセットが、各々が所定の数のエンティティを有するそれぞれのデータ配列を含む、請求項1に記載の方法。
【請求項６】
各スケッチ表現が、前記第2の処理ユニットに含まれる計算セルの量に応じてサイズを決められる、請求項5に記載の方法。
【請求項７】
提供するステップが、
前記第2の処理ユニットのメモリキャッシュに各データ配列を記憶するステップであって、前記メモリキャッシュが、前記第2の処理ユニットのコンパクトなメモリを表し、各データ配列が、前記コンパクトなメモリのデータ容量に応じてサイズを決められる、記憶するステップ
を含む、請求項1に記載の方法。
【請求項８】
前記データ配列のうちの少なくとも1つが、前記第2の処理ユニットに含まれる複数の計算セルの各々によるアクセスのために構成される、請求項1に記載の方法。
【請求項９】
エンティティの間の関係を決定するステップが、
前記計算された相関スコアが閾値スコアを超えるかどうかを判定するステップと、
前記計算された相関スコアが前記閾値スコアを超えるとの判定に応じて、前記閾値スコアを超える前記相関スコアを使用してランク付けされるエンティティのリストを生成するステップと
を含む、請求項1に記載の方法。
【請求項１０】
1つまたは複数の処理デバイスと、
1つまたは複数の非一時的機械可読ストレージデバイスであって、
エンティティ相関システムの第1の処理ユニットによって、ストレージデバイスに記憶されたデータを取得することであって、前記データが、複数のエンティティについての情報を含む、取得すること、
前記第1の処理ユニットにおいて、前記ストレージデバイスから取得された前記データを使用して複数のデータ配列を生成することであって、前記複数のデータ配列の各データ配列が、
i)複数のエンティティに関するパラメータ値を含み、
ii)第2の処理ユニットのそれぞれの計算セルにおける処理のために構成される、生成すること、
前記エンティティ相関システムにおいて、少なくとも2つのデータ配列を前記第2の処理ユニットに提供することであって、前記第2の処理ユニットが、前記第2の処理ユニットのそれぞれの計算セルにおいて前記少なくとも2つのデータ配列を同時に処理するために相関アルゴリズムを実行するように構成される、提供すること、
前記第2の処理ユニットにおいて、前記相関アルゴリズムおよび前記複数のエンティティに関する前記パラメータ値を使用して前記それぞれの計算セルにおいて実行される計算に基づいて相関スコアを計算すること、ならびに
前記エンティティ相関システムにおいて、前記計算された相関スコアに基づいて、前記少なくとも2つのデータ配列のエンティティの間の関係を決定することであって、前記関係が、前記エンティティの少なくとも1つのサブセットの間に存在する重なり合う属性を示す、決定すること
を含む動作の実行を引き起こすために、前記1つまたは複数の処理デバイスによって実行可能な命令を記憶する、1つまたは複数の非一時的機械可読ストレージデバイスと
を備える、電子システム。
【請求項１１】
前記相関スコアを計算することが、
特定の相関アルゴリズムを類似度アルゴリズムまたは条件付き確率アルゴリズムとして選択することと、
前記特定の相関アルゴリズムを使用して、前記少なくとも2つのデータ配列のエンティティの間の積集合および前記少なくとも2つのデータ配列のエンティティの間の和集合を計算することと、
前記積集合および前記和集合に基づいて、前記相関スコアを計算することと
を含む、請求項10に記載の電子システム。
【請求項１２】
前記第1の処理ユニットが、前記複数のデータ配列を生成するために前記ストレージデバイスから取得されたデータを予めソートする中央演算処理装置(CPU)であり、
前記第2の処理ユニットが、前記少なくとも2つのデータ配列のエンティティに関する前記パラメータ値を使用して並列計算を実行するグラフィックス処理ユニット(GPU)であり、
前記特定の相関アルゴリズムが、Jaccard類似度アルゴリズム、コサイン類似度アルゴリズム、または条件付き確率アルゴリズムである、請求項11に記載の電子システム。
【請求項１３】
生成することが、
前記複数のエンティティについての情報を含む前記データをスケッチアルゴリズムに基づいてソートすることと、
ソートすることに応じて、前記データのスケッチ表現を生成することであって、各スケッチ表現が、前記複数のデータ配列の各々に対応する、生成することと
を含む、請求項10に記載の電子システム。
【請求項１４】
各データ配列が、前記ストレージデバイスに記憶された前記データのスケッチ表現であり、
前記複数のデータ配列の少なくとも1つのサブセットが、各々が所定の数のエンティティを有するそれぞれのデータ配列を含む、請求項10に記載の電子システム。
【請求項１５】
各スケッチ表現が、前記第2の処理ユニットに含まれる計算セルの量に応じてサイズを決められる、請求項14に記載の電子システム。
【請求項１６】
提供することが、
前記第2の処理ユニットのメモリキャッシュに各データ配列を記憶することであって、前記メモリキャッシュが、前記第2の処理ユニットのコンパクトなメモリを表し、各データ配列が、前記コンパクトなメモリのデータ容量に応じてサイズを決められる、記憶すること
を含む、請求項10に記載の電子システム。
【請求項１７】
前記データ配列のうちの少なくとも1つが、前記第2の処理ユニットに含まれる複数の計算セルの各々によるアクセスのために構成される、請求項10に記載の電子システム。
【請求項１８】
エンティティの間の関係を決定することが、
前記計算された相関スコアが閾値スコアを超えるかどうかを判定することと、
前記計算された相関スコアが前記閾値スコアを超えるとの判定に応じて、前記閾値スコアを超える前記相関スコアを使用してランク付けされるエンティティのリストを生成することと
を含む、請求項10に記載の電子システム。
【請求項１９】
第1の処理ユニットにおいて第1のデータアイテムを受け取るステップと、
前記第1の処理ユニットによって、少なくとも前記受け取られた第1のデータアイテムからデータ構造を生成するステップであって、各データ構造が、それぞれのデータセットを表す、ステップと、
第2の処理ユニットのメモリに前記データ構造を記憶するステップと、
前記第1の処理ユニットにおいて、ユーザからクエリを受け取るステップと、
前記第2の処理ユニットによって、前記第2の処理ユニットに記憶された前記データ構造のうちの2つ以上に対して前記クエリを並列に処理するステップと、
前記処理の結果を前記第2の処理ユニットから前記第1の処理ユニットに返すステップと
を含む、方法。
【請求項２０】
前記第2の処理ユニットが、複数の処理コアを含み、前記第2の処理ユニットによって、前記データ構造に対して前記クエリを処理するステップが、
前記データ構造のうちのそれぞれのデータ構造に対して各処理コアにおいて並列に前記クエリを処理するステップ
を含む、請求項19に記載の方法。
【請求項２１】
前記第2の処理ユニットによって、前記第2の処理ユニットに記憶された前記データ構造に対して前記クエリを処理するステップが、前記第2の処理ユニットに記憶された前記データ構造に関して、前記データ構造と前記クエリとの間の類似度のそれぞれの測定値を決定することを含む、請求項19または20に記載の方法。
【請求項２２】
前記処理の結果を前記第2の処理ユニットから前記第1の処理ユニットに返すステップが、前記クエリに対するn個の最良の一致である前記データ構造を特定する情報を返すステップを含む、請求項19、20または21に記載の方法。
【請求項２３】
前記第1の処理ユニットが、前記受け取られたクエリからクエリデータ構造を生成し、前記クエリデータ構造を前記第2の処理ユニットに送信するステップを含み、
前記第2の処理ユニットによって前記クエリを処理するステップが、前記第2の処理ユニットに記憶された前記データ構造に対して前記クエリデータ構造を処理するステップを含む、請求項19から22のいずれか一項に記載の方法。
【請求項２４】
前記データ構造およびクエリデータ構造が、KMVスケッチである、請求項19から23のいずれか一項に記載の方法。
【請求項２５】
前記第2の処理ユニットによって、前記第2の処理ユニットに記憶された前記データ構造に対して前記クエリを処理するステップが、クエリデータ構造および前記記憶されたデータ構造の和集合を決定するステップを含む、請求項19から24のいずれか一項に記載の方法。
【請求項２６】
前記第2の処理ユニットによって、前記第2の処理ユニットに記憶された前記データ構造に対して前記クエリを処理するステップが、クエリデータ構造および前記記憶されたデータ構造の積集合を決定することを含む、請求項19から24のいずれか一項に記載の方法。
【請求項２７】
前記第2の処理ユニットによって、前記第2の処理ユニットに記憶された前記データ構造に対して前記クエリを処理するステップが、クエリデータ構造と前記データ構造との間のJaccard類似度を決定するステップを含む、請求項19から25のいずれか一項に記載の方法。
【請求項２８】
前記第1の処理ユニットにおいて前記第1のデータアイテムを受け取るステップが、データホスティングサービスから前記第1のデータアイテムを受け取るステップを含み、
前記方法が、前記処理の結果を前記第1の処理ユニットから前記データホスティングサービスに返すステップをさらに含む、請求項19から27のいずれか一項に記載の方法。
【請求項２９】
前記第1の処理ユニットにおいて第2のクエリを受け取るステップと、
前記第2の処理ユニットによって、前記第2の処理ユニットに記憶された前記データ構造に対して前記第2のクエリを処理するステップと
をさらに含む、請求項19から28のいずれか一項に記載の方法。
【請求項３０】
前記第1の処理ユニットにおいて第2のデータアイテムを受け取るステップと、
前記第1の処理ユニットによって、少なくとも前記受け取られた第2のデータアイテムから、更新されたデータ構造を生成するステップであって、各更新されたデータ構造が、それぞれのデータセットを表す、ステップと、
前記更新されたデータ構造を前記第2の処理ユニットの前記メモリに記憶するステップと
をさらに含む、請求項19から29のいずれか一項に記載の方法。
【請求項３１】
前記第1の処理ユニットにおいて第3のクエリを受け取るステップと、
前記第2の処理ユニットによって、前記第2の処理ユニットに記憶された前記更新されたデータ構造に対して前記第3のクエリを処理するステップと
をさらに含む、請求項30に記載の方法。
【請求項３２】
第2の処理ユニットと通信する第1の処理ユニットを含む処理システムであって、請求項19から31のいずれか一項に記載の方法を実行するように構成された、処理システム。
【請求項３３】
命令を記憶したコンピュータ可読記憶媒体であって、前記命令は、第2の処理ユニットと通信する第1の処理ユニットを含む処理システムによって実行されるときに、前記処理システムに、請求項19から31のいずれか一項に記載の方法を実行させる、コンピュータ可読記憶媒体。
【国際調査報告】
2021522605.tif 000008
2021522605.tif 000009