IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

特許7536574演算デバイス、計算機システム、及び演算方法
<>
  • 特許-演算デバイス、計算機システム、及び演算方法 図1
  • 特許-演算デバイス、計算機システム、及び演算方法 図2
  • 特許-演算デバイス、計算機システム、及び演算方法 図3
  • 特許-演算デバイス、計算機システム、及び演算方法 図4
  • 特許-演算デバイス、計算機システム、及び演算方法 図5
  • 特許-演算デバイス、計算機システム、及び演算方法 図6
  • 特許-演算デバイス、計算機システム、及び演算方法 図7
  • 特許-演算デバイス、計算機システム、及び演算方法 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-09
(45)【発行日】2024-08-20
(54)【発明の名称】演算デバイス、計算機システム、及び演算方法
(51)【国際特許分類】
   G06N 3/063 20230101AFI20240813BHJP
【FI】
G06N3/063
【請求項の数】 7
(21)【出願番号】P 2020155200
(22)【出願日】2020-09-16
(65)【公開番号】P2022049141
(43)【公開日】2022-03-29
【審査請求日】2023-03-08
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】宮下 大輔
(72)【発明者】
【氏名】ベルダン ラドゥ
(72)【発明者】
【氏名】星 康人
(72)【発明者】
【氏名】出口 淳
【審査官】佐藤 直樹
(56)【参考文献】
【文献】特開2019-045894(JP,A)
【文献】特開2020-009112(JP,A)
【文献】特表2020-506466(JP,A)
【文献】特開2018-010505(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/063
(57)【特許請求の範囲】
【請求項1】
ニューラルネットワークで用いられる重みに関する演算を実行する演算デバイスにおいて、
入力されたクエリに関する第1ベクトルと、前記クエリに対する重みに関する複数の第2ベクトルそれぞれとの間の類似度を近似的に計算する第1計算部と、
前記第1計算部における前記類似度の計算の結果、前記複数の第2ベクトルのうち前記類似度が閾値以上のベクトルである第3ベクトルを複数選択する選択部と、
前記第1ベクトルと、前記選択部で選択された複数の第3ベクトルとの類似度を計算する第2計算部と、
を備える演算デバイス。
【請求項2】
前記第1計算部は、類似度の計算を前記第1ベクトル及び前記複数の第2ベクトルのいずれか又は両方を低精度化し、前記低精度化したベクトルを用いて内積計算を実行することにより前記類似度を近似的に計算する、
請求項1に記載の演算デバイス。
【請求項3】
前記第1計算部は、抵抗素子に電圧を印加することで、抵抗値と電圧値に応じた電流を生成し、その電流を加算する方法によって積和演算を実行するアナログ積和演算器を利用して、類似度を近似的に計算する、
請求項1に記載の演算デバイス。
【請求項4】
前記複数の第2ベクトルのデータを保存する保存部を更に備え、
前記選択部は、前記類似度が閾値以上に大きくなる前記第3ベクトルを複数選択し、保存された前記複数の第2ベクトルのデータのうち選択された複数の前記第3ベクトルに対応するデータを保存部から読み出し、
前記第2計算部は、前記第1ベクトルに対応するデータと、読み出された前記第3ベクトルに対応するデータとの類似度を計算する、
請求項1ないし3の何れか1項に記載の演算デバイス。
【請求項5】
請求項1ないし4の何れか一項に記載の演算デバイスと、
前記演算デバイスが演算するデータを記憶するメモリデバイスと、
を備える計算機システム。
【請求項6】
ニューラルネットワークで用いられる重みに関する演算を実行する演算デバイスにおける演算方法であって、
入力されたクエリに関する第1ベクトルと、前記クエリに対する重みに関する複数の第2ベクトルそれぞれとの間の類似度を近似的に計算することと、
前記類似度の計算の結果、前記複数の第2ベクトルのうち前記類似度が閾値以上のベクトルである第3ベクトルを複数選択することと、
前記第1ベクトルと、前記選択された複数の第3ベクトルとの類似度を計算することと、
を含む演算方法。
【請求項7】
前記計算することは、類似度の計算を前記第1ベクトル及び前記複数の第2ベクトルのいずれか又は両方を低精度化し、前記低精度化したベクトルを用いて内積計算を実行することにより前記類似度を近似的に計算することを含む、
請求項6に記載の演算方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、演算デバイス、計算機システム、及び演算方法に関する。
【背景技術】
【0002】
従来、自然言語処理(NLP:Natural Language Processing)の演算に、ベクトル行列積の結果を重みとして別の行列の加重和を計算する処理(Attention)を含むニューラルネットワークが広く利用されるようになってきている。NLPは、人間の言語(自然言語)を機械で処理するための複数の処理を含む。Attentionを含むニューラルネットワークは、画像処理の分野でも採用が検討されている。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2019-212121号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明が解決しようとする課題は、処理時間などのコストを削減することができる演算デバイス、計算機システム、及び演算方法を提供することである。
【課題を解決するための手段】
【0005】
実施形態の演算デバイスは、ニューラルネットワークで用いられる重みに関する演算を実行する演算デバイスにおいて、入力されたクエリに関する第1ベクトルと、前記クエリに対する重みに関する複数の第2ベクトルそれぞれとの間の類似度を近似的に計算する第1計算部を備える。また、演算デバイスは、前記第1計算部における前記類似度の計算の結果、前記複数の第2ベクトルのうち前記類似度が閾値以上のベクトルである第3ベクトルを複数選択する選択部を備える。また、演算デバイスは、前記第1ベクトルと、前記選択部で選択された複数の第3ベクトルとの類似度を計算する第2計算部を備える。
【図面の簡単な説明】
【0006】
図1図1は、実施形態の演算デバイスを含む計算機システムの構成の一例を示すブロック図である。
図2図2は、実施形態の計算機システムで実行されるニューラルネットワークの構成例を説明するための模式図である。
図3図3は、実施形態の演算デバイスの機能構成を示す機能ブロック図である。
図4図4は、実施形態の演算デバイスによる各種の処理(データの処理方法)の流れを示すフローチャートである。
図5図5は、実施形態のベクトル行列積の近似的計算の一例を示す図である。
図6図6は、実施形態の演算デバイスの機能構成を示す機能ブロック図の変形例である。
図7図7は、比較例のニューラルネットワークにおける処理例を示す図である。
図8図8は、実施形態にかかるアナログ積和演算器の例を示す図である。
【発明を実施するための形態】
【0007】
以下に添付図面を参照して、実施形態に係る演算デバイス、計算機システム、及び演算方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【0008】
図1は、実施形態の演算デバイスを含む計算機システム1の構成の一例を示すブロック図である。図1に示されるように、計算機システム1は、入力データを受信する。この入力データは、例えば音声データや音声データから生成されたテキストデータであっても良いし、画像データであっても良い。計算機システム1は、入力データに対して各種の処理を実行する。例えば、入力データが音声データである場合、計算機システム1は、自然言語処理を実行する。
【0009】
計算機システム1は、入力データに対する処理の結果に対応する信号を出力し、処理の結果を表示デバイス80に表示させることができる。表示デバイス80は、液晶ディスプレイ、又は、有機ELディスプレイなどである。表示デバイス80は、ケーブル又は無線通信を介して、計算機システム1に電気的に接続される。
【0010】
計算機システム1は、GPU(Graphic Processing Unit)10、CPU(Central Processing Unit)20、及び、メモリ70を少なくとも含む。GPU10、CPU20、及び、メモリ70は、内部バスにより通信可能に接続されている。
【0011】
本実施形態において、GPU10は、機械学習装置である後述のニューラルネットワーク100を用いた推論処理用に関する演算を実行する。GPU10は、後述する近似的に類似度計算を行うプロセッサである。GPU10は、メモリ70をワークエリアとして用いながら、入力データに対する処理を実行する。GPU10は、機械学習装置である後述のニューラルネットワーク100を有する。
【0012】
CPU20は、計算機システム1の全体の動作を制御するプロセッサである。CPU20は、GPU10及びメモリ70の制御のための各種の処理を実行する。CPU20は、メモリ70をワークエリアとして用いながら、GPU10で実行される後述のニューラルネットワーク100に関する演算を制御する。
【0013】
メモリ70は、メモリデバイスとして機能する。メモリ70は、外部から入力された入力データ、GPU10によって生成されたデータ、CPU20によって生成されたデータ、及び、ニューラルネットワークのパラメータを記憶する。なお、GPU10及びCPU20によって生成されるデータは、各種の計算の中間結果及び最終結果を含み得る。例えば、メモリ70は、DRAM、SRAM、MRAM、NAND型フラッシュメモリ、抵抗変化型メモリ(例えば、ReRAM、PCM(Phase Change Memory))などの中から選択される少なくとも1以上を含む。GPU10にかかる専用のメモリ(図示せず)が、GPU10に直接接続されてもよい。
【0014】
入力データは、記憶媒体99から提供されてもよい。記憶媒体99は、ケーブル又は無線通信によって、計算機システム1に電気的に結合される。記憶媒体99は、メモリデバイスとして機能するものであって、メモリカード、USBメモリ、SSD、HDD、及び、光記憶媒体などのいずれでもよい。
【0015】
図2は、実施形態の計算機システム1で実行されるニューラルネットワーク100の構成例を説明するための模式図である。
【0016】
計算機システム1において、図2のニューラルネットワーク100は、機械学習デバイスとして用いられる。例えば、ニューラルネットワーク100は、多層パーセプトロン(MLP)、畳み込みニューラルネットワーク(CNN)、又は注意機構を備えたニューラルネットワーク(例えばTransformer)を含む。ここで、機械学習とは、コンピュータが大量のデータを学習し、分類や予測などのタスクを遂行するアルゴリズムやモデルを自動的に構築する技術である。
【0017】
なお、ニューラルネットワーク100は、如何なる推論を行う機械学習モデルであってもよい。例えば、ニューラルネットワーク100は、音声データを入力として、当該音声データの分類を出力する機械学習モデルであってもよいし、音声データのノイズ除去や音声認識を実現する機械学習モデルであってもよい。
【0018】
ニューラルネットワーク100は、入力層101、隠れ層(中間層ともよばれる)102、及び出力層(全結合層ともよばれる)103を有する。
【0019】
入力層101は、計算機システム1の外部から受信した入力データ(又はその一部分)を受信する。入力層101は、複数の演算デバイス(ニューロン又はニューロン回路ともよばれる)118を有する。なお、演算デバイス118は専用の装置であってもよいし、汎用のプロセッサがプログラムを実行することでその処理が実現されても良い。これ以降も同様の意味で演算デバイスという表記を使う。入力層101において、各演算デバイス118は、入力データに任意の処理(例えば線形変換や、補助データの追加など)を施して変換し、変換したデータを、隠れ層102に送信する。
【0020】
隠れ層102(102A,102B)は、入力層101からのデータに対して、各種の計算処理を実行する。
【0021】
隠れ層102は、複数の演算デバイス110(110A,110B)を有する。隠れ層102において、各演算デバイス110は、供給されたデータ(以下では、区別化のため、デバイス入力データともよばれる)に対して、所定のパラメータ(例えば、重み係数)を用いた積和演算処理を実行する。例えば、各演算デバイス110は、供給されたデータに対して、互いに異なるパラメータを用いて積和演算処理を実行する。
【0022】
隠れ層102は、階層化されてもよい。この場合において、隠れ層102は、少なくとも2つの層(第1の隠れ層102A及び第2の隠れ層102B)を含む。
【0023】
第1の隠れ層102Aの各演算デバイス110Aは、入力層101の処理結果であるデバイス入力データに対して、所定の計算処理を実行する。各演算デバイス110Aは、計算結果を、第2の隠れ層102Bの各演算デバイス110Bに送信する。第2の隠れ層102Bの各演算デバイス110Bは、各演算デバイス110Aの計算結果であるデバイスを入力データに対して、所定の計算処理を実行する。各演算デバイス110Bは、計算結果を、出力層103に送信する。
【0024】
このように、隠れ層102が階層構造を有する場合、ニューラルネットワーク100による推論(inference)、学習(learning/training)、及び分類の能力が、向上され得る。なお、隠れ層102の層の数は、3層以上でもよいし、1層でもよい。1つの隠れ層は、積和演算処理、プーリング処理、正規化処理、活性化処理などの処理の任意の組み合わせを含むように構成されてもよい。
【0025】
出力層103は、隠れ層102の各演算デバイス110によって実行された各種の計算処理の結果を受信し、各種の処理を実行する。
【0026】
出力層103は、複数の演算デバイス119を有する。各演算デバイス119は、複数の演算デバイス110Bからの計算結果であるデバイス入力データに対して、所定の処理を実行する。これによって、隠れ層102による計算結果に基づいて、ニューラルネットワーク100に供給されたデータに関する推論や分類を、実行できる。各演算デバイス119は、得られた処理結果(分類結果)を記憶及び出力できる。出力層103は、隠れ層102の計算結果をニューラルネットワーク100の外部へ出力するためのバッファ及びインターフェイスとしても機能する。
【0027】
なお、ニューラルネットワーク100は、GPU10の外部に設けられてもよい。すなわち、ニューラルネットワーク100は、GPU10のみならず、計算機システム1内のCPU20、メモリ70、記憶媒体99などを利用して実現されるものであってもよい。
【0028】
本実施形態の計算機システム1において、ニューラルネットワーク100によって、例えば、自然言語処理/推定のための各種の計算処理、及び、自然言語処理/推定の機械学習(例えば、ディープラーニング)のための各種の計算処理が、実行される。
【0029】
例えば、計算機システム1において、音声データに対するニューラルネットワーク100による各種の計算処理に基づいて、音声データが何であるかを計算機システム1によって高い精度で推論(認識)及び分類されたり、音声データが計算機システム1によって高い精度で認識/分類されるように学習されたりすることが可能となる。
【0030】
本実施形態において、以下のように、ニューラルネットワーク100内の演算デバイス110(110A,110B)は、1以上の処理回路を含む。
【0031】
図3は、実施形態の演算デバイス110の機能構成を示す機能ブロック図である。図3に示すように、演算デバイス110は、クエリ取得部1101と、キー取得部1102と、近似計算部1103と、選択部1104と、計算部1105と、を備える。
【0032】
クエリ取得部1101は、供給されたデバイス入力データにかかるクエリとしてベクトルを取得する。キー取得部1102は、供給されたデバイス入力データにかかるn個のキーの配列として行列を取得する。
【0033】
近似計算部1103は、第1計算部として機能するものであって、クエリとしてのd次元ベクトル(第1ベクトル)と、複数の第2ベクトルであるn個のd次元ベクトル(n個のキーの配列としての行列)それぞれとの間の類似度を近似的に計算する。
【0034】
選択部1104は、近似計算部1103における類似度の計算の結果、複数の第2ベクトルのうち類似度が閾値以上のベクトル(第3ベクトル)であるキーを複数選択する。
【0035】
計算部1105は、第2計算部として機能するものであって、クエリと、選択部1104で選択されたk個のキーとの類似度を計算する。
【0036】
ここで、図4は実施形態の演算デバイス110による各種の処理(データの処理方法)の流れを示すフローチャート、図5は実施形態のベクトル行列積の近似的計算の一例を示す図である。ベクトル行列積は、ベクトルをクエリ、行列をキーの配列として、クエリに対応したキーを探索する処理とみなせる。なお、ここでのキーの配列は、d次元のベクトル(キー)がn個とする。
【0037】
図4に示すように、クエリ取得部1101は、供給されたデバイス入力データにかかるクエリとしてベクトルを取得する(S1)。
【0038】
また、キー取得部1102は、供給されたデバイス入力データにかかるn個のキーの配列として行列を取得する(S2)。
【0039】
次いで、近似計算部1103は、クエリとしてのベクトルとキーの配列としての行列との類似度を近似的に計算する(S3)。すなわち、近似計算部1103は、関連キー(類似度)の順位付けを行う。言い換えると、近似計算部1103は、類似度の計算をクエリとしてのd次元ベクトル(第1ベクトル)及びn個のd次元ベクトル(複数の第2ベクトル)のいずれか又は両方を低精度化し、低精度化したベクトルを用いて内積計算を実行することにより類似度を近似的に計算する。
【0040】
図5に示すように、まず、近似計算部1103は、クエリとしてのd次元ベクトル(1,d)と、n個のd次元ベクトル(キー)の配列としての行列(n,d)とのそれぞれの間の近似内積により、類似度であるベクトル行列積を得る。この際に近似計算部1103は、クエリとキーを低ビットに量子化することで近似する。低ビットに量子化するというのは、例えばもともと単精度浮動小数点の型で表現されえたクエリやキーを、8ビット整数や4ビット整数など低ビットで高速に処理が可能な型に変換するということである。このような近似を行うため、ここで得られるベクトル行列積は、近似的に求めた重み(1,n)である。
【0041】
次いで、図4に示すように、選択部1104は、類似度が閾値以上に大きくなるk個のキーを選択する(S4)。つまり、図5に示すように、選択部1104は、近似的に求めた重み(1,n)において、内積の値が閾値以上に大きくなった列を少数個(ここでは、k個とする)選択して(k,d)とする。
【0042】
なお、この閾値は、あらかじめ設定した所定の値で合っても良いし、選択される列の数があらかじめ設定した個数kになるように、内積の値に応じて決めても良い。
【0043】
次いで、図4に示すように、計算部1105は、k個のキーに対する類似度を計算する(S5)。図5に示すように、計算部1105は、元の行列(n,d)から選択された列を取り出した小さな行列(k,d)に対して、クエリとしてのd次元ベクトル(1,d)とのベクトル行列積を厳密に計算する。ここで得られるベクトル行列積は、重み(1,k)である。
【0044】
このようにして計算されたベクトル行列積の結果は、加重和をとるための重みとして利用される。
【0045】
上述のように、本実施形態の演算デバイス110においては、クエリとしてのd次元ベクトル(1,d)に応じて、選択されるd次元のベクトル(キー)が変化することが特徴の一つとなっている。
【0046】
なお、選択部1104で選択されて計算部1105で利用されるk個のキーについては、近似計算部1103に存在するn個のキーデータそのものの一部が渡されるものに限るものではない。図6は、実施形態の演算デバイス110の機能構成を示す機能ブロック図の変形例である。図6に示すように、キー保存部(保存部)として機能するメモリ70や記憶媒体99にn個のキーに対応するキーデータを保存しておく。このとき、キーデータは、n個のキーを特定可能なインデックスに対応付けて保存されている。選択部1104では、類似度が閾値以上に大きくなる列を示すインデックスがk個選択され、計算部1105では、キー保存部として機能するメモリ70や記憶媒体99から、選択されたk個のインデックスに対応するキーデータを読み出して利用するという実施形態であっても良い。
【0047】
図7は、比較例のニューラルネットワークにおける処理例を示す図である。図7に示すように、比較例のニューラルネットワークにおいては、ベクトル行列積の結果を重みとして、別の行列の加重和を計算するという処理(注意機構、Attention)を含んでいる。図7に示すように、比較例のニューラルネットワークにおいては、特にnが大きい場合、ベクトル行列積:d×(d,n)の計算量が非常に大きくなってしまう、という課題がある。
【0048】
しかしながら、比較例のニューラルネットワークにおいては、加重和をとるための重みとして利用されるベクトル行列積の結果の分布は、多くの場合偏り、結果的に無視できる(重みがほぼ0になる)ものが多い。
【0049】
そこで、本実施形態においては、クエリとしてのベクトルに対応するキー探索とみなせる処理を含むニューラルネットワークにおいて、まず、キー探索計算を近似的に行って候補を絞り込み、その後、絞り込んだ少数のキーを対象に、再度、キー探索計算を行うようにした。これにより、計算を近似的に粗く行うことで、間引き処理を行うことなく近似計算しても高速化できるので、処理時間などのコストを削減することができる。
【0050】
なお、本実施形態においては、関連キー(類似度)の順位付けを近似内積により求めたが、これに限るものではなく、内積以外の計算法でも良い。例えば、関連キー(類似度)の順位付けを、コサイン類似度、ハミング距離などを用いて行うようにしてもよい。
【0051】
また、本実施形態においては、近似的に類似度計算を行う専用のプロセッサとしてGPU10を用いるようにしたが、これに限るものではなく、CPU20において近似的な類似度計算を行うようにしてもよい。この場合、CPU20が演算デバイスを実現することになる。また近似の方法として、クエリ及びキーを低ビットに量子化する方法を示したが、その他の近似方法であっても良い。例えばクエリやキーのベクトルの各要素の内値が所定の値よりも小さいものを0として扱うなどの近似によって、内積計算が高速化できる場合にはそのような近似でも効果が得られる。また、抵抗変化型メモリなどを利用したアナログ積和演算器を利用して、近似的な類似度計算を行うようにしてもよい。この場合、抵抗変化型メモリを用いたアナログ積和演算器が演算デバイスを実現することになる。
【0052】
アナログ積和演算器の例を図8に示す。アナログ積和演算器は、例えば、横方向(行方向)の複数の配線WLと、縦方向(列方向)の複数の配線BLと、それらの交点で端子がWLとBLに接続された抵抗素子と、で構成される。図8ではi-1行目からi+1行目までの3行と、j-1行目からj+1行目までの3列の3行3列を示しているが、これは例えばd行n列の一部分のみを示したものである。ここで、d,nはそれぞれ2以上の整数、iは1以上d-2以下の整数、jは1以上n-2以下の整数である。各WLに入力電圧が印加されると、その電圧値と抵抗素子の抵抗値に応じて電流が生成されて、各BLに電流が流れる。同一BL上に生成された電流は加算され、出力yとなる。これにより、d行の各行に印加される電圧値をd次元ベクトル、d行n列の抵抗素子の抵抗値の逆数(コンダクタンス)を(n,d)の行列としたときに、ベクトル行列積に対応する処理が実行される。
【0053】
なお、本実施形態の演算デバイス、本実施形態の演算デバイスを含む計算機システム、及び、本実施形態の演算方法を記憶する記憶媒体は、スマートフォン、携帯電話、パーソナルコンピュータ、デジタルカメラ、車載カメラ、監視カメラ、セキュリティシステム、AI機器、システムのライブラリ(データベース)、及び、人工衛星などに適用され得る。
【0054】
上述の説明において、本実施形態の演算デバイス、計算機システム、及び演算方法が、人間の言語(自然言語)を機械で処理する自然言語処理にかかる計算機システム1におけるニューラルネットワークに適用された例が示されている。但し、本実施形態の演算デバイス及び演算方法は、ニューラルネットワークを含む様々な計算機システム、及び、ニューラルネットワークによる計算処理を実行する様々なデータ処理方法に、適用可能である。
【0055】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0056】
1 計算機システム
70 メモリデバイス、保存部
99 メモリデバイス、保存部
100 ニューラルネットワーク
110 演算デバイス
1103 第1計算部
1104 選択部
1105 第2計算部
図1
図2
図3
図4
図5
図6
図7
図8