(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-27
(54)【発明の名称】ニューラルネットワーク量子化の動的スケーリングのための人工知能プロセッサアーキテクチャ
(51)【国際特許分類】
G06N 3/0495 20230101AFI20240319BHJP
G06F 9/38 20180101ALI20240319BHJP
G06F 15/80 20060101ALI20240319BHJP
G06N 3/063 20230101ALI20240319BHJP
【FI】
G06N3/0495
G06F9/38 370C
G06F15/80
G06N3/063
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023557775
(86)(22)【出願日】2022-02-25
(85)【翻訳文提出日】2023-09-20
(86)【国際出願番号】 US2022017855
(87)【国際公開番号】W WO2022203809
(87)【国際公開日】2022-09-29
(32)【優先日】2021-03-24
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】507364838
【氏名又は名称】クアルコム,インコーポレイテッド
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100163522
【氏名又は名称】黒田 晋平
(72)【発明者】
【氏名】ヒ・ジュン・パク
(72)【発明者】
【氏名】エリック・ウェイン・マハリン
(72)【発明者】
【氏名】テイメン・ピーテル・フレーデリック・ブランケフォールト
【テーマコード(参考)】
5B013
【Fターム(参考)】
5B013DD03
(57)【要約】
様々な実施形態は、人工知能(AI)プロセッサによってニューラルネットワークを処理するための方法およびデバイスを含む。実施形態は、AIプロセッサ動作条件情報を受信することと、動作条件情報に応答してニューラルネットワークのセグメントのためのAI量子化レベルを動的に調整することと、調整されたAI量子化レベルを使用してニューラルネットワーク量子化のセグメントを処理することとを含んでもよい。
【特許請求の範囲】
【請求項1】
人工知能(AI)プロセッサによってニューラルネットワークを処理するための方法であって、
AIプロセッサ動作条件情報を受信するステップと、
前記動作条件情報に応答して前記ニューラルネットワークのセグメントのためのAI量子化レベルを動的に調整するステップと、
前記調整されたAI量子化レベルを使用して前記ニューラルネットワークの前記セグメントを処理するステップと
を備える、方法。
【請求項2】
前記ニューラルネットワークの前記セグメントのための前記AI量子化レベルを動的に調整するステップが、
前記AIプロセッサの処理能力の制約を増やした動作条件のレベルを示す前記動作条件情報に応答して、前記AI量子化レベルを上げるステップと、
前記AIプロセッサの前記処理能力の制約を減らした前記動作条件のレベルを示す動作条件情報に応答して、前記AI量子化レベルを下げるステップと
を備える、請求項1に記載の方法。
【請求項3】
前記動作条件情報が、温度、電力消費、動作周波数、または処理ユニットの利用率というグループのうちの少なくとも1つである、請求項1に記載の方法。
【請求項4】
前記ニューラルネットワークの前記セグメントのための前記AI量子化レベルを動的に調整するステップが、前記ニューラルネットワークの前記セグメントによって処理されることになる重み値を量子化するための前記AI量子化レベルを調整するステップを備える、請求項1に記載の方法。
【請求項5】
前記ニューラルネットワークの前記セグメントのための前記AI量子化レベルを動的に調整するステップが、前記ニューラルネットワークの前記セグメントによって処理されることになる活性化値を量子化するための前記AI量子化レベルを調整するステップを備える、請求項1に記載の方法。
【請求項6】
前記ニューラルネットワークの前記セグメントのための前記AI量子化レベルを動的に調整するステップが、前記ニューラルネットワークの前記セグメントによって処理されることになる重み値および活性化値を量子化するための前記AI量子化レベルを調整するステップを備える、請求項1に記載の方法。
【請求項7】
前記AI量子化レベルが、量子化すべき、前記ニューラルネットワークによって処理されることになる値の動的ビットを示すように構成され、
前記調整されたAI量子化レベルを使用して前記ニューラルネットワークの前記セグメントを処理するステップが、前記値の前記動的ビットに関連する積和演算器(MAC)の一部を迂回するステップを備える、請求項1に記載の方法。
【請求項8】
AIサービス品質(QoS)因子を使用してAI QoS値を決定するステップと、
前記AI QoS値を達成するために前記AI量子化レベルを決定するステップと
をさらに備える、請求項1に記載の方法。
【請求項9】
前記AI QoS値が、前記AIプロセッサによって生成される結果の正確さおよび前記AIプロセッサのスループットの目標を表す、請求項8に記載の方法。
【請求項10】
人工知能(AI)プロセッサであって、
AIプロセッサ動作条件情報を受信し、
前記動作条件情報に応答してニューラルネットワークのセグメントのためのAI量子化レベルを動的に調整する
ように構成される動的量子化コントローラと、
前記調整されたAI量子化レベルを使用して前記ニューラルネットワークの前記セグメントを処理するように構成される積和演算器(MAC)アレイと
を備える、AIプロセッサ。
【請求項11】
前記動的量子化コントローラが、前記ニューラルネットワークの前記セグメントのための前記AI量子化レベルを動的に調整することが、
前記AIプロセッサの処理能力の制約を増やした動作条件のレベルを示す前記動作条件情報に応答して、前記AI量子化レベルを上げることと、
前記AIプロセッサの前記処理能力の制約を減らした前記動作条件のレベルを示す動作条件情報に応答して、前記AI量子化レベルを下げることと
を備えるように構成される、請求項10に記載のAIプロセッサ。
【請求項12】
前記動的量子化コントローラが、前記動作条件情報が、温度、電力消費、動作周波数、または処理ユニットの利用率というグループのうちの少なくとも1つであるように構成される、請求項10に記載のAIプロセッサ。
【請求項13】
前記動的量子化コントローラが、前記ニューラルネットワークの前記セグメントのための前記AI量子化レベルを動的に調整することが、前記ニューラルネットワークの前記セグメントによって処理されることになる重み値を量子化するための前記AI量子化レベルを調整することを備えるように構成される、請求項10に記載のAIプロセッサ。
【請求項14】
前記動的量子化コントローラが、前記ニューラルネットワークの前記セグメントのための前記AI量子化レベルを動的に調整することが、前記ニューラルネットワークの前記セグメントによって処理されることになる活性化値を量子化するための前記AI量子化レベルを調整することを備えるように構成される、請求項10に記載のAIプロセッサ。
【請求項15】
前記動的量子化コントローラが、前記ニューラルネットワークの前記セグメントのための前記AI量子化レベルを動的に調整することが、前記ニューラルネットワークの前記セグメントによって処理されることになる重み値および活性化値を量子化するための前記AI量子化レベルを調整することを備えるように構成される、請求項10に記載のAIプロセッサ。
【請求項16】
前記AI量子化レベルが、量子化すべき、前記ニューラルネットワークによって処理されることになる値の動的ビットを示すように構成され、
前記MACアレイが、前記調整されたAI量子化レベルを使用して前記ニューラルネットワークの前記セグメントを処理することが、前記値の前記動的ビットに関連するMACの一部を迂回することを備えるように構成される、請求項10に記載のAIプロセッサ。
【請求項17】
ニューラルネットワーク量子化を動的に構成すると決定したことに応答してAIサービス品質(QoS)因子を使用してAI QoS値を決定し、
前記AI QoS値を達成するために前記AI量子化レベルを決定する
ように構成されるAI QoSデバイスをさらに備える、請求項10に記載のAIプロセッサ。
【請求項18】
前記AI QoSデバイスが、前記AI QoS値が、前記AIプロセッサによって生成される結果の正確さおよび前記AIプロセッサのスループットの目標を表すように構成される、請求項17に記載のAIプロセッサ。
【請求項19】
コンピューティングデバイスであって、
人工知能(AI)プロセッサ動作条件情報を受信し、
前記動作条件情報に応答してニューラルネットワークのセグメントのためのAI量子化レベルを動的に調整する
ように構成される動的量子化コントローラを備える、AIプロセッサを備え、
前記AIプロセッサが、前記調整されたAI量子化レベルを使用して前記ニューラルネットワークの前記セグメントを処理するように構成される積和演算器(MAC)アレイをさらに備える、コンピューティングデバイス。
【請求項20】
前記動的量子化コントローラが、
前記AIプロセッサの処理能力の制約を増やした動作条件のレベルを示す前記動作条件情報に応答して、前記AI量子化レベルを上げ、
前記AIプロセッサの前記処理能力の制約を減らした前記動作条件のレベルを示す動作条件情報に応答して、前記AI量子化レベルを下げる
ことによって、前記ニューラルネットワークの前記セグメントのための前記AI量子化レベルを動的に調整するように構成される、請求項19に記載のコンピューティングデバイス。
【請求項21】
前記動的量子化コントローラが、前記動作条件情報が、温度、電力消費、動作周波数、または処理ユニットの利用率というグループのうちの少なくとも1つであるように構成される、請求項19に記載のコンピューティングデバイス。
【請求項22】
前記動的量子化コントローラが、前記ニューラルネットワークの前記セグメントによって処理されることになる重み値を量子化するための前記AI量子化レベルを調整することによって、前記ニューラルネットワークの前記セグメントのための前記AI量子化レベルを動的に調整するように構成される、請求項19に記載のコンピューティングデバイス。
【請求項23】
前記動的量子化コントローラが、前記ニューラルネットワークの前記セグメントによって処理されることになる活性化値を量子化するための前記AI量子化レベルを調整することによって、前記ニューラルネットワークの前記セグメントのための前記AI量子化レベルを動的に調整するように構成される、請求項19に記載のコンピューティングデバイス。
【請求項24】
前記動的量子化コントローラが、前記ニューラルネットワークの前記セグメントによって処理されることになる重み値および活性化値を量子化するための前記AI量子化レベルを調整することによって、前記ニューラルネットワークの前記セグメントのための前記AI量子化レベルを動的に調整するように構成される、請求項19に記載のコンピューティングデバイス。
【請求項25】
前記AI量子化レベルが、量子化すべき、前記ニューラルネットワークによって処理されることになる値の動的ビットを示すように構成され、
前記MACアレイが、前記値の前記動的ビットに関連するMACの一部を迂回することによって、前記調整されたAI量子化レベルを使用して前記ニューラルネットワークの前記セグメントを処理するように構成される、請求項19に記載のコンピューティングデバイス。
【請求項26】
AIサービス品質(QoS)因子を使用してAI QoS値を決定し、
前記AI QoS値を達成するために前記AI量子化レベルを決定する
ように構成されるAI QoSデバイスをさらに備える、請求項19に記載のコンピューティングデバイス。
【請求項27】
前記AI QoSデバイスが、前記AI QoS値が、前記AIプロセッサによって生成される結果の正確さおよび前記AIプロセッサのスループットの目標を表すように構成される、請求項26に記載のコンピューティングデバイス。
【請求項28】
人工知能(AI)プロセッサであって、
AIプロセッサの動作条件情報を受信するための手段と、
前記動作条件情報に応答してニューラルネットワークのセグメントのためのAI量子化レベルを動的に調整するための手段と、
前記調整されたAI量子化レベルを使用して前記ニューラルネットワークの前記セグメントを処理するための手段と
を備える、AIプロセッサ。
【請求項29】
前記ニューラルネットワークの前記セグメントのための前記AI量子化レベルを動的に調整するための手段が、
前記AIプロセッサの処理能力の制約を増やした動作条件のレベルを示す前記動作条件情報に応答して、前記AI量子化レベルを上げるための手段と、
前記AIプロセッサの前記処理能力の制約を減らした前記動作条件のレベルを示す動作条件情報に応答して、前記AI量子化レベルを下げるための手段と
を備える、請求項28に記載のAIプロセッサ。
【請求項30】
前記動作条件情報が、温度、電力消費、動作周波数、または処理ユニットの利用率というグループのうちの少なくとも1つである、請求項28に記載のAIプロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願
本出願は、その内容全体が参照により本明細書に組み込まれる、2021年3月24日に出願された米国特許出願第17/210,644号の優先権の利益を主張する。
【背景技術】
【0002】
現代のコンピューティングシステムは、システムオンチップ(SoC)上で複数のニューラルネットワークを実行しており、SoCのプロセッサにとって負担の大きいニューラルネットワークの負荷につながる。ニューラルネットワークを実行するためのプロセッサアーキテクチャの最適化にもかかわらず、重い作業負荷のもとでのニューラルネットワーク処理にとって、熱が制約因子として残っており、それは、処理性能に影響を与えるプロセッサの動作周波数を下げることにより、熱管理が実施されるからである。ミッションクリティカルシステムにおいて動作周波数を下げることは、ユーザ体験、製品品質、動作上の安全性などの低下をもたらし得る致命的な問題を引き起こし得る。
【発明の概要】
【課題を解決するための手段】
【0003】
様々な開示される態様は、人工知能(AI)プロセッサによってニューラルネットワークを処理するための装置および方法を含んでもよい。様々な態様は、AIプロセッサ動作条件情報を受信することと、動作条件情報に応答してニューラルネットワークのセグメントのためのAI量子化レベルを動的に調整することと、調整されたAI量子化レベルを使用してニューラルネットワークのセグメントを処理することとを含んでもよい。
【0004】
いくつかの態様では、ニューラルネットワークのセグメントのためのAI量子化レベルを動的に調整することは、AIプロセッサの処理能力の制約を増やした動作条件のレベルを示す動作条件情報に応答して、AI量子化レベルを上げることと、AIプロセッサの処理能力の制約を減らした動作条件のレベルを示す動作条件情報に応答して、AI量子化レベルを下げることとを含んでもよい。
【0005】
いくつかの態様では、動作条件情報は、温度、電力消費、動作周波数、または処理ユニットの利用率というグループのうちの少なくとも1つであってもよい。
【0006】
いくつかの態様では、ニューラルネットワークのセグメントのためのAI量子化レベルを動的に調整することは、ニューラルネットワークのセグメントによって処理されることになる重み値を量子化するためのAI量子化レベルを調整することを含んでもよい。
【0007】
いくつかの態様では、ニューラルネットワークのセグメントのためのAI量子化レベルを動的に調整することは、ニューラルネットワークのセグメントによって処理されることになる活性化値を量子化するためのAI量子化レベルを調整することを含んでもよい。
【0008】
いくつかの態様では、ニューラルネットワークのセグメントのためのAI量子化レベルを動的に調整することは、ニューラルネットワークのセグメントによって処理されることになる重み値および活性化値を量子化するためのAI量子化レベルを調整することを含んでもよい。
【0009】
いくつかの態様では、AI量子化レベルは、量子化すべき、ニューラルネットワークにより処理されることになる値の動的ビットを示すように構成されてもよく、調整されたAI量子化レベルを使用してニューラルネットワークのセグメントを処理することは、その値の動的ビットに関連する積和演算器(MAC)の一部を迂回することを含んでもよい。
【0010】
いくつかの態様は、AIサービス品質(QoS)因子を使用してAI QoS値を決定することと、AI QoS値を達成するためのAI量子化レベルを決定することとをさらに含んでもよい。いくつかの態様では、AI QoS値は、AIプロセッサによって生成される結果の正確さおよびAIプロセッサのスループット(たとえば、秒当たりの推論)の目標を表してもよい。
【0011】
さらなる態様は、上で要約された方法のいずれかの動作を実行するように構成される、動的量子化コントローラおよびMACアレイを含むAIプロセッサを含んでもよい。さらなる態様は、上で要約された方法のいずれかの動作を実行するように構成される、動的量子化コントローラおよびMACアレイを含むAIプロセッサを有するコンピューティングデバイスを含んでもよい。さらなる態様は、上で要約された方法のいずれかの機能を実行するための手段を含むAIプロセッサを含んでもよい。
【0012】
本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、様々な実施形態のうちの例示的な実施形態を示し、上記の一般的な説明および下記の発明を実施するための形態とともに、特許請求の範囲の特徴を説明するのに役立つ。
【図面の簡単な説明】
【0013】
【
図1】様々な実施形態を実装するのに適した、例示的なコンピューティングデバイスを示すコンポーネントブロック図である。
【
図2A】様々な実施形態を実装するのに適した、動的ニューラルネットワーク量子化アーキテクチャを有する例示的な人工知能(AI)プロセッサを示すコンポーネントブロック図である。
【
図2B】様々な実施形態を実装するのに適した、動的ニューラルネットワーク量子化アーキテクチャを有する例示的なAIプロセッサを示すコンポーネントブロック図である。
【
図3】様々な実施形態を実装するのに適した、動的ニューラルネットワーク量子化アーキテクチャを有する例示的なシステムオンチップ(SoC)を示すコンポーネントブロック図である。
【
図4A】様々な実施形態を実装するのに適した、例示的なAIサービス品質(QoS)関係を示すグラフ図である。
【
図4B】様々な実施形態を実装するのに適した、例示的なAI QoS関係を示すグラフ図である。
【
図5】様々な実施形態において、動的ニューラルネットワーク量子化アーキテクチャを実装することによるAIプロセッサ動作周波数における例示的な利益を示すグラフ図である。
【
図6】様々な実施形態による、動的ニューラルネットワーク量子化アーキテクチャを実装することによるAIプロセッサ動作周波数における例示的な利益を示すグラフ比較図である。
【
図7】様々な実施形態を実装するのに適した、動的ニューラルネットワーク量子化アーキテクチャにおける積和演算器(MAC)における迂回の例を示すコンポーネント概略図である。
【
図8】ある実施形態による、AI QoS決定のための方法を示すプロセスフロー図である。
【
図9】ある実施形態による、動的ニューラルネットワーク量子化アーキテクチャ構成制御のための方法を示すプロセスフロー図である。
【
図10】ある実施形態による、動的ニューラルネットワーク量子化アーキテクチャ再構成のための方法を示すプロセスフロー図である。
【
図11】様々な実施形態による、AIプロセッサを実装するのに適した例示的なモバイルコンピューティングデバイスを示すコンポーネントブロック図である。
【
図12】様々な実施形態による、AIプロセッサを実装するのに適した例示的なモバイルコンピューティングデバイスを示すコンポーネントブロック図である。
【
図13】様々な実施形態による、AIプロセッサを実装するのに適した例示的なサーバを示すコンポーネントブロック図である。
【発明を実施するための形態】
【0014】
様々な実施形態が、添付の図面を参照して詳細に説明される。可能な場合はいつでも、同じまたは同様の部分を指すために、図面全体にわたって同じ参照番号が使用される。特定の例および実装形態に対してなされる言及は、例示を目的としており、特許請求の範囲を限定することを意図したものではない。
【0015】
様々な実施形態は、ニューラルネットワーク量子化アーキテクチャを動的に構成するための方法、およびそのような方法を実施するコンピューティングデバイスを含んでもよい。いくつかの実施形態は、人工知能(AI)プロセッサ、AIプロセッサを有するシステムオンチップ(SoC)、AIプロセッサによってアクセスされるメモリ、および/またはAIプロセッサの他の周辺装置の動作条件に基づいて、量子化、マスキング、および/またはニューラルネットワークプルーニングを変更するように構成される、動的ニューラルネットワーク量子化ロジックハードウェアを含んでもよい。いくつかの実施形態は、動的量子化のためのある数の動的ビットに基づいて、活性化値および重み値の量子化のために動的ニューラルネットワーク量子化ロジックを構成することを含んでもよい。いくつかの実施形態は、迂回のためのある数の動的ビットに基づいて、活性化値および重み値のマスキング、ならびに積和演算器(MAC)アレイのMACの一部の迂回のために動的ニューラルネットワーク量子化ロジックを構成することを含んでもよい。いくつかの実施形態は、ニューラルネットワークプルーニングのための閾値の重み値に基づいて、重み値のマスキングおよびMAC全体の迂回のために動的ニューラルネットワーク量子化ロジックを構成することを含んでもよい。いくつかの実施形態は、動的ニューラルネットワーク量子化ロジックを構成するかどうかを判定することと、動的ニューラルネットワーク量子化ロジックの構成を実施するためにAIプロセッサ結果の正確さおよびAIプロセッサの応答性を組み込むAIサービス品質(QoS)値を使用することとを含んでもよい。
【0016】
「動的ビット」という用語は、活性化値および重み値の量子化のための動的ニューラルネットワーク量子化ロジックを構成するための、ならびに/または、活性化値と重み値のマスキングおよびMACの一部の迂回のために動的ニューラルネットワーク量子化ロジックを構成するための、活性化値および/または重み値のビットを指すために本明細書において使用される。いくつかの実施形態では、動的ビットは、活性化値および/または重み値の任意の数の下位ビットであってもよい。
【0017】
「AI量子化レベル」という用語は、複数のAI量子化レベルが互いに対して記述されるような、相対的な用語を使用して本明細書において記述される。たとえば、より高いAI量子化レベルは、より低いAI量子化レベルよりも、活性化値および/または重み値のためのより多数の動的ビットがマスキングされている(0にされている)、増強された量子化に関係することがある。より低いAI量子化レベルは、より高いAI量子化レベルよりも、活性化値および/または重み値のためのより少数の動的ビットがマスキングされている(0にされている)、軽減された量子化に関係することがある。
【0018】
「コンピューティングデバイス」および「モバイルコンピューティングデバイス」という用語は、携帯電話、スマートフォン、パーソナルまたはモバイルマルチメディアプレーヤ、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、コンバーチブルラップトップ/タブレット(2-in-1コンピュータ)、スマートブック、ウルトラブック、ネットブロック、パームトップコンピュータ、ワイヤレス電子メールレシーバ、マルチメディアインターネット対応携帯電話、モバイルゲームコンソール、ワイヤレスゲームコントローラ、ならびに、メモリおよびプログラマブルプロセッサを含む同様のパーソナル電子デバイスのうちのいずれか1つまたはすべてを指すために本明細書において交換可能に使用される。「コンピューティングデバイス」という用語は、パーソナルコンピュータ、デスクトップコンピュータ、オールインワンコンピュータ、ワークステーション、スーパーコンピュータ、メインフレームコンピュータ、組み込みコンピュータ(車両および他の大規模システムなどにおける)、コンピュータ化された輸送機関(たとえば、乗用輸送機関、商用輸送機関、レクリエーション用輸送機関、軍用輸送機関、ドローンなどの、部分的にまたは完全に自律的な、地上の、空の、および/または水中の輸送機関)、サーバ、マルチメディアコンピュータ、およびゲームコンソールを含む、固定式のコンピューティングデバイスをさらに指すことがある。
【0019】
ニューラルネットワークは、複数のニューラルネットワークを同時に実行することができる、コンピューティングデバイスのアレイにおいて実装される。AIプロセッサは、ニューラル処理ユニットなどにおいて、ニューラルネットワークの実行のために特別に設計されたアーキテクチャを用いて実装され、かつ/または、AIプロセッサは、デジタル信号処理ユニットなどにおける、ニューラルネットワークの実行に有利である。AIプロセッサアーキテクチャは、中央処理装置およびグラフィックス処理装置などの、他のプロセッサアーキテクチャと比較すると、レイテンシ、正確さ、電力消費などにおいて、より高い処理性能をもたらし得る。しかしながら、AIプロセッサは通常、電力密度が高く、複数のニューラルネットワークを同時に実行することに起因することが多い重い作業負荷のもとでは、AIプロセッサは熱の蓄積によりもたらされる性能の低下を被り得る。複数のニューラルネットワークを実行するそのようなAIプロセッサの例は、AIプロセッサが車両ナビゲーション/操作のためのニューラルネットワークのあるセットと、運転手を監視するためのニューラルネットワークの別のセットを同時に実行するような、能動運転支援システムをもつ自動車におけるものである。AIプロセッサにおける熱管理のための現在の戦略は、感知された温度に基づいてAIプロセッサの動作周波数を下げることを含む。
【0020】
ミッションクリティカルシステムにおいてAIプロセッサの動作周波数を下げることは、ユーザ体験、製品品質、動作上の安全性などの低下をもたらし得る致命的な問題を引き起こし得る。AIプロセッサのスループットは、動作周波数を下げることより悪い影響を受けるAIプロセッサの性能における重要な因子である。AIプロセッサの性能における別の重要な因子は、AIプロセッサの結果の正確さである。この正確さは動作周波数を下げることにより影響を受けないことがあり、それは、動作周波数は、提供されたデータのすべてを使用してデータの処理を完了することなどの、AIプロセッサの動作が完全に実行されるかどうかではなく、AIプロセッサの動作が実行される速さに影響することがあるからである。したがって、熱の蓄積に応答して動作周波数を下げることによって、AIプロセッサのスループットは犠牲にされるが、AIプロセッサの結果の正確さは犠牲にされなくてよい。自動運転車、ドローン、および他の自己推進型の機械などの一部のシステムでは、スループットが決定的に重要であり、その結果、より速いスループットのためにある程度正確さを犠牲にすることは許容可能であり、望ましくすらある。
【0021】
AIプロセッサの電源の電力制約、および/またはAIプロセッサを有するコンピューティングデバイスの性能の制約などの、他の悪い動作条件に応答して動作周波数が下げられるとき、同様の問題が生じる。説明をわかりやすく、かつ簡単にするために、本明細書の例は熱の蓄積に関して説明されるが、そのような言及は、特許請求の範囲および本明細書の説明を限定することは意図されない。
【0022】
さらに、活性化値および重み値を含む、ニューラルネットワーク入力に適用される量子化は、従来のシステムでは静的である。ニューラルネットワークの開発者は、コンパイラまたは開発ツールでニューラルネットワークの量子化特徴量を事前に構成し、ニューラルネットワークのための量子化を固定された上位ビットに設定する。
【0023】
本明細書において説明されるいくつかの実施形態では、ニューラルネットワーク量子化アーキテクチャを動的に構成することは、熱の蓄積などの悪い動作条件のもとで、AIプロセッサのスループットおよびAIプロセッサの結果の正確さを管理するように構成されてもよい。AIプロセッサの結果の正確さは、AIプロセッサの性能における重要な因子であるが、その一定の低下は、多くの状況では許容可能であることがある。AIプロセッサの結果の正確さは、AIプロセッサ上で実行されるニューラルネットワークへの、入力、活性化値、および重み値を改変することにより影響されることがある。AIプロセッサの正確さをある程度犠牲にすることで、AIプロセッサのスループットだけを下げることにより熱の蓄積に対応するときと比較して、AIプロセッサのスループットが熱の蓄積に対応した影響をより受けなくなることがある。いくつかの実施形態では、AIプロセッサの正確さとAIプロセッサのスループットをある程度犠牲にすることは、AIプロセッサのスループットだけを下げるときよりも、より大きな電力および/またはメインメモリトラフィックの削減を実現することがある。
【0024】
いくつかの実施形態では、動的ニューラルネットワーク量子化ロジックは、AIプロセッサ、AIプロセッサを有するSoC、AIプロセッサによってアクセスされるメモリ、および/またはAIプロセッサの他の周辺装置の、温度、電力消費、処理装置の利用率などの動作条件に基づいて、量子化、マスキング、および/またはニューラルネットワークプルーニングを変更するように、実行時に構成されてもよい。いくつかの実施形態は、動的量子化のためのある数の動的ビットに基づいて、活性化値および重み値の量子化のために動的ニューラルネットワーク量子化ロジックを構成することを含んでもよい。いくつかの実施形態は、迂回のためのある数の動的ビットに基づいて、活性化値および重み値のマスキング、ならびにMACの一部の迂回のために動的ニューラルネットワーク量子化ロジックを構成することを含んでもよい。いくつかの実施形態は、ニューラルネットワークプルーニングのための閾値の重み値に基づいて、重み値のマスキングおよびMAC全体の迂回のために動的ニューラルネットワーク量子化ロジックを構成することを含んでもよい。いくつかの実施形態では、動的ニューラルネットワーク量子化ロジックは、必要に応じて動作条件に基づいてニューラルネットワークの事前に構成された量子化を変更するように構成されてもよい。
【0025】
いくつかの実施形態は、動的量子化信号を生成し、任意の数のAIプロセッサ、動的ニューラルネットワーク量子化ロジック、およびMAC、ならびにそれらの組合せにそれを送信するように構成される、動的量子化コントローラを含んでもよい。動的量子化コントローラは、AIプロセッサ、動的ニューラルネットワーク量子化ロジック、およびMACによって、量子化、マスキング、および/またはニューラルネットワークプルーニングを実施するための、パラメータを決定してもよい。動的量子化コントローラは、AIプロセッサの結果の正確さおよびAIプロセッサの応答性を組み込むAI量子化レベルに基づいて、これらのパラメータを決定してもよい。
【0026】
いくつかの実施形態は、AIプロセッサ、動的ニューラルネットワーク量子化ロジック、および/またはMACの動的ニューラルネットワーク量子化再構成を実施するかどうかを判定するように構成される、AI QoSマネージャを含んでもよい。AI QoSマネージャは、AI QoS因子を表すデータ信号を受信してもよい。AI QoS因子は動作条件であってもよく、動的ニューラルネットワーク量子化ロジック再構成は、量子化、マスキング、および/またはニューラルネットワークプルーニングを変更するために、その動作条件に基づいてもよい。これらの動作条件は、AIプロセッサ、AIプロセッサを有するSoC、AIプロセッサによってアクセスされるメモリ、および/またはAIプロセッサの他の周辺装置の、温度、電力消費、処理装置の利用率などを含んでもよい。AI QoSマネージャは、ある動作条件のもとでAIプロセッサが達成すべき、AIプロセッサのスループット、AIプロセッサの結果の正確さ、および/またはAIプロセッサの動作周波数を考慮する、AI QoS値を決定してもよい。AI QoS値は、動的ニューラルネットワーク量子化ロジックを構成する結果としてAIプロセッサのスループットおよびAIプロセッサの結果の正確さを考慮するAI量子化レベル、および/または動作条件のためのAIプロセッサ動作周波数を決定するために使用されてもよい。
【0027】
図1は、様々な実施形態とともに使用するのに適したコンピューティングデバイス100を含むシステムを示す。コンピューティングデバイス100は、プロセッサ104と、メモリ106と、通信インターフェース108と、メモリインターフェース110と、周辺デバイスインターフェース120とを伴う、SoC102を含んでもよい。コンピューティングデバイス100は、有線またはワイヤレスモデムなどの通信コンポーネント112、メモリ114、ワイヤレス通信リンクを確立するためのアンテナ116、および/または周辺デバイス122をさらに含んでもよい。プロセッサ104は、様々な処理デバイスのいずれか、たとえば、いくつかのプロセッサコアを含んでもよい。
【0028】
「システムオンチップ」または"SoC"という用語は、通常、限定はされないが、処理デバイス、メモリ、および通信インターフェースを含む相互接続された電子回路のセットを指すために本明細書において使用される。処理デバイスは、汎用プロセッサ、中央処理装置(CPU)、デジタルシグナルプロセッサ(DSP)、グラフィックス処理装置(GPU)、加速処理装置(APU)、セキュア処理装置(SPU)、カメラサブシステムのためのイメージプロセッサまたはディスプレイのためのディスプレイプロセッサなどのコンピューティングデバイスの特定のコンポーネントのサブシステムプロセッサ、補助プロセッサ、シングルコアプロセッサ、マルチコアプロセッサ、コントローラ、および/またはマイクロコントローラなどの、様々な異なるタイプのプロセッサ104および/またはプロセッサコアを含んでもよい。処理デバイスは、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、他のプログラマブル論理デバイス、ディスクリートゲートロジック、トランジスタロジック、性能監視ハードウェア、ウォッチドッグハードウェア、および時間基準などの、他のハードウェアおよびハードウェアの組合せをさらに具現化してもよい。集積回路は、集積回路のコンポーネントがシリコンなどの単一の半導体材料上に存在するように構成されてもよい。
【0029】
SoC102のメモリ106は、プロセッサ104による、またはAIプロセッサ124を含むSoC102の他のコンポーネントによるアクセスのために、データおよびプロセッサ実行可能コードを記憶するために構成される、揮発性または不揮発性のメモリであってもよい。コンピューティングデバイス100および/またはSoC102は、様々な目的のために構成される1つまたは複数のメモリ106を含んでもよい。1つまたは複数のメモリ106は、ランダムアクセスメモリ(RAM)もしくはメインメモリ、またはキャッシュメモリなどの、揮発性メモリを含んでもよい。これらのメモリ106は、データセンサまたはサブシステムから受信される限られた量のデータ、不揮発性メモリから要求され、不揮発性メモリからメモリ106にロードされるデータおよび/もしくはプロセッサ実行可能コード命令、ならびに/または、プロセッサ104および/もしくはAIプロセッサ124によって生み出され、不揮発性メモリには記憶されずに将来迅速にアクセスできるように一時的に記憶される、中間処理データおよび/もしくはプロセッサ実行可能コード命令を一時的に保持するように構成されてもよい。メモリ106は、プロセッサ104の1つまたは複数、またはAIプロセッサ124を含むSoC102の他のコンポーネントによるアクセスのために、別のメモリ106またはメモリ114などの、別のメモリデバイスからメモリ106にロードされるデータおよびプロセッサ実行可能コードを、少なくとも一時的に記憶するように構成されてもよい。いくつかの実施形態では、任意の数のメモリ106およびその組合せは、ワンタイムプログラマブルメモリまたは読み取り専用メモリを含んでもよい。
【0030】
メモリインターフェース110およびメモリ114は、コンピューティングデバイス100が、揮発性および/または不揮発性記憶媒体にデータとプロセッサ実行可能コードを記憶し、揮発性および/または不揮発性記憶媒体からデータとプロセッサ実行可能コードを取り出すことを可能にするように、協働してもよい。メモリ114は、メモリ106の実施形態とほとんど同じように構成されてもよく、メモリ114は、プロセッサ104の1つまたは複数、またはAIプロセッサ124を含むSoC102の他のコンポーネントによるアクセスのための、データまたはプロセッサ実行可能コードを記憶してもよい。メモリインターフェース110は、メモリ114へのアクセスを制御し、プロセッサ104またはAIプロセッサ124を含むSoC12の他のコンポーネントがメモリ114からデータを読み取り、メモリ114にデータを書き込むことを可能にしてもよい。
【0031】
SoC102はまた、AIプロセッサ124を含んでもよい。AIプロセッサ124は、プロセッサ104、プロセッサ104の一部、および/またはSoC102のスタンドアロンコンポーネントであってもよい。AIプロセッサ124は、コンピューティングデバイス100上で活性化値および重み値を処理するためのニューラルネットワークを実行するように構成されてもよい。コンピューティングデバイス100はまた、SoC102に関連しないAIプロセッサ124を含んでもよい。そのようなAIプロセッサ124は、コンピューティングデバイス100のスタンドアロンコンポーネントであってもよく、かつ/または他のSoC102に統合されてもよい。
【0032】
コンピューティングデバイス100および/またはSoC102のコンポーネントのいくつかまたはすべてが、依然として様々な実施形態の機能を果たしながら、異なるように配置され、かつ/または組み合わせられてもよい。コンピューティングデバイス100は、コンポーネントの各々のうちの1つに限定されなくてもよく、各コンポーネントの複数のインスタンスが、コンピューティングデバイス100の様々な構成に含まれてもよい。
【0033】
図2Aは、様々な実施形態を実装するのに適した、動的ニューラルネットワーク量子化アーキテクチャを有する例示的なAIプロセッサを示す。
図1および
図2Aを参照すると、AIプロセッサ124は、任意の数のMACアレイ200、重みバッファ204、活性化バッファ206、動的量子化コントローラ208、AI QoSマネージャ210、および動的ニューラルネットワーク量子化ロジック212、214、ならびにそれらの組合せを含んでもよい。MACアレイ200は、任意の数のMAC202a~202iおよびそれらの組合せを含んでもよい。
【0034】
AIプロセッサ124は、ニューラルネットワークを実行するように構成されてもよい。実行されるニューラルネットワークは、活性化値および重み値を処理してもよい。AIプロセッサ124は、活性化バッファ206における活性化値および重みバッファ204における重み値を受信して記憶してもよい。一般に、MACアレイ200は、活性化バッファ206からの活性化値および重みバッファ204からの重み値を受信し、活性化値と重み値を乗算して累算することによって活性化値および重み値を処理してもよい。たとえば、各MAC202a~202iは、任意の数の活性化値と重み値の組合せを受信し、活性化値と重み値の各々の受信された組合せのビットを乗算し、乗算の結果を累算してもよい。AIプロセッサ124の変換(CVT)モジュール(図示せず)は、スケーリング、バイアスの加算、および/または活性化関数(たとえば、シグモイド、ReLU、ガウシアン、SoftMaxなど)の適用などの、MAC結果を使用する関数を実行することによって、MAC結果を改変してもよい。MAC202a~202iは、活性化値と重み値の複数の組合せを、各組合せを順番に受信することによって受信してもよい。本明細書においてさらに説明されるように、いくつかの実施形態では、活性化値および重み値は、MAC202a~202iにより受信される前に改変されてもよい。また、本明細書においてさらに説明されるように、いくつかの実施形態では、MAC202a~202iは、活性化値と重み値を処理するために改変されてもよい。
【0035】
AI QoSマネージャ210は、ハードウェア、AIプロセッサ124によって実行されるソフトウェア、および/またはプロセッサ124によって実行されるハードウェアとソフトウェアとの組合せとして構成されてもよい。AI QoSマネージャ210は、AIプロセッサ124、動的ニューラルネットワーク量子化ロジック212、214、および/またはMAC202a~202iの動的ニューラルネットワーク量子化再構成を実施するかどうかを判定するように構成されてもよい。AI QoSマネージャ210は、温度センサ、電圧センサ、電流センサなどの任意の数のセンサおよびそれらの組合せ(図示せず)、ならびにプロセッサ104に通信可能に接続されてもよい。AI QoSマネージャ210は、これらの通信可能に接続されたセンサおよび/またはプロセッサ104からAI QoS因子を表すデータ信号を受信してもよい。AI QoS因子は動作条件であってもよく、動的ニューラルネットワーク量子化ロジック再構成の決定は、量子化、マスキング、および/またはニューラルネットワークプルーニングを変更するために、その動作条件に基づいてもよい。これらの動作条件は、AIプロセッサ124、AIプロセッサ124を有するSoC102、AIプロセッサ124によってアクセスされるメモリ106、114、および/またはAIプロセッサ124の他の周辺装置122の、温度、電力消費、処理装置の利用率、性能などを含んでもよい。たとえば、温度動作条件は、AIプロセッサ124上のある位置における温度を表す温度センサ値であってもよい。さらなる例では、電力動作条件は、電源と比較した電源レールのピーク、および/または電力管理集積回路の能力、および/または電池の充電状況を表す値であってもよい。さらなる例として、性能動作条件は、利用率、完全にアイドル状態の時間、フレーム毎秒、および/またはAIプロセッサ124のエンドツーエンドレイテンシを表す値であってもよい。
【0036】
AI QoSマネージャ210は、動的ニューラルネットワーク量子化再構成を実施するかどうかを動作条件から決定するように構成されてもよい。AI QoSマネージャ210は、AIプロセッサ124の処理能力の制約を増やした動作条件のレベルに基づいて、動的ニューラルネットワーク量子化再構成を実施することを決定してもよい。AI QoSマネージャ210は、AIプロセッサ124の処理能力の制約を減らした動作条件のレベルに基づいて、動的ニューラルネットワーク量子化再構成を実施することを決定してもよい。AIプロセッサ124の処理能力の制約は、処理能力のレベルを維持するためのAIプロセッサ124の能力に影響する熱の蓄積のレベル、電力消費、処理装置の利用率などの、動作条件レベルによって引き起こされることがある。
【0037】
いくつかの実施形態では、AI QoSマネージャ210は、動的ニューラルネットワーク量子化再構成を実施するかどうかを動作条件から決定するための、任意の数のアルゴリズム、閾値、ルックアップテーブルなどおよびそれらの組合せを用いて構成されてもよい。たとえば、AI QoSマネージャ210は、受信された動作条件を動作条件の閾値と比較してもよい。閾値を超えるなど、動作条件の閾値に対する動作条件の比較の結果が好ましくないことに応答して、AI QoSマネージャ210は、動的ニューラルネットワーク量子化再構成を実施することを決定してもよい。そのような好ましくない比較は、AIプロセッサ124の処理能力の制約を動作条件が増やしたことを、AI QoSマネージャ210に示すことがある。閾値を下回るなど、動作条件の閾値に対する動作条件の比較の結果が好ましいことに応答して、AI QoSマネージャ210は、動的ニューラルネットワーク量子化再構成を実施することを決定してもよい。そのような好ましい比較は、AIプロセッサ124の処理能力の制約を動作条件が減らしたことを、AI QoSマネージャ210に示すことがある。いくつかの実施形態では、AI QoSマネージャ210は、複数の受信された動作条件を動作条件の複数の閾値と比較し、好ましくないおよび/または好ましい比較結果の組合せに基づいて、動的ニューラルネットワーク量子化再構成を実施することを決定するように構成されてもよい。いくつかの実施形態では、AIプロセッサ124は、複数の受信された動作条件を組み合わせるためのアルゴリズムを用いて構成され、アルゴリズムの結果を閾値と比較してもよい。いくつかの実施形態では、複数の受信された動作条件は、同じタイプおよび/または異なるタイプであってもよい。いくつかの実施形態では、複数の受信された動作条件は、特定の時間に対するものであってもよく、および/またはある期間にわたってもよい。
【0038】
動的ニューラルネットワーク量子化再構成のために、AI QoSマネージャ210は、AIプロセッサ124によって達成されるべきAI QoS値を決定してもよい。AI QoS値は、動的ニューラルネットワーク量子化再構成の結果として達成すべきAIプロセッサのスループットとAIプロセッサの結果の正確さ、および/またはある動作条件のもとでのAIプロセッサ124のAIプロセッサ動作周波数を考慮するように構成されてもよい。AI QoS値は、AIプロセッサ124のためのレイテンシ、品質、正確さなどの、ユーザにより知覚可能なレベルおよび/またはミッションクリティカル用途で許容可能なレベルを表してもよい。いくつかの実施形態では、AI QoSマネージャ210は、動作条件からAI QoS値を決定するための、任意の数のアルゴリズム、閾値、ルックアップテーブルなどおよびそれらの組合せを用いて構成されてもよい。たとえば、AI QoSマネージャ210は、温度閾値を超える温度を示すAIプロセッサ124が達成すべき目標として、AIプロセッサのスループットおよびAIプロセッサの結果の正確さを考慮するAI QoS値を決定してもよい。さらなる例として、AI QoSマネージャ210は、電流閾値を超える電流(電力消費)を示すAIプロセッサ124が達成すべき目標として、AIプロセッサのスループットおよびAIプロセッサの結果の正確さを考慮するAI QoS値を決定してもよい。さらなる例として、AI QoSマネージャ210は、スループット閾値および/または利用率閾値を超えるスループット値および/または利用率値を示すAIプロセッサ124が達成すべき目標として、AIプロセッサのスループットおよびAIプロセッサの結果の正確さを考慮するAI QoS値を決定してもよい。動作条件が閾値を超えることに関して説明される前述の例は、特許請求の範囲または明細書の範囲を限定することは意図されず、動作条件が閾値を下回る実施形態に同様に適用可能である。
【0039】
本明細書においてさらに説明されるように、動的量子化コントローラ208は、AI QoS値を達成するために、AIプロセッサ124、動的ニューラルネットワーク量子化ロジック212、214、および/またはMAC202a~202iをどのように動的に構成するかを決定してもよい。いくつかの実施形態では、AI QoSマネージャ210は、AIプロセッサの正確さおよびAIプロセッサのスループットを表す値からAI QoS値を達成するためのAI量子化レベルを計算するアルゴリズムを実行するように構成されてもよい。たとえば、アルゴリズムは、AIプロセッサの正確さとAIプロセッサのスループットの加算関数および/または最小値関数であってもよい。さらなる例として、AIプロセッサの正確さを表す値は、AIプロセッサ124によって実行されるニューラルネットワークの出力の誤差値を含んでもよく、AIプロセッサのスループットを表す値は、AIプロセッサ124によって生み出される期間当たりの推論の値を含んでもよい。アルゴリズムは、AIプロセッサの正確さまたはAIプロセッサのスループットのいずれかを優先するように重み付けられてもよい。いくつかの実施形態では、重みは、AIプロセッサ124、SoC102、メモリ106、114、および/または他の周辺装置122の任意の数の動作条件および動作条件の組合せと関連付けられてもよい。いくつかの実施形態では、AI量子化レベルは、AI QoS値を達成するために、AIプロセッサの動作周波数とともに計算されてもよい。AI量子化レベルは、AIプロセッサ124の処理能力に対する動作条件の影響に基づいて、以前に計算されたAI量子化レベルに対して変化してもよい。たとえば、AIプロセッサ124の処理能力の制約の増大をAI QoSマネージャ210に示す動作条件は、AI量子化レベルの上昇をもたらしてもよい。別の例として、AIプロセッサ124の処理能力の制約の減少をAI QoSマネージャ210に示す動作条件は、AI量子化レベルの低下をもたらしてもよい。
【0040】
いくつかの実施形態では、AI QoSマネージャ210はまた、単独で、または動的ニューラルネットワーク量子化再構成と組み合わせて、AIプロセッサ動作周波数の従来の低減を実施するかどうかを判定してもよい。たとえば、動作条件のための閾値のいくつかが、AIプロセッサ動作周波数の従来の低減および/または動的ニューラルネットワーク量子化再構成と関連付けられてもよい。AIプロセッサ動作周波数の低減および/または動的ニューラルネットワーク量子化再構成に関連する閾値に対する、任意の数の受信された動作条件またはそれらの組合せの比較の結果が好ましくないことにより、AI QoSマネージャ210は、AIプロセッサ動作周波数の低減および/または動的ニューラルネットワーク量子化再構成を実施すると決定することがある。いくつかの実施形態では、AI QoSマネージャ210は、MACアレイ200の動作周波数を制御するように適応されてもよい。
【0041】
AI QoSマネージャ210は、AI量子化レベルを有するAI量子化レベル信号を生成し、動的量子化コントローラ208に送信してもよい。AI量子化レベル信号は、動的量子化コントローラ208に、動的ニューラルネットワーク量子化再構成を実施するためのパラメータを決定させ、パラメータ決定のための入力としてAI量子化レベルを提供させることがある。いくつかの実施形態では、AI量子化レベル信号はまた、AI QoSマネージャ210に動的ニューラルネットワーク量子化再構成を実施することを決定させた動作条件を含んでもよい。動作条件はまた、動的ニューラルネットワーク量子化再構成を実施するためのパラメータを決定するための入力であってもよい。いくつかの実施形態では、動作条件は、動作条件の値および/または動作条件を使用するアルゴリズムの結果を表す値、閾値に対する動作条件の比較、動作条件のためのルックアップテーブルからの値などによって表されてもよい。たとえば、比較の結果を表す値は、動作条件の値と閾値の値との差を含んでもよい。いくつかの実施形態では、AI QoSマネージャ210は、MACアレイ200によって使用されるAI量子化レベルを変化させるように適応されてもよく、たとえば、変化させることは、特定のAI量子化レベルを設定すること、または現在のレベルを上げるもしくは下げるように命令することによるものであってもよい。
【0042】
いくつかの実施形態では、AI QoSマネージャ210はまた、AI周波数信号を生成してMACアレイ200に送信してもよい。AI周波数信号は、MACアレイ200にAIプロセッサ動作周波数の低減を実施させてもよい。いくつかの実施形態では、MACアレイ200は、AIプロセッサ動作周波数の低減を実施するための手段を用いて構成されてもよい。いくつかの実施形態では、AI QoSマネージャ210は、AI量子化レベル信号とAI周波数信号のいずれかまたは両方を生成して送信してもよい。
【0043】
動的量子化コントローラ208は、ハードウェア、AIプロセッサ124によって実行されるソフトウェア、および/またはAIプロセッサ124によって実行されるハードウェアとソフトウェアとの組合せとして構成されてもよい。動的量子化コントローラ208は、動的ニューラルネットワーク量子化再構成のためのパラメータを決定するように構成されてもよい。いくつかの実施形態では、動的量子化コントローラ208は、任意の数の特定のタイプの動的ニューラルネットワーク量子化再構成およびそれらの特定のタイプの動的ニューラルネットワーク量子化再構成組合せのためのパラメータを決定するように事前に構成されてもよい。いくつかの実施形態では、動的量子化コントローラ208は、任意の数のタイプの動的ニューラルネットワーク量子化再構成およびそれらのタイプの動的ニューラルネットワーク量子化再構成の組合せのためにどのパラメータを決定すべきかを決定するように構成されてもよい。
【0044】
それらのタイプの動的ニューラルネットワーク量子化再構成のためにどのパラメータを決定すべきかを決定することは、どのタイプの動的ニューラルネットワーク量子化再構成が実施されてもよいかを制御してもよい。動的ニューラルネットワーク量子化再構成のタイプは、活性化値および重み値の量子化のために動的ニューラルネットワーク量子化ロジック212、214を構成すること、活性化と重み値のマスキングのために動的ニューラルネットワーク量子化ロジック212、214を構成し、MAC202a~202iの一部の迂回のためにMACアレイ200および/またはMAC202a~202iを構成すること、ならびに重み値のマスキングのために動的ニューラルネットワーク量子化ロジック212を構成し、MAC202a~202i全体の迂回のためにMACアレイ200および/またはMAC202a~202iを構成することを含んでもよい。いくつかの実施形態では、動的量子化コントローラ208は、活性化値および重み値の量子化のために動的ニューラルネットワーク量子化ロジック212、214を構成するためのある数の動的ビットのパラメータを決定するように構成されてもよい。いくつかの実施形態では、動的量子化コントローラ208は、活性化値と重み値のマスキングおよびMAC202a~202iの一部の迂回のために動的ニューラルネットワーク量子化ロジック212、214を構成するためのある数の動的ビットの追加のパラメータを決定するように構成されてもよい。いくつかの実施形態では、動的量子化コントローラ208は、重み値のマスキングおよびMAC202a~202i全体の迂回のために動的ニューラルネットワーク量子化ロジック212を構成するための閾値の重み値の追加のパラメータを決定するように構成されてもよい。
【0045】
AI量子化レベルは、以前に計算されたAI量子化レベルとは異なっていてもよく、動的ニューラルネットワーク量子化再構成を実施するための決定されたパラメータに差異をもたらすことがある。たとえば、AI量子化レベルを上げることにより、動的量子化コントローラ208は、動的ニューラルネットワーク量子化ロジック212、214を構成するためのより多数の動的ビットおよび/またはより低い閾値の重み値を決定するようになることがある。動的ビットの数を増やすことおよび/または閾値の重み値を下げることにより、ニューラルネットワークの計算を実施するためにより少数のビットおよび/またはより少数のMAC202a~202iが使用されるようになることがあり、これはニューラルネットワークの推論結果の正確さを下げることがある。別の例として、AI量子化レベルを下げることにより、動的量子化コントローラ208は、動的ニューラルネットワーク量子化ロジック212、214を構成するためのより少数の動的ビットおよび/またはより高い閾値の重み値を決定するようになることがある。動的ビットの数を減らすことおよび/または閾値の重み値を上げることにより、ニューラルネットワークの計算を実施するためにより多数のビットおよび/またはより多数のMAC202a~202iが使用されるようになることがあり、これはニューラルネットワークの推論結果の正確さを上げることがある。
【0046】
いくつかの実施形態では、動的ニューラルネットワーク量子化ロジック212、214は、動的量子化コントローラ208によって決定されるパラメータを使用してAI量子化レベルを動的に実施してもよく、この実施は、マスキング、量子化、迂回、または任意の他の適切な手段によるものであってもよい。動的量子化コントローラ208は、AI QoSマネージャ210からAI量子化レベル信号を受信してもよい。動的量子化コントローラ208は、動的ニューラルネットワーク量子化再構成のためのパラメータを決定するために、AI量子化レベル信号とともに受信されるAI量子化レベルを使用してもよい。いくつかの実施形態では、動的量子化コントローラ208はまた、動的ニューラルネットワーク量子化再構成のためのパラメータを決定するために、AI量子化レベル信号とともに受信される動作条件を使用してもよい。いくつかの実施形態では、動的量子化コントローラ208は、AI量子化レベルおよび/または動作条件に基づいて、動的ニューラルネットワーク量子化再構成のどのパラメータおよび/またはパラメータの値を使用すべきかを決定するための、アルゴリズム、閾値、ルックアップテーブルなどを用いて構成されてもよい。たとえば、動的量子化コントローラ208は、活性化値および重み値の量子化のために使用すべきある数の動的ビットを出力してもよいアルゴリズムへの入力として、AI量子化レベルおよび/または動作条件を使用してもよい。いくつかの実施形態では、追加のアルゴリズムが使用されてもよく、それは、活性化値と重み値のマスキングおよびMAC202a~202iの一部の迂回のためにある数の動的ビットを出力してもよい。いくつかの実施形態では、追加のアルゴリズムが使用されてもよく、それは、重み値のマスキングおよびMAC202a~202i全体の迂回のために閾値の重み値を出力してもよい。
【0047】
動的量子化コントローラ208は、動的ニューラルネットワーク量子化再構成のためのパラメータを有する動的量子化信号を生成し、動的ニューラルネットワーク量子化ロジック212、214に送信してもよい。動的量子化信号は、動的ニューラルネットワーク量子化ロジック212、214に、動的ニューラルネットワーク量子化再構成を実施させ、動的ニューラルネットワーク量子化再構成を実施するためのパラメータを提供させてもよい。いくつかの実施形態では、動的量子化コントローラ208は、動的量子化信号をMACアレイ200に送信してもよい。動的量子化信号は、MACアレイ200に、動的ニューラルネットワーク量子化再構成を実施させ、動的ニューラルネットワーク量子化再構成を実施するためのパラメータを提供させてもよい。いくつかの実施形態では、動的量子化信号は、実装すべき動的ニューラルネットワーク量子化再構成のタイプのインジケータを含んでもよい。いくつかの実施形態では、動的ニューラルネットワーク量子化再構成のタイプのインジケータは、動的ニューラルネットワーク量子化再構成のためのパラメータであってもよい。
【0048】
動的ニューラルネットワーク量子化ロジック212、214は、ハードウェアで実装されてもよい。動的ニューラルネットワーク量子化ロジック212、214は、活性化値および重み値を丸めることなどによって、活性化バッファ206および重みバッファ204から受信される活性化値および重み値を量子化するように構成されてもよい。活性化値および重み値の量子化は、ある動的ビットに切り上げるまたは切り捨てること、ある上位ビットに切り上げることまたは切り捨てること、最も近い値に切り上げることまたは切り捨てること、特定の値に切り上げることまたは切り捨てることなどの、任意のタイプの丸めを使用して実施されてもよい。説明をわかりやすくかつ簡単にするために、量子化の例は、動的ビットへの丸めに関して説明されるが、特許請求の範囲および本明細書の説明を限定しない。動的ニューラルネットワーク量子化ロジック212、214は、量子化された活性化値および重み値をMACアレイ200に提供してもよい。動的ニューラルネットワーク量子化ロジック212、214は、動的量子化信号を受信し、動的ニューラルネットワーク量子化再構成を実施するように構成されてもよい。
【0049】
動的ニューラルネットワーク量子化ロジック212、214は、動的量子化コントローラ208から動的量子化信号を受信し、動的ニューラルネットワーク量子化再構成のためのパラメータを決定してもよい。動的ニューラルネットワーク量子化ロジック212、214はまた、動的量子化信号から実装すべき動的ニューラルネットワーク量子化再構成のタイプを決定してもよく、これは、特定のタイプの量子化のために動的ニューラルネットワーク量子化ロジック212、214を構成することを含んでもよい。いくつかの実施形態では、実装すべき動的ニューラルネットワーク量子化再構成のタイプはまた、活性化値および/または重み値のマスキングのために動的ニューラルネットワーク量子化ロジック212、214を構成することを含んでもよい。いくつかの実施形態では、活性化値および重み値のマスキングは、ある数の動的ビットを0の値で置き換えることを含んでもよい。いくつかの実施形態では、重み値のマスキングは、ビットのすべてを0の値で置き換えることを含んでもよい。
【0050】
動的量子化信号は、活性化値および重み値の量子化のために動的ニューラルネットワーク量子化ロジック212、214を構成するためのある数の動的ビットのパラメータを含んでもよい。動的ニューラルネットワーク量子化ロジック212、214は、活性化値および重み値のビットを動的量子化信号によって示されるその数の動的ビットに丸めることによって、活性化値および重み値を量子化するように構成されてもよい。
【0051】
動的ニューラルネットワーク量子化ロジック212、214は、活性化値および重み値のビットをその数の動的ビットに丸めるように構成されてもよい、構成可能な論理ゲートを含んでもよい。いくつかの実施形態では、論理ゲートは、最大でその数の動的ビットまでの、および/またはそれを含む、活性化値と重み値の下位ビットに対して0の値を出力するように構成されてもよい。いくつかの実施形態では、論理ゲートは、その数の動的ビットを含む、および/またはそれに続く、活性化値と重み値の上位ビットの値を出力するように構成されてもよい。たとえば、活性化値または重み値の各ビットは、逐次、たとえば最下位ビットから最上位ビットまでなど、論理ゲートに入力されてもよい。論理ゲートは、パラエータによって示される、最大でその数の動的ビットまでの、および/またはそれを含む、活性化値と重み値の下位ビットに対して0の値を出力してもよい。論理ゲートは、パラメータによって示されるその数の動的ビットを含む、および/またはそれに続く、活性化値と重み値の上位ビットの値の値を出力してもよい。さらなる例として、重み値および活性化値は、8ビットの整数であってもよく、その数の動的ビットは、8桁の整数の下位半分を丸めるように、動的ニューラルネットワークネットワーク量子化ロジック212、214に指示してもよい。動的ビットの数は、ニューラルネットワーク量子化ロジック212、214のデフォルトのもしくは以前の構成のために丸めるべき、動的ビットのデフォルトの数または動的ビットの以前の数とは異なっていてもよい。したがって、論理ゲートの構成は、論理ゲートのデフォルトの構成または以前の構成とも異なっていてもよい。
【0052】
動的量子化信号は、活性化値と重み値のマスキングおよびMAC202a~202iの一部の迂回のために動的ニューラルネットワーク量子化ロジック212、214を構成するためのある数の動的ビットのパラメータを含んでもよい。動的ニューラルネットワーク量子化ロジック212、214は、動的量子化信号によって示される活性化値および重み値のその数の動的ビットをマスキングすることによって、活性化値および重み値を量子化するように構成されてもよい。
【0053】
動的ニューラルネットワーク量子化ロジック212、214は、活性化値および重み値のその数の動的ビットをマスキングするように構成されてもよい、構成可能な論理ゲートを含んでもよい。いくつかの実施形態では、論理ゲートは、最大でその数の動的ビットまでの、および/またはそれを含む、活性化値と重み値の下位ビットに対して0の値を出力するように構成されてもよい。いくつかの実施形態では、論理ゲートは、その数の動的ビットを含む、および/またはそれに続く、活性化値と重み値の上位ビットの値を出力するように構成されてもよい。たとえば、活性化値および重み値の各ビットは、逐次、たとえば最下位ビットから最上位ビットまでなど、論理ゲートに入力されてもよい。論理ゲートは、パラエータによって示される、最大でその数の動的ビットまでの、および/またはそれを含む、活性化値と重み値の下位ビットに対して0の値を出力してもよい。論理ゲートは、パラメータによって示されるその数の動的ビットを含む、および/またはそれに続く、活性化値と重み値の上位ビットの値の値を出力してもよい。動的ビットの数は、動的ニューラルネットワーク量子化ロジック212、214のデフォルトのもしくは以前の構成のためにマスキングすべき、動的ビットのデフォルトの数または動的ビットの以前の数とは異なっていてもよい。したがって、論理ゲートの構成は、論理ゲートのデフォルトの構成または以前の構成とも異なっていてもよい。
【0054】
いくつかの実施形態では、論理ゲートは、最大でその数の動的ビットまでの、および/またはそれを含む、活性化値と重み値の下位ビットを受信しないように、および/または出力しないように、クロックゲーティングされてもよい。論理ゲートをクロックゲーティングすることは、実質的に、活性化値および重み値のそれらの下位ビットを0の値で置き換えることがあり、それは、MACアレイ200が、活性化値および重み値のそれらの下位ビットの値を受信しないことがあるからである。
【0055】
いくつかの実施形態では、動的ニューラルネットワーク量子化ロジック212、214は、MAC202a~202iの一部の迂回のために、その数の動的ビットのパラメータをMACアレイ200にシグナリングしてもよい。いくつかの実施形態では、動的ニューラルネットワーク量子化ロジック212、214は、活性化値および重み値のビットのいずれがマスキングされるかをMACアレイ200にシグナリングしてもよい。いくつかの実施形態では、活性化値および重み値のビットに対する信号がないことは、動的ニューラルネットワーク量子化ロジック212、214からMACアレイ200への信号であってもよい。
【0056】
いくつかの実施形態では、MACアレイ200は、活性化値と重み値のマスキングおよびMAC202a~202iの一部の迂回のために動的ニューラルネットワーク量子化ロジック212、214を構成するためのある数の動的ビットのパラメータを含む動的量子化信号を受信してもよい。いくつかの実施形態では、MACアレイ200は、動的ニューラルネットワーク量子化ロジック212、214から、MAC202a~202iの一部の迂回のためのある数の動的ビットおよびまたはどの動的ビットのパラメータの信号を受信してもよい。MACアレイ200は、動的量子化信号および/または動的ニューラルネットワーク量子化ロジック212、214からの信号によって示される活性化値と重み値の動的ビットのためのMAC202a~202iの一部を迂回するように構成されてもよい。これらの動的ビットは、動的ニューラルネットワーク量子化ロジック212、214によってマスキングされる活性化値および重み値のビットに相当してもよい。
【0057】
MAC202a~202iは、乗算および累算機能を実装するように構成される論理ゲートを含んでもよい。いくつかの実施形態では、MACアレイ200は、動的量子化信号のパラメータによって示されるその数の動的ビットに相当する活性化値と重み値のビットを乗算して累算するように構成される、MAC202a~202iの論理ゲートをクロックゲーティングしてもよい。いくつかの実施形態では、MACアレイ200は、動的ニューラルネットワーク量子化ロジック212、214からの信号によって示されるその数の動的ビットおよび/または特定の動的ビットに相当する活性化値と重み値のビットを乗算して累算するように構成される、MAC202a~202iの論理ゲートをクロックゲーティングしてもよい。
【0058】
いくつかの実施形態では、MACアレイ200は、動的量子化信号のパラメータによって示されるその数の動的ビットに相当する活性化値と重み値のビットを乗算して累算するように構成される、MAC202a~202iの論理ゲートを電源遮断(power collapse)してもよい。いくつかの実施形態では、MACアレイ200は、動的ニューラルネットワーク量子化ロジック212、214からの信号によって示されるその数の動的ビットおよび/または特定の動的ビットに相当する活性化値と重み値のビットを乗算して累算するように構成される、MAC202a~202iの論理ゲートを電源遮断してもよい。
【0059】
MAC202a~202iの論理ゲートをクロックゲーティングおよび/または電源切断することによって、MAC202a~202iは、その数の動的ビットまたは特定の動的ビットに相当する活性化値と重み値のビットを受信せず、実質的にこれらのビットをマスキングしてもよい。MAC202a~202iの論理ゲートをクロックゲーティングおよび/または電源切断するさらなる例が、
図7を参照して本明細書において説明される。
【0060】
動的量子化信号は、重み値のマスキングとMAC202a~202i全体の迂回のために動的ニューラルネットワーク量子化ロジック212を構成するための閾値の重み値のパラメータを含んでもよい。動的ニューラルネットワーク量子化ロジック212は、動的量子化信号によって示される閾値の重み値との重み値の比較に基づいて、重み値のビットのすべてをマスキングすることによって重み値を量子化するように構成されてもよい。
【0061】
動的ニューラルネットワーク量子化ロジック212は、重みバッファ204から受信された重み値を閾値の重み値と比較し、閾値の重み値未満または閾値の重み値以下であるなど、比較の結果が好ましくない重み値をマスキングするように構成されてもよい、構成可能な論理ゲートを含んでもよい。いくつかの実施形態では、比較は、閾値の重み値に対する重み値の絶対値の比較であってもよい。いくつかの実施形態では、論理ゲートは、閾値の重み値との比較の結果が好ましくない重み値のビットのすべてに対して0の値を出力するように構成されてもよい。ビットのすべてが、動的ニューラルネットワーク量子化ロジック212のデフォルトのもしくは以前の構成のためにマスキングすべき、デフォルトの数のビットとは異なるまたは以前の数のビットとは異なる数のビットであってもよい。したがって、論理ゲートの構成は、論理ゲートのデフォルトの構成または以前の構成とも異なっていてもよい。
【0062】
いくつかの実施形態では、論理ゲートは、閾値の重み値との比較の結果が好ましくない重み値のビットを受信かつ/または出力しないように、クロックゲーティングされてもよい。論理ゲートをクロックゲーティングすることは、実質的に、重み値のビットを0の値で置き換えることがあり、それは、MACアレイ200が、重み値のビットの値を受信しないことがあるからである。いくつかの実施形態では、動的ニューラルネットワーク量子化ロジック212は、重み値のビットのいずれがマスキングされるかをMACアレイ200にシグナリングしてもよい。いくつかの実施形態では、重み値のビットに対する信号がないことは、動的ニューラルネットワーク量子化ロジック212からMACアレイ200への信号であってもよい。
【0063】
いくつかの実施形態では、MACアレイ200は、それに対する重み値のビットがマスキングされる動的ニューラルネットワーク量子化ロジック212から信号を受信してもよい。MACアレイ200は、MAC202a~202i全体を迂回するための信号として、マスキングされた重み値全体を解釈してもよい。MACアレイ200は、動的ニューラルネットワーク量子化ロジック212からの信号によって示される重み値のためのMAC202a~202iを迂回するように構成されてもよい。これらの重み値は、動的ニューラルネットワーク量子化ロジック212によってマスキングされる重み値に相当してもよい。
【0064】
MAC202a~202iは、乗算および累算機能を実装するように構成される論理ゲートを含んでもよい。いくつかの実施形態では、MACアレイ200は、マスキングされた重み値に相当する重み値のビットを乗算して累算するように構成される、MAC202a~202iの論理ゲートをクロックゲーティングしてもよい。いくつかの実施形態では、MACアレイ200は、マスキングされた重み値に相当する重み値のビットを乗算して累算するように構成される、MAC202a~202iの論理ゲートを電源遮断してもよい。MAC202a~202iの論理ゲートをクロックゲーティングおよび/または電源遮断することによって、MAC202a~202iは、マスキングされた重み値に相当する活性化値と重み値のビットを受信しないことがある。
【0065】
動的ニューラルネットワーク量子化ロジック212による重み値のマスキングならびに/またはMAC202a~202iのクロックゲーティングおよび/もしくは電源切断は、MACアレイ200によって実行されるニューラルネットワークをプルーニングすることがある。ニューラルネットワークから重み値およびMAC演算を取り除くことは、実質的に、ニューラルネットワークからシナプスとノードが取り除くことがある。重みの閾値は、重みの閾値との比較の結果が好ましくない重み値がニューラルネットワークの実行から取り除かれても、AIプロセッサの結果の正確さの許容可能な損失しか引き起こさないことがあるということに基づいて決定されてもよい。
【0066】
図2Bは、
図2Aに示されるAIプロセッサ124の実施形態を示す。
図1~
図2Bを参照すると、AIプロセッサ124は、動的ニューラルネットワーク量子化ロジック212、214を含んでもよく、これらは、ソフトウェアツールとしてではなく、またはコンパイラにおいてではなく、ハードウェア回路論理として実装されてもよい。活性化バッファ206および重みバッファ204、動的量子化コントローラ208、ハードウェア動的ニューラルネットワーク量子化ロジック212、214、ならびにMACアレイ200は、
図2Aを参照して説明されるように機能して対話してもよい。
【0067】
図3は、様々な実施形態を実装するのに適した、動的ニューラルネットワーク量子化アーキテクチャを有する例示的なSoCを示す。
図1~
図3を参照すると、SoC102は、任意の数のAI処理サブシステム300とメモリ106およびそれらの組合せを含んでもよい。AI処理サブシステム300は、任意の数のAIプロセッサ124a~124f、入力/出力(I/O)インターフェース302、およびメモリコントローラ/物理層コンポーネント304a~304fならびにそれらの組合せを含んでもよい。
【0068】
AIプロセッサ(たとえば、124)に関して本明細書において論じられるように、いくつかの実施形態では、動的ニューラルネットワーク量子化再構成は、AIプロセッサを用いて実施されてもよい。いくつかの実施形態では、動的ニューラルネットワーク量子化再構成は、少なくとも一部、活性化値および重み値がAIプロセッサ124a~124fによって受信される前に実施されてもよい。
【0069】
I/Oインターフェース302は、AI処理サブシステム300と、プロセッサ(たとえば、104)、通信インターフェース(たとえば、通信インターフェース(たとえば、108))、通信コンポーネント(たとえば、112)、周辺デバイスインターフェース(たとえば、120)、周辺デバイス(たとえば、120)などを含む、コンピューティングデバイス(たとえば、100)の他のコンポーネントとの間の通信を制御するように構成されてもよい。一部のそのような通信は、活性化値を受信することを含んでもよい。いくつかの実施形態では、I/Oインターフェース302は、AI QoSマネージャ(たとえば、210)、動的量子化コントローラ(たとえば、208)、および/もしくは動的ニューラルネットワーク量子化ロジック(たとえば、212)の機能を含み、かつ/または実装するように構成されてもよい。いくつかの実施形態では、I/Oインターフェース302は、ハードウェア、I/Oインターフェース302で実行されるソフトウェア、および/またはI/Oインターフェース302で実行されるハードウェアとソフトウェアを通じて、AI QoSマネージャ、動的量子化コントローラ、および/または動的ニューラルネットワーク量子化ロジックの機能を実装するように構成されてもよい。
【0070】
メモリコントローラ/物理層コンポーネント304a~304fは、AIプロセッサ124a~124f、メモリ106、ならびに/またはAI処理サブシステム300および/もしくはAIプロセッサ124a~124fにローカルなメモリの間の通信を制御するように構成されてもよい。一部のそのような通信は、重み値および活性化値のメモリ106からの読み取りとメモリ106への書き込みを含んでもよい。
【0071】
いくつかの実施形態では、メモリコントローラ/物理層コンポーネント304a~304fは、AI QoSマネージャ、動的量子化コントローラ、および/もしくは動的ニューラルネットワーク量子化ロジックの機能を含み、かつ/または実装するように構成されてもよい。たとえば、メモリコントローラ/物理層コンポーネント304a~304fは、重み値および/または活性化値の初期のメモリ106の書き込みもしくは読み取りの間に、活性化値および/または重み値を量子化および/またはマスキングしてもよい。さらなる例として、メモリコントローラ/物理層コンポーネント304a~304fは、メモリ106から重み値を移すとき、重み値をローカルメモリに書き込む間に重み値を量子化および/またはマスキングしてもよい。さらなる例として、メモリコントローラ/物理層コンポーネント304a~304fは、活性化値が生み出される間、活性化値を量子化および/またはマスキングしてもよい。
【0072】
いくつかの実施形態では、メモリコントローラ/物理層コンポーネント304a~304fは、ハードウェア、メモリコントローラ/物理層コンポーネント304a-304fで実行されるソフトウェア、および/またはメモリコントローラ/物理層コンポーネント304a-304fで実行されるハードウェアとソフトウェアを通じて、AI QoSマネージャ、動的量子化コントローラ、および/または動的ニューラルネットワーク量子化ロジックの機能を実装するように構成されてもよい。
【0073】
I/Oインターフェース302および/またはメモリコントローラ/物理層コンポーネント304a~304fは、量子化されたおよび/もしくはマスキングされた重みならびに/または活性化値をAIプロセッサ124a~124fに提供するように構成されてもよい。いくつかの実施形態では、I/Oインターフェース302および/またはメモリコントローラ/物理層コンポーネント304a~304fは、完全にマスキングされた重み値をAIプロセッサ124a~124fに提供しないように構成されてもよい。
【0074】
図4Aおよび
図4Bは、様々な実施形態を実装するのに適した、例示的なAI QoS関係を示す。
図1~
図4Bを参照すると、動的ニューラルネットワーク量子化再構成のために、AI QoSマネージャ(たとえば、210)は、ある動作条件のもとで動的ニューラルネットワーク量子化再構成の結果として達成すべきAIプロセッサのスループットおよびAIプロセッサの結果の正確さを考慮するAI QoS値を決定してもよい。
【0075】
図4Aは、水平軸上の動的ニューラルネットワーク量子化再構成を使用して量子化される重み値および活性化値のビット幅に関して、垂直軸上のAI QoS値に関するAIプロセッサの結果の正確さの測定結果を表すグラフ400aを示す。曲線402aは、重み値と活性化値のビット幅が大きいほど、AIプロセッサの結果がより正確になる可能性があることを示す。しかしながら、曲線402aは、曲線402aの傾きが0に近付くにつれて重み値と活性化値のビット幅が大きくなるので、重み値と活性化値のビット幅による利益が減衰することも示す。したがって、最大のビット幅より小さい重み値および活性化値の何らかのビット幅に対して、AIプロセッサの結果の正確さは無視できる変化しか示さないことがある。
【0076】
曲線402aはさらに、重み値と活性化値のいくつかのビット幅が最大のビット幅よりもさらに小さいような点において、曲線402aの傾きがより大きい率で増大することを示す。したがって、最大のビット幅よりさらに小さい重み値および活性化値のいくつかのビット幅に対して、AIプロセッサの結果の正確さは無視できない変化を示すことがある。無視できる変化を示す重み値および活性化値のビット幅に対して、重み値と活性化値を量子化し、それでもAIプロセッサの結果の正確さの許容可能なレベルを達成するために、AIプロセッサの結果の正確さと動的ニューラルネットワーク量子化再構成が実装されてもよい。
【0077】
図4Bは、水平軸上の動的ニューラルネットワーク量子化再構成の実装形態に対するAIプロセッサのスループットに関して、垂直軸上のAI QoS値に関する、レイテンシとも呼ばれることがあるAIプロセッサの応答性の測定結果を表すグラフ400bを示す。いくつかの実施形態では、スループットは、秒当たりの推論などの、AIプロセッサによって生み出される期間当たりの推論の値を含んでもよい。スループットは、活性化値および/または重み値のより小さいビット幅に応答して、動的ニューラルネットワーク量子化再構成の実施のために増大してもよい。
【0078】
曲線402bは、AIプロセッサのスループットが高くなるほど、AIプロセッサの応答性がより高くなる可能性があることを示す。しかしながら、曲線402bはまた、曲線402bの傾きが0に近付くにつれてAIプロセッサのスループットが高くなるので、AIプロセッサのスループットによる利益が減衰することを示す。したがって、最高のAIプロセッサのスループットより低い何らかのAIプロセッサのスループットに対して、AIプロセッサの応答性は無視できる変化しか示さないことがある。
【0079】
曲線402bはさらに、いくつかのAIプロセッサのスループットが最高のAIプロセッサのスループットよりさらに低いような点において、曲線402bの傾きはより大きい率で増大することを示す。したがって、最高のAIプロセッサのスループットよりさらに低いいくつかのAIプロセッサのスループットに対して、AIプロセッサの応答性は無視できない変化を示すことがある。無視できる変化を示すAIプロセッサのスループットに対して、活性化値および/または重み値を量子化し、それでも許容可能なレベルのAIプロセッサの応答性を達成するために、AIプロセッサの応答性と動的ニューラルネットワーク量子化再構成が実装されてもよい。
【0080】
図5は、様々な実施形態において、動的ニューラルネットワーク量子化アーキテクチャを実装するAIプロセッサ動作周波数における例示的な利益を示す。
図1~
図5を参照して、動的ニューラルネットワーク量子化再構成に対して、動的ニューラルネットワーク量子化ロジック(たとえば、212、214)、I/Oインターフェース(たとえば、302)、および/またはメモリコントローラ/物理層コンポーネント(たとえば、304a~304f)は、AIプロセッサのスループットおよび/またはAIプロセッサの結果の正確さのレベルを達成するために、動的ニューラルネットワーク量子化再構成を実施してもよい。
【0081】
図5は、水平軸上の重み値および活性化値のビット幅に関して、垂直軸上のAIプロセッサのスループットに影響することのあるAIプロセッサ動作周波数の測定結果を表すグラフ500を示す。グラフ500はまた、AIプロセッサが動作してもよい動作条件を表すために影を付けられている。たとえば、動作条件はAIプロセッサの温度であってもよく、より暗い影はより高い温度を表してもよく、したがって、最低の温度はグラフの原点であってもよく、最高の温度は原点の反対側であってもよい。点502について、動的ニューラルネットワーク量子化再構成は実施されず、重み値および活性化値は最大のビット幅にとどまってもよく、温度を下げる唯一の手段は、AIプロセッサの動作周波数を下げることである。AIプロセッサの動作周波数の過剰な低減は、自動車システムなどのミッションクリティカルシステムにおいて、致命的な問題を引き起こす悪いAI QoSおよびレイテンシをもたらす。点504について、動的ニューラルネットワーク量子化再構成が実施され、点502によって示されるのと同様の温度低下を達成するために、AIプロセッサの動作周波数が下げられることと、重み値と活性化値のビット幅が最大のビット幅より小さくなるように量子化されることの両方が行われてもよい。点504は、重み値と活性化値のビット幅を減らし、動的ニューラルネットワーク量子化再構成を使用することによって、AIプロセッサ動作周波数が点502のAIプロセッサ動作周波数と比較して高くなることがあり、一方、点502と504の両方における温度の動作条件が類似していることを示す。したがって、動的ニューラルネットワーク量子化再構成は、動的ニューラルネットワーク量子化再構成を使用しない場合と比較して、AIプロセッサの温度などの類似する動作条件において、AIプロセッサのスループットなどのより良いAIプロセッサの性能を実現することがある。
【0082】
図6は、様々な実施形態において、動的ニューラルネットワーク量子化アーキテクチャを実装するAIプロセッサ動作周波数における例示的な利益を示す。
図1~
図6を参照して、動的ニューラルネットワーク量子化再構成に対して、動的ニューラルネットワーク量子化ロジック(たとえば、212、214)、I/Oインターフェース(たとえば、302)、および/またはメモリコントローラ/物理層コンポーネント(たとえば、304a~304f)は、AIプロセッサのスループットおよび/またはAIプロセッサの結果の正確さのレベルを達成するために、動的ニューラルネットワーク量子化再構成を実施してもよい。
図6は、AIプロセッサの動作条件の測定結果を表すグラフ600a、600b、604a、604b、608を示し、これは、時間に関してプロットされるAIプロセッサのスループットに影響することがある。グラフ600aは、水平軸上の時間に関して、垂直軸上の動的ニューラルネットワーク量子化再構成を実施しない場合のAIプロセッサ温度の測定結果を表す。グラフ600bは、水平軸上の時間に関して、垂直軸上の動的ニューラルネットワーク量子化再構成を実施する場合のAIプロセッサ温度の測定結果を表す。グラフ604aは、水平軸上の時間に関して、垂直軸上の動的ニューラルネットワーク量子化再構成を実施しない場合のAIプロセッサ周波数の測定結果を表す。グラフ604bは、水平軸上の時間に関して、垂直軸上の動的ニューラルネットワーク量子化再構成を実施する場合のAIプロセッサ周波数の測定結果を表す。グラフ608は、水平軸上の時間に関して、垂直軸上の動的ニューラルネットワーク量子化再構成を実施する場合の活性化および/または重み値のためのAIプロセッサビット幅の測定結果を表す。
【0083】
時間612の前に、グラフ600aにおけるAIプロセッサ温度602aは上昇することがあるが、グラフ604aにおけるAIプロセッサ周波数606aは安定したままであることがある。同様に、時間612の前に、グラフ600bにおけるAIプロセッサ温度602bは上昇することがあるが、グラフ604bにおけるAIプロセッサ周波数606bおよびグラフ608におけるAIプロセッサビット幅610は安定したままであることがある。AIプロセッサ周波数606a、606bおよび/またはAIプロセッサビット幅610が変化することなくAIプロセッサ温度602a、602bが上昇する理由には、AIプロセッサ(たとえば、124、124a~124f)に対する作業負荷の増大があることがある。
【0084】
時間612において、AIプロセッサ温度602aが最高になることがあり、AIプロセッサ周波数606aが低下することがある。より低いAIプロセッサ周波数606aにより、時間612より前と比べて、AIプロセッサが生成する熱が少なくなることがあり、また、より低いAIプロセッサ周波数606aにおいて消費電力がより少なくなるので、AIプロセッサ温度602aの上昇が止まることがある。同様に、時間612において、AIプロセッサの温度602bが最高になることがあり、AIプロセッサ周波数606bが低下することがある。しかしながら、時間612において、AIプロセッサビット幅610も小さくなることがある。より低いAIプロセッサ周波数606bおよびより小さいAIプロセッサビット幅610により、時間612より前と比べて、AIプロセッサが生成する熱が少なくなることがあり、また、より低いAIプロセッサ周波数606bにおいて消費電力がより少なくなり、より小さいビット幅のデータを処理するので、AIプロセッサ温度602bの上昇が止まることがある。
【0085】
互いとの比較において、時間612より前と時間612でのAIプロセッサ周波数614aの差は、時間612より前と時間612でのAIプロセッサ周波数614bの差より大きいことがある。AIプロセッサ動作周波数606bを下げることと併せてAIプロセッサビット幅610を小さくすることで、AIプロセッサ動作周波数606bの低下が、AIプロセッサ動作周波数606aだけを下げるときのAIプロセッサ動作周波数606aの低下より小さくなることが可能になることがある。AIプロセッサビット幅610を小さくすると、AIプロセッサ動作周波数606bは、AIプロセッサ温度602a、602bに関して、AIプロセッサ動作周波数606aだけを下げる場合と同様の利益を得ることがあるが、より高いAIプロセッサ動作周波数606bという利益ももたらすことがあり、これはAIプロセッサのスループットに影響することがある。
【0086】
図7は、様々な実施形態を実装するための、動的ニューラルネットワーク量子化アーキテクチャにおけるMACにおける迂回の例を示す。
図1~
図7を参照すると、MAC202は、任意の数のANDゲート、全加算器(
図7において"F"と標識される)および/または半加算器(
図7において"H"と標識される)ならびにそれらの組合せなどの、様々な論理コンポーネント700、702を含む論理回路を含んでもよい。
図7に示される例は、8ビットの乗算および累算機能のために普通は構成される論理回路を有するMAC202を示す。しかしながら、MAC202は普通は、任意のビット幅データの乗算および累算機能のために構成されてもよく、
図7に示される例は、特許請求の範囲および本明細書の説明の範囲を限定しない。
【0087】
いくつかの実施形態では、線X0~X7、Y0~Y7は、活性化値および重み値の入力をMAC202に提供してもよい。X0およびY0は最下位ビットを表してもよく、X7およびY7は活性化値および重み値の最上位ビットを表してもよい。本明細書において説明されるように、動的ニューラルネットワーク量子化再構成は、活性化値および/または重み値の任意の数の動的ビットを量子化および/またはマスキングすることを含んでもよい。活性化値および/または重み値のビットの量子化および/またはマスキングは、重み値のビットを0の値に丸め、かつ/または0の値で置き換えてもよい。したがって、活性化値および/または重み値の量子化および/またはマスキングされたビットと、活性化値および/または重み値の別のビットとの乗算は、0の値をもたらすことがある。量子化および/もしくはマスキングされた活性化値ならびに/または重み値の乗算の既知の結果が与えられると、結果の乗算と加算を実際に実施する必要はないことがある。したがって、MACアレイ(たとえば、200)を含むAIプロセッサ(たとえば、124、124a~123f)は、量子化および/もしくはマスキングされた活性化値ならびに/または重み値の乗算と、結果の加算との乗算ために、論理コンポーネント702をオフにするようにクロックゲーティングしてもよい。マスキングされた重み値の乗算と、結果の加算との乗算のために、論理コンポーネント702をクロックゲーティングすることは、回路スイッチング電力の損失を減らすことがあり、これは動的電力削減とも呼ばれる。
【0088】
図7に示される例では、線X
0、X
1、Y
0、またはY
1上の活性化値および重み値の下位2ビットがマスキングされる。X
0、X
1、Y
0、もしくはY
1ならびに/またはX
0、X
1、Y
0、および/もしくはY
1のための演算の結果を入力として受信する、影付きの対応する論理コンポーネント702は、それらがオフになるようにクロックゲーティングされることを示すために、影を付けられている。残りの影を付けられていない論理コンポーネント700は、それらがオフになるようにクロックゲーティングされないことを表すために、影を付けられていない。
【0089】
図8は、ある実施形態による、AI QoS決定のための方法800を示す。
図1~
図8を参照すると、方法800は、コンピューティングデバイス(たとえば、100)において、汎用ハードウェアにおいて、専用ハードウェア(たとえば、210)において、プロセッサ(たとえば、プロセッサ104、AIプロセッサ124、AI QoSマネージャ210、AI処理サブシステム300、AIプロセッサ124a~124f、I/Oインターフェース302、メモリコントローラ/物理層コンポーネント304a~304f)において実行されるソフトウェアにおいて、または、他の個別のコンポーネント、様々なメモリ/キャッシュコントローラを含む動的ニューラルネットワーク量子化システム内のソフトウェアを実行するプロセッサ(たとえば、AIプロセッサ124、AI QoSマネージャ210、AI処理サブシステム300、AIプロセッサ124a~124f、I/Oインターフェース302、メモリコントローラ/物理層コンポーネント304a~304f)などの、ソフトウェアで構成されたプロセッサと専用ハードウェアの組合せにおいて、実装されてもよい。様々な実施形態において可能な代替の再構成を包含するために、方法800を実装するハードウェアは、本明細書では「AI QoSデバイス」と呼ばれる。
【0090】
ブロック802において、AI QoSデバイスがAI QoS因子を受信してもよい。AI QoSデバイスは、温度センサ、電圧センサ、電流センサなどの任意の数のセンサおよびそれらの組合せ、ならびにプロセッサに通信可能に接続されてもよい。AI QoSデバイスは、これらの通信可能に接続されたセンサおよび/またはプロセッサからAI QoS因子を表すデータ信号を受信してもよい。AI QoS因子は動作条件であってもよく、動的ニューラルネットワーク量子化ロジック再構成は、量子化、マスキング、および/またはニューラルネットワークプルーニングを変更するために、その動作条件に基づいてもよい。これらの動作条件は、AIプロセッサ、AIプロセッサを有するSoC(たとえば、102)、AIプロセッサによってアクセスされるメモリ(たとえば、106、114)、および/またはAIプロセッサの他の周辺装置(たとえば、122)の、温度、電力消費、処理装置の利用率、性能などを含んでもよい。たとえば、温度は、AIプロセッサ上のある位置における温度を表す温度センサ値であってもよい。さらなる例では、電力は、電源と比較した電源レールのピーク、および/または電力管理集積回路の能力、および/または電池の充電状況を表す値であってもよい。さらなる例として、性能は、利用率、完全にアイドル状態の時間、フレーム毎秒、および/またはAIプロセッサのエンドツーエンドレイテンシを表す値であってもよい。いくつかの実施形態では、ブロック802において、AI QoSマネージャが、AI QoS因子を受信するように構成されてもよい。いくつかの実施形態では、ブロック802において、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントが、AI QoS因子を受信するように構成されてもよい。
【0091】
決定ブロック804において、AI QoSデバイスが、ニューラルネットワーク量子化を動的に構成するかどうかを判定してもよい。いくつかの実施形態では、決定ブロック804において、AI QoSマネージャが、ニューラルネットワーク量子化を動的に構成するかどうかを判定するように構成されてもよい。いくつかの実施形態では、決定ブロック804において、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントが、ニューラルネットワーク量子化を動的に構成するかどうかを判定するように構成されてもよい。AI QoSデバイスは、動的ニューラルネットワーク量子化再構成を実施するかどうかを動作条件から決定してもよい。AI QoSデバイスは、AIプロセッサの処理能力の制約を増やした動作条件のレベルに基づいて、ニューラルネットワーク量子化を動的に構成することを決定してもよい。AI QoSデバイスは、AIプロセッサの処理能力の制約を減らした動作条件のレベルに基づいて、ニューラルネットワーク量子化を動的に構成することを決定してもよい。AIプロセッサの処理能力の制約は、処理能力のレベルを維持するための、AIプロセッサの能力に影響する熱の蓄積のレベル、電力消費、処理装置の利用率などの、動作条件レベルによって引き起こされることがある。
【0092】
いくつかの実施形態では、AI QoSデバイスは、動的ニューラルネットワーク量子化再構成を実施するかどうかを動作条件から決定するための、任意の数のアルゴリズム、閾値、ルックアップテーブルなど、およびそれらの組合せを用いて構成されてもよい。たとえば、AI QoSデバイスは、受信された動作条件を動作条件の閾値と比較してもよい。閾値を超えるなど、動作条件の閾値に対する動作条件の比較の結果が好ましくないことに応答して、決定ブロック804において、AI QoSデバイスが、動的ニューラルネットワーク量子化再構成を実施することを決定してもよい。そのような好ましくない比較は、AIプロセッサの処理能力の制約を動作条件が増やしたことを、AI QoSデバイスに示すことがある。閾値を下回るなど、動作条件の閾値に対する動作条件の比較の結果が好ましいことに応答して、決定ブロック804において、AI Qoデバイスが、動的ニューラルネットワーク量子化再構成を実施することを決定してもよい。そのような好ましい比較は、AIプロセッサの処理能力の制約を動作条件が減らしたことを、AI QoSデバイスに示すことがある。
【0093】
いくつかの実施形態では、AI QoSデバイスは、複数の受信された動作条件を動作条件の複数の閾値と比較し、好ましくないおよび/または好ましい比較結果の組合せに基づいて、動的ニューラルネットワーク量子化再構成を実施することを決定してもよい。いくつかの実施形態では、AIデバイスは、複数の受信された動作条件を組み合わせるためのアルゴリズムを用いて構成され、アルゴリズムの結果を閾値と比較してもよい。いくつかの実施形態では、複数の受信された動作条件は、同じタイプおよび/または異なるタイプであってもよい。いくつかの実施形態では、複数の受信された動作条件は、特定の時間に対するものであってもよく、かつ/またはある期間にわたってもよい。
【0094】
ニューラルネットワーク量子化を動的に構成すると決定したことに応答して(すなわち、決定ブロック804="Yes")、ブロック805において、AI QoSデバイスがAI QoS値を決定してもよい。動的ニューラルネットワーク量子化再構成のために、AI QoSデバイスは、動的ニューラルネットワーク量子化再構成の結果として達成すべきAIプロセッサのスループットとAIプロセッサの結果の正確さ、および/またはある動作条件のもとでのAIプロセッサのAIプロセッサ動作周波数を考慮する、AIプロセッサが達成すべきAI QoS値を決定してもよい。AI QoS値は、AIプロセッサのためのレイテンシ、品質、正確さなどの、ユーザにより知覚可能なレベルおよび/またはミッションクリティカル用途で許容可能なレベルを表してもよい。
【0095】
いくつかの実施形態では、AI QoSデバイスは、動作条件からAI QoS値を決定するための、任意の数のアルゴリズム、閾値、ルックアップテーブルなど、およびそれらの組合せを用いて構成されてもよい。たとえば、AI QoSデバイスは、温度閾値を超える温度を示すAIプロセッサが達成すべき目標として、AIプロセッサのスループットおよびAIプロセッサの結果の正確さを考慮するAI QoS値を決定してもよい。さらなる例として、AI QoSデバイスは、電流閾値を超える電流(電力消費)を示すAIプロセッサが達成すべき目標として、AIプロセッサのスループットおよびAIプロセッサの結果の正確さを考慮するAI QoS値を決定してもよい。さらなる例として、AI QoSデバイスは、スループット閾値および/または利用率閾値を超えるスループット値および/または利用率値を示すAIプロセッサが達成すべき目標として、AIプロセッサのスループットおよびAIプロセッサの結果の正確さを考慮するAI QoS値を決定してもよい。動作条件が閾値を超えることに関して説明される前述の例は、特許請求の範囲または明細書の範囲を限定することは意図されず、動作条件が閾値を下回る実施形態に同様に適用可能である。いくつかの実施形態では、ブロック805において、AI QoSマネージャが、AI QoS値を決定するように構成されてもよい。いくつかの実施形態では、ブロック805において、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントが、AI QoS値を決定するように構成されてもよい。
【0096】
動作ブロック806において、AI QoSデバイスが、AIプロセッサ動作周波数を下げるかどうかを判定してもよい。AI QoSデバイスはまた、単独で、または動的ニューラルネットワーク量子化再構成と組み合わせて、AIプロセッサ動作周波数の従来の低減を実施するかどうかを判定してもよい。たとえば、動作条件のための閾値のいくつかが、AIプロセッサ動作周波数の従来の低減および/または動的ニューラルネットワーク量子化再構成と関連付けられてもよい。AIプロセッサ動作周波数の低減および/または動的ニューラルネットワーク量子化再構成に関連する閾値に対する、任意の数の受信された動作条件またはそれらの組合せの比較の結果が好ましくないことにより、AI QoSデバイスは、AIプロセッサ動作周波数の低減および/または動的ニューラルネットワーク量子化再構成を実施すると決定することがある。いくつかの実施形態では、任意選択の決定ブロック806において、AI QoSマネージャが、AIプロセッサ動作周波数を下げるかどうかを判定するように構成されてもよい。いくつかの実施形態では、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントは、任意選択の決定ブロック806においてAIプロセッサ動作周波数を下げるかどうかを判定するように構成されてもよい。
【0097】
ブロック805においてAI QoS値を決定したことに続いて、またはAIプロセッサ動作周波数(すなわち、任意選択の決定ブロック806="No")を下げないと決定したことに応答して、ブロック808において、AI QoSデバイスが、AI QoS値を達成するためにAI量子化レベルを決定してもよい。AI QoSデバイスは、ある動作条件のもとで動的ニューラルネットワーク量子化再構成の結果として達成すべき、AIプロセッサのスループットおよびAIプロセッサの結果の正確さを考慮するAI量子化レベルを決定してもよい。たとえば、AI QoSデバイスは、温度閾値を超える温度を示すAIプロセッサが達成すべき目標として、AIプロセッサのスループットおよびAIプロセッサの結果の正確さを考慮するAI量子化レベルを決定してもよい。いくつかの実施形態では、AI QoSデバイスは、AI QoS値などの、任意の数のAIプロセッサの正確さおよびAIプロセッサのスループットを表す値またはそれらの組合せから、AI量子化レベルを計算するアルゴリズムを実行するように構成されてもよい。たとえば、アルゴリズムは、AIプロセッサの正確さとAIプロセッサのスループットの加算関数および/または最小値関数であってもよい。さらなる例として、AIプロセッサの正確さを表す値は、AIプロセッサによって実行されるニューラルネットワークの出力の誤差値を含んでもよく、AIプロセッサのスループットを表す値は、AIプロセッサによって生み出される期間当たりの推論の値を含んでもよい。アルゴリズムは、AIプロセッサの正確さまたはAIプロセッサのスループットのいずれかを優先するように重み付けられてもよい。いくつかの実施形態では、重みは、AIプロセッサ、AIプロセッサを有するSoC、AIプロセッサによってアクセスされるメモリ、および/またはAIプロセッサの他の周辺装置の任意の数の動作条件および動作条件の組合せと関連付けられてもよい。AI量子化レベルは、AIプロセッサの処理能力に対する動作条件の影響に基づいて、以前に計算されたAI量子化レベルに対して変化してもよい。たとえば、AIプロセッサの処理能力の制約の増大をAI QoSデバイスに示す動作条件は、AI量子化レベルの上昇をもたらしてもよい。別の例として、AIプロセッサの処理能力の制約の減少をAI QoSデバイスに示す動作条件は、AI量子化レベルの低下をもたらしてもよい。いくつかの実施形態では、ブロック808において、AI QoSマネージャが、AI量子化レベルを決定するように構成されてもよい。いくつかの実施形態では、ブロック808において、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントが、AI量子化レベルを決定するように構成されてもよい。
【0098】
ブロック810において、AI QoSデバイスが、AI量子化レベル信号を生成して送信してもよい。AI QoSデバイスは、AI量子化レベルを有するAI量子化レベル信号を生成して送信してもよい。いくつかの実施形態では、AI QoSデバイスは、AI量子化レベル信号を動的量子化コントローラ(たとえば、208)に送信してもよい。いくつかの実施形態では、AI QoSデバイスは、AI量子化レベル信号をI/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントに送信してもよい。AI量子化レベル信号は、受信者に、動的ニューラルネットワーク量子化再構成を実施するためのパラメータを決定させ、パラメータ決定のための入力としてAI量子化レベルを提供させることがある。いくつかの実施形態では、AI量子化レベル信号はまた、AI QoSデバイスに動的ニューラルネットワーク量子化再構成を実施することを決定させた動作条件を含んでもよい。動作条件はまた、動的ニューラルネットワーク量子化再構成を実施するためのパラメータを決定するための入力であってもよい。いくつかの実施形態では、動作条件は、動作条件の値および/または動作条件を使用するアルゴリズムの結果を表す値、閾値に対する動作条件の比較、動作条件のためのルックアップテーブルからの値などによって表されてもよい。たとえば、比較の結果を表す値は、動作条件の値と閾値の値との差を含んでもよい。いくつかの実施形態では、ブロック810において、AI QoSマネージャが、AI量子化レベル信号を生成して送信するように構成されてもよい。いくつかの実施形態では、ブロック810において、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントが、AI量子化レベル信号を生成して送信するように構成されてもよい。ブロック802において、AI QoSデバイスが、AI QoS因子を繰り返し、定期的に、かつ/または継続的に受信してもよい。
【0099】
AIプロセッサ動作周波数を下げると決定したことに応答して(すなわち、任意選択の決定ブロック806="Yes")、任意選択のブロック812において、AI QoSデバイスが、AI量子化レベルおよびAIプロセッサ動作周波数値を決定してもよい。AI QoSデバイスは、ブロック808におけるようにAI量子化レベルを決定してもよい。AI QoSデバイスは同様に、任意の数のアルゴリズム、閾値、ルックアップテーブルなど、およびそれらの組合せの使用を通じて、AIプロセッサ動作周波数値を決定してもよい。AIプロセッサ動作周波数値は、AIプロセッサ動作周波数をそこまで下げるべき、動作周波数値を示してもよい。AIプロセッサ動作周波数は、ブロック805において決定されたAI QoS値に基づいてもよい。いくつかの実施形態では、AI量子化レベルは、AI QoS値を達成するために、AIプロセッサの動作周波数とともに計算されてもよい。いくつかの実施形態では、AI QoSマネージャは、任意選択のブロック812においてAI量子化レベルおよびAIプロセッサ動作周波数値を決定するように構成されてもよい。いくつかの実施形態では、任意選択のブロック812において、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントが、AI量子化レベルおよびAIプロセッサ動作周波数値を決定するように構成されてもよい。
【0100】
任意選択のブロック814において、AI QoSデバイスが、AI量子化レベル信号およびAI周波数信号を生成して送信してもよい。AI QoSデバイスが、ブロック810におけるようにAI量子化レベル信号を生成して送信してもよい。AI QoSデバイスはまた、AI周波数信号を生成してMACアレイ(たとえば、200)に送信してもよい。AI周波数信号は、AIプロセッサ動作周波数値を含んでもよい。AI周波数信号は、たとえば、AIプロセッサ動作周波数値を使用して、MACアレイにAIプロセッサ動作周波数の低減を実施させてもよい。いくつかの実施形態では、任意選択のブロック814において、AI QoSマネージャが、AI量子化レベル信号およびAI周波数信号を生成して送信するように構成されてもよい。いくつかの実施形態では、任意選択のブロック814において、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントが、AI量子化レベル信号およびAI周波数信号を生成して送信するように構成されてもよい。ブロック802において、AI QoSデバイスが、AI QoS因子を繰り返し、定期的に、かつ/または継続的に受信してもよい。
【0101】
ニューラルネットワーク量子化を動的に構成しないと決定したことに応答して(すなわち、決定ブロック804="No")、任意選択の決定ブロック816において、AI QoSデバイスが、AIプロセッサ動作周波数を下げるかどうかを判定してもよい。AI QoSマネージャは、任意選択の決定ブロック806におけるように、AIプロセッサ動作周波数を下げるかどうかを判定してもよい。いくつかの実施形態では、任意選択の決定ブロック806において、AI QoSマネージャが、AIプロセッサ動作周波数を下げるかどうかを判定するように構成されてもよい。いくつかの実施形態では、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントは、任意選択の決定ブロック806においてAIプロセッサ動作周波数を下げるかどうかを判定するように構成されてもよい。
【0102】
AIプロセッサ動作周波数を下げると決定したことに応答して(すなわち、任意選択の決定ブロック816="Yes")、任意選択のブロック818において、AI QoSデバイスが、AIプロセッサ動作周波数値を決定してもよい。AI QoSデバイスは、任意選択の決定ブロック812におけるように、AIプロセッサ動作周波数を決定してもよい。いくつかの実施形態では、任意選択のブロック818において、AI QoSマネージャが、AIプロセッサ動作周波数値を決定するように構成されてもよい。いくつかの実施形態では、任意選択のブロック818において、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントが、AIプロセッサ動作周波数値を決定するように構成されてもよい。
【0103】
任意選択のブロック820において、AI QoSデバイスが、AI周波数信号を生成して送信してもよい。AI QoSデバイスは、任意選択のブロック814におけるように、AI周波数信号を生成して送信してもよい。いくつかの実施形態では、任意選択のブロック820において、AI QoSマネージャが、AI周波数信号を生成して送信するように構成されてもよい。いくつかの実施形態では、任意選択のブロック820において、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントが、AI周波数信号を生成して送信するように構成されてもよい。ブロック802において、AI QoSデバイスが、AI QoS因子を繰り返し、定期的に、または継続的に受信してもよい。
【0104】
AIプロセッサ動作周波数を下げないと決定したことに応答して(すなわち、任意選択の決定ブロック816="No")、ブロック802において、AI QoSデバイスがAI QoS因子を受信してもよい。
【0105】
図9は、ある実施形態による、動的ニューラルネットワーク量子化アーキテクチャ構成制御のための方法900を示す。
図1~
図9を参照すると、方法900は、コンピューティングデバイス(たとえば、100)において、汎用ハードウェアにおいて、専用ハードウェア(たとえば、動的量子化コントローラ208)において、プロセッサ(たとえば、プロセッサ104、AIプロセッサ124、動的量子化コントローラ208、AI処理サブシステム300、AIプロセッサ124a~124f、I/Oインターフェース302、メモリコントローラ/物理層コンポーネント304a~304f)において実行されるソフトウェアにおいて、または、他の個別のコンポーネント、様々なメモリ/キャッシュコントローラを含む動的ニューラルネットワーク量子化システム内のソフトウェアを実行するプロセッサ(たとえば、AIプロセッサ124、動的量子化コントローラ208、AI処理サブシステム300、AIプロセッサ124a~124f、I/Oインターフェース302、メモリコントローラ/物理層コンポーネント304a~304f)などの、ソフトウェアで構成されたプロセッサと専用ハードウェアの組合せにおいて、実装されてもよい。様々な実施形態において可能な代替の構成を包含するために、方法900を実施するハードウェアは、本明細書では「動的量子化デバイス」と呼ばれる。いくつかの実施形態では、方法900は、方法800(
図8)のブロック810および/または任意選択のブロック814に続いて実施されてもよい。
【0106】
ブロック902において、動的量子化デバイスが、AI量子化レベル信号を受信してもよい。動的量子化デバイスは、AI QoSデバイス(たとえば、AI QoSマネージャ210、I/Oインターフェース302、メモリコントローラ/物理層コンポーネント304a~304f)からAI量子化レベル信号を受信してもよい。いくつかの実施形態では、動的量子化コントローラは、ブロック902においてAI量子化レベル信号を受信するように構成されてもよい。いくつかの実施形態では、ブロック902において、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントが、AI量子化レベル信号を受信するように構成されてもよい。
【0107】
ブロック904において、動的量子化デバイスが、動的量子化のためのある数の動的ビットを決定してもよい。動的量子化デバイスは、動的ニューラルネットワーク量子化再構成のためのパラメータを決定するために、AI量子化レベル信号とともに受信されるAI量子化レベルを使用してもよい。いくつかの実施形態では、動的量子化デバイスはまた、動的ニューラルネットワーク量子化再構成のためのパラメータを決定するために、AI量子化レベル信号とともに受信される動作条件を使用してもよい。いくつかの実施形態では、動的量子化デバイスは、AI量子化レベルおよび/または動作条件に基づいて、動的ニューラルネットワーク量子化再構成のどのパラメータおよび/またはパラメータの値を使用すべきかを決定するための、アルゴリズム、閾値、ルックアップテーブルなどを用いて構成されてもよい。たとえば、動的量子化デバイスは、活性化値および重み値の量子化のために使用すべきある数の動的ビットを出力してもよいアルゴリズムへの入力として、AI量子化レベルおよび/または動作条件を使用してもよい。いくつかの実施形態では、ブロック904において、動的量子化コントローラが、動的量子化のためのある数の動的ビットを決定するように構成されてもよい。いくつかの実施形態では、ブロック904において、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントが、動的量子化のためのある数の動的ビットを決定するように構成されてもよい。
【0108】
任意選択のブロック906において、動的量子化デバイスが、活性化値と重み値のマスキングおよびMAC(たとえば、202a~202i)の一部の迂回のためにある数の動的ビットを決定してもよい。動的量子化デバイスは、動的ニューラルネットワーク量子化再構成のためのパラメータを決定するために、AI量子化レベル信号とともに受信されるAI量子化レベルを使用してもよい。いくつかの実施形態では、動的量子化デバイスはまた、動的ニューラルネットワーク量子化再構成のためのパラメータを決定するために、AI量子化レベル信号とともに受信される動作条件を使用してもよい。いくつかの実施形態では、動的量子化デバイスは、AI量子化レベルおよび/または動作条件に基づいて、動的ニューラルネットワーク量子化再構成のどのパラメータおよび/またはパラメータの値を使用すべきかを決定するための、アルゴリズム、閾値、ルックアップテーブルなどを用いて構成されてもよい。たとえば、動的量子化デバイスは、活性化値と重み値のマスキングおよびMACの一部の迂回のためにある数の動的ビットを出力してもよいアルゴリズムへの入力として、AI量子化レベルおよび/または動作条件を使用してもよい。いくつかの実施形態では、任意選択のブロック906において、動的量子化コントローラが、活性化値と重み値のマスキングおよびMACの一部の迂回のためにある数の動的ビットを決定するように構成されてもよい。いくつかの実施形態では、任意選択のブロック906において、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントが、活性化値と重み値のマスキングおよびMACの一部のバイパスのためのある数の動的ビットを決定するように構成されてもよい。
【0109】
任意選択のブロック908において、動的量子化デバイスが、動的ネットワークプルーニングのための閾値の重み値を決定してもよい。動的量子化デバイスは、動的ニューラルネットワーク量子化再構成のためのパラメータを決定するために、AI量子化レベル信号とともに受信されるAI量子化レベルを使用してもよい。いくつかの実施形態では、動的量子化デバイスはまた、動的ニューラルネットワーク量子化再構成のためのパラメータを決定するために、AI量子化レベル信号とともに受信される動作条件を使用してもよい。いくつかの実施形態では、動的量子化デバイスは、AI量子化レベルおよび/または動作条件に基づいて、動的ニューラルネットワーク量子化再構成のどのパラメータおよび/またはパラメータの値を使用すべきかを決定するための、アルゴリズム、閾値、ルックアップテーブルなどを用いて構成されてもよい。たとえば、動的量子化デバイスは、重み値のマスキングおよびMAC全体(たとえば、202a~202i)の迂回のために閾値の重み値を出力してもよいアルゴリズムへの入力として、AI量子化レベルおよび/または動作条件を使用してもよい。いくつかの実施形態では、任意選択のブロック908において、動的量子化コントローラが、動的ネットワークプルーニングのための閾値の重み値を決定するように構成されてもよい。いくつかの実施形態では、任意選択のブロック908において、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントが、動的ネットワークプルーニングのための閾値の重み値を決定するように構成されてもよい。
【0110】
ブロック904、任意選択のブロック906、および/または任意選択のブロック906において使用されるAI量子化レベルは、以前に計算されたAI量子化レベルとは異なっていてもよく、動的ニューラルネットワーク量子化再構成を実施するための決定されたパラメータに差異をもたらすことがある。たとえば、AI量子化レベルを上げることにより、動的量子化デバイスは、動的ニューラルネットワーク量子化再構成を実施するためのより多数の動的ビットおよび/またはより小さい閾値の重み値を決定するようになることがある。動的ビットの数を増やすことおよび/または閾値の重み値を下げることにより、ニューラルネットワークの計算を実施するためにより少数のビットおよび/またはより少数のMACが使用されるようになることがあり、これはニューラルネットワークの推論結果の正確さを下げることがある。別の例として、AI量子化レベルを下げることにより、動的量子化デバイスは、動的ニューラルネットワーク量子化再構成を実施するためのより少数の動的ビットおよび/またはより大きい閾値の重み値を決定するようになることがある。動的ビットの数を減らすことおよび/または閾値の重み値を上げることにより、ニューラルネットワークの計算を実施するためにより多数のビットおよび/またはより多数のMACが使用されるようになることがあり、これはニューラルネットワークの推論結果の正確さを上げることがある。
【0111】
ブロック910において、動的量子化デバイスが、動的量子化信号を生成して送信してもよい。動的量子化信号は、動的ニューラルネットワーク量子化再構成のためのパラメータを含んでもよい。動的量子化デバイスは、動的量子化信号を動的ニューラルネットワーク量子化ロジック(たとえば、212、214)に送信してもよい。いくつかの実施形態では、動的量子化デバイスは、動的量子化信号をI/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントを送信してもよい。動的量子化信号は、受信者に、動的ニューラルネットワーク量子化再構成を実施させ、動的ニューラルネットワーク量子化再構成を実施するためのパラメータを提供させてもよい。いくつかの実施形態では、動的量子化デバイスはまた、動的量子化信号をMACアレイに送信してもよい。動的量子化信号は、MACアレイに、動的ニューラルネットワーク量子化再構成を実施させ、動的ニューラルネットワーク量子化再構成を実施するためのパラメータを提供させてもよい。いくつかの実施形態では、動的量子化信号は、実装すべき動的ニューラルネットワーク量子化再構成のタイプのインジケータを含んでもよい。いくつかの実施形態では、動的ニューラルネットワーク量子化再構成のタイプのインジケータは、動的ニューラルネットワーク量子化再構成のためのパラメータであってもよい。いくつかの実施形態では、動的ニューラルネットワーク量子化再構成のタイプは、活性化値と重み値の量子化のための受信者を構成すること、活性化値と重み値のマスキングのために受信者を構成してMACの一部の迂回のためにMACアレイおよび/またはMACを構成すること、ならびに、重み値のマスキングのために受信者を構成してMAC全体の迂回のためにMACアレイおよび/またはMACを構成することを含んでもよい。いくつかの実施形態では、ブロック910において、動的量子化コントローラが、動的量子化信号を生成して送信するように構成されてもよい。いくつかの実施形態では、ブロック910において、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントが、動的量子化信号を生成して送信するように構成されてもよい。
【0112】
図10は、ある実施形態による、動的ニューラルネットワーク量子化アーキテクチャ再構成のための方法1000を示す。
図1~
図10を参照すると、方法1000は、コンピューティングデバイス(たとえば、100)において、汎用ハードウェアにおいて、専用ハードウェア(たとえば、動的ニューラルネットワーク量子化ロジック212、214、MACアレイ200、MAC202a~202i)において、プロセッサ(たとえば、プロセッサ104、AIプロセッサ124、AI処理サブシステム300、AIプロセッサ124a~124f、I/Oインターフェース302、メモリコントローラ/物理層コンポーネント304a~304f)において実行されるソフトウェアにおいて、または、他の個別のコンポーネント、様々なメモリ/キャッシュコントローラを含む動的ニューラルネットワーク量子化システム内のソフトウェアを実行するプロセッサ(たとえば、AIプロセッサ124、AI処理サブシステム300、AIプロセッサ124a~124f、I/Oインターフェース302、メモリコントローラ/物理層コンポーネント304a~304f)などの、ソフトウェアで構成されたプロセッサと専用ハードウェアの組合せにおいて、実装されてもよい。様々な実施形態において可能な代替の構成を包含するために、方法1000を実施するハードウェアは、本明細書では「動的量子化構成デバイス」と呼ばれる。いくつかの実施形態では、方法1000は、方法900(
図9)のブロック910に続いて実施されてもよい。
【0113】
ブロック1002において、動的量子化構成デバイスが、動的量子化信号を受信してもよい。動的量子化構成デバイスは、動的量子化コントローラ(たとえば、動的量子化コントローラ208、I/Oインターフェース302、メモリコントローラ/物理層コンポーネント304a~304f)から動的量子化信号を受信してもよい。いくつかの実施形態では、ブロック1002において、動的ニューラルネットワーク量子化ロジックが、動的量子化信号を受信するように構成されてもよい。いくつかの実施形態では、ブロック1002において、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントが、動的量子化信号を受信するように構成されてもよい。いくつかの実施形態では、ブロック1002において、MACアレイが、動的量子化信号を受信するように構成されてもよい。
【0114】
ブロック1004において、動的量子化構成デバイスが、動的量子化のためのある数の動的ビットを決定してもよい。動的量子化構成デバイスは、動的ニューラルネットワーク量子化再構成のためのパラメータを決定してもよい。動的量子化信号は、活性化値および重み値の量子化のために動的ニューラルネットワーク量子化ロジック(たとえば、動的ニューラルネットワーク量子化ロジック212、214、I/Oインターフェース302、メモリコントローラ/物理層コンポーネント304a~304f)を構成するためのある数の動的ビットのパラメータを含んでもよい。いくつかの実施形態では、ブロック1004において、動的ニューラルネットワーク量子化ロジックが、動的量子化のためのある数の動的ビットを決定するように構成されてもよい。いくつかの実施形態では、ブロック1004において、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントが、動的量子化のためのある数の動的ビットを決定するように構成されてもよい。
【0115】
ブロック1006において、動的量子化構成デバイスが、活性化値および重み値をその数の動的ビットに量子化するように動的ニューラルネットワーク量子化ロジックを構成してもよい。動的ニューラルネットワーク量子化ロジックは、活性化値および重み値のビットを動的量子化信号によって示されるその数の動的ビットに丸めることによって、活性化値および重み値を量子化するように構成されてもよい。動的ニューラルネットワーク量子化ロジックは、活性化値および重み値のビットをその数の動的ビットに丸めるように構成されてもよい、構成可能な論理ゲートおよび/またはソフトウェアを含んでもよい。いくつかの実施形態では、論理ゲートおよび/またはソフトウェアは、最大でその数の動的ビットまでの、および/またはそれを含む、活性化値と重み値の下位ビットに対して0の値を出力するように構成されてもよい。いくつかの実施形態では、論理ゲートおよび/またはソフトウェアは、その数の動的ビットを含む、および/またはそれに続く、活性化値と重み値の上位ビットの値を出力するように構成されてもよい。たとえば、活性化値または重み値の各ビットは、逐次、たとえば最下位ビットから最上位ビットまでなど、論理ゲートおよび/またはソフトウェアに入力されてもよい。論理ゲートおよび/またはソフトウェアは、パラエータによって示される、最大でその数の動的ビットまでの、および/またはそれを含む、活性化値と重み値の下位ビットに対して0の値を出力してもよい。論理ゲートおよび/またはソフトウェアは、パラメータによって示されるその数の動的ビットを含む、および/またはそれに続く、活性化値と重み値の上位ビットに対する値を出力してもよい。その数の動的ビットは、動的ニューラルネットワーク量子化ロジックのデフォルトのもしくは以前の構成のために丸めるべき、デフォルトの数の動的ビットまたは以前の数の動的ビットとは異なっていてもよい。したがって、論理ゲートの構成は、論理ゲートおよび/またはソフトウェアのデフォルトの構成もしくは以前の構成とも異なっていてもよい。いくつかの実施形態では、ブロック1006において、動的ニューラルネットワーク量子化ロジックが、活性化値および重み値をその数の動的ビットに量子化するように動的ニューラルネットワーク量子化ロジックを構成するように構成されてもよい。いくつかの実施形態では、ブロック1006において、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントが、活性化値および重み値をその数の動的ビットに量子化するように動的ニューラルネットワーク量子化ロジックを構成するように構成されてもよい。
【0116】
任意選択の決定ブロック1008において、動的量子化構成デバイスが、マスキングおよび迂回のために量子化ロジックを構成するかどうかを判定してもよい。動的量子化信号は、活性化値と重み値のマスキングおよびMACの一部の迂回のために動的ニューラルネットワーク量子化ロジックを構成するためのある数の動的ビットのパラメータを含んでもよい。動的量子化構成デバイスは、マスキングおよび迂回のために量子化ロジックを構成するためのパラメータの値の存在から、決定を行ってもよい。いくつかの実施形態では、任意選択の決定ブロック1008において、動的ニューラルネットワーク量子化ロジックが、マスキングおよび迂回のために量子化ロジックを構成するかどうかを判定するように構成されてもよい。いくつかの実施形態では、任意選択の決定ブロック1008において、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントが、マスキングおよび迂回のために量子化ロジックを構成するどうかを判定するように構成されてもよい。いくつかの実施形態では、任意選択の決定ブロック1008において、MACアレイが、マスキングおよび迂回のために量子化ロジックを構成するかどうかを判定するように構成されてもよい。
【0117】
マスキングおよび迂回のために量子化ロジックを構成すると決定したことに応答して(すなわち、任意選択の決定ブロック1008="Yes")、任意選択のブロック1010において、動的量子化構成デバイスが、マスキングおよび迂回のためのある数の動的ビットを決定してもよい。上で説明されたように、動的量子化信号は、活性化値と重み値のマスキングおよびMACの一部の迂回のために動的ニューラルネットワーク量子化ロジック(たとえば、動的ニューラルネットワーク量子化ロジック212、214、MACアレイ200、I/Oインターフェース302、メモリコントローラ/物理層コンポーネント304a~304f)を構成するためのある数の動的ビットのパラメータを含んでもよい。動的量子化構成デバイスは、動的量子化信号からマスキングおよび迂回のためのその数の動的ビットを取り出してもよい。いくつかの実施形態では、任意選択のブロック1010において、動的ニューラルネットワーク量子化ロジックが、マスキングおよび迂回のためのある数の動的ビットを決定するように構成されてもよい。いくつかの実施形態では、任意選択のブロック1010において、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントが、マスキングおよび迂回のためのある数の動的ビットを決定するように構成されてもよい。いくつかの実施形態では、任意選択の決定ブロック1010において、MACアレイが、マスキングおよび迂回のためのある数の動的ビットを決定するように構成されてもよい。
【0118】
任意選択のブロック1012において、動的量子化構成デバイスが、活性化値および重み値のある数の動的ビットをマスキングするように動的量子化ロジックを構成してもよい。動的ニューラルネットワーク量子化ロジックは、動的量子化信号によって示される活性化値および重み値のその数の動的ビットをマスキングすることによって、活性化値および重み値を量子化するように構成されてもよい。
【0119】
動的ニューラルネットワーク量子化ロジックは、活性化値および重み値のその数の動的ビットをマスキングするように構成されてもよい、構成可能な論理ゲートおよび/またはソフトウェアを含んでもよい。いくつかの実施形態では、論理ゲートおよび/またはソフトウェアは、最大でその数の動的ビットまでの、および/またはそれを含む、活性化値と重み値の下位ビットに対して0の値を出力するように構成されてもよい。いくつかの実施形態では、論理ゲートおよび/またはソフトウェアは、その数の動的ビットを含む、および/またはそれに続く、活性化値と重み値の上位ビットの値を出力するように構成されてもよい。たとえば、活性化値および重み値の各ビットは、逐次、たとえば最下位ビットから最上位ビットまでなど、論理ゲートおよび/またはソフトウェアに入力されてもよい。論理ゲートおよび/またはソフトウェアは、パラエータによって示される、最大でその数の動的ビットまでの、および/またはそれを含む、活性化値と重み値の下位ビットに対して0の値を出力してもよい。論理ゲートおよび/またはソフトウェアは、パラメータによって示されるその数の動的ビットを含む、および/またはそれに続く、活性化値と重み値の上位ビットに対する値を出力してもよい。その数の動的ビットは、動的ニューラルネットワーク量子化ロジックのデフォルトのもしくは以前の構成のためにマスキングすべき、デフォルトの数の動的ビットまたは以前の数の動的ビットとは異なっていてもよい。したがって、論理ゲートおよび/またはソフトウェアの構成は、論理ゲートのデフォルトの構成または以前の構成とも異なっていてもよい。
【0120】
いくつかの実施形態では、論理ゲートは、その数の動的ビットまでの、および/またはそれを含む、活性化値と重み値の下位ビットを受信しないように、かつ/または出力しないように、クロックゲーティングされてもよい。論理ゲートをクロックゲーティングすることで、実質的に、活性化値および重み値のそれらの下位ビットが0の値で置き換えられることがあり、それは、MACアレイが、活性化値および重み値のそれらの下位ビットの値を受信しないことがあるからである。いくつかの実施形態では、任意選択のブロック1012において、動的ニューラルネットワーク量子化ロジックが、活性化値および重み値のある数の動的ビットをマスキングするように動的量子化ロジックを構成するように構成されてもよい。いくつかの実施形態では、任意選択のブロック1012において、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントが、活性化値および重み値のある数の動的ビットをマスキングするように動的量子化ロジックを構成するように構成されてもよい。
【0121】
任意選択のブロック1014において、動的量子化構成デバイスが、迂回のためにMACをクロックゲーティングおよび/または電源切断するようにAIプロセッサを構成してもよい。いくつかの実施形態では、動的ニューラルネットワーク量子化ロジックは、AIプロセッサのMACアレイに、MACの一部の迂回のためにその数の動的ビットのパラメータをシグナリングしてもよい。いくつかの実施形態では、動的ニューラルネットワーク量子化ロジックは、活性化値および重み値のビットのいずれがマスキングされるかをMACアレイにシグナリングしてもよい。いくつかの実施形態では、活性化値および重み値のビットに対する信号がないことは、動的ニューラルネットワーク量子化ロジックからMACアレイへの信号であってもよい。MACアレイは、活性化値と重み値のマスキングおよびMACの一部の迂回のために動的ニューラルネットワーク量子化ロジックを構成するためのある数の動的ビットのパラメータを含む、動的量子化信号を受信してもよい。いくつかの実施形態では、MACアレイ200は、動的ニューラルネットワーク量子化ロジックからMACの一部の迂回のための、ある数の動的ビットおよびまたはどの動的ビットのパラメータの信号を受信してもよい。MACアレイは、動的量子化信号および/または動的ニューラルネットワーク量子化ロジックからの信号によって示される活性化値と重み値の動的ビットのためのMACの一部を迂回するように構成されてもよい。これらの動的ビットは、動的ニューラルネットワーク量子化ロジックによってマスキングされる活性化値および重み値のビットに相当してもよい。MACは、乗算および累算機能を実装するように構成される論理ゲートを含んでもよい。
【0122】
いくつかの実施形態では、MACアレイは、動的量子化信号のパラメータによって示されるその数の動的ビットに相当する活性化値と重み値のビットを乗算して累算するように構成される、MACの論理ゲートをクロックゲーティングしてもよい。いくつかの実施形態では、MACアレイは、動的ニューラルネットワーク量子化ロジックからの信号によって示されるその数の動的ビットおよび/または動的上位ビットに相当する活性化値と重み値のビットを乗算して累算するように構成される、MACの論理ゲートをクロックゲーティングしてもよい。
【0123】
いくつかの実施形態では、MACアレイは、動的量子化信号のパラメータによって示されるその数の動的ビットに相当する活性化値と重み値のビットを乗算して累算するように構成される、MACの論理ゲートを電源遮断してもよい。いくつかの実施形態では、MACアレイは、動的ニューラルネットワーク量子化ロジックからの信号によって示されるその数の動的ビットおよび/または特定の動的ビットに相当する活性化値と重み値のビットを乗算して累算するように構成される、MACの論理ゲートを電源遮断してもよい。
【0124】
任意選択のブロック1014においてMACの論理ゲートをクロックゲーティングおよび/または電源遮断することによって、MACは、その数の動的ビットまたは特定の動的ビットに相当する活性化値と重み値のビットを受信せず、実質的にこれらのビットをマスキングしてもよい。いくつかの実施形態では、任意選択のブロック1014において、MACアレイが、迂回のためにMACをクロックゲーティングおよび/または電源切断するようにAIプロセッサを構成するように構成されてもよい。
【0125】
いくつかの実施形態では、ブロック1006において、活性化値および重み値をその数の動的ビットに量子化するように動的ニューラルネットワーク量子化ロジックを構成したことに続いて、任意選択の決定ブロック1016において、動的量子化構成デバイスが、動的ネットワークプルーニングのために量子化ロジックを構成するかどうかを判定してもよい。いくつかの実施形態では、マスキングおよび迂回のために量子化ロジックを構成しないと決定したことに応答して(すなわち、任意選択の決定ブロック1018="No")、または任意選択のブロック1014において迂回のためにMACをクロックゲーティングおよび/もしくは電源切断するようにAIプロセッサを構成することに続いて、任意選択の決定ブロック1016において、動的量子化構成デバイスが、動的ネットワークプルーニングのために量子化ロジックを構成するかどうかを判定してもよい。動的量子化信号は、重み値のマスキングとMAC全体の迂回のために動的ニューラルネットワーク量子化ロジックを構成するための閾値の重み値のパラメータを含んでもよい。動的量子化構成デバイスは、動的ネットワークプルーニングのために量子化ロジックを構成するためのパラメータの値の存在から、決定を行ってもよい。いくつかの実施形態では、任意選択の決定ブロック1016において、動的ニューラルネットワーク量子化ロジックが、動的ネットワークプルーニングのために量子化ロジックを構成するかどうかを判定するように構成されてもよい。いくつかの実施形態では、任意選択の決定ブロック1016において、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントが、動的ネットワークプルーニングのために量子化ロジックを構成するどうかを判定するように構成されてもよい。いくつかの実施形態では、任意選択の決定ブロック1016において、MACアレイが、動的ネットワークプルーニングのために量子化ロジックを構成するかどうかを判定するように構成されてもよい。
【0126】
動的ネットワークプルーニングのために量子化ロジックを構成すると決定したことに応答して(すなわち、任意選択の決定ブロック1016="Yes")、任意選択のブロック1018において、動的量子化構成デバイスが、動的ネットワークプルーニングのための閾値の重み値を決定してもよい。上で説明されたように、動的量子化信号は、重み値全体のマスキングおよびMAC全体の迂回のために動的ニューラルネットワーク量子化ロジック(たとえば、動的ニューラルネットワーク量子化ロジック212、214、MACアレイ200、I/Oインターフェース302、メモリコントローラ/物理層コンポーネント304a~304f)を構成するための閾値の重み値のパラメータを含んでもよい。動的量子化構成デバイスは、動的量子化信号からマスキングおよび迂回のための閾値の重み値を取り出してもよい。いくつかの実施形態では、任意選択のブロック1018において、動的ニューラルネットワーク量子化ロジックが、動的ネットワークプルーニングのための閾値の重み値を決定するように構成されてもよい。いくつかの実施形態では、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントは、任意選択のブロック1018における動的ネットワークプルーニングのための閾値の重み値を決定するように構成されてもよい。いくつかの実施形態では、任意選択のブロック1018において、MACアレイが、動的ネットワークプルーニングのための閾値の重み値を決定するように構成されてもよい。
【0127】
任意選択のブロック1020において、動的量子化構成デバイスが、重み値全体をマスキングするように動的量子化ロジックを構成してもよい。動的ニューラルネットワーク量子化ロジックは、動的量子化信号によって示される閾値の重み値との重み値の比較に基づいて、重み値のビットのすべてをマスキングすることによって重み値を量子化するように構成されてもよい。動的ニューラルネットワーク量子化ロジックは、データソース(たとえば、重みバッファ204)から受信された重み値を閾値の重み値と比較し、閾値の重み値未満または閾値の重み値以下であるなど、比較の結果が好ましくない重み値をマスキングするように構成されてもよい、構成可能な論理ゲートおよび/またはソフトウェアを含んでもよい。いくつかの実施形態では、比較は、閾値の重み値に対する重み値の絶対値の比較であってもよい。いくつかの実施形態では、論理ゲートおよび/またはソフトウェアは、閾値の重み値との比較の結果が好ましくない重み値のビットのすべてに対して0の値を出力するように構成されてもよい。ビットのすべてが、動的ニューラルネットワーク量子化ロジックのデフォルトのもしくは以前の構成のためにマスキングすべき、デフォルトの数のビット、または以前の数のビットとは異なる数のビットであってもよい。したがって、論理ゲートおよび/またはソフトウェアの構成は、論理ゲートのデフォルトの構成または以前の構成とも異なっていてもよい。いくつかの実施形態では、論理ゲートは、閾値の重み値との比較の結果が好ましくない重み値のビットを受信および/または出力しないように、クロックゲーティングされてもよい。論理ゲートをクロックゲーティングすることは、実質的に、重み値のビットを0の値で置き換えることがあり、それは、MACアレイが、重み値のビットの値を受信しないことがあるからである。いくつかの実施形態では、任意選択のブロック1020において、動的ニューラルネットワーク量子化ロジックが、重み値全体をマスキングするように動的量子化ロジックを構成するように構成されてもよい。いくつかの実施形態では、任意選択のブロック1020において、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントが、重み値全体に対して動的量子化ロジックを構成するように構成されてもよい。
【0128】
任意選択のブロック1022において、動的量子化構成デバイスが、動的ネットワークプルーニングのためにMAC全体をクロックゲーティングおよび/または電源切断するようにAIプロセッサを構成してもよい。いくつかの実施形態では、動的ニューラルネットワーク量子化ロジックは、重み値のビットのいずれがマスキングされるかをAIプロセッサのMACアレイにシグナリングしてもよい。いくつかの実施形態では、重み値のビットに対する信号がないことは、動的ニューラルネットワーク量子化ロジックからMACアレイへの信号であってもよい。いくつかの実施形態では、MACアレイは、それに対する重み値のビットがマスキングされる動的ニューラルネットワーク量子化ロジックから信号を受信してもよい。MACアレイは、MAC全体を迂回するための信号として、マスキングされた重み値全体を解釈してもよい。MACアレイは、動的ニューラルネットワーク量子化ロジックからの信号によって示される重み値のためのMACを迂回するように構成されてもよい。これらの重み値は、動的ニューラルネットワーク量子化ロジックによってマスキングされる重み値に相当してもよい。MACは、乗算および累算機能を実装するように構成される論理ゲートを含んでもよい。いくつかの実施形態では、MACアレイは、マスキングされた重み値に相当する重み値のビットを乗算して累算するように構成される、MACの論理ゲートをクロックゲーティングしてもよい。いくつかの実施形態では、MACアレイは、マスキングされた重み値に相当する重み値のビットを乗算して累算するように構成される、MACの論理ゲートを電源遮断してもよい。MACの論理ゲートをクロックゲーティングおよび/または電源遮断することによって、MACは、マスキングされた重み値に相当する活性化値と重み値のビットを受信しない。いくつかの実施形態では、任意選択のブロック1022において、MACアレイが、動的ネットワークプルーニングのためにMACをクロックゲーティングおよび/または電源切断するようにAIプロセッサを構成するように構成されてもよい。
【0129】
任意選択のブロック1020における動的ニューラルネットワーク量子化ロジックによる重み値のマスキングならびに/または任意選択のブロック1022におけるMACのクロックゲーティングおよび/もしくは電源切断は、MACアレイによって実行されるニューラルネットワークをプルーニングすることがある。ニューラルネットワークから重み値およびMAC演算を取り除くことは、実質的に、ニューラルネットワークからシナプスとノードを取り除くことがある。重みの閾値は、重みの閾値との比較の結果が好ましくない重み値がニューラルネットワークの実行から取り除かれても、AIプロセッサの結果の正確さの許容可能な損失しか引き起こさないことがあるということに基づいて決定されてもよい。
【0130】
いくつかの実施形態では、ブロック1006において、活性化値および重み値をその数の動的ビットに量子化するように動的ニューラルネットワーク量子化ロジックを構成したことに続いて、ブロック1024において、動的量子化構成デバイスが、活性化値および重み値を受信して処理してもよい。いくつかの実施形態では、マスキングおよび迂回のために量子化ロジックを構成しないと決定したことに応答して(すなわち、任意選択の決定ブロック1018="No")、または任意選択のブロック1014において迂回のためにMACをクロックゲーティングおよび/もしくは電源切断するようにAIプロセッサを構成することに続いて、ブロック1024において、動的量子化構成デバイスが、活性化値および重み値を受信して処理してもよい。いくつかの実施形態では、動的ネットワークプルーニングのために量子化ロジックを構成しないと決定したことに応答して(すなわち、任意選択の決定ブロック1016="No")、または任意選択のブロック1022において動的ネットワークプルーニングのためにMACをクロックゲーティングおよび/もしくは電源切断するようにAIプロセッサを構成することに続いて、ブロック1024において、動的量子化構成デバイスが、活性化値および重み値を受信して処理してもよい。動的量子化構成デバイスは、データソース(たとえば、プロセッサ104、通信コンポーネント112、メモリ106、114、周辺デバイス122、重みバッファ204、活性化バッファ206、メモリ106)から活性化値および重み値を受信してもよい。量子化構成デバイスは、活性化値および/もしくは重み値を量子化ならびに/またはマスキングしてもよい。量子化デバイスは、MACの一部および/もしくはMAC全体を迂回し、クロックゲーティングならびに/または電源切断してもよい。いくつかの実施形態では、ブロック1024において、動的ニューラルネットワーク量子化ロジックが、活性化値および重み値を受信して処理するように構成されてもよい。いくつかの実施形態では、ブロック1024において、I/Oインターフェースおよび/またはメモリコントローラ/物理層コンポーネントが、活性化値および重み値を受信して処理するように構成されてもよい。いくつかの実施形態では、ブロック1024において、MACアレイが、活性化値および重み値を受信して処理するように構成されてもよい。
【0131】
(限定はされないが、
図1~
図10を参照して上で説明された実施形態を含む)様々な実施形態によるAIプロセッサは、モバイルコンピューティングデバイスを含む多種多様なコンピューティングシステムにおいて実装されてもよく、様々な実施形態とともに使用するのに適したモバイルコンピューティングデバイスの例が
図11に示されている。モバイルコンピューティングデバイス1100は、タッチスクリーンコントローラ1104および内部メモリ1106に結合されたプロセッサ1102を含んでもよい。プロセッサ1102は、汎用または特定の処理タスクに指定された1つまたは複数のマルチコア集積回路であってもよい。内部メモリ1106は、揮発性メモリまたは不揮発性メモリであってもよく、またセキュアおよび/もしくは暗号化メモリ、または非セキュアおよび/もしくは非暗号化メモリ、あるいはそれらの任意の組合せであってもよい。活用できるメモリタイプの例には、限定はされないが、DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM、および埋め込みDRAMがある。タッチスクリーンコントローラ1104およびプロセッサ1102は、抵抗感知タッチスクリーン、容量感知タッチスクリーン、赤外線感知タッチスクリーンなどのタッチスクリーンパネル1112に結合されてもよい。加えて、モバイルコンピューティングデバイス1100のディスプレイは、タッチスクリーン機能を有する必要はない。
【0132】
モバイルコンピューティングデバイス1100は、互いに結合されたおよび/またはプロセッサ1102に結合された、通信を送受信するための1つまたは複数の無線信号トランシーバ1108(たとえば、Peanut、Bluetooth、ZigBee、Wi-Fi、RF無線)と、アンテナ1110とを有してもよい。トランシーバ1108およびアンテナ1110は、様々なワイヤレス送信プロトコルスタックおよびインターフェースを実装するために、上述の回路とともに使用されてもよい。モバイルコンピューティングデバイス1100は、セルラーネットワークを経由した通信を可能にするとともにプロセッサに結合されているセルラーネットワークワイヤレスモデムチップ1116を含んでもよい。
【0133】
モバイルコンピューティングデバイス1100は、プロセッサ1102に結合された周辺デバイス接続インターフェース1118を含んでもよい。周辺デバイス接続インターフェース1118は、1つのタイプの接続を受け入れるように単独で構成されてもよく、またはユニバーサルシリアルバス(USB)、FireWire、Thunderbolt、もしくはPCIeなどの、一般的もしくはプロプライエタリな様々なタイプの物理接続および通信接続を受け入れるように構成されてもよい。周辺デバイス接続インターフェース1118はまた、同様に構成された周辺デバイス接続ポート(図示せず)に結合されてもよい。
【0134】
モバイルコンピューティングデバイス1100はまた、オーディオ出力を提供するためのスピーカ1114を含んでもよい。モバイルコンピューティングデバイス1100はまた、本明細書で説明されるコンポーネントの全部または一部を収容するための、プラスチック、金属、または材料の組合せから構成されたハウジング1120を含んでもよい。モバイルコンピューティングデバイス1100は、使い捨てまたは充電可能な電池などの、プロセッサ1102に結合された電源1122も含んでもよい。充電可能な電池はまた、モバイルコンピューティングデバイス1100の外部にある電源から充電電流を受けるために、周辺デバイス接続ポートに結合されてもよい。モバイルコンピューティングデバイス1100はまた、ユーザ入力を受け取るための物理ボタン1124を含んでもよい。モバイルコンピューティングデバイス1100は、モバイルコンピューティングデバイス1100をオンオフするための電源ボタン1126も含んでもよい。
【0135】
(限定はされないが、
図1~
図10を参照して上で説明された実施形態を含む)様々な実施形態によるAIプロセッサは、ラップトップコンピュータ1200を含む多種多様なコンピューティングシステムにおいて実装されてもよく、ラップトップコンピュータ1200の例が
図12に示されている。多くのラップトップコンピュータは、コンピュータのポインティングデバイスとして働くタッチパッドのタッチ面1217を含み、したがって、タッチスクリーンディスプレイを備える上で説明されたコンピューティングデバイス上で実装されるものと同様のドラッグジェスチャ、スクロールジェスチャ、およびフリックジェスチャを受け取ることがある。ラップトップコンピュータ1200は通常、揮発性メモリ1212およびフラッシュメモリのディスクドライブ1213などの大容量不揮発性メモリに結合されたプロセッサ1202を含む。加えて、コンピュータ1200は、プロセッサ1202に結合されたワイヤレスデータリンクおよび/またはセルラー電話トランシーバ1216に接続されることがある、電磁放射を送信および受信するための1つまたは複数のアンテナ1215を有することがある。コンピュータ1200はまた、プロセッサ1202に結合された、フロッピーディスクドライブ1214およびコンパクトディスク(CD)ドライブ1215も含んでもよい。ノートブック構成では、コンピュータハウジングは、すべてがプロセッサ1202に結合された、タッチパッド1217、キーボード1218、およびディスプレイ1219を含む。コンピューティングデバイスの他の構成は、よく知られているように、(たとえば、USB入力を介して)プロセッサに結合されたコンピュータマウスまたはトラックボールを含んでもよく、それらはまた、様々な実施形態とともに使用されてもよい。
【0136】
(限定はされないが、
図1~
図10を参照して上で説明された実施形態を含む)様々な実施形態によるAIプロセッサは、様々な市販のサーバのうちのいずれかなどの、固定コンピューティングシステムにおいて実装されてもよい。例示的なサーバ1300が、
図13に示されている。そのようなサーバ1300は、通常、揮発性メモリ1302と、ディスクドライブ1304などの大容量不揮発性メモリとに結合された、1つまたは複数のマルチコアプロセッサアセンブリ1301を含む。
図13に示されるように、マルチコアプロセッサアセンブリ1301は、それらをアセンブリのラックに挿入することによって、サーバ1300に追加されてもよい。サーバ1300はまた、プロセッサ1301に結合されたフロッピーディスクドライブ、コンパクトディスク(CD)、またはデジタル多用途ディスク(DVD)ディスクドライブ1306を含んでもよい。サーバ1300はまた、他のブロードキャストシステムコンピュータおよびサーバに結合されたローカルエリアネットワーク、インターネット、公衆交換電話網、ならびに/またはセルラーデータネットワーク(たとえば、CDMA、TDMA、GSM、PCS、3G、4G、LTE、または任意の他のタイプのセルラーデータネットワーク)などの、ネットワーク1305とのネットワークインターフェース接続を確立するための、マルチコアプロセッサアセンブリ1301に結合されたネットワークアクセスポート1303を含んでもよい。
【0137】
実装の例が、以下の段落において説明される。以下の実装の例のいくつかは、例示的な方法に関して説明されるが、さらなる例示的な実装形態は、例示的な方法の動作を実行するように構成される動的量子化コントローラおよびMACアレイを備えるAIプロセッサによって実施される以下の段落において論じられる例示的な方法、例示的な方法の動作を実行するように構成される動的量子化コントローラおよびMACアレイを備えるAIプロセッサを備えるコンピューティングデバイス、例示的な方法の機能を実行するための手段を含むAIプロセッサによって実施される以下の段落において論じられる例示的な方法を含んでもよい。
【0138】
例1. 人工知能(AI)プロセッサによってニューラルネットワークを処理するための方法であって、AIプロセッサ動作条件情報を受信するステップと、動作条件情報に応答してニューラルネットワークのセグメントのためのAI量子化レベルを動的に調整するステップと、調整されたAI量子化レベルを使用してニューラルネットワークのセグメントを処理するステップとを含む、方法。
【0139】
例2. ニューラルネットワークのセグメントのためのAI量子化レベルを動的に調整するステップが、AIプロセッサの処理能力の制約を増やした動作条件のレベルを示す動作条件情報に応答して、AI量子化レベルを上げるステップと、AIプロセッサの処理能力の制約を減らした動作条件のレベルを示す動作条件情報に応答して、AI量子化レベルを下げるステップとを含む、例1の方法。
【0140】
例3. 動作条件情報が、温度、電力消費、動作周波数、または処理ユニットの利用率というグループのうちの少なくとも1つである、例1または2のいずれかの方法。
【0141】
例4. ニューラルネットワークのセグメントのためのAI量子化レベルを動的に調整するステップが、ニューラルネットワークのセグメントによって処理されることになる重み値を量子化するためのAI量子化レベルを調整するステップを含む、例1から3のいずれかの方法。
【0142】
例5. ニューラルネットワークのセグメントのためのAI量子化レベルを動的に調整するステップが、ニューラルネットワークのセグメントによって処理されることになる活性化値を量子化するためのAI量子化レベルを調整するステップを含む、例1から3のいずれかの方法。
【0143】
例6. ニューラルネットワークのセグメントのためのAI量子化レベルを動的に調整するステップが、ニューラルネットワークのセグメントによって処理されることになる重み値および活性化値を量子化するためのAI量子化レベルを調整するステップを含む、例1から3のいずれかの方法。
【0144】
例7. AI量子化レベルが、量子化すべき、ニューラルネットワークにより処理されることになる値の動的ビットを示すように構成され、調整されたAI量子化レベルを使用してニューラルネットワークのセグメントを処理するステップが、値の動的ビットに関連する積和演算器(MAC)の一部を迂回するステップを含む、例1から6のいずれかの方法。
【0145】
例8. AIサービス品質(QoS)因子を使用してAI QoS値を決定するステップと、AI QoS値を達成するためのAI量子化レベルを決定するステップとをさらに含む、例1から7のいずれかの方法。
【0146】
例9. AI QoS値が、AIプロセッサによって生成される結果の正確さおよびAIプロセッサのスループットの目標を表す、例8の方法。
【0147】
様々な実施形態の動作を実行するためのプログラマブルプロセッサ上での実行のためのコンピュータプログラムコードまたは「プログラムコード」は、C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic、Structured Query Language(たとえば、Transact-SQL)、Perlなどの高水準プログラミング言語または様々な他のプログラミング言語で書かれてもよい。本出願で使用されるコンピュータ可読記憶媒体に記憶されたプログラムコードまたはプログラムは、そのフォーマットがプロセッサによって理解可能である(オブジェクトコードなどの)機械語コードを指すことがある。
【0148】
上記の方法の説明およびプロセスフロー図は、単に説明のための例として提供されており、様々な実施形態の動作が提示された順序で実行されなければならないことを要求または暗示するものではない。当業者によって理解されるように、上述の実施形態における動作の順序は、任意の順序で実行されてもよい。「その後」、「次いで」、「次に」などの単語は、動作の順序を限定するものではなく、これらの単語は単に、方法の説明を通して読者を導くために使用される。さらに、たとえば、冠詞“a”、 “an”または“the”を使用する、単数形での請求項要素へのいかなる言及も、その要素を単数形に限定するものとして解釈されるべきではない。
【0149】
様々な実施形態に関して説明された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズム動作は、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装されてもよい。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的なコンポーネント、ブロック、モジュール、回路、および動作が、上では一般的にそれらの機能に関して説明された。そのような機能がハードウェアとして実装されるかまたはソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課された設計制約に依存する。当業者は、説明された機能を特定の適用例ごとに様々な方法で実装してもよいが、そのような実装の決定は、特許請求の範囲からの逸脱を引き起こすものとして解釈されるべきではない。
【0150】
本明細書で開示される実施形態に関して説明された様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、ディスクリートゲートロジックもしくはトランジスタロジック、個別ハードウェアコンポーネント、または本明細書で説明された機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行されてもよい。汎用プロセッサはマイクロプロセッサであってもよいが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であってもよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つまたは複数のマイクロプロセッサ、または任意の他のそのような構成として実装されてもよい。代替的に、いくつかの動作または方法は、所与の機能に固有の回路によって実行されてもよい。
【0151】
1つまたは複数の実施形態では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装されてもよい。ソフトウェアにおいて実装される場合、機能は、1つまたは複数の命令またはコードとして、非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体に記憶されてもよい。本明細書で開示される方法またはアルゴリズムの動作は、非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体上に存在することがあるプロセッサ実行可能ソフトウェアモジュールにおいて具現化されてもよい。非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされることがある任意の記憶媒体であってもよい。限定ではなく例として、そのような非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体は、RAM、ROM、EEPROM、FLASHメモリ、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用されることがあり、かつコンピュータによってアクセスされることがある任意の他の媒体を含んでもよい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびBlu-ray(登録商標)ディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せも、非一時的コンピュータ可読媒体および非一時的プロセッサ可読媒体の範囲内に含まれる。加えて、方法またはアルゴリズムの動作は、コンピュータプログラム製品の中に組み込まれてもよい、非一時的プロセッサ可読媒体および/または非一時的コンピュータ可読媒体上のコードおよび/または命令のうちの1つ、またはその任意の組合せもしくはセットとして存在してもよい。
【0152】
開示される実施形態の前述の説明は、任意の当業者が特許請求の範囲を製作または使用することを可能にするために提供される。これらの実施形態への様々な変更が当業者には容易に明らかになり、本明細書において定義される一般原理は、特許請求の範囲から逸脱することなく他の実施形態および実装形態に適用されてよい。したがって、本開示は、本明細書で説明された実施形態および実装形態に限定されることが意図されるものではなく、以下の特許請求の範囲、本明細書で開示された原理および新規の特徴と一致する最も広い範囲が与えられるべきである。
【符号の説明】
【0153】
100 コンピューティングデバイス
102 SoC
104 プロセッサ
106 メモリ
108 通信インターフェース
110 メモリインターフェース
112 通信コンポーネント
114 メモリ
116 アンテナ
120 周辺デバイスインターフェース
122 周辺デバイス
124 AIプロセッサ
200 MACアレイ
202 MAC
202a-202i MAC
204 重みバッファ
206 活性化バッファ
208 動的量子化コントローラ
210 AI QoSマネージャ
212 動的ニューラルネットワーク量子化ロジック
214 動的ニューラルネットワーク量子化ロジック
300 AI処理サブシステム
302 I/Oインターフェース
304a-304f メモリコントローラ/物理層
700 論理コンポーネント
702 論理コンポーネント
1100 モバイルコンピューティングデバイス
1102 プロセッサ
1104 タッチスクリーンコントローラ
1106 内部メモリ
1108 無線信号トランシーバ
1110 アンテナ
1112 タッチスクリーンパネル
1114 スピーカ
1116 セルラーネットワークワイヤレスモデムチップ
1118 周辺デバイス接続インターフェース
1120 ハウジング
1122 電源
1124 物理ボタン
1126 電源ボタン
1200 ラップトップコンピュータ
1202 プロセッサ
1212 揮発性メモリ
1213 ディスクドライブ
1214 フロッピーディスクドライブ
1215 アンテナ
1216 セルラー電話トランシーバ
1217 タッチパッドタッチ面
1218 キーボード
1219 ディスプレイ
1300 サーバ
1301 マルチコアプロセッサアセンブリ、プロセッサ
1302 揮発性メモリ
1303 ネットワークアクセスポート
1304 ディスクドライブ
1305 ネットワーク
1306 コンパクトディスク(CD)またはデジタル多用途(DVD)
ディスクドライブ
【国際調査報告】