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

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

▶ マイクロソフト テクノロジー ライセンシング,エルエルシーの特許一覧

特表2024-506441正規化関数のためのデジタル回路機構
<>
  • 特表-正規化関数のためのデジタル回路機構 図1
  • 特表-正規化関数のためのデジタル回路機構 図2
  • 特表-正規化関数のためのデジタル回路機構 図3
  • 特表-正規化関数のためのデジタル回路機構 図4
  • 特表-正規化関数のためのデジタル回路機構 図5A
  • 特表-正規化関数のためのデジタル回路機構 図5B
  • 特表-正規化関数のためのデジタル回路機構 図6
  • 特表-正規化関数のためのデジタル回路機構 図7
  • 特表-正規化関数のためのデジタル回路機構 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-14
(54)【発明の名称】正規化関数のためのデジタル回路機構
(51)【国際特許分類】
   G06F 7/552 20060101AFI20240206BHJP
   G06G 7/60 20060101ALI20240206BHJP
   G06F 7/62 20060101ALI20240206BHJP
   G06N 3/02 20060101ALN20240206BHJP
【FI】
G06F7/552 A
G06G7/60
G06F7/62 F
G06N3/02
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023533995
(86)(22)【出願日】2022-01-18
(85)【翻訳文提出日】2023-07-19
(86)【国際出願番号】 US2022012827
(87)【国際公開番号】W WO2022164678
(87)【国際公開日】2022-08-04
(31)【優先権主張番号】17/163,225
(32)【優先日】2021-01-29
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(74)【代理人】
【識別番号】100108213
【弁理士】
【氏名又は名称】阿部 豊隆
(72)【発明者】
【氏名】ホーフラー,トルステン
(72)【発明者】
【氏名】ヘッデス,マテウス シー
(57)【要約】
本開示は、2の冪乗を入力値で冪乗したものの値を生成するデジタル回路を含む。例えば、デジタル回路は、入力値の入力仮数を表現する第1のデジタルビットと、入力値の入力指数を表現する第2のデジタルビットとを受け取る組み合わせ論理を含み得る。組み合わせ論理は、入力値が正であるとき及び負であるとき並びに入力指数が第1の値を上回るとき及び下回るときの、2の冪乗を入力値で冪乗したものの近似値に対応する複数の出力仮数及び複数の出力指数を生成する。選択回路は、出力仮数及び出力指数を受け取るように構成される。選択回路は、出力仮数の1つと、1つの出力指数とを選択するために、入力値の入力指数及び入力符号ビットに結合された選択制御入力を含む。
【特許請求の範囲】
【請求項1】
デジタル回路であって、
入力値の入力仮数を表現する第1のデジタルビットと、前記入力値の入力指数を表現する第2のデジタルビットとを受け取る組み合わせ論理であって、前記入力値が正であるとき及び負であるとき並びに前記入力指数が第1の値を上回るとき及び下回るときの、2の冪乗を前記入力値で冪乗したものの近似値に対応する複数の出力仮数及び複数の出力指数を生成する組み合わせ論理と、
前記複数の出力仮数及び前記複数の出力指数を受け取るように構成された2つ以上の選択回路であって、前記複数の出力仮数の1つと、前記複数の出力指数の1つとを選択するために、前記入力値の前記入力指数及び入力符号ビットに結合された選択制御入力を含む2つ以上の選択回路と
を含むデジタル回路。
【請求項2】
前記組み合わせ論理は、前記入力指数に基づいて前記入力仮数の複数のシフトされたバージョンを生成して、前記複数の出力仮数及び前記複数の出力指数を生じさせ、前記デジタル回路は、前記入力指数と、前記入力符号ビットとを受け取り、及び少なくとも仮数選択回路及び指数選択回路への制御信号を生成するように構成された制御論理をさらに含む、請求項1に記載のデジタル回路。
【請求項3】
前記2つ以上の選択回路は、
前記入力符号ビットが正であり、及び前記入力指数が第1の値未満であるとき、前記入力仮数の第1のシフトされたバージョンと第1の定数との和を含む第1の出力仮数、及び0の値を有する第1の出力指数、
前記入力符号ビットが正であり、及び前記入力指数が前記第1の値を上回るとき、前記入力仮数の第2のシフトされたバージョンの剰余を含む第2の出力仮数、及び前記入力指数に基づいてシフトされた1のデジタル値を、前記入力仮数の前記第2のシフトされたバージョンの整数商に加算したものを有する第2の出力指数、
前記入力符号ビットが負であり、及び前記入力指数が前記第1の値未満であるとき、前記入力仮数の前記第1のシフトされたバージョン、前記第1の定数の前記和を第2の定数から減算したものを含む第3の出力仮数、及び負の1(-1)の値を有する第3の出力指数、並びに
前記入力符号ビットが負であり、及び前記入力指数が前記第1の値を上回るとき、前記入力仮数の前記第2のシフトされたバージョンの剰余を前記第2の定数から減算したものを含む第4の出力仮数、及び前記第2の出力指数の否定マイナス1
を生じさせる、請求項1に記載のデジタル回路。
【請求項4】
前記組み合わせ論理は、前記入力仮数に結合された入力と、前記入力指数に結合されたシフト入力とを有する1つ以上のシフタ回路を含み、前記1つ以上のシフタ回路は、前記入力仮数の左及び右シフトされたバージョンを生じさせる、請求項1に記載のデジタル回路。
【請求項5】
前記入力仮数の右シフトされたバージョンは、第1の出力仮数及び第2の出力仮数を形成するために使用され、前記入力仮数の左シフトされたバージョンの下位ビットは、第3の出力仮数及び第4の出力仮数を形成するために使用される、請求項4に記載のデジタル回路。
【請求項6】
前記入力仮数の前記右シフトされたバージョンは、前記第2の出力仮数を形成するために定数から減算される、請求項5に記載のデジタル回路。
【請求項7】
前記入力仮数の前記左シフトされたバージョンは、前記第4の出力仮数を形成するために定数から減算される、請求項5に記載のデジタル回路。
【請求項8】
前記入力仮数の左シフトされたバージョンの上位ビットは、第1の出力指数及び第2の出力指数を形成するために使用され、前記入力仮数の前記左シフトされたバージョンの前記上位ビットは、前記第1の出力指数及び前記第2の出力指数を形成するために、前記入力指数に基づいて生成された値に加算される、請求項4に記載のデジタル回路。
【請求項9】
前記入力指数に基づいて生成された前記値は、前記入力指数に基づいて左シフトされたビットを含む、請求項8に記載のデジタル回路。
【請求項10】
前記入力仮数の前記左シフトされたバージョンの前記加算された上位ビットと、前記入力指数に基づいて生成された前記値とは、前記第2の出力指数を生じさせるために否定される、請求項8に記載のデジタル回路。
【請求項11】
前記1つ以上のシフタ回路は、バレルシフタ回路を含む、請求項4に記載のデジタル回路。
【請求項12】
前記1つ以上のシフタ回路は、
前記入力仮数を定数に加算するように構成された論理回路を通して前記入力仮数に結合された第1の入力と、前記入力指数を否定するように構成された論理回路を通して前記入力指数に結合されたシフト入力とを有する右シフタ回路、及び
前記入力仮数を受け取るために結合された第1の入力と、前記入力指数に結合されたシフト入力とを有する第1の左シフタ回路
を含む、請求項4に記載のデジタル回路。
【請求項13】
前記1つ以上のシフタ回路は、1のデジタル値を受け取るために結合された第1の入力と、前記入力指数に結合されたシフト入力とを有する第2の左シフタ回路をさらに含み、前記第1の左シフタ回路及び前記第2の左シフタ回路の出力は、互いに加算される、請求項12に記載のデジタル回路。
【請求項14】
前記2つ以上の選択回路は、前記右シフタ回路の出力に結合された第1の入力と、前記第1の左シフタ回路の下位ビットに結合された第2の入力とを有する第1のマルチプレクサを含み、前記2つ以上の選択回路は、前記第1のマルチプレクサの出力に結合された第1の入力と、論理回路であって、前記論理回路の入力上の値を定数から減算するように構成された論理回路を通して前記第1のマルチプレクサの前記出力に結合された第2の入力とを有する第2のマルチプレクサをさらに含む、請求項12に記載のデジタル回路。
【請求項15】
前記2つ以上の選択回路は、マルチプレクサを含み、前記マルチプレクサは、
前記第1の左シフタ回路の上位ビットと、2の、前記指数に対応する冪乗の値との和に結合された第1の入力、
前記和の負のバージョンに結合された第2の入力、
0の値に結合された第3の入力、及び
負の1(-1)の値に結合された第4の入力、並びに
最終出力指数を生じさせる出力
を含む、請求項12に記載のデジタル回路。
【発明の詳細な説明】
【技術分野】
【0001】
背景
[0001] 本開示は、コンピューティングに関し、より詳細には、正規化関数のためのデジタル回路に関する。
【背景技術】
【0002】
[0002] 人工ニューラルネットワーク(以下ではニューラルネットワーク)は、総じて人工知能応用及び最新のコンピューティングで重要性を増している。図1には、例示的なニューラルネットワークが示されている。ニューラルネットワーク100は、認識される特徴に対応する入力値を受け取る。入力値は、(辺101によって表現される)重みを乗算され、頂点102で互いに加算される(例えば、総和される)。活性化関数が頂点102における結果に適用され、出力値を生成する。値は、複数の頂点及び頂点の層にわたって結合され、結果に対応するネットワーク出力値を生じさせる。
【0003】
[0003] このようなシステムは、概して、タスク固有の規則を用いてプログラムされることなく、例を考慮することによってタスクを遂行することを「学習する」。最初に、重みは、未訓練であり得る。訓練段階中、対応する既知の結果のための入力値がネットワークによって処理され、ネットワーク出力値間の差(又は誤差)が既知の値と比較される。計算が逆方向に(例えば、出力から入力に)流れる、逆伝搬として知られるプロセスを用いて、誤差に基づいて重みが調整され得る。訓練は、多くの入力サンプル及び対応する既知のネットワーク出力値にわたって重みを連続的に調整することを伴い得る。これは、多くの場合、訓練段階と称される。訓練されると、システムは、入力を受け取り、意味のある結果(例えば、分類又は認識)を生じさせ得る。これは、多くの場合、推論段階と称される。
【発明の概要】
【0004】
[0004] ニューラルネットワークの人気が増大するにつれて、ニューラルネットワークを利用して解く問題の複雑さも増大している。問題の複雑さが増大するにつれて、ネットワークのサイズ及び計算の複雑さが増大している。ニューラルネットワークにおける1つの一般的で非常に時間のかかる演算は、正規化である。例えば、ネットワークの頂点にわたって活性化及び重みが乗算され、総和されると、結果を正規化することが一般的である。ソフトマックスは、1つのこのような正規化関数の例である。ソフトマックスは、例えば、ネットワークの出力を、予測された出力クラスにわたる確率分布に正規化するためのニューラルネットワークの最後の活性化関数として用いられ得る。しかし、正規化関数は、多くの場合、ネットワークの速度を落とし得る複雑な数値計算を必要とする。本明細書で提示される本開示は、正規化関数(及び他の応用)でより効率的に用いられ得るデジタル回路及び処理技法を提供する。
【0005】
[0005] 様々な実施形態、例及び利点が以下の詳細な説明で説明される。
【0006】
図面の簡単な説明
[0006] 本開示の様々な実施形態は、限定ではなく、例として添付の図面の図に示される。
【図面の簡単な説明】
【0007】
図1】[0007]例示的なニューラルネットワークを示す。
図2】[0008]一実施形態に係るデジタル回路を示す。
図3】[0009]別の実施形態に係るデジタル回路を示す。
図4】[0010]別の実施形態に係る、2の近似を生成するための例示的なデジタル回路を示す。
図5A】[0011]別の実施形態に係る、4の近似を生成するための例示的なデジタル回路を示す。
図5B】[0012]別の実施形態に係る、4の近似を生成するための別の例示的なデジタル回路を示す。
図6】[0013]一実施形態に係る正規化システムを示す。
図7】[0014]一実施形態に係る方法を示す。
図8】[0015]いくつかの実施形態に係るニューラルネットワーク処理システムを示す。
【発明を実施するための形態】
【0008】
詳細な説明
[0016] 以下の説明では、説明の目的上、本開示の十分な理解を提供するために、多くの例及び具体的な詳細が説明される。このような例及び詳細は、請求項の要素又は特許請求される主題を全体として不当に限定するものと解釈されてはならない。異なる請求項の文言に基づいて、特許請求される主題は、これらの例における特徴の一部又は全てを単独で又は組み合わせて含み得、本明細書で説明される特徴及び技法の変更形態及び均等物をさらに含み得ることが当業者に明らかであろう。
【0009】
[0017] 本開示の特徴及び利点は、入力値(例えば、浮動小数点)を受け取り、2の冪乗(例えば、2,4,...)を入力値xで冪乗したもの(例えば、2,4等...)の近似値に対応する出力値を生じさせるデジタル回路を含む。以下でより詳細に説明されるように、ソフトマックス関数は、このような関数を用いて近似され得る。有利には、このような関数は、例えば、複数のクロックサイクルを待つことなく出力を生成することが可能であり得る組み合わせデジタル論理で実施され得る。したがって、いくつかの例示的な実施形態は、出力が、現在の入力だけでなく、以前の入力にも依存する(例えば、データが記憶される)順次論理とは対照的に、現在の入力にのみ基づいて出力を生成することが可能であり得る。これは、例えば、ソフトマックス関数の多くの近似を実施し得る、より高速でより待ち時間の少ないシステムをもたらし得る。
【0010】
[0018] 図2は、一実施形態に係るデジタル回路200を示す。回路200は、浮動小数点表現による入力値201を受け取る。入力値(Xi)201は、デジタルビットとして表現された入力指数(e)、入力仮数(m)及び入力符号ビット(s)を含む。デジタル回路200は、入力仮数mを表現するデジタルビットと、入力指数eを表現するデジタルビットとを受け取り、2の冪乗を入力値で冪乗したものの近似値に対応する複数の出力仮数及び複数の出力指数250を生成する組み合わせ論理210を含む。1つの例示的な実施形態では、組み合わせ論理210は、入力仮数の複数のシフトされたバージョンを生成し、入力仮数は、出力仮数及び出力指数を生じさせるために、入力指数に基づいてシフトされる。有利には、例えば入力値が正であるとき及び負であるとき並びに入力指数が第1の値を上回るとき及び下回るときの4つの象限にわたり、別個の出力仮数及び出力指数が生成され得る。
【0011】
[0019] デジタル回路200は、選択回路220をさらに含む。選択回路220は、出力仮数及び出力指数250を受け取り、1つの最終出力仮数251及び1つの最終出力指数252を生じさせるように構成される。したがって、本開示の実施形態は、例えば、選択回路220内にマルチプレクサなどの2つ以上の選択回路を含み得る。選択回路220は、入力値(Xi)の入力指数及び入力符号ビットに結合された選択制御入力を含み得る。ここで、以下のさらなる実施形態で示されるように、本開示の特徴は、入力指数及び入力符号ビットに基づいて、出力仮数の1つを最終出力仮数251として選択し、出力指数の1つを最終出力指数252として選択することを含む。デジタル回路200は、2の冪乗を入力値で冪乗したもの(例えば、N、N=2,4,8,16,...)の近似値を実施するため、出力符号ビットは、定数値1であり、例えば230において結線接続され得る。そのため、デジタル回路200によって生成された出力値(Yi)202も、指数(e)、仮数(m)及び符号ビット(s)を含む浮動小数点値であり得る。有利には、いくつかの実施形態では、入力値(Xi)のストリームは、例えば、ソフトマックス関数の近似の効率的計算のために非常に迅速に(例えば、各クロックサイクル上で)出力値(Yi)に変換され得る。
【0012】
[0020] 図3は、別の実施形態に係るデジタル回路を示す。本開示の特徴及び利点は、指数に基づいて入力値の仮数をシフトさせて、入力指数及び入力符号ビットに基づいて次に選択され得る出力仮数及び出力指数を生じさせることを含む。本例では、デジタル回路314は、入力符号ビット、入力指数及び入力仮数を含む入力値312を受け取り、出力符号ビット、出力指数及び出力仮数を含む、2の冪乗を入力で冪乗したもの(例えば、2、4)に近似的に等しい出力値316を生じさせる。デジタル回路314は、本例ではシフタ回路322を含む組み合わせ論理320を含む。例えば、複数のシフタ回路が入力仮数及び入力指数を受け取り得る。本開示の特徴及び利点は、入力指数332に基づいて入力仮数330をシフトさせて、入力符号ビット334及び入力指数332に基づいて1つの出力仮数/指数対を最終出力として選択するための選択回路326及び328に結合される複数の出力仮数336及び出力指数338を生じさせることを含む。シフタ回路は、入力仮数の左及び右シフトされたバージョンを生じさせ得る。例えば、右シフタ回路は、入力仮数を定数に加算するように構成された論理回路を通して入力仮数330に結合された第1の入力と、入力指数を否定するように構成された論理回路を通して入力指数332に結合されたシフト入力とを含み得る。加えて、第1の左シフタ回路は、例えば、入力仮数330を受け取るために結合された第1の入力と、入力指数332に結合されたシフト入力とを含み得る。入力仮数の右シフトされたバージョンは、第1の出力仮数及び第2の出力仮数を形成するために使用され得、入力仮数の左シフトされたバージョンの下位ビットは、第3の出力仮数及び第4の出力仮数を形成するために使用され得る。さらに、入力仮数の左シフトされたバージョンの上位ビットは、第1の出力指数及び第2の出力指数を形成するために使用され得る。これらの技法のさらなる例及び例示が以下に提供される。
【0013】
[0021] いくつかの例示的な実施形態では、シフタ回路は、(例えば、順次論理を全く用いることなく、及びデータを経時的に記憶することに由来する関連する遅延を伴うことなく)組み合わせ論理を用いてデータワードを指定ビット数だけシフトさせることができるデジタル回路であるバレルシフタ回路である。バレルシフタは、例えば、単一のクロックサイクル上で結果を得ることが望ましい応用で有利であり得る。
【0014】
[0022] 各出力仮数336は、例えば、入力指数332及び入力符号ビット334のための値の特定の対(例えば、1超又は未満のs及び0又は-1超若しくは未満のeのためのタプルの4つのセット)に対応する関連する出力指数338を有し得る。選択回路326及び328は、入力指数332及び入力符号ビット334によって制御される。したがって、入力指数332及び入力符号ビット334に基づいて、複数の出力仮数336及び出力指数338から最終出力仮数340及び最終出力指数342が選択され得る。
【0015】
[0023] したがって、入力符号ビット及び入力指数に基づいて、選択回路326は、異なる出力仮数を生じさせ得、選択回路328は、異なる出力指数を生じさせ得る。第1に、選択回路326及び328は、入力符号ビットが正であり、及び入力指数が第1の値(例えば、0又は-1)未満であるとき、入力仮数と定数との和のシフトされたバージョンを含む最終出力仮数と、0の値(0)を有する出力指数とを生じさせ得る。第2に、選択回路326及び328は、入力符号ビットが正であり、及び入力指数が第1の値を上回るとき、入力仮数の別のシフトされたバージョンの剰余を含む最終出力仮数と、入力指数に基づいてシフトされた1のデジタル値を、入力仮数のシフトされたバージョンの整数商に加算したものを有する最終出力指数とを生じさせ得る。第3に、選択回路326及び328は、入力符号ビットが負であり、及び入力指数が第1の値未満であるとき、入力仮数と定数との和の第1のシフトされたバージョンを第2の定数から減算したものを含む最終出力仮数と、負の1(-1)の値を有する最終出力指数とを生じさせ得る。最後に、選択回路326及び328は、入力符号ビットが負であり、及び入力指数が第1の値を上回るとき、入力仮数の第2のシフトされたバージョンの剰余を第2の定数から減算したものを含む最終出力仮数と、第2の出力指数の否定マイナス1とを生じさせ得る。上述の技法の様々な例示的な実装形態及びさらなる図解が以下に提供される。
【0016】
例示的な実装形態
[0024] 図4は、別の実施形態に係る、2の近似を生成するための例示的なデジタル回路400を示す。デジタル回路400は、右シフタ回路410、左シフタ回路412及び左シフタ回路414を含む。入力仮数450が加算器回路402に結合される。加算器回路402は、定数値(N)401をさらに受け取り、入力仮数と定数(N)との和を出力する。例えば、0~128の値をとることができる入力仮数(m、0≦m<128)について、定数Nは、128に等しくてもよい。様々な実施形態では、加算器402は、例えば、以下のさらなる例に示されるように、実施のためにOR論理で置換され得る(例えば、128又はm)。加算器402の出力は、右シフタ410の入力に結合される。シフト演算を制御する右シフタ410のシフト入力は、否定回路(-x)408を通して入力指数451に結合され、入力指数(e)を受け取り、入力指数の負数(-e)を生じさせる。例えば、右シフタ回路410は、以下のように、0~128の値を有する入力仮数450の右シフトされたバージョンを生じさせ得る。
(128+m)>>-(e
【0017】
[0025] 入力仮数の上記の右シフタバージョンは、入力符号ビットが+1であり、及び入力指数が0未満である場合の2の値のための第1の出力仮数460である。
【0018】
[0026] 入力仮数450は、左シフタ412の入力にも結合される。左シフタ412のシフト入力は、入力指数451に結合される。したがって、左シフタ412は、入力仮数の左シフトされたバージョンを生じさせる。入力仮数の左シフトされたバージョンの下位ビットは、剰余関数を形成する。本例では、入力符号ビットが+1であり、及び入力指数が0以上であるとき、以下のように、入力仮数の左シフトされたバージョンの下位ビットが2の値のための第2の出力仮数461に対応する。
(m<<(e))mod 128.
【0019】
[0027] 本例では、第1及び第2の出力仮数460~461は、マルチプレクサ(Mux)416に結合される。Mux416の出力は、Mux420の入力に結合され、Mux420の出力が最終出力仮数を生じさせる。Mux416及び420は、出力仮数460~461の一方を選択するための入力符号ビット452及び入力指数451値に基づく選択制御信号Select 0及びSelect 1を有する。
【0020】
[0028] 入力仮数の右及び左シフトされたバージョンは、定数(M)から減算され、追加の出力仮数を形成し得る。本例では、Mux416の出力は、定数値(例えば、0~128の値を有する仮数について127)からMux416の出力を減算する定数減算論理回路418(M-x)に結合される。したがって、減算回路の出力は、以下のいずれかであり得る:
127-(128+m)>>-(e)、又は
127-(m<<(e))mod 128。
【0021】
[0029] 入力符号ビットが-1であり、及び入力指数が正又は負であるとき、これらの代替的出力は、2の値のための第3及び第4の出力仮数を形成する。いずれかの出力仮数がMux420によって最終出力仮数として選択され得る。
【0022】
[0030] 複数の出力指数もシフタ回路から生成され得る。様々な実施形態では、出力指数は、左シフトされた入力仮数の上位ビットを2の入力指数乗(2ex)の値に加算することから生じ得る。本例では、デジタル回路400は、1の値(例えば、1の2進値又は1のビット値)に結合された入力と、入力指数451に結合されたシフト入力を有する左シフタ回路414とをさらに含み、1を入力指数だけ左シフトさせることで2exがもたらされる。左シフタ412からの上位ビットは、整数除算関数(DIV)を形成する。そのため、シフタ412及びシフタ414の出力は、加算器422内で加算され、以下のように出力指数464を生じさせ得る。
【数1】
【0023】
[0031] 加算器422の出力は、否定回路(-1-x)424を通してさらに結合され、以下のように別の出力指数465を生じさせる。
【数2】
【0024】
[0032] 最後に、出力指数464は、Mux432の第1の入力に結合され、出力指数465は、Mux432の第2の入力に結合される。0の値428及び負の1(-1)の値430がMux432の他の入力に結合される。2のための最終出力仮数及び指数は、以下のように選択され得る。
【0025】
【表1】
【0026】
[0033] したがって、デジタル回路400は、入力指数及び入力符号ビットを受け取り、仮数選択回路(例えば、Mux416及び420)並びに指数選択回路(例えば、Mux432)への制御信号(Select 0、Select 1)を生成するように構成された制御論理470をさらに含む。選択制御信号Select 0及びSelect 1は、入力符号ビットが正であり、及び入力指数が0未満であるとき、Mux420の出力が右シフタ回路410の出力に結合され、Mux432の出力が0の値428に結合されるようにマルチプレクサを構成する。加えて、選択制御信号Select 0及びSelect 1は、入力符号ビットが正であり、及び入力指数が0以上であるとき、Mux420の出力が左シフタ回路412の下位ビットに結合され、指数選択回路の出力が、左シフタ回路412の上位ビットと、2の、入力指数に対応する冪乗の値との和に結合されるようにマルチプレクサを構成する。次に、選択制御信号Select 0及びSelect 1は、入力符号ビットが正であり、及び入力指数が0未満であるとき、Mux420の出力が定数減算論理回路418を通して右シフタ回路410の出力に結合され、マルチプレクサ432の出力が定数の負の1(-1)の値に結合されるようにマルチプレクサを構成する。最後に、選択制御信号Select 0及びSelect 1は、入力符号ビットが負であり、及び入力指数が第1の値を上回るとき、Mux420の出力が定数減算論理回路418を通して左シフタ回路の下位ビットに結合され、マルチプレクサ432の出力が、左シフタ回路412の上位ビットと、2の、入力指数に対応する冪乗の値との和の負数に結合されるようにマルチプレクサを構成する。
【0027】
[0034] Mux416、420及び432は、選択回路の例であり、図4における他の回路は、入力値の入力仮数を表現する第1のデジタルビットと、入力値の入力指数を表現する第2のデジタルビットとを受け取り、複数の出力仮数及び複数の出力指数を生成するための1つの例示的な組み合わせ論理機構である。
【0028】
[0035] 図5Aは、別の実施形態に係る、4の近似を生成するための例示的なデジタル回路500Aを示す。本例で示されるように、上述の技法は、4の近似を生成するためのデジタル回路を実施するためにも用いられ得る。4の近似のために、仮数は、入力指数を定数に加算したもの(例えば、e+1)に基づいてシフトされる。そのため、デジタル回路500Aは、1の値を入力指数に加算する+1加算器回路をさらに含む。本例では、上述されたように、入力仮数とシフタ410との間の加算器は、OR論理で置換される。以下の表は、デジタル回路500Aの挙動を示す。
【0029】
【表2】
【0030】
[0036] Mux416、420及び432は、選択回路の例であり、図5Aにおける他の回路は、入力値の入力仮数を表現する第1のデジタルビットと、入力値の入力指数を表現する第2のデジタルビットとを受け取り、複数の出力仮数及び複数の出力指数を生成するためのさらなる例示的な組み合わせ論理機構である。
【0031】
[0037] 図5Bは、別の実施形態に係る、4の近似を生成するための別の例示的なデジタル回路500Bを示す。本例では、Mux418は、除去され、Mux520は、入力仮数に結合された1つの入力及びOR論理502を通して入力仮数に結合された別の入力を有する。本例では、シフタ521は、シフトの方向(左/右)がシフト極性入力(ここでは入力符号ビット)によって設定される双方向シフタである。シフト極性入力sについて、シフトは、以下のとおりである(s==0:シフトなし;S>0:sの位置、左にシフト;S<0:sの位置、右にシフト)。デジタル回路500Bの挙動は、上掲の表2に示されるのと同じである。加算器回路(+1)504を除去することは、上掲の表1に示されるのと同じ挙動をもたらす。
【0032】
[0038] Mux416、420及び432は、選択回路のさらなる例であり、図5Bにおける他の回路は、入力値の入力仮数を表現する第1のデジタルビットと、入力値の入力指数を表現する第2のデジタルビットとを受け取り、複数の出力仮数及び複数の出力指数を生成するためのさらなる例示的な組み合わせ論理機構である。
【0033】
[0039] 図6は、一実施形態に係る正規化システム600を示す。本例では、入力ベクトルは、Aを決定するために近似回路602によって受け取られ、ここで、Aは、2の冪乗である。回路602は、上述の技法の1つを用いて実施され得る。回路602は、ソフトマックス関数の近似などの正規化関数を決定するために用いられ得るAの値を生成する。例えば、Axの値は、バッファ604内に記憶され得る。値は、総和回路606内で互いに加算され得る。除算器回路608は、バッファ604内の値及び総和値ΣAにアクセスし、正規化値:A/ΣAを生じさせ得る。正規化値は、例えば、行列乗算回路610に結合され得る。いくつかの実施形態では、正規化値は、例えば、ニューラルネットワークデータを処理するために用いられる。
【0034】
[0040] 以下は、上述の回路挙動がソフトマックス関数をどのように近似し得るかを示す。ソフトマックス関数は、以下のように定義される。
【数3】

[0041] ソフトマックスにおける
【数4】

に「似た」関数は、以下の特性を有し得る:浮動小数点での計算が容易であること、厳密に単調であること及び急速に成長すること。本例では、bfloat16が一例として用いられるが、fp32及びbfloatに拡張可能である。Bfloat16数は、以下のように定義される。
【数5】
【0035】
[0042] ここで、sは、xの符号であり(例えば、s=+1又はs=-1)、eは、xの指数であり(例えば、-7≦e<=7)、mは、xの仮数である(例えば、0≦m<128)。bfloat16において、
【数6】

を計算したとき、結果は、e<-7について0であり、e>7について無限大である - したがって、境界においてチェックを遂行することができる - が、大きい指数のために実施する必要はない。IEEE FP数について、指数オフセットも存在する。
【0036】
[0043] ソフトマックスは、2の冪乗を用いて近似することができる。例えば、Softmax2は、以下のように定義され得る。
【数7】
【0037】
[0044] Softmax(x)=Softmax2(log2(e)*x)=Softmax2(1.44*x)であることに留意されたい。換言すれば、より良好な近似を得るために、2を近似する回路機構を呼び出す前に、xに1.44を乗算することができる。
【0038】
[0045] 次に、
【数8】

の近似は、以下のようになり得る。
【数9】
【0039】
[0046]
【数10】

を、
【数11】

を用いて近似する。したがって、
【数12】

である。
【0040】
[0047] 符号ビット及び入力指数について4つのケースが存在する。
【0041】
[0048] ケースA:s=+1及びe<0(例えば、小さい正の数):
【数13】

[0049] ケースB:s=+1及びe≧0(例えば、大きい正の数):
【数14】
【0042】
[0050] これは、-7≦e<=7を用いたシフト及び「ビットピッキング」であるため、実施が非常に単純であることに留意されたい。(例えば、mが左シフトされ、上述されたように、下位7ビットが仮数において用いられ、上位ビットが指数において用いられる)。
[0051] ケースC:s=-1及びe<0(例えば、小さい負の数):
【数15】

[0052] ケースD:s=-1及びe≧0(例えば、大きい負の数):
【数16】
【0043】
[0053] 以下は、4の冪乗を用いて近似されたソフトマックスを示す。例えば、Softmax4は、以下のように定義され得る。
【数17】
【0044】
[0054] 次に、
【数18】

を近似する。
【数19】
【0045】
[0055]
【数20】

を、
【数21】

を用いて近似する。
【数22】
【0046】
[0056] ケースA:s=+1及びe<-1(例えば、小さい正の数):
【数23】
【0047】
[0057] ケースB:s=+1及びe≧-1(例えば、大きい正の数):
【数24】
【0048】
[0058] この場合も先と同様に、実施は、-7≦e<=7を用いたシフト及び「ビットピッキング」を含む。(例えば、mが左シフトされ、下位7ビットが仮数において用いられ得、上位ビットが指数において用いられる)。
【0049】
[0059] ケースC:s=-1及びe<-1(例えば、小さい負の数):
【数25】
【0050】
[0060] ケースD:s=-1及びe≧-1(例えば、大きい負の数):
【数26】
【0051】
[0061] 図7は、一実施形態に係る方法700を示す。702では、第1のデジタルビット及び第2のデジタルビットをデジタル回路内に受け取る。第1のデジタルビットは、入力値の仮数を表現し、第2のデジタルビットは、入力値の指数を表現する。入力値は、浮動小数点形式によるものであり得、例えば符号ビットをさらに含み得る。702では、複数の出力仮数及び複数の出力指数を生成する。出力仮数及び出力指数は、2の冪乗を入力値xで冪乗したもの(例えば、2,4,...)の近似値に対応する。706では、入力指数及び入力符号ビットに基づいて複数の出力仮数の1つ及び複数の出力指数の1つを選択する。したがって、方法700は、例えば、ニューラルネットワークでソフトマックス関数を近似するために用いられ得る、2、4等の近似に対応する(例えば、浮動小数点形式による)デジタル値を生成する。2の冪乗を入力値で冪乗したものを近似するデジタル値を出力するための回路は、他の応用でも用いられ得る。
【0052】
[0062] 図8は、いくつかの実施形態に係るニューラルネットワーク処理システムを示す。様々な実施形態では、本開示に係るニューラルネットワークは、1つ以上のニューラルネットワークプロセッサを含むハードウェア環境内で実施され、訓練され得る。ニューラルネットワークプロセッサは、例えば、様々なグラフィック処理装置(GPU)(例えば、Nvidia Corp(登録商標)によって生産される、ニューラルネットワークを処理するためのGPU)、フィールドプログラマブルゲートアレイ(FPGA)(例えば、Xilinx(登録商標)によって生産される、ニューラルネットワークを処理するためのFPGA)若しくはニューラルネットワーク計算のために最適化されたハードウェアアーキテクチャを有する種々の特定用途向け集積回路(ASIC)又はニューラルネットワークプロセッサを指し得る。この例示的な環境では、上述の図9に示されるアーキテクチャを有し得る1つ以上のサーバ1002は、通信ネットワーク1001(例えば、スイッチ、ルータ等)を通して複数のコントローラ1010(1)~1010(M)に結合され得る。コントローラ1010(1)~1010(M)も、上述の図9に示されるアーキテクチャを含み得る。各コントローラ1010(1)~1010(M)は、例えば、プロセッサ1011(1)~1011(N)及び1012(1)~1012(N)などの1つ以上のNNプロセッサに結合され得る。NNプロセッサ1011(1)~1011(N)及び1012(1)~1012(N)は、訓練又は推論などのニューラルネットワーク処理のために最適化された機能処理ブロック及びメモリの種々の構成を含み得る。図8におけるNNプロセッサは、値を正規化する(例えば、ソフトマックス関数の近似)ための、本明細書で説明されるデジタル回路を含み得る。NNプロセッサは、ニューラルネットワーク計算のために最適化される。サーバ1002は、例えば、NNプロセッサ1011(1)~1011(N)及び1012(1)~1012(N)によって並列にロードされ、実行され得る、NNモデル及びモデルへの入力データを用いてコントローラ1010を構成し得る。モデルは、例えば、上述されたとおりの層及び関連する重みを含み得る。NNプロセッサは、モデルをロードし、入力を適用し、出力結果を生じさせ得る。NNプロセッサは、例えば、訓練アルゴリズムも実施し得る。本明細書で説明されるデジタル回路は、例えば、訓練及び推論の両方で用いられ得る。
【0053】
さらなる例示的な実施形態
[0063] 様々な実施形態では、本開示は、正規化のために用いられ得る近似値を生成するためのシステム、方法及び装置を含む。以下の例は、単独で又は様々な組み合わせで用いられ得る。
【0054】
[0064] 一実施形態では、本開示は、デジタル回路であって、入力値の入力仮数を表現する第1のデジタルビットと、入力値の入力指数を表現する第2のデジタルビットとを受け取る組み合わせ論理であって、入力値が正であるとき及び負であるとき並びに入力指数が第1の値を上回るとき及び下回るときの、2の冪乗を入力値で冪乗したものの近似値に対応する複数の出力仮数及び複数の出力指数を生成する組み合わせ論理と、複数の出力仮数及び複数の出力指数を受け取るように構成された2つ以上の選択回路であって、複数の出力仮数の1つと、複数の出力指数の1つとを選択するために、入力値の入力指数及び入力符号ビットに結合された選択制御入力を含む2つ以上の選択回路とを含むデジタル回路を含む。
【0055】
[0065] 別の実施形態では、本開示は、正規化値を生成する方法であって、1つ以上のシフタ回路を含む組み合わせ論理において、入力値の入力仮数を表現する第1のデジタルビットと、入力値の入力指数を表現する第2のデジタルビットとを受け取ることと、組み合わせ論理において、入力値が正であるとき及び負であるとき並びに入力指数が第1の値を上回るとき及び下回るときの、2の冪乗を入力値で冪乗したものの近似値に対応する複数の出力仮数及び複数の出力指数を生成することと、複数の出力仮数及び複数の出力指数を受け取るように構成された2つ以上の選択回路により、入力値の入力指数及び入力符号ビットに基づいて、複数の出力仮数の1つと、複数の出力指数の1つとを選択することとを含む方法を含む。
【0056】
[0066] 別の実施形態では、本開示は、デジタル回路であって、入力値の入力仮数を表現する第1のデジタルビットと、入力値の入力指数を表現する第2のデジタルビットとを受け取るための組み合わせ論理手段であって、入力値が正であるとき及び負であるとき並びに入力指数が第1の値を上回るとき及び下回るときの、2の冪乗を入力値で冪乗したものの近似値に対応する複数の出力仮数及び複数の出力指数を生成する組み合わせ論理手段と、複数の出力仮数及び複数の出力指数を受け取り、入力値の入力指数及び入力符号ビットに基づいて、複数の出力仮数の1つと、複数の出力指数の1つとを選択するための選択回路手段とを含むデジタル回路を含む。
【0057】
[0067] 一実施形態では、組み合わせ論理は、入力指数に基づいて入力仮数の複数のシフトされたバージョンを生成して、複数の出力仮数及び複数の出力指数を生じさせる。
【0058】
[0068] 一実施形態では、2つ以上の選択回路は、入力符号ビットが正であり、及び入力指数が第1の値未満であるとき、入力仮数の第1のシフトされたバージョンと第1の定数との和を含む第1の出力仮数、及び0の値を有する第1の出力指数、入力符号ビットが正であり、及び入力指数が第1の値を上回るとき、入力仮数の第2のシフトされたバージョンの剰余を含む第2の出力仮数、及び入力指数に基づいてシフトされた1のデジタル値を、入力仮数の第2のシフトされたバージョンの整数商に加算したものを有する第2の出力指数、入力符号ビットが負であり、及び入力指数が第1の値未満であるとき、入力仮数の第1のシフトされたバージョン、第1の定数の和を第2の定数から減算したものを含む第3の出力仮数、及び負の1(-1)の値を有する第3の出力指数、並びに入力符号ビットが負であり、及び入力指数が第1の値を上回るとき、入力仮数の第2のシフトされたバージョンの剰余を第2の定数から減算したものを含む第4の出力仮数、及び第2の出力指数の否定マイナス1を生じさせる。
【0059】
[0069] 一実施形態では、組み合わせ論理は、入力仮数に結合された入力と、入力指数に結合されたシフト入力とを有する1つ以上のシフタ回路を含み、1つ以上のシフタ回路は、入力仮数の左及び右シフトされたバージョンを生じさせる。
【0060】
[0070] 一実施形態では、入力仮数の右シフトされたバージョンは、第1の出力仮数及び第2の出力仮数を形成するために使用され、入力仮数の左シフトされたバージョンの下位ビットは、第3の出力仮数及び第4の出力仮数を形成するために使用される。
【0061】
[0071] 一実施形態では、入力仮数の右シフトされたバージョンは、第2の出力仮数を形成するために定数から減算される。
【0062】
[0072] 一実施形態では、入力仮数の左シフトされたバージョンは、第4の出力仮数を形成するために定数から減算される。
【0063】
[0073] 一実施形態では、入力仮数の左シフトされたバージョンの上位ビットは、第1の出力指数及び第2の出力指数を形成するために使用される。
【0064】
[0074] 一実施形態では、入力仮数の左シフトされたバージョンの上位ビットは、第1の出力指数及び第2の出力指数を形成するために、入力指数に基づいて生成された値に加算される。
【0065】
[0075] 一実施形態では、入力指数に基づいて生成された値は、入力指数に基づいて左シフトされたビットを含む。
【0066】
[0076] 一実施形態では、入力仮数の左シフトされたバージョンの前記加算された上位ビットと、入力指数に基づいて生成された値とは、第2の出力指数を生じさせるために否定される。
【0067】
[0077] 一実施形態では、1つ以上のシフタ回路は、バレルシフタ回路を含む。
【0068】
[0078] 一実施形態では、1つ以上のシフタ回路は、入力仮数を定数に加算するように構成された論理回路を通して入力仮数に結合された第1の入力と、入力指数を否定するように構成された論理回路を通して入力指数に結合されたシフト入力とを有する右シフタ回路及び入力仮数を受け取るために結合された第1の入力と、入力指数に結合されたシフト入力とを有する第1の左シフタ回路を含む。
【0069】
[0079] 一実施形態では、1つ以上のシフタ回路は、1のデジタル値を受け取るために結合された第1の入力と、入力指数に結合されたシフト入力とを有する第2の左シフタ回路をさらに含み、第1の左シフタ回路及び第2の左シフタ回路の出力は、互いに加算される。
【0070】
[0080] 一実施形態では、2つ以上の選択回路は、右シフタ回路の出力に結合された第1の入力と、第1の左シフタ回路の下位ビットに結合された第2の入力とを有する第1のマルチプレクサを含む。
【0071】
[0081] 一実施形態では、2つ以上の選択回路は、第1のマルチプレクサの出力に結合された第1の入力と、論理回路であって、論理回路の入力上の値を定数から減算するように構成された論理回路を通して第1のマルチプレクサの出力に結合された第2の入力とを有する第2のマルチプレクサをさらに含む。
【0072】
[0082] 一実施形態では、2つ以上の選択回路は、マルチプレクサを含み、マルチプレクサは、第1の左シフタ回路の上位ビットと、2の、指数に対応する冪乗の値との和に結合された第1の入力、和の負のバージョンに結合された第2の入力、0の値に結合された第3の入力、及び負の1(-1)の値に結合された第4の入力、並びに最終出力指数を生じさせる出力を含む。
【0073】
[0083] 一実施形態では、デジタル回路は、入力指数と、入力符号ビットとを受け取り、及び少なくとも仮数選択回路及び指数選択回路への制御信号を生成するように構成された制御論理をさらに含み、入力符号ビットが正であり、及び入力指数が第1の値未満であるとき、仮数選択回路の出力は、右シフタ回路の出力に結合され、指数選択回路の出力は、0の値に結合され、入力符号ビットが正であり、及び入力指数が第1の値を上回るとき、仮数選択回路の出力は、左シフタ回路の下位ビットに結合され、指数選択回路の出力は、第1の左シフタ回路の上位ビットと、2の、入力指数に対応する冪乗の値との和に結合され、入力符号ビットが正であり、及び入力指数が第1の値未満であるとき、仮数選択回路の出力は、定数減算論理回路を通して右シフタ回路の出力に結合され、指数選択回路の出力は、定数の負の1(-1)の値に結合され、入力符号ビットが負であり、及び入力指数が第1の値を上回るとき、仮数選択回路の出力は、定数減算論理回路を通して左シフタ回路の下位ビットに結合され、指数選択回路の出力は、第1の左シフタ回路の上位ビットと、2の、入力指数に対応する冪乗の値との和の負数に結合される。
【0074】
[0084] 上述の説明は、本開示の様々な実施形態を、特定の実施形態の態様がどのように実施され得るかの例と併せて示している。上述の例は、唯一の実施形態であると見なされるべきでなく、添付の請求項によって定義されるとおりの特定の実施形態の柔軟性及び利点を示すために提示されている。上述の本開示及び添付の請求項に基づいて、請求項によって定義されるとおりの本開示の範囲から逸脱することなく、他の構成、実施形態、実装形態及び均等物が採用され得る。
図1
図2
図3
図4
図5A
図5B
図6
図7
図8
【国際調査報告】