(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-22
(45)【発行日】2024-01-05
(54)【発明の名称】ニューラルネットワークプロセッシングユニット、ニューラルネットワークの処理方法及びその装置
(51)【国際特許分類】
G06N 3/063 20230101AFI20231225BHJP
G10L 15/16 20060101ALI20231225BHJP
【FI】
G06N3/063
G10L15/16
(21)【出願番号】P 2022089599
(22)【出願日】2022-06-01
【審査請求日】2022-06-01
(31)【優先権主張番号】202110679295.X
(32)【優先日】2021-06-18
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】514322098
【氏名又は名称】ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド
【氏名又は名称原語表記】Beijing Baidu Netcom Science Technology Co., Ltd.
【住所又は居所原語表記】2/F Baidu Campus, No.10, Shangdi 10th Street, Haidian District, Beijing 100085, China
(74)【代理人】
【識別番号】100118913
【氏名又は名称】上田 邦生
(74)【代理人】
【識別番号】100142789
【氏名又は名称】柳 順一郎
(74)【代理人】
【識別番号】100201466
【氏名又は名称】竹内 邦彦
(72)【発明者】
【氏名】ティアン, チャオ
(72)【発明者】
【氏名】ジア, レイ
(72)【発明者】
【氏名】ヤン, シャオピン
(72)【発明者】
【氏名】ウェン, ジュンフィ
(72)【発明者】
【氏名】デン, グァンライ
(72)【発明者】
【氏名】リー, キァン
【審査官】坂庭 剛史
(56)【参考文献】
【文献】米国特許出願公開第2019/0294413(US,A1)
【文献】中国実用新案第208141826(CN,U)
【文献】米国特許出願公開第2021/0132769(US,A1)
【文献】国際公開第2020/249085(WO,A1)
【文献】中国特許出願公開第111931917(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G10L 15/16
G10L 17/18
(57)【特許請求の範囲】
【請求項1】
浮動小数点型の入力データを取得し、前記浮動小数点型の入力データを量子化して量子化された後の入力データを得て、前記量子化された後の入力データを演算ユニットに提供し、及び、前記演算ユニットによって出力された演算結果に対して逆量子化を行って逆量子化結果を得るための量子化ユニットを備え、
前記演算ユニットが、前記量子化された後の入力データに対して行列ベクトル操作及び/又は畳み込み演算を行って、前記入力データの演算結果を得るように構成され
、
前記演算ユニットが、行列ベクトル操作を実行し、前記量子化ユニットが、
デジタル信号プロセッサDSP内部のメモリに記憶される浮動小数点型の入力データに基づいて、量子化のために使用される第1のパラメータと逆量子化のために使用される第2のパラメータを求め、
数値型の入力データを得るように、前記浮動小数点型の入力データ内における量子化対象の浮動小数点の値に第1のパラメータをかけ、且つ小数点以下を切り捨てて数値型に変換し、
前記数値型の入力データを前記演算ユニットに送信し、
前記演算ユニットが得た演算結果を浮動小数点型に変換し、
浮動小数点型の演算結果に前記第2のパラメータをかけてDSPのメモリに送信して記憶するように構成されるニューラルネットワークプロセッシングユニットNPU。
【請求項2】
バスのメインインターフェースを備え、
該メインインターフェースが、前記バスを介して前記DSPにメモリコピー関数を送信することにより、前記DSP内部のメモリにアクセスして、前記DSP内部のメモリに記憶される前記浮動小数点型の入力データを得るように構成される請求項
1に記載のNPU。
【請求項3】
前記演算ユニットが畳み込み演算を実行し、
前記量子化ユニットが、前記浮動小数点型の入力データに対して、浮動小数点を短整数型に変換する変換操作を行うことで、変換後の短整数型の入力データに対して畳み込み演算を実行するように構成される請求項1に記載のNPU。
【請求項4】
前記NPUが、高速アクセスインターフェースを介してランダムメモリRAMに接続され、
前記RAMが、前記短整数型の入力データを前記RAM内に転送して記憶するように構成される請求項
3に記載のNPU。
【請求項5】
前記演算ユニットが、第1のレジスタ、第2のレジスタ及びアキュムレータを備え、
前記第1のレジスタが、第1の周期で前記RAMから前記短整数型の入力データを読み取るように構成され、
前記第2のレジスタが、第1の周期の後の複数の後続サイクルで、PSRAMに記憶されているネットワークパラメータの少なくとも一部を読み取り、各周期で読み取った前記ネットワークパラメータの少なくとも一部と前記第1のレジスタ内の対応する入力データとのドット積演算を行うように構成され、
前記アキュムレータが、ドット積演算の結果を取得し、前記ドット積演算の結果に基づいて累積して、畳み込み演算の演算結果を得るように構成される請求項
4に記載のNPU。
【請求項6】
DSPに記憶されている畳み込み演算の演算結果に基づいて、活性化関数を用いて活性化を行い、且つ記憶するように活性化結果を前記DSPに提供するための活性化ユニットを備える請求項1から
5のいずれか一項に記載のNPU。
【請求項7】
バスで接続される請求項1から
5のいずれか一項に記載のニューラルネットワークプロセッシングユニットNPUと、擬似静的ランダムメモリPSRAMと、デジタル信号プロセッサDSPと、を備え、
前記DSPが、内部のメモリに処理対象の入力データを記憶し、及び前記NPUによる前記入力データの演算結果を記憶するように構成され、
前記PSRAMが、ニューラルネットワークのネットワークパラメータを記憶するように構成される処理装置。
【請求項8】
ニューラルネットワークプロセッシングユニットNPUに適用されるニューラルネットワークの処理方法であって、前記NPUが量子化ユニット及び演算ユニットを備え、
前記量子化ユニットが浮動小数点型の入力データを取得し、前記浮動小数点型の入力データを量子化して量子化された後の入力データを得て、前記量子化された後の入力データを演算ユニットに提供するステップと、
前記演算ユニットが前記量子化された後の入力データに対して行列ベクトル操作及び/又は畳み込み演算を行って、前記入力データの演算結果を得るステップと、
前記量子化ユニットが前記演算ユニットによって出力された演算結果に対して逆量子化を行って逆量子化結果を得るステップと、
を含
み、
前記量子化ユニットが、デジタル信号プロセッサDSP内部のメモリに記憶される浮動小数点型の入力データに基づいて、量子化のために使用される第1のパラメータと逆量子化のために使用される第2のパラメータを求め、数値型の入力データを得るように、前記浮動小数点型の入力データ内における量子化対象の浮動小数点の値に第1のパラメータをかけ、且つ小数点以下を切り捨てて数値型に変換し、及び前記数値型の入力データを前記演算ユニットに送信し、
前記演算ユニットが、前記数値型の入力データに対して行列ベクトル操作を実行し、前記演算結果を得て、
前記量子化ユニットが、前記演算結果を浮動小数点型に変換し、浮動小数点型の演算結果に前記第2のパラメータをかけてDSPのメモリに送信して記憶する、ニューラルネットワークの処理方法。
【請求項9】
前記NPUが、バスのメインインターフェースを備え、
前記メインインターフェースが、前記バスを介して前記DSPにメモリコピー関数を送信することにより、前記DSP内部のメモリにアクセスして、前記DSP内部のメモリに記憶される前記浮動小数点型の入力データを得るように構成される請求項
8に記載の方法。
【請求項10】
前記量子化ユニットが、前記浮動小数点型の入力データに対して、浮動小数点を短整数型に変換する変換操作を行い、
前記演算ユニットが、変換後の短整数型の入力データに対して畳み込み演算を実行し、前記演算結果を得る請求項
8に記載の方法。
【請求項11】
前記NPUが、高速アクセスインターフェースを介してランダムメモリRAMに接続され、
前記RAMが、前記短整数型の入力データを前記RAM内に転送して記憶するように構成される請求項
10に記載の方法。
【請求項12】
前記演算ユニットが、第1のレジスタ、第2のレジスタ及びアキュムレータを備え、
前記第1のレジスタが、第1の周期で前記RAMから前記短整数型の入力データを読み取り、
前記第2のレジスタが、第1の周期の後の複数の後続サイクルで、PSRAMに記憶されているネットワークパラメータの少なくとも一部を読み取り、各周期で読み取った前記ネットワークパラメータの少なくとも一部と前記第1のレジスタ内の対応する入力データとのドット積演算を行い、
前記アキュムレータドット積演算の結果を取得し、前記ドット積演算の結果に基づいて累積して、畳み込み演算の演算結果を得る請求項
11に記載の方法。
【請求項13】
前記NPUが、活性化ユニットを備え、
前記方法が、活性化ユニットDSPに記憶されている畳み込み演算の演算結果に基づいて、活性化関数を用いて活性化を行い、且つ記憶するように活性化結果を前記DSPに提供するステップを含む請求項
8から
12のいずれか一項に記載の方法。
【請求項14】
少なくとも1つのプロセッサと、
該なくとも1つのプロセッサと通信可能に接続されるメモリと、
を備え、
前記メモリには、前記少なくとも1つのプロセッサによって実行可能な命令が記憶されており、前記命令が、前記少なくとも1つのプロセッサが請求項
8から
12のいずれか一項に記載のニューラルネットワークの処理方法を実行できるように、前記少なくとも1つのプロセッサによって実行される電子機器。
【請求項15】
コンピュータ命令が記憶されている非一時的コンピュータ読み取り可能な記憶媒体であって、前記コンピュータ命令は、コンピュータに請求項
8から
12のいずれか一項に記載のニューラルネットワークの処理方法を実行させる非一時的コンピュータ読み取り可能な記憶媒体。
【請求項16】
プロセッサによって実行される際に、請求項
8から
12のいずれか一項に記載のニューラルネットワークの処理方法を実現するコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、深層学習、音声技術などのAI(Artificial Intelligence、人工智能)分野に関し、特にニューラルネットワークプロセッシングユニット、ニューラルネットワークの処理方法及びその装置に関する。
【背景技術】
【0002】
現在、スマートスピーカーなどの電子機器内の音声チップに対して、デュアルカーネルアーキテクチャにおける1つのカーネルは音声処理に使用され、もう1つのカーネルは、マスターMCU(Microprogrammed Control Unit、マイクロコントローラ)の機能(例えば、サービスロジック、制御ロジックなど)を実現するために使用される。しかし、単一のカーネルですべての音声を処理するのは、処理負担が大きい。
【発明の概要】
【0003】
本出願は、ニューラルネットワークプロセッシングユニット、ニューラルネットワークに使用される処理方法及びその装置を提供する。
【0004】
本出願の一態様によれば、NPU(Network Processing Unit、ニューラルネットワークプロセッシングユニット)を提供し、前記NPUは、浮動小数点型の入力データを取得し、前記浮動小数点型の入力データを量子化して量子化された後の入力データを得て、前記量子化された後の入力データを演算ユニットに提供し、及び前記演算ユニットによって出力された演算結果に対して逆量子化を行って逆量子化結果を得るための量子化ユニットを備え、前記演算ユニットが、前記量子化された後の入力データに対して行列ベクトル操作及び/又は畳み込み演算を行って、前記入力データの演算結果を得るように構成される。
【0005】
本出願のもう1つの態様によれば、バスで接続される上記1つの態様で提供されたニューラルネットワークプロセッシングユニットNPUと、擬似静的ランダムメモリPSRAMと、デジタル信号プロセッサDSPと、を備える処理装置を提供し、前記DSPが、内部のメモリに処理対象の入力データを記憶し、及び前記NPUによる前記入力データの演算結果を記憶するように構成され、
前記PSRAMが、ニューラルネットワークのネットワークパラメータを記憶するように構成される。
【0006】
本出願の別の態様によれば、ニューラルネットワークプロセッシングユニットNPUに適用されるニューラルネットワークの処理方法を提供し、前記NPUは量子化ユニット及び演算ユニットを備え、前記処理方法が、前記量子化ユニットは浮動小数点型の入力データを取得し、前記浮動小数点型の入力データを量子化して量子化された後の入力データを得て、前記量子化された後の入力データを演算ユニットに提供するステップと、前記演算ユニット前記量子化された後の入力データに対して行列ベクトル操作及び/又は畳み込み演算を行って、前記入力データの演算結果を得るステップと、前記量子化ユニット前記演算ユニットによって出力された演算結果に対して逆量子化を行って逆量子化結果を得るステップと、を含む。
【0007】
本出願の別の態様によれば、電子機器を提供し、前記電子機器は、少なくとも1つのプロセッサと、該少なくとも1つのプロセッサと通信可能に接続されるメモリと、を備え、前記メモリには、前記少なくとも1つのプロセッサによって実行可能な命令が記憶されており、前記命令が、前記少なくとも1つのプロセッサによって実行される場合、前記少なくとも1つのプロセッサが本出願の上記提供されたニューラルネットワークの処理方法を実行できる。
【0008】
本出願の他の態様によれば、コンピュータ命令の非一時的コンピュータ読み取り可能な記憶媒体を提供し、前記コンピュータ命令は、コンピュータに本出願の上記提供されたニューラルネットワークの処理方法を実行させる。
【0009】
本出願の更なる態様によれば、コンピュータプログラムを提供し、前記コンピュータプログラムはプロセッサによって実行される際に、本出願の上記提供されたニューラルネットワークの処理方法を実現する。
【0010】
なお、この部分で説明された内容は、本出願の実施例の肝心又は重要な特徴を特定しようとするものではなく、本出願の範囲を限定するものでもないことを理解されたい。本出願の他の特徴は以下の明細書を通して理解しやすくなる。
【図面の簡単な説明】
【0011】
図面は本解決案をよりよく理解するためのものであり、本出願を限定するものではない。
【
図1】本出願の実施例1によって提供されるNPUの構造概略図である。
【
図2】本出願の実施例2によって提供されるNPUの構造概略図である。
【
図3】本出願の実施例における畳み込み演算プロセスの概略図である。
【
図4】本出願の実施例3によって提供される処理装置の構造概略図である。
【
図5】本出願の実施例4によって提供される処理装置の構造概略図である。
【
図6】本出願の実施例5によって提供されるニューラルネットワークの処理方法の概略フローチャートである。
【
図7】本出願の実施例の実施に使用できる例示的な電子機器の例示的なブロック図である。
【発明を実施するための形態】
【0012】
以下、図面に合わせて本出願の例示的な実施例を説明し、ここで、理解を助けるために、その中には本出願の実施例の様々な詳細が含まれており、それらを例示的なものとして見なすべきである。従って、当業者であれば、本出願の範囲と精神から逸脱しない限り、ここで説明される実施例に対して様々な変更と修正を行うことができることを認識されたい。同様に、明確且つ簡潔にするために、以下の説明では、周知の機能や構造に対する説明を省略している。
【0013】
音声チップのコストを削減し且つバランスアルゴリズムのニーズを満たすために、音声チップの内部メモリを減らし、さらにSIP(System In Package、システムインパッケージ)を用いてPSRAM(Pseudo Static Random Access Memory、擬似静的ランダムメモリ)拡張メモリを封止する方法で、ESP32にPSRAMを組み込む手段で元の音声チップのコストを削減する。即ち、従来の手段では、PSRAMをESP32のマスターチップ側に配置し、且つ基板レベルに外付けされ、更なるコストが必要とされ、そのため、PSRAMを音声チップ内に封止することができ、チップ内メモリに合わせて、PSRAMを組み込むコストを削減する。
【0014】
しかしながら、チップ内メモリの減少に伴い、広帯域幅の内部メモリが減少し、データをロードする速度も落ちるため、AI演算及びモデルデータが並列してロードされるリスクがもたらされ、したがって、PSRAMの帯域幅利用率をどのように高めるかは極めて重要である。
【0015】
また、音声チップの面積を減少させるために、音声チップ内のマスターMCU(Microprogrammed Control Unit、マイクロコントローラ)の機能(音声サービスロジック、制御ロジックなど)をESP32から音声チップ内に移すことができ、音声チップ内のデュアルカーネルアーキテクチャ内には、音声処理のために提供されるカーネルは1つしかない。
【0016】
しかしながら、デュアルカーネルの演算量をすべて1つのカーネルに処理させると、8x8、16x8乗加算の演算力が不足しており、すべての音声を単一のカーネルで処理するには、処理のストレスが大きい。
【0017】
そのため、上記存在する課題に対して、本出願はニューラルネットワークプロセッシングユニット、ニューラルネットワークの処理方法及びその装置を提供する。
【0018】
以下、図面を参照しながら、本出願の実施例のニューラルネットワークプロセッシングユニット、ニューラルネットワークの処理方法及びその装置を説明する。
【0019】
図1は、本出願の実施例1によって提供されるNPUの構造概略図である。
【0020】
図1に示すように、当該NPU100は、量子化ユニット110及び演算ユニット120を備える。
【0021】
量子化ユニット110は、浮動小数点型の入力データを取得し、浮動小数点型の入力データを量子化して量子化された後の入力データを得て、量子化された後の入力データを演算ユニット120に提供し、及び演算ユニット120によって出力された演算結果に対して逆量子化を行って、逆量子化結果を得るように構成される。
【0022】
演算ユニット120は、量子化された後の入力データに対して行列ベクトル操作及び/又は畳み込み演算を行って、入力データの演算結果を得るように構成される。
【0023】
本出願の実施例では、NPUが音声チップ内に適用されると、浮動小数点型の入力データは、ユーザによって入力された音声データの特徴ベクトルに基づいて決定することができる。対応して、逆量子化結果は、音声データに対応する音声認識結果を決定するように構成される。
【0024】
なお、NPUが他のチップに適用され得ることを理解されたい。この場合、浮動小数点型の入力データは他のデータに基づいて決定することができ、例えば、画像の特徴ベクトル、ビデオフレームの特徴ベクトル、テキストの特徴ベクトルなどに基づいて決定することができ、本出願はこれに対して限定しない。
【0025】
本出願の実施例では、量子化ユニット110を介して浮動小数点型の入力データを取得し、浮動小数点型の入力データを量子化して量子化された後の入力データを得て、量子化された後の入力データを演算ユニット120に提供することができ、対応して、演算ユニット120は、量子化された後の入力データを受信すると、量子化された後の入力データに対して行列ベクトル操作及び/又は畳み込み演算を行って、入力データの演算結果を得て、演算結果を量子化ユニット110に出力することができ、量子化ユニット110は、演算結果を受信すると、演算結果に対して逆量子化を行って逆量子化結果を得ることができる。これにより、専用のハードウェアNPUを用いることで、列演算及び/又は畳み込み演算を実現し、当該NPUが音声チップ内に適用される場合、音声チップ内のカーネルの処理負担を低減して、音声チップ内のカーネルの処理効率を向上させることができる。
【0026】
本出願の実施例のNPUは、量子化ユニットを介して浮動小数点型の入力データを取得し、浮動小数点型の入力データを量子化して量子化された後の入力データを得て、量子化された後の入力データを演算ユニットに提供することで、演算ユニットを介して、量子化された後の入力データに対して行列ベクトル操作及び/又は畳み込み演算を行って、入力データの演算結果を得て、その後、量子化ユニットを介して、演算ユニットによって出力された演算結果に対して逆量子化を行って逆量子化結果を得る。これにより、専用のNPUを用いて行列演算及び/又は畳み込み演算を実現し、当該NPUが音声チップ内に適用される場合、音声チップ内のカーネルの処理負担を低減して、音声チップ内のカーネルの処理効率を向上させることができる。
【0027】
本出願の上記実施例では入力データをどのように量子化するか、及び演算ユニット120によって出力された演算結果に対して逆量子化をどのように行うかを明確に説明するために、以下、演算ユニット120が行列ベクトル操作を実行する場合を例として説明する。
【0028】
演算ユニット120が行列ベクトル操作を実行する際に、量子化ユニット110は、DSP(Digital Signal Processor、デジタル信号プロセッサ)内部のメモリに記憶される浮動小数点型の入力データに基づいて、量子化のために使用される第1のパラメータと逆量子化のために使用される第2のパラメータを求め、数値型の入力データを得るように、浮動小数点型の入力データ内における量子化対象の浮動小数点の値に第1のパラメータをかけ、且つ小数点以下を切り捨てて数値型charに変換し、数値型の入力データを演算ユニット120に送信し、演算ユニット120が得た演算結果を浮動小数点型に変換し、浮動小数点型の演算結果に第2のパラメータをかけてDSPのメモリに送信して記憶するように構成され得る。
【0029】
本出願の実施例では、量子化のために使用される第1のパラメータ及び逆量子化のために使用される第2のパラメータは、浮動小数点型の入力データに基づいて決定される。
【0030】
一例として、浮動小数点型の入力データに対応するベクトル最大値を決定し、ベクトル最大値をfmax、第1のパラメータをB、第2のパラメータをAとしてマークすると、Bは127.0f/fmaxであってもよく、Aはfmax/127.0fであってもよい。1つのcharの取り得る値の範囲は-128~127であり、量子化時に、最高の精度を得るために、fmaxを127という量子化値にマッピングすることができ、fはfloat(浮動小数点型)を指す。
【0031】
本出願の実施例では、NPU100内の量子化ユニット110はDSP(Digital Signal Processor、デジタル信号プロセッサ)内部のメモリに記憶される浮動小数点型の入力データに基づいて、量子化のために使用される第1のパラメータと逆量子化のために使用される第2のパラメータを求め、浮動小数点型の入力データ内の量子化対象の浮動小数点の値(例えば入力データ内のすべての浮動小数点の値)に第1のパラメータを掛け、小数点以下を切り捨てて数値型の入力データに変換し、数値型の入力データを演算ユニット120に送信し、演算ユニット120を介して、数値型の入力データに対して行列ベクトル操作を実行して、入力データの演算結果を得ることができ、演算ユニット120は演算結果を量子化ユニット110に送信し、量子化ユニット110を介して、演算ユニット120が演算して得られた演算結果を浮動小数点型に変換し、浮動小数点型の演算結果に第2のパラメータを掛けて、逆量子化結果を得て、逆量子化結果をDSPのメモリに送信して記憶し、これにより、後続の操作はDSPのソフトウェアで実行することができる。
【0032】
これにより、一方で、専用の量子化ユニットで量子化のプロセスを実現することを実現でき、NPU100が行列演算プロセスを効果的に実行することを確保することができる。他方では、通常、浮動小数点型の入力データをDSPのメモリに記憶すると共に、行列ベクトル操作の演算結果をDSP内のメモリに記憶することにより、DSPとNPUとのCache(キャッシュメモリ)一致性の設計が必要とされず、ハードウェア設計を大幅に簡素化することができ、DSPとNPUとのデータ一致性の課題を解決する。
【0033】
データ一致性とは、DSPがNPUのRAM(Random Access Memory、ランダムメモリ)(NPURAMと略す)にアクセスする際に、アクセスデータがCache内にマッピングされることを指すものであり、NPUがNPURAM内のデータを修正すれば、DSPはNPURAM内の修正データを検出することができず、Cache内のデータしか見えないため、データ一致性の問題が生じる。NPUがDSP内部のメモリにアクセスする際に、DSP及びNPUは同時にDSP内部のメモリを検出することができ、データ一致性の問題は生じない。
【0034】
一例として、NPU100内の量子化ユニット110は、浮動小数点型の入力データに対応するベクトル最大値fmaxを決定することができ、fmaxに基づいて、量子化のために使用される第1のパラメータB及び逆量子化のために使用される第2のパラメータAを決定し、行列ベクトル操作を実行する中で、入力データ内のすべての浮動小数点値にBをかけた後に、小数点以下を切り捨てて浮動小数点型charに変換することができ、char型の入力データを演算ユニット120に送信し、演算ユニット120を介して、char型の入力データ及びchar型のニューラルネットワークパラメータweightに対して8x8の行列ベクトル操作(行列ベクトル操作の入力ベクトルは8bitに量子化する必要があり、行列ベクトル操作は、8bitに8bitをかける行列演算)を行い、行列ベクトル操作の結果をアキュムレータACCに出力し、ACCによって出力された結果はすなわち演算結果であり、ACCによって出力された演算結果は浮動小数点型のものに変換し、且つ浮動小数点型の演算結果にAをかけた後に、DSPのメモリ(例えばDRAM(Dynamic Random Access Memory、動的ランダムメモリ))に送信して記憶することができる。
【0035】
本出願の実施例の1つの可能な実現形態では、PSRAMを介してニューラルネットワークのネットワークパラメータを記憶することができ、演算ユニット120は、PSRAM内に記憶されているネットワークパラメータの少なくとも一部を読み取ることができ、読み取ったネットワークパラメータの少なくとも一部に基づいて、数値型の入力データに対して行列ベクトル操作を実行し、且つ引き続きPSRAM内のその他のネットワークパラメータを同期して読み取る。これにより、ネットワークパラメータを読み取りながら、行列ベクトル操作を実行することを実現することができ、即ち、データ読み取り/ロードと演算との並列化を実現することができ、演算効率を向上させる。
【0036】
1つの適用シーンとして、ニューラルネットワークが音声認識のシーンに提供される場合を例とすると、上記入力データは、ユーザによって入力された音声データの特徴ベクトルに基づいて決定することができ、演算ユニットによって出力された演算結果は、音声データに対応する音声認識結果を決定する。
【0037】
もう1つの適用シーンとして、ニューラルネットワークが画像認識のシーン又はビデオ認識のシーンに適用される場合を例とすると、上記入力データは、画像又はビデオフレームの特徴ベクトルに基づいて決定することができ、対応して、演算ユニットによって出力された演算結果は、画像又はビデオフレームの分類結果を決定する。
【0038】
一例では、ニューラルネットワークが身分認識に用いられる場合を例として説明し、上記入力データは画像又はビデオフレームの特徴ベクトルに基づいて決定することができ、対応して、上記演算結果は画像又はビデオフレーム内のターゲットオブジェクトの身分情報を決定する。
【0039】
もう1つの例では、ニューラルネットワークが生体検出に用いられる場合を例として説明し、上記入力データは画像又はビデオフレームの特徴ベクトルに基づいて決定することができ、対応して、上記演算結果は画像又はビデオフレーム内に生体が存在するか否かを決定する。例えば、ニューラルネットワークによって出力された確率の値が予め設定された閾値(例えば、予め設定された閾値が0.5であってもよい)以上である場合、分類結果は生体が存在することであり、ニューラルネットワークによって出力された確率の値が予め設定された閾値より小さい場合、分類結果は生体が存在しないことである。
【0040】
別の例では、ニューラルネットワークが、禁止令違反である写真(例えば、暴力的な写真、エロい写真など)の検出に用いられる場合を例として説明し、上記入力データは、画像又はビデオフレームの特徴ベクトルに基づいて決定することができ、対応して、上記演算結果は、画像又はビデオフレームが禁止令違反である写真であるか否か決定する。例えば、ニューラルネットワークによって出力された確率の値が予め設定された閾値以上である場合、分類結果は、画像又はビデオフレームが禁止令違反である写真であることであり、ニューラルネットワークによって出力された確率の値が予め設定された閾値より小さい場合、分類結果は、画像又はビデオフレームが正常な写真であることである。
【0041】
更なる適用シーンとして、ニューラルネットワークが音声翻訳のシーンに適用される場合を例とすると、上記入力データは、ユーザによって入力された音声データの特徴ベクトルに基づいて決定することができる。対応して、演算ユニットによって出力された演算結果は、音声翻訳の結果を決定する。
【0042】
例えば、ニューラルネットワークが中国語-英語翻訳のシーンに適用される場合を例として説明すると、上記入力データは中文の音声データの特徴ベクトルに基づいて決定することができ、対応して、上記演算結果は音声データに対応する英語翻訳結果を決定し、当該英語翻訳結果は音声の形であってもよいし、テキストの形であってもよいが、ここで限定されない。
【0043】
本出願の実施例の1つの可能な実現形態では、NPU100はバス経由でDSP内部のメモリにアクセスすることができ、具体的に、NPU100はバスのメインインターフェースをさらに備えることができ、メインインターフェースはバスを介してDSPにメモリコピー関数memcpyを送信することで、DSP内部のメモリにアクセスして、DSP内部のメモリに記憶される浮動小数点型の入力データを得る。これにより、DSP内部のメモリに記憶されている入力データを効果的に読み取ることを実現でき、したがって、NPU100が演算プロセスを効果的に実行することを確保することができる。さらに、DSP及びNPUは同時にDSP内部のメモリを検出することができ、バス経由でDSP内部のメモリにアクセスし、データ一致性の問題さえ回避することができる。
【0044】
本出願の実施例の1つの可能な実現形態では、演算ユニット120が畳み込み演算を実行する際に、量子化ユニット110は、浮動小数点型の入力データに対して、浮動小数点を短整数型に変換する変換操作を行うことで、演算ユニット120を介して変換後の短整数型の入力データに対して畳み込み演算を実行するために使用され得る。これにより、量子化のプロセスを、浮動小数点型を短整数型の固定小数点に変換するプロセスに簡素化することができ、畳み込みプロセスの精度を保証できるだけではなく、量子化プロセスの演算オーバーヘッドを削減することができる。
【0045】
浮動小数点型の入力データはDSP内部のメモリに記憶することができる。
【0046】
本出願の実施例の1つの可能な実現形態では、NPU100は高速アクセスインターフェースを介してRAMにアクセスすることができ、RAMはNPUから短整数型の入力データを取得し、且つ短整数型の入力データをRAM内に転送して記憶することができ、これにより、後続の演算プロセスにおいて、演算ユニット120はRAMから短整数型の入力データを効果的に取得することができ、短整数型の入力データに対して畳み込み演算を実行する。即ち、本出願では、RAMを介して、量子化ユニット110によって出力された短整数型の入力データを記憶することができる。
【0047】
上記RAMはNPUのRAMであり、NPURAMと略す。
【0048】
本出願の上記実施例でどのようにして短整数型の入力データに対して畳み込み演算を行ったかを分かりやすく説明するために、本出願はもう1つのNPUを提供する。
【0049】
図2は本出願の実施例2によって提供されるNPUの構造概略図である。
【0050】
図2に示すように、当該NPU200は、量子化ユニット210及び演算ユニット220を備えることができ、演算ユニット220は第1のレジスタ221、第2のレジスタ222、及びアキュムレータ223を備える。
【0051】
量子化ユニット210は、浮動小数点型の入力データに対して、浮動小数点を短整数型に変換する変換操作を行うことで、変換後の短整数型の入力データに対して畳み込み演算を実行するように構成される。
【0052】
NPU200は高速アクセスインターフェースを介してRAMにアクセスし、RAMは、短整数型の入力データをRAM内に転送して記憶するように構成される。
【0053】
第1のレジスタ221は、第1の周期でRAMから短整数型の入力データを読み取るように構成される。
【0054】
第2のレジスタ222は、第1の周期の後の複数の後続サイクルで、PSRAMに記憶されているネットワークパラメータの少なくとも一部を読み取り、各周期で読み取ったネットワークパラメータの少なくとも一部と、第1のレジスタ221内の対応する入力データとのドット積演算を行うように構成される。
【0055】
アキュムレータ223は、ドット積演算の結果を取得し、ドット積演算の結果に基づいて累積して、畳み込み演算の演算結果を得るように構成される。
【0056】
例えば、ネットワークパラメータをweight’としてマークし、ネットワークパラメータweight’を8つのweight”に分けることができ、各weight”はバスで読み取り、短整数型の入力データ及びweight”のみに対して畳み込み演算を行い、ある周期であるweight”を得た時、当該weight”及び短整数型の入力データを用いて畳み込み演算を実行するプロセスでは、演算ユニットは次のweight”を読み取ることで、読み取り/ロードのプロセスと畳み込み演算のプロセスとの並列化を実現することができ、畳み込み演算の効率を向上させる。
【0057】
例えば、入力データをIとしてマークし、ニューラルネットワークのネットワークパラメータはWであり、入力データが128バイトbytesである場合を例とすると、第1の周期では、入力データの最初の4つのbyte[0,3]を読み取ることができ、第2の周期から第33の周期までは、32周期のネットワークパラメータを読み取り、即ち128byteのネットワークパラメータを読み取り、
図3に示すように、入力データの最初の4つのbyteとネットワークパラメータの128byteに対して同時にドット積演算を行うことができ、アキュムレータACCは合計32の周期のドット積演算の結果を累積する。
【0058】
例えば、
図3におけるACC1の出力はW[3]×I[3]+W[2]×I[2]+W[1]×I[1]+W[0]×I[0]であり、同様に、ACC2の出力はW[7]×I[3]+W[6]×I[2]+W[5]×I[1]+W[4]×I[0]であり、このように、ACC32の出力はW[127]×I[3]+W[126]×I[2]+W[125]×I[1]+W[124]×I[0]である。
【0059】
その後、再び入力データ内の4つのbyte[4,7]を読み取り、及び32周期のネットワークパラメータを読み取り、ドット積演算を行い、ドット積演算の結果をアキュムレータに送信して累積し、入力データ内のすべてのbyteが消費された後、即ち入力データ内のすべてのbyteがいずれも演算に参加した場合、行列演算は終了する。
【0060】
これにより、ネットワークパラメータがロードされる又は読み取られる中で、読み取られたネットワークパラメータで畳み込み演算を実行するのを実現することができ、データ読み取り/ロードと畳み込み演算との並列化を実現することができ、畳み込み演算効率を向上させる。
【0061】
本出願の実施例の1つの可能な実現形態では、当該NPUが音声チップ内に適用される場合、音声チップのカーネルの処理負担をさらに軽減するために、NPU内には、高性能の活性化ユニットをさらに備えることができ、活性化ユニットを介して、畳み込み演算の演算結果を活性化する。具体的に、畳み込み演算の演算結果はDSPのメモリに送信して記憶することができ、活性化ユニットはバス経由でDSP内部のメモリにアクセスして、DSPに記憶されている畳み込み演算の演算結果を取得することができ、畳み込み演算の演算結果に基づいて、活性化関数を用いて活性化を行い、且つ活性化結果をDSPに提供して記憶し、これにより、後続の操作はDSPのソフトウェアで実行することができる。
【0062】
上記実施例はNPUの構造であり、本出願は処理装置の構造をさらに提供する。
【0063】
図4は本出願の実施例3によって提供される処理装置の構造概略図である。
【0064】
図4に示すように、当該処理装置は、バスで接続される上記任意の実施例によって提供されるNPU410、PSRAM420及びDSP430を備えることができる。
【0065】
DSP430は、内部のメモリに処理対象の入力データを記憶し、及びNPUによる入力データの演算結果を記憶するように構成される。
【0066】
PSRAM420は、ニューラルネットワークのネットワークパラメータを記憶するように構成される。
【0067】
本出願の実施例では、NPU410はバス経由でDSP430内部のメモリにアクセスすることで、処理対象の入力データを読み取り、及びバス経由でPSRAM420にアクセスしてネットワークパラメータの少なくとも一部を得ることができ、読み取ったネットワークパラメータの少なくとも一部に基づいて、入力データに対して行列ベクトル操作及び畳み込み演算のうちの少なくとも1つを実行し、且つ引き続きPSRAM420内のその他のネットワークパラメータを同期して読み取り、これにより、引き続き読み取ったその他のネットワークパラメータに基づいて、入力データに対して行列ベクトル操作及び畳み込み演算のうちの少なくとも1つを実行して、入力データの演算結果を得ることができる。これにより、データを読み取り又はロードしながら、演算のプロセスを実行することを実現することができ、即ち、データ読み取り/ロードと演算との並列化を実現することができ、したがって演算効率を向上させることができる。
【0068】
なお、関連技術では、PSRAMのデータをロードするにはCacheが必要とされ、Cacheがロードされる際にDSPが待機状態であり、データのロードが完了しないと、ロードされたデータで演算プロセスを実行することができず、演算効率が低い。
【0069】
本出願では、PSRAM420内におけるネットワークパラメータのロードプロセスとNPU410の演算プロセスとは並列して実行され、データロードの利用率を向上させると共に、演算効率を大幅に向上させることを実現することができる。ニューラルネットワークが音声認識のシーンに適用される場合を例として説明し、演算効率が大幅に向上した場合、当該処理装置を、ニューラルネットワーク化の音声ウェイクアップおよび認識のタスクにより適したものにすることができる。
【0070】
一例として、DSPをHiFi(High Fidelity、高忠実度)DSPとする場合を例とすると、処理装置の構造は
図5に示すとおりであってもよく、NPUはバスのメインインターフェースを備えることができ、当該メインインターフェースはバス経由でHiFi DSP内部のメモリにアクセスし、また、NPUは高速アクセスインターフェース(128byte/周期cycle)を有し、当該高速アクセスインターフェースを介してNPURAMにアクセスする。
【0071】
浮動小数点型の入力データ、行列ベクトル操作の演算結果、及び畳み込み演算の演算結果(浮動小数点型)をHiFi DSP内部のメモリに記憶することにより、HiFi DSPはNPUとのCache一致性の設計が必要とされず、即ち、Cache構造を修正したり、一致性バスを追加したりする必要がなく、ハードウェアの設計を簡素化することができる。
【0072】
演算能力では、NPU内に128個の8x8の乗加算が組み込まれており、4x32、8x16、16x8という3種類の行列演算モードをサポートする。同時に64個の16x8の乗加算に対応し、2x32、4x16、8x8という3種類の畳み込み演算モードをサポートする。4x32は、128個の要素を32のグループに分け、各グループの4つの元素と入力データの4つの要素とのドット積を求め、ドット積結果を32個のアキュムレータに送信することを指す。入力データのベクトル次元がNである場合、1xNとNx32との行列演算を完成させるには合計N/4個の周期が必要とされる。8x16、16x8は同様である。
【0073】
行列演算、即ち行列ベクトル操作は、入力データ又は入力ベクトルを8bitに量子化し、8bitx8bitのベクトル積行列演算を行い、行列演算結果に入力データの量子化scale値(第2のパラメータ)をかける。ニューラルネットワークのネットワークパラメータweightは同様に量子化が必要とされ、ネットワークパラメータの量子化プロセスはHiFi DSPのソフトウェアで完成することができ、即ち、weightのスケール係数とバイアス係数(Scale値とBias値)の操作は、この部分の演算量の比率が低いため、HiFi DSPのソフトウェアで完成することができる。上記操作は、64x64要素の8x8行列演算のプロセスでは、量子化の演算力は約30%を占有し、8x8行列演算は約67%を占有し、積scaleは3%を占有する。量子化プロセスが占有する比率が高いのは、浮動小数点を短整数型固定小数点に変換する過程で、浮動小数点の符号ビットを判断して、0.5を加えるか又は引いてから、int8整数に変換する必要がある。しかしながら、この操作に対して、HiFi DSPは特定の加速命令がなく、1つずつ実行するしかできない。本出願の上記ハードウェア加速の方式を介して、専用回路という方法を用いることができ、即ちNPUを介して行列演算を実行すると、この部分の比率を30%から5%まで低下させることができる。行列演算に合わせて、各周期で8つの乗加算を128個の乗加算に増やし、演算効率を大幅に向上させる。
【0074】
畳み込み演算に対して、その入力は16bitを用いることで、量子化のプロセスを、浮動小数点型*1024をshort型固定小数点に変換するプロセスに変換する。元の量子化プロセスは、入力データ又は入力ベクトルの最大値absmaxを求め、すべての値をmaxで割ってから127にかけるものであり、当該演算は3つのステップを必要とされるが、浮動小数点型*1024をshort型固定小数点に変換するのは、その3つ目のステップに過ぎない。これにより、畳み込みプロセスの精度を確保するとともに、量子化プロセスの演算オーバーヘッドを削減する(元の量子化プロセスでは並列的に演算することができないからである)。
【0075】
NPUは、sigmoid/tanh/log/expなどの操作を実現する高性能の活性化ユニットを有し、精度が単精度浮動小数点数学ライブラリに近く、1つの周期で1つのユニットの演算を完成させることができ、HiFi DSPでこれらの関数を演算する時間を大幅に減少させ、各ユニットの演算には約400~1000の周期が必要とされる。
【0076】
上記内容では、専用の量子化ユニットを用いて量子化の時間オーバーヘッドを削減し、本出願では、さらにメモリを最大限に使用することで演算効率を向上させることができる。
【0077】
性能を損なわない前提で、チップ内のSRAM(Static Random Access Memory、静的ランダムメモリ)のサイズを可能な限りを減少させることができる。関連技術における音声チップに対して、1MB+のストレージがPSRAMに配置され、166MB/s帯域幅だけを有するPSRAMに対して、10msごとに1回呼び出す場合、1MBのストレージを読み取るだけで、理論的な帯域幅の60%が占有されてしまい、演算効率が80%である場合、当該比率は75%に増加する。そのため、まず、呼び出し回数の少ないモデルをPSRAM内に配置する必要があり、例えば、PSRAM内に配置されたモデルには、30msごとに1回呼び出すモデルが存在する。また、データをロードすると共に演算を行い、且つ繰り返してロードすることを減少させるために、チップ内でモデルLayerレベルのバッファリングを行う必要がある。NPUハードウェアを用いて加速させる時、ネットワークパラメータのロードをチップ内RAMに記憶し、及び演算のプロセスを完全に並列化させることができ、ロードが完成した後に演算を行うという制限を取り除くことで、帯域幅の利用率を最大化し、これはHiFi DSPシステムではできないことである。したがって、本出願では、ハードウェアを用いてロードと演算との並列化を実現し、NPUはPSRAM内のネットワークパラメータをロードすると共に、行列演算を行う。
【0078】
ハードウェア加速はチップ内のRAMに対して周期あたり128Bytesを読み取り、その帯域幅はHiFi DSPの64bitsより16倍向上した。上記紹介した入力プロセスには、量子化プロセスもあれば、浮動小数点型を短整数型に変換するプロセスもあり、NPUハードウェア加速ユニットの面積を考えると、この2つのプロセスはハードウェアユニットを128個配置することができないため、128Bytesの読み取り速度が必要とされない。最終的には、バスが64bitの読み取り帯域幅であり、2つの実行ユニットを配置すると決定する。浮動小数点型の入力データ又は入力ベクトルに対して、その記憶位置をHiFi DSPのカーネル内(即ち内部メモリ)とする必要がある。同時に、行列演算と畳み込み演算の結果(浮動小数点型)もHiFi DSPのカーネル内に記憶する必要がある。このように、HiFi DSPはNPUとのCache一致性の設計が必要とされないため、設計が大幅に簡素化される。当該処理装置の構造を用いると、演算量の多い部分をNPUで演算し、HiFi DSPは汎用型の演算と音声信号処理の演算を行うことで、様々な音声タスクの最適な演算効率、並びに演算とロードとの並列化を達成する。
【0079】
本出願の実施例の処理装置は、専用のNPUを用いて行列演算及び/又は畳み込み演算を実現し、当該NPUが音声チップ内に適用される場合、音声チップ内のカーネルの処理負担を低減して、音声チップ内のカーネルの処理効率を向上させることができる。
【0080】
上記実施例を実現するために、本出願はニューラルネットワークの処理方法をさらに提供する。
【0081】
図6は、本出願の実施例5によって提供されるニューラルネットワークの処理方法の概略フローチャートである。
【0082】
本出願の実施例は、当該ニューラルネットワークの処理方法がニューラルネットワークプロセッシングユニットNPUに適用される場合を例とし、NPUは量子化ユニットおよび演算ユニットを備える。
【0083】
図6に示すように、当該ニューラルネットワークの処理方法は以下のステップ601~603を含むことができる。
【0084】
ステップ601、量子化ユニットは浮動小数点型の入力データを取得し、浮動小数点型の入力データを量子化して量子化された後の入力データを得て、量子化された後の入力データを演算ユニットに提供する。
【0085】
ステップ602、演算ユニットは量子化された後の入力データに対して行列ベクトル操作及び/又は畳み込み演算を行って、入力データの演算結果を得る。
【0086】
ステップ603、量子化ユニットは、演算ユニットによって出力された演算結果に対して逆量子化を行って逆量子化結果を得る。
【0087】
本出願の実施例の1つの可能な実現形態では、演算ユニットが行列ベクトル操作を実行する際に、量子化ユニットデジタル信号プロセッサDSP内部のメモリに記憶される浮動小数点型の入力データに基づいて、量子化のために使用される第1のパラメータと逆量子化のために使用される第2のパラメータを求め、数値型の入力データを得るように、浮動小数点型の入力データ内における量子化対象の浮動小数点の値に第1のパラメータをかけ、且つ小数点以下を切り捨てて数値型に変換し、および数値型の入力データを演算ユニットに送信する。演算ユニットは数値型の入力データに対して行列ベクトル操作を実行し、演算結果を得る。量子化ユニットは演算結果を浮動小数点型に変換し、且つ浮動小数点型の演算結果に第2のパラメータをかけてDSPのメモリに送信して記憶する。
【0088】
1つの可能な実現形態として、NPUはバスのメインインターフェースをさらに備え、メインインターフェースは、バスを介してDSPにメモリコピー関数を送信することにより、DSP内部のメモリにアクセスして、DSP内部のメモリに記憶される浮動小数点型の入力データを得るように構成される。
【0089】
本出願の実施例のもう1つの可能な実現形態では、演算ユニットが畳み込み演算を実行する際に、量子化ユニットは浮動小数点型の入力データに対して、浮動小数点を短整数型に変換する変換操作を行い、演算ユニット変換後の短整数型の入力データに対して畳み込み演算を実行して、演算結果を得る。
【0090】
1つの可能な実現形態として、NPUは高速アクセスインターフェースを介してRAMにアクセスし、RAMは、短整数型の入力データをRAM内に転送して記憶するように構成される。
【0091】
1つの可能な実現形態として、演算ユニットは第1のレジスタ、第2のレジスタおよびアキュムレータを備え、第1のレジスタは第1の周期でRAMから短整数型の入力データを読み取り、第2のレジスタは第1の周期の後の複数の後続サイクルで、PSRAMに記憶されているネットワークパラメータの少なくとも一部を読み取り、各周期で読み取ったネットワークパラメータの少なくとも一部と第1のレジスタ内の対応する入力データとのドット積演算を行い、アキュムレータドット積演算の結果を取得し、ドット積演算の結果に基づいて累積して、畳み込み演算の演算結果を得る。
【0092】
1つの可能な実現形態として、NPUは活性化ユニットをさらに備え、活性化ユニットDSPに記憶されている畳み込み演算の演算結果に基づいて、活性化関数を用いて活性化を行い、且つ記憶するように活性化結果をDSPに提供する。
【0093】
なお、上記いずれか1つの実施例におけるNPUに対する説明、および処理装置に対する説明は、同様に当該実施例に適用され、その実現の原理は同様なものであり、ここで詳しい説明を省略する。
【0094】
本出願の実施例のニューラルネットワークの処理方法は、量子化ユニットを介して浮動小数点型の入力データを取得し、浮動小数点型の入力データを量子化して量子化された後の入力データを得て、量子化された後の入力データを演算ユニットに提供することで、演算ユニットによって量子化された後の入力データに対して行列ベクトル操作及び/又は畳み込み演算を行って、入力データの演算結果を得て、その後、量子化ユニットを介して、演算ユニットによって出力された演算結果に対して逆量子化を行って逆量子化結果を得る。これにより、専用のNPUを用いて行列演算及び/又は畳み込み演算を実現し、当該NPUが音声チップ内に適用される場合、音声チップ内のカーネルの処理負担を低減して、音声チップ内のカーネルの処理効率を向上させることができる。
【0095】
上記実施例を実現するために、本出願は電子機器をさらに提供し、当該電子機器は少なくとも1つのプロセッサと、少なくとも1つのプロセッサと通信可能に接続されるメモリとを備えることができ、メモリには、少なくとも1つのプロセッサによって実行可能な命令が記憶されており、命令は、少なくとも1つのプロセッサが本出願の上記いずれか1つの実施例によって提供されるニューラルネットワークの処理方法を実行できるように、少なくとも1つのプロセッサによって実行される。
【0096】
上記実施例を実現するために、本出願は、コンピュータ命令が記憶されている非一時的コンピュータ読み取り可能な記憶媒体をさらに提供し、コンピュータ命令はコンピュータに本出願上記いずれか1つの実施例によって提供されるニューラルネットワークの処理方法を実行させる。
【0097】
上記実施例を実現するために、本出願はコンピュータプログラムをさらに提供し、当該コンピュータプログラムは、プロセッサによって実行される際に、本出願の上記いずれか1つの実施例によって提供されるニューラルネットワークの処理方法を実現する。
【0098】
本出願の実施例によると、本出願は電子機器、読み取り可能な記憶媒体およびコンピュータプログラムを提供する。
【0099】
図7は、本出願の実施例を実施することに使用できる例示的な電子機器の例示的なブロック図を示す。電子機器はラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレームコンピュータ、及び他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すことを目的とする。電子機器は、パーソナルデジタルプロセッサ、携帯電話、スマートフォン、ウェアラブルデバイス、他の類似する演算デバイスなどの様々な形態のモバイル装置を表すこともできる。本明細書で示されるコンポーネント、それらの接続と関係、及びそれらの機能は単なる例であり、本明細書の説明及び/又は要求される本出願の実現を制限することを意図したものではない。
【0100】
図7に示すように、機器700は、ROM(Read-Only Memory、リードオンリーメモリ)702に記憶されるコンピュータプログラム又は記憶ユニット707からRAM(Random Access Memory、ランダムアクセス/アクセスメモリ)703にロードされるコンピュータプログラムに基づいて様々な適切な動作と処理を実行できる演算ユニット701を備える。RAM 703では、機器700の操作に必要な様々なプログラム及びデータを含むことができる。演算ユニット701、ROM 702及びRAM 703はバス704を介して互いに接続される。I/O(Input/Output、入力/出力)インターフェース705は同様にバス704に接続される。
【0101】
キーボード、マウスなどの入力ユニット706と、各種類のタイプのモニタ、スピーカーなどの出力ユニット707と、磁気ディスク、光ディスクなどの記憶ユニット708と、ネットワークカード、モデム、無線通信送受信機などの通信ユニット709とを備える機器700内の複数の部品はI/Oインターフェース805に接続される。通信ユニット709は、機器700がインターネットなどのコンピュータネットワーク及び/又は様々なテレコムネットワークを介して他の機器と情報/データを交換することを許容する。
【0102】
演算ユニット701は処理と演算能力を有する様々な汎用及び/又は専用処理コンポーネントであってもよい。演算ユニット701の一部の例は、CPU(Central Processing Unit、中央処理装置)、GPU(Graphic Processing Units、グラフィックス処理装置)、様々な専用のAI(Artificial Intelligence、人工智能)演算チップ、機械学習モデルアルゴリズムを実行する様々な演算ユニット、DSP(Digital Signal Processor、デジタル信号プロセッサ)、及び任意の適切なプロセッサ、コントローラ、マイクロコントローラなどを含むが、これらに限定されない。演算ユニット701は上記説明された各方法及び処理、例えば上記ニューラルネットワークの処理方法を実行する。例えば、一部の実施例では、上記ニューラルネットワークの処理方法は、記憶ユニット708など、機械読み取り可能な媒体に有形的に含まれるコンピュータソフトウェアプログラムとして実現することができる。いくつかの実施例では、コンピュータプログラムの一部又はすべてはROM 702及び/又は通信ユニット709を介して機器700にロード及び/又はインストールされる。コンピュータプログラムがRAM 703にロードされ且つ演算ユニット701によって実行される際に、上記説明された道路案内方法の1つ又は複数のステップを実行することができる。代替的に、他の実施例では、演算ユニット701は他の任意の適切な方法(例えば、ファームウェアを介して)を通じて、上記ニューラルネットワークの処理方法を実行するように構成されてもよい。
【0103】
本明細書の上記説明されたシステム及び技術の様々な実施形態は、デジタル電子回路システム、集積回路システム、FPGA(Field Programmable Gate Array、フィールドプログラマブルゲートアレイ)、ASIC(Application-Specific Integrated Circuit、特定用途向け集積回路)、ASSP(Application Specific Standard Product、特定用途向け標準製品)、SOC(System On Chip、チップ上システムのシステム)、CPLD(Complex Programmable Logic Device、コンプレックス・プログラマブル・ロジック・デバイス)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はそれらの組み合わせで実現することができる。これらの様々な実施形態は、1つ又は複数のコンピュータプログラムで実施されてもよく、当該1つ又は複数のコンピュータプログラムは、少なくとも1つのプログラマブルプロセッサを備えるプログラム可能なシステムで実行及び/又は解釈することができ、当該プログラマブルプロセッサは、特定用途向け又は汎用プログラマブルプロセッサであってもよく、ストレージシステム、少なくとも1つの入力装置、及び少なくとも1つの出力装置からデータ及び命令を受信し、データ及び命令を当該ストレージシステム、当該少なくとも1つの入力装置、及び当該少なくとも1つの出力装置に伝送することができる。
【0104】
本出願の方法を実行するためのプログラムコードは、1つ又は複数のプログラミング言語の任意の組み合わせで書くことができる。これらのプログラムコードは、プロセッサ又がコントローラによって実行された際に、フローチャート及び/又はブロック図によって規定された機能/動作が実施されるように、汎用コンピュータ、専用コンピュータ、又は他のプログラマブルデータ処理装置のプロセッサ又はコントローラに提供することができる。プログラムコードは、完全に機械上で実行され、部分的に機械上で実行され、スタンドアロンソフトウェアパッケージとして、部分的に機械上で実行され、かつ部分的にリモート機械上で実行され、又は完全にリモート機械又はサーバ上で実行されてもよい。
【0105】
本出願の文脈では、機械読み取り可能な媒体は、命令実行システム、装置、またはデバイスによって使用されたり、又は命令実行システム、装置、またはデバイスと組み合わせて使用されたりするプログラムを含むか、又は記憶できる有形の媒体であってもよい。機械読み取り可能な媒体は、機械読み取り可能な信号媒体または機械読み取り可能な記憶媒体であってもよい。機械読み取り可能な媒体は、電子的、磁気的、光学的、電磁気的、赤外線的、又は半導体システム、装置又はデバイス、または上記内容の任意の適切な組み合わせを備えることができるが、これらに限定されない。機械読み取り可能な記憶媒体のより具体的な例は、1つ又は複数のラインに基づく電気接続、ポータブルコンピュータディスク、ハードディスク、RAM、ROM、EPROM(Electrically Programmable Read-Only-Memory、消去可能プログラマブルリードオンリーメモリ)又はフラッシュメモリ、光ファイバ、CD-ROM(Compact Disc Read-Only Memory、ポータブルコンパクトディスクリードオンリーメモリ)、光学記憶装置、磁気記憶装置、または上記内容のいずれかの適切な組み合わせを含む。
【0106】
ユーザとのインタラクションを提供するために、ここで説明されたシステム及び技術をコンピュータ上で実施することができ、当該コンピュータは、ユーザに情報を表示するためのディスプレイ装置(例えば、CRT(Cathode-Ray Tube、陰極線管)又はLCD(Liquid Crystal Display、液晶ディスプレイ)モニタ)、並びにキーボードとポインティングデバイス(例えば、マウス又はトラックボール)を有し、ユーザは、当該キーボード及び当該ポインティングデバイスを介して入力をコンピュータに提供することができる。他の種類の装置も、ユーザとのインタラクションを提供することができ、例えば、ユーザに提供されるフィードバックは、任意の形式のセンシングフィードバック(例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバック)であってもよく、任意の形式(音響入力と、音声入力または、触覚入力とを含む)でユーザからの入力を受信することができる。
【0107】
ここで説明されるシステム及び技術は、バックエンドコンポーネントを備える演算システム(例えば、データサーバとして)、又はミドルウェアコンポーネントを備える演算システム(例えば、アプリケーションサーバ)、又はフロントエンドコンポーネントを備える演算システム(例えば、グラフィカルユーザインタフェース又はウェブブラウザを有するユーザコンピュータ、ユーザは、当該グラフィカルユーザインタフェース又は当該ウェブブラウザによってここで説明されたシステム及び技術の実施形態とインタラクションを行う)、又はこのようなバックエンドコンポーネントと、ミドルウェアコンポーネントと、フロントエンドコンポーネントの任意の組み合わせを備える演算システムで実施することができる。任意の形態又は媒体のデジタルデータ通信(例えば、通信ネットワーク)によってシステムのコンポーネントを互に接続することができる。通信ネットワークの例は、LAN(Local Area Network、ローカルエリアネットワーク)、WAN(Wide Area Network、ワイドエリアネットワーク)、インターネット、及びブロックチェーンネットワークを含む。
【0108】
コンピュータシステムは、クライアントとサーバを備えることができる。クライアントとサーバは、一般に、互いに離れており、通常に通信ネットワークを介してインタラクションする。対応するコンピュータ上で実行され、かつ互いにクライアント-サーバ関係を有するコンピュータプログラムによってクライアントとサーバとの関係が生成される。サーバはクラウドサーバであってもよく、クラウドコンピューティングサーバまたはクラウドホストとも呼ばれ、クラウドコンピューティングサービスシステムにおける1つのホスト製品であり、従来の物理ホストとVPS(Virtual Private Server,仮想専用サーバ)サービスに存在する管理の難しさ、業務拡張性の弱いという欠陥を解決した。サーバは分散システムのサーバであってもよく、またはブロックチェーンと組み合わせたサーバであってもよい。
【0109】
なお、人工知能は、人間のある思考過程及び知的な行動(例えば学習、推理、思考、計画など)をコンピュータにシミュレーションさせることを研究する学科であり、ハードウェアレベルの技術もソフトウェアレベルの技術もある。人工知能のハードウェア技術は一般に、センサ、専用の人工知能チップ、クラウド演算、分散ストレージ、ビッグデータ処理などの技術を含み、人工知能のソフトウェア技術は主にコンピュータ視覚技術、音声認識技術、自然言語処理技術及び機械学習/深層学習、ビッグデータ処理技術、ナレッジグラフ技術などのいくつかの側面を含む。
【0110】
本出願の実施例の技術案によると、量子化ユニットを介して浮動小数点型の入力データを取得し、浮動小数点型の入力データを量子化して量子化された後の入力データを得て、量子化された後の入力データを演算ユニットに提供することで、演算ユニットを介して、量子化された後の入力データに対して行列ベクトル操作及び/又は畳み込み演算を行って、入力データの演算結果を得て、その後、量子化ユニットを介して、演算ユニットによって出力された演算結果に対して逆量子化を行って逆量子化結果を得る。これにより、専用のNPUを用いて行列演算及び/又は畳み込み演算を実現し、当該NPUが音声チップ内に適用される場合、音声チップ内のカーネルの処理負担を低減して、音声チップ内のカーネルの処理効率を向上させることができる。
【0111】
なお、上記示される様々な形式のフローを用いて、ステップを並べ替え、追加、又は削除することができる。例えば、本出願に記載されている各ステップは、並列に実行されてもよいし、順次実行されてもよいし、異なる順序で実行されてもよいが、本出願で開示されている技術案の所望の結果を実現することができれば、本明細書では限定されない。
【0112】
上記具体的な実施形態は、本出願の保護範囲を制限するものではない。当業者であれば、設計の要件と他の要因に応じて、様々な修正、組み合わせ、一部の組み合わせ及び代替を行うことができることを理解されたい。本開示の精神及び原則内で行われた修正、同等の置き換え及び改善などは、いずれも本開示の保護範囲に含まれるべきである。