(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-27
(45)【発行日】2023-03-07
(54)【発明の名称】データ量子化処理方法、装置、電子機器および記憶媒体
(51)【国際特許分類】
G06N 3/0464 20230101AFI20230228BHJP
G06V 10/28 20220101ALI20230228BHJP
G06V 10/82 20220101ALI20230228BHJP
G06T 7/00 20170101ALI20230228BHJP
【FI】
G06N3/0464
G06V10/28
G06V10/82
G06T7/00 350C
(21)【出願番号】P 2021578095
(86)(22)【出願日】2021-02-22
(86)【国際出願番号】 CN2021077235
(87)【国際公開番号】W WO2021169914
(87)【国際公開日】2021-09-02
【審査請求日】2021-12-28
(31)【優先権主張番号】202010111884.3
(32)【優先日】2020-02-24
(33)【優先権主張国・地域又は機関】CN
【早期審査対象出願】
(73)【特許権者】
【識別番号】520426003
【氏名又は名称】中科寒武紀科技股▲分▼有限公司
【氏名又は名称原語表記】CAMBRICON TECHNOLOGIES CORPORATION LIMITED
【住所又は居所原語表記】Room 1601, 16 / F, Block D, Zhizhen Building, No. 7, Zhichun Road, Haidian District Beijing 100191, China
(74)【代理人】
【識別番号】100169904
【氏名又は名称】村井 康司
(74)【代理人】
【識別番号】100221372
【氏名又は名称】岡崎 信治
(72)【発明者】
【氏名】▲ゆ▼▲しん▼
(72)【発明者】
【氏名】▲劉▼道福
(72)【発明者】
【氏名】周▲詩▼怡
【審査官】山本 俊介
(56)【参考文献】
【文献】特開2019-032833(JP,A)
【文献】米国特許出願公開第2019/0220709(US,A1)
【文献】中国特許出願公開第109993296(CN,A)
【文献】米国特許出願公開第2019/0297327(US,A1)
【文献】中国特許出願公開第110717585(CN,A)
【文献】米国特許出願公開第2020/0026986(US,A1)
【文献】中国特許出願公開第110020616(CN,A)
【文献】中国特許出願公開第110826685(CN,A)
【文献】Jun Haeng Lee, Sangwon Ha, Saerom Choi, Won-Jo Lee, Seungwon Lee,Quantization for Rapid Deployment of Deep Neural Networks,arXiv [online],2018年10月12日,https://arxiv.org/pdf/1810.05488.pdf,[2022年8月10日検索]
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06V 10/28
G06V 10/82
G06T 7/00
(57)【特許請求の範囲】
【請求項1】
データ量子化処理方法であって、
深層畳み込み層における入力画像のチャンネル数に基づいて、前記入力画像の各チャンネルに対応する量子化すべきデータを確定することと、
各チャンネルに対応する量子化すべきデータに基づいて、各チャンネルに対応する量子化すべきデータの統計結果をそれぞれ確定することと、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応する量子化パラメータを確定することと、
各チャンネルに対応する量子化パラメータを利用して、各チャンネルに対応する量子化すべきデータをそれぞれ量子化し、前記入力画像の各チャンネルに対応する量子化後のデータを得ることと、を含み、
前記深層畳み込み層における前記入力画像のチャンネル数と出力画像のチャンネル数が同じであ
り、
前記量子化パラメータがオフセット量を含む場合に、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応する量子化パラメータを確定することは、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応するオフセット量を確定することを含み、
該チャンネルに対応するオフセット量は、該チャンネルに対応する量子化すべきデータの数値フィールドにおけるすべての浮動小数点数の最小値と該チャンネルに対応する量子化すべきデータの数値フィールドにおけるすべての浮動小数点数の最大値との平均値である、ことを特徴とするデータ量子化処理方法。
【請求項2】
前記量子化パラメータは点位置パラメータを含み、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応する量子化パラメータを確定することは、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果と該チャンネルに対応するデータビット幅に基づいて、該チャンネルに対応する点位置パラメータを確定することを含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記量子化パラメータは
スケール係数をさらに含み、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応する量子化パラメータを確定することは、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果、該チャンネルに対応する点位置パラメータ、および該チャンネルに対応するデータビット幅に基づいて、該チャンネルに対応する
スケール係数を確定することを含むことを特徴とする請求項2に記載の方法。
【請求項4】
各チャンネルに対応する量子化すべきデータに基づいて、それぞれ各チャンネルに対応する量子化すべきデータの統計結果を確定することは、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータにおける絶対値の最大値を確定することと、
該チャンネルに対応する量子化すべきデータにおける絶対値の最大値を該チャンネルに対応する量子化すべきデータの統計結果として確定することとを含むことを特徴とする請求項1~
3に記載の方法。
【請求項5】
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータにおける絶対値の最大値を確定することは、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの最大値と最小値を確定することと、
該チャンネルに対応する量子化すべきデータの最大値と最小値に基づいて、該チャンネルに対応する量子化すべきデータの絶対値の最大値を確定することとを含むことを特徴とする請求項
4に記載の方法。
【請求項6】
いずれか一つのチャンネルに対して、該チャンネルに対応するデータビット幅は予め設定された値であることを特徴とする請求項2または3に記載の方法。
【請求項7】
いずれか一つのチャンネルに対して、
該チャンネルに対応するデータビット幅の量子化誤差に基づいて、該チャンネルに対応するデータビット幅を調整して、調整後のデータビット幅を利用して、該チャンネルに対応する量子化パラメータを確定することをさらに含み、
前記量子化誤差は、該チャンネルに対応する量子化後のデータと該チャンネルに対応する量子化すべきデータに基づいて確定されることを特徴とする請求項2または3に記載の方法。
【請求項8】
該チャンネルに対応するデータビット幅の量子化誤差に基づいて、該チャンネルに対応するデータビット幅を調整することは、
前記量子化誤差と閾値を比較し、比較結果に基づいて、該チャンネルに対応するデータビット幅を調整することを含むことを特徴とする請求項
7に記載の方法。
【請求項9】
前記閾値は第1の閾値と第2の閾値を含み、
前記量子化誤差と閾値を比較し、比較結果に基づいて、該チャンネルに対応するデータビット幅を調整することは、
前記量子化誤差が前記第1の閾値以上である場合、該チャンネルに対応するデータビット幅を増加することと、
前記量子化誤差が前記第2の閾値以下である場合、該チャンネルに対応するデータビット幅を減少することと、
前記量子化誤差が前記第1の閾値と前記第2の閾値との間にある場合、該チャンネルに対応するデータビット幅は不変に保つこととを含むことを特徴とする請求項
8に記載の方法。
【請求項10】
データ量子化処理装置であって、
深層畳み込み層における入力画像のチャンネル数に基づいて、前記入力画像の各チャンネルに対応する量子化すべきデータを確定するための第1の確定モジュールと、
各チャンネルに対応する量子化すべきデータに基づいて、各チャンネルに対応する量子化すべきデータの統計結果をそれぞれ確定するための第2の確定モジュールと、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応する量子化パラメータを確定するための第3の確定モジュールと、
各チャンネルに対応する量子化パラメータを利用して、各チャンネルに対応する量子化すべきデータをそれぞれ量子化し、前記入力画像の各チャンネルに対応する量子化後のデータを得るための量子化モジュールと、を含み、
前記深層畳み込み層における前記入力画像のチャンネル数と出力画像のチャンネル数が同じであ
り、
前記量子化パラメータがオフセット量を含む場合に、前記第3の確定モジュールは、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応するオフセット量を確定するために用いられ、
該チャンネルに対応するオフセット量は、該チャンネルに対応する量子化すべきデータの数値フィールドにおけるすべての浮動小数点数の最小値と該チャンネルに対応する量子化すべきデータの数値フィールドにおけるすべての浮動小数点数の最大値との平均値である、ことを特徴とするデータ量子化処理
装置。
【請求項11】
人工知能チップであって、請求項
10に記載のデータ量子化処理装置を含むことを特徴とする人工知能チップ。
【請求項12】
電子機器であって、請求項
11に記載の人工知能チップを含むことを特徴とする電子機器。
【請求項13】
電子機器であって、
プロセッサと、プロセッサの実行可能な命令を記憶するためのメモリとを含み、前記プロセッサは、請求項1~
9のいずれか一項に記載の方法を実行するように、前記メモリに記憶された命令を呼び出すように構成されることを特徴とする電子機器。
【請求項14】
コンピュータプログラム命令が記憶されたコンピュータ可読記憶媒体であって、前記コンピュータプログラム命令がプロセッサによって実行されると、請求項1~
9のいずれか一項に記載の方法を実現することを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示はコンピュータ技術分野に関し、特にデータ量子化処理方法、装置、電子機器および記憶媒体に関する。
【背景技術】
【0002】
人工知能技術分野において、ニューラルネットワークアルゴリズムが最近非常に人気のある機械学習アルゴリズムであり、画像認識、音声認識、自然言語処理などの様々な分野で優れた効果を得た。しかし、ニューラルネットワークの複雑性が高まるにつれ、データのデータ量やデータ次元がだんだん増大しており、増大しつつあるデータ量などが演算装置のデータ処理効率、記憶装置のメモリ容量やアクセス効率などに大きな課題となっている。関連技術では、ニューラルネットワーク全体に対して同じ量子化解決策を用いているが、ニューラルネットワークにおける異なる演算データの間に大きな差異が存在する可能性があるので、精度が低く、データの演算結果に影響を与えることが多い。
【発明の概要】
【0003】
これに基づいて、上記の技術問題に対して、データ量子化処理方法、装置、電子機器、および記憶媒体を提供する必要がある。
【0004】
本開示の一態様によれば、データ量子化処理方法を提供し、前記方法は、深層畳み込み層における入力画像のチャンネル数に基づいて、前記入力画像の各チャンネルに対応する量子化すべきデータを確定することと、各チャンネルに対応する量子化すべきデータに基づいて、各チャンネルに対応する量子化すべきデータの統計結果をそれぞれ確定することと、いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応する量子化パラメータを確定することと、各チャンネルに対応する量子化パラメータを利用して、それぞれ各チャンネルに対応する量子化すべきデータを量子化し、前記入力画像の各チャンネルに対応する量子化後のデータを得ることと、を含み、ここで、前記深層畳み込み層における前記入力画像のチャンネル数と出力画像のチャンネル数が同じである。
【0005】
本開示の一態様によれば、データ量子化処理装置を提供し、前記処理装置は、深層畳み込み層における入力画像のチャンネル数に基づいて、前記入力画像の各チャンネルに対応する量子化すべきデータを確定するための第1の確定モジュールと、各チャンネルに対応する量子化すべきデータに基づいて、それぞれ各チャンネルに対応する量子化すべきデータの統計結果を確定するための第2の確定モジュールと、いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応する量子化パラメータを確定するための第3の確定モジュールと、各チャンネルに対応する量子化パラメータを利用して、それぞれ各チャンネルに対応する量子化すべきデータを量子化し、前記入力画像の各チャンネルに対応する量子化後のデータを得るための量子化モジュールと、を含み、ここで、前記深層畳み込み層における前記入力画像のチャンネル数と出力画像のチャンネル数が同じである。
【0006】
本開示の一態様によれば、以上に記載のデータ量子化処理装置を含む人工知能チップを提供する。
【0007】
本開示の一態様によれば、以上に記載の人工知能チップを含む電子機器を提供する。
【0008】
本開示の一態様によれば、電子機器を提供し、前記電子機器は、プロセッサと、プロセッサの実行可能な命令を記憶するためのメモリとを含み、前記プロセッサは、以上に記載のデータ量子化処理方法を実行するように、前記メモリに記憶された命令を呼び出すように構成される。
【0009】
本開示の一態様によれば、プロセッサによって実行されると、以上に記載のデータ量子化処理方法を実現するコンピュータプログラム命令が記憶されたコンピュータ可読記憶媒体を提供する。
【0010】
深層畳み込み層における入力画像のチャンネル数に基づいて、入力画像の各チャンネルに対応する量子化すべきデータを確定し、各チャンネルに対応する量子化すべきデータに基づいて、各チャンネルに対応する量子化すべきデータの統計結果をそれぞれ確定し、いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応する量子化パラメータを確定し、各チャンネルに対応する量子化パラメータを利用して、各チャンネルに対応する量子化すべきデータをそれぞれ量子化し、前記入力画像の各チャンネルに対応する量子化後のデータを得る。ここで、深層畳み込み層における入力画像のチャンネル数と出力画像のチャンネル数が同じである。深層畳み込み層における入力画像のチャンネル数と出力画像のチャンネル数が同じであるため、深層畳み込み層における入力画像に対してチャンネルを分けて量子化することで、量子化プロセスの精度を向上させ、演算結果の正確性と確実性を保証することができる。
【0011】
図面を参照して、例示的な実施例の以下の詳細な説明によって、本開示の他の特徴および態様が明らかになるであろう。
本明細書に含まれ、本明細書の一部を構成する図面は、本明細書と共に、本開示の例示的な実施例、特徴、および態様を示し、本開示の原理を説明するために用いられる。
【図面の簡単な説明】
【0012】
【
図1】本開示の実施例によるデータ量子化処理方法のプロセッサを示す概略図である。
【
図2】本開示の実施例によるデータ量子化処理方法を示すフローチャートである。
【
図3】本開示の実施例による対称的な固定小数点数表現を示す概略図である。
【
図4】本開示の実施例によるオフセット量が導入された固定小数点数表現を示す概略図である。
【
図5】本開示の実施例によるデータ量子化処理装置の構成を示すブロック図である。
【
図6】本開示の実施例によるPCBボードを示す構造ブロック図である。
【発明を実施するための形態】
【0013】
以下、本開示の実施例における図面を参照しながら、本開示の実施例における技術的解決手段を明確且つ完全に説明する。明らかに、説明された実施例は、本開示の実施例の一部に過ぎず、全てではない。本開示の実施例に基づいて、当業者が創造的な労働をしない前提で得られる他の全ての実施例は、全て本開示の保護範囲に属するものとする。
【0014】
本開示の特許請求の範囲や明細書および図面における「第1の」、「第2の」、および「第3の」などの用語は、特定の順序を説明するのではなく、異なる対象を区別するためのものであることを理解されたい。本開示の明細書および特許請求の範囲で使用される「備える」および「含む」という用語は、記載された特徴、全体、ステップ、操作、要素および/またはコンポーネントの存在を指示するが、1つまたは複数の他の特徴、全体、ステップ、操作、要素、コンポーネントおよび/またはそれらのコンビネーションの存在または追加を除外しない。
【0015】
本開示の明細書で使用される用語は、特定の実施例を説明することのみを目のとしており、本開示を限定することを意図するものではないことも理解されたい。本開示の明細書および特許請求の範囲に使用されるように、コンテキストで明白に他の意味が示されない限り、単数形の「一」、「1つ」および「該」は複数形を含むことを意味する。本開示の明細書および特許請求の範囲で使用される「および/または」という用語は、関連してリストされた1つまたは複数の項目の任意の組み合わせおよびすべての可能な組み合わせを指し、これらの組み合わせを含むことをさらに理解されたい。
【0016】
本明細書および特許請求の範囲に使用されるように、「すれば」という用語は、コンテキストによって「・・・場合」、「したら」、「確定することに応じて」、または「検出したことに応じて」と解釈されてもよい。同様に、「確定すれば」または「[説明される条件またはイベント]を検出すれば」という短句は、コンテキストによって「確定したら」、「確定することに応じて」、「[説明される条件またはイベント]を検出したら」、または「[説明される条件またはイベント]を検出したことに応じて」を意味すると解釈されてもよい。
【0017】
本開示の実施例によるデータ量子化処理方法は、プロセッサに適用することができ、該プロセッサは、例えば、中央処理装置(Central Processing Unit、CPU)などの汎用プロセッサであってよく、人工知能演算を実行するために用いられる人工知能プロセッサ(IPU)であってもよい。人工知能演算は、機械学習演算、類脳演算などを含でんよく、ここで、機械学習演算は、ニューラルネットワーク演算、k-means演算、サポートベクトルマシン演算などを含む。この人工知能プロセッサは、例えばグラフィックス処理ユニット(Graphics Processing Unit、GPU)、ニューラルネットワーク処理ユニット(Neural-Network Processing Unit、NPU)、デジタル信号処理ユニット(Digital Signal Process、DSP)、フィールドプログラマブルゲートアレイ(Field-Programmable Gate Array、FPGA)チップのうちの1つまたは組み合わせが含まれる。本開示はプロセッサの具体的なタイプを限定しない。
【0018】
1つの可能な実施形態では、本開示で言及されたプロセッサは、複数の処理ユニットを含んでもよく、各処理ユニットは、割り当てられた様々なタスク、例えば、畳み込み演算タスク、プーリングタスクまたは完全接続タスクなどを独立して実行できる。本開示は処理ユニットおよび処理ユニットによって実行されるタスクを限定しない。
【0019】
図1は、本開示の実施例によるデータ量子化処理方法のプロセッサを示す概略図である。
図1に示すように、プロセッサ100は、複数の処理ユニット101および記憶ユニット102を含み、複数の処理ユニット101は、命令シーケンスを実行するために用いられ、記憶ユニット102は、データを記憶するために用いられ、ランダムアクセスメモリ(Random Access Memory、RAM)とレジスタファイルを含んでよい。プロセッサ100における複数の処理ユニット101は、記憶空間の一部を共有するだけでなく、例えば、RAM記憶空間の一部とレジスタファイルを共有するだけでなく、各自の記憶空間を有することもできる。
【0020】
図2は、本開示の実施例によるデータ量子化処理方法を示すフローチャートである。この方法は
図1に示すプロセッサ100に適用することができる。
図2に示すように、該方法は、以下のステップS21~S24を含む。
【0021】
ステップS21において、深層畳み込み層における入力画像のチャンネル数に基づいて、入力画像の各チャンネルに対応する量子化すべきデータを確定する。
【0022】
ステップS22において、各チャンネルに対応する量子化すべきデータに基づいて、各チャンネルに対応する量子化すべきデータの統計結果をそれぞれ確定する。
【0023】
ステップS23において、いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応する量子化パラメータを確定する。
【0024】
ステップS24において、各チャンネルに対応する量子化パラメータを利用して、各チャンネルに対応する量子化すべきデータをそれぞれ量子化し、入力画像の各チャンネルに対応する量子化後のデータを得る。
【0025】
ここでは、深層畳み込み層における入力画像のチャンネル数と出力画像のチャンネル数が同じである。深層畳み込みネットワークはdepthwiseニューラルネットワークであってもよい。
【0026】
実際の応用では、深層畳み込み層における入力画像のチャンネル数と出力画像のチャンネル数が同じであり、即ち、入力画像は深層畳み込みを行う時、各チャンネルが互いに干渉しないため、深層畳み込みの前に入力画像に対してデータ量子化処理を行う時、量子化プロセスの精度を向上させるために、入力画像のチャンネル数に基づいて、入力画像の各チャンネルに対応する量子化すべきデータを確定でき、さらに入力画像の各チャンネルに対応する量子化すべきデータに対してそれぞれデータ量子化処理を行うことができる。ここでは、量子化すべきデータは高精度のデータフォーマットで表現されるデータであり、量子化後のデータは低精度のデータフォーマットで表現されるデータであり、量子化すべきデータのデータフォーマットの精度は、量子化後のデータのデータフォーマットの精度より高い。
【0027】
1つの可能な実施形態では、各チャンネルに対応する量子化すべきデータに基づいて、それぞれ各チャンネルに対応する量子化すべきデータの統計結果を確定することは、いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータにおける絶対値の最大値を確定することと、該チャンネルに対応する量子化すべきデータにおける絶対値の最大値を該チャンネルに対応する量子化すべきデータの統計結果として確定することとを含む。
【0028】
例えば、入力画像のチャンネル数が3であり、それぞれ3つのチャンネルの各チャンネルに対応する量子化すべきデータにおける絶対値の最大値を確定し、さらに各チャンネルに対応する量子化すべきデータにおける絶対値の最大値を該チャンネルに対応する量子化すべきデータの統計結果として確定する。
【0029】
1つの可能な実施形態では、いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータにおける絶対値の最大値を確定することは、いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの最大値と最小値を確定することと、該チャンネルに対応する量子化すべきデータの最大値と最小値に基づいて、該チャンネルに対応する量子化すべきデータの絶対値の最大値を確定することとを含む。
【0030】
例えば、入力画像の各チャンネルに対して、各チャンネルに対応する量子化すべきデータの最大値と最小値をそれぞれ確定し、各チャンネルに対応する量子化すべきデータの最大値と最小値に対して、それぞれ絶対値を取る。入力画像のいずれか一つのチャンネルに対して、量子化すべきデータの最大値の絶対値と最小値の絶対値のうち大きい方を、該チャンネルに対応する量子化すべきデータの絶対値の最大値として確定する。
【0031】
1つの可能な実施形態では、各チャンネルに対応する量子化すべきデータに基づいて、各チャンネルに対応する量子化すべきデータの統計結果をそれぞれ確定することは、いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの最大値と最小値を確定することと、量子化すべきデータの最大値と最小値の間の距離の2分の1を、該チャンネルに対応する量子化すべきデータの統計結果として確定することとを含む。
【0032】
例えば、入力画像の各チャンネルに対して、各チャンネルに対応する量子化すべきデータの最大値と最小値をそれぞれ確定する。入力画像のいずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの最大値と最小値の間の距離の2分の1を計算し、計算結果を該チャンネルに対応する量子化すべきデータの統計結果として確定する。
【0033】
入力画像の各チャンネルに対応する量子化すべきデータの統計結果を確定した後、各チャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応する量子化パラメータを確定する。
【0034】
一つの可能な実施形態では、量子化パラメータは点位置パラメータを含み、いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応する量子化パラメータを確定することは、いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果と該チャンネルに対応するデータビット幅に基づいて、該チャンネルに対応する点位置パラメータを確定することを含む。
【0035】
例えば、入力画像は第1のチャンネルと第2のチャンネルを含み、第1のチャンネルに対応する量子化すべきデータの統計結果と第1のチャンネルに対応するデータビット幅に基づいて、第1のチャンネルに対応する点位置パラメータを確定し、第2のチャンネルに対応する量子化すべきデータの統計結果と第2のチャンネルに対応するデータビット幅に基づいて、第2のチャンネルに対応する点位置パラメータを確定する。
【0036】
入力画像の各チャンネルに対して、それぞれ各チャンネルに対応する点位置パラメータに基づいて、それぞれ各チャンネルに対応する量子化すべきデータに対してデータ量子化処理を行う。例えば、入力画像は第1のチャンネルと第2のチャンネルを含み、第1のチャンネルに対応する点位置パラメータに基づいて、第1のチャンネルに対応する量子化すべきデータに対してデータ量子化処理を行って、第2のチャンネルに対応する点位置パラメータに基づいて、第2のチャンネルに対応する量子化すべきデータに対してデータ量子化処理を行う。
【0037】
一例において、入力画像のいずれか一つのチャンネルに対して、該チャンネルに対応する点位置パラメータsに基づいて、数1を利用して該チャンネルに対応する量子化すべきデータに対してデータ量子化処理を行う:
【数1】
【0038】
ここでは、sは該チャンネルに対応する点位置パラメータ、Ixはデータxの量子化後のnビットのバイナリ表現値、Fxはデータxの量子化前の浮動小数点値、round(・)は四捨五入の丸め演算である。ここでは、round(・)という丸め演算に限定されるものではなく、他の丸め演算方法も使用できることに注意されたい。例えば、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算で、数1のround(・)との丸め演算を置き換えてもよい。この場合、nビットの固定小数点数で表せる浮動小数点数の最大値Aは2s(2n-1-1)であり、すると、nビットの固定小数点数で表せる該チャンネルに対応する量子化すべきデータの数値フィールドの中の最大値Aは2s(2n-1-1)であり、nビットの固定小数点数で表せる該チャンネルに対応する量子化すべきデータの数値フィールドの中の最小値は-2s(2n-1-1)である。数1からわかるように、入力画像のいずれか一つのチャンネルに対して、該チャンネルに対応する点位置パラメータsに基づいて、該チャンネルに対応する量子化すべきデータに対してデータ量子化処理を行う時、量子化間隔は2sである。
【0039】
該チャンネルに対応する量子化すべきデータの数値フィールドにおけるすべての浮動小数点数の絶対値の最大値をZとすると、AはZを含み、かつZはA/2より大きい必要があり、また、次の数2に制約される。
【数2】
【0040】
一つの可能な実施形態では、量子化パラメータはスケール係数をさらに含み、いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応する量子化パラメータを確定することは、いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果、該チャンネルに対応する点位置パラメータ、および該チャンネルに対応するデータビット幅に基づいて、該チャンネルに対応するスケール係数を確定することを含む。
【0041】
例えば、入力画像は第1のチャンネルと第2のチャンネルを含み、第1のチャンネルに対応する量子化すべきデータの統計結果、第1のチャンネルに対応する点位置パラメータ、および第1のチャンネルに対応するデータビット幅に基づいて、第1のチャンネルに対応するスケール係数を確定し、第2のチャンネルに対応する量子化すべきデータの統計結果、第2のチャンネルに対応する点位置パラメータ、および第2のチャンネルに対応するデータビット幅に基づいて、第2のチャンネルに対応するスケール係数を確定する。
【0042】
入力画像の各チャンネルに対して、それぞれ各チャンネルに対応する点位置パラメータに基づいて、それぞれ各チャンネルに対応する量子化すべきデータに対してデータ量子化処理を行う。例えば、入力画像は第1のチャンネルと第2のチャンネルを含み、第1のチャンネルに対応するスケール係数に基づいて、第1のチャンネルに対応する量子化すべきデータに対してデータ量子化処理を行って、第2のチャンネルに対応するスケール係数に基づいて、第2のチャンネルに対応する量子化すべきデータに対してデータ量子化処理を行う。
【0043】
一例において、入力画像のいずれか一つのチャンネルに対して、該チャンネルに対応する量子化パラメータは第1の
スケール係数f
1である。該チャンネルに対応する第1の
スケール係数f
1に基づいて、下記数3を利用して該チャンネルに対応する量子化すべきデータに対してデータ量子化処理を行う:
【数3】
【0044】
ここでは、f1は該チャンネルに対応する第1のスケール係数、Ixはデータxの量子化後のnビットのバイナリ表現値、Fxはデータxの量子化前の浮動小数点値、round(・)は四捨五入の丸め演算である。ここでは、round(・)という丸め演算に限定されるものではなく、他の丸め演算方法も使用できることに注意されたい。例えば、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算で、数3のround(・)との丸め演算を置き換えてもよい。数3からわかるように、入力画像のいずれか一つのチャンネルに対して、該チャンネルに対応する第1のスケール係数に基づいて、該チャンネルに対応する量子化すべきデータに対してデータ量子化処理を行う時、量子化間隔はf1である。
【0045】
一例において、該チャンネルに対応する点位置パラメータsが既知の固定値であり、Tが2s=Tとの固定値であるとすると、nビットの固定小数点数で表せる浮動小数点数の最大値Aは、(2n-1-1)*Tである。この場合、最大値Aはデータビット幅nに依存する。該チャンネルに対応する量子化すべきデータの数値フィールドにおけるすべての数値の絶対値の最大値をZとすると、f1=Z/(2n-1-1)となり、Z=(2n-1-1)*f1である。nビットの固定小数点数で表せる該チャンネルに対応する量子化すべきデータの数値フィールドの中の最大値は、(2n-1-1)*f1であり、nビットの固定小数点数で表せる該チャンネルに対応する量子化すべきデータの数値フィールドの中の最小値は、-(2n-1-1)*f1である。
【0046】
一例において、例えば、エンジニアリング応用では、2s*f2を全体として該チャンネルに対応する第1のスケール係数f1として、ここで、f2は該チャンネルに対応する第2のスケール係数である。この場合、独立した点位置パラメータsは存在しないと見なすことができる。該チャンネルに対応する量子化すべきデータの数値フィールドにおけるすべての数値の絶対値の最大値をZとすると、f1=Z/(2n-1-1)となり、Z=(2n-1-1)*f1である。nビットの固定小数点数で表せる該チャンネルに対応する量子化すべきデータの数値フィールドの中の最大値は、(2n-1-1)*f1、nビットの固定小数点数で表せる量子化すべきデータの数値フィールドの中の最小値は、-(2n-1-1)*f1である。
【0047】
一例において、入力画像のいずれか一つのチャンネルに対して、該チャンネルに対応する量子化パラメータは、点位置パラメータsと第2の
スケール係数f
2を含む。該チャンネルに対応する点位置パラメータsと第2の
スケール係数f
2に基づいて、下記数4を利用して該チャンネルに対応する量子化すべきデータに対してデータ量子化処理を行う:
【数4】
【0048】
ここでは、sは該チャンネルに対応する点位置パラメータ、f2は該チャンネルに対応する第2のスケール係数、Ixはデータxの量子化後のnビットのバイナリ表現値、Fxはデータxの量子化前の浮動小数点値、round(・)は四捨五入の丸め演算である。ここでは、round(・)という丸め演算に限定されるものではなく、他の丸め演算方法も使用できることに注意されたい。例えば、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算で、数4のround(・)との丸め演算を置き換えてもよい。数4からわかるように、入力画像のいずれか一つのチャンネルに対して、該チャンネルに対応する点位置パラメータと第2のスケール係数に基づいて、該チャンネルに対応する量子化すべきデータに対してデータ量子化処理を行う時、量子化間隔は2s*f2である。
【0049】
該チャンネルに対応する量子化すべきデータの数値フィールドにおけるすべての数値の絶対値の最大値をZとする。この場合、数2によって、1≧Z/{2s*(2n-1-1)}>1/2が得られる。即ち1≧Z/A>1/2と、1≧f2>1/2である。f2=Z/{2s*(2n-1-1)}=Z/Aの場合、数2からわかるように、Zは損失なく正確に表現できる。f2=1の場合、数4と数1からわかるように、s=ceil[log2{Z/(2n-1-1)}]である。nビットの固定小数点数で表せる該チャンネルに対応する量子化すべきデータの数値フィールドの中の最大値は、(2n-1-1)*2s*f2、nビットの固定小数点数で表せる該チャンネルに対応する量子化すべきデータの数値フィールドの中の最小値は、-(2n-1-1)*2s*f2である。
【0050】
図3は、本開示の実施例による対称的な固定小数点数表現を示す概略図である。
図3に示すような入力画像のいずれか一つのチャンネルに対応する量子化すべきデータの数値フィールドは、「0」を対称中心として分布されている。Zは、該チャンネルに対応する量子化すべきデータの数値フィールドにおけるすべての浮動小数点数の絶対値の最大値である。
図2において、Aはnビットの固定小数点数で表すことができる浮動小数点数の最大値である。浮動小数点数Aから変換した固定小数点数は2
n-1-1である。オーバーフローを回避するには、AはZを含む必要がある。実際の演算では、ニューラルネットワーク演算プロセスにおける浮動小数点データは、ある確定区間の正規分布となる傾向にあるが、「0」を対称中心とする分布を必ずしも満たすとは限らない。このとき、固定小数点数で表現すると、オーバーフローが発生しやすくなる。この状況を改善するために、オフセット量が量子化パラメータに導入される。
図4は、本開示の実施例によるオフセット量が導入された固定小数点数表現を示す概略図である。
図4に示すように、入力画像のいずれか一つのチャンネルに対応する量子化すべきデータの数値フィールドは、「0」を対称中心として分布していない。Z
minは該チャンネルに対応する量子化すべきデータの数値フィールドにおけるすべての浮動小数点数の最小値であり、Z
maxは該チャンネルに対応する量子化すべきデータの数値フィールドにおけるすべての浮動小数点数の最大値である。PはZ
min~Z
maxの間の中心点であり、該チャンネルに対応する量子化すべきデータの数値フィールドを全体的にオフセットし、オフセット後の該チャンネルに対応する量子化すべきデータの数値フィールドが「0」を対称中心として分布するようにし、オフセット後の該チャンネルに対応する量子化すべきデータの数値フィールドにおける絶対値の最大値はZである。
図4からわかるように、オフセット量は「0」点から「P」点までの水平距離であり、この距離はオフセット量Oと呼ばれる。ここでは、O=(Z
min+Z
max)/2、Z=(Z
max-Z
min)/2である。
【0051】
一つの可能な実施形態では、量子化パラメータはオフセット量を含み、いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応する量子化パラメータを確定することは、いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応するオフセット量を確定することを含む。
【0052】
例えば、入力画像は第1のチャンネルと第2のチャンネルを含み、第1のチャンネルに対応する量子化すべきデータの統計結果に基づいて、第1のチャンネルに対応するオフセット量を確定し、第2のチャンネルに対応する量子化すべきデータの統計結果に基づいて、第2のチャンネルに対応するオフセット量を確定する。
【0053】
入力画像の各チャンネルに対して、それぞれ各チャンネルに対応するオフセット量に基づいて、各チャンネルに対応する量子化すべきデータに対してデータ量子化処理を行う。
【0054】
一例において、入力画像のいずれか一つのチャンネルに対して、該チャンネルに対応する量子化パラメータは、点位置パラメータsとオフセット量Oを含む。該チャンネルに対応する点位置パラメータsとオフセット量Oに基づいて、下記の数5を利用して該チャンネルに対応する量子化すべきデータに対してデータ量子化処理を行う:
【数5】
【0055】
ここでは、sは該チャンネルに対応する点位置パラメータ、Oは該チャンネルに対応するオフセット量、Ixはデータxの量子化後のnビットのバイナリ表現値、Fxはデータxの量子化前の浮動小数点値、round(・)は四捨五入の丸め演算である。ここでは、round(・)という丸め演算に限定されるものではなく、他の丸め演算方法も使用できることに注意されたい。たとえば、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算で、数5のround(・)との丸め演算を置き換えてもよい。この場合、nビットの固定小数点数で表せる浮動小数点数の最大値Aは、2s(2n-1-1)であり、次に、nビットの固定小数点数で表せる該チャンネルに対応する量子化すべきデータの数値フィールドの最大値は、2s(2n-1-1)+Oであり、nビットの固定小数点数で表せる該チャンネルに対応する量子化すべきデータの数値フィールドの最小値は、-2s(2n-1-1)+Oである。数5からわかるように、入力画像のいずれか一つのチャンネルに対して、該チャンネルに対応する点位置パラメータsとオフセット量Oに基づいて、該チャンネルに対応する量子化すべきデータに対してデータ量子化処理を行う時、量子化間隔は2sである。
【0056】
該チャンネルに対応する量子化すべきデータの数値フィールドにおけるすべての浮動小数点数の絶対値の最大値をZとすると、Z=(Zmax-Zmin)/2であり、AはZを含み、かつ、ZはA/2より大きい必要があり、数2からわかるように、log2{Z/(2n-1-1)}-1>s≧log2{Z/(2n-1-1)}であり、さらに、s=ceil[log2{Z/(2n-1-1)}]とA=2ceil[log
2
{Z/(2^(n-1)-1)}](2n-1-1)が得られる。
【0057】
一例において、入力画像のいずれか一つのチャンネルに対して、該チャンネルに対応する量子化パラメータは第1の
スケール係数f
1とオフセット量Oを含む。該チャンネルに対応する第1の
スケール係数f
1とオフセット量Oに基づいて、下記の数6を利用して、該チャンネルに対応する量子化すべきデータに対してデータ量子化処理を行う:
【数6】
【0058】
ここでは、f1は該チャンネルに対応する第1のスケール係数、Oは該チャンネルに対応するオフセット量、Ixはデータxの量子化後のnビットのバイナリ表現値、Fxはデータxの量子化前の浮動小数点値、round(・)は四捨五入の丸め演算である。ここでは、round(・)という丸め演算に限定されるものではなく、他の丸め演算方法も使用できることに注意されたい。たとえば、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算で、数6のround(・)との丸め演算を置き換えてもよい。
【0059】
一例において、該チャンネルに対応する点位置パラメータsが既知の固定値であり、2s=Tとし、かつ、Tを固定値とすると、nビットの固定小数点数で表せる浮動小数点数の最大値Aは、(2n-1-1)*Tである。この場合、最大値Aはデータビット幅nに依存する。該チャンネルに対応する量子化すべきデータの数値フィールドにおけるすべての数値の絶対値の最大値をZとすると、f1=Z/(2n-1-1)となり、Z=(2n-1-1)*f1である。nビットの固定小数点数で表せる該チャンネルに対応する量子化すべきデータの数値フィールドの最大値は(2n-1-1)*f1+O、nビットの固定小数点数で表せる該チャンネルに対応する量子化すべきデータの数値フィールドの最小値は、-(2n-1-1)*f1+Oである。
【0060】
一例において、例えば、エンジニアリング応用では、2s*f2を全体として該チャンネルに対応する第1のスケール係数をf1とし、ここで、f2は該チャンネルに対応する第2のスケール係数である。この場合、独立した点位置パラメータsは存在しないと見なすことができる。該チャンネルに対応する量子化すべきデータの数値フィールドにおけるすべての数値の絶対値の最大値をZとすると、f1=Z/(2n-1-1)となり、Z=(2n-1-1)*f1である。nビットの固定小数点数で表せる該チャンネルに対応する量子化すべきデータの数値フィールドの最大値は(2n-1-1)*f1+O、nビットの固定小数点数で表せる量子化すべきデータの数値フィールドの最小値は、-(2n-1-1)*f1+Oである。
【0061】
一例において、入力画像のいずれか一つのチャンネルに対して、該チャンネルに対応する量子化パラメータは点位置パラメータs、第1の
スケール係数f
1とオフセット量Oを含む。該チャンネルに対応する点位置パラメータs、第1の
スケール係数f
1とオフセット量Oに基づいて、下記の数7を利用して該チャンネルに対応する量子化すべきデータに対してデータ量子化処理を行う:
【数7】
【0062】
ここでは、sは該チャンネルに対応する点位置パラメータ、f1は該チャンネルに対応する第1のスケール係数、Oは該チャンネルに対応するオフセット量、Ixはデータxの量子化後のnビットのバイナリ表現値、Fxはデータxの量子化前の浮動小数点値、round(・)は四捨五入の丸め演算である。ここでは、round(・)という丸め演算に限定されるものではなく、他の丸め演算方法も使用できることに注意されたい。たとえば、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算で、数7のround(・)との丸め演算を置き換えてもよい。この場合、nビットの固定小数点数で表せる浮動小数点数の最大値Aは2s(2n-1-1)であり、数7からわかるように、入力画像のいずれか一つのチャンネルに対して、該チャンネルに対応する点位置パラメータs、第1のスケール係数f1と、オフセット量Oに基づいて、該チャンネルに対応する量子化すべきデータに対してデータ量子化処理を行う時、量子化間隔は2s*f2である。
【0063】
該チャンネルに対応する量子化すべきデータの数値フィールドにおけるすべての浮動小数点数の絶対値の最大値をZとする。この場合、数2からわかるように、1≧Z/{2s(2n-1-1)}>1/2であり、即ち、1≧Z/A>1/2と1≧f2>1/2である。f2=Z/{2s(2n-1-1)}=Z/Aの場合、数2からわかるように、Zは損失なく正確に表現できる。f2=1の場合、s=ceil[log2{(Zmax-Zmin)/(2(2n-1-1)}]となる。nビットの固定小数点数で表せる該チャンネルに対応する量子化すべきデータの数値フィールドの最大値は(2n-1-1)*2s*f2+O、nビットの固定小数点数で表せる該チャンネルに対応する量子化すべきデータの数値フィールドの最小値は、-(2n-1-1)*2s*f2+Oである。
【0064】
1つの可能な実施形態では、いずれか一つのチャンネルに対して、該チャンネルに対応するデータビット幅は予め設定された値である。
【0065】
数1~数7からわかるように、入力画像のいずれか一つのチャンネルに対して、該チャンネルに対応する点位置パラメータとスケール係数は、すべて該チャンネルに対応するデータビット幅に関連している。データビット幅が異なるため、点位置パラメータとスケーリング係数が異なり、それによって量子化の精度に影響する。量子化とは、従来32ビットまたは64ビットで表していた高精度の数値を、メモリスペースの占有が少ない固定小数点数に変換するプロセスであり、高精度の数値を固定小数点数に変換するプロセスは、精度の面である程度の損失を引き起こす。トレーニングまたは微調整のプロセスでは、一定の反復の回数範囲内で、同じデータビット幅を使用して量子化することによるニューラルネットワーク演算の全体的な精度への影響が大きくない。一定の回数の反復を超えた後、同じデータビット幅の量子化の使用は、トレーニングまたは微調整の精度要件を満たすことができない。これは、トレーニングまたは微調整プロセスに伴って、データビット幅nを調整することを必要とする。簡単にすると、該チャンネルに対応するデータビット幅nを手動で予め設定された値に設定してもよい。異なる反復の回数範囲で、予め設定された該チャンネルに対応するデータビット幅nを呼び出す。
【0066】
1つの可能な実施形態では、前記方法は、いずれか一つのチャンネルに対して、該チャンネルに対応するデータビット幅の量子化誤差に基づいて、該チャンネルに対応するデータビット幅を調整して、調整後のデータビット幅を使用して、該チャンネルに対応する量子化パラメータを確定することをさらに含む。ここで、量子化誤差は、該チャンネルに対応する量子化後のデータと該チャンネルに対応する量子化すべきデータに基づいて確定されるものである。
【0067】
1つの可能な実施形態では、該チャンネルに対応するデータビット幅の量子化誤差に基づいて、該チャンネルに対応するデータビット幅を調整することは、量子化誤差と閾値を比較し、比較結果に基づいて、該チャンネルに対応するデータビット幅を調整することを含む。
【0068】
1つの可能な実施形態では、閾値は第1の閾値と第2の閾値を含み、量子化誤差を閾値と比較し、比較結果に基づいて、該チャンネルに対応するデータビット幅を調整することは、量子化誤差が第1の閾値以上である場合、該チャンネルに対応するデータビット幅を増加することと、量子化誤差が第2の閾値以下である場合、該チャンネルに対応するデータビット幅を減少することと、量子化誤差が第1の閾値と第2の閾値との間にある場合、該チャンネルに対応するデータビット幅を不変に保つこととを含む。この実施形態において、第1の閾値と第2の閾値は、経験値であってもよいし、可変なハイパーパラメータであってもよい。従来のハイパーパラメータ最適化方法はすべて、第1の閾値と第2の閾値に適しており、ハイパーパラメータの最適化案はここでは繰り返されない。
【0069】
なお、入力画像のいずれか一つのチャンネルに対して、該チャンネルに対応するデータビット幅は、固定ビットのステップ長さによって調整してもよく、または、量子化誤差と誤差閾値の差によって、可変な調整ステップ長さに応じて、該チャンネルに対応するデータビット幅を調整し、最終的に深層畳み込みネットワーク演算プロセスの実際の必要に応じて、入力画像のいずれか一つのチャンネルに対応するデータビット幅をより長くまたはより短く調整してもよく、これにより、精度の許容範囲内で固定小数点の演算速度を大幅に向上させることができ、人工知能プロセッサチップのリソース使用率を高める。
【0070】
深層畳み込み層における入力画像のチャンネル数に基づいて、入力画像の各チャンネルに対応する量子化すべきデータを確定し、各チャンネルに対応する量子化すべきデータに基づいて、それぞれ各チャンネルに対応する量子化すべきデータの統計結果を確定し、いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応する量子化パラメータを確定し、各チャンネルに対応する量子化パラメータを利用して、それぞれ各チャンネルに対応する量子化すべきデータを量子化し、前記入力画像の各チャンネルに対応する量子化後のデータを得る。ここでは、深層畳み込み層における入力画像のチャンネル数と出力画像のチャンネル数が同じである。深層畳み込み層における入力画像のチャンネル数と出力画像のチャンネル数が同じであるため、深層畳み込み層における入力画像に対してチャンネルを分けて量子化することで、量子化プロセスの精度を向上させ、演算結果の正確性と確実性を保証することができる。
【0071】
なお、前述した各方法の実施例については、説明を簡便にするために、一連の動作の組み合わせとして記載したが、当業者であれば分かるように、本開示が説明された動作順序に限定されるものではなく、本開示に従って、いくつかのステップが他の順序で、または同時に行われてもよい。また、本明細書に説明された実施例がいずれも任意選択可能な実施例であり、係る動作およびモジュールが必ずしも本開示に必要なものではないことは、当業者に理解されたい。
【0072】
さらに説明しなければならないのは、
図2のフローチャートにおける各ステップは、矢印の指示に従って順次表示されているが、これらのステップは必ずしも矢印の順に逐次実行されるわけではない。ここで明示的に指定されている場合を除き、これらのステップの実行には厳しい順序制限はなく、これらのステップは、別の順序で実行してもよい。また、
図2における少なくとも一部のステップは、複数のサブステップまたは複数のサブ段階を含むことができ、これらのサブステップまたは段階は、必ずしも同じ時点で実行されるわけではなく、異なる時点で実行されてもよく、これらのサブステップまたは段階の実行順序は、必ずしも順次実行されるわけではなく、代わりに、他のステップまたは他のステップのサブステップまたは段階の少なくとも一部と順番に、または交互に実行することができる。
【0073】
図5は、本開示の実施例によるデータ量子化処理装置の構成を示すブロック図である。
図5に示すように、装置500は、
深層畳み込み層における入力画像のチャンネル数に基づいて、入力画像の各チャンネルに対応する量子化すべきデータを確定するための第1の確定モジュール501と、
各チャンネルに対応する量子化すべきデータに基づいて、それぞれ各チャンネルに対応する量子化すべきデータの統計結果を確定するための第2の確定モジュール502と、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応する量子化パラメータを確定するための第3の確定モジュール503と、
各チャンネルに対応する量子化パラメータを利用して、それぞれ各チャンネルに対応する量子化すべきデータを量子化し、入力画像の各チャンネルに対応する量子化後のデータを得るための量子化モジュール504と、を含む。
【0074】
ここでは、深層畳み込み層における入力画像のチャンネル数と出力画像のチャンネル数が同じである。
【0075】
一つの可能な実施形態では、量子化パラメータは点位置パラメータを含み、
第3の確定モジュール503は、具体的に、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果と該チャンネルに対応するデータビット幅に基づいて、該チャンネルに対応する点位置パラメータを確定するために用いられる。
【0076】
一つの可能な実施形態では、量子化パラメータはスケール係数をさらに含み、
第3の確定モジュール503は、具体的に、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果、該チャンネルに対応する点位置パラメータ、および該チャンネルに対応するデータビット幅に基づいて、該チャンネルに対応するスケール係数を確定するために用いられる。
【0077】
一つの可能な実施形態では、量子化パラメータはオフセット量を含み、
第3の確定モジュール503は、具体的に、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応するオフセット量を確定するために用いられる。
【0078】
一つの可能な実施形態では、第2の確定モジュール502は、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータにおける絶対値の最大値を確定するための第1の確定サブモジュールと、
該チャンネルに対応する量子化すべきデータにおける絶対値の最大値を該チャンネルに対応する量子化すべきデータの統計結果として確定するためのる第2の確定サブモジュールを含む。
【0079】
一つの可能な実施形態では、第1の確定サブモジュールは、具体的に、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの最大値と最小値を確定するために用いられ、
該チャンネルに対応する量子化すべきデータの最大値と最小値に基づいて、該チャンネルに対応する量子化すべきデータの絶対値の最大値を確定するために用いられる。
【0080】
1つの可能な実施形態では、いずれか一つのチャンネルに対して、該チャンネルに対応するデータビット幅は予め設定された値である。
【0081】
1つの可能な実施形態では、装置500は、
いずれか一つのチャンネルに対して、該チャンネルに対応するデータビット幅の量子化誤差に基づいて、該チャンネルに対応するデータビット幅を調整して、調整後のデータビット幅を使用して、該チャンネルに対応する量子化パラメータを確定するためのデータビット幅調整モジュールを含み、ここで、量子化誤差は、該チャンネルに対応する量子化後のデータと該チャンネルに対応する量子化すべきデータに基づいて確定されるものである。
【0082】
一つの可能な実施形態では、データビット幅調整モジュールは、具体的に、
量子化誤差と閾値を比較し、比較結果に基づいて、該チャンネルに対応するデータビット幅を調整するために用いられる。
【0083】
データビット幅調整モジュールにおいて、閾値は第1の閾値と第2の閾値を含み、
データビット幅調整モジュールは、具体的に、
量子化誤差が第1の閾値以上である場合、該チャンネルに対応するデータビット幅を増加し、
量子化誤差が第2の閾値以下である場合、該チャンネルに対応するデータビット幅を減少し、
量子化誤差が第1の閾値と第2の閾値との間にある場合、該チャンネルに対応するデータビット幅を不変に保つために用いられる。
【0084】
本開示が提供するデータ量子化処理装置500は、
図2に示される方法の実施例における各ステップを実現し、同じ技術的効果を実現することができ、重複を避けるため、ここで繰り返して説明しない。
【0085】
なお、上記した装置の実施例は概略的なものに過ぎず、本開示の装置は他の方法で実施することもできることを理解されたい。例えば、上記した実施例に記載のユニット/モジュールの分割は、単に論理的機能の分割に過ぎず、実際に実現される場合には別の分割方式が可能である。例えば、複数のユニット、モジュール、またはコンポーネントが組み合わされてもよく、または別のシステムに統合されてもよく、またはいくつかの特徴が無視されてもよく、または実行されなくてもよい。
【0086】
また、特に明記しない限り、本開示の各実施例における各機能ユニット/モジュールは、1つのユニット/モジュールに一体化されていてもよいし、各ユニット/モジュールが個別に物理的に存在していてもよく、2つ以上のユニット/モジュールが一体化されていてもよい。上記一体化されたユニット/モジュールはハードウェアの形態で実現することができ、ソフトウェアプログラムモジュールの形態で実現することもできる。
【0087】
前記一体化されたユニット/モジュールがハードウェアの形態で実装される場合、このハードウェアは、デジタル回路、アナログ回路などであってもよい。ハードウェア構造の物理的実装は、トランジスタ、メモリスタなどを含むが、これらに限定されない。特に明記しない限り、前記人工知能プロセッサは、任意の適切なハードウェアプロセッサであってもよい。例えば、CPU、GPU、FPGA、DSPとASICなどである。特に明記しない限り、前記記憶ユニットは、任意の適切な磁気記憶媒体または磁気光学記憶媒体であってもよい。例えば、抵抗可変メモリRRAM(Resistive Random Access Memory)、ダイナミックランダムアクセスメモリDRAM(Dynamic Random Access Memory)、スタティックランダムアクセスメモリSRAM(Static Random Access Memory)、増強動的ランダムアクセスメモリEDRAM(Enhanced Dynamic Random Access Memory)、高帯域メモリHBM(High-Bandwidth Memory)、ハイブリッドメモリキューブHMC(Hybrid Memory Cube)などである。
【0088】
前記一体化されたユニット/モジュールは、ソフトウェアプログラムモジュールの形態で実装され、独立した製品として販売または使用される場合、コンピュータ可読メモリに記憶されてもよい。このような理解に基づいて、本開示の技術の解決手段は、本質的に、または、従来技術に寄与する部分またはこの技術の解決手段の全てまたは一部は、ソフトウェア製品の形態で具現化されてよく、このコンピュータソフトウェア製品は、メモリに記憶されており、コンピュータ機器(パーソナルコンピュータ、サーバ、またはネットワーク機器などであってよい)に本開示の各実施例に記載の方法の全部または一部のステップを実行させるためのいくつかの命令を含む。前述したメモリは、USBディスク、読み取り専用メモリ(ROM、Read-Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、リムーバブルハードディスク、磁気ディスクまたは光ディスクなどのプログラムコードを記憶可能な様々な媒体を含む。
【0089】
一つの可能な実施形態では、上記のデータ量子化処理装置を含む人工知能チップがさらに開示される。
【0090】
一つの可能な実施形態では、記憶デバイス、インターフェース装置、制御デバイス、および上記の人工知能チップを備えるPCBボードがさらに開示される。ここでは、人工知能チップは、記憶デバイス、制御デバイス、およびインターフェース装置にそれぞれ接続され、記憶デバイスは、データを記憶するためのものであり、インターフェース装置は、人工知能チップと外部機器との間のデータ伝送を実現するためのものであり、制御デバイスは、人工知能チップの状態を監視するためのものである。
【0091】
図6は、本開示の実施例によるPCBボードの構成を示すブロック図である。
図6に示すように、PCBボードは、上記のチップ389に加えて、他の構成部品を含んでもよいが、この構成部品は、記憶デバイス390、インターフェース装置391と制御デバイス392を含むがこれらに限定されない、
前記記憶デバイス390は、バスを介して前記人工知能チップに接続され、データの記憶に利用される。前記記憶デバイスは、複数組の記憶ユニット393を含んでもよい。各組の前記記憶ユニットは、バスを介して前記人工知能チップに接続される。なお、各組の前記メモリユニットは、DDR SDRAM(英語、Double Data Rate SDRAM、ダブルデータレート同期ダイナミックランダムアクセスメモリ)であってもよいことが理解されるであろう。
【0092】
DDRは、クロック周波数を上げることなくSDRAMの速度を倍に上げることができる。DDRは、クロックパルスの立ち上がりエッジおよび立ち下がりエッジでデータを読み出すことを可能にする。DDRのスピードは、標準SDRAMの2倍である。一実施例において、前記記憶デバイスは、4組の前記記憶ユニットを含むことができる。前記メモリユニットの各組は複数のDDR4粒子(チップ)を含むことができる。一実施例において、前記人工知能チップは、内部に4つの72ビットDDR4コントローラを含むことができ、前記72ビットDDR4コントローラのうち64ビットはデータを伝送するために用いられ、8ビットはECCチェックに用いられる。各組の前記メモリユニットにDDR4-3200が使用される場合、データ伝送の理論帯域幅は25600MB/sに達することが理解されるであろう。
【0093】
一実施例において、前記メモリユニットの各組は、並列に設置された複数のダブルデータレート同期ダイナミックランダムアクセスメモリを含む。DDRは、1クロックサイクル内で2回データを送信することができる。前記チップにはDDRを制御するコントローラが設けられ、前記メモリユニット毎のデータ伝送とデータ記憶の制御に用いられる。
【0094】
前記インターフェース装置は、前記人工知能チップに電気的に接続される。前記インターフェース装置は、前記人工知能チップと外部装置(例えば、サーバまたはコンピュータ)との間のデータ伝送を実現するためのものである。例えば、一実施例において、前記インターフェース装置は、標準PCIEインターフェースであってもよい。例えば、処理すべきデータは、標準PCIEインターフェースを介してサーバによって前記チップに伝送され、データ転送を可能にする。好ましくは、理論帯域幅は、PCIE 3.0 X 16インターフェースによる伝送の場合、16000MB/sに達することができる。別の実施例において、前記インターフェース装置は、他のインターフェースであってもよく、本開示は、上記の他のインターフェースの具体的な表現形態を限定するものではなく、前記インターフェースユニットは、中継機能を実現することができればよい。さらに、前記人工知能チップの計算結果は、依然として前記インターフェース装置によって外部機器(例えば、サーバ)に伝送される。
【0095】
前記制御デバイスは、前記人工知能チップに電気的に接続される。前記制御デバイスは、前記人工知能チップの状態を監視するためのものである。具体的には、前記人工知能チップおよび前記制御デバイスは、SPIインターフェースを介して電気的に接続することができる。前記制御デバイスは、マイクロコントローラ(Micro Controller Unit、MCU)を含むことができる。例えば、前記人工知能チップは、複数の処理チップ、複数の処理コア、または複数の処理回路を含むことができ、複数の負荷を駆動することができる。したがって、前記人工知能チップは、多負荷および軽負荷などの異なる動作状態にあってもよい。前記制御デバイスによって前記人工知能チップにおける複数の処理チップ、複数の処理コアまたは複数の処理回路の動作状態の調節を実現することができる。
【0096】
1つの可能な実施形態では、上記の人工知能チップを含む電子機器が開示される。電子機器は、データ処理装置、ロボット、コンピュータ、プリンタ、スキャナ、タブレットコンピュータ、スマート端末、携帯電話、ドライブレコーダ、ナビゲータ、センサ、カメラランズ、サーバ、クラウドサーバ、カメラ、ビデオカメラ、プロジェクタ、腕時計、ヘッドホン、モバイル記憶装置、ウェアラブルデバイス、乗り物、家電機器、および/または医療機器を含む。前記乗り物は、飛行機、船および/または車両を含み、前記家電製品は、テレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスレンジ、レンジフードを含み、前記医療機器は、核磁気共鳴装置、Bモード超音波機器および/または心電計を含む。
【0097】
本開示の実施例は、プロセッサによって実行されると上記の方法を実現するコンピュータプログラム命令が記憶されたコンピュータ可読記憶媒体をさらに提供する。コンピュータ可読記憶媒体は不揮発性コンピュータ可読記憶媒体であってもよい。
【0098】
本開示の実施例は、プロセッサと、プロセッサの実行可能な命令を記憶するために用いられるメモリとを含む電子機器をさらに提供し、プロセッサは、上記の方法を実行するように、前記メモリに記憶された命令を呼び出すように構成される。
【0099】
電子機器は、端末、サーバまたは他の形態の機器として提供することができる。
【0100】
上記実施例では、各実施例については、それぞれ偏りがあって説明したが、ある実施例では詳述されない部分は、他の実施例の関連説明を参照することができる。上記実施例における技術的特徴は任意に組み合わせることができ、説明の簡潔さのため、上記実施例における各技術的特徴のすべての可能な組み合わせを説明していないが、これらの技術的特徴の組み合わせに矛盾がない限り、いずれも本明細書に記載された範囲に属すると考えられるべきである。
【0101】
以下の項目によって前記内容をよりよく理解することができる。
【0102】
項目A1では、データ量子化処理方法であって、
深層畳み込み層における入力画像のチャンネル数に基づいて、前記入力画像の各チャンネルに対応する量子化すべきデータを確定することと、
各チャンネルに対応する量子化すべきデータに基づいて、それぞれ各チャンネルに対応する量子化すべきデータの統計結果を確定することと、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応する量子化パラメータを確定することと、
各チャンネルに対応する量子化パラメータを利用して、それぞれ各チャンネルに対応する量子化すべきデータを量子化し、前記入力画像の各チャンネルに対応する量子化後のデータを得ることと、を含み、
ここで、前記深層畳み込み層における前記入力画像のチャンネル数と出力画像のチャンネル数が同じである。
【0103】
項目A2では、項目A1に記載の方法において、前記量子化パラメータは点位置パラメータを含み、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応する量子化パラメータを確定することは、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果と該チャンネルに対応するデータビット幅に基づいて、該チャンネルに対応する点位置パラメータを確定することを含む。
【0104】
項目A3では、A2に記載の方法において、前記量子化パラメータはスケール係数をさらに含み、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応する量子化パラメータを確定することは、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果、該チャンネルに対応する点位置パラメータ、および該チャンネルに対応するデータビット幅に基づいて、該チャンネルに対応するスケール係数を確定することを含む。
【0105】
項目A4では、項目A1に記載の方法において、前記量子化パラメータはオフセット量を含み、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応する量子化パラメータを確定することは、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応するオフセット量を確定することを含む。
【0106】
項目A5では、項目A1~A4に記載の方法において、各チャンネルに対応する量子化すべきデータに基づいて、それぞれ各チャンネルに対応する量子化すべきデータの統計結果を確定することは、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータにおける絶対値の最大値を確定することと、
該チャンネルに対応する量子化すべきデータにおける絶対値の最大値を該チャンネルに対応する量子化すべきデータの統計結果として確定することとを含む。
【0107】
項目A6では、項目A5に記載の方法において、いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータにおける絶対値の最大値を確定することは、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの最大値と最小値を確定することと、
該チャンネルに対応する量子化すべきデータの最大値と最小値に基づいて、該チャンネルに対応する量子化すべきデータの絶対値の最大値を確定することとを含む。
【0108】
項目A7では、項目A2またはA3に記載の方法において、いずれか一つのチャンネルに対して、該チャンネルに対応するデータビット幅は予め設定された値である。
【0109】
項目A8では、項目A2またはA3に記載の方法において、前記方法は、
いずれか一つのチャンネルに対して、該チャンネルに対応するデータビット幅の量子化誤差に基づいて、該チャンネルに対応するデータビット幅を調整し、調整後のデータビット幅を使用して、該チャンネルに対応する量子化パラメータを確定することをさらに含み、ここでは、前記量子化誤差は、該チャンネルに対応する量子化後のデータと該チャンネルに対応する量子化すべきデータに基づいて確定されるものである。
【0110】
項目A9では、項目A8に記載の方法において、該チャンネルに対応するデータビット幅の量子化誤差に基づいて、該チャンネルに対応するデータビット幅を調整することは、
前記量子化誤差と閾値を比較し、比較結果に基づいて、該チャンネルに対応するデータビット幅を調整することを含む。
【0111】
項目A10では、項目A9に記載の方法において、前記閾値は第1の閾値と第2の閾値を含み、
前記量子化誤差と閾値を比較し、比較結果に基づいて、該チャンネルに対応するデータビット幅を調整することは、
前記量子化誤差が前記第1の閾値以上である場合、該チャンネルに対応するデータビット幅を増加することと、
前記量子化誤差が前記第2の閾値以下である場合、該チャンネルに対応するデータビット幅を減少することと、
前記量子化誤差が前記第1の閾値と前記第2の閾値との間にある場合、該チャンネルに対応するデータビット幅は不変に保つこととを含む。
【0112】
項目A11では、データ量子化処理装置であって、
深層畳み込み層における入力画像のチャンネル数に基づいて、前記入力画像の各チャンネルに対応する量子化すべきデータを確定するための第1の確定モジュールと、
各チャンネルに対応する量子化すべきデータに基づいて、それぞれ各チャンネルに対応する量子化すべきデータの統計結果を確定するための第2の確定モジュールと、
いずれか一つのチャンネルに対して、該チャンネルに対応する量子化すべきデータの統計結果に基づいて、該チャンネルに対応する量子化パラメータを確定するための第3の確定モジュールと、
各チャンネルに対応する量子化パラメータを利用して、それぞれ各チャンネルに対応する量子化すべきデータを量子化し、前記入力画像の各チャンネルに対応する量子化後のデータを得るための量子化モジュールと、を含み、
ここで、前記深層畳み込み層における前記入力画像のチャンネル数と出力画像のチャンネル数が同じである。
【0113】
項目A12では、人工知能チップであって、項目A11に記載のデータ量子化処理装置を含む。
【0114】
項目A13では、電子機器であって、項目A12に記載の人工知能チップを含む、ことを特徴とする。
【0115】
項目A14では、電子機器であって、
プロセッサと、プロセッサの実行可能な命令を記憶するためのメモリとを含み、
ここでは、前記プロセッサは、項目A1~A10のいずれか一項に記載の方法を実行するように、前記メモリに記憶された命令を呼び出すように構成される。
【0116】
項目A15では、コンピュータプログラム命令が記憶されたコンピュータ可読記憶媒体であって、前記コンピュータプログラム命令がプロセッサによって実行されると、項目A1~A10のいずれか一項に記載の方法を実現することを特徴とする。
【0117】
以上、本開示の実施例を詳細に説明しており、本明細書において、具体的な例を利用して本開示の原理および実施形態について説明したが、以上の実施例の説明は、本開示の方法およびその肝心な思想を理解するためのものに過ぎない。また、当業者が本開示の思想に基づき、本開示の具体的な実施形態および適用範囲に基づいてなされた変更や変形は、いずれも本開示の保護範囲に属するものである。以上に述べたように、本明細書の内容は、本開示に対する制限として理解すべきではない。