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

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

▶ 三星電子株式会社の特許一覧

特開2022-120809ニューラルネットワーク演算方法及び装置
<>
  • 特開-ニューラルネットワーク演算方法及び装置 図1
  • 特開-ニューラルネットワーク演算方法及び装置 図2
  • 特開-ニューラルネットワーク演算方法及び装置 図3
  • 特開-ニューラルネットワーク演算方法及び装置 図4
  • 特開-ニューラルネットワーク演算方法及び装置 図5
  • 特開-ニューラルネットワーク演算方法及び装置 図6
  • 特開-ニューラルネットワーク演算方法及び装置 図7A
  • 特開-ニューラルネットワーク演算方法及び装置 図7B
  • 特開-ニューラルネットワーク演算方法及び装置 図7C
  • 特開-ニューラルネットワーク演算方法及び装置 図8
  • 特開-ニューラルネットワーク演算方法及び装置 図9
  • 特開-ニューラルネットワーク演算方法及び装置 図10
  • 特開-ニューラルネットワーク演算方法及び装置 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022120809
(43)【公開日】2022-08-18
(54)【発明の名称】ニューラルネットワーク演算方法及び装置
(51)【国際特許分類】
   G06N 3/063 20060101AFI20220810BHJP
   G06F 9/38 20060101ALI20220810BHJP
【FI】
G06N3/063
G06F9/38 370C
【審査請求】未請求
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2022010730
(22)【出願日】2022-01-27
(31)【優先権主張番号】10-2021-0016943
(32)【優先日】2021-02-05
(33)【優先権主張国・地域又は機関】KR
(31)【優先権主張番号】10-2021-0036060
(32)【優先日】2021-03-19
(33)【優先権主張国・地域又は機関】KR
(71)【出願人】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】兪 炯碩
(72)【発明者】
【氏名】金 愈珍
(72)【発明者】
【氏名】朴 性旭
(72)【発明者】
【氏名】朴 ▲ひょん▼宣
(72)【発明者】
【氏名】李 世煥
(72)【発明者】
【氏名】張 準祐
(72)【発明者】
【氏名】朱 ▲どく▼賑
【テーマコード(参考)】
5B013
【Fターム(参考)】
5B013DD03
(57)【要約】
【課題】ニューラルネットワーク演算方法及び装置を提供する。
【解決手段】一実施形態に係るニューラルネットワーク演算方法は、ニューラルネットワーク演算を行うための複数のデータを受信するステップと、第1演算装置に対応する第1データ探索経路及び第2演算装置に対応する第2データ探索経路の競合有無を判断するステップと、前記競合の有無及び前記第1データ探索経路と前記第2データ探索経路との間の優先順位を用いて、前記複数のデータのうち第1被演算データ及び第2被演算データを決定するステップと、前記第1被演算データ及び前記第2被演算データに基づいてニューラルネットワーク演算を行うステップとを含む。
【選択図】図1
【特許請求の範囲】
【請求項1】
ニューラルネットワーク演算のための複数のデータを受信するステップと、
第1演算装置に対応する第1データ探索経路及び第2演算装置に対応する第2データ探索経路の競合の有無を判断するステップと、
前記競合の有無及び前記第1データ探索経路と前記第2データ探索経路との間の優先順位を用いて、前記複数のデータのうち第1被演算データ及び第2被演算データを決定するステップと、
前記第1被演算データ及び前記第2被演算データに基づいてニューラルネットワーク演算を行うステップと、
を含むニューラルネットワーク演算方法。
【請求項2】
前記複数のデータのうち、前記第1データ探索経路及び前記第2データ探索経路上のデータに対する演算をスキップするか否かを決定するステップをさらに含む、請求項1に記載のニューラルネットワーク演算方法。
【請求項3】
前記複数のデータのうち、前記第1データ探索経路及び前記第2データ探索経路上のデータに対する演算をスキップするか否かを決定するステップは、
前記データが0である場合、前記データに対する演算をスキップするものと決定するステップと、又は、
前記データが予め決定された範囲以内の値である場合、前記データに対する演算をスキップするものと決定するステップと、
を含む、請求項2に記載のニューラルネットワーク演算方法。
【請求項4】
前記判断するステップは、任意の時点において、前記第1演算装置と前記第2演算装置が同じデータにアクセスする場合、前記第1データ探索経路と前記第2データ探索経路の競合が発生したと判断するステップを含む、請求項1乃至3のいずれか1項に記載のニューラルネットワーク演算方法。
【請求項5】
前記第1被演算データ及び前記第2被演算データを決定するステップは、
前記第1データ探索経路及び前記第2データ探索経路に対する優先順位を設定するステップと、
前記競合の発生に応答して、前記優先順位に基づいて前記第1被演算データ及び前記第2被演算データを決定するステップと、
を含む、請求項1乃至4のいずれか1項に記載のニューラルネットワーク演算方法。
【請求項6】
前記優先順位を設定するステップは、
前記第1データ探索経路上のデータに対応するノードが互いに異なる優先順位を有するように第1優先順位を設定するステップと、
前記第2データ探索経路上のデータに対応するノードが互いに異なる優先順位を有するように第2優先順位を設定するステップと、
を含む、請求項5に記載のニューラルネットワーク演算方法。
【請求項7】
前記競合の発生に応答して、前記優先順位に基づいて前記第1被演算データ及び前記第2被演算データを決定するステップは、
優先順位の高い探索経路を決定するために、前記第1データ探索経路に対応する第1優先順位と前記第2データ探索経路に対応する第2優先順位とを比較するステップと、
競合が発生した位置のデータを、前記優先順位の高い探索経路に対応する演算装置の被演算データとして決定するステップと、
を含む、請求項5に記載のニューラルネットワーク演算方法。
【請求項8】
前記競合が発生した位置のデータを、前記優先順位の高い探索経路に対応する演算装置の被演算データとして決定するステップは、
前記第1優先順位が前記第2優先順位よりも大きい場合、前記競合が発生した位置のデータを前記第1被演算データとして決定するステップと、
前記第2データ探索経路上の次のデータを前記第2被演算データとして決定するステップと、
を含む、請求項7に記載のニューラルネットワーク演算方法。
【請求項9】
前記第1被演算データ及び前記第2被演算データの決定に応答し、前記第1被演算データ及び前記第2被演算データのアドレスを前記第1データ探索経路及び前記第2データ探索経路上から排除するステップをさらに含む、請求項1乃至8のいずれか1項に記載のニューラルネットワーク演算方法。
【請求項10】
前記第1データ探索経路及び前記第2データ探索経路は、予め決定された探索範囲を有し、
前記予め決定された探索範囲に対する探索完了に応答して、前記複数のデータに対する前記第1データ探索経路及び前記第2データ探索経路を更新するステップをさらに含む、請求項1乃至9のいずれか1項に記載のニューラルネットワーク演算方法。
【請求項11】
ニューラルネットワーク演算を行うための複数のデータを受信する受信器と、
第1演算装置に対応する第1データ探索経路及び第2演算装置に対応する第2データ探索経路の競合有無を判断し、
前記競合の有無及び前記第1データ探索経路と前記第2データ探索経路との間の優先順位を用いて、前記複数のデータのうち第1被演算データ及び第2被演算データを決定し、
前記第1被演算データ及び前記第2被演算データに基づいてニューラルネットワーク演算を行うプロセッサを含む、ニューラルネットワーク演算装置。
【請求項12】
前記プロセッサは、前記複数のデータのうち、前記第1データ探索経路及び前記第2データ探索経路上のデータに対する演算をスキップするか否かを決定する、請求項11に記載のニューラルネットワーク演算装置。
【請求項13】
前記プロセッサは、
前記データが0である場合、前記データに対する演算をスキップするものと決定したり、又は、
前記データが予め決定された範囲以内の値である場合、前記データに対する演算をスキップするものと決定する、請求項11又は12に記載のニューラルネットワーク演算装置。
【請求項14】
前記プロセッサは、任意の時点で前記第1演算装置と前記第2演算装置が同じデータにアクセスする場合、前記第1データ探索経路と前記第2データ探索経路の競合が発生したものと判断する、請求項11乃至13のいずれか1項に記載のニューラルネットワーク演算装置。
【請求項15】
前記プロセッサは、
前記第1データ探索経路及び前記第2データ探索経路に対する優先順位を設定し、
前記競合の発生に応答して、前記優先順位に基づいて前記第1被演算データ及び前記第2被演算データを決定する、請求項11乃至14のいずれか1項に記載のニューラルネットワーク演算装置。
【請求項16】
前記プロセッサは、
前記第1データ探索経路上のデータに対応するノードが、互いに異なる優先順位を有するように第1優先順位を設定し、
前記第2データ探索経路上のデータに対応するノードが、互いに異なる優先順位を有するように第2優先順位を設定する、請求項15に記載のニューラルネットワーク演算装置。
【請求項17】
前記プロセッサは、
優先順位の高い探索経路を決定するために、前記第1データ探索経路に対応する第1優先順位と前記第2データ探索経路に対応する第2優先順位とを比較し、
競合が発生した位置のデータを、前記優先順位の高い探索経路に対応する演算装置の被演算データとして決定する、請求項15に記載のニューラルネットワーク演算装置。
【請求項18】
前記プロセッサは、
前記第1優先順位が前記第2優先順位よりも大きい場合、前記競合が発生した位置のデータを前記第1被演算データとして決定し、
前記第2データ探索経路上の次のデータを前記第2被演算データとして決定する、請求項17に記載のニューラルネットワーク演算装置。
【請求項19】
前記プロセッサは、前記第1被演算データ及び前記第2被演算データの決定に応答して、前記第1被演算データ及び前記第2被演算データのアドレスを前記第1データ探索経路及び前記第2データ探索経路上から排除する、請求項11乃至18のいずれか1項に記載のニューラルネットワーク演算装置。
【請求項20】
前記第1データ探索経路及び前記第2データ探索経路は、予め決定された探索範囲を有し、
前記プロセッサは、前記予め決定された探索範囲に対する探索完了に応答して、前記複数のデータに対する前記第1データ探索経路及び前記第2データ探索経路を更新する、請求項11乃至19のいずれか1項に記載のニューラルネットワーク演算装置。
【発明の詳細な説明】
【技術分野】
【0001】
以下の実施形態は、ニューラルネットワーク演算方法及び装置に関する。
【背景技術】
【0002】
ニューラルネットワークは、入力パターンと出力パターンのマッピングを生成し、学習に使用されていない入力パターンに対して相対的に正確な出力を生成できる機能がある。ニューラルプロセッサは、ニューラルネットワークの演算を加速化するよう設計されてきた。ニューラルネットワーク演算加速は、ニューラル演算の核心である乗算演算の量を最大に減らし、優れた結果を取得する時間を短縮することにある。
【0003】
効率的なニューラルネットワーク演算のために、プルーニング(pruning)及び量子化(quantization)のような様々な技術が試みられている。
【0004】
プルーニングは、ネットワークの構成要素であるニューロン及びシナプスをプルーニング(pruning)するものであって、それはモデルの正確度を高めるための努力が必要である。
【0005】
プルーニング及び量子化はスパース性を活用してニューラルネットワーク演算を効率よく行うものであるが、スパース性を活用する場合、演算装置間における負荷の不均衡が発生する恐れがある。即ち、特定装置に配置されている演算集合に排除される要素が集中するものであって、全ての装置へ均一に負荷がかかるものではないため、性能が低下する恐れがある。
【0006】
スパース性の活用は、演算加速化のメリットを与えるものの、従来技術は、ネットワークプルーニングのプロセスを求め、特に、微細プルーニング技術はそれ自体に特定のプロセッサで活用できる独特のプルーニング過程を求め、粗いプルーニング(coarse pruning)時の加速効果を取得できず限定的に用いられる。また、重み部分のスパース性活用に制限され、重みや入力の全てに適用できず、汎用性が低下する。
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明の課題は、ニューラルネットワーク演算方法及び装置を提供することにある。
【課題を解決するための手段】
【0008】
一実施形態に係るニューラルネットワーク演算方法は、ニューラルネットワーク演算のための複数のデータを受信するステップと、第1演算装置に対応する第1データ探索経路及び第2演算装置に対応する第2データ探索経路の競合の有無を判断するステップと、前記競合の有無及び前記第1データ探索経路と前記第2データ探索経路との間の優先順位を用いて、前記複数のデータのうち第1被演算データ及び第2被演算データを決定するステップと、前記第1被演算データ及び前記第2被演算データに基づいてニューラルネットワーク演算を行うステップとを含む。
【0009】
前記複数のデータのうち、前記第1データ探索経路及び前記第2データ探索経路上のデータに対する演算をスキップするか否かを決定するステップをさらに含むことができる。
【0010】
前記複数のデータのうち、前記第1データ探索経路及び前記第2データ探索経路上のデータに対する演算をスキップするか否かを決定するステップは、前記データが0である場合、前記データに対する演算をスキップするものと決定するステップと、又は、前記データが予め決定された範囲以内の値である場合、前記データに対する演算をスキップするものと決定するステップとを含むことができる。
【0011】
前記判断するステップは、任意の時点において、前記第1演算装置と前記第2演算装置が同じデータにアクセスする場合、前記第1データ探索経路と前記第2データ探索経路の競合が発生したと判断するステップを含むことができる。
【0012】
前記決定するステップは、前記第1データ探索経路及び前記第2データ探索経路に対する優先順位を設定するステップと、前記競合の発生に応答して、前記優先順位に基づいて前記第1被演算データ及び前記第2被演算データを決定するステップとを含むことができる。
【0013】
前記優先順位を設定するステップは、前記第1データ探索経路上のデータに対応するノードが互いに異なる優先順位を有するように第1優先順位を設定するステップと、前記第2データ探索経路上のデータに対応するノードが互いに異なる優先順位を有するように第2優先順位を設定するステップとを含むことができる。
【0014】
前記競合の発生に応答して、前記優先順位に基づいて前記第1被演算データ及び前記第2被演算データを決定するステップは、優先順位の高い探索経路を決定するために、前記第1データ探索経路に対応する第1優先順位と前記第2データ探索経路に対応する第2優先順位とを比較するステップと、競合が発生した位置のデータを、前記優先順位の高い探索経路に対応する演算装置の被演算データとして決定するステップとを含むことができる。
【0015】
前記競合が発生した位置のデータを、前記優先順位の高い探索経路に対応する演算装置の被演算データとして決定するステップは、前記第1優先順位が前記第2優先順位よりも大きい場合、前記競合が発生した位置のデータを前記第1被演算データとして決定するステップと、前記第2データ探索経路上の次のデータを前記第2被演算データとして決定するステップとを含むことができる。
【0016】
前記第1被演算データ及び前記第2被演算データの決定に応答し、前記第1被演算データ及び前記第2被演算データのアドレスを前記第1データ探索経路及び前記第2データ探索経路上から排除するステップをさらに含むことができる。
【0017】
前記第1データ探索経路及び前記第2データ探索経路は、予め決定された探索範囲を有し、前記予め決定された探索範囲に対する探索完了に応答して、前記複数のデータに対する前記第1データ探索経路及び前記第2データ探索経路を更新するステップをさらに含むことができる。
【0018】
一実施形態に係るニューラルネットワーク演算装置は、ニューラルネットワーク演算を行うための複数のデータを受信する受信器と、第1演算装置に対応する第1データ探索経路及び第2演算装置に対応する第2データ探索経路の競合有無を判断し、前記競合の有無及び前記第1データ探索経路と前記第2データ探索経路との間の優先順位を用いて、前記複数のデータのうち第1被演算データ及び第2被演算データを決定し、前記第1被演算データ及び前記第2被演算データに基づいてニューラルネットワーク演算を行うプロセッサを含む。
【0019】
前記プロセッサは、前記複数のデータのうち、前記第1データ探索経路及び前記第2データ探索経路上のデータに対する演算をスキップするか否かを決定することができる。
【0020】
前記プロセッサは、前記データが0である場合、前記データに対する演算をスキップするものと決定したり、又は、前記データが予め決定された範囲以内の値である場合、前記データに対する演算をスキップするものと決定することができる。
【0021】
前記プロセッサは、任意の時点で前記第1演算装置と前記第2演算装置が同じデータにアクセスする場合、前記第1データ探索経路と前記第2データ探索経路の競合が発生したものと判断することができる。
【0022】
前記プロセッサは、前記第1データ探索経路及び前記第2データ探索経路に対する優先順位を設定し、前記競合の発生に応答して、前記優先順位に基づいて前記第1被演算データ及び前記第2被演算データを決定することができる。
【0023】
前記プロセッサは、前記第1データ探索経路上のデータに対応するノードが、互いに異なる優先順位を有するように第1優先順位を設定し、前記第2データ探索経路上のデータに対応するノードが、互いに異なる優先順位を有するように第2優先順位を設定することができる。
【0024】
前記プロセッサは、優先順位の高い探索経路を決定するために、前記第1データ探索経路に対応する第1優先順位と前記第2データ探索経路に対応する第2優先順位とを比較し、競合が発生した位置のデータを、前記優先順位の高い探索経路に対応する演算装置の被演算データとして決定することができる。
【0025】
前記プロセッサは、前記第1優先順位が前記第2優先順位よりも大きい場合、前記競合が発生した位置のデータを前記第1被演算データとして決定し、前記第2データ探索経路上の次のデータを前記第2被演算データとして決定することができる。
【0026】
前記プロセッサは、前記第1被演算データ及び前記第2被演算データの決定に応答して、前記第1被演算データ及び前記第2被演算データのアドレスを前記第1データ探索経路及び前記第2データ探索経路上から排除することができる。
【0027】
前記第1データ探索経路及び前記第2データ探索経路は、予め決定された探索範囲を有し、前記プロセッサは、前記予め決定された探索範囲に対する探索完了に応答して、前記複数のデータに対する前記第1データ探索経路及び前記第2データ探索経路を更新することができる。
【発明の効果】
【0028】
本発明によると、ニューラルネットワーク演算方法及び装置を提供する。
【図面の簡単な説明】
【0029】
図1】一実施形態に係るニューラルネットワーク演算装置の概略的なブロック図を示す。
図2図1に示されたニューラルネットワーク演算装置の具現の一例を示す。
図3図1に示されたニューラルネットワーク演算装置のデータの探索過程を示す。
図4】データをスキップする動作を示す。
図5】複数の演算装置でデータを探索する過程を示す。
図6】データ探索経路の一例を示す。
図7A】時間の流れによるデータの探索過程を示す。
図7B】時間の流れによるデータの探索過程を示す。
図7C】時間の流れによるデータの探索過程を示す。
図8】データ探索経路の他の例を示す。
図9】データ探索を行ってニューラルネットワークを行う過程を示す。
図10図1に示されたニューラルネットワーク演算装置の具現の他の例を示す。
図11図1に示すニューラルネットワーク演算装置の動作のフローチャートを示す。
【発明を実施するための形態】
【0030】
本明細書で開示する特定の構造的又は機能的な説明は単に実施形態を説明するための目的として例示したものであり、実施形態は様々な異なる形態で実施され、本発明は本明細書で説明した実施形態に限定されるものではなく、本発明の範囲は、実施形態で説明した技術的な思想に含まれている変更、均等物、または代替物を含む。
【0031】
第1又は第2などの用語を複数の構成要素を説明するために用いることがあるが、このような用語は1つの構成要素を他の構成要素から区別する目的としてのみ解釈されなければならない。例えば、第1構成要素は第2構成要素と命名することができ、同様に第2構成要素は第1構成要素にも命名することができる。
【0032】
いずれかの構成要素が他の構成要素に「連結」されているか「接続」されていると言及されたときには、その他の構成要素に直接的に連結されているか又は接続されているが、中間に他の構成要素が存在し得るものと理解されなければならない。
【0033】
単数の表現は、文脈上、明白に異なる意味をもたない限り複数の表現を含む。本明細書において、「含む」又は「有する」等の用語は明細書上に記載した特徴、数字、ステップ、動作、構成要素、部品又はこれらを組み合わせたものが存在することを示すものであって、1つ又はそれ以上の他の特徴や数字、ステップ、動作、構成要素、部品、又はこれを組み合わせたものなどの存在又は付加の可能性を予め排除しないものとして理解しなければならない。
【0034】
異なるように定義がされない限り、技術的であるか又は科学的な用語を含むここで用いる全ての用語は、本実施形態が属する技術分野で通常の知識を有する者によって一般的に理解されるものと同じ意味を有する。一般的に用いられる予め定義された用語は、関連技術の文脈上で有する意味と一致する意味を有するものと解釈すべきであって、本明細書で明白に定義しない限り、理想的又は過度に形式的な意味として解釈されることはない。
【0035】
以下、添付する図面を参照しながら実施形態を詳細に説明する。添付図面を参照した説明において、図面の符号に関係なく同じ構成要素には同じ参照符号を付与し、これに対する重複する説明は省略することにする。
【0036】
図1は、一実施形態に係るニューラルネットワーク演算装置の概略的なブロック図を示す。
【0037】
図1を参照すると、ニューラルネットワーク演算装置10は、データを処理することによりニューラルネットワーク演算結果を生成することができる。ニューラルネットワーク演算装置10は、データのスパース性(sparsity)に基づいてデータを探索することで、ニューラルネットワーク演算することでニューラルネットワークの演算性能を加速し得る。スパース性は、ニューラルネットワーク演算に用いられるエレメントのうち、演算に意味を有しないエレメントの比率を意味する。例えば、スパース性は、全てのエレメントに対する0値を有するエレメントの比率を意味する。
【0038】
ニューラルネットワーク演算装置10は、データの探索過程で演算が不要なデータをスキップ(skip)し、スキップによりデータの探索過程で発生し得る競合を優先順位を用いて処理することで、演算コストを効率よく低減することができる。
【0039】
ニューラルネットワーク演算装置10は、ニューラルネットワークを学習させ得る。ニューラルネットワーク演算装置10は、学習されたニューラルネットワークに基づいて推論を行ってもよい。
【0040】
ニューラルネットワーク演算装置10は、加速器を用いてニューラルネットワーク演算を行ってもよい。ニューラルネットワーク演算装置10は、加速器内部又は外部に実現されてもよい。
【0041】
加速器は、GPU(Graphics Processing Unit)、FPGA(Field Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)又は、AP(Application Processor)を含んでもよい。また、加速器は、仮想マシーン(Virtual Machine)のように、ソフトウェアコンピューティング環境で実現されてもよい。
【0042】
ニューラルネットワーク(又は、人工神経網)は、機械学習及び認知科学で生物学の神経を模倣した統計学的学習アルゴリズムを含む。ニューラルネットワークは、シナプスの結合によりネットワークを形成した人工ニューロン(ノード)が学習を通じてシナプスの結合強度を変化させ、問題解決能力を有するモデルの全般を意味する。
【0043】
ニューラルネットワークのニューロンは、重み又はバイアスの組み合わせを含んでもよい。ニューラルネットワークは1つ以上のニューロン又はノードから構成された1つ以上のレイヤ(layer)を含んでもよい。ニューラルネットワークは、ニューロンの重みを学習を通じて変化させることで、任意の入力から予測しようとする結果を推論することができる。
【0044】
ニューラルネットワークは、深層ニューラルネットワーク(Deep Neural Network)を含む。ニューラルネットワークは、CNN(Convolutional Neural Network)、RNN(Recurrent Neural Network)、パーセプトロン(perceptron)、マルチパーセプトロン(multilayer perceptron)、FF(Feed Forward)、RBF(Radial Basis Network)、DFF(Deep Feed Forward)、LSTM(Long Short Term Memory)、GRU(Gated Recurrent Unit)、AE(Auto Encoder)、VAE(Variational Auto Encoder)、DAE(Denoising Auto Encoder)、SAE(Sparse Auto Encoder)、MC(Markov Chain)、HN(Hopfield Network)、BM(Boltzmann Machine)、RBM(Restricted Boltzmann Machine)、DBN(Depp Belief Network)、DCN(Deep Convolutional Network)、DN(Deconvolutional Network)、DCIGN(Deep Convolutional Inverse Graphics Network)、GAN(Generative Adversarial Network)、LSM(Liquid State Machine)、ELM(Extreme Learning Machine)、ESN(Echo State Network)、DRN(Deep Residual Network)、DNC(Differentiable Neural Computer)、NTM(Neural Turning Machine)、CN(Capsule Network)、KN(Kohonen Network)、及びAN(Attention Network)を含むことができる。
【0045】
ニューラルネットワーク演算装置10は、マザーボード(motherboard)のようなプリント回路基板(printed circuit board(PCB))、集積回路(integrated circuit(IC))、又はSoC(system on chip)で実現することができる。例えば、ニューラルネットワーク演算装置10は、アプリケーションプロセッサ(application processor)で実現することができる。
【0046】
また、ニューラルネットワーク演算装置10は、PC(personal computer)、データサーバ、又は、携帯用装置内に実現されてもよい。
【0047】
携帯用装置は、ラップトップコンピュータ、携帯電話、スマートフォン(smart phone)、タブレット(tablet)PC、モバイルインターネットデバイス(MID)、PDA(personal digital assistant)、EDA(enterprisedigital assistant)、デジタルスチールカメラ(digital stant)、デジタルビデオカメラ(digital video camera)、PMP(portable multimedia player)、PND(personal navigation device又はportable navigation device)、携帯用ゲームコンソール(handheld game console)、e-ブック(e-book)、デジタルテレビ(digital television)、AI(Artificial Inteeligence)スピーカー、テレビ、スマートテレビ、冷蔵庫、スマートホームデバイスのようなホームアプリケーション、スマートビークル(smart vehicle)などの車両、IoT(Inter)デバイス又はスマートデバイス(smart device)に具現化され得る。スマートデバイスは、スマートウォッチ(smart watch)、スマートバンド(smart band)、スマートグラス(smart glasses)、又はスマートリング(smart ring)に具現化され得る。
【0048】
ニューラルネットワーク演算装置10は、受信器100及びプロセッサ200を含む。ニューラルネットワーク演算装置10は、メモリ300をさらに含んでもよい。
【0049】
受信器100は、受信インターフェースを含む。受信器100は、ニューラルネットワーク演算を行うための複数のデータを受信する。受信器100は、メモリ300から複数のデータを受信してもよい。
【0050】
プロセッサ200は、メモリ300に格納されたデータを処理する。プロセッサ200は、メモリ300に格納されたコンピュータで読込み可能なコード(例えば、ソフトウェア)及びプロセッサ200によって誘発された命令(instruction)を実行する。
【0051】
「プロセッサ200」は、目的とする動作(desired operations)を実行させるための物理的な構造を有する回路を有するハードウェアで具現化されたデータ処理装置である。例えば、目的とする動作は、プログラムに含まれたコード(code)又は命令(instructions)を含んでもよい。
【0052】
例えば、ハードウェアで具現化されたデータ処理装置は、マイクロプロセッサ(microprocessor)、シングルプロセッサ(single processor)、独立プロセッサ(independent processors)、並列プロセッサ(parallel processors)、シングル-命令シングル-データ(single-instruction single-data(SISD))マルチプロセッシング、シングル-命令マルチプル-データ(single-instruction multiple-data(SIMD))マルチプロセッシング、マルチプル-命令シングル-データ(multiple-instruction multiple-data(MIMD))マルチプロセッシング、マイクロコンピュータ、中央処理装置(central processing unit)、プロセッサコア(processor core)、マルチ-コアプロセッサ(multi-core processor)、マルチプロセッサ(multiprocessor)、ASIC(Application-Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、コントローラ、ALU(Arithmetic Logic Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)、AP(Application Processor)、NPU(Neural Processing Unit)、PLU((Programmable Logic Unit)を含んでもよい。
【0053】
プロセッサ200は、複数のデータのうち第1データ探索経路(data search path)及び第2データ探索経路上のデータに対する演算をスキップするか否かを決定する。プロセッサ200は、データが0である場合、前記データに対する演算をスキップすると決定したり、データが予め決定された範囲以内の値である場合、データに対する演算をスキップするものと決定する。データのスキップは、図4を参照して詳細に説明する。
【0054】
プロセッサ200は、第1演算装置に対応する第1データ探索経路及び第2演算装置に対応する第2データ探索経路の競合有無を判断する。プロセッサ200は、任意の時点で第1演算装置と第2演算装置が同じデータにアクセスする場合、第1データ探索経路と第2データ探索経路の競合が発生したと判断する。
【0055】
プロセッサ200は、競合の有無及び第1データ探索経路と第2データ探索経路との間の優先順位を用いて、複数のデータのうち第1被演算データ及び第2被演算データを決定することができる。
【0056】
プロセッサ200は、第1データ探索経路及び第2データ探索経路に対する優先順位を設定する。プロセッサ200は、第1データ探索経路上のデータに対応するノードが互いに異なる優先順位を有するよう、第1優先順位を設定してもよい。プロセッサ200は、第2データ探索経路上のデータに対応するノードが互いに異なる優先順位を有するよう、第2優先順位を設定してもよい。
【0057】
プロセッサ200は競合の発生に応答して、優先順位に基づいて第1被演算データ及び第2被演算データを決定することができる。プロセッサ200は、第1データ探索経路に対応する第1優先順位と第2データ探索経路に対応する第2優先順位とを比較することで、優先順位が高い探索経路を決定することができる。
【0058】
プロセッサ200は、競合が発生した位置のデータを、優先順位の高い探索経路に対応する演算装置の被演算データとして決定してもよい。第1優先順位が第2優先順位よりも大きい場合、プロセッサ200は、競合が発生した位置のデータを第1被演算データとして決定する。プロセッサ200は、第2データ探索経路上の次のデータを第2被演算データとして決定する。
【0059】
第1優先順位が第2優先順位よりも小さい場合、プロセッサ200は、競合が発生した位置のデータを第2被演算データとして決定してもよい。プロセッサ200は、第1データ探索経路上の次のデータを第1被演算データとして決定してもよい。
【0060】
プロセッサ200は、第1被演算データ及び第2被演算データの決定に応答して、第1被演算データ及び第2被演算データのアドレスを第1データ探索経路及び第2データ探索経路上から排除する。
【0061】
プロセッサ200は、第1被演算データ及び第2被演算データに基づいてニューラルネットワーク演算を行うことができる。
【0062】
第1データ探索経路及び第2データ探索経路は、予め決定された探索範囲を有する。プロセッサ200は、予め決定された探索範囲に対する探索完了に応答して、複数のデータに対する第1データ探索経路及び第2データ探索経路を更新し得る。
【0063】
メモリ300は、プロセッサ200によって実行可能な命令(又は、プログラム)を格納する。例えば、命令は、プロセッサの動作及び/又はプロセッサの各構成の動作を実行するための命令を含んでもよい。
【0064】
メモリ300は、揮発性メモリ装置又は不揮発性メモリ装置で実現されてもよい。
【0065】
揮発性メモリ装置は、DRAM(dynamic random access memory)、SRAM(static random access memory)、T-RAM(thyristor RAM)、Z-RAM(zero capacitor RAM)、又は、TTRAM(Twin Transistor RAM)で実現されてもよい。
【0066】
不揮発性メモリ装置は、EEPROM(Electrically Erasable Programmable Read-Only Memory)、フラッシュ(flash)メモリ、MRAM(Magnetic RAM)、スピン伝達トルクMRAM(Spin-Transfer Torque(STT)-MRAM)、Conductive Bridging RAM(CBRAM)、FeRAM(Ferroelectric RAM)、PRAM(Phase change RAM)、抵抗メモリ(Resistive RAM(RRAM))、ナノチューブRRAM(Nanotube RRAM)、ポリマーRAM(Polymer RAM(PoRAM))、ナノフローティングゲートメモリ(Nano Floating Gate Memory(NFGM))、ホログラフィックメモリ(holographic memory)、分子電子メモリ素子(Molecular Electronic Memory Device)、又は、絶縁抵抗変化メモリ(Insulator Resistance Change Memory)で実現されてもよい。
【0067】
図2は、図1に示されたニューラルネットワーク演算装置の具現の一例を示す。
【0068】
図2を参照すると、ニューラルネットワーク演算装置(例えば、図1に示すニューラルネットワーク演算装置10)は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processor Unit)及びNPU(Neural Processing Unit)を含むメモリシステムと、演算装置(例えば、処理ユニット)を備えるプロセッサ(例えば、図1に示すプロセッサ200)、又は、ハードウェア加速器を用いてニューラルネットワーク演算を行うデータを、データが格納されているメモリ(例えば、図1のメモリ300)からロードして演算装置に割り当てる動作を行ってもよい。演算装置は、乗算器、加算器、又は、MAC(Multiply Accumulator)を含んでもよい。
【0069】
プロセッサ200は、ニューラルネットワーク演算に用いられるデータのスパース性を用いて、ニューラルネットワーク演算の性能を加速することができる。プロセッサ200は、駆動時間のうち任意の集合のデータに対して探索を行い、複数の演算装置それぞれが使用するデータを取得する方式を提供することができる。
【0070】
プロセッサ200は、演算装置の条件に応じて、スキップ条件に基づいて特定のデータをスキップし、演算装置間のデータの重複ロードなしにニューラルネットワーク演算を行うことができる。
【0071】
プロセッサ200は、複数の演算装置がデータのスパース性を用いて特定データをスキップし、指定された範囲内の複数の被演算データを選択することで不要な演算をスキップし、ニューラルネットワーク演算の性能を向上し、演算コストを低減させ得る。
【0072】
演算装置に入力される被演算データを取得することは、ニューラルネットワーク演算の間に共有され得るデータの候補のうち、特定候補を特定の演算装置が排他的に使用する権利を取得することを意味する。
【0073】
データのスキップは、予め決定された範囲(又は、閾値)のような特定の条件を満たすデータのみを演算装置に供給し、条件を満たさないデータは演算から排除することを意味する。例えば、プロセッサ200は、プルーニングネットワークの場合、圧縮や構造化を行うことなく、入力されるデータに対してニューラルネットワーク演算の速度を加速させることができる。
【0074】
ニューラルネットワーク演算装置10は、外部(external)IO(Input/Output)210、データメモリ230、データトラバーサルコントローラ250、及びデータ処理ユニット270(例えば、演算装置)を含む。
【0075】
外部IO210は、データの入出力インターフェースを含む。データメモリ230は、メモリ300に含まれてもよい。データトラバーサルコントローラ250は、プロセッサ200に含まれてもよい。データ処理ユニット270は、ニューラルネットワーク演算装置の外部に別に位置してもよい。
【0076】
データトラバーサルコントローラ250は、データが格納された制限された大きさのメモリ300のアドレスを更新して管理する。データトラバーサルコントローラ250は、データ探索経路を用いてデータを探索し、探索を通じて取得した被演算データをデータ処理ユニット270に出力する。
【0077】
データメモリ230は、データのスキップ条件及びデータの使用有無(例えば、ニューラルネットワーク演算における使用有無)を判断するためのインデックスを共に格納する。
【0078】
データトラバーサルコントローラ250は、時間の流れによるフェーズ(phase)ごと又はサイクル(cycle)にデータ送信が完了すれば、データ使用が完了した領域に対してアドレスアップデートを行ってもよい。例えば、データトラバーサルコントローラ250は、被演算データの決定に応答して、データ処理ユニット270の被演算データのアドレスをデータ探索経路上から排除してもよい。
【0079】
データトラバーサルコントローラ250は、データ探索経路によりデータを探索して被演算データを決定することで、データ処理ユニット270に被演算データ、データ取得順序、及びデータの位置に関連するメタデータを共に伝達することができる。
【0080】
図3は、図1に示されたニューラルネットワーク演算装置のデータの探索過程を示す。
【0081】
図3を参照すると、メモリ(例えば、図1に示すメモリ300)は、メモリユニット310を含んでもよい。プロセッサ(例えば、図1に示すプロセッサ200)は、演算装置(例えば、処理ユニット330)を含んでもよい。演算装置はプロセッサ200の外部に別に実現されてもよい。
【0082】
プロセッサ200は、負荷分散化(load balancing)を行うことにより、ニューラルネットワーク演算の処理時間を短縮させると共に、ハードウェアで用いられるエネルギーを減らし得る。
【0083】
負荷分散化とは、複数の処理ユニット330(例えば、演算装置)に用いられるデータDが処理ユニットPn+1、Pn+2、Pn+3...の1つの処理ユニットに用いられるように分配する過程を意味する。データDのデータは、複数の処理ユニット330のうち排他的に1つの処理ユニットにのみ使用されてもよい。
【0084】
プロセッサ200は、負荷分散化過程で発生し得る複数の処理ユニット330が同じデータをもってくる過程で発生し得る競合(competition)問題を効率よく解決することで、ハードウェアで競合解消による性能低下を招くことなく、ニューラルネットワーク演算を行うことができる。
【0085】
メモリユニット310には、任意の処理ユニットPで処理されるデータDが割り当てられる。処理ユニットPは、m個の処理ユニットの集合P={Pn+a、Pn+b、Pn+c、Pn+d...}の1つであってもよい。互いに異なる処理ユニットは、m個のデータ集合D={Dn+a、Dn+b、Dn+c、Dn+d...}のうちの一部又は全てについても、アクセスして条件に適するデータを探索してロードすることができる。
【0086】
集合内の任意の処理ユニットPがアクセスできるDの部分集合であるL個のデータ集合がD’={D、Dn+a、Dn+b、Dn+c、Dn+d...}であれば、他の処理ユニットPn+iがアクセスできるデータ集合は、Dn+i’={Dn+i、Dn+i+a、Dn+i+b、Dn+i+c、Dn+i+d...}であってもよい。ここで、アクセスの順序a、b、c、dは、全ての処理ユニットに同じである。
【0087】
処理ユニットPは、特定のフェーズ又はサイクルでデータ集合D’内のデータそれぞれに対して、D’[k:k+t-1]={D[k:k+t-1]、Dn+a[k:k+t-1]、Dn+b[k:k+t-1]、Dn+c[k:k+t-1]、Dn+d[k:k+t-1]...}の範囲でm回データを探索することができる。ここで、mはl×tを超過せず、各D’[i]は一つのフェーズ又はサイクルで1回のみ探索されてもよい。
【0088】
上記の条件に応じて、処理ユニットPは、次のような順にデータ集合D’をm回探索する。処理ユニットPは、[Dn+d[q]→Dn+e[r]→Dn+f[s]...]のような方式に、また、他の処理ユニットPn+iは、[Dn+d+i[q]→Dn+e+i[r]→Dn+f+i[s]...]のような方式にデータへアクセスできる。
【0089】
上記でPは、D’データに対して自身に割り当てられたD’[k:k+t-1]={D[k:k+t-1]、Dn+a[k:k+t-1]、Dn+b[k:k+t-1]、Dn+c[k:k+t-1]、Dn+d[k:k+t-1]...}に対して最小1回以上探索を行ってもよい。
【0090】
上記の探索過程で、スキップ条件を考慮してデータを検索した処理ユニットは、データを自身の入力として伝達し、該当データは、使用済みに設定して他の処理ユニットで使用されないように排除することができる。必要なデータを取得した処理ユニットは、探索終了状態に変更されてもよい。
【0091】
複数の処理ユニット330が、特定フェーズ又はサイクルで同じデータD[j]にアクセスして演算条件に適するか、他の処理ユニットによって使用されていない場合、複数の処理ユニット330がデータを使用するために競合が発生し得る。
【0092】
プロセッサ200は、発生する競合を解消するために、上記で予め決定されたデータのアクセス順に固有の優先順位を設定してもよい。例えば、プロセッサ200は、Pに対してDn+d[q]=1、Dn+e[r]=2Dn+f[s]=3...のように優先順位を設定してもよい。同様に、プロセッサ200は、Pn+iに対して、Dn+d+i[q]=1、Dn+e+i[r]=2Dn+f+i[s]=3...のように優先順位を設定してもよい。
【0093】
上記の優先順位は、各処理ユニットのデータアクセス順に対して同一に付与されてもよく、全てのアクセス順に対して互いに異なる優先順位が付与されてもよい。プロセッサ200は、データのアクセス順に関係なく、優先順位を設定してもよい。即ち、プロセッサ200は、初めてアクセスするデータに最も高い優先順位を設定し、最後にアクセスするデータに最も低い優先順位を設定してもよく、逆の順に設定してもよい。
【0094】
競合が発生する場合、プロセッサ200は、各データ探索経路に対して設定された優先順位を比較し、さらに高い優先順位を有する処理ユニットが該当のデータを取得するようにする。データを取得した処理ユニットは、探索を終了して取得に失敗した処理ユニットは、上記で指定された探索経路に沿ってデータの探索を続くことができる。
【0095】
最終的に、データを取得することのできない処理ユニットはnull演算を行ったり、有効でない結果を生成することがある。例えば、処理ユニットがMACである場合に0を生成する。
【0096】
各フェーズ又はサイクルにおいて、D[k:k+t-1]で全てのデータがスキップ条件に該当したり、使用されたD[y]がある場合、それをD[k:k+t-1]から除外し、k及びtをアップデートしてから、各処理ユニットが探索を繰り返し実行することができる。
【0097】
図4は、データをスキップする動作を示す。
【0098】
図4を参照すると、プロセッサ(例えば、図1に示すプロセッサ200)は、複数のデータのうち、第1データ探索経路及び第2データ探索経路上のデータに対する演算をスキップするか否かを決定する。
【0099】
プロセッサ200は、データが0である場合、データに対する演算をスキップすると決定したり、データが予め決定された範囲以内の値である場合、データに対する演算をスキップすると決定する。
【0100】
図4の例は、データが0である場合に演算をスキップすることを示したが、実施形態に応じて、0ではないデータに対してスキップを行ってもよい。演算装置(例えば、乗算器)の2つの入力A及びBに対して、A及びBは、演算装置の2つの入力を示し、nは演算順序を示す。
【0101】
フェーズ0、1、2は、データ探索の時点を意味する。プロセッサ200は、データ集合の右側から左側にデータを探索する。
【0102】
フェーズ0において、プロセッサ200は、データの集合410及びデータの集合420の最初に位置するデータであるA、Bを用いて、ニューラルネットワーク演算(例えば、乗算)を行ってもよい。
【0103】
フェーズ1において、プロセッサ200は、データ集合430のA及びデータ集合440のBを用いてニューラルネットワーク演算を行ってもよい。
【0104】
フェーズ2において、データ集合450は、Aに対応する位置のデータが0であるため、プロセッサ200は、Aに対応する位置のデータをスキップするものと決定してもよい。ここで、プロセッサ200は、データ集合460に対してもデータ集合450で発生したスキップに対応するよう、データBをスキップしてもよい。言い換えれば、データのスキップが発生する場合、同じ演算装置で用いられる複数のデータに対して、データをスキップに対応するデータ探索のホッピングオフセット(hopping offset)は同一であり得る。
【0105】
図4に示す実施形態において、スキップのない場合、合計4回の乗算が実行されなければならないが、プロセッサ200は、一部のデータをスキップすることによって、3回のフェーズ(又は、サイクル)のみで演算を行い、1/4の演算時間及びエネルギーを節約することができる。
【0106】
図5は、複数の演算装置でデータを探索する過程を示し、図6は、データ探索経路の一例を示す。
【0107】
図5及び図6を参照すると、プロセッサ(例えば、図1に示すプロセッサ200)は、データ探索経路に基づいてメモリ(例えば、図1に示すメモリ300)に格納されているデータを探索する。プロセッサ200は、データ探索経路により探索を行って演算装置(例えば、乗算器)に出力する被演算データを決定し、決定された被演算データを演算装置に送信する。
【0108】
データ探索経路は、データが格納されたメモリ300上の位置に対応するノード、及びノードの間を接続するエッジから構成されてもよい。図5に示す例示において、データ集合510及びデータ集合530の点線又は実線は、データ探索経路の例を示す。データ探索経路は、トラバース方向を有する。
【0109】
プロセッサ200は、予め決定されたデータ探索範囲に基づいてデータ探索経路を生成する。探索範囲は、探索するデータの数を意味する。例えば、図5の例示において、データ探索範囲は7であってもよく、図6に示す探索経路でデータ探索範囲は6であってもよい。
【0110】
プロセッサ200は、第1演算装置(例えば、乗算器)で演算を行うために、データ集合510において、A0、0、A0、1、A1、0、A1、1、A2、0、A2、1、A3、0の順にデータを探索し、データ集合530において、B0、0、B0、1、B1、0、B1、1、B2、0、B2、1、B3、0の順にデータを探索してもよい。
【0111】
同様に、プロセッサ200は、第2演算装置(例えば、乗算器)で演算を行うために、データ集合510において、A0、1、A0、2、A1、1、A1、2、A2、1、A2、2、A3、1の順にデータを探索し、データ集合530において、B0、1、B0、2、B1、1、B1、2、B2、1、B2、2、B3、1の順にデータを探索してもよい。
【0112】
プロセッサ200は、データ探索と同時に探索する演算装置により、探索時間が長くなるという短所をなくし、駆動時間中にデータの探索に参加する全ての演算装置が同時に探索を行うようにすることで、演算装置の個数を制限したり性能を制限する問題を解決することができる。
【0113】
プロセッサ200は、探索経路に互いに異なる優先順位を与えることで、複数の演算装置が演算することによって発生するデータの呼出の競合状況を解決することができる。
【0114】
プロセッサ200は、メモリ300の指定された領域に対して、それぞれの演算装置がデータを探索する順に応じてデータ探索経路を生成してもよい。プロセッサ200は、データが格納された位置をノードに設定し、ノード間をエッジとして接続することで、開始ノードから最後ノードに達するデータ探索経路を設定し得る。ここで、データ探索経路は方向性を有してもよい。
【0115】
プロセッサ200は、データ探索経路上のエッジとノードが重ならないように、データの探索経路を生成する。プロセッサ200は、データ探索経路上のノードに優先順位を設定してもよい。
【0116】
プロセッサ200は、第1データ探索経路及び第2データ探索経路に対する優先順位を設定してもよい。プロセッサ200は、第1データ探索経路上のデータに対応するノードが互いに異なる優先順位を有するように、第1優先順位を設定してもよい。プロセッサ200は、第2データ探索経路上のデータに対応するノードが互いに異なる優先順位を有するように、第2優先順位を設定してもよい。
【0117】
例えば、図6に示す例示において、プロセッサ200は、右側上のノードに優先順位に対応する数字として1を設定し、右側下のノードに優先順位に対応する数字として2を設定し、中間の上側ノードに優先順位に対応する数字として3を設定した。同様に、プロセッサ200は、6個のノードにそれぞれの優先順位を設定する。
【0118】
プロセッサ200は、相対的に低い数に対応するノードを優先順位の高いノードとして判断してもよい。反対に、プロセッサ200は、相対的に高い数に対応するノードを優先順位の低いノードとして判断してもよい。
【0119】
プロセッサ200は、競合の発生に応答して、優先順位に基づいて第1被演算データ及び第2被演算データを決定する。プロセッサ200は、第1データ探索経路に対応する第1優先順位と、第2データ探索経路に対応する第2優先順位とを比較することで、優先順位の高い探索経路を決定できる。
【0120】
プロセッサ200は、競合が発生した位置のデータを、優先順位の高い探索経路に対応する演算装置の被演算データとして決定する。第1優先順位が第2優先順位よりも大きい場合、プロセッサ200は、競合が発生した位置のデータを第1被演算データとして決定する。プロセッサ200は、第2データ探索経路上の次のデータを第2被演算データとして決定する。
【0121】
第1優先順位が第2優先順位よりも小さい場合、プロセッサ200は、競合が発生した位置のデータを第2被演算データとして決定する。プロセッサ200は、第1データ探索経路上の次のデータを第1被演算データとして決定する。
【0122】
上述したように、図6に示す例示において、データ探索範囲(又は、有効なデータに対する探索)は最大6回に制限され、プロセッサ200は、各データ探索経路上のメモリ位置に探索の長さに応じて優先順位を設定してもよい。
【0123】
プロセッサ200は、ニューラルネットワーク演算を行うために取得可能なデータを発見するまで、最大6回メモリを探索することができる。ここで、制限された回数内で演算候補(例えば、被演算データ)を決定しなければ、データの探索は終了し、予め指定された値を演算装置に伝達する。
【0124】
プロセッサ200は、メモリ300上のアドレス又は格納されたデータが更新される開始点から予め決定した、制限された長さのデータ探索経路を予め決定された方向性に応じて探索してもよい。
【0125】
データ探索経路上の複数のノードは、データ探索経路内で互いに異なる優先順位を有してもよい。プロセッサ200は、互いに異なる演算装置に送信するために、それぞれの演算装置に対応するデータ探索経路に沿って探索を行うとき、競合の発生したノードで各データ探索経路が有する優先順位を比較することができる。
【0126】
プロセッサ200は、さらに高い優先順位を有するデータ探索経路に対応する演算装置に、競合が発生したノードのデータを被演算データとして送信する。データ取得に失敗したデータ探索経路は生存性をもって、プロセッサ200は、データ取得に失敗したデータ探索経路を用いて、予め設定された探索範囲内で探索を続くことができる。
【0127】
図5及び図6に示す例示において、データ探索経路を鋸歯状に設定したが、実施形態に応じてデータ探索経路は互いに異なってもよい。
【0128】
図7A図7Cは、時間の流れによるデータの探索過程を示す。
【0129】
図7A図7Cを参照すると、プロセッサ200は、複数の演算装置(例えば、第1演算装置及び第2演算装置)に対応する複数のデータ探索経路(例えば、第1データ探索経路及び第2データ探索経路)に沿って、ニューラルネットワーク演算に用いられる被演算データを決定することができる。
【0130】
図7に示す例示において、プロセッサ200は、第1演算装置(例えば、MUL0)に対応する第1データ探索経路、及び第2演算装置(例えば、MUL1)に対応する第2データ探索経路によりデータ探索を行いながら、第1演算装置に用いられる第1被演算データ及び第2演算装置に用いられる第2被演算データを決定することができる。
【0131】
図7Aの例示は、フェーズ0(又は、サイクル0)における探索動作を示す。プロセッサ200は、上述したように特定のスキップ条件が満たされるデータをスキップすることができる。
【0132】
プロセッサ200は、第1データ探索経路上の最初のデータを探索した結果データが0であることを確認し、0であるデータをスキップする。プロセッサ200は、第1データ探索経路上の次のデータであるA0、1を第1被演算データとして決定しようとしたが、A0、1は、第2データ探索経路上の最初のデータであるため、競合が発生し得る。
【0133】
即ち、第1演算装置は、0であるデータをスキップし、第1データ探索経路上の次のデータであるA0、1を取得しようとしたが、第2演算装置が同じデータを取得しようとするため、競合が発生し得る。
【0134】
プロセッサ200は、競合の発生に応答して、優先順位に基づいて第1被演算データ及び第2被演算データを決定することができる。プロセッサ200は、第1データ探索経路に対応する第1優先順位と第2データ探索経路に対応する第2優先順位とを比較することで、優先順位の高い探索経路を決定する。
【0135】
優先順位及び優先順位に対応する数は、図6を参照して説明したものと同様に割り当てられてもよい。従って、図7Aにおいて、第1データ探索経路上でデータA0、1に対応する優先順位に対応する数は1であり、第2データ探索経路上でデータA0、1に対応する優先順位に対応する数は2である。
【0136】
低い数に対応するノードが優先権を有する場合、第1データ探索経路が第2データ探索経路に比べて優先順位が高いため、プロセッサ200は、A0,1を第2被演算データとして決定する。したがって、プロセッサ200は、A0、1を第2演算装置に送信し、探索が終了される。
【0137】
第1演算装置は、データA0、1に対する取得に失敗したため、プロセッサ200は、第1データ探索経路に沿って探索を持続することができる。第1データ探索経路上の次のデータは、データA1、0であるため、プロセッサ200は、データA1、0を第1被演算データとして決定して第1演算装置へ送信し、フェーズ0における探索を終了する。
【0138】
プロセッサ200は、被演算データの決定に応答して、被演算データとして決定されたデータアドレスをデータ探索経路上から排除してもよい。図7Aの例示において、プロセッサ200は、被演算データとして決定されて演算装置に送信されたA0、1及びA1、0に既に取得したという情報を表示したり、データを0に変えることで、次のフェーズのデータ探索から排除させてもよい。
【0139】
図7Bに示す例示は、フェーズ1(又は、サイクル1)における探索動作を示す。フェーズ1において、第1データ探索経路の次のデータであるA1、1及び第2データ探索経路の次のデータであるA0、2は全て0ではないため、プロセッサ200はスキップを行わなくてもよい。
【0140】
プロセッサ200は、第1データ探索経路上で既に探索したデータである0、A0、1、A1、0を排除し、第2データ探索経路上で既に探索したデータであるA0、1を排除した状態でデータ探索を行うことができる。
【0141】
プロセッサ200は、第1データ探索経路上の次の順序のデータであるA1、1を第1被演算データとして決定して第1演算装置に送信し、第2データ探索経路上の次の順序のデータであるA0、2を第2被演算データとして決定して第2演算装置に送信する。また、演算装置に送信されて演算に用いられたデータであるA1、1及びA0、2をデータ探索経路から排除する。
【0142】
図7Cの例示は、フェーズ2(又は、サイクル2)における探索動作を示す。フェーズ1において、第1データ探索経路の次のデータは0であるため、プロセッサ200は0であるデータをスキップする。
【0143】
第2データ探索経路の次のデータはA1、1であって、以前フェーズから排除されたデータであるため、プロセッサ200はA1、1をスキップする。第2データ探索経路上でA1、1の次の順序のデータは0であるため、プロセッサ200は再びスキップしてもよい。
【0144】
この場合、第1データ探索経路上の次のデータはA2、1であり、第2データ探索経路上の次のデータもA2、1であるため、競合が発生する可能性がある。プロセッサ200は、優先順位に基づいてA2、1が送信される演算装置を決定してもよい。優先順位に対応する数は、図6に示す例示のように設定されてもよい。
【0145】
第1データ探索経路のA2、1の優先順位に対応する数は6であり、第2データ探索経路のA2、1の優先順位に対応する数は5であるため、プロセッサ200は第2データ探索経路の優先順位が高いと判断し、A2、1を第2被演算データとして決定することができる。
【0146】
ここで、第1データ探索経路は、予め決定された探索範囲が終了したため、プロセッサ200は、取得可能なデータがないという意味としてNAを第1演算装置に出力することができる。
【0147】
プロセッサ200は、予め決定された探索範囲に対する探索完了に応答して、複数のデータに対する第1データ探索経路及び第2データ探索経路を更新し得る。図7Cにおいて、プロセッサ200は、第1データ探索経路又は第2データ探索経路を更新して新しいメモリ領域上のデータを探索することができる。
【0148】
図8は、データ探索経路の他の例を示す。
【0149】
図8を参照すると、プロセッサ200は、正方形の形状に配列されていないデータに対してデータ探索を行ってもよい。また、プロセッサ200は、演算装置が3つ以上である場合についても並列的にデータ探索を行うことができる。
【0150】
図8の例示のように、3つの演算装置が1つのデータ集合830を共有しようとする場合、図7A図7Cを参照して説明したように、データ探索を行ってもよい。この場合、プロセッサ200は、データ探索経路810を用いてデータの探索を行うことができる。
【0151】
データ探索経路の競合が発生したり、0であるデータが探索された場合の処理方式について、図7A図7Cと同一である。上述したデータ探索を介して、プロセッサ200は、ニューラルネットワーク演算で消耗する電力を節減し、演算の効率を向上することができる。
【0152】
図9は、データを探索してニューラルネットワークを行う過程を示す。
【0153】
図9を参照すると、ニューラルネットワーク演算装置(例えば、図1のニューラルネットワーク演算装置10)を用いてニューラルネットワーク演算を行う過程を示す。
【0154】
プロセッサ(例えば、図1のプロセッサ200)は、スパース性(sparsity)を有する入力データ(例えば、活性化値)をメモリ(例えば、データバッファ)に格納し、格納されたデータを探索して有効なデータをMACアレイ910にインデックス情報(例えば、被演算データのメモリ上のアドレス)と共に送信し、重み930を選択することでニューラルネットワーク演算を行うことができる。
【0155】
プロセッサ200は、演算装置(例えば、MACアレイ910)のそれぞれの処理ユニットに入力されるデータをデータ探索経路に沿って探索し、優先順位に基づいて被演算データを決定することができる。
【0156】
例えば、受信器(例えば、図1の受信器100)はデータ950を受信し、プロセッサ200に出力してもよい。
【0157】
プロセッサ200は、受信したデータ970に対して探索を行う。プロセッサ200は、データ970の一部に対応する領域について上記で説明したような方式に基づいて特定の値のデータをスキップし、データ探索経路の優先順位に基づいてデータ探索を行う。
【0158】
プロセッサ200は、探索を介して決定された被演算データをMACアレイ910に送信し、MACアレイ910から出力された演算結果に基づいて出力活性化値990を生成する。
【0159】
優先順位に基づくデータ探索を用いて、プロセッサ200は、ニューラルネットワーク演算で負荷の均等化を行って演算を行うことができる。そのため、プロセッサ200は、演算装置の個数による複雑度の増加を抑制し、実際のハードウェアを実現したときに、従来方式に比べて高い演算性能を達成することができる。
【0160】
図10は、図1に示されたニューラルネットワーク演算装置の具現の他の例を示す。
【0161】
図10の例示は、ニューラルネットワーク演算装置(例えば、図1のニューラルネットワーク演算装置10)を適用したスパース性MAC演算装置の具現例を示す。
【0162】
スパース性MAC演算装置は、スパース性ユニット1030及びMACアレイ1050を有する。プロセッサ(例えば、図1のプロセッサ200)は、スパース性ユニット1030の内部又は外部に具現化されてもよい。
【0163】
MACアレイ1050は、上記で説明した演算装置に含まれてもよい。
【0164】
スパース性ユニット1030は、優先順位に基づいてデータ探索1010を行う。スパース性ユニット1030は、上記で説明したものと同じ方式で、データ探索経路に沿ってデータを探索し、MACアレイにデータを送信する。
【0165】
図11は、図1に示すニューラルネットワーク演算装置の動作のフローチャートを示す。
【0166】
図11を参照すると、図11に示す動作は順に実行されてもよく、説明された実施形態の範囲を離脱することなく、一部の動作が変更されたり省略されてもよい。図11に示す動作は、並列的又は同時に実行されてもよい。図11の1つ以上のブロック又はブロックの組み合せは、特定の機能を行うプロセッサのような特殊目的のハードウェア基盤コンピュータ又は特殊目的のハードウェア及びコンピュータ命令の組み合わせによって実行されてもよい。以下の説明及び図1図10の説明についても図11に適用されてもよい。図1図10の説明は重複して記載しない。
【0167】
受信器100は、ニューラルネットワーク演算を行うための複数のデータを受信する(S1110)。
【0168】
プロセッサ200は、複数のデータのうち第1データ探索経路(data search path)及び第2データ探索経路上のデータに対する演算をスキップするか否かを決定する。プロセッサ200は、データが0である場合、前記データに対する演算をスキップするものと決定したり、データが予め決定された範囲以内の値である場合、データに対する演算をスキップすると決定する。
【0169】
プロセッサ200は、第1演算装置に対応する第1データ探索経路及び第2演算装置に対応する第2データ探索経路の競合有無を判断する(S1130)。プロセッサ200は、任意の時点で第1演算装置と第2演算装置が同じデータにアクセスする場合、第1データ探索経路と第2データ探索経路の競合が発生したと判断する。
【0170】
プロセッサ200は、競合の有無及び第1データ探索経路と第2データ探索経路との間の優先順位を用いて、複数のデータのうち第1被演算データ及び第2被演算データを決定する(S1150)。
【0171】
プロセッサ200は、第1データ探索経路及び第2データ探索経路に対する優先順位を設定する。プロセッサ200は、第1データ探索経路上のデータに対応するノードが互いに異なる優先順位を有するよう、第1優先順位を設定してもよい。プロセッサ200は、第2データ探索経路上のデータに対応するノードが、互いに異なる優先順位を有するように第2優先順位を設定してもよい。
【0172】
プロセッサ200は、競合の発生に応答して、優先順位に基づいて第1被演算データ及び第2被演算データを決定する。プロセッサ200は、第1データ探索経路に対応する第1優先順位と、第2データ探索経路に対応する第2優先順位とを比較することで、優先順位が高い探索経路を決定することができる。
【0173】
プロセッサ200は、競合が発生した位置のデータを優先順位の高い探索経路に対応する演算装置の被演算データとして決定する。第1優先順位が第2優先順位よりも大きい場合、プロセッサ200は、競合が発生した位置のデータを第1被演算データとして決定する。プロセッサ200は、第2データ探索経路上の次のデータを第2被演算データとして決定する。
【0174】
第1優先順位が第2優先順位よりも小さい場合、プロセッサ200は、競合が発生した位置のデータを第2被演算データとして決定する。プロセッサ200は、第1データ探索経路上の次のデータを第1被演算データとして決定する。
【0175】
プロセッサ200は、第1被演算データ及び第2被演算データの決定に応答して、第1被演算データ及び第2被演算データのアドレスを第1データ探索経路及び第2データ探索経路上から排除することができる。
【0176】
プロセッサ200は、第1被演算データ及び第2被演算データに基づいてニューラルネットワーク演算を行う(S1170)。
【0177】
第1データ探索経路及び第2データ探索経路は、予め決定された探索範囲を有する。プロセッサ200は、予め決定された探索範囲に対する探索完了に応答して、複数のデータに対する第1データ探索経路及び第2データ探索経路を更新できる。
【0178】
第1データ探索経路及び第2データ探索経路は、予め決定された探索範囲を有する。プロセッサ200は、予め決定された探索範囲に対する探索完了に応答して、複数のデータに対する第1データ探索経路及び第2データ探索経路を更新することができる。
【0179】
以上で説明した実施形態は、ハードウェア構成要素、ソフトウェア構成要素、又はハードウェア構成要素及びソフトウェア構成要素の組み合せで具現化される。例えば、本実施形態で説明した装置及び構成要素は、例えば、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ(digital signal processor)、マイクロコンピュータ、FPA(field programmable array)、PLU(programmable logic unit)、マイクロプロセッサ、又は命令(instruction)を実行して応答する異なる装置のように、1つ以上の汎用コンピュータ又は特殊目的コンピュータを用いて具現化される。処理装置は、オペレーティングシステム(OS)及び前記オペレーティングシステム上で行われる1つ以上のソフトウェアアプリケーションを行うことができる。また、処理装置は、ソフトウェアの実行に応答してデータをアクセス、格納、操作、処理及び生成することもできる。理解の利便のために、処理装置は、1つが使用されるものと説明される場合もあるが、当該技術分野において通常の知識を有する者は、処理装置が複数の処理要素(processing element)及び又は複数のタイプの処理要素を含んでいることが分かる。例えば、処理装置は、複数のプロセッサ又は一つのプロセッサ及び一つのコントローラを含んでもよい。また、並列プロセッサのような、他の処理構成も可能である。
【0180】
ソフトウェアは、コンピュータプログラム、コード、命令、又はそのうちの一つ以上の組合せを含み、希望の通りに動作するよう処理装置を構成したり、独立的又は結合的に処理装置を命令することができる。ソフトウェア及び/又はデータは、処理装置によって解釈されたり処理装置に命令又はデータを提供するために、いずれかの類型の機械、構成要素、物理的装置、仮想装置、コンピュータ格納媒体又は装置、又は送信される信号波に永久的又は一時的に具体化することができる。ソフトウェアはネットワークに連結されたコンピュータシステム上に分散され、分散した方法で格納されたり実行され得る。ソフトウェア及びデータは一つ以上のコンピュータで読出し可能な記録媒体に格納され得る。
【0181】
実施形態に係る方法は、様々なコンピュータ手段を介して実施されるプログラム命令の形態で具現化され、コンピュータ読み取り可能な記録媒体に記録される。記録媒体は、プログラム命令、データファイル、データ構造などを単独又は組み合せて含む。記録媒体及びプログラム命令は、本発明の目的のために特別に設計して構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知のものであり使用可能なものであってもよい。コンピュータ読み取り可能な記録媒体の例として、ハードディスク、フロッピー(登録商標)ディスク及び磁気テープのような磁気媒体、CD-ROM、DVDのような光記録媒体、フロプティカルディスクのような磁気-光媒体、及びROM、RAM、フラッシュメモリなどのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置を含む。プログラム命令の例としては、コンパイラによって生成されるような機械語コードだけでなく、インタプリタなどを用いてコンピュータによって実行される高級言語コードを含む。上記で説明したハードウェア装置は、本発明に示す動作を実行するために1つ以上のソフトウェアモジュールとして作動するように構成してもよく、その逆も同様である。
【0182】
上述したように実施形態をたとえ限定された図面によって説明したが、当技術分野で通常の知識を有する者であれば、上記の説明に基づいて様々な技術的な修正及び変形を適用することができる。例えば、説明された技術が説明された方法と異なる順で実行されるし、及び/又は説明されたシステム、構造、装置、回路などの構成要素が説明された方法と異なる形態で結合又は組み合わせられてもよいし、他の構成要素又は均等物によって置き換え又は置換されたとしても適切な結果を達成することができる。
【0183】
したがって、本発明の範囲は、開示された実施形態に限定されて定められるものではなく、特許請求の範囲及び特許請求の範囲と均等なものなどによって定められるものである。
【符号の説明】
【0184】
10 ニューラルネットワーク演算装置
100 受信器
200 プロセッサ
300 メモリ

図1
図2
図3
図4
図5
図6
図7A
図7B
図7C
図8
図9
図10
図11