(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-13
(45)【発行日】2024-09-25
(54)【発明の名称】ハイブリッドアナログ・デジタル行列プロセッサ
(51)【国際特許分類】
G06J 1/00 20060101AFI20240917BHJP
G06F 17/16 20060101ALI20240917BHJP
G06G 7/60 20060101ALI20240917BHJP
G06E 3/00 20060101ALI20240917BHJP
【FI】
G06J1/00
G06F17/16 Z
G06G7/60
G06E3/00
(21)【出願番号】P 2021549796
(86)(22)【出願日】2020-02-25
(86)【国際出願番号】 US2020019747
(87)【国際公開番号】W WO2020176538
(87)【国際公開日】2020-09-03
【審査請求日】2023-02-20
(32)【優先日】2019-02-26
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520447204
【氏名又は名称】ライトマター インコーポレイテッド
【氏名又は名称原語表記】LIGHTMATTER,INC.
(74)【代理人】
【識別番号】100105957
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【氏名又は名称】恩田 博宣
(74)【代理人】
【識別番号】100142907
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】ケニー、タイラー ジェイ.
(72)【発明者】
【氏名】フォーサイス、マーティン ビー.ゼット.
(72)【発明者】
【氏名】ラゾビッチ、トモ
(72)【発明者】
【氏名】ブナンダー、ダリアス
【審査官】征矢 崇
(56)【参考文献】
【文献】特開2019-003546(JP,A)
【文献】米国特許出願公開第2018/0293208(US,A1)
【文献】米国特許出願公開第2018/0373902(US,A1)
【文献】米国特許出願公開第2018/0081388(US,A1)
【文献】Yipeng Huang, 外4名,Evaluation of an Analog Accelerator for Linear Algebra [online],2016 ACM/IEEE 43rd Annual International Symposium on Computer Architecture,2016年,[令和6年3月27日検索],インターネット <URL:https://dl.acm.org/doi/10.1145/3007787.3001197>
(58)【調査した分野】(Int.Cl.,DB名)
G06J1/00
G06F17/16
G06G7/60
G06E3/00
(57)【特許請求の範囲】
【請求項1】
ハイブリッドアナログ・デジタルプロセッサであって、
アナログプロセッサを含む回路を含み、前記回路は、複数のパスを使用して数学的演算を行うように構成され、前記回路は、前記複数のパスのそれぞれについて、
行列の一部を表すパラメータのセットに基づいて、前記パスに関する1つ又は複数のスケーリングファクタを決定することと、
前記1つ又は複数のスケーリングファクタに基づいて前記パラメータのセットの少なくとも幾つかのパラメータをスケーリングして、スケーリングされたパラメータのセットを生じさせることと、
前記スケーリングされたパラメータのセットに基づいて前記アナログプロセッサをプログラムすることと、
入力データセットに基づいて複数の入力アナログ信号を生成することと、
前記複数の入力アナログ信号及び前記スケーリングされたパラメータのセットに基づいて複数の出力アナログ信号を生成することと、
前記複数の出力アナログ信号に基づいて部分出力データセットを生成することと、
前記1つ又は複数のスケーリングファクタに基づいて前記部分出力データセットをスケーリングして、スケーリングされた部分出力データセットを生じさせることとを行うように構成され、
前記回路は、前記複数のパスの少なくとも2つによって生成された前記スケーリングされた部分出力データセットを累算することにより、累算出力データセットを生成するようにさらに構成され、前記累算出力データセットは、数学的演算の結果を表す、ハイブリッドアナログ・デジタルプロセッサ。
【請求項2】
前記複数の入力アナログ信号及び前記スケーリングされたパラメータのセットに基づいて複数の出力アナログ信号を生成することは、前記複数の入力アナログ信号及び前記スケーリングされたパラメータのセットに基づいて行列-行列乗算を行うことを含む、請求項1に記載のハイブリッドアナログ・デジタルプロセッサ。
【請求項3】
前記複数の入力アナログ信号及び前記スケーリングされたパラメータのセットに基づいて複数の出力アナログ信号を生成することは、前記複数の入力アナログ信号及び前記スケーリングされたパラメータのセットに基づいて畳み込みを行うことを含む、請求項1に記載のハイブリッドアナログ・デジタルプロセッサ。
【請求項4】
前記スケーリングされたパラメータのセットに基づいて前記アナログプロセッサをプログラムすることは、前記スケーリングされたパラメータのセットに基づいて、前記アナログプロセッサの複数のアナログ増幅器又は減衰器に関するそれぞれの利得又は減衰を設定することを含む、請求項1に記載のハイブリッドアナログ・デジタルプロセッサ。
【請求項5】
前記アナログプロセッサは、複数のプログラマブルフォトニックデバイスを含むフォトニックプロセッサを含み、前記スケーリングされたパラメータのセットに基づいて前記アナログプロセッサをプログラムすることは、前記スケーリングされたパラメータのセットに基づいて、前記複数のプログラマブルフォトニックデバイスに関するそれぞれの特性を設定することを含む、請求項1に記載のハイブリッドアナログ・デジタルプロセッサ。
【請求項6】
前記プログラマブルフォトニックデバイスは、
複数のマッハツェンダー干渉計を含み、前記スケーリングされたパラメータのセットに基づいて、前記複数のプログラマブルフォトニックデバイスに関するそれぞれの特性を設定することは、
前記スケーリングされたパラメータのセットに基づいて、前記複数のマッハツェンダー干渉計に関するそれぞれの光学的特性を設定することを含む、請求項5に記載のハイブリッドアナログ・デジタルプロセッサ。
【請求項7】
前記複数のパスの少なくとも2つによって生成された前記スケーリングされた部分出力データセットを累算することは、
前記パスの少なくとも幾つかについて、前記パスによって生成された前記スケーリングされた部分出力データセットを、前のパスによって生成された前記スケーリングされた部分出力データセットと合計することを含む、請求項1に記載のハイブリッドアナログ・デジタルプロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、数学的行列演算を行うように構成されたハイブリッドアナログ・デジタルプロセッサに関する。
【背景技術】
【0002】
深層学習、機械学習、潜在変数モデル、ニューラルネットワーク及び他の行列ベースの微分可能プログラムは、自然言語処理及び画像中の物体認識を含む様々な問題を解くために使用される。深層ニューラルネットワークを用いてこれらの問題を解くことは、一般に、必要とされる計算を行うために長い処理時間を必要とする。これらの問題を解く際、最も計算負荷の高い演算は、多くの場合、汎用行列乗算又はマルチチャネル畳み込みなどの数学的行列演算である。深層学習アルゴリズムを加速するための従来の手法は、特殊ハードウェアアーキテクチャを開発することであった。これは、電気信号によって表される複数ビットの情報に論理ゲートを実装するための何億ものトランジスタを含む回路からなる従来のコンピュータプロセッサ(例えば、中央処理装置(CPU:central processing unit))が汎用計算のために設計されており、したがってデータ移動の特定のパターン並びに深層学習及び他の行列ベースの微分可能プログラムで使用されるアルゴリズムによって必要とされる計算向けに最適化されていないためである。深層学習のための特殊ハードウェアの従来例の1つは、画像処理及びグラフィック操作を行うためのCPUよりもグラフィックスプロセッシングユニット(GPU:graphics processing unit)を効率的にする高度並列アーキテクチャを有するGPUである。GPUは、グラフィック処理についての開発後、ニューラルネットワーク及び深層学習で使用されるような他の並列化可能アルゴリズムに対して、CPUよりも効率的であることが分かった。
【0003】
従来、ニューラルネットワークを使用した深層学習は、訓練段階及び評価段階(ときに「推論」と呼ばれる)の2つの段階を必要とする。例えば、評価段階中に画像又は音声サンプルを分類するために、深層学習アルゴリズムをプロセッサに対して意味のあるように実行することができるようになるまで、ニューラルネットワークは、最初に訓練されなければならない。訓練段階は、時間がかかる可能性があり、集中的な計算を必要とする。
【発明の概要】
【0004】
一部の実施形態は、アナログプロセッサを含む回路(circuitry)であって、複数のパスを使用して数学的演算を行うように構成され、複数のパスのそれぞれについて、行列の一部を表すパラメータのセットに基づいて、パスに関する1つ又は複数のスケーリングファクタを決定することと、1つ又は複数のスケーリングファクタに基づいてパラメータのセットの少なくとも幾つかのパラメータをスケーリングして、スケーリングされたパラメータのセットを生じさせることと、スケーリングされたパラメータのセットに基づいてアナログプロセッサをプログラムすることと、入力データセットに基づいて複数の入力アナログ信号を生成することと、複数の入力アナログ信号及びスケーリングされたパラメータのセットに基づいて複数の出力アナログ信号を生成することと、複数の出力アナログ信号に基づいて部分出力データセットを生成することと、1つ又は複数のスケーリングファクタに基づいて部分出力データセットをスケーリングして、スケーリングされた部分出力データセットを生じさせることとを行うように構成され、複数のパスの少なくとも2つによって生成されたスケーリングされた部分出力データセットを累算することにより、累算出力データセットを生成するようにさらに構成され、累算出力データセットは、数学的演算の結果を表す、回路を含む、ハイブリッドアナログ・デジタルプロセッサに関する。
【0005】
一部の実施形態では、複数の入力アナログ信号及びスケーリングされたパラメータのセットに基づいて複数の出力アナログ信号を生成することは、複数の入力アナログ信号及びスケーリングされたパラメータのセットに基づいて行列-行列乗算を行うことを含む。
【0006】
一部の実施形態では、複数の入力アナログ信号及びスケーリングされたパラメータのセットに基づいて複数の出力アナログ信号を生成することは、複数の入力アナログ信号及びスケーリングされたパラメータのセットに基づいて畳み込みを行うことを含む。
【0007】
一部の実施形態では、スケーリングされたパラメータのセットに基づいてアナログプロセッサをプログラムすることは、スケーリングされたパラメータのセットに基づいて、アナログプロセッサの複数のアナログ増幅器又は減衰器に関するそれぞれの利得又は減衰を設定することを含む。
【0008】
一部の実施形態では、アナログプロセッサは、複数のプログラマブルフォトニックデバイスを含むフォトニックプロセッサを含み、スケーリングされたパラメータのセットに基づいてアナログプロセッサをプログラムすることは、スケーリングされたパラメータのセットに基づいて、複数のプログラマブルフォトニックデバイスに関するそれぞれの特性を設定することを含む。
【0009】
一部の実施形態では、プログラマブルフォトニックデバイスは、マッハツェンダー干渉計を含み、スケーリングされたパラメータのセットに基づいて、複数のプログラマブルフォトニックデバイスに関するそれぞれの特性を設定することは、スケーリングされたパラメータのセットに基づいて、複数のマッハツェンダー干渉計に関するそれぞれの光学的特性を設定することを含む。
【0010】
一部の実施形態では、プログラマブルフォトニックデバイスは、光共振器を含み、スケーリングされたパラメータのセットに基づいて、複数のプログラマブルフォトニックデバイスに関するそれぞれの特性を設定することは、スケーリングされたパラメータのセットに基づいて、複数の光共振器に関するそれぞれの光学的特性を設定することを含む。
【0011】
一部の実施形態では、回路は、複数のデジタル・アナログ変換器(DAC:digital-to-analog converter)を含み、複数のDACは、入力データセットに基づいて複数の入力アナログ信号を生成するように構成される。
【0012】
一部の実施形態では、回路は、複数のアナログ・デジタル変換器(ADC:analog-to-digital converter)を含み、複数のADCは、複数の出力アナログ信号に基づいて部分出力データセットを生成するように構成される。
【0013】
一部の実施形態では、複数のADCは、nビットのADCを含み、ここで、nは、12以下である。
一部の実施形態では、複数のパスの少なくとも2つによって生成されたスケーリングされた部分出力データセットを累算することは、パスの少なくとも幾つかについて、パスによって生成されたスケーリングされた部分出力データセットを、前のパスによって生成されたスケーリングされた部分出力データセットと合計することを含む。
【0014】
一部の実施形態では、アナログプロセッサをプログラムすることは、任意行列を集合的に表す複数の行列を用いて、スケーリングされたパラメータのセットに基づいて、アナログプロセッサをプログラムすることを含む。
【0015】
一部の実施形態では、複数の行列を用いてアナログプロセッサをプログラムすることは、任意行列の特異値分解(SVD:singular value decomposition)に基づいて任意行列を集合的に表す複数の行列を用いて、スケーリングされたパラメータのセットに基づいて、アナログプロセッサをプログラムすることを含む。
【0016】
一部の実施形態では、複数の行列を用いてアナログプロセッサをプログラムすることは、任意行列の伸張に基づいて任意行列を集合的に表す複数の行列を用いて、スケーリングされたパラメータのセットに基づいて、アナログプロセッサをプログラムすることを含む。
【0017】
一部の実施形態では、1つ又は複数のスケーリングファクタに基づいてパラメータのセットの少なくとも幾つかをスケーリングすることは、パラメータのセットの少なくとも幾つかを1つ又は複数のスケーリングファクタで除算することを含み、1つ又は複数のスケーリングファクタに基づいて部分出力データセットをスケーリングすることは、部分出力データセットを1つ又は複数のスケーリングファクタで乗算することを含む。
【0018】
一部の実施形態では、複数のパスのそれぞれについて、回路は、パスに関連付けられる行列のタイルに基づいて1つ又は複数のスケーリングファクタを決定するようにさらに構成される。
【0019】
一部の実施形態では、複数のパスのそれぞれについて、回路は、行列の1つ又は複数の行に基づいて1つ又は複数のスケーリングファクタを決定するようにさらに構成される。
一部の実施形態では、複数のパスのそれぞれについて、回路は、行列の1つ又は複数の特異値に基づいて1つ又は複数のスケーリングファクタを決定するようにさらに構成される。
【0020】
一部の実施形態では、1つ又は複数のスケーリングファクタは、第1のスケーリングファクタと第2のスケーリングファクタとを含み、1つ又は複数のスケーリングファクタに基づいてパラメータのセットの少なくとも幾つかのパラメータをスケーリングすることは、第1のスケーリングファクタに基づいてパラメータのセットの第1のサブセットをスケーリングすることと、第2のスケーリングファクタに基づいてパラメータのセットの第2のサブセットをスケーリングすることとを含む。
【0021】
一部の実施形態は、アナログプロセッサを通る複数のパスを使用して数学的演算を行う方法であって、複数のパスのそれぞれについて、行列の一部を表すパラメータのセットに基づいて、パスに関する1つ又は複数のスケーリングファクタを決定することと、1つ又は複数のスケーリングファクタに基づいてパラメータのセットの少なくとも幾つかのパラメータをスケーリングして、スケーリングされたパラメータのセットを生じさせることと、スケーリングされたパラメータのセットに基づいてアナログプロセッサをプログラムすることと、入力データセットに基づいて複数の入力アナログ信号を生成することと、複数の入力アナログ信号及びスケーリングされたパラメータのセットに基づいて複数の出力アナログ信号を生成することと、複数の出力アナログ信号に基づいて部分出力データセットを生成することと、1つ又は複数のスケーリングファクタに基づいて部分出力データセットをスケーリングして、スケーリングされた部分出力データセットを生じさせることと、複数のパスの少なくとも2つによって生成されたスケーリングされた部分出力データセットを累算することにより、累算出力データセットを生成することとを含み、累算出力データセットは、数学的演算の結果を表す、方法に関する。
【0022】
一部の実施形態では、複数の入力アナログ信号及びスケーリングされたパラメータのセットに基づいて複数の出力アナログ信号を生成することは、複数の入力アナログ信号及びスケーリングされたパラメータのセットに基づいて行列-行列乗算を行うことを含む。
【0023】
一部の実施形態では、複数の入力アナログ信号及びスケーリングされたパラメータのセットに基づいて複数の出力アナログ信号を生成することは、複数の入力アナログ信号及びスケーリングされたパラメータのセットに基づいて畳み込みを行うことを含む。
【0024】
一部の実施形態では、スケーリングされたパラメータのセットに基づいてアナログプロセッサをプログラムすることは、スケーリングされたパラメータのセットに基づいて、アナログプロセッサの複数のアナログ増幅器又は減衰器に関するそれぞれの利得又は減衰を設定することを含む。
【0025】
一部の実施形態では、アナログプロセッサは、複数のプログラマブルフォトニックデバイスを含むフォトニックプロセッサを含み、スケーリングされたパラメータのセットに基づいてアナログプロセッサをプログラムすることは、スケーリングされたパラメータのセットに基づいて、複数のプログラマブルフォトニックデバイスに関するそれぞれの特性を設定することを含む。
【0026】
一部の実施形態では、プログラマブルフォトニックデバイスは、マッハツェンダー干渉計を含み、スケーリングされたパラメータのセットに基づいて、複数のプログラマブルフォトニックデバイスに関するそれぞれの特性を設定することは、スケーリングされたパラメータのセットに基づいて、複数のマッハツェンダー干渉計に関するそれぞれの光学的特性を設定することを含む。
【0027】
一部の実施形態では、プログラマブルフォトニックデバイスは、光共振器を含み、スケーリングされたパラメータのセットに基づいて、複数のプログラマブルフォトニックデバイスに関するそれぞれの特性を設定することは、スケーリングされたパラメータのセットに基づいて、複数の光共振器に関するそれぞれの光学的特性を設定することを含む。
【0028】
一部の実施形態では、入力データセットに基づいて複数の入力アナログ信号を生成することは、複数のデジタル・アナログ変換器(DAC)への入力として入力データセットを提供することを含む。
【0029】
一部の実施形態では、複数の出力アナログ信号、回路に基づいて部分出力データセットを生成することは、複数のアナログ・デジタル変換器(ADC)への入力として複数の出力アナログ信号を提供することを含む。
【0030】
一部の実施形態では、複数のADCは、nビットのADCを含み、ここで、nは、12以下である。
一部の実施形態では、複数のパスの少なくとも2つによって生成されたスケーリングされた部分出力データセットを累算することは、パスの少なくとも幾つかについて、パスによって生成されたスケーリングされた部分出力データセットを、前のパスによって生成されたスケーリングされた部分出力データセットと合計することを含む。
【0031】
一部の実施形態では、アナログプロセッサをプログラムすることは、任意行列を集合的に表す複数の行列を用いて、スケーリングされたパラメータのセットに基づいて、アナログプロセッサをプログラムすることを含む。
【0032】
一部の実施形態では、複数の行列を用いてアナログプロセッサをプログラムすることは、任意行列の特異値分解(SVD)に基づいて任意行列を集合的に表す複数の行列を用いて、スケーリングされたパラメータのセットに基づいて、アナログプロセッサをプログラムすることを含む。
【0033】
一部の実施形態では、複数の行列を用いてアナログプロセッサをプログラムすることは、任意行列の伸張に基づいて任意行列を集合的に表す複数の行列を用いて、スケーリングされたパラメータのセットに基づいて、アナログプロセッサをプログラムすることを含む。
【0034】
一部の実施形態では、1つ又は複数のスケーリングファクタに基づいてパラメータのセットの少なくとも幾つかをスケーリングすることは、パラメータのセットの少なくとも幾つかを1つ又は複数のスケーリングファクタで除算することを含み、1つ又は複数のスケーリングファクタに基づいて部分出力データセットをスケーリングすることは、部分出力データセットを1つ又は複数のスケーリングファクタで乗算することを含む。
【0035】
一部の実施形態では、1つ又は複数のスケーリングファクタを決定することは、パスに関連付けられる行列のタイルに基づいて1つ又は複数のスケーリングファクタを決定することを含む。
【0036】
一部の実施形態では、1つ又は複数のスケーリングファクタを決定することは、行列の1つ又は複数の行に基づいて1つ又は複数のスケーリングファクタを決定することを含む。
【0037】
一部の実施形態では、1つ又は複数のスケーリングファクタを決定することは、行列の1つ又は複数の特異値に基づいて1つ又は複数のスケーリングファクタを決定することを含む。
【0038】
一部の実施形態では、1つ又は複数のスケーリングファクタは、第1のスケーリングファクタと第2のスケーリングファクタとを含み、1つ又は複数のスケーリングファクタに基づいてパラメータのセットの少なくとも幾つかのパラメータをスケーリングすることは、第1のスケーリングファクタに基づいてパラメータのセットの第1のサブセットをスケーリングすることと、第2のスケーリングファクタに基づいてパラメータのセットの第2のサブセットをスケーリングすることとを含む。
【0039】
一部の実施形態は、複数のデジタル・アナログ変換器(DAC)を含むDACユニットと、行列-行列乗算を行うように配置され、且つDACユニットの出力に結合されたアナログプロセッサと、複数のアナログ・デジタル(ADC)を含み、且つアナログプロセッサの出力に結合されたADCユニットと、ADCユニットの出力に結合されたデジタルスケーリングユニットと、デジタルスケーリングユニットの出力に結合されたデジタル累算器とを含み、デジタル累算器は、メモリユニット及びデジタル加算器を含む、ハイブリッドアナログ・デジタルプロセッサに関する。
【0040】
一部の実施形態では、ハイブリッドアナログ・デジタルプロセッサは、DACユニットとADCユニットとの間に結合された増幅又は減衰ユニットをさらに含む。
一部の実施形態では、アナログプロセッサは、複数のプログラマブルフォトニックデバイスを含むフォトニックプロセッサを含む。
【0041】
一部の実施形態では、プログラマブルフォトニックデバイスは、マッハツェンダー干渉計を含む。
一部の実施形態では、プログラマブルフォトニックデバイスは、光共振器を含む。
【0042】
一部の実施形態では、アナログプロセッサは、任意行列を集合的に表す複数の行列を用いてプログラムされる。
一部の実施形態では、複数の行列は、任意行列の特異値分解(SVD)に基づいて任意行列を集合的に表す。
【0043】
一部の実施形態では、複数の行列は、任意行列の伸張に基づいて任意行列を集合的に表す。
一部の実施形態は、アナログプロセッサ及びアナログスケーリングユニットを含む回路であって、入力データセットに基づいて複数の入力アナログ信号を生成することと、スケーリングファクタに基づいてアナログスケーリングユニットの利得を設定することと、行列を表すパラメータのセットを用いてアナログプロセッサをプログラムすることと、複数の入力アナログ信号及びパラメータのセットに基づいて複数の出力アナログ信号を生成することと、アナログスケーリングユニットを使用して、複数の入力アナログ信号及び/又は複数の出力アナログ信号を増幅させることにより、複数の増幅された出力アナログ信号を生成することと、複数の増幅された出力アナログ信号に基づいて出力データセットを生成することとを行うように構成される回路を含む、数学的演算を行うように構成されたハイブリッドアナログ・デジタルプロセッサに関する。
【0044】
一部の実施形態では、アナログスケーリングユニットは、アナログ増幅器又は減衰器を含む。
一部の実施形態では、ハイブリッドアナログ・デジタルプロセッサは、数学的演算に基づいてマルチパス計算を行うようにさらに構成され、回路は、マルチパス計算の第1のパス中、アナログスケーリングユニットの利得を第1の値に設定することと、マルチパス計算の第2のパス中、アナログスケーリングユニットの利得を、第1の値と異なる第2の値に設定することとを行うようにさらに構成される。
【0045】
一部の実施形態では、複数の入力アナログ信号及びパラメータのセットに基づいて複数の出力アナログ信号を生成することは、複数の入力アナログ信号及びパラメータのセットに基づいて行列-行列乗算を行うことを含む。
【0046】
一部の実施形態では、複数の入力アナログ信号及びパラメータのセットに基づいて複数の出力アナログ信号を生成することは、複数の入力アナログ信号及びパラメータのセットに基づいて畳み込みを行うことを含む。
【0047】
一部の実施形態では、回路は、複数のアナログ・デジタル変換器(ADC)を含み、複数のADCは、複数の出力アナログ信号に基づいて出力データセットを生成するように構成される。
【0048】
一部の実施形態では、複数のADCは、nビットのADCを含み、ここで、nは、12以下である。
一部の実施形態では、アナログプロセッサをプログラムすることは、任意行列を集合的に表す複数の行列を用いて、パラメータのセットに基づいて、アナログプロセッサをプログラムすることを含む。
【0049】
一部の実施形態では、複数の行列を用いてアナログプロセッサをプログラムすることは、任意行列の特異値分解(SVD)に基づいて任意行列を集合的に表す複数の行列を用いて、パラメータのセットに基づいて、アナログプロセッサをプログラムすることを含む。
【0050】
一部の実施形態では、複数の行列を用いてアナログプロセッサをプログラムすることは、任意行列の伸張に基づいて任意行列を集合的に表す複数の行列を用いて、スケーリングされたパラメータのセットに基づいて、アナログプロセッサをプログラムすることを含む。
【0051】
一部の実施形態では、回路は、パラメータのセット及び入力データセットに基づいてスケーリングファクタを決定するようにさらに構成される。
一部の実施形態では、スケーリングファクタを決定することは、パラメータのセットに関する統計範囲及び入力データセットに関する統計的範囲に基づいてスケーリングファクタを決定することを含む。
【0052】
一部の実施形態は、数学的演算を行う方法であって、入力データセットに基づいて複数の入力アナログ信号を生成することと、スケーリングファクタに基づいてアナログスケーリングユニットの利得を設定することと、行列を表すパラメータのセットを用いてアナログプロセッサをプログラムすることと、複数の入力アナログ信号及びパラメータのセットに基づいて複数の出力アナログ信号を生成することと、アナログスケーリングユニットを使用して、複数の入力アナログ信号及び/又は複数の出力アナログ信号を増幅させることにより、複数の増幅された出力アナログ信号を生成することと、複数の増幅された出力アナログ信号に基づいて出力データセットを生成することとを含む方法に関する。
【0053】
一部の実施形態では、アナログスケーリングユニットは、アナログ増幅器又は減衰器を含む。
一部の実施形態では、ハイブリッドアナログ・デジタルプロセッサは、数学的演算に基づいてマルチパス計算を行うようにさらに構成され、回路は、マルチパス計算の第1のパス中、アナログスケーリングユニットの利得を第1の値に設定することと、マルチパス計算の第2のパス中、アナログスケーリングユニットの利得を、第1の値と異なる第2の値に設定することとを行うようにさらに構成される。
【0054】
一部の実施形態では、複数の入力アナログ信号及びパラメータのセットに基づいて複数の出力アナログ信号を生成することは、複数の入力アナログ信号及びパラメータのセットに基づいて行列-行列乗算を行うことを含む。
【0055】
一部の実施形態では、複数の入力アナログ信号及びパラメータのセットに基づいて複数の出力アナログ信号を生成することは、複数の入力アナログ信号及びパラメータのセットに基づいて畳み込みを行うことを含む。
【0056】
一部の実施形態では、回路は、複数のアナログ・デジタル変換器(ADC)を含み、複数のADCは、複数の出力アナログ信号に基づいて出力データセットを生成するように構成される。
【0057】
一部の実施形態では、複数のADCは、nビットのADCを含み、ここで、nは、12以下である。
一部の実施形態では、アナログプロセッサをプログラムすることは、任意行列を集合的に表す複数の行列を用いて、パラメータのセットに基づいて、アナログプロセッサをプログラムすることを含む。
【0058】
一部の実施形態では、複数の行列を用いてアナログプロセッサをプログラムすることは、任意行列の特異値分解(SVD)に基づいて任意行列を集合的に表す複数の行列を用いて、パラメータのセットに基づいて、アナログプロセッサをプログラムすることを含む。
【0059】
一部の実施形態では、複数の行列を用いてアナログプロセッサをプログラムすることは、任意行列の伸張に基づいて任意行列を集合的に表す複数の行列を用いて、スケーリングされたパラメータのセットに基づいて、アナログプロセッサをプログラムすることを含む。
【0060】
一部の実施形態では、この方法は、パラメータのセット及び入力データセットに基づいてスケーリングファクタを決定することをさらに含む。
一部の実施形態では、スケーリングファクタを決定することは、パラメータのセットに関する統計範囲及び入力データセットに関する統計的範囲に基づいてスケーリングファクタを決定することを含む。
【0061】
一部の実施形態は、フォトニックプロセッサを含む回路であって、複数のパスを使用して数学的演算を行うように構成され、複数のパスのそれぞれについて、行列の一部を表すパラメータのセットに基づいて、パスに関する1つ又は複数のスケーリングファクタを決定することと、1つ又は複数のスケーリングファクタに基づいてパラメータのセットの少なくとも幾つかのパラメータをスケーリングして、スケーリングされたパラメータのセットを生じさせることと、スケーリングされたパラメータのセットに基づいてフォトニックプロセッサをプログラムすることと、入力データセットに基づいて複数の入力光信号を生成することと、複数の入力光信号及びスケーリングされたパラメータのセットに基づいて複数の出力光信号を生成することと、複数の出力光信号に基づいて部分出力データセットを生成することと、1つ又は複数のスケーリングファクタに基づいて部分出力データセットをスケーリングして、スケーリングされた部分出力データセットを生じさせることとを行うように構成され、複数のパスの少なくとも2つによって生成されたスケーリングされた部分出力データセットを累算することにより、累算出力データセットを生成するようにさらに構成された回路を含み、累算出力データセットは、数学的演算の結果を表す、回路ハイブリッドアナログ・デジタルプロセッサに関する。
【0062】
一部の実施形態では、フォトニックプロセッサは、複数のプログラマブルフォトニックデバイスを含み、スケーリングされたパラメータのセットに基づいてアナログプロセッサをプログラムすることは、スケーリングされたパラメータのセットに基づいて、複数のプログラマブルフォトニックデバイスに関するそれぞれの特性を設定することを含む。
【0063】
一部の実施形態では、プログラマブルフォトニックデバイスは、光共振器を含み、スケーリングされたパラメータのセットに基づいて、複数のプログラマブルフォトニックデバイスに関するそれぞれの特性を設定することは、スケーリングされたパラメータのセットに基づいて、複数の光共振器に関するそれぞれの光学的特性を設定することを含む。
【0064】
一部の実施形態では、光共振器は、光リング又はディスク共振器を含み、複数の光共振器に関するそれぞれの光学的特性を設定することは、スケーリングされたパラメータのセットに基づいて、複数の光リング又はディスク共振器に関するそれぞれの共振周波数を設定することを含む。
【0065】
一部の実施形態では、プログラマブルフォトニックデバイスは、フランツ・ケルディッシュ変調器を含み、スケーリングされたパラメータのセットに基づいて、複数のプログラマブルフォトニックデバイスに関するそれぞれの特性を設定することは、スケーリングされたパラメータのセットに基づいて、複数のフランツ・ケルディッシュ変調器に関するそれぞれの吸収を設定することを含む。
【0066】
一部の実施形態では、フォトニックプロセッサは、第1の複数の光入力及び第1の複数の光出力を含む相互接続された可変ビームスプリッタ(VBS:variable beam splitter)の第1のアレイと、第2の複数の光入力及び第2の複数の光出力を含む相互接続されたVBSの第2のアレイと、複数の制御可能な光学素子であって、複数のこれらの制御可能な光学素子のそれぞれは、第1のアレイの第1の複数の光出力の単一の1つを、第2のアレイの第2の複数の光入力のそれぞれの単一の1つに結合させる、複数の制御可能な光学素子とを含む。
【0067】
一部の実施形態では、スケーリングされたパラメータのセットに基づいてフォトニックプロセッサをプログラムすることは、スケーリングされたパラメータのセットに基づいて複数の制御可能な光学素子をプログラムすることを含む。
【0068】
一部の実施形態では、第1及び第2のアレイのVBSのそれぞれは、第1のビームスプリッタと、第2のビームスプリッタと、第1のビームスプリッタ及び第2のビームスプリッタを結合させる光学モードの光の位相を変調するように構成された少なくとも1つの位相変調器とを含むマッハツェンダー干渉計を含む。
【0069】
一部の実施形態では、制御可能な光学素子のそれぞれは、可変減衰器及び少なくとも1つの位相変調器を含む。
一部の実施形態では、複数の入力光信号及びスケーリングされたパラメータのセットに基づいて複数の出力光信号を生成することは、複数の入力光信号及びスケーリングされたパラメータのセットに基づいて行列-行列乗算を行うことを含む。
【0070】
一部の実施形態では、フォトニックプロセッサをプログラムすることは、任意行列を集合的に表す複数の行列を用いて、スケーリングされたパラメータのセットに基づいて、フォトニックプロセッサをプログラムすることを含む。
【0071】
一部の実施形態は、複数のデジタル・アナログ変換器(DAC)を含むDACユニットと、行列-行列乗算を行うように配置され、且つDACユニットの出力に結合されたフォトニックプロセッサと、複数のアナログ・デジタル(ADC)を含み、且つフォトニックプロセッサの出力に結合されたADCユニットと、ADCユニットの出力に結合されたデジタルスケーリングユニットと、デジタルスケーリングユニットの出力に結合されたデジタル累算器であって、メモリユニット及びデジタル加算器を含むデジタル累算器とを含むハイブリッドアナログ・デジタルプロセッサに関する。
【0072】
一部の実施形態では、ハイブリッドアナログ・デジタルプロセッサは、DACユニットとADCユニットとの間に結合された光増幅又は減衰ユニットをさらに含む。
一部の実施形態では、フォトニックプロセッサは、複数の光共振器を含む。
【0073】
一部の実施形態では、フォトニックプロセッサは、第1の複数の光入力及び第1の複数の光出力を含む相互接続された可変ビームスプリッタ(VBS)の第1のアレイと、第2の複数の光入力及び第2の複数の光出力を含む相互接続されたVBSの第2のアレイと、複数の制御可能な光学素子であって、複数のこれらの制御可能な光学素子のそれぞれは、第1のアレイの第1の複数の光出力の単一の1つを、第2のアレイの第2の複数の光入力のそれぞれの単一の1つに結合させる、複数の制御可能な光学素子とを含む。
【0074】
一部の実施形態では、フォトニックプロセッサは、任意行列を集合的に表す複数の行列を用いてプログラムされる。
一部の実施形態は、フォトニックプロセッサ及び少なくとも1つの増幅器を含む回路であって、入力データセットに基づいて複数の入力アナログ信号を生成することと、スケーリングファクタに基づいて少なくとも1つの増幅器のそれぞれの利得を設定することと、行列を表すパラメータのセットを用いてフォトニックプロセッサをプログラムすることと、複数の入力光信号及びパラメータのセットに基づいて複数の出力光信号を生成することと、複数の出力光信号に基づいて複数の出力アナログ信号を生成することと、少なくとも1つの増幅器を使用して、複数の入力光信号、複数の出力光信号及び複数の出力アナログ信号のうちの少なくとも1つを増幅させることにより、複数の増幅された出力信号を生成することと、複数の増幅された出力信号に基づいて出力データセットを生成することとを行うように構成される回路を含む、数学的演算を行うように構成されたハイブリッドアナログ・デジタルプロセッサに関する。
【0075】
一部の実施形態では、少なくとも1つの増幅器は、光増幅器及び電子増幅器を含み、少なくとも1つの増幅器を使用して、複数の入力光信号、複数の出力光信号及び複数の出力アナログ信号のうちの少なくとも1つを増幅させることは、光増幅器を用いて複数の入力光信号を増幅させることと、電子増幅器を用いて複数の出力アナログ信号を増幅させることとを含む。
【0076】
一部の実施形態では、少なくとも1つの増幅器は、レーザを含み、増幅器の利得を設定することは、レーザの利得を設定することを含む。
一部の実施形態では、ハイブリッドアナログ・デジタルプロセッサは、数学的演算に基づいてマルチパス計算を行うようにさらに構成され、回路は、マルチパス計算の第1のパス中、少なくとも1つの増幅器の利得を第1の値に設定することと、マルチパス計算の第2のパス中、少なくとも1つの増幅器の利得を、第1の値と異なる第2の値に設定することとを行うようにさらに構成される。
【0077】
一部の実施形態では、複数の入力アナログ信号及びパラメータのセットに基づいて複数の出力アナログ信号を生成することは、複数の入力アナログ信号及びパラメータのセットに基づいて行列-行列乗算を行うことを含む。
【0078】
一部の実施形態では、複数の入力アナログ信号及びパラメータのセットに基づいて複数の出力アナログ信号を生成することは、複数の入力アナログ信号及びパラメータのセットに基づいて畳み込みを行うことを含む。
【0079】
一部の実施形態では、フォトニックプロセッサは、複数の光共振器を含む。
一部の実施形態では、フォトニックプロセッサは、第1の複数の光入力及び第1の複数の光出力を含む相互接続された可変ビームスプリッタ(VBS)の第1のアレイと、第2の複数の光入力及び第2の複数の光出力を含む相互接続されたVBSの第2のアレイと、複数の制御可能な光学素子であって、複数のこれらの制御可能な光学素子のそれぞれは、第1のアレイの第1の複数の光出力の単一の1つを、第2のアレイの第2の複数の光入力のそれぞれの単一の1つに結合させる、複数の制御可能な光学素子とを含む。
【0080】
一部の実施形態では、アナログプロセッサをプログラムすることは、任意行列を集合的に表す複数の行列を用いて、パラメータのセットに基づいて、アナログプロセッサをプログラムすることを含む。
【0081】
一部の実施形態では、複数の行列を用いてアナログプロセッサをプログラムすることは、任意行列の特異値分解(SVD)に基づいて任意行列を集合的に表す複数の行列を用いて、パラメータのセットに基づいて、アナログプロセッサをプログラムすることを含む。
【0082】
一部の実施形態では、複数の行列を用いてアナログプロセッサをプログラムすることは、任意行列の伸張に基づいて任意行列を集合的に表す複数の行列を用いて、スケーリングされたパラメータのセットに基づいて、アナログプロセッサをプログラムすることを含む。
【0083】
一部の実施形態では、回路は、パラメータのセット及び入力データセットに基づいてスケーリングファクタを決定するようにさらに構成される。
一部の実施形態では、スケーリングファクタを決定することは、パラメータのセットに関する統計範囲及び入力データセットに関する統計的範囲に基づいてスケーリングファクタを決定することを含む。
【0084】
一部の実施形態は、複数のデジタル・アナログ変換器(DAC)を含むDACユニットを形成することと、行列-行列乗算を行うように配置され、且つDACユニットの出力に結合されたフォトニックプロセッサを形成することと、複数のアナログ・デジタル(ADC)を含み、且つフォトニックプロセッサの出力に結合されたADCユニットを形成することと、ADCユニットの出力に結合されたデジタルスケーリングユニットを形成することと、デジタルスケーリングユニットの出力に結合されたデジタル累算器を形成することとを含み、デジタル累算器は、メモリユニット及びデジタル加算器を含む、ハイブリッドアナログ・デジタルプロセッサを製造する方法に関する。
【0085】
一部の実施形態では、フォトニックプロセッサを形成すること及びデジタル累算器を形成することは、共通チップ上にフォトニックプロセッサ及びデジタル累算器を形成することを含む。
【0086】
一部の実施形態では、フォトニックプロセッサを形成すること及びデジタル累算器を形成することは、フォトニックプロセッサを第1のチップ上に形成することと、デジタル累算器を第2のチップ上に形成することと、第1のチップを第2のチップに接着することとを含む。
【0087】
一部の実施形態では、ADCユニットを形成することは、複数のnビットのADCを形成することを含み、ここで、nは、12以下である。
本出願の様々な態様及び実施形態は、以下の図を参照して説明される。これらの図は、必ずしも一定の縮尺で描かれているわけではないことを理解されたい。複数の図に出現するアイテムは、それらが出現する全ての図において同じ参照番号で示される。
【図面の簡単な説明】
【0088】
【
図1-1A】一部の実施形態による、タイルに基づいて計算される行列乗算演算の表現である。
【
図1-1B】一部の実施形態による、どのように
図1-1Aの行列のサブ部分が計算され得るかを示す。
【
図1-1C】一部の実施形態による、入力行列の数値の分布を示すヒートマップである。
【
図1-2A】一部の実施形態による、ハイブリッドアナログ・デジタル行列プロセッサを示すブロック図である。
【
図1-2B】一部の実施形態による、行列乗算を示す図である。
【
図1-2C】一部の実施形態による、タイリングを使用して行われる行列乗算を示す図である。
【
図1-3】一部の実施形態による、ハイブリッドアナログ・デジタル行列プロセッサを用いて情報を処理する方法を示すフローチャートである。
【
図1-4A】一部の実施形態による、タイリング及びタイルファクタに基づくスケーリングを用いて行われる行列乗算を示す図である。
【
図1-4B】一部の実施形態による、タイリング及びタイル行ファクタに基づくスケーリングを用いて行われる行列乗算を示す図である。
【
図1-4C】一部の実施形態による、タイリング及びタイルファクタに基づくスケーリングを用いて行われる別の行列乗算を示す図である。
【
図1-4D】一部の実施形態による、タイリング及びタイル行ファクタに基づくスケーリングを用いて行われる別の行列乗算を示す図である。
【
図1-5A】一部の実施形態による、特異値分解に基づいて因数分解された行列を示す図である。
【
図1-5B】一部の実施形態による、n個のベクトル要素を受け取るデジタル累算器の一例を示すブロック図である。
【
図1-6A】一部の実施形態による、アナログプロセッサのダイナミックレンジとの関連で出力信号分布を示すプロットである。
【
図1-6B】一部の実施形態による、アナログ信号からデジタル化されたデータのデジタル表現に対して利得を変化させる効果を示す図である。
【
図1-7A】一部の実施形態による、別のハイブリッドアナログ・デジタル行列プロセッサを示すブロック図である。
【
図1-7B】一部の実施形態による、複数のアナログスケーリングユニットを示すブロック図である。
【
図1-8】一部の実施形態による、ハイブリッドアナログ・デジタル行列プロセッサを用いて情報を処理する別の方法を示すフローチャートである。
【
図1-9A】一部の実施形態による、利得の関数としてニューラルネットワーク計算の精度を示すプロットである。
【
図1-9B】一部の実施形態による、利得の関数としてニューラルネットワーク計算の構成要素部分の平均二乗誤差を示すプロットである。
【
図1-10】一部の実施形態による、別のハイブリッドアナログ・デジタル行列プロセッサを示すブロック図である。
【
図1-11】一部の実施形態による、ハイブリッドアナログ・デジタル行列プロセッサを用いて情報を処理する別の方法を示すフローチャートである。
【
図1-12】一部の実施形態による、フォトニックハイブリッドアナログ・デジタル行列プロセッサを示すブロック図である。
【
図2-1】一部の実施形態による、フォトニック処理システムの概略図である。
【
図2-2】一部の実施形態による、光学エンコーダの概略図である。
【
図2-3】一部の実施形態による、フォトニックプロセッサの概略図である。
【
図2-4】一部の実施形態による、相互接続された可変ビームスプリッタアレイの概略図である。
【
図2-5】一部の実施形態による、可変ビームスプリッタの概略図である。
【
図2-6】一部の実施形態による、n個の光学モードに作用する対角行列を表すために使用され得る減衰及び位相シフトの実施の概略図である。
【
図2-7】一部の実施形態による、光減衰器の概略図である。
【
図2-8】一部の実施形態による、光電力ツリーの概略図である。
【
図2-9】一部の実施形態による、一部の非限定的実施形態に従った光受信器の概略図である。
【
図2-10】一部の実施形態による、一部の非限定的実施形態に従ったホモダイン検出器の概略図である。
【
図2-11】一部の実施形態による、折り返しフォトニック処理システムの概略図である。
【発明を実施するための形態】
【0089】
I.概要
最近の深層学習適用例の急増に伴い、畳み込み又は汎用行列積算(GEMM:general matrix multiply)などのテンソル代数演算の高性能計算に特化したデジタルアクセラレータの需要が高まっている。従来、グラフィカルプロセッシングユニット(GPU)、フィールドプログラマブルゲートアレイ(FPGA:Field Programmable Gate Array)及び特定用途向け集積回路(ASIC:Application-Specific Integrated Circuit)を含むデジタルプロセッサアーキテクチャは、このような適用例においてアクセラレータとして使用されてきた。
【0090】
本発明者らは、従来のデジタルアクセラレータが大きい欠点を有する(それらが電力を大量消費する)ことを理解した。例えば、大量のGEMM演算を行うようにプログラムされたデジタルアクセラレータを考察する。このようなデジタルアクセラレータは、必要とされる乗算を計算するために非常に高周波でクロック制御された多数のトランジスタに依存する。何十年にわたり、トランジスタは、指数関数的にサイズが小さくなり、性能が高くなり、且つ電力消費が少なくなっており、これは、一般に、専門家がムーアの法則と呼ぶものである。しかし、最近では、この傾向は、減速し始めた。主に、極小サイズのトランジスタ間の漏れ電流により、電力消費を犠牲にすることなく、性能を高め続けることが一層難しくなった。
【0091】
これらの制約を認識することにより、本発明者らは、性能及びエネルギー効率の両方の観点から、スケーラビリティを向上させる新しいアクセラレータアーキテクチャを開発した。本発明者らによって開発されたアクセラレータは、デジタルコントローラの柔軟性及びプログラミング性をアナログ回路のエネルギー効率及び固有の速度と組み合わせる。これらのアクセラレータは、本明細書では、ハイブリッドアナログ・デジタルプロセッサと呼ばれる。
【0092】
本明細書に記載されるタイプのハイブリッドアナログ・デジタルプロセッサは、数学的演算の計算に特に適している。このような数学的演算の1つは、汎用行列積算(GEMM)であり、別のこのような演算は、畳み込みである(ただし、本出願の実施形態は、何れの特定の演算にも限定されない)。
【0093】
GEMM演算は、以下のように表現することができる。
D=α(A×B)+βC
式中、α及びβは、スカラー(個々の数)であり、A、B、C及びDは、行列である。A及びBの内次元は、(A×B)が行列乗算であるように一致する。幾つかの数学的演算は、GEMM演算の観点から分解することができ、したがって本発明者らによって開発されたアクセラレータを様々な状況に適用可能にする。
【0094】
深層人工ニューラルネットワークなどの一部の特定の適用例は、一般的に行列又はテンソルとして表される大量のデータの計算を必要とする。大量のデータに対して演算を行う手法の1つは、大型のハイブリッドアナログ・デジタルプロセッサを使用することである。例えば、何万もの行及び列を有する行列又はテンソルに関与する線形演算を行うために、何万ものアナログ素子を有するハイブリッドアナログ・デジタルプロセッサが使用され得る。
【0095】
しかし、本発明者らは、これほど多くのアナログコンポーネントを備えたプロセッサを設計することが、利用可能なチップ用地よりも多くのチップ用地又はそのようなチップにとって実用的な電力よりも多くの電力を必要とし得るため、この手法が、コストがかかり得ることを理解した。加えて、本発明者らは、一部の行列演算が非常に大きい次元を有し、他の演算が、最大計算のために十分な素子を有するプロセッサの全体的利用が低いようなより小さい次元を有する、異種作業負荷を一部の適用例が含むことを理解した。したがって、一部の実施形態は、比較的少数のアナログコンポーネントを用いて大量のデータを処理することができるハイブリッドアナログ・デジタルプロセッサに関係する。例えば、何千もの行及び列を有する行列に関与する行列演算は、一部の実施形態では、数百のアナログ素子のみを有するハイブリッドアナログ・デジタルプロセッサを用いて行われ得る(異なる数のアナログコンポーネントが使用され得るため、これらの数は、単なる例として提供されることを理解されたい)。
【0096】
一部の実施形態では、行列演算は、複数のパスをハイブリッドアナログ・デジタルプロセッサに通すことによって行われ得る。プロセッサを通る各パスにおいて、演算が行列のサブ部分(本明細書では「タイル」と呼ばれる)に対して行われる。
図1-1A及び1-1Bは、どのように行列乗算がタイルを使用して行われ得るかを示す。まず、
図1-1Aを参照すると、行列Cは、行列Aと行列Bとを乗算することによって得られる。行列Aは、I個の行及びK個の列を有し、行列Bは、K個の行及びJ個の列を有する。その結果、行列Cは、I個の行及びJ個の列を有する。A1及びA2は、行列Aのタイルを表す。分かりやすくするために、この例では、行列Aは、4つのタイルにセグメント化されている(ただし、一部の実施形態では、行列Aは、数十、数百又は数千以上のタイルにセグメント化され得る)。同様に、行列Bは、この例では、4つの非正方形タイルにセグメント化されている(ただし、一部の実施形態では、行列Bも数十、数百又は数千以上のタイルにセグメント化され得る)。(本明細書に記載されるタイプのタイルは、正方形である必要はないが)タイルA1及びB1は、それぞれN個の行及びM個の列を含み得る(ここで、N≦I、N≦K、N≦J、M≦I、M≦K及びM≦Jである)。この例では、行列Bは、タイル行B1及びB2に分割される。各タイル行は、N個の行及びJ個の列を含む。
【0097】
行列Cの各タイル行は、行列Aの各タイルと行列Bの各タイル行とを乗算し、それらの結果を累算することによって得られる。各乗算は、ハイブリッドアナログ・デジタルプロセッサを通るパスとして行われる。例えば、
図1-1Bに示されるように、タイルA1は、ハイブリッドアナログ・デジタルプロセッサを通る第1のパスでタイル行B1と乗算され、タイルA2は、第2のパスでタイル行B2と乗算される。その後、これらの結果は、以下のように累算される。
【0098】
C1=A1×B1+A2×B2
この例は、2つの部分結果の累算を伴う。しかし、他の実施形態では、乗算される行列の次元に対するタイルの次元に応じてより多くの部分結果が存在し得る。同じ「重み」行列(A)が多くの異なるバッチのデータ(B)と共に再使用される、予測するために設計されたようなGEMM適用例の場合、このタイルの順序付けは、空間的又は時間的局所性に関するメリットを有し、重みデータの移動が減少し得る。
【0099】
本発明者らは、光信号を使用する特定のクラスのアナログプロセッサをさらに開発した。本発明者らは、光が進んでいる媒体内の光の速度で光信号が進むため、電気システムの場合よりも、レイテンシが限界よりはるかに少ないことを理解した。加えて、光信号が進む距離を長くすることにより、実質的に電力の損失がなく、電気信号を使用した場合に実現不可能な新しいトポロジ及びプロセッサレイアウトが開拓される。したがって、本明細書で「フォトニックプロセッサ」と呼ばれる光ベースのプロセッサは、従来の電気プロセッサよりも優れた速度及び効率性能を有し得る。フォトニックプロセッサは、他のタイプのハイブリッドアナログ・デジタルプロセッサも使用され得るため、本明細書に記載されるアクセラレータの1つの可能な実装形態に過ぎないことを理解されたい。このようなハイブリッドアナログ・デジタルプロセッサの例は、以下でさらに詳細に提供される。
【0100】
本発明者らは、ある状況下において、入力データ(B)を表す行列及び/又は「重み」行列(A)がその値の大きさにわたって大きい変動を示し得ることをさらに理解した。例えば、より濃い領域がより大きい大きさの値のクラスタを表し、より薄い領域がより小さい大きさの値のクラスタを表す、
図1-1Cの行列を考察する。値の大きさにわたり大きい変動を有するエントリを有することは、ハイブリッドアナログ・デジタルプロセッサにおいて数表現に関して行われるように、アナログ信号をデジタル化する有限ダイナミックレンジによって生じる大きい課題を提起する。小さい大きさの値は、表現可能な最小非ゼロに丸められ、これは、下位ビットの情報が入力量子化雑音によって制限され得ることを意味する。下位ビットを読み出すための単なる信号の増幅は、雑音の多い結果を生じさせ得る。
【0101】
本発明者らは、前述の課題を克服する技術を開発した。本発明者らによって開発された技術は、システムのダイナミックレンジに合致するために、重み行列のエントリの正規化又は入力データセットのエントリの正規化を伴う。正規化は、異なる量だけ行列の異なる部分をスケーリングすることを伴い得る。正規化は、タイルベース、行ベース、タイル行ベース又は他の適切な様式で行われ得る。
【0102】
しかし、行列の異なる部分が異なる量だけスケーリングされる場合、異なる行列部分から計算された値がもはや直接累算されない場合があるという問題が生じる。この問題に対処するために、一部の実施形態では、逆スケーリングが行われる。バックスケーリングされると、異なる行列部分の結果が元のデータ範囲に戻り、したがって直接累算が可能となる。
【0103】
本発明者らは、高度な表現精度を提供しながら、多数のビットを有するデジタル値を表すことが電力消費の大幅な増加の原因となり得ることをさらに理解した。例えば、アナログ・デジタル変換器(ADC)を考察する。ADCの電力消費は、数あるファクタの中でも、それを用いて値が表されるビットの数に依存する。一部のADCに必要とされるエネルギーは、出力ビットの数と共に指数関数的に大きくなる。本質的に、表現精度と電力消費との間にトレードオフが存在する。
【0104】
従来のデジタルプロセッサは、浮動小数点、整数、固定小数点、変曲点などの2進数表現を利用する。特定の適用例に関して、より高い性能を達成するために、非線形仮数マップ(対数表現など)、2進確率論数及びエントロピー符号化(ポジット(posit)、ユナム(unum)及びテーパ付けられた浮動点など)を含む非標準2進数表現が開発された。幾つかの真の行列乗算に対して、丸め及びそのような表現を用いたオーバーフロー/アンダーフローにより、デジタルGEMMの結果が真の算術結果と一致しないことが生じ得る。IEEE754の「バイナリ64(binary64)」(「倍精度」又は「FP64」の別名でも知られる)などの浮動小数点(FP:floating-point)表現では、この精度の損失は、ほとんど無視できる。仮数部、指数部及び指数部バイアスの分割もIEEE754標準に対して修正され得る。例えば、16ビットブレイン浮動小数点又は「bfloat16」表現は、指数部に対して、IEEE標準「半」精度(FP16)が充てる5ビットではなく、8ビットを充てる。より高い性能を達成し、且つエネルギー効率を向上させるために、多くのアクセラレータは、16ビット浮動小数点(FP16)などの精度の劣る表現を用いて計算を行い、混合精度表現を使用し得る。例えば、エヌビディア(登録商標)(NVIDIA(登録商標))のボルタジェネレーションテンソルコア(Volta generation Tensor Core)は、4×4の行列A及びBを「半」精度(FP16)で、且つ行列Cを半又は「単」精度(FP32)で用いてGEMMを計算する。
【0105】
本発明者らは、低精度(例えば、16ビット以下、12ビット以下、10ビット以下)の固定小数点2進数表現が、チップ面積及び電力要件の観点から、浮動小数点2進数表現よりもはるかに要求が少ないことを理解した。さらに、全ての適用例は、数学的演算の結果がフル精度で表現されることを必要とするわけではない。例えば、深層学習適用例は、多くの場合、数値線形代数の他の適用例よりも大幅に低い精度を許容することができる。しかし、低精度表現の使用は、数を表現することができる精度を低下させる点で大きい課題を提起する。さらに悪いことに、ADCの精度の低下は、そのダイナミックレンジも低下させ得る。その結果、信号のフルダイナミックレンジを表現することと、より小さい出力値を正確に表現することとの間にトレードオフが存在する。信号をアナログからデジタル領域に変換する際、低精度ADCは、出力の最上位ビットを設定しようと試み得る。しかし、これは、ADCが最上位ビットをゼロに設定する結果となり得る(すなわち、ADCは、意味のある情報を有さない信号範囲を読み出そうと試みている)。この問題は、ニューラルネットワークモデルの計算の特性によってさらに悪化される(条件は、例えば、ネットワークのある層とネットワークの別の層とで経時的に変化する)。
【0106】
本発明者らは、深層学習適用例を含む様々な実際の適用例に十分な精度を提供する、低精度固定小数点2進数表現を用いて動作し、それによりチップ面積及び電力消費を制限するように設計されたアクセラレータアーキテクチャを開発した。これらのアクセラレータアーキテクチャは、動的に再構成することができ、したがってニューラルネットワークモデルの変動する動的条件を考慮する。本発明者らによって開発されたアクセラレータアーキテクチャは、ADCが読み出し可能な信号範囲又は「ウィンドウ」をシフトするように設計される。読み出しウィンドウをシフトすることにより、ADCが最大量の意味のある情報を有するか、又は少なくとも何らかの意味のある情報を有する可能性が高い信号の部分に変換を集中させることが可能となる。
【0107】
一部の実施形態では、このように読み出しウィンドウをシフトすることは、アナログスケーリングユニット(例えば、増幅器又は減衰器)の使用を伴い得る。アナログスケーリングユニットの利得を調節することにより、読み出しウィンドウがシフトされ、その結果としてより正確な読み出しが可能となる。例えば、8ビットのADCを考察した場合、利得を2に設定することにより、読み出しウィンドウは、最下位ビットに向けて1ビットシフトされ得、利得を1/2に設定することにより、読み出しウィンドウは、最上位ビットに向けて1ビットシフトされ得る。一部の実施形態では、読み出しウィンドウの位置は、動的に調節され、したがってアクセラレータが現在の問題のスケールに基づいてそれ自体を再構成することを可能にする。例えば、
図1-9Bに関連して詳細に記載されるように、層ごとに生じ得る出力データ分布の変化を考慮するために、ニューラルネットワークモデルの異なる層間で読み出しウィンドウの位置を動的に変化させることが望ましい場合がある。
II.行列タイリング
一部の実施形態では、行列演算は、複数のパスをハイブリッドアナログ・デジタルプロセッサに通すことによって行われ得る。各パスにおいて、プロセッサは、行列の1つのタイルに対して演算を行う。
図1-2Aは、一部の実施形態による、タイリング技術を実施するハイブリッドアナログ・デジタル行列プロセッサの一例を示すブロック図である。ハイブリッドアナログ・デジタル行列プロセッサ1-100(本明細書ではアクセラレータ1-100とも呼ばれる)は、デジタル・アナログ変換器(DAC)ユニット1-102、アナログプロセッサ1-104、アナログ・デジタル変換器(ADC)ユニット1-106、デジタルスケーリングユニット1-108、デジタル累算器1-110及びコントローラ1-120を含む。コントローラ1-120は、アクセラレータ1-100の動作を制御し得る。例えば、コントローラ1-120は、実行されると、アクセラレータに数学的演算を行わせるソフトウェア命令を含み得る。
図1-2Aのコンポーネント及び任意選択的に他のコンポーネントは、本明細書では、まとめて「回路」と呼ばれる。
図1-2Aのコンポーネントは、共通チップ上又は共に接着された異なるチップ上に形成され得る。
【0108】
以下にさらに詳細に記載されるように、アクセラレータ1-100は、アナログプロセッサ1-104を通る幾つかのパスを行うことによって数学的演算を行うように構成される。アナログプロセッサ1-104を通る各パスにおいて、アクセラレータ1-100は、アナログプロセッサ1-104を使用して部分結果を計算する。部分結果は、デジタル累算器1-110を使用して合計される。
【0109】
アナログプロセッサ1-104は、アナログコンポーネントを使用する多数の方法の何れかで実装され得る。アナログプロセッサ1-104は、一部の実施形態では、行列-ベクトル乗算又は行列-行列乗算などの線形演算を行うように構成される。したがって、プロセッサ1-104は、アナログ乗算又は他の数学的演算を行うように設計された複数のアナログコンポーネントを含み得る。
【0110】
DACユニット1-102は、複数のDACを含む。例えば、抵抗はしご型DAC、スイッチトキャパシタDAC、スイッチトレジスタDAC、2進重み付きDAC、温度計符号化DAC、逐次近似DAC、オーバーサンプリングDAC、補間DAC、ハイブリッドDACなどを含む任意の適切なタイプのDACが使用され得る。同様に、ADCユニット1-106は、複数のADCを含む。例えば、並列比較器ADC、フラッシュADC、逐次近似ADC、ウィルキンソン型ADC、積分ADC、シグマデルタADC、パイプライン型ADC、積分ADC、巡回ADC、時間インターリーブADCなどを含む任意の適切なタイプのADCが使用され得る。
【0111】
図1-2Bは、アクセラレータ1-100を使用して行われ得る行列-行列乗算の表現である。一部の実施形態では、行列Aは、重み行列を表し、行列Bは、アナログプロセッサに対する入力データに関して符号化された入力行列を表す。他の実施形態では、行列Aは、入力行列を表し、行列Bは、重み行列を表す。何れにしても、行列Cは、出力データを表す。行列Aのエントリ(本明細書では「パラメータ」とも呼ばれる)は、アクセラレータのメモリに保存され得、行列Bのエントリは、アクセラレータに対する入力として提供され得る。Cは、重み行列Aを入力行列Bに適用することによって計算される。より具体的には、行列Cは、行列Aと行列Bとを乗算することによって計算される。分かりやすくするために、行列Aは、4×4の行列として示され、行列Bは、4×3の行列として示され、行列Cは、4×3の行列として示される。当然のことながら、これらの行列は、任意の適切な数の行及び列を有し得る。一部の実施形態では、行列は、数百、数千、数万以上の行及び列を有し得る。一部の実施形態では、A及びBは、行列演算が同じサイズの行列の複数のインスタンスに対して行われるようなN次元テンソルであり得る。一部の実施形態では、Aの列数は、Bの行数に等しく、したがって行列が互いに乗算されることが可能となる。例えば、行列Aは、I個の行及びK個の列を有し得、行列Bは、K個の行及びJ個の列を有し得る。その結果、行列Cは、I個の行及びJ個の列を有する。この関係は、以下のように表現され得る。
【0112】
dim(A)=(I,K)及びdim(B)=(K,J)及びdim(C)=(I,J)
式中、演算子dim()は、行列に適用されると、行列の行及び列の数を返す。行列Aのエントリは、aikであり、i=1,2,...,I及びk=1,2,...,Kである。行列Bのエントリは、bkjであり、j=1,2,...,Jである。行列Cのエントリは、cijである。
【0113】
単一パスで行列Aの全体を行列Bの全体と乗算することは、特にI、K及びJが大きい場合、大型のアナログプロセッサを必要とする。大型のプロセッサを設計することは、それが、利用可能なチップ用地よりも多くのチップ用地を必要とすることがあり、大きい電力損失をもたらすことがあるため、非実用的な場合がある。一部の実施形態では、比較的小型のアナログプロセッサを使用して
図1-2Bの演算を行うことがより実用的である場合がある。これらの実施形態では、行列を全体として直接乗算する代わりに、乗算は、タイルによって分解され得る。例えば、
図1-2Cの描写では、行列Aは、A1、A2、A3及びA4の4つのタイルにセグメント化されている。この具体例では、N=2であり、Aの各タイルは、2つの行と2つの列を有する(ただし、N≦I、N≦J及びN≦Kである限り、Nの他の値も可能である)。行列Bは、タイル行B1及びB2にセグメント化され、行列Cは、タイル行C1及びC2にセグメント化される。行列Cのタイル行は、以下の式によって与えられる。
【0114】
C1=A1×B1+A2×B2
C2=A3×B1+A4×B2
乗算A1×B1は、アナログプロセッサを通る第1のパスによって行うことができ、乗算A2×B2は、アナログプロセッサを通る第2のパスによって行うことができ、その後、これらの結果は、C1を得るために、互いに累算され得る。同様に、乗算A3×B1は、アナログプロセッサを通る第3のパスによって行うことができ、乗算A4×B2は、アナログプロセッサを通る第4のパスによって行うことができ、その後、これらの結果は、C2を得るために互いに累算され得る。
【0115】
図1-3は、一部の実施形態による、数学的演算を行う方法の一例を示すフローチャートである。方法1-300は、アクセラレータ1-100(
図1-2A)を使用して行われ得る(ただし、他の適切なアクセラレータが使用され得る)。方法1-300のステップは、
図1-3に示される順序又は他の適切な順序で行われ得ることを理解されたい。具体的には、演算の順序は、空間的及び/又は時間的局所性を活用するように選択され得る。方法1-300は、複数回ループし、各ループは、アナログプロセッサを通るパスに対応する。
図1-2Aは、p番目の反復を示し、p=1,2...Pである。
【0116】
ステップ1-301では、コントローラ1-120は、現在のパスに関する1つ又は複数のスケーリングファクタを決定する。
図1-1Cに関連して前述したように、一部の実施形態では、行列は、そのエントリにわたって大きい変動を示し得るため、アナログプロセッサのダイナミックレンジに合致するように、行列A又は行列Bのエントリを正規化することが望ましい場合がある。ステップ1-301の決定は、ADCユニットのダイナミックレンジに合致するように入力データセットをスケーリングする1つ又は複数のスケーリングファクタの値を決定することを伴い得る。この決定は、多数の方法の何れかで行われ得る。一部の実施形態では、この決定は、行列Aのパラメータに基づいて行われ得る。一部の実施形態では、この決定は、行列Aの現在のタイル又は他のタイルのパラメータに基づいて行われ得る。この場合、類似のダイナミックレンジを有するエントリが同じタイルに入るように行列Aを並べ替えることが有益な場合がある。これは、行列Bにも当てはまり得る。一部の実施形態では、行列Aのタイルの次元は、それによって行列をスケーリングすることを望む粒度の度合いに応じて選択され得る。例えば、行列がその値にわたって著しい変動を示すことが予期される場合、タイルの次元は、小さくなるように選択され得、したがって細かい分解能が提供される。その欠点は、より多くのパスが必要とされることである。対照的に、行列Bがその値にわたって比較的ゆったりとした変動を示すことが予期される場合、タイルの次元は、より大きくなるように選択され得、したがってパスの数が制限される。
【0117】
スケーリングファクタは、任意の適切な方法で決定され得る。一例では、スケーリングファクタは、現在のタイルのエントリの平均値に設定される。別の例では、スケーリングファクタは、現在のタイルのエントリの最高値に設定される。さらに別の例では、スケーリングファクタは、現在のタイルのエントリの最低値に設定される。さらに別の例では、スケーリングファクタは、現在のタイルの行の最大絶対値に設定され得る。
【0118】
一部の実施形態では、行列Aは、行列の積に因数分解又は分解され得る。これらの行列のエントリは、行列をまとめること(例えば、乗算すること)により、元の行列Aが生じるようなものであり得る。行列Aに適用され得る行列分解の例には、特異値分解(SVD)、LU分解、伸張(例えば、ユニタリ伸張)、ランク分解、コレスキー分解、QR分解、補間分解、スペクトル分解、極分解などが含まれる。一部の実施形態では、スケーリングファクタは、行列Aの分解によって生じた行列の1つのパラメータに基づいて決定される。
【0119】
一例では、行列Aは、SVDに基づいて分解され、スケーリングファクタは、行列Aの特異値の1つ又は複数に基づいて決定される。例えば、スケーリングファクタは、現在のタイルの特異値の絶対値の中で最高などの現在のタイルの最高特異値に設定され得る。一部の実施形態では、
i=1,2,...,Nであるようなtp=max{|σi|}及びΣp=diag[σi]
であり、式中、tpは、タイルpのスケーリングファクタを表し、Σpは、タイルpに関連する対角行列を表し、σiは、行列Σpの対角値(すなわちAのp番目のタイルの特異値)を表す。量|σi|は、σiの絶対値を示す。さらに別の例では、スケーリングファクタは、現在のタイルの特異値の平均に設定される。さらに別の例では、スケーリングファクタは、現在のタイルの特異値の最低値に設定される。
【0120】
行列Aは、スケーリングファクタを決定する目的で、必ずしもタイルによってセグメント化される必要はない。一部の実施形態では、スケーリングファクタは、行列Aの1つのタイルの1つの行(タイル行)に基づいて、行列Aの複数のタイルに基づいて、行列Aの1つの行に基づいて、行列Aの1つ若しくは複数の列に基づいて又は行列Aの他の適切な部分に基づいて決定され得る。一部の実施形態では、スケーリングファクタは、行列Aの2つ以上のタイルに対して同じ値に設定され得る。
【0121】
ステップ1-302では、コントローラ1-120は、ステップ1-301で決定された1つ又は複数のスケーリングファクタに基づいて行列Aのパラメータの少なくとも幾つかをスケーリングする。一部の実施形態では、コントローラ1-120は、スケーリングファクタに基づいて行列Aの現在のタイルのパラメータ(又はパラメータの少なくとも幾つか)をスケーリングする。例えば、コントローラ1-120は、第1のスケーリングファクタに基づいてパラメータの第1のサブセット(例えば、行列Aの1つ若しくは複数の行及び/又は行列の1つ若しくは複数の列)をスケーリングすることができ、第2のスケーリングファクタに基づいてパラメータの第2のサブセットをスケーリングすることができる。
図1-4Aの例では、タイルのパラメータは、その特定のタイルに関して決定されたスケーリングファクタに基づいてスケーリングされる。スケーリングファクタt1は、タイルA1に関して決定されたスケーリングファクタを示し、スケーリングファクタt2は、タイルA2に関して決定されたスケーリングファクタを示し、スケーリングファクタt3は、タイルA3に関して決定されたスケーリングファクタを示し、スケーリングファクタt4は、タイルA4に関して決定されたスケーリングファクタを示す。この例では、タイルA1のエントリがt1で除算され、タイルA2のエントリがt2で除算され、タイルA3のエントリがt3で除算され、タイルA4のエントリがt4で除算される(ただし、乗算を含む、除算以外の演算も可能である)。
【0122】
図1-4Bの例では、行列Aのタイル行のパラメータは、その特定のタイル行に関して決定された1つ又は複数のスケーリングファクタに基づいてスケーリングされる。スケーリングファクタtr1は、タイルA1及びA2に関して決定されたスケーリングファクタを示し、スケーリングファクタtr2は、タイルA3及びA4に関して決定されたスケーリングファクタを示す。この例では、タイルA1及びA2からなるタイル行のエントリは、tr1で除算され、タイルA3及びA4からなるタイル行のエントリは、tr2で除算される。
【0123】
一部の実施形態では、行列Aのパラメータをスケーリングする代わりに、コントローラ1-120は、行列B(入力データセット)のエントリをスケーリングし得る。エントリは、デジタル領域又は(DACユニット1-102を通過した後に)アナログ領域でスケーリングされ得る。アナログ領域で行われる際、スケーリングは、スケーリングファクタに基づいて入力アナログ信号を減衰又は増幅させることを伴い得る。
【0124】
図1-4Cの例では、行列Bのタイル行のパラメータは、行列Aの対応するタイルに関して決定された1つ又は複数のスケーリングファクタに基づいてスケーリングされる。ここでは、スケーリングファクタt1は、タイルA1に関して決定されたスケーリングファクタを示し、スケーリングファクタt2は、タイルA2に関して決定されたスケーリングファクタを示す。この例では、タイル行B1のエントリは、t1で除算され、タイル行B2のエントリは、t2で除算される。
【0125】
ステップ1-304では、コントローラ1-120は、行列Aの現在のタイルのパラメータに基づいてアナログプロセッサ1-104をプログラムする。行列Aのパラメータがステップ1-302でスケーリングされた実施形態の少なくとも幾つかにおいて、コントローラ1-120は、行列Aの現在のタイルのスケーリングされたパラメータに基づいてアナログプロセッサ1-104をプログラムする。例えば、
図1-2Aを再び参照すると、コントローラ1-120は、a11/t1、a12/t1、a21/t1及びa22/t1に基づいてアナログプロセッサ1-104をプログラムする。アナログプロセッサをプログラムすることは、パラメータに基づいてアナログプロセッサの特定の特性を設定することを伴い得る。一例では、アナログプロセッサ1-104は、複数の電子増幅器(例えば、とりわけ、電圧増幅器、電流増幅器、電力増幅器、トランスインピーダンス増幅器、相互コンダクタンス増幅器、演算増幅器又はトランジスタ増幅器)を含み、アナログプロセッサをプログラムすることは、タイルA1のパラメータに基づいて電子増幅器の利得を設定することを伴う。別の例では、アナログプロセッサ1-104は、複数の電子減衰器(例えば、とりわけ、電圧減衰器、電流減衰器又は電力減衰器)を含み、アナログプロセッサをプログラムすることは、タイルA1のパラメータに基づいて電子減衰器の減衰を設定することを伴う。さらに別の例では、アナログプロセッサ1-104は、複数の電子移相器を含み、アナログプロセッサをプログラムすることは、タイルA1のパラメータに基づいて電子移相器の位相シフトを設定することを伴う。別の例では、アナログプロセッサは、一般的にクロスバー形状にレイアウトされる、フラッシュ又はReRAMなどのメモリデバイスのアレイを含む。アナログプロセッサをプログラムすることは、メモリセルのそれぞれのコンダクタンス(又は抵抗)を設定することを伴う。
【0126】
以下にさらに詳細に記載されるように、一部の実施形態では、アナログプロセッサ1-104は、フォトニックプロセッサを用いて実装される。幾つかのそのような実施形態では、アナログプロセッサ1-104は、複数の光増幅器(例えば、とりわけ、半導体光増幅器若しくは他の固体増幅器、エルビウムドープト光増幅器などのレアアースドープト光増幅器、ラマン増幅器又は光パラメトリック増幅器)を含み、アナログプロセッサをプログラムすることは、タイルA1のパラメータに基づいて光増幅器の利得を設定することを伴う。別の例では、アナログプロセッサ1-104は、複数の光減衰器(例えば、とりわけ、マッハツェンダー干渉計、漏洩導波路、ループバック減衰器、液晶減衰器、可飽和吸収体又はフランツ・ケルディッシュ吸収体、金属酸化膜半導体キャパシタ変調器、キャリア空乏電気光学変調器)を含み、アナログプロセッサをプログラムすることは、タイルA1のパラメータに基づいて光減衰器の減衰を設定することを伴う。さらに別の例では、アナログプロセッサ1-104は、複数の光移相器(例えば、とりわけ、熱光学移相器、音響光学移相器、電気光学移相器、プラズマ分散効果移相器、ポッケルス効果移相器、ナノ光電気機械移相器又は非線形位相変調器)を含み、アナログプロセッサをプログラムすることは、タイルA1のパラメータに基づいて光移相器の位相シフトを設定することを伴う。さらに別の例では、アナログプロセッサ1-104は、複数の光共振器(例えば、とりわけ、リング共振器及びディスク共振器、フォトニック結晶、リッジ共振器)を含み、アナログプロセッサをプログラムすることは、タイルA1のパラメータに基づいて光共振器の共振周波数を設定することを伴う。
【0127】
ステップ1-306では、アクセラレータ1-100は、入力データセットを受け取る。例えば、
図1-2Cを再び参照すると、アクセラレータは、1つのパスでタイル行B1のエントリを受け取り、別のパスでタイル行B2のエントリを受け取り得る。一部の実施形態では、コントローラ1-120は、行列Bのエントリを同時に受け取り、保存するが、一度に(例えば、パスごとに)1つのタイル行をDACユニット1-102に提供する。エントリは、実数を表し得る。一部の実施形態では、エントリは、正の実数又は符号付き実数(正及び負の実数)を表し得る。
【0128】
ステップ1-308では、アクセラレータ1-100は、ステップ1-302で受け取った入力データセットに基づいて複数の入力アナログ信号を生成する。
図1-2Aを再び参照すると、ステップ1-304の生成は、DACユニット1-102を使用して入力データセットをアナログ信号に変換することを伴う。
【0129】
ステップ1-310では、アナログプロセッサ1-104は、複数の入力アナログ信号及びそれを用いてステップ1-301でアナログプロセッサがプログラムされたパラメータのセットに基づいて複数の出力アナログ信号を生成する。これは、一部の実施形態では、行列乗算を行うことを伴い得る。その結果、複数の入力アナログ信号が現在のタイルの各パラメータによって乗算される。p番目のパスに関して、結果は、以下の式である。
【0130】
【数1】
式中、A
pは、行列Aのp番目のタイルであり、B
pは、行列Bのp番目のタイル行であり、t
pは、p番目のスケーリングファクタである。他の実施形態では、複数の出力アナログ信号を生成することは、複数の入力アナログ信号及びパラメータのセットに基づく畳み込みを伴う。
【0131】
アナログプロセッサ1-104は、行列乗算又は畳み込みを行うように設計された、任意の適切なアナログコンポーネントを含み得る。一例として、アナログプロセッサ1-104は、アナログ混合器を含み得る。各混合器は、入力アナログ信号を、行列Aの対応するパラメータに基づいて符号化(例えば、変調)されたアナログ信号と混合する。別の例として、アナログプロセッサ1-104は、振幅変調器を含み得る。別の例として、アナログプロセッサ1-104は、電流ステアリング回路を含み得る。各変調器は、行列Aの対応するパラメータに基づいて得られる量によって入力アナログ信号を変調する。別の例として、アナログプロセッサ1-104は、増幅器を含み得る。各増幅器は、行列Aの対応するパラメータに基づいて得られる利得によって入力アナログ信号を増幅させる。別の例として、アナログプロセッサ1-104は、減衰器を含み得る。各減衰器は、行列Aの対応するパラメータに基づいて得られる減衰によって入力アナログ信号を減衰させる。アナログプロセッサ1-104は、例えば、相補型金属酸化膜半導体(CMOS:complementary metal-oxide-semiconductor)コンポーネント、無線周波数(RF:radio-frequency)コンポーネント及びマイクロ波コンポーネントを使用することを含む(ただし、他の技術が使用され得る)、任意の適切な技術を使用して実装され得る。一部の実施形態では、アナログプロセッサ1-104は、フォトニックプロセッサを含み、乗算は、光学領域で行われる。一部の実施形態では、アナログプロセッサ1-04は、フォトニック及びアナログ電子コンポーネントの組み合わせを含み、一部の乗算は、光学領域で行われ得、他の乗算又は加算は、電子領域で行われる。フォトニックプロセッサの例は、以下にさらに詳細に記載される。
【0132】
一部の実施形態では、入力アナログ信号及びスケーリングされたパラメータのセットに基づいて演算(例えば、行列乗算又は畳み込み)を行う代わりに、ステップ1-310は、スケーリングされた入力アナログ信号及びスケーリングされていないパラメータ(例えば、
図1-4C及び
図1-4Dに関連して説明したような)に基づいて演算を行うことを伴い得る。何れにしても、結果は、
である。一部の実施形態では、行列Bのスケーリングは、列タイルに基づいて行われ得る。すなわち、行列Bの異なる列タイルは、異なるファクタによってスケーリングされる。
【0133】
一部の実施形態では、アナログ乗算は、行列分解を伴い得る。これらの行列のエントリは、行列をまとめること(例えば、乗算すること)により、元の行列Aが生じるようなものであり得る。幾つかのそのような実施形態では、アナログプロセッサ1-104は、行列Aが分解されて得られた行列のそれぞれに基づいて入力データセットに変換を行うように設計され得る。行列分解の特定の例は、上記に提供される。このような例の1つは、SVDである。
図1-5Aに示されるように、コントローラ1-120は、3つの成分行列によって表されるように行列Aを分解し得る:A=UΣV
†、式中、U及びVは、それぞれユニタリI×I及びK×K行列であり(U
†U=UU
†=I及びV
†V=VV
†=I)、Σは、実数値又は複素数値のエントリを有するI×Kの対角行列である。一部の実施形態では、対角特異値の値も、特異値の最大絶対値が1であるようにさらに正規化され得る。値σ
1、σ
2...σ
Kは、特異値を表す。アナログプロセッサ1-104は、行列U、Σ及びVのそれぞれに従って入力アナログ信号を変換するように設計されたアナログハードウェアを含み得る。
【0134】
図1-3を再び参照すると、ステップ1-312において、アクセラレータ1-100は、ステップ1-310で得られた複数の出力アナログ信号に基づいて部分出力データセットを生成する。一部の実施形態では、ステップ1-312の生成は、出力アナログ信号をADCユニット1-106に通すことを伴う。
【0135】
ステップ1-314において、アクセラレータ1-100は、スケーリングファクタに基づいて部分出力データセットをスケーリングして、スケーリングされた部分出力データセットを生成する。ステップ1-314のスケーリングは、部分出力データセットをデジタルスケーリングユニット1-108に通すことを伴い得る。一部の実施形態では、デジタルスケーリングユニット1-108は、ステップ1-308で行われた演算の逆を適用するように構成され得る。例えば、ステップ1-308が除算を伴う実施形態の少なくとも幾つかにおいて、ステップ1-314は、乗算を伴い得る。同様に、ステップ1-308が乗算を伴う実施形態の少なくとも幾つかにおいて、ステップ1-314は、除算を伴い得る。これにより、出力行列のエントリが元の範囲に戻される。
【0136】
一部の実施形態では、ステップ1-314のスケーリングは、ステップ1-302のスケーリングに使用されたスケーリングファクタと同じスケーリングファクタに基づき得る(ただし、それは、逆演算を用いて適用され得る)。したがって、ステップ1-302のスケーリングがtpによる除算を伴う場合、ステップ1-314のスケーリングは、tpによる乗算を伴う。他の実施形態では、ステップ1-314のスケーリングは、追加のファクタを伴い得る。例えば、ステップ1-308のスケーリングがtpによる除算を伴う場合、ステップ1-314のスケーリングは、tp/rによる乗算を伴い得る(ファクタrは、全てのスケーリングファクタtpに基づいて計算され得る)。一例では、ファクタrは、以下のように計算される。
【0137】
r=f({tp:p=1,2,...,K//N)
式中、関数f(・)は、max(・)、min(・)又はmean(・)などの任意の適切な関数を表し得る。ファクタtp/rによるスケーリングは、スケーリングファクタのデータ範囲を統一する効果を有する。
【0138】
ステップ1-316では、ステップ1-314で生成されたスケーリングされた部分出力データセットが累算される。各パスにおいて、累算は、現在のパスによって生成されたスケーリングされた部分出力データセットを前の累算の結果と合計することを伴い得る。したがって、各パスは、現在の結果を累算結果に加算する。ステップ1-320の累算は、デジタル累算器1-110を用いて行われ得る。一部の実施形態による累算器1-110の一例は、
図1-5Bに示される。この例では、累算器1-110は、メモリユニット1-520及びデジタル加算器1-522を含む。メモリユニット1-520は、前の累算の結果を保存する。デジタル加算器1-522は、現在のパスによって生成されたスケーリングされた部分出力データセットを累算結果に加算する。
【0139】
一部の実施形態では、各パスにおいて累算ステップを行う代わりに、部分結果は、メモリに一時的に保存され得、単一の累算がパスの完了後に行われ得る。何れにしても、プロセス1-100は、複数のパスの少なくとも2つによって生成されたスケーリングされた部分出力データセットが累算される、少なくとも1つの累算ステップを伴い得る。
【0140】
ステップ1-318では、アクセラレータ1-100は、さらなるパスが行われるべきか否かを決定する。これは、例えば、未処理の、行列Aのさらなるタイルが存在するか否かを決定することを伴い得る。すなわち、一部の実施形態では、方法1-300は、行列Aのタイル数に等しいサイクル数にわたって反復される。
【0141】
アクセラレータ1-100が、さらなる反復が必要であることを決定すると、方法1-300は、アクセラレータを通る別のパスを行う。次のパスにおいて、行列Aの別のタイルが処理される。対照的に、アクセラレータ1-100が、さらなる反復が必要ではないことを決定すると、方法1-300は、終了する。
III.部分積
一部の実施形態では、アナログプロセッサは、行列-ベクトル積
を行い、式中、
は、入力ベクトルであり、Aは、n×n行列であり、
は、出力ベクトルである。添字表記法では、この乗算は、
([0,N-1]における全てのiに関する)と記述され、これは、A
ij(jにわたり反復する)のn個の要素と、b
j(jにわたり反復する)のn個の要素との乗算後のこれらの乗算結果の総和である。一部の実施形態では、要素A
ij及びb
jは、符号なし固定小数点数表現(例えば、INT8)を用いて表され得る。この表現内において、
がm
1ビット数であり、
がm
2ビット数である場合、m
1+m
2+log
2(n)ビットの合計は、結果として生じるベクトル要素c
iをフルに表すために使用される。一般に、精度を失うことなく、行列-ベクトル積の結果を表すために必要とされるビット数は、演算の入力を表すために必要とされるビット数よりも大きい。ADCユニット1-106がフル精度で出力ベクトルを読み出すことができない場合、出力ベクトル要素は、ADCの精度に丸められ得る。
【0142】
本発明者らは、アナログ信号の形の入力ベクトルがアナログプロセッサ1-104を通して送られる速度に対応する帯域幅で、高ビット精度を有するADCを構築することが達成困難であり得ることを認識及び理解した。したがって、一部の実施形態では、DAC1-102のビット精度は、行列要素Aij及びベクトル要素bjが表されるビット精度を制限し得る。したがって、本発明者らは、部分積及び部分和を計算することにより、出力ベクトルをフル精度(これは、任意に高くなり得る)で取得する方法を考案した。分かりやすくするために、Aij又はbjを表すために必要とされるビット数が同じである(すなわちm1=m2=m)と仮定する。しかし、この仮定は、外すことができ、本開示の実施形態の範囲を限定するものではない。
【0143】
本方法は、一部の実施形態によれば、第1の行為として、行列要素A
ij及びベクトル要素b
jのビットストリング表現を、各区分がk=m/dビットを含むようにd個の区分に分割することを含む(kが整数でない場合、mがdで割り切れるまでゼロが付加され得る。)その結果、行列要素A
ij=A
ij
[0]2
k(d-1)+A
ij
[1]2
k(d-2)+...+A
ij
[d-1]2
0であり、式中、A
ij
[f]は、A
ijのf番目の最上位kビットストリングのkビット値である。ビットストリングの観点から、A
ij=A
ij
[0]A
ij
[1]...A
ij
[d-1]と記述することができる。同様に、b
j=b
j
[0]2
k(d-1)+b
j
[1]2
k(d-2)+...+b
j
[d-1]2
0も取得することができ、この場合、ビットストリングの観点から、ベクトル要素b
j=b
j
[0]b
j
[1]...b
j
[d-1]である。乗算c
i=Σ
jA
ijb
jは、これらの区分の観点から、
として分解することができ、式中、セットS
pは、f及びgの全ての整数値のセットであり、f+g=pである。
【0144】
本方法は、第2の行為として、アナログプロセッサ1-104を制御して、行列Aij
[f]を実施することと、符号化アナログ信号の形態において、アナログプロセッサ1-104を通して入力ベクトルbj
[g](各入力ベクトルは、kビットのみ正確である)を伝搬させることとを含む。上記のタイリング手法の何れかを使用して、行列-ベクトル積演算は、ci
[f,g]=ΣjAij
[f]bj
[g]を行う。本方法は、2k+log2(n)ビットまで正確な出力ベクトルci
[f,g]を保存することを含む。
【0145】
本方法は、セットSp内のf,gの異なる値に対して反復することと、f,gの異なる値のそれぞれに関して第2の行為を繰り返すことと、中間結果ci
[f,g]を保存することとをさらに含む。
【0146】
第3の行為として、本方法は、プロセッサなどのデジタル電子機器を用いて、f及びgの上記異なる反復を合計することにより、最終結果
を計算することを含む。
【0147】
本方法の幾つかの実施形態による、フル精度計算を得るために使用されるADCの精度は、2k+log2(n)ビットのみであり、これは、他の場合に必要とされる精度の2m+log2(n)ビットよりも少ない。
【0148】
本発明者らは、上述の方法の実施形態が、テンソルに対して機能するように一般化され得ることをさらに認識及び理解した。前述の通り、ハイブリッドアナログ・デジタル処理システムは、タイルを用いて行列-行列乗算を行うことができる。上記の方法は、出力データセットタイル行をフル精度で取得するために、行列タイル及び入力データセットタイル行に適用することができる。
【0149】
以下にさらに詳細に記載するように、アナログプロセッサがフォトニックプロセッサを含む実施形態の幾つかにおいて、行列は、光学可変ビームスプリッタ(VBS)の位相の観点から表現され得る。幾つかのこのような実施形態では、分割は、行列要素に直接ではなく、位相を表すビットストリングに対して行われ得る。一部の実施形態では、行列要素に対する位相間のマップが線形マップである場合、入力パラメータ(この場合、VBSの位相及び入力ベクトル要素)と出力ベクトルとの関係は、線形であり得る。この関係が線形である場合、上記の方法は、依然として適用可能である。しかし、一般に、一部の実施形態によれば、行列の基本表現からフォトニック表現への非線形マップが考えられ得る。例えば、最上位kビットストリングから最下位kビットストリングまでのユークリッド空間行列要素のビットストリング分割は、位相表現に分解され、フォトニックプロセッサを使用して実施される一連の異なる行列を生じさせるために使用され得る。分割は、重み行列エントリ及び入力データセットエントリの両方に同時に行われる必要はない。一部の実施形態では、フォトニックプロセッサは、同じ行列に関して多数の入力データセットを伝搬し得る。ベクトル準備のためのデジタル・アナログ変換器(DAC)が高帯域幅で動作し得る一方、VBSのためのDACが複数のベクトルに関して準静的であり得るため、入力データセットに対してのみ分割を行い、VBS制御を設定された精度(例えば、フル精度)に維持することが効率的となり得る。一般に、より高い帯域幅で高ビット精度を有するDACを含むことは、より低い帯域幅で高ビット精度を有するDACを設計することよりも難しい。したがって、一部の実施形態では、出力ベクトル要素は、ADCによって許可される精度よりも正確な場合があるが、ADCは、ADCによって許可されるビット精度に至るまで出力ベクトル値の丸みを自動的に行う。
IV.アナログ利得
本発明者らは、低精度(16ビット以下、12ビット以下、10ビット以下)の固定小数点2進数表現が、チップ面積及び電力要件の観点から、高精度浮動小数点2進数表現よりもはるかに要求が少ないことを理解した。しかし、現代のプロセッサで従来使用される高精度浮動小数点表現(例えば、FP32)と比較して、低精度固定小数点表現は、大幅に低い表現精度を生じさせる。さらに、精度を下げることは、ADCのダイナミックレンジを減少させ得る。これは、データベクトルのフルダイナミックレンジを表現することと、より小さい出力値を正確に表現することとの間にトレードオフをもたらす。本明細書に記載されるのは、低精度ADCを有するハイブリッドアナログ・デジタルプロセッサを使用して行列乗算を行う技術である。より具体的には、一部の実施形態による幾つかのアクセラレータアーキテクチャは、ADCの読み出しウィンドウをシフトする技術を用いる。読み出しウィンドウをシフトすることにより、ADCが最大量の意味のある情報を有するか、又は少なくとも何らかの意味のある情報を有する可能性が高い信号の部分に変換を集中させることが可能となる。これらの技術を活用することにより、一部のアクセラレータアーキテクチャは、低精度固定小数点2進数表現を用いて動作し、その結果、従来の高精度浮動小数点表現と比較して電力消費を大幅に減少させるように設計される。
【0150】
図1-6Aは、そのような技術の1つを示すプロットである。このプロットは、ADCへの入力(曲線のラベルが付けられた「入力分布」を参照されたい)として提示され得る信号分布の一例を示す。(この例では、分布は、電圧の関数として表現されるが、分布を他の量の関数として表現することも可能である。)入力分布は、処理される必要があるデータに依存し、データによって著しく変動し得る。(「ダイナミックレンジ」とラベルが付けられた)ADCのダイナミックレンジは、ADCが読み出すことができる最大の大きさ範囲を示す。ダイナミックレンジの一端には、ADCが読み出すことができる最小信号(例えば、電圧)がある。ダイナミックレンジの反対側の端には、ADCが読み出すことができる最大信号がある。この特定の例では、入力分布は、ADCのダイナミックレンジの一部にのみわたり延在する。しかし、他の状況では、入力データは、信号が主にダイナミックレンジの外で延在するようなものであり得る。
【0151】
本明細書に記載される技術は、より厳密にADCのダイナミックレンジに合致するような入力分布の調節を可能にする。一部の実施形態では、これは、ADCに入力として提供される前にアナログ信号をスケーリングする(例えば、増幅又は減衰させる)ことによって達成され得る。一部の実施形態では、アナログ信号は、信号分布がダイナミックレンジの一端からダイナミックレンジの他端まで延在するようにスケーリングされ得る。一部の実施形態では、
図1-6Aに示されるように、アナログ信号は、分布のテールのごく一部がダイナミックレンジの外側にあるようにスケーリングされ得る。
図1-6Aの例では、テールの一部がダイナミックレンジの外側にある状態で、ダイナミックレンジ全体にわたって入力分布を引き延ばす増幅が適用される(結果として生じる分布は、「増幅分布」とラベルが付けられている)。ダイナミックレンジ内に存在しないこれらの入力は、ADC範囲の最小値及び最大値に切り取られ得る。
図1-6Aでは、これは、ADC範囲の終点において「増幅分布」の垂直スパイクによって示される。本発明者らは、
図1-6Aに示されるように、分布の一部を切り取ることが情報の喪失をもたらし得るが、失われた情報がダイナミックレンジ内の情報ほど意味を有さない場合があることを認識した。
【0152】
この概念は、
図1-6Bに示される。例えば、整数(又は固定小数点)演算を用いた行列-ベクトル乗算
(式中、Aは、n×n行列である)を考察する。Aのエントリは、m
1ビットで表された符号なし数値であり、bのエントリは、m
2ビットで表された符号なし数値である。出力ベクトルcのエントリのフル精度表現は、b
cビットを必要とし、b
c=log
2(n)+m
1+m
2(ビットストリング1を参照されたい)である。しかし、このような計算の出力が、b
adc<b
cビットを有するADCを用いて読み出される場合、cのフルダイナミックレンジを表現することと、より小さい出力値をより正確に表現することとの間にトレードオフが存在する。例として、n=16、m
1=2及びm
2=4であると考えると、フル精度は、b
c=10である。図にさらに示されるように、cのフルダイナミックレンジを読み出すように構成された4ビットADCは、出力の最上位4ビットを読み出す(ビットストリング2を参照されたい)。値の幾つかの分布に関して、この範囲に有用な情報が存在し得る。しかし、一般に、最上位ビットが設定されない確率が高い。その結果、変換は、意味のある情報を生じさせない。
【0153】
一部の実施形態では、ADC読み出しウィンドウは、信号を増幅させることによってシフトされ得る。ビットストリング3は、4に等しい利得を用いて信号を増幅させることによって得られ、これは、読み出しウィンドウを最下位ビットに向けて2ビットシフトさせる。その結果、有用な情報がウィンドウ内に出現し始める。結果として生じる4ビット出力は、フル精度を有する出力の意味のある情報の大部分を捕捉する。ビットストリング4は、64に等しい利得(この場合、これは、図らずもADCを飽和させる)を用いて信号を増幅させることによって得られ、これは、読み出しウィンドウを最下位ビットに向けて3ビットさらにシフトさせる。飽和した結果は、真の値がこれらの最低ビットのスケールで表現可能であり、したがってこのデータスケールでこの入力ビットストリングの最も正確な表現である最大データ値よりも大きいことを示す。
【0154】
本発明者らは、下位ビットの有用な情報が入力量子化雑音によって制限され得るという事実を理解した。(0~1の値を有する)正規化行列Aをプログラムするアナログデバイスがm1ビットまで正確であり、2-(m1+1)のレベルの符号化雑音を有し、(0~1の値を有する)bの正規化エントリをプログラムするアナログデバイスがm2ビットまで正確であり、2-(m2+1)のレベルの符号化雑音を有する例を考察する。n=16、m1=2及びm2=4の場合、フル精度は、bc=10である。しかし、Aの最大値(全ての値が1に等しい)がプログラムされるケースを考察すると、(log2n+m2+1)番目のビットに雑音が多い場合がある。同様に、bの最大値(全ての値が1に等しい)がプログラムされる場合、(log2n+m1+1)番目のビットに雑音が多い場合がある。このビット及びより下位のビットを読み出すために信号を増幅させることにより、雑音が多い結果が生じ得る。しかし、複数の測定を行い、平均値を求めることにより、これらの雑音が多いビットの値を正常な状態に戻すことが可能な場合がある。この符号化量子化雑音は、基本的に、雑音の多いビットに遭遇する前にどの程度増幅を信号に適用することができるかに制限を与える。一部の実施形態では、符号化量子化雑音は、唯一の雑音源ではない。TIA及び光受信器(フォトニックプロセッサの場合)のノイズフロアは、雑音の多いビットが読み出される前の増幅の量を限定し得る。
【0155】
一般に、意味のある情報の収集を最大化するためにどの程度の利得が必要とされるかを予測することは、難しい場合がある。一部の実施形態では、利得は、重み行列(例えば、行列A)の統計値に基づいて決定され得る。この決定は、一部の実施形態では、入力ベクトルデータ(行列B)の既知の統計値又は入力ベクトルデータの統計値の範囲にさらに基づき得る。一例では、利得は、訓練プロシージャの一部として決定され得る。すなわち、利得は、学習され得るパラメータである。他の実施形態では、利得パラメータは、機械学習技術を用いることなく学習され得る。例えば、訓練データにとって特定の利得レベルが十分に正確なものであるか否かを決定することができ、そうでない場合、そのようになるまで調整され得る。さらに、例えばアナログプロセッサにおいて計算を評価する際に必要とされるエネルギー量を減らすために、又はアナログプロセッサが、増幅器の利得帯域幅積を保全しながら、より高い帯域幅で動作することを可能にするために、全体的な訓練損失関数に正則化損失項を加えることにより、より低い値に向けて訓練プロシージャ中に利得を正則化することが望ましい場合がある。
【0156】
一部の実施形態では、利得設定は、ニューラルネットワークの層ごとに異なり得る。幾つかのこのような実施形態では、各層の利得設定を学習することが望ましい場合があり、利得は、ある層から次の層に遷移する際に変化し得る。一部の実施形態では、アクセラレータが新しいデータを受け取る際、コントローラは、新しいデータを訓練する際に使用された値に利得を設定し得る。
【0157】
一部の実施形態による、上記の技術に基づくアクセラレータの一例が
図1-7Aに示される。アクセラレータ1-100に類似して、アクセラレータ1-700は、DACユニット1-102、アナログプロセッサ1-104及びADCユニット1-106を含む。アクセラレータ1-700は、DACユニット1-102とアナログプロセッサ1-104との間に配置されるアナログスケーリングユニット1-103及びアナログプロセッサ1-104とADCユニット1-106との間に配置されるアナログスケーリングユニット1-105をさらに含む。
図1-7Aのコンポーネント及び任意選択的に他のコンポーネントは、本明細書では、まとめて「回路」と呼ばれる。
【0158】
アクセラレータ1-100と異なり、アクセラレータ1-700は、単一パスで数学的演算を行うように構成される。したがって、デジタル累算器1-110が省かれる。しかし、上記でさらに詳細に記載したように、低精度固定小数点表現の精度を向上させる技術は、複数のパスを行うように配置された複数のアクセラレータを用いて使用され得る。具体的には、複数のパスは、異なるレベルの精度の入力データ及びアナログプロセッサで符号化された値間で行われ得る。
【0159】
図1-6Aに関連して記載したスケーリングは、DACユニットからADCユニットへのデータ経路に沿った何れの箇所でも行われ得る。アナログスケーリングユニット1-103は、アナログ信号がアナログプロセッサに提供される前にアナログ信号をスケーリングする(例えば、増幅又は減衰させる)ように構成され得る。アナログスケーリングユニット1-105は、アナログプロセッサ1-104の後にアナログ信号をスケーリングするように構成され得る。アナログスケーリングユニットは、とりわけ、電圧増幅器、電流増幅器、電力増幅器、トランスインピーダンス増幅器、相互コンダクタンス増幅器、電圧減衰器、電流減衰器及び電力減衰器を含む任意の適切なタイプの制御可能な増幅器又は減衰器を含み得る。以下にさらに詳細に記載されるように、フォトニックアナログプロセッサでは、アナログスケーリングユニットは、とりわけ、上述のアナログスケーリングユニットの1つ、光増幅器又は可変利得レーザであり得る。
図1-7Bの例では、アナログスケーリングユニット1-103は、複数の増幅器又は減衰器1-702を含む。コントローラ1-120は、これらのデバイスの利得を設定する。(利得は、本明細書では、利得が1を超えるか又は1未満であるかに応じて増幅又は減衰を示すために言及される)。
【0160】
図1-8は、一部の実施形態による、数学的演算を行う方法の一例を示すフローチャートである。一部の実施形態では、アクセラレータ1-700(
図1-7A)は、方法1-800を行い得る(ただし、他の適切なアクセラレータが使用され得る)。方法1-800のステップは、
図1-8に示された順序又は他の適切な順序で行われ得ることを理解されたい。
【0161】
ステップ1-801では、アクセラレータ1-700は、入力データセットを受け取る。例えば、
図1-2Bを再び参照すると、アクセラレータは、行列Bのエントリを受け取り得る。
【0162】
ステップ1-802では、アクセラレータ1-700は、ステップ1-801で受け取った入力データセットに基づいて複数の入力アナログ信号を生成する。
図1-7Aを再び参照すると、一部の実施形態では、ステップ1-804の生成は、DACユニット1-102を使用して入力データセットをアナログ信号に変換することを伴う。
【0163】
ステップ1-804では、コントローラ1-120は、1つ又は複数のスケーリングファクタを決定する。上記の通り、1つ又は複数のスケーリングファクタは、一部の実施形態では、パラメータのセット及び入力データセットに基づいて決定され得る。例えば、スケーリングファクタは、パラメータのセットの統計値及び入力データセットの統計値に基づいて決定され得る。代替的に、スケーリングファクタは、パラメータのセットの統計値及び入力データセットの統計値に関する仮定に基づいて決定され得る。一部の実施形態では、2つのスケーリングファクタ(1つは、アナログスケーリングユニット1-103のためのものであり、1つは、アナログスケーリングユニット1-105のためのものである)が決定され得る。
【0164】
上記の通り、数値表現を用いて行われる計算の精度を最大化する最適利得値が存在し得る。最適利得は、一部の実施形態では、事前に分かっていない場合があるが、利得は、訓練プロシージャの一部として学習され得る。
図1-9Aは、利得の関数として、画像分類タスクを行うニューラルネットワークの精度(パーセンテージで表される)を示すプロットである。図に示されるように、訓練プロシージャの一部として学習され得る、精度を最大化する最適利得が存在する。一部の実施形態では、この最適条件は、方法1-800を行う前に計算され得、最適利得を示す情報は、方法1-800中に取り出されるようにメモリ又はルックアップテーブルに保存され得る。
【0165】
ステップ1-806では、コントローラ1-120は、ステップ1-806で決定された1つ又は複数のスケーリングファクタに基づいて、アナログスケーリングユニット1-103の利得及び/又はアナログスケーリングユニット1-105の利得を設定する。
【0166】
ステップ1-808では、アナログスケーリングユニット1-103は、1つ又は複数のスケーリングファクタに基づいて、DACユニット1-102によって生成された入力アナログ信号を増幅又は減衰させる。上述の通り、これは、信号分布をより厳密にADCのダイナミックレンジに合致させ得る。
【0167】
ステップ1-810では、コントローラ1-120は、アナログプロセッサ1-104をプログラムする。より具体的には、コントローラ1-120は、パラメータのセットに基づいて(例えば、行列Aのパラメータに基づいて)アナログプロセッサ1-104をプログラムする。アナログプロセッサをプログラムすることは、
図1-2A及び
図1-3に関連して上記に記載したように、パラメータに基づいてアナログプロセッサの特定の特性を設定することを伴い得る。
【0168】
ステップ1-812では、アナログプロセッサ1-104は、複数の入力アナログ信号及びステップ1-810でアナログプロセッサがプログラムされたパラメータのセットに基づいて複数の出力アナログ信号を生成する。これは、一部の実施形態では、行列乗算又は畳み込みを行うことを伴い得る。
図1-3の例の場合と同様に、演算は、行列分解を用いて行われ得る。
【0169】
ステップ1-814では、アクセラレータ1-700は、ステップ1-806で決定された利得又は減衰係数を用いて、DACユニット1-102によって出力されたアナログ信号を増幅又は減衰させる。増幅又は減衰は、アナログスケーリングユニット1-105を用いて行われ得る。一部の実施形態では、ステップ1-808及び1-814の一方のみが行われる。すなわち、信号は、アナログプロセッサ1-104を通過する前又は後にのみ増幅又は減衰される。他の実施形態では、両方のステップが行われる。
【0170】
ステップ1-816では、アクセラレータ1-700は、ステップ1-814で得られた複数の出力アナログ信号に基づいて出力データセットを生成する。一部の実施形態では、ステップ1-816の生成は、出力アナログ信号をADCユニット1-106に通すことを伴う。
【0171】
本発明者らは、一部の実施形態では、(例えば、マルチパス)ニューラルネットワークモデルの利得又は減衰係数を層ごとに異ならせることが有益である場合があることを理解した。実際、本発明者らは、低精度固定小数点表現の誤差が層に依存し得ることを理解した。
図1-9Bは、低精度固定小数点表現に関連した平均二乗誤差がニューラルネットワークの3つの異なる層にわたって利得の関数としてどのように変動するかをプロットする。平均二乗誤差は、FP32表現に対して計算される。この特定の例では、利得を2に設定することにより、第2の層の平均二乗誤差が最小化され、利得を4に設定することにより、第3の層の平均二乗誤差が最小化され、利得を6に設定することにより、第4の層の平均二乗誤差が最小化される。これは、主に、ニューラルネットワークモデルの異なる層における変化するデータ分布によって生じる。したがって、一部の実施形態では、利得は、層ごとに異なり得る。さらに、利得は、層内の行列のタイル(ただし、これらに限定されない)を含む、プロセッサに割り当てられたネットワークの任意の適切なサブ部分間で異なり得る。
【0172】
図1-10のアクセラレータは、
図1-2Aのアクセラレータに関連して記載した態様と、
図1-7Aのアクセラレータに関連して記載した態様とを組み合わせる。アクセラレータ1-1000は、DACユニット1-102、アナログスケーリングユニット1-103、アナログプロセッサ1-104、アナログスケーリングユニット1-105、ADCユニット1-106、デジタルスケーリングユニット1-108、デジタル累算ユニット1-110及びコントローラ1-120を含む。アクセラレータ1-1000は、
図1-2Aに関連して記載したように、アナログプロセッサ1-104を通る複数のパスを行うように構成され、且つ
図1-7Aに関連して記載したように増幅又は減衰を行うようにも構成される。
図1-10のコンポーネント及び任意選択的に他のコンポーネントは、本明細書では、まとめて「回路」と呼ばれる。
【0173】
図1-11は、一部の実施形態による、数学的演算を行う方法の一例を示すフローチャートである。方法1-1100は、アクセラレータ1-1000(
図1-10)を用いて行われ得る(ただし、他の適切なアクセラレータが使用され得る)。方法1-1100は、方法1-800のステップの幾つかをさらに含むが、方法1-300に類似する。
V.光学アナログ・デジタル行列プロセッサの例
本発明者らは、光信号を使用する特定のクラスのアナログプロセッサを開発した。本発明者らは、光が進んでいる媒体内の光の速度で光信号が進むため、電気システムの場合よりも、レイテンシが限界よりはるかに少ないことを理解した。加えて、光信号が進む距離を長くすることにより、実質的に電力の損失がなく、電気信号を使用した場合に実現不可能な新しいトポロジ及びプロセッサレイアウトが開拓される。したがって、一部の実施形態では、フォトニックプロセッサは、アクセラレータの一部として使用され得る。
【0174】
上記に記載した技術の何れかは、フォトニックプロセッサを含むアクセラレータに適用され得る。一部の実施形態による、このようなアクセラレータの一例が
図1-12に示される。アクセラレータ1-1200は、DACユニット1-102、1つ又は複数のレーザ1-1250、光学エンコーダ1-1201、光学スケーリングユニット1-1203、フォトニックプロセッサ1-1204、光学スケーリングユニット1-1205、光受信器1-1207、電子アナログスケーリングユニット1-105、ADCユニット1-106、デジタルスケーリングユニット1-108、デジタル累算ユニット1-110及びコントローラ1-120を含む。光信号を使用するにも関わらず、アクセラレータ1-1200は、アクセラレータ1-100(
図1-2A)に類似した様式、アクセラレータ1-700(
図1-7A)に類似した様式、アクセラレータ1-1000(
図1-10)に類似した様式又はこれらのアクセラレータの任意の適切な組み合わせで動作するように構成され得る。フォトニックプロセッサ1-1204は、光学領域内であることを除き、アナログプロセッサ1-104(
図1-2A及び
図1-7A)によって行われる数学的演算に類似した数学的演算を行うように設計され得る。フォトニックプロセッサの例は、以下にさらに詳細に記載される。
図1-12のコンポーネント(光学的又は電子的を問わず)及び任意選択的に他のコンポーネントは、本明細書では、まとめて「回路」と呼ばれる。
【0175】
DACユニット1-102、電子アナログスケーリングユニット1-105、ADCユニット1-106、デジタルスケーリングユニット1-108及びデジタル累算ユニット1-110は、
図1-2A及び
図1-7Aに関連して記載した特性に類似した特性を有する。
【0176】
レーザ1-1250は、光学エンコーダ1-1201に基準光信号を提供する。一部の実施形態では、コントローラ1-120は、レーザの出力電力を制御し得る。光学エンコーダ1-1201は、DACユニット1-102から受け取ったアナログ信号を、フォトニックプロセッサ1-1204によって処理される光学的に符号化された信号に変換するように構成される。一部の実施形態では、光信号は、光パルスの振幅及び位相として、関連するビットストリングの値及び符号を表す。一部の実施形態では、位相は、それぞれ正及び負の値を表す、零位相シフト又はπ位相シフトの二値選択に限定され得る。実施形態は、実入力ベクトル値に限定されない。複素ベクトル成分は、例えば、光信号を符号化する際、3つ以上の位相値を用いて表され得る。
【0177】
アナログスケーリングユニット1-103(
図1-7A)に類似して、光学スケーリングユニット1-1203は、光学エンコーダ1-1201によって生成された光入力信号をスケーリングすることにより、より厳密にADCのダイナミックレンジに合致するように構成され得る。さらに、光学スケーリングユニット1-1205は、プロセッサ1-1204の光出力をスケーリングするように構成され得る。
図1-7Aの場合のように、アナログスケーリングユニット1-105は、受け取った電気出力をスケーリングすることにより、より厳密にADCのダイナミックレンジに合致するように構成され得る。一部の実施形態では、アナログスケーリングユニット1-105は、トランスインピーダンス増幅器を用いて実装される。追加的又は代替的に、信号分布は、レーザの出力電力に基づいて、ADCのダイナミックレンジにより厳密に合致するように調節され得る。事実上、光増幅媒体を含むレーザが増幅器として利用され得る。
図1-12の例は、光学スケーリングユニット1-1203、光学スケーリングユニット1-1205及び電気アナログスケーリングユニット1-105を含むが、他の実施形態は、これらのユニットのサブセットのみを含み得ることを理解されたい。一部の実施形態では、増幅又は減衰は、ADCへの経路に沿った何れの箇所でも行われ得るため、アクセラレータ1-1200は、以下の光増幅器:レーザ1-1250、光学スケーリングユニット1-1203及び光学スケーリング1-1205の任意の組み合わせを使用して、複数の増幅された出力光信号を生成する。
【0178】
光受信器1-1207は、光信号を電気信号に変換するように構成される。例えば、光受信器1-1207は、pn接合フォトダイオード、pin接合フォトダイオード、アバランシェフォトダイオード又はフォトトランジスタなどの複数の光検出器を含み得る。一部の実施形態では、光検出器は、ゲルマニウムフォトダイオードを含む。
【0179】
図1-2Aの場合と同様に、デジタルスケーリングユニット1-108は、部分出力データセットをスケーリングするように構成され得、デジタル累算ユニット1-110は、スケーリングされた部分出力データセットを累算するように構成され得る。
【0180】
フォトニックプロセッサ1-1204は、多数の方法の何れかで実装され得る。アナログプロセッサ1-104に関連して記載したように、フォトニックプロセッサ1-1204は、行列分解に基づいて行列演算を行うように設計され得る(その例が以下に提供される)。重み行列を符号化するために異なるプロセッサアーキテクチャが使用され得る。一部の実施形態では、これは、光変調器などのプログラマブルフォトニックデバイスによって達成され得る。光変調器の例は、リング変調器及びディスク変調器を含む光共振変調器である。別の例は、フランツ・ケルディッシュ変調器である。一部の実施形態では、行列のパラメータに基づいてフォトニックプロセッサをプログラムすることは、プログラマブルフォトニックデバイスの光学的特性を設定することを伴う。例えば、光共振器をプログラムすることは、共振器の共振周波数をプログラムすることを伴う場合があり、フランツ・ケルディッシュ変調器をプログラムすることは、変調器の吸収をプログラムすることを伴う場合がある。
【0181】
ここで、フォトニックプロセッサの他の実装形態を述べる。
図2-1は、一部の実施形態による、アクセラレータ1-1200のコンポーネントの一部を実装するために使用され得るフォトニック処理システム2-100を示す。フォトニック処理システム2-100は、光学エンコーダ2-101、フォトニックプロセッサ2-103、光受信器2-105及びコントローラ2-107を含む。光学エンコーダ2-100は、光学エンコーダ1-1201(
図1-12)として機能し、フォトニックプロセッサ2-103は、フォトニックプロセッサ1-1204として機能し、光受信器2-105は、光受信器1-1207として機能し、コントローラ2-107は、コントローラ1-120として機能する。
図2-1には示されないが、一部の実施形態では、光学アナログスケーリングユニットは、光学エンコーダ2-101とフォトニックプロセッサ2-103との間に挿入され得る。追加的又は代替的に、光学アナログスケーリングユニットは、フォトニックプロセッサ2-103と光受信器2-105との間に挿入され得る。
【0182】
フォトニック処理システム2-100は、例えば、外部プロセッサ(例えば、CPU)から、入力ビットストリングの群によって表される入力ベクトルを受け取り、出力ビットストリングの群によって表される出力ベクトルを生じさせる。例えば、入力ベクトルがn次元ベクトルである場合、入力ベクトルは、n個の別個のビットストリングによって表すことができ、各ビットストリングは、ベクトルの各成分を表す。入力ビットストリングは、外部プロセッサから電気又は光信号として受け取られ得、出力ビットストリングは、外部プロセッサに電気又は光信号として送信され得る。一部の実施形態では、コントローラ2-107は、必ずしも各プロセス反復後に出力ビットストリングを出力しない。代わりに、コントローラ2-107は、1つ又は複数の出力ビットストリングを使用して、フォトニック処理システム2-100のコンポーネントを通して供給される新しい入力ビットストリームを決定し得る。一部の実施形態では、出力ビットストリング自体が、フォトニック処理システム2-100によって実施されるプロセスの次の反復のための入力ビットストリングとして使用され得る。他の実施形態では、複数の出力ビットストリームは、次の入力ビットストリングを決定するために様々な方法で結合される。例えば、1つ又は複数の出力ビットストリングが次の入力ビットストリングの決定の一部として合計され得る。
【0183】
光学エンコーダ2-101は、フォトニックプロセッサ2-103に送信されるn個の別個の光パルスを出力する。光学エンコーダ2-101の各出力は、フォトニックプロセッサ2-103の単一の入力に1対1結合される。一部の実施形態では、光学エンコーダ2-101は、フォトニックプロセッサ2-103と同じ基板上に配置され得る(例えば、光学エンコーダ2-101及びフォトニックプロセッサ2-103は、同じチップ上にある)。このような実施形態では、光信号は、光学エンコーダ2-101からフォトニックプロセッサ2-103にシリコンフォトニック導波路などの導波路で送信され得る。他の実施形態では、光学エンコーダ2-101は、フォトニックプロセッサ2-103とは別の基板上に配置され得る。このような実施形態では、光信号は、光学エンコーダ2-101からフォトニックプロセッサ103に光ファイバで送信され得る。
【0184】
フォトニックプロセッサ2-103は、入力ベクトルと行列Mの乗算を行う。以下に詳細に記載されるように、行列Mは、特異値分解(SVD)及びユニタリ行列分解の組み合わせを用いて、3つの行列に分解され得る。一部の実施形態では、ユニタリ行列分解は、QR分解のギブンス回転に類似した演算を用いて行われる。例えば、ハウスホルダ分解と組み合わせてSVDが使用され得る。3つの構成要素部分への行列Mの分解は、コントローラ2-107によって行われ得、各構成要素部分は、フォトニックプロセッサ2-103の一部によって実施され得る。一部の実施形態では、フォトニックプロセッサ2-103は、3つの部分:第1の行列乗算に相当する、入力光パルスのアレイに対する変換を実施するように構成された可変ビームスプリッタ(VBS)の第1のアレイ(例えば、
図2-3の第1の行列モジュール2-301を参照されたい)と、第1のアレイから受け取った各光パルスの強度及び/又は位相を調節するように構成された制御可能な光学素子の群であって、上記調節は、対角行列による第2の行列乗算に相当する、制御可能な光学素子の群(例えば、
図2-3の第2の行列モジュール2-303を参照されたい)と、制御可能な電気光学素子の群から受け取った光パルスに対する変換を実施するように構成されたVBSの第2のアレイであって、上記変換は、第3の行列乗算に相当する、VBSの第2のアレイ(例えば、
図3の第3の行列モジュール2-305を参照されたい)とを含む。
【0185】
フォトニックプロセッサ2-103は、光受信器2-105に送信されるn個の別個の光パルスを出力する。フォトニックプロセッサ2-103の各出力は、光受信器2-105の単一の入力に1対1結合される。一部の実施形態では、フォトニックプロセッサ2-103は、光受信器2-105と同じ基板上に配置され得る(例えば、フォトニックプロセッサ2-103及び光受信器2-105は、同じチップ上にある)。このような実施形態では、光信号は、フォトニックプロセッサ2-103から光受信器2-105にシリコンフォトニック導波路で送信され得る。他の実施形態では、フォトニックプロセッサ2-103は、光受信器2-105とは別の基板上に配置され得る。このような実施形態では、光信号は、フォトニックプロセッサ103から光受信器2-105に光ファイバで送信され得る。
【0186】
光受信器2-105は、フォトニックプロセッサ2-103からn個の光パルスを受け取る。その後、各光パルスは、電気信号に変換される。一部の実施形態では、各光パルスの強度及び位相は、光受信器内の光検出器によって測定される。その後、これらの測定値を表す電気信号がコントローラ2-107に出力される。
【0187】
コントローラ2-107は、メモリ2-109と、光学エンコーダ2-101、フォトニックプロセッサ2-103及び光受信器2-105を制御するためのプロセッサ2-111とを含む。メモリ2-109は、入力及び出力ビットストリング並びに光受信器2-105からの測定結果を保存するために使用され得る。メモリ2-109は、プロセッサ2-111によって実行されると、光学エンコーダ2-101を制御し、行列分解アルゴリズムを行い、フォトニックプロセッサ103のVBSを制御し、且つ光受信器2-105を制御する実行可能命令も保存する。メモリ2-109は、光受信器2-105によって行われた測定によって決定された1つ又は複数の出力ベクトルの群に基づいて光学エンコーダに送る新しい入力ベクトルをプロセッサ2-111に決定させる実行可能命令も含み得る。このように、コントローラ2-107は、フォトニックプロセッサ2-103の設定を調節し、且つ光受信器2-105からの検出情報を光学エンコーダ2-101に戻るように供給することにより、入力ベクトルが複数の行列と乗算される反復プロセスを制御し得る。したがって、フォトニック処理システム2-100によって外部プロセッサに送信される出力ベクトルは、単なる単一の行列乗算ではなく、複数の行列乗算の結果であり得る。
【0188】
一部の実施形態では、行列は、単一のパスを使用してフォトニックプロセッサで符号化されるには大き過ぎる場合がある。このような状況では、大規模行列の一部分がフォトニックプロセッサにおいて符号化され得、乗算プロセスが大規模行列の上記単一の部分に対して行われ得る。その第1の演算の結果がメモリ2-109に保存され得る。次に、大規模行列の第2の部分がフォトニックプロセッサにおいて符号化され得、第2の乗算プロセスが行われ得る。大規模行列のこの「チャンキング」は、乗算プロセスが大規模行列の全ての部分に対して行われるまで続き得る。次に、メモリ2-109に保存され得る複数の乗算プロセスの結果は、入力ベクトルと大規模行列の乗算の最終結果を形成するために結合され得る。
【0189】
他の実施形態では、出力ベクトルの収集挙動のみが外部プロセッサによって使用される。このような実施形態では、複数の出力ベクトルの平均又は最大値/最小値などの収集結果のみが外部プロセッサに送信される。
A.光学エンコーダ
図2-2を参照すると、光学エンコーダは、一部の実施形態によれば、少なくとも1つの光源2-201、電力ツリー2-203、振幅変調器2-205、位相変調器2-207、振幅変調器2-205と関連付けられたデジタル・アナログ変換器(DAC)2-209及び位相変調器2-207と関連付けられたDAC2-211を含む。DAC2-209及び2-211は、DACユニット1-102(
図1-12)の一部であり得る。振幅変調器2-205及び位相変調器2-207は、
図2-2では、n個の入力及びn個の出力(入力及び出力のそれぞれは、例えば、導波路である)を有する単一のブロックとして示されているが、一部の実施形態では、各導波路は、光学エンコーダがn個の振幅変調器及びn個の位相変調器を含むように、それぞれの振幅変調器及びそれぞれの位相変調器を含み得る。また、各振幅及び位相変調器に対して個々のDACが存在し得る。一部の実施形態では、各導波路に関連付けられた振幅変調器及び別個の位相変調器を有する代わりに、単一の変調器を用いて振幅情報及び位相情報の両方を符号化し得る。単一の変調器を使用して、このような符号化を行うことは、各光パルスの振幅及び位相の両方を正確に調整する能力を制限するが、光パルスの振幅及び位相の両方の正確な調整を必要としない幾つかの符号化スキームが存在する。このようなスキームは、本明細書において後に説明される。
【0190】
光源2-201は、任意の適切なコヒーレント光源であり得る。一部の実施形態では、光源2-201は、ダイオードレーザ又は垂直共振器面発光レーザ(VCSEL:vertical-cavity surface emitting laser)であり得る。一部の実施形態では、光源2-201は、10mWを超える、25mWを超える、50mWを超える又は75mWを超える出力電力を有するように構成される。一部の実施形態では、光源2-201は、100mWを下回る出力電力を有するように構成される。光源2-201は、1つ又は複数の波長(例えば、Cバンド又はOバンド)で光の連続波又は光のパルス(「光パルス」)を発するように構成され得る。光パルスの継続時間は、例えば、約100psであり得る。
【0191】
光源2-201は、
図2-2では、光学エンコーダの他のコンポーネントと同じ半導体基板上にあると示されているが、実施形態は、そのように限定されない。例えば、光源2-201は、光学エンコーダチップにエッジ接着又は面接着された別個のレーザパッケージングであり得る。代替的に、光源2-201は、完全にチップから離れていることができ、光パルスは、光ファイバ及び/又は格子結合器を介して光学エンコーダ2-101の導波路2-202に結合され得る。
【0192】
光源2-201は、2つの光源2-201a及び2-201bとして示されるが、実施形態は、そのように限定されない。一部の実施形態は、単一の光源を含み得る。3つ以上の光源を含み得る複数の光源201a~bを含むことは、光源の1つが故障した場合、余分を提供することができる。複数の光源を含むことは、フォトニック処理システム2-100の耐用年数を延長し得る。複数の光源2-201a~bは、それぞれ光学エンコーダ2-101の導波路に結合され、その後、光パルスを各光源から電力ツリー2-203に向けるように構成された導波路結合器で結合され得る。このような実施形態では、1つの光源のみが任意の時点で使用される。
【0193】
一部の実施形態は、同じ波長の2つ以上の位相固定光源を同時に使用して、光学エンコーダシステムに入る光電力を増加させ得る。(例えば、導波路タップによって獲得された)2つ以上の光源のそれぞれからの光のごく一部が、ビート(beat)誤差信号が測定され得るホモダイン検出器に向けられ得る。ベア(bear)誤差信号を使用して、2つの光源間のあり得る位相ドリフトを決定し得る。ビート誤差信号は、例えば、一方の光源の出力を他方の光源の位相に位相固定する位相変調器を制御するフィードバック回路に供給され得る。位相固定は、N≧1のスレーブ光源が単一のマスタ光源に位相固定される、マスタ・スレーブスキームに一般化され得る。その結果は、光学エンコーダシステムが利用可能な合計N+1の位相固定光源である。
【0194】
他の実施形態では、それぞれの別個の光源が異なる波長の光に関連付けられ得る。複数の波長の光を用いることにより、同じ光学ハードウェアを用いて複数の計算が同時に行われ得るように、幾つかの実施形態が多重化されることが可能となる。
【0195】
電力ツリー2-203は、光源2-201からの単一の光パルスを空間的に分離した光パルスのアレイに分割するように構成される。したがって、電力ツリー2-203は、1つの光入力及びn個の光出力を有する。一部の実施形態では、光源2-201からの光電力は、n個の導波路に関連付けられたn個の光学モードに対して均等に分けられる。一部の実施形態では、電力ツリー2-203は、
図2-8に示されるように、50:50ビームスプリッタ2-801のアレイである。電力ツリー2-203の「深度」の数は、出力の導波路の数に依存する。n個の出力モードを有する電力ツリーの場合、電力ツリー2-203の深度は、ceil(log
2(n))である。
図2-8の電力ツリー2-203は、3つのツリー深度のみを示す(ツリーの各層は、電力ツリー2-203の下部にラベルが付けられている)。各層は、2
m-1のビームスプリッタを含み、mは、層番号である。その結果、第1の層は、単一のビームスプリッタ2-801aを有し、第2の層は、2つのビームスプリッタ2-801b~2-801cを有し、第3の層は、4つのビームスプリッタ2-801d~2-801gを有する。
【0196】
電力ツリー2-203は、エバネッセント導波路結合器として実装され得るカスケードビームスプリッタのアレイとして示されているが、1つの光パルスを複数の空間的に分離した光パルスに変換する任意の光学デバイスが使用され得るため、実施形態は、上記のように限定されない。例えば、電力ツリー2-203は、1つ又は複数のマルチモード干渉計(MMI:multimode interferometer)を用いて実装され得、この場合、層の幅及び深度を規定する式は、適切に修正される。
【0197】
どのような種類の電力ツリー2-203が使用されようと、分割比がn個の出力モード間で正確に均等であるような電力ツリー2-203を作ることは、不可能ではないにせよ、難しい可能性が高い。したがって、電力ツリーによって出力されたn個の光パルスの等しくない強度を補正するために、振幅変調器の設定に調節が行われ得る。例えば、最低光電力を有する導波路は、フォトニックプロセッサ2-103に送信される何れのパルスに対しても最大電力として設定され得る。したがって、振幅に対する変調が、情報を光パルスに符号化するために行われることに加えて、最大電力を超える電力を有する何れの光パルスも、振幅変調器2-205により、より低い電力を有するように変調され得る。n個の出力モードのそれぞれにおいて、位相変調器も配置され得、これを用いて、全ての出力信号が同じ位相を有するように電力ツリー2-203の各出力モードの位相を調節し得る。
【0198】
代替的又は追加的に、電力ツリー2-203は、電力ツリーの各ビームスプリッタの分割比が電力ツリー2-203の出力において実質的に等しい強度パルスを生じさせるように調整され得る、1つ又は複数のマッハツェンダー干渉計(MZI:Mach-Zehnder Interferometer)を使用して実装され得る。
【0199】
振幅変調器2-205は、それぞれの入力ビットストリングに基づいて、電力ツリー2-203から受け取った各光パルスの振幅を修正するように構成される。振幅変調器2-205は、可変減衰器又はDAC2-209(これは、コントローラ2-107によってさらに制御され得る)によって制御される他の適切な振幅変調器であり得る。幾つかの振幅変調器が電気通信用途で知られており、一部の実施形態で使用され得る。一部の実施形態では、可変ビームスプリッタが振幅変調器2-205として使用され得、この場合、可変ビームスプリッタの1つの出力のみが保持され、他の出力は、廃棄又は無視される。一部の実施形態で使用され得る振幅変調器の他の例には、進行波変調器、共振器ベースの変調器、フランツ・ケルディッシュ変調器、プラズモンベースの変調器、2D材料ベースの変調器及びナノ光電気機械スイッチ(NOEMS:nano-opto-electro-mechanical switch)が含まれる。
【0200】
位相変調器2-207は、それぞれの入力ビットストリングに基づいて、電力ツリー2-203から受け取った各光パルスの位相を修正するように構成される。位相変調器は、熱光学移相器又は2-211(これは、コントローラ2-107によってさらに制御され得る)によって電気的に制御され得る他の適切な移相器であり得る。
【0201】
図2-2は、振幅変調器2-205及び位相変調器2-207を2つの別個のコンポーネントとして示すが、これらは、光パルスの振幅及び位相の両方を制御する単一素子に結合され得る。しかし、光パルスの振幅及び位相を別々に制御することに対する利点がある。すなわち、クラマース・クローネニッヒ(Kramers-Kronenig)の関係式を用いた振幅シフト及び位相シフト間の関連性により、任意の振幅シフトに関連付けられた位相シフトが存在する。光パルスの位相を正確に制御するために、振幅変調器2-205によって生じる位相シフトは、位相変調器2-207を用いて相殺されるべきである。例として、光学エンコーダ2-101を出る光パルスの全振幅は、A=a
0a
1a
2であり、光学エンコーダを出る光パルスの全位相は、θ=Δθ+Δφ+φであり、式中、a
0は、(変調器の入力において零位相を仮定した)入力光パルスの入力強度であり、a
1は、振幅変調器2-205の振幅減衰であり、Δθは、振幅を変調する間に振幅変調器2-205によって与えられる位相シフトであり、Δφは、位相変調器2-207によって与えられる位相シフトであり、a
2は、位相変調器2-209を通過する光パルスに関連付けられた減衰であり、φは、光信号の伝搬により光信号に与えられる位相である。したがって、光パルスの振幅及び位相の設定は、2つの独立した決定ではない。むしろ、特定の振幅及び位相を光学エンコーダ2-101から出力された光パルスに正確に符号化するために、振幅変調器2-205及び位相変調器2-207の両方の設定が両方の設定のために考慮されるべきである。
【0202】
一部の実施形態では、光パルスの振幅は、ビットストリング値に直接関係する。例えば、高振幅パルスは、高ビットストリング値に対応し、低振幅パルスは、低ビットストリング値に対応する。光パルスの位相は、ビットストリング値が正であるか又は負であるかを符号化する。一部の実施形態では、光学エンコーダ2-101によって出力される光パルスの位相は、180度(πラジアン)離れた2つの位相から選択され得る。例えば、正のビットストリング値は、零度位相シフトを用いて符号化され得、負のビットストリング値は、180度(πラジアン)位相シフトを用いて符号化され得る。一部の実施形態では、ベクトルは、複素数値であることが意図され、したがって、光パルスの位相は、0~2πの間の2つのみの値よりも多い値から選択される。
【0203】
一部の実施形態では、コントローラ2-107は、入力ビットストリングと、出力振幅及び出力位相を振幅変調器2-204及び位相変調器2-207によって与えられる振幅及び位相にリンクさせる上記の式とに基づいて、振幅変調器2-205及び位相変調器2-207の両方によって適用される振幅及び位相を決定する。一部の実施形態では、コントローラ2-107は、メモリ2-109内において、振幅変調器2-205及び位相変調器2-207を駆動するデジタル値のテーブルを保存し得る。一部の実施形態では、通信時間的レイテンシ及び電力消費を減少させるために、メモリは、これらの変調器に極めて近接して配置され得る。
【0204】
振幅変調器2-205に関連付けられ、且つ通信可能に結合されたDAC2-209は、コントローラ2-107からデジタル駆動値を受け取り、振幅変調器2-205を駆動するアナログ電圧にデジタル駆動値を変換する。同様に、位相変調器2-207に関連付けられ、且つ通信可能に結合されたDAC2-211は、コントローラ2-107からデジタル駆動値を受け取り、位相変調器2-207を駆動するアナログ電圧にデジタル駆動値を変換する。一部の実施形態では、DACは、振幅変調器内で所望の消光比(例えば、上記の特定の位相変調器を使用して物理的に実施可能な最高消光比)及び位相変調器内で所望の位相シフト範囲(例えば、0~2πのフルレンジをカバーする位相シフト範囲)を達成するのに十分に高いレベルにアナログ電圧を増幅させる増幅器を含み得る。DAC2-209及びDAC2-211は、
図2-2において、光学エンコーダ2-101のチップ内及び/又は上に位置するように示されているが、一部の実施形態では、DAC2-209及び2-211は、導電性トレース及び/又はワイヤを用いて、依然として振幅変調器2-205及び位相変調器2-207にそれぞれ通信可能に結合されながら、チップから離れて配置され得る。
【0205】
振幅変調器2-205及び位相変調器2-207による変調後、n個の光パルスが光学エンコーダ2-101からフォトニックプロセッサ2-103に送信される。
B.フォトニックプロセッサ
図2-3を参照すると、フォトニックプロセッサ2-103は、n個の入力光パルスによって表される入力ベクトルに対して行列乗算を実施し、3つの主要コンポーネント:第1の行列モジュール2-301、第2の行列モジュール2-303及び第3の行列モジュール2-305を含む。一部の実施形態では、以下により詳細に述べるように、第1の行列モジュール2-301及び第3の行列モジュール2-305は、入力ベクトルからのn個の入力光パルスを出力ベクトルに変換するように構成されたプログラマブルで再構成可能な可変ビームスプリッタ(VBS)の相互接続アレイを含み、これらのベクトルの成分は、各光パルスの振幅及び位相によって表される。一部の実施形態では、第2の行列モジュール2-303は、電気光学素子の群を含む。
【0206】
入力光パルスをフォトニックプロセッサ2-103に通すことにより、入力ベクトルと乗算される行列は、Aと呼ばれる。行列Aは、フォトニックプロセッサ2-103によって実施されるべき行列としてコントローラ2-107に知られている汎用m×nである。そのため、コントローラ2-107は、行列Aが3つの成分行列によって表されるように(A=VTΣU、式中、U及びVは、それぞれ実直交n×n及びm×m行列であり(UTU=UUT=I及びVTV=VVT=I)、Σは、実エントリを有するm×n対角行列である)、特異値分解(SVD)を使用して行列Aを分解する。全ての式における上付き文字「T」は、関連する行列の転置を表す。行列のSVDの決定は、既知であり、コントローラ2-107は、行列AのSVDを決定するための任意の適切な技術を使用し得る。一部の実施形態では、行列Aは、複素行列であり、この場合、行列Aは、A=VTΣUに分解することができ、式中、V及びUは、それぞれ複素ユニタリn×n及びm×m行列であり、U†U=UU†=I及びV†V=VV†=I)、Σは、実又は複素エントリを有するm×n対角行列である。特異値の最大絶対値が1であるように、対角特異値の値もさらに正規化され得る。
【0207】
コントローラ2-107が行列Aの行列U、Σ及びVを決定すると、行列U及びVが直交実行列である場合、制御部は、2つの直交行列U及びVを一連の実数値ギブンス回転行列にさらに分解し得る。ギブンス回転行列G(i,j,θ)は、以下の式により、成分ごとに定義される。
【0208】
k≠i,jの場合、gkk=1
k=i,jの場合、gkk=cos(θ)
gij=-gji=-sin(θ)
他の場合、gki=0
式中、gijは、行列Gのi番目の行及びj番目の列の要素を表し、θは、行列に関連付けられた回転角である。一般に、行列Gは、行列式1を有する任意の2×2ユニタリ行列(SU(2)群)であり、2つのパラメータによってパラメータ化される。一部の実施形態では、これらの2つのパラメータは、回転角θ及び別の位相値φである。それにも関わらず、行列Gは、角度又は位相以外の他の値により、例えば反射率/透過率により、又は(NOEMSの場合に)分離距離によりパラメータ化され得る。
【0209】
複素空間におけるギブンス回転のセットの積の観点から、任意の実直交行列を表すアルゴリズムは、M.レック(M.Reck)ら著、「任意の離散ユニタリ演算子の実験的実現(Experimental realization of any discrete unitary operator)」、フィジカル・レビュー・レターズ(Physical Review Letters)、第73巻、p.58、1994年(「レック」)及びW.R.クレメンツ(W.R.Clements)ら著、「ユニバーサルマルチポート干渉計の最適設計(Optimal design for universal multiport interferometers)」、オプティカ(Optica)、第3巻、p.12、2016年(「クレメンツ」)に提供されており、これらの両方は、全体として及び少なくともギブンス回転の観点から実直交行列を分解する技術の記載に関して本明細書に援用される。(本明細書で使用される何れかの用語がレック及び/又はクレメントにおけるその用語の用法と相違する場合、用語は、本明細書において、どのように当業者がその用法を理解するかに最も一致した意味を与えられるものとする。)結果として生じる分解は、以下の式によって与えられる。
【0210】
【数2】
式中、Uは、n×n直交行列であり、S
kは、(分解アルゴリズムによって定義されるような)適用されたギブンス回転のk番目のセットに関連するインデックスのセットであり、θ
ij
(k)は、ギブンス回転のk番目のセットにおける成分i及びj間のギブンス回転に適用される角度を表し、Dは、各成分に対してグローバル符号を表す+1エントリ又は-1エントリの対角行列である。インデックスS
kのセットは、nが偶数であるか又は奇数であるかに依存する。例えば、nが偶数である場合、
奇数kに関して、S
k={(1,2),(3,4),...,(n-1,n)}
偶数kに関して、S
k={(2,3),(4,5),...,(n-2,n-1)}
である。
【0211】
nが奇数である場合、
奇数kに関して、Sk={(1,2),(3,4),...,(n-2,n-1)}
偶数kに関して、Sk={(2,3),(4,5),...,(n-1,n)}
である。
【0212】
限定ではなく、例として、4×4直交行列の分解は、
【0213】
【0214】
コントローラ2-107を使用して実施され得る、実数値ギブンス回転のn個のセットの観点から、n×n行列Uを分解するアルゴリズムの一実施形態の概要は、以下の通りである。
U’←U
1~n-1のiに関して:
iが奇数である場合:
j=0~i-1に関して:
要素U’n-j,i-jを無効にするGT
i-j,i-j+1(θ)を求める、すなわちθ=tan-1(U’n-j,i-j/U’n-j,i-j+1)
U’←U’GT
i-j,i-j+1(θ)
iが偶数である場合:
j=1~iに関して:
要素U’n+j-i,jを無効にするGn+j-i-1,n+j-i(θ)を求める、すなわちθ=tan-1(-U’n+j-i,j/U’n+j-i-1,j)
U’←Gn+j-i-1,n+j-i(θ)U’
上記アルゴリズムの結果として得られた行列U’は、下三角であり、以下の式により、元の行列Uに関係する。
【0215】
【数4】
式中、ラベルS
Lは、U’の左側にVBSによって接続された2つのモードのセットにラベルを付け、ラベルS
Rは、U’の右側にVBSによって接続された2つのモードのセットにラベルを付ける。Uが直交行列であるため、U’は、対角線に沿って{-1,1}エントリを有する対角行列である。この行列U’=D
Uは、「位相スクリーン」と呼ばれる。
【0216】
アルゴリズムの次のステップは、GT
jk(θ1)DU=DUGjk(θ2)を繰り返し求めることであり、これは、コントローラ2-107を使用して実施され得る以下のアルゴリズムを使用して達成される。
【0217】
SLの各(j、k)に関して:
U’j,j及びU’k,kが異なる符号を有する場合:
θ2=-θ1
他の場合:
θ2=θ1
上記のアルゴリズムは、V及び/又はVTを分解して、VBS値のm個の層及び関連する位相スクリーンを決定するためにも使用され得る。
【0218】
直交行列を実数値ギブンス回転行列に分解する上記の概念は、直交行列ではなく、複素行列、例えばユニタリ行列に拡張され得る。一部の実施形態では、これは、さらなる位相をギブンス回転行列のパラメータ化に含めることによって達成され得る。したがって、さらなる位相項を追加したギブンス行列の一般形式は、T(i,j,θ,φ)であり、
k≠i,jの場合、t
kk=1、
t
ii=e
iφcos(θ)、
t
jj=cos(θ)、
t
ij=-sin(θ)、
t
ji=e
iφsin(θ)、
他の場合、t
ki=0
であり、式中、t
ijは、行列Tのi番目の行及びj番目の列を表し、θは、行列に関連する回転角であり、φは、さらなる位相である。何れのユニタリ行列もT(i,j,θ,φ)のタイプの行列に分解することができる。位相φ=0に設定する選択を行うことにより、上記の従来の実数値ギブンス回転行列が得られる。代わりに、位相φ=πとした場合、ハウスホルダ行列として知られる行列のセットが得られる。ハウスホルダ行列Hは、
の形式を有し、Iは、n×n単位行列であり、vは、単位ベクトルであり、
は、外積である。ハウスホルダ行列は、単位ベクトルvに直交する超平面に対する反射を表す。このパラメータ化では、超平面は、QR分解に関してハウスホルダ行列を定義する際に見られるようなn-1次元部分空間ではなく、2次元部分空間である。したがって、ギブンス回転への行列の分解は、ハウスホルダ行列への行列の分解に相当する。
【0219】
ギブンス回転の制限されたセットへの任意のユニタリ行列の上述の分解に基づいて、ユニタリ行列は、特定のシーケンスの回転及び位相シフトによって実施され得る。また、フォトニクスでは、回転は、可変ビームスプリッタ(VBS)によって表すことができ、位相シフトは、位相変調器を用いて容易に実施される。したがって、フォトニックプロセッサ2-103のn個の光入力に関して、行列AのSVDのユニタリ行列を表す、第1の行列モジュール2-301及び第3の行列モジュール2-305がVBS及び移相器の相互接続されたアレイによって実施され得る。n個の光パルスをVBSアレイに同時に通す並列性により、次元(I,K)×(K,J)の行列乗算は、O(IJK/n
2)時間で行われ得る。第2の行列モジュール2-303は、SVDの各直交行列と関連する対角行列Dと結合された行列AのSVDの対角行列である。上述の通り、各行列Dは、「位相スクリーン」と呼ばれ、それが行列Uであるか又は行列Vと関連する位相スクリーンであるかを示すための下付き文字を用いてラベルが付けられ得る。したがって、第2の行列モジュール303は、行列Σ’=D
VΣD
Uである。行列U及び行列Vからこれらの位相スクリーンを因数分解することにより、
図2-3の行列U及びVを取得する。
【0220】
一部の実施形態では、第1の行列モジュール2-301及び第3の行列モジュール2-305に関連するフォトニックプロセッサ2-103のVBS単位セルは、内部移相器を備えたマッハツェンダー干渉計(MZI)であり得る。他の実施形態では、VBS単位セルは、微小電気機械システム(MEMS:microelectromechanical system)アクチュエータであり得る。一部の実施形態では、外部移相器は、ギブンス回転に必要とされるさらなる位相を実施するために使用され得る。
【0221】
対角行列DVΣDUを表す第2の行列モジュール2-303は、振幅変調器及び移相器を用いて実施され得る。一部の実施形態では、VBSは、捨てることができる光の一部を分離して、光パルスを可変的に減衰させるために使用され得る。追加的又は代替的に、制御可能な利得媒体を使用して、光信号を増幅させ得る。例えば、GaAs、InGaAs、GaN又はInPは、光信号を増幅させる活性利得媒体として使用され得る。結晶反転対称の材料(例えば、KTP及びニオブ酸リチウム)における二次高調波発生などの他の活性利得プロセス並びに反転対称を欠いた材料(例えば、シリコン)における四波混合プロセスも使用され得る。各光学モードの移相器を使用して、実施される位相スクリーンに応じて、零位相シフト又はπ位相シフトの一方が適用され得る。一部の実施形態では、位相スクリーンごとに1つの移相器ではなく、各光学モードに対して単一の移相器のみが使用される。これは、行列DV、Σ及びDUのそれぞれが対角であり、したがって可換であるために可能である。したがって、フォトニックプロセッサ2-103の第2の行列モジュール2-303の各移相器の値は、2つの位相スクリーンの積の結果(DVDU)である。
【0222】
図2-4を参照すると、第1の行列モジュール2-301及び第3の行列モジュール2-305は、一部の実施形態によれば、VBS2-401のアレイとして実装される。簡単にするために、入力光パルスの数(例えば、6)に等しい「回路深度」(例えば、列数)をもたらすn=6個のみの入力光パルス(行数)が示されている。分かりやすくするために、単一のVBS2-401のみが参照番号でラベル付けされている。しかし、VBSは、何れの光学モードが特定のVBSによって混合されているかを識別する下付き文字及び関連する列をラベル付けする上付き文字を用いてラベル付けされる。各VBS2-401は、上述のように、複素ギブンス回転T(i,j,θ,φ)を実施し、i及びjは、VBS2-401の下付き文字ラベルに相当し、θは、ギブンス回転の回転角であり、φは、一般化回転に関連した、さらなる位相である。
【0223】
図2-5を参照すると、各VBS2-401は、MZI2-510及び少なくとも1つの外部移相器2-507を使用して実施され得る。一部の実施形態では、第2の外部移相器2-509も含まれ得る。MZI2-510は、MZI2-510の2つの入力モードを混合するための第1のエバネッセント結合器2-501及び第2のエバネッセント結合器2-503を含む。内部移相器2-505は、MZI2-510の一方のアームにおいて位相θを変調させて、2つのアーム間で位相差を生じさせる。位相θを調節することにより、VBS2-401によって出力される光の強度をMZI2-510の一方の出力モードから他方の出力モードに変化させ、それにより制御可能且つ可変のビームスプリッタが生じる。一部の実施形態では、第2の内部移相器が第2のアームに適用され得る。この場合、それは、出力光強度を変化させる2つの内部移相器間の差である。2つの内相の平均は、モードi及びモードjに入る光にグローバル位相を与える。したがって、2つのパラメータθ及びφは、それぞれ移相器によって制御され得る。一部の実施形態では、第2の外部移相器2-509は、静的位相の乱れによる、VBSの複数の出力モードにわたる望ましくない微分位相を補正するために使用され得る。
【0224】
一部の実施形態では、移相器2-505、2-507及び2-509は、熱光学、電気光学又は光学機械位相変調器を含み得る。他の実施形態では、MZI510内に内部位相変調器505を含むのではなく、NOEMS変調器が使用され得る。
【0225】
一部の実施形態では、VBSの数は、行列のサイズと共に大きくなる。本発明者らは、多数のVBSを制御することが困難な場合があること及び複数のVBS間で単一の制御回路を共有することに利点があることを理解した。複数のVBSを制御するために使用され得る並列制御回路の一例は、特定のVBSに与えられるアナログ信号を符号化するデジタルストリングを入力として受け取るデジタル・アナログ変換器である。一部の実施形態では、回路は、第2の入力として制御されるVBSのアドレスも受け取る。次に、回路は、アドレス指定されたVBSにアナログ信号を与え得る。他の実施形態では、制御回路は、能動的にアドレスを与えられることなく、幾つかのVBSを自動的にスキャンし、それらの複数のVBSにアナログ信号を与え得る。この場合、アドレス指定シーケンスは、既知の順序でVBSアレイを横断するように予め定義される。
【0226】
図2-6を参照すると、第2の行列モジュール2-303は、対角行列Σ’=D
VΣD
Uによる乗算を実施する。これは、2つの移相器2-601及び2-605を使用して2つの位相スクリーンを実施し、振幅変調器2-603を使用して、量η分だけ関連する光パルスの強度を調節することによって達成され得る。上述の通り、一部の実施形態では、Σ’を形成する3つの成分行列が対角であり、したがって可換であることから、2つの位相スクリーンを結合することができるため、単一の位相変調器2-601が使用され得る。
【0227】
一部の実施形態では、振幅変調器2-603は、減衰器及び/又は増幅器を用いて実装され得る。振幅変調の値ηが1より大きい場合、光パルスは、増幅される。振幅変調の値ηが1より小さい場合、光パルスは、減衰される。一部の実施形態では、減衰のみが使用される。一部の実施形態では、減衰は、集積減衰器の列によって実施され得る。他の実施形態では、
図2-7に示されるように、減衰2-603は、2つのエバネッセント結合器2-701及び2-703並びに入力光のどの程度がMZIの入力からMZIの第1の出力ポート2-709に送信されるかを調節するための制御可能な内部移相器2-705を含むMZIを使用して実施され得る。MZIの第2の出力ポート2-707は、無視され得るか、ブロックされ得るか又は捨てられ得る。
【0228】
一部の実施形態では、コントローラ2-107は、フォトニックプロセッサ2-103の各移相器の値を制御する。上述の各移相器は、光学エンコーダ2-101の位相変調器2-207に関連して述べたDACに類似したDACを含み得る。
【0229】
フォトニックプロセッサ2-103は、任意の数の入力モードを含み得るが、相互接続されたVBSアレイ2-301及び2-305のサイズ及び複雑性は、入力モードの数が増加するにつれて増加する。例えば、n個の入力光学モードが存在する場合、フォトニックプロセッサ2-103は、2n+1の回路深度を有し、この場合、第1の行列モジュール2-301及び第2の行列モジュール2-305は、それぞれ回路深度nを有し、第2の行列モジュール2-303は、1の回路深度を有する。重要なこととして、入力データの列数と線形である、単一の行列乗算を行う時間的複雑性である。処理される行列乗算の次元が(I,K)×(K×J)である場合、n個のモードを有する光プロセッサに対してこの乗算を行う時間複雑性は、O(IKJ/n2)である。一部の実施形態では、並列化によって得られるこの低次複雑性は、従来の電気プロセッサを使用して得ることができないエネルギー効率及び時間効率をもたらす。
【0230】
本明細書に記載される実施形態は、フォトニックプロセッサ2-103がn個の入力及びn個の出力を有するものとして示すが、一部の実施形態では、フォトニックプロセッサ2-103によって実施される行列Aは、正方行列でなくてもよい。このような実施形態では、フォトニックプロセッサ2-103は、異なる数の出力及び入力を有し得る。
【0231】
第1及び第2の行列モジュール2-301及び2-305内のVBSの相互接続のトポロジにより、2つ以上の行列乗算が同時に行われ得るように、フォトニックプロセッサ2-103を相互作用しない行のサブセットに細分化することが可能であることにも留意されたい。例えば、
図2-4に示されるVBSアレイでは、光学モード3及び4を結合する各VBS2-401が、光学モード3及び4が全く結合しないように(例えば、あたかも下付き文字「34」を有するVBS2-401が
図2-4に存在しないかのように)設定される場合、上位3つの光学モードは、下位3つの光学モードから完全に独立して動作する。このような細分化は、より多くの入力光学モードを有するフォトニックプロセッサを用いてはるかに大きいスケールで行われ得る。例えば、n=64のフォトニックプロセッサは、同時に、8つの8成分入力ベクトルをそれぞれの8×8行列と乗算し得る(各8×8行列は、別個にプログラム可能であり、且つ制御可能である)。また、フォトニックプロセッサ2-103は、均等に細分化される必要はない。例えば、n=64のフォトニックプロセッサは、それぞれ20個、13個、11個、8個、6個、4個及び2個の成分を有する7つの異なる入力ベクトルに細分化され得、それぞれは、それぞれの行列によって同時に乗算される。上記の数値例は、単なる例示目的のものであり、任意の数の細分化が可能であることを理解されたい。
【0232】
加えて、フォトニックプロセッサ2-103は、光信号をVBSのアレイに通すことによってベクトルが行列と乗算される行列-ベクトル乗算を行うが、フォトニックプロセッサ2-103は、行列-行列乗算を行うためにも使用され得る。例えば、複数の入力ベクトルは、次々に、1度に1つずつフォトニックプロセッサ2-103に通され得、この場合、各入力ベクトルは、入力行列の列を表す。個々の行列-ベクトル乗算のそれぞれを光学的に計算した後(各乗算は、結果として生じる行列の出力列の列に対応する出力ベクトルをもたらす)、それらの結果がデジタル的に結合されて、行列-行列乗算から得られた出力行列を形成し得る。
C.光受信器
フォトニックプロセッサ2-103は、光受信器2-105に送信されるn個の光パルスを出力する。光受信器2-105は、光パルスを受け取り、受け取った光信号に基づいて電気信号を生成する。一部の実施形態では、各光パルスの振幅及び位相が決定される。一部の実施形態では、これは、ホモダイン又はヘテロダイン検出スキームを用いて達成される。他の実施形態では、従来のフォトダイオードを用いて単純な位相集中的光検出が行われ得る。
【0233】
図2-9を参照すると、一部の実施形態によれば、光受信器2-105は、ホモダイン検出器2-901、トランスインピーダンス増幅器2-903及びADC2-905を含む。トランスインピーダンス増幅器2-903は、電子アナログスケーリングユニット1-105(
図1-12)として機能することができ、ADC2-905は、ADCユニット1-106の一部であり得る。
図2-9では、コンポーネントは、全ての光学モードに対して1つの素子として示されているが、これは、簡単にするためである。各光学モードは、専用のホモダイン検出器2-901、専用のトランスインピーダンス増幅器2-903及び専用のADC2-905を有し得る。一部の実施形態では、トランスインピーダンス増幅器2-903は、使用されない場合がある。代わりに、電流を電圧に変換する任意の他の適切な電子回路が使用され得る。
【0234】
図2-10を参照すると、一部の実施形態によれば、ホモダイン検出器2-903は、局部発振器(LO:local oscillator)2-1001と、直角位相コントローラ2-1003と、ビームスプリッタ2-1005と、2つの検出器2-1007及び2-1009とを含む。ホモダイン検出器2-903は、第1の検出器2-1007及び第2の検出器2-1009によって出力される電流間の差に基づく電流を出力する。
【0235】
局部発振器2-1001は、ビームスプリッタ2-1005で入力光パルスと結合される。一部の実施形態では、光源2-201の一部は、光導波路及び/又は光ファイバによってホモダイン検出器2-901に送信される。光源2-201からの光は、それ自体、局部発振器2-1001として使用され得るか、又は他の実施形態では、局部発振器2-1001は、光源2-201からの光を使用して、位相整合光パルスを生成する別個の光源であり得る。一部の実施形態では、信号と局部発振器との間で調節が行われ得るように、MZIがビームスプリッタ2-1005に取って代わり得る。
【0236】
直角位相コントローラ2-1003は、測定が行われる位相空間における断面角度を制御する。一部の実施形態では、直角位相コントローラ2-1003は、入力光パルスと局部発振器との間の相対位相を制御する移相器であり得る。直角位相コントローラ2-1003は、入力光学モードにおける移相器として示されている。しかし、一部の実施形態では、直角位相コントローラ2-1003は、局部発振器モードであり得る。
【0237】
第1の検出器2-1007は、ビームスプリッタ2-1005の第1の出力によって出力された光を検出し、第2の検出器2-1009は、ビームスプリッタ2-1005の第2の出力によって出力された光を検出する。検出器2-1007及び2-1009は、零バイアスで操作されるフォトダイオードであり得る。
【0238】
減算回路2-1011は、第2の検出器2-1009からの電流から、第1の検出器2-1007からの電流を減算する。したがって、結果として得られる電流は、振幅及び符号(+又は-)を有する。トランスインピーダンス増幅器2-903は、電流のこの差を、正又は負であり得る電圧に変換する。最後に、ADC2-905は、アナログ信号をデジタルビットストリングに変換する。この出力ビットストリングは、行列乗算の出力ベクトル結果を表し、フォトニックプロセッサ2-103によって出力される出力ベクトルの光出力表現の電気デジタルバージョンである。一部の実施形態では、出力ビットストリングは、上記のように、1つ又は複数の出力ビットストリングに基づいて次の入力ビットストリングを決定すること及び/又は出力ビットストリングを外部プロセッサに送信することを含み得るさらなる処理のために、コントローラ2-107に送られ得る。
【0239】
本発明者らは、上記のフォトニック処理システム2-100のコンポーネントが、第3の行列モジュール2-305に接続された第2の行列モジュール2-303に接続された第1の行列モジュール2-301が存在するように、連続して連鎖される必要がないことをさらに理解した。一部の実施形態では、フォトニック処理システム2-103は、1つ又は複数の乗算を行うための単一ユニタリ回路のみを含み得る。単一ユニタリ回路の出力は、光受信器2-105に直接接続され得、光受信器2-105では、乗算の結果は、出力光信号を検出することによって決定される。このような実施形態では、単一ユニタリ回路は、例えば、第1の行列モジュール2-301を実施し得る。光受信器2-105によって検出された結果は、次に、従来のプロセッサ(例えば、2-111)を用いて、デジタル領域で、対角の第2の行列モジュール2-303が行われる従来のプロセッサ(例えば、プロセッサ2-111)にデジタル的に送信され得る。コントローラ2-107は、次に、第3の行列モジュール2-305を行い、第2の行列モジュールのデジタル実施の結果に基づいて入力ビットストリングを決定し、且つ光学エンコーダを制御して、再プログラムされた設定を有する単一のユニタリ回路を通して、新しい入力ビットストリングに基づいて符号化された光信号を送信するように、単一のユニタリ回路を再プログラムし得る。次に、光受信器105によって検出される結果として生じた出力光信号は、行列乗算の結果を決定するために使用される。
【0240】
本発明者らは、複数のフォトニックプロセッサ2-103を連続して直列に連鎖させることに利点がある場合があることも理解した。例えば、行列乗算M=M
1M
2(M
1及びM
2は、任意行列であるが、M
2は、変化する入力ワークロードに基づいて、M
1よりも頻繁に変化する)を実施するために、第1のフォトニックプロセッサは、M
2を実施するように制御することができ、第1のフォトニックプロセッサに光学的に結合された第2のフォトニックプロセッサは、静的に維持されたM
1を実施することができる。このように、第1のフォトニック処理システムのみが、変化する入力ワークロードに基づいて頻繁に更新される必要がある。このような配置は、計算を加速させるだけでなく、コントローラ2-107とフォトニックプロセッサとの間を移動するデータビット数も減少させる。
D.折り返しフォトニック処理システム
図2-1において、このような配置では、光学エンコーダ2-101及び光受信器2-105は、フォトニック処理システム2-100の両側に配置される。光受信器2-105からのフィードバックを使用して、プロセスの将来的な反復のために光学エンコーダ2-101への入力を決定する適用例では、データは、光受信器2-105からコントローラ2-107に、且つその後、光学エンコーダ2-101に電子的に転送される。本発明者らは、(例えば、電気トレース及び/又はワイヤの長さを縮小することによって)これらの電気信号が移動する必要がある距離を減少させることにより、省電力及びレイテンシの減少がもたらされることを理解した。また、光学エンコーダ2-101及び光受信器2-105は、フォトニック処理システムの両端に配置される必要はない。
【0241】
したがって、一部の実施形態では、光学エンコーダ2-101と光受信器2-105との間で電気信号が移動しなければならない距離がフォトニックプロセッサ2-103の幅よりも小さいように、光学エンコーダ2-101及び光受信器2-105は、(例えば、フォトニックプロセッサ2-103の同じ側で)互いの近くに配置される。これは、第1の行列モジュール2-301及び第3の行列モジュール2-305のコンポーネントが物理的にチップの同じ部分にあるように、それらを物理的に交互配置することによって達成され得る。まず、光が、光学エンコーダ2-101及び光受信器2-105から遠く離れたチップの物理的部分に到達するまで、第1の行列モジュール2-301を通して第1の方向に伝搬し、その後、第3の行列モジュール2-305を実施する際、第1の方向とは逆の方向に伝搬するように導波路が光の方向を変えるように折り重ねるため、この配置は、「折り返し」フォトニック処理システムと呼ばれる。一部の実施形態では、第2の行列モジュール2-303は、導波路の折り返し部分に隣接して物理的に配置される。このような配置は、光学エンコーダ2-101、光受信器2-105及びコントローラ2-107を接続する電気トレースの複雑性を低下させ、フォトニック処理システム2-100を実装するために使用される総チップ面積を減少させる。例えば、折り返し配置を使用する一部の実施形態は、
図2-1の連続フォトニック配置が使用された場合に必要とされる総チップ面積の65%のみを使用する。これは、フォトニック処理システムのコスト及び複雑性を低下させ得る。
【0242】
本発明者らは、折り返し配置に電気的利点だけでなく、光学的利点もあることを理解した。例えば、ホモダイン検出のために局部発振器として使用されるために光源から光信号が移動しなければならない距離を減少させることにより、光信号の時間依存性位相変動を減少させることができ、それにより、より高い品質の検出結果がもたらされる。具体的には、フォトニックプロセッサの同じ側に光源及びホモダインを配置することにより、局部発振器に使用される光信号によって移動される距離は、もはや行列のサイズに依存しない。例えば、
図2-1の連続配置では、局部発振器のための光信号によって移動される距離は、行列のサイズに線形に増減するが、折り返し配置で移動される距離は、行列のサイズに関わらず一定である。
【0243】
図2-11は、一部の実施形態による折り返しフォトニック処理システム2-1100の概略図である。折り返しフォトニック処理システム2-1100は、電力ツリー2-1101、複数の光学エンコーダ2-1103a~2-1103d、複数のホモダイン検出器2-1105a~2-1105d、複数のセレクタスイッチ2-1107a~2-1107d、複数のU行列成分2-1109a~2-1109j、複数の対角行列成分2-1111a~2-1111d及び複数のV行列成分2-1113a~2-1113jを含む。分かりやすくするために、折り返しフォトニック処理システムの全てのコンポーネントが図に示されているわけではない。折り返しフォトニック処理システム2-1100は、連続フォトニック処理システム2-100と類似のコンポーネントを含み得ることを理解されたい。
【0244】
電力ツリー2-1101は、
図2の電力ツリー2-203と類似しており、光源(図示せず)から光学エンコーダ2-1103に光を届けるように構成される。しかし、電力ツリー2-1101及び電力ツリー2-203の差は、電力ツリーが光信号をホモダイン検出器2-1105aに直接届ける点である。
図2では、光源201は、光源からの光信号の一部を取り出し、導波路を使用して光信号を誘導することにより、フォトニックプロセッサの他方の側で局部発振器信号をホモダイン検出器に届ける。
図2-11では、電力ツリー2-1101は、空間モードの数の2倍に等しい幾つかの出力を含む。例えば、
図2-11は、フォトニックプロセッサの4つの空間モードのみを示し、これは、電力ツリー2-1101から8つの出力モードをもたらす(1つの出力が各光学エンコーダ2-1103に光を向け、1つの出力が各ホモダイン検出器2-1105に光を向ける)。電力ツリーは、例えば、カスケードビームスプリッタ又はマルチモード干渉計(MMI)を使用して実装され得る。
【0245】
光学エンコーダ2-1103は、
図1の電力ツリー光学エンコーダ2-101に類似し、電力ツリー2-1101から受け取った光信号の振幅及び/又は位相に情報を符号化するように構成される。これは、例えば、
図2の光学エンコーダ2-101に関連して記載されるように達成され得る。
【0246】
ホモダイン検出器2-1105は、電力ツリー2-1101とU行列成分2-1109との間に配置される。一部の実施形態では、ホモダイン検出器2-1105は、光学エンコーダ2-1103と共に物理的に列に配置される。一部の実施形態では、光学エンコーダ2-1103及びホモダイン検出器2-1105は、単一の列に交互配置され得る。このように、光学エンコーダ2-1103及びホモダイン検出器2-1105は、互いに極めて近接しており、それにより、光学エンコーダ2-1103及びホモダイン検出器2-1105と、光学エンコーダ2-1103及びホモダイン検出器2-1105の列に物理的に隣接して配置され得るコントローラ(図示せず)とを接続するために使用される電気トレース(図示せず)の距離が縮小される。
【0247】
各光学エンコーダ2-1103は、それぞれのホモダイン検出器2-1105と関連付けられる。光学エンコーダ2-1103及びホモダイン検出器2-1105の両方は、電力ツリー2-1101から光信号を受け取る。光学エンコーダ2-1103は、上記のように、光信号を使用して、入力ベクトルを符号化する。ホモダイン検出器2-1105は、上記のように、電力ツリーから受け取った受信光信号を局部発振器として使用する。
【0248】
光学エンコーダ2-1103及びホモダイン検出器2-1105の各ペアは、導波路によってセレクタスイッチ2-1107に関連付けられ、且つ接続される。セレクタスイッチ2-1107a~2-1107dは、例えば、従来の2×2光スイッチを使用して実装され得る。一部の実施形態では、2×2光スイッチは、交差点からバーへのMZIの挙動を制御するために内部移相器を備えたMZIである。スイッチ2-1107は、光学エンコーダ2-1103から受け取った光信号がU行列成分2-1109又はV行列成分2-1113に向けて誘導されるかを制御するためのコントローラ(図示せず)に接続される。光スイッチは、U行列成分2-1109及び/又はV行列成分2-1113から受け取った光を、検出のためのホモダイン検出器2-1105に向けて誘導するようにも制御される。
【0249】
フォトニック折り返しフォトニック処理システム2-1100において、行列乗算を実施するための技術は、
図2-3に記載した連続システムに関連して上記で説明したものと類似する。これら2つのシステムの差は、行列成分の物理的配置及び折り返し部分2-1120の実装であり、折り返し部分2-1120では、光信号が、
図2-11における略左から右に伝搬することから、略右から左に伝搬することに変化する。
図2-11において、コンポーネント間の接続は、導波路を表し得る。一部の実施形態では、実線接続は、光信号が左から右に伝搬している導波路の部分を表し、一部の実施形態では、破線接続は、光信号が右から左に伝搬している導波路の部分を表す。具体的には、この命名法を前提として、
図2-11に示される実施形態は、セレクタスイッチ2-1107が最初に光信号をU行列成分2-1109に誘導する実施形態である。他の実施形態では、セレクタスイッチ2-1107は、最初に光信号をV行列成分2-1113に誘導し得、この場合、破線は、光信号が左から右に伝搬している導波路の部分を表し、実線接続は、光信号が右から左に伝搬している導波路の部分を表す。
【0250】
行列AのSVDのU行列は、V行列成分2-1113と相互配置されるU行列成分2-1109を使用して、フォトニック処理システム2-1100において実施される。したがって、
図2-3に示される連続配置の実施形態と異なり、U行列成分2-1109及びV行列成分2-1113の全てが単一の物理的エリア内でそれぞれの自己完結型アレイに物理的に配置されるわけではない。したがって、一部の実施形態では、フォトニック処理システム2-1100は、複数の行列成分列を含み、これらの列の少なくとも1つがU行列成分2-1109及びV行列成分2-1113の両方を含む。一部の実施形態では、第1の列は、
図2-11に示されるように、U行列成分2-1109のみを有し得る。U行列成分2-1109は、
図3の第1の行列モジュール2-301に類似して実施される。
【0251】
U行列成分2-1109及びV行列成分2-1113の相互配置構造により、折り返しフォトニック処理システム2-1100は、行列要素の列間の様々な場所で導波路クロスオーバ2-1110を含む。一部の実施形態では、導波路クロスオーバは、集積フォトニクスチップの2つ以上の層間で断熱エバネッセントエレベータを用いて構築され得る。他の実施形態では、U行列及びV行列は、同じチップの異なる層に配置され得、導波路クロスオーバは、使用されない。
【0252】
光信号がU行列成分2-1109の全てを通して伝搬した後、光信号は、
図2-3の第2の行列モジュール2-303に類似して実施される対角行列成分2-1111に伝搬する。
【0253】
光信号が対角行列成分2-1111の全てを通して伝搬した後、光信号は、
図2-3の第3の行列モジュール2-305に類似して実施されるV行列成分2-1113に伝搬する。行列AのSVDのV行列は、フォトニック処理システム2-1100において、U行列成分2-1109と交互配置されたV行列成分2-1113を用いて実施される。したがって、V行列成分2-1113の全てが単一の自己完結型アレイに物理的に配置されるわけではない。
【0254】
光信号がV行列成分2-1113の全てを通して伝搬した後、光信号は、セレクタスイッチ2-1107に戻り、セレクタスイッチ2-1107は、光信号を、検出のためのホモダイン検出器2-1105に誘導する。
【0255】
本発明者らは、光学エンコーダの後に且つ行列成分の前にセレクタスイッチを含むことにより、折り返しフォトニック処理システム2-1100が回路の効率的な双方向性を可能にすることをさらに認識した。したがって、一部の実施形態では、
図2-1に関連して記載したコントローラ2-107などのコントローラは、光信号が最初にU行列と乗算されるか、又は最初にV
T行列と乗算されるかを制御し得る。光信号が左から右に伝搬する場合、ユニタリ行列Uを実施するように設定されたVBSのアレイに関して、光信号を右から左に伝搬することは、ユニタリ行列U
Tによる乗算を実施する。したがって、VBSのアレイに関する同じ設定は、何れの方向に光信号がアレイを通して伝搬されるかに応じて(これは、セレクタスイッチ2-1107を用いて制御され得る)、U及びU
Tの両方を実施し得る。機械学習アルゴリズムを訓練するために使用される逆伝搬などの一部の適用例では、1つ又は複数の行列を逆に通して光信号を進ませることが望ましい場合がある。他の適用例では、双方向性を用いて、入力ベクトルに対する逆行列の演算を計算し得る。例えば、可逆n×n行列Aの場合、SVDは、A=V
TΣUをもたらす。この行列の逆数は、A
-1=U
TΣ
-1Vであり、Σ
-1は、各対角要素を反転させることによって効率的に計算され得る対角行列の逆数である。ベクトルを行列Aで乗算するために、スイッチは、第1の方向に、行列U、次にΣ、次にV
Tを通るように光信号を指向するように構成される。ベクトルを逆数A
-1で乗算するために、まずΣ
-1行列の実施をプログラムするために特異値が設定される。これは、フォトニックプロセッサの全ての2n+1列(これは、
図2-3に示されたフォトニック処理システムなどの単一方向フォトニック処理システムの場合である)の代わりに、VBSの1つの列のみの設定を変更することである。次に、入力ベクトルを表す光信号は、第1の方向とは逆の第2の方向に行列V
T、次にΣ
-1及び次にUを通して伝搬される。セレクタスイッチ2-1107を用いて、折り返しフォトニック処理システム2-1100は、U行列(又はその転置)を最初に実施すること及びV
T行列(又はその転置)を最初に実施することから簡単に変更され得る。
VI.結び
本出願の技術のいくつかの態様及び実施形態をこのように説明してきたが、当業者であれば様々な変更、修正、及び改良を容易に思い付くであろうことを理解されたい。このような変更、修正、及び改良は、本出願に記載する技術の趣旨及び範囲内にあることが意図されている。したがって、前述の実施形態は例としてのみ提示されたものであり、添付の特許請求の範囲及びその均等物の範囲内において、本発明の実施形態は、具体的に記載されたもの以外の方法で実施し得ることを理解されたい。加えて、本明細書で説明した2つ以上の特徴、システム、物品、材料、及び/又は方法の任意の組み合わせは、そのような特徴、システム、物品、材料、及び/又は方法が互いに矛盾しない場合には、本開示の範囲内に含まれる。
【0256】
同様に、説明したように、いくつかの態様は、1つ又は複数の方法として具体化することができる。方法の一部として実行される行為は、任意の適したやり方で順序付けることができる。したがって、行為が図示されているのとは異なる順序で実行される実施形態を構成することができ、それは、たとえ図示した実施形態では逐次的な行為として示されていたとしても、いくつかの行為を同時に実行することを含んでもよい。
【0257】
本明細書で定義し、使用するすべての定義は、辞書的定義、参照によって援用される文書中の定義、及び/又は定義された用語の通常の意味を対象とすることを理解されたい。
本明細書の明細書及び特許請求の範囲で使用する場合、不定冠詞「1つの(a)」及び「1つの(an)」は、そうでないと明確に指示されない限りは、「少なくとも1つの」を意味するものと理解されたい。
【0258】
本明細書の明細書及び特許請求の範囲で使用する場合、「及び/又は」という語句は、結合された要素のうちの「いずれか又は両方」、すなわち、結合的に存在する場合もあれば、離接的に存在する場合もある要素を意味するものと理解されたい。
【0259】
本明細書及び特許請求の範囲で使用される「回路」という用語は、単独で又は例えばアナログ電気回路、デジタル電子回路及び光回路を含む他の回路との組み合わせで考えられるあらゆるタイプの回路を意味すると理解されるものとする。光回路は、とりわけ、固体光学コンポーネント及びそれらの組み合わせ並びに自由空間光学コンポーネント及びそれらの組み合わせを含む。
【0260】
本明細書の明細書及び特許請求の範囲で使用する場合、1つ又は複数の要素の列挙に言及する際の「少なくとも1つ」という語句は、要素の列挙内の要素のうちのいずれか1つ又はそれ以上から選択される少なくとも1つの要素を意味するが、要素の列挙内に具体的に列挙されたありとあらゆる要素のうちの少なくとも1つを必ずしも含まず、また、要素の列挙内の要素の任意の組み合わせを排除するものではないことを理解されたい。この定義は、「少なくとも1つ」という語句が言及する要素の列挙内で特定的に識別された要素以外の要素が、特定的に識別されたそれらの要素に関連するか、又は関連しないかに関わらず、任意選択により存在し得ることもまた可能にする。
【0261】
「およそ」及び「約」という用語は、いくつかの実施形態では目標値の±20%以内、いくつかの実施形態では目標値の±10%以内、いくつかの実施形態では目標値の±5%以内、そしてさらに、いくつかの実施形態では目標値の±2%以内を意味するように使用され得る。「およそ」及び「約」という用語は、目標値を含んでもよい。