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

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

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

<>
  • 特表-構成可能非線形活性化関数回路 図1
  • 特表-構成可能非線形活性化関数回路 図2
  • 特表-構成可能非線形活性化関数回路 図3
  • 特表-構成可能非線形活性化関数回路 図4
  • 特表-構成可能非線形活性化関数回路 図5
  • 特表-構成可能非線形活性化関数回路 図6
  • 特表-構成可能非線形活性化関数回路 図7
  • 特表-構成可能非線形活性化関数回路 図8
  • 特表-構成可能非線形活性化関数回路 図9
  • 特表-構成可能非線形活性化関数回路 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-12
(54)【発明の名称】構成可能非線形活性化関数回路
(51)【国際特許分類】
   G06F 17/17 20060101AFI20240905BHJP
   G06N 3/063 20230101ALI20240905BHJP
【FI】
G06F17/17
G06N3/063
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024513101
(86)(22)【出願日】2022-08-22
(85)【翻訳文提出日】2024-02-26
(86)【国際出願番号】 US2022075270
(87)【国際公開番号】W WO2023034698
(87)【国際公開日】2023-03-09
(31)【優先権主張番号】17/467,079
(32)【優先日】2021-09-03
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/807,125
(32)【優先日】2022-06-15
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】595020643
【氏名又は名称】クゥアルコム・インコーポレイテッド
【氏名又は名称原語表記】QUALCOMM INCORPORATED
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】モハン、スレン
(72)【発明者】
【氏名】リー、レン
(72)【発明者】
【氏名】クルカルニ、プラジャクト
(72)【発明者】
【氏名】ランブ、アーロン・ダグラス
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056AA05
5B056BB42
(57)【要約】
本開示のいくつかの態様は、構成可能非線形活性化関数回路を備える、プロセッサであって、構成可能非線形活性化関数回路が、選択された非線形活性化関数に基づいて、非線形活性化関数のためのパラメータのセットを決定することと、非線形活性化関数のためのパラメータのセットの適用に基づいて出力データを生成することとを行うように構成され、ここにおいて、構成可能非線形活性化関数回路が、少なくとも2つの連続線形近似器を備える少なくとも1つの非線形近似器を備え、少なくとも2つの連続線形近似器の各線形近似器が、パラメータのセットのうちの1つまたは複数の関数パラメータを使用して線形関数を近似するように構成された、プロセッサを提供する。
【特許請求の範囲】
【請求項1】
構成可能非線形活性化関数回路
を備える、プロセッサであって、前記構成可能非線形活性化関数回路が、
選択された非線形活性化関数に基づいて、前記選択された非線形活性化関数のためのパラメータのセットを決定することと、
前記選択された非線形活性化関数のためのパラメータの前記セットの適用に基づいて出力データを生成することと
を行うように構成され、
ここにおいて、
前記構成可能非線形活性化関数回路が、少なくとも2つの連続線形近似器を備える少なくとも1つの非線形近似器を備え、
前記少なくとも2つの連続線形近似器の各線形近似器が、パラメータの前記セットのうちの1つまたは複数の関数パラメータを使用して線形関数を近似するように構成された、
プロセッサ。
【請求項2】
前記少なくとも2つの連続線形近似器の各線形近似器が、
段階入力と、
係数入力と、
定数入力と、
段階出力と
を備える、請求項1に記載のプロセッサ。
【請求項3】
少なくとも1つの非線形近似器が、3つの連続線形近似器を備える3次近似器を備える、請求項1に記載のプロセッサ。
【請求項4】
前記少なくとも1つの非線形近似器が、2つの連続線形近似器を備える2次近似器を備える、請求項1に記載のプロセッサ。
【請求項5】
前記少なくとも1つの非線形近似器が、入力値領域を決定するように構成された領域ファインダー構成要素をさらに備え、
前記少なくとも2つの連続線形近似器の各線形近似器が、前記入力値領域に基づいて前記係数入力および前記定数入力を決定するようにさらに構成された、
請求項2に記載のプロセッサ。
【請求項6】
前記少なくとも1つの非線形近似器が、前記少なくとも2つの連続線形近似器のうちの少なくとも1つの線形近似器からの段階出力を修正するように構成された符号およびオフセット補正器構成要素をさらに備える、請求項1に記載のプロセッサ。
【請求項7】
前記符号およびオフセット補正器構成要素が、前記少なくとも2つの連続線形近似器のうちの前記少なくとも1つの線形近似器からの前記段階出力を修正するために、前記段階出力の符号を反転させるようにさらに構成された、請求項6に記載のプロセッサ。
【請求項8】
前記符号およびオフセット補正器構成要素が、前記少なくとも2つの連続線形近似器のうちの前記少なくとも1つの線形近似器からの前記段階出力を修正するために、前記段階出力にオフセットを加算するようにさらに構成された、請求項6に記載のプロセッサ。
【請求項9】
前記少なくとも2つの連続線形近似器の各線形近似器は、前記少なくとも2つの連続線形近似器の各線形近似器がパラメータの前記セットのうちの1つまたは複数の関数パラメータを使用して線形関数を近似するために、関数近似の1つまたは複数の不均一セグメントを選択することに少なくとも部分的に基づいて、前記1つまたは複数の関数パラメータを選択するようにさらに構成された、請求項1に記載のプロセッサ。
【請求項10】
構成可能非線形活性化関数回路を用いてデータを処理するための方法であって、
選択された非線形活性化関数に基づいて、前記選択された非線形活性化関数のためのパラメータのセットを決定することと、
前記選択された非線形活性化関数のためのパラメータの前記セットの適用に基づいて出力データを生成することとを備え、
ここにおいて、
前記構成可能非線形活性化関数回路が、少なくとも2つの連続線形近似器を備える少なくとも1つの非線形近似器を備え、
前記少なくとも2つの連続線形近似器の各線形近似器が、パラメータの前記セットのうちの1つまたは複数の関数パラメータを使用して線形関数を近似するように構成された、
方法。
【請求項11】
前記少なくとも2つの連続線形近似器の各線形近似器が、
段階入力と、
係数入力と、
定数入力と、
段階出力と
を備える、請求項10に記載の方法。
【請求項12】
少なくとも1つの非線形近似器が、3つの連続線形近似器を備える3次近似器を備える、請求項10に記載の方法。
【請求項13】
前記少なくとも1つの非線形近似器が、2つの連続線形近似器を備える2次近似器を備える、請求項10に記載の方法。
【請求項14】
前記少なくとも1つの非線形近似器が、入力値領域を決定するように構成された領域ファインダー構成要素をさらに備え、
前記少なくとも2つの連続線形近似器の各線形近似器が、前記入力値領域に基づいて前記係数入力および前記定数入力を決定するようにさらに構成された、
請求項11に記載の方法。
【請求項15】
符号およびオフセット補正器構成要素を使用して前記少なくとも2つの連続線形近似器のうちの少なくとも1つの線形近似器からの段階出力を修正することをさらに備える、請求項10に記載の方法。
【請求項16】
前記少なくとも2つの連続線形近似器のうちの前記少なくとも1つの線形近似器からの前記段階出力を修正するために、前記符号およびオフセット補正器構成要素を使用して前記段階出力の符号を反転させることをさらに備える、請求項15に記載の方法。
【請求項17】
前記少なくとも2つの連続線形近似器のうちの前記少なくとも1つの線形近似器からの前記段階出力を修正するために、前記符号およびオフセット補正器構成要素を使用して前記段階出力にオフセットを加算することをさらに備える、請求項15に記載の方法。
【請求項18】
前記少なくとも2つの連続線形近似器の各線形近似器は、前記少なくとも2つの連続線形近似器の各線形近似器がパラメータの前記セットのうちの1つまたは複数の関数パラメータを使用して線形関数を近似するために、関数近似の1つまたは複数の不均一セグメントを選択することに少なくとも部分的に基づいて、前記1つまたは複数の関数パラメータを選択するようにさらに構成された、請求項10に記載の方法。
【請求項19】
コンピュータ実行可能命令を備える非一時的コンピュータ可読媒体であって、前記コンピュータ実行可能命令が、構成可能非線形活性化関数回路を備えるプロセッサによって実行されたとき、前記プロセッサに、方法を実施させ、前記方法が、
選択された非線形活性化関数に基づいて、前記選択された非線形活性化関数のためのパラメータのセットを決定することと、
前記選択された非線形活性化関数のためのパラメータの前記セットの適用に基づいて出力データを生成することとを備え、
ここにおいて、
前記構成可能非線形活性化関数回路が、少なくとも2つの連続線形近似器を備える少なくとも1つの非線形近似器を備え、
前記少なくとも2つの連続線形近似器の各線形近似器が、パラメータの前記セットのうちの1つまたは複数の関数パラメータを使用して線形関数を近似するように構成された、
非一時的コンピュータ可読媒体。
【請求項20】
前記少なくとも2つの連続線形近似器の各線形近似器が、
段階入力と、
係数入力と、
定数入力と、
段階出力と
を備える、請求項19に記載の非一時的コンピュータ可読媒体。
【請求項21】
少なくとも1つの非線形近似器が、3つの連続線形近似器を備える3次近似器を備える、請求項19に記載の非一時的コンピュータ可読媒体。
【請求項22】
前記少なくとも1つの非線形近似器が、2つの連続線形近似器を備える2次近似器を備える、請求項19に記載の非一時的コンピュータ可読媒体。
【請求項23】
前記少なくとも1つの非線形近似器が、入力値領域を決定するように構成された領域ファインダー構成要素をさらに備え、
前記少なくとも2つの連続線形近似器の各線形近似器が、前記入力値領域に基づいて前記係数入力および前記定数入力を決定するようにさらに構成された、
請求項20に記載の非一時的コンピュータ可読媒体。
【請求項24】
前記方法が、符号およびオフセット補正器構成要素を使用して前記少なくとも2つの連続線形近似器のうちの少なくとも1つの線形近似器からの段階出力を修正することをさらに備える、請求項19に記載の非一時的コンピュータ可読媒体。
【請求項25】
前記方法が、前記少なくとも2つの連続線形近似器のうちの前記少なくとも1つの線形近似器からの前記段階出力を修正するために、前記符号およびオフセット補正器構成要素を使用して前記段階出力の符号を反転させることをさらに備える、請求項24に記載の非一時的コンピュータ可読媒体。
【請求項26】
前記方法が、前記少なくとも2つの連続線形近似器のうちの前記少なくとも1つの線形近似器からの前記段階出力を修正するために、前記符号およびオフセット補正器構成要素を使用して前記段階出力にオフセットを加算することをさらに備える、請求項24に記載の非一時的コンピュータ可読媒体。
【請求項27】
前記少なくとも2つの連続線形近似器の各線形近似器は、前記少なくとも2つの連続線形近似器の各線形近似器がパラメータの前記セットのうちの1つまたは複数の関数パラメータを使用して線形関数を近似するために、関数近似の1つまたは複数の不均一セグメントを選択することに少なくとも部分的に基づいて、前記1つまたは複数の関数パラメータを選択するようにさらに構成された、請求項19に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
[0001] 本出願は、その両方の内容全体が参照により本明細書に組み込まれる、2021年9月3日に出願された米国特許出願第17/467,079号の一部継続出願である、2022年6月15日に出願された米国出願第17/807,125号の優先権を主張する。
【0002】
[0002] 本開示の態様は、機械学習モデル(machine learning model)のための非線形活性化関数(nonlinear activation function)を処理することに関し、詳細には、構成可能非線形活性化関数回路(configurable nonlinear activation function circuit)に関する。
【背景技術】
【0003】
序論
[0003] 機械学習は、概して、トレーニングデータのセットへの一般化された適合を表す、トレーニングされたモデルを作り出すプロセス(たとえば、人工ニューラルネットワーク)である。トレーニングされたモデルを新しいデータに適用することは、推論を作り出すことを可能にし、推論は、新しいデータへのインサイトを得るために使用され得る。
【0004】
[0004] 様々な機械学習(または人工知能)タスクを可能にするために機械学習の使用が急増するにつれて、機械学習モデルデータのより効率的な処理の必要が生じてきた。いくつかの場合には、機械学習(または人工知能)アクセラレータまたはプロセッサまたは同様の回路などの専用ハードウェアが、機械学習モデルデータを処理する処理システムのキャパシティを向上させるために使用され得る。たとえば、非線形活性化関数を用いてデータを処理することが、1次行列乗算プロセッサ以外のプロセッサに分散され得る。しかしながら、機械学習モデルを処理することの様々な態様を異なる処理デバイスにわたって分散することは、レイテンシ、メモリ使用、電力使用、および他の処理ペナルティを招き得る。
【0005】
[0005] したがって、非線形活性化関数を用いて機械学習モデルデータを処理するための改善された技法が必要である。
【発明の概要】
【0006】
[0006] いくつかの態様は、構成可能非線形活性化関数回路を備える、プロセッサであって、構成可能非線形活性化関数回路が、入力データへの適用のための非線形活性化関数を決定することと、決定された非線形活性化関数に基づいて、非線形活性化関数のためのパラメータ(parameter)のセットを決定することと、非線形活性化関数のためのパラメータのセットの適用に基づいて出力データ(output data)を生成することとを行うように構成された、プロセッサを提供する。
【0007】
[0007] さらなる態様は、構成可能非線形活性化関数回路によって入力データを処理するための方法であって、入力データへの適用のための非線形活性化関数を決定することと、決定された非線形活性化関数に基づいて、構成可能非線形活性化関数回路のためのパラメータのセットを決定することと、出力データを生成するためにパラメータのセットに基づいて構成可能非線形活性化関数回路を用いて入力データを処理することとを備える、方法を提供する。
【0008】
[0008] さらなる態様は、構成可能非線形活性化関数回路を備える、プロセッサであって、構成可能非線形活性化関数回路が、選択された非線形活性化関数(selected nonlinear activation function)に基づいて、非線形活性化関数のためのパラメータのセットを決定することと、非線形活性化関数のためのパラメータのセットの適用に基づいて出力データを生成することとを行うように構成され、ここにおいて、構成可能非線形活性化関数回路が、少なくとも2つの連続線形近似器(successive linear approximator)を備える少なくとも1つの非線形近似器(nonlinear approximator)を備え、少なくとも2つの連続線形近似器の各線形近似器(linear approximator)が、パラメータのセットのうちの1つまたは複数の関数パラメータ(function parameter)を使用して線形関数(linear function)を近似するように構成された、プロセッサを提供する。
【0009】
[0009] さらなる態様は、構成可能非線形活性化関数回路を用いてデータを処理するための方法であって、選択された非線形活性化関数に基づいて、非線形活性化関数のためのパラメータのセットを決定することと、非線形活性化関数のためのパラメータのセットの適用に基づいて出力データを生成することとを備え、ここにおいて、構成可能非線形活性化関数回路が、少なくとも2つの連続線形近似器を備える少なくとも1つの非線形近似器を備え、少なくとも2つの連続線形近似器の各線形近似器が、パラメータのセットのうちの1つまたは複数の関数パラメータを使用して線形関数を近似するように構成された、方法を提供する。
【0010】
[0010] 他の態様は、上述の方法ならびに本明細書で説明される方法を実施するように構成された処理システムと、処理システムの1つまたは複数のプロセッサによって実行されたとき、処理システムに上述の方法ならびに本明細書で説明される方法を実施させる命令を備える、非一時的コンピュータ可読媒体(non-transitory computer-readable medium)と、上述の方法ならびに本明細書でさらに説明される方法を実施するためのコードを備えるコンピュータ可読記憶媒体上で実施されたコンピュータプログラム製品と、上述の方法ならびに本明細書でさらに説明される方法を実施するための手段を備える処理システムとを提供する。
【0011】
[0011] 以下の説明および関連する図面は、1つまたは複数の実施形態のいくつかの例示的な特徴を詳細に記載する。
【0012】
[0012] 添付の図は、1つまたは複数の実施形態のいくつかの態様を示し、したがって、本開示の範囲を限定するものと見なされるべきではない。
【図面の簡単な説明】
【0013】
図1】[0013] 例示的な構成可能非線形活性化(CNLA:configurable nonlinear activation)関数回路を示す図。
図2】[0014] 図1に関して説明されるような、バイパス可能な近似器ブロックを実装するための例示的な回路ブロックを示す図。
図3】[0015] 例示的な近似器を示す図。
図4】[0016] 例示的な機械学習モデルプロセスフローを示す図。
図5】[0017] 構成可能非線形活性化関数回路を使用して処理を実施するための例示的な方法を示す図。
図6】[0018] 機械学習モデルアクセラレーションにおいて使用される非線形関数を実装するために使用され得る、パイプライン化連続線形近似アーキテクチャ(pipelined successive-linear-approximation architecture)の一例を示す図。
図7】[0019] 近似された関数出力を定義するための不均一セグメント(non-uniform segment)をもつ双曲線正接(tanh)非線形活性化関数の一例を示す図。
図8】[0020] パイプライン化連続線形近似アーキテクチャを実装するための回路の一例を示す図。
図9】[0021] 図8の回路における線形近似器要素の一例であり得る、線形近似器回路の一例を示す図。
図10】[0022] 本明細書で説明される方法を実施するように構成され得る例示的な処理システムを示す図。
【発明を実施するための形態】
【0014】
[0023] 理解を容易にするために、可能な場合、図面に共通である同一の要素を指定するために同一の参照番号が使用されている。一実施形態の要素および特徴が、さらなる具陳なしに他の実施形態に有益に組み込まれ得ることが企図される。
【0015】
[0024] 本開示の態様は、機械学習モデルに関連付けられた非線形活性化関数を処理するための改善された技法を提供する。
【0016】
[0025] 非線形活性化は、ニューラルネットワークモデルを含む、様々なタイプの機械学習モデルの重要な構成要素である。いくつかの非線形活性化関数は、区分線形関数(たとえば、正規化線形ユニット(ReLU:rectified linear unit)、漏洩ReLUなど)として実装され、他の非線形活性化関数は、複雑な数学関数(たとえば、シグモイド、双曲線正接(tanh)など)を必要とする。いくつかの場合には、複雑な数学関数は、3次スプライン補間(cubic spline interpolation)など、補間を使用して実装され得る。たとえば、補間される出力値が、いくつかの態様では、出力値を入力値と適合させるためにルックアップテーブル(LUT)を使用して決定され得る。ターゲット入力値がLUT中でマッピングされないとき、ターゲット入力値に隣接する入力値に関連付けられたLUT値が、ターゲット入力値についての出力値を補間するために使用され得る。
【0017】
[0026] 従来、非線形活性化関数は、機械学習モデルにおいて使用可能な広範囲の可能な活性化関数により、ハードウェアではなくソフトウェアで実装され得る。しかしながら、そのような実装形態は、一般に、処理デバイス間で(たとえば、行列積和(matrix multiplication and accumulation)を実施するニューラル処理ユニット(NPU)と非線形活性化関数を処理するデジタル信号プロセッサ(DSP)との間で)モデルデータを移動させることを必要とし、したがって、電力ペナルティおよびレイテンシペナルティを招く。非線形活性化関数がハードウェアで実装された場合、それらは、概して、少数の非線形活性化関数のみをサポートすることに限定され、したがって、非線形活性化関数処理を分散処理ユニットにアウトソーシングすることにフォールバックすることなしに発展的機械学習モデルアーキテクチャをサポートするように構成され得ない。
【0018】
[0027] たとえば、正規化線形ユニット(ReLU)は、深層学習モデルにおける通常使用される活性化関数である。その関数は、それが負入力を受信する場合、0を返し、その他の場合、入力xを返す。したがって、それは、f(x)=max(0,x)として書かれ得る。ReLU関数は、概して、いくつかの例では、コンピュートインメモリ(CIM)アレイなど、1次行列積和処理ユニットによって実装されない。したがって、ReLU関数、または別の非線形活性化関数を分散する必要は、処理見地からコストがかかる。その上、活性化関数がより複雑になるにつれて、処理コストは、(たとえば、以下でさらに説明されるように、いくつかの非線形活性化関数の一部である比較的より高いべき乗の指数関数および除算演算を実施するために)同様により大きくなる。
【0019】
[0028] 従来の解決策の短所を克服するために、本明細書で説明される態様は、効率的な処理のためにハードウェアで実装され得る構成可能非線形活性化(CNLA)関数回路に関する。特に、CNLA関数回路はハードウェアで実装され得るので、CNLA関数は、ベクトルおよび行列積和関数を実施するために最適化されるCIMアレイおよびデジタル積和(DMAC:digital multiply-and-accumulate)回路など、他の機械学習モデル処理タスクのために最適化される他の処理回路とコロケートされ得る。
【0020】
[0029] 処理効率を改善するために、本明細書で説明される態様は、非線形活性化関数内で使用され得るものなど、複雑な関数を近似するために多項式近似を使用し得る。いくつかの場合には、本明細書で説明される態様は、テイラー級数など、級数展開を使用し得る。概して、関数(たとえば、f(x))のテイラー級数は、単一の点における関数の微分に関して表される項の無限和である。多くの関数の場合、関数とそのテイラー級数の和とは、この点の近くで等しくなる。テイラー級数の最初のn+1個の項によって形成される部分和は、関数のn番目のテイラー多項式と呼ばれる、次数nの多項式である。したがって、テイラー多項式は、関数の処理効率的な近似を可能にし、これは、概して、nが増加するにつれてより良好になる。
【0021】
[0030] 本明細書で説明されるCNLA関数回路は、3次近似ブロックなど、1つまたは複数の多項式近似ブロックを実装し得、これは、概して、より多種多様な非線形活性化関数をカバーするために、3次スプライン補間を、より効率的にし、より一般化されるようにするように、向上させる。その上、CNLA関数回路は、非線形にセグメント化されたルックアップテーブル(LUT)および混合次数の近似(たとえば、パイプライン化線形、2次(quadratic)、および3次近似)を使用することができる、パイプライン化デジタルブロックとして実装され得る。したがって、本明細書で説明されるCNLA関数回路は、従来の非線形活性化関数回路とは異なり、多くの異なる性能目標を満たすように構成され得る。
【0022】
[0031] したがって、本明細書で説明されるCNLA関数回路は、機械学習モデル処理システムにおいて広範囲の非線形活性化関数を実装することの技術的問題の技術的解決策を提供する。さらに、本明細書で説明されるCNLA関数回路は、本明細書で説明されるように、より低いレイテンシ、より低い電力使用、改善されたメモリ効率などを含む、既存の解決策と比較して増加されたモデル処理性能によって、技術的改善を提供する。
【0023】
例示的な構成可能非線形活性化関数回路
[0032] 図1は、例示的な構成可能非線形活性化(CNLA)関数回路100を示す。
【0024】
[0033] 概して、CNLA関数回路100は、入力データ101(たとえば、機械学習モデルの層からの出力値)を受信し、出力データ114を生成する(たとえば、「活性化」)ための様々な非線形活性化関数を実施するように構成され得る。CNLA関数回路100は、CIMアレイ、DMACなど、他の機械学習モデル処理回路とコロケートおよびパイプライン化され得、他の機械学習モデル処理回路の出力に基づいて活性化関数を実施するように構成され得る。
【0025】
[0034] いくつかの例では、入力データ101は、バッファまたは他のメモリから受信され得る。他の例では、入力データ101は、CIMアレイまたは別のベクトルおよび行列積和ブロックの出力など、別の処理ブロックの出力から直接受信され得る。
【0026】
[0035] CNLA関数回路100は、第1の近似器ブロック102を含み、それは、概して、入力データ101などに対して、ハードウェアベースの数学関数を実施するように構成され得る。例示的な近似器が、図3に関して詳細に説明される。
【0027】
[0036] いくつかの場合には、第1の近似器は、(たとえば、ax+bなど、関数を実施するように構成された)線形近似器、(たとえば、ax2+bx+cなど、関数を実施するように構成された)2次近似器(quadratic approximator)、または(たとえば、ax3+bx2+cx+dなど、関数を実施するように構成された)3次近似器(cubic approximator)のうちの1つであり、ここで、xは入力データであり、a、b、c、およびdは構成可能パラメータである。概して、線形、2次、または3次近似器が、多項式関数であることもそうでないこともある、何らかの所与の関数を近似するために使用され得る。第1の近似器102が、たとえば、メモリ、レジスタ、ルックアップテーブルなどから取り出された、パラメータで構成され得る。表2に関して以下でさらに詳細に説明されるように、これらの異なる形式の近似および関連付けられた構成可能パラメータは、多くのタイプの非線形活性化関数を近似するために使用され得る。
【0028】
[0037] CNLA関数回路100は、第2の近似器ブロック104をさらに含み、それは、第1の近似器ブロック102のように、概して、線形、2次、または3次関数など、ハードウェアベースの数学関数を実施するように構成され得る。以下でより詳細に説明されるように、CNLA関数回路100は、より複雑な関数のために第1の近似器ブロック102と第2の近似器ブロック104とを連続的に使用するように構成され得、したがって、第1の近似器ブロック102の出力は、第2の近似器ブロック104への入力になる。CNLA関数回路100は、より単純な非線形関数が処理されているとき、第1の近似器ブロック102または第2の近似器ブロック104のうちの1つのみを使用するようにさらに構成され、それにより、電力を節約し得る。
【0029】
[0038] いくつかの実装形態では、第1の近似器102と第2の近似器104とは、同じ回路ブロック(たとえば、回路100内の同じ回路要素の2つのインスタンス)を備え得る。たとえば、第1の近似器102および第2の近似器104は、いくつかの態様では、3次近似器を備え得る。他の実装形態では、第1の近似器102と第2の近似器104とが、異なる回路要素を備え得、そのような場合、概して、第2の近似器104は、3次近似器を備えることになり、第1の近似器102は、2次または線形近似器など、より低次の近似器を備えることになる。しかしながら、他の実施形態では、より高次の近似器およびより低次の近似器の次数は、逆にされ得る。
【0030】
[0039] CNLA関数回路100は、構成可能なバイパス105を含み、それは、関数が、第1の近似器102よりも低次の近似器のみを必要とし、第2の近似器104がそのようなより低次の近似器である場合など、様々なシナリオにおいて、第1の近似器102がバイパスされることを可能にする。たとえば、第1の近似器102が、構成可能なバイパス105を介してバイパスされたとき、入力データ101は、代わりに第2の近似器104に直接提供され、第1の近似器102によって処理されない。様々な態様では、第1の近似器102は、第2の近似器104と比較してより高次の近似器であり得るか、またはその逆であり得るか、あるいは、それらは、同じ次数(たとえば、両方とも線形、2次、または3次)であり得る。構成可能なバイパス105は、1つの近似器のみが必要であるとき、処理時間およびエネルギーを節約することを可能にする。
【0031】
[0040] CNLA関数回路100は、別の構成可能なバイパス107をさらに含み、それは、第1の近似器102が第2の近似器104なしに実施することが可能である、第1の近似のみを関数が必要とする場合など、様々なシナリオにおいて、第2の近似器104がバイパスされることを可能にする。たとえば、第2の近似器104が、構成可能なバイパス107を介してバイパスされるとき、第1の近似器102の出力は、乗算器108に直接提供される。
【0032】
[0041] 概して、構成可能なバイパス105および107は、様々なシナリオにおいて、電力を節約し、不要な回路ブロック処理を回避しながら、CNLA関数回路100が最大の汎用性のために構成されることを可能にする。さらに、構成可能なバイパスは、非対称および反対称非線形活性化関数がCNLA関数回路100による処理のために構成されることを可能にする。図2は、構成可能なバイパス105および107(たとえば、バイパス205Aおよび205B)を実装するための例示的な回路態様を示す。
【0033】
[0042] CNLA関数回路100は、乗算器108に利得値を提供するように構成された利得ブロック106をさらに含む。いくつかの態様では、利得ブロック106は、利得ブロック106によって実装される利得関数に基づいて利得値109を生成するように構成される。一例では、利得関数は、形式g=ax+bのものであり得、ここで、gは利得値であり、xは入力データ101値であり、aおよびbは構成可能パラメータである。より一般的には、利得ブロック106は、利得値を生成するために、乗法的に(a)および/または加法的に(b)入力データを修正し得る。
【0034】
[0043] 利得ブロック106によって生成された利得値109は、乗算器108を介して、第1の近似器102および/または第2の近似器104の出力を乗算される。他の態様では、利得ブロック106は、(たとえば、gについての上記の式においてaを0に設定することによって)入力データ101の関数に基づかない利得値を生成するように構成され得る。概して、利得ブロック106のためのパラメータ(たとえば、上記の例におけるaおよびb)または値は、たとえば、メモリ、レジスタ、ルックアップテーブルなどから取り出され得る。
【0035】
[0044] CNLA関数回路100は、構成可能な(たとえば、プログラム可能な)定数値113を記憶するように構成された定数ブロック110と、乗算器108(たとえば、利得乗算器)の出力に定数値113を加算するように構成された加算器112とをさらに含む。定数ブロック110に記憶された定数値113は、たとえば、メモリ、レジスタ、ルックアップテーブルなどから取り出され得る。
【0036】
[0045] 第1の近似器ブロック102、第2の近似器ブロック104、構成可能なバイパス105および107、利得ブロック106、乗算器108、定数ブロック110、および加算器112の包含および配置は、CNLA関数回路100が、多種多様な知られているおよび後で開発される非線形活性化関数が実施されるように構成されることを可能にする。その上、CNLA関数回路100は、単に、第1の近似器102、第2の近似器104、利得ブロック106、および定数ブロック110のためのパラメータを更新することによって、多種多様な非線形活性化関数を処理するように効率的に構成され得る。近似器ブロック102と近似器ブロック104の両方が非線形関数をシミュレートするために使用されるとき、各々は、個々の関数(たとえば、第1の近似器ブロック102のための第1の関数および第2の近似器104のための第2の関数)を実施することと呼ばれることがある。この設計は、複雑な関数のための任意の非対称非線形曲線を有益にサポートする。
【0037】
[0046] 以下の表1は、図2の近似器ブロック206Aおよび206Bのためのパラメータを含む、図1のCNLA関数回路100が実施するように構成され得る、様々な非線形活性化関数のための例示的なパラメータを提供する。表1では、利得は、図1中の利得ブロック106の例におけるものであるように、形式ax+bを有すると見なされるが、他の実施形態では、利得が、スカラー値、または異なる関数形式であり得ることに留意されたい。同様に、2次近似器が、形式ax2+bx+cを有すると見なされ、3次近似器が、形式ax3+bx2+cx+dを有すると見なされる。以下の表では、下付き文字が、パラメータ割当て、たとえば、利得パラメータのためのG、第1の近似器のための1、および第2の近似器パラメータのための2を示すために使用される。
【0038】
【表1-1】
【表1-2】
【表1-3】
【0039】
[0047] 上記のELU関数では、αパラメータは、モデル設計者によってハイパーパラメータとして構成され得ることに留意されたい。
【0040】
[0048] 特に、いくつかの実装形態では、近似器のためのパラメータは、近似器がより低次の関数(たとえば、線形)を実施している場合でも、形式(たとえば、a、b、c、およびdパラメータをもつ3次、またはa、b、およびcパラメータをもつ2次)で与えられ得る。これは、たとえば、3次パラメータaを0に設定することが、近似式をより低次の2次関数に効果的に縮小し、同様に、2次パラメータaを0に設定することが、近似式を線形式に効果的に縮小するからである。したがって、近似器は、たとえば、それが2次パラメータで構成されるとき、「2次関数」のために構成され得るが、パラメータの結果は、上記の表2におけるReLUの例の場合のように、関数を線形関数に低減し得る。これは、パラメータセットの規格化が、パラメータによって、基礎をなす関数の次数にもかかわらず構成されることを可能にし、それにより、実装形態を簡略化し得る。
【0041】
[0049] 図2は、バイパス可能な近似器ブロック206Aおよび206Bを実装するための例示的な回路ブロック202および204を示す。バイパス可能な近似器ブロック206Aと206Bとは、一例では、図1の第1の近似器ブロック102と第2の近似器ブロック104とに対応し得る。
【0042】
[0050] 図2では、回路ブロック202が、関数ブロック214Aの使用を制御するように構成され、関数ブロック214Aは、この例では、第1の近似器206Aと最小および最大関数ブロック208Aとを含む。同様に、回路ブロック204が、関数ブロック214Bの使用を制御し、関数ブロック214Bは、この例では、最小および最大関数ブロック208Bと第2の近似器206Bとを含む。第1の近似器ブロック206Aと第2の近似器ブロック206Bとは、表1に関して上記で説明されたものなど、非線形活性化関数を実装するように構成され得る。
【0043】
[0051] 図1中の第1の近似器102は、1つの入力のみを必要とするが、回路ブロック202は、複数の入力を可能にする、2つの入力ポート201Aおよび201Bを含むことに留意されたい。回路ブロック202の図示された構成は、回路ブロック202と204の両方について同じ外部インターフェースを提示するために採用され得、これは、構成および統合を簡略化し得る。いくつかの態様では、回路ブロック202が、入力ポート201Aを介して(図1中の入力データ101などの)単一の入力を受信する場合、回路ブロック202の2つの入力ポート201Aと201Bとは、一実装形態では互いに結合され得る。代替実装形態では、回路ブロック202は、201Aが214Aおよび207Aに直接提供されることになるように、入力ポート201Bを削除することと入力mux203Aを削除することとによって簡略化され得る。
【0044】
[0052] 概して、入力ポート201Aと201Bとは、符号付きマルチビット整数データを含む、処理するための様々なタイプの入力データを受信し得る。一例では、入力データは、8ビットの2の補数入力データである。
【0045】
[0053] 入力セレクタmux203Aと203Bとは、どの入力データポートが、それぞれ、回路ブロック202と204とのために使用されるかを制御するように構成される。たとえば、入力セレクタmux203Bが、入力データポート201A(たとえば、回路ブロック202がバイパスされているとき)または212B(たとえば、回路ブロック202および204が、連続して処理されているとき)の間で選択し得る。
【0046】
[0054] バイパスセレクタmux211Aと211Bとは、それぞれ、回路ブロック202と204との、バイパス関数ブロック214Aと214Bとを制御するように構成される。たとえば、回路ブロック202がバイパスされるべきであるとき、バイパスセレクタmux211Aが、出力を出力ポート212Aに提供するためにバイパスライン205Aを選択する。同様に、回路ブロック204がバイパスされるべきであるとき、バイパスセレクタmux211Bが、出力を出力ポート216に提供するためにバイパスライン205Bを選択する。したがって、構成可能なバイパス205Aおよび205Bによって制御されるような、回路ブロック202および/または204を用いた処理は、出力ポート216において出力を生じる。
【0047】
[0055] 図3に関してより詳細に説明されるように、近似器ブロック206Aと206Bとは、それぞれ、レジスタ219Aと219Bとに記憶された構成パラメータ(たとえば、上記の表1の場合のような関数固有の係数)で構成され得る。同様に、近似器ブロック206Aまたは206Bが、ルックアップテーブルベースの関数を実施するように構成される、上記の表1の場合のように、テーブル値は、それぞれ、レジスタ219Aと219Bとに記憶され得る。
【0048】
[0056] 各回路ブロック(202および204)は、最小および最大関数を提供するための最小および最大関数ブロック(回路ブロック202のための208Aおよび回路ブロック204のための208B)をさらに含む。概して、最小(または「min」)関数は、提供された入力の最小値を返す。概して、最大(または「max」)関数は、提供された入力の最大値を返す。一例では、最小および最大関数ブロック208Aと208Bとは、単一サイクルモードまたはマルチサイクルモードのいずれかで動作するマルチビットデジタル比較器を備え得る。
【0049】
[0057] 関数ブロック214Aと214Bとの構成は、それぞれ、関数セレクタmux209Aと209Bとについての設定を含み得る。言い換えれば、関数ブロック214Aと214Bとが、min/maxブロック208Aと208Bとからのmin/max出力、または近似器206Aと206Bとからの値を出力するか否かは、関数セレクタmux209Aと209Bとの構成に基づく。他の例では、関数ブロック214Aと214Bとは、muxによって選択され得る追加の関数ブロックを含み得ることに留意されたい。
【0050】
[0058] 近似器ブロックが連続して処理され得る図1に示されているように、図2では、第1の近似器ブロック206Aを含む回路ブロック202Aの出力212Aは、第2の近似器ブロック206Bを含む回路ブロック204への入力212Bとして提供される。バイパス105と107とが、第1の近似器ブロック102と第2の近似器ブロック104との使用を制御する図1の場合のように、ここで、選択可能なバイパス205Aと205Bとは、近似器ブロック206Aと206Bとの使用を制御する。
【0051】
[0059] 非対称信号線210が、回路ブロック202および204の構成を制御する。一例では、回路ブロック202と204とは、非対称信号線210上の値と、入力データポート201Aを介して受信された入力データに基づく符号ブロック207Aと207Bとからの出力値とに基づいて構成される。たとえば、非対称信号線210を介して受信された2進値と符号ブロック207Aから出力された2進値とは、mux211Aによる出力の選択を制御するために、ANDゲート213において相互作用する。別の例として、非対称信号線210を介して受信された2進値と符号ブロック207Bから出力された2進値とは、mux203Bを介して(201Aと212Bとの間のような)入力データポートの選択を制御するために、ANDゲート217において相互作用する。さらなる例として、非対称信号線210を介して受信された2進値と符号ブロック207Bから出力された反転された2進値とは、出力mux211Bの選択を制御するために、ANDゲート215において相互作用する。
【0052】
[0060] 以下の表2は、回路ブロック202および204のための構成の概要を提供する。
【0053】
【表2】
【0054】
構成可能非線形活性化関数回路のための例示的な近似器
[0061] 図3は、例示的な近似器300を示し、それは、図1の第1の近似器102および第2の近似器104ならびに/または図2の近似器206Aおよび206Bの一方または両方の一例であり得る。
【0055】
[0062] 近似器300が、処理するための入力データ302(たとえば、事前活性化データ)を受信する。いくつかの例では、入力データ302は、バッファまたは他のメモリから受信され得る。他の例では、入力データは、CIMアレイまたは別のベクトルおよび行列積和ブロックの出力など、別の処理ブロックの出力から直接受信され得る。さらに、入力データは、近似器300が、図1中の第2の近似器104または図2中の第2の近似器206Bである場合など、別の近似器から受信され得る。
【0056】
[0063] いくつかの実装形態では、(300などの)近似器が、代替処理経路を含み得る。そのような場合、経路論理304が、たとえば、近似器300のための構成パラメータに基づいて入力データ302を適切な処理経路にルーティングするように構成され得る。
【0057】
[0064] この例では、処理経路306Aが、入力データ302のための3次近似経路を提供する。
【0058】
[0065] 処理経路306Aにおいて、入力データ302が、3次計算器308に提供され、3次計算器308は、3次演算(たとえば、x3、ここで、xが入力データである)を実施し、次いで、その出力が、乗算器310において3次パラメータ312を乗算される。次いで、乗算器310の出力が、累算器324に提供される。
【0059】
[0066] 入力データ302はまた、2次計算器308に提供され、2次計算器308は、2次演算(たとえば、x2、ここで、xが入力データである)を実施し、次いで、その出力が、乗算器316において2次パラメータ318を乗算される。次いで、乗算器316の出力が、累算器324に提供される。
【0060】
[0067] 入力データ302はまた、乗算器320に提供され、ここで、入力データ302は、線形パラメータ322を乗算される。次いで、乗算器320の出力が、累算器324に提供される。
【0061】
[0068] 累算器(加算器)324が、乗算器310、316、および320の出力、ならびに切片パラメータ326を累算して、出力データ332を生成する。
【0062】
[0069] 3次パラメータ312、2次パラメータ318、線形パラメータ322および切片パラメータ326は、すべて、累算器300にとってアクセス可能なメモリなど(たとえば、レジスタ)に記憶され得る。いくつかの場合には、メモリ制御ユニットまたは有限状態機械など、制御ユニットが、メモリに記憶されたパラメータで近似器300を構成し得る。様々な例では、3次パラメータ312、2次パラメータ318、線形パラメータ322および切片パラメータ326が、表2に関して上記で説明された値に従って設定され得る。
【0063】
[0070] 上記のように、近似の次数は、上述のパラメータ値を構成することによって構成され得る。たとえば、近似器300が2次近似を実施するために、3次パラメータ312が0に設定され得る。同様に、近似器300が線形近似を実施するために、3次パラメータ312および2次パラメータ318が0に設定され得る。
【0064】
[0071] いくつかの非線形活性化関数が、最小および最大関数など、代替関数を必要とする。したがって、処理経路306Bが、上記の表2で説明されるReLUおよびReLU6関数とともに使用され得る、最小および/または最大計算器を提供する。処理経路306Bは、近似器300のための構成データに基づいて経路論理304によって選択され得る。
【0065】
[0072] さらに、いくつかの非線形活性化関数が、ルックアップテーブルを使用して実装され得、ルックアップテーブルは、いくつかの非線形活性化関数のための値を生成するためのより電力および時間効率的な機構を提供する。したがって、処理経路306Cは、たとえば、シグモイド、tanh、または同様の関数が非線形活性化関数によって使用される場合はいつでも使用され得る、ルックアップテーブルベースの処理経路を提供する。シグモイドとtanhとは、互いから計算され得、したがって、いくつかの場合には、単一のルックアップテーブル(たとえば、シグモイドまたはtanh、ただし両方ではない)のみが、両方の関数を実装するために記憶および使用される。1つまたは複数のルックアップテーブルが、メモリに記憶され、近似器300にとってアクセス可能であり、これは近似器300に緊密に結合されたメモリを含み得る。
【0066】
構成可能非線形活性化関数回路をもつ例示的な機械学習モデルプロセスフロー
[0073] 図4は、図1図3に関して上記で説明されたような、構成可能非線形活性化関数回路を実装する、例示的な機械学習モデルデータフロー400を示す。
【0067】
[0074] フロー400では、入力データが、入力データバッファ401(たとえば、機械学習モデル層入力データ)に記憶され、次いで、積和(MAC:multiply and accumulate)回路402に提供される。MAC回路402が、概して、畳み込みニューラルネットワークにおいて頻繁に使用されるものなど、ベクトル、アレイ、および行列積和演算を実施するように構成され得る。いくつかの例では、MAC回路402が、1つまたは複数のコンピュートインメモリ(CIM)アレイを含み得る。代替または追加として、MAC回路402が、デジタル積和(DMAC)を含み得る。またさらなる例では、積和回路402が、ニューラル処理ユニット(NPU)、または機械学習処理を実施するために最適化された別のタイプの処理ユニットなど、機械学習アクセラレータの一部分であり得る。別の実装形態では、MAC回路402が、ベクトル/行列または行列/行列処理エンジンによって置き換えられ得る。
【0068】
[0075] MAC回路402は、事前活性化データを生成するために、重みデータ(たとえば、ニューラルネットワーク重みデータ)を用いて入力データを処理する。たとえば、MAC回路402は、ニューラルネットワークモデルの層への入力データを処理し、出力として事前活性化データを生成し得る。
【0069】
[0076] 事前活性化データは、構成可能非線形活性化(CNLA)関数回路404に提供され、CNLA関数回路404は、構成された非線形活性化関数に基づいて出力データを生成する(たとえば、活性化)ように構成される。出力データは、次いで、機械学習モデル中の別の層を処理するために、または機械学習モデルからの出力としてなど、後で使用するために、出力データバッファ405に記憶され得る。
【0070】
[0077] CNLA関数回路404は、図3でCNLA関数回路300に関して説明されたような構成パラメータ、ならびに表1および表2で説明されたもので構成され得る。さらに、CNLA関数回路404は、構成された活性化関数に応じてルックアップテーブルにアクセスするように構成され得る。
【0071】
[0078] いくつかの場合には、構成パラメータが、入力データに適用されるべき非線形活性化関数の識別情報を含み得る。決定された非線形活性化関数に基づいて、(表2中のものなどの)適切なパラメータが、メモリ(たとえば、レジスタ)から取り出され、CNLA関数回路404に適用され、それにより、入力データを処理するためにCNLA関数回路404を構成し得る。いくつかの例では、有限状態機械、メモリ制御ユニット、または別のコントローラが、CNLA関数回路404の構成を実施し得る。
【0072】
[0079] 特に、CNLA回路404は、同じ構成を使用して入力データの複数のバッチを処理するように構成され得るか、または入力データのあらゆる新しいバッチのためにCNLA回路404の構成を更新し得る。したがって、CNLA回路404は、トレーニングおよび推論など、機械学習タスクのために構成可能非線形活性化を実施するための極めてフレキシブルおよび効率的な手段を提供する。
【0073】
構成可能非線形活性化関数回路を使用して処理を実施するための例示的な方法
[0080] 図5は、構成可能非線形活性化関数回路を使用して処理を実施するための例示的な方法500を示す。
【0074】
[0081] 方法500は、入力データへの適用のための非線形活性化関数を選択することを伴うステップ502において始まる。たとえば、非線形活性化関数は、表2に記載されている関数のうちの1つ、または別の非線形活性化関数であり得る。
【0075】
[0082] 方法500は、次いで、選択された非線形活性化関数に基づいて、構成可能非線形活性化関数回路のためのパラメータのセットを決定することを伴うステップ504に進む。たとえば、決定された非線形活性化関数のためのパラメータは、上記の表1および表2のようなものであり得る。
【0076】
[0083] 方法500は、次いで、出力データを生成するためにパラメータのセットに基づいて構成可能非線形活性化関数回路を用いて入力データを処理することを伴うステップ506に進む。たとえば、出力データは、ニューラルネットワークモデルの層のための活性化データであり得る。
【0077】
[0084] いくつかの例では、パラメータのセットは、構成可能非線形活性化関数回路を介して入力データに適用するための、1つまたは複数の利得パラメータと、定数パラメータと、1つまたは複数の近似関数との組合せを含む。たとえば、パラメータのセットは、図1および図2に関して、ならびに表1で、上記で説明されたようなものであり得る。
【0078】
[0085] いくつかの例では、方法500は、決定された非線形活性化関数に基づいてメモリからパラメータのセットを取り出すことをさらに含む。いくつかの例では、メモリは、パラメータ値を記憶する1つまたは複数のレジスタであり得る。
【0079】
[0086] いくつかの例では、構成可能非線形活性化関数回路は、図1に関して示され、説明されたような、1つまたは複数の近似関数のうちの第1の関数を近似するように構成された第1の近似器と、1つまたは複数の近似関数のうちの第2の関数を近似するように構成された第2の近似器と、1つまたは複数の利得パラメータに基づいて第1の利得値を乗算するように構成された第1の利得乗算器と、定数値を加算するように構成された定数加算器とを含む。
【0080】
[0087] いくつかの例では、構成可能非線形活性化関数回路は、第1の近似器をバイパスするように構成された第1のバイパスを含む。いくつかの例では、構成可能非線形活性化関数回路は、第2の近似器をバイパスするように構成された第2のバイパスを含む。いくつかの例では、構成可能非線形活性化関数回路は、第1の近似器をバイパスすることと、入力データを第2の近似器に提供することとを行うように構成された入力データバイパスを含む。
【0081】
[0088] いくつかの例では、第1の近似器と第2の近似器とのうちの少なくとも1つは、3次近似器である。いくつかの例では、第1の近似器と第2の近似器とのうちの他の1つは、2次近似器または線形近似器のうちの1つである。いくつかの例では、第1の近似器と第2の近似器とのうちの他の1つは、図3に経路306Bに関して示されているような、minまたはmax関数を実施するように構成される。いくつかの例では、第1の近似器と第2の近似器とのうちの他の1つは、図3に経路306Cに関して示されているような、近似値のためのルックアップテーブルにアクセスするように構成される。
【0082】
[0089] いくつかの例では、第1の近似器と第2の近似器の両方が3次近似器である。
【0083】
[0090] 図5が一例にすぎず、他の例では、本明細書で説明されるものなどの方法が、より多くの、より少数の、および/または異なるステップを用いて実装され得ることに留意されたい。
【0084】
非線形関数のための例示的なパイプライン化近似
[0091] 図6は、機械学習モデルアクセラレーションにおいて使用される非線形関数を実装するために使用され得る、パイプライン化連続線形近似アーキテクチャ600の一例を示す。たとえば、アーキテクチャ600が、図1に関して説明される近似器102および104と、図2に関して説明される206Aおよび206Bとを実装するために使用され得る。
【0085】
[0092] 概して、図6は、パイプライン化様式で線形近似器604A~Cを通って流れる入力xを示す。アーキテクチャ600は、連続線形近似ブロック604A~Cを使用して3次近似を実装するための電力および空間効率的な方法である。詳細には、入力xが、出力y1=Ax+Bを決定するために、線形近似器ブロック604Aにおいて処理され、ここで、AおよびBは、線形近似器ブロック604Aによって使用される係数605Aである。
【0086】
[0093] 次に、y1は、出力y2=x(y1)+Cを決定するために線形近似器ブロック604Bに入力として提供され、ここで、Cは、線形近似器ブロック604Bによって使用される係数605Bである。x(y1)は、xを乗算されたy1を示すことに留意されたい。
【0087】
[0094] 次に、y2は、出力y3=x(y2)+Dを決定するために線形近似器ブロック604Cに入力として提供され、ここで、Dは、線形近似器ブロック604Cによって使用される係数605Cである。連続線形近似に基づいてy3を展開することが、以下を与える。
【0088】
【数1】
【0089】
[0095] これは、入力xに基づく3次近似である。特に、アーキテクチャ600において実装される連続線形近似手法は、必要とされる乗算器の数を低減し、これは、従来の3次近似器アーキテクチャと比較して、複雑さと使用される電力とを低減する。さらに、アーキテクチャ600は、パイプライン化実装形態を可能にし、これは、定常状態においてサイクルごとに新しい出力を作り出し、したがってスループットを改善する。
【0090】
[0096] 処理効率をさらに改善するために、係数A、B、C、およびD(605A~C)は、たとえば、SRAMまたはDRAMではなく、レジスタに記憶され得、これは、アーキテクチャ600の電力およびレイテンシ性能を改善する。たとえば、ホストシステムSRAMからの読取り電力の使用は、係数値を記憶するローカルレジスタを使用することによって回避され得る。レジスタ手法はまた、リモートホストシステムメモリ(たとえば、DRAM)からの係数値を読み取り、トランスポートするための、追加のサイクルを回避することによって、パイプライン化アーキテクチャをサポートする。様々な態様では、パイプラインレジスタは、線形近似器604A~Cの内部または外部にあり得る。
【0091】
[0097] いくつかの実装形態では、アーキテクチャ600に関して示されるように、係数は、図7に関して一例において説明されるように、不均一にセグメント化された非線形関数の近似に基づいて決定され得る。そのような実施形態では、領域ファインダー602が、入力xに従う不均一にセグメント化された近似の領域(またはセグメント)に基づいて適切な係数を決定し得る。したがって、図6は、パイプライン化様式で線形近似の様々な段階を通して受け渡される、領域ファインダーの出力「REGION_SEL」を示す。
【0092】
[0098] 領域ファインダー602によって見つけられている「領域」が、元の非線形関数の「ドメイン」のセグメントであることに留意されたい。すなわち、非線形関数が、負の無限大から正の無限大までのドメインにわたって定義され得、そのドメインは、セグメントに区分され得る。本明細書で説明される様々な態様では、セグメントは、不均一長さのものである。各そのようなセグメントについて、係数は、そのセグメント内の関数を最も良く近似するように選定される。図8は、領域ファインダー要素809をもつ例示的な回路実装形態を示し、ここで、「カットオフ」が、セグメントエンドポイントについて説明するために使用される。
【0093】
[0099] 様々な態様では、領域ファインダー602が、近似全体のために使用される係数のセット全体を選定するように構成され得る。図示された例では、近似は、パイプライン化様式で連続的に行われるので、決定された領域は、各近似器データ経路と一緒に稼働して登録されることになり、したがって、決定された領域は、(たとえば、線形近似器604A~Cのための)各段階における後続の係数ルックアップのために使用され得る。
【0094】
[0100] 領域ファインダー602は、概して、様々なオフラインアルゴリズムが、領域選定を探索および設定するために使用されることを可能にし、したがって、実装形態は、領域がどのように見つけられるかによって制限される必要がない。たとえば、3次スプラインアルゴリズムが、領域境界にわたる連続微分を保証するために使用され得、これは、モデルトレーニングのために有益である。別の例では、平均2乗誤差は、(考慮されている領域を仮定すれば最良の3次係数の後続の探索に基づいて)点ごとに最小化され得る。この第2の手法は、連続微分という犠牲を払って計算のより良い精度を達成し得る(推論のためのより良い精度を達成する)。また別の手法は、2次または3次微分が0である場合に基づいて領域を設定することであるが、この手法は、より多くの領域が、より少ない誤差を生じるので、可能な領域のフルセットを使用しないことがある。
【0095】
[0101] 最終的に、アーキテクチャ600は、処理中に回路面積および電力を有益に低減するためのシグモイドおよび双曲線正接(tanh)など、一般的なニューラルネットワーク非線形性関数の奇数および偶数対称性性質を活用するように構成される。有益には、そのような対称性を活用することは、たとえば、単純な符号反転が、原点からの関数の両側(たとえば、正および負)を、両側のための係数を記憶する必要なしに、エミュレートすることができるので、非線形関数を近似するために記憶される必要がある係数の数を低減することを可能にする。いくつかの実装形態では、近似結果が、正入力についてのみ計算され、次いで、同じ結果が、同じ大きさをもつ負入力(偶数対称性)のために使用されるか、または結果の符号(sign)が、奇数対称性をもつ関数の場合、反転され得る。
【0096】
[0102] 図示された例では、符号およびオフセット補正器構成要素(sign and offset corrector component)606が、最終出力608を生成するために、入力として、3次近似値y3と、(たとえば、それの符号を決定するために)元の入力xと、オフセット値607とをとり、符号および/またはオフセット補正を適用するように構成される。たとえば、最終出力608は、オフセット(offset)(607)+/-y3として計算され得る。係数605A~Cの場合と同様に、オフセット607は、効率および速度のためにローカルレジスタに記憶され得る。
【0097】
[0103] 概して、オフセット607は、x=0を中心としないものを除いて、対称である関数のために使用され得る。一例がシグモイドであり、これは、線y=0.5に関して対称である。そのような場合、「シフトされた」シグモイドが、最初に近似され、これはx軸に関して奇数対称であり、次いで、0.5のオフセットが結果に加算される。
【0098】
[0104] 図6は、3次非線形関数を近似するために使用され得る3つの線形近似器(604A~C)を含む例示的なアーキテクチャ600を示すことに留意されたい。他の態様では、2次非線形関数が近似されることが意図される場合、2つの線形近似器が使用され得る。図6に示されていないが、いくつかの態様では、制御論理は、2次関数のみが近似される必要があるとき、(線形近似器604Cなどの)後続の線形近似器をバイパスするために、線形近似器604Bなどの線形近似器の出力を切り替え得る。そのような場合、バイパスは、線形近似器604Bの出力y3をとり、それを符号およびオフセット補正器構成要素606にルーティングし得る。
【0099】
[0105] 図7は、近似された関数出力を定義するための不均一セグメントをもつ双曲線正接(tanh)非線形活性化関数の例700を示す。
【0100】
[0106] 図示された例では、第1のセグメント702Aが、曲線701に沿って原点(x=0)から第1の点まで定義される。図示のように、702Bのようなセグメントは、勾配がそのセグメント中で入力値にわたってより一定である場合、曲線701に沿った長さがより長く、702Cのようなセグメントは、曲線がそのセグメント中で入力値に沿ってより急速に勾配を変化させている場合、曲線701に沿った長さがより短い。不均一セグメントを使用することは、有益には、実際の関数と比較して、依然として、同様の出力分解能を維持しながら、非線形関数についての出力値範囲にわたるより少数のセグメントを定義することを可能にする。従来、分解能を維持するために、701などの曲線は均一にセグメント化され、これは、多くのセグメントがまったく同様の出力値を有し、したがって、メモリに記憶される冗長値を作成したことを意味した。
【0101】
[0107] 各セグメントが、概して、曲線701に沿った開始点および終了点によって定義され得ることに留意されたい。たとえば、開始入力値xstartおよび終了入力値xendが、セグメントを定義し得る。これらのセグメントの各々は、xstart≦×<xendなど、定義された範囲内に入る双曲線正接関数ベースの入力値を近似する際に使用するための係数のセットに関連付けられ得る。メモリをさらに節約するために、第1のセグメント702Aは、開始点(原点)がx=0であると仮定され得るので、セグメントの終了点のみを記憶する必要がある。同様に、最後のセグメントは、最後から2番目のセグメントの終了点のみによって定義される。すなわち、最後から2番目のセグメントの終了点よりも大きいかまたはそれに等しいすべての入力が、最後のセグメントの一部と見なされる。
【0102】
[0108] たとえば、以下の表は、近似されることになるtanh関数のためにレジスタに記憶され得る、不均一セグメントの例を与える。入力値xが特定のセグメント(または領域)内に入るとき、そのセグメントのための係数が、近似された関数値を生成するために、取り出され、使用され得る。
【0103】
【表3】
【0104】
[0109] 双曲線正接関数曲線701は、奇数対称性をもつ関数の一例であることに留意されたい。すなわち、正入力についてのtanh出力値(たとえば、点704Aについての0.2)は、同じ大きさの負入力(たとえば、704Bについての-0.2)の符号反転された出力に等しい。したがって、不均一セグメントは、双曲線正接関数曲線701についての正入力値範囲に関してのみ定義される必要があり、図6中の606などの、符号補正器構成要素が、入力値(x)の符号に基づいて最終的な出力(たとえば、図6中の608)の符号を適宜に反転することができる。
【0105】
[0110] 図8は、図6に関して上記で説明されたような、パイプライン化された連続線形近似アーキテクチャを実装するための回路800の一例を示す。特に、図8は、領域ファインダー809の出力および符号ビットが、効率的な処理のためにパイプラインを通してどのように受け渡されるかを含む、設計のパイプライン化特徴を示す。
【0106】
[0111] 図示の例は、4つの段階806A~806Dを含み、そのうち3つの段階が、線形近似器(それぞれ、804A~804C)を含み、1つが符号およびオフセット補正段階806Dである。
【0107】
[0112] 図示された例では、様々な動作ブロックが示されている。「SAT」は、「飽和」ブロックを表す。飽和は、値を表す際に使用される整数ビットの数を低減するときに有用である。飽和モジュールが、M個の整数ビットを有する入力をN個の整数ビットを有する出力に低減するために使用される場合(ここで、N<M)、N個の整数ビットで表され得るものよりも大きい入力値が、(正入力のための)最大の正のNビット数または(負入力のための)最小の負のNビット数のいずれかに「飽和」される。たとえば、[x>0111...11]である場合、y(0111...11)を出力し、または[x≦1000...00]である場合、y(1000...00)を出力する。
【0108】
[0113] 「ABS」は、入力の絶対値(または大きさ)を算出するブロックを表す。
【0109】
[0114] 「COMP」は、プログラマブルカットオフを使用して領域ファインダーとして働く比較器ブロックを表す。カットオフは、様々なセグメントの終了点(および、間接的に、最後のセグメントのための開始点)を定義する。COMPブロック809の出力は、現在の入力がどの領域(セグメント)に属するかを示す識別子である。この識別子は、そのセグメント内で非線形関数を近似するために、係数の適切なセットを選択するために使用される。
【0110】
[0115] 例示的な一実装形態では、11個のカットオフ値が、合計12個のセグメントを定義するために使用される。非線形性関数の対称性性質を活用することによって、COMPモジュールは、入力の絶対値に対してのみ動作する。以下のアルゴリズムは、COMPモジュールの動作について説明する。
IF 0<=ABS(x)<CUTOFF1:セグメント0係数を選択する
ELSE IF(CUTOFF1<=ABS(x)<CUTOFF2):セグメント1係数を選択する
ELSE IF(CUTOFF2<=ABS(x)<CUTOFF3):セグメント2係数を選択する
...
ELSE IF(CUTOFF10<=ABS(x)<CUTOFF11):セグメント10係数を選択する
ELSE IF(CUTOFF11<=ABS(x)):セグメント11係数を選択する
[0116] 「TRUNC」は切捨てブロックを表し、これは、最下位ビットを省略することによって2の補数様式で表される小数の精度を低減するように構成される。たとえば、入力を、M個の小数ビットを有するものからN個の小数ビットを有するものに低減するために、最下位(M-N個の)ビットが省略される(切り捨てられる)。
【0111】
[0117] 「SYMMSAT」は、「対称飽和」ブロックを表す。N個の整数ビットを有する従来の飽和(SAT)モジュールは、最大の正の値(2N-1-1)または最小の負の値(-2N-1)のいずれかに飽和する。対称飽和モジュールでは、負入力は、代わりに、最小の負の値よりも1大きい値(たとえば、(-2N-1+1)に飽和する。このようにして、別個の負および正の出力の数は等しい。たとえば、[x>0111...11]である場合、y(0111...11)を出力し、または[x≦1000...00]である場合、y(1000...01)を出力する。
【0112】
[0118] 「SE」は符号拡張ブロックを表し、それは、値を表すために使用される整数ビットの数を増加させるときに有用である。たとえば、N個の整数ビットで表される値が、M個の整数ビットで表されることを求められるとき(M>N)、符号ビットは、(M-N)回複製される。
【0113】
[0119] 「TC」は、正の数を、その数の2の補数をとることによって、負の数に変換するために使用されるブロックを表す。
【0114】
[0120] 最後に、「ZF」は、「0充填」ブロックを表し、それは、N個の小数ビットをもつ数が、M個の小数ビットをもつ数として表されることを求められるとき(M>N)、最下位位置に(M-N)個の0を付加することによって、使用される。
【0115】
[0121] 図9は、図8の回路800における線形近似器ブロック804A~804Cの一例であり得る、線形近似器回路900の一例を示す。図示のように、線形近似器回路は、段階入力(stage input)と係数904とを入力としてとる乗算要素902、ならびに、切捨てブロックおよび飽和ブロックによって処理された後の乗算要素の出力と第2の係数908とを入力としてとる加算器要素906を含む。
例示的な処理システム
[0122] 図10は、図4図5に関してなど、本明細書で説明される方法を実施するように構成され得る例示的な処理システム1000を示す。
【0116】
[0123] 処理システム1000は、いくつかの例ではマルチコアCPUであり得る中央処理ユニット(CPU)1002を含む。CPU1002において実行される命令が、たとえば、CPU1002に関連するプログラムメモリからロードされ得るか、またはメモリパーティション1024からロードされ得る。
【0117】
[0124] 処理システム1000は、グラフィックス処理ユニット(GPU)1004、デジタル信号プロセッサ(DSP)1006、ニューラル処理ユニット(NPU)1008、マルチメディア処理ユニット1010、およびワイヤレス接続性構成要素1012など、特定の機能に適合された追加の処理構成要素をも含む。
【0118】
[0125] 1008など、NPUは、概して、人工ニューラルネットワーク(ANN)、深層ニューラルネットワーク(DNN)、ランダムフォレスト(RF)、カーネル方法などを処理するためのアルゴリズムなど、機械学習アルゴリズムを実行するためのすべての必要な制御および算術論理を実装するために構成された特殊な回路である。NPUは、代替的に、ニューラル信号プロセッサ(NSP)、テンソル処理ユニット(TPU)、ニューラルネットワークプロセッサ(NNP)、インテリジェンス処理ユニット(IPU)、またはビジョン処理ユニット(VPU)と呼ばれることがある。
【0119】
[0126] 1008など、NPUは、画像分類、機械翻訳、物体検出、および様々な他のタスクなど、一般的な機械学習タスクの性能をアクセラレートするように構成され得る。いくつかの例では、複数のNPUは、システムオンチップ(SoC)などの単一のチップ上でインスタンス化され得るが、他の例では、それらは、専用機械学習アクセラレータデバイスの一部であり得る。
【0120】
[0127] NPUは、トレーニングまたは推論のために最適化されるか、あるいは、いくつかの場合には、その両方の間の性能のバランスをとるように構成され得る。トレーニングと推論の両方を実施することが可能であるNPUの場合、その2つのタスクは依然として、概して、独立して実施され得る。
【0121】
[0128] トレーニングをアクセラレートするように設計されたNPUは、概して、モデル性能を改善するために、(しばしばラベル付けまたはタグ付けされた)既存のデータセットを入力することと、そのデータセットにわたって反復することと、次いで、重みおよびバイアスなど、モデルパラメータを調節することとを伴う極めて算出集約的な(compute-intensive)動作である、新しいモデルの最適化をアクセラレートするように構成される。概して、誤った予測に基づいて最適化することは、モデルの層を通して逆伝搬することと、予測誤差を低減するための勾配を決定することとを伴う。
【0122】
[0129] 推論をアクセラレートするように設計されたNPUは、概して、完全なモデル上で動作するように構成される。したがって、そのようなNPUは、モデル出力(たとえば、推論)を生成するために、新しいデータを入力し、すでにトレーニングされたモデルを通してそれを迅速に処理するように構成され得る。
【0123】
[0130] いくつかの実施形態では、NPU1008は、CPU1002、GPU1004、および/またはDSP1006のうちの1つまたは複数の一部として実装され得る。
【0124】
[0131] いくつかの実施形態では、ワイヤレス接続性構成要素1012は、たとえば、第3世代(3G)接続性、第4世代(4G)接続性(たとえば、4G LTE(登録商標))、第5世代接続性(たとえば、5GまたはNR)、Wi-Fi(登録商標)接続性、Bluetooth(登録商標)接続性、および他のワイヤレスデータ送信規格のための、副構成要素を含み得る。ワイヤレス接続性処理構成要素1012は、1つまたは複数のアンテナ1014にさらに接続される。
【0125】
[0132] 処理システム1000は、センサーの任意の様式に関連する1つまたは複数のセンサー処理ユニット1016、画像センサーの任意の様式に関連する1つまたは複数の画像信号プロセッサ(ISP)1018、および/またはナビゲーションプロセッサ1020をも含み得、ナビゲーションプロセッサ1020は、衛星ベース測位システム構成要素(たとえば、GPSまたはGLONASS)ならびに慣性測位システム構成要素を含み得る。
【0126】
[0133] 処理システム1000は、スクリーン、(タッチセンシティブディスプレイを含む)タッチセンシティブ表面、物理的ボタン、スピーカー、マイクロフォンなど、1つまたは複数の入力および/または出力デバイス1022をも含み得る。
【0127】
[0134] いくつかの例では、処理システム1000のプロセッサのうちの1つまたは複数は、ARMまたはRISC-V命令セットに基づき得る。
【0128】
[0135] 処理システム1000は、本明細書で説明される様々な実施形態による、様々な回路をも含む。
【0129】
[0136] この例では、処理システム1000は、コンピュートインメモリ(CIM)回路1026を含み、CIM回路1026は、機械学習モデルデータを処理するための効率的な積和(MAC)関数を実施するように構成され得る。処理システム1000は、構成可能非線形活性化(CNLA)関数回路1028をさらに含む。いくつかの場合には、CNLA関数回路1028は、図2図3図6図8、および図9に関して説明されたCNLA関数回路200のようなものであり得る。CNLA関数回路1028、ならびに示されていない他のものは、それぞれ、図4および図5に関する方法400および500など、本明細書で説明される方法の様々な態様を実施するように構成され得る。
【0130】
[0137] いくつかの例では、CNLA関数回路1028は、CPU1002、GPU1004、DSP1006、またはNPU1008など、別の処理ユニットの一部として実装され得る。
【0131】
[0138] 処理システム1000は、ダイナミックランダムアクセスメモリ、フラッシュベーススタティックメモリなど、1つまたは複数のスタティックメモリおよび/またはダイナミックメモリを表す、メモリ1024をも含む。この例では、メモリ1024は、処理システム1000の上記の構成要素のうちの1つまたは複数によって実行され得るコンピュータ実行可能構成要素を含む。
【0132】
[0139] 特に、この例では、メモリ1024は、決定構成要素1024Aと、構成構成要素1024Bと、処理構成要素1024Cと、取出し構成要素1024Dと、非線形活性化関数パラメータ1024Eと、(1つまたは複数の)ルックアップテーブル1024Fと、モデルパラメータ1024G(たとえば、重み、バイアス、および他の機械学習モデルパラメータ)とを含む。図示された構成要素のうちの1つまたは複数、ならびに図示されていない他の構成要素は、本明細書で説明される方法の様々な態様を実施するように構成され得る。
【0133】
[0140] 概して、処理システム1000および/またはそれの構成要素は、本明細書で説明される方法を実施するように構成され得る。
【0134】
[0141] 特に、他の実施形態では、処理システム1000の態様は、処理システム1000がサーバコンピュータなどである場合などに省略され得る。たとえば、マルチメディア構成要素1010、ワイヤレス接続性1012、センサー1016、ISP1018、および/またはナビゲーション構成要素1020は、他の実施形態では省略され得る。さらに、処理システム1000の態様が分散され得る。
【0135】
[0142] 図10は一例にすぎず、他の例では、より多数の、より少数の、および/または異なる構成要素をもつ代替の処理システムが使用され得ることに留意されたい。
【0136】
例示的な条項
[0143] 実装例が、以下の番号付けされた条項において説明される。
【0137】
[0144] 条項1:構成可能非線形活性化関数回路を備える、プロセッサであって、構成可能非線形活性化関数回路が、入力データへの適用のための非線形活性化関数を決定することと、決定された非線形活性化関数に基づいて、非線形活性化関数のためのパラメータのセットを決定することと、非線形活性化関数のためのパラメータのセットの適用に基づいて出力データを生成することとを行うように構成された、プロセッサ。
【0138】
[0145] 条項2:構成可能非線形活性化関数回路が、パラメータのセットのうちの1つまたは複数の第1の関数パラメータを使用して第1の関数を近似するように構成された第1の近似器と、パラメータのセットのうちの1つまたは複数の第2の関数パラメータを使用して第2の関数を近似するように構成された第2の近似器と、パラメータのセットのうちの1つまたは複数の利得パラメータに基づいて利得値を乗算するように構成された利得乗算器と、パラメータのセットのうちの定数パラメータに基づいて定数値を加算するように構成された定数加算器とを備える、条項1に記載のプロセッサ。
【0139】
[0146] 条項3:第1の近似器と第2の近似器とのうちの少なくとも1つが、3次近似器である、条項2に記載のプロセッサ。
【0140】
[0147] 条項4:第1の近似器と第2の近似器とのうちの他の1つが、2次近似器または線形近似器のうちの1つである、条項3に記載のプロセッサ。
【0141】
[0148] 条項5:第1の近似器と第2の近似器の両方が、3次近似器である、条項2に記載のプロセッサ。
【0142】
[0149] 条項6:第1の近似器と第2の近似器とのうちの他の1つが、近似値のためのルックアップテーブルにアクセスするように構成された、条項3に記載のプロセッサ。
【0143】
[0150] 条項7:第1の近似器と第2の近似器とのうちの他の1つが、最小または最大関数を実施するように構成された、条項3に記載のプロセッサ。
【0144】
[0151] 条項8:決定された非線形活性化関数がスウィッシュ関数(swish function)を備え、利得パラメータが、1の依存パラメータ値と0の非依存パラメータ値とを備え、定数値が0であり、第1の関数が2次であり、第2の関数がシグモイドルックアップテーブル(sigmoid look-up table)である、条項2に記載のプロセッサ。
【0145】
[0152] 条項9:決定された非線形活性化関数がハードスウィッシュ関数を備え、利得パラメータが、1/6の依存パラメータ値と0の非依存パラメータ値とを備え、定数値が3であり、第1の関数がmax関数であり、第2の関数がmin関数である、条項2に記載のプロセッサ。
【0146】
[0153] 条項10:決定された非線形活性化関数が双曲線正接(tanh)関数を備え、利得パラメータが、0の依存パラメータ値と1の非依存パラメータ値とを備え、定数値が0であり、第1の関数が2次であり、第2の関数がtanhルックアップテーブルである、条項2に記載のプロセッサ。
【0147】
[0154] 条項11:決定された非線形活性化関数がシグモイド関数(sigmoid function)を備え、利得パラメータが、0の依存パラメータ値と1の非依存パラメータ値とを備え、定数値が0であり、第1の関数が線形であり、第2の関数がシグモイドルックアップテーブルである、条項2に記載のプロセッサ。
【0148】
[0155] 条項12:決定された非線形活性化関数がガウス誤差線形ユニット(GELU)関数を備え、利得パラメータが、0の依存パラメータ値と1の非依存パラメータ値とを備え、定数値が1であり、第1の関数が3次であり、第2の関数がtanhルックアップテーブルである、条項2に記載のプロセッサ。
【0149】
[0156] 条項13:決定された非線形活性化関数が正規化線形ユニット(ReLU)関数を備え、利得パラメータが、0の依存パラメータ値と1の非依存パラメータ値とを備え、定数値が0であり、第1の関数が2次であり、第2の関数がmax関数である、条項2に記載のプロセッサ。
【0150】
[0157] 条項14:決定された非線形活性化関数が正規化線形ユニット6(ReLU6)関数を備え、利得パラメータが、0の依存パラメータ値と1の非依存パラメータ値とを備え、定数値が0であり、第1の関数がmax関数であり、第2の関数がmin関数である、条項2に記載のプロセッサ。
【0151】
[0158] 条項15:決定された非線形活性化関数が指数線形ユニット(ELU:exponential linear unit)関数を備え、利得パラメータが、0の依存パラメータ値とαの非依存パラメータ値とを備え、定数値が0であり、第1の関数は、入力データ値が≧0である場合、2次であり、または入力データ値が<0である場合、バイパスされ、第2の関数は、入力データ値が≧0である場合、バイパスされ、または入力データ値が<0である場合、指数ルックアップテーブルである、条項2に記載のプロセッサ。
【0152】
[0159] 条項16:処理回路から受信された1つまたは複数の出力を入力データとして記憶するように構成された入力メモリバッファと、構成可能非線形活性化関数回路からの出力のために、生成された出力データを記憶するように構成された出力メモリバッファとをさらに備える、条項1から15のいずれか1つに記載のプロセッサ。
【0153】
[0160] 条項17:入力データを構成可能非線形活性化関数回路に提供するように構成されたコンピュートインメモリアレイをさらに備える、条項1から16のいずれか1つに記載のプロセッサ。
【0154】
[0161] 条項18:構成可能非線形活性化関数回路によって入力データを処理するための方法であって、入力データへの適用のための非線形活性化関数を決定することと、決定された非線形活性化関数に基づいて、構成可能非線形活性化関数回路のためのパラメータのセットを決定することと、出力データを生成するためにパラメータのセットに基づいて構成可能非線形活性化関数回路を用いて入力データを処理することとを備える、方法。
【0155】
[0162] 条項19:決定された非線形活性化関数に基づいてメモリからパラメータのセットを取り出すことをさらに備える、条項18に記載の方法。
【0156】
[0163] 条項20:パラメータのセットが、構成可能非線形活性化関数回路を介して入力データに適用するための、1つまたは複数の利得パラメータと、定数パラメータと、1つまたは複数の近似関数との組合せを含む、条項18に記載の方法。
【0157】
[0164] 条項21:構成可能非線形活性化関数回路が、1つまたは複数の近似関数のうちの第1の関数を近似するように構成された第1の近似器と、1つまたは複数の近似関数のうちの第2の関数を近似するように構成された第2の近似器と、1つまたは複数の利得パラメータに基づいて第1の利得値を乗算するように構成された第1の利得乗算器と、定数パラメータに基づいて定数値を加算するように構成された定数加算器とを備える、条項20に記載の方法。
【0158】
[0165] 条項22:構成可能非線形活性化関数回路が、第1の近似器をバイパスするように構成された第1のバイパスと、第2の近似器をバイパスするように構成された第2のバイパスと、第1の近似器をバイパスし、入力データを第2の近似器に提供するように構成された入力データバイパスとをさらに備える、条項21に記載の方法。
【0159】
[0166] 条項23:第1の近似器と第2の近似器とのうちの少なくとも1つが、3次近似器である、条項22に記載の方法。
【0160】
[0167] 条項24:第1の近似器と第2の近似器とのうちの他の1つが、2次近似器または線形近似器のうちの1つである、条項23に記載の方法。
【0161】
[0168] 条項25:第1の近似器と第2の近似器の両方が、3次近似器である、条項23に記載の方法。
【0162】
[0169] 条項26:第1の近似器と第2の近似器とのうちの他の1つが、近似値のためのルックアップテーブルにアクセスするように構成された、条項23に記載の方法。
【0163】
[0170] 条項27:第1の近似器と第2の近似器とのうちの他の1つが、minまたはmax関数を実施するように構成された、条項23に記載の方法。
【0164】
[0171] 条項28:決定された非線形活性化関数がスウィッシュ関数を備え、利得パラメータが、1の依存パラメータ値と0の非依存パラメータ値とを備え、定数値が0であり、第1の関数が2次であり、第2の関数がシグモイドルックアップテーブルである、条項21に記載の方法。
【0165】
[0172] 条項29:決定された非線形活性化関数がハードスウィッシュ関数を備え、利得パラメータが、1/6の依存パラメータ値と0の非依存パラメータ値とを備え、定数値が3であり、第1の関数がmax関数であり、第2の関数がmin関数である、条項21に記載の方法。
【0166】
[0173] 条項30:決定された非線形活性化関数がガウス誤差線形ユニット(GELU)関数を備え、利得パラメータが、0の依存パラメータ値と1の非依存パラメータ値とを備え、定数値が1であり、第1の関数が3次であり、第2の関数がtanhルックアップテーブルである、条項21に記載の方法。
【0167】
[0174] 条項31:決定された非線形活性化関数が双曲線正接(tanh)関数を備え、利得パラメータが、0の依存パラメータ値と1の非依存パラメータ値とを備え、定数値が0であり、第1の関数が2次であり、第2の関数がtanhルックアップテーブルである、条項21に記載の方法。
【0168】
[0175] 条項32:決定された非線形活性化関数がシグモイド関数を備え、利得パラメータが、0の依存パラメータ値と1の非依存パラメータ値とを備え、定数値が0であり、第1の関数が線形であり、第2の関数がシグモイドルックアップテーブルである、条項21に記載の方法。
【0169】
[0176] 条項33:決定された非線形活性化関数が正規化線形ユニット(ReLU)関数を備え、利得パラメータが、0の依存パラメータ値と1の非依存パラメータ値とを備え、定数値が0であり、第1の関数が2次であり、第2の関数がmax関数である、条項21に記載の方法。
【0170】
[0177] 条項34:決定された非線形活性化関数が正規化線形ユニット6(ReLU6)関数を備え、利得パラメータが、0の依存パラメータ値と1の非依存パラメータ値とを備え、定数値が0であり、第1の関数がmax関数であり、第2の関数がmin関数である、条項21に記載の方法。
【0171】
[0178] 条項35:決定された非線形活性化関数が指数線形ユニット(ELU)関数を備え、利得パラメータが、0の依存パラメータ値とαの非依存パラメータ値とを備え、定数値が0であり、第1の関数は、入力データ値が≧0である場合、2次であり、または入力データ値が<0である場合、バイパスされ、第2の関数は、入力データ値が≧0である場合、バイパスされ、または入力データ値が<0である場合、指数ルックアップテーブルである、条項21に記載の方法。
【0172】
[0179] 条項36:コンピュートインメモリ(CIM)アレイから入力データを受信することをさらに備える、条項21に記載の方法。
【0173】
[0180] 条項37:表1のいずれかの構成に従って非線形活性化関数を処理するように構成された、構成可能非線形活性化関数回路。
【0174】
[0181] 条項38:構成可能非線形活性化関数回路と、選択可能なバイパスとを備える、回路ブロック。
【0175】
[0182] 条項39:構成可能非線形活性化関数回路が、表1のいずれかの構成に従って非線形活性化関数を処理するように構成された、条項38に記載の回路ブロック。
【0176】
[0183] 条項40:回路ブロックが、表2のいずれかの構成に従って構成され得る、条項38に記載の回路ブロック。
【0177】
[0184] 条項41:構成可能非線形活性化関数回路を備える、プロセッサであって、構成可能非線形活性化関数回路が、選択された非線形活性化関数に基づいて、選択された非線形活性化関数のためのパラメータのセットを決定することと、選択された非線形活性化関数のためのパラメータのセットの適用に基づいて出力データを生成することとを行うように構成され、ここにおいて、構成可能非線形活性化関数回路が、少なくとも2つの連続線形近似器を備える少なくとも1つの非線形近似器を備え、少なくとも2つの連続線形近似器の各線形近似器が、パラメータのセットのうちの1つまたは複数の関数パラメータを使用して線形関数を近似するように構成された、プロセッサ。
【0178】
[0185] 条項42:少なくとも2つの連続線形近似器の各線形近似器が、段階入力と、係数入力(coefficient input)と、定数入力(constant input)と、段階出力(stage output)とを備える、条項41に記載のプロセッサ。
【0179】
[0186] 条項43:少なくとも1つの非線形近似器が、3つの連続線形近似器を備える3次近似器を備える、条項41から42のいずれか1つに記載のプロセッサ。
【0180】
[0187] 条項44:少なくとも1つの非線形近似器が、2つの連続線形近似器を備える2次近似器を備える、条項41から43のいずれか1つに記載のプロセッサ。
【0181】
[0188] 条項45:少なくとも1つの非線形近似器が、入力値領域(input value region)を決定するように構成された領域ファインダー構成要素(region finder component)をさらに備え、少なくとも2つの連続線形近似器の各線形近似器が、入力値領域に基づいて係数入力および定数入力を決定するようにさらに構成された、条項42に記載のプロセッサ。
【0182】
[0189] 条項46:少なくとも1つの非線形近似器が、少なくとも2つの連続線形近似器のうちの少なくとも1つの線形近似器からの段階出力を修正するように構成された符号およびオフセット補正器構成要素をさらに備える、条項41から45のいずれか1つに記載のプロセッサ。
【0183】
[0190] 条項47:符号およびオフセット補正器構成要素が、少なくとも2つの連続線形近似器のうちの少なくとも1つの線形近似器からの段階出力を修正するために、段階出力の符号を反転させるようにさらに構成された、条項46に記載のプロセッサ。
【0184】
[0191] 条項48:符号およびオフセット補正器構成要素が、少なくとも2つの連続線形近似器のうちの少なくとも1つの線形近似器からの段階出力を修正するために、段階出力にオフセットを加算するようにさらに構成された、条項46に記載のプロセッサ。
【0185】
[0192] 条項49:少なくとも2つの連続線形近似器の各線形近似器は、少なくとも2つの連続線形近似器の各線形近似器がパラメータのセットのうちの1つまたは複数の関数パラメータを使用して線形関数を近似するために、関数近似(function approximation)の1つまたは複数の不均一セグメントを選択することに少なくとも部分的に基づいて、1つまたは複数の関数パラメータを選択するようにさらに構成された、条項41から48のいずれか1つに記載のプロセッサ。
【0186】
[0193] 条項50:構成可能非線形活性化関数回路を用いてデータを処理するための方法であって、選択された非線形活性化関数に基づいて、選択された非線形活性化関数のためのパラメータのセットを決定することと、選択された非線形活性化関数のためのパラメータのセットの適用に基づいて出力データを生成することとを備え、ここにおいて、構成可能非線形活性化関数回路が、少なくとも2つの連続線形近似器を備える少なくとも1つの非線形近似器を備え、少なくとも2つの連続線形近似器の各線形近似器が、パラメータのセットのうちの1つまたは複数の関数パラメータを使用して線形関数を近似するように構成された、方法。
【0187】
[0194] 条項51:少なくとも2つの連続線形近似器の各線形近似器が、段階入力と、係数入力と、定数入力と、段階出力とを備える、条項50に記載の方法。
【0188】
[0195] 条項52:少なくとも1つの非線形近似器が、3つの連続線形近似器を備える3次近似器を備える、条項50または51のいずれか1つに記載の方法。
【0189】
[0196] 条項53:少なくとも1つの非線形近似器が、2つの連続線形近似器を備える2次近似器を備える、条項50から52のいずれか1つに記載の方法。
【0190】
[0197] 条項54:少なくとも1つの非線形近似器が、入力値領域を決定するように構成された領域ファインダー構成要素をさらに備え、少なくとも2つの連続線形近似器の各線形近似器が、入力値領域に基づいて係数入力および定数入力を決定するようにさらに構成された、条項51に記載の方法。
【0191】
[0198] 条項55:符号およびオフセット補正器構成要素を使用して少なくとも2つの連続線形近似器のうちの少なくとも1つの線形近似器からの段階出力を修正することをさらに備える、条項50から54のいずれか1つに記載の方法。
【0192】
[0199] 条項56:少なくとも2つの連続線形近似器のうちの少なくとも1つの線形近似器からの段階出力を修正するために、符号およびオフセット補正器構成要素を使用して段階出力の符号を反転させることをさらに備える、条項55に記載の方法。
【0193】
[0200] 条項57:少なくとも2つの連続線形近似器のうちの少なくとも1つの線形近似器からの段階出力を修正するために、符号およびオフセット補正器構成要素を使用して段階出力にオフセットを加算することをさらに備える、条項55に記載の方法。
【0194】
[0201] 条項58:少なくとも2つの連続線形近似器の各線形近似器は、少なくとも2つの連続線形近似器の各線形近似器がパラメータのセットのうちの1つまたは複数の関数パラメータを使用して線形関数を近似するために、関数近似の1つまたは複数の不均一セグメントを選択することに少なくとも部分的に基づいて、1つまたは複数の関数パラメータを選択するようにさらに構成された、条項50から57のいずれか1つに記載の方法。
【0195】
[0202] 条項59:コンピュータ実行可能命令(computer-executable instruction)を備えるメモリと、1つまたは複数のプロセッサとを備える、処理システムであって、1つまたは複数のプロセッサが、コンピュータ実行可能命令を実行し、処理システムに、条項18から36または50から58のいずれか1つに記載の方法を実施させるように構成された、処理システム。
【0196】
[0203] 条項60:条項18から36または50から58のいずれか1つに記載の方法を実施するための手段を備える、処理システム。
【0197】
[0204] 条項61:コンピュータ実行可能命令を備える非一時的コンピュータ可読媒体であって、コンピュータ実行可能命令は、処理システムの1つまたは複数のプロセッサによって実行されたとき、処理システムに、条項18から36または50から58のいずれか1つに記載の方法を実施させる、非一時的コンピュータ可読媒体。
【0198】
[0205] 条項62:条項18から36または50から58のいずれか1つに記載の方法を実施するためのコードを備えるコンピュータ可読記憶媒体上で実施されたコンピュータプログラム製品。
【0199】
追加の考慮事項
[0206] 上記の説明は、当業者が本明細書で説明された様々な実施形態を実施することを可能にするために提供された。本明細書で説明された例は、特許請求の範囲に記載される範囲、適用可能性、または実施形態を限定するものではない。これらの実施形態への様々な修正は当業者には容易に明らかであり、本明細書で定義された一般原理は他の実施形態に適用され得る。たとえば、本開示の範囲から逸脱することなく、説明される要素の機能および構成において変更が行われ得る。様々な例は、適宜に、様々な手順または構成要素を、省略、置換、または追加し得る。たとえば、説明される方法は、説明される順序とは異なる順序で実施され得、様々なステップが追加、省略、または組み合わせられ得る。また、いくつかの例に関して説明される特徴は、いくつかの他の例において組み合わせられ得る。たとえば、本明細書に記載される態様をいくつ使用しても、装置は実装され得、または方法は実施され得る。さらに、本開示の範囲は、本明細書に記載される本開示の様々な態様に加えて、またはそれらの態様以外に、他の構造、機能、または構造および機能を使用して実施されるそのような装置または方法をカバーするものとする。本明細書で開示される本開示のいずれの態様も、請求項の1つまたは複数の要素によって実施され得ることを理解されたい。
【0200】
[0207] 本明細書で使用される「例示的」という語は、「例、事例、または例示の働きをすること」を意味する。「例示的」として本明細書で説明されるいかなる態様も、必ずしも他の態様よりも好適または有利であると解釈されるべきであるとは限らない。
【0201】
[0208] 本明細書で使用される、項目のリスト「のうちの少なくとも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の任意の他の順序)を包含するものとする。
【0202】
[0209] 本明細書で使用される「決定すること」という用語は、多種多様なアクションを包含する。たとえば、「決定すること」は、計算すること、算出すること、処理すること、導出すること、調査すること、ルックアップすること(たとえば、テーブル、データベースまたは別のデータ構造においてルックアップすること)、確認することなどを含み得る。また、「決定すること」は、受信すること(たとえば、情報を受信すること)、アクセスすること(たとえば、メモリ中のデータにアクセスすること)などを含み得る。さらに、「決定すること」は、解決すること、選択すること、選定すること、確立することなどを含み得る。
【0203】
[0210] 本明細書で使用される、本明細書で説明される要素間で電子信号およびデータを共有することのコンテキストにおける、「に接続された」という用語は、概して、互いに接続されたそれぞれの要素間でのデータ通信におけるものを意味し得る。いくつかの場合には、要素は、互いに直接接続されたそれぞれの要素間で信号および/またはデータを搬送することが可能な、1つまたは複数の導電性トレース、ライン、または他の導電性キャリアを介してなど、互いに直接接続され得る。他の場合には、要素は、互いに間接的に接続されたそれぞれの要素間で信号およびデータを通信するための、1つまたは複数のデータバスあるいは同様の共有回路および/または集積回路要素を介してなど、互いに間接的に接続され得る。
【0204】
[0211] 本明細書で開示される方法は、方法を達成するための1つまたは複数のステップまたはアクションを備える。本方法のステップおよび/またはアクションは、特許請求の範囲から逸脱することなく、互いに交換され得る。言い換えれば、ステップまたはアクションの特定の順序が指定されない限り、特定のステップおよび/またはアクションの順序および/または使用は、特許請求の範囲から逸脱することなく修正され得る。さらに、上記で説明された方法の様々な動作は、対応する機能を実施することが可能な任意の好適な手段によって実施され得る。それらの手段は、限定はしないが、回路、特定用途向け集積回路(ASIC)、またはプロセッサを含む、様々な(1つまたは複数の)ハードウェアおよび/またはソフトウェア構成要素および/またはモジュールを含み得る。概して、図に示されている動作がある場合、それらの動作は、同様の番号をもつ対応するカウンターパートのミーンズプラスファンクション構成要素を有し得る。
【0205】
[0212] 以下の特許請求の範囲は、本明細書で示された実施形態に限定されるものではなく、特許請求の範囲の文言に矛盾しない全範囲を与えられるべきである。請求項内で、単数形の要素への言及は、そのように明記されていない限り、「唯一無二の」を意味するものではなく、「1つまたは複数の」を意味するものである。別段に明記されていない限り、「いくつかの」という用語は、1つまたは複数を指す。いかなるクレーム要素も、その要素が「ための手段」という句を使用して明確に具陳されていない限り、または方法クレームの場合には、その要素が「ためのステップ」という句を使用して具陳されていない限り、米国特許法第112条(f)の規定の下で解釈されるべきではない。当業者に知られている、または後に知られることになる、本開示全体にわたって説明された様々な態様の要素のすべての構造的および機能的等価物は、参照により本明細書に明確に組み込まれ、特許請求の範囲によって包含されるものである。その上、本明細書で開示されるいかなることも、そのような開示が特許請求の範囲に明示的に具陳されているかどうかにかかわらず、公に供するものではない。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
【国際調査報告】