(57)【要約】  本発明の実施例は、データを処理するための方法、装置、及び関連製品に関する。本発明の実施例は、ボードカードに関し、前記ボードカードは、記憶部品と、インターフェース装置と、制御部品と、人工知能チップと、を備え、ここで、前記人工知能チップは、前記記憶部品、前記制御部品、および、前記インターフェース装置と、それぞれ接続され、前記記憶部品は、データを記憶し、前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現し、前記制御部品は、前記人工知能チップの状態を監視制御する。前記ボードカードは、人工知能演算を実行するために用いられることができる。【選択図】図10
2022501674.tif 000002
【特許請求の範囲】
【請求項１】
データを処理するための方法であって、
機械学習モデルに用いられる１組の量子化待ちデータを取得するステップと、
複数ペアの切捨て閾値を使用してそれぞれ前記１組の量子化待ちデータを量子化することによって、複数組の量子化後のデータを確定するステップであって、前記複数ペアの切捨て閾値の中の各ペアの切捨て閾値は、対称的な切捨て正の値と切捨て負の値とを含むステップと、
前記複数組の量子化後のデータの中の各組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の差異に基づいて、前記複数ペアの切捨て閾値の中から１ペアの切捨て閾値を選択して、前記１組の量子化待ちデータの量子化に用いるステップと、を含む
ことを特徴とする前記方法。
【請求項２】
複数組の量子化後のデータを確定するステップは、
前記１組の量子化待ちデータの中のすべてのデータの絶対値最大値を確定するステップと、
前記絶対値最大値に基づいて、前記複数ペアの切捨て閾値を確定するステップと、を含む
ことを特徴とする請求項１に記載の前記方法。
【請求項３】
複数組の量子化後のデータを確定するステップは、
前記絶対値最大値、所定の合計検索回数、および、現在検索順序に基づいて、第１切捨て正の値を確定するステップと、
１番目のペアの切捨て閾値を使用して前記１組の量子化待ちデータを量子化することによって、１番目の組の量子化後のデータを確定するステップであって、前記１番目のペアの切捨て閾値は、前記第１切捨て正の値と、前記第１切捨て正の値と反対の第１切捨て負の値と、を含むステップと、
前記１番目の組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の第１差異を確定するステップと、をさらに含む
ことを特徴とする請求項２に記載の前記方法。
【請求項４】
複数組の量子化後のデータを確定するステップは、
前記現在検索順序をインクリメントするステップと、
前記絶対値最大値、前記所定の合計検索回数、および、前記現在検索順序に基づいて、第２切捨て正の値を確定するステップと、
２番目のペアの切捨て閾値を使用して前記１組の量子化待ちデータを量子化することによって、２番目の組の量子化後のデータを確定するステップであって、前記２番目のペアの切捨て閾値は、前記第２切捨て正の値と、前記第２切捨て正の値と反対の第２切捨て負の値と、を含むステップと、
前記２番目の組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の第２差異を確定するステップと、をさらに含む
ことを特徴とする請求項３に記載の前記方法。
【請求項５】
前記複数ペアの切捨て閾値の中から１ペアの切捨て閾値を選択するステップは、
前記複数組の量子化後のデータ中で前記１組の量子化待ちデータとの絶対値の平均値の差異が最小である１組の量子化後のデータを確定するステップと、
前記複数ペアの切捨て閾値の中から前記１組の量子化後のデータと対応する１ペアの切捨て閾値を選択するステップと、を含む
ことを特徴とする請求項１乃至４のいずれか１項に記載の前記方法。
【請求項６】
選択した前記１ペアの切捨て閾値に関連付けられた切捨て検索範囲を確定するステップと、
前記切捨て検索範囲内に位置する新たな複数ペアの切捨て閾値を確定するステップと、
前記新たな複数ペアの切捨て閾値を使用してそれぞれ前記１組の量子化待ちデータを量子化することによって、新たな複数組の量子化後のデータを確定するステップと、
前記新たな複数組の量子化後のデータの中の各組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の差異に基づいて、前記新たな複数ペアの切捨て閾値の中から新たな１ペアの切捨て閾値を選択するステップと、をさらに含む
ことを特徴とする請求項５に記載の前記方法。
【請求項７】
複数ペアの切捨て閾値を使用してそれぞれ前記１組の量子化待ちデータを量子化することによって、複数組の量子化後のデータを確定するステップは、
前記１組の量子化待ちデータの中のすべてのデータの絶対値最大値を確定するステップと、
前記絶対値最大値に基づいて、３ペアの切捨て閾値を確定するステップであって、前記３ペアの切捨て閾値中の１番目のペアの切捨て閾値は、前記絶対値最大値の半分と、その反対の値と、を含み、前記３ペアの切捨て閾値中の２番目のペアの切捨て閾値は、前記絶対値最大値の４分の３と、その反対の値と、を含み、前記３ペアの切捨て閾値中の３番目のペアの切捨て閾値は、前記絶対値最大値と、その反対の値と、を含むステップと、
３ペアの切捨て閾値を使用してそれぞれ前記１組の量子化待ちデータを量子化することによって、３組の量子化後のデータを確定するステップと、を含む
ことを特徴とする請求項１に記載の前記方法。
【請求項８】
前記複数ペアの切捨て閾値の中から１ペアの切捨て閾値を選択するステップは、
停止条件を満たすまで、以下の動作を反復実行するステップを含み、
当該動作は、
前記３ペアの切捨て閾値の中から１ペアの切捨て閾値を選択する動作と、
選択した１ペアの切捨て閾値と対応する差異が所定閾値未満であるか否かを確定する動作と、
前記差異が所定閾値未満であることに応答して、動作の反復実行を停止する動作と、
前記差異が所定閾値よりも大きいことに応答して、選択した１ペアの切捨て閾値に基づいて、再度３ペアの切捨て閾値を確定する動作と、を含む
ことを特徴とする請求項７に記載の前記方法。
【請求項９】
前記１組の量子化待ちデータは、ニューラルネットワークモデル中の１組の浮動小数点数であり、
前記方法は、
選択した１ペアの切捨て閾値を使用して前記１組の量子化待ちデータを量子化することによって量子化後のデータを得るステップであって、前記１組の量子化待ちデータを量子化することは、前記１組の量子化待ちデータ中の、切捨て正の値よりも大きい数値を、前記切捨て正の値に設定し、前記１組の量子化待ちデータ中の、切捨て負の値よりも小さい数値を、前記切捨て負の値に設定するステップと、
得られた量子化後のデータを前記ニューラルネットワークモデルに入力して、処理に用いるステップと、をさらに含む
ことを特徴とする請求項１乃至８のいずれか１項に記載の前記方法。
【請求項１０】
データを処理するための装置であって、
機械学習モデルに用いられる１組の量子化待ちデータを取得するための量子化待ちデータ取得ユニットと、
複数ペアの切捨て閾値を使用してそれぞれ前記１組の量子化待ちデータを量子化することによって、複数組の量子化後のデータを確定するための量子化後データ確定ユニットであって、前記複数ペアの切捨て閾値の中の各ペアの切捨て閾値は、対称的な切捨て正の値と切捨て負の値とを含む量子化後データ確定ユニットと、
前記複数組の量子化後のデータの中の各組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の差異に基づいて、前記複数ペアの切捨て閾値の中から１ペアの切捨て閾値を選択して、前記１組の量子化待ちデータの量子化に用いるための切捨て閾値選択ユニットと、を備える
ことを特徴とする前記装置。
【請求項１１】
前記量子化後データ確定ユニットは、
前記１組の量子化待ちデータの中のすべてのデータの絶対値最大値を確定するための絶対値最大値確定ユニットと、
前記絶対値最大値に基づいて前記複数ペアの切捨て閾値を確定するための複数ペア切捨て閾値確定ユニットと、を備える
ことを特徴とする請求項１０に記載の前記装置。
【請求項１２】
前記量子化後データ確定ユニットは、
前記絶対値最大値、所定の合計検索回数、および、現在検索順序に基づいて、第１切捨て正の値を確定するための第１切捨て正の値確定ユニットと、
１番目のペアの切捨て閾値を使用して前記１組の量子化待ちデータを量子化することによって、１番目の組の量子化後のデータを確定するための１番目組量子化後データ確定ユニットであって、前記１番目のペアの切捨て閾値は、前記第１切捨て正の値と、前記第１切捨て正の値と反対の第１切捨て負の値と、を含む１番目組量子化後データ確定ユニットと、
前記１番目の組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の第１差異を確定するための第１差異確定ユニットと、をさらに備える
ことを特徴とする請求項１１に記載の前記装置。
【請求項１３】
前記量子化後データ確定ユニットは、
前記現在検索順序をインクリメントするためのインクリメントユニットと、
前記絶対値最大値、前記所定の合計検索回数、および、前記現在検索順序に基づいて、第２切捨て正の値を確定するための第２切捨て正の値確定ユニットと、
２番目のペアの切捨て閾値を使用して前記１組の量子化待ちデータを量子化することによって、２番目の組の量子化後のデータを確定するための２番目組量子化後データ確定ユニットであって、前記２番目のペアの切捨て閾値は、前記第２切捨て正の値と、前記第２切捨て正の値と反対の第２切捨て負の値と、を含む２番目組量子化後データ確定ユニットと、
前記２番目の組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の第２差異を確定するための第２差異確定ユニットと、をさらに備える
ことを特徴とする請求項１２に記載の前記装置。
【請求項１４】
前記切捨て閾値選択ユニットは、
前記複数組の量子化後のデータ中で前記１組の量子化待ちデータとの絶対値の平均値の差異が最小である１組の量子化後のデータを確定するための最小差異確定ユニットと、
前記複数ペアの切捨て閾値の中から前記１組の量子化後のデータと対応する１ペアの切捨て閾値を選択するための第２切捨て閾値選択ユニットと、を備える
ことを特徴とする請求項１０乃至１３のいずれか１項に記載の前記装置。
【請求項１５】
選択した前記１ペアの切捨て閾値に関連付けられた切捨て検索範囲を確定するための切捨て検索範囲確定ユニットと、
前記切捨て検索範囲内に位置する新たな複数ペアの切捨て閾値を確定するための新たな複数ペア切捨て閾値確定ユニットと、
前記新たな複数ペアの切捨て閾値を使用してそれぞれ前記１組の量子化待ちデータを量子化することによって、新たな複数組の量子化後のデータを確定するための第２量子化後データ確定ユニットと、
前記新たな複数組の量子化後のデータの中の各組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の差異に基づいて、前記新たな複数ペアの切捨て閾値の中から新たな１ペアの切捨て閾値を選択するための第３切捨て閾値選択ユニットと、をさらに備える
ことを特徴とする請求項１４に記載の前記装置。
【請求項１６】
前記量子化後データ確定ユニットは、
前記１組の量子化待ちデータの中のすべてのデータの絶対値最大値を確定するための絶対値最大値確定ユニットと、
前記絶対値最大値に基づいて、３ペアの切捨て閾値を確定するための３ペア切捨て閾値確定ユニットであって、前記３ペアの切捨て閾値中の１番目のペアの切捨て閾値は、前記絶対値最大値の半分と、その反対の値と、を含み、前記３ペアの切捨て閾値中の２番目のペアの切捨て閾値は、前記絶対値最大値の４分の３と、その反対の値と、を含み、前記３ペアの切捨て閾値中の３番目のペアの切捨て閾値は、前記絶対値最大値と、その反対の値と、を含む３ペア切捨て閾値確定ユニットと、
３ペアの切捨て閾値を使用してそれぞれ前記１組の量子化待ちデータを量子化することによって、３組の量子化後のデータを確定するための３組量子化後データ確定ユニットと、を備える
ことを特徴とする請求項１０に記載の前記装置。
【請求項１７】
前記切捨て閾値選択ユニットは、
停止条件を満たすまで、以下の動作を反復実行するための反復ユニットを備え、
当該動作は、
前記３ペアの切捨て閾値の中から１ペアの切捨て閾値を選択する動作と、
選択した１ペアの切捨て閾値と対応する差異が所定閾値未満であるか否かを確定する動作と、
前記差異が所定閾値未満であることに応答して、動作の反復実行を停止する動作と、
前記差異が所定閾値よりも大きいことに応答して、選択した１ペアの切捨て閾値に基づいて、再度３ペアの切捨て閾値を確定する動作と、を含む
ことを特徴とする請求項１６に記載の前記装置。
【請求項１８】
前記１組の量子化待ちデータは、ニューラルネットワークモデル中の１組の浮動小数点数であり、
前記装置は、
選択した１ペアの切捨て閾値を使用して前記１組の量子化待ちデータを量子化することによって量子化後のデータを得るためのデータ量子化ユニットであって、前記１組の量子化待ちデータを量子化することは、前記１組の量子化待ちデータ中の、切捨て正の値よりも大きい数値を、前記切捨て正の値に設定し、前記１組の量子化待ちデータ中の、切捨て負の値よりも小さい数値を、前記切捨て負の値に設定するデータ量子化ユニットと、
得られた量子化後のデータを前記ニューラルネットワークモデルに入力して、処理に用いるためのデータ入力ユニットと、をさらに備える
ことを特徴とする請求項１０乃至１７のいずれか１項に記載の前記装置。
【請求項１９】
コンピュータ可読記憶媒体であって、
前記コンピュータ可読記憶媒体には、コンピュータプログラムが記憶されており、前記プログラムが実行されると、請求項１乃至９のいずれか１項に記載の前記方法が実現される
ことを特徴とするコンピュータ可読記憶媒体。
【請求項２０】
人工知能チップであって、
前記チップは、請求項１０乃至１８のいずれか１項に記載のデータを処理するための装置を備える
ことを特徴とする人工知能チップ。
【請求項２１】
電子デバイスであって、
前記電子デバイスは、請求項２０に記載の人工知能チップを含む
ことを特徴とする電子デバイス。
【請求項２２】
ボードカードであって、
前記ボードカードは、記憶部品と、インターフェース装置と、制御部品と、請求項２０に記載の人工知能チップと、を備え、
ここで、前記人工知能チップは、前記記憶部品、前記制御部品、および、前記インターフェース装置と、接続され、
前記記憶部品は、データを記憶し、
前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現し、
前記制御部品は、前記人工知能チップの状態を監視制御する
ことを特徴とするボードカード。
【請求項２３】
前記記憶部品は、複数組の記憶ユニットを備え、各組の記憶ユニットは、前記人工知能チップとバスを介して接続され、前記記憶ユニットは、ＤＤＲ ＳＤＲＡＭであり、
前記チップは、ＤＤＲコントローラを備え、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に用いられ、
前記インターフェース装置は、標準ＰＣＩＥインターフェースである
ことを特徴とする請求項２２記載のボードカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、コンピュータ技術の分野に関し、より具体的に、データを処理するための方法、装置、及び関連製品に関する。
【背景技術】
【０００２】
人工知能技術の継続的な発展に伴い、その適用分野もますます広範になり、画像認識、音声認識、自然言語処理などの分野にいずれもよく適用されている。しかしながら、人工知能アルゴリズムの複雑度および正確度の向上につれて、機械学習モデルがますます大きくなり、処理すべきデータ量もますます大くなっている。大量のデータ処理を実行する場合、より大きい計算オーバーヘッドおよび時間オーバーヘッドが必要になり、処理効率がより低い。
【発明の概要】
【０００３】
これに鑑みて、本発明の実施例は、データを処理するための方法、装置、及び関連製品を提供する。
【０００４】
本発明の第１態様において、データを処理するための方法を提供する。当該方法は、機械学習モデルに用いられる１組の量子化待ちデータを取得するステップと、複数ペアの切捨て閾値を使用してそれぞれ１組の量子化待ちデータを量子化することによって、複数組の量子化後のデータを確定するステップであって、複数ペアの切捨て閾値の中の各ペアの切捨て閾値は、対称的な切捨て正の値と切捨て負の値とを含むステップと、複数組の量子化後のデータの中の各組の量子化後のデータの絶対値の平均値と１組の量子化待ちデータの絶対値の平均値との間の差異に基づいて、複数ペアの切捨て閾値の中から１ペアの切捨て閾値を選択して、１組の量子化待ちデータの量子化に用いるステップと、を含む。
【０００５】
本発明の第２態様において、データを処理するための装置を提供する。当該装置は、機械学習モデルに用いられる１組の量子化待ちデータを取得するための量子化待ちデータ取得ユニットと、複数ペアの切捨て閾値を使用してそれぞれ１組の量子化待ちデータを量子化することによって、複数組の量子化後のデータを確定するための量子化後データ確定ユニットであって、複数ペアの切捨て閾値の中の各ペアの切捨て閾値は、対称的な切捨て正の値と切捨て負の値とを含む量子化後データ確定ユニットと、複数組の量子化後のデータの中の各組の量子化後のデータの絶対値の平均値と１組の量子化待ちデータの絶対値の平均値との間の差異に基づいて、複数ペアの切捨て閾値の中から１ペアの切捨て閾値を選択して、１組の量子化待ちデータの量子化に用いるための切捨て閾値選択ユニットと、を備える。
【０００６】
本発明の第３態様において、コンピュータ可読記憶媒体を提供し、当該コンピュータ可読記憶媒体には、コンピュータプログラムが記憶されており、プログラムが実行されると、本発明の各実施例に係る方法が実現される。
本発明の第４態様において、人工知能チップを提供し、当該人工知能チップは、本発明の各実施例に係るデータを処理するための装置を備える。
本発明の第５態様において、電子デバイスを提供し、当該電子デバイスは、本発明の各実施例に係る人工知能チップを含む。
【０００７】
本発明の第６態様おいて、ボードカードを提供し、当該ボードカードは、記憶部品と、インターフェース装置と、制御部品と、本発明の各実施例に係る人工知能チップと、を備える。ここで、人工知能チップは、記憶部品、制御部品、および、インターフェース装置と、接続され、記憶部品は、データを記憶し、インターフェース装置は、人工知能チップと外部デバイスとの間のデータ伝送を実現し、制御部品は、人工知能チップの状態に対して監視制御を実行する。
【０００８】
請求項中の技術的特徴を導き出すことにより、背景技術中の技術的問題に対応する有益な効果を達成することができる。以下の図面を参照した例示的な実施例の詳細な説明によれば、本発明の他の特徴および態様が明らかになる。
【図面の簡単な説明】
【０００９】
明細書に含まれて明細書の一部を構成する図面は、明細書と一緒に本発明の例示的な実施例、特徴、および、態様を示し、本発明の原理を解釈するために使用される。
【図１】本発明の実施例に係るデータを処理するための方法の処理システムを示す模式図である。
【図２】本発明の実施例に係るニューラルネットワークの例示的なアーキテクチャを示す模式図である。
【図３】本発明の実施例に係るデータを量子化するための過程を示す模式図である。
【図４Ａ】本発明の実施例に係るデータを対称的に量子化するための方法を示す模式図である。
【図４Ｂ】本発明の実施例に係る切捨て閾値に基づいてデータを対称的に量子化するための方法を示す模式図である。
【図５】本発明の実施例に係るデータを処理するための方法を示すフローチャートである。
【図６】本発明の実施例に係る対称量子化の切捨て閾値を検索するための方法を示すフローチャートである。
【図７Ａ】本発明の実施例に係る対称量子化の切捨て閾値を粗粒度に検索するための模式図である。
【図７Ｂ】本発明の実施例に係る対称量子化の切捨て閾値を細粒度に検索するための方法を示す模式図である。
【図８】本発明の実施例に係る最適な切捨て閾値を反復検索するための方法を示すフローチャートである。
【図９】本発明の実施例に係るデータを処理するための装置を示すブロック図である。
【図１０】本発明の実施例に係るボードカードの構成を示すブロック図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施例中の図面を参照して、本発明の実施例中の技術案を明確かつ完全に説明し、説明する実施例は、本発明の一部の実施例に過ぎず、全ての実施例ではないことが明らかである。当業者によって本発明中の実施例に基づいて創造的な作業なしに得られたすべての他の実施例は、いずれも本発明の保護しようとする範囲に属する。
【００１１】
本発明の請求の範囲、明細書、および、図面での「第１」、「第２」、「第３」および「第４」などの用語は、異なる対象を区別するために使用されるものであり、特定順序を説明するために使用されないことを理解すべきである。本発明の明細書および請求の範囲で使用される「含む」および「備える」という用語は、説明する特徴、全体、ステップ、操作、要素、および／または、アセンブリの存在を表し、一つまたは複数の他の特徴、全体、ステップ、操作、要素、アセンブリ、および／または、そのセットの存在または追加を除外しない。
【００１２】
ここで本発明の明細書で使用される用語は、ただ、特定実施例を説明する目的に使用され、本発明を限定しようとするものではないことをさらに理解すべきである。本発明の明細書および請求の範囲で使用されるように、文脈で他の場合を明確に示されていない限り、「一」、「一つの」、および、「当該」の単数形態は、複数形態を含むことを意図する。さらに、本発明明細書および請求の範囲で使用される「および／または」という用語は、関連してリストされた項目的中の一つまたは複数のいかなる組み合わせおよびすべての可能な組み合わせを表し、これら組み合わせを含むことをさらに理解すべきである。
【００１３】
本明細書および請求の範囲で使用されるように、「…場合」という用語は、文脈によって、「…とき」、「…と」、「確定されたことに応答して」、または、「検出されたことに応答して」と解釈されてもよい。同様に、「確定された場合」または「『記述された条件または事件』が検出された場合」という句は、文脈によって、「確定されると」、「確定されたことに応答して」、「『記述された条件または事件』が検出されると」、または、「『記述された条件または事件』が検出されたことに応答して」と解釈されてもよい。
【００１４】
一般的に、データに対して量子化を実行する場合、選択する値の範囲がより広いと、量子化後のデータ精度がより低くなり、値の範囲が小さすぎると、多すぎるデータが切捨てされることになり、導致両側に分布されたデータの情報の損失をもたらす。ここで、値の範囲とは、データを量子化するための最小の切捨て閾値と最大の切捨て閾値との間の数値の範囲を意味する。このため、１ペアの適当な切捨て閾値を発見してデータ量子化を実行することによって、データ量子化の損失を最小にするかまたはより小さくする必要がある。従来、ＫＬダイバージェンス（Ｋｕｌｌｂａｃｋ ー Ｌｅｉｂｌｅｒ ｄｉｖｅｒｇｅｎｃｅ）の方法によって最適な切捨て閾値を確定し、ここで、ＫＬダイバージェンスは、量子化前のデータと量子化後のデータとの間の関連度を確定できる。ＫＬダイバージェンスは、相対エントロピー（ｒｅｌａｔｉｖｅ ｅｎｔｒｏｐｙ）、情報ダイバージェンス（ｉｎｆｏｒｍａｔｉｏｎ ｄｉｖｅｒｇｅｎｃｅ）、および、情報ゲイン（ｉｎｆｏｒｍａｔｉｏｎ ｇａｉｎ）とも呼ばれる。ＫＬダイバージェンスは、二つ概率分布ＰとＱとの間の差の尺度である。量子化前に３２ビットの浮動小数点数の分布がＰであり、量子化後の８ビットの整数の分布がＱであると想定すると、ＰとＱとの間のＫＬダイバージェンスが小さいほど、量子化前後の分布が接近され、量子化も効果的である。しかしながら、本願の発明者は、従来のＫＬ方法によって得られた切捨て閾値を利用して実現する量子化効果がよくなく、一般的により大きい精度の損失をもたらすことは発見した。
【００１５】
このため、本発明の実施例は、対称量子化に用いられる切捨て閾値を確定する新しい解決策を提案し、従来の技術（例えばＫＬ方法）よりも小さい量子化精度の損失を実現できる。本発明の実施例によると、機械学習モデルに用いられる１組の量子化待ちデータを取得した後、複数ペアの切捨て閾値を使用してそれぞれ１組の量子化待ちデータを量子化することによって、複数組の量子化後のデータを確定し、ここで、複数ペアの切捨て閾値の中の各ペアの切捨て閾値は、対称的な切捨て正の値と切捨て負の値とを含む。その後、各組の量子化後のデータの絶対値の平均値と１組の量子化待ちデータの絶対値の平均値との間の差異を評価指標として使用して、複数ペアの切捨て閾値の中から適当な１ペアの切捨て閾値を選択する。このような方式によって、より適当な切捨て閾値を発見することができる。
【００１６】
以下、図１から図１０を参考して、本発明の基本原理およびいくつかの例示的な実現形態を説明する。これら例示的な実施例は、ただ、当業者が、本発明の実施例をよりよく理解し、さらに本発明の実施例を実現するようにするために提供され、いかなる方式で本発明の範囲を限定するためではないことを理解すべきである、。
【００１７】
図１は、本発明の実施例に係るデータを処理するための方法の処理システム１００を示す模式図である。図１に示すように、処理システム１００は、複数のプロセッサ１０１−１、１０１−２、１０１−３（総称してプロセッサ１０１と呼ばれる）、および、メモリ１０２を備え、プロセッサ１０１は、命令シーケンスを実行し、メモリ１０２は、データを記憶し、ランダムメモリ（ＲＡＭ、Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）およびレジスタファイルを含んでもよい。処理システム１００中の複数のプロセッサ１０１は、一部の記憶空間を共有してもよく、例えば、一部のＲＡＭ記憶空間およびレジスタファイルを共有してもよく、また、同時にそれら自身の記憶空間を有してもよい。
【００１８】
本発明の実施例に係るいろんな方法は、複数のプロセッサ（マルチコア）を含む処理システム１００（例えば人工知能チップ）の任意のプロセッサに適用されることを理解すべきである。当該プロセッサは、例えばＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ、中央プロセッサ）などの汎用プロセッサであってもよいし、人工知能演算を実行するための人工知能プロセッサ（ＩＰＵ）であってもよい。人工知能演算は、機械学習演算、脳と類似な演算などを含んでもよい。ここで、機械学習演算は、ニューラルネットワーク演算、ｋ−ｍｅａｎｓ演算、ベクトル機械サポート演算などを含む。当該人工知能プロセッサは、例えば、ＧＰＵ(Ｇｒａｐｈｉｃｓ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ、グラフィックス処理ユニット)、ＮＰＵ（Ｎｅｕｒａｌ−Ｎｅｔｗｏｒｋ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ、ニューラルネットワーク処理ユニット）、ＤＳＰ（Ｄｉｇｉｔａｌ Ｓｉｇｎａｌ Ｐｒｏｃｅｓｓ、デジタル信号処理ユニット）、フィールドプログラマブルゲートアレイ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ Ｇａｔｅ Ａｒｒａｙ、ＦＰＧＡ）チップの中の一つまたは組み合わせを含む。本発明は、プロセッサの具体的な種類に対して限制しない。なお、処理システム１００中の複数のプロセッサの種類は、同一であってもよいし、異なってもよく、本発明は、これに対して限定しない。
【００１９】
可能な一実現形態において、本発明で言及されるプロセッサは、複数の処理ユニットを含んでもよく、各々の処理ユニットは、例えば畳み込み演算タスク、プーリングタスク、完全接続タスクなどの、割り当てられたいろんなタスクを独立的に運行できる。本発明は、処理ユニットおよび処理ユニットが運行するタスクに対して限定しない。
【００２０】
図２は、本発明の実施例に係るニューラルネットワーク２００の例示的なアーキテクチャを示す模式図である。ニューラルネットワーク（ｎｅｕｒａｌ ｎｅｔｗｏｒｋ、ＮＮ）は、生物学的ニューラルネットワークの構成と機能を模倣する数学モデルであり、ニューラルネットワークは、大量のニューロンが接続されて計算を実行するものである。このため、ニューラルネットワークは、計算モデルであり、大量のノード（または「ニューロン」と呼ばれる）が互いに接続されて構成される。各々のノードは、特定の出力関数を代表し、アクティベーション関数（ａｃｔｉｖａｔｉｏｎ ｆｕｎｃｔｉｏｎ）と呼ばれる。各々の二つのニューロン同士の間の接続は、いずれも、一つの当該接続を追加する信号の重み値を代表し、重みと呼ばれ、これはニューラルネットワークの記憶に相当する。ニューラルネットワークの出力は、ニューロン同士の間の接続方式、および、重み値とアクティベーション関数によって、異なる。ニューラルネットワークにおいて、ニューロンは、ニューラルネットワークの基本的な単位である。ニューロンは、一定の数の入力および一つのバイアスを得て、信号（値）が到着するときに当該信号（値）に一つの重み値を乗算する。接続は、一つのニューロンを他の層または同一の層のもう一つのニューロンに接続することであり、接続は、自身に関連付けられた重み値が伴う。また、バイアスは、ニューロンの追加的な入力であり、バイアスは、常に１であり、自分の接続重み値を有する。これにより、すべての入力がいずれも空（すべてが０である）であっても、ニューロンがアクティブになることを保証する。
【００２１】
適用において、ニューラルネットワーク中のニューロンに対して一つの非線形関数を適用しないと、ニューラルネットワークは、一つの線形関数に過ぎず、すると、ニューラルネットワークは単一のニューロンに比べて強度が強いわけではない。一つのニューラルネットワークの出力結果を０から１の間にあるようにすると、例えば、猫／犬を鑑別する例において、０に近い出力を猫、１に近い出力を犬と見なすことができる。この目標を完成するために、ニューラルネットワーク中に、例えばｓｉｇｍｏｉｄアクティベーション関数などの、アクティベーション関数を導入する。このアクティベーション関数に関しては、その戻り値が０から１までの一つの数字であることが分かればよい。このため、アクティベーション関数は、非線形をニューラルネットワークに導入するために使用され、ニューラルネットワークの演算結果をより小さい範囲に縮小する。実際には、アクティベーション関数をどのように表現するかが重要ではなく、幾つかの重み値によって一つの非線形関数をパラメータ化することが重要であり、これら重み値を変更することによってこの非線形関数を変更できる。
【００２２】
図２は、ニューラルネットワーク２００の構成の模式図である。図２に示すニューラルネットワークにおいて、入力層２１０、インプリケーション層２２０、および、出力層２３０という３つの層を含み、そのうち図２に示すインプリケーション層２２０は３層であり、勿論ながら、インプリケーション層２２０は、より多いまたはより少ない層を含んでも良い。ここで、入力層２１０のニューロンは、入力ニューロンと呼ばれる。入力層をニューラルネットワーク中の１番目の層とする場合、信号（値）を入力し、これら信号（値）を次の１層に伝送する必要がある。入力層は、入力信号（値）に対していかなる操作も実行しないし、関連付けられた重み値およびバイアスを有さない。図２に示すニューラルネットワークにおいて、４個の入力信号（値）を受信できる。
【００２３】
インプリケーション層２２０は、入力データに対して、異なって変換されるニューロン（ノード）を適用するために使用される。一つのインプリケーション層は、垂直に配列されたニューロンのセット（Ｒｅｐｒｅｓｅｎｔａｔｉｏｎ）である。図２に示すニューラルネットワークは、３個のインプリケーション層を有する。第１インプリケーション層は、４個のニューロン（ノード）を有し、第２層は、６個のニューロンを有し、第３層は、３個のニューロンを有する。最後に、インプリケーション層は、値を出力層に伝送する。図２に示すニューラルネットワーク２００は、３個のインプリケーション層中の各々のニューロンの間が完全に接続され、３個のインプリケーション層中の各々のニューロンはいずれも次の層の全てのニューロンと接続される。なお、各々のニューラルネットワークのインプリケーション層は完全に接続されるわけではないことを説明する必要がある。
【００２４】
出力層２３０のニューロンは、出力ニューロンと呼ばれる。出力層は、最後の一つのインプリケーション層からの出力を受信する。出力層２３０によって、期待の値および期待の範囲を確定できる。図２に示すニューラルネットワークにおいて、出力層は、３個のニューロンを有し、すなわち、３個の出力信号（値）を有する。
【００２５】
実際の適用において、ニューラルネットワークの役割は、事前に大量のサンプルデータ（入力および出力を含む）を利用してトレーニングを実行し、トレーニングが完成された後に、ニューラルネットワークを使用して将来の実環境の入力に対して、一つの正確な出力を得ることである。
【００２６】
ニューラルネットワークのトレーニングを検討する前に、損失関数を定義する必要がある。損失関数は、ニューラルネットワークが、特定のタスクでどれだけうまく機能したか示す関数である。実行時の最も直接的な方法は、トレーニング過程において、全てのサンプルデータに対して、いずれも、ニューラルネットワークを沿って伝送して一つの数値を得、その後、この数値と得ようとする実際の数値との差を求めてから２乗し、項のように計算された値が予測値と実際の値との間の距離であり、トレーニングニューラルネットワークが望んでいるのがこの距離または損失関数の値を小さくすることである。
【００２７】
ニューラルネットワークのトレーニングを始めるとき、重み値をランダムに初期化する必要がある。初期化されたニューラルネットワークが良好な結果を提供できないことは、明らかである。トレーニングの過程において、非常に悪いニューラルネットワークから始め、トレーニングを通じて、一つの高い正確率を有するネットワークを得ることができると想定する。同時に、トレーニングが終了されるときに、損失関数の関数値が非常に小さくなることがさらに望ましい。
【００２８】
ニューラルネットワークのトレーニング過程は、二つの段階にわけられ、１番目の段階は、信号の順方向処理であり、入力層２１０からインプリケーション層２２０を経て、最後に出力層２３０に到着する。２番目の段階は、勾配の逆方向の伝送であり、出力層２３０からインプリケーション層２２０を経て、最後に入力層２１０に到着し、勾配に基づいて順次にニューラルネットワーク中の各層の重み値とバイアスとを調節する。
【００２９】
順方向処理の過程において、入力値をニューラルネットワークの入力層２１０に入力し、ニューラルネットワークの出力層２３０から予測値と呼ばれる出力を得る。入力値をニューラルネットワークの入力層２１０に提供するときに、いかなる操作も実行しない。インプリケーション層において、２番目のインプリケーション層は、１番目のインプリケーション層から予測中間結果値を取得して、計算操作およびアクティベーション操作を実行し、その後、得られた予測中間結果値を次のインプリケーション層に伝送する。後ろの層で同一な操作を実行し、最後に、ニューラルネットワークの出力層２３０で出力値を得る。
【００３０】
順方向処理の後に、一つの予測値と呼ばれる出力値が得られる。誤差を計算するために、損失関数を使用して予測値と実際の出力値を比較して、対応する誤差値を得る。逆方向伝送は、微分計算のチェーンルールを使用し、チェーンルールにおいて、まず、対応するニューラルネットワークの最後の層の重み値の誤差値の導関数を計算する。これら導関数が勾配とよばれ、その後に、これら勾配を使用してニューラルネットワーク中の後ろから２番目の層の勾配を計算する。直到ニューラルネットワーク中の各々の重み値の勾配を得るまでに、この過程を繰り替す。最後に、重み値から対応する勾配を減算することによって、重み値に対して１回の更新を実行することで、誤差値を小さくする目的を達成する。
【００３１】
なお、ニューラルネットワークの場合、微調整は、トレーニングされたニューラルネットワークをロードすることであり、微調整過程は、トレーニング過程と同様に、二つの段階に分けられ、１番目の段階は、信号の順方向処理であり、２番目の段階は、勾配の逆方向の伝送であり、トレーニングされたニューラルネットワークの重み値を更新する。トレーニングと微調整との違いは、トレーニングは、ランダムに初期化されたニューラルネットワークに対して処理を実行し、ニューラルネットワークを最初からトレーニングする一方、微調整は、最初からトレーニングしないことである。
【００３２】
ニューラルネットワークに対してトレーニングまたは微調整を実行する過程において、ニューラルネットワークが１回の信号の順方向処理および対応する１回の誤差の逆方向伝送を経る過程ごとに、ニューラルネットワーク中の重み値が勾配を利用して１回更新され、この場合が１回の反復（ｉｔｅｒａｔｉｏｎ）と呼ばれる。獲得精度が予想に符合されるニューラルネットワークを得るために、トレーニング過程において、膨大なサンプルデータセットを必要とする。このような場合、サンプルデータセットを１回でコンピュータに入力することができない。このため、この問題を解決するために、サンプルデータセットを複数のブロックに分割し、各ブロックをコンピュータに伝送し、各ブロックのデータセットに対して順方向処理を実行した後に、ニューラルネットワークの重み値を１回対応して更新する必要がある。完全な一つのサンプルデータセットがニューラルネットワークの１回の順方向処理を通じて、１回の重み値の更新を対応して返す場合、この過程が一つの周期（ｅｐｏｃｈ）と呼ばれる。実際において、ニューラルネットワークにおいて完全なデータセットを１回伝送するだけでは不十分である。完全なデータセットを同一ニューラルネットワークにおいて複数回伝送する必要があり、すなわち、複数の周期が必要であり、最終に精度が予想に符合されるニューラルネットワークを得る。
【００３３】
ニューラルネットワークに対してトレーニングまたは微調整を実行する過程において、一般的に、望ましくは、速度が速いほどよく、正確率が高いほどよい。ニューラルネットワークのデータは、例えば浮動小数点数などの、高精度のデータフォーマットで表すため、トレーニングまたは微調整の過程において、関連するデータは、いずれも高精度のデータフォーマットであり、続いて、トレーニング後のニューラルネットワークに対して量子化を実行する。量子化の対象がニューラルネットワーク全体の重み値であり、且つ、量子化後の重み値がいずれも８ビットの固定小数点数である例を挙げると、一つのニューラルネットワークは常に何百万個の接続を有し、殆どすべての空間がすべてニューロン接続の重み値によって占められる。さらに、これら重み値は、いずれも、異なる浮動小数点数である。各層の重み値は、いずれも、例えば(−３.０, ３.０)などの、ある確定区間の正規分布になる傾向がある。ニューラルネットワーク中の各層の重み値に対応する最大値および最小値を記憶し、各々の浮動小数点数値を８ビットの固定小数点数を使用して表す。ここで、最大値から最小値の範囲内の空間を２５６個の量子化間隔に線形に分割し、各々の量子化間隔は一つの８ビットの固定小数点数を使用して表す。例えば、(−３.０, ３.０)区間において、バイト０は−３.０を表し、バイト２５５は３.０を表す。これによって類推すれば、バイト１２８は０を表す。
【００３４】
高精度のデータフォーマットで表すデータの場合、浮動小数点数の例を挙げると、コンピュータ体系構造から分かるように、浮動小数点数の演算表現規則、および、固定小数点数の演算表現規則に応じて、同じ長さの固定小数点演算および浮動小数点演算の場合、浮動小数点演算の計算モードがもっと複雑であり、もっと多い論理的部品から浮動小数点演算器を構成することを必要とする。このように体積から言えば、浮動小数点演算器の体積は、固定小数点演算器の体積よりも大きい。また、浮動小数点演算器は、もっと多いリソースを消費して処理を実行する必要があり、固定小数点演算と浮動小数点演算との両者の間の消費電力の差は、一般的に、大きい数値である。簡単に言えば、浮動小数点演算器によって占められるチップ面積および消費電力は、固定小数点演算器と比較すると、いずれも、何倍大きい。
【００３５】
図３は、本発明の実施例に係るデータを量子化するための過程３００を示す模式図である。図３を参考すると、入力データ３１０は、量子化されていない浮動小数点数であり、例えば３２ビットの浮動小数点数であり、入力データ３１０をニューラルネットワークモデル３４０に直接入力して処理を実行すると、より多くの計算リソースを消費し、また、処理速度がより遅い。このため、ブロック３２０において、入力データに対して量子化を実行することによって、量子化後のデータ３３０（例えば８ビットの整数）を得ることができる。量子化後のデータ３３０をニューラルネットワークモデル３４０に入力して処理を実行すると、８ビットの整数の計算がより速いため、ニューラルネットワークモデル３４０は、入力データに対する処理をより速く完成して、対応する出力結果３５０を生成できる。
【００３６】
量子化されていない入力データ３１０から量子化後のデータ３３０までの量子化過程において、ある程度で幾つかの精度損失が発生し、精度損失の程度は、出力結果３５０の正確性に直接影響を与える。このため、入力データ３３０に対して量子化を実行する処理の過程において、量子化過程の精度損失を最小限にするか、あるいは、なるべく小さくなるように保証する必要がある。
【００３７】
図４Ａは、本発明の実施例に係るデータを対称的に量子化するための図４００を示す。図４Ａに示すように、最も簡単な対称量子化方法は、量子化待ちデータの中のすべての値の中の絶対値最大値を直接選択し、すなわち、|ｍａｘ|を直接選択し、その後、−|ｍａｘ|から|ｍａｘ|の範囲内で量子化を実行することによって、量子化後のデータを生成する。しかしながら、このような方法は、いかなる切捨てもしなく、量子化後のデータの精度がより低くなる。
【００３８】
図４Ｂは、本発明の実施例に係る切捨て閾値に基づいてデータを対称的に量子化するための図４５０である。図４Ａでの直接に量子化する方法とは違って、図４Ｂでは一つの切捨て閾値Ｔを選択し、−|Ｔ|から|Ｔ|の範囲以外のデータを−|Ｔ|または|Ｔ|に設定する。例えば、図４Ｂの例において、丸４６０中の量子化待ちの３個の値が切捨て範囲以外にあるため、−|Ｔ|値と見なして量子化処理が実行され、データポイント４７０に量子化される。このような方式によって、切捨て閾値を使用して量子化待ちデータの値の範囲縮小することにより、量子化後のデータの精度を向上させることができる。しかしながら、量子化精度の損失が最小である切捨て閾値をどのように得るかは、一つの早急に解決すべき技術的な問題である。
【００３９】
図５は、本発明の実施例に係るデータを処理するための方法５００を示すフローチャートである。方法５００は、図１を参考しながら説明した一つまたは複数のプロセッサ１０１によって実行されてもよいことを理解すべきである。
【００４０】
ブロック５０２において、機械学習モデルに用いられる１組の量子化待ちデータを取得する。例えば、上記の図３を参考して、量子化待ちの入力データ３１０を取得し、入力データに対して量子化を実行することによって、ニューラルネットワークモデル３４０の処理速度を速めることができる。なお、ニューラルネットワークモデル自身の幾つかのパラメータ（たどえば重み値など）に対して量子化を実行して、ネットワークパラメータに対して量子化を実行することによって、ニューラルネットワークモデルの大きさを小さくすることができる。幾つかの実施例において、量子化待ちのデータは、３２ビットの浮動小数点数であってもよい。オプションとして、量子化待ちのデータは、他のビット数の浮動小数点数、あるいは、他のデータ種類であってもよい。
【００４１】
ブロック５０４において、複数ペアの切捨て閾値を使用してそれぞれ１組の量子化待ちデータを量子化することによって、複数組の量子化後のデータを確定し、ここで、複数ペアの切捨て閾値の中の各ペアの切捨て閾値は、対称的な切捨て正の値と切捨て負の値とを含む。対称量子化の案において、切捨て閾値は、対称的な１ペアの正の値と負の値であり、すなわち、切捨て正の値および切捨て負の値であり、この二つの値の数値の自身は同じであるが、符号が逆になっている。
【００４２】
本発明の実施例によると、複数ペアの切捨て閾値を選択して、それぞれ、量子化待ちデータを量子化することができる。幾つかの実施例において、固定された間隔で幾つかの切捨て閾値を選択でき、例えば、量子化待ちデータ中の絶対値最大値に基づいて、所定距離ごとに一つの切捨て閾値を選択できる。幾つかの実施例において、幾つかの特定の位置での切捨て閾値のみを選択でき、例えば、絶対値最大値と所定比率を有する幾つかの数値のみを選択できる。
【００４３】
幾つかの実施例において、各ペアの切捨て閾値に基づいて該当する一つまたは複数の量子化パラメータを計算し、その後、計算された量子化パラメータを使用して量子化待ちデータを量子化することができる。オプションとして、切捨て閾値に直接基づいていろんな式またはモデルに従って、量子化待ちデータを量子化することができ、各量子化パラメータの値を単独的に計算する必要がない。
【００４４】
ブロック５０６において、複数組の量子化後のデータの中の各組の量子化後のデータの絶対値の平均値と１組の量子化待ちデータの絶対値の平均値との間の差異に基づいて、複数ペアの切捨て閾値の中から１ペアの切捨て閾値を選択して、１組の量子化待ちデータの量子化に用いる。本願の発明者は、検討および大量の試験を通じて、量子化前後のデータの絶対値の平均値の差異によって、量子化前後の精度損失が反映されることを、発見し、ここで、絶対値の平均値の差異が小さいほど、量子化操作の精度損失が小さい。このため、本発明の実施例は、挑選最適な切捨て閾値を選択するための指標として、量子化前後のデータの絶対値の平均値の差異を使用することによって、従来のＫＬ方法よりももっと小さい精度損失を実現できる。
【００４５】
幾つかの実施例において、量子化後のデータの絶対値の平均値と量子化待ちデータの絶対値の平均値との間の差異は、二つの絶対値の平均値の間の差分値であってもよい。オプションとして、量子化後のデータの絶対値の平均値と量子化待ちデータの絶対値の平均値との間の差異は、二つの絶対値の平均値の間の差分値を量子化待ちデータの絶対値の平均値で除算してから絶対値を求めて得られる値であってもよい。
【００４６】
幾つかの実施例において、最適な１ペアの切捨て閾値を選択した後に、選択した１ペアの切捨て閾値を使用して１組の量子化待ちデータを量子化することによって、量子化後のデータを得ることは、１組の量子化待ちデータの中の切捨て正の値よりも大きい数値を切捨て正の値に切捨てし、１組の量子化待ちデータの中の切捨て負の値よりも小さい数値を切捨て負の値に切捨てしてから、得られた量子化後のデータをニューラルネットワークモデル処理に用いることを含む。
【００４７】
図６は、本発明の実施例に係る対称量子化に用いられる切捨て閾値を検索する方法６００を示すフローチャートであり、方法６００は、量子化待ちデータに基づいて最適な１ペアの切捨て閾値を確定して、データの量子化に用いる。
【００４８】
ブロック６０２において、量子化待ちデータの絶対値の平均値および量子化待ちデータの中の絶対値最大値を確定し、ここで、絶対値の平均値は、量子化待ちデータの中のすべてのデータの絶対値の和を要素の数で除算して得られる値であり、なお、最小平均値の差異を初期化し、例えば、浮動小数点数の中の最大値を初期設定し、循環検索の検索順序ｉ（例えば０に初期化する）を初期化する。幾つかの実施例において、検索順序ｉは、合計検索回数の半分に初期化されてもよく、すなわち、中間から検索し始めてもよく、このようにして検索効率をたかめることができる。本発明の実施例によると、１回りまたは複数回りの閾値検索過程を設定し、各回りの閾値検索は、同一の合計検索回数または異なる合計検索回数を有しても良い。幾つかの実施例において、各回りの合計検索回数は、１０から３２の間に設定できる。一般的に、合計検索回数が多いほど、消費する検索時間が長く、検索された切捨て閾値も精確である。しかしながら、合計検索回数がある値に達した後に、検索効果がこれ以上本質的に向上されない可能性がある。
【００４９】
続いて、１番目の回りの粗粒度の切捨て閾値検索過程を始める。例えば、図７Ａは、本発明の実施例に係る対称量子化に用いられる切捨て閾値を粗粒度に検索するための例示的な図７００を示す。図７Ａに示すように、量子化待ちデータの中から、１０個の候補切捨て閾値（図７Ａで点線で示す）を確定し、順次にこれら１０ペアの切捨て閾値（図７Ａで、切捨て正の値のみを示し、対応する切捨て負の値を示していない）を使用して量子化過程を実行し、量子化前後のデータの絶対値の平均値の差異に基づいて最適な１ペアの切捨て閾値を確定できる。
【００５０】
ブロック６０４において、検索順序ｉが合計検索回数未満であるか否かを判断し、すなわち、各ペアの切捨て閾値を順次に選択して量子化を実行するときに、すべてのペアの切捨て閾値の計算が既に完成されたか否かを判断する。検索順序ｉが合計検索回数未満であると、ブロック６０６において、現在の検索順序ｉに基づいて、１ペアの切捨て閾値を確定し、このペアの切捨て閾値は、それぞれ、−絶対値最大値／合計検索回数＊(ｉ＋１)、および、絶対値最大値／合計検索回数＊(ｉ＋１)である。ブロック６０８において、このペアの切捨て閾値を使用して量子化待ちデータを量子化して、該当する量子化後データＱｕａｎｔ_ｄａｔａ_ｉを得、その後、ブロック６１０において、量子化後のデータの絶対値の平均値Ｑｕａｎｔ_ｄａｔａ_ｍｅａｎ_ｉと量子化待ちデータの絶対値の平均値Ｄａｔａ_ｍｅａｎとの間の差異Ｄｉｓｔａｎｃｅ_ｉ ＝ ａｂｓ(Ｑｕａｎｔ_ｄａｔａ_ｍｅａｎ_ｉ − Ｄａｔａ_ｍｅａｎ)／ Ｄａｔａ_ｍｅａｎを計算する。
【００５１】
ブロック６１２において、計算された差異Ｄｉｓｔａｎｃｅ_ｉが現在最小差異未満であるか否かを判断する。未満であると、ブロック６１４において、計算された差異Ｄｉｓｔａｎｃｅ_ｉを現在最小差異に設定し、差異が最小であるときの切捨て閾値を記録し、その後、ブロック６１６において、検索順序ｉ（即ｉ＋＋）をインクリメントする。ブロック６１２で未満ではないと判断されると、直接、ブロック６１６において、検索順序ｉをインクリメントし、すなわち、次の１ペアの切捨て閾値のときの差異を確定し続ける。続いて、ステップ６０４から６１６を循環し続けて、検索順序ｉの値が合計検索回数に達すると、ブロック６１８において、１番目の回りの切捨て閾値の検索過程を終了する。図７Ａに示すように、１番目の回りの検索を通じて、点線７７０のところの切捨て閾値に対応する差異が最小であると確定される。これにより分るように、切捨て閾値の検索過程は、複数ペアの切捨て閾値を使用して量子化待ちデータに対して量子化を実行し、複数組の量子化後のデータの中から、量子化待ちデータ在絶対値の平均値との差異が最小である１組の量子化後のデータを確定し、その後、複数ペアの切捨て閾値の中からこの組の量子化後のデータに対応する１ペアの切捨て閾値を選択することである。
【００５２】
オプションとして、２番目の回りの細粒度の切捨て閾値検索過程を実行でき、２番目の回りの検索過程は方法６００を参考してよく、ただ、２番目の回りの検索は１番目の回りの最適な切捨て閾値７７０の周囲の一定の範囲内（例えば、選択した切捨て閾値７７０の前の一つの切捨て閾値と後の一つの切捨て閾値との間）で実行され、１番目の回りの検索結果に対する更なる精密化である。例えば、２番目の回りの検索の場合、各ペアの切捨て閾値同士の間の間隔は、(絶対値最大値＊２)／(１番目の回りの合計検索回数＊２番目の回りの合計検索回数)であってもよい。図７Ｂは、本発明の実施例に係る対称量子化に用いられる切捨て閾値を細粒度に検索するための図７５０を示し、図７Ｂを参考すると、２番目の回りの検索を通じて、細粒度の最適な切捨て閾値を７７２および７７８として確定する。２回り検索の方式によって、もっと正確な切捨て閾値を得ることができ、量子化による精度損失をさらに低減できる。
【００５３】
図８は、本発明の実施例に係る最適な切捨て閾値を反復検索するための方法８００を示すフローチャートである。ブロック８０２において、３ペアの切捨て閾値を確定し、例えば、量子化待ちデータＦｘの中のすべてのデータの絶対値最大値ａｂｓｍａｘを確定でき、３ペアの切捨て閾値は、それぞれ、（−ａｂｓｍａｘ／２、ａｂｓｍａｘ／２）、（−ａｂｓｍａｘ＊３／４、ａｂｓｍａｘ＊３／４）、および、（−ａｂｓｍａｘ、ａｂｓｍａｘ）である。
【００５４】
2022501674.tif 000003
【００５５】
ブロック８０６において、最小差異ｄｉｆｆ＿ｍｉｎが事前に設定した所定閾値未満であるか否かを判断する。未満ではないと、ブロック８０８において、選択した１ペアの切捨て閾値に基づいて（最小差異ｄｉｆｆ＿ｍｉｎに対応する値を新たな絶対値最大値に設定する）、再度３ペアの切捨て閾値を確定し、上述した過程を繰り返し、最小差異ｄｉｆｆ＿ｍｉｎが所定閾値未満になると、ブロック８１０において、切捨て閾値の反復過程を終了する。幾つかの実施例において、最小差異ｄｉｆｆ＿ｍｉｎが所定閾値未満であるこの反復停止条件に加えて、さらに、例えば、最大反復回数を設定すること、所定の最小間隔に達することなどの、他の反復停止条件を設定でき。また、図８の方法８００で最適な１ペアの切捨て閾値を反復して選択することを示したが、反復を実行せずに、１回のみを実行した後に、最小差異ｄｉｆｆ＿ｍｉｎに対応する１ペアの切捨て閾値を直接最終の切捨て閾値としてもよい。
【００５６】
幾つかの実施例において、以下の式（１）〜（３）に従って各ペアの切捨て閾値を使用してデータを量子化するときの量子化パラメータを確定できる。
2022501674.tif 000004
【００５７】
ここで、ｐは、量子化待ちデータの中の絶対値最大値であり、ｎは、量子化後のバイナリビット数を示し、Ｓおよびｆは、量子化パラメータを示し、ｃｅｉｌは、切り上げ丸めを示す。
【００５８】
2022501674.tif 000005
【００５９】
前述した各方法の実施例において、簡単に説明するために、それらをいずれも一連の動作の組み合わせとして表現したが、当業者は、本発明は説明された動作の順序に限定されないし、なぜなら、本発明によるといくつかのステップを他の順序で実行するかまたは同時に実行できることを了解すべきであることを説明する必要がある。次に、当業者は、明細書に説明された実施例は、いずれもオプションとする実施例に属し、関わる動作およびモジュールは必ずとして本発明にとって必須なものではないことも理解すべきである。
【００６０】
フローチャートでの各ステップは矢印に従って順に示したが、これらステップは必ずとして矢印が示す順序に従って順に実行する必要がないことをさらに説明する必要がある。本明細書に明確な説明がない限り、これらステップの実行に対して厳密の順序を限定しなく、これらステップを他の順序に従って実行してもよい。さらに、フローチャートでの少なくとも一部ステップは、複数のサブステップまたは複数の段階を含んでもよく、これらサブステップまたは段階は、必ずとして一つのタイミングで実行を完成させる必要がなく、異なるタイミングで実行させてもよいし、これらサブステップまたは段階の実行順序も必ずとして順に実行させる必要がなく、他のステップまたは他のステップのサブステップまたは段階の少なくとも一部と交互または交替に実行させることができる。
【００６１】
図９は、本発明の実施例に係るデータを処理するための装置９００を示すブロック図である。図９に示すように、装置９００は、量子化待ちデータ取得ユニット９１０と、量子化後データ確定ユニット９２０と、切捨て閾値選択ユニット９３０と、を備える。量子化待ちデータ取得ユニット９１０は、機械学習モデルに用いられる１組の量子化待ちデータを取得する。量子化後データ確定ユニット９２０は、複数ペアの切捨て閾値を使用してそれぞれ１組の量子化待ちデータを量子化することによって、複数組の量子化後のデータを確定し、複数ペアの切捨て閾値の中の各ペアの切捨て閾値は、対称的な切捨て正の値と切捨て負の値とを含む。切捨て閾値選択ユニット９３０は、複数組の量子化後のデータの中の各組の量子化後のデータの絶対値の平均値と１組の量子化待ちデータの絶対値の平均値との間の差異に基づいて、複数ペアの切捨て閾値の中から１ペアの切捨て閾値を選択して、１組の量子化待ちデータの量子化に用いる。
【００６２】
なお、装置９００中の量子化待ちデータ取得ユニット９１０と、量子化後データ確定ユニット９２０と、切捨て閾値選択ユニット９３０とは、さらに、本発明の各実施例に係るステップおよび／または動作を実行するように構成されてもよい。
【００６３】
上述した装置の実施例は、ただモード的なものであり、本発明の装置は、さらに他の方式によって実現されてもよいことを理解すべきである。例えば、上述した実施例中の前記ユニット／モジュールの分割は、ただ論理的機能分割であり、実際に実現において他の分割方式があり得る。例えば、複数のユニット、モジュール、または、アセンブリは、組み合わせてもよいし、もう一つのシステムに統合されてもよく、あるいは、幾つかの特徴は、省略されてもよいし、実行されなくてもよい。
【００６４】
また、特に説明しない限り、本発明の各実施例中の各機能ユニット／モジュールは、一つのユニット／モジュール中に統合されてもよいし、各ユニット／モジュールが単独的に物理的に存在してもよいし、二つまたは二つ以上ユニット／モジュールが一つに統合されてもよい。上述した統合されたユニット／モジュールは、ハードウェアの形式を利用して実現されてもよいし、ソフトウェアプログラムモジュールの形式を利用して実現されてもよい。
【００６５】
前記統合されたユニット／モジュールがハードウェアの形式で実現される場合、当該ハードウェアは、数値回路、アナログ回路などであり得る。ハードウェア構成の物理的な実現は、トランジスタ、メモリスタなどを含むが、これらに限定されない。特に説明しない限り、前記人工知能プロセッサは、例えばＣＰＵ、ＧＰＵ、ＦＰＧＡ、ＤＳＰ、ＡＳＩＣなどの、いかなる適当なハードウェアプロセッサであり得る。特に説明しない限り、前記記憶ユニットは、例えば、抵抗メモリＲＲＡＭ（Ｒｅｓｉｓｔｉｖｅ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、動的ランダムアクセスメモリＤＲＡＭ（Ｄｙｎａｍｉｃ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、静的ランダムアクセスメモリＳＲＡＭ（Ｓｔａｔｉｃ Ｒａｎｄｏｍ−Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、拡張動的ランダムアクセスメモリＥＤＲＡＭ（Ｅｎｈａｎｃｅｄ Ｄｙｎａｍｉｃ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、 高帯域幅メモリＨＢＭ（Ｈｉｇｈ−Ｂａｎｄｗｉｄｔｈ Ｍｅｍｏｒｙ）、ハイブリッドメモリキューブＨＭＣ（Ｈｙｂｒｉｄ Ｍｅｍｏｒｙ Ｃｕｂｅ）などの、いかなる適当な磁気記憶媒体あるいは光磁気記憶媒体であり得る。
【００６６】
前記統合されたユニット／モジュールは、ソフトウェアプログラムモジュールの形式で実現され、独立的にした製品として販売または使用される場合、一つのコンピュータ可読取メモリに記憶されてもよい。このような理解に基づいて、本発明の技術案は、本質上、あるいは、先行技術に寄与する部分、あるいは、当該技術案のすべてのまたは一部は、ソフトウェア製品の形式で具現されてもよく、当該コンピュータソフトウェア製品は一つのメモリに記憶され、一つのコンピュータデバイス（パーソナルコンピュータ、サーバ、ネットワークデバイスなどであり得る）に本発明の各実施例に記載の方法のすべてのまたは一部のステップを実行させるためのいくつかの命令を含む。前述したメモリは、Ｕディスク、読み取り専用メモリ（ＲＯＭ、Ｒｅａｄ−Ｏｎｌｙ Ｍｅｍｏｒｙ）、ランダムアクセスメモリ（ＲＡＭ、Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、モバイルハードディスク、磁気ディスク、光ディスクなどの、いろんなプログラムコードを記憶できる媒体を含む。
【００６７】
一つの実施例において、コンピュータ可読記憶媒体を開示し、当該コンピュータ可読記憶媒体には、コンピュータプログラムが記憶されており、プログラムが実行されると、本発明の各実施例に係る方法が実現される。
一つの実施例において、人工知能チップをさらに開示し、当該人工知能チップは、上述したデータデータを処理するための装置を含む。
【００６８】
一つの実施例において、ボードカードをさらに開示し、前記ボードカードは、記憶部品と、インターフェース装置と、制御部品と、上述した人工知能チップと、を備え、ここで、前記人工知能チップは、前記記憶部品、前記制御部品、および、前記インターフェース装置と、それぞれ接続され、前記記憶部品は、データを記憶し、前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現し、前記制御部品は、前記人工知能チップの状態を監視制御する。
【００６９】
図１０は、本発明の実施例に係るボードカード１０００の構成を示すブロック図であり、図１０を参考すると、上述したボードカード１０００は、上述したチップ１０３０−１および１０３０−２（総称してチップ１０３０と呼ばれる）に加えて、他のサポート部件をさらに備えてもよく、当該サポート部件は、記憶部品１０１０と、インターフェース装置１０４０と、制御部品１０２０とを、含むが、これらに限定されない。インターフェース装置１０４０は、外部デバイス１０６０と接続できる。記憶部品１０１０は、人工知能チップ１０３０とバス１０５０を介して接続され、データを記憶するために用いられる。記憶部品１０１０は、複数組の記憶ユニット１０１０−１および１０１０−２を含んでもよい。各組の前記記憶ユニットは、前記人工知能チップとバス１０５０を介して接続される。各組の前記記憶ユニットは、ＤＤＲ ＳＤＲＡＭ（英語：Ｄｏｕｂｌｅ Ｄａｔａ Ｒａｔｅ ＳＤＲＡＭ、ダブルレート同期ダイナミックランダムアクセスメモリ）であってもよいことを理解できる。
【００７０】
ＤＤＲは、クロック周波数を上げずにＳＤＲＡＭの速度を２倍にすることができる。ＤＤＲは、クロックパルスの上がりエンジと下がりエンジでデータを読み取ることができる。ＤＤＲの速度は、標準ＳＤＲＡＭの２倍である。一つの実施例において、前記グリッド納装置は、４組の前記グリッド納ユニットを備えてもよい。各組の前記グリッド納ユニットは、複数のＤＤＲ４粒子（チップ）を備えてもよい。一つの実施例において、前記ニューラルネットワークチップの内部は、４個の７２ビットＤＤＲ４コントローラを備えてもよく、上記の７２ビットＤＤＲ４コントローラ中の６４ｂｉｔは、データ伝送に使用され、８ｂｉｔは、ＥＣＣ検証に使用される。各組の前記グリッド納ユニットでＤＤＲ４-３２００粒子を使用する場合、データ伝送する理論上の帯域幅が２５６００ＭＢ／ｓに達することを理解できる。
【００７１】
一つの実施例において、各組の前記グリッド納ユニットは、複数の並列に配置されたダブルレート同期ダイナミックランダムアクセスメモリを備える。ＤＤＲは、一つのクロックサイクルでデータを２回伝送することができる。前記チップ中にＤＤＲを制御ためのコントローラを配置して、各々の前記グリッド納ユニットのデータ伝送およびデータグリッド納に対する制御に使用する。
【００７２】
前記インターフェース装置は、前記ニューラルネットワークチップと電気的に接続される。前記インターフェース装置は、前記ニューラルネットワークチップと外部デバイス（例えば、サーバまたはコンピュータ）との間のデータ伝送を実現するために使用される。例えば、一つの実施例において、前記インターフェース装置は、標準ＰＣＩＥインターフェースであってもよい。例えば、処理待ちのデータは、サーバから標準ＰＣＩＥインターフェースを介して前記チップに伝送されて、データ移送が実現される。好ましくは、ＰＣＩＥ ３.０ Ｘ １６インターフェースを使用して伝送する場合、理論上の帯域幅が１６０００ＭＢ／ｓに達することができる。もう一つの実施例において、前記インターフェース装置は、さらに、他のインターフェースであってもよく、前記インターフェースユニットが中継接続機能を実現できる限り、本願は上記の他のインターフェースの具体的な表現形式に対して限定しない。また、前記ニューラルネットワークチップの計算結果は、依然として、前記インターフェース装置によって外部デバイス（例えば、サーバ）に伝送し返される。
【００７３】
前記制御デバイスは、前記ニューラルネットワークチップと電気的に接続される。前記制御デバイスは、前記ニューラルネットワークチップの状態を監視制御するために使用される。具体的に、前記ニューラルネットワークチップは、前記制御デバイスとＳＰＩインターフェースを介して電気的に接続されてもよい。前記制御デバイスは、シングルチップマイクロコンピュータ（Ｍｉｃｒｏ Ｃｏｎｔｒｏｌｌｅｒ Ｕｎｉｔ、ＭＣＵ）を含んでもよい。前記ニューラルネットワークチップは、複数の処理チップ、複数の処理コア、または、複数の処理回路を含んでもよく、複数の負荷を駆動できる。このため、前記人工知能チップは、複数の負載および軽負載などの異なる工作状態になることができる。前記制御装置によって、前記人工知能チップ中の複数の処理チップ、複数の処理、および／または、複数の処理回路の工作状態に対する調整制御を実現できる。
【００７４】
可能な一実現形態において、電子デバイスを開示し、当該電子デバイスは上記のニューラルネットワークチップを備える。電子デバイスは、データ処理装置、ロボット、コンピュータ、プリンター、スキャナー、タブレットコンピュータ、スマート端末、携帯電話、ドライビングレコーダー、ナビゲーター、センサ、Ｗｅｂカメラ、サーバ、クラウドサーバ、カメラ、ビデオカメラ、プロジェクター、腕時計、ヘッドセット、モバイルストレージ、ウェアラブルデバイス、交通ツール、家電製品、及び／又は、医療機器を含む。
【００７５】
前記交通ツールは、飛行機、船、及び／又は、車両を含み、前記家電製品は、テレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスストーブ、および、レンジフードを含み、前記医療機器は、核磁気共鳴装置、Ｂ超音波装置、及び／又は、心電計を含む。
【００７６】
上述した実施例において、各実施例に対する説明はそれぞれ重点を置き、ある実施例には詳細な説明がない場合、他の実施例の中の関連説明を参照することができる。上記の実施例の各技術特徴は、任意に組み合わせることができ、記載を簡潔にするために、上記の実施例の中の各技術特徴の全ての可能な組合せを記載していないが、これらの技術特徴の組合せに矛盾が発生されない限り、いずれも本明細書に記載の範囲であると見なされるべきである。
以下の条項によって前述した内容をよりよく理解できる。
Ａ１．データを処理するための方法であって、
機械学習モデルに用いられる１組の量子化待ちデータを取得するステップと、
【００７７】
複数ペアの切捨て閾値を使用してそれぞれ前記１組の量子化待ちデータを量子化することによって、複数組の量子化後のデータを確定するステップであって、前記複数ペアの切捨て閾値の中の各ペアの切捨て閾値は、対称的な切捨て正の値と切捨て負の値とを含むステップと、
【００７８】
前記複数組の量子化後のデータの中の各組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の差異に基づいて、前記複数ペアの切捨て閾値の中から１ペアの切捨て閾値を選択して、前記１組の量子化待ちデータの量子化に用いるステップと、を含む
ことを特徴とする前記方法。
Ａ２．複数組の量子化後のデータを確定するステップは、
前記１組の量子化待ちデータの中のすべてのデータの絶対値最大値を確定するステップと、
前記絶対値最大値に基づいて、前記複数ペアの切捨て閾値を確定するステップと、を含む
ことを特徴とする条項Ａ１に記載の前記方法。
Ａ３．複数組の量子化後のデータを確定するステップは、
前記絶対値最大値、所定の合計検索回数、および、現在検索順序に基づいて、第１切捨て正の値を確定するステップと、
【００７９】
１番目のペアの切捨て閾値を使用して前記１組の量子化待ちデータを量子化することによって、１番目の組の量子化後のデータを確定するステップであって、前記１番目のペアの切捨て閾値は、前記第１切捨て正の値と、前記第１切捨て正の値と反対の第１切捨て負の値と、を含むステップと、
前記１番目の組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の第１差異を確定するステップと、をさらに含む
ことを特徴とする条項Ａ２に記載の前記方法。
Ａ４．複数組の量子化後のデータを確定するステップは、
前記現在検索順序をインクリメントするステップと、
前記絶対値最大値、前記所定の合計検索回数、および、前記現在検索順序に基づいて、第２切捨て正の値を確定するステップと、
【００８０】
２番目のペアの切捨て閾値を使用して前記１組の量子化待ちデータを量子化することによって、２番目の組の量子化後のデータを確定するステップであって、前記２番目のペアの切捨て閾値は、前記第２切捨て正の値と、前記第２切捨て正の値と反対の第２切捨て負の値と、を含むステップと、
前記２番目の組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の第２差異を確定するステップと、をさらに含む
ことを特徴とする条項Ａ３に記載の前記方法。
Ａ５．前記複数ペアの切捨て閾値の中から１ペアの切捨て閾値を選択するステップは、
前記複数組の量子化後のデータ中で前記１組の量子化待ちデータとの絶対値の平均値の差異が最小である１組の量子化後のデータを確定するステップと、
前記複数ペアの切捨て閾値の中から前記１組の量子化後のデータと対応する１ペアの切捨て閾値を選択するステップと、を含む
ことを特徴とする条項Ａ１−Ａ４のいずれか１項に記載の前記方法。
Ａ６．選択した前記１ペアの切捨て閾値に関連付けられた切捨て検索範囲を確定するステップと、
前記切捨て検索範囲内に位置する新たな複数ペアの切捨て閾値を確定するステップと、
【００８１】
前記新たな複数ペアの切捨て閾値を使用してそれぞれ前記１組の量子化待ちデータを量子化することによって、新たな複数組の量子化後のデータを確定するステップと、
【００８２】
前記新たな複数組の量子化後のデータの中の各組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の差異に基づいて、前記新たな複数ペアの切捨て閾値の中から新たな１ペアの切捨て閾値を選択するステップと、をさらに含む
ことを特徴とする条項Ａ５に記載の前記方法。
Ａ７．複数組の量子化後のデータを確定するステップは、
前記１組の量子化待ちデータの中のすべてのデータの絶対値最大値を確定するステップと、
【００８３】
前記絶対値最大値に基づいて、３ペアの切捨て閾値を確定するステップであって、前記３ペアの切捨て閾値中の１番目のペアの切捨て閾値は、前記絶対値最大値の半分と、その反対の値と、を含み、前記３ペアの切捨て閾値中の２番目のペアの切捨て閾値は、前記絶対値最大値の４分の３と、その反対の値と、を含み、前記３ペアの切捨て閾値中の３番目のペアの切捨て閾値は、前記絶対値最大値と、その反対の値と、を含むステップと、
３ペアの切捨て閾値を使用してそれぞれ前記１組の量子化待ちデータを量子化することによって、３組の量子化後のデータを確定するステップと、を含む
ことを特徴とする条項Ａ１に記載の前記方法。
【００８４】
Ａ８．前記複数ペアの切捨て閾値の中から１ペアの切捨て閾値を選択するステップは、
停止条件を満たすまで、以下の動作を反復実行するステップを含み、当該動作は、
前記３ペアの切捨て閾値の中から１ペアの切捨て閾値を選択する動作と、
選択した１ペアの切捨て閾値と対応する差異が所定閾値未満であるか否かを確定する動作と、
前記差異が所定閾値未満であることに応答して、動作の反復実行を停止する動作と、
前記差異が所定閾値よりも大きいことに応答して、選択した１ペアの切捨て閾値に基づいて、再度３ペアの切捨て閾値を確定する動作と、を含む
ことを特徴とする条項Ａ７に記載の前記方法。
【００８５】
Ａ９．前記１組の量子化待ちデータは、ニューラルネットワークモデル中の１組の浮動小数点数であり、
前記方法は、
【００８６】
選択した１ペアの切捨て閾値を使用して前記１組の量子化待ちデータを量子化することによって量子化後のデータを得るステップであって、前記１組の量子化待ちデータを量子化することは、前記１組の量子化待ちデータ中の、切捨て正の値よりも大きい数値を、前記切捨て正の値に設定し、前記１組の量子化待ちデータ中の、切捨て負の値よりも小さい数値を、前記切捨て負の値に設定するステップと、
【００８７】
得られた量子化後のデータを前記ニューラルネットワークモデルに入力して、処理に用いるステップと、をさらに含む
ことを特徴とする条項Ａ１−Ａ８のいずれか１項に記載の前記方法。
Ａ１０．データを処理するための装置であって、
機械学習モデルに用いられる１組の量子化待ちデータを取得するための量子化待ちデータ取得ユニットと、
【００８８】
複数ペアの切捨て閾値を使用してそれぞれ前記１組の量子化待ちデータを量子化することによって、複数組の量子化後のデータを確定するための量子化後データ確定ユニットであって、前記複数ペアの切捨て閾値の中の各ペアの切捨て閾値は、対称的な切捨て正の値と切捨て負の値とを含む量子化後データ確定ユニットと、
【００８９】
前記複数組の量子化後のデータの中の各組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の差異に基づいて、前記複数ペアの切捨て閾値の中から１ペアの切捨て閾値を選択して、前記１組の量子化待ちデータの量子化に用いるための切捨て閾値選択ユニットと、を備える
ことを特徴とする前記装置。
【００９０】
Ａ１１．前記量子化後データ確定ユニットは、
前記１組の量子化待ちデータの中のすべてのデータの絶対値最大値を確定するための絶対値最大値確定ユニットと、
前記絶対値最大値に基づいて前記複数ペアの切捨て閾値を確定するための複数ペア切捨て閾値確定ユニットと、を備える
ことを特徴とする条項Ａ１０に記載の前記装置。
【００９１】
Ａ１２．前記量子化後データ確定ユニットは、
前記絶対値最大値、所定の合計検索回数、および、現在検索順序に基づいて、第１切捨て正の値を確定するための第１切捨て正の値確定ユニットと、
【００９２】
１番目のペアの切捨て閾値を使用して前記１組の量子化待ちデータを量子化することによって、１番目の組の量子化後のデータを確定するための１番目組量子化後データ確定ユニットであって、前記１番目のペアの切捨て閾値は、前記第１切捨て正の値と、前記第１切捨て正の値と反対の第１切捨て負の値と、を含む１番目組量子化後データ確定ユニットと、
【００９３】
前記１番目の組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の第１差異を確定するための第１差異確定ユニットと、をさらに備える
ことを特徴とする条項Ａ１１に記載の前記装置。
【００９４】
Ａ１３．前記量子化後データ確定ユニットは、
前記現在検索順序をインクリメントするためのインクリメントユニットと、
前記絶対値最大値、前記所定の合計検索回数、および、前記現在検索順序に基づいて、第２切捨て正の値を確定するための第２切捨て正の値確定ユニットと、
【００９５】
２番目のペアの切捨て閾値を使用して前記１組の量子化待ちデータを量子化することによって、２番目の組の量子化後のデータを確定するための２番目組量子化後データ確定ユニットであって、前記２番目のペアの切捨て閾値は、前記第２切捨て正の値と、前記第２切捨て正の値と反対の第２切捨て負の値と、を含む２番目組量子化後データ確定ユニットと、
【００９６】
前記２番目の組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の第２差異を確定するための第２差異確定ユニットと、をさらに備える
ことを特徴とする条項Ａ１２に記載の前記装置。
Ａ１４．前記切捨て閾値選択ユニットは、
【００９７】
前記複数組の量子化後のデータ中で前記１組の量子化待ちデータとの絶対値の平均値の差異が最小である１組の量子化後のデータを確定するための最小差異確定ユニットと、
前記複数ペアの切捨て閾値の中から前記１組の量子化後のデータと対応する１ペアの切捨て閾値を選択するための第２切捨て閾値選択ユニットと、を備える
ことを特徴とする条項Ａ１０乃至Ａ１３のいずれか１項に記載の前記装置。
【００９８】
Ａ１５．選択した前記１ペアの切捨て閾値に関連付けられた切捨て検索範囲を確定するための切捨て検索範囲確定ユニットと、
前記切捨て検索範囲内に位置する新たな複数ペアの切捨て閾値を確定するための新たな複数ペア切捨て閾値確定ユニットと、
【００９９】
前記新たな複数ペアの切捨て閾値を使用してそれぞれ前記１組の量子化待ちデータを量子化することによって、新たな複数組の量子化後のデータを確定するための第２量子化後データ確定ユニットと、
【０１００】
前記新たな複数組の量子化後のデータの中の各組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の差異に基づいて、前記新たな複数ペアの切捨て閾値の中から新たな１ペアの切捨て閾値を選択するための第３切捨て閾値選択ユニットと、をさらに備える
ことを特徴とする条項Ａ１４に記載の前記装置。
Ａ１６．前記量子化後データ確定ユニットは、
前記１組の量子化待ちデータの中のすべてのデータの絶対値最大値を確定するための絶対値最大値確定ユニットと、
【０１０１】
前記絶対値最大値に基づいて、３ペアの切捨て閾値を確定するための３ペア切捨て閾値確定ユニットであって、前記３ペアの切捨て閾値中の１番目のペアの切捨て閾値は、前記絶対値最大値の半分と、その反対の値と、を含み、前記３ペアの切捨て閾値中の２番目のペアの切捨て閾値は、前記絶対値最大値の４分の３と、その反対の値と、を含み、前記３ペアの切捨て閾値中の３番目のペアの切捨て閾値は、前記絶対値最大値と、その反対の値と、を含む３ペア切捨て閾値確定ユニットと、
【０１０２】
３ペアの切捨て閾値を使用してそれぞれ前記１組の量子化待ちデータを量子化することによって、３組の量子化後のデータを確定するための３組量子化後データ確定ユニットと、を備える
ことを特徴とする条項Ａ１０に記載の前記装置。
【０１０３】
Ａ１７．前記切捨て閾値選択ユニットは、
停止条件を満たすまで、以下の動作を反復実行するための反復ユニットを備え、
当該動作は、
前記３ペアの切捨て閾値の中から１ペアの切捨て閾値を選択する動作と、
選択した１ペアの切捨て閾値と対応する差異が所定閾値未満であるか否かを確定する動作と、
前記差異が所定閾値未満であることに応答して、動作の反復実行を停止する動作と、
前記差異が所定閾値よりも大きいことに応答して、選択した１ペアの切捨て閾値に基づいて、再度３ペアの切捨て閾値を確定する動作と、を含む
ことを特徴とする条項Ａ１６に記載の前記装置。
【０１０４】
Ａ１８．前記１組の量子化待ちデータは、ニューラルネットワークモデル中の１組の浮動小数点数であり、
前記装置は、
【０１０５】
選択した１ペアの切捨て閾値を使用して前記１組の量子化待ちデータを量子化することによって量子化後のデータを得るためのデータ量子化ユニットであって、前記１組の量子化待ちデータを量子化することは、前記１組の量子化待ちデータ中の、切捨て正の値よりも大きい数値を、前記切捨て正の値に設定し、前記１組の量子化待ちデータ中の、切捨て負の値よりも小さい数値を、前記切捨て負の値に設定するデータ量子化ユニットと、
得られた量子化後のデータを前記ニューラルネットワークモデルに入力して、処理に用いるためのデータ入力ユニットと、をさらに備える
ことを特徴とする条項Ａ１０乃至Ａ１７のいずれか１項に記載の前記装置。
【０１０６】
Ａ１９．コンピュータ可読記憶媒体であって、
【０１０７】
前記コンピュータ可読記憶媒体には、コンピュータプログラムが記憶されており、前記プログラムが実行されると、条項Ａ１乃至Ａ９のいずれか１項に記載の前記方法が実現される
ことを特徴とするコンピュータ可読記憶媒体。
【０１０８】
Ａ２０．人工知能チップであって、
前記チップは、条項Ａ１０乃至Ａ１８のいずれか１項に記載のデータを処理するための装置を備える
ことを特徴とする人工知能チップ。
【０１０９】
Ａ２１．電子デバイスであって、
前記電子デバイスは、条項Ａ２０に記載の人工知能チップを含む
ことを特徴とする電子デバイス。
【０１１０】
Ａ２２．ボードカードであって、
前記ボードカードは、記憶部品と、インターフェース装置と、制御部品と、条項Ａ２０に記載の人工知能チップと、を備え、
ここで、前記人工知能チップは、前記記憶部品、前記制御部品、および、前記インターフェース装置と、接続され、
【０１１１】
前記記憶部品は、データを記憶し、
前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現し、
前記制御部品は、前記人工知能チップの状態を監視制御する
ことを特徴とするボードカード。
【０１１２】
Ａ２３．前記記憶部品は、複数組の記憶ユニットを備え、各組の記憶ユニットは、前記人工知能チップとバスを介して接続され、前記記憶ユニットは、ＤＤＲ ＳＤＲＡＭであり、
前記チップは、ＤＤＲコントローラを備え、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に用いられ、
前記インターフェース装置は、標準ＰＣＩＥインターフェースである
ことを特徴とする条項Ａ２２記載のボードカード。
【０１１３】
以上、本発明の実施例を詳細に説明し、本明細書では具体的な例を適用して本発明の原理および実施形態を説明した。以上の実施例の説明は、本発明の方法およびその本旨の理解を助けるためにのみ使用される。同時に、当業者によって本発明の旨に依存して本発明の具体的な実施形態および適用範囲に基づいて行われた変更または修正は、いずれも本発明の保護しようとする範囲に属する。上記のように、本明細書の内容を本発明に対する制限として理解してはいけない。
【図１】
2022501674.tif 000006
【図２】
2022501674.tif 000007
【図３】
2022501674.tif 000008
【図４Ａ】
2022501674.tif 000009
【図４Ｂ】
2022501674.tif 000010
【図５】
2022501674.tif 000011
【図６】
2022501674.tif 000012
【図７Ａ】
2022501674.tif 000013
【図７Ｂ】
2022501674.tif 000014
【図８】
2022501674.tif 000015
【図９】
2022501674.tif 000016
【図１０】
2022501674.tif 000017
【手続補正書】
【提出日】令和2年11月30日(2020.11.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データを処理するための方法であって、
機械学習モデルに用いられる１組の量子化待ちデータを取得するステップと、
複数ペアの切捨て閾値を使用してそれぞれ前記１組の量子化待ちデータを量子化することによって、複数組の量子化後のデータを確定するステップであって、前記複数ペアの切捨て閾値の中の各ペアの切捨て閾値は、対称的な切捨て正の値と切捨て負の値とを含むステップと、
前記複数組の量子化後のデータの中の各組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の差異に基づいて、前記複数ペアの切捨て閾値の中から１ペアの切捨て閾値を選択して、前記１組の量子化待ちデータの量子化に用いるステップと、を含む
ことを特徴とする前記方法。
【請求項２】
複数組の量子化後のデータを確定するステップは、
前記１組の量子化待ちデータの中のすべてのデータの絶対値最大値を確定するステップと、
前記絶対値最大値に基づいて、前記複数ペアの切捨て閾値を確定するステップと、を含む
ことを特徴とする請求項１に記載の前記方法。
【請求項３】
複数組の量子化後のデータを確定するステップは、
前記絶対値最大値、所定の合計検索回数、および、現在検索順序に基づいて、第１切捨て正の値を確定するステップと、
１番目のペアの切捨て閾値を使用して前記１組の量子化待ちデータを量子化することによって、１番目の組の量子化後のデータを確定するステップであって、前記１番目のペアの切捨て閾値は、前記第１切捨て正の値と、前記第１切捨て正の値と反対の第１切捨て負の値と、を含むステップと、
前記１番目の組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の第１差異を確定するステップと、をさらに含む
ことを特徴とする請求項２に記載の前記方法。
【請求項４】
複数組の量子化後のデータを確定するステップは、
前記現在検索順序をインクリメントするステップと、
前記絶対値最大値、前記所定の合計検索回数、および、前記現在検索順序に基づいて、第２切捨て正の値を確定するステップと、
２番目のペアの切捨て閾値を使用して前記１組の量子化待ちデータを量子化することによって、２番目の組の量子化後のデータを確定するステップであって、前記２番目のペアの切捨て閾値は、前記第２切捨て正の値と、前記第２切捨て正の値と反対の第２切捨て負の値と、を含むステップと、
前記２番目の組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の第２差異を確定するステップと、をさらに含む
ことを特徴とする請求項３に記載の前記方法。
【請求項５】
前記複数ペアの切捨て閾値の中から１ペアの切捨て閾値を選択するステップは、
前記複数組の量子化後のデータ中で前記１組の量子化待ちデータとの絶対値の平均値の差異が最小である１組の量子化後のデータを確定するステップと、
前記複数ペアの切捨て閾値の中から前記１組の量子化後のデータと対応する１ペアの切捨て閾値を選択するステップと、を含む
ことを特徴とする請求項１乃至４のいずれか１項に記載の前記方法。
【請求項６】
選択した前記１ペアの切捨て閾値に関連付けられた切捨て検索範囲を確定するステップと、
前記切捨て検索範囲内に位置する新たな複数ペアの切捨て閾値を確定するステップと、
前記新たな複数ペアの切捨て閾値を使用してそれぞれ前記１組の量子化待ちデータを量子化することによって、新たな複数組の量子化後のデータを確定するステップと、
前記新たな複数組の量子化後のデータの中の各組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の差異に基づいて、前記新たな複数ペアの切捨て閾値の中から新たな１ペアの切捨て閾値を選択するステップと、をさらに含む
ことを特徴とする請求項５に記載の前記方法。
【請求項７】
複数ペアの切捨て閾値を使用してそれぞれ前記１組の量子化待ちデータを量子化することによって、複数組の量子化後のデータを確定するステップは、
前記１組の量子化待ちデータの中のすべてのデータの絶対値最大値を確定するステップと、
前記絶対値最大値に基づいて、３ペアの切捨て閾値を確定するステップであって、前記３ペアの切捨て閾値中の１番目のペアの切捨て閾値は、前記絶対値最大値の半分と、その反対の値と、を含み、前記３ペアの切捨て閾値中の２番目のペアの切捨て閾値は、前記絶対値最大値の４分の３と、その反対の値と、を含み、前記３ペアの切捨て閾値中の３番目のペアの切捨て閾値は、前記絶対値最大値と、その反対の値と、を含むステップと、
３ペアの切捨て閾値を使用してそれぞれ前記１組の量子化待ちデータを量子化することによって、３組の量子化後のデータを確定するステップと、を含む
ことを特徴とする請求項１に記載の前記方法。
【請求項８】
前記複数ペアの切捨て閾値の中から１ペアの切捨て閾値を選択するステップは、
停止条件を満たすまで、以下の動作を反復実行するステップを含み、
当該動作は、
前記３ペアの切捨て閾値の中から１ペアの切捨て閾値を選択する動作と、
選択した１ペアの切捨て閾値と対応する差異が所定閾値未満であるか否かを確定する動作と、
前記差異が所定閾値未満であることに応答して、動作の反復実行を停止する動作と、
前記差異が所定閾値よりも大きいことに応答して、選択した１ペアの切捨て閾値に基づいて、再度３ペアの切捨て閾値を確定する動作と、を含む
ことを特徴とする請求項７に記載の前記方法。
【請求項９】
前記１組の量子化待ちデータは、ニューラルネットワークモデル中の１組の浮動小数点数であり、
前記方法は、
選択した１ペアの切捨て閾値を使用して前記１組の量子化待ちデータを量子化することによって量子化後のデータを得るステップであって、前記１組の量子化待ちデータを量子化することは、前記１組の量子化待ちデータ中の、切捨て正の値よりも大きい数値を、前記切捨て正の値に設定し、前記１組の量子化待ちデータ中の、切捨て負の値よりも小さい数値を、前記切捨て負の値に設定するステップと、
得られた量子化後のデータを前記ニューラルネットワークモデルに入力して、処理に用いるステップと、をさらに含む
ことを特徴とする請求項１乃至８のいずれか１項に記載の前記方法。
【請求項１０】
データを処理するための装置であって、
機械学習モデルに用いられる１組の量子化待ちデータを取得するための量子化待ちデータ取得ユニットと、
複数ペアの切捨て閾値を使用してそれぞれ前記１組の量子化待ちデータを量子化することによって、複数組の量子化後のデータを確定するための量子化後データ確定ユニットであって、前記複数ペアの切捨て閾値の中の各ペアの切捨て閾値は、対称的な切捨て正の値と切捨て負の値とを含む量子化後データ確定ユニットと、
前記複数組の量子化後のデータの中の各組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の差異に基づいて、前記複数ペアの切捨て閾値の中から１ペアの切捨て閾値を選択して、前記１組の量子化待ちデータの量子化に用いるための切捨て閾値選択ユニットと、を備える
ことを特徴とする前記装置。
【請求項１１】
前記量子化後データ確定ユニットは、
前記１組の量子化待ちデータの中のすべてのデータの絶対値最大値を確定するための絶対値最大値確定ユニットと、
前記絶対値最大値に基づいて前記複数ペアの切捨て閾値を確定するための複数ペア切捨て閾値確定ユニットと、を備える
ことを特徴とする請求項１０に記載の前記装置。
【請求項１２】
前記量子化後データ確定ユニットは、
前記絶対値最大値、所定の合計検索回数、および、現在検索順序に基づいて、第１切捨て正の値を確定するための第１切捨て正の値確定ユニットと、
１番目のペアの切捨て閾値を使用して前記１組の量子化待ちデータを量子化することによって、１番目の組の量子化後のデータを確定するための１番目組量子化後データ確定ユニットであって、前記１番目のペアの切捨て閾値は、前記第１切捨て正の値と、前記第１切捨て正の値と反対の第１切捨て負の値と、を含む１番目組量子化後データ確定ユニットと、
前記１番目の組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の第１差異を確定するための第１差異確定ユニットと、をさらに備える
ことを特徴とする請求項１１に記載の前記装置。
【請求項１３】
前記量子化後データ確定ユニットは、
前記現在検索順序をインクリメントするためのインクリメントユニットと、
前記絶対値最大値、前記所定の合計検索回数、および、前記現在検索順序に基づいて、第２切捨て正の値を確定するための第２切捨て正の値確定ユニットと、
２番目のペアの切捨て閾値を使用して前記１組の量子化待ちデータを量子化することによって、２番目の組の量子化後のデータを確定するための２番目組量子化後データ確定ユニットであって、前記２番目のペアの切捨て閾値は、前記第２切捨て正の値と、前記第２切捨て正の値と反対の第２切捨て負の値と、を含む２番目組量子化後データ確定ユニットと、
前記２番目の組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の第２差異を確定するための第２差異確定ユニットと、をさらに備える
ことを特徴とする請求項１２に記載の前記装置。
【請求項１４】
前記切捨て閾値選択ユニットは、
前記複数組の量子化後のデータ中で前記１組の量子化待ちデータとの絶対値の平均値の差異が最小である１組の量子化後のデータを確定するための最小差異確定ユニットと、
前記複数ペアの切捨て閾値の中から前記１組の量子化後のデータと対応する１ペアの切捨て閾値を選択するための第２切捨て閾値選択ユニットと、を備える
ことを特徴とする請求項１０乃至１３のいずれか１項に記載の前記装置。
【請求項１５】
選択した前記１ペアの切捨て閾値に関連付けられた切捨て検索範囲を確定するための切捨て検索範囲確定ユニットと、
前記切捨て検索範囲内に位置する新たな複数ペアの切捨て閾値を確定するための新たな複数ペア切捨て閾値確定ユニットと、
前記新たな複数ペアの切捨て閾値を使用してそれぞれ前記１組の量子化待ちデータを量子化することによって、新たな複数組の量子化後のデータを確定するための第２量子化後データ確定ユニットと、
前記新たな複数組の量子化後のデータの中の各組の量子化後のデータの絶対値の平均値と前記１組の量子化待ちデータの絶対値の平均値との間の差異に基づいて、前記新たな複数ペアの切捨て閾値の中から新たな１ペアの切捨て閾値を選択するための第３切捨て閾値選択ユニットと、をさらに備える
ことを特徴とする請求項１４に記載の前記装置。
【請求項１６】
前記量子化後データ確定ユニットは、
前記１組の量子化待ちデータの中のすべてのデータの絶対値最大値を確定するための絶対値最大値確定ユニットと、
前記絶対値最大値に基づいて、３ペアの切捨て閾値を確定するための３ペア切捨て閾値確定ユニットであって、前記３ペアの切捨て閾値中の１番目のペアの切捨て閾値は、前記絶対値最大値の半分と、その反対の値と、を含み、前記３ペアの切捨て閾値中の２番目のペアの切捨て閾値は、前記絶対値最大値の４分の３と、その反対の値と、を含み、前記３ペアの切捨て閾値中の３番目のペアの切捨て閾値は、前記絶対値最大値と、その反対の値と、を含む３ペア切捨て閾値確定ユニットと、
３ペアの切捨て閾値を使用してそれぞれ前記１組の量子化待ちデータを量子化することによって、３組の量子化後のデータを確定するための３組量子化後データ確定ユニットと、を備える
ことを特徴とする請求項１０に記載の前記装置。
【請求項１７】
前記切捨て閾値選択ユニットは、
停止条件を満たすまで、以下の動作を反復実行するための反復ユニットを備え、
当該動作は、
前記３ペアの切捨て閾値の中から１ペアの切捨て閾値を選択する動作と、
選択した１ペアの切捨て閾値と対応する差異が所定閾値未満であるか否かを確定する動作と、
前記差異が所定閾値未満であることに応答して、動作の反復実行を停止する動作と、
前記差異が所定閾値よりも大きいことに応答して、選択した１ペアの切捨て閾値に基づいて、再度３ペアの切捨て閾値を確定する動作と、を含む
ことを特徴とする請求項１６に記載の前記装置。
【請求項１８】
前記１組の量子化待ちデータは、ニューラルネットワークモデル中の１組の浮動小数点数であり、
前記装置は、
選択した１ペアの切捨て閾値を使用して前記１組の量子化待ちデータを量子化することによって量子化後のデータを得るためのデータ量子化ユニットであって、前記１組の量子化待ちデータを量子化することは、前記１組の量子化待ちデータ中の、切捨て正の値よりも大きい数値を、前記切捨て正の値に設定し、前記１組の量子化待ちデータ中の、切捨て負の値よりも小さい数値を、前記切捨て負の値に設定するデータ量子化ユニットと、
得られた量子化後のデータを前記ニューラルネットワークモデルに入力して、処理に用いるためのデータ入力ユニットと、をさらに備える
ことを特徴とする請求項１０乃至１７のいずれか１項に記載の前記装置。
【請求項１９】
コンピュータ可読記憶媒体であって、
前記コンピュータ可読記憶媒体には、コンピュータプログラムが記憶されており、前記プログラムが実行されると、請求項１乃至９のいずれか１項に記載の前記方法が実現される
ことを特徴とするコンピュータ可読記憶媒体。
【請求項２０】
人工知能チップであって、
前記チップは、請求項１０乃至１８のいずれか１項に記載のデータを処理するための装置を備える
ことを特徴とする人工知能チップ。
【国際調査報告】
2022501674.tif 000018
2022501674.tif 000019
2022501674.tif 000020
2022501674.tif 000021