JP2024525333A - 深さ方向畳み込みのためのメモリ内計算アーキテクチャ - Google Patents

深さ方向畳み込みのためのメモリ内計算アーキテクチャ Download PDF

Info

Publication number
JP2024525333A
JP2024525333A JP2023577151A JP2023577151A JP2024525333A JP 2024525333 A JP2024525333 A JP 2024525333A JP 2023577151 A JP2023577151 A JP 2023577151A JP 2023577151 A JP2023577151 A JP 2023577151A JP 2024525333 A JP2024525333 A JP 2024525333A
Authority
JP
Japan
Prior art keywords
cim
cells
columns
array
rows
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2023577151A
Other languages
English (en)
Inventor
リー、レン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2024525333A publication Critical patent/JP2024525333A/ja
Pending legal-status Critical Current

Links

Abstract

Figure 2024525333000001
いくつかの態様は、ニューラルネットワークにおける信号処理のための装置を提供する。装置は、概して、ニューラルネットワーク計算のための第1のカーネルとして構成された第1のメモリ内計算(CIM)セルであって、CIMセルの第1のセットが、CIMアレイの1つ以上の第1の列及び第1の複数の行を含む、第1のCIMセルを含む。装置はまた、ニューラルネットワーク計算のための第2のカーネルとして構成されたCIMセルの第2のセットであって、CIMアレイの1つ以上の第1の列及び第2の複数の行を含むCIMセルの第2のセットを含む。第1の複数の行は、第2の複数の行とは異なっていてもよい。

Description

関連出願の相互参照
[0001] 本出願は、本出願の譲受人に譲渡され、その全体が参照により本明細書に組み込まれている、2021年6月29日に出願された米国出願第17/361,807号の優先権を主張する。
[0002] 本開示の態様は、機械学習タスクを実行することに関し、具体的には、メモリ内で深さ方向分離可能畳み込みを実行するためのメモリ内計算アーキテクチャ及びデータフローに関する。
[0003] 機械学習は、一般に、アプリオリに知られる訓練データのセットへの一般化適合を表す、訓練されたモデル(例えば、人工ニューラルネットワーク、ツリー、又は他の構造)を作り出すプロセスである。訓練されたモデルを新しいデータに適用することにより、推論が生成され、推論は、新しいデータへの洞察を得るために使用することができる。場合によっては、モデルを新しいデータに適用することは、新しいデータに対して「推論を実行すること」として説明される。
[0004] 様々な機械学習(又は人工知能)タスクを可能にするために機械学習の使用が急増するにつれて、機械学習モデルデータのより効率的な処理の必要が生じてきた。場合によっては、機械学習アクセラレータなどの専用ハードウェアを使用して、機械学習モデルデータを処理する処理システムの能力を強化することができる。しかしながら、そのようなハードウェアは、空間及び電力を必要とし、これは、処理デバイス上で常に利用可能であるとは限らない。例えば、モバイルデバイス、常時オンデバイス、モノのインターネット(internet of things、IoT)デバイスなどの「エッジ処理」デバイスは、処理能力と電力及びパッケージング制約とのバランスをとらなければならない。更に、アクセラレータは、共通データバスにわたってデータを移動させる必要がある場合があり、これは、かなりの電力使用を引き起こし、データバスを共有する他のプロセスに待ち時間を導入する可能性がある。したがって、機械学習モデルデータを処理するために、処理システムの他の態様が考慮されている。
[0005] メモリデバイスは、いわゆるメモリ内計算(computation in memory、CIM)プロセスを通じて機械学習モデルデータの処理を実行するために活用することができる処理システムの別の態様の一例である。残念ながら、CIMプロセスは、デジタル乗算及び累算回路(digital multiply-and-accumulate circuits、DMAC)及び関連する周辺機器などの追加のハードウェア要素なしに、深さ方向分離可能畳み込みニューラルネットワークなどの複雑なモデルアーキテクチャの処理を実行することができない場合がある。これらの追加のハードウェア要素は、それらの実装において追加の空間、電力、及び複雑さを使用し、これは、追加の計算リソースとしてメモリデバイスを活用する利点を低減する傾向がある。処理システムの補助的な態様が、メモリ内で直接実行することができない処理を実行するために利用可能なDMACを有する場合であっても、それらの補助的な態様との間でデータを移動させることは、時間及び電力を必要とし、したがって、CIMプロセスの利益を減らす。
[0006] したがって、深さ方向分離可能畳み込みニューラルネットワークなどの、より多種多様な機械学習モデルアーキテクチャのメモリ内計算を実行するためのシステム及び方法が必要とされる。
[0007] いくつかの態様は、ニューラルネットワークにおける信号処理のための装置を提供する。装置は、概して、深さ方向(depthwise、DW)ニューラルネットワーク計算のための第1のカーネルとして構成された第1のメモリ内計算(CIM)セルであって、CIMセルの第1のセットが、CIMアレイの1つ以上の第1の列及び第1の複数の行を含む、第1のCIMセルと、ニューラルネットワーク計算のための第2のカーネルとして構成されたCIMセルの第2のセットであって、CIMアレイの1つ以上の第1の列及び第2の複数の行を含み、第1の複数の行が第2の複数の行とは異なっている、CIMセルの第2のセットと、を含む。装置はまた、点ごとの(pointwise、PW)ニューラルネットワーク計算のための第3のカーネルとして構成されたCIMアレイのCIMセルの第3のセットを含むことができる。
[0008] いくつかの態様は、ニューラルネットワークにおける信号処理の方法を提供する。この方法は、概して、CIMアレイの1つ以上の第1の列上の複数のCIMセルグループを使用して実装された複数のカーネルを介して複数のDW畳み込み演算を実行することと、複数のDW畳み込み演算からの出力に基づいて、PW畳み込み演算のための入力信号を生成することと、を含む。この方法はまた、入力信号に基づいて、CIMアレイの1つ以上の第2の列上のCIMセルグループを使用して実装されたカーネルを介して実行される、PW畳み込み演算を実行することを含む。
[0009] いくつかの態様は、処理システムの1つ以上のプロセッサによって実行されると、処理システムに、ニューラルネットワークにおける信号処理の方法を実行させる命令を有する非一時的コンピュータ可読媒体を提供する。この方法は、概して、CIMアレイの1つ以上の第1の列上の複数のCIMセルグループを使用して実装された複数のカーネルを介して複数のDW畳み込み演算を実行することと、複数のDW畳み込み演算からの出力に基づいて、PW畳み込み演算のための入力信号を生成することと、を含む。この方法はまた、入力信号に基づいて、CIMアレイの1つ以上の第2の列上のCIMセルグループを使用して実装されたカーネルを介して実行される、PW畳み込み演算を実行することを含む。
[0010] 他の態様は、前述の方法並びに本明細書に記載する方法を実行するように構成された処理システムと、処理システムの1つ以上のプロセッサによって実行されると、処理システムに、前述の方法並びに本明細書に記載する方法を実行させる命令を備える非一時的コンピュータ可読媒体と、前述の方法並びに本明細書に更に記載する方法を実行するコードを備えるコンピュータ可読記憶媒体上に具現化されたコンピュータプログラム製品と、前述の方法並びに本明細書に更に記載する方法を実行する手段を備える処理システムと、を提供する。
[0011] 以下の説明及び関連図面は、1つ以上の態様のいくつかの例示的な特徴を詳細に記載する。
[0012] 添付の図は、1つ以上の態様のうちのいくつかの態様を示し、したがって、本開示の範囲の限定と見なされるべきでない。
[0013] 様々なタイプのニューラルネットワークの例を示す図である。 様々なタイプのニューラルネットワークの例を示す図である。 様々なタイプのニューラルネットワークの例を示す図である。 様々なタイプのニューラルネットワークの例を示す図である。 [0014] 従来の畳み込み演算の一例を示す図である。 [0015] 深さ方向分離可能畳み込み演算の例を示す図である。 深さ方向分離可能畳み込み演算の例を示す図である。 [0016] 機械学習モデル計算を実行するように構成された例示的なメモリ内計算(CIM)アレイを示す。 [0017] 図4のbitccellsを表すことができる、例示的なビットセルの追加の詳細を示す図である。 図4のbitccellsを表すことができる、例示的なビットセルの追加の詳細を示す図である。 [0018] CIMアレイ演算中の様々な信号の例示的なタイミング図である。 [0019] CIMアレイによって実装された例示的な畳み込み層アーキテクチャを示す図である。 [0020] 本開示のいくつかの態様による、CIMアレイを含むCIMアーキテクチャを示す図である。 本開示のいくつかの態様による、CIMアレイを含むCIMアーキテクチャを示す図である。 [0021] 本開示のいくつかの態様による、図8BのCIMアーキテクチャを介した信号処理のための例示的な動作を示す図である。 [0022] 本開示のいくつかの態様による、処理効率を改善するためにサブバンクに分割されたCIMアレイを示す図である。 [0023] 本開示のいくつかの態様による、処理精度を改善するために反復されたカーネルを用いて実装されたCIMアレイを示す図である。 [0024] 本開示のいくつかの態様による、ニューラルネットワークにおける信号処理のための例示的な動作を示すフロー図である。 [0025] 本開示のいくつかの態様による、ニューラルネットワークにおける信号処理のための動作を実行するように構成された例示的な電子デバイスを示す図である。
[0026] 理解を容易にするために、可能な場合、図面に共通の同一の要素を指定するために同一の参照番号が使用されている。1つの態様の要素及び特徴が更なる記載なく他の態様に有益に組み込まれてもよいことが企図される。
[0027] 本開示の態様は、深さ方向(DW)分離可能畳み込みニューラルネットワークを含む機械学習モデルのメモリ内計算(CIM)を実行するための装置、方法、処理システム、及びコンピュータ可読媒体を提供する。いくつかの態様は、CIMアレイ上に実装された2位相畳み込み技術を提供する。例えば、2つの位相のうちの1つは、CIMアレイ上に実装されたカーネルを使用するDW畳み込み演算を含むことができ、2つの位相のうちの別の1つは、CIMアレイ上に実装されたカーネルを使用する点ごとの(PW)畳み込み演算を含むことができる。
[0028] 例えば、いくつかの態様は、DW畳み込みに使用される異なるカーネルのために構成されたCIMアレイのCIMセルを対象とし、カーネルは、CIMアレイの異なる行及び同じ列上に実装される。カーネルは、本明細書に記載されるように、位相手法を使用して処理することができる。カーネルを実装するセルの出力は、アナログデジタル変換器(analog-to-digital converter、ADC)に結合することができる。DW計算の結果は、本明細書でより詳細に説明するように、更なる処理のために非線形活性化回路に入力され、点ごとの計算のために同じCIMアレイに戻して入力されてもよい。本明細書に記載する態様は、本明細書でより詳細に説明するように、従来の実装形態と比較して、CIMアレイ上に実装することができるカーネルの数を増加させながら、DW畳み込み演算のためにオンデマンドで任意のCIMアレイを構成する際に柔軟性を提供する。
[0029] CIMベースの機械学習(machine learning、ML)/人工知能(artificial intelligence、AI)タスクアクセラレータは、画像及びオーディオ処理を含む多種多様なタスクのために使用することができる。更に、CIMは、ダイナミックランダムアクセスメモリ(dynamic random access memory、DRAM)、スタティックランダムアクセスメモリ(static random access memory、SRAM)(例えば、図5のようなSRAMセルに基づく)、磁気抵抗ランダムアクセスメモリ(magnetoresistive random-access memory、MRAM)、及び抵抗ランダムアクセスメモリ(resistive random-access memory、ReRAM)などの様々なタイプのメモリアーキテクチャに基づくことができ、中央プロセッサユニット(central processor units、CPU)、デジタル信号プロセッサ(digital signal processors、DSP)、グラフィカルプロセッサユニット(graphical processor units、GPU)、フィールドプログラマブルゲートアレイ(field-programmable gate arrays、FPGA)、AIアクセラレータなどを含む様々なタイプの処理ユニットに取り付けることができる。一般に、CIMは、メモリに出入りするデータの移動がデータの計算よりも多くの電力を消費する「メモリウォール」問題を有利に低減することができる。したがって、メモリ内で計算を実行することによって、著しい電力節約を実現することができる。これは、低電力エッジ処理デバイス、モバイルデバイスなどの様々なタイプの電子デバイスに特に有用である。
[0030] 例えば、モバイルデバイスは、データ及びメモリ内計算動作を記憶するように構成されたメモリデバイスを含むことができる。モバイルデバイスは、モバイルデバイスのカメラセンサによって生成された画像データなどの、モバイルデバイスによって生成されたデータに基づいて、ML/AI動作を実行するように構成することができる。したがって、モバイルデバイスのメモリコントローラユニット(memory controller unit、MCU)は、別のオンボードメモリ(例えば、フラッシュ又はRAM)からメモリデバイスのCIMアレイに重みをロードし、入力特徴バッファ及び出力(例えば、活性化)バッファを割り当てることができる。次いで、処理デバイスは、例えば、入力バッファ内の層をロードし、CIMアレイ内にロードされた重みを用いて層を処理することによって、画像データの処理を開始することができる。この処理は、画像データの層ごとに反復することができ、出力(例えば、活性化)は、出力バッファに記憶し、次いで、顔認識などのML/AIタスクのためにモバイルデバイスによって使用することができる。
ニューラルネットワーク、深層ニューラルネットワーク、及び深層学習に関する簡単な背景
[0031] ニューラルネットワークは、相互接続されたノードの層に構成されている。一般に、ノード(又はニューロン)は、計算が行われる場所である。例えば、ノードは、入力データを増幅する又は減衰させる、のいずれかをする重み(又は係数)のセットと入力データを組み合わせてもよい。したがって、入力信号の増幅又は減衰は、ネットワークが学習しようとしているタスクに関する様々な入力への相対的重要性の割り当てと見なされてもよい。一般に、入力-重み積が加算(又は累積)され、次いで、信号がネットワーク内を更に進行すべきかどうか及びどのくらい進行すべきかを判定するために、この和がノードの活性化関数を通される。
[0032] ほとんどの基本的な実装形態では、ニューラルネットワークは、入力層と、隠れ層と、出力層とを有することができる。「深層」ニューラルネットワークは、一般に、2つ以上の隠れ層を有する。
[0033] 深層学習は、深層ニューラルネットワークを訓練する方法である。一般に、深層学習は、ネットワークへの入力をネットワークからの出力にマッピングし、したがって、任意の入力xと任意の出力yとの間の未知の関数f(x)=yを近似するように学習することができるので、「万能近似器」と呼ばれることがある。言い換えれば、深層学習は、xをyに変換するための正しいfを見つける。
[0034] より具体的には、深層学習は、特徴の異なるセット、すなわち、前の層からの出力に基づいてノードの各層を訓練する。したがって、深層ニューラルネットワークの各連続層によって、特徴は、より複雑になる。したがって、深層学習は、各層において連続的により高い抽象レベルで入力を表すように学習し、それによって入力データの有用な特徴表現を構築することによって、入力データからより高いレベルの特徴を漸進的に抽出して、物体認識などの複雑なタスクを実行することができるので、強力である。
[0035] 例えば、視覚データが提示された場合、深層ニューラルネットワークの第1の層は、入力データにおけるエッジなどの比較的単純な特徴を認識するように学習することができる。別の例では、聴覚データが提示された場合、深層ニューラルネットワークの第1の層は、入力データの特定の周波数におけるスペクトル電力を認識するように学習することができる。次いで、深層ニューラルネットワークの第2の層は、第1の層の出力に基づいて、視覚データの単純な形状などの特徴の組み合わせ又は聴覚データの音の組み合わせを認識するように学習することができる。次いで、より上位の層は、視覚データにおける複雑な形状又は聴覚データにおける単語を認識するように学習することができる。更に上位の層は、一般的な視覚オブジェクト又は発話フレーズを認識するように学習することができる。したがって、深層学習アーキテクチャは、自然階層構造を有する問題に適用されたときに特に良好に機能することができる。
ニューラルネットワークにおける層結合性
[0036] 深層ニューラルネットワークなどのニューラルネットワークは、層間の様々な結合性パターンを用いて設計することができる。
[0037] 図1Aは、全結合ニューラルネットワーク102の一例を示す。全結合ニューラルネットワーク102では、第1の層内のノードは、その出力を第2の層内のあらゆるノードに伝達し、その結果、第2の層内の各ノードは、第1の層内のあらゆるノードから入力を受信することになる。
[0038] 図1Bは、局所結合ニューラルネットワーク104の一例を示す。局所結合ニューラルネットワーク104では、第1の層内のノードは、第2の層内の限られた数のノードに結合されていてもよい。より一般的には、局所結合ニューラルネットワーク104の局所結合層は、ある層内の各ノードが同じ又は類似の結合性パターンを、しかし異なる値(例えば、110、112、114、及び116)を有することができる結合強度(又は重み)で有するように構成することができる。所与の領域の中の上位層ノードは、訓練を通じてネットワークへの全入力のうちの制約された部分の特性に調整される入力を受信することがあるので、局所結合の結合性パターンは、上位層内で空間的に別個の受容野を生じることがある。
[0039] 1つのタイプの局所結合ニューラルネットワークは、畳み込みニューラルネットワークである。図1Cは、畳み込みニューラルネットワーク106の一例を示す。畳み込みニューラルネットワーク106は、第2の層内の各ノードに対する入力に関連付けられた結合強度が共有されるように構成することができる(例えば、108)。畳み込みニューラルネットワークは、入力の空間位置が意味のある問題に好適である。
[0040] 1つのタイプの畳み込みニューラルネットワークは、深層畳み込みネットワーク(deep convolutional network、DCN)である。深層畳み込みネットワークは、複数の畳み込み層のネットワークであり、例えば、プーリング層及び正規化層を用いて更に構成することができる。
[0041] 図1Dは、画像キャプチャデバイス130によって生成された画像126内の視覚特徴を認識するように設計されたDCN100の一実施例を示す。例えば、画像キャプチャデバイス130がビークルに搭載されたカメラであった場合、DCN100は、交通標識、更には交通標識上の数字を識別するように、様々な教師あり学習技術を用いて訓練することができる。同様に、DCN100は、車線区分線を識別すること、又は交通信号を識別することなどの、他のタスクのために訓練することができる。これらは、いくつかの例示的なタスクに過ぎず、多くの他のタスクが可能である。
[0042] この実施例では、DCN100は、特徴抽出セクション及び分類セクションを含む。画像126を受信すると、畳み込み層132は、(例えば、図2に示して説明するように)画像126に畳み込みカーネルを適用して、特徴マップの第1のセット(又は中間活性化)118を生成する。一般に、「カーネル」又は「フィルタ」は、入力データチャネルの異なる態様を強調するように設計された重みの多次元アレイを含む。様々な実施例では、「カーネル」及び「フィルタ」は、畳み込みニューラルネットワークにおいて適用される重みのセットを指すために互換的に使用することができる。
[0043] 次いで、特徴マップの第1のセット118は、特徴マップの第2のセット120を生成するためにプーリング層(例えば、最大プーリング層、図示せず)によってサブサンプリングされてもよい。プーリング層は、モデル性能を改善するために、情報の多くを維持しながら、特徴マップの第1のセット118のサイズを低減することができる。例えば、特徴マップの第2のセット120は、プーリング層によって28×28から14×14にダウンサンプリングすることができる。
[0044] このプロセスは、多くの層を通して反復することができる。言い換えれば、特徴マップの第2のセット120は、特徴マップの1つ以上の後続のセット(図示せず)を生成するために、1つ以上の後続の畳み込み層(図示せず)を介して更に畳み込まれてもよい。
[0045] 図1Dの実施例では、特徴マップの第2のセット120は、全結合層124に提供され、全結合層124は次に、出力特徴ベクトル128を生成する。出力特徴ベクトル128の各特徴は、「標識」、「60」、及び「100」などの画像126の可能な特徴に対応する数を含んでもよい。場合によっては、ソフトマックス関数(図示せず)は、出力特徴ベクトル128における数を確率に変換してもよい。その場合、DCN100の出力122は、画像126が1つ以上の特徴を含む確率である。
[0046] DCN100を訓練する前に、DCN100によって生成された出力122は、不正確であり得る。したがって、出力122とアプリオリに知られるターゲット出力との間で誤差が計算されてもよい。例えば、ここでは、ターゲット出力は、画像126が「標識」及び数字「60」を含むという指示である。次いで、既知のターゲット出力を利用して、DCN100の重みは、DCN100の後続の出力122がターゲット出力を達成するように、訓練を通して調整することができる。
[0047] DCN100の重みを調整するために、学習アルゴリズムは、重みに対する勾配ベクトルを算出してもよい。勾配は、重みが特定の方法で調整された場合に誤差が増加又は減少することになる量を示すことができる。次いで、重みは、誤差を低減するように調整されてもよい。重みを調整するこの方式は、DCN100の層を通じた「逆方向パス」を伴うので、「逆伝播法」と呼ばれることがある。
[0048] 実際には、重みの誤差勾配は、計算された勾配が真の誤差勾配に近似するように、少数の例にわたって計算されてもよい。この近似法は、確率的勾配降下法と呼ばれることがある。確率的勾配降下法は、システム全体の達成可能な誤差率が下げ止まるまで、又は誤差率がターゲットレベルに達するまで反復されてもよい。
[0049] 訓練の後、DCN100は、新しい画像を提示されてもよく、DCN100は、分類、又は様々な特徴が新しい画像内にある確率などの推論を生成することができる。
畳み込みニューラルネットワークのための畳み込み技術
[0050] 畳み込みは、一般に、入力データセットから有用な特徴を抽出するために使用される。例えば、上述したような畳み込みニューラルネットワークでは、畳み込みは、その重みが訓練中に自動的に学習されるカーネル及び/又はフィルタを使用した異なる特徴の抽出を可能にする。次に、抽出された特徴を組み合わせて推論を行う。
[0051] 活性化関数は、畳み込みニューラルネットワークの各層の前及び/又は後に適用することができる。活性化関数は、一般に、ニューラルネットワークのノードの出力を決定する数学関数(例えば、式)である。したがって、活性化関数は、ノードの入力がモデルの予測に関連するかどうかに基づいて、ノードが情報を渡すべきか否かを判定する。一実施例では、y=conv(x)(すなわち、y=xの畳み込み)である場合、xとyの両方は、一般に「活性化」と見なすことができる。しかしながら、特定の畳み込み演算に関して、xは、特定の畳み込みの前に存在するので、「事前活性化」又は「入力活性化」と呼ばれることもあり、yは、出力活性化又は特徴マップと呼ばれることがある。
[0052] 図2は、5×5×3の畳み込みカーネル204及び1のストライド(又はステップサイズ)を使用して、12ピクセル×12ピクセル×3チャネルの入力画像が畳み込まれる、従来の畳み込みの一例を示す。結果として得られる特徴マップ206は、8ピクセル×8ピクセル×1チャネルである。この例に見られるように、従来の畳み込みは、出力データと比較して入力データの次元数を(ここでは、12×12から8×8ピクセルに)、チャネル次元数(ここでは、3から1チャネルに)を含めて、変化させることができる。
[0053] 畳み込み層を備えるニューラルネットワークに関連付けられた計算負荷(例えば、1秒当たりの浮動小数点演算(floating point operations per second、FLOPs)で測定される)及び数パラメータを低減するための1つの方法は、畳み込み層を因数分解することである。例えば、図2に示すような空間分離可能畳み込みは、2つの成分:(1)各空間チャネルが深さ方法畳み込みによって独立して畳みこまれる、深さ方法畳み込み(例えば、空間融合)、及び(2)全ての空間チャネルが線形結合される、点ごとの畳み込み(例えば、チャネル融合)に因数分解されてもよい。深さ方向分離可能畳み込みの例を図3A及び図3Bに示す。一般に、空間融合の間、ネットワークは、空間平面から特徴を学習し、チャネル融合の間、ネットワークは、チャネルにわたるこれらの特徴間の関係を学習する。
[0054] 一実施例では、分離可能深さ方向畳み込みは、空間融合のための3×3のカーネルと、チャネル融合のための1×1のカーネルとを使用して実装することができる。具体的には、チャネル融合は、深さdの入力画像内の全ての単一点を通して反復する1×1×dのカーネルを使用することができ、カーネルの深さdは、概して、入力画像のチャネルの数に一致する。点ごとの畳み込みによるチャネル融合は、効率的な計算のための次元数低減に有用である。1×1×dのカーネルを適用し、カーネルの後に活性化層を追加することにより、ネットワークに追加された深さを与えることができ、これにより、その性能を高めることができる。
[0055] 図3A及び図3Bは、深さ方向分離可能畳み込み演算の例を示す。
[0056] 具体的には、図3Aでは、12ピクセル×12ピクセル×3チャネルの入力画像302は、各々が5×5×1の次元数を有する3つの別個のカーネル304A~Cを備えるフィルタで畳み込まれて、8ピクセル×8ピクセル×3チャネルの特徴マップ306を生成し、各チャネルは、304A~Cの中の個々のカーネルによって生成される。
[0057] 次いで、特徴マップ306は、カーネル308(例えば、カーネル)が次元数1×1×3を有する点ごとの畳み込み演算を使用して更に畳み込まれて、8ピクセル×8ピクセル×1チャネルの特徴マップ310を生成する。この例に示されているように、特徴マップ310は、次元数が低減されており(1チャネル対3)、これにより、特徴マップ310を用いたより効率的な計算が可能になる。本開示のいくつかの態様では、カーネル304A~C及びカーネル308は、本明細書でより詳細に説明するように、同じメモリ内計算(CIM)アレイを使用して実装することができる。
[0058] 図3A及び図3Bにおける深さ方向分離可能畳み込みの結果は、図2における従来の畳み込みと実質的に同様であるが、計算の数は、大幅に低減され、したがって、深さ方向分離可能畳み込みは、ネットワーク設計が許す場合、大幅な効率利得を提供する。
[0059] 図3Bには示されていないが、複数(例えば、m個)の点ごとの畳み込みカーネル308(例えば、フィルタの個々の構成要素)を使用して、畳み込み出力のチャネル次元数を増加させることができる。したがって、例えば、m=256個の1×1×3のカーネル308を生成することができ、そのそれぞれが8ピクセル×8ピクセル×1チャネルの特徴マップ(例えば、310)を出力し、これらの特徴マップを積み重ねて、8ピクセル×8ピクセル×256チャネルの結果として得られる特徴マップを得ることができる。結果として生じるチャネル次元数の増加により、訓練のためのより多くのパラメータを提供し、これにより、(例えば、入力画像302内の)特徴を識別する畳み込みニューラルネットワークの能力を改善することができる。
例示的なメモリ内計算(CIM)アーキテクチャ
[0060] 図4は、本開示の態様による、機械学習モデル計算を実行するように構成された例示的なメモリ内計算(CIM)アレイ400を示す。この実施例では、CIMアレイ400は、人工ニューラルネットワークのための混合アナログ/デジタル演算を使用してMAC演算をシミュレートするように構成されている。したがって、本明細書で使用されるとき、乗算及び加算という用語は、そのようなシミュレートされた演算を指すことがある。CIMアレイ400を使用して、本明細書に記載される処理技術の態様を実装することができる。
[0061] 図示された態様では、CIMアレイ400は、プリチャージワード線(precharge word lines、PCWL)425a、425b、及び425c(まとめて425)、読み出しワード線(read word lines、RWL)427a、427b、及び427c(まとめて427)、アナログデジタル変換器(ADC)410a、410b、及び410c(まとめて410)、デジタル処理ユニット413、ビット線418a、418b、及び418c(まとめて418)、PMOSトランジスタ411a~111i(まとめて411)、NMOSトランジスタ413a~413i(まとめて413)、並びにキャパシタ423a~423i(まとめて423)を含む。
[0062] ニューラルネットワーク層に関連付けられた重みは、CIMアレイ400のSRAMセルに記憶することができる。この実施例では、バイナリ重みが、CIMアレイ400のSRAMビットセル405a~405iに示されている。入力活性化(例えば、入力ベクトルであってもよい入力値)は、PCWL425a~c上に提供される。
[0063] 乗算は、ビット線に関連付けられたCIMアレイ400の各ビットセル405a~405iにおいて行われ、全てのビットセル乗算結果の累算(合計)は、1つの列について同じビット線上で行われる。各ビットセル405a~405iにおける乗算は、対応する活性化及び重みのAND演算と等価な演算の形態であり、結果は、対応するキャパシタ423上の電荷として記憶される。例えば、活性化が1であり(ここでは、PMOSが使用されているので、PCWLは、1の活性化に対して0である)、かつ重みが1である場合にのみ、1の積、したがってキャパシタ423上の電荷が生成される。
[0064] 例えば、蓄積段階では、RWL427は、(対応するビットセル(重み)及びPCWL(活性化)値に基づく)キャパシタ423上の任意の電荷を対応するビット線418上に蓄積することができるように、ハイに切り替えられる。次いで、蓄積された電荷の電圧値は、ADC410によってデジタル値に変換される(例えば、出力値は、総電荷が基準電圧よりも大きいかどうかを示すバイナリ値であってもよい)。これらのデジタル値(出力)は、次の層などの、機械学習モデルの別の態様への入力として提供することができる。
[0065] プリチャージワード線(PCWL)425a、425b、及び425c上の活性化が、例えば、1、0、1であるとき、ビット線418a~cの和は、0+0+1=1、1+0+0=1、及び1+0+1=2それぞれに対応する。ADC410a、410b、及び410cの出力は、更なる処理のためにデジタル処理ユニット413に渡される。例えば、CIM100がマルチビット重み値を処理している場合、ADC110のデジタル出力は、最終出力を生成するために合計することができる。
[0066] 例示的な3×3のCIM回路400は、例えば、3要素カーネル(又はフィルタ)のための効率的な3チャネル畳み込みを実行するために使用することができ、各カーネルの重みは、3つの列の各々の要素に対応し、その結果、所与の3要素受容野(又は入力データパッチ)について、3つのチャネルの各々の出力が並列に計算される。
[0067] 特に、図4は、SRAMセルを使用するCIMの実施例を説明しているが、他のメモリタイプを使用することができる。例えば、他の実施形態では、ダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗ランダムアクセスメモリ(MRAM)、及び抵抗ランダムアクセスメモリ(ReRAM又はRRAM(登録商標))を同様に使用することができる。
[0068] 図5Aは、例示的なビットセル500の追加の詳細を示す。
[0069] 図5Aの態様は、図4の態様の例示であってもよく、又は別の様式でそれに関連することができる。paritucularには、ビット線521は、ビット線418aと同様であり、キャパシタ523は、図4のキャパシタ423と同様であり、読み出しワード線527は、図4の読み出しワード線427aと同様であり、プリチャージワード線525は、図4のプリチャージワード線425aと同様であり、PMOSトランジスタ511は、図1のPMOSトランジスタ411aと同様であり、NMOSトランジスタ513は、図1のNMOSトランジスタ413と同様である。
[0070] ビットセル500は、スタティックランダムアクセスメモリ(SRAM)セル501(図4のSRAMビットセル405aを表すことができる)、並びにトランジスタ511(例えば、PMOSトランジスタ)及びトランジスタ513(例えば、NMOSトランジスタ)及び接地に結合されたキャパシタ523を含む。PMOSトランジスタがトランジスタ511のために使用されているが、他のトランジスタ(例えば、NMOSトランジスタ)を、それらのそれぞれの制御信号の対応する調整(例えば、反転)とともに、PMOSトランジスタの代わりに使用することができる。同じことが、本明細書に記載される他のトランジスタにも当てはまる。追加のトランジスタ511及び513は、本開示の態様によるメモリ内計算アレイを実装するために含まれる。一態様では、SRAMセル501は、従来の6トランジスタ(six transistor、6T)SRAMセルである。
[0071] ビットセルにおける重みのプログラミングは、多数の活性化に対して1回実行されてもよい。例えば、動作中、SRAMセル501は、書き込みワード線(write word line、WWL)516を介してノード517及び519で1ビットの情報のみを受け取る。例えば、書き込み中(WWL216がハイであるとき)、書き込みビット線(write bit line、WBL)229がハイ(例えば、「1」)である場合、ノード217は、ハイに設定され、ノード219は、ロー(例えば、「0」)に設定され、又はWBL229がローである場合、ノード217は、ローに設定され、ノード219は、ハイに設定される。逆に、書き込み中(WWL216がハイのとき)、書き込みビットバー線(write bit bar line、WBBL)231がハイである場合、ノード217は、ローに設定され、ノード219は、ハイに設定され、又はWBBL229がローである場合、ノード217は、ハイに設定され、ノード219は、ローに設定される。
[0072] 重みのプログラミングの後に、対応する積に従ってキャパシタを充電するための活性化入力及び乗算ステップが続いてもよい。例えば、トランジスタ511は、乗算ステップを実行するために、メモリ内計算アレイのプリチャージワード線(PCWL)525を介した活性化信号(PCWL信号)によって活性化される。次に、トランジスタ513は、図4に関して上述したようになど、ビットセル500からの乗算値とアレイの他のビットセルとの累算を実行するために、メモリ内計算アレイの別のワード線(例えば、読み出しワード線(RWL)527)を介した信号によって活性化される。
[0073] ノード517が「0」である場合(例えば、記憶された重み値が「0」であるとき)、ローのPCWLがトランジスタ511のゲートにおける「1」の活性化を示す場合には、キャパシタ523は、充電されない。したがって、ビット線521には電荷が供給されない。しかしながら、重み値に対応するノード517が「1」であり、かつPCWLがローに設定されている場合(例えば、活性化入力がハイであるとき)、PMOSトランジスタ511をオンにし、これにより、短絡として働き、キャパシタ523が充電されることを可能にする。キャパシタ523が充電された後、トランジスタ511は、オフにされ、その結果、電荷がキャパシタ523に蓄積される。電荷をキャパシタ523からビット線521に移動させるために、NMOSトランジスタ513は、RWL527によってオンにされ、NMOSトランジスタ513を短絡として動作させる。
[0074] 表1は、図5Aのビットセル500によって実装することができるような、AND演算設定に従ったメモリ内計算アレイ演算の一例を示す。
Figure 2024525333000002
[0075] 表1の第1の列(活性化)は、入力活性化信号の可能な値を含む。
[0076] 表1の第2の列(PCWL)は、本開示の態様による、メモリ内計算機能を実装するように設計されたトランジスタを活性化するPCWL値を含む。この例におけるトランジスタ511は、PMOSトランジスタであるので、PCWL値は、活性化値の逆数である。例えば、メモリ内計算アレイは、プリチャージワード線(PCWL)525を介して活性化信号(PCWL信号)によって活性化されるトランジスタ511を含む。
[0077] 表1の第3の列(セルノード)は、例えば、畳み込み演算において使用することができるような、重みテンソル中の重みに対応する、SRAMセルノードに記憶された重み値を含む。
[0078] 表1の第4の列(キャパシタノード)は、キャパシタ上に電荷として蓄積される、結果として生じる生成物を示す。例えば、電荷は、キャパシタ523のノード又はキャパシタ423a~423iのうちの1つのノードに蓄積することができる。キャパシタ523からの電荷は、トランジスタ513が活性化されると、ビット線521に移動される。例えば、トランジスタ511を参照すると、セルノード517における重みが「1」(例えば、高電圧)であり、かつ入力活性化が「1」である(したがって、PCWLが「0」である)とき、キャパシタ523は、充電される(例えば、キャパシタのノードは、「1」である)。他の全ての組み合わせに対して、キャパシタノードは、0の値を有する。
[0079] 図5Bは、別の例示的なビットセル550の追加の詳細を示す。
[0080] ビットセル550は、主に、追加のトランジスタ554に結合された追加のプリチャージワード線552を含むことに基づいて、図5Aのビットセル500とは異なる。
[0081] 表2は、図5Bのビットセル550によって実装することができるような、XNOR演算設定に従うことを除いて、表1と同様のメモリ内計算アレイ演算の一例を示す。
Figure 2024525333000003
[0082] 表2の第1の列(活性化)は、入力活性化信号の可能な値を含む。
[0083] 表2の第2の列(PCWL1)は、本開示の態様による、メモリ内計算機能を実装するように設計されたトランジスタを活性化するPCWL1値を含む。ここで再び、トランジスタ511は、PMOSトランジスタであり、PCWL1値は、活性化値の逆数である。
[0084] 表2の第3の列(PCWL2)は、本開示の態様による、メモリ内計算機能を実装するように設計された更なるトランジスタを活性化するPCWL2値を含む。
[0085] 表2の第4の列(セルノード)は、例えば、畳み込み演算において使用することができるような、重みテンソル中の重みに対応する、SRAMセルノードに記憶された重み値を含む。
[0086] 表2の第5の列(キャパシタノード)は、キャパシタ523等のキャパシタ上に電荷として蓄積される、結果として生じる生成物を示す。
[0087] 図6は、メモリ内計算(CIM)アレイ演算中の様々な信号の例示的なタイミング図600を示す。
[0088] 図示の実施例では、タイミング図600の第1の行は、ローになるプリチャージワード線PCWL(例えば、図4の425a又は図5Aの525)を示す。この実施例では、ローのPCWLは、「1」の活性化を示す。PMOSトランジスタは、PCWLがローであるときにオンになり、これにより、(重みが「1」である場合)キャパシタの充電を可能にする。第2の行は、読み出しワード線RWL(例えば、図4の読み出しワード線427a又は図5Aの527)を示す。第3の行は、読み出しビット線RBL(例えば、図4の418又は図5Aの521)を示し、第4の行は、アナログデジタル変換器(ADC)読み出し信号を示し、第5の行は、リセット信号を示す。
[0089] 例えば、図5Aのトランジスタ511を参照すると、キャパシタ523からの電荷は、読み出しワード線RWLがハイであるときに読み出しビット線RBLに徐々に渡される。
[0090] 合計された電荷/電流/電圧(例えば、図4の403、又は図5Aのビット線521から合計された電荷)は、コンパレータ又はADC(例えば、図4のADC411)に渡され、合計された電荷は、デジタル出力(例えば、デジタル信号/数)に変換される。電荷の加算は、タイミング図600の蓄積領域において行われてもよく、ADCからの読み出しは、タイミング図600のADC読み出し領域に関連付けられてもよい。ADC読み出しが得られた後、リセット信号は、活性化入力の次のセットを処理するのに備えて、キャパシタ(例えば、キャパシタ423a~423i)の全てを放電する。
メモリにおける畳み込み処理の例
[0091] 図7は、メモリ内計算(CIM)アレイ708によって実装された例示的な畳み込み層アーキテクチャ700を示す。畳み込み層アーキテクチャ700は、(例えば、図1Dに関して上述したように)畳み込みニューラルネットワークの一部であってもよく、テンソルデータなどの多次元データを処理するように設計されていてもよい。
[0092] 図示の実施例では、畳み込み層アーキテクチャ700への入力702は、38(高さ)×11(幅)×1(深さ)の次元を有する。畳み込み層の出力704は、34×10×64の次元を有し、これは畳み込みプロセスの一部として適用されるカーネルテンソル714の64個のカーネルに対応する64個の出力チャネルを含む。更に、この実施例では、カーネルテンソル714の64個のカーネルの各カーネル(例えば、例示的なカーネル712)は、5×2×1の次元を有する(全体として、フィルタテンソル714のカーネルは、1つの5×2×64のカーネルと等価である)。
[0093] 畳み込みプロセス中、各5×2×1のカーネルは、入力702と畳み込まれて、出力704の1つの34×10×1の層を生成する。畳み込みの間、カーネルテンソル714(5×2×64)の640個の重みは、この実施例では各カーネルについての列(すなわち、64個の列)を含むメモリ内計算(CIM)アレイ708に記憶することができる。次いで、5×2の受容野(例えば、受容野入力706)の各々の活性化が、ワード線、例えば、716を使用してCIMアレイ708に入力され、対応する重みで乗算されて、1×1×64の出力テンソル(例えば、出力テンソル710)を生成する。出力テンソル704は、入力702の受容野(例えば、受容野入力706)の全てに対する1×1×64の個々の出力テンソルの累積を表す。簡単にするために、図7のメモリ内計算アレイ708は、メモリ内計算アレイ708の入力及び出力のためのいくつかの例示的な線のみを示す。
[0094] 図示された実施例では、CIMアレイ708は、CIMアレイ708が受容野(例えば、受容野入力706)を受け取るワード線716、並びに(CIMアレイ708の列に対応する)ビット線718を含む。図示されていないが、CIMアレイ708はまた、(図4及び図5に関して上述したように)プリチャージワード線(PCWL)及び読み出しワード線RWLを含んでもよい。
[0095] この実施例では、ワード線716は、初期重み定義のために使用される。しかしながら、初期重み定義が行われると、活性化入力は、CIMビットセル内の特別に設計された線を活性化して、MAC演算を実行する。したがって、ビット線718とワード線716との各交点は、カーネル重み値を表現し、これは、積を生成するために、ワード線716上の入力活性化によって乗算される。各ビット線718に沿った個々の積は、次いで、出力テンソル710の対応する出力値を生成するために加算される。合計値は、電荷、電流、又は電圧であってもよい。この実施例では、畳み込み層の入力702全体を処理した後の出力テンソル704の次元は、34×10×64であるが、64個のカーネル出力のみがCIMアレイ708によってtmeに生成される。したがって、入力702全体の処理は、34×10又は340サイクルで完了することができる。
深さ方向分離可能畳み込みのためのCIMアーキテクチャ
[0096] CIMアーキテクチャのためにメモリ内に実装されるベクトル-行列乗算ブロックは、従来の畳み込みニューラルネットワーク処理を概して良好に実行することができるが、それらは、多くの最先端の機械学習アーキテクチャにおいて見出される、深さ方向分離可能畳み込みニューラルネットワークをサポートするために効率的ではない。
[0097] 効率を改善するための従来の解決策は、分離可能畳み込みの深さ方向部分に対する処理を扱うために別個のデジタルMACブロックを追加することを含む一方で、CIMアレイは、分離可能畳み込みの点ごとの部分を扱うことができる。しかしながら、このハイブリッド手法は、データ移動の増加をもたらし、これにより、CIMアーキテクチャのメモリ効率の利点を相殺する可能性がある。更に、ハイブリッド手法は、一般に、追加のハードウェア(例えば、デジタル乗算及び累算(DMAC)要素)を伴い、これにより、空間及び電力の必要性を増加させ、処理待ち時間を増加させる。更に、DMACの使用は、処理動作のタイミングに影響を与え、モデル出力タイミング制約(又は他の依存性)を超過させる可能性がある。その問題を解決するために、入力データのフレームレートを低減すること、処理システム要素(CIMアレイを含む)のクロックレートを増加させること、入力特徴サイズを低減することなど、様々な妥協をする場合がある。
[0098] 本明細書に記載するCIMアーキテクチャは、深さ方向分離可能畳み込みのための処理動作のタイミング性能を改善する。これらの改善は、有益なことに、より多くのハードウェア(例えば、DMAC)及び/又はより多くのデータ移動を必要とする従来のアーキテクチャと比較して、深さ方向分離可能畳み込み演算のより短いサイクル時間をもたらし、処理電力のより高い1ワット当たりの1秒当たり総演算(total operations per second、TOPS)、すなわち、TOPS/Wを達成する。
[0099] 図8A及び図8Bは、本開示のいくつかの態様による、CIMアレイ802を含むCIMシステム800を示す。図8Aに示すように、CIMアレイ802を使用して、DW畳み込み演算のためのカーネル806、808、809、及びPW畳み込み演算のためのカーネル890を実装することができる。例えば、図3A及び図3Bに関して説明したように、カーネル806、808、809は、カーネル304A、304B、304Cそれぞれに対応することができ、カーネル890は、カーネル308に対応することができる。DW畳み込み演算は、第1の位相(位相1)中に順次実行することができる。例えば、位相1-1中に、カーネル806が処理されてもよく、位相1-2中に、カーネル808が処理されてもよく、位相1-3中に、カーネル809が処理されてもよい。カーネル806、808、809に対するDW畳み込み演算の出力を使用して、カーネル890が第2の位相においてPW畳み込み演算を実行するための入力を生成することができる。このようにして、DW畳み込み演算とPW畳み込み演算の両方を、単一のCIMアレイ上に実装されたカーネルを使用して実行することができる。DWカーネルは、CIMアレイの同じ列上に実装することができ、従来の実装形態と比較して、より多い数のDWカーネルがCIMアレイ上に実装されることを可能にする。
[0100] 図8Bに示すように、CIMシステム800は、DW畳み込みニューラルネットワーク計算及び点ごとの(PW)-CNN計算(例えば、CNN 1×1)のために構成されたCIMアレイ802を含む。DW畳み込み演算及びPW畳み込み演算のためのカーネルは、図8Aに関して説明したように、列の異なるグループ上に実装して、異なる位相中に別々に活性化することができる。いくつかの態様では、カーネル(例えば、3×3のカーネル)は、CIMアレイ802の同じ列(本明細書ではビット線とも呼ばれる)上に実装することができる。例えば、2ビット重み(すなわち、第1の2ビット値b01、b11、第2の2ビット値b02、b12などを含む9つの2ビット値)の3×3のカーネル806は、列810、812(例えば、重みの各ビット幅につき1つの列)並びに9つの行814-1、814-2~814-8、及び814-9(例えば、本明細書ではワード線(word-lines、WL)とも呼ばれ、行814と総称され、カーネル内の各値につき1つの行がある)上のCIMセルを使用して実装することができる。別のカーネル808は、別の3×3のフィルタを実装するために、列810、812及び9つの行820-1~820-9(行820と総称される)上に実装することができる。したがって、カーネル806及び808は、異なる行上に実装されるが、同じ列上に実装される。結果として、カーネル806及び808は、順次動作することができる。言い換えれば、カーネル806、808のうちの一方の行を活性化することにより、カーネル806、808のうちの他方の行に影響を与えることはない。しかしながら、カーネル806、808のうちの一方の列を活性化することにより、カーネル806、808のうちの他方の列に影響を与える。したがって、カーネル806、808は、順次動作することができる。2つのカーネル806、808のみが示されているが、いくつかの態様では、2つより多いカーネルを実装することができる。例えば、図8Aに示すカーネル806、808、809を、CIMアレイ802に実装することができる。
[0101] いくつかの態様では、各カーネルの入力活性化バッファは、前の層からの対応する出力で満たされる(例えば、記憶される)。各カーネルは、DW畳み込み出力を生成するために、1つずつ順次動作することができる。非アクティブカーネルの入力は、非アクティブカーネルの読み出しBL(read BL、RBL)出力が(例えば、3値モードビットセルにおいてサポートされるように)0であるように、0(例えば、論理ロー)で満たすことができる。このようにして、非アクティブカーネルは、列(BL)上に実装されたアクティブカーネルからの出力に影響を与えないことがある。
[0102] いくつかの態様では、カーネル806の行(例えば、行814)は、活性化バッファ830-1、830-2~830-8、及び830-9(活性化バッファ830と総称される)に結合されていてもよく、カーネル808の行(例えば、行820)は、活性化バッファ832-1~832-9(活性化バッファ832と総称される)に結合されていてもよい。カーネル806の(例えば、列810、812における)出力は、アナログデジタル変換器(ADC)840に結合することができる。ADC840は、列810、812からの信号を入力として受け取り、列812に記憶されたビットが列810に記憶されたビットよりもそれぞれの重みにおいて低い重要性を表すことを考慮して、信号のデジタル表現を生成する。
[0103] CIMアレイ802はまた、図示されるように、PW畳み込み計算のために列816、818上にPW畳み込みセル890を含んでもよい。PW畳み込みセル890の(例えば、列816、818における)出力は、ADC842に結合することができる。例えば、ADC840の各入力は、列810、812の各々から行814の蓄積電荷を受信してもよく、ADC842の各入力は、列816、818の各々から蓄積電荷を受信してもよく、それに基づいて、ADC840、842の各々は、デジタル出力信号を生成する。例えば、ADC842は、列816、818からの信号を入力として受け取り、列818に記憶されたビットが列816に記憶されたビットよりもそれぞれの重みにおいて低い重要性を表すことを考慮して、信号のデジタル表現を生成する。ADC840、842は、2ビットの重みパラメータを有するカーネルのためのアナログデジタル変換を容易にするために、2つの列から信号を受信するものとして示されているが、本明細書に記載する態様は、任意の数の列(例えば、3ビットの重みパラメータを有するカーネルのためのアナログデジタル変換を実行するための3つの列)から信号を受信するように構成されたADCのために実装することができる。いくつかの態様では、ADC840又は842などのADCは、8つの列に結合することができる。更に、いくつかの態様では、蓄積は、2つ以上のADCにわたって分散することができる。
[0104] ADC840、842の出力は、いくつか例を挙げると、整流線形ユニット(rectified linear unit、ReLU)及び平均プーリング(average pooling、AvePool)などの1つ以上の非線形演算を(例えば、順に)実装するために、非線形演算回路850(及びバッファ)に結合することができる。非線形演算は、入力と出力との間の複雑なマッピングの生成を可能にし、したがって、非線形である又は高次元数を有する画像、ビデオ、オーディオ、及びデータセットなどの複雑なデータの学習及びモデル化を可能にする。非線形演算回路850の出力は、活性化出力バッファ回路860に結合することができる。活性化出力バッファ回路860は、PW畳み込みセル890を介したPW畳み込み計算のためのPW畳み込み入力として使用される非線形演算回路850からの出力を記憶することができる。例えば、活性化出力バッファ回路860の出力は、活性化バッファ830に提供することができる。活性化バッファ830に記憶された対応する活性化入力は、PW畳み込み計算を実行するためにPW畳み込みセル890に提供することができる。
[0105] カーネル806、808の各々は、2ビットの重みがカーネルの各行に記憶されることを可能にする2つの列を含むが、カーネル806、808は、1ビットのバイナリ重みに対して1つの列、又はマルチビット重みに対して2つ以上の列などの、任意の数の適切な列を使用して実装することができる。例えば、カーネル806、808の各々は、3ビットの重みパラメータがカーネルの各行に記憶されることを容易にするために3つの列を使用して、又は1ビットの重みがカーネルの各行に記憶されることを容易にするために単一の列を使用して実装することができる。更に、カーネル806、808の各々は、理解を容易にするために3×3のカーネルについて9つの行を使用して実装されるが、カーネル806、808は、適切なカーネルサイズを実装するために任意の数の行を用いて実装することができる。更に、CIMアレイのセルのサブセットを使用して、2つより多いカーネルを実装することができる。例えば、CIMアレイ802は、1つ以上の他のカーネルを含むことができ、CIMアレイ802のカーネルは、異なる行及び同じ列上に実装される。
[0106] 本明細書に記載する態様は、DW畳み込み演算のためにオンデマンドで任意のCIMアレイを構成する際の柔軟性を提供する。例えば、カーネル806、808の各々を実装するために使用される行の数を増やして、各それぞれのカーネルのサイズを増大させる(例えば、5×5のカーネルを実装する)ことができる。更に、いくつかの態様は、従来の実装形態と比較して、CIMアレイ上に実装することができるカーネルの数の増加を可能にする。言い換えれば、本開示のいくつかの態様は、同じ列上にDW畳み込みのためのカーネルを実装することによって、DW畳み込み演算のために消費されるCIMアレイ上の面積を低減する。このようにして、CIMアレイ上に実装することができるDW畳み込みのためのカーネルの数は、従来の実装形態と比較して増やすことができる。例えば、合計113個の3×3のフィルタを、1024行を有するCIMアレイ上に実装することができる。したがって、DW畳み込み演算を実装するための面積消費は、DMACハードウェアを使用することができる従来の実装と比較して低減することができる。
[0107] 図9は、本開示のいくつかの態様による、図8BのCIMアーキテクチャ800を介した信号処理のための例示的な動作900を示す。1つのCIMアレイをDW畳み込み演算とPW畳み込み演算の両方に使用してもよい。DW畳み込みのためのカーネルは、同じCIMアレイハードウェア上で2つの位相において動作される。
[0108] DW畳み込みのための第1の位相の間、DW畳み込みカーネルによって使用される列810、812は、アクティブである。動作900は、DW畳み込み層の処理で開始することができる。例えば、ブロック904において、DW畳み込み重みは、カーネルのためのCIMセルにロードすることができる。すなわち、ブロック904において、DWの3×3のカーネル重みは、行にグループ化して、図8のCIMアレイ802のカーネル806、808のためのCIMセルに書き込むことができる。すなわち、2ビットのカーネル重みが列810、812に提供されてもよく、メモリセル(例えば、図8に示すメモリセルb11及びb01)のパスゲートスイッチが、2ビットのカーネル重みをメモリセルに記憶するために閉じられてもよい。フィルタ重みは、カーネル806、808の各々の各行に記憶することができる。残りのCIM列を使用して、PW畳み込みセル890にPW畳み込み重みを書き込むことができる。DW畳み込み重みとPW畳み込み重みの両方が、後続の層の各々について更新される。いくつかの実装形態では、CIMアレイは、本明細書でより詳細に説明するように、トライステートモードで構成することができるタイルに分割することができる。いくつかの態様では、アクティブカーネルと同じ列上のタイルは、トライステートモードで構成することができる。トライステートモードでは、タイルのメモリセルの出力は、比較的高いインピーダンスを有するように構成することができ、出力に対するセルの影響を効果的に除去する。
[0109] ブロック906において、(例えば、活性化バッファ830における)DW畳み込み活性化入力は、カーネル806、808の行の各グループに順次適用して、各カーネルのためのDW畳み込み出力を生成することができる。カーネル806、808のうちの1つのみが、同時にアクティブであり得る。非アクティブフィルタ行は、トライステート動作モードに置かれてもよい。
[0110] ブロック908において、ADC840は、(例えば、列810、812における)カーネル806、808の畳み込み出力をアナログ領域からデジタル領域に変換することができる。DW畳み込みのためのADC840の出力に基づいて、非線形演算回路850を介して非線形演算が実行されてもよい。非線形演算回路850からの出力は、(活性化出力バッファ回路860に記憶された)PW畳み込み入力に適用して、PW畳み込み演算を実行することができる。言い換えれば、PW畳み込み入力は、活性化バッファ830に書き込んで、行814、820及び列816、818上のPW畳み込みセル890に適用することができる。
[0111] 動作900は、PW畳み込み演算を処理することによって、位相2に続くことができる。例えば、ブロック912において、CIMアレイにPW畳み込みのためのカーネルをロードすることができる。例えば、PW畳み込み列(例えば、列816、818)を有効にすることができ、DW畳み込み列(例えば、列810、812)を無効にすることができる。ブロック914において、PW畳み込みを実行することができ、PW畳み込みの出力は、ADC842を介してデジタル信号に変換することができる。ブロック916において、ADC842は、PW畳み込みセル890の出力をアナログ領域からデジタル領域に変換することができる。PW畳み込みのためのADC842の出力に基づいて、非線形演算回路850を介して非線形活性化演算(例えば、ReLU)が実行されてもよい。
電力消費を低減してCIMアレイ利用率を向上させる技術
[0112] 図10は、本開示のいくつかの態様による、電力を節約するためにタイル(サブバンクとも呼ばれる)に分割されたCIMアレイ1000を示す。CIMアレイ1000は、一実施例として、1024行及び256列を有することができる。行及び列の個々のタイルは、有効にしたり、又は無効にしたりすることができる。例えば、タイルは、128行及び23列を含むことができる。一実施例として、(例えば、タイル1004などの複数のタイルを含む)タイル1002は、畳み込みのためにアクティブであってもよいが、残りのタイルは、無効にすることができる。言い換えれば、残りのタイルは、トライステートモードで構成することができる。
[0113] いくつかの実装形態では、行及び列フィラーセルは、CIMアレイ1000内に実装することができる。フィラー回路(例えば、バッファ又はスイッチ)を使用して、CIMアレイのタイルを有効又は無効にし、電力を節約することができる。一実施例として、列フィラーセルは、ANDゲート論理を使用して実装することができ、行フィラーセルは、書き込みビット線(WBL)上のバッファ、及び読み出しビット線(RBL)上の伝送スイッチを使用して実装することができる。伝送スイッチのサイズ及びタイプは、線形性仕様に基づいて構成することができる。
[0114] DW畳み込みは、比較的小さいカーネル次元(3×3、5×5、...)を使用することができ、CIMアレイの不十分な利用率は、範囲圧縮に起因して出力信号対雑音比(signal to noise ratio、SNR)に影響を及ぼす可能性がある(例えば、ニューラルネットワークの出力が非線形活性化に起因して小さい範囲内に分散される)。本開示のいくつかの態様は、図11に関してより詳細に説明するように、SNRを改善するための技術を対象とする。
[0115] 図11は、本開示のいくつかの態様による、反復されたカーネルを用いて実装されたCIMアレイを示す。
[0116] 図示されるように、カーネル806、808の各々を反復して、カーネルグループを形成することができる。例えば、カーネル806、1104、1106は、カーネルグループ1102を形成し、カーネル806、1104、及び1106の各々は、同じ重みを含む。更に、カーネルグループ1102及び1104などの複数のカーネルグループを同じ列上に実装することができる。グループ1102内の反復されたカーネル806、1104、1106は、同じ重みを有するので、同じ活性化入力を、グループ内の反復されたカーネルの各々に提供することができる。グループ1104についても同様である。
[0117] 反復されたカーネルは、各列(出力)において組み合わされる同じ出力信号を生成することができ、反復されたカーネルの出力におけるダイナミックレンジの増大をもたらす。例えば、3つの反復されたカーネルを使用することにより、ADC(例えば、ADC840)に提供される反復されたカーネルの出力におけるダイナミックレンジを3倍にすることができる。カーネルの出力におけるダイナミックレンジを増大させることにより、より広い範囲のADCを利用することができるので、より高い精度を有するアナログデジタル変換を容易にする。言い換えれば、ADC入力の全範囲を使用することにより、ADCのデジタル出力が、ADCのアナログ入力をより正確に識別し、ADCの信号対雑音比(SNR)を改善することを可能にする。
[0118] いくつかの態様では、DW畳み込み(例えば、16行及び32列)を実行するCIMバンクのために比較的小さいタイルサイズを使用して、電力を節約するためにより多くの数のCIMセルが非活性化されることを可能にすることができる。例えば、(例えば、複数のタイルを有する)3つのCIMセルグループは、ニューラルネットワークアーキテクチャの逆ボトルネックを実行するように設計することができる。逆ボトルネック演算は、一般に、入力特徴を拡張するために使用される演算を指し、その後、DW畳み込み、及びPW畳み込みを介したDW出力次元の低減が続く。
[0119] 一実施例として、第1のCIMセルグループ(CIM1)は、ボトルネック演算のために使用することができ、第2のCIMセルグループ(CIM2)は、DW畳み込み演算のために使用することができ、第3のCIMセルグループ(CIM3)は、ボトルネック演算のために使用することができる。いくつかの態様では、DW畳み込みのためのCIM2は、CIMアレイ利用率を改善するために、より細かいタイリング構成(例えば、3×3のカーネルを実装するために16行、又は5×5のカーネルを実装するために32行)を有することができるが、CIM1及びCIM3は、非DW畳み込み演算についてのフィラーセルの影響を回避するために、粗粒度のタイリング(例えば、64行又は128行)を有することができる。このようにして、CIMアレイライブラリの再利用性は、DW演算及び非DW演算に対して倍増することができる。
[0120] 粗粒度のタイリング(例えば、各タイルが1024行を有するCIMアレイの64行及び32列を使用する)による平均(例えば、近似)CIM利用率は、3×3のカーネルに対して13.8%、5×5のカーネルに対して31.44%であり得る。言い換えれば、CIMアレイ内のアクティブメモリセルの13.8%のみを3×3のカーネルのために利用することができ、CIMアレイ内のアクティブメモリセルの31.44%を5×5のカーネルのために利用することができる。一方、(例えば、タイル当たり16行及び32列を使用する、及び1024行を有するCIMアレイによる)細粒度タイリングによる平均CIM利用率は、3×3のカーネルに対して40.46%、5×5のカーネルに対して47.64%であり得る。(例えば、1024行を有するCIMアレイのタイル当たり32行及び32列を使用する)細粒度タイリングによる平均CIM利用率は、3×3のカーネルに対して24.18%、5×5のカーネルに対して47.64%であり得る。したがって、細かいタイリングにより、(例えば、多くの一般的なDW-CNNアーキテクチャに使用されるものなどの)より小さいカーネルサイズのフィルタに対してCIMアレイ利用率が改善される。CIMアレイの利用率を改善することにより、利用されるアクティブメモリセルの割合が高くなり、利用されないアクティブメモリセルによって引き起こされる電力損失が低減される。
[0121] 一般に、利用率は、カーネルサイズにより近いタイリングサイズを(例えば、チップ設計中に)選択することによって改善することができる。例えば、16のタイルサイズは、9のカーネルサイズに対して使用することができる。いくつかの態様では、タイルサイズは、異なるニューラルネットワークモデルを扱うための柔軟性を改善するために、カーネルサイズよりも2のべき乗(対数スケール)大きいように決定することができる。
CIMアレイにおいてニューラルネットワーク処理を実行するための例示的な動作
[0122] 図12は、本開示のいくつかの態様による、ニューラルネットワークにおける信号処理のための例示的な動作1200を示すフロー図である。動作1200は、図13に関して説明したCIMコントローラ1332などのコントローラと、CIMシステム800などのCIMシステムとを含むことができる、ニューラルネットワークシステムによって実行することができる。
[0123] 動作1200は、ブロック1205において、ニューラルネットワークシステムが、メモリ内計算(CIM)アレイ(例えば、CIMアレイ802)の1つ以上の第1の列(例えば、列810、812)上の複数のCIMセルグループを使用して実装された複数のカーネル(例えば、カーネル806、808、809)を介して複数の深さ方向(DW)畳み込み演算を実行することによって開始する。一実施例として、複数のDW畳み込み演算を実行することは、1つ以上の第1の列を介して、複数のカーネルのうちの第1のカーネル(例えば、カーネル806)の第1の複数の重みパラメータを複数のCIMセルグループのうちのCIMセルの第1のセットであって、CIMアレイの第1の複数の行(例えば、行814)を含むCIMセルの第1のセットにロードすることと、第1の複数の行に第1の活性化入力を(例えば、活性化buggers830を介して)適用することを含む、第1のカーネルを介して複数のDW畳み込み演算のうちの第1のDW畳み込み演算を実行することと、を含むことができる。複数のDW畳み込み演算を実行することはまた、1つ以上の第1の列を介して、複数のカーネルのうちの第2のカーネル(例えば、カーネル808)の第2の複数の重みパラメータを複数のCIMセルグループのうちのCIMセルの第2のセットであって、CIMアレイの1つ以上の第1の列及び第2の複数の行(例えば、行820)を含み、第1の複数の行が第2の複数の行とは異なっている、CIMセルの第2のセットにロードすることと、第2の複数の行に第2の活性化入力を(例えば、活性化バッファ832を介して)適用することを含む、第2のカーネルを介して複数のDW畳み込み演算のうちの第2のDW畳み込み演算を実行することと、を含むことができる。いくつかの態様では、CIMセルの第1のセットは、CIMアレイのセルのサブセットを含み、CIMセルの第2のセットは、CIMアレイのセルの別のサブセットを含む。
[0124] ブロック1210において、ニューラルネットワークシステムは、複数のDW畳み込み演算からの出力に基づいて、(例えば、ADC840及び非線形演算回路850を介して)PW畳み込み演算のための入力信号を生成することができる。ブロック1215において、ニューラルネットワークシステムは、入力信号に基づいて、CIMアレイの1つ以上の第2の列上のCIMセルグループを使用して実装されたカーネルを介して実行される、PW畳み込み演算を実行することができる。例えば、PW畳み込み演算を実行することは、第3の複数の重みを1つ以上の第2の列上のカーネルのためのCIMセルグループにロードすることを含むことができる。いくつかの態様では、ニューラルネットワークシステムは、複数のDW畳み込み演算を実行した後に、1つ以上の第1の列における電圧をアナログ領域からデジタル領域に変換することによって、デジタル信号を生成することができる。1つ以上の第2の列上のCIMセルグループへの入力信号は、デジタル信号に基づいて生成することができる。
[0125] いくつかの態様では、カーネルは、本明細書に記載するように、CIMアレイの利用率を改善し、かつADCダイナミックレンジを改善するために、反復することができる。例えば、ニューラルネットワークシステムは、第1のDW畳み込み演算を実行するために、1つ以上の第1の列を介して、第1の複数の重みパラメータを複数のCIMセルグループのうちのCIMセルの第3のセットであって、CIMアレイの1つ以上の第1の列及び第3の複数の行を含むCIMセルの第3のセットにロードすることができる。
位相選択畳み込みを実行するための例示的な処理システム
[0126] 図13は、例示的な電子デバイス1300を示す。電子デバイス1300は、図12に関して説明した動作1200を含む、本明細書に記載する方法を実行するように構成することができる。
[0127] 電子デバイス1300は、中央処理装置(central processing unit、CPU)1302を含み、CPU1302は、いくつかの態様では、マルチコアCPUであってもよい。CPU1302において実行される命令は、例えば、CPU1302に関連付けられたプログラムメモリからロードされてよく、又はメモリ1324からロードされてもよい。
[0128] 電子デバイス1300はまた、グラフィックス処理ユニット(graphics processing unit、GPU)1304、デジタル信号プロセッサ(DSP)1306、ニューラル処理ユニット(neural processing unit、NPU)1308、マルチメディア処理ブロック1310、マルチメディア処理ブロック1310、及び無線接続処理ブロック1312などの、特定の機能に調整された追加の処理ブロックを含む。一実装形態では、NPU1308は、CPU1302、GPU1304、及び/又はDSP1306のうちの1つ以上に実装される。
[0129] いくつかの態様では、無線接続処理ブロック1312は、例えば、第3世代(third generation、3G)接続、第4世代(fourth generation、4G)接続(例えば、4G LTE(登録商標))、第5世代接続(例えば、5G又はNR)、Wi-Fi接続、Bluetooth(登録商標)接続、及び無線データ伝送標準用の構成要素を含んでもよい。無線接続処理ブロック1312は、無線通信を容易にするために、1つ以上のアンテナ1314に更に接続されている。
[0130] 電子デバイス1300はまた、任意の様式のセンサに関連付けられた1つ以上のセンサプロセッサ1316、任意の様式の画像センサに関連付けられた1つ以上の画像信号プロセッサ(image signal processors、ISP)1318、並びに/又は、衛星ベースの測位システム構成要素(例えば、GPS又はGLONASS)並びに慣性測位システム構成要素を含んでもよいナビゲーションプロセッサ1320を含んでもよい。
[0131] 電子デバイス1300はまた、スクリーン、タッチ感知面(タッチ感知ディスプレイを含む)、物理ボタン、スピーカ、マイクロフォンなどの1つ以上の入力及び/又は出力デバイス1322を含んでもよい。いくつかの態様では、電子デバイス1300のプロセッサのうちの1つ以上は、ARM命令セットに基づいてもよい。
[0132] 電子デバイス1300はまた、メモリ1324を含み、メモリは、ダイナミックランダムアクセスメモリ、フラッシュベーススタティックメモリなどの1つ以上のスタティック及び/又はダイナミックメモリを表す。この実施例では、メモリ1324は、コンピュータ実行可能構成要素を含み、これは、電子デバイス1300の前述のプロセッサのうちの1つ以上又はCIMコントローラ1332によって実行されてもよい。例えば、電子デバイス1300は、本明細書に記載されるように、CIMアレイ802及びCIMアレイ804などの1つ以上のCIMアレイを含むCIM回路1326を含むことができる。CIM回路1326は、CIMコントローラ1332を介して制御することができる。例えば、いくつかの態様では、メモリ1324は、畳み込みの(例えば、活性化入力を適用することによってDW又はPW畳み込み演算を実行する)コード1324Bを含むことができる。メモリ1324はまた、入力信号を生成するコード1324Cを含むことができる。メモリ1324はまた、任意選択的に、ロードする(例えば、重みパラメータをCIMセルにロードする)コード1324Aを含むことができる。図示のように、CIMコントローラ1332は、畳み込みの(例えば、活性化入力を適用することによってDW又はPW畳み込み演算を実行する)ための回路1328Bを含むことができる。CIMコントローラ1332はまた、入力信号を生成するための回路1328Cを含んでもよい。CIMコントローラ1332はまた、任意選択的に、ロードする(例えば、重みパラメータをCIMセルにロードする)ための回路1328Aを含んでもよい。図示の構成要素及び図示されていない他の構成要素は、本明細書に記載する方法の様々な態様を実行するように構成することができる。
[0133] 電子デバイス1300がサーバデバイスである場合などのいくつかの態様では、マルチメディア処理ブロック1310、無線接続構成要素1312、アンテナ1314、センサプロセッサ1316、ISP1318、又はナビゲーション1320のうちの1つ以上などの様々な態様は、図13に示す態様から省略することができる。
実施例条項
[0134] 態様1.ニューラルネットワークにおける信号処理のための装置であって、深さ方向(DW)ニューラルネットワーク計算のための第1のカーネルとして構成された第1のメモリ内計算(CIM)セルであって、CIMセルの第1のセットが、CIMアレイの1つ以上の第1の列及び第1の複数の行を含む、第1のCIMセルと、ニューラルネットワーク計算のための第2のカーネルとして構成されたCIMセルの第2のセットであって、CIMアレイの1つ以上の第1の列及び第2の複数の行を含み、第1の複数の行が第2の複数の行とは異なっている、CIMセルの第2のセットと、点ごとの(PW)ニューラルネットワーク計算のための第3のカーネルとして構成されたCIMアレイのCIMセルの第3のセットと、を備える、装置。
[0135] 態様2.CIMセルの第1のセットが、CIMアレイのセルのサブセットを含み、CIMセルの第2のセットが、CIMアレイのセルの別のサブセットを含む、態様1に記載の装置。
[0136] 態様3.CIMセルの第3のセットが、CIMアレイのセルの第3のサブセットである、態様2に記載の装置。
[0137] 態様4.CIMセルの第3のセットが、CIMアレイの1つ以上の第2の列及び第1の複数の行を含み、1つ以上の第2の列が、1つ以上の第1の列とは異なっている、態様1から3のいずれか一項に記載の装置。
[0138] 態様5.1つ以上の第1の列に結合されたアナログデジタル変換器(ADC)を更に備える、態様1から4のいずれか一項に記載の装置。
[0139] 態様6.ADCの出力に結合された非線形回路を更に備える、態様5に記載の装置。
[0140] 態様7.ニューラルネットワーク計算のための第3のカーネルとして構成されたCIMセルの第3のセットを更に備え、CIMセルの第3のセットが、CIMアレイの1つ以上の第1の列及び第3の複数の行を含む、態様1から6のいずれか一項に記載の装置。
[0141] 態様8.ニューラルネットワーク計算を実行するときに、同じ重みパラメータが、CIMセルの第1のセット及びCIMセルの第3のセットに記憶されるように構成されている、態様7に記載の装置。
[0142] 態様9.第1の複数の行の各行上のCIMセルの第1のセットのうちの1つ以上が、第1の重みパラメータを記憶するように構成されており、第2の複数の行の各行上のCIMセルの第2のセットのうちの1つ以上が、第2の重みパラメータを記憶するように構成されている、態様1から8のいずれか一項に記載の装置。
[0143] 態様10.1つ以上の第1の列の量が、第1の重みパラメータの1つ以上のビットの量に関連付けられている、態様9に記載の装置。
[0144] 態様11.ニューラルネットワークにおける信号処理の方法であって、メモリ内計算(CIM)アレイの1つ以上の第1の列上の複数のCIMセルグループを使用して実装された複数のカーネルを介して複数の深さ方向(DW)畳み込み演算を実行することと、複数のDW畳み込み演算からの出力に基づいて、点ごとの(PW)畳み込み演算のための入力信号を生成することと、入力信号に基づいて、CIMアレイの1つ以上の第2の列上のCIMセルグループを使用して実装されたカーネルを介して実行される、PW畳み込み演算を実行することと、を含む、方法。
[0145] 態様12.複数のDW畳み込み演算を実行することが、1つ以上の第1の列を介して、複数のカーネルのうちの第1のカーネルの第1の複数の重みパラメータを複数のCIMセルグループのうちのCIMセルの第1のセットであって、CIMアレイの第1の複数の行を含むCIMセルの第1のセットにロードすることと、第1の複数の行に第1の活性化入力を適用することを含む、第1のカーネルを介して複数のDW畳み込み演算のうちの第1のDW畳み込み演算を実行することと、1つ以上の第1の列を介して、複数のカーネルのうちの第2のカーネルの第2の複数の重みパラメータを複数のCIMセルグループのうちのCIMセルの第2のセットであって、CIMアレイの1つ以上の第1の列及び第2の複数の行を含み、第1の複数の行が第2の複数の行とは異なっている、CIMセルの第2のセットにロードすることと、第2の複数の行に第2の活性化入力を適用することを含む、第2のカーネルを介して複数のDW畳み込み演算のうちの第2のDW畳み込み演算を実行することと、を含む、態様11に記載の方法。
[0146] 態様13.CIMセルの第1のセットが、CIMアレイのセルのサブセットを含み、CIMセルの第2のセットが、CIMアレイのセルの別のサブセットを含む、態様12に記載の方法。
[0147] 態様14.PW畳み込み演算を実行することが、第3の複数の重みを1つ以上の第2の列上のカーネルのためのCIMセルグループにロードすることを含む、態様13に記載の方法。
[0148] 態様15.複数のDW畳み込み演算を実行した後に、1つ以上の第1の列における電圧をアナログ領域からデジタル領域に変換することによって、デジタル信号を生成することを更に含み、1つ以上の第2の列上のCIMセルグループへの入力信号が、デジタル信号に基づいて生成される、態様14に記載の方法。
[0149] 態様16.第1のDW畳み込み演算を実行するために、1つ以上の第1の列を介して、第1の複数の重みパラメータを複数のCIMセルグループのうちのCIMセルの第3のセットであって、CIMアレイの1つ以上の第1の列及び第3の複数の行を含むCIMセルの第3のセットにロードすることを更に含む、態様12から15のいずれか一項に記載の方法。
[0150] 態様17.処理システムの1つ以上のプロセッサによって実行されると、処理システムに、ニューラルネットワークにおける信号処理の方法を実行させる命令を備える非一時的コンピュータ可読媒体であって、方法が、メモリ内計算(CIM)アレイの1つ以上の第1の列上の複数のCIMセルグループを使用して実装された複数のカーネルを介して複数の深さ方向(DW)畳み込み演算を実行することと、複数のDW畳み込み演算からの出力に基づいて、点ごとの(PW)畳み込み演算のための入力信号を生成することと、入力信号に基づいて、CIMアレイの1つ以上の第2の列上のCIMセルグループを介して実行される、PW畳み込み演算を実行することと、を含む、非一時的コンピュータ可読媒体。
[0151] 態様18.複数のDW畳み込み演算を実行することが、1つ以上の第1の列を介して、複数のカーネルのうちの第1のカーネルの第1の複数の重みパラメータを複数のCIMセルグループのうちのCIMセルの第1のセットであって、CIMアレイの第1の複数の行を含むCIMセルの第1のセットにロードすることと、第1の複数の行に第1の活性化入力を適用することを含む、第1のカーネルを介して複数のDW畳み込み演算のうちの第1のDW畳み込み演算を実行することと、1つ以上の第1の列を介して、複数のカーネルのうちの第2のカーネルの第2の複数の重みパラメータを複数のCIMセルグループのうちのCIMセルの第2のセットであって、CIMアレイの1つ以上の第1の列及び第2の複数の行を含み、第1の複数の行が第2の複数の行とは異なっている、CIMセルの第2のセットにロードすることと、第2の複数の行に第2の活性化入力を適用することを含む、第2のカーネルを介して複数のDW畳み込み演算のうちの第2のDW畳み込み演算を実行することと、を含む、態様17に記載の非一時的コンピュータ可読媒体。
[0152] 態様19.CIMセルの第1のセットが、CIMアレイのセルのサブセットを含み、CIMセルの第2のセットが、CIMアレイのセルの別のサブセットを含む、態様18に記載の非一時的コンピュータ可読媒体。
[0153] 態様20.PW畳み込み演算を実行することが、第3の複数の重みを1つ以上の第2の列上の第3のカーネルのためのCIMセルグループにロードすることを含む、態様19に記載の非一時的コンピュータ可読媒体。
[0154] 態様21.方法が、複数のDW畳み込み演算を実行した後に、1つ以上の第1の列における電圧をアナログ領域からデジタル領域に変換することによって、デジタル信号を生成することを更に含み、1つ以上の第2の列上のCIMセルグループへの入力信号が、デジタル信号に基づいて生成される、態様20に記載の非一時的コンピュータ可読媒体。
[0155] 態様22.方法が、第1のDW畳み込み演算を実行するために、1つ以上の第1の列を介して、第1の複数の重みパラメータを複数のCIMセルグループのうちのCIMセルの第3のセットであって、CIMアレイの1つ以上の第1の列及び第3の複数の行を含むCIMセルの第3のセットにロードすることを更に含む、態様18から21のいずれか一項に記載の非一時的コンピュータ可読媒体。
追加の考慮事項
[0156] 先行する説明は、本明細書に記載した様々な態様をあらゆる当業者が実践することを可能にするために提供される。本明細書に記載した実施例は、特許請求の範囲に記載された範囲、適用可能性、又は態様を限定するものではない。これらの態様の様々な修正は、当業者に容易に明らかになり、本明細書で定義される一般原理は、他の態様に適用することができる。例えば、本開示の範囲から逸脱することなく、説明する要素の機能及び構成に変更を行うことができる。様々な実施例は、必要に応じて、様々な手順又は構成要素を省略してもよく、置換してもよく、又は追加してもよい。例えば、説明する方法は、説明する順序とは異なる順序で実行されてもよく、様々なステップが追加されてもよく、省略されてもよく、又は組み合わされてもよい。また、いくつかの実施例に関して説明する特徴は、いくつかの他の実施例に組み合わされてもよい。例えば、本明細書に記載する任意の数の態様を使用して、装置が実装されてもよく、又は方法が実践されてもよい。加えて、本開示の範囲は、本明細書に記載される本開示の様々な態様に加えて、又はそれらの態様以外に、他の構造、機能、又は構造及び機能を使用して実践されるそのような装置又は方法を包含することを意図している。本明細書で開示する開示のいずれの態様も、特許請求の範囲の1つ以上の要素によって具現化できることを理解されたい。
[0157] 本明細書で使用されるとき、「例示的」という語は、「例、事例、又は例示としての役割を果たすこと」を意味する。「例示的」として本明細書に記載したいかなる態様も、必ずしも他の態様よりも好ましい又は有利であると解釈されるべきではない。
[0158] 本明細書で使用されるとき、項目の列挙「のうちの少なくとも1つ」を指す句は、それらの項目の任意の組み合わせを指し、単一のメンバーを含む。例として、「a、b、又はcのうちの少なくとも1つ」は、a、b、c、a-b、a-c、b-c、及びa-b-c、並びに複数の同じ要素を有する任意の組み合わせ(例えば、a-a、a-a-a、a-a-b、a-a-c、a-b-b、a-c-c、b-b、b-b-b、b-b-c、c-c、及びc-c-c、又はa、b、及びcの任意の他の順序)を包含するものとする。
[0159] 本明細書で使用されるとき、「決定すること/判定すること(determining)」という用語は、多種多様なアクションを包含する。例えば、「決定すること/判定すること」は、計算すること、算出すること、処理すること、導出すること、調査すること、ルックアップすること(例えば、テーブル、データベース、又は別のデータ構造においてルックアップすること)、確認することなどを含んでもよい。また、「決定すること/判定すること」は、受信すること(例えば、情報を受信すること)、アクセスすること(例えば、メモリ内のデータにアクセスすること)などを含むことができる。また、「決定すること/判定すること」は、解決すること、選択すること、選出すること、確立することなどを含むことができる。
[0160] 本明細書で開示する方法は、方法を達成するための1つ以上のステップ又はアクションを含む。方法ステップ及び/又はアクションは、特許請求の範囲から逸脱することなく互いに入れ替えてもよい。言い換えれば、ステップ又はアクションの具体的な順序が指定されない限り、具体的なステップ及び/又はアクションの順序及び/又は使用は、特許請求の範囲の範囲から逸脱することなく修正されてもよい。更に、上述した方法の様々な動作は、対応する機能を実行することが可能な任意の適切な手段によって実行されてもよい。手段は、限定はされないが、回路、特定用途向け集積回路(application specific integrated circuit、ASIC)、又はプロセッサを含む、様々なハードウェア及び/又はソフトウェア構成要素(単数又は複数)及び/又はモジュール(単数又は複数)を含んでもよい。概して、図に示された動作がある場合、それらの動作は、類似の番号付けを伴う対応する相対物のミーンズプラスファンクション構成要素を有してもよい。
[0161] 以下の特許請求の範囲は、本明細書で示される態様に限定されるものではなく、特許請求の範囲の文言と一致する全範囲を与えられるべきである。請求項において、単数形の要素への言及は、「唯一無二の」と明記されていない限り、それを意味するものではなく、「1つ以上の」を意味するものとする。別段に明記されていない限り、「いくつかの」という用語は1つ以上を指す。請求項の要素は、要素が「の手段」という句を使用して明白に記載されていない限り、又は方法クレームの場合には、要素が「のステップ」という句を使用して記載されていない限り、米国特許法第112条(f)の規定の下で解釈されるべきではない。当業者に知られている又は後で知られることになる、本開示全体にわたって説明した様々な態様の要素の全ての構造的及び機能的な均等物は、参照により本明細書に明確に組み込まれ、特許請求の範囲によって包含されることが意図される。その上、本明細書に開示するものはいずれも、そのような開示が特許請求の範囲において明示的に列挙されているかどうかにかかわらず、公に供されることを意図するものではない。

Claims (22)

  1. ニューラルネットワークにおける信号処理のための装置であって、
    深さ方向(DW)ニューラルネットワーク計算のための第1のカーネルとして構成されたメモリ内計算(CIM)セルの第1のセットと、前記CIMセルの第1のセルは、CIMアレイの1つ以上の第1の列及び第1の複数の行を含み、
    前記ニューラルネットワーク計算のための第2のカーネルとして構成されたCIMセルの第2のセットと、前記CIMセルの第2のセットは、前記CIMアレイの前記1つ以上の第1の列及び第2の複数の行を含み、前記第1の複数の行が前記第2の複数の行とは異なり、
    点ごとの(PW)ニューラルネットワーク計算のための第3のカーネルとして構成された前記CIMアレイのCIMセルの第3のセットと、
    を備える、装置。
  2. 前記CIMセルの第1のセットが、前記CIMアレイのセルのサブセットを含み、前記CIMセルの第2のセットが、前記CIMアレイのセルの別のサブセットを含む、請求項1に記載の装置。
  3. 前記CIMセルの第3のセットが、前記CIMアレイのセルの第3のサブセットである、請求項2に記載の装置。
  4. 前記CIMセルの第3のセットが、前記CIMアレイの1つ以上の第2の列及び前記第1の複数の行を含み、前記1つ以上の第2の列が、前記1つ以上の第1の列とは異なっている、請求項1に記載の装置。
  5. 前記1つ以上の第1の列に結合されたアナログデジタル変換器(ADC)を更に備える、請求項1に記載の装置。
  6. 前記ADCの出力に結合された非線形回路を更に備える、請求項5に記載の装置。
  7. 前記ニューラルネットワーク計算のための第3のカーネルとして構成されたCIMセルの第3のセットを更に備え、前記CIMセルの第3のセットが、前記CIMアレイの前記1つ以上の第1の列及び第3の複数の行を備える、請求項1に記載の装置。
  8. 前記ニューラルネットワーク計算を実行するときに、同じ重みパラメータが、前記CIMセルの第1のセット及び前記CIMセルの第3のセットに記憶されるように構成されている、請求項7に記載の装置。
  9. 前記第1の複数の行の各行上の前記CIMセルの第1のセットのうちの1つ以上が、第1の重みパラメータを記憶するように構成されており、
    前記第2の複数の行の各行上の前記CIMセルの第2のセットのうちの1つ以上が、第2の重みパラメータを記憶するように構成されている、
    請求項1に記載の装置。
  10. 前記1つ以上の第1の列の量が、前記第1の重みパラメータの1つ以上のビットの量に関連付けられている、請求項9に記載の装置。
  11. ニューラルネットワークにおける信号処理の方法であって、
    メモリ内計算(CIM)アレイの1つ以上の第1の列上の複数のCIMセルグループを使用して実装された複数のカーネルを介して複数の深さ方向(DW)畳み込み演算を実行することと、
    前記複数のDW畳み込み演算からの出力に基づいて、点ごとの(PW)畳み込み演算のための入力信号を生成することと、
    前記入力信号に基づいて、PW畳み込み演算を実行することと、前記PW畳み込み演算は、前記CIMアレイの1つ以上の第2の列上のCIMセルグループを使用して実装されたカーネルを介して実行され、
    を備える、方法。
  12. 前記複数のDW畳み込み演算を実行することが、
    前記1つ以上の第1の列を介して、前記複数のカーネルのうちの第1のカーネルの第1の複数の重みパラメータを前記複数のCIMセルグループのうちのCIMセルの第1のセットに、ロードすることと、前記CIMセルの第1のセットは、前記CIMアレイの第1の複数の行を備え、
    前記第1のカーネルを介して前記複数のDW畳み込み演算のうちの第1のDW畳み込み演算を実行することと、前記第1のDW畳み込み演算を実行することは、前記第1の複数の行に第1の活性化入力を適用することを備え、
    前記1つ以上の第1の列を介して、前記複数のカーネルのうちの第2のカーネルの第2の複数の重みパラメータを前記複数のCIMセルグループのうちのCIMセルの第2のセットにロードすることと、前記CIMセルの第2のセットは、前記CIMアレイの前記1つ以上の第1の列及び第2の複数の行を備え、前記第1の複数の行は前記第2の複数の行とは異なり、
    前記第2のカーネルを介して前記複数のDW畳み込み演算のうちの第2のDW畳み込み演算を実行することと、前記第2のDW畳み込み演算を実行することは、前記第2の複数の行に第2の活性化入力を適用することを備え、
    を備える、
    請求項11に記載の方法。
  13. 前記CIMセルの第1のセットが、前記CIMアレイのセルのサブセットを含み、前記CIMセルの第2のセットが、前記CIMアレイのセルの別のサブセットを含む、請求項12に記載の方法。
  14. 前記PW畳み込み演算を実行することが、第3の複数の重みを前記1つ以上の第2の列上の前記カーネルのための前記CIMセルグループにロードすることを備える、請求項13に記載の方法。
  15. 前記複数のDW畳み込み演算を実行した後に、前記1つ以上の第1の列における電圧をアナログ領域からデジタル領域に変換することによって、デジタル信号を生成することを更に備え、
    前記1つ以上の第2の列上の前記CIMセルグループへの前記入力信号が、前記デジタル信号に基づいて生成される、
    請求項14に記載の方法。
  16. 前記第1のDW畳み込み演算を実行するために、前記1つ以上の第1の列を介して、前記第1の複数の重みパラメータを前記複数のCIMセルグループのうちのCIMセルの第3のセットに、ロードすること、前記CIMセルの第3のセットは、前記CIMアレイの前記1つ以上の第1の列及び第3の複数の行を備え、
    を更に備える、請求項12に記載の方法。
  17. 処理システムの1つ以上のプロセッサによって実行されると、前記処理システムに、ニューラルネットワークにおける信号処理の方法を実行させる命令を備える非一時的コンピュータ可読媒体であって、前記方法が、
    メモリ内計算(CIM)アレイの1つ以上の第1の列上の複数のCIMセルグループを使用して実装された複数のカーネルを介して複数の深さ方向(DW)畳み込み演算を実行することと、
    前記複数のDW畳み込み演算からの出力に基づいて、点ごとの(PW)畳み込み演算のための入力信号を生成することと、
    前記入力信号に基づいて、PW畳み込み演算を実行することと、前記PW畳み込み演算は、前記CIMアレイの1つ以上の第2の列上のCIMセルグループを介して実行され、
    を備える、
    非一時的コンピュータ可読媒体。
  18. 前記複数のDW畳み込み演算を実行することが、
    前記1つ以上の第1の列を介して、前記複数のカーネルのうちの第1のカーネルの第1の複数の重みパラメータを前記複数のCIMセルグループのうちのCIMセルの第1のセットにロードすることと、前記CIMセルの第1のセットは、前記CIMアレイの第1の複数の行を備え、
    前記第1のカーネルを介して前記複数のDW畳み込み演算のうちの第1のDW畳み込み演算を実行することと、前記第1のDW畳み込み演算を実行することは、前記第1の複数の行に第1の活性化入力を適用することを備え、
    前記1つ以上の第1の列を介して、前記複数のカーネルのうちの第2のカーネルの第2の複数の重みパラメータを前記複数のCIMセルグループのうちのCIMセルの第2のセットにロードすることと、前記CIMセルの第2のセットは、前記CIMアレイの前記1つ以上の第1の列及び第2の複数の行を備え、前記第1の複数の行は前記第2の複数の行とは異なり、
    前記第2のカーネルを介して前記複数のDW畳み込み演算のうちの第2のDW畳み込み演算を実行することと、前記第2のDW畳み込み演算を実行することは、前記第2の複数の行に第2の活性化入力を適用することを備え、
    を備える、
    請求項17に記載の非一時的コンピュータ可読媒体。
  19. 前記CIMセルの第1のセットが、前記CIMアレイのセルのサブセットを含み、前記CIMセルの第2のセットが、前記CIMアレイのセルの別のサブセットを含む、請求項18に記載の非一時的コンピュータ可読媒体。
  20. 前記PW畳み込み演算を実行することが、第3の複数の重みを前記1つ以上の第2の列上の第3のカーネルのための前記CIMセルグループにロードすることを備える、請求項19に記載の非一時的コンピュータ可読媒体。
  21. 前記方法が、
    前記複数のDW畳み込み演算を実行した後に、前記1つ以上の第1の列における電圧をアナログ領域からデジタル領域に変換することによって、デジタル信号を生成することを更に備え、
    前記1つ以上の第2の列上の前記CIMセルグループへの前記入力信号が、前記デジタル信号に基づいて生成される、
    請求項20に記載の非一時的コンピュータ可読媒体。
  22. 前記方法が、前記第1のDW畳み込み演算を実行するために、前記1つ以上の第1の列を介して、前記第1の複数の重みパラメータを前記複数のCIMセルグループのうちのCIMセルの第3のセットにロードすること、前記CIMセルの第3のセットは、前記CIMアレイの前記1つ以上の第1の列及び第3の複数の行を備える、
    を更に備える、請求項18に記載の非一時的コンピュータ可読媒体。
JP2023577151A 2021-06-29 2022-06-28 深さ方向畳み込みのためのメモリ内計算アーキテクチャ Pending JP2024525333A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US17/361,807 2021-06-29

Publications (1)

Publication Number Publication Date
JP2024525333A true JP2024525333A (ja) 2024-07-12

Family

ID=

Similar Documents

Publication Publication Date Title
US20220414444A1 (en) Computation in memory (cim) architecture and dataflow supporting a depth-wise convolutional neural network (cnn)
US20220414443A1 (en) Compute in memory-based machine learning accelerator architecture
KR20240025540A (ko) 깊이별 콘볼루션을 위한 메모리 아키텍처에서의 컴퓨테이션
US20230025068A1 (en) Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements
US20230031841A1 (en) Folding column adder architecture for digital compute in memory
WO2023019103A1 (en) Partial sum management and reconfigurable systolic flow architectures for in-memory computation
JP2024525333A (ja) 深さ方向畳み込みのためのメモリ内計算アーキテクチャ
JP2024525332A (ja) 深さ方向畳み込みニューラルネットワーク(cnn)をサポートするメモリ内計算(cim)アーキテクチャ及びデータフロー
US20230004350A1 (en) Compute in memory architecture and dataflows for depth-wise separable convolution
WO2023004570A1 (en) Activation buffer architecture for data-reuse in a neural network accelerator
US12019905B2 (en) Digital compute in memory
US20230115373A1 (en) Accumulator for digital computation-in-memory architectures
US20230049323A1 (en) Sparsity-aware compute-in-memory
WO2023004374A1 (en) Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements
WO2023015167A1 (en) Digital compute in memory