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