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

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特表2023-552459クロスバーアレイの為の、最悪のケースのノイズ及びバウンド管理
<>
  • 特表-クロスバーアレイの為の、最悪のケースのノイズ及びバウンド管理 図1
  • 特表-クロスバーアレイの為の、最悪のケースのノイズ及びバウンド管理 図2
  • 特表-クロスバーアレイの為の、最悪のケースのノイズ及びバウンド管理 図3
  • 特表-クロスバーアレイの為の、最悪のケースのノイズ及びバウンド管理 図4
  • 特表-クロスバーアレイの為の、最悪のケースのノイズ及びバウンド管理 図5
  • 特表-クロスバーアレイの為の、最悪のケースのノイズ及びバウンド管理 図6
  • 特表-クロスバーアレイの為の、最悪のケースのノイズ及びバウンド管理 図7
  • 特表-クロスバーアレイの為の、最悪のケースのノイズ及びバウンド管理 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-15
(54)【発明の名称】クロスバーアレイの為の、最悪のケースのノイズ及びバウンド管理
(51)【国際特許分類】
   G06N 3/065 20230101AFI20231208BHJP
【FI】
G06N3/065
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023534345
(86)(22)【出願日】2021-11-04
(85)【翻訳文提出日】2023-06-06
(86)【国際出願番号】 CN2021128643
(87)【国際公開番号】W WO2022121569
(87)【国際公開日】2022-06-16
(31)【優先権主張番号】17/113,898
(32)【優先日】2020-12-07
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.SMALLTALK
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】100118599
【弁理士】
【氏名又は名称】村上 博司
(74)【復代理人】
【識別番号】100160738
【弁理士】
【氏名又は名称】加藤 由加里
(72)【発明者】
【氏名】ラッシュ,マルテ ヨハネス
(57)【要約】
最悪のケースのシナリオに基づくスケーリング係数を使用してRPUクロスバーアレイに対してDNN訓練する為のノイズ及びバウンド管理の為の技術が提供される。ノイズ及びバウンド管理の方法は、RPUデバイスのアナログクロスバーアレイの為の入力ベクトル値xを取得すること、ここで、重み行列がRPUデバイスの該アナログクロスバーアレイにマッピングされる;最悪のケースのシナリオに基づいて該入力ベクトル値xをスケーリングして、RPUデバイスの該アナログクロスバーアレイへの入力として使用する為にスケーリングされた入力ベクトル値x'を提供すること、ここで、該最悪のケースのシナリオは、該入力ベクトル値xからの絶対値の合計を乗じられた重み行列の想定最大重みを含む、を含む。
【選択図】図2
【特許請求の範囲】
【請求項1】
ノイズ及びバウンド管理の方法であって、
抵抗処理ユニット(RPU)デバイスのアナログクロスバーアレイの為の入力ベクトル値xを取得すること、ここで、重み行列がRPUデバイスの前記アナログクロスバーアレイにマッピングされる;及び、
最悪のケースのシナリオに基づいて前記入力ベクトル値xをスケーリングして、RPUデバイスの前記アナログクロスバーアレイへの入力として使用する為にスケーリングされた入力ベクトル値x'を提供すること、ここで、前記最悪のケースのシナリオは、前記入力ベクトル値xからの絶対値の合計を乗じられた重み行列の想定最大重みを含む、
を含む、前記方法。
【請求項2】
絶対最大入力値xmxを前記入力ベクトル値xから計算すること;
提案されたスケーリング係数σを
【数1】
として計算すること、ここで、ωは前記重み行列の前記想定最大重みであり、sは合計入力変数であり、及びbはRPUデバイスの前記アナログクロスバーアレイの出力バウンドである;
ノイズ及びバウンド管理スケーリング係数αを、前記絶対最大入力値xmx又は前記提案されたスケーリング係数σのいずれか大きい方に設定すること;並びに、
前記ノイズ及びバウンド管理スケーリング係数αを用いて、前記入力ベクトル値xをスケーリングすること
を更に含む、請求項1に記載の方法。
【請求項3】
前記絶対最大入力値xmxが、
【数2】
として計算される、請求項2に記載の方法。
【請求項4】
前記入力ベクトル値xの全ての絶対値の合計を計算すること;及び、
前記入力ベクトル値xの全ての前記絶対値の前記合計を前記合計入力変数sに指定すること
を更に含む、請求項2に記載の方法。
【請求項5】
正の入力ベクトル値(sp)のみの全ての絶対値の合計を計算すること;
負の入力ベクトル値(sn)のみの全ての絶対値の合計を計算すること;及び、
spとsnのうちの大きい方を前記合計入力変数sに指定すること
を更に含む、請求項2に記載の方法。
【請求項6】
【数3】
として計算される値、又は
【数4】
として計算される他方の値のいずれか小さい方の値を計算値として、前記提案されたスケーリング係数σをキャッピングすること、ここで、ρは変数であり、及びγDACは、デジタルからアナログへの量子化のビン幅である、
を更に含む、請求項2に記載の方法。
【請求項7】
前記重み行列の前記想定最大重みωを減少させること;及び、
前記提案されたスケーリング係数σを再計算すること
を更に含む、請求項2に記載の方法。
【請求項8】
前記スケーリングされた入力ベクトル値x'をアナログ信号に変換すること;及び、
RPUデバイスの前記アナログクロスバーアレイに対してベクトル-行列乗算演算を実行すること
を更に含む、請求項2に記載の方法。
【請求項9】
前記ベクトル-行列乗算演算を実行することが、
前記スケーリングされた入力ベクトル値x'の各々に、前記重み行列における対応する重み値を乗算すること
を含む、請求項8に記載の方法。
【請求項10】
RPUデバイスの前記アナログクロスバーアレイから得られた複数のアナログ出力ベクトル値を1つのデジタル信号に変換して、デジタル出力ベクトル値y'を提供すること;並びに、
前記ノイズ及びバウンド管理スケーリング係数αを用いて前記デジタル出力ベクトル値y'を再スケーリングして、再スケーリングされたデジタル出力ベクトル値yを提供すること
を更に含む、請求項8に記載の方法。
【請求項11】
絶対最大入力値xmxを前記入力ベクトル値xから計算すること;
前記絶対最大入力値xmxをスケーリング係数αに指定すること;
前記入力ベクトル値xを前記スケーリング係数αを用いてスケーリングして、RPUデバイスのアナログクロスバーアレイへの入力として使用する為にスケーリングされた入力ベクトル値x'initialを提供すること;
前記スケーリングされた入力ベクトル値x'initialをアナログ信号に変換すること;
RPUデバイスの前記アナログクロスバーアレイに対してベクトル-行列乗算演算を実行すること;
RPUデバイスの前記アナログクロスバーアレイから得られた複数のアナログ出力ベクトル値を1つのデジタル信号に変換して、複数のデジタル出力ベクトル値y'initialを提供すること;
前記複数のデジタル出力ベクトル値y'initialのうちのいずれかがクリッピングされていることを判定すること;及び、
前記複数のデジタル出力ベクトル値y'initialのうちの少なくとも1つがクリッピングされている場合に、最悪のケースのシナリオに基づいて、入力ベクトル値xをスケーリングすること
を更に含む、請求項1に記載の方法。
【請求項12】
ノイズ及びバウンド管理の為の装置であって、該装置は、メモリに接続されたプロセッサを備えており、該プロセッサは、
RPUデバイスのアナログクロスバーアレイの為の入力ベクトル値xを取得する、ここで、重み行列がRPUデバイスの前記アナログクロスバーアレイにマッピングされる;及び、
最悪のケースのシナリオに基づいて前記入力ベクトル値xをスケーリングして、RPUデバイスの前記アナログクロスバーアレイへの入力として使用する為にスケーリングされた入力ベクトル値x'を提供する、ここで、前記最悪のケースのシナリオは、前記入力ベクトル値xからの絶対値の合計を乗じられた重み行列の想定最大重みを含む、
ように動作可能である、前記装置。
【請求項13】
前記プロセッサが、
絶対最大入力値xmxを前記入力ベクトル値xから計算する;
提案されたスケーリング係数σを
【数5】
として計算する、ここで、ωは前記重み行列の前記想定最大重みであり、sは合計入力変数であり、及びbはRPUデバイスの前記アナログクロスバーアレイの出力バウンドである;
ノイズ及びバウンド管理スケーリング係数αを、前記絶対最大入力値xmx又は前記提案されたスケーリング係数σのいずれか大きい方に設定する;並びに、
前記ノイズ及びバウンド管理スケーリング係数αを用いて、前記入力ベクトル値xをスケーリングする
ように更に動作可能である、請求項12に記載の装置。
【請求項14】
前記プロセッサが、
前記入力ベクトル値xの全ての絶対値の合計を計算する;及び、
前記入力ベクトル値xの全ての前記絶対値の前記合計を前記合計入力変数sに指定する
ように更に動作可能である、請求項13に記載の装置。
【請求項15】
前記プロセッサが、
正の入力ベクトル値(sp)のみの全ての絶対値の合計を計算する;
負の入力ベクトル値(sn)のみの全ての絶対値の合計を計算する;及び、
spとsnのうちの大きい方を前記合計入力変数sに指定する
ように更に動作可能である、請求項13に記載の装置。
【請求項16】
前記プロセッサが、
【数6】
として計算される値、又は
【数7】
として計算される他方の値のいずれか小さい方の値を計算値として、前記提案されたスケーリング係数σをキャッピングする、ここで、ρは変数であり、及びγDACは、デジタルからアナログへの量子化のビン幅である
ように更に動作可能である、請求項13に記載の装置。
【請求項17】
ノイズ及びバウンド管理の為の非一時的なコンピュータプログラム製品であって、該コンピュータプログラム製品は、コンピュータ可読記憶媒体に埋め込まれた複数の命令を有する該コンピュータ可読記憶媒体を備えており、該複数の命令は、コンピュータに、
RPUデバイスのアナログクロスバーアレイの為の入力ベクトル値xを取得すること、ここで、重み行列がRPUデバイスの前記アナログクロスバーアレイにマッピングされる;及び、
最悪のケースのシナリオに基づいて前記入力ベクトル値xをスケーリングして、RPUデバイスの前記アナログクロスバーアレイへの入力として使用する為にスケーリングされた入力ベクトル値x'を提供すること、ここで、前記最悪のケースのシナリオは、前記入力ベクトル値xからの絶対値の合計を乗じられた重み行列の想定最大重みを含む、
をさせるように該コンピュータによって実行可能である、前記非一時的なコンピュータプログラム製品。
【請求項18】
前記複数の命令は、前記コンピュータに、
絶対最大入力値xmxを前記入力ベクトル値xから計算すること;
提案されたスケーリング係数σを
【数8】
として計算すること、ここで、ωは前記重み行列の前記想定最大重みであり、sは合計入力変数であり、及びbはRPUデバイスの前記アナログクロスバーアレイの出力バウンドである;
ノイズ及びバウンド管理スケーリング係数αを、前記絶対最大入力値xmx又は前記提案されたスケーリング係数σのいずれか大きい方に設定すること;並びに、
前記ノイズ及びバウンド管理スケーリング係数αを用いて、前記入力ベクトル値xをスケーリングすること
をさせる、請求項17に記載の非一時的なコンピュータプログラム製品。
【請求項19】
前記複数の命令が、前記コンピュータに、
前記入力ベクトル値xの全ての絶対値の合計を計算すること;及び、
前記入力ベクトル値xの全ての前記絶対値の前記合計を前記合計入力変数sに指定すること
をさせる、請求項18に記載の非一時的なコンピュータプログラム製品。
【請求項20】
前記複数の命令が、前記コンピュータに、
正の入力ベクトル値(sp)のみの全ての絶対値の合計を計算すること;
負の入力ベクトル値(sn)のみの全ての絶対値の合計を計算すること;及び、
spとsnのうちの大きい方を前記合計入力変数sに指定すること
をさせる、請求項18に記載の非一時的なコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、抵抗処理ユニット(RPU:resistive processing unit)デバイスのアナログクロスバーアレイ(analog crossbar arrays)を有する深層ニューラルネットワーク(DNN:deep neural network)の訓練に関し、より特には、効果的な実行時間の改善をもたらす最悪のケースのシナリオ(worst-case scenario)に基づくスケーリング係数を使用してRPUクロスバーアレイにおけるDNN訓練のノイズ及びバウンド管理の為の技術に関する。
【背景技術】
【0002】
深層ニューラルネットワーク(DNN)は、メモリデバイス、例えば抵抗処理ユニット(RPU)、のアナログクロスバーアレイで具現化されることができる。DNNベースのモデルは、様々な異なる認知ベースのタスク、例えば、物体認識及び音声認識、並びに自然言語処理、の為に使用されてきている。これらのタスクを実行する際に、ニューラルネットワークの訓練が、高いレベルの精度を提供する為に必要である。しかしながら、RPUアレイにおいて行われる演算は本質的にアナログであり、従って、様々なノイズ源が発生しやすい。RPUアレイへの入力値が小さい場合(例えば、バックワードサイクルパス(backward cycle pass))に、出力信号がノイズによって埋もれてしまい、不正確な結果を生じてしまう可能性がある。
【0003】
更に、デジタル・アナログ変換器(DAC:digital-to-analog converter)及びアナログ・デジタル変換器(ADC:analog-to-digital converter)が夫々、RPUアレイへのデジタル入力をアナログ信号に変換する為に、及びRPUアレイからの出力をデジタル信号に戻す為に使用される。従って、該訓練プロセスはまた、該アレイの為に使用されるDAC及びADCのバウンドされた範囲(bounded ranges)によって制限される。
【0004】
RPUアレイにおけるDNN訓練の為に、特に自動重みスケーリングに従って重みを設定する場合に、バウンド管理(bound management)が重要になる。自動重みスケーリングにおいて、該RPUアレイ内のRPUデバイスの利用可能な抵抗状態リソースは、該RPUアレイのサイズに応じてRPUデバイスのバウンドされた重み範囲(bounded weight range)をスケーリングすることにより、DNN訓練の為に有用である重み範囲(抵抗値)に最適にマッピングされる。
【0005】
慣用的なアプローチは、入力ベクトルの最大値(m)を識別し、その最大値(m)によってRPUアレイへの入力値をスケーリングして、最良のアナログノイズ性能を得る(ノイズ管理:noise management)ことである。RPUアレイの出力での飽和(saturation)は、RPUアレイへの入力信号が形成される値を小さくすることによってバウンドを管理する(バウンド管理:bound management)為に解消される。
【0006】
しかしながら、該バウンドを超えると、出力閾値に到達する為に、ダウンスケールされた入力を使用して繰り返し計算が必要とされる。自動重みスケーリングによる増加されたテストエラーの問題を解決する際には非常に効果的であるが、この反復的なダウンスケーリングのアプローチは、望ましくないことに、コスト、すなわち可変ランタイム、を生じる。
【0007】
それ故に、改善された実行時間を有する効果的なノイズ及びバウンド管理技術が望まれている。
【発明の概要】
【課題を解決するための手段】
【0008】
本発明は、効果的なランタイム改善を提供する最悪のケースのシナリオに基づくスケーリング係数を使用して、抵抗処理ユニット(RPU)のクロスバーアレイにおける深層ニューラルネットワーク(DNN)訓練に対するノイズ及びバウンド管理の為の技術を提供する。本発明の1つの観点において、ノイズ及びバウンド管理の方法が提供される。該方法は、RPUデバイスのアナログクロスバーアレイの入力ベクトル値xを取得すること、ここで、重み行列がRPUデバイスの該アナログクロスバーアレイにマッピングされる;及び、最悪のケースのシナリオに基づいて該入力ベクトル値xをスケーリングして、RPUデバイスの該アナログクロスバーアレイへの入力として使用する為にスケーリングされた入力ベクトル値x'を提供すること、ここで、該最悪のケースのシナリオは、該入力ベクトル値xからの絶対値の合計を乗じられた重み行列の想定最大重み(assumed maximal weight)を含む。
【0009】
例えば、絶対最大入力値xmxは該入力ベクトル値xから計算されることができ、提案されたスケーリング係数(suggested scaling factor)σは、
【数01】
として計算されることができ、ここで、ωは重み行列の該想定最大重みであり、sは合計入力変数であり、及びbはRPUデバイスの該アナログクロスバーアレイの出力バウンド(output bound)である;ノイズ及びバウンド管理スケーリング係数αは、該絶対最大入力値xmx又は該提案されたスケーリング係数σのいずれか大きい方に設定されることができ;及び、入力ベクトル値xは、該ノイズ及びバウンド管理スケーリング係数αを用いてスケーリングされることができる。
【0010】
本発明のより完全な理解、並びに本発明の更なる特徴及び利点は、以下の詳細な説明及び図面を参照することによって得られるであろう。
【図面の簡単な説明】
【0011】
図1図1は、本発明の1つの実施態様に従う、抵抗処理ユニット(RPU)デバイスのアナログクロスバーアレイにおいて具現化された深層ニューラルネットワーク(DNN)を示す図である。
図2図2は、本発明の1つの実施態様に従う、ノイズ及びバウンド管理の為の例示的な方法論を示す図である。
図3図3は、本発明の1つの実施態様に従う、フォワードサイクル操作(forward cycle operation)における、本発明のノイズ及びバウンド管理技術の例示的な実装を示す図である。
図4図4は、本発明の1つの実施態様に従う、バックワードサイクル操作(backward cycle operation)における本発明のノイズ及びバウンド管理技術の例示的な実装を示す図である。
図5図5は、本発明の1つの実施態様に従う、ノイズ及びバウンド管理の為の例示的な代替的な方法論を示す図である。
図6図6は、本発明の1つの実施態様に従って本明細書に提示された方法論の1以上を実行する為の例示的な装置を示す図である。
図7図7は、本発明の1つの実施態様に従うクラウドコンピューティング環境を示す図である。
図8図8は、本発明の1つの実施態様に従う抽象化モデル層を示す図である。
【発明を実施するための形態】
【0012】
上記に提供されているように、既存のノイズ及びバウンド管理技術は、最良のアナログノイズ性能を得るようにRPUアレイへの入力値をスケールする為に入力ベクトル内の最大値(m)を使用することを含む(ノイズ管理)。バウンドを管理する為に、出力閾値に達するまでRPUアレイへの入力信号が形成されるところの値が繰り返し減少されることによって、RPUアレイの出力での飽和を排除する(バウンド管理)。しかしながら、そうすることは、望ましくないことに、ランタイムの遅延を生じる。
【0013】
有利なことに、(ノイズの多い)アナログシステムの動的範囲が制限され且つランタイムが最小化されなければならない場合に、アナログRPUクロスバーアレイにおける深層ニューラルネットワーク(DNN)訓練の為のノイズ及びバウンド管理技術が、本明細書において提供される。すなわち、以下で詳細に記載されているように、本発明のアプローチは、最悪のケースのシナリオ(すなわち、特定の入力を与えられた任意の重み行列の最大可能出力)を考慮して入力信号をRPUアレイにスケーリングすることであり、それは、入力信号をアナログクロスバーシステムの限られた動的範囲に収める為に必要であるスケーリング係数を推定する為に使用される。
【0014】
図1に示されているように、DNNは、RPUデバイスのアナログクロスバーアレイにおいて具現化されることができ、ここで、アルゴリズム(抽象)重み行列102の各パラメータ(重みWij)は、ハードウェア上の単一のRPUデバイス(RPUij)、すなわちRPUデバイス110の物理クロスバーアレイ104、にマッピングされる。クロスバーアレイ104は、導電性行ワイヤ(conductive row wires)106の(第1の)組と、導電性行ワイヤ106の該組に対して直交し且つ交差するように配向された導電性列ワイヤ(conductive column wires)108の(第2の)組とを有する(図1を参照されたい)。導電性行ワイヤ106の該組及び導電性列ワイヤ108の該組の交差点は、RPUデバイス110のクロスバーアレイ104を形成するRPUデバイス110によって分離される。各RPUデバイス110は、2つの電極の間の活性領域を備えていることができる(すなわち、2端子デバイス)。活性領域の導電状態は、RPUデバイス110の重み値を識別し、それにより、該電極へのプログラミング信号の印加によって更新/調整されることができる。
【0015】
各RPUデバイス110(RPUij)は、その位置、すなわちクロスバーアレイ104のi番目の行及びj番目の列における位置、に基づいて一意的に識別される。例えば、クロスバーアレイ104の上から下へ及び左から右へ行くと、第1の導電性行ワイヤ106aと第1の導電性列ワイヤ108aとの交点でのRPUデバイス110はRPU11として指定され、第1の導電性行ワイヤ106aと第2の導電性列ワイヤ108bとの交点でのRPUデバイス110はRPU12と指定され、以下同様である。重み行列102の重みパラメータとクロスバーアレイ104におけるRPUデバイス110とのマッピングは同じ規則に従う。例えば、重み行列102の重みWi1はクロスバーアレイ104のRPUi1にマッピングされ、重み行列102の重みWi2はクロスバーアレイ104のRPUi2にマッピングされ、以下、同様である。
【0016】
クロスバーアレイ104のRPUデバイス110は、DNN中のニューロン間の重み付けされた接続として機能する。RPUデバイス110の抵抗は、導電性行ワイヤ106及び導電性列ワイヤ108の複数の組から個々のワイヤ間に印加される電圧を制御することによって変更されることができる。RPUデバイス110の抵抗値を変更することとは、例えば、RPUデバイス110の高抵抗状態又は低抵抗状態に基づいて、データがクロスバーアレイ104内にどのように記憶されるかである。RPUデバイス110の抵抗状態(高又は低)は、導電性行ワイヤ106及び導電性列ワイヤ108の複数の組から対応するワイヤに(読み取り)電圧を印加し、及び対象のRPUデバイス110を通過する電流を測定することによって読み取られる。重みを伴う全ての操作は、RPUデバイス110によって完全に並行して実行される。
【0017】
機械学習及び認知科学において、DNNベースのモデルは、動物、特に脳、の生物学的なニューラルネットワークによってインスピレーションされた統計的学習モデルのファミリーである。これらのモデルは、一般的に未知である多数の入力と接続の重みとに依存するシステム及び認知機能を推定又は近似させる為に使用されうる。DNNは、電子信号の形態で互いに「メッセージ」を交換する模擬「ニューロン」として機能するところの相互に接続されたプロセッサ要素の所謂「ニューロモーフィック」(neuromorphic)システムとしてしばしば具現化される。模擬ニューロン間で電子メッセージを伝達するDNNの接続には、所与の接続の強さ又は弱さに対応するところの数値的な重みが提供されている。これらの数値重みは経験に基づいて調整され(adjusted)且つチューニングされる(tuned)ことができる為に、DNNは入力に対して適応的で且つ学習することができる。例えば、画像分類の為のDNNは、入力画像のピクセルによって活性化されるところの入力ニューロンの1組によって定義される。ネットワークの設計者によって決定された関数によって重み付けされ且つ変換された後、これらの入力ニューロンの活性化は、他の下流ニューロンへと渡される。このプロセスは、出力ニューロンが活性化されるまで繰り返される。活性化された出力ニューロンは、画像の分類を決定する。
【0018】
DNN訓練は、各パラメータ(重みWij)のエラー勾配がバックプロパゲーションを用いて計算されるプロセス、例えば確率的勾配降下法(SGD:stochastic gradient descent)、を使用して行われることができる。バックプロパゲーションは、フォワードサイクル、バックワードサイクル、及び重み更新サイクルの3つのサイクルで行われ、それらは、収束基準が満たされるまで複数回繰り返される。
【0019】
DNNベースのモデルは、複数の抽象レベルを有するデータの表現を学習する複数の処理層で構成される。N個の入力ニューロンがM個の出力ニューロンに接続された単一の処理層の場合、該フォワードサイクルにおいて、ベクトルと行列の乗算(y=Wx)を計算し、ここで、長さNのベクトルxは入力ニューロンの活動を表し、サイズM×Nの行列Wは入力ニューロンと出力ニューロンとの各対の間の重み値を記憶する。結果として得られた長さMのベクトルyは更に、抵抗性メモリ素子の各々に対して非線形活性化を行うことによって処理され、そして次に、次の層に渡される。
【0020】
情報が最終出力層に一旦到達すると、該バックワードサイクルはエラー信号を計算し、そしてDNNを通じてエラー信号(error signal)をバックプロパゲートすることを含む。単一層におけるバックワードサイクルはまた、重み行列(z=Wtδ)の転置(各行と対応する列とを入れ替える)におけるベクトル-行列乗算を含み、ここで、長さMのベクトルδは出力ニューロンによって計算されたエラーを表し、及び長さNのベクトルzは更にニューロンの非線形性の微分を用いて処理され、そして次に、前の層へと渡される。
【0021】
最後に、重み更新サイクルにおいて、フォワードサイクル及びバックワードサイクルにおいて使用された2つのベクトルの外積を行うことによって、重み行列Wが更新される。この2つのベクトルの外積はしばしば、
【数02】
ここで、ηはグローバル学習率である。バックプロパゲーションの間に重み行列102で実行されるこれらの演算の全ては、RPUデバイス110のクロスバーアレイ104で実装されることができる。
【0022】
上記で強調されているように、デジタル・アナログ変換器(DAC)及びアナログ・デジタル変換器(ADC)が夫々、クロスバーアレイ104のRPUデバイス110へのデジタル入力をアナログ信号に変換し、及びクロスバーアレイ104のRPUデバイス110からの出力をデジタル信号に戻す為に使用される。アナログRPUクロスバーアレイにおけるDNN訓練の為のノイズ及びバウンド管理では、
【数03】
は、アナログ空間での入力ベクトルであり、及び、
【数04】
は、デジタル出力ベクトルであり、fDAC及びfADCは夫々、DAC及びADCによる変換を表し、αはノイズ及びバウンド管理スケーリング係数である。クロスバーアレイ104のRPUデバイス110を通じた操作は、ADCの飽和から由来するバウンドされた出力値(bounded output values)を有する。すなわち、ADCは、ある範囲(-b,…,b)でバウンドされ、ここで、出力バウンド(-b)値よりも小さい値又は出力バウンド(b)値よりも大きい値は、夫々のバウンドまで飽和される。バウンド値を超えた相対的な情報は、クリッピングにより失われる。慣用的には,アナログ計算出力
【数05】
がバウンド値よりも大きい場合、すなわち、
【数06】
の場合、該出力が該バウンド値未満になるまで、該演算が、設定α←2αで反復して行われる(バウンド管理)。しかしながら、反復演算はランタイムに悪影響を及ぼす。
【0023】
対照的に、本発明の技術に従って、クロスバーアレイ104のRPUデバイス110への入力は、RPUデバイス110のアナログクロスバーアレイ104の限られた動的範囲によるクリッピングされた出力値のリスクを軽減する為に、最悪のケースのシナリオに基づいてスケーリングされる。本明細書において使用される場合に、語「最悪のケースのシナリオ」は、特定の入力ベクトルを与えられた重み行列(例えば、重み行列102)からの最大可能出力(すなわち、最大重み)を云う。RPUデバイスにおける重みを表す物理的コンダクタンスは、物理的に制限されている。従って、本明細書において、重み行列における重みは、範囲 -wmax...wmaxであると仮定され、ここで、wmaxは、gmax(すなわち、RPUデバイスの最大達成可能コンダクタンス)に対応する。以下において詳細に説明されているように、本発明の技術では、入力信号の絶対合計と一定の最大重みの仮定とが、入力をクロスバーアレイ104のRPUデバイス110の動的範囲内に入るようにデジタル周辺部(DACの前又はADCの後)における入力及び出力のノイズ及びバウンド管理スケーリング係数アルファ(α)を計算する為に使用される。有利なことに、該バウンドがクリッピングされたときに結果が再計算される必要がない故に、本発明の最悪のケースの管理プロセスは可変ランタイムを追加しない。なぜならば、スケーリング係数を決定する為の基準として最悪のケースの状況(worst-case situation)を採用することによって、出力バウンドが決してクリッピングされないことが保証される為である。
【0024】
図2は、最悪のケースのシナリオに関してクロスバーアレイ104のRPUデバイス110への入力をスケーリングする、ノイズ及びバウンド管理の為の例示的な方法論200を示す図である。上述されているように、重み行列102に対して実行されるフォワードサイクル及びバックワードサイクルは各々、ベクトル-行列乗算演算を含む。RPUデバイス110のアナログクロスバーアレイ104において、このベクトル-行列乗算演算は、各入力ベクトル値(以下を参照されたい)を重み行列102の(対応する行における)対応する重み値Wijと乗算すること、及びそれらの結果を合計することを含む。このプロセスはまた、本明細書において、RPUデバイス110のアナログクロスバーアレイ104の「乗算及び累積」(multiply-and-accumulate)操作と云われる。各乗算及び累積サイクルの場合に、方法論200の工程は、RPUデバイス110のアナログクロスバーアレイ104の演算の為に使用されるスケーリング係数αを決定する為のデジタルにおける事前演算として実行される。例示的な実施態様に従うと、ノイズ及びバウンド管理スケーリング係数αの計算、RPUデバイス110のクロスバーアレイ104からの入力値/出力値をαによりスケーリング/再スケーリングする(以下を参照されたい)、等の方法論200の1以上の工程が、例えば装置、例えば、下記の図6の説明と関連して記載された装置600、によってRPUアレイハードウェアの外部で実行されるということに留意されたい。加えて、本発明の技術の1以上の要素は任意的に、クラウド環境におけるサービスとして提供されることができる。例えば、例示に過ぎないが、入力ベクトル値(以下を参照されたい)の為に使用される訓練データは、クラウドサーバ上にリモートで存在することができる。また、方法論200の複数の工程のうちのいずれかの工程は、高性能のCPU及びGPUを利用する為に専用のクラウドサーバ上で実行されることができ、その後、結果がローカルデバイスに送り返される。
【0025】
工程202において、入力ベクトルが取得される。該入力ベクトルは、デジタル値xを含む。該入力ベクトル中のデジタル値xはまた、本明細書において、「入力ベクトル値x」と云われる。例示的な実施態様に従うと、入力ベクトル値xは、訓練データセットからのデータを含む。例示にすぎないが、該訓練データセットは、DNN訓練データのデータベース又は他のリポジトリから取得されることができる。
【0026】
工程204において、入力ベクトル値の絶対最大値xmxが、下記式で計算される。
【数07】
【0027】
ここで、本明細書において、xmxはまた、絶対最大入力値と云われる。次に、工程206において、絶対最大入力値xmxが、該スケーリング係数αに指定される。
【0028】
該プロセスにおけるこの段階で、RPUデバイス110のアナログクロスバーアレイ104(上記を参照されたい)上で実行されるベクトル-行列乗算演算の為に使用されるであろう重み値は、先験的に不明である。しかしながら、上記で強調されているように、最悪のケースの想定(worst-case assumption)は、全てのアナログ重みが、正の入力ベクトル値の全てに対して最大で正であり、及び負の入力ベクトル値の全てに対して最大で負であるということである。その場合に、工程208において、入力ベクトル値xの全ての絶対値の合計が計算される。工程210において、該合計が合計入力変数s、すなわち下記の式に指定される。
【数08】
【0029】
上述の例において、入力ベクトル値x(負及び正の両方)は、1つのパスでRPUデバイス110のアナログクロスバーアレイ104への入力として与えられる。代替的には、別の例示的な実施態様において、入力ベクトル値xの負の入力値及び正の入力値が、2つの別々のパスでRPUデバイス110のアナログクロスバーアレイ104への入力として与えられ、ここで、該入力ベクトルの夫々の他の入力値(負又は正)がゼロに設定され、そして、該2つのパスの出力が符号補正され、そして、最終結果を得るようにそれに応じて追加される。例えば、第1のパスでRPUデバイス110のアナログクロスバーアレイ104への入力として負の入力値が与えられた場合(一方、正の入力値はゼロに設定される)、第2のパスにおいてRPUデバイス110のアナログクロスバーアレイ104への入力として正の入力値が与えられる(一方、負の入力値はゼロに設定される)、又はその逆が考えられる。その場合に、対応する入力値が夫々のパスについてゼロに設定される故に、全ての正(又は負)の入力ベクトル値が最大の正(又は負)の重みに当たり、他の全ての重みが出力に寄与しない(従って、ゼロと仮定できる)と仮定される対応する最悪のケースの状況を適用することができる。その場合に、正又は負の入力ベクトル値のいずれか大きい方の量が、合計入力変数sに指定される。
【0030】
すなわち、代替的なこの実施態様に従うと、工程212において、正の入力ベクトル値(sp)のみの全ての絶対値の合計が、下記の式で計算される。
【数09】
【0031】
ここで、I(真)=1、及びI(偽)=0は、条件が真であるかどうかを示す。工程214において、負の入力ベクトル値(sn)のみの全ての絶対値の合計が、下記の式で計算される。
【数10】
【0032】
ここで、I(真)=1、及びI(偽)=0は、条件が真であるかどうかを示す。
【0033】
工程216において、2つの数量spとsnのうちの大きい方が合計入力変数sに指定される。すなわち、この例示的な実施態様において、合計入力変数sは下記の式で設定される。
【数11】
【0034】
下記式のオメガ(ω)は、重み行列102の最大重みであり、すなわち、ωが想定最大重みである。しかしながら、以下に詳細に説明されているように、最悪のケースのシナリオの発生は非常に稀である故に、ωは減らす(例えば、想定最大重みの50%に)ことができる。すなわち、出力があり得ない入力ベクトルの為に出力バウンドによってクリッピングされることは確かにあるが、大半の場合はそうならないので、DNN訓練及び推論の結果が有意に変化しないだろう。
【0035】
オメガ(ω)が想定最大重みであることを考慮すると、予想される最悪のケースの合計出力は、合計入力変数sのオメガ倍、すなわちωs、である。上記で強調されているように、この予想される最悪のケースの合計出力は、出力バウンドbよりも小さいことが望まれる。従って、工程218において、(最悪のケースのシナリオにおける)入力ベクトル値の提案されたスケーリング係数シグマ(σ)が、オメガ(ω)と合計入力変数sとの積を出力バウンドbで除したものとして、下記の式で計算される。
【数12】
【0036】
上記で提供されているように、ωは、想定最大重みである。例示的な実施態様に従うと、ωは、RPUデバイス110の最大コンダクタンス値がDNNの「数学的」重み値の点で何に対応するかのマッピングに基づくユーザ定義値である。例えば、例示に過ぎないが、想定最大重みωの好適な値は、0.6でありうる。それ故に、式(7)に基づいて、RPUデバイス110のアナログクロスバーアレイ104からの実際の合計出力が、予想される最悪のケースの合計出力(ωs)と同じくらい事実が大きい場合に、シグマ(σ)=1であり、合計入力変数sはスケーリングされる必要がない。このように、該スケーリングは、最悪のケースのシナリオにおいてであっても、出力バウンドbが決してヒットしないことを保証する。
【0037】
しかしながら、最悪のケースのシナリオの発生は非常に稀である故に(すなわち、RPUデバイス110のアナログクロスバーアレイ104からの実際の総出力が、予想される最悪のケースの合計出力ほど大きくなる可能性はない)、想定最大重みωを、例えば該想定最大重みの50%に、減らすことによって、提案されたスケーリング係数シグマ(σ)を調整し、そして次に、工程218において、提案されたスケーリング係数を再計算することが望ましい場合がある(図2を参照されたい(すなわち、ωを調整する))。その場合、予想される最悪のケースの合計出力のバウンドは実際にヒットするが、大半のケースは出力バウンドbを下回る出力を有することになるであろう。このようにσを調整することにより一般的に、より大きな信号対ノイズ比(SNR:signal-to-noise ratio)が生成され、それは望ましいことである。
【0038】
上記で強調されているように、デジタル・アナログ変換器(DAC)は、RPUデバイス110のアナログクロスバーアレイ104上でベクトル-行列乗算演算を行う際に使用する為に、(方法論200に従って)スケーリングされたデジタル入力ベクトル値をアナログ信号へ変換する為に使用されるであろう。具体的には、DACは、スケーリングされたデジタル入力ベクトル値をアナログパルス幅に変換するであろう。しかしながら、制限されたDAC分解能(limited DAC resolution)がありうる。すなわち、上記の式(7)に従って計算された提案されたスケーリング係数σが実際には非常に大きく、入力ベクトル値の在りうる値を提案されたスケーリング係数σで除した値が、デジタル・アナログ変換の最小ビンよりも小さくなる可能性があることに留意されたい。その場合、RPUデバイス110のアナログクロスバーアレイ104への入力は、DAC変換後に全てゼロであろう。
【0039】
この発生を避ける為に、工程220において、上記の式(7)から計算された値、又は絶対最大入力値xmxを変数(ρ)で乗算し、DACの量子化ビン幅(γDAC)で除した値として下記の式、すなわち、
【数13】
で計算された値のいずれか小さい方の値を採用することによって、該提案されたスケーリング係数σをキャッピングすることが望まれうる。
【数14】
【0040】
入力範囲(-1,…,1)の場合、全範囲は2である。この全範囲がDACによってn段階に分割され、ここで、nは量子化工程の数(例えば、8ビットDACの場合、n=256)であり、量子化ビン幅(又は、単に「ビン幅」)に到達する。従って、本例において、
【数15】
である。例示的な実施態様に従うと、変数ρ=0.25である。変数ρは、最小の有効ビット分解能を越えて実質的に1である。従って、ρ=0.25の場合に、当業者は、σのスケーリングにより、(256の代わりに)入力範囲における4つの異なる値のみを許すであろう。
【0041】
工程222において、該ノイズ及びバウンド管理スケーリング係数(α)は、xmx(上記の式(3)から)又は該提案されたスケーリング係数の値σ(上記の式(8)から)のいずれか大きい方に、下記の式、すなわち、
【数16】
に設定される。
【0042】
このようにすることで、当業者は入力値がクリッピングされることを欲しない故に、該スケーリングされた入力ベクトル値の最大値(下記に記載されている工程224を参照されたい)を1(任意に設定されたDACの最大入力ベクトル値範囲と仮定される(-1,…,1))よりも大きくすることを避ける。
【0043】
上記で強調されているように、上述されたプロセスは、RPUデバイス110のアナログクロスバーアレイ104において実行される各乗算及び累積サイクルの為にノイズ及びバウンド管理スケーリング係数αを事前計算する為に使用される。従って、工程224において、デジタル入力ベクトル値xの各々は、ノイズ及びバウンド管理スケーリング係数(α)(工程222において計算された)によって、下記の式、すなわち、
【数17】
でスケーリングされて、デジタル・アナログ変換器(DAC)を介してアナログ信号に変換されるスケーリングされたデジタル入力ベクトル値x'を提供する。次に、工程226において、アナログ計算がRPUデバイス110のアナログクロスバーアレイ104において実行される。上記で強調されているように、該アナログ計算は、スケーリングされた入力ベクトル値x'の各々に、重み行列102の対応する重み値を乗算することによって、RPUデバイス110のアナログクロスバーアレイ104においてベクトル-行列乗算演算を行うことを含む。
【0044】
同様に、工程228において、RPUデバイス110のアナログクロスバーアレイ104から取得されたアナログ出力ベクトル値の各々は、アナログ・デジタル変換器(ADC)を介してデジタル信号に変換されて、デジタル出力ベクトル値y'を提供する。工程230において、デジタル出力ベクトル値y'の各々は、ノイズ及びバウンド管理スケーリング係数(α)(工程222において計算された)によって、下記の式、すなわち、
【数18】
で再スケーリングされて、再スケーリングされたデジタル出力ベクトル値yを提供する。
【0045】
ここで、本発明の技術の例示的な実施態様が、図3及び図4を参照することによって説明される。すなわち、図3は、RPUデバイス310のアナログクロスバーアレイ304において実行されているフォワードサイクル操作を示す概略図である。図3に示されているように、デジタル入力ベクトル値x(「デジタル入力x」を参照されたい)は、RPUデバイス310のアナログクロスバーアレイ304への入力として提供される。しかしながら、最初に、ノイズ及びバウンド管理スケーリング係数(α)が、上記の図2の方法論200の説明と併せて記載されているように計算される(「ノイズ/バウンド管理計算α」を参照されたい)。次に、デジタル入力ベクトル値xの各々は、ノイズ及びバウンド管理スケーリング係数(α)、すなわちx←x/α、によってスケールングされて、スケーリングされたデジタル入力ベクトル値x'(「スケーリングされたデジタルRPU入力x'」を参照されたい)を提供する。
【0046】
該スケーリングされたデジタル入力ベクトル値x'は、デジタル・アナログ変換器(「DA変換器」を参照されたい)を介してアナログ信号に変換される。該アナログ信号は、RPUデバイス310のアナログクロスバーアレイ304にアナログパルス幅320として提供され、ここで、該アナログ計算が、RPUデバイス310のアナログクロスバーアレイ304において実行される。上記で強調されているように、このアナログ計算は、スケーリングされた入力ベクトル値x'の各々を、対応する重み行列(図示せず)内の対応する重み値と乗算することによって、RPUデバイス310のアナログクロスバーアレイ304においてベクトル-行列乗算演算を実行することを含む。RPUデバイスのアナログクロスバーアレイへの重み行列のマッピングは、上記の図1の説明と関連して記載された。
【0047】
図3に示されているように、RPUデバイス310のアナログクロスバーアレイ304において行われる演算から取得されるアナログ出力ベクトル値は、オペアンプ(operational amplifier)324の反転入力とオペアンプ324の出力(Vout)に(横切って)接続されたコンデンサ(Cint)を有するオペアンプ324を備えている集積回路322に提供される。オペアンプ324の非反転入力は、接地(ground)に接続されている。オペアンプ324の出力(Vout)はまた、アナログ・デジタル変換器(「AD変換器」を参照されたい)の入力に接続されている。
【0048】
アナログ・デジタル変換器(AD変換器)は、RPUデバイス310のアナログクロスバーアレイ304から取得されたアナログ出力ベクトル値の各々をデジタル信号に変換して、デジタル出力ベクトル値y'(「デジタルRPU出力y'」を参照されたい)を提供する。次に、デジタル出力ベクトル値y'の各々は、ノイズ及びバウンド管理スケーリング係数(α)(「アルファを用いたノイズ/バウンド管理」を参照されたい)、すなわちy←yα、を再スケーリングして、再スケーリングされたデジタル出力ベクトル値y(「再スケーリングされたデジタル出力y」を参照されたい)を提供する。上記で提供されているように、処理、例えば、ノイズ及びバウンド管理スケーリング係数αの計算、RPUデバイスのクロスバーアレイからの入力/出力値をαによってスケーリング/再スケーリングする等の処理、は、例えば装置、例えば、以下の図6の説明と関連して記載されている装置600、によって、RPUアレイハードウェアの外部で実行されることができる。
【0049】
図4は、RPUデバイス410のアナログクロスバーアレイ404において実行されているバックワードサイクル操作を示す概略図である。該プロセスは、転置されたアナログRPUアレイ404がバックワードサイクルパスの為に使用されることを除いて、上述の図3の説明と併せて記載されたフォワードサイクル操作と概して同じである。「転置される」とは、入力と出力が交換されること、すなわち、以前の出力が今度は入力となり、及び以前の入力が出力となることを意味する。これは、(実質的に)x=W'yを計算することであり、ここで、W'は、行列Wの転置である。図4において示されているように、デジタル入力ベクトル値x(「デジタル入力x」を参照されたい)は、RPUデバイス410のアナログクロスバーアレイ404への入力として提供される。しかしながら、最初に、ノイズ及びバウンド管理スケーリング係数(α)が、上記の図2の方法論200の説明と併せて記載されているように計算される(「ノイズ/バウンド管理計算α」を参照されたい)。すなわち、上記に提供されているように、各フォワードサイクル及びバックワードサイクルについて、方法論200の工程は、RPUデバイスのアナログクロスバーアレイにおける操作の為に使用されるスケーリング係数αを決定する為のデジタルにおける事前計算として実行される。次に、デジタル入力ベクトル値xの各々は、ノイズ及びバウンド管理スケーリング係数(α)、すなわちx←xα、によってスケーリングされて、スケーリングされたデジタル入力ベクトル値x'(「スケーリングされたデジタルRPU入力x'」を参照されたい)を提供する。
【0050】
該スケーリングされたデジタル入力ベクトル値x'は、デジタル・アナログ変換器(「DA変換器」を参照されたい)を介してアナログ信号に変換される。該アナログ信号は、RPUデバイス410のアナログクロスバーアレイ404にアナログパルス幅420として提供され、ここで、アナログ計算が、RPUデバイス410のアナログクロスバーアレイ404において実行される。上記で強調されているように、このアナログ計算は、スケーリングされた入力ベクトル値x'の各々を、対応する重み行列(図示せず)内の対応する重み値と乗算することによって、RPUデバイス410のアナログクロスバーアレイ404においてベクトル-行列乗算演算を実行することを含む。RPUデバイスのアナログクロスバーアレイへの重み行列のマッピングは、上記の図1の説明と関連して記載された。
【0051】
図4に示されているように、RPUデバイス410のアナログクロスバーアレイ404において行われる演算から取得されるアナログ出力ベクトル値は、オペアンプ(operational amplifier)424の反転入力とオペアンプ424の出力(Vout)に(横切って)接続されたコンデンサ(Cint BACKWORD)を有するオペアンプ424を備えている集積回路422に提供される。オペアンプ424の非反転入力は、接地(ground)に接続されている。オペアンプ424の出力(Vout)はまた、アナログ・デジタル変換器(「AD変換器」を参照されたい)の入力に接続されている。
【0052】
アナログ・デジタル変換器(AD変換器)は、RPUデバイス410のアナログクロスバーアレイ404から取得されたアナログ出力ベクトル値の各々をデジタル信号に変換して、デジタル出力ベクトル値y'(「デジタルRPU出力y'」を参照されたい)を提供する。次に、デジタル出力ベクトル値y'の各々は、ノイズ及びバウンド管理スケーリング係数(α)(「アルファを用いたノイズ/バウンド管理」を参照されたい)、すなわちy←yα、を再スケーリングして、再スケーリングされたデジタル出力ベクトル値y(「再スケーリングされたデジタル出力y」を参照されたい)を提供する。上記で提供されているように、処理、例えば、ノイズ及びバウンド管理スケーリング係数αの計算、RPUデバイスのクロスバーアレイからの入力/出力値をαによってスケーリング/再スケーリングする等の処理、は、例えば装置、例えば、以下の図6の説明と関連して記載されている装置600、によって、RPUアレイハードウェアの外部で実行されることができる。
【0053】
上記に提供されているように、本発明の技術は、最悪のケースのシナリオに基づいて、RPUデバイスのアナログクロスバーアレイへの入力ベクトル値xをスケーリングすることによって、ランタイムを最小化する。上述された実施態様において、スケーリング係数を決定する為の基準として最悪のケースの状況を採用することによって、出力バウンドが決してクリッピングされないことが保証される。
【0054】
代替的な実施態様に従うと、上述された方法論200は、該バウンドが超過される場合にのみ実行される(すなわち、最悪のケースのノイズ及びバウンド管理スケーリング係数αを計算する為に、RPUデバイスのクロスバーアレイからの入力/出力値をαによってスケーリング/再スケーリングする等)。例えば、図5の例示的な方法論500を参照されたい。
【0055】
工程502において、デジタル値xの入力ベクトル、すなわち「入力ベクトル値x」が取得される。例示的な実施態様に従うと、入力ベクトル値xは、訓練データセットからのデータを含む。例示にすぎないが、訓練データセットは、DNN訓練データのデータベース又は他のリポジトリから取得されることができる。
【0056】
工程504において、入力ベクトル値の絶対最大値xmx(本明細書において絶対最大入力値とまた云う)が、上記の式(3)に従って計算される。工程506において、絶対最大入力値xmxが、ノイズ及びバウンド管理スケーリング係数α、すなわち、α=xmx、に指定される。
【0057】
工程508において、デジタル入力ベクトル値xの各々が、該ノイズ及びバウンド管理スケーリング係数α=xmxによって、下記の式、すなわち、
【数19】
でスケーリングされて、デジタル・アナログ変換器(DAC)を介してアナログ信号に変換されるスケーリングされたデジタル入力ベクトル値x'initialを提供する。工程510において、次に、該アナログ計算は、RPUデバイス110のアナログクロスバーアレイ104において実行される。上記で強調されているように、アナログ計算は、スケーリングされた入力ベクトル値x'initialの各々に、重み行列102の対応する重み値を乗算することによって、RPUデバイス110のアナログクロスバーアレイ104においてベクトル-行列乗算演算を行うことを含む。同様に、工程512において、RPUデバイス110のアナログクロスバーアレイ104から取得されたアナログ出力ベクトル値の各々は、アナログ・デジタル変換器(ADC)を介してデジタル信号に変換されて、デジタル出力ベクトル値y'initialを提供する。
【0058】
工程514において、複数のデジタル出力ベクトル値y'initialのいずれかがクリッピングされたかどうかについての判定が行われる(バウンド管理)。例えば、デジタル出力ベクトル値y'initialのいずれかがクリッピングされているかどうかの判定は、オペアンプの出力での飽和を感知することによって行われることができる。バウンドの該クリッピングを判定する為の回路方法はある。しかしながら、簡単な方法は、ADCへの入力がADC範囲を超えるときに出力がこれらの値に飽和する為に、ADCの最大出力値と最小出力値を単純に使用することである。従って、例えば、任意のデジタル出力が255(それは、8ビットDACの最高出力値である)又は0(それは、8ビットDACの最低出力値である)である場合に、該バウンドがクリッピングされたと判断され、そして、該計算が繰り返される。
【0059】
工程514において、デジタル出力ベクトル値y'initialのいずれもがクリッピングされていないと判断された場合(いいえ)、工程516において、デジタル出力ベクトル値y'initialの各々は、ノイズ及びバウンド管理スケーリング係数α=xmxによって、下記の式(13)、すなわち、
【数20】
で再スケーリングされて、再スケーリングされたデジタル出力ベクトル値yを提供し、プロセスは終了する。一方、工程514において、デジタル出力ベクトル値y'initialの少なくとも1つがクリッピングされたと判断された場合(はい)、工程518において、最悪のケースのシナリオのノイズ及びバウンド管理スケーリング係数αが、上記の図2の方法論200の説明と関連して記載されているように、
【数21】
(上記の式(8)を参照されたい)として計算される。
【0060】
次に、工程520において、デジタル入力ベクトル値xの各々は、該最悪のケースのノイズ及びバウンド管理スケーリング係数
【数22】
によって、下記の式、すなわち、
【数23】
でスケーリングされて、DACを介してアナログ信号に変換されるスケーリングされたデジタル入力ベクトル値x'を提供する。次に、工程522において、アナログ計算がRPUデバイス110のアナログクロスバーアレイ104において実行される。上記で強調されているように、該アナログ計算は、スケーリングされた入力ベクトル値x'の各々に、重み行列102の対応する重み値を乗算することによって、RPUデバイス110のアナログクロスバーアレイ104においてベクトル-行列乗算演算を行うことを含む。
【0061】
同様に、工程524において、RPUデバイス110のアナログクロスバーアレイ104から取得されたアナログ出力ベクトル値の各々は、ADCを介してデジタル信号に変換されて、デジタル出力ベクトル値y'を提供する。工程526において、デジタル出力ベクトル値y'の各々は、該最悪のケースのシナリオのノイズ及びバウンド管理スケーリング係数
【数24】
によって、下記の式(15)、すなわち、
【数25】
で再スケーリングされて、再スケーリングされたデジタル出力ベクトル値yを提供する。バウンドは通常の最悪のケースのシナリオにおいてクリッピングされない故に、この2回目の反復において該出力バウンドのクリッピングはテストされない。しかしながら、想定最大重みωが変更され(上記を参照されたい)、何らかのクリッピングが生じた場合であっても、このクリッピングは無視されるべきであり、該バウンドは2回目の反復においてテストされない。従って、最悪の場合、方法論500は、2回の反復、すなわち、該出力バウンドがクリッピングされたと判断される最初の1回と、最悪のケースのシナリオのノイズ及びバウンド管理スケーリング係数αとを用いた再度の反復とを必要とするだけである。そのため、ランタイムへの影響は最小限であり、すなわち、ランタイムは最大で2回増加する。
【0062】
本発明は、システム、方法若しくはコンピュータプログラム製品又はそれらの組み合わせでありうる。該コンピュータプログラム製品は、プロセッサに本発明の観点を実行させる為のコンピュータ可読プログラム命令を有する1以上のコンピュータ可読記憶媒体を包含しうる。
【0063】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用する為の命令を保持且つ記憶することができる有形のデバイスであることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージデバイス、磁気ストレージデバイス、光ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイス、又はこれらの任意の適切な組み合わせでありうるが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、下記を包含する:ポータブルのコンピュータディスケット(登録商標)、ハードディスク、ランダムアクセスメモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read only memory)、消去可能なプログラム可能な読み取り専用メモリ(EPROM(erasable programmable read-only memory)又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM:static random access memory)、ポータブル・コンパクトディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリスティック、フロッピーディスク、機械的に符号化されたデバイス、例えば、パンチカード若しくは命令が記録されている溝内の隆起構造又はこれらの任意の適切な組み合わせ。本明細書において使用される場合、コンピュータ可読記憶媒体は、一時的な信号それ自体、例えば、電波又は他の自由に伝播する電磁波、導波管若しくは他の伝送媒体を伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、又は電線を介して送信される電気信号、であると解釈されるべきでない。
【0064】
本明細書において記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から個々のコンピューティングデバイス/処理デバイスに、又はネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク若しくはワイヤレスネットワーク又はそれらの組み合わせ、を介して外部コンピュータ又は外部記憶デバイスにダウンロードされることができる。該ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ若しくはエッジサーバ又はこれらの組み合わせで構成されうる。各コンピューティングデバイス/処理デバイスにおけるネットワークアダプタカード又はネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そして、該コンピュータ可読プログラム命令を、夫々のコンピューティングデバイス/処理デバイス内にコンピュータ可読記憶媒体中に記憶する為に伝送する。
【0065】
本発明の動作を実行する為のコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の為の構成データ、又は、1以上のプログラミング言語、例えばオブジェクト指向プログラミング言語、例えば、Smalltalk、C++等、慣用的な手続き型プログラミング言語(例えば、「C」プログラミング言語又は同様のプログラミング言語)、の任意の組み合わせで書かれているソースコード又はオブジェクトコードのいずれか、でありうる。該コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に、ユーザのコンピュータ上で部分的に、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に、ユーザのコンピュータ上で部分的に且つリモート・コンピュータ上で部分的に、又はリモート・コンピュータ若しくはサーバ上で全体的に、実行されうる。後者のシナリオにおいて、該リモート・コンピュータは、任意の種類のネットワーク、例えば、ローカルエリアネットワーク(LAN:local area network)若しくはワイドエリアネットワーク(WAN:wide area network)、を介してユーザのコンピュータに接続されうるか、又は該接続は(例えば、インターネットサービスプロバイダを使用したインターネットを通じて)外部コンピュータに対して行われうる。幾つかの実施態様において、電子回路、例えば、プログラム可能な論理回路、フィールドプログラム可能なゲートアレイ(FPGA:field-programmable gate arrays)又はプログラム可能なロジックアレイ(PLA:programmable logic arrays)、は、本発明の観点を実行する為に、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をパーソナライズすることによって、コンピュータ可読プログラム命令を実行しうる。
【0066】
本発明の観点は、本発明の実施態様に従う、方法、装置(システム)及びコンピュータプログラム製品若しくはコンピュータプログラムのフローチャート図若しくはブロック図又はそれらの組み合わせを参照して本明細書において記載されている。該フローチャート図若しくは該ブロック図又はそれらの組み合わせの各ブロック、並びに該フローチャート図若しくは該ブロック図又はそれらの組み合わせにおける複数のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装されることができることが理解されるであろう。
【0067】
これらのコンピュータ可読プログラム命令は、コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサを介して実行する命令がフローチャート図若しくはブロック図又はそれらの組み合わせの1以上のブロックにおいて特定された機能/動作を実装する為の手段を作成するように、コンピュータのプロセッサ又は他のプログラム可能なデータ処理装置に提供されて、マシンを作り出しうる。記憶された命令を有するコンピュータ可読記憶媒体が該フローチャート図若しくはブロック図又はそれらの組み合わせの1以上のブロックにおいて特定される機能/動作の観点を実装する命令を含む製造品を含むように、これらのコンピュータ可読プログラム命令はまた、コンピュータプログラム可能なデータ処理装置若しくは他のデバイス又はこれらの組み合わせに特定の様式で機能するように指示することができるコンピュータ可読記憶媒体中に記憶されうる。
【0068】
該コンピュータ可読プログラム命令はまた、コンピュータ上、他のプログラム可能なデータ処理装置上又は他のデバイス上で実行される命令が、該フローチャート図若しくはブロック図若しくはそれらの組み合わせの1以上のブロックにおいて特定される機能/動作を実装するように、上記のコンピュータ上、他のプログラム可能なデータ処理装置上又は他のデバイス上にロードされて、コンピュータ、他のプログラム可能な装置又は他のデバイス上で一連の操作工程を実行させて、コンピュータに実装されたプロセスを生成しうる。
【0069】
図面中のフローチャート図及びブロック図は、本発明の様々な実施態様に従う、システム、方法及びコンピュータプログラム製品若しくはコンピュータプログラムの在りうる実装の、アーキテクチャ、機能及び動作を示す。これに関連して、該フローチャート図又はブロック図における各ブロックは、命令のモジュール、セグメント、又はその一部を表し得、それは、特定された1以上の論理機能を実装する為の1以上の実行可能命令を含む。幾つかの代替の実装において、該ブロックにおいて示されている機能は、図面中に示されている順序とは異なって生じうる。例えば、連続して示されている2つのブロックは、実際には、関与する機能に依存して、同時に、実質的に同時に、部分的又は全体的に時間的に重複する様式で実行される1つの工程として達成されうるか、又は該ブロックは、逆の順序で実行されうる。該ブロック図若しくはフローチャート図又はこれらの組み合わせの各ブロック、並びに該ブロック図若しくはフローチャート図又はこれらの組み合わせの複数のブロックの組み合わせは、特定された機能又は動作を実行する特別な目的のハードウェアベースのシステムによって実装することができ、又は特別な目的のハードウェアとコンピュータ命令との組み合わせを実行することができることに留意されたい。
【0070】
上記で提供されているように、例示的な実施態様に従うと、ノイズ及びバウンド管理スケーリング係数α、RPUデバイスのクロスバーアレイからの入力/出力値のスケーリング/再スケーリング等を含む方法論200の1以上の工程は、例えば装置、例えば図6に示されている装置600、によって、RPUアレイハードウェアの外部で実行されることができる。図6は、本明細書において提示された方法論の1以上を実装する為の装置600のブロック図である。例示に過ぎないが、装置600は、図2の方法論200の工程のうちの1以上を実装するように構成されることができる。
【0071】
装置600は、コンピュータシステム610及びリムーバブルメディア650を備えている。コンピュータシステム610は、プロセッサデバイス620、ネットワークインタフェース625、メモリ630、メディアインタフェース635、及び任意的なディスプレイ640を備えている。ネットワークインタフェース625は、コンピュータシステム610がネットワークに接続することを可能にし、メディアインタフェース635は、コンピュータシステム610がメディア、例えば、ハードドライブ又はリムーバブルメディア650、と対話することを可能にする。
【0072】
プロセッサデバイス620は、本明細書に開示された方法、工程、及び機能を実装するように構成されることができる。メモリ630は、分散型又はローカル型であることができ、プロセッサデバイス620は、分散型又は単独型であることができる。メモリ630は、電気メモリ、磁気メモリ、若しくは光学メモリ、又はこれら若しくは他の種類のストレージデバイスの任意の組み合わせとして実装されることができる。その上、語「メモリ」は、プロセッサデバイス620によってアクセスされるアドレス可能な空間内のアドレスから読み取ることができ、又は該アドレスに書き込むことができる任意の情報を包含するように十分に広く解釈されるべきである。この定義において、ネットワークインタフェース625を通じてアクセス可能なネットワーク上の情報は、プロセッサデバイス620が該ネットワークから情報を取得することができるので、依然としてメモリ630内にある。プロセッサデバイス620を構成する各分散型プロセッサは一般的に、それ自体のアドレス可能なメモリ空間を含むことに留意されるべきである。また、コンピュータシステム610の一部又は全部を特定用途向け集積回路又は一般用途向け集積回路に組み込むことができることに留意されるべきである。
【0073】
任意的なディスプレイ640は、装置600の人間のユーザと対話する為に適した任意の種類のディスプレイである。一般的に、ディスプレイ640は、コンピュータモニタ又は他の同様のディスプレイである。
【0074】
図7及び図8を参照すると本開示はクラウドコンピューティングに関する詳細な説明を含むが、本明細書において述べられている教示の実装は、クラウドコンピューティング環境に限定されないことが理解されるべきである。寧ろ、本発明の実施態様は、現在知られている又は後に開発される任意の他の種類のコンピューティング環境と組み合わせて実装されることが可能である。
【0075】
クラウドコンピューティングは、最小限の管理労力又はサービスのプロバイダとの相互作用で迅速にプロビジョニングされ且つ解放されることができる構成可能なコンピューティングリソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理(processing)、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス)の共有プールへの便利なオンデマンドネットワークアクセスを可能にする為のサービス提供のモデルである。このクラウドモデルは、少なくとも5つの特徴、少なくとも3つのサービスモデル、及び少なくとも4つのデプロイメントモデル(deployment model)を含みうる。
【0076】
特徴は下記の通りである。
【0077】
オンデマンドセルフサービス(On-demand self-service):クラウドコンシューマ(cloud consumer)は、サービスのプロバイダとのヒューマンインターラクション(human interaction)を必要とせずに、自動的に必要に応じて、コンピューティング機能、例えばサーバ時間及びネットワークストレージ、を一方的にプロビジョニングすることができる。
【0078】
ブロードネットワークアクセス:機能は、ネットワークを介して利用可能であり、及び異種のシン(thin)クライアント・プラットフォーム又はシック(thick)クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、及びPDA)による使用を促進する標準的なメカニズムを介してアクセスされる。
【0079】
リソースのプーリング:プロバイダのコンピューティングリソースは、マルチテナントモデルを使用して複数のコンシューマにサービスを提供する為にプールされ、及び様々な物理リソースと仮想リソースが需要に従って動的に割り当てられ及び再割り当てされる。コンシューマは一般的に、提供されたリソースの正確なロケーションについての制御又は知識を有していないが、より高いレベルの抽象化でのロケーション(例えば、国、州又はデータセンター)を特定できうるという点で、ロケーションに依存しないといえる。
【0080】
迅速な順応性:機能は、迅速且つ弾力的にプロビジョニングされ、場合によっては自動的に、迅速にスケールアウトされ、迅速にリリースされて迅速にスケールインされうる。コンシューマにとって、プロビジョニングに利用可能な機能はしばしば、無制限であり及びいつでも任意の量で購入されることができる。
【0081】
測定されたサービス:クラウド・システムは、サービスの種類(例えば、ストレージ、処理、帯域幅、及びアクティブなユーザアカウント)に適した何らかの抽象化レベルでの計量機能を用いることによって、リソースの使用を自動的に制御し及び最適化する。リソース使用は監視され、制御され、及び報告されることができ、利用されるサービスのプロバイダ及びコンシューマの両方についての透明性を提供することができる。
【0082】
サービスモデルは下記の通りである。
【0083】
サービスとしてのソフトウェア(SaaS:Software as a Service):クラウドインフラストラクチャにおいて実行しているプロバイダのアプリケーションを使用する為に、コンシューマに提供される機能である。該アプリケーションは、シン・クライアント・インタフェース、例えばウェブブラウザ(例えば、ウェブベースの電子メール)、を通じて、様々なクライアント・装置からアクセス可能である。該コンシューマは、制限されたユーザ固有のアプリケーション構成設定の在りうる例外として、基礎をなすクラウドインフラストラクチャ、例えば、ネットワーク、サーバ、オペレーティングシステム、ストレージ、又は個々のアプリケーション機能さえも包含する基礎をなすクラウドインフラストラクチャ、を管理又は制御しない。
【0084】
サービスとしてのプラットフォーム(PaaS:Platform as a Service):プロバイダによってサポートされるプログラミング言語及びツールを用いて生成された、コンシューマが生成した又は取得したアプリケーションを、クラウドインフラストラクチャ上にデプロイする為に、該コンシューマに提供される機能である。該コンシューマは、基礎をなすクラウドインフラストラクチャ、例えば、ネットワーク、サーバ、オペレーティングシステム、又はストレージを包含する基礎をなすクラウドインフラストラクチャ、を管理又は制御しないが、デプロイされたアプリケーション、及び場合によってはアプリケーションホスティング環境構成に対して制御を有する。
【0085】
サービスとしてのインフラストラクチャ(IaaS:Infrastructure as a Service):コンシューマが、オペレーティングシステム及びアプリケーションを含むことができる任意のソフトウェアをデプロイ及び実行することができる、処理、ストレージ、ネットワーク、及び他の基本的なコンピューティングリソースをプロビジョニングする為に、該コンシューマに提供される機能である。該コンシューマは、基礎をなすクラウドインフラストラクチャを管理又は制御しないが、オペレーティングシステム、ストレージ、デプロイされたアプリケーションに対する制御、並びに、場合によっては、ネットワーク・コンポーネント(例えば、ホストのファイアウォール)を選択することの制限された制御を有する。
【0086】
デプロイメントモデル(Deployment Models)は下記の通りである。
【0087】
プライベートクラウド:クラウドインフラストラクチャは、ある組織の為のみに運営される。該クラウドインフラストラクチャは、該組織又は第三者によって管理され得、及びオンプレミス(on-premises)又はオフプレミス(off-premises)に存在しうる。
【0088】
コミュニティクラウド:クラウドインフラストラクチャは、幾つかの組織によって共有され、及び共通の関心事項(例えば、ミッション、セキュリティ要件、ポリシ、及びコンプライアンス考慮事項)を有する特定のコミュニティをサポートする。該クラウドインフラストラクチャは、該組織又は第三者によって管理され得、及びオンプレミス又はオフプレミスに存在しうる。
【0089】
パブリッククラウド:クラウドインフラストラクチャは、一般公衆又は大規模な業界グループに対して利用可能であり、及びクラウドサービスを販売する組織によって所有される。
【0090】
ハイブリッドクラウド:クラウドインフラストラクチャは、固有のエンティティのままであるが、データ及びアプリケーションの移行性を可能にする標準化された又は専用の技術(例えば、クラウド間の負荷分散の為のクラウド・バースティング)によって一緒にされる2以上のクラウド(プライベート、コミュニティ、又はパブリック)の混成物である。
【0091】
クラウドコンピューティング環境は、無国籍性(statelessness)、低結合性、モジュール性、及びセマンティック相互運用性(semantic interoperability)に焦点を有する指向されたサービスである。クラウドコンピューティングの中核(heart)は、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0092】
ここで図7を参照すると、例示的なクラウドコンピューティング環境50が図示されている。図示されているように、クラウドコンピューティング環境50は、クラウドコンシューマ、例えば、パーソナルデジタルアシスタント(PDA:personal digital assistant)又は携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C若しくは自動車コンピュータシステム54N等又はそれらの組み合わせ、によって用いられるローカルコンピューティングデバイスが通信しうる1以上のクラウドコンピューティングノード10を備えている。クラウドコンピューティングノード10は、互いに通信しうる。それらは、1以上のネットワーク、例えば、本明細書において記載されている、プライベートクラウド、コミュニティクラウド、パブリッククラウド、若しくはハイブリッドクラウド、又はそれらの組み合わせ、において物理的又は仮想的にグループ化されていてもよい(図示せず)。これにより、クラウドコンピューティング環境50は、クラウドコンシューマがローカルコンピューティングデバイス上のリソースを維持する必要がないサービスとして、インフラストラクチャ、プラットフォーム若しくはソフトウェア又はそれらの組み合わせを提供することができる。図示されているコンピューティングデバイス54A~54Nの種類は、例示のみを意図されていること、並びにコンピューティングノード10及びクラウドコンピューティング環境50は、任意の種類のネットワーク若しくはネットワークアドレス可能接続又はそれらの組み合わせを介して(例えば、ウェブブラウザを使用して)任意の種類のコンピュータ化されたデバイスと通信することが理解される。
【0093】
ここで図8を参照すると、クラウドコンピューティング環境50(図7)によって提供される機能的抽象化層の1組が示されている。図8において示されているコンポーネント、層及び機能は、単に例示であることが意図されていること、並びに本発明の実施態様はそれらに限定されないことが理解されるべきである。図示されている通り、下記の複数の層及び対応する複数の機能が提供される。
【0094】
ハードウェア及びソフトウェア層60は、ハードウェアコンポーネント及びソフトウェアコンポーネントを包含する。ハードウェアコンポーネントの例は、メインフレーム61、RISC(Reduced Instruction Set Computer(縮小命令セット・コンピュータ))アーキテクチャ・ベースのサーバ62;サーバ63;ブレード・サーバ64;ストレージデバイス65;並びに、ネットワーク及びネットワーキングコンポーネント66を包含する。幾つかの実施態様において、ソフトウェアコンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67及びデータベース・ソフトウェア68を包含する。
【0095】
仮想化層70は、抽象化層を提供し、この抽象化層から、仮想エンティティの下記の例が提供されうる:すなわち、仮想サーバ71;仮想ストレージ72;仮想ネットワーク73;例えば仮想プライベートネットワークを包含する上記の仮想ネットワーク73;仮想アプリケーション及びオペレーティングシステム74;並びに、仮想クライアント75。
【0096】
1つの例において、管理層80は、以下で説明される複数の機能を提供しうる。リソース・プロビジョニング81は、クラウドコンピューティング環境内でタスクを実行する為に利用されるコンピューティングリソース及び他のリソースの動的な調達を提供する。計量及び価格決定82は、リソースがクラウドコンピューティング環境内で利用される場合のコスト追跡と、これらのリソースの消費についての課金又は請求とを提供する。1つの例において、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを包含しうる。セキュリティは、クラウドコンシューマ及びタスクに対する識別検証と、データ及び他のリソースに対する保護とを提供する。ユーザ・ポータル83は、コンシューマ及びシステム管理者の為に、クラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理84は、要求されるサービスレベルが満たされるように、クラウド・コンピューティング・リソースの割り当て及び管理を提供する。サービス・レベル・アグリーメント(SLA:Service Level Agreement)の計画及び履行85は、将来の要件がSLAに従って予測されるクラウド・コンピューティング・リソースの為の事前配置及びその調達を提供する。
【0097】
ワークロード層90は、該クラウドコンピューティング環境が利用されうる複数の機能の例を提供する。この層から提供されうる複数のワークロード及び複数の機能の例は、マッピング及びナビゲーション91;ソフトウェア開発及びライフサイクル管理92;仮想教室教育の提供93;データアナリティクス処理94;トランザクション処理95;並びに、スケーリング係数計算及び入力/出力スケーリング/再スケーリング96を包含する。
【0098】
本明細書において、本発明の例示的な実施態様が説明されてきたが、本発明はそれらの正確な実施態様に限定されるものでなく、本発明の範囲を逸脱すること無しに、当業者によって他の様々な変更及び修正が可能でありうることを理解されたい。
図1
図2
図3
図4
図5
図6
図7
図8
【手続補正書】
【提出日】2023-06-21
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ノイズ及びバウンド管理の方法であって、
抵抗処理ユニット(RPU)デバイスのアナログクロスバーアレイの為の入力ベクトル値xを取得すること、ここで、重み行列がRPUデバイスの前記アナログクロスバーアレイにマッピングされる;及び、
最悪のケースのシナリオに基づいて前記入力ベクトル値xをスケーリングして、RPUデバイスの前記アナログクロスバーアレイへの入力として使用する為にスケーリングされた入力ベクトル値x'を提供すること、ここで、前記最悪のケースのシナリオは、前記入力ベクトル値xからの絶対値の合計を乗じられた重み行列の想定最大重みを含む、
を含む、前記方法。
【請求項2】
絶対最大入力値xmxを前記入力ベクトル値xから計算すること;
提案されたスケーリング係数σを
【数1】
として計算すること、ここで、ωは前記重み行列の前記想定最大重みであり、sは合計入力変数であり、及びbはRPUデバイスの前記アナログクロスバーアレイの出力バウンドである;
ノイズ及びバウンド管理スケーリング係数αを、前記絶対最大入力値xmx又は前記提案されたスケーリング係数σのいずれか大きい方に設定すること;並びに、
前記ノイズ及びバウンド管理スケーリング係数αを用いて、前記入力ベクトル値xをスケーリングすること
を更に含む、請求項1に記載の方法。
【請求項3】
前記絶対最大入力値xmxが、
【数2】
として計算される、請求項2に記載の方法。
【請求項4】
前記入力ベクトル値xの全ての絶対値の合計を計算すること;及び、
前記入力ベクトル値xの全ての前記絶対値の前記合計を前記合計入力変数sに指定すること
を更に含む、請求項2に記載の方法。
【請求項5】
正の入力ベクトル値(sp)のみの全ての絶対値の合計を計算すること;
負の入力ベクトル値(sn)のみの全ての絶対値の合計を計算すること;及び、
spとsnのうちの大きい方を前記合計入力変数sに指定すること
を更に含む、請求項2に記載の方法。
【請求項6】
【数3】
として計算される値、又は
【数4】
として計算される他方の値のいずれか小さい方の値を計算値として、前記提案されたスケーリング係数σをキャッピングすること、ここで、ρは変数であり、及びγDACは、デジタルからアナログへの量子化のビン幅である、
を更に含む、請求項2に記載の方法。
【請求項7】
前記重み行列の前記想定最大重みωを減少させること;及び、
前記提案されたスケーリング係数σを再計算すること
を更に含む、請求項2に記載の方法。
【請求項8】
前記スケーリングされた入力ベクトル値x'をアナログ信号に変換すること;及び、
RPUデバイスの前記アナログクロスバーアレイに対してベクトル-行列乗算演算を実行すること
を更に含む、請求項2に記載の方法。
【請求項9】
前記ベクトル-行列乗算演算を実行することが、
前記スケーリングされた入力ベクトル値x'の各々に、前記重み行列における対応する重み値を乗算すること
を含む、請求項8に記載の方法。
【請求項10】
RPUデバイスの前記アナログクロスバーアレイから得られた複数のアナログ出力ベクトル値を1つのデジタル信号に変換して、デジタル出力ベクトル値y'を提供すること;並びに、
前記ノイズ及びバウンド管理スケーリング係数αを用いて前記デジタル出力ベクトル値y'を再スケーリングして、再スケーリングされたデジタル出力ベクトル値yを提供すること
を更に含む、請求項8に記載の方法。
【請求項11】
絶対最大入力値xmxを前記入力ベクトル値xから計算すること;
前記絶対最大入力値xmxをスケーリング係数αに指定すること;
前記入力ベクトル値xを前記スケーリング係数αを用いてスケーリングして、RPUデバイスのアナログクロスバーアレイへの入力として使用する為にスケーリングされた入力ベクトル値x'initialを提供すること;
前記スケーリングされた入力ベクトル値x'initialをアナログ信号に変換すること;
RPUデバイスの前記アナログクロスバーアレイに対してベクトル-行列乗算演算を実行すること;
RPUデバイスの前記アナログクロスバーアレイから得られた複数のアナログ出力ベクトル値を1つのデジタル信号に変換して、複数のデジタル出力ベクトル値y'initialを提供すること;
前記複数のデジタル出力ベクトル値y'initialのうちのいずれかがクリッピングされていることを判定すること;及び、
前記複数のデジタル出力ベクトル値y'initialのうちの少なくとも1つがクリッピングされている場合に、最悪のケースのシナリオに基づいて、入力ベクトル値xをスケーリングすること
を更に含む、請求項1に記載の方法。
【請求項12】
ノイズ及びバウンド管理の為の装置であって、該装置は、メモリに接続されたプロセッサを備えており、該プロセッサは、
RPUデバイスのアナログクロスバーアレイの為の入力ベクトル値xを取得する、ここで、重み行列がRPUデバイスの前記アナログクロスバーアレイにマッピングされる;及び、
最悪のケースのシナリオに基づいて前記入力ベクトル値xをスケーリングして、RPUデバイスの前記アナログクロスバーアレイへの入力として使用する為にスケーリングされた入力ベクトル値x'を提供する、ここで、前記最悪のケースのシナリオは、前記入力ベクトル値xからの絶対値の合計を乗じられた重み行列の想定最大重みを含む、
ように動作可能である、前記装置。
【請求項13】
前記プロセッサが、
絶対最大入力値xmxを前記入力ベクトル値xから計算する;
提案されたスケーリング係数σを
【数5】
として計算する、ここで、ωは前記重み行列の前記想定最大重みであり、sは合計入力変数であり、及びbはRPUデバイスの前記アナログクロスバーアレイの出力バウンドである;
ノイズ及びバウンド管理スケーリング係数αを、前記絶対最大入力値xmx又は前記提案されたスケーリング係数σのいずれか大きい方に設定する;並びに、
前記ノイズ及びバウンド管理スケーリング係数αを用いて、前記入力ベクトル値xをスケーリングする
ように更に動作可能である、請求項12に記載の装置。
【請求項14】
前記プロセッサが、
前記入力ベクトル値xの全ての絶対値の合計を計算する;及び、
前記入力ベクトル値xの全ての前記絶対値の前記合計を前記合計入力変数sに指定する
ように更に動作可能である、請求項13に記載の装置。
【請求項15】
前記プロセッサが、
正の入力ベクトル値(sp)のみの全ての絶対値の合計を計算する;
負の入力ベクトル値(sn)のみの全ての絶対値の合計を計算する;及び、
spとsnのうちの大きい方を前記合計入力変数sに指定する
ように更に動作可能である、請求項13に記載の装置。
【請求項16】
前記プロセッサが、
【数6】
として計算される値、又は
【数7】
として計算される他方の値のいずれか小さい方の値を計算値として、前記提案されたスケーリング係数σをキャッピングする、ここで、ρは変数であり、及びγDACは、デジタルからアナログへの量子化のビン幅である
ように更に動作可能である、請求項13に記載の装置。
【請求項17】
ノイズ及びバウンド管理の為の非一時的なコンピュータプログラムであって、
RPUデバイスのアナログクロスバーアレイの為の入力ベクトル値xを取得すること、ここで、重み行列がRPUデバイスの前記アナログクロスバーアレイにマッピングされる;及び、
最悪のケースのシナリオに基づいて前記入力ベクトル値xをスケーリングして、RPUデバイスの前記アナログクロスバーアレイへの入力として使用する為にスケーリングされた入力ベクトル値x'を提供すること、ここで、前記最悪のケースのシナリオは、前記入力ベクトル値xからの絶対値の合計を乗じられた重み行列の想定最大重みを含む、
を含む方法の各工程をコンピュータに実行させる、前記コンピュータプログラム。
【請求項18】
絶対最大入力値xmxを前記入力ベクトル値xから計算すること;
提案されたスケーリング係数σを
【数8】
として計算すること、ここで、ωは前記重み行列の前記想定最大重みであり、sは合計入力変数であり、及びbはRPUデバイスの前記アナログクロスバーアレイの出力バウンドである;
ノイズ及びバウンド管理スケーリング係数αを、前記絶対最大入力値xmx又は前記提案されたスケーリング係数σのいずれか大きい方に設定すること;並びに、
前記ノイズ及びバウンド管理スケーリング係数αを用いて、前記入力ベクトル値xをスケーリングすること
を前記コンピュータに更に実行させる、請求項17に記載のコンピュータプログラム。
【請求項19】
前記入力ベクトル値xの全ての絶対値の合計を計算すること;及び、
前記入力ベクトル値xの全ての前記絶対値の前記合計を前記合計入力変数sに指定すること
を前記コンピュータに更に実行させる、請求項18に記載のコンピュータプログラム。
【請求項20】
正の入力ベクトル値(sp)のみの全ての絶対値の合計を計算すること;
負の入力ベクトル値(sn)のみの全ての絶対値の合計を計算すること;及び、
spとsnのうちの大きい方を前記合計入力変数sに指定すること
を前記コンピュータに更に実行させる、請求項18に記載のコンピュータプログラム。
【国際調査報告】