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

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

▶ クゥアルコム・インコーポレイテッドの特許一覧

特表2022-538938エッジデバイス上で機械学習演算を実施するためのプログラマブル回路
<>
  • 特表-エッジデバイス上で機械学習演算を実施するためのプログラマブル回路 図1
  • 特表-エッジデバイス上で機械学習演算を実施するためのプログラマブル回路 図2
  • 特表-エッジデバイス上で機械学習演算を実施するためのプログラマブル回路 図3A
  • 特表-エッジデバイス上で機械学習演算を実施するためのプログラマブル回路 図3B
  • 特表-エッジデバイス上で機械学習演算を実施するためのプログラマブル回路 図4
  • 特表-エッジデバイス上で機械学習演算を実施するためのプログラマブル回路 図5
  • 特表-エッジデバイス上で機械学習演算を実施するためのプログラマブル回路 図6
  • 特表-エッジデバイス上で機械学習演算を実施するためのプログラマブル回路 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-09-06
(54)【発明の名称】エッジデバイス上で機械学習演算を実施するためのプログラマブル回路
(51)【国際特許分類】
   G06N 3/063 20060101AFI20220830BHJP
   G06G 7/60 20060101ALI20220830BHJP
   G06G 7/16 20060101ALI20220830BHJP
【FI】
G06N3/063
G06G7/60
G06G7/16 510
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022511104
(86)(22)【出願日】2020-08-26
(85)【翻訳文提出日】2022-02-18
(86)【国際出願番号】 US2020047975
(87)【国際公開番号】W WO2021041526
(87)【国際公開日】2021-03-04
(31)【優先権主張番号】16/556,505
(32)【優先日】2019-08-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】595020643
【氏名又は名称】クゥアルコム・インコーポレイテッド
【氏名又は名称原語表記】QUALCOMM INCORPORATED
(74)【代理人】
【識別番号】100108855
【弁理士】
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100158805
【弁理士】
【氏名又は名称】井関 守三
(74)【代理人】
【識別番号】100112807
【弁理士】
【氏名又は名称】岡田 貴志
(72)【発明者】
【氏名】ヤン、ハイニン
(72)【発明者】
【氏名】チダンバラム、ペリアンナン
(57)【要約】
本開示のいくつかの態様は、たとえば、機械学習モデルを実装するように、1つまたは複数のプログラマブル回路を有するデバイスをプログラムするための方法と装置とを対象とする。1つの例示的な装置は、複数のワード線と、複数のビット線と、プログラマブル回路のアレイとを概して含む。各プログラマブル回路は、複数のワード線中の対応するワード線に、および複数のビット線中の対応するビット線に結合され、対応するワード線と対応するビット線との間に結合された主抵抗器と、補助抵抗器と、補助抵抗器と直列に結合されたヒューズと、ここにおいて、補助抵抗器とヒューズとが、対応するワード線と対応するビット線との間に結合された、ヒューズを選択的にとばすように構成されたプログラミング回路とを備える。
【選択図】図3A
【特許請求の範囲】
【請求項1】
装置であって、
複数のワード線と、
複数のビット線と、
プログラマブル回路のアレイと、を備え、
各プログラマブル回路は、前記複数のワード線中の対応するワード線に、および前記複数のビット線中の対応するビット線に結合され、
前記対応するワード線と前記対応するビット線との間に結合された主抵抗器と、
補助抵抗器と、
前記補助抵抗器と直列に結合されたヒューズと、ここにおいて、前記補助抵抗器と前記ヒューズとは、前記対応するワード線と前記対応するビット線との間に結合され、
前記ヒューズを選択的にとばすように構成されたプログラミング回路と、
を備える、装置。
【請求項2】
前記プログラマブル回路は、少なくとも1つの追加のヒューズに結合された少なくとも1つの追加の補助抵抗器をさらに備え、前記少なくとも1つの追加の補助抵抗器と前記少なくとも1つの追加のヒューズとは、直列に接続され、
前記プログラミング回路は、前記ヒューズと前記少なくとも1つの追加のヒューズとのうちの1つまたは複数を選択的にとばすように構成された、
請求項1に記載の装置。
【請求項3】
前記プログラマブル回路は、1つまたは複数のスイッチをさらに備え、各スイッチは、電圧源に結合された第1のノードと、前記補助抵抗器および前記ヒューズに結合された第2のノードとの間に結合された、請求項1に記載の装置。
【請求項4】
トレーニングされた機械学習モデルのための更新された重み値に基づいて、前記アレイ中の前記プログラマブル回路のうちの少なくとも1つを再プログラムするように構成されたプロセッサをさらに備える、請求項1に記載の装置。
【請求項5】
異なる機械学習モデルを実装するために、前記アレイ中の前記プログラマブル回路のうちの少なくとも1つを再プログラムするように構成されたプロセッサをさらに備える、請求項1に記載の装置。
【請求項6】
各プログラマブル回路中の補助抵抗器の数は、トレーニングされた機械学習モデルの重み値に関連する精度のビットの数に対応する、請求項1に記載の装置。
【請求項7】
プログラマブル回路の前記アレイ中の各プログラマブル回路の出力は、乗算および累算演算において使用される、請求項1に記載の装置。
【請求項8】
プログラマブル回路の前記アレイは、トレーニングされた機械学習モデルを実行するように構成され、前記トレーニングされた機械学習モデルは、特定のタスクを実施するようにトレーニングされた深層ニューラルネットワークに基づく、請求項1に記載の装置。
【請求項9】
前記装置は、モバイルコンピューティングデバイスである、請求項1に記載の装置。
【請求項10】
前記装置は、自律自動車両である、請求項1に記載の装置。
【請求項11】
複数のワード線と、複数のビット線と、プログラマブル回路のアレイとを有するデバイスをプログラムするための方法であって、
各プログラマブル回路は、前記複数のワード線中の対応するワード線に、および前記複数のビット線中の対応するビット線に結合され、
ヒューズを選択的にとばすことよって、プログラマブル回路の前記アレイ中のプログラマブル回路をプログラムすることと、ここにおいて、
前記ヒューズは、補助抵抗器と直列に結合され、
前記補助抵抗器と前記ヒューズとは、前記対応するワード線と前記対応するビット線との間に結合され、
主抵抗器は、前記対応するワード線と前記対応するビット線との間に結合され、
前記プログラムされたプログラマブル回路を使用して前記デバイスを動作させることと、
を備える、方法。
【請求項12】
前記ヒューズを前記選択的にとばすことは、前記補助抵抗器に結合された前記ヒューズと、少なくとも1つの追加の補助抵抗器に結合された少なくとも1つの追加のヒューズとのうちの1つまたは複数を選択的にとばすことを備え、前記少なくとも1つの追加のヒューズと前記少なくとも1つの追加の補助抵抗器とは、直列に接続される、
請求項11に記載の方法。
【請求項13】
前記ヒューズを前記選択的にとばすことは、1つまたは複数のスイッチを選択的に閉じることを備え、各スイッチは、電圧源に結合された第1のノードと、前記補助抵抗器および前記ヒューズに結合された第2のノードとの間に結合される、
請求項12に記載の方法。
【請求項14】
前記プログラマブル回路は、トレーニングされた機械学習モデルを実装するようにプログラムされ、前記トレーニングされた機械学習モデルの重み値に基づいてプログラムされる、請求項11に記載の方法。
【請求項15】
前記トレーニングされた機械学習モデルのための更新された重み値に基づいて、前記プログラマブル回路を再プログラムすることをさらに備える、請求項14に記載の方法。
【請求項16】
異なる機械学習モデルを実装するために、前記プログラマブル回路を再プログラムすることをさらに備える、請求項14に記載の方法。
【請求項17】
前記トレーニングされた機械学習モデルは、特定のタスクを実施するようにトレーニングされた深層ニューラルネットワークに基づく、請求項14に記載の方法。
【請求項18】
前記プログラマブル回路中の補助抵抗器の数は、前記トレーニングされた機械学習モデルの前記重み値に関連する精度のビットの数に対応する、請求項14に記載の方法。
【請求項19】
前記プログラマブル回路を使用して前記デバイスを前記動作させることは、
アナログ入力として表される特徴ベクトルを備える入力を受信することと、
前記特徴ベクトルの要素と、前記主抵抗器および前記補助抵抗器の抵抗との積に基づいて出力を生成することと、
を備える、請求項11に記載の方法。
【請求項20】
前記動作させることは、乗算および累算演算において、前記プログラマブル回路の出力を、プログラマブル回路の前記アレイ中の1つまたは複数の他のプログラマブル回路の出力とともに使用することを備える、請求項11に記載の方法。
【請求項21】
前記デバイスは、モバイルコンピューティングデバイスまたは自律自動車両のうちの1つを備える、請求項11に記載の方法。
【請求項22】
デバイスをプログラムするための装置であって、
複数のワード線と、
複数のビット線と、
プログラマブル回路のアレイと、ここにおいて、各プログラマブル回路は、前記複数のワード線中の対応するワード線に、および前記複数のビット線中の対応するビット線に結合され、
プログラマブル回路の前記アレイ中のプログラマブル回路をプログラムするための手段であって、プログラムするための前記手段を使用してヒューズを選択的にとばすことよって、プログラマブル回路の前記アレイ中のプログラマブル回路をプログラムするための手段と、ここにおいて、
前記ヒューズは、補助抵抗器と直列に結合され、
前記補助抵抗器と前記ヒューズとは、前記対応するワード線と前記対応するビット線との間に結合され、
主抵抗器は、前記対応するワード線と前記対応するビット線との間に結合され、
前記プログラムされたプログラマブル回路を使用して、前記装置を動作させるための手段と、
を備える、装置。
【請求項23】
プログラムするための前記手段は、前記補助抵抗器に結合された前記ヒューズと、少なくとも1つの追加の補助抵抗器に結合された少なくとも1つの追加のヒューズとのうちの1つまたは複数を選択的にとばすように構成され、前記少なくとも1つの追加のヒューズと前記少なくとも1つの追加の補助抵抗器とは、直列に接続されている、請求項22に記載の装置。
【請求項24】
プログラムするための前記手段は、1つまたは複数のスイッチを閉じることによって前記ヒューズを選択的にとばすように構成され、各スイッチは、電圧源に結合された第1のノードと、前記補助抵抗器および前記ヒューズに結合された第2のノードとの間に結合された、請求項23に記載の装置。
【請求項25】
前記プログラマブル回路は、トレーニングされた機械学習モデルを実装するようにプログラムされ、前記プログラマブル回路は、前記トレーニングされた機械学習モデルの重み値に基づいてプログラムされ、および、前記装置は、前記トレーニングされた機械学習モデルのための更新された重み値に基づいて前記プログラマブル回路を再プログラムするための手段をさらに備える、請求項22に記載の装置。
【請求項26】
前記プログラマブル回路は、トレーニングされた機械学習モデルを実装するようにプログラムされ、前記装置は、異なる機械学習モデルを実装するために、前記プログラマブル回路を再プログラムするための手段をさらに備える、請求項22に記載の装置。
【請求項27】
前記プログラムされたプログラマブル回路を使用して前記装置を動作させるための前記手段は、
アナログ入力として表される特徴ベクトルを備える入力を受信するための手段と、
前記特徴ベクトルの要素と、前記主抵抗器および前記補助抵抗器の抵抗との積に基づいて出力を生成するための手段と、
を備える、請求項22に記載の装置。
【請求項28】
前記プログラマブル回路は、トレーニングされた機械学習モデルを実装するようにプログラムされ、前記プログラマブル回路は、前記トレーニングされた機械学習モデルの重み値に基づいてプログラムされ、および、前記プログラマブル回路中の補助抵抗器の数は、前記トレーニングされた機械学習モデルの前記重み値に関連する精度のビットの数に対応する、請求項22に記載の装置。
【請求項29】
動作させるための前記手段は、乗算および累算演算において、前記プログラマブル回路の出力を、プログラマブル回路の前記アレイ中の1つまたは複数の他のプログラマブル回路の出力とともに使用するための手段を備える、請求項22に記載の装置。
【請求項30】
命令を記憶した非一時的コンピュータ可読媒体であって、前記命令は、プロセッサによって実行されると、デバイスをプログラムするための動作を実施し、前記デバイスは、前記プロセッサと、複数のワード線と、複数のビット線と、プログラマブル回路のアレイとを備え、各プログラマブル回路は、前記複数のワード線中の対応するワード線に、および前記複数のビット線中の対応するビット線に結合され、前記動作は、
ヒューズを選択的にとばすことよって、プログラマブル回路の前記アレイ中のプログラマブル回路をプログラムすることと、ここにおいて、
前記ヒューズは、補助抵抗器と直列に結合され、
前記補助抵抗器と前記ヒューズとは、前記対応するワード線と前記対応するビット線との間に結合され、
主抵抗器は、前記対応するワード線と前記対応するビット線との間に結合され、
前記プログラムされたプログラマブル回路を使用して、前記デバイスを動作させることと、
を備える、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【優先権の主張】
【0001】
米国特許法第119条に基づく優先権の主張
[0001]本特許出願は、本出願の譲受人に譲渡され、参照により本明細書に明確に組み込まれる、2019年8月30日に出願された「PROGRAMMABLE CIRCUITS FOR PERFORMING MACHINE LEARNING OPERATIONS ON EDGE DEVICES」と題する非仮出願第16/556,505号の優先権を主張する。
【技術分野】
【0002】
[0002]本開示は、一般に、人工ニューラルネットワークに関し、より詳細には、エッジデバイス上で機械学習演算を実施するための技法と装置とに関する。
【背景技術】
【0003】
[0003]人工ニューロン(たとえば、ニューロンモデル)の相互接続されたグループから構成され得る人工ニューラルネットワークは、計算デバイスであるか、または計算デバイスによって実施される方法を表す。これらのニューラルネットワークは、インターネットプロトコル(IP)カメラ、モノのインターネット(IoT)デバイス、自律車両、および/またはサービスロボットなど、様々な適用例および/またはデバイスのために使用され得る。
【0004】
[0004]人工ニューラルネットワーク中の個々のノードは、入力データを取り、データに対して単純な演算を実施することによって、生物学的ニューロンをエミュレートすることがある。入力データに対して実施された単純な演算の結果は、他のニューロンに選択的に受け渡される。重み値が、各ベクトルとネットワーク中のノードとに関連付けられ、これらの値は、入力データがどのように出力データに関係するかを制約する。たとえば、各ノードの入力データは、対応する重み値によって乗算され得、この積は合計され得る。積の合計は、随意のバイアスによって調整され得、活性化関数が結果に適用され、ノードの出力信号または「出力活性化」が生じ得る。重み値は、初期に、ネットワークを通してトレーニングデータの反復フローによって決定され得る(たとえば、重み値は、ネットワークが特定のクラスの典型的な入力データ特性によってそれらのクラスをどのように識別すべきかを学習するトレーニングフェーズ中に確定される)。
【0005】
[0005]リカレントニューラルネットワーク(RNN)、多層パーセプトロン(MLP:multilayer perceptron)ニューラルネットワーク、畳み込みニューラルネットワーク(CNN:convolutional neural networks)など、様々なタイプの人工ニューラルネットワークが存在する。RNNは、層の出力をセーブし(saving)、この出力を、層の結果を予測する際に助けるために入力にフィードバックするという原理で動作する。MLPニューラルネットワークでは、データは入力層に供給され得、1つまたは複数の隠れ層が、データに抽象化レベルを提供する。予測が、次いで、抽象化されたデータに基づいて出力層上で行われ得る。MLPは、入力にクラスまたはラベルが割り当てられる分類予測問題に特に好適であり得る。畳み込みニューラルネットワーク(CNN)は、フィードフォワード人工ニューラルネットワークのタイプである。畳み込みニューラルネットワークは、各々が受容野(receptive field)(たとえば、入力空間の空間的に局所化された領域)を有し、入力空間を集合的にタイリングする(collectively tile an input space)、人工ニューロンの集合を含み得る。畳み込みニューラルネットワークは多数の適用例を有する。特に、CNNは、パターン認識および分類の領域内で広く使用されている。
【0006】
[0006]層状ニューラルネットワークアーキテクチャでは、人工ニューロンの第1の層の出力は、人工ニューロンの第2の層への入力になり、人工ニューロンの第2の層の出力は、人工ニューロンの第3の層の入力になり、以下同様である。畳み込みニューラルネットワークは、特徴の階層を認識するようにトレーニングされ得る。畳み込みニューラルネットワークアーキテクチャにおける計算は、1つまたは複数の計算チェーンにおいて構成され得る処理ノードの集団にわたって分散され得る。これらの多層化アーキテクチャは、一度に1つの層をトレーニングされ得、バックプロパゲーション(back propagation)を使用して微調整され得る。
【発明の概要】
【0007】
[0007]本開示のいくつかの態様は、機械学習モデルが実行され得る装置を対象とする。本装置は、複数のワード線と、複数のビット線と、プログラマブル回路のアレイとを概して含む。アレイ中の各プログラマブル回路は、複数のワード線中の対応するワード線と、複数のビット線中の対応するビット線とに結合される。各プログラマブル回路は、対応するワード線と対応するビット線との間に結合された主抵抗器と、補助抵抗器(auxiliary resistor)と、補助抵抗器と直列に結合されたヒューズと(ここにおいて、補助抵抗器とヒューズとが、対応するワード線と対応するビット線との間に結合され)、ヒューズを選択的にとばす(blow)ように構成されたプログラミング回路とを備える。
【0008】
[0008]本開示のいくつかの態様は、複数のワード線と、複数のビット線と、プログラマブル回路のアレイとを有するデバイスをプログラムするための方法を対象とする。プログラマブル回路のアレイ中の各プログラマブル回路は、複数のワード線中の対応するワード線に、および複数のビット線中の対応するビット線に結合される。本方法は、(たとえば、プログラミング回路を使用して)ヒューズを選択的にとばすことよって、プログラマブル回路のアレイ中のプログラマブル回路をプログラムすることと(ここにおいて、ヒューズが、補助抵抗器と直列に結合され、補助抵抗器とヒューズとが、対応するワード線と対応するビット線との間に結合され、主抵抗器が、対応するワード線と対応するビット線との間に結合される)、プログラムされたプログラマブル回路を使用してデバイスを動作させることとを概して含む。
【0009】
[0009]本開示のいくつかの態様は、デバイスをプログラムするための装置を対象とする。本装置は、複数のワード線と、複数のビット線と、プログラマブル回路のアレイと、プログラムするための手段を使用してヒューズを選択的にとばすことによって、プログラマブル回路のアレイ中のプログラマブル回路をプログラムするための手段と、プログラムされたプログラマブル回路を使用してデバイスを動作させるための手段とを概して含む。ヒューズは、補助抵抗器と直列に結合され、補助抵抗器とヒューズとは、対応するワード線と対応するビット線との間に結合され、主抵抗器は、対応するワード線と対応するビット線との間に結合される。
【0010】
[0010]本開示のいくつかの態様は、少なくとも1つのプロセッサによって実行されたとき、プロセッサに、複数のワード線と、複数のビット線と、プログラマブル回路のアレイとを有するデバイスをプログラムするための動作を実施させる命令を備える非一時的コンピュータ可読媒体を対象とする。この動作は、(たとえば、プログラミング回路を使用して)ヒューズを選択的にとばすことよって、プログラマブル回路のアレイ中のプログラマブル回路をプログラムすることと(ここにおいて、ヒューズが、補助抵抗器と直列に結合され、補助抵抗器とヒューズとが、対応するワード線と対応するビット線との間に結合され、主抵抗器が、対応するワード線と対応するビット線との間に結合される)、プログラムされたプログラマブル回路を使用してデバイスを動作させることとを概して含む。
【0011】
[0011]本開示のいくつかの態様は、機械学習モデルを実装するようにデバイスをプログラムするための方法を対象とする。本方法は、プログラマブル回路上に実装されるべき、トレーニングされた機械学習モデルの重み値をデバイスにおいて受信することと、トレーニングされた機械学習モデルの重み値に基づいて、プログラマブル回路中の1つまたは複数の補助抵抗器を、主抵抗器と並列に結合されることから選択的に分離することによって、プログラマブル回路をプログラムすることと、プログラムされたプログラマブル回路を使用してデバイスを動作させることとを概して含む。
【0012】
[0012]本開示のいくつかの態様は、少なくとも1つのプロセッサによって実行されたとき、プロセッサに、機械学習モデルを実装するようにプロセッサとプログラマブル回路とを有するデバイスをプログラムするための動作を実施させる命令を備える非一時的コンピュータ可読媒体を対象とする。この動作は、プログラマブル回路上に実装されるべき、トレーニングされた機械学習モデルの重み値をデバイスにおいて受信することと、トレーニングされた機械学習モデルの重み値に基づいて、プログラマブル回路中の1つまたは複数の補助抵抗器を、主抵抗器と並列に結合されることから選択的に分離することによって、プログラマブル回路をプログラムすることと、プログラムされたプログラマブル回路を使用してデバイスを動作させることとを概して含む。
【0013】
[0013]本開示のいくつかの態様は、機械学習モデルを実装するようにデバイスをプログラムするための装置を対象とする。本装置は、プログラマブル回路のアレイと、プログラマブル回路のアレイ上に実装されるべき、トレーニングされた機械学習モデルの重み値をサーバから受信するための手段と、トレーニングされた機械学習モデルの重み値に基づいて、プログラマブル回路中の1つまたは複数の補助抵抗器を、主抵抗器と並列に結合されることから選択的に分離することによって、プログラマブル回路のアレイ中の少なくとも1つのプログラマブル回路をプログラムするための手段と、
プログラムされたプログラマブル回路を使用してデバイスを動作させるための手段と、プログラマブル回路上に実装されるべき、トレーニングされた機械学習モデルの重み値をサーバからデバイスにおいて受信するための手段と、トレーニングされた機械学習モデルの重み値に基づいて、プログラマブル回路中の1つまたは複数の補助抵抗器を、主抵抗器と並列に結合されることから選択的に分離することによってプログラマブル回路をプログラムするための手段と、プログラムされたプログラマブル回路を使用してデバイスを動作させるための手段と、を概して含む。
【0014】
[0014]本開示のいくつかの態様は、機械学習モデルを実装するようにデバイスをプログラムするための装置を対象とする。本装置は、プログラマブル回路のアレイと、プログラマブル回路のアレイに結合された少なくとも1つのプロセッサとを含む。少なくとも1つのプロセッサは、プログラマブル回路のアレイ上に実装されるべき、トレーニングされた機械学習モデルの重み値を受信することと、トレーニングされた機械学習モデルの重み値に基づいて、プログラマブル回路中の1つまたは複数の補助抵抗器を、主抵抗器と並列に結合されることから選択的に分離することによって、プログラマブル回路のアレイ中の少なくとも1つのプログラマブル回路をプログラムすることと、プログラムされたプログラマブル回路を使用して本装置を動作させることと、を行うように概して構成される。
【0015】
[0015]本開示の他の態様と、利点と、特徴とは、以下のセクション、すなわち、図面の簡単な説明と、発明を実施するための形態と、特許請求の範囲とを含む本出願全体の再検討の後、明らかになるであろう。
【図面の簡単な説明】
【0016】
図1】[0016]システムオンチップ(SOC)の例示的な実装形態を示す図。
図2】[0017]本開示の態様による、機械学習演算を実施するようにプログラムされ得るプログラマブル回路の例示的なアレイを示す図。
図3A】[0018]本開示の態様による、機械学習モデルの重みパラメータを実装するために使用される主抵抗器と補助抵抗器とを含む例示的なプログラマブル回路を示す図。
図3B】[0019]本開示の態様による、機械学習モデルの重みパラメータを実装するために使用される主抵抗器と複数の補助抵抗器とを含む例示的なプログラマブル回路を示す図。
図4】[0020]本開示の態様による、プログラマブル回路を有するデバイス上で機械学習演算を実施するための例示的な動作を示す図。
図5】[0021]本開示の態様による、プログラマブル回路の抵抗を調整するようにプログラマブル回路をプログラムするための例示的な動作を示す図。
図6】[0022]本開示の態様による、エッジデバイス中のプログラマブル回路が、トレーニングされた機械学習モデルを実装するようにプログラムされた、例示的なネットワーク化環境を示す図。
図7】[0023]本開示の態様による、人工知能(AI)機能をモジュール化するための例示的なソフトウェアアーキテクチャを示すブロック図。
【発明を実施するための形態】
【0017】
[0024]本開示のいくつかの態様は、プログラマブル回路を有するデバイス上で機械学習演算を実施するための方法と装置とを提供する。
【0018】
[0025]次に図を参照しながら、本開示のいくつかの例示的な態様について説明される。「例示的」という単語は、「例、事例、または例示の働きをする」ことを意味するために本明細書で使用される。「例示的」として本明細書で説明されるいかなる態様も、必ずしも他の態様よりも好適または有利であると解釈されるべきであるとは限らない。
【0019】
例示的な人工ニューラルネットワーク
[0026]図1は、本開示のいくつかの態様による、並列モンテカルロドロップアウト機能を実施するように構成された中央処理ユニット(CPU)102またはマルチコアCPUを含み得る、システムオンチップ(SOC)100の例示的な実装形態を示す。変数(たとえば、ニューラル信号およびシナプス重み)、計算デバイスに関連するシステムパラメータ(たとえば、重みをもつニューラルネットワーク)、遅延、周波数ビン情報、およびタスク情報が、ニューラル処理ユニット(NPU)108に関連するメモリブロックに記憶されるか、CPU102に関連するメモリブロックに記憶されるか、グラフィックス処理ユニット(GPU)104に関連するメモリブロックに記憶されるか、デジタル信号プロセッサ(DSP)106に関連するメモリブロックに記憶されるか、メモリブロック118に記憶され得るか、または複数のブロックにわたって分散され得る。CPU102において実行される命令が、CPU102に関連するプログラムメモリからロードされ得るか、またはメモリブロック118からロードされ得る。
【0020】
[0027]SOC100はまた、GPU104、DSP106など、特定の機能に適合された追加の処理ブロックと、第5世代(5G)接続性、第4世代ロングタームエボリューション(4G LTE(登録商標))接続性、Wi-Fi(登録商標)接続性、USB接続性、Bluetooth(登録商標)接続性などを含み得る接続性ブロック110と、たとえば、ジェスチャーを検出および認識し得るマルチメディアプロセッサ112とを含み得る。一実装形態では、NPUは、CPU102、DSP106、および/またはGPU104において実装される。SOC100はまた、センサープロセッサ114、画像信号プロセッサ(ISP)116、および/または全地球測位システムを含み得るナビゲーションモジュール120を含み得る。
【0021】
[0028]SOC100は、ARM命令セットに基づき得る。本開示の一態様では、CPU102にロードされる命令は、ルックアップテーブル(LUT)において、入力値とフィルタ重みとの乗算積に対応する記憶された乗算結果を探索するためのコードを備え得る。CPU102にロードされる命令はまた、乗算積のルックアップテーブルヒットが検出されたとき、乗算積の乗算演算中に乗算器を無効にする(disable)ためのコードを備え得る。加えて、CPU102にロードされる命令は、乗算積のルックアップテーブルミスが検出されたとき、入力値とフィルタ重みとの計算された乗算積を記憶するためのコードを備え得る。
【0022】
[0029]SOC100は、プログラマブル回路のアレイをさらに含み得る。以下でさらに詳細に論じられるように、プログラマブル回路のアレイ中の各回路は、複数の抵抗器を含むセルであり得る。各回路は、機械学習モデルにおいて重みパラメータを実装するために、1つまたは複数の補助抵抗器に対して主抵抗器を選択的に結合または分離するようにプログラムされ得る。プログラマブル回路のアレイは、必要に応じて、機械学習モデルのための新しい重みパラメータを反映するように更新され得るか、または異なる機械学習モデルを実装するように再プログラムされ得る。
【0023】
[0030]SOC100および/またはそれの構成要素は、自律自動車両(たとえば、自動運転車)またはモバイルコンピューティングデバイスなどのエッジデバイスにおいて様々な機械学習タスクまたは深層学習タスクを実施するように構成され得る。これらのエッジデバイスは、限られたコンピューティングリソースを有し得るが、(たとえば、リアルタイムでキャプチャされたビデオデータからオブジェクト認識タスクを実施すること、分析用のリモートシステムにデータを提供することに関与するレイテンシを最小限に抑えるために認識タスクを局所的に実施することなどにおいて)低減されたレイテンシおよびデータ通信コストが望まれる環境において動作し得る。さらに、これらのエッジデバイスは、どのくらいのデータがエッジデバイスの外部に露出され得るかについて制限を課し得るセキュリティ制約を有し得る。機械学習モデルまたは深層学習アーキテクチャを実装するためにプログラマブル回路のアレイを使用することによって、本開示の態様は、エッジデバイス上での機械学習機能の電力効率的な実行を可能にし得る。
【0024】
[0031]深層学習アーキテクチャは、各層において連続的により高い抽象化レベル(abstraction levels)で入力を表現するように学習し、それにより、入力データの有用な特徴表現を蓄積することによって、オブジェクト認識タスクを実施し得る。このようにして、深層学習は、旧来の機械学習の主要なボトルネックに対処する。深層学習の出現より前に、オブジェクト認識問題に対する機械学習手法は、場合によっては浅い分類器(shallow classifier)と組み合わせて、人的に設計された特徴に大きく依拠していることがある。浅い分類器は、たとえば、入力がどのクラスに属するかを予測するために、入力値(たとえば、入力ベクトル成分)の重み付き合計がしきい値と比較され得る2クラス線形分類器であり得る。人的に設計された特徴は、領域の専門知識をもつ技術者によって特定の問題領域に適合されたテンプレートまたはカーネルであり得る。対照的に、深層学習アーキテクチャは、人間の技術者が設計し得るものと同様である特徴を表現するように学習するが、トレーニングを通してそれを行い得る。さらに、深層ネットワークは、人間が考慮していないことがある新しいタイプの特徴を表現し、認識するように学習し得る。
【0025】
[0032]深層学習アーキテクチャは、特徴の階層を学習し得る。たとえば、視覚データが提示された場合、第1の層は、エッジなど、入力ストリーム中の比較的単純な特徴を認識するように学習し得る。別の例では、聴覚データが提示された場合、第1の層は、特定の周波数におけるスペクトル電力を認識するように学習し得る。第1の層の出力を入力として取る第2の層は、視覚データの場合の単純な形状、または聴覚データの場合の音の組合せなど、特徴の組合せを認識するように学習し得る。たとえば、上位層は、視覚データ中の複雑な形状、または聴覚データ中の単語を表現するように学習し得る。さらに上位の層は、共通の視覚オブジェクトまたは発話フレーズを認識するように学習し得る。
【0026】
[0033]深層学習アーキテクチャは、自然階層構造を有する問題に適用されたとき、特にうまく機能し得る。たとえば、原動機付き車両(motorized vehicles)の分類は、ホイール、フロントガラス、および他の特徴を認識するための第1の学習から恩恵を受け得る。これらの特徴は、車、トラック、および飛行機を認識するために、異なる方法で、上位層において組み合わされ得る。
【0027】
[0034]ニューラルネットワークは、様々な結合性パターンを用いて設計され得る。フィードフォワードネットワークでは、情報が下位層から上位層に受け渡され、所与の層における各ニューロンは、上位層におけるニューロンに通信する。上記で説明されたように、フィードフォワードネットワークの連続する層において、階層表現が蓄積され得る。ニューラルネットワークはまた、リカレントまたは(トップダウンとも呼ばれる)フィードバック結合を有し得る。リカレント結合では、所与の層におけるニューロンからの出力は、同じ層における別のニューロンに通信され得る。リカレントアーキテクチャは、ニューラルネットワークに順次配信される入力データチャンクのうちの2つ以上にわたるパターンを認識するのに役立ち得る。所与の層におけるニューロンから下位層におけるニューロンへの結合は、フィードバック(またはトップダウン)結合と呼ばれる。高レベルの概念の認識が、入力の特定の低レベルの特徴を弁別することを助け得るとき、多くのフィードバック結合をもつネットワークが役立ち得る。
【0028】
[0035]深層信念ネットワーク(DBN:deep belief network)は、隠れノードの複数の層を備える確率モデルである。DBNは、トレーニングデータセットの階層表現を抽出するために使用され得る。DBNは、制限ボルツマンマシン(RBM:Restricted Boltzmann Machines)の層を積層することによって得され得る。RBMは、入力のセットにわたる確率分布を学習することができる人工ニューラルネットワークのタイプである。RBMは、各入力がそれにカテゴリー分類されるべきクラスに関する情報の不在下で確率分布を学習することができるので、RBMは、教師なし(unsupervised)学習においてしばしば使用される。ハイブリッド教師なしおよび教師ありパラダイム(hybrid unsupervised and supervised paradigm)を使用して、DBNの下部RBMは、教師なし様式でトレーニングされ得、特徴抽出器として働き得、上部RBMは、(前の層からの入力とターゲットクラスとの同時分布上で)教師あり様式でトレーニングされ得、分類器として働き得る。
【0029】
[0036]深層畳み込みネットワーク(DCN:deep convolution network)は、追加のプーリング(pooling)層および正規化層で構成された、畳み込みネットワークのネットワークである。DCNは、多くのタスクに関して最先端の性能を達成している。DCNは、入力と出力ターゲットの両方が、多くの標本について知られており、勾配降下方法(gradient descent methods)の使用によってネットワークの重みを変更するために使用される、教師あり学習を使用してトレーニングされ得る。
【0030】
[0037]DCNは、フィードフォワードネットワークであり得る。加えて、上記で説明されたように、DCNの第1の層におけるニューロンから次の上位層におけるニューロンのグループへの結合は、第1の層におけるニューロンにわたって共有される。DCNのフィードフォワードおよび共有結合は、高速処理のために活用され得る。DCNの計算負担は、たとえば、リカレントまたはフィードバック結合を備える同様のサイズのニューラルネットワークのそれよりもはるかに少ないことがある。
【0031】
エッジデバイス上で機械学習演算を実施するための例示的なプログラマブル回路
[0038]深層学習演算は、典型的には、高性能な中央処理ユニット(CPU)、またはテンソルプロセッサユニット(TPU)もしくはプログラマブルグラフィックス処理ユニット(GPU)などの専用プロセッサ上で実施され得る。深層学習演算は、計算コストが高く、メモリ集約的であり得る。さらに、これらの演算の計算コストのために、これらの深層学習演算がその上で実行されるプロセッサは、かなりの量の電力(たとえば、200ワット超える電力)を消費し得る。しかしながら、深層学習演算がそれらの上で実行されるこれらのCPUまたは専用プロセッサの電力使用は、自動車両またはモバイルフォンなどの様々なエッジデバイス上で深層学習演算を実装する能力を限定することがある。
【0032】
[0039]低エネルギー機械学習適用例における使用のための不揮発性メモリ(NVM)およびメモリスタ(memristor)が提案されている。メモリスタは、概して、回路の抵抗を増加または減少させることによって、メモリデバイスに記憶された値を変更することができるメモリデバイスである。機械学習適用例では、行列-ベクトルおよび/または行列-行列の乗算演算を実装するためのメモリスタのアレイが提案されている。たとえば、メモリスタの高密度クロスバーアレイが使用され得、これにおいて、メモリスタは、電圧のセットの入力ベクトルが、同時にアレイ中のワード線の各々への入力になるように、アレイの各交差部においてワード線とビット線とを接続する。これらの例では、NVMは、機械学習モデルにおいて使用される信号または重みをスケーリングするためのシナプスとして使用され得る。学習は、機械学習モデルにおいて使用される重みに対する変更を通して実施され得る。NVM要素および/またはメモリスタのアレイは、インメモリコンピューティング(たとえば、メモリにおける様々な論理演算の実施)と、重み定常データフロー(たとえば、3つのメモリ読込み演算と1つのメモリ書込み演算とを伴う典型的なCPUまたはGPUにおける乗算および累算演算とは対照的に、データをメモリ内におよびメモリ外に移動することのない様々な演算の実施)とを可能にし、それにより、システム内でデータを移動させることによるエネルギー利用を低減し得る。NVMおよびメモリスタは電力効率的なコンピューティングを可能にし得るので、NVMおよびメモリスタは、リモートサーバ上に計算コストが高いモデルトレーニングおよび開発を任せながら(leaving)、エッジデバイス上で深層学習、または推論、アプリケーションを実行するのに好適であり得る。
【0033】
[0040]しかしながら、メモリスタは、エッジデバイスにおける展開に対するこれらのデバイスの適合性を低減する他のプロパティを有することがある。たとえば、抵抗性ランダムアクセスメモリ(RRAM(登録商標))、相変化メモリ(PCM)またはスピン転送トルク(STT)磁気ランダムアクセスメモリ(MRAM)などのメモリスタは、製造時間において生じるデバイス間ばらつきを有することがあり、プログラミング後にプログラム電流依存性を有することがある。PCMコンダクタンスチャージの標準偏差は、平均的な変化を超えることがある。RRAMは、プログラミングのために(たとえば、2.5ボルトを超える)大量の電力を必要とすることがあり、抵抗の大きいばらつきを有することがある。最後に、STT MRAMは、他の回路とのSTT MRAMの一体化を限定するサイズ制約を有することがある。たとえば、STT MRAMは、大型プログラミングトランジスタと周辺回路とを用いて28nmプロセスで製造されることがあるが、エッジデバイス中の他の集積回路(たとえば、CPU、GPU、SOCなど)は、より小さいリソグラフィプロセスで製造されることがある。
【0034】
[0041]さらに、他のチップ間ばらつきが、半導体製造において存在し得る。ばらつきは、半導体をパターニングするために使用されるフロントエンドオブライン(FEOL:front-end of-line)デバイス、および/またはバックエンドオブライン(BEOL:back-end of-line)金属プロセスばらつきから生成され得る。デバイス間ばらつきと製造ばらつきとのために、クラウドにおける機械学習適用例のためにメモリスタを有する限られた数のチップをトレーニングすることは可能であり得るが、モバイルデバイス上での機械学習適用例のためにメモリスタを有するチップの多数をトレーニングすることは可能でないことがある。たとえば、デバイスの欠陥は、メモリスタが高コンダクタンス(「スタックオン」)状態または低コンダクタンス(「スタックオフ」)状態でフリーズされることなど、1つまたは複数の機能しないメモリスタを生じることがある。各チップは、デバイスの欠陥により、異なる数の機能しないメモリスタを有することがあり、このことは、同じモデルを実装している異なるチップにわたって、所与の入力に対する出力の差異を引き起こし得る。最後に、NVMまたはメモリスタデバイスは、エッジデバイスのための他の集積回路(たとえば、CPU、GPU、SOCなど)を製造する際において使用されるボリューム製造プロセスとは異なる製造プロセスを使用することがあるので、エッジデバイスにおいて使用されるプロセッサへのNVMまたはメモリスタの一体化が限定され得る。
【0035】
[0042]エッジデバイス上でのエネルギー効率が高い機械学習演算を可能にするために、本開示の態様は、深層ニューラルネットワークなど、トレーニングされた機械学習モデルの重みパラメータを実装するために使用され得る抵抗器のアレイを含むプログラマブル回路を提供する。エッジデバイスからリモートにあるコンピュータシステムまたはコンピュータシステムのクラスタ(たとえば、専用サーバもしくはクラウドコンピューティングシステム)は、シナプス重みおよびバイアスを決定するように機械学習モデル(たとえば、深層ニューラルネットワーク)をトレーニングし得、決定されたシナプス重みおよびバイアスをエッジデバイスに提供し得、したがって、エッジデバイスは、トレーニングされた機械学習モデルを実装するようにプログラマブル回路をプログラムすることができる。いくつかの態様では、プログラマブル回路は、シナプス重みおよびバイアスが仕様を満たすように更新されるべきであるかどうかを決定するために、特定のタスクについてテストされ得る。さらに、エッジデバイスは、新しいタスクを実行するように、またはリモートコンピュータシステムもしくはコンピューティングシステムのクラスタによって導出された新しい学習を反映するように、展開されながら更新され得る。
【0036】
[0043]機械学習演算を実施するための抵抗器のアレイを含むプログラマブル回路を使用することによって、本開示の態様は、メモリスタベースのチップの電力効率と速度とに取り組むプログラマブル回路への機械学習モデルの実装を可能にし得る。これらのプログラマブル回路は、メモリスタの使用を回避し、代わりに、既存のプロセス技術で作製された構成要素を使用し得、それにより、これらのプログラマブル回路の大量生産が可能になり得る。さらに、従来の電気的構成要素を使用することによって、チップは、一貫したプロパティ(たとえば、アレイ中のプログラマブル抵抗器の数)で作製され得、異なるチップにわたってばらつきが最小限に抑えられ得、チップは、金属ワイヤ抵抗の差、トランジスタばらつき、および抵抗器ばらつきによる製造ばらつきを緩和するようにチューニングされ得る。さらに、回路中のシナプス重みおよびバイアスの更新を可能にするプログラマブル回路のチューニング性は、新しい学習能力が、フィールド中のエッジデバイスに展開されることを可能にし得る。
【0037】
[0044]図2は、本開示の態様による、機械学習演算を実施するようにプログラムされ得るプログラマブル回路のアレイ200を示す。図示のように、アレイ200は、図3A図3Bとに示されているプログラマブル回路300に対応し得る、複数のプログラマブル回路202を含み得る。アレイ200は、n個の入力線V、Vi+1、Vi+2、…、Vi+nのセットと、m個の出力線N、Nj+1、Nj+2、…、Nj+mのセットとを含み得、ここで、nとmとは正の整数である。入力線Vは、特徴ベクトルを表すアナログ入力がアレイ200に提供されるワード線であり得、出力線Nは、アレイ200中のプログラマブル回路202の抵抗値によって表される特徴ベクトル要素とシナプス重みとの積を表すビット線であり得る。アレイ200中の各プログラマブル回路202は、各プログラマブル回路が、主抵抗器と、並列に主抵抗器に電気的に結合された何らかの補助抵抗器(たとえば、対応するプログラマブルヒューズがとばされなかった補助抵抗器(auxiliary resistors for which a corresponding programmable fuse has not been blown))とを通して(たとえば、入力線Vからの)受信された電圧入力を処理することによって値を生成するように、入力線Vと出力線Nとの交差部に配置され得る。たとえば、図2に示されているように、プログラマブル回路202a、202b、および202cは、プログラマブル回路202a、202b、および202cが、処理のために入力線Vから入力を受信し、それぞれの出力線N、Nj+1、およびNj+2上に出力を生成するように、入力線Vと、それぞれ出力線N、Nj+1、およびNj+2との交差部に配置され得る。同様に、プログラマブル回路202d、202e、および202fは、入力線Vi+1からの入力を処理するために、入力線Vi+1と、それぞれ出力線N、Nj+1、およびNj+2との交差部に配置され得、プログラマブル回路202g、202h、および202iは、入力線Vi+2からの入力を処理するために、入力線Vi+2と、それぞれ出力線N、Nj+1、およびNj+2との交差部に配置され得、以下同様である。
【0038】
[0045]アレイ200中の各プログラマブル回路202は、プログラマブル回路202の主抵抗器を通過した入力値と、主抵抗器に選択的に結合された1つまたは複数の補助抵抗器を通過した入力値との合成として、出力(たとえば、電流出力)を生成し得る。複数のプログラマブル回路によって生成された出力は、アレイ200中の単一の出力線の出力として合成され得る(たとえば、電流合計)。たとえば、プログラマブル回路202a、202d、および202gによって生成された出力は、出力線N上で生成される出力に合成され得、プログラマブル回路202b、202e、および202hによって生成された出力は、出力線Nj+1上で生成される出力に合成され得、プログラマブル回路202c、202f、および202iによって生成された出力は、出力線Nj+2上で生成される出力に合成され得、以下同様である。概して、各プログラマブル回路202から出力線N上に生成される出力は、出力ライン上の各プログラマブル回路の全プログラマブル抵抗によって表される特徴ベクトル要素とシナプス重みとの積であり得る。本明細書で論じられるように、複数のプログラマブル回路202を通して出力を生成することにおいて、乗算および累算演算がアレイ200に組み込まれ得、これにより、機械学習演算中のエネルギー消費量が低減され得る。いくつかの態様では、所与の出力線N上でプログラマブル回路によって生成された合成電流は、次の段(たとえば、別のアナログ回路)への入力アナログ信号として提供され得る。他の態様では、合成ビット線電流は、出力スパイクを生成するためのキャパシタを充電するために使用され得る。この場合、キャパシタは、キャパシタが様々な好適な技法のいずれかによってトリガされたときにスパイクを発生するために、放電され得る(たとえば、キャパシタ電圧が所定の電圧に達したとき、回路はスパイクをトリガする)。さらに他の態様では、合成ビット線電流は、アナログデジタルコンバータ(ADC)によってデジタル信号にコンバートされ得る。
【0039】
[0046]いくつかの態様では、アレイ200は、アレイ200が仕様内で動作する(たとえば、所与の入力に対して機械学習プロセスの予想される結果を発生する)ことを検証するようにアレイ200中のプログラマブル回路202がプログラムされた後に、テストされてよい。アレイ200が、(たとえば、プログラマブル回路202中の1つまたは複数の要素の製造ばらつきまたは誤差により)予想される結果を発生しない場合、アレイ200は、仕様から外れており、アレイ200に不正確な結果を発生させているアレイ中の1つまたは複数のプログラマブル回路202を識別するために、さらにテストされてよい。識別された1つまたは複数のプログラマブル回路202中のプログラマブルヒューズは、プログラマブル回路202のシナプス重みを調整するために、あるいは識別された1つまたは複数のプログラマブル回路202をアレイ200から効果的に除去するために、とばされてよい。
【0040】
[0047]図3Aは、機械学習モデルの重み値を実装するために主抵抗器と補助抵抗器とをもつ抵抗器アレイを使用する例示的なプログラマブル回路300Aを示す。プログラマブル回路300Aは、図2に示されているどんなプログラマブル回路202にも対応し得る。プログラマブル回路300Aは、上記で論じられたように、CPUまたはSOCなどの他の集積回路におけるプログラマブル回路300A(またはそれのアレイ)の実装を容易にし得る、金属抵抗器、プログラマブルヒューズ、およびトランジスタなどの標準の電気的構成要素を使用し得る。図示のように、プログラマブル回路300Aは、主抵抗器302と、補助抵抗器回路303Aとを含む。図示のように、補助抵抗器回路303Aは、補助抵抗器304と、プログラマブルヒューズ306(たとえば、eFuse)と、ヒューズプログラミングスイッチ308と、プログラミングイネーブルスイッチ310とを含み得る。以下でさらに詳細に論じられるように、補助抵抗器回路303Aは、主抵抗器302と補助抵抗器304との抵抗の合成として機械学習モデルにおいて様々な重み値を実装するように選択的にプログラムされ得る。
【0041】
[0048]主抵抗器302と、補助抵抗器回路303Aの一部として含まれる補助抵抗器304とは、機械学習モデルにおける重み値を実装するために主抵抗器302と補助抵抗器304との合成抵抗を使用するために、並列に確定され得る。主抵抗器302は、いくつかの態様では、高抵抗の抵抗器を備え得、補助抵抗器304は、高抵抗または低抵抗の抵抗器を備え得る。いくつかの態様では、主抵抗器302と補助抵抗器304は、ほぼ等しい抵抗を有する抵抗器を備え得る。主抵抗器302と補助抵抗器304の両方のためにほぼ等しい抵抗をもつ抵抗器を使用すると、1つまたは複数の桁数だけ異なる抵抗をもつ抵抗器と比較して、各プログラマブル回路300A中にプログラムされる重みに増加された調整範囲が提供される。主抵抗器302および/または補助抵抗器304は、高精度金属抵抗器として実装されてよい。
【0042】
[0049]プログラマブル回路300Aは、概して、主抵抗器302を通過し、および潜在的に補助抵抗器304を通過した電流の和として、電流出力を生成する。入力の値を実質的に修正しない重み値については、プログラマブル回路300Aは、この場合のプログラマブル回路300Aの全抵抗が主抵抗器302の抵抗に等しいことにより、プログラマブル回路300Aの電流出力が不変であるかまたは最小に変化するように、主抵抗器302から補助抵抗器304を分離するようにプログラムされ得る。入力の値を修正する重み値については、プログラマブル回路300Aは、主抵抗器302と補助抵抗器304とが、出力値を生成するために並列に電気的に結合されるようにプログラムされ得る。並列に主抵抗器302と補助抵抗器304とを結合することによって、出力電流Nは、式
【0043】
【数1】
【0044】
に従って計算され得、ここで、全抵抗は、主抵抗器302と補助抵抗器304との抵抗の並列合成であり、これは、並列合成中のどの個々の抵抗器よりも小さい値を有し、したがって、より比較的大きい出力電流Nにつながる。
【0045】
[0050]プログラマブル回路300Aをプログラムするために、プログラミングイネーブルスイッチ310は、プログラミング状態にスイッチされ(たとえば、閉じたスイッチでアクティブ化され)得、ヒューズプログラミングスイッチ308は、補助抵抗器回路303A内のプログラマブルヒューズ306に電圧を印加するように設定され得る。プログラミングイネーブルスイッチ310は、たとえば、補助抵抗器回路303Aのプログラミングを選択的に可能にするために制御信号ENprogをプログラミングイネーブルスイッチ310に入力することによって、プログラミング状態にスイッチされ得る。ヒューズプログラミングスイッチ308は、第1のノード312と第2のノード314との間に結合され得る。プログラマブルヒューズ306をプログラムするために(たとえば、選択的にヒューズ306をとばし(blow)、プログラマブル回路300Aから補助抵抗器304を分離する)、制御信号P1は、電圧Pforceがプログラマブルヒューズ306に印加されることを可能にするために、ヒューズプログラミングスイッチ308に入力され得る。電圧Pforceは、第1のノード312を通してヒューズプログラミングスイッチ308に入力され、第2のノード314を通してプログラマブルヒューズ306に選択的に印加され得る。概して、プログラミングイネーブルスイッチ310をプログラミング状態にし、P1制御信号をオンにすると、プログラミング電流が、ヒューズプログラミングスイッチ308と、プログラマブルヒューズ306と、プログラミングイネーブルスイッチ310とを通過して、プログラマブル回路300Aの基準電位ノード(たとえば、電気接地)に流出することを可能にする。電圧Pforceは、ヒューズプログラミングスイッチ308を通してプログラマブルヒューズ306に印加されたとき、プログラマブルヒューズ306をとばし、主抵抗器302から補助抵抗器304を電気的に分離するのに十分であり得る。電圧Pforceは、たとえば、電源電圧であり得る。いくつかの態様では、電圧はまた、ヒューズをリバースブロー(reverse blow)し、主抵抗器302に補助抵抗器304を再結合するために、ヒューズプログラミングスイッチ308を通してプログラマブルヒューズ306に印加され得る。
【0046】
[0051]図3Bは、補助抵抗器回路303Bに複数の補助抵抗器を含む、例示的なプログラマブル回路300Bを示す。プログラマブル回路300Bは、図2に示されているどんなプログラマブル回路202にも対応し得る。図示のように、プログラミングイネーブルスイッチ310と、ヒューズプログラミングスイッチ308Aおよび308Bとは、主抵抗器302からそれぞれ補助抵抗器304Aおよび304Bを電気的に結合または分離することによってプログラマブル回路300Bをプログラムするように動作可能であり得る。ただ2つの補助抵抗器304および304Bが図3Bに示されているが、読者は、いくつかの態様が、並列に選択的に結合された3つ以上の補助抵抗器を含み得ることを理解されたい。しかしながら、概念を説明および図示しやすくするために、以下の説明では2つの補助抵抗器を利用する。
【0047】
[0052]プログラミングイネーブルスイッチ310が、(たとえば、プログラミングイネーブルスイッチ310へのENprog制御信号の印加を介して)プログラミング状態にスイッチされたとき、ヒューズプログラミングスイッチ308Aは、第2のノード314Aを通してヒューズ306Aに対してノード312Aにおける電圧Pforce_1を印加するように(たとえば、ヒューズプログラミングスイッチ308AへのP1信号の印加を介して)設定され得る。別個に、ヒューズプログラミングスイッチ308Bは、第2のノード314Bを通してヒューズ306Bに対してノード312Bにおける電圧Pforce_2を印加するように(たとえば、ヒューズプログラミングスイッチ308BへのP2信号の印加を介して)設定され得る。論じられるように、電圧Pforce_1およびPforce_2は、それぞれヒューズ306Aおよび306Bをとばすために使用され得、これにより、主抵抗器302から補助抵抗器回路303B中の補助抵抗器304が電気的に分離され得るか、あるいはヒューズ306Aおよび306Bをリバースブローするために使用され得、これにより、主抵抗器302と並列に補助抵抗器回路303B中の補助抵抗器304Aおよび304Bが電気的に結合される。図3Bは、ヒューズ306Aおよび306Bが、プログラミングイネーブルスイッチ310とそれぞれのヒューズプログラミングスイッチ308Aおよび/または308Bとをオンにすることによって個々に選択的にとばされ得ることを示しているが、プログラマブルヒューズ306は、(たとえば、プログラマブル回路300Bによって実装されるべき重み値に基づいて、主抵抗器302から補助抵抗器回路303B中の補助抵抗器304のすべてを分離するために)単一のヒューズプログラミングスイッチ308を使用して集合的にとばされ得ることを認識されたい。
【0048】
[0053]いくつかの態様では、主抵抗器302に電気的に結合された補助抵抗器304の数は、重み値のために使用されるビットの数に対応し得る。たとえば、2ビット重み値は、主抵抗器302と単一の補助抵抗器304とを使用するプログラマブル回路300Aにおいて実装され得、3ビット重み値は、主抵抗器302と2つの補助抵抗器304Aおよび304Bとを使用するプログラマブル回路300Bにおいて実装され得、以下同様である。
【0049】
[0054]機械学習演算を実施するようにプログラマブル回路300を動作させるために、ヒューズプログラミングスイッチ308とプログラミングイネーブルスイッチ310とは、オフにされ(たとえば、開いたスイッチで非アクティブ化され)得る。ヒューズプログラミングスイッチ308とプログラミングイネーブルスイッチ310とをオフにすると、プログラマブル回路300が、機械学習演算がそれに対して実施されるべきである特徴ベクトルまたは他の入力を表す電気的入力を受信し、主抵抗器302と何らかの結合された補助抵抗器304とを通して電気的入力を受け渡し、主抵抗器302と、主抵抗器302に並列に結合された何らかの補助抵抗器304との出力の合成として出力値を生成することが可能になる。
【0050】
[0055]図4は、本開示の態様による、機械学習演算を実施するためにプログラマブル回路を有するデバイスによって実施され得る例示的な動作400を示す。図示のように、動作400は、ブロック402において開始し、ここで、デバイスが、プログラマブル回路上に実装されるべき、トレーニングされた機械学習モデルの重み値をサーバから受信する。論じられるように、エッジデバイスを機械学習モデルのトレーニングに巻き込むことなく、機械学習モデルがエッジデバイス上で展開され得るように、重み値は、サーバ上でトレーニングデータセットを処理することによってサーバによって生成され得る。
【0051】
[0056]ブロック404において、デバイスが、トレーニングされた機械学習モデルの重み値に基づいて、1つまたは複数の補助抵抗器を、主抵抗器と並列に結合されることから選択的に分離することによって、プログラマブル回路をプログラムする。1つまたは複数の補助抵抗器を選択的に分離するために、デバイスは、プログラマブル回路中のプログラミングイネーブルスイッチをアクティブ化して、回路を書込みモードにスイッチし、プログラマブル回路中のヒューズプログラミングスイッチをアクティブ化して、プログラマブルヒューズをとばすのに十分である電圧がプログラマブルヒューズに印加されることを可能にし、プログラマブルヒューズがそれに結合された補助抵抗器が、プログラマブル回路中の主抵抗器から電気的に分離された状態になることを引き起こすことができる。プログラマブル回路がプログラムされたとき、デバイスは、プログラミングイネーブルスイッチとヒューズプログラミングスイッチとを開き(オフにし)、他の入力が処理のためにプログラマブル回路に流入することを可能にすることによって、プログラミングモードを出ることができる。
【0052】
[0057]ブロック406において、システムが、プログラムされたプログラマブル回路を使用してデバイスを動作させる。プログラムされたプログラマブル回路を使用してデバイスを動作させるために、システムは、機械学習演算をそれに対して実施すべきデータを受信し得る。データは、たとえば、キャプチャされた画像、オーディオ、テキストデータなどに対応するビットストリームであり得る。システムは、ビットストリームをアナログ信号にコンバートし、アナログ信号を、プログラムされたプログラマブル回路に入力し、プログラムされたプログラマブル回路から、入力信号に対して機械学習演算を実施した結果を表す出力信号を受信し得る。
【0053】
[0058]いくつかの態様によれば、プログラマブル回路中の1つまたは複数の補助抵抗器を選択的に分離することは、プログラマブル回路中の主抵抗器から、プログラマブル回路中の1つまたは複数の補助抵抗器を電気的に分離するために、1つまたは複数のプログラマブルヒューズを選択的にとばすことを含む。プログラマブルヒューズの各々は、(たとえば、補助抵抗器回路303A中の)1つまたは複数の補助抵抗器のうちの補助抵抗器と直列に結合され得る。いくつかの態様によれば、1つまたは複数のプログラマブルヒューズを選択的にとばすことは、1つまたは複数のスイッチを選択的に閉じること(アクティブ化またはオンにすること)を含み得、各スイッチは、電圧源に結合された第1のノードと、補助抵抗器およびプログラマブルヒューズに結合された第2のノードとの間に結合される。
【0054】
[0059]いくつかの態様によれば、システムは、さらに、トレーニングされた機械学習モデルのための更新された重み値に基づいてプログラマブル回路を再プログラムし得る。
【0055】
[0060]いくつかの態様によれば、システムは、さらに、異なる機械学習モデルを実装するために、プログラマブル回路を再プログラムし得る。
【0056】
[0061]いくつかの態様によれば、プログラマブル回路を使用してデバイスを動作させることは、アナログ入力として表される特徴ベクトルを備える入力を受信することを備える。出力は、特徴ベクトルの要素と、主抵抗器および主抵抗器に結合された1つまたは複数の補助抵抗器の抵抗との積に基づいて生成され得る。
【0057】
[0062]いくつかの態様によれば、回路中の1つまたは複数の補助抵抗器の数は、重み値に関連する精度のビットの数に対応する。
【0058】
[0063]いくつかの態様によれば、プログラムされたプログラマブル回路を使用してデバイスを動作させることは、乗算および累算演算においてプログラマブル回路の出力を、1つまたは複数の他のプログラマブル回路の出力とともに使用することを備える。
【0059】
[0064]いくつかの態様によれば、トレーニングされた機械学習モデルは、特定のタスクを実施するようにトレーニングされた深層ニューラルネットワークに基づく。
【0060】
[0065]いくつかの態様によれば、デバイスは、モバイルコンピューティングデバイスを備え得る。いくつかの態様によれば、デバイスは、自律自動車両を備え得る。
【0061】
[0066]図5は、本開示の態様による、デバイスをプログラムするために実施され得る例示的な動作500を示す。論じられるように、デバイスは、複数のワード線と、複数のビット線と、プログラマブル回路のアレイとを有し得る。プログラマブル回路のアレイ中の各プログラマブル回路は、複数のワード線中の対応するワード線に、および複数のビット線中の対応するビット線に結合され得る。プログラマブル回路をプログラムすることは、主抵抗器に対して直列に補助抵抗器を選択的に結合または分離することによって、プログラマブル回路の全抵抗を修正し得る。
【0062】
[0067]図示のように、動作500は、ブロック502において開始し、ここで、デバイスが、プログラミング回路を使用してヒューズを選択的にとばすことによって、プログラマブル回路のアレイ中のプログラマブル回路をプログラムする。ヒューズは、補助抵抗器と直列に結合され得、補助抵抗器とヒューズとは、対応するワード線と対応するビット線との間に結合され得る。主抵抗器も、対応するワード線と対応するビット線との間に結合され得る。プログラマブル回路をプログラムするために、デバイスは、プログラミング回路を使用してヒューズを選択的にとばす。補助抵抗器に結合されたヒューズを選択的にとばすことによって、デバイスは、プログラマブル回路中の主抵抗器から補助抵抗器を分離する。分離されると、補助抵抗器は、もはやワード線とビット線との間に結合されておらず、これにより、プログラマブル回路の全抵抗が、主抵抗器と、主抵抗器に(もしあれば)依然として直列に結合された補助抵抗器との抵抗の合成になるように調整され得る。
【0063】
[0068]ブロック504において、システムが、プログラムされたプログラマブル回路を使用してデバイスを動作させる。プログラムされたプログラマブル回路を使用してデバイスを動作させるために、システムは、機械学習演算をそれに対して実施すべきデータを受信し得る。データは、たとえば、キャプチャされた画像、オーディオ、テキストデータなどに対応するビットストリームであり得る。システムは、ビットストリームをアナログ信号にコンバートし、アナログ信号を、プログラムされたプログラマブル回路に入力し、プログラムされたプログラマブル回路から、入力信号に対して機械学習演算を実施した結果を表す出力信号を受信し得る。
【0064】
[0069]図6は、プログラマブル回路のアレイを有するエッジデバイスが、サーバによって機械学習モデルを実装するようにプログラムされ得る、例示的なネットワーク化環境を示す。図示のように、ネットワーク化環境600は、エッジデバイス620と、トレーニングサーバ630と、トレーニングデータリポジトリ640とを含み、少なくともエッジデバイス620とトレーニングサーバ630とは、ネットワーク610を介して接続されている。
【0065】
[0070]エッジデバイス620は、画像または一連のキャプチャされた画像からのオブジェクト認識などの機械学習演算がその上で実施されるべきであるデバイスを表し得る。エッジデバイス620は、たとえば、モバイルフォン、タブレットコンピュータ、ラップトップもしくはデスクトップコンピュータ、自律自動車両、または機械学習演算がその上で実行され得る他のデバイスを含み得る。エッジデバイス620は、コンピューティングリソースまたは電力が制約され得るので、これらのデバイス上で機械学習モデルをトレーニングすることは実際的でないことがあるが、トレーニングされた機械学習モデルは、これらのデバイス上で実行され得る。
【0066】
[0071]図示のように、エッジデバイス620は、トランシーバ622と、プロセッサ624と、プログラマブル回路626とを含む。トランシーバ622は、概して、エッジデバイス620上で機械学習演算を実行するために、プログラマブル回路626中に実装されるべきモデル重みパラメータを含む情報を、トレーニングサーバ630から受信する。トランシーバ622は、パラメータをプロセッサ624に受け渡し、プロセッサ624は、プログラミング信号を生成し、プログラミング信号を(たとえば、図3Aのプログラマブル回路300Aに示されているように実装された)プログラマブル回路626に入力し得る。上記で論じられたように、プログラミング信号は、プログラマブル回路626をプログラミングモードにスイッチし、プログラマブル回路626中の1次抵抗器から1つまたは複数の補助抵抗器を選択的に分離するために、ヒューズプログラミングスイッチとプログラミングイネーブルスイッチとに印加される電圧を備え得る。プログラマブル回路がプログラムされた後、プロセッサ624は、プログラマブル回路626を動作モードにスイッチし、機械学習演算をそれに対して実施すべきデータを取得し、取得されたデータを、処理のために、プログラムされたプログラマブル回路626に受け渡し得る。
【0067】
[0072]トレーニングサーバ630は、機械学習モデルがエッジデバイス620上の展開のためにそれらの上でトレーニングされ得る、サーバ、サーバのクラスタ、クラウドコンピューティングインスタンス、または他のコンピューティングデバイスを概して表す。図示のように、トレーニングサーバ630は、モデルトレーナー632と、トランシーバ634とを含む。モデルトレーナー632は、トレーニングデータリポジトリ640から取り出されたデータのセットに基づいて、教師なし、半教師あり、または完全教師あり機械学習技法を使用して機械学習モデルをトレーニングするように構成され得る。教師なし学習技法は、トレーニングデータリポジトリ640からの、生の注釈なしのトレーニングデータセットに対して実行され得る。半教師あり学習技法は、機械学習モデルを検証するために使用され得るデータのラベル付きセットとデータのラベルなしセットとを含む、トレーニングデータリポジトリ640からのトレーニングデータセットに対して実行され得る。教師あり学習技法は、トレーニングデータリポジトリ640からのトレーニングデータのラベル付きセットに対して実行され得る。
【0068】
[0073]モデルトレーナー632が機械学習モデルをトレーニングした(たとえば、機械学習モデルに入力されるデータに適用されるべき重みを決定した)後、トレーニングサーバ630は、機械学習モデルに関する情報を、トランシーバ634を通して1つまたは複数のエッジデバイス620に出力し、出力情報に従ってプログラマブル回路626をプログラムするようにエッジデバイス620に命令することができる。たとえば、エッジデバイス620上に展開された機械学習モデルを更新するために、および/またはエッジデバイス620上に新しい機械学習モデルを実装するために、追加の情報が、時間とともにトランシーバ634を通して出力されてよい。
【0069】
[0074]図7は、人工知能(AI)機能をモジュール化し得る例示的なソフトウェアアーキテクチャ700を示すブロック図である。アーキテクチャ700を使用して、本開示の態様による、SOC720の様々な処理ブロック(たとえばCPU722、DSP724、GPU726、および/またはNPU728)に、深層生成モデルを使用したビデオ圧縮および/または復元をサポートさせ得るアプリケーションが設計され得る。
【0070】
[0075]AIアプリケーション702は、たとえば、深層生成モデルを使用してビデオ信号(またはそれの符号化バージョン)を圧縮および/または復元し得る、ユーザ空間704において定義された機能を呼び出すように構成され得る。AIアプリケーション702は、たとえば、認識されたシーンがオフィス、講堂、レストラン、または湖などの屋外環境であるかどうかに応じて別様に、マイクロフォンおよびカメラを構成し得る。AIアプリケーション702は、AI機能アプリケーションプログラミングインターフェース(API)706において定義されたライブラリに関連するプログラムコードをコンパイルするための要求を行い得る。この要求は、たとえば、ビデオおよび測位データに基づいて推論応答を提供するように構成された深層ニューラルネットワークの出力に最終的に依拠し得る。
【0071】
[0076]さらに、ランタイムフレームワークのコンパイルされたコードであり得るランタイムエンジン708が、AIアプリケーション702にとってアクセス可能であり得る。AIアプリケーション702は、たとえば、ランタイムエンジンに、特定の時間間隔における、またはアプリケーションのユーザインターフェースによって検出されたイベントによってトリガされた、推論を要求させ得る。推論応答を提供させられたとき、ランタイムエンジンは、今度は、SOC720上で実行されている、Linux(登録商標)カーネル712など、オペレーティングシステム(OS)空間710中のオペレーティングシステムに信号を送り得る。オペレーティングシステムは、今度は、深層生成モデルを使用したビデオ圧縮および/または復元を、CPU722、DSP724、GPU726、NPU728、またはそれらの何らかの組合せ上で実施させ得る。CPU722は、オペレーティングシステムによって直接アクセスされ得、他の処理ブロックは、それぞれ、DSP724、GPU726、またはNPU728の、ドライバ714、716、または718などのドライバを通してアクセスされ得る。例示的な例では、深層ニューラルネットワークは、CPU722、DSP724、およびGPU726などの処理ブロックの組合せ上で実行されるように構成され得るか、またはNPU728上で実行され得る。
【0072】
[0077]受信するための手段は、たとえば、トランシーバ(たとえば、図1に示されている接続性ブロック110および/または図5に示されているトランシーバ522)を備え得る。プログラムするための手段と、再プログラムするための手段とは、図1に示されているCPU102、GPU104、DSP106、もしくはNPU108および/または図6に示されているプロセッサ624などのプロセッサ、ならびに/あるいは図3A図3Bとにおけるスイッチ308、308A、308B、および/または310などのスイッチを備え得る。動作させるための手段は、図1に示されているCPU102、GPU104、DSP106、もしくはNPU108、および/または図6に示されているプロセッサ624などのプロセッサを備え得る。生成するための手段は、図3Aもしくは図3Bに示されているプログラマブル回路300Aもしくは300B、および/または図2に示されているプログラマブル回路のアレイ200を備え得る。
【0073】
[0078]本明細書で説明される態様に関して説明された様々な例示的な回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他のプログラマブル論理デバイスなどの集積回路(IC)において、またはそれを用いて実装され得る。プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであり得る。プロセッサは、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアに関連する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成としても実装され得る。
【0074】
[0079]また、本明細書の例示的な態様のいずれかにおいて説明された動作ステップは、例を提供するために説明されたことに留意されたい。説明された動作は、図示されたシーケンス以外の多数の異なるシーケンスで実施され得る。さらに、単一の動作ステップで説明された動作は、実際には、いくつかの異なるステップで実施され得る。さらに、例示的な態様において説明された1つまたは複数の動作ステップは、組み合わされ得る。フロー図に示された動作ステップは、当業者には容易に明らかになるように、多数の異なる修正を受け得ることを理解されたい。情報および信号は、多種多様な技術および技法のいずれかを使用して表され得ることも、当業者は理解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表され得る。
【0075】
[0080]本明細書で使用される、項目のリスト「のうちの少なくとも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の任意の他の順序)を包含するものとする。
【0076】
[0081]本開示は、いかなる当業者も本開示の態様を作成または使用することを可能にするために提供される。本開示への様々な修正は当業者には容易に明らかになり、本明細書で定義された一般原理は、本開示の趣旨または範囲から逸脱することなく他の変形形態に適用され得る。したがって、本開示は、本明細書で説明された例と設計とに限定されるものではなく、本明細書で開示された原理と新規の特徴とに合致する最も広い範囲を与えられるべきである。
図1
図2
図3A
図3B
図4
図5
図6
図7
【国際調査報告】