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

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

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

特表2024-513645通信コストを削減する為に、抵抗処理ユニット(RPU)アレイ内に階層的なデータロードを可能にすること
<>
  • 特表-通信コストを削減する為に、抵抗処理ユニット(RPU)アレイ内に階層的なデータロードを可能にすること 図1
  • 特表-通信コストを削減する為に、抵抗処理ユニット(RPU)アレイ内に階層的なデータロードを可能にすること 図2
  • 特表-通信コストを削減する為に、抵抗処理ユニット(RPU)アレイ内に階層的なデータロードを可能にすること 図3
  • 特表-通信コストを削減する為に、抵抗処理ユニット(RPU)アレイ内に階層的なデータロードを可能にすること 図4
  • 特表-通信コストを削減する為に、抵抗処理ユニット(RPU)アレイ内に階層的なデータロードを可能にすること 図5
  • 特表-通信コストを削減する為に、抵抗処理ユニット(RPU)アレイ内に階層的なデータロードを可能にすること 図6
  • 特表-通信コストを削減する為に、抵抗処理ユニット(RPU)アレイ内に階層的なデータロードを可能にすること 図7
  • 特表-通信コストを削減する為に、抵抗処理ユニット(RPU)アレイ内に階層的なデータロードを可能にすること 図8
  • 特表-通信コストを削減する為に、抵抗処理ユニット(RPU)アレイ内に階層的なデータロードを可能にすること 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-27
(54)【発明の名称】通信コストを削減する為に、抵抗処理ユニット(RPU)アレイ内に階層的なデータロードを可能にすること
(51)【国際特許分類】
   G06N 3/063 20230101AFI20240319BHJP
【FI】
G06N3/063
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023550331
(86)(22)【出願日】2022-02-17
(85)【翻訳文提出日】2023-08-21
(86)【国際出願番号】 EP2022053908
(87)【国際公開番号】W WO2022194480
(87)【国際公開日】2022-09-22
(31)【優先権主張番号】17/203,705
(32)【優先日】2021-03-16
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.VERILOG
2.コンパクトフラッシュ
(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)【発明者】
【氏名】リー,ウン キョン
(72)【発明者】
【氏名】キム,ソン
(72)【発明者】
【氏名】カン,ミング
(72)【発明者】
【氏名】ウー,ソンフン
(57)【要約】
電子回路であって、複数のワード線;複数の格子点において該複数のワード線と交差する複数のビット線;及び、該複数の格子点に配置された複数の抵抗処理ユニットを備えている、該電子回路。複数のベースライン確率論的パルス入力ユニットが該複数のワード線に接続されており;複数の差分確率論的パルス入力ユニットが該複数のワード線に接続されており;及び、複数のビット線確率論的パルス入力ユニットが該複数のビット線に接続されている。複数のパルス入力ユニットに接続された制御回路は、該複数のベースライン確率論的パルス入力ユニットの各々に、ベース入力データを使用して1つのベースラインパルス列を生成させるように、該複数の差分確率論的パルス入力ユニットの各々に、該ベース入力データとの差分を定義する差分入力データを使用して1つの差分パルス列を生成させるように、及び該複数のビット線確率論的パルス入力ユニットの各々に、ビット線入力データを使用して1つのビット線パルス列を生成させるように構成されている。従って、複数のニューラルネットワーク重みが、該複数の抵抗処理ユニットに記憶される。
【選択図】図2
【特許請求の範囲】
【請求項1】
電子回路であって、
複数のワード線;
複数の格子点において前記複数のワード線と交差する複数のビット線;
前記複数の格子点に配置された複数の抵抗処理ユニット;
前記複数のワード線に接続された複数のベースライン確率論的パルス入力ユニット;
前記複数のワード線に接続された複数の差分確率論的パルス入力ユニット;
前記複数のビット線に接続された複数のビット線確率論的パルス入力ユニット;並びに、
前記複数のベースライン確率論的パルス入力ユニットと、前記複数の差分確率論的パルス入力ユニットと、前記複数のビット線確率論的パルス入力ユニットと、に接続された制御回路であって、前記複数のベースライン確率論的パルス入力ユニットの各々に、ベース入力データを使用して1つのベースラインパルス列を生成させるように、前記複数の差分確率論的パルス入力ユニットの各々に、前記ベース入力データとの差分を定義する差分入力データを使用して1つの差分パルス列を生成させるように、及び前記複数のビット線確率論的パルス入力ユニットの各々に、ビット線入力データを使用して1つのビット線パルス列を生成させるように構成されている前記制御回路
を備えている、前記電子回路。
【請求項2】
前記制御回路が、前記複数のベースライン確率論的パルス入力ユニット、前記複数の差分確率論的パルス入力ユニット及び前記複数のビット線確率論的パルス入力ユニットを制御して、複数のニューラルネットワーク重みを前記複数の抵抗処理ユニット内に記憶する、請求項1に記載の電子回路。
【請求項3】
前記複数のベースライン確率論的パルス入力ユニットが各々、前記ベースライン入力データの対応する部分を記憶するように構成されたベースラインレジスタ、前記ベースラインレジスタに接続されたベースライン確率論的トランスレータ、及び、前記ベースライン確率論的トランスレータと、前記複数のワード線のうちの対応する1つと、に接続されたベースラインパルス発生器を備えており;
前記複数の差分確率論的パルス入力ユニットは各々、前記差分入力データの対応する部分を記憶するように構成された差分レジスタと、前記差分レジスタに接続された差分確率論的トランスレータと、前記差分確率論的トランスレータ及び前記複数のワード線のうちの前記対応する1つに接続された差分パルス発生器とを備えており;並びに、
前記複数のビット線確率論的パルス入力ユニットは各々、前記ビット線入力データの対応する部分を記憶するように構成されたビット線レジスタ、前記ビット線レジスタに接続されたビット線確率論的トランスレータ、及び、前記ビット線確率論的トランスレータと、前記複数のビット線のうちの対応する1つと、に接続されたビット線パルス発生器を備えている、
請求項2に記載の電子回路。
【請求項4】
前記複数のベースライン確率論的トランスレータが、前記複数のベースラインレジスタ内のベースラインデータを、ハイ及びローの複数のベースライン出力確率論的ストリームに変換するように構成されており、及び前記ベースラインパルス発生器が、前記ベースライン出力に基づいて前記複数のワード線を駆動するように構成されている;
前記複数の差分確率論的トランスレータが、前記複数の差分レジスタ内の差分データを、ハイ及びローの複数の差分出力確率論的ストリームに変換するように構成されており、及び前記複数の差分パルス発生器が、前記差分出力に基づいて前記複数のワード線を駆動するように構成されている;並びに、
前記複数のビット線確率論的トランスレータが、前記複数のビット線レジスタ内のビット線データを、ハイ及びローの複数のビット線出力確率論的ストリームに変換するように構成されており、及び前記複数のビット線パルス発生器が、前記ビット線出力に基づいて前記複数のビット線を駆動するように構成されている、
請求項3に記載の電子回路。
【請求項5】
前記電子回路が集積回路チップとして実装され、前記レジスタに接続され且つオフチップストレージへのインタフェースを備えているオンチップランダムアクセスメモリを更に備えている、請求項4に記載の電子回路。
【請求項6】
前記制御回路が、前記複数の差分確率論的トランスレータの出力において確率論的ビットストリームの長さを制御することによって、更新時刻を制御するように構成されている、請求項5に記載の電子回路。
【請求項7】
前記電子回路が、前記複数のワード線に接続された電圧ベクトル周辺回路と、前記複数のビット線に接続された複数のインテグレータと、を更に備えており、ここで、前記制御回路が、前記電圧ベクトル周辺回路及び前記複数のインテグレータを制御して、前記複数の抵抗処理ユニット内に記憶された前記複数のニューラルネットワーク重みを有する前記複数の抵抗処理ユニットでの推論を実行する、請求項2に記載の電子回路。
【請求項8】
前記制御回路が、前記電圧ベクトル周辺回路を制御して、電圧ベクトルを前記複数のワード線にベースラインデータプラス差分データとして入力する、請求項7に記載の電子回路。
【請求項9】
コンピュータに実装されたニューラルネットワークを訓練する方法であって、
電子回路を用意すること、ここで、前記電子回路が、
複数のワード線;
複数の格子点において前記複数のワード線と交差する複数のビット線;
前記複数の格子点に配置された複数の抵抗処理ユニット;
前記複数のワード線に接続された複数のベースライン確率論的パルス入力ユニット;
前記複数のワード線に接続された複数の差分確率論的パルス入力ユニット;
前記複数のビット線に接続された複数のビット線確率論的パルス入力ユニット;及び、
前記複数のベースライン確率論的パルス入力ユニットと、前記複数の差分確率論的パルス入力ユニットと、前記複数のビット線確率論的パルス入力ユニットと、に接続された制御回路
を備えており、
ここで、前記制御回路が、前記複数のベースライン確率論的パルス入力ユニットの各々に、ベース入力データを使用して1つのベースラインパルス列を生成させ、前記複数の差分確率論的パルス入力ユニットの各々に、前記ベース入力データとの差分を定義する差分入力データを使用して1つの差分パルス列を生成させ、及び前記複数のビット線確率論的パルス入力ユニットの各々に、ビット線入力データを使用して1つのビット線パルス列を生成させる、
前記方法。
【請求項10】
前記制御回路を用いて、前記複数のベースライン確率論的パルス入力ユニット、前記複数の差分確率論的パルス入力ユニット及び前記複数のビット線確率論的パルス入力ユニットを制御して、複数のニューラルネットワーク重みを前記複数の抵抗処理ユニット内に記憶することを更に含む、請求項9に記載の方法。
【請求項11】
前記用意することにおいて、
前記複数のベースライン確率論的パルス入力ユニットは各々、前記ベース入力データの対応する部分を記憶するように構成されたベースラインレジスタ、前記ベースラインレジスタに接続されたベースライン確率論的トランスレータ、及び、前記ベースライン確率論的トランスレータと、前記複数のビット線のうちの対応する1つと、に接続されたベースラインパルス発生器を備えており;
前記複数の差分確率論的パルス入力ユニットは各々、前記差分入力データの対応する部分を記憶するように構成された差分レジスタ、前記差分レジスタに接続された差分確率論的トランスレータ、及び、前記差分確率論的トランスレータと、前記複数のワード線のうちの前記対応する1つと、に接続された差分パルス発生器を備えており;並びに、
前記複数のビット線確率論的パルス入力ユニットは各々、前記ビット線入力データの対応する部分を記憶するように構成されたビット線レジスタ、前記ビット線レジスタに接続されたビット線確率論的トランスレータ、及び、前記ビット線確率論的トランスレータと、前記複数のビット線のうちの対応する1つと、に接続されたビット線パルス発生器とを備えており、
更に、
前記複数のベースライン確率論的トランスレータが、前記複数のベースラインレジスタ内のベースラインデータを、ハイ及びローの複数のベースライン出力確率論的ストリームに変換すること;
前記ベースラインパルス発生器が、前記ベースライン出力に基づいて前記複数のワード線を駆動すること;
前記複数の差分確率論的トランスレータが、前記複数の差分レジスタ内の差分データを、ハイ及びローの複数の差分出力確率論的ストリームに変換すること;
前記複数の差分パルス発生器が、前記差分出力に基づいて前記複数のワード線を駆動すること;
前記複数のビット線確率論的トランスレータが、前記複数のビット線レジスタ内のビット線データを、ハイ及びローの複数のビット線出力確率論的ストリームに変換すること;並びに、
前記複数のビット線パルス発生器が、前記ビット線出力に基づいて前記複数のビット線を駆動すること
を更に含む、
請求項10に記載の方法。
【請求項12】
前記制御回路を用いて、前記複数の差分確率論的トランスレータの出力において確率論的ビットストリームの長さを制御することによって、更新時刻を制御することを更に含む、請求項11に記載の方法。
【請求項13】
前記用意することにおいて、前記電子回路が、前記複数のワード線に接続された電圧ベクトル周辺回路と、前記複数のビット線に接続された複数のインテグレータと、を更に備えており、前記制御回路により、前記電圧ベクトル周辺回路及び前記複数のインテグレータを制御して、前記複数の抵抗処理ユニット内に記憶された前記複数のニューラルネットワーク重みを有する前記複数の抵抗処理ユニットでの推論を実行することを更に含む、請求項10に記載の方法。
【請求項14】
前記制御回路を用いて、前記電圧ベクトル周辺回路を制御して、電圧ベクトルを前記複数のワード線にベースラインデータプラス差分データとして入力することを更に含む、請求項13に記載の方法。
【請求項15】
機械可読データストレージ媒体上にコードされたハードウェア記述言語(HDL)設計構造物であって、該HDL設計構造物が、コンピュータ支援設計システムにおいて処理されるときに、装置の機械実行可能な表現を生成する要素を備えており、前記HDL設計構造物は、
複数のワード線;
複数の格子点において前記複数のワード線と交差する複数のビット線;
前記複数の格子点に配置された複数の抵抗処理ユニット;
前記複数のワード線に接続された複数のベースライン確率論的パルス入力ユニット;
前記複数のワード線に接続された複数の差分確率論的パルス入力ユニット;
前記複数のビット線に接続された複数のビット線確率論的パルス入力ユニット;並びに、
前記複数のベースライン確率論的パルス入力ユニットと、前記複数の差分確率論的パルス入力ユニットと、前記複数のビット線確率論的パルス入力ユニットと、に接続された制御回路であって、前記複数のベースライン確率論的パルス入力ユニットの各々に、ベース入力データを使用して1つのベースラインパルス列を生成させるように、前記複数の差分確率論的パルス入力ユニットの各々に、前記ベース入力データとの差分を定義する差分入力データを使用して1つの差分パルス列を生成させるように、及び前記複数のビット線確率論的パルス入力ユニットの各々に、ビット線入力データを使用して1つのビット線パルス列を生成させるように構成されている前記制御回路
を備えている、前記HDL設計構造物。
【請求項16】
前記複数のベースライン確率論的パルス入力ユニットは各々、前記ベース入力データの対応する部分を記憶するように構成されたベースラインレジスタ、前記ベースラインレジスタに接続されたベースライン確率論的トランスレータ、及び、前記ベースライン確率論的トランスレータと、前記複数のワード線のうちの対応する1つと、に接続されたベースラインパルス発生器を備えており;
前記複数の差分確率論的パルス入力ユニットは各々、前記差分入力データの対応する部分を記憶するように構成された差分レジスタと、前記差分レジスタに接続された差分確率論的トランスレータと、前記差分確率論的トランスレータ及び前記複数のワード線のうちの前記対応する1つに接続された差分パルス発生器とを備えており;並びに、
前記複数のビット線確率論的パルス入力ユニットは各々、前記ビット線入力データの対応する部分を記憶するように構成されたビット線レジスタ、前記ビット線レジスタに接続されたビット線確率論的トランスレータ、及び、前記ビット線確率論的トランスレータと、前記複数のビット線のうちの対応する1つと、に接続されたビット線パルス発生器とを備えている、
請求項15に記載のHDL設計構造物。
【請求項17】
前記複数のベースライン確率論的トランスレータが、前記複数のベースラインレジスタ内のベースラインデータを、ハイ及びローの複数のベースライン出力確率論的ストリームに変換するように構成されており、及び前記ベースラインパルス発生器が、前記ベースライン出力に基づいて前記複数のワード線を駆動するように構成されている;
前記複数の差分確率論的トランスレータが、前記複数の差分レジスタ内の差分データを、ハイ及びローの複数の差分出力確率論的ストリームに変換するように構成されており、及び前記複数の差分パルス発生器が、前記差分出力に基づいて前記複数のワード線を駆動するように構成されている;並びに、
前記複数のビット線確率論的トランスレータが、前記複数のビット線レジスタ内のビット線データを、ハイ及びローの複数のビット線出力確率論的ストリームに変換するように構成されており、及び前記複数のビット線パルス発生器が、前記ビット線出力に基づいて前記複数のビット線を駆動するように構成されている、
請求項16に記載のHDL設計構造物。
【請求項18】
前記レジスタに接続され且つオフチップストレージへのインタフェースを備えているオンチップランダムアクセスメモリを更に備えている、請求項17に記載のHDL設計構造物。
【請求項19】
前記制御回路が、前記複数の差分確率論的トランスレータの出力において確率論的ビットストリームの長さを制御することによって、更新時刻を制御するように構成されている、請求項18に記載のHDL設計構造物。
【請求項20】
前記HDL設計構造物が、前記複数のワード線に接続された電圧ベクトル周辺回路と、前記複数のビット線に接続された複数のインテグレータと、を更に備えており、ここで、前記制御回路が、前記電圧ベクトル周辺回路及び前記複数のインテグレータを制御して、前記複数の抵抗処理ユニット内に記憶された前記複数のニューラルネットワーク重みを有する前記複数の抵抗処理ユニットでの推論を実行する、請求項16に記載のHDL設計構造物。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電気、電子及びコンピュータ技術に関し、より具体的には、ニューラルネットワーク等を実装する為に適した電子回路に関する。
【背景技術】
【0002】
ニューラルネットワークは、様々な用途で人気が高まっている。ニューラルネットワークは、機械学習を実行する為に使用される。コンピュータは、学習例を分析することによって、或るタスクを実行することを学習する。典型的に、該学習例は人間の専門家によって事前に手作業でラベル付けされている。ニューラルネットワークは、密に相互接続された、数千、数百万の単純な処理ノードを備えている。ニューラルネットワークの訓練、及び訓練されたニューラルネットワークを用いた推論は、計算コストが高い。事実、大規模な並列ニューラルネットワークを訓練する為に必要なデータセットは、より多くの入力データを必要とし、そのサイズはテラバイト(TB)オーダーを超える。
【0003】
ニューラルネットワークに関連付けられた計算上の課題に対処する為に、ハードウェアベースの技術が提案されてきている。例えば、抵抗処理ユニット(RPU:resistive processing unit)デバイスは、はるかに少ない電力を使用しながらニューラルネットワークの訓練を桁違いに高速化する可能性がある。しかしながら、高速なRPU動作においてでさえも、無線通信又はオフチップインタフェースを介した入力データ通信コストは、多くのアプリケーション、例えば、ディープニューラルネットワークの訓練等、において、依然としてかなりのオーバーヘッド負担(overhead burden)である。
【発明の概要】
【課題を解決するための手段】
【0004】
本発明の原理は、通信コストを低減する為に、抵抗処理ユニット(RPU)アレイにおける階層的なデータロードを可能にする為の技術を提供する。1つの観点において、例示的な電子回路は、複数のワード線;複数の格子点において該複数のワード線と交差する複数のビット線;該複数の格子点に配置された複数の抵抗処理ユニット;該複数のワード線に接続された複数のベースライン確率論的パルス入力ユニット;該複数のワード線に接続された複数の差分確率論的パルス入力ユニット;及び、該複数のビット線に接続された複数のビット線確率論的パルス入力ユニットを備えている。該複数のベースライン確率論的パルス入力ユニットと、該複数の差分確率論的パルス入力ユニットと、該複数のビット線確率論的パルス入力ユニットと、に接続された制御回路であって、該複数のベースライン確率論的パルス入力ユニットの各々に、ベース入力データを使用して1つのベースラインパルス列を生成させるように、該複数の差分確率論的パルス入力ユニットの各々に、該ベース入力データとの差分を定義する差分入力データを使用して1つの差分パルス列を生成させるように、及び該複数のビット線確率論的パルス入力ユニットの各々に、ビット線入力データを使用して1つのビット線パルス列を生成させるように構成されている該制御回路がまた備えられている。
【0005】
他の観点において、ハードウェア記述言語(HDL)設計構造物が機械可読データストレージ媒体上にコードされ、及び、コンピュータ支援設計システムにおいて処理されるときに、該HDL設計構造物が、装置の機械実行可能な表現を生成する要素を備えている。該HDL設計構造物は、今記載された通りの電子回路を備えている。
【0006】
更に別の観点において、例示的な方法は、今記載された電子回路を用意することを含み、ここで、該制御回路が、該複数のベースライン確率論的パルス入力ユニットの各々に、ベース入力データを使用して1つのベースラインパルス列を生成させ、該複数の差分確率論的パルス入力ユニットの各々に、該ベース入力データとの差分を定義する差分入力データを使用して1つの差分パルス列を生成させ、及び該複数のビット線確率論的パルス入力ユニットの各々に、ビット線入力データを使用して1つのビット線パルス列を生成させる。
【0007】
本明細書において使用される場合に、動作を「促進する」ことは、該動作を実行すること、該動作を容易にすること、該動作を実行することを助けること、又は該動作が実行されることを引き起こすことを包含する。従って、限定ではなく例として、1つのプロセッサ上で実行される命令は、リモートプロセッサ上で実行される命令によって実行される動作を、適切なデータ又はコマンドを送信して動作を実行させる又は助けることによって容易にしうる。疑義を避ける為に、行為者が該動作を実行する以外の方法で動作を促進する場合、該動作は、何らかのエンティティ又はエンティティの組み合わせによって実行される。
【0008】
本発明の1以上の実施態様又はその要素は、ハードウェア、例えばデジタル回路、内に実装されることができる。次に、このデジタル回路は、コンピュータにおいて、計算上効率的な様式で機械学習ソフトウェアを訓練/実行する為に使用されることができる。機械学習ソフトウェアは、示された方法工程を実行する為のコンピュータ使用可能なプログラムコードを有するコンピュータ可読ストレージ媒体を備えているコンピュータプログラム製品の形態で実装されることができる。次に、該ソフトウェアは、メモリと、該メモリに接続され且つ例示的な機械学習訓練及び推論を実行するように動作するところの少なくとも1つのプロセッサとを備えているシステム(又は装置)上で実行されることができ、ここで、該プロセッサは、本明細書において記載されているように構成されることができる。
【0009】
本発明の技術は、実質的に有益な技術的効果を提供することができる。例えば、1以上の実施態様は、下記を提供する:
大規模な並列ニューラルネットワーク等の学習の為に、入力データの通信コストを大幅に削減する;
入力データ量を減らす為の他の圧縮技術と異なり、明示的な解凍操作が必要ない;及び/又は、
連続するフレームは高い類似性を有する故に、入力データ量が大幅に削減される。
【0010】
本発明のこれら及び他の特徴及び利点は、添付の図面と関連して読まれる、例示的な実施態様の以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【0011】
図1図1は、RPUベースのアレイに確率論的更新ルールを適用する為の先行技術の技術を図示する。
図2図2は、本発明の1つの観点に従う、RPUベースのアレイに確率論的更新ルールを適用する為の技術を図示する。
図3図3は、本発明の1つの観点に従う、図2のアレイの為の更新の2つの例示的なサイクルを示す。
図4図4は、本発明の1つの観点に従う、ベースラインデータ及び差分データの例を示す。
図5図5は、本発明の1つの観点に従う、スパース性対閾値の例示的なデータを示す。
図6図6は、本発明の1つの観点に従う、例示的なファイル(データ)サイズ対閾値を示す。
図7図7は、本発明の1つの観点に従う、例示的な推論プロセスの間の図2のアレイを示す。
図8図8は、ニューラルネットワークの実装を加速する為に適した、本発明の観点に従う、コプロセッサを使用するコンピュータシステム(図9において示されているような設計プロセスを実装することができる汎用目的のコンピュータの代表でもある)を図示する。
図9図9は、半導体の設計、製造及び/又は試験において使用される設計プロセスのフロー図である。
【発明を実施するための形態】
【0012】
上述されているように、高速RPU操作においてでさえ、入力データ通信コストは、依然として主要なオーバーヘッド負担である。1以上の実施態様は、慣用的なデジタルアクセラレータハードウェアと比較して、10,000倍のオーダーで同じように加速することを有利に可能にする。1以上の実施態様は、高いデータ間類似性(data-to-data similarities)を示す関心のある多くのデータセットが存在するという事実を利用する。例えば、分子動力学(MD:molecular dynamics)シミュレーションデータにおけるフレーム、及び連続的に動く物体を有するビデオフレームにおけるパターン認識を包含するが、これらに限定されない。1以上の実施態様は、類似性を排除し、入力データサイズを減少する為に、入力データを(前処理の間に)ベースラインデータと差分データとに有利に分割する。入力データをベースラインデータと差分データとに分割することそれ自体は既知であるが、1以上の実施態様は、オリジナルデータを明示的に回復する必要無しに、RPUコンテキストにおいて効率的に実装することによって更なる改善を提供する。
【0013】
しかしながら、1つの確率論的パルス発生器(stochastic pulse generator)を使用する代わりに、1以上の実施態様は、入力層行(input layer row)について2つの確率論的パルス発生器(ベースライン及び差分)を使用する。1以上の実施態様において、ベースラインデータは時々転送され、一方、差分データはビット数を減らして転送される。これにより、有利なことに、通信コストにおける有意な削減を可能にする(この技術を適用しないRPUと比較して最大75%の削減)。該ベースラインデータ及び差分データは典型的には、デジタルドメインにおいて計算されない故に、追加の計算ハードウェア/コストは必要ない。
【0014】
その上、この点に関して、図1は、RPUベースのアレイに確率論的更新ルールを適用する為の先行技術の技法を示す。更新サイクルにおいて、該アレイ内の全てのRPUは、アレイサイズとは無関係に、並列に更新されることができる。確率論的ビットストリーム(stochastic bit stream)は、数値を符号化する為に使用される。1以上の信号を重ね合わせることにより、重みがインクリメンタルな様式で更新される。式101を参照すると、該重みの変化は、次の式に平均して比例する:
【0015】
【数1】
【0016】
(Wijはi番目の行及びj番目の列の重み値、xiは入力ニューロンにおける活動、及びδjは出力ニューロンによって計算された誤り(error)である。更新時刻は、BL(確率論的トランスレータ199の出力における確率論的ビットストリームの長さ)に比例する。マトリックス内のRPUデバイス103-1,1、103-1,2、103-2,1、及び103-2,2の切り替えは、正のパルスと負のパルスとが一致したときのみ発生する。従って、矢印105はデバイス103-1,1の第1の更新を表し;矢印107はデバイス103-2,1の第1の更新を表し、矢印109はデバイス103-2,2の第1の更新を表し、矢印111はデバイス103-1,1の第2の更新を表し、矢印113はデバイス103-2,1の第2の更新を表し、及び矢印115はデバイス103-1,2の第1の更新を表す。電圧Vx1及びVx2がハイ(High)にトグルする確率は、夫々0.5及び0.6である。従って、Vx2は、総更新期間=10の間、Vx1よりも多くの高いパルスを有する。同様に、電圧Vδ1及びVδ2がロー(low)である確率は、図1の右側に10進数形式でラベル付けされているように0.3及び0.4であり、及び矢印105~115の右側に示されているように分数形式で示されている。
【0017】
図2及び図3は、デュアルパルス発生器(dual pulse generators)が第1のニューラルネットワーク層における各行に使用されている本発明の例示的な実施態様を示す。「差分」(diff)データは毎サイクル受信され、一方、ベースライン(base)データはn番目のサイクルごとに受信されるだけでよい。図1のように、1以上の信号を重ね合わせることにより、該重みがインクリメンタルな様式で更新される。式201を参照すると、ここでの重みの変化は、平均して(xi_ベース+xi_差分)xδjに比例する(Wijはi番目の行及びj番目の列の重み値、xi_ベースは入力ニューロンにおける活動のベース部分、xi_差分は入力ニューロンにおける活動の差分部分であり、及びδjは出力ニューロンによって計算された誤りである)。
【0018】
ワード線(WL)701(乱雑さを避ける為に2本だけ示されている)及びビット線(BL)703(乱雑さを避ける為に2本だけ示されている)に注目されたい。図2において、各ビット線は単一の確率論的トランスレータ(stochastic translator)299を備えており、一方、各ワード線701は2つの確率論的トランスレータ;すなわち、「ベースライン」(B)確率論的トランスレータ297及び「差分」(D)確率論的トランスレータ295、を備えている。
【0019】
更新時刻は、BL(確率論的トランスレータ295の出力における確率論的ビットストリームの長さ)に比例する。図3をまた参照すると、2つの連続する更新サイクルが図示されている。従って、図3において、BLの総時間は20(2×10)である。図3は更に、サイクルにわたって差分(diff)値が変化し、従って、パルスの数がまた変化する例を示す。マトリックス内のRPUデバイス203-1,1,203-1,2,203-2,1及び203-2,2の切り替えは、正と負のパルスが一致したときのみ発生する。従って、矢印205は第1のサイクルの間の差分データによるデバイス203-1,1の第1の更新を表し;矢印207は該第1のサイクルの間の差分データによるデバイス203-2,1の第1の更新を表し;矢印209は該第1のサイクルの間の差分データによるデバイス203-2,2の第1の更新を表し;矢印211は該第1のサイクルの間の差分データによるデバイス203-1,1の第2の更新を表し;矢印213は該第1のサイクルの間の差分データによるデバイス203-2,1の第2の更新を表し;及び、矢印215は該第1のサイクルの間の差分データによるデバイス203-1,2の第1の更新を表す。他で説明されているように、該ベースラインデータは典型的に、サイクルごとに変化しないが、差分データは変化する。
【0020】
図2において、数字(0.45、0.05、0.55、0.05、0.3、0.4)を有するボックス265は、一時記憶装置、例えばレジスタ、すなわちベースライン番号(baseline number)0.45、を表し、及びまた差分番号(diff number)0.05はレジスタ内に記憶される。適宜、該ベースライン番号レジスタは、相対的に高いビット精度(例えば、16ビット)を有し得、及び差分番号レジスタは、相対的に小さい精度(例えば、4ビット)を有し得、これは、差分番号がベースライン番号と比較して通常非常に小さいからである。1以上の実施態様において、何らかの特別なイネーブル信号を装備するのではなく、これらの番号レジスタは定期的に更新されるであろう。図2の例において、該差分番号はサイクル毎に更新され、ベースライン番号はまれに更新されるであろう;該更新はコントローラ279によって管理される。番号0.45と番号0.55を有するボックス265に接続された「ベースライン更新」信号と、番号0.05の他のボックス265に接続された「差分更新」信号に注目されたい。確率論的トランスレータ295及び297は、レジスタ265の入力データをハイ及びローの確率論的ストリームに変換する。次に、確率論的パルス発生器705及び707は、確率論的トランスレータの出力(ハイ/ローのストリーム)に基づいてWL701を駆動する;すなわち、これ以上、入力データを直接用いない。従って、該確率論的パルス発生器は、ベースライン/差分の入力データそれ自体を使用するのではなく、寧ろ、確率論的トランスレータの出力を使用する。別の言い方をすれば、図示されているように、データA及びデータBがレジスタに到来し、該確率論的トランスレータがその値を使用してハイ及びローのストリームを作成し、そして次に、該ストリームが該確率論的パルス発生器に送られ、それにより、複数のワード線(WL)を駆動する。
【0021】
その上、図3において、矢印205'は第2のサイクルの間の差分データによるデバイス203-1,1の第1の更新を表し;矢印207'は該第2のサイクルの間の差分データによるデバイス203-2,1の第1の更新を表し;矢印209'は該第2のサイクルの間の差分データによるデバイス203-2,2の第1の更新を表し;矢印211'は該第2のサイクルの間の差分データによるデバイス203-1,1の第2の更新を表し;矢印213'は該第2のサイクルの間の差分データによるデバイス203-2,1の第2の更新を表し;及び、矢印215'は該第2のサイクルの間の差分データによるデバイス203-1,2の第1の更新を表す。
【0022】
電圧Vx1及び電圧Vx2がハイである確率は、該第1のサイクルの間に0.5(0.45+0.05)及び0.6(0.55+0.05)であり、並びに、電圧δ1及び電圧Vδ2がローである確率は、該第1のサイクルの間に0.3及び0.4である。これは図2において10進数で示されており、及び図3において分数の形式で示されている。電圧Vx1及び電圧Vx2がハイである確率は、該第2のサイクルの間に0.4(0.45-0.05)、0.5(0.55-0.05)であり、並びに、電圧Vδ1及び電圧Vδ2がローである確率は、該第2のサイクルの間に0.3及び0.4である(図3における小数表記をまた参照)。
【0023】
慣用的な電圧供給278、制御回路279、レジスタ265に接続されたオンチップメモリ269(以下で更に議論されている)、及び外部メモリ267(以下で更に議論されている)が図2においてまた示されている。外部メモリ267以外の構成要素の一部又は全部が、集積回路チップ263上に実装されることができる(電圧供給及び/又は制御回路は、所望によりオフチップであることができる)。制御回路279は、本明細書において定義される機能を実行する;本明細書の機能の教示及び説明を考慮すると、任意の適切な技術ファミリー(例えば、7nmのCMOS、5nmのCMOS等)を用いて、既知の制御回路技術、例えば、マルチサイクル又はパイプライン、ハードワイヤード又はマイクロプログラム、が使用されることができる。例えば、特定された機能は、図9に関して以下に記載されているように、論理回路中にインスタンス化されることができる。
【0024】
図4は、ベースラインデータ及び差分データの例を示す。オリジナルデータは401で示されている。該オリジナルデータはベースラインデータ403と差分データ405とに分けられる。該差分データが該ベースラインデータに加えられるときに、該オリジナルデータが407で再現される。該ベースラインデータをコピーすることが無視できると仮定する場合に、本発明の例示的な実施態様についてのオリジナルデータ(96バイト)をコピーする為の総オーバーヘッドは、1回限りのベースラインデータのオーバーヘッドを無視することによって16バイト((16/96)*100=17%)になるであろう。その上、この点において、アプリケーションにおける訓練データの量は、典型的には非常に大きく、従って、データは典型的には、外部大容量ストレージデバイス、例えばソリッドステートドライブ(SSD)、から、オフチップインタフェース又は無線通信を介してオンチップメモリ(ランダムアクセスメモリ(RAM))へ移動される必要がある。この通信コストは非常に高価であり、従って、1以上の実施態様は、該通信コストを最小化することを追求する。SSD及びRAMは、そのような通信の非限定的な例である。適切な点は、1以上の実施態様において、該ベースラインデータをコピーすることは頻繁でなく、従って、該ベースラインデータの為の通信コストは無視できることである。
【0025】
1以上の実施態様において、8バイトは浮動小数点数を表すと仮定される。該ベースラインデータは、例えば、ヒューリスティックな方法又は統計的な方法(例えば、平均値、中央値)を使用して決定されることができる。該ベースラインデータは典型的には、長期間にわたる幾つかの代表的なデータであるべきであり、例えば、3サイクルにわたる全データが0.6→0.7→0.5である場合、該ベースラインデータ=0.6、及び差分データは、0→0.1→-0.1である。ここで、0.6は3つの値0.6、0.7及び0.5にわたる平均値である。「平均値及び中央値」は、多くの数値の中から代表的な値を見つける為に、最も広く使われている指標である。ベースラインデータ403は32バイト(4*8)であり、一方、差分データ405は16バイト(2*8)である。32バイトのベースラインデータは、n(ベースラインが変化する前の差分フレームの数、すなわち、該ベースラインデータはn番目のサイクルごとに受信されるだけでよい)が十分に大きい場合には、償却されることになる。従って、nが十分に大きいときには、ベースラインデータのオーバーヘッドは無視されると仮定されることができる(この図において、n=3、すなわち3フレームの差分データ、の値が示されているが、これは説明の便宜の為であり、実際の事例において、この数は典型的にははるかに大きく、例えば24超、であるべきである)。該ベースラインデータのオーバーヘッドが0であるとすると、96バイトの代わりに16バイトでデータが送信されることができる(17%の値を導く)。なお、96バイトの値は下記の式で決定される:オリジナルデータは3つの2×2の配列を有する;2*2=4、4*3*8バイト/浮動小数点数=96バイト。その上、疎な差分行列を有する差分データは、複数の差分行列の中で0でない値を有する2つの要素のみであり、浮動小数点数当たり8バイト倍、すなわち16バイト、になる。
【0026】
図5は、スパース性対閾値を示し、及び図6はファイル(データ)サイズ対閾値を示す。入力データは、分子動力学における距離行列であり、それは、タンパク質間の距離を表す(1フレーム当たり、183X183*8バイト=262KB)。閾値(許容誤り率(tolerable error rate))は、どの程度の誤りなら描画することが許容されるかを示す(図示されている例では、オングストローム)。スパース性はゼロの数を行列のセル数で割ったものであり、閾値が大きくなるほどスパース性が増加し、一方、スパース性が高いほどデータ(ファイル)サイズが減少する。従って、該スパース性が高いほど、該ファイルサイズが小さくなり、従って、読み込むデータ量が少なくなる。そのようなアプリケーションにおいて、連続する画像フレームは高い類似性を有し、非常に高いスパース性を有する非常に小さな差分データを導く。それ故に、非常に少ないデータ通信量が実現されることができる。許容誤りの範囲内で高い閾値を使用することによって、更に通信量が削減されることができる。
【0027】
従って、大規模なニューラルネットワークの訓練は、入力データの大量のストリームを必要とし、~TBサイズを超える頻繁な生データ通信、例えば、動く物体についてのビデオフレーム、及び分子力学、をもたらすことが理解されるであろう。入力データをベースラインデータと差分データとに分離して類似性を排除し、該ベースラインデータは頻繁に送信せず、しかし、容量の少ない差分データが頻繁に送信されることが知られている。このことにより通信コストにおける有意な削減が達成されるが、このことは、該ベースラインデータと該差分データとを合体させることによる明示的な回復処理(recovery process)を必要とする。有利には、1以上の実施態様は、そのような明示的な解凍処理(decompression process)を必要としないか又は使用しない。
【0028】
その上、1以上の実施態様は、フレーム間の高い類似性を有するストリーミングされた入力画像の為の抵抗プロセッサユニット(RPU:resistive processor unit)のアレイを使用する効率的な訓練ハードウェアシステムを提供する。ベースラインデータ及び差分データの為にワード線当たり2つの別個のパルス発生器を有することによって、訓練の間にベースラインデータ及び差分データが該アレイに同時に適用されることができる。上述されているように、慣用的なデジタル実装とは異なり、1以上の実施態様に従うアーキテクチャは、オリジナルデータの明示的な回復を必要としない。
【0029】
1以上の実施態様において、重みは、訓練されるべきアレイ内に記憶される。本明細書における他の箇所で述べられているように、確率論的トランスレータ295及び297は、レジスタ265内の入力データを、ハイ及びローの確率論的ストリームに変換する。次に、確率論的パルス発生器705及び707は、該確率論的トランスレータの出力(ハイ/ローのストリーム)に基づいてWL701を駆動するだけであり、すなわち、入力データをこれ以上直接使用することはない。従って、これらのパルス発生器は、ベース/差分の入力データそれ自体を使用せず、寧ろ、該確率論的トランスレータの出力を使用する。別の言い方をすれば、図示されている、データA及びBがレジスタに到来し、そして次に、該確率論的トランスレータが値を用いてハイ及びローのストリームを生成し、そして次に、該ストリームがパルス発生器に送られ、それにより、複数のワード線(WL)を駆動する。差分データは毎サイクル受信され、一方、ベースラインデータはn番目のサイクル毎に受信される。学習速度は、更新イネーブル信号のパルス幅(BL)を変調することで制御されることができる。
【0030】
従って、1以上の実施態様は、複数のフレーム間の高い類似性を有するストリーミングされた入力画像又は類似のデータの為の抵抗プロセッサユニット(RPU:resistive processor unit)を使用して、ニューラルネットワークの効率的なハードウェアベースの訓練の為の方法及び回路を提供する。
【0031】
例示的なユースケースは、訓練の間の更新プロセスの文脈において記載されているが、フォワード及び推論の重要な計算カーネルはまた行列の乗算であることが理解されるであろう。例えば、(電圧)ベクトルXと(行列、例えば重み)Wとの間で、X*Wを計算することが必要でありうる。非限定的な使用例において、推論の間、ビデオフレームのストリームが、ターゲットの位置を見つける為に受信されることができる。そのような場合、通信コストを節約する為に、同様の技法が、ベクトルXを「X_ベース+X_差分」へと分解することによって使用されることができる。
【0032】
例示的な推論プロセスが、図7において示されている。該推論の間、RPUビットセル203の記憶された値は変更されない。入力であるX_ベース+X_差分を電圧ベクトル周辺回路796から複数のワード線701に入力し、そして、複数のビット線703の下部における電流をインテグレータ(オペアンプ753とコンデンサ755)とアナログ・ツー・デジタルコンバータ(ADC:analog-to-digital converter)751を用いて計測するだけである。
【0033】
当業者は、RPUアレイの慣用的な訓練及び推論を、例えば、Gokmen T.and Vlasov Y.,Acceleration of Deep Neural Network Training with Resistive Cross-Point Devices: Design Considerations,Front.Neurosci.10:333,doi:10.3389/fnins.2016.00333,21 July 2016 and Gokmen T.,Onen M.and Haensch W.,Training Deep Convolutional Neural Networks with Resistive Cross-Point Devices,Front.Neurosci.11:538.doi:10.3389/fnins.2017.00538,10 October 2017から精通しているであろう。
【0034】
これまでの議論を踏まえると、一般的に云えば、本発明の1つの観点に従う例示的な電子回路は、複数のワード線701;複数の格子点において該複数のワード線と交差する複数のビット線703;及び、該複数のグリッド点に配置された複数の抵抗処理ユニット203-1,1、...、203-2,2を備えていることが理解されるであろう。該複数のワード線に接続された複数のベースライン確率論的パルス入力ユニット265(すなわち、複数のトランスレータ297に接続されたそれらの複数のレジスタ)、297及び705;該複数のワード線に接続された複数の差分確率論的パルス入力ユニット265(すなわち、複数のトランスレータ295に接続されたそれらの複数のレジスタ)、295及び707;該複数のビット線に接続された複数のビット線確率論的パルス入力ユニット265(すなわち、複数のトランスレータ299に接続されたそれらの複数のレジスタ)、299及び298が備えられている。更に、該複数のベースライン確率論的パルス入力ユニットと該複数の差分確率論的パルス入力ユニットと該複数のビット線確率論的パルス入力ユニットとの接続された制御回路279であって、該複数のベースライン確率論的パルス入力ユニットの各々に、ベース入力データを使用して1つのベースラインパルス列を生成させるように、該複数の差分確率論的パルス入力ユニットの各々に、該ベース入力データとの差分を定義する差分入力データを使用して1つの差分パルス列を生成させるように、及び該複数のビット線確率論的パルス入力ユニットの各々に、ビット線入力データを使用して1つのビット線パルス列を生成させるように構成された上記の制御回路279を備えている。
【0035】
1以上の実施態様において、該制御回路は、該複数のベースライン確率論的パルス入力ユニット、該複数の差分確率論的パルス入力ユニット及び該複数のビット線確率論的パルス入力ユニットを制御して、ニューラルネットワーク重みを該複数の抵抗処理ユニット内に記憶する。1以上の実施態様において、アプリケーションが何であれ、該重みは、例えば、画像が人間であるか又は猫であるか、細胞が癌細胞であるか又は正常細胞であるか、等、正確な最終決定を行う為の反復訓練機械学習プロセスから得られる数値に過ぎない。該重みが一旦得られると、該重みは、行列の乗算又は畳み込みの間に、該数値を入力画像値と掛け合わせることによって、該アプリケーションの為に使用されることができる(すなわち、推論の間に)。従って、例えば画像を認識する為の推論が実施されることができる。適切な動作、例えば、自律走行車、ロボット手術デバイス等を制御すること等、が、該認識された画像に基づいて取られることができる。
【0036】
1以上の実施態様において、該複数のベースライン確率論的パルス入力ユニットは各々、該ベースライン入力データの対応する部分を記憶するように構成されたベースラインレジスタ(すなわち、複数のトランスレータ297に接続されたそれらの複数のレジスタ)、該ベースラインレジスタに接続されたベースライン確率論的トランスレータ297、及び、該ベースライン確率論的トランスレータと、該複数のワード線のうちの対応する1つと、に接続されたベースラインパルス発生器705とを備えており、該複数の差分確率論的パルス入力ユニットは各々、該差分入力データの対応する部分を記憶するように構成された差分レジスタ(すなわち、複数のトランスレータ295に接続されたそれらの複数のレジスタ)と、該差分レジスタに接続された差分確率論的トランスレータ295と、該差分確率論的トランスレータ及び複数のワード線701のうちの対応する1つに接続された差分パルス発生器707とを備えており;並びに、該複数のビット線確率論的パルス入力ユニットは各々、該ビット線入力データの対応する部分を記憶するように構成されたビット線レジスタ(すなわち、複数のトランスレータ299に接続されたそれらの複数のレジスタ)、及び、該ビット線確率論的トランスレータと、該複数のビット線703のうちの対応する1つと、に接続されたビット線パルス発生器298を備えている。
【0037】
1以上の実施態様において、ベースライン確率論的トランスレータ297は、該複数のベースラインレジスタ内のベースラインデータを、ハイ及びローの複数のベースライン出力確率論的ストリームに変換するように構成されており、並びに該ベースラインパルス発生器705が、該ベースライン出力に基づいて該複数のワード線を駆動するように構成されている;該複数の差分確率論的トランスレータ295が、該複数の差分レジスタ内の差分データを、ハイ及びローの複数の差分出力確率論的ストリームに変換するように構成されており、及び該複数の差分パルス発生器707が、該差分出力に基づいて該複数のワード線を駆動するように構成されている;並びに、該複数のビット線確率論的トランスレータ299が、該複数のビット線レジスタ内のビット線データを、ハイ及びローの複数のビット線出力確率論的ストリームに変換するように構成されており、及び複数の該ビット線パルス発生器298が、該ビット線出力に基づいて該複数のビット線を駆動するように構成されている。
【0038】
1以上の実施態様において、電子回路は集積回路チップ263として実装され、該レジスタ265に接続され且つオフチップストレージ/外部メモリ267(非限定的な例において、ソリッドステートドライブ(SSD:Solid-State Drive))へのインタフェース(I/F)を備えているオンチップメモリ269(例えばランダムアクセスメモリ(RAM:random-access memory)、例えばSRAM(Static RAM)等)を更に備えている。
【0039】
1以上の実施態様において、差分データはサイクル毎に受信され;一方、ベースラインデータはn番目のサイクルごとに受信される。1以上の実施態様において、新しい入力データが外部デバイス(例えば、SSD)から受信されるたびに、そのようなデータは通常、オンチップ一時ストレージデバイス269、例えばRAM(非限定的な例において、SRAM)内に記憶される。しかしながら、(更新/訓練)計算の間、該データはRPUコアに更に近く、例えばレジスタ内に、移動される。値は該レジスタ内に記憶され、そして、ベースレジスタは頻繁に更新されない。
【0040】
更新式201において、該ビット線データは、「デルタ(δ)」である。該デルタの結果は、以前の逆伝播プロセスから来たものであり、及びオンチップストレージデバイス269内に記憶され、そして、更新プロセスの間にRPUコア近くのレジスタ265へ移動する。しかしながら、1以上の実施態様において、このデルタは頻繁に更新されない。該デルタは、所謂「バッチベース」処理によって、多くの新しい入力の為に再使用される。
【0041】
他で議論されているように、学習速度(learning rate)は、更新イネーブル信号のパルス幅(BL)を変調することによって制御されることができる。従って、1以上の実施態様において、制御回路は、該複数の差分確率論的トランスレータの出力において確率論的ビットストリーム(図3における第1のサイクル及び第2のサイクルについてのBLを参照)の長さを制御することによって、更新時刻を制御するように構成されている。
【0042】
1以上の実施態様において、図7を参照すると、該電子回路は、該複数のワード線に接続された電圧ベクトル周辺回路796と、該複数のビット線に接続された複数のインテグレータ(例えば、751、753及び755)と、を更に備えている。該制御回路は、該電圧ベクトル周辺回路及び複数のインテグレータを制御して、該複数の抵抗処理ユニット内に記憶された該複数のニューラルネットワーク重みを有する該複数の抵抗処理ユニットでの推論を実行する。適切な積分技術は、例えば、上述されたGokmen等の論文から知られている。
【0043】
1以上の実施態様において、該制御回路は、該電圧ベクトル周辺回路を制御して、電圧ベクトルを該複数のワード線にベースラインデータプラス差分データ(baseline data plus differential data)、すなわち、X_ベース+X_差分、として入力する。
【0044】
本明細書における教示を考慮すると、当業者は、既知の集積回路製造技術を使用して本明細書における回路を実装することができる。セルの様々な状態及びそれらがどのようにプログラムされるかを考慮して、1以上の信号を重ね合わせることにより、該重みがインクリメンタルな様式で更新される。1以上の実施態様において、列及び行についての2つの独立した乱数発生器(random number generator)で十分である。
【0045】
他の観点において、コンピュータに実装されたニューラルネットワークを訓練する為の例示的な方法は、上述された電子回路を用意することを含む(代替的には、明示的な提供工程の代わりに、該回路は、該方法が動作するワークピースである)。該方法は、(例えば、制御回路を用いて)該複数のベースライン確率論的パルス入力ユニットの各々に、ベース入力データを使用して1つのベースラインパルス列を生成させ、該複数の差分確率論的パルス入力ユニットの各々に、該ベース入力データとの差分を定義する差分入力データを使用して1つの差分パルス列を生成させ、及び該複数のビット線確率論的パルス入力ユニットの各々に、ビット線入力データを使用して1つのビット線パルス列を生成させることを含む。
【0046】
1以上の実施態様において、該方法は、(例えば、該制御回路を用いて)、該複数のベースライン確率論的パルス入力ユニット、該複数の差分確率論的パルス入力ユニット及び複数のビット線確率論的パルス入力ユニットを制御して、複数のニューラルネットワーク重みを該複数の抵抗処理ユニット内に記憶することを更に含む。
【0047】
1以上の実施態様において、該用意することにおいて(又は代替的に、該方法が動作するワークピースにおいて)、該複数のベースライン確率論的パルス入力ユニットは各々、該ベース入力データの対応する部分を記憶するように構成されたベースラインレジスタ、該ベースラインレジスタに接続されたベースライン確率論的トランスレータ、及び、該ベースライン確率論的トランスレータと、該複数のワード線のうちの対応する1つと、に接続されたベースラインパルス発生器を備えており;該複数の差分確率論的パルス入力ユニットは各々、該差分入力データの対応する部分を記憶するように構成された差分レジスタ、該差分レジスタに接続された差分確率論的トランスレータ、及び、該差分確率論的トランスレータと、該複数のワード線のうちの対応する1つと、に接続された差分パルス発生器を備えており;並びに、該複数のビット線確率論的パルス入力ユニットは各々、該ビット線入力データの対応する部分を記憶するように構成されたビット線レジスタ、該ビット線レジスタに接続されたビット線確率論的トランスレータ、及び、該ビット線確率論的トランスレータと、該複数のビット線のうちの対応する1つと、に接続されたビット線パルス発生器を備えている。該方法は更に、該複数のベースライン確率論的トランスレータが、該複数のベースラインレジスタ内のベースラインデータを、ハイ及びローの複数のベースライン出力確率論的ストリームに変換すること;該ベースラインパルス発生器が、該ベースライン出力に基づいて該複数のワード線を駆動すること;該複数の差分確率論的トランスレータが、該複数の差分レジスタ内の差分データを、ハイ及びローの複数の差分出力確率論的ストリームに変換すること;該複数の差分パルス発生器が、該差分出力に基づいて該ワード線を駆動すること;該複数のビット線確率論的トランスレータが、該複数のビット線レジスタ内のビット線データを、ハイ及びローの複数のビット線出力確率論的ストリームに変換すること;並びに、該複数のビット線パルス発生器が、該ビット線出力に基づいて該複数のビット線を駆動することを更に含む。
【0048】
1以上の実施態様は、(例えば、該制御回路を用いて)、該複数の差分確率論的トランスレータの出力において確率論的ビットストリームの長さを制御することによって、更新時刻を制御することを更に含む。
【0049】
図7を参照すると、1以上の実施態様において、該用意することにおいて(又は代替的に、該方法が動作するワークピースにおいて)、該電子回路は、該複数のワード線に接続された電圧ベクトル周辺回路と、該複数のビット線に接続された複数のインテグレータと、を更に備えている。更なる工程は、(例えば、該制御回路を用いて)、該電圧ベクトル周辺回路及び該複数のインテグレータを制御して、該複数の抵抗処理ユニット内に記憶された該複数のニューラルネットワーク重みを有する該複数の抵抗処理ユニットでの推論を実行することを更に含む。
【0050】
依然として図7を参照すると、1以上の実施態様は、(例えば、該制御回路を用いて)、該電圧ベクトル周辺回路を制御して、電圧ベクトルを該複数のワード線にベースラインデータプラス差分データとして入力することを更に含む。
【0051】
図8を参照すると、本発明の幾つかの観点は、ニューラルネットワーク等の為の訓練(任意的に推論)を加速する為に、特殊化されたハードウェア技術を使用するハードウェアコプロセッサ999として実装されることができる。図8は、そのようなハードウェアコプロセッサを備えているコンピュータシステム12を図示する。コンピュータシステム12は例えば、1以上の慣用的なプロセッサ又は処理ユニット16、システムメモリ28、及び様々なシステム構成要素、例えば、システムメモリ28及び1以上のハードウェアコプロセッサ999を包含する上記の様々なシステム構成要素、をプロセッサ16に接続するバス18を備えている。要素999及び16は、例えば適切なバスインタフェースユニットを用いて、該バスに接続することができる。
【0052】
バス18は、幾つかのタイプのバス構造、例えば、メモリバス又はメモリコントローラ、周辺機器バス、加速グラフィックスポート、及び様々なバスアーキテクチャのいずれかを使用するプロセッサ又はローカルバスを包含する上記の幾つかのタイプのバス構造、のうちのいずれか1以上を表す。限定ではなく例として、そのようなアーキテクチャは、業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、マイクロチャネルアーキテクチャ(MCA:Micro Channel Architecture)バス、拡張ISA(EISA:Enhanced ISA)バス、ビデオ電子規格協会(VESA:Video Electronics Standards Association)ローカルバス、及び周辺コンポーネント相互接続(PCI:Peripheral Component Interconnect)バスを包含する。
【0053】
コンピュータシステム/サーバ12は典型的には、様々なコンピュータ可読媒体を備えている。そのような媒体は、コンピュータシステム/サーバ12によってアクセス可能な任意の利用可能な媒体であってもよく、揮発性の媒体及び不揮発性の媒体、取り外し可能な媒体及び取り外し不可能な媒体の両方を包含する。
【0054】
システムメモリ28は、揮発性メモリ、例えば、ランダムアクセスメモリ(RAM)30若しくはキャッシュメモリ32又はそれらの組み合わせ、の形態におけるコンピュータシステム可読媒体を備えていることができる。コンピュータシステム/サーバ12は、他の取り外し可能/取り外し不可能、揮発性/不揮発性のコンピュータシステム記憶媒体を更に備えていてもよい。例示に過ぎないが、ストレージシステム34は、取り外し不可能な不揮発性の磁気媒体(図示せず、典型的には「ハードドライブ」と呼ばれる)から読み取り且つそれに書き込む為に提供されてもよい。図示されていないが、取り外し可能な不揮発性の磁気ディスク(例えば、「フロッピーディスク」)から読み取り且つそれに書き込む為の磁気ディスクドライブ、及び取り外し可能な不揮発性の光学ディスク、例えば、CD-ROM、DVD-ROM又は他の光学媒体、から読み取り且つそれに書き込む為の光ディスクドライブが提供されることが可能である。そのような場合、各々は、1以上のデータ媒体インタフェースによってバス18に接続されることができる。以下において更に図示及び記載されているように、システムメモリ28は、例えばニューラルネットワーク又はデジタルフィルタのソフトウェア実装部分を実行するように構成されたプログラムモジュールの1組(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を備えていてもよい。
【0055】
プログラムモジュール42の1組(少なくとも1つ)を有するプログラム/ユーティリティ40は、オペレーティングシステム、1以上のアプリケーションプログラム、他のプログラムモジュール、及びプログラムデータと同様に、例示であって限定でない方法によってシステムメモリ28内に記憶されうる。オペレーティングシステム、1以上のアプリケーションプログラム、他のプログラムモジュール、及びプログラムデータの各々、又はそれらの幾つかの組み合わせは、ネットワーク環境の実装を含みうる。プログラムモジュール42は一般的に、ソフトウェアで実装された機能若しくは方法論及びそれらの組み合わせを実行する。
【0056】
コンピュータシステム/サーバ12はまた、1以上の外部デバイス14、例えば、キーボード、ポインティングデバイス、ディスプレイ24等;ユーザがコンピュータシステム/サーバ12と対話することを可能にする1以上のデバイス;若しくは、コンピュータシステム/サーバ12が1以上の他のコンピュータデバイスと通信することを可能にする任意のデバイス(例えば、ネットワークカード、モデム等);又はそれらの組み合わせ、と通信しうる。そのような通信は、入力/出力(I/O)インタフェース22を介して生じることができる。依然として、コンピュータシステム/サーバ12は、ネットワークアダプタ20を介して、1以上のネットワーク、例えば、ローカルエリアネットワーク(LAN:local area network)、一般的なワイドエリアネットワーク(WAN:wide area network)、若しくはパブリックネットワーク(例えば、インターネット)、又はそれらの組み合わせ、と通信することができる。図示されているように、ネットワークアダプタ20は、バス18を介してコンピュータシステム/サーバ12の他の構成要素と通信する。図示されていないが、他のハードウェア構成要素若しくはソフトウェア構成要素又はそれらの組み合わせがコンピュータシステム/サーバ12と共に使用されることができることが理解されるべきである。例は、マイクロコード、デバイスドライバ、冗長処理ユニット、及び外部ディスクドライブアレイ、RAIDシステム、テープドライブ、及びデータアーカイバルストレージシステム等を包含するが、これらに限定されるものではない。
【0057】
依然として図8を参照すると、プロセッサ16、メモリ28、及び、ディスプレイ24と1以上の外部デバイス14、例えば、キーボード、ポインティングデバイス等、との入力/出力インタフェース22に注目する。本明細書において使用される場合に、語「プロセッサ」は、任意の処理デバイス、例えば、CPU(central processing unit:中央処理ユニット)若しくは他の形態の処理回路(例えば、999)等又はそれらの組み合わせ、を包含することが意図される。更に、語「プロセッサ」は、1以上の個々のプロセッサを云う場合がある。語「メモリ」は、プロセッサ、すなわちCPU、に関連付けられたメモリ、例えば、RAM(random access memory:ランダムアクセスメモリ)30、ROM(read only memory:読み取り専用メモリ)、固定メモリデバイス(例えば、ハードドライブ34)、取り外し可能メモリデバイス(例えば、ディスケット)、フラッシュメモリ、を包含することが意図される。加えて、本明細書において使用される場合に、句「入力/出力インタフェース」は、例えば、処理装置にデータを入力する為の1以上の機構(例えば、マウス)、及び該処理装置に関連付けられた結果を提供する為の1以上の機構(例えば、プリンタ)へのインタフェースを企図することが意図される。プロセッサ16、コプロセッサ999、メモリ28、及び入力/出力インタフェース22は、データ処理ユニット12の一部として、例えば、バス18を介して相互接続されることができる。適切な相互接続、例えばバス18を介した適切な相互接続、はまた、ネットワークインタフェース20、例えば、コンピュータネットワークとインタフェースする為に提供されることができるネットワークカード、及び媒体インタフェース、例えば、適切な媒体とインタフェースする為に提供されることができるディスケット又はCD-ROMドライブ、に提供されることができる。
【0058】
従って、所望のタスクを実行する為の命令又はコードを含むコンピュータソフトウェアは、関連付けられたメモリデバイス(例えば、ROM、固定又は取り外し可能なメモリ)のうちの1以上内に記憶され、そして、利用される準備ができたときに、一部又は全部を(例えば、RAM内に)ロードし、そして、CPUによって実行されうる。そのようなソフトウェアは、ファームウェア、常駐ソフトウェア、マイクロコード等を包含しうるが、これらに限定されるものではない。
【0059】
プログラムコードの記憶若しくは実行又は記憶且つ実行の為に適したデータ処理システムは、システムバス18を通じてメモリ要素28に直接的に又は間接的に接続された少なくとも1つのプロセッサ16を備えている。該メモリ要素は、プログラムコードの実際の実装の間に使用されるローカルメモリ、バルクストレージ、及び実装の間にバルクストレージからコードが取得されなければならない回数を減らす為に、少なくとも一部のプログラムコードの一時的なストレージを提供するキャッシュメモリ32を包含しうる。
【0060】
入力/出力デバイス、すなわちI/Oデバイス(キーボード、ディスプレイ、ポインティングデバイス等を包含するが、これらに限定されない)は、直接的に又は介在するI/Oコントローラを介して、システムに接続されることができる。
【0061】
データ処理システムが、介在するプライベートネットワーク又はパブリックネットワークを通じて他のデータ処理システム又はリモートプリンタ又はストレージデバイスに接続されることを可能にする為に、ネットワークアダプタ20はまた該システムに接続されうる。モデム、ケーブルモデム及びイーサネットカードは、現在利用可能なタイプのネットワークアダプタのほんの一部である。
【0062】
特許請求の範囲を含む本明細書において使用される場合に、「サーバ」は、サーバプログラムを実行する物理的なデータ処理システム(例えば、図8において示されているシステム12)を包含する。そのような物理的なサーバは、ディスプレイ及びキーボードを備えていてもよく又は備えていなくてもよいことが理解されるであろう。その上、図8はまた、例えば、以下に記載されている設計プロセスの観点を実装する為に使用されることができる慣用的な汎用コンピュータ(例えば、コプロセッサ999を有しない汎用コンピュータ)を表す。
【0063】
半導体設計、製造若しくは試験又はそれらの組み合わせにおいて使用される例示的な設計プロセス
【0064】
本発明の観点に従ったハードウェアの1以上の実施態様は、半導体集積回路設計シミュレーション、テスト、レイアウト、若しくは製造又はそれらの組み合わせの為の技法を使用して実装されることができる。これに関して、図9は、例えば、半導体IC論理設計、シミュレーション、テスト、レイアウト及び製造において使用される例示的な設計フロー700のブロック図を示す。設計フロー700は、設計構造又はデバイスを処理して、設計構造若しくはデバイス又はそれら組み合わせ、例えば本明細書において記載されたもの等、の論理的又は他の機能的に等価な表現を生成する為のプロセス、機械若しくは機構又はそれらの組み合わせを包含する。設計フロー700によって処理される若しくは生成される又は処理且つ生成される設計構造体は、データ処理システム上で実行され又は他の方法で処理されたときに、ハードウェアコンポーネント、回路、デバイス又はシステムの論理的、構造的、機械的又は他の機能的に同等の表現を生成するデータ若しくは命令又はそれらの組み合わせを含むように機械可読ストレージ媒体上に符号化されてもよい。機械は、IC設計プロセス、例えば、回路、コンポーネント、デバイス又はシステムを設計すること、製造すること又はシミュレーションすること、において使用されるあらゆる機械を包含するが、これらに限定されるものではない。例えば、機械は、リソグラフィ装置、マスクを生成する為の機械若しくは装置又はそれらの組み合わせ(例えば、電子ビーム描画装置(e-beam writers))、設計構造体をシミュレーションする為のコンピュータ又は装置、製造又はテストプロセスにおいて使用されるあらゆる装置、又は設計構造体の機能的に等価な表現を任意の媒体内にプログラミングする為のあらゆる機械(例えば、プログラム可能なゲートアレイをプログラミングする為の機械)を包含しうる。
【0065】
設計フロー700は、設計される表現のタイプに依存して異なりうる。例えば、特定用途向けIC(ASIC:application specific IC)を構築する為の設計フロー700は、標準コンポーネントを設計する為の設計フロー700、又は該設計をプログラム可能なアレイ、例えばAltera登録商標 Inc.又はXilinx登録商標Inc.によって提供されるプログラム可能なゲートアレイ(PGA:programmable gate array)又はフィールドプログラム可能なゲートアレイ(FPGA:field programmable gate array)、にインスタンスする為の設計フロー700と異なりうる。
【0066】
図9は、好ましくは設計プロセス710によって処理される入力設計構造体720を備えている複数のそのような設計構造を図示する。設計構造体720は、ハードウェアデバイスの論理的に等価な機能表現を生成する為に設計プロセス710によって生成され且つ処理される論理シミュレーション設計構造体でありうる。設計構造体720はまた、又は代替的に、設計プロセス710によって処理されるときに、ハードウェアデバイスの物理的構造の機能的表現を生成するデータ若しくはプログラム命令又はそれらの組み合わせを含みうる。機能的若しくは構造的又はそれらの組み合わせの設計特徴を表すかどうかにかかわらず、設計構造体720は、電子コンピュータ支援設計(ECAD:electronic computer-aided design)、例えばコア開発者/設計者によって実装される電子コンピュータ支援設計、を使用して生成されうる。ゲートアレイ又はストレージ媒体等に符号化されるときに、設計構造体720は、設計プロセス710内の1以上のハードウェア若しくはソフトウェアモジュール又はそれらの組み合わせによってアクセスされ且つ処理されて、電子コンポーネント、回路、電子又は論理モジュール、装置、デバイス、又はシステムをシミュレーションする又はさもなければ他の方法で機能的に表現しうる。このように、設計構造体720はファイル又は他のデータ構造体を含み得、該ファイル又は他のデータ構造体は、設計又はシミュレーションデータ処理システムによって処理されるときに、回路又はハードウェア論理設計の他のレベルを機能的にシミュレーションする又はさもなければ他の方法で表現する、ヒト若しくは機械可読ソースコード又はそれらの組み合わせ、コンパイルされた構造体、及びコンピュータ実行可能コード構造体を備えている。そのようなデータ構造体は、ハードウェア記述言語(HDL:hardware-description language)設計エンティティ、或いは低レベルHDL設計言語、例えば、Verilog及びVHDL、若しくは高レベル設計言語、例えばC若しくはC++、又はそれらの組み合わせに準拠した若しくはそれらに互換性のある又はそれらに準拠し且つ互換性のある他のデータ構造体を包含しうる。
【0067】
設計プロセス710は好ましくは、設計構造体、例えば設計構造体720、を備えていてもよいネットリスト780を生成する為に、コンポーネント、回路、デバイス又は論理構造体の設計/シミュレーション機能同等物を合成、翻訳、又はさもなければ他の方法で処理する為のハードウェア若しくはソフトウェアモジュール又はそれらの組み合わせを使用し且つ組み入れる。ネットリスト780は、例えば、集積回路設計における他の要素及び回路への接続を記述するリスト、例えば、ワイヤ、ディスクリート構成要素、論理ゲート、制御回路、I/Oデバイス、モデル等の上記リストを表すコンパイルされたデータ構造体又は他の方法で処理されたデータ構造体を含みうる。ネットリスト780は、デバイスの設計仕様及びパラメータに依存してネットリスト780が1回以上再合成される反復プロセスを使用して合成されうる。本明細書において記載されている他の設計構造タイプと同様に、ネットリスト780は、機械可読データストレージ媒体上に記録されうるか又はプログラム可能なゲートアレイ内にプログラムされうる。該媒体は、不揮発性の記憶媒体、例えば、磁気又は光ディスクドライブ、プログラム可能なゲートアレイ、コンパクトフラッシュ、又は他のフラッシュメモリ、でありうる。加えて、又は代替的に、該媒体は、システム又はキャッシュメモリ、バッファスペース、又は他の適切なメモリであってもよい。
【0068】
設計プロセス710は、様々な入力データ構造タイプ、例えばネットリスト780を包含する上記の様々な入力データ構造タイプ、を処理する為のハードウェア及びソフトウェアモジュールを含みうる。そのようなデータ構造タイプは、例えば、ライブラリ要素730内に存在してもよく、及び所定の製造技術(例えば、異なる技術ノード、32nm、45nm、90nm等)の為に一般的に使用される要素、回路及びデバイスの1組、例えば、モデル、レイアウト及び記号表現を包含する上記の一般的に使用される要素、回路及びデバイス、を含んでいてもよい。該データ構造タイプは、設計仕様740、特性データ750、検証データ760、設計ルール770、及び、入力テストパターン、出力テスト結果及び他のテスト情報を包含しうるテストデータファイル785を更に含みうる。設計プロセス710は、標準機械設計プロセス、例えば、応力解析;熱解析;機械的事象シミュレーション;操作、例えば、鋳造、成形及びダイプレス成形等、の為のプロセスシミュレーションを更に含みうる。機械設計の技術分野における当業者は、本発明の範囲から逸脱すること無しに、設計プロセス710において使用されるありうる機械設計ツール及びアプリケーションの範囲を理解することができる。設計プロセス710はまた、標準的な回路設計プロセス、例えば、タイミング解析、検証、設計ルールチェック、配置及び経路操作等、を実行する為のモジュールを含みうる。
【0069】
設計プロセス710は、論理設計ツール及び物理設計ツール、例えば、HDLコンパイラ及びシミュレーションモデル構築ツール、を使用し且つ組み込んで、設計構造体720を、任意の追加の機械設計又はデータ(該当する場合)と共に図示されたサポートデータ構造体の一部又は全てと共に処理して、第2の設計構造体790を生成する。設計構造体790は、機械的デバイス及び構造体のデータの交換の為に使用されるデータ形式(例えば、IGES、DXF、Parasolid XT、JT、DRG、又はそのような機械的設計構造体を記憶又はレンダリングする為の任意の他の適切な形式で記憶される情報)のストレージ媒体又はプログラム可能なゲートアレイ上に常駐する。設計構造体720と同様に、設計構造体790は好ましくは、データストレージ媒体上に存在し、及びECADシステムによって処理されるときに、本明細書において開示される1以上のIC設計等の論理的又はその他の機能的に等価な形態を生成する1以上のファイル、データ構造、又は他のコンピュータエンコードデータ又は命令を含む。1つの実施態様において、設計構造体790は、本明細書において開示されるデバイスを機能的にシミュレーションするコンパイルされた実行可能なHDLシミュレーションモデルを含みうる。
【0070】
設計構造体790はまた、集積回路のレイアウトデータ若しくはシンボリックデータ形式又はそれらの組み合わせの交換の為に使用されるデータ形式(例えば、GDSII(GDS2)、GL1、OASIS、マップファイル、又はそのような設計データ構造体を記憶する為の任意の他の適切な形式で記憶される情報)を使用しうる。設計構造体790は、情報、例えば、シンボルデータ、マップファイル、テストデータファイル、設計内容ファイル、製造データ、レイアウトパラメータ、ワイヤ、金属のレベル、ビア、形状、製造ラインを通じる配線の為のデータ、及び製造者若しくは他の設計者/開発者が本明細書において記載されたデバイス若しくは構造体を製造する為に必要とされる他の任意のデータ等、を含みうる。次に、設計構造体790は段階795に進み、そこでは、例えば、設計構造体790が、テープアウト(tape-out)に進む、製造にリリースされる、マスクハウスにリリースされる、別のデザインハウスに送られる、顧客に送り返される。
【0071】
本発明の様々な実施態様の記載は、例示の目的の為に提示されたものであり、網羅的であること又は開示された実施態様に限定されることが意図されたものでない。多くの修正及び変形が、記載された実施態様の範囲及び精神から逸脱すること無しに当業者に明らかであろう。本明細書において使用される語は、実施態様の原理、実用的な用途、又は市場において見られる技術に対する技術的改善を最もよく説明する為に、又は当業者が本明細書において開示されている実施態様を理解することができるようにする為に選択された。
図1
図2
図3
図4
図5
図6
図7
図8
図9
【国際調査報告】