JP2023086507A - 情報処理装置および方法 - Google Patents
情報処理装置および方法 Download PDFInfo
- Publication number
- JP2023086507A JP2023086507A JP2021201065A JP2021201065A JP2023086507A JP 2023086507 A JP2023086507 A JP 2023086507A JP 2021201065 A JP2021201065 A JP 2021201065A JP 2021201065 A JP2021201065 A JP 2021201065A JP 2023086507 A JP2023086507 A JP 2023086507A
- Authority
- JP
- Japan
- Prior art keywords
- data
- memory
- cluster
- clusters
- query
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/53—Querying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
Abstract
【課題】クエリ応答の速度を向上させること。【解決手段】情報処理装置は、第1メモリと、第2メモリと、プロセッサとを備える。第1メモリは、それぞれは1以上の第1データを含む複数のクラスタに第1データ間の距離に基づいてクラスタ化された複数の第1データが格納される。第2メモリは、それぞれは複数のクラスタの1つに一対一に対応する複数の第2データが格納される第1メモリよりも高速な動作が可能なメモリである。プロセッサは、クエリの入力を受け付け、複数の第2データのうちからクエリに最も近い第2データである第3データを特定する。プロセッサは、第3データに対応するクラスタに含まれる1以上の第1データを第1メモリから一括にリードし、リードされた1以上の第1データのうちからクエリに最も近い第1データである第4データを特定する。プロセッサは、第4データを出力する。【選択図】図3
Description
本実施形態は、情報処理装置および方法に関する。
従来、入力データであるクエリに対して類似したデータを探索し、その結果を出力する情報処理を行う装置または方法がある。このような装置または方法において、クエリに対して結果を出力するまでの情報処理にかかるクエリ応答の速度と探索の精度とが求められる。クエリ応答の速度と探索の精度とを両立するための近傍探索のアルゴリズムとして、複数の異種(heterogeneous)のメモリを用いた近似近傍探索(Approximate Nearest Neighbor Search : ANNS)アルゴリズムが知られている。
Jie Ren, Minjia Zhang, and Dong Li, "HM-ANN: Efficient Billion-Point Nearest Neighbor Search on Heterogeneous Memory", [online], [retrieved on 2021-10-12], retrieved from the Internet: <URL: http://pasalabs.org/papers/2020/NeurIPS20_HM_ANN.pdf>
しかしながら、従来の複数の異種のメモリを用いた近似近傍探索のアルゴリズムによれば、クエリ応答の速度に関して向上の余地がある。
一つの実施形態は、クエリ応答の速度が向上した情報処理装置および方法を提供することを目的とする。
一つの実施形態によれば、情報処理装置は、第1メモリと、第2メモリと、プロセッサとを備える。前記第1メモリは、それぞれは1以上の第1データを含む複数のクラスタに第1データ間の距離に基づいてクラスタ化された複数の第1データが格納される。前記第2メモリは、それぞれは複数のクラスタの1つに一対一に対応する複数の第2データが格納される前記第1メモリよりも高速な動作が可能なメモリである。前記複数の第2データのそれぞれは前記複数のクラスタのうちの対応する1つを代表するデータである。前記プロセッサは、クエリの入力を受け付け、前記複数の第2データのうちから前記クエリに最も近い第2データである第3データを特定する。そして、前記プロセッサは、前記複数のクラスタのうちの前記第3データに対応するクラスタに含まれる1以上の第1データを前記第1メモリから一括にリードし、リードされた前記1以上の第1データのうちから前記クエリに最も近い第1データである第4データを特定する。そして、前記プロセッサは、前記第4データを出力する。
実施形態にかかる近傍探索は、例えば、プロセッサと、第1メモリと、第2メモリと、を備える情報処理装置で実行される。第1メモリは、第2メモリよりも大きな容量を有するメモリである。第2メモリは、第1メモリよりも高速な動作が可能なメモリである。以下では、実施形態にかかる近傍探索が、第1メモリとしてSSD(Solid State Drive)を備え、第2メモリとしてDRAM(Dynamic Random Access Memory)を備えるコンピュータにおいて実施される例を説明する。
なお、実施形態にかかる近傍探索は、ネットワークで相互に接続された2以上の情報処理装置の協働によって実行されてもよい。また、実施形態にかかる近傍探索は、第1メモリとしてNAND型のフラッシュメモリのメモリチップなどのストレージ媒体を備え、第2メモリとしてDRAMを備え、プロセッサを備える記憶装置において実行されてもよい。
以下に添付図面を参照して、実施形態にかかる情報処理装置および方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
(実施形態)
図1は、実施形態にかかる情報処理装置のハードウェア構成の一例を示す模式的な図である。
図1は、実施形態にかかる情報処理装置のハードウェア構成の一例を示す模式的な図である。
情報処理装置1は、プロセッサ2、第1メモリの一例であるSSD3、第2メモリの一例であるDRAM4、およびこれらを電気的に接続するバス5を備えるコンピュータである。なお、第1メモリおよび第2メモリはこれらに限定されない。例えば第1メモリは、任意のストレージメモリであってもよい。第1メモリは、UFS(Universal Flash Storage)デバイスや磁気ディスク装置であってもよい。
プロセッサ2は、コンピュータプログラムに従って所定の演算を実行する。プロセッサ2は、例えばCPU(Central Processing Unit)である。情報処理装置1に入力データであるクエリが入力されると、プロセッサ2は、SSD3およびDRAM4を利用して、入力されたクエリに基づく所定の演算を実行する。
SSD3は、大きな容量を有するストレージメモリである。SSD3は、ストレージ媒体としてNAND型のフラッシュメモリを備える。
DRAM4は、SSD3よりも容量が小さいが、SSD3よりも高速な動作が可能である。
なお、情報処理装置1は、任意の入出力機器が接続され得る。入出力機器は、例えば、入力装置、表示装置、ネットワーク機器、またはプリンタなどである。
図2は、実施形態にかかるSSD3の使用例を示す模式的な図である。
SSD3には、複数のデータDが格納される。各データDの種類は特定の種類に限定されない。各データDは、画像、文書、またはこれら以外の任意の種類の情報である。各データDのサイズは全データDで共通とされる。複数のデータDは、近傍探索の対象とされ得る。
情報処理装置1に入力データであるクエリが入力されると、プロセッサ2は、SSD3に格納された複数のデータDのうちから入力されたクエリまでの距離が最も近いデータDを探索する。
本明細書において距離は、データ間の類似度を表す尺度である。距離は、数学的には、例えばユークリッド距離である。なお、距離の数学的な定義はユークリッド距離に限定されない。
なお、プロセッサ2は、近傍探索において、クエリに最も近い複数個のデータDを探索してもよい。
複数のデータDは、グラフを構成する。本明細書においてグラフは、複数のノード間をエッジで接続した構造を有するデータである。この場合、各データDがノードに相当する。ノード間の接続関係を規定するグラフ情報31が設計者または所定のコンピュータプログラムによって予め生成される。グラフ情報31は、SSD3に格納される。
また、SSD3には、探索プログラム32および配置プログラム33が格納される。探索プログラム32は、プロセッサ2に近傍探索を実行させるコンピュータプログラムである。配置プログラム33は、プロセッサ2にデータDなどの配置を実行させるコンピュータプログラムである。プロセッサ2は、SSD3に格納された探索プログラム32および配置プログラム33をDRAM4にロードして実行する。配置プログラム33に従ったデータDなどの配置方法については後述される。
図3は、実施形態にかかるプロセッサ2が実行する近傍探索を説明するための模式的な図である。
実施形態では、探索が行われる空間は複数層に階層化されている。ここでは一例として、探索が行われる空間は、L0層と、L1層と、の2つの層を含む。
L0層は、SSD3に格納されているデータDが分布する空間である。SSD3に格納されているデータDのうちの互いの距離が近い2以上のデータDは、1つのクラスタCLを構成する。よって、L0層には、複数のクラスタCLが含まれる。つまり、L0層を構成する複数のデータDは、データD間の距離に基づき複数のクラスタCLにクラスタ化されている。クラスタ化は、データD間の距離に基づいて実行される限り、任意の方法で実行され得る。例えば、L0層の空間を格子状に区切って、各格子内のデータDのセットが1つのクラスタCLとして設定されてもよい。これによって、互いの距離が近い2以上のデータDを1つのクラスタCLに分類することが可能である。
各クラスタCLを構成するデータDの数は、全クラスタCLで共通であってもよいし、共通でなくてもよい。また、1つのデータDによって構成されるクラスタCLが存在してもよい。
図3には、L0層に含まれるデータDの一部として、データDa~Da+21の合計22個のデータDが描画されている。データDa~Da+3のセットはクラスタCLbを構成し、データDa+4はクラスタCLb+1を構成し、データDa+5~Da+8のセットはクラスタCLb+2を構成し、データDa+9~Da+13のセットはクラスタCLb+3を構成し、データDa+14~Da+17のセットはクラスタCLb+4を構成し、データDa+18~Da+21のセットはクラスタCLb+5を構成する。この例では、各データDは、何れか1つのクラスタCLにのみ属することができる。
各クラスタCLを構成するデータDのセットは、グラフを構成する。図3において、L0層内の一点鎖線は、データD間を接続するエッジを表す。ドットハッチングが施された円で示されるデータDa+1、Da+4、Da+6、Da+9、Da+16、Da+20のそれぞれは、クラスタCLにおいて探索の起点とされるノード、つまりエントリポイントである。クラスタCL毎にエントリポイントが設定される。なお、L0層におけるクラスタCL毎のグラフの構造は、グラフ情報31に記述されている。各クラスタCLにおけるエントリポイントは、グラフ情報31に記述されていてもよいし、他の任意の情報に記述されていてもよい。
各クラスタCLから、それに属するデータDのセットを代表するデータである代表データRDが計算される。以降、或る代表データRDの計算の元となったクラスタCLを、その代表データRDに対応するクラスタCLと表記する。
代表データRDの計算方法は特定の方法に限定されない。一例では、代表データRDは、対応するクラスタCLを構成するデータDのセットから任意の方法で選択されたデータDであってもよい。例えば、クラスタCLを構成するデータDのセットのうちのそのクラスタCLの中心に最も近いデータDが、そのクラスタCLの代表データRDとされ得る。または、代表データRDは、対応するクラスタCLを構成するデータDのセットを使った任意の算術演算によって計算されたデータであってもよい。例えば、クラスタCLを構成するデータDのセットの平均が、そのクラスタCLの代表データRDとされ得る。各クラスタCLの代表データRDは、プロセッサ2によって計算されてもよいし、設計者などによって予め計算されてもよい。なお、各代表データRDのサイズは全クラスタCLの代表データRDそれぞれで共通とされる。
全クラスタCLの代表データRDそれぞれは、L1層を構成する。
図3には、L1層を構成する代表データRDの一部として、代表データRDc~RDc+16の合計17個の代表データRDが描画されている。代表データRDc~RDc+16のそれぞれは、L0層に含まれる複数のクラスタCLのうちの1つのクラスタCLに一対一に対応する。この例では、代表データRDc+12はクラスタCLb+4に対応し、代表データRDc+13はクラスタCLb+5に対応し、代表データRDc+16はクラスタCLbに対応することが示されている。
L1層内の代表データRDのセットは、グラフを構成する。図3において、L1層内の一点鎖線は、代表データRD間を接続するエッジを表す。黒塗りが施された円で示される代表データRDcは、L1層内のエントリポイントを表す。L1層におけるグラフの構造は、グラフ情報31に記述されている。L1層内のエントリポイントは、グラフ情報31に記述されていてもよいし、他の任意の情報に記述されていてもよい。
全クラスタCL分の代表データRDは、DRAM4内に格納される。そして、プロセッサ2は、クエリが入力された場合、まず、L1層において、グラフに従って近傍探索を行う。DRAM4へのアクセスは、SSD3へのアクセスに比べて高速である。よって、L1層において実行される近傍探索は高速に実行される。
例えば、プロセッサ2はまず、エントリポイントである代表データRDcを選択する。続いて、プロセッサ2は、代表データRDcと、代表データRDcにエッジで接続された代表データRDc+1、RDc+4、RDc+7、RDc+9と、のそれぞれについてクエリまでの距離を計算し、代表データRDc、RDc+1、RDc+4、RDc+7、RDc+9のうちからクエリに最も近い代表データRDc+7を選択する。そして、プロセッサ2は、選択された代表データRDc+7と、代表データRDc+7にエッジで接続された代表データRDc、RDc+4、RDc+9、RDc+11、RDc+14と、のそれぞれについてクエリまでの距離を計算し、これらのうちからクエリに最も近い代表データRDc+14を新たに選択する。このように、プロセッサ2は、グラフに基づく近傍探索を行うことによって、全代表データRDのうちからクエリに最も近い代表データRDを特定する。
なお、グラフにおいて、選択中の或るノードにエッジで接続された別のノードを新たに選択することを、ホップ、と表記する。
プロセッサ2は、クエリに最も近い代表データRDを特定した後、クエリに最も近い代表データRDに対応するクラスタCLを構成するデータDのセットをSSD3から一括にリードして、DRAM4に格納する。そして、プロセッサ2は、DRAM4に格納されたデータDのセットに対してグラフに基づく近傍探索を行うことによって、クエリに最も近いデータDを特定する。そして、プロセッサ2は、特定されたデータDを、クエリに対する応答として出力する。
図3に示される例においては、クエリが入力された場合、プロセッサ2は、代表データRDcを起点として矢印の順にホップし、代表データRDc+16を、クエリに最も近い代表データRDとして特定する。そして、プロセッサ2は、代表データRDc+16に対応するクラスタCLbを構成する全てのデータDa~Da+3をSSD3からリードしてDRAM4に格納し、DRAM4に格納されたデータDa~Da+3に対して近傍探索を実行する。クラスタCLbにおいては、データDa+1がエントリポイントに設定されている。プロセッサ2は、データDa+1から矢印で示されるホップを行い、データDa+3をクエリに最も近いデータDとして特定し、データDa+3をクエリ応答として出力する。なお、データDa~Da+3に対する近傍探索におけるホップの順番を示す矢印は、図3においては、説明を簡単にするために、SSD3内のデータDa~Da+3の群上に描画されている。しかしながら、実際には、前述されたように、データDa~Da+3がDRAM4に格納され、DRAM4内のデータDa~Da+3に対して矢印に示される順番で近傍探索のためのホップが実行される。
実施形態と比較される技術について説明する。実施形態と比較される技術を、比較例と表記する。比較例によれば、L0層内のいくつかのデータによってL1層が構成される。L0層内の全データによって1つのグラフが構成され、L1層内の全データによって1つのグラフが構成される。L0層内の全データは、SSDなどのストレージメモリに格納される。L1層内の全データは、DRAMなどのストレージメモリよりも高速な動作が可能なメモリに格納される。クエリが入力された場合、L1層においてグラフに基づく近傍探索が行われる。そして、L1層においてクエリに最も近いデータが特定されると、特定されたデータをL0層におけるエントリポイントとしてグラフに基づく近傍探索が行われる。
比較例によれば、L0層における近傍探索の際に、ホップ毎にストレージメモリへのアクセスが発生する。具体的には、選択中のデータにエッジで接続された全データをストレージメモリからリードする処理が、ホップ毎に実行される。よって、ホップの回数が多くなるほど、クエリ応答に多くの時間を要する。
これに対し、実施形態によれば、L0層における近傍探索の際には、クエリに最も近いクラスタCLを構成する全てのデータDがまとめてリードされる。そして、リードされたデータDのみを用いた近傍探索によって、クエリに最も近いデータが特定される。これによって、実施形態によれば、比較例に比べ、ストレージメモリへのアクセスに要する時間が抑制され、クエリ応答に要する時間が短縮される。すなわち、クエリ応答の速度が向上する。
図4は、実施形態にかかるDRAM4の使用例を示す模式的な図である。
DRAM4には全ての代表データRDが格納される。
また、DRAM4にはプロセッサ2のワークエリア41が設けられる。ワークエリア41には、各種プログラム(配置プログラム33または探索プログラム32)がロードされたり、グラフ情報31がバッファされたり、L1層における近傍探索によって特定されたクラスタCLを構成するデータDのセットが一時的に格納されたりする。
図5は、実施形態にかかる代表データRDおよびデータDの配置方法の一例を示す模式的な図である。本図には、DRAM4のアドレス空間およびSSD3のアドレス空間が描画されている。DRAM4のアドレス空間は、プロセッサ2がDRAM4にアクセスする際に指定できるアドレスの範囲によって定まる空間である。SSD3のアドレス空間は、プロセッサ2がSSD3にアクセスする際に指定できるアドレスの範囲によって定まる空間である。
各クラスタCLを構成するデータDのセットは、SSD3のアドレス空間内の連続するエリアに配置される。つまり、1つのクラスタCLを構成するデータDのセットは、互いに離間した2以上のエリアに配置されない。プロセッサ2は、例えば、所望のクラスタCLを構成するデータDのセット(対象セットと称する)を、対象セットが配置されたエリアの先頭のアドレスと対象セットのサイズとを含む1つのリードコマンドをSSD3に送信する。これによりプロセッサ2は、1つのリードコマンドによって、対象セットをSSD3から取得することが可能である。つまり、プロセッサ2は、SSD3に対して1回のリードを行うだけで、L0層における近傍探索に必要なすべてのデータDを取得することができる。
DRAM4内の各代表データRDは、対応するクラスタCLを構成するデータDのセットが配置されているエリアの先頭を示すアドレスADRと、このエリアのサイズSと、が関連付けられてDRAM4のアドレス空間に配置される。よって、プロセッサ2は、代表データRDに基づき、この代表データRDに対応するクラスタCLを構成するデータDのセットが配置されたエリアを特定することが可能である。
図5に示される例では、クラスタCLfは、データDe~De+3のセットによって構成され、データDe~De+3のセットは、SSD3のアドレス空間における連続したエリアに配置される。クラスタCLfから計算された代表データRDdは、データDe~De+3のセットが格納されたエリアの先頭のアドレスADRdと、当該エリアのサイズSdと、が関連付けられてDRAM4に配置される。
また、クラスタCLf+1は、データDe+4~De+7のセットによって構成され、データDe+4~De+7のセットは、SSD3のアドレス空間における、データDe~De+3のセットが配置されたエリアに後続する連続したエリアに配置される。クラスタCLf+1から計算された代表データRDd+2は、データDe+4~De+7のセットが格納されたエリアの先頭のアドレスADRd+2と、当該エリアのサイズSd+2と、が関連付けられてDRAM4に配置される。
また、クラスタCLf+2は、データDe+8~De+11のセットによって構成され、データDe+8~De+11のセットは、SSD3のアドレス空間における、データDe+4~De+7のセットが配置されたエリアに後続する連続したエリアに配置される。クラスタCLf+2から計算された代表データRDd+1は、データDe+8~De+11のセットが格納されたエリアの先頭のアドレスADRd+1と、当該エリアのサイズSd+1と、が関連付けられてDRAM4に配置される。
なお、各クラスタCLを構成するデータDの数が全クラスタCLで共通する場合、各代表データRDに関連付けられる情報からサイズSを省略することが可能である。そのような場合、プロセッサ2は、SSD3から所望のクラスタCLを構成するデータDのセットをリードする際、固定されたサイズを指定する。
図6は、実施形態にかかる情報処理装置1が実行する、データDをSSD3に格納する手順の一例を示すフローチャートである。本図に示される一連の動作は、プロセッサ2が配置プログラム33を実行することによって実現する。なお、この一連の動作のうちの一部または全部を、プロセッサ2でなく設計者が実行してもよい。
情報処理装置1に複数のデータDが入力される(S101)。すると、プロセッサ2は、データD間の距離に基づき、当該複数のデータDを複数のクラスタCLにクラスタ化する(S102)。
続いて、プロセッサ2は、SSD3に各クラスタCLを配置する(S103)。S103では、プロセッサ2は、図5を用いて説明されたように、各クラスタCLを構成するデータDのセットをSSD3のアドレス空間における連続するエリアに配置する。例えば、プロセッサ2は、各クラスタCLの配置先のエリアを指定したライトコマンドをSSD3に送信することによって、各クラスタCLの配置を行う。
さらに、プロセッサ2は、クラスタCL毎に代表データRDを計算する(S104)。そして、プロセッサ2は、各代表データRDを、対応するクラスタが配置されたSSD3のアドレス空間におけるエリアの先頭のアドレスおよびこのエリアのサイズと関連付けてDRAM4に配置する(S105)。
そして、プロセッサ2は、L0層におけるグラフおよびL1層におけるグラフを生成する(S106)。プロセッサ2は、生成されたグラフの構造をグラフ情報31に記述し、当該グラフ情報31をSSD3に格納する(S107)。
S107の後、データDをSSD3に格納する処理が完了する。
なお、すでに複数のデータDがSSD3に格納されている状態で新たなデータDが入力された場合、プロセッサ2は、S102以降の処理を再実行する。S102以降の処理の再実行の際には、プロセッサ2は、新しく入力されたデータDにSSD3に既に格納されたデータDを加えたすべてのデータDに対して各処理を実行し得る。または、プロセッサ2は、新しく入力されたデータDにこの新しく入力されたデータDの近傍のクラスタCLを加えたデータDのみに対して各処理を実行してもよい。
なお、上記に述べた一連の手順は一例である。図5に示されたようにデータDおよび代表データRDが配置される限り、データDをSSD3に格納する手順は上記の例に限定されない。
図7は、実施形態にかかる情報処理装置1が実行する、近傍探索の手順の一例を示すフローチャートである。本図に示される一連の動作は、プロセッサ2が探索プログラム32を実行することによって実現する。
情報処理装置1にクエリが入力される(S201)。すると、プロセッサ2は、S202からS206までの処理によって、L1層においてクエリに最も近い代表データRDを特定する。
具体的には、プロセッサ2は、エントリポイントの代表データRDをDRAM4から取得して、対象の代表データRDとして設定する(S202)。プロセッサ2は、対象の代表データRDにエッジで接続されたすべての代表データRDをDRAM4から取得する(S203)。プロセッサ2は、対象の代表データRDおよび対象の代表データRDにエッジで接続されたすべての代表データRDのそれぞれからクエリまでの距離を計算する(S204)。プロセッサ2は、クエリまでの距離が最も近い代表データRDを対象の代表データRDとして設定する(S205)。S203からS205までの処理によって、L1層における1回のホップが完了する。
S205に続いて、プロセッサ2は、現在の対象の代表データRDは全ての代表データRDのうち最もクエリに近いか否かを判定する(S206)。S206の判定方法は、特定の方法に限定されない。例えば、最後に実行されたS203からS205までの処理で対象の代表データRDが変更されなかった場合、現在の対象の代表データRDは全ての代表データRDのうち最もクエリに近いと推定できる。よって、最後に実行されたS203からS205までの処理で対象の代表データRDが変更されなかった場合、プロセッサ2は、現在の対象の代表データRDは全ての代表データRDのうち最もクエリに近いと判定する。最後に実行されたS203からS205までの処理で対象の代表データRDが変更された場合、プロセッサ2は、現在の対象の代表データRDはクエリに最も近いとは判定しない。
現在の対象の代表データRDは全ての代表データRDのうち最もクエリに近いと判定されなかった場合(S206:No)、プロセッサ2は、S203からS206までの処理を再び実行する。
現在の対象の代表データRDは全ての代表データRDのうち最もクエリに近いと判定された場合(S206:Yes)、プロセッサ2は、現在の対象の代表データRDに対応するクラスタを構成するデータDのセットが格納されているエリアを特定する(S207)。S207では、プロセッサ2は、現在の対象の代表データRDに対応づけられているアドレスADRおよびサイズSをDRAM4から取得することによって、現在の対象の代表データRDに対応するクラスタを構成するデータDのセットが格納されているエリアを特定する。
プロセッサ2は、特定されたエリアを指定したリードコマンドをSSD3に送信する(S208)。そして、プロセッサ2は、SSD3がリードコマンドに応じて出力したデータDのセットをワークエリア41に格納する(S209)。そして、S210からS214までの処理によって、L0層においてクエリに最も近いデータDを特定する近傍探索が実行される。
具体的には、プロセッサ2は、ワークエリア41に格納されたデータDのセットのうちのエントリポイントのデータを取得して、対象のデータとして設定する(S210)。そして、プロセッサ2は、対象のデータDにエッジで接続されたすべてのデータDをワークエリア41から取得する(S211)。プロセッサ2は、対象のデータDおよび対象のデータDにエッジで接続されたすべてのデータDのそれぞれからクエリまでの距離を計算する(S212)。プロセッサ2は、クエリまでの距離が最も近いデータDを対象のデータDとして設定する(S213)。S211からS213までの処理によって、L0層における近傍探索の1回のホップが完了する。
S213に続いて、プロセッサ2は、現在の対象のデータDはワークエリア41に格納されたデータDのセット、換言するとクエリに最も近い代表データRDに対応するクラスタCLを構成するデータDのセット、のうち最もクエリに近いか否かを判定する(S214)。S214の判定方法は、特定の方法に限定されない。例えば、最後に実行されたS211からS213までの処理で対象のデータDが変更されなかった場合、現在の対象のデータDはワークエリア41に格納されたデータDのセットのうち最もクエリに近いと推定できる。よって、最後に実行されたS211からS213までの処理で対象のデータDが変更されなかった場合、プロセッサ2は、現在の対象のデータDはワークエリア41に格納されたデータDのセットのうち最もクエリに近いと判定する。最後に実行されたS211からS213までの処理で対象のデータDが変更された場合、プロセッサ2は、現在の対象のデータDはクエリに最も近いとは判定しない。
現在の対象のデータDはワークエリア41に格納されたデータDのセットのうち最もクエリに近いと判定されなかった場合(S214:No)、プロセッサ2は、S211からS214までの処理を再び実行する。
現在の対象のデータDはワークエリア41に格納されたデータDのセットのうち最もクエリに近いと判定された場合(S214:Yes)、プロセッサ2は、現在の対象のデータDをクエリ応答として出力する(S215)。そして、近傍探索の一連の動作が終了する。
なお、クエリ応答の出力の態様は任意である。プロセッサ2は、クエリ応答を記述したデータを生成して所定のメモリ(例えばSSD3)に格納してもよい。情報処理装置1にプリンタまたは表示装置が接続されている場合には、プロセッサ2は、プリンタまたは表示装置にクエリ応答を出力してもよい。情報処理装置1がネットワークに接続されている場合には、プロセッサ2は、当該ネットワークを介して別のコンピュータにクエリ応答を出力してもよい。
以上の説明においては、プロセッサ2は、L1層内およびクエリに最も近い代表データRDに対応するクラスタCL内のそれぞれにおいてグラフに基づく近傍探索を行った。プロセッサ2は、L1層内およびクエリに最も近い代表データRDに対応するクラスタCL内の一方または両方において、グラフを用いない任意の方法で近傍探索を行ってもよい。
例えば、プロセッサ2は、L1層内のすべての代表データRDとクエリとの間の距離を計算することによって、L1層内のすべての代表データRDから最もクエリに近い代表データRDを特定してもよい。同様に、プロセッサ2は、クエリに最も近い代表データRDに対応するクラスタCLを構成するすべてのデータDとクエリとの間の距離を計算することによって、クエリに最も近いデータDを特定してもよい。
以上述べたように、実施形態によれば、SSD3には、データD間の距離に基づいて複数のクラスタCLにクラスタ化された複数のデータDが格納される。DRAM4には、それぞれは複数のクラスタCLの1つに一対一に対応する複数の代表データRDが格納される。各代表データRDは、対応するクラスタCLを構成するデータDのセットを代表するデータである。プロセッサ2は、クエリの入力を受け付けると、複数の代表データRDのうちから入力されたクエリに最も近い代表データRDを特定する。そして、プロセッサ2は、特定された代表データRDに対応するクラスタCLを構成するデータDのセットをSSD3から一括にリードする。そして、プロセッサ2は、リードされたデータDのセットのうちからクエリに最も近いデータDを特定し、特定されたデータDをクエリ応答として出力する。
L0層内での近傍探索において必要なデータDがSSD3から一括にリードされるので、ホップ毎にSSDからのデータのリードが必要な比較例に比べてクエリ応答に要する時間が短縮される。つまり、実施形態によれば、クエリ応答の速度が向上する。
また、実施形態によれば、複数のクラスタCLのそれぞれは、SSD3のアドレス空間の連続するエリアに配置される。
よって、プロセッサ2は、1つのリードコマンドによって必要なデータDのセットを取得することができる。
また、実施形態によれば、それぞれの代表データRDは、対応するクラスタCLが配置されたエリアの先頭のアドレスと関連付けられてDRAM4に格納される。プロセッサ2は、クエリに最も近い代表データRDとして特定された代表データRDに関連付けられたアドレスを取得し、取得されたアドレスを指定したリードコマンドをSSD3に送信する。
また、それぞれの代表データRDは、対応するクラスタCLを構成するデータDのセットから計算されたデータである。
(変形例)
以上の説明では、各データDは一つのクラスタCLにのみ属するとして説明した。各データDは、2以上のクラスタCLに属し得る。
以上の説明では、各データDは一つのクラスタCLにのみ属するとして説明した。各データDは、2以上のクラスタCLに属し得る。
図8は、実施形態の変形例にかかるクラスタ化の方法を説明するための模式的な図である。
図8には、L0層に含まれるデータDの一部として、データDg~Dg+19の合計20個のデータDが描画されている。データDg~Dg+3のセットはクラスタCLhを構成する。データDg+3~Dg+7のセットはクラスタCLh+1を構成する。データDg+5、Dg+7~Dg+9のセットはクラスタCLh+2を構成する。データDg+10~Dg+14のセットはクラスタCLh+3を構成する。データDg+14~Dg+17のセットはクラスタCLh+4を構成する。データDg+8、Dg+12、Dg+13、Dg+18のセットはクラスタCLh+5を構成する。データDg+9、Dg+19のセットはクラスタCLh+6を構成する。
データDg+3、Dg+5、Dg+7、Dg+8、Dg+9、Dg+12、Dg+13、Dg+14のそれぞれは、2つのクラスタCLに属している。このように1つのデータDが2つのクラスタCLに属することが許容される。すなわち、互いに隣接するクラスタCL間で、構成されるデータDの群の分布の範囲を一部重複させながら、より多数のクラスタCLを設定することが可能である。よって、より精確な近傍探索が可能である。
なお、1つのデータDが3以上のクラスタCLに属することが許容されてもよい。
1つのデータDが2以上のクラスタCLに属するように複数のクラスタCLが設定される場合、SSD3のアドレス空間には、例えば図9に示されるようにデータDが配置される。図9は、実施形態の変形例にかかるデータDの配置方法を示す模式的な図である。
図9に示される例では、データDi~Di+3のセットはクラスタCLjを構成し、SSD3の連続したエリアに配置されている。データDi+3~Di+6のセットはクラスタCLj+1を構成し、SSD3のアドレス空間において、データDi~Di+3のセットが格納されたエリアに後続するエリアに配置されている。また、データDi+2、Di+3、Di+7、Di+8のセットはクラスタCLj+2を構成し、SSD3のアドレス空間において、データDi+3~Di+6のセットが格納されたエリアに後続するエリアに配置されている。
図9に示された例では、データDi+2はクラスタCLjおよびクラスタCLj+2に属し、データDi+3はクラスタCLj、クラスタCLj+1、およびクラスタCLj+2に属する。そのため、データDi+2は、クラスタCLjを構成するデータDのセットが配置されたエリアと、クラスタCLj+2を構成するデータDのセットが配置されたエリアと、の両方に配置されている。また、データDi+3は、クラスタCLjを構成するデータDのセットが配置されたエリアと、クラスタCLj+1を構成するデータDのセットが配置されたエリアと、クラスタCLj+2を構成するデータDのセットが配置されたエリアと、のすべての配置されている。このように、2以上のクラスタCLに属するデータDは、SSD3のアドレス空間の2以上の箇所に配置される。
以上述べたように、SSD3に格納された複数のデータDは、あるクラスタCLと別のクラスタCLとの両方に属するデータDを含んでいてもよい。
実施形態および実施形態の変形例に述べたように、近傍探索が行われる空間は、2層に階層化され、そのうちの1層は、第1メモリであるSSD3に配置され、他の1層は、第2メモリであるDRAM4に配置される。具体的には、第1メモリであるSSD3には、データD間の距離に基づいて複数のクラスタCLにクラスタ化された複数のデータDが格納される。第2メモリであるDRAM4には、それぞれは複数のクラスタCLの1つに一対一に対応する複数の代表データRDが格納される。各代表データRDは、対応するクラスタCLを構成するデータDのセットを代表するデータである。
よって、プロセッサ2は、SSD3に配置された層から必要なデータDのセットを一括にリードすることが可能である。そのため、実施形態および実施形態の変形例によれば、比較例に比べてクエリ応答の速度が向上する。第1メモリであるSSD3と第2メモリであるDRAM4とは、バス5に接続される。SSD3と、DRAM4と、バス5、とを少なくとも備える装置(第1装置)は、少なくともプロセッサ2を備える装置(第2装置)と異なる装置として構成されてもよい。第1装置と第2装置とは、所定のインターフェース及び回路を介して接続される。
なお、近傍探索が行われる空間は、3以上の層に階層化されていてもよい。例えば、3以上の層のうちの最上層は、第2メモリであるDRAM4に配置され、3以上の層のうちの他のすべての層は第2メモリであるSSD3に配置されてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 情報処理装置、2 プロセッサ、3 SSD、4 DRAM、5 バス、31 グラフ情報、32 探索プログラム、33 配置プログラム、41 ワークエリア、ADR アドレス、S サイズ、CL クラスタ、D データ、RD 代表データ。
Claims (7)
- それぞれは1以上の第1データを含む複数のクラスタに第1データ間の距離に基づいてクラスタ化された複数の第1データが格納された第1メモリと、
それぞれは前記複数のクラスタの1つに一対一に対応する複数の第2データが格納され、前記複数の第2データのそれぞれは前記複数のクラスタのうちの対応する1つを代表するデータである、前記第1メモリよりも高速な動作が可能な第2メモリと、
クエリの入力を受け付け、前記複数の第2データのうちから前記クエリに最も近い第2データである第3データを特定し、前記複数のクラスタのうちの前記第3データに対応するクラスタに含まれる1以上の第1データを前記第1メモリから一括にリードし、リードされた前記1以上の第1データのうちから前記クエリに最も近い第1データである第4データを特定し、前記第4データを出力する、プロセッサと、
を備える情報処理装置。 - 前記複数のクラスタのそれぞれは、前記プロセッサが使用する前記第1メモリのアドレス空間内の連続するエリアに配置される、
請求項1に記載の情報処理装置。 - 前記複数の第2データのそれぞれは、対応するクラスタが配置されたエリアの先頭のアドレスと関連付けられて前記第2メモリに格納され、
前記プロセッサは、前記第3データに関連付けられたアドレスを取得し、取得された前記アドレスを指定したリードコマンドを前記第1メモリに送信する、
請求項2に記載の情報処理装置。 - 前記複数の第1データは、前記複数のクラスタのうちの第1クラスタおよび前記第1クラスタと異なる第2クラスタの両方に属する第5データを含む、
請求項1から請求項3のいずれか一項に記載の情報処理装置。 - 前記複数の第2データのそれぞれは前記複数のクラスタのうちの対応する1つに含まれる1以上の第1データから計算されたデータである、
請求項1から請求項4のいずれか一項に記載の情報処理装置。 - それぞれは1以上の第1データを含む複数のクラスタに第1データ間の距離に基づいてクラスタ化された複数の第1データが格納された第1メモリと、それぞれは前記複数のクラスタの1つに一対一に対応する複数の第2データが格納され、前記複数の第2データのそれぞれは前記複数のクラスタのうちの対応する1つを代表するデータである、前記第1メモリよりも高速な動作が可能な第2メモリと、を備える情報処理装置を制御する方法であって、
クエリの入力を受け付けることと、
前記複数の第2データのうちから前記クエリに最も近い第2データである第3データを特定することと、
前記複数のクラスタのうちの前記第3データに対応するクラスタに含まれる1以上の第1データを前記第1メモリから一括にリードすることと、
前記リードされた1以上の第1データのうちから前記クエリに最も近い第1データである第4データを特定することと、
前記第4データを出力することと、
を含む方法。 - それぞれは1以上の第1データを含む複数のクラスタに第1データ間の距離に基づいてクラスタ化された複数の第1データが格納された第1メモリと、
それぞれは前記複数のクラスタの1つに一対一に対応する複数の第2データが格納され、前記複数の第2データのそれぞれは前記複数のクラスタのうちの対応する1つを代表するデータである、前記第1メモリよりも高速な動作が可能な第2メモリと、
前記第1メモリと前記第2メモリとが接続されるバスと、
を備える情報処理装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021201065A JP2023086507A (ja) | 2021-12-10 | 2021-12-10 | 情報処理装置および方法 |
US17/840,981 US20230185468A1 (en) | 2021-12-10 | 2022-06-15 | Information processing device and method |
TW111124832A TWI822162B (zh) | 2021-12-10 | 2022-07-01 | 資訊處理裝置以及控制資訊處理裝置的方法 |
CN202210896606.2A CN116257645A (zh) | 2021-12-10 | 2022-07-28 | 信息处理装置以及对信息处理装置进行控制的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021201065A JP2023086507A (ja) | 2021-12-10 | 2021-12-10 | 情報処理装置および方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023086507A true JP2023086507A (ja) | 2023-06-22 |
Family
ID=86681438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021201065A Pending JP2023086507A (ja) | 2021-12-10 | 2021-12-10 | 情報処理装置および方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230185468A1 (ja) |
JP (1) | JP2023086507A (ja) |
CN (1) | CN116257645A (ja) |
TW (1) | TWI822162B (ja) |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4821290A (en) * | 1988-02-09 | 1989-04-11 | General Electric Company | Decoder for digital signal codes |
US7212531B1 (en) * | 2001-11-27 | 2007-05-01 | Marvell Semiconductor Israel Ltd. | Apparatus and method for efficient longest prefix match lookup |
US6934252B2 (en) * | 2002-09-16 | 2005-08-23 | North Carolina State University | Methods and systems for fast binary network address lookups using parent node information stored in routing table entries |
US20040264479A1 (en) * | 2003-06-30 | 2004-12-30 | Makaram Raghunandan | Method for generating a trie having a reduced number of trie blocks |
JP5401071B2 (ja) * | 2008-10-09 | 2014-01-29 | 株式会社Nttドコモ | 動画像符号化装置、動画像復号装置、動画像符号化方法、動画像復号方法、動画像符号化プログラム、動画像復号プログラム、動画像処理システムおよび動画像処理方法 |
US8429173B1 (en) * | 2009-04-20 | 2013-04-23 | Google Inc. | Method, system, and computer readable medium for identifying result images based on an image query |
US8239364B2 (en) * | 2009-12-08 | 2012-08-07 | Facebook, Inc. | Search and retrieval of objects in a social networking system |
US8868603B2 (en) * | 2010-04-19 | 2014-10-21 | Facebook, Inc. | Ambiguous structured search queries on online social networks |
EP3591538B1 (en) * | 2011-11-15 | 2021-01-20 | AB Initio Technology LLC | Data clustering, segmentation, and parallelization |
CN103559504B (zh) * | 2013-11-04 | 2016-08-31 | 北京京东尚科信息技术有限公司 | 图像目标类别识别方法及装置 |
EP3115909A1 (en) * | 2015-07-08 | 2017-01-11 | Thomson Licensing | Method and apparatus for multimedia content indexing and retrieval based on product quantization |
US11074008B2 (en) * | 2019-03-29 | 2021-07-27 | Intel Corporation | Technologies for providing stochastic key-value storage |
US20210011910A1 (en) * | 2019-07-08 | 2021-01-14 | Gsi Technology Inc. | Reference distance similarity search |
US11914669B2 (en) * | 2019-11-25 | 2024-02-27 | Baidu Usa Llc | Approximate nearest neighbor search for single instruction, multiple thread (SIMT) or single instruction, multiple data (SIMD) type processors |
-
2021
- 2021-12-10 JP JP2021201065A patent/JP2023086507A/ja active Pending
-
2022
- 2022-06-15 US US17/840,981 patent/US20230185468A1/en not_active Abandoned
- 2022-07-01 TW TW111124832A patent/TWI822162B/zh active
- 2022-07-28 CN CN202210896606.2A patent/CN116257645A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
TWI822162B (zh) | 2023-11-11 |
TW202324071A (zh) | 2023-06-16 |
US20230185468A1 (en) | 2023-06-15 |
CN116257645A (zh) | 2023-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220147795A1 (en) | Neural network tiling method, prediction method, and related apparatus | |
JP2018518733A (ja) | ファイル操作方法及び装置 | |
JP6751064B2 (ja) | データ検索システム、データ検索方法、及びプログラム | |
CN107193503B (zh) | 一种数据重删方法及存储设备 | |
CN112417036A (zh) | 分布式存储系统中处理对象的元数据的方法及装置 | |
JP7354014B2 (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
CN111292225A (zh) | 对图形数据进行分区以进行大规模图形处理 | |
JP2024511018A (ja) | 空間関係の決定方法、装置、コンピュータ装置及び記憶媒体 | |
JP5447523B2 (ja) | データ処理装置、データ記録方法、データ記録プログラム | |
JP2012014269A (ja) | クラスタリング処理装置、クラスタリング処理方法 | |
JP6705764B2 (ja) | 生成装置、生成方法、及び生成プログラム | |
JP2023086507A (ja) | 情報処理装置および方法 | |
US20180203875A1 (en) | Method for extending and shrinking volume for distributed file system based on torus network and apparatus using the same | |
JP7353737B2 (ja) | 情報処理装置、情報処理方法、及び情報処理プログラム | |
JP6194875B2 (ja) | キャッシュ装置、キャッシュシステム、キャッシュ方法、及びキャッシュプログラム | |
JP6189266B2 (ja) | データ処理装置、データ処理方法及びデータ処理プログラム | |
CN115934354A (zh) | 在线存储方法和装置 | |
CN111209304B (zh) | 数据处理方法、装置及系统 | |
CN113934377A (zh) | 一种元数据集群部署方法、装置、设备及可读存储介质 | |
JP6132010B2 (ja) | 制御装置、制御プログラム、および制御方法 | |
JP2024043899A (ja) | 方法および情報処理装置 | |
US20230334035A1 (en) | Content based log retrieval by using embedding feature extraction | |
US20230221876A1 (en) | Computational ssd accelerating deep learning service on large-scale graphs | |
WO2021110176A1 (zh) | 一种边缘系统及数据操作请求的处理方法 | |
US20230273728A1 (en) | Storage control apparatus and method |