(57)【要約】  本技術案はボードカードに関連し、当該ボードカードは記憶装置、インターフェース装置、制御装置、および人工知能チップを含む。ここで、人工知能チップおよび記憶装置、制御装置、およびインターフェース装置はそれぞれ接続されている。記憶装置はデータを格納するためである。インターフェイス装置は人工知能チップと外部装置間のデータ伝送を実装するためである。制御装置は人工知能チップの状態を監視するためである。ボードカードは、人工知能演算を実行するためであってもよい。【選択図】図１２
2021530769.tif 000002
【特許請求の範囲】
【請求項１】
量子化予定のデータが量子化処理の後の量子化後のデータのビット幅を示す、前記量子化予定のデータに対して前記量子化処理を実行するためのデータビット幅を取得することと、
前記データビット幅に基づいて、１グループの量子化予定のデータに対して量子化処理を実行し、前記１グループの量子化予定のデータを、前記データビット幅を持つ１グループの量子化後のデータに変換することと、
前記１グループの量子化予定のデータを前記１グループの量子化後のデータと比較し、前記データビット幅に関連する量子化誤差を確定することと、
確定された前記量子化誤差に基づいて、前記データビット幅を調整することとを含む、ことを特徴とするデータビット幅の調整方法。
【請求項２】
前記１グループの量子化予定のデータを前記１グループの量子化後のデータと比較し、前記データビット幅に関連する量子化誤差を確定することは、
前記データビット幅によって量子化間隔を確定することと、
前記量子化間隔、前記１グループの量子化後のデータ、および前記１グループの量子化予定のデータによって前記量子化誤差を確定することとを含む、ことを特徴とする請求項１に記載のデータビット幅の調整方法。
【請求項３】
前記量子化間隔、前記１グループの量子化後のデータ、および前記１グループの量子化予定のデータによって量子化誤差を確定することは、
前記量子化間隔によって、前記１グループの量子化後のデータに対して逆量子化を実行して、データフォーマットが前記１グループの量子化予定のデータのデータフォーマットと同じである１グループの逆量子化データを取得することと、
前記１グループの逆量子化データと前記１グループの量子化予定のデータによって、量子化誤差を確定することとを含む、ことを特徴とする請求項２に記載のデータビット幅の調整方法。
【請求項４】
確定された前記量子化誤差に基づいて、前記データビット幅を調整することとは、
前記量子化誤差を、第１のしきい値と第２のしきい値との少なくとも１つを含むプリセットしきい値と比較することを含む、ことを特徴とする請求項１ないし３のいずれか１項に記載のデータビット幅の調整方法。
【請求項５】
前記比較の結果によって前記データビット幅を調整することは、
前記量子化誤差が第１のしきい値以上であると判断したことに応じて、前記データビット幅を増やすことを含む、ことを特徴とする請求項４に記載のデータビット幅の調整方法。
【請求項６】
前記データビット幅を増やすことは、
第１のプリセットビット幅のステップ長さによって前記データビット幅を増やし、調整後のデータビット幅を確定することを含む、ことを特徴とする請求項５に記載のデータビット幅の調整方法。
【請求項７】
前記調整後のデータビット幅に基づいて、前記１グループの量子化予定のデータに対して量子化処理を実行し、前記１グループの量子化予定のデータを、前記調整後のデータビット幅を持つ別の１グループの量子化後のデータに変換することと、
前記１グループの量子化予定のデータを前記別の１グループの量子化予定のデータと比較し、別の量子化誤差が前記第１のプリセットしきい値より小さくなるまで、前記調整後のデータビット幅に関連する前記別の量子化誤差を確定することをさらに含む、ことを特徴とする請求項６に記載のデータビット幅の調整方法。
【請求項８】
前記方法は反復的に実行されることを特徴とする請求項７に記載のデータビット幅の調整方法。
【請求項９】
前記比較の結果によって前記データビット幅を調整することは、
前記量子化誤差が前記第２のしきい値以下であると判断したことに応じて、前記データビット幅を減らすことを含む、ことを特徴とする請求項４に記載のデータビット幅の調整方法。
【請求項１０】
前記データビット幅を減らすことは、
第２のプリセットビット幅のステップ長さによって前記データビット幅を減らし、調整後のデータビット幅を確定することを含む、ことを特徴とする請求項９に記載のデータビット幅の調整方法。
【請求項１１】
前記調整後のデータビット幅に基づいて、前記１グループの量子化予定のデータに対して量子化処理を実行し、前記１グループの量子化予定のデータを、前記調整後のデータビット幅を持つ別の１グループの量子化後のデータに変換することと、
前記１グループの量子化予定のデータと前記別の１グループの量子化後のデータに基づいて、別の量子化誤差が第２のプリセットしきい値より大きくなるまで、前記調整後のデータビット幅に関連する前記別の量子化誤差を確定することをさらに含む、ことを特徴とする請求項１０に記載のデータビット幅の調整方法。
【請求項１２】
前記方法は反復的に実行されることを特徴とする請求項１１に記載のデータビット幅の調整方法。
【請求項１３】
前記比較の結果によって前記データビット幅を調整することは、
前記量子化誤差が前記第１のしきい値と第２のしきい値との間にあると判断したことに応じて、前記データビット幅を維持することを含む、ことを特徴とする請求項４に記載のデータビット幅の調整方法。
【請求項１４】
前記１グループの量子化予定のデータと前記調整後のデータビット幅に基づいて、前記１グループの量子化予定のデータに対して量子化処理を実行するための量子化パラメータを更新することと、
更新された前記量子化パラメータに基づいて、１前記グループの量子化予定のデータに対して量子化処理を実行することをさらに含む、ことを特徴とする請求項１ないし１３のいずれか１項に記載のデータビット幅の調整方法。
【請求項１５】
量子化予定のデータのデータ変動範囲を取得することと、
前記量子化予定のデータのデータ変動範囲によって、目標反復間隔を確定し、少なくとも１回の反復を含む前記目標反復間隔によって前記データビット幅を調整することをさらに含む、ことを特徴とする請求項１に記載のデータビット幅の調整方法。
【請求項１６】
量子化予定のデータのデータ変動範囲を取得することは、
前記量子化予定のデータのデータ変動範囲を表すためである、かつ前記量子化予定のデータのデータ変動範囲と正の相関がある、小数点位置の変動範囲を取得することとを含む、ことを特徴とする請求項１５に記載のデータビット幅の調整方法。
【請求項１７】
小数点位置の変動範囲を取得することは、
カレント検査反復前の一つ前の検査反復に対応する小数点位置と、前記目標反復間隔前の一つ前の反復間隔に対応する検査反復である前記一つ前の検査反復前の履歴反復に対応する小数点位置とによって第１の平均値を確定することと、
前記カレント検査反復に対応する目標データビット幅と量子化予定のデータによって確定される、前記カレント検査反復に対応する小数点位置と、前記カレント検査反復前の履歴反復の小数点位置とによって第２の平均値を確定することと、
前記小数点位置の変動範囲を表すための第１の誤差を、前記第１の平均値および前記第２の平均値によって確定することとを含む、ことを特徴とする請求項１６に記載のデータビット幅の調整方法。
【請求項１８】
前記量子化予定のデータのデータ変動範囲によって目標反復間隔を確定することは、
前記第１の誤差によって、前記第１の誤差と負の相関がある前記目標反復間隔を確定することを含む、ことを特徴とする請求項１５に記載のデータビット幅の調整方法。
【請求項１９】
前記量子化予定のデータのデータ変動範囲を取得することは、
前記データビット幅の変化傾向を取得することと、
前記小数点位置の変動範囲と前記データビット幅の変化傾向によって、前記量子化予定のデータのデータ変動範囲を確定することとををさらに含む、ことを特徴とする請求項１５に記載のデータビット幅の調整方法。
【請求項２０】
前記量子化予定のデータのデータ変動範囲によって目標反復間隔を確定することは、
取得した、小数点位置の変動範囲を表すための第１の誤差およびデータビット幅の変化傾向を表すための第２の誤差によって前記目標反復間隔を確定することとをさらに含む、ことを特徴とする請求項１９に記載のデータビット幅の調整方法。
【請求項２１】
取得した前記第１の誤差および前記第２の誤差によって前記目標反復間隔を確定することは、
前記第１の誤差と前記第２の誤差うちの最大値を目標誤差とすることと、
前記目標反復間隔と負の相関がある前記目標誤差によって前記目標反復間隔を確定することとを含む、ことを特徴とする請求項２０に記載のデータビット幅の調整方法。
【請求項２２】
前記第２の誤差は、量子化誤差によって確定されることとを含み、
前記量子化誤差は、前記カレント検査反復における量子化予定のデータと前記カレント検査反復の量子化データによって確定され、前記第２の誤差は前記量子化誤差と正の相関がある、ことを特徴とする請求項２０または２１に記載のデータビット幅の調整方法。
【請求項２３】
前記方法は、ニューラルネットワークのトレーニングまたは微調整のためであり、
前記カレント反復が第１のプリセット反復よりも大きい場合、前記量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、前記目標反復間隔によって前記量子化パラメータを調整することをさらに含む、ことを特徴とする請求項１５ないし２２のいずれか１項に記載のデータビット幅の調整方法。
【請求項２４】
前記カレント反復が前記第１のプリセット反復以下の場合、前記第１のプリセット反復間隔を前記目標反復間隔とし、前記第１のプリセット反復間隔によって前記量子化パラメータを調整することをさらに含む、ことを特徴とする請求項２３に記載のデータビット幅の調整方法。
【請求項２５】
前記カレント反復が第２のプリセット反復以上の場合、第２のプリセット反復間隔を前記目標反復間隔とし、前記第２のプリセット反復間隔によって前記量子化パラメータを調整することをさらに含み、
前記第２のプリセット反復は前記第１のプリセット反復よりも大きく、前記第２のプリセット反復間隔は前記第１のプリセット反復間隔よりも大きい、ことを特徴とする請求項２３または２４に記載のデータビット幅の調整方法。
【請求項２６】
前記ニューラルネットワークの収束度がプリセット条件を満たす場合、前記カレント検査反復が第２のプリセット反復以上であると確定することをさらに含む、ことを特徴とする請求項２５に記載のデータビット幅の調整方法。
【請求項２７】
前記カレント反復が第２のプリセット反復以上であり、かつ第２の誤差がプリセット誤差値より大きい場合、前記量子化予定のデータのデータ変動範囲によって反復間隔を確定し、前記反復間隔によって前記データビット幅を再確定することをさらに含む、ことを特徴とする請求項２５に記載のデータビット幅の調整方法。
【請求項２８】
量子化予定のデータが量子化処理の後の量子化後のデータのビット幅を示す、前記量子化予定のデータに対して前記量子化処理を実行するためのデータビット幅を取得するように構成される取得モジュールと、
前記データビット幅に基づいて、１グループの量子化予定のデータに対して量子化処理を実行し、前記１グループの量子化予定のデータを、前記データビット幅を持つ１グループの量子化後のデータに変換するように構成される量子化モジュールと、
前記１グループの量子化予定のデータを前記１グループの量子化後のデータと比較し、前記データビット幅に関連する量子化誤差を確定するように構成される確定モジュールと、
確定された前記量子化誤差に基づいて、前記データビット幅を調整するように構成されるとを備える、ことを特徴とするデータビット幅の調整装置。
【請求項２９】
前記比較モジュールは、
前記データビット幅によって量子化間隔を確定するように構成される間隔確定モジュールと、
前記量子化間隔、前記１グループの量子化後のデータ、および前記１グループの量子化予定のデータによって前記量子化誤差を確定するように構成される誤差確定モジュールとを備える、ことを特徴とする請求項２８に記載のデータビット幅の調整装置。
【請求項３０】
前記誤差確定モジュールは、
前記量子化間隔によって前記１グループの量子化後のデータに対して逆量子化を実行し、データフォーマットが前記１グループの量子化予定のデータのデータフォーマットと同じである１グループの逆量子化データを取得するように構成される逆量子化モジュールと、
前記１グループの逆量子化データおよび前記１グループの量子化予定のデータによって量子化誤差を確定するように構成される量子化誤差確定モジュールとを備える、ことを特徴とする請求項２９に記載のデータビット幅の調整装置。
【請求項３１】
前記調整モジュールは、
前記量子化誤差を、第１のしきい値および第２のしきい値の少なくとも１つを含むプリセットしきい値と比較するように構成される比較モジュールと、
前記比較の結果によって前記データビット幅を調整するように構成されるビット幅調整モジュールとを備える、ことを特徴とする請求項２８ないし３０のいずれか１項に記載のデータビット幅の調整装置。
【請求項３２】
前記ビット幅調整モジュールは、
前記量子化誤差が第１のしきい値以上であると判断したことに応じて前記データビット幅を増やすように構成される増加モジュールを備える、ことを特徴とする請求項３１に記載のデータビット幅の調整装置。
【請求項３３】
前記増加モジュールは、
第１のプリセットビット幅のステップ長さによって前記データビット幅を増やし、調整後のデータビット幅を確定するように構成されるステップ長さ増加モジュールを備える、ことを特徴とする請求項３２に記載のデータビット幅の調整装置。
【請求項３４】
前記量子化モジュールはさらに、前記調整後のデータビット幅に基づいて前記１グループの量子化予定のデータに対して量子化処理を実行し、前記１グループの量子化予定のデータを、前記調整後のデータビット幅を持つ別の１グループの量子化後のデータに変換するように構成され、
前記確定モジュールはさらに、前記１グループの量子化予定のデータを前記別の１グループの量子化予定のデータのと比較し、別の量子化誤差が前記第１のプリセットしきい値以下になるまで、前記調整後のデータビット幅に関連する前記別の量子化誤差を確定するように構成される、ことを特徴とする請求項３３に記載のデータビット幅の調整装置。
【請求項３５】
前記装置が反復的にコールされるように構成される、ことを特徴とする請求項３４に記載のデータビット幅の調整装置。
【請求項３６】
前記調整モジュールは、
前記量子化誤差が第２のしきい値以下であると判断したことに応じて、前記データビット幅を減少するように構成される減少モジュールを備える、ことを特徴とする請求項３１に記載のデータビット幅の調整装置。
【請求項３７】
前記減少モジュールは、
第２のプリセットビット幅のステップ長さによって前記データビット幅を減少し、調整後のデータビット幅を確定するように構成されるステップ長さ減少モジュールを備える、ことを特徴とする請求項３１に記載のデータビット幅の調整装置。
【請求項３８】
前記量子化モジュールはさらに、前記調整後のデータビット幅に基づいて、前記１グループの量子化予定のデータに対して量子化処理を実行し、前記１グループの量子化予定のデータを、前記調整後のデータビット幅を持つ別の１グループの量子化後のデータに変換するように構成され、
前記確定モジュールはさらに、前記１グループの量子化予定のデータと前記別の１グループの量子化後のデータに基づいて、別の量子化誤差が前記第２のプリセットしきい値より大きくなるまで、前記調整後のデータビット幅に関連する前記別の量子化誤差を確定するように構成される、ことを特徴とする請求項３７に記載のデータビット幅の調整装置。
【請求項３９】
前記装置が反復的にコールされるように構成される、ことを特徴とする請求項３８に記載のデータビット幅の調整装置。
【請求項４０】
前記調整モジュールは、
前記量子化誤差が前記第１のしきい値と前記第２のしきい値との間にあると判断したことに応じて、前記データビット幅を維持するように構成される維持モジュール備える、ことを特徴とする請求項３１に記載のデータビット幅の調整装置。
【請求項４１】
前記１グループの量子化予定のデータおよび前記調整後のデータビット幅に基づいて、前記１グループの量子化予定のデータに対して量子化処理を実行するための量子化パラメータを更新するように構成される更新モジュールをさらに備え、
前記量子化モジュールはさらに、更新された前記量子化パラメータに基づいて前記１グループの量子化予定のデータに対して量子化処理を実行するように構成される、ことを特徴とする請求項２８ないし４０のいずれか１項に記載のデータビット幅の調整装置。
【請求項４２】
量子化予定のデータのデータ変動範囲を取得するように構成される範囲モジュールと、
前記量子化予定のデータのデータ変動範囲によって、少なくとも１回の反復を含む目標反復間隔を確定し、前記目標反復間隔によって前記データビット幅を調整するように構成される間隔モジュールとをさらに備える、ことを特徴とする請求項２８に記載のデータビット幅の調整装置。
【請求項４３】
前記範囲モジュールは、
前記量子化予定のデータのデータ変動範囲を表すためである、かつ前記量子化予定のデータのデータ変動範囲と正の相関がある小数点位置の変動範囲を取得するように構成される小数点位置モジュールを備える、ことを特徴とする請求項４２に記載のデータビット幅の調整装置。
【請求項４４】
前記小数点位置モジュールは、
カレント検査反復前の一つ前の検査反復に対応する小数点位置と、前記目標反復間隔前の一つ前の反復間隔に対応する検査反復である前記一つ前の検査反復前の履歴反復に対応する小数点位置とによって第１の平均値を確定するように構成される第１の平均値モジュールと、
前記カレント検査反復に対応する目標データビット幅と量子化予定のデータによって確定される、前記カレント検査反復に対応する小数点位置と、前記カレント検査反復前の履歴反復の小数点位置とによって第２の平均値を確定するように構成される第２の平均値モジュールと、
前記小数点位置の変動範囲を表すための第１の誤差を、前記第１の平均値および前記第２の平均値によって確定するように構成される第１の誤差モジュールとを備える、ことを特徴とする請求項４３に記載のデータビット幅の調整装置。
【請求項４５】
前記間隔モジュールは、
前記第１の誤差によって、前記第１の誤差と負の相関がある前記目標反復間隔を確定するように構成される第１の間隔モジュールを備える、ことを特徴とする請求項４２に記載のデータビット幅の調整装置。
【請求項４６】
前記範囲モジュールはさらに、
前記データビット幅の変化傾向を取得するように構成される傾向モジュールと、
前記小数点位置の変動範囲と前記データビット幅の変化傾向によって、前記量子化予定のデータのデータ変動範囲を確定するように構成されるデータ変動範囲モジュールとを備える、ことを特徴とする請求項４２に記載のデータビット幅の調整装置。
【請求項４７】
前記間隔モジュールはさらに、
取得した、小数点位置の変動範囲を表すための第１の誤差およびデータビット幅の変化傾向を表すための第２の誤差によって前記目標反復間隔を確定するように構成される反復間隔モジュールを備える、ことを特徴とする請求項４６に記載のデータビット幅の調整装置。
【請求項４８】
前記反復間隔モジュールは、
前記第１の誤差と前記第２の誤差うちの最大値を目標誤差とするように構成される目標誤差モジュールと、
前記目標反復間隔と負の相関がある前記目標誤差によって前記目標反復間隔を確定するように構成される目標反復間隔モジュールとを備える、ことを特徴とする請求項４７に記載のデータビット幅の調整装置。
【請求項４９】
前記第２の誤差は、量子化誤差によって確定され、
前記量子化誤差は、前記カレント検査反復における量子化予定のデータと前記カレント検査反復の量子化データによって確定され、前記第２の誤差は前記量子化誤差と正の相関がある、ことを特徴とする請求項４７または４８に記載のデータビット幅の調整装置。
【請求項５０】
前記装置は、ニューラルネットワークのトレーニングまたは微調整のためであり、
前記カレント反復が第１のプリセット反復よりも大きい場合、前記量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、前記目標反復間隔によって前記量子化パラメータを調整するように構成される第１の反復モジュールをさらに備える、ことを特徴とする請求項４２ないし４９のいずれか１項に記載のデータビット幅の調整装置。
【請求項５１】
前記カレント反復が前記第１のプリセット反復以下の場合、前記第１のプリセット反復間隔を前記目標反復間隔とし、前記第１のプリセット反復間隔によって前記量子化パラメータを調整するように構成される第２の反復モジュールをさらに備える、ことを特徴とする請求項５０に記載のデータビット幅の調整装置。
【請求項５２】
前記カレント反復が第２のプリセット反復以上の場合、第２のプリセット反復間隔を前記目標反復間隔とし、前記第２のプリセット反復間隔によって前記量子化パラメータを調整するように構成される第３の反復モジュールをさらに備え、
前記第２のプリセット反復は前記第１のプリセット反復よりも大きく、前記第２のプリセット反復間隔は前記第１のプリセット反復間隔よりも大きい、ことを特徴とする請求項５０または５１に記載のデータビット幅の調整装置。
【請求項５３】
前記ニューラルネットワークの収束度がプリセット条件を満たす場合、前記カレント検査反復が第２のプリセット反復以上であると確定するように構成される収束モジュールをさらに備える、ことを特徴とする請求項５２に記載のデータビット幅の調整装置。
【請求項５４】
前記カレント反復が第２のプリセット反復以上であり、かつ第２の誤差がプリセット誤差値より大きい場合、前記量子化予定のデータのデータ変動範囲によって反復間隔を確定し、前記反復間隔によって前記データビット幅を再確定することをさらに備える、ことを特徴とする請求項５２に記載のデータビット幅の調整装置。
【請求項５５】
コンピュータプログラムが格納され、前記プログラムが実行されると、請求項１〜２７のいずれか１項に記載の方法が実現される、ことを特徴とするコンピュータ可読記憶媒体。
【請求項５６】
チップが、請求項２８ないし５４のいずれか１項に記載のデータを処理するための装置を含む、ことを特徴とする人工知能チップ。
【請求項５７】
請求項５６に記載の人工知能チップを備える、ことを特徴とする電子装置。
【請求項５８】
ボードカードが、記憶装置、インターフェース装置、制御装置、および請求項５６に記載の人工知能チップを備え、
前記人工知能チップは、前記記憶装置、前記制御装置、および前記インターフェイス装置に接続され、
前記記憶装置は、データを格納するためであり、
前記インターフェイス装置は、前記人工知能チップと外部装置との間のデータ伝送を実現するためであり、
前記制御装置は、前記人工知能チップの状態を監視するためである、ことを特徴とするボードカード。
【請求項５９】
前記記憶装置は複数のグループの記憶ユニットを備え、各グループの記憶ユニットはバスを介して前記人工知能チップに接続され、前記記憶ユニットはＤＤＲＳＤＲＡＭであり、
前記チップはＤＤＲコントローラを備え、各前記記憶ユニットのデータ伝送およびデータストレージを制御し、
前記インターフェイス装置は標準のＰＣＩＥインターフェイスである、ことを特徴とする請求項５８に記載のボードカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態は、ニューラルネットワークにおける量子化パラメータの確定方法および関連製品に関する。
【背景技術】
【０００２】
ニューラルネットワーク（ｎｅｕｒａｌ  ｎｅｔｗｏｒｋ、ＮＮ）は、生物学的ニューラルネットワークの構造と機能を模倣する数学モデルまたは計算モデルである。サンプルデータでのトレーニングを通じて、ニューラルネットワークはネットワークの重みとしきい値を継続的に修正して、誤差関数を負の勾配方向に沿って低下させ、期待される出力に近似させる。これは広く使用されている識別および分類モデルであり、主に関数近似、モデルの識別および分類、データ圧縮、および時系列予測に使用される。
【０００３】
実際の応用では、ニューラルネットワークにおけるデータは通常３２ビットであり、既存のニューラルネットワークにおけるデータはより多くのビットを占有することで、精度は保証されるが、より多くのストレージスペースと高い処理能力が必要になるため、コストが増加される。
【発明の概要】
【０００４】
上記の技術的問題を解決するために、本開示は、データビット幅の調整方法および関連製品を提案する。
【０００５】
上記の目的を達成するために、本開示は、データビット幅の調整方法を提供し、当該方法は、
量子化予定のデータが量子化処理の後の量子化後のデータのビット幅を示す、量子化予定のデータに対して量子化処理を実行するためのデータビット幅を取得することと、
【０００６】
データビット幅に基づいて１グループの量子化予定のデータに対して量子化処理を実行し、１グループの量子化予定のデータを、上記のデータビット幅を持つ１グループの量子化後のデータに変換することと、
１グループの量子化予定のデータを１グループの量子化後のデータと比較し、上記のデータビット幅に関連する量子化誤差を確定することと、
確定された量子化誤差に基づいて上記のデータビット幅を調整することとを含む、ことを特徴とする。
【０００７】
上記の目的を達成するために、本開示は、データビット幅の調整装置を提供し、当該装置はメモリおよびプロセッサを備え、メモリは、プロセッサで実行できるコンピュータプログラムを格納し、プロセッサはコンピュータプログラムを実行すると、前述の方法のステップが実施される。
【０００８】
前述の目的を達成するために、本開示は、コンピュータプログラムが格納されるコンピュータ可読記憶媒体を提供し、コンピュータプログラムは、プロセッサによって実行されると、前述の方法のステップ長さが実施される。
【０００９】
上記の目的を達成するために、本開示は、データビット幅の調整装置を提供し、当該装置は、
【００１０】
量子化予定のデータが量子化処理の後の量子化後のデータのビット幅を示す、量子化予定のデータに対して量子化処理を実行するためのデータビット幅を取得するように構成される取得ユニットと、
データビット幅に基づいて１グループの量子化予定のデータに対して量子化処理を実行し、１グループの量子化予定のデータを上記のデータビット幅を持つ１グループの量子化後のデータに変換するように構成される量子化ユニットと、
１グループの量子化予定のデータを１グループの量子化後のデータと比較し、上記のデータビット幅に関連する量子化誤差を確定するように構成される確定ユニットと、
確定された量子化誤差に基づいて上記のデータビット幅を調整するように構成される調整ユニットとを備える。
【００１１】
ニューラルネットワーク演算のプロセスでは、量子化において本開示の技術案を使用しデータビット幅を確定する。当該データビット幅は、人工知能プロセッサがニューラルネットワーク演算のプロセスにおけるデータを量子化し、高精度のデータを低精度の固定小数点数に変換するためであり、これにより、ニューラルネットワーク演算プロセスに関連するデータストレージ占めるスペースサイズを減少できる。例：ｆｌｏａｔ３２をｆｉｘ８に変換すると、モデルパラメータを４分の１に減らすことができる。データストレージスペースが小さくなるため、ニューラルネットワークの配置に使用されるスペースが小さくなり、人工知能プロセッサのチップのオンチップメモリがより多くのデータを格納できるようになり、人工知能プロセッサのチップによるデータアクセスが減少され、コンピューティングパフォーマンスが向上される。
【図面の簡単な説明】
【００１２】
本開示の実施形態の技術案をより明確に説明するために、以下に、実施形態の添付の図面を簡単に紹介する。明らかに、以下の説明の添付の図面は、本開示のいくつかの実施形態のみを関連し、本開示を限定するものではない。
【図１】ニューラルネットワーク構造の概略図。
【図２】本開示によって提案されたニューラルネットワークの量子化パラメータの確定方法のフローチャート。
【図３】対称的な固定小数点数での表示の概略図。
【図４】オフセットが導入された固定小数点数での表示の概略図。
【図５Ａ】トレーニングプロセスにおけるニューラルネットワークの重みデータの変動範囲の第１のグラフ。
【図５Ｂ】トレーニングプロセスにおけるニューラルネットワークの重みデータの変動範囲の第２のグラフ。
【図６】目標反復間隔を確定する方法の第１のフローチャート。
【図７】目標反復間隔を確定する方法の第２のフローチャート。
【図８Ａ】目標反復間隔の確定方法の第３のフローチャート。
【図８Ｂ】本開示の一実施形態におけるデータビット幅の調整方法を示すフローチャート。
【図８Ｃ】本開示の別の一実施形態におけるデータビット幅の調整方法を示すフローチャート。
【図８Ｄ】本開示のまた別の一実施形態におけるデータビット幅の調整方法を示すフローチャート。
【図８Ｅ】本開示のさらに別の一実施形態におけるデータビット幅の調整方法を示すフローチャート。
【図８Ｆ】本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャート。
【図８Ｇ】本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャート。
【図８Ｈ】本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャート。
【図８Ｉ】本開示の実施形態によるニューラルネットワークの量子化方法を示すフローチャート。
【図８Ｊ】本開示の実施形態によるニューラルネットワークの量子化方法を示すフローチャート。
【図８Ｋ】本開示の一実施形態の量子化パラメータの調整方法を示すフローチャート。
【図８Ｌ】本開示の一実施形態の演算プロセスにおいて量子化予定のデータの変化傾向図。
【図８Ｍ】本開示の一実施形態のパラメータ調整方法における目標反復間隔の確定方法を示すフローチャート。
【図８Ｎ】本開示の一実施形態における小数点位置の変動範囲の確定方法を示すフローチャート。
【図８Ｏ】本開示の一実施形態における第２の平均値の確定方法を示すフローチャート。
【図８Ｐ】本開示の別の一実施形態における第２の平均値の確定方法を示すフローチャート。
【図８Ｑ】本開示の別の一実施形態による量子化パラメータの調整方法を示すフローチャート。
【図８Ｒ】本開示の一実施形態による量子化パラメータの調整方法における量子化パラメータの調整のフローチャート。
【図８Ｓ】本開示の別の一実施形態のパラメータ調整方法における目標反復間隔の確定方法を示すフローチャート。
【図８Ｔ】本開示の別の一実施形態のパラメータ調整方法における目標反復間隔の確定方法を示すフローチャート。
【図８Ｕ】本開示のまた別の一実施形態による量子化パラメータの調整方法を示すフローチャート。
【図８Ｖ】本開示のさらに別の一実施形態による量子化パラメータの調整方法を示すフローチャート。
【図９】本開示によって提案されたニューラルネットワークの量子化パラメータの確定装置のハードウェア構成のブロック図。
【図１０】本開示で提案されたニューラルネットワークの量子化パラメータ確定装置が人工知能プロセッサのチップへの適用の概略図。
【図１１】本開示で提案されるニューラルネットワークの量子化パラメータの確定装置の機能的ブロック図。
【図１２】本開示の実施形態によるボードカードの構造ブロック図。  ニューラルネットワークの量子化の問題を解決するために、図２−１から図２−３１を含む次の技術案（２０１９１０５０５２３９．７）を提案しました。
【図２−１】本開示の実施形態によるニューラルネットワークの量子化方法のフローチャート。
【図２−２】本開示の実施形態によるニューラルネットワークの量子化方法のフローチャート。
【図２−３】本開示の実施形態によるニューラルネットワークの量子化方法のフローチャート。
【図２−４】本開示の実施形態によるニューラルネットワークの量子化方法のフローチャート。
【図２−５】本開示の実施形態によるニューラルネットワーク量子化法において、量子化パラメータがオフセットを含まない場合の、量子化前後のデータ対応の概略図。
【図２−６】本開示の実施形態によるニューラルネットワークの量子化方法のフローチャート。
【図２−７】本開示の実施形態によるニューラルネットワーク量子化法において、量子化パラメータがオフセットを含む場合の、量子化前後のデータ対応の概略図。
【図２−８】本開示の実施形態によるニューラルネットワークの量子化方法のフローチャート。
【図２−９】本開示の実施形態によるニューラルネットワークの量子化方法のフローチャート。
【図２−１０】本開示の実施形態によるニューラルネットワークの量子化方法のフローチャート。
【図２−１１】本開示の実施形態によるニューラルネットワークの量子化方法のフローチャート。
【図２−１２】本開示の実施形態によるニューラルネットワークの量子化方法のフローチャート。
【図２−１３】本開示の実施形態によるニューラルネットワークの量子化方法のフローチャート。
【図２−１４】本開示の実施形態によるニューラルネットワークの量子化方法のフローチャート。
【図２−１５】本開示の実施形態によるニューラルネットワークの量子化方法のフローチャート。
【図２−１６】本開示の実施形態によるニューラルネットワークの量子化方法のフローチャート。
【図２−１７】本開示の実施形態によるニューラルネットワークの量子化方法のフローチャート。
【図２−１８】本開示の実施形態によるニューラルネットワークの量子化方法のフローチャート。
【図２−１９】本開示の実施形態によるニューラルネットワークの量子化方法のフローチャート。
【図２−２０】本開示の実施形態によるニューラルネットワークの量子化方法のフローチャート。
【図２−２１】本開示の実施形態によるニューラルネットワークの量子化方法のフローチャート。
【図２−２２】本開示の実施形態によるニューラルネットワークの量子化方法のフローチャート。
【図２−２３】本開示の実施形態によるニューラルネットワークの量子化方法のフローチャート。
【図２−２４】本開示の実施形態によるニューラルネットワークの量子化方法のフローチャート。
【図２−２５】本開示の実施形態によるニューラルネットワークの量子化方法のフローチャート。
【図２−２６】本開示の実施形態によるニューラルネットワークの量子化装置の概略図。
【図２−２７】本開示の実施形態によるニューラルネットワークの量子化装置の概略図。
【図２−２８】本開示の実施形態によるニューラルネットワークの量子化装置の概略図。
【図２−２９】本開示の実施形態によるニューラルネットワークの量子化装置の概略図。
【図２−３０】本開示の実施形態によるニューラルネットワークの量子化装置の概略図。
【図２−３１】本開示の実施形態によるボードカードのブロック図。  量子化パラメータ調整の問題を解決するために、図３−１から図３−２５を含む以下の技術案（２０１９１０５２８５３７．８）を提案しました。
【図３−１】本開示の一実施形態による、量子化パラメータの調整方法の適用環境の概略図。
【図３−２】本開示の一実施形態による、量子化予定のデータと量子化後のデータとの間の対応関係の概略図。
【図３−３】本開示の実施形態による量子化予定のデータの変換の概略図。
【図３−４】本開示の一実施形態による、量子化パラメータの調整方法のフローチャート。
【図３−５】本開示の一実施形態の演算プロセスにおける量子化予定のデータの変化傾向図。
【図３−６】本開示の一実施形態のパラメータ調整法における目標反復間隔の確定方法のフローチャート。
【図３−７】本開示の一実施形態における小数点位置の変動範囲の確定方法のフローチャート。
【図３−８】本開示の一実施形態における第２の平均値の確定方法のフローチャート。
【図３−９】本開示の一実施形態におけるデータビット幅の調整方法のフローチャート。
【図３−１０】本開示の別の一実施形態におけるデータビット幅の調整方法のフローチャートである。
【図３−１１】本開示のまた別の一実施形態におけるデータビット幅の調整方法のフローチャート。
【図３−１２】本開示のさらに別の一実施形態におけるデータビット幅の調整方法のフローチャート。
【図３−１３】本開示の別の一実施形態における第２の平均値の確定方法のフローチャート。
【図３−１４】本開示の別の一実施形態による、量子化パラメータの調整方法のフローチャート。
【図３−１５】本開示の一実施形態による、量子化パラメータの調整方法における量子化パラメータの調整のフローチャート。
【図３−１６】本開示の別の一実施形態による、パラメータ調整方法における目標反復間隔の確定方法のフローチャート。
【図３−１７】本開示のまた別の一実施形態による、パラメータ調整方法における目標反復間隔の確定方法のフローチャート。
【図３−１８】本開示のまた別の一実施形態による、量子化パラメータの調整方法のフローチャート。
【図３−１９】本開示のさらに別の一実施形態による、量子化パラメータの調整方法のフローチャート。
【図３−２０】本開示の一実施形態による、量子化パラメータ調整装置の構造ブロック図を示す。
【図３−２１】本開示の一実施形態による、量子化パラメータ調整装置の構造ブロック図。
【図３−２２】本開示の一実施形態による、量子化パラメータ調整装置の構造ブロック図。
【図３−２３】本開示の一実施形態による、量子化パラメータ調整装置の構造ブロック図。
【図３−２４】本開示の一実施形態による、量子化パラメータ調整装置の構造ブロック図。
【図３−２５】本開示の実施形態によるボードカードの構造ブロック図。
【発明を実施するための形態】
【００１３】
本開示の実施形態における技術案は、本開示の実施形態における添付の図面を参照して明確かつ完全に説明される。明らかに、記載された実施形態は、本開示の実施形態の一部であるが、すべての実施形態ではない。本開示の実施形態に基づいて、創造的な作業なしに当業者によって得られる他のすべての実施形態は、本開示の保護範囲に含まれる。
【００１４】
本開示のアイテムや明細書および添付の図面における「第１」、「第２」、「第３」および「第４」等の用語は、特定の順序を説明するのではなく、異なる対象を区別するためであることを理解されたい。本開示の明細書およびアイテムで使用される「含む」および「含む」という用語は、記載された特徴、全体、ステップ、操作、要素および／またはコンポーネントの存在を示すが、１つまたは複数の他の特徴、全体、ステップ、操作、要素、コンポーネント、および／またはそれらのコレクションの存在または追加を除外しない。
【００１５】
本開示の明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、開示を限定することを意図するものではないことも理解されたい。本開示の明細書およびアイテムで使用されているように、文脈が他の状況を明確に示さない限り、単数形「一」、「一つ」および「当該」は複数形を含むことを意図している。本開示の明細書およびアイテムで使用される「および／または」という用語は、関連してリストされた１つまたは複数の項目の任意の組み合わせおよびすべての可能な組み合わせを指し、これらの組み合わせを含むことをさらに理解されたい。
【００１６】
この明細書およびアイテムで使用されているように、「もし」という用語は、文脈に応じて、「…時」または「…すると」または「確定に応じて」または「検出に応じて」と解釈することができる。同様に、「確定される場合」または「記述された条件またはイベント］が検出される場合」という句は、文脈に応じて、「［確定されると」または「確定に応じて」または「［記述された条件またはイベント］が検出されると」または「［記述された条件またはイベント］の検出に応じて」を意味すると解釈できる。
【００１７】
専門用語の定義：
浮動小数点数：ＩＥＥＥ浮動小数点規格では、Ｖ＝（−１）＾ｓｉｇｎ＊ｍａｎｔｉｓｓａ＊＾Ｅの形で一つの数を表す。ここ、ｓｉｇｎは符号ビットで、０は正の数、１は負の数、Ｅは浮動小数点数に重みを付ける指数を表し、重みは２のＥ乗（負の冪乗の場合もある）であり、ｍａｎｔｉｓｓａは２進数の小数であり、その範囲は、１〜２−εまたは０−εである。コンピュータでの浮動小数点数の表現は、３つのフィールドに分割される。それらのフィールドはそれぞれコード化される：
（１）単一の符号ビットｓで、符号ｓを直接エンコードする。
（２）ｋビット指数フィールドで指数をエンコードする。
（３）ｎビットの小数フィールドｍａｎｔｉｓｓａで仮数をエンコードする。ただし、エンコードの結果は、指数部がすべて０であるかどうかによって異なる。
【００１８】
固定小数点数：共有指数（ｅｘｐｏｎｅｎｔ）、符号ビット（ｓｉｇｎ）、および仮数（ｍａｎｔｉｓｓａ）の３つの部分で構成される。ここ、共有指数とは、指数が量子化する必要のある実数の集合内で共有されることを意味する。符号ビットは、固定小数点数が正または負であることを示する。仮数は、固定小数点数の有効桁数、つまり精度を確定する。８ビットの固定小数点数を例にとると、その数値計算方法は次のとおりである：
ｖａｌｕｅ＝（−１）ｓｉｇｎＸ（ｍａｎｔｉｓｓａ）Ｘ２（ｅｃｐｏｎｅｎｔ−１２７）
【００１９】
２進数の小数：任意の１０進数を式Σｊ＊１０ｉで表すことができる。たとえば、１０進数の１２．３４は式１で表されると、１２．３４＝１＊１０１＋２＊１００＋３＊１０−１＋４＊１０−２となる。小数点の左側は１０の正の冪乗としてカウントされ、小数点の右側は１０の負の冪乗としてカウントされる。同様に、２進数の小数もこのように表すことができる。小数点の左側は２の正の冪乗であり、小数点の右側は２の負の冪乗としてカウントされる。１０進数の小数５．７５は、２進数の小数の１０１．１１で表すことができと、５．７５＝１＊２２＋０＊２１＋１＊２０＋１＊２−１＋１＊２−２となる。
【００２０】
オーバーフロー：固定小数点演算ユニットでは、数値表現には特定の範囲がある。演算プロセスにおいて、数値のサイズが固定小数点数で表すことができる範囲を超える場合、「オーバーフロー」と呼ばれる。
【００２１】
ＫＬダイバージェンス（Ｋｕｌｌｂａｃｋ-ＬｅｉｂｌｅｒＤｉｖｅｒｇｅｎｃｅ）：相対エントロピー（ｒｅｌａｔｉｖｅ  ｅｎｔｒｏｐｙ）、情報ダイバージェンス（ｉｎｆｏｒｍａｔｉｏｎＤｉｖｅｒｇｅｎｃｅ）、情報利得（ｉｎｆｏｒｍａｔｉｏｎ  ｇａｉｎ）とも呼ばれる。ＫＬダイバージェンスは、２つの確率分布ＰとＱの間の差の非対称性の測度である。ＫＬダイバージェンスは、Ｑベースのコーディングを使用してＰからのサンプルをエンコードするために平均的に必要な追加ビット数の測度である。通常、Ｐはデータの真の分布を表し、ＱはＰの理論分布、モデル分布、または近似分布を表す。
【００２２】
データビット幅：データを表すためであるビット数。
【００２３】
量子化：過去に３２ビットまたは６４ビットで表していた高精度の数値を、メモリスペースを節約する固定小数点数に変換するプロセスであり、高精度の数値を固定小数点数に変換するプロセスでは、精度がある程度低下する。
【００２４】
以下は、添付の図面を参照して、本開示の実施形態によって提供される、ニューラルネットワークの量子化パラメータの確定方法および関連製品の特定の実施形態を詳細に説明する。
【００２５】
ニューラルネットワーク（ＮＮ）は、生物学的ニューラルネットワークの構造と機能を模倣する数学モデルである。ニューラルネットワークは、多数のニューロンによって接続され計算を行う。したがって、ニューラルネットワークは、相互に接続された多数のノード（または「ニューロン」と呼ばれる）で構成される計算モデルである。各ノードは、活性化関数（ａｃｔｉｖａｔｉｏｎ  ｆｕｎｃｔｉｏｎ）と呼ばれる特定の出力関数を表す。２つのニューロン間の各接続は、当該接続を通過する信号の重み付き値を表し、重みと呼ばれ、これはニューラルネットワークの記憶に相当する。ニューラルネットワークの出力は、ニューロン間の接続方法、重み、活性化関数によって異なる。ニューラルネットワークにおいて、ニューロンはニューラルネットワークの基本単位である。特定の数の入力とオフセットを取得し、信号（値）が到着すると、重みと乗算される。接続とは、ニューロンを別の層または同じ層内の別のニューロンに接続することであり、接続にはそれに関連付けられた重みが伴う。さらに、オフセットはニューロンへの追加入力であり、常に１であり、独自の接続重みを持つ。これにより、すべての入力が空（すべて０）の場合でも、ニューロンを活性化することができる。
【００２６】
応用では、非線形関数がニューラルネットワーク内のニューロンに適用されない場合、ニューラルネットワークは単なる線形関数であり、単一のニューロンよりも強力ではない。ニューラルネットワークの出力が０から１の間にする場合、たとえば猫と犬の識別の場合、０に近い出力は猫と見なされ、１に近い出力は犬と見なされる。この目標を達成するために、ｓｉｇｍｏｉｄ活性化関数などの活性化関数がニューラルネットワークに導入される。この活性化関数に関しては、その戻り値が０から１の間の数値であることを知っておく必要のみがある。したがって、活性化関数はニューラルネットワークに非線形性を導入するためであり、ニューラルネットワークの演算結果をより狭い範囲に絞る。実際、活性化関数がどのように表現されるかは重要ではない。重要なことは、いくつかの重みによって一つの非線形関数をパラメータ化することであり、これらの重みを変更することで非線形関数を変更することができる。
【００２７】
図１に示すように、これはニューラルネットワーク構造の概略図である。図１に示すニューラルネットワークには、入力層、隠れ層、出力層の３つの層があり、図１に示す隠れ層には５つの層がある。ここで、ニューラルネットワークの左端の層は入力層と呼ばれ、入力層のニューロンは入力ニューロンと呼ばれる。入力層はニューラルネットワークの第一層であり、必要な入力信号（値）を受け入れて次の層に伝送する。通常、入力層は入力信号（値）に対して操作を行わなく、関連する重みとオフセットもない。図１に示すニューラルネットワークには、４つの入力信号ｘ１、ｘ２、ｘ３、ｘ４がある。
【００２８】
隠れ層には、入力データにさまざまな変換を適用するためのニューロン（ノード）が含まれている。図１に示すニューラルネットワークには、５つの隠れ層がある。第１隠れ層には４つのニューロン（ノード）があり、第２層には５つのニューロンがあり、第３層には６つのニューロンがあり、第４層には４つのニューロンがあり、第５層には３つのニューロンがある。最後に、隠れ層はニューロンの演算値を出力層に伝送する。図１に示すニューラルネットワークは、５つの隠れ層の各ニューロンを完全に接続する。つまり、各隠れ層の各ニューロンは、次の層の各ニューロンに接続される。すべてのニューラルネットワークの隠れ層が完全に接続されているわけではないことに注意されたい。
【００２９】
図１ニューラルネットワークの右端の層は出力層と呼ばれ、出力層のニューロンは出力ニューロンと呼ばれる。出力層は、最後の隠れ層からの出力を受け取る。図１に示すニューラルネットワークでは、出力層には３つのニューロンと３つの出力信号ｙ１、ｙ２、およびｙ３がある。
【００３０】
実際の応用では、初期のニューラルネットワークをトレーニングするために、事前に多数のサンプルデータ（入力と出力を含む）が提供され、トレーニングが完了した後、トレーニングされたニューラルネットワークが取得される。当該ニューラルネットワークは、将来の実際の環境での入力に対して正しい出力を提供できる。
【００３１】
ニューラルネットワークのトレーニングについて説明する前に、損失関数を定義する必要がある。損失関数は、特定のタスクを実行する際のニューラルネットワークを評価するパフォーマンス関数である。いくつかの実施形態では、損失関数は、以下のように得ることができる：特定のニューラルネットワークをトレーニングする過程において、各サンプルデータをニューラルネットワークに沿って伝送し、出力値を得る。次にこの出力値と期待値との除算を行い、その差が二乗される。このように計算された損失関数は、予測値と真の値の間の差別である。ニューラルネットワークをトレーニングする目的は、この差別または損失関数の値を減らすことである。いくつかの実施形態では、損失関数は次のように表すことができる。
【００３２】
【数１】
2021530769.tif 000003
【００３３】
ニューラルネットワークのトレーニングの開始時に、重みをランダムに初期化する必要がある。明らかに、初期化されたニューラルネットワークは良い結果を提供しない。トレーニングプロセスでは、悪いニューラルネットワークから始めたと仮定し、トレーニングを通じて、高精度のネットワークを取得できる。
【００３４】
ニューラルネットワークのトレーニングプロセスは２つの段階に分かれている。第１段階は、入力層から隠れ層、最後に出力層への信号の順方向処理である。第２段階は、出力層から隠れ層、最後に入力層への逆方向伝播勾配であり、勾配に従って、ニューラルネットワークの各層の重みとオフセットが順番に調整される。
【００３５】
順方向処理の過程で、入力値はニューラルネットワークの入力層に入力され、いわゆる予測値の出力はニューラルネットワークの出力層から取得される。入力値がニューラルネットワークの入力層に提供されるとき、何の操作もしない。隠れ層では、第２隠れ層が第１隠れ層から予測中間結果値を取得し、計算操作および活性化操作を実行してから、取得した中間予測結果値を次の隠れ層に伝送する。後続の層で同じ操作を実行し、最後にニューラルネットワークの出力層で出力値を取得する。
【００３６】
順方向処理後、予測値と呼ばれる出力値が得られる。誤差を計算するために、予測値が実際の出力値と比較され、対応する誤差値が取得される。逆方向伝播は微分学のチェーンルールを使用する。チェーンルールでは、ニューラルネットワークの最後の層に対応する誤差値の導関数が最初に計算される。これらの導関数を勾配と呼び、次にこれらの勾配を使用して、ニューラルネットワークの最後から第２層の勾配を計算する。ニューラルネットワークの各重みに対応する勾配が得られるまで、このプロセスを繰り返す。最後に、ニューラルネットワークの各重みから対応する勾配を差し引き、重みが１回更新され、誤差値を減らす目的を達成する。
【００３７】
ニューラルネットワークの場合、微調整とは、トレーニングされたニューラルネットワークをロードすることである。微調整プロセスは、トレーニングプロセスと同じ、２つの段階に分かれている。第１段階は信号の順方向処理で、第２段階は逆方向の伝搬勾配であり、トレーニングされたニューラルネットワークの重みが更新される。トレーニングと微調整の違いは、トレーニングは初期化されたニューラルネットワークをランダムに処理し、ニューラルネットワークを最初からトレーニングすることであるが、微調整はそうではないことである。
【００３８】
ニューラルネットワークのトレーニングまたは微調整のプロセスでは、ニューラルネットワークに対して信号の順方向処理および対応する誤差の逆方向伝播プロセスを実行するたびに、ニューラルネットワークの重みが勾配を使用して１回更新される。これは１回の反復（ｉｔｅｒａｔｉｏｎ）と呼ばれる。精度が期待に応えるニューラルネットワークを取得するには、トレーニングプロセス中に非常に大きなサンプルデータ集合が必要である。この場合、サンプルデータ集合を一度にコンピュータに入力することはできない。したがって、この問題を解決するには、サンプルデータ集合を複数のブロックに分割し、各ブロックをコンピュータに伝送必要がある。データ集合の各ブロックが順方向処理された後、それに応じてニューラルネットワークの重みが更新される。一つの完全なサンプルデータ集合がニューラルネットワークによって順方向処理を１回実行され、かつ対応する重みの更新を１回返す場合、このプロセスはエポック（ｅｐｏｃｈ）と呼ばれる。実際には、完全なデータ集合をニューラルネットワークで１回伝送するだけでは不十分であり、完全なデータ集合を同じニューラルネットワークで複数回伝送する必要がある。つまり、期待される精度で最終的にニューラルネットワークを取得するには、複数のエポックが必要である。
【００３９】
ニューラルネットワークのトレーニングまたは微調整のプロセスでは、一般に、高速であるほど優れており、精度が高いほど優れていることが望まれる。ニューラルネットワークにおけるデータは浮動小数点数などの高精度のデータフォーマットで表現されるため、トレーニングや微調整の過程で、関連するデータはすべて高精度のデータフォーマットになり、トレーニングされたニューラルネットワークが量子化される。量子化される対象をニューラルネットワーク全体の重みで、かつ量子化された重みはすべて８ビットの固定小数点数であるとすると、ニューラルネットワークには数百万もの接続があることが多いため、ほとんどすべてのスペースがニューロンの接続に占められている。さらに、これらの重みはすべて異なる浮動小数点数である。各層の重みは、（−３．０、３．０）などの特定の区間の正規分布になる傾向がある。ニューラルネットワークの各層の重みに対応する最大値と最小値が格納され、各浮動小数点値は８ビットの固定小数点数で表される。ここで、最大値と最小値の範囲内の区間で２５６の量子化間隔に線形に分割され、各量子化間隔は８ビットの固定小数点数で表される。例：区間（−３．０、３．０）では、バイト０は−３．０を表し、バイト２５５は３．０を表す。類推で、バイト１２８は０を表す。
【００４０】
高精度のデータフォーマットで表されるデータの場合、浮動小数点数を例にとると、コンピュータアーキテクチャによれば、浮動小数点数の算術表現規則、固定小数点数の演算表現規則に基づき、同じ長さの固定小数点演算と浮動小数点演算に対して、浮動小数点演算の計算モードはより複雑であり、浮動小数点演算ユニットを形成するには、より多くのロジック装置が必要である。このように、体積に関しては、浮動小数点演算ユニットの体積は固定小数点演算ユニットの体積よりも大きくなる。さらに、浮動小数点演算ユニットは処理するためにより多くのリソースを消費する必要があるため、固定小数点演算と浮動小数点演算の間の電力消費ギャップは通常、オーダー的である。つまり、浮動小数点演算が占めるチップ面積と消費電力は、固定小数点演算の何倍にもなる。
【００４１】
ただし、浮動小数点演算はかけがえのないものである。まず、固定小数点演算は直感的であるが、固定の小数点位置が固定桁数の整数部と小数部を確定するため、非常に大きい数や非常に小さい数を同時に表現することができず、オーバーフローが発生する可能性がある。
【００４２】
さらに、トレーニングまたは微調整に人工知能プロセッサのチップを使用する場合、主に監視付き学習を備えたニューラルネットワークでは、浮動小数点演算のみがトレーニング時の僅かなインクリメントを記録およびキャプチャできるため、浮動小数点演算が通常好まれる。そのため、人工知能プロセッサのチップ面積や消費電力を増やすことなく、チップのトレーニングするための計算能力を大幅に向上させることは、早急に解決する必要のある問題である。
【００４３】
当業者の場合、低ビット幅で表される固定小数点数を使用してトレーニングを行う場合、実際のフィードバックによれば、逆伝播勾配を処理するためには、８ビットよりも大きい固定小数点数を使用する必要があり、低ビット幅で表される定点数を使用してトレーニング実行するプロセスは非常に複雑である。浮動小数点演算ユニットを固定小数点演算ユニットに置き換えて、固定小数点演算の高速性を実現し、人工知能プロセッサのチップのピーク計算能力を向上させ、同時に演算に必要な浮動小数点演算の精度を満たす方法は、この明細書で解決される技術的な問題である。
【００４４】
上記の技術的問題の説明に基づくと、ニューラルネットワークの特徴の１つは、入力ノイズに対する耐性が高いことである。画像内のオブジェクトを識別することを検討する場合、ニューラルネットワークは主なノイズを無視して重要な類似点に焦点を合わせることができる。この機能は、ニューラルネットワークが低精度の計算をノイズ源として、情報が少ない数値形式でも正確な予測結果を生成できることを意味する。低精度のトレーニングや微調整を行うには、データのオーバーフローを改善できるだけでなく、目標区間範囲内の０に近いデータをより適切に表現できるユニバーサルなデータ表現を見つける必要がある。したがって、このデータ表現は、適応性が必要であり、トレーニングまたは微調整プロセスとともに調整できる。
【００４５】
上記の説明に基づいて、図２に示されるように、本開示で提案されたニューラルネットワークの量子化パラメータの確定方法のフローチャートである。図２に示す技術案によって確定された量子化パラメータは、量子化予定のデータを表すために使用され、量子化された固定小数点数を確認する。量子化された固定小数点数は、ニューラルネットワークのトレーニング、微調整、または推論に使用される。この方法には次のものが含まれる。
【００４６】
ステップ２０１）：量子化予定のデータを統計し、各タイプの量子化予定のデータの統計結果を確定する。ここで、量子化予定のデータには、ニューラルネットワークのニューロン、重み、勾配、およびオフセットの少なくとも１つが含まれる。
【００４７】
前述のように、ニューラルネットワークのトレーニングまたは微調整のプロセスでは、ニューラルネットワークの各層には、ニューロン、重み、勾配、オフセットの４種類のデータが含まれる。推論プロセスでは、ニューラルネットワークの各層に、ニューロン、重み、オフセットの３種類のデータが含まれる。これらのデータは高精度のデータフォーマットで表現されている。本明細書では、例として高精度のデータとして浮動小数点数を使用している。例としての浮動小数点数は、網羅的なリストではなく、例の一部のリストにすぎないことは明らかである。当業者は、技術案の本質を理解していれば、本開示の技術案に基づいて他の技術案を生み出すことができる。たとえば、高精度のデータは、範囲が広く、最小精度が低く、データビット幅が大きい固定小数点数にすることができる。この技術案を使用して、データビット幅が小さい固定小数点数に変換できる。ただし、達成される機能および技術的効果が本開示のものと類似している限り、それらは本開示の保護範囲に含まれるべきである。
【００４８】
ニューラルネットワークの構造の種類に関係なく、ニューラルネットワークのトレーニングまたは微調整の過程で、量子化予定のデータには、ニューラルネットワークのニューロン、重み、勾配、およびオフセットの少なくとも１つが含まれる。推論プロセスでは、量子化予定のデータこれには、ニューラルネットワークのニューロン、重み、およびオフセットのデータが少なくとも１つ含まれている。たとえば、量子化予定のデータを重みとすると、量子化予定のデータは、ニューラルネットワーク内の特定の層のすべての重み、またはニューラルネットワーク内の特定の層の重みの一部にすることができる。層が畳み込み層の場合、量子化予定のデータは、チャンネル単位での畳み込み層のすべての重みまたは重みの一部である可能性があり、チャネルは畳み込み層のチャネルのすべてまたは一部である。畳み込み層のみがチャネルの概念を持ち、畳み込み層では、重みサブ層のみがチャネルの方法で量子化されることを強調する必要がある。
【００４９】
以下では、量子化予定のデータがニューロンとニューラルネットワーク内のターゲット層の重みであることを例として取り上げ、技術案について詳しく説明する。このステップでは、ターゲット層の各層のニューロンと重みを個別にカウントして、各タイプの量子化予定のデータの最大値と最小値を取得する。また、各タイプの量子化予定のデータの絶対最大値も取得できる。ここで、ニューラルネットワークで量子化する必要のある層としてのターゲット層は、１つの層または複数の層にすることができる。１つの層を単位として、各タイプの量子化予定のデータの最大絶対値は、各タイプの量子化予定のデータの最大値と最小値によって確認できる。また、まず各タイプの量子化予定のデータの絶対値を取得し、絶対値を取得した後の結果をトラバースして、各タイプの量子化予定のデータの最大絶対値を取得することもできる。
【００５０】
実際の応用では、各タイプの量子化予定のデータの絶対最大値が、各タイプの量子化予定のデータの最大値と最小値に従って取得される理由は、量子化中に、通常の状況では、ターゲット層の各層の量子化予定のデータに対応する最大値と最小値が格納され、量子化予定のデータの絶対値を計算するために多くのリソースを消費する必要はない。絶対最大値は、格納された量子化予定のデータに対応する最大値と最小値に基づいて直接取得できる。
【００５１】
ステップ２０２）：各タイプの量子化予定のデータの統計結果とデータビット幅を使用して、対応する量子化パラメータを確定する。ここで、量子化パラメータは、人工知能プロセッサがニューラルネットワーク演算プロセスにおけるデータを対応して量子化するためである。
【００５２】
このステップでは、量子化パラメータを次の６つのケースに分けることができる。第１ケース：量子化パラメータは小数点位置パラメータｓである。この場合、次の式（１）を使用して、量子化予定のデータを量子化し、量子化データＩｘを取得できる。
Ｉｘ＝ｒｏｕｎｄ（Ｆｘ／２ｓ）                          （１）
【００５３】
ここ、ｓは小数点位置パラメータ、Ｉｘはデータｘの量子化後のｎビットのバイナリ表現の値、Ｆｘはデータｘの量子化前の浮動小数点値、ｒｏｕｎｄは四捨五入の丸め演算である。このｒｏｕｎｄの丸め演算に限定されるものではなく、他の丸め演算方法も使用できることに注意されたい。たとえば、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算で式（１）の丸め演算を置き換えてもよい。このとき、ｎビットの固定小数点数で浮動小数点数を表せる最大値Ａは２ｓ（２ｎ−１−１）であり、ｎビットの固定小数点数で量子化予定のデータの数値フィールドにおいて表せる最大値は２ｓ（２ｎ−１−１）であり、ｎビットの固定小数点数で量子化予定のデータの数値フィールドにおいて表せる最小値は−２ｓ（２ｎ−１−１）である。式（１）からわかるように、第１ケースに対応する量子化パラメータを使用して、量子化予定のデータを量子化すると、量子化間隔は２ｓであり、量子化間隔はＣで表される。
【００５４】
Ｚは量子化予定のデータの数値フィールド内のすべての浮動小数点数の最大絶対値であるとすると、ＡはＺを含める必要があり、かつＺはＡ／２より大きい必要があるため、次の式（２）の制約がある。
２ｓ（２ｎ−１−１）＞＝Ｚ＞２ｓ−１（２ｎ−１−１）              式（２）
【００５５】
よって、ｌｎ（Ｚ／（２ｎ−１−１））−１＞ｓ＞＝ｌｎ（Ｚ／（２ｎ−１−１））であり、ｓ＝ｃｅｉｌ（ｌｎ（Ｚ／（２ｎ−１−１）））およびＡ＝（２＾ｃｅｉｌ（ｌｎ（Ｚ／（２ｎ−１−１））））（２ｎ−１−１）が得られる。
【００５６】
【数２】
2021530769.tif 000004
【００５７】
第２のケース：量子化パラメータが第１のスケーリング係数ｆ１である。この場合、次の式（４）を使用して、量子化予定のデータを量子化し、量子化データＩｘを取得できる。
Ｉｘ＝ｒｏｕｎｄ（Ｆｘ／ｆ１）                              式（４）
【００５８】
ここ、ｆ１は第１のスケーリング係数、Ｉｘはデータｘの量子化後のｎビットのバイナリ表現の値、Ｆｘはデータ量子化前の浮動小数点値、ｒｏｕｎｄは四捨五入の丸めによって実行される丸め演算である。このｒｏｕｎｄの丸め演算に限定されるものではなく、他の丸め演算方法も使用できることに注意されたい。たとえば、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算で式（４）の丸め演算を置き換えてもよい。式（４）からわかるように、第２のケースに対応する量子化パラメータを使用して量子化予定のデータを量子化すると、量子化間隔はｆ１であり、量子化間隔はＣで表される
【００５９】
第１のスケーリング係数ｆ１には、次のような状況がある。小数点位置パラメータｓが固定の既知の値であり、変更されなくなった場合、２ｓ＝ＴとしかつＴを固定値とすると、ｎビットの固定小数点数で表せる浮動小数点数の最大値Ａは、（２ｎ−１−１）ｘＴである。この場合、最大値Ａはデータビット幅ｎに依存する。このとき、量子化予定のデータの数値領域にあるすべての数値の最大絶対値をＺとする。ｎビットの固定小数点数で表せる量子化予定のデータの数値フィールドの最大値がであることを示すことができ、ｎビットの固定小数点数で表せる量子化予定のデータの数値フィールドの最小値がであることを示すことができる。エンジニアリング応用では、全体として第１のスケーリング係数として別のケースがある。現時点では、独立した小数点位置パラメータは存在しないと見なすことができる。第２のスケーリング係数はどこにあるか。このとき、量子化予定のデータの数値領域にあるすべての数値の最大絶対値をＺとする。ｎビットの固定小数点数で表せる量子化予定のデータの数値フィールドの最大値がであることを示すことができ、ｎビットの固定小数点数で表せる量子化予定のデータの数値フィールドの最小値がであることを示すことができる。
【００６０】
【数３】
2021530769.tif 000005
【００６１】
第３のケース：量子化パラメータは、小数点位置パラメータｓと第２のスケーリング係数である。この場合、次の式（６）を使用して、量子化予定のデータを量子化し、量子化データＩｘを取得できる。
Ｉｘ＝ｒｏｕｎｄ（Ｆｘ／（２ｓｘｆ２））                  式（６）
【００６２】
ここ、ｓは小数点位置パラメータ、ｆ２は第２のスケーリング係数で、ｆ２＝Ｚ／（２ｓ（２ｎ−１−１））であり、Ｉｘはデータｘの量子化後のｎビットのバイナリ表現の値、Ｆｘはデータｘ量子化前の浮動小数点値、roundは四捨五入の丸め演算である。このｒｏｕｎｄの丸め演算に限定されるものではなく、他の丸め演算方法も使用できることに注意されたい。たとえば、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算で式（６）の丸め演算を置き換えてもよい。量子化予定のデータの数値フィールドで、ｎビットの固定小数点数で表せる最大値Ａは２ｓ（２ｎ−１−１）である。式（６）からわかるように、第３のケースに対応する量子化パラメータを使用して量子化予定のデータを量子化すると、量子化間隔は２ｓｘｆ２であり、量子化間隔はＣで表される。
【００６３】
量子化予定のデータの数値領域におけるすべての数値の最大絶対値をＺとする。このとき、式（２）に従って、次の式が得られる。
１＞＝Ｚ／（２ｓ（２ｎ−１−１））＞１／２、即ち１＞＝Ｚ／Ａ＞１／２、１＞＝ｆ２＞１／２
【００６４】
ｆ２＝Ｚ／（２ｓ（２ｎ−１−１））＝Ｚ／Ａの場合、式（２）によれば、Ｚは損失なく正確に表現できる。ｆ２＝１の場合、式（６）および式（１）は、ｓ＝ｃｅｉｌ（ｌｎ（Ｚ／（２ｎ−１−１）））である。ｎビットの固定小数点数で表せる、量子化予定のデータの数値フィールドの最大値が（２ｎ−１−１）ｘ２ｓｘｆ２であり、ｎビットの固定小数点数で表せる、量子化予定のデータの数値フィールドの最小値が−（２ｎ−１−１）ｘ２ｓｘｆ２である。
【００６５】
【数４】
2021530769.tif 000006
【００６６】
図３に示すように、対称固定小数点数の概略図を表している。図３に示す量子化予定のデータの数値フィールドは、対称中心として「０」で分布されている。Ｚは、量子化予定のデータの数値フィールド内のすべての浮動小数点数の最大絶対値である。図３は、Ａはｎビットの固定小数点数で表すことができる浮動小数点数の最大値である。浮動小数点数Ａから固定小数点数２ｎ−１−１への変換はである。オーバーフローを回避するには、ＡはＺを含める必要がある。実際には、ニューラルネットワーク運用の過程での浮動小数点データは一定の間隔で正規分布する傾向があるが、対称中心が「０」の分布を必ずしも満たすとは限らない。このとき、固定小数点数で表すとオーバーフローが発生しやすくなる。この状況を改善するために、図４に示すように、オフセットが量子化パラメータに導入される。図４では、量子化予定のデータの数値フィールドは、「０」を中心として対称的に分布していない。Ｚｍｉｎは、量子化予定のデータの数値フィールドのすべての浮動小数点数の最小値であり、Ｚｍａｘは量子化予定のデータの数値フィールドのすべての浮動小数点数の最大値である。ＰはＺｍｉｎ〜Ｚｍａｘの間の中心点であり、全体として量子化予定のデータの数値フィールドをシフトして、変換後に量子化予定のデータの数値フィールドが対称中心として「０」で分散されるようにし、変換後に量子化予定のデータの数値フィールドは最大絶対値はである。図４からわかるように、オフセットはポイント「０」からポイント「Ｐ」までの水平距離であり、この距離はオフセットと呼ばれている。ここ、０＝（Ｚｍａｘ＋Ｚｍｉｎ）／２で、Ｚ＝（Ｚｍａｘ−Ｚｍｉｎ）／２である。
【００６７】
上記のオフセットＯの説明に基づいて、第４のケースの量子化パラメータのケースが表れる。第４のケース：量子化パラメータには、小数点位置パラメータとオフセットが含まれる。この場合、次の式（８）を使用して、量子化予定のデータを量子化し、量子化データＩｘを取得できる。
Ｉｘ＝ｒｏｕｎｄ（（Ｆｘ−Ｏ）／２ｓ）                        式（８）
【００６８】
ここ、ｓは小数点位置パラメータ、Ｏはオフセット、０＝（Ｚｍａｘ＋Ｚｍｉｎ）／２はデータｘの量子化後のｎビットのバイナリ表現の値、Ｆｘはデータ量子化前の浮動小数点値、ｒｏｕｎｄは四捨五入の丸め演算である。このｒｏｕｎｄの丸め演算に限定されるものではなく、他の丸め演算方法も使用できることに注意されたい。たとえば、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算で式（８）の丸め演算を置き換えてもよい。このとき、ｎビットの固定小数点数で浮動小数点数を表せる最大値Ａは２ｓ（２ｎ−１−１）であり、ｎビットの固定小数点数で量子化予定のデータの数値フィールドにおいて表せる最大値は２ｓ（２ｎ−１−１）であり、ｎビットの固定小数点数で量子化予定のデータの数値フィールドにおいて表せる最小値は−２ｓ（２ｎ−１−１）＋Ｏである。式（８）から分かる、第４のケースに対応する量子化パラメータを使用して量子化予定のデータを量子化すると、量子化間隔は２ｓであり、量子化間隔はＣで表される。
【００６９】
量子化予定のデータの数値フィールド内のすべての浮動小数点数の最大絶対値をＺとすると、ＡはＺを含め、かつＺはＡ／２より大きいる必要があり、式（２）に従ってｌｎ（Ｚ／（２ｎ−１−１））−１＞ｓ＞＝ｌｎ（Ｚ／（２ｎ−１−１））を取得してからｓ＝ｃｅｉｌ（ｌｎ（Ｚ／（２ｎ−１−１）））及びＡ＝（２＾ｃｅｉｌ（ｌｎ（Ｚ／（２ｎ−１−１））））（２ｎ−１−１）を取得する。
【００７０】
【数５】
2021530769.tif 000007
【００７１】
上記のオフセットＯの説明に基づいて、第５の量子化パラメータのケースが表れる。第５ケース：量子化パラメータには、第１のスケーリング係数ｆ１とオフセットＯが含まれる。この場合、次の式（１０）を使用して、量子化予定のデータを量子化し、量子化データＩｘを取得できる。
Ｉｘ＝ｒｏｕｎｄ（（Ｆｘ−Ｏ）／ｆ１）                      式（１０）
【００７２】
ここで、ｆ１は第１のスケーリング係数、Ｏはオフセット、Ｉｘはデータｘの量子化後のｎビットのバイナリ表現の値、Ｆｘはデータ量子化前の浮動小数点値、ｒｏｕｎｄは四捨五入の丸め演算である。このｒｏｕｎｄの丸め演算に限定されるものではなく、他の丸め演算方法も使用できることに注意されたい。たとえば、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算で式（１０）の丸め演算を置き換えてもよい。このとき、小数点位置パラメータｓが既知の固定値であり、変化しなくなり、２ｓ＝Ｔとすると、Ｔを固定値とするという状況がある。次に、ｎビットの固定小数点数で表せる浮動小数点数の最大値Ａは（２ｎ−１−１）ｘＴである。この場合、最大値Ａはデータビット幅ｎに依存する。このとき、量子化予定のデータの数値領域の全数値の最大絶対値をＺとして設定すると、ｆ１＝Ｚ／（２ｎ−１−１）となり、Ｚ＝（２ｎ−１−１）ｘｆ１となる。ｎビットの固定小数点数で表せる量子化予定のデータの数値フィールドの最大値が２ｎ−１−１）ｘｆ１である、ｎビットの固定小数点数で表せる量子化予定のデータの数値フィールドの最小値が−２ｎ−１−１）ｘｆ１である。エンジニアリング応用では、２ｓｘｆ２は全体として第１のスケーリング係数として別のケースがある。現時点では、独立した小数点位置パラメータは存在しないと見なすことができる。ｆ２は第２のスケーリング係数である。このとき、量子化予定のデータの数値領域にあるすべての数値の最大絶対値をＺとすると、ｆ１＝Ｚ／（２ｎ−１−１）でＺ＝（２ｎ−１−１）ｘｆ１となる。ｎビットの固定小数点数で表せる量子化予定のデータの数値フィールドの最大値が（２ｎ−１−１）ｘｆ１＋Ｏであるが、ｎビットの固定小数点数で表せる量子化予定のデータの数値フィールドの最小値が−（２ｎ−１−１）ｘｆ１＋Ｏである。
【００７３】
式（１０）からわかるように、第５ケースに対応する量子化パラメータを使用して量子化予定のデータを量子化すると、量子化間隔はｆ１であり、量子化間隔はＣである。
【００７４】
【数６】
2021530769.tif 000008
【００７５】
上記のオフセットＯの説明に基づいて、第６の量子化パラメータのケースが表れる。第６ケース：量子化パラメータには、小数点位置パラメータ、第２のスケーリング係数ｆ２、およびオフセットＯが含まれる。この場合、次の式（１２）を使用して、量子化予定のデータを量子化し、量子化データＩｘを取得できる。
Ｉｘ＝ｒｏｕｎｄ（（Ｆｘ−Ｏ）／（２ｓｘｆ２））                式（１２）
【００７６】
ここ、ｓは小数点位置パラメータで、オフセットＯ、ｆ２は第２のスケーリング係数で、ｆ２＝Ｚ／（２ｓ（２ｎ−１−１））かつＺ＝（Ｚｍａｘ−Ｚｍｉｎ）／２であり、Ｉｘはデータｘの量子化後のｎビットのバイナリ表現の値、Ｆｘはデータ量子化前の浮動小数点値、ｒｏｕｎｄは四捨五入の丸め演算である。このｒｏｕｎｄの丸め演算に限定されるものではなく、他の丸め演算方法も使用できることに注意されたい。たとえば、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算で式（１２）の丸め演算を置き換えてもよい。ｎビットの固定小数点数で表せる量子化予定のデータの数値フィールドでの最大値Ａは２ｓ（２ｎ−１−１）である。式（１２）からわかるように、第６ケースに対応する量子化パラメータを使用して量子化予定のデータを量子化すると、量子化間隔は２ｓｘｆ２であり、量子化間隔はＣで表される。
【００７７】
量子化予定のデータの数値領域におけるすべての数値の最大絶対値をＺとする。このとき、式（２）に従って、次の式が得られる。
１＞＝Ｚ／（２ｓ（２ｎ−１−１））＞１／２、即ち１＞＝Ｚ／Ａ＞１／２、１＞＝ｆ２＞１／２
【００７８】
ｆ２＝Ｚ／（２ｓ（２ｎ−１−１））＝Ｚ／Ａの場合、式（２）によれば、Ｚは損失なく正確に表現できる。ｆ２＝１の場合、ｓ＝ｃｅｉｌ（ｌｎ（Ｚ／（２ｎ−１−１）））である。ｎビットの固定小数点数で表せる量子化予定のデータの数値フィールドの最大値が（２ｎ−１−１）ｘ２ｓｘｆ２＋Ｏであるが、ｎビットの固定小数点数で表せる量子化予定のデータの数値フィールドの最小値が−（２ｎ−１−１）ｘ２ｓｘｆ２＋Ｏである。
【００７９】
【数７】
2021530769.tif 000009
【００８０】
６つの量子化パラメータの確定プロセスに関する上記の詳細な説明は、説明の一例にすぎない。量子化パラメータのタイプは、異なる実施形態における上記の説明とは異なる場合がある。式（１）〜式（１３）からわかるように、小数点位置パラメータとスケーリング係数はすべてデータビット幅に関連している。データビット幅が異なると、小数点位置パラメータとスケーリング係数が異なるため、量子化の精度に影響する。トレーニングまたは微調整の過程で、特定の反復範囲内で、同じデータ幅の量子化を使用しても、ニューラルネットワーク演算の全体的な精度にはほとんど影響しない。特定の回数の反復の後、同じデータビット幅の量子化はトレーニングまたは微調整の精度要件を満たすことができない。これには、トレーニングまたは微調整プロセスとともにデータビット幅ｎを調整する必要がある。簡単に、データビット幅ｎを手動で設定できる。異なる反復時間の範囲で、事前に設定された対応するデータビット幅ｎを呼び出する。ただし、前述のように、低ビット幅で表される固定小数点数を使用してトレーニングを実装するプロセスは非常に複雑である。データビット幅を事前に設定するこの人為的な調整方法は、基本的に実際の応用の要件を満たしていない。
【００８１】
この技術案では、データビット幅ｎは量子化誤差に従って調整される。より詳細には、量子化誤差をしきい値と比較し、比較結果を取得する。ここで、しきい値は第１のしきい値と第２のしきい値を含み、第１のしきい値が第２のしきい値よりも大きい。比較結果の３つの場合がある。第１の場合は、量子化誤差が第１のしきい値以上である。この場合、データビット幅が増やす。第２のケースは、量子化誤差が第２のしきい値以下である場合である。この場合、データビット幅を減らす。第３のケースは、量子化誤差が第１のしきい値と第２のしきい値の間にある場合である。この場合、データビット幅は変更されない。実際の応用では、第１のしきい値と第２のしきい値は、経験値または可変ハイパーパラメータである可能性がある。従来のハイパーパラメータ最適化方法は、第１のしきい値と第２のしきい値に適しており、ハイパーパラメータ最適化スキームはここでは繰り返されない。
【００８２】
データビット幅は、固定ビット長に従って調整できること、または量子化誤差と誤差しきい値の差に従って調整できることを強調する必要がある。データビット幅は、可変調整ステップ長さによって、最後に次のように調整できる。ニューラルネットワークの運用プロセスの実際のニーズに応じて、データビット幅を長くまたは短く調整できる。たとえば、現在の畳み込み層のデータビット幅ｎは１６であり、データビット幅ｎは量子化誤差ｄｉｆｆｂｉｔに応じて１２に調整される。つまり、実際の応用では、データビット幅ｎを１６ではなく１２にして、ニューラルネットワークの運用プロセスの精度要件を満たすため、精度の許容範囲内で固定小数点の動作速度を大幅に向上させることができる。これにより、人工知能プロセッサのチップのリソース使用率が向上する。
【００８３】
量子化誤差ｄｉｆｆｂｉｔの場合、量子化誤差は、量子化後のデータおよび量子化前の対応するデータによって確定される。実際の応用では、３つの量子化誤差確定方法があり、それらはすべてこの技術案に適用できる。第１の方法：量子化間隔、量子化後のデータの数、および量子化前の対応するデータに従って、式（１４）に従って量子化誤差を確定する。  
ｄｉｆｆｂｉｔ＝ｌｎ（Ｃ＊２−１＊ｍ／Σｉ｜Ｆｉ｜）          式（１４）
【００８４】
ここで、Ｃは量子化中の対応する量子化間隔、ｍは量子化後に取得された量子化データの数、Ｆｉは量子化予定のデータに対応する浮動小数点値、ｉは量子化予定のデータ集合内のデータの添え字である。
【００８５】
【数８】
2021530769.tif 000010
【００８６】
量子化誤差ｄｉｆｆｂｉｔを取得するための上記の方法は単なる例であり、網羅的なリストではないことを強調すべきである。当業者は、本開示の技術案に基づいて、本開示の技術案の本質を理解し得る。他の変形または変換を生成する。量子化後のデータおよび量子化前の対応するデータに基づく量子化誤差の確定をサポートする変形式。ただし、達成される機能および技術的効果が本開示のものと類似している限り、それらは本開示に属するべきである。保護の範囲。
【００８７】
データビット幅については、図５ａは、トレーニングプロセス中のニューラルネットワークの重みデータの変動範囲のグラフの１つである。図５ｂは、トレーニングプロセス中のニューラルネットワークの重みデータの変動範囲の第２のグラフである。図５ａおよび５ｂでは、横軸は反復回数を表し、縦軸は対数を取った後の重みの最大値を表す。図５ａに示される重みデータ変動振幅曲線は、ニューラルネットワークの任意の畳み込み層の同じエポック（ｅｐｏｃｈ）における異なる反復に対応する重みデータの変動を示している。図５ｂでは、ｃｏｎｖ０層は重みデータ変動範囲曲線Ａに対応し、ｃｏｎｖ１層は重みデータ変動範囲曲線Ｂに対応し、ｃｏｎｖ２層は重みデータ変動範囲曲線Ｃに対応し、ｃｏｎｖ３層は重みデータ変動範囲曲線Ｄ、ｃｏｎｖ４に対応する。この層は、重みデータの変動範囲曲線ｅに対応する。図５ａと図５ｂからわかるように、同じエポックで、初期トレーニング段階では、各反復の重み変動範囲が比較的大きい。トレーニングの中期および後期では、各反復での重みの変化はそれほど大きくならない。この場合、トレーニングの中期以降の段階では、各反復の前後で重みデータがほとんど変化しないため、各反復に対応する層の重みデータは、特定の反復間隔内で類似性がある。ニューラルネットワークトレーニングプロセスでは前の反復で各層に含まれるデータを量子化する場合、前の反復で対応する層の量子化で使用されたデータビット幅を使用できる。ただし、トレーニングの開始時には、各反復の前後で重みデータが比較的大きく変化するため、量子化に必要な浮動小数点演算の精度を満たすために、初期トレーニング段階の各反復で、前の反復で使用した対応する層量子化を使用する。データビット幅は、カレント反復の対応する層の重みデータを量子化するか、現在の層のプリセットデータビット幅ｎに基づいて現在の層の重みデータを量子化して、量子化された固定小数点数を取得する。量子化された重みデータと量子化前の対応する重みデータに従って量子化誤差ｄｉｆｆｂｉｔを確定する。量子化誤差ｄｉｆｆｂｉｔとしきい値の比較結果、前の反復で対応する層の量子化に使用されたデータビット幅ｎ、または現在の層のプリセット値データビット幅ｎが調整され、調整後のデータビット幅がカレント反復の対応する層の重みデータの量子化に適用される。さらに、トレーニングまたは微調整のプロセスでは、ニューラルネットワークの各層間の重みデータは互いに独立しており、類似性はない。重みデータには類似性がないため、各層間のニューロンデータも互いに独立しており、類似性はない。したがって、ニューラルネットワークのトレーニングまたは微調整プロセスでは、ニューラルネットワークの各反復における各層のデータビット幅は、対応するニューラルネットワーク層にのみ適用できる。
【００８８】
重みデータを例にとると、ニューラルネットワークのトレーニングや微調整の過程で、ニューロンデータと勾配データに対応するデータビット幅も同じであり、ここでは繰り返さない。
【００８９】
ニューラルネットワーク推論のプロセスでは、ニューラルネットワークの各層間の重みデータは互いに独立しており、類似性はない。重みデータには類似性がないため、各層間のニューロンデータも互いに独立しており、類似性はない。したがって、ニューラルネットワークの推論プロセスでは、ニューラルネットワークの各層のデータビット幅が対応する層に適用される。実際の応用では、推論プロセスで毎回入力されるニューロンデータは異なるか異なる可能性があり、ニューラルネットワークの各層間の重みデータは互いに独立しているため、ニューラルネットワークの各隠れ層層の入力ニューロンデータは類似していない。量子化する場合、上位層の入力ニューロンデータで使用されるデータビット幅は、現在の層の入力ニューロンデータには適していない。これに基づいて、量子化に必要な浮動小数点演算の精度を満たすために、推論では、現在の層の入力ニューロンデータは、前の層の入力ニューロンデータの量子化で使用されるデータビット幅によって、または現在の層に基づいて量子化される。プリセットデータのビット幅ｎは、現在の層の入力ニューロンデータを量子化して、量子化された固定小数点数を取得する。量子化前の入力ニューロンデータとそれに対応する量子化された入力ニューロンデータに従って量子化誤差ｄｉｆｆｂｉｔを確定し、量子化誤差ｄｉｆｆｂｉｔとしきい値の比較結果によって、上位層の入力ニューロンデータを量子化するときに使用されるデータビット幅はｎまたは現在の層のプリセットデータビット幅ｎが調整され、調整後のデータビット幅が現在の層の入力ニューロンデータの量子化に適用される。重みデータに対応するデータビット幅も同じであり、ここでは繰り返さない。
【００９０】
量子化パラメータについては、図５ａからからわかるように、同じ周期（エポック）の初期トレーニング段階で、各反復の重みが比較的大きく変化する。トレーニングの中期および後期では、各反復の前後の重みデータはあまり変化しないため、各反復の対応する層の重みデータは特定の反復間隔内で類似性があり、カレント反復の各層が量子化される。前の反復の対応する層の対応するデータの量子化パラメータは、前の反復のデータに使用できる。量子化パラメータは、トレーニングの中間および後の段階で反復なしで再確認され、量子化パラメータは、最初のトレーニング段階の各反復の各層でのみ確認される。ニューラルネットワーク演算に必要な浮動小数点操作の精度を満たし、量子化の効率を大幅に向上させる。さらに、トレーニングまたは微調整のプロセスでは、ニューラルネットワークの各層間の重みデータは互いに独立しており、類似性はない。重みデータには類似性がないため、各層間のニューロンデータも互いに独立しており、類似性はない。したがって、ニューラルネットワークのトレーニングまたは微調整プロセスでは、ニューラルネットワークの各反復における各層の量子化パラメータが、対応する層で量子化される対応するデータに適用される。
【００９１】
重みデータを例にとると、ニューラルネットワークのトレーニングまたは微調整プロセスでは、ニューロンデータと勾配データに対応する量子化パラメータも同じであり、ここでは繰り返さないことにする。
【００９２】
ニューラルネットワーク推論のプロセスでは、ニューラルネットワークの各層間の重みデータは互いに独立しており、類似性はない。重みデータには類似性がないため、各層間のニューロンデータも互いに独立しており、類似性はない。したがって、ニューラルネットワーク推論プロセスでは、ニューラルネットワークの各層の量子化パラメータが、対応する層で量子化予定のデータに適用される。たとえば、ニューラルネットワークの現在の層は畳み込み層である。畳み込み層で量子化予定のデータによると、現在の畳み込み層で量子化予定のデータの量子化パラメータは、図２に示す技術案に従って取得される。量子化パラメータは、現在の畳み込み層は、他の層が畳み込み層であっても、ニューラルネットワークの他の層に適用することはできない。
【００９３】
要約すると、データビット幅と量子化パラメータの拡張戦略は、データ間の類似性に基づいて確定される。データが類似している場合は、データビット幅と量子化パラメータを使用できる。類似性を得るには、データビット幅または量子化パラメータを調整する必要がある。データ間の類似性の測度は、通常ＫＬダイバージェンスによって測定され、次の式（１７）によっても測定できる。
Ａｂｓｍａｘ（Ａ）≒ａｂｓｍａｘ（Ｂ）かつｍｅａｎ（Ａ）≒ｍｅａｎ（Ｂ）  式（１７）
【００９４】
いくつかの実施形態では、データＡおよびデータＢが式（１７）を満たす場合、データＡおよびデータＢは類似していると確定される。
【００９５】
上記の量子化誤差の確認、データビット幅、データビット幅、および量子化パラメータの拡張戦略の調整方法は単なる例であり、以下のように網羅的ではないことに注意されたい。量子化誤差を確認する方法、データビット幅を調整する方法、データビット幅を拡張する戦略、および量子化パラメータはすべて、ニューラルネットワークの微調整プロセスに適している。また、データ間の類似性の測定に関しては、上記のＫＬダイバージェンスと式（１７）の類似性測定方法は単なる例であり、以下のような網羅的ではない。ヒストグラムマッチング法、マトリックス分解法、特徴点に基づく画像類似度計算法、近接測定標準法など。当業者が本開示の技術案の本質を理解している状況下では、本開示の技術案に基づいて他の変形または変形を生じ得るが、達成された機能および技術的効果が本開示のものと類似している限り、すべてがこの開示の保護範囲に含まれるべきである。
【００９６】
要約すると、トレーニングの中期および後期段階では、各反復の前後の重みデータはあまり変化しないため、各反復の対応する層の重みデータは、特定の反復間隔内で類似している。このテクノロジーを作成するためにこのソリューションは、合理的なアプリケーションを実現するための人工知能プロセッサのチップリソースの要件を満たすためのトレーニングまたは微調整での適用性が高くなる。反復間隔内で各反復の対応する層がなるように、反復間隔を確定するための戦略が必要である。データビット幅ｎは変更されないままであり、反復間隔を超えると、データビット幅ｎが変更されるため、反復ごとにデータビット幅ｎを調整するかどうかを確定する必要はない。同様に、量子化パラメータは同じであり、人工知能プロセッサのチップのピーク計算能力を向上させると同時に、量子化に必要な浮動小数点演算の精度を満たする。
【００９７】
図６に示すように、これは目標反復間隔を確定する方法のフローチャートの１つである。図６に示す技術案では、目標反復間隔は少なくとも１つの重み更新反復を含み、同じデータビット幅が同じ目標反復間隔内の量子化プロセスで使用される。目標反復間隔を確定するステップには、次のものが含まれる。
【００９８】
ステップ６０１）：予測時点で、重み反復プロセス中に量子化予定のデータの対応する小数点位置パラメータの変化傾向値を確定する；ここで、予測時点は、データビット幅を調整する必要があるかどうかを確定するための時点である。調整が行われる時点、予測時点は、重み更新の反復が完了する時点に対応する。
【００９９】
このステップでは、式（１８）に従って、小数点位置パラメータの変化傾向値は、現在の予測時点に対応する重みに基づいている。反復プロセス中の小数点位置パラメータのスライディング平均値、および前の予測時点に対応する値重み反復プロセスの小数点位置パラメータのスライディング平均値が確定されるか、現在の予測時点に対応する重み反復プロセスの小数点位置パラメータと、最後の予測時点に対応する重み反復プロセスの小数点位置によって確定される。パラメータのスライディング平均値が確定される。式１８の式は次のとおりである。
ｄｉｆｆｕｐｄａｔｅ１＝｜Ｍ（ｔ）−Ｍ（ｔ−１）｜＝α｜ｓ（ｔ）−Ｍ（ｔ−１）｜  式（１８）
【０１００】
式１８で、Ｍ（ｔ）はトレーニングの反復とともに増やす小数点位置パラメータｓのスライディング平均値である。その中には、Ｍ（ｔ）は式（１９）に従って得られる、トレーニングの反復が増やすときのｔ番目の予測時点に対応する小数点位置パラメータのスライディング平均値がある。ｓ（ｔ）はｔ番目の予測時点に対応する小数点位置パラメータｓである。αはハイパーパラメータであり、Ｍ（ｔ−１）はｔ−１番目の予測時点に対応する小数点位置パラメータｓのスライディング平均値である。小数点位置パラメータｓの変化は、量子化する現在のデータの最大値Ｚｍａｘの変化にも偽装して反映されるため、小数点位置パラメータの変化傾向を測定する。ｄｉｆｆｕｐｄａｔｅ１値が大きいほど、値の範囲が大幅に変化し、更新頻度が短くなる。つまり、目標反復間隔が短くなる。
Ｍ（ｔ）←αｘｓ（ｔ−１）＋（１−α）Ｍ（ｔ−１）        式（１９）
【０１０１】
ステップ６０２）：小数点位置パラメータの変化傾向値に従って、対応する目標反復間隔を確定する。
【０１０２】
この技術案では、目標反復間隔は式（２０）に従って確定される。目標反復間隔の場合、同じ目標反復間隔内の量子化プロセスで同じデータビット幅が使用され、異なる目標反復間隔内の量子化プロセスで使用されるデータビット幅は同じでも異なっていてもよい。
Ｉ＝β／ｄｉｆｆｕｐｄａｔｅ１−γ                  式（２０）
【０１０３】
式（２０）で、Ｉは目標反復間隔である。ｄｉｆｆｕｐｄａｔｅ１は小数点位置パラメータの変化傾向値である。β、γは経験値であり、可変ハイパーパラメータにすることもできる。従来のハイパーパラメータ最適化方法はすべて、β、γに適しており、ハイパーパラメータの最適化スキームはここでは繰り返されない。
【０１０４】
この技術案の場合、予測時点には最初の予測時点が含まれ、最初の予測時点は目標反復間隔によって確定される。具体的には、トレーニングまたは微調整プロセスのｔ番目の予測時点で、カレント反復の対応する層の重みデータが、前の反復の対応する層の量子化で使用されるデータビット幅を使用して量子化され、量子化された固定小数点数が取得される。量子化前の重みデータとそれに対応する量子化前の重みデータに基づいて量子化誤差ｄｉｆｆｂｉｔを求めます。量子化誤差ｄｉｆｆｂｉｔはそれぞれ第１しきい値および第２しきい値と比較され、その比較結果は、前の反復で対応する層の量子化に使用されたデータビット幅を調整するかどうかを確定するためである。仮定：ｔ番目の最初の予測時点は１００回目の反復に対応し、９９回目の反復で使用されるデータビット幅はｎ１である。１００回目の反復では、データビット幅ｎ１に従って量子化誤差ｄｉｆｆｂｉｔを確認し、量子化誤差ｄｉｆｆｂｉｔを第１しきい値、第２しきい値と比較して比較結果を求めます。比較結果により、データビット幅ｎ１を変更する必要がないことが確認された場合は、式（２０）を使用して、目標反復間隔が８反復であることを確認する。現在の目標反復間隔内で、１番目の反復として１００回目の反復を使用する場合は、１００回目の反復から１０７回目の反復まで第２の反復は現在の目標反復間隔である。１００回目の反復が前の目標反復間隔の最後の反復である場合、１０１回目から１０８回目の反復が現在の目標反復間隔として使用される。現在の目標反復間隔で量子化する場合、各反復は、前の目標反復間隔で使用されたデータビット幅ｎ１を引き続き使用する。この場合、異なる目標反復間隔間の量子化で使用されるデータビット幅は同じにすることができる。１００回目の反復から１０７回目の反復が現在の目標反復間隔として使用される場合、次の目標反復間隔内の１０８回目の反復は、ｔ＋１の最初の予測時点と見なされる。１０８回の反復が現在の目標反復間隔として使用され、現在の目標反復間隔内の１０８回目の反復がｔ＋１の最初の予測時点として使用される。ｔ＋１番目の予測時点で、データビット幅ｎ１に従って量子化誤差ｄｉｆｆｂｉｔを確認し、量子化誤差ｄｉｆｆｂｉｔを第１しきい値、第２しきい値と比較して比較結果を求めます。比較結果から、データビット幅ｎ１をｎ２に変更する必要があると判断し、式（２０）を使用して、目標反復間隔が５５反復であることを確認する。次に、１０８回目の反復から１６３回目の反復、または１０９回目の反復から１６３回目の反復が目標反復間隔として使用され、各反復は、目標反復間隔内で量子化するときにデータビット幅ｎ２を使用する。この場合、量子化で使用されるデータビット幅は、異なる目標反復間隔間で異なる可能性がある。
【０１０５】
この技術案に関しては、最初の予測時点が１番目の反復であるか、目標反復間隔内の最後の反復であるかに関係なく、式（１８）を適用して、小数小数点位置パラメータの変化傾向値を取得できる。現在の時点での最初の予測時点が現在の目標反復間隔の１番目の反復である場合、式（１８）では、Ｍ（ｔ）は現在の目標反復間隔の１番目の反復に対応する時点に対応する小数点位置パラメータｓが、トレーニング反復とともに増やすスライディング平均値である。ｓ（ｔ）は現在の目標反復間隔の１番目の反復の時点に対応する小数点位置パラメータｓであり、Ｍ（ｔ−１）は前の目標反復間隔の１番目の反復の時点に対応する小数点位置パラメータｓが、トレーニングの反復とともに増やすスライディング平均値である。現在の時点での最初の予測時点が現在の目標反復間隔の最後の反復である場合、式（１８）は、Ｍ（ｔ）はトレーニング反復としての現在の目標反復間隔の最後の反復に対応する時点に対応する小数点位置パラメータｓが、増加したスライディング平均値であり、ｓ（ｔ）は現在の目標反復間隔の最後の反復の時点に対応する小数点位置パラメータｓであり、Ｍ（ｔ−１）は前の目標反復間隔の最後の反復の時点に対応する小数点位置パラメータｓが、トレーニングの反復とともに増やすスライディング平均値である。
【０１０６】
この技術案の場合、第１の予測時点を含むことに基づいて、予測時点はまた、第２の予測時点を含み得る。第２の予測時点は、データ変動範囲曲線に従って確定される。ニューラルネットワークトレーニングプロセスにおけるビッグデータのデータ変動範囲に基づいて、図５ａに示されるようなデータ変動範囲曲線が得られる。
【０１０７】
重みデータを例にとると、図５ａに示すデータ変動範囲曲線からからわかるように、トレーニングの開始からＴ回目の反復の反復間隔まで、重みが更新されるたびにデータ変動範囲が非常に大きい。現在の予測時点で、量子化するとき、カレント反復は最初に前の反復のデータビット幅ｎ１を使用して量子化し、得られた量子化結果と量子化前の対応するデータが対応する量子化誤差を確定する。量子化誤差はそれぞれ第１のしきい値である。第２のしきい値を比較し、比較結果に応じてデータビット幅ｎ１を調整し、データビット幅ｎ２を取得する。データビット幅ｎ２を使用して、カレント反復に含まれる量子化される重みデータを量子化する。次に、式（２０）に従って目標反復間隔を確定し、最初の予測時点を確定し、最初の予測時点で、データビット幅を調整するかどうかと調整方法を確定し、式（２０）に従って次の目標反復間隔を確定する。次の最初の予測時点を取得する。トレーニングの開始からＴ回目の反復までの間隔のため、各反復の前後で変化する重みデータが非常に大きく、各反復の対応する層の重みデータに類似性がない。精度の問題に対応するために、量子化してください。カレント反復の各層のデータが前の反復の対応する層の対応する量子化パラメータを引き続き使用できない場合、データビット幅は最初のＴ反復に対して調整できる。このとき、量子化は前のＴ反復の各反復に対して使用される。のデータビット幅が異なり、目標反復間隔は１反復である。人工知能プロセッサのチップのリソースの利用を最適化するために、前のＴ反復の目標反復間隔は、図５ａに示すデータ変動範囲曲線によって明らかにされた法則に従って、つまり前のデータ変動範囲曲線に従って事前に事前設定できる。Ｔ反復の目標反復間隔は直接事前設定されており、前のＴ反復の各反復に対応する重みの更新が第２の予測時点として完了したことを式（２０）で確認する必要はない。これにより、人工知能プロセッサのチップのリソースがより合理的になる。図５ａに示すデータ変動範囲曲線は、Ｔ回目の反復以降あまり変化していない。トレーニングの中期および後期段階では、量子化パラメータは反復なしで再確認される。Ｔ回目の反復またはＴ＋１回目の反復では、現在の時刻を使用する。反復は、量子化前のデータと量子化後のデータに対応して、量子化誤差を確定する。量子化誤差に応じて、データビット幅の調整が必要かどうか、調整方法を確定し、式（２０）に従って目標反復間隔を確定する。確認された目標反復間隔が５５反復である場合、データビット幅を調整するかどうかを確定するための最初の予測時点として、Ｔ回目の反復またはＴ＋１回目の反復後の５５回の反復に対応する時点が必要である。同じ周期（エポック）のすべての代数演算が完了するまで、次の最初の予測時点を確定するために、式（２０）に従って次の目標反復間隔を調整および確定する方法。これに基づいて、各エポックの後に、データビット幅または量子化パラメータに適応調整が行われ、最後に、量子化後のデータを使用して、精度が期待に応えるニューラルネットワークが取得される。
【０１０８】
特に、図５ａに示す重みデータの変動範囲のグラフからＴの値が１３０と確定されたとする（この値は図５ａに対応していない。説明の便宜上、Ｔの値は１３０とのみ仮定する。）の場合、トレーニングプロセスの１３０回目の反復は、第２の予測時点と見なされ、現在の最初の予測時点は、トレーニングプロセスの１００回目の反復である。１００回目の反復では、式（２０）目標反復間隔を３５回の反復として確定する。目標反復間隔で、１３０回目の反復までトレーニングし、第２の予測時点に到達する。この時点で、データビット幅を調整する必要があるかどうか、および１３０回目の反復に対応する時点でどのように調整するかを確定する必要がある。式（２０）は、目標反復間隔を確定する。この場合に確定された目標反復間隔が４２反復であると仮定する。１３０回目の反復から１７２回目の反復までを目標反復間隔として、目標反復間隔が３５回の場合に確定される最初の予測時点に対応する１３５回目の反復は、４２回の目標反復間隔内にある。１３５回目の反復では、式（２０）に従って、データビット幅を調整するかどうかとその調整方法を判断できる。また、１３５回目の反復で評価予測を行わず、１７２回目の反復に直接進んで、データビット幅を調整する必要があるかどうかとその調整方法を評価することもできる。つまり、１３５回目の反復で評価と予測を実行するかどうかは、この技術案に適している。
【０１０９】
要約すると、第２の予測時点は、データ変動曲線に従って事前に事前設定されている。トレーニングまたは微調整の初期段階では、目標反復間隔を確定するために人工知能プロセッサのチップのリソースを費やす必要はない。プリセット第２の予測時間この時点で、データビット幅は量子化誤差に応じて直接調整され、調整後のデータビット幅は、カレント反復に含まれる量子化予定のデータを量子化するためである。トレーニングまたは微調整の中期および後期段階では、式（２０）に従って目標反復間隔を取得して、対応する最初の予測時点を確定し、各最初の予測時点で、データビット幅を調整するかどうかと調整方法を確定する。このように、ニューラルネットワーク演算に必要な浮動小数点操作の精度を満たしながら、人工知能プロセッサのチップのリソースが合理的に使用され、量子化の効率が大幅に向上する。
【０１１０】
実際には、データビット幅のより正確な目標反復間隔を得るために、小数点位置パラメータの変化傾向値だけでなく、小数点位置パラメータの変化傾向値とデータビット幅の変化傾向値も同時に考慮することができる。図７に示すように、これは、目標反復間隔を確定する方法の第２のフローチャートである。目標反復間隔を確定するステップには、次のものが含まれる。
【０１１１】
ステップ７０１）：予測時点で、重み反復プロセス中における量子化予定のデータの対応する小数点位置パラメータの変化傾向値およびデータビット幅の変化傾向値を確定する；ここで、予測時点は、データビット幅を調整する必要があるかどうかを判断するための時点である。予測時点は、重み更新の反復が完了する時点に対応する。
【０１１２】
小数点位置パラメータの変化傾向値に基づいてデータビット幅の目標反復間隔を確定するための図６に示される技術案の内容は、図７に示される技術案に適用可能であり、ここでは繰り返されないことを強調すべきである。
このステップでは、式（２１）に従って、データビット幅の変化傾向値が対応する量子化誤差を使用して確定される。
ｄｉｆｆｕｐｄａｔｅ２＝δ＊ｄｉｆｆ２ｂｉｔ              式（２１）
【０１１３】
式（２１）で、δはハイパーパラメータ、ｄｉｆｆｂｉｔは量子化誤差、ｄｉｆｆｕｐｄａｔｅ２はデータビット幅の変化傾向値である。ｄｉｆｆｕｐｄａｔｅ２は量子化に使用されるデータビット幅ｎの変化傾向を測定するには使われ、ｄｉｆｆｕｐｄａｔｅ２値が大きいほど、固定小数点ビット幅を更新する必要があり、更新頻度を短くする必要がある。
【０１１４】
図７に含まれる小数点位置パラメータの変化傾向値は、式（１８）に従って取得でき、式（１８）のＭ（ｔ）は式（１９）に従って取得できる。ｄｉｆｆｕｐｄａｔｅ１は小数点位置パラメータの変化ｓは、量子化予定のデータの最大値Ｚｍａｘの変化にも偽装して反映されるため、小数点位置パラメータの変化傾向を測定する。ｄｉｆｆｕｐｄａｔｅ１値が大きいほど、値の範囲が大幅に変化し、更新頻度が短くなる。つまり、目標反復間隔が短くなる。
【０１１５】
ステップ７０２）：小数点位置パラメータの変化傾向値とデータビット幅の変化傾向値に従って、対応する目標反復間隔を確定する。
【０１１６】
この技術案では、目標反復間隔は式（２２）に従って確定される。目標反復間隔の場合、同じ目標反復間隔内の量子化プロセスで同じデータビット幅が使用され、異なる目標反復間隔内の量子化プロセスで使用されるデータビット幅は同じでも異なっていてもよい。
Ｉ＝β／ｍａｘ（ｄｉｆｆｕｐｄａｔｅ１，ｄｉｆｆｕｐｄａｔｅ２）−γ      式（２２）
【０１１７】
式（２２）で、Ｉは目標反復間隔である。β、γはハイパーパラメータである。ｄｉｆｆｕｐｄａｔｅ１は小数点位置パラメータの変化傾向値である。ｄｉｆｆｕｐｄａｔｅ２はデータビット幅の変化傾向値である。ｄｉｆｆｕｐｄａｔｅ２経験値であり、可変ハイパーパラメータにすることもできる。従来のハイパーパラメータ最適化方法はすべて、β、γに適しており、ハイパーパラメータの最適化スキームはここでは繰り返されない。
【０１１８】
この技術案では、ｄｉｆｆｕｐｄａｔｅ１を使用して小数点位置パラメータの変化を測定するが、データビット幅ｎの変化による小数点位置パラメータの変化は無視してください。これは、ｄｉｆｆｕｐｄａｔｅ２のデータビット幅ｎの変更をすでに反映しているためである。ｄｉｆｆｕｐｄａｔｅ１でこの無視された操作を行わないと、式（２２）に従って確定された目標反復間隔Ｉが不正確になり、最初の予測時点が多すぎます。トレーニングまたは微調整中に、データビット幅を頻繁に実行するのは簡単である。ｎ更新するかどうか、および操作を更新する方法。その結果、人工知能プロセッサのチップリソースが合理的に使用されない。
【０１１９】
上記の説明に基づいて、ｄｉｆｆｕｐｄａｔｅ１はＭ（ｔ）に従って確定される。ｔ−１番目の予測時点に対応するデータビット幅をｎ１とすると、対応する小数点位置パラメータｓ１はであり、トレーニングの反復とともに増やす小数点位置パラメータのスライディング平均値はｍ１である。データビット幅ｎ１を使用して、量子化予定のデータを量子化し、量子化された固定小数点数を取得する。量子化前のデータと対応する量子化データに基づいて量子化誤差ｄｉｆｆｂｉｔを求めます。量子化誤差ｄｉｆｆｂｉｔとしきい値の比較結果に応じて、データビット幅ｎ１をｎ２に調整し、データビット幅を｜ｎ１−ｎ２｜調整し、ｔ番目の予測時点での量子化に使用するデータビット幅はｎ２である。データビット幅の変更による小数点位置パラメータの変更を無視するために、Ｍ（ｔ）を確定するとき以下の２つの最適化方法のいずれかを選択してことができる。第１の方法：データビット幅が｜ｎ１−ｎ２｜ビット増やすと、ｓ（ｔ−１）はｓ１−｜ｎ１−ｎ２｜となり、Ｍ（ｔ−１）はｍ１−｜ｎ１−ｎ２｜となる。ｓ（ｔ−１）、Ｍ（ｔ−１）を式（１９）に代入されてＭ（ｔ）を取得される。つまり、ｔ番目の予測時点に対応する小数点位置パラメータがトレーニングに従う。スライディング平均値を反復増加させる。データビット幅が｜ｎ１−ｎ２｜ビットだけ減少した場合、ｓ（ｔ−１）はｓ１＋｜ｎ１−ｎ２｜となり、Ｍ（ｔ−１）はｍ１＋｜ｎ１−ｎ２｜となる。値は式（１９）に代入されて得られる。これは、トレーニングの反復が増やすにつれて、ｔ番目の予測時点に対応する小数点位置パラメータのスライディング平均値である。第２の方法：データビット幅が｜ｎ１−ｎ２｜で増やすか減少するかに関係なく、ｓ（ｔ−１）はｓ１となり、Ｍ（ｔ−１）はｍ１となる。ｓ（ｔ−１）、Ｍ（ｔ−１）を式（１９）に代入してＭ（ｔ）を取得する。データビット幅が｜ｎ１−ｎ２｜ビット増やすと、Ｍ（ｔ）と｜ｎ１−ｎ２｜が減算され、データビット幅が｜ｎ１−ｎ２｜ビット減少すると、Ｍ（ｔ）と｜ｎ１−ｎ２｜が加算され、その結果は、トレーニングの反復が増やすにつれて、ｔ番目の予測時点に対応する小数点位置パラメータのスライディング平均値として使用される。これら２つの方法は同等であり、どちらもデータビット幅の変更による小数点位置パラメータの変更を無視し、より正確な目標反復間隔を取得できるため、人工知能プロセッサのチップのリソース使用率が向上する。
【０１２０】
実際の応用では、データビット幅ｎと小数点位置パラメータｓは量子化精度に大きな影響を与え、第２のスケーリング係数ｆ２と量子化パラメータのオフセットＯは量子化精度にほとんど影響を与えない。第１のスケーリング係数ｆ１は、前述のように、第２のケースに属する場合、２ｓｘｆ２全体として第１のスケーリング係数ｆ１と見なされる。小数点位置パラメータｓは量子化精度に大きな影響を与えるため、この場合は第１のスケーリング係数ｆ１は、量子化に大きな影響を与える。したがって、この技術案では、データビット幅ｎが変化し、小数点位置パラメータが可変であるかどうかに関係なく、小数点位置パラメータの目標反復間隔を確定することも非常に意味がある。図６に示す技術案このアイデアは、小数点位置パラメータの目標反復間隔を確定するために適用できる。したがって、小数点位置パラメータの目標反復間隔を確定する方法を図８Ａに示する。
【０１２１】
ステップ８０１）：予測時点で、重み反復プロセスにおける量子化予定のデータの対応する小数点位置パラメータの変化傾向値を確定する；ここで、予測時点は、データビット幅を調整する必要があるかどうかを判断するための時点である。予測時点は、重み更新の反復が完了する時点に対応する。
【０１２２】
ステップ８０２）：小数点位置パラメータの変化傾向値に従って、対応する目標反復間隔を確定する。
【０１２３】
小数点位置パラメータの変化傾向値に基づいて量子化パラメータの目標反復間隔を確定するための図６に示される技術案の内容は、図８Ａに示される技術案に適用可能であり、ここでは繰り返されないことを強調すべきである。図８Ａに示される技術案の場合、量子化パラメータは、好ましくは、小数小数点位置パラメータである。
【０１２４】
データビット幅を確定するための上記の目標反復間隔および量子化パラメータの目標反復間隔は単なる例であり、網羅的ではないことに留意されたい。当業者は、本開示の技術案の本質を理解している。次に、本開示の技術案に基づいて、他の変形または変換を生成することができる。例えば、データビット幅を確定するための目標反復間隔内の量子化パラメータを確定するための目標反復間隔は、図６、７および８Ａにも適用可能である。示されている技術案。ただし、達成される機能および技術的効果が本開示のものと類似している限り、それらは本開示の保護範囲に含まれるべきである。
【０１２５】
技術案は、量子化パラメータを確定し、量子化誤差に応じてデータビット幅または量子化パラメータを調整し、データビット幅または量子化パラメータを調整するための目標反復間隔を確定して、ニューラルネットワーク演算プロセスの適切な時点を達成するためである。データビット幅または量子化パラメータは、適切な量子化パラメータが適切な反復時点で使用されるように調整され、人工知能プロセッサのチップを実現して、固定点動作速度に到達するためのニューラルネットワーク動作を実行し、人工知能プロセッサのチップのピーク計算能力を向上させる。同時に、操作に必要な浮動小数点操作の精度が満たされる。
【０１２６】
前述の方法の実施形態について、簡単な説明のために、それらはすべて一連の作用の組み合わせとして表されるが、当技術分野の当業者は、本開示が記載された一連の作用によって限定されないことを理解すべきであることに留意されたい。この開示によれば、特定のステップは、他の順序でまたは同時に実行することができるからである。第二に、当技術分野の当業者はまた、本明細書に記載の実施形態が任意の実施形態であり、関与する作用およびモジュールが必ずしも本開示によって必要とされないことを認識すべきである。
【０１２７】
ここでの量子化パラメータは、プリセット量子化パラメータ（すなわち、オフライン量子化パラメータ）であり得るか、または量子化予定のデータの処理に従って得られる量子化パラメータ（すなわち、オンライン量子化パラメータ）であり得ることが理解されよう。ニューラルネットワークの推論、トレーニング、および微調整の過程で、目標データをオフラインまたはオンラインで量子化できる。それらの中で、オフライン量子化は、量子化パラメータを使用して、量子化予定のデータに対してオフライン処理を実行することであり得る。オンライン量子化は、量子化パラメータを使用して量子化予定のデータのオンライン処理である。たとえば、ニューラルネットワークは人工知能チップ上で実行され、量子化および量子化されるパラメータのデータは、オフライン量子化のために人工知能チップの外部のコンピューティング装置に送信できる。または、人工知能チップ以外のコンピューティング装置を使用して、事前に量子化予定のデータを計算できる。そしてオフライン量子化のための量子化パラメータ。ニューラルネットワークを実行する人工知能チップのプロセスでは、人工知能チップは、量子化パラメータを使用して、量子化後のデータのオンライン量子化を実行できる。ニューラルネットワークに量子化する複数の層が含まれている場合、量子化する各層をオンラインとオフラインでそれぞれ量子化できる。この開示は、量子化される各層の量子化プロセスがオンラインであるかオフラインであるかを制限するものではない。
【０１２８】
本開示の一実施形態によれば、データビット幅の調整方法が提供される。以下、図８Ｂ〜８Ｖを参照して説明する。図８Ｂは、本開示の一実施形態におけるデータビット幅の調整方法８００Ｂのフローチャートを示す。この方法には次のものが含まれる。
【０１２９】
Ｓ１１４で、カレント検査反復の量子化予定のデータおよびカレント検査反復の量子化データに従って量子化誤差を確定し、ここ、カレント検査反復の量子化データは、カレント検査反復の量子化予定のデータを量子化することによって取得される。
【０１３０】
任意選択で、前述のプロセッサは、初期データビット幅を使用して、量子化予定のデータを量子化して、前述の量子化データを取得することができる。カレント検査反復の初期データビット幅はハイパーパラメータであり得、カレント検査反復の初期データビット幅はまた、カレント検査反復の前の一つ前の検査反復の量子化データに基づいて確定され得る。
【０１３１】
具体的には、プロセッサは、カレント検査の反復で量子化予定のデータおよびカレント検査の反復で量子化データに従って、中間表現データを確定することができる。オプションで、中間表現データは、量子化予定のデータの前述の表現形式と一致する。例えば、プロセッサは、前述の量子化データに対して逆量子化を実行して、量子化予定のデータの表現形式と一致する中間表現データを取得することができる。ここで、逆量子化は、量子化の逆プロセスを指す。たとえば、量子化データは式２３を使用して取得でき、プロセッサは式２４に従って量子化データに対して逆量子化を実行して、対応する中間表現データを取得し、量子化予定のデータと中間表現データに従って量子化誤差を確定することもできる。
Ｉｘ＝ｒｏｕｎｄ（Ｆｘ／２ｓ）                     式（２３）
Ｆｘ１＝ｒｏｕｎｄ（Ｆｘ／２ｓ）ｘ２ｓ              式（２４）
【０１３２】
さらに、プロセッサは、量子化予定のデータおよび対応する中間表現データに従って、量子化誤差を計算することができる。現在の検査反復で量子化予定のデータがＦｘ＝［Ｚ１，Ｚ２．．．，Ｚｍ］であるとすると、量子化予定のデータに対応する中間表現データはＦｘ１＝［Ｚ１（ｎ），Ｚ２（ｎ）．．．，Ｚｍ（ｎ）］である。プロセッサは、量子化予定のデータＦｘおよびそれに対応する中間表現データＦｘ１に従って誤差項を確定し、誤差項に従って量子化誤差を確定することができる。
【０１３３】
必要に応じて、プロセッサは、中間表現データＦｘ１の要素の合計および量子化予定のデータＦｘの要素の合計に従って、上記の誤差項を確定することができる。誤差項は、中間表現データＦｘ１の要素の合計および量子化後のデータＦｘの各要素の合計の差。その後、プロセッサは誤差項に従って量子化誤差を確定できる。特定の量子化誤差は、次の式に従って確定できる。
ｄｉｆｆｂｉｔ＝ｌｎ（（Σｉ｜Ｚｉ（ｎ）｜−Σｉ｜Ｚｉ｜）／Σｉ｜Ｚｉ｜＋１）  式（２５）
【０１３４】
ここ、ｚｉは量子化予定のデータの要素であり、Ｚｉ（ｎ）はデータＦｘ１を表す中央の要素である。
【０１３５】
オプションで、プロセッサは、量子化予定のデータの各要素と中間表現データＦｘ１の対応する要素との間の差をそれぞれ計算し、ｍ個の差の値を取得し、ｍ個の差の値の合計を誤差項として使用することができる。その後、プロセッサは誤差項に従って量子化誤差を確定できる。特定の量子化誤差は、次の式に従って確定できる。
ｄｉｆｆｂｉｔ＝ｌｎ（Σｉ｜Ｚｉ（ｎ）−Ｚｉ｜／Σｉ｜Ｚｉ｜＋１）    式（２６）
【０１３６】
ここ、ｚｉは量子化予定のデータの要素であり、Ｚｉ（ｎ）はデータＦｘ１を表す中央の要素である。
【０１３７】
オプションで、量子化予定のデータの各要素と中間表現データＦｘ１の対応する要素との差は、ほぼ２ｓ−１に等しい場合がある。したがって、量子化誤差は、次の式に従って確定することもできる。
ｄｉｆｆｂｉｔ＝ｌｎ（２ｓ−１＊ｍ／Σｉ｜Ｚｉ｜）            式（２７）
【０１３８】
ここ、ｍは目標データに対応する中間表現データＦｘ１の数、ｓは小数点位置、ｚｉは量子化予定のデータの要素である。
【０１３９】
オプションで、中間表現データは、前述の量子化データのデータ表現形式と一致させることもでき、量子化誤差は、中間表現データおよび量子化データに基づいて確定される。たとえば、量子化予定のデータは次のように表すことができる。Ｆｘ≒Ｉｘｘ２ｓ、次に中間表現データＩｘ１≒Ｆｘ／２ｓを確定でき、中間表現データＩｘ１は前述の量子化データと同じデータ表現形式を持つことができる。このとき、プロセッサは、上記の式（２３）で計算された中間表現データＩｘ１およびＩｘ＝ｒｏｕｎｄ（Ｆｘ／２ｓ）に従って、量子化誤差を確定できる。特定の量子化誤差の確定方法は、上記の式（２５）から式（２７）を参照することができる。
【０１４０】
Ｓ１１５で、量子化誤差に従って、カレント検査反復に対応する目標データビット幅を確定する。
【０１４１】
具体的には、プロセッサは、量子化誤差に従ってカレント検査反復に対応するデータビット幅を適応的に調整し、カレント検査反復によって調整された目標データビット幅を確定することができる。量子化誤差がプリセット条件を満たす場合、カレント検査反復に対応するデータビット幅を変更しないでおくことができる。つまり、カレント検査反復の目標データビット幅を初期データビット幅と等しくすることができる。量子化誤差がプリセット条件を満たさない場合、プロセッサは、カレント検査反復で量子化予定のデータに対応するデータビット幅を調整して、カレント検査反復に対応する目標データビット幅を取得できる。プロセッサが目標データのビット幅を使用して、カレント検査反復で量子化予定のデータを量子化する場合、量子化誤差は前述のプリセット条件を満たす。オプションで、前述のプリセット条件は、ユーザーが設定したプリセットしきい値にすることができる。
【０１４２】
任意選択で、図８Ｃは、本開示の別の実施形態におけるデータビット幅の調整方法８００Ｃのフローチャートを示す。図８Ｃに示されるように、前述の操作Ｓ１１５は、以下を含み得る。
Ｓ１１５０で、プロセッサは、前述の量子化誤差が第１のプリセットしきい値以上であるかどうかを判断できる。
【０１４３】
量子化誤差が第１のプリセットしきい値以上である場合、動作Ｓ１１５１を実行して、カレント検査反復に対応するデータビット幅を増加させて、カレント検査反復の目標データビット幅を取得することができる。量子化誤差が第１のプリセットしきい値よりも小さい場合、カレント検査反復のデータビット幅を変更せずに維持できる。
【０１４４】
さらに任意選択で、プロセッサは、１回の調整後に前述の目標データビット幅を取得することができる。たとえば、カレント検査反復の初期データビット幅はｎ１であり、プロセッサは１回の調整後に目標データビット幅ｎ２＝ｎ１＋ｔを確定できる。ここで、ｔはデータビット幅の調整値である。ここで、目標データビット幅ｎ２を使用して、カレント検査反復で量子化予定のデータを量子化する場合、取得される量子化誤差は、第１のプリセットしきい値よりも小さい可能性がある。
【０１４５】
さらに任意選択で、プロセッサは、量子化誤差が第１のプリセットしきい値未満になるまで複数の調整を通じて目標データビット幅を取得し、量子化誤差が第１のプリセットしきい値未満の場合のデータビット幅を目標データビット幅として使用することができる。具体的には、量子化誤差が第１のプリセットしきい値以上の場合、第１の中間データビット幅は第１のプリセットビット幅のステップ長さに従って確定され、プロセッサは第１の中間データビット幅によって現在のチェックをチェックできる。量子化される反復データは、量子化データを取得するために量子化され、量子化誤差は、量子化誤差が第１のプリセットしきい値より小さくなるまで、カレント検査反復で量子化予定のデータおよびカレント検査反復の量子化後のデータによって確定される。プロセッサは、量子化誤差が第１のプリセットしきい値よりも小さい場合に対応するデータビット幅を目標データビット幅として使用することができる。
【０１４６】
たとえば、カレント検査反復の初期データビット幅はｎ１であり、プロセッサは初期データビット幅ｎ１を使用して、カレント検査反復の量子化データＡを量子化して、量子化後のデータＢ１を取得し、次に、量子化予定のデータＡおよび量子化後のデータに従ってＢ１は、量子化誤差Ｃ１を取得するために計算される。量子化誤差Ｃ１が第１のプリセットしきい値以上の場合、プロセッサは第１の中間データビット幅ｎ２＝ｎ１＋ｔ１を確定する。ここで、ｔ１は第１のプリセットビット幅のステップ長さである。その後、プロセッサは、第１の中間データビット幅ｎ２に従ってカレント検査反復で量子化予定のデータを量子化して、カレント検査反復の量子化データＢ２を取得し、量子化予定のデータＡおよび量子化後のデータＢ２に従って量子化誤差Ｃ２を計算できる。量子化誤差Ｃ２が第１のプリセットしきい値以上の場合、プロセッサは第１の中間データビット幅ｎ２＝ｎ１＋ｔ１＋ｔ１を確定し、新しい第１の中間データビット幅によってカレント検査反復の量子化を実行する。データＡが量子化され、対応する量子化誤差が、量子化誤差が第１のプリセットしきい値より小さくなるまで計算される。量子化誤差Ｃ１が第１のプリセットしきい値よりも小さい場合、初期データビット幅ｎ１を変更しないでおくことができる。
【０１４７】
さらに、前述の第１のプリセットビット幅のステップ長さは一定値であり得る。例えば、量子化誤差が第１のプリセットしきい値よりも大きいときはいつでも、プロセッサはカレント検査反復に対応するデータビット幅を同じ値だけ増やすことができる。ビット幅の値。オプションで、前述の第１のプリセットビット幅のステップ長さも可変値であり得る。例えば、量子化誤差が第１のプリセットしきい値よりも大きい場合、プロセッサは、量子化誤差と第１のプリセットしきい値との間の差を計算し得る。差が小さいほど、第１のプリセットビット幅のステップ長さの値は小さくなる。
【０１４８】
任意選択で、図８Ｄは、本開示の別の実施形態におけるデータビット幅の調整方法８００Ｄのフローチャートを示す。図８Ｄに示されるように、前述の操作Ｓ１１５はさらに以下を含み得る。
【０１４９】
Ｓ１１５２で、プロセッサは、前述の量子化誤差が第２のプリセットしきい値以下であるかどうかを判断できる。
【０１５０】
量子化誤差が第２のプリセットしきい値以下である場合、操作Ｓ１１５３を実行して、カレント検査反復に対応するデータビット幅を減らして、カレント検査反復の目標データビット幅を取得することができる。量子化誤差が第２のプリセットしきい値よりも大きい場合、カレント検査反復のデータビット幅を変更せずに維持できる。
【０１５１】
さらに任意選択で、プロセッサは、１回の調整後に前述の目標データビット幅を取得することができる。たとえば、カレント検査反復の初期データビット幅はｎ１であり、プロセッサは１回の調整後に目標データビット幅ｎ２＝ｎ１−ｔを確定できる。ここで、ｔはデータビット幅の調整値である。ここで、目標データビット幅ｎ２を使用して、カレント検査反復で量子化予定のデータを量子化する場合、取得される量子化誤差は、第２のプリセットしきい値よりも大きくなる可能性がある。
【０１５２】
さらに任意選択で、プロセッサは、量子化誤差が第２のプリセットしきい値より大きくなるまで複数の調整を通じて目標データビット幅を取得し、量子化誤差が第２のプリセットしきい値よりも大きい場合のデータビット幅を目標データビット幅として使用することができる。具体的には、量子化誤差が第１のプリセットしきい値以下の場合、第２の中間データビット幅は第２のプリセットビット幅のステップ長さによって確定され、プロセッサは第２の中間データビット幅によって現在のチェックをチェックできる。量子化する反復データを量子化して量子化予定のデータを取得し、カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに従って、量子化誤差が第２のプリセットしきい値より大きくなるまで量子化誤差を確定する。プロセッサは、量子化誤差が第２のプリセットしきい値よりも大きい場合、対応するデータビット幅を目標データビット幅として使用できる。
【０１５３】
たとえば、カレント検査反復の初期データビット幅はｎ１であり、プロセッサは初期データビット幅ｎ１を使用して、カレント検査反復の量子化データＡを量子化して、量子化後のデータＢ１を取得し、次に、量子化予定のデータＡおよび量子化後のデータに従ってＢ１は、量子化誤差Ｃ１を取得するために計算される。量子化誤差Ｃ１が第２のプリセットしきい値以下の場合、プロセッサは第２の中間データビット幅ｎ２＝ｎ１−ｔ２を確定する。ここで、ｔ２は第２のプリセットビット幅のステップ長さである。その後、プロセッサは、第２の中間データビット幅ｎ２に従ってカレント検査反復で量子化予定のデータを量子化して、カレント検査反復の量子化データＢ２を取得し、量子化予定のデータＡおよび量子化予定のデータＢ２に従って量子化誤差Ｃ２を計算することができる。量子化誤差Ｃ２が第２のプリセットしきい値以下の場合、プロセッサは第２の中間データビット幅ｎ２＝ｎ１−ｔ２−ｔ２を確定し、新しい第２の中間データビット幅によってカレント検査反復の量子化を実行する。データＡが量子化され、対応する量子化誤差が、量子化誤差が第２のプリセットしきい値より大きくなるまで計算される。量子化誤差Ｃ１が第２のプリセットしきい値よりも大きい場合、初期データビット幅ｎ１を変更しないでおくことができる。
【０１５４】
さらに、前述の第２のプリセットビット幅のステップ長さは一定値であり得る。例えば、量子化誤差が第２のプリセットしきい値よりも小さいときはいつでも、プロセッサは、カレント検査反復に対応するデータビット幅を同じ値だけ減らすことができる。ビット幅の値。オプションで、前述の第２のプリセットビット幅のステップ長さも可変値にすることができる。たとえば、量子化誤差が第２のプリセットしきい値より大きい場合、プロセッサは量子化誤差と第２のプリセットしきい値の差を計算できる。差が小さいほど、第２のプリセットビット幅のステップ長さの値は小さくなる。
【０１５５】
任意選択で、図８Ｅは、本開示のさらに別の実施形態におけるデータビット幅の調整方法８００Ｅのフローチャートを示す。図８Ｅに示されるように、プロセッサが、量子化誤差が第１のプリセットしきい値よりも小さく、量子化誤差が第２のプリセットしきい値よりも大きいと確定した場合、カレント検査反復のデータビット幅は、第１のプリセットしきい値がより大きい場合、不変に保つことができる。第２のプリセットしきい値。つまり、カレント検査反復の目標データビット幅は、初期データビット幅と等しくすることができる。ここで、図８Ｅは、例として、本開示の実施形態のデータビット幅確定方法を示すだけであり、図８Ｅの各動作のシーケンスは、ここで特に限定されないが、適応的に調整することができる。
【０１５６】
図８Ｆは、本開示の一実施形態によるニューラルネットワーク量子化法８００Ｆのフローチャートを示す。図８Ｆに示されるように、ニューラルネットワークの量子化方法は、以下を含む。
【０１５７】
ステップＳ１０：量子化予定の層の各タイプの量子化予定のデータに対応する量子化パラメータを確定する。ここで、量子化予定のデータには、ニューロン、重み、オフセット、および勾配の少なくとも１つが含まれる。
【０１５８】
ステップＳ２０：量子化予定のデータが対応する量子化パラメータを量子化して、量子化データを取得し、それにより、ニューラルネットワークは、量子化データに従って演算を実行する。
【０１５９】
ステップＳ３０：目標データおよび目標データに対応する量子化データに従って、目標データの量子化誤差を確定する。ここで、目標データは、任意タイプの量子化予定のデータである。
【０１６０】
目標データの量子化誤差は、目標データに対応する量子化データと目標データとの間の誤差によって確定することができる。標準偏差計算法、二乗平均平方根誤差計算法などの設定誤差計算法を使用して、目標データの量子化誤差を計算できる。
【０１６１】
量子化パラメータに従って目標データに対応する量子化データを逆量子化して逆量子化データを取得し、逆量子化データと目標データ間の誤差に従って目標データの量子化誤差を確定することも可能である。
【０１６２】
【数９】
2021530769.tif 000011
【０１６３】
【数１０】
2021530769.tif 000012
【０１６４】
【数１１】
2021530769.tif 000013
【０１６５】
【数１２】
2021530769.tif 000014
【０１６６】
【数１３】
2021530769.tif 000015
【０１６７】
【数１４】
2021530769.tif 000016
【０１６８】
【数１５】
2021530769.tif 000017
【０１６９】
量子化間隔に関連する方法を計算することができ、例えば、目標データと目標データに対応する逆量子化データとの間の誤差ｄｉｆｆｂｉｔは、式（３５）によって計算することができる。
ｄｉｆｆｂｉｔ＝ｌｎ（Ａ＊２−１＊ｐ／Σｉ｜Ｆｘ｜）        式（３５）
【０１７０】
ここ、ｐは目標データの要素数、ｓは目標データの小数点位置である。Ａの値は、量子化パラメータに従って確定できる。量子化パラメータに小数点位置ｓが含まれる場合、Ａ＝２ｓ、量子化パラメータに小数点位置ｓとスケーリング係数ｆが含まれる場合、Ａ＝２ｓｘｆである。
【０１７１】
【数１６】
2021530769.tif 000018
【０１７２】
【数１７】
2021530769.tif 000019
2021530769.tif 000020
【０１７３】
ステップＳ４０：量子化誤差および誤差しきい値に従って、目標データに対応するデータビット幅を調整して、目標データに対応する調整ビット幅を取得する。
【０１７４】
誤差しきい値は経験値に基づいて確定でき、誤差しきい値は量子化誤差の期待値を示すために使用できる。量子化誤差が誤差しきい値より大きいか小さい場合、ターゲット番号に対応するデータビット幅を調整して、目標データに対応する調整ビット幅を取得することができる。データビット幅をより長いビット幅またはより短いビット幅に調整して、量子化精度を増減させることができる。
【０１７５】
誤差しきい値は、最大許容誤差に応じて確定できる。量子化誤差が誤差しきい値よりも大きい場合、量子化精度が期待に応えられないことを意味し、データビット幅をより長いビット幅に調整する必要がある。量子化精度が高いほど、誤差しきい値を小さくすることもできる。量子化誤差が誤差しきい値よりも小さい場合は、量子化精度が高くなり、ニューラルネットワークの運用効率に影響が出ます。データビット幅を適切に調整して短くすることができる。のビット幅は、量子化精度を適切に低下させ、ニューラルネットワークの運用効率を向上させるためのものである。
【０１７６】
データビット幅は、固定ビット長に応じて調整できる。または、データビット幅は、量子化誤差と誤差しきい値の差に応じて、可変調整ステップ長さによって調整できる。この開示はこれを制限するものではない。
【０１７７】
ステップＳ５０では、目標データに対応するデータビット幅が調整ビット幅に更新され、対応する調整量子化パラメータが目標データおよび調整ビット幅に従って計算して得られ、ニューラルネットワークは調整量子化パラメータに従ってが量子化される。
【０１７８】
調整ビット幅を確定した後、目標データに対応するデータビット幅を調整ビット幅に更新することができる。たとえば、更新前の目標データのデータビット幅が８ビットで、調整後のビット幅が１２ビットの場合、更新後の目標データに対応するデータビット幅は１２ビットである。目標データに対応する調整済み量子化パラメータは、調整ビット幅と目標データに基づいて計算できる。目標データは、目標データに対応する調整された量子化パラメータに従って再量子化され、より高いまたはより低い量子化精度で量子化後のデータを取得できるため、量子化予定の層は、量子化精度と処理効率のバランスを実現する。
【０１７９】
ニューラルネットワークの推論、トレーニング、微調整の過程で、層間で量子化予定のデータには一定の相関関係があると見なすことができる。たとえば、各層で量子化予定のデータの平均値の差が設定された平均しきい値よりも小さく、各層で量子化予定のデータの最大値の差も設定された差のしきい値よりも小さい場合、量子化予定の層の調整された量子化パラメータは、量子化予定の層の１つ以上の後続の層で量子化予定のデータを量子化するために、１つ以上の後続の層の調整された量子化パラメータとして使用され得る。ニューラルネットワークのトレーニングおよび微調整プロセスでは、量子化予定の層のカレント反復で取得された調整済み量子化パラメータを使用して、後続の反復で量子化予定の層を量子化することもできる。
可能な実装方法では、この方法はさらに以下を含む。
【０１８０】
量子化予定の層の量子化パラメータは、量子化予定の層の後の１つまたは複数の層で使用される。
【０１８１】
ニューラルネットワークは、調整された量子化パラメータに従って量子化を実行する。これには、量子化予定の層でのみ調整された量子化パラメータを使用して量子化予定のデータを再量子化し、量子化予定の層の操作で再取得された量子化後のデータを使用することが含まれる。また、調整された量子化パラメータを使用して、量子化予定の層で量子化予定のデータを再量子化しないこと、および調整された量子化パラメータを使用して、量子化予定の層の１つまたは複数の後続の層で量子化すること、および／または後続の反復で量子化予定の層でそれを使用することも含まれる。量子化の量子化パラメータを調整する。また、調整された量子化パラメータを使用して、量子化予定の層で再量子化すること、および取得された量子化データを量子化予定の層の操作で使用すること、および調整された量子化パラメータを使用して、量子化予定の層に続く１つまたは複数の層で量子化すること、および／または、後続の反復での量子化のために量子化予定の層で調整された量子化パラメータを使用する。この開示はこれを制限するものではない。
【０１８２】
この実施形態では、目標データの量子化誤差は、目標データおよび目標データに対応する量子化データによって確定され、目標データは、量子化予定の任意の種類のデータであり、量子化誤差および誤差しきい値は、目標データに対応するデータビット幅に調整される。目標データに対応する調整ビット幅を取得する。目標データに対応するデータビット幅を調整ビット幅に更新し、目標データと調整ビット幅に従って対応する調整量子化パラメータを計算し、ニューラルネットワークが調整量子化パラメータに従って量子化を実行するようにする。目標データと量子化データ間の誤差に応じてデータビット幅を調整し、調整済みデータビット幅に応じて調整済み量子化パラメータを計算する。さまざまな誤差しきい値を設定することにより、さまざまな調整済み量子化パラメータを取得して、量子化精度の向上や操作効率の向上など、さまざまな量子化要件を実現できる。目標データおよび目標データの量子化データに従って計算された調整済み量子化パラメータも、目標データ自体のデータ特性とより一致し、目標データ自体のニーズにより一致する量子化結果を達成し、より優れた量子化精度と処理効率を実現できる。残高。
【０１８３】
図８Ｇは、本開示の一実施形態によるニューラルネットワーク量子化法８００Ｇのフローチャートを示す。図８Ｇに示されるように、ニューラルネットワークの量子化方法のステップＳ４０は、以下を含む。
【０１８４】
ステップＳ４１：量子化誤差が第１の誤差しきい値よりも大きい場合、目標データに対応するデータビット幅を増やして、目標データに対応する調整ビット幅を取得する。
【０１８５】
第１の誤差しきい値は、受け入れることができる最大量子化誤差によって確定することができる。量子化誤差は、第１の誤差しきい値と比較できる。量子化誤差が第１の誤差しきい値よりも大きい場合、量子化誤差はすでに許容できないと見なすことができる。量子化精度を向上させるために、目標データに対応するデータビット幅を増やすことにより、目標データの量子化精度を向上させることができる。
【０１８６】
調整ビット幅を取得するために、固定調整ステップ長さによって、目標データに対応するデータビット幅を増やすことができる。固定調整ステップ長さサイズはＮビットにすることができ、Ｎは正の整数である。データビット幅を調整するたびに、Ｎビットを増やすことができる。各増加後のデータビット幅＝元のデータビット幅＋Ｎビット。
【０１８７】
可変調整ステップ長さに応じて、目標データに対応するデータビット幅を大きくして、調整ビット幅を得ることができる。例えば、量子化誤差と誤差しきい値の差が第１しきい値より大きい場合、データビット幅は調整ステップ長さＭ１に従って調整でき、量子化誤差と誤差しきい値の差が第１しきい値より小さい場合、データは以下に従って調整することができる。ステップ長さＭ２は、データビット幅を調整する。第１のしきい値は第２のしきい値よりも大きく、Ｍ１はＭ２よりも大きくなる。可変調整ステップ長さは、要件に応じて確定できる。この開示は、データビット幅の調整ステップ長さ、および調整ステップ長さが可変であるかどうかを制限しない。
【０１８８】
調整ビット幅に従って目標データを計算して、調整された量子化パラメータを取得できる。調整された量子化パラメータを使用して目標データを再量子化することによって得られる量子化データは、調整前に量子化パラメータを使用して得られる量子化データよりも高い量子化精度を持っている。
【０１８９】
図８Ｈは、本開示の一実施形態による、ニューラルネットワーク量子化法８００Ｈのフローチャートを示す。図８Ｈに示されるように、ニューラルネットワークの量子化方法はさらに以下を含む。
【０１９０】
ステップＳ４２：調整ビット幅と目標データに従って、目標データの調整済み量子化誤差を計算する。
【０１９１】
ステップＳ４３：調整ビット幅と目標データに従って計算された調整済み量子誤差が第１の誤差しきい値以下になるまで、調整済の量子化誤差と第１の誤差しきい値に従って調整ビット幅を増やし続ける。
【０１９２】
量子化誤差に応じて目標データに対応するデータビット幅を増やす場合は、ビット幅を１回調整して調整ビット幅を取得し、調整ビット幅に応じて調整量子化パラメータを計算し、調整済み量子化パラメータに応じて目標データを量子化して調整済み量子化データを取得する。次に、調整済み量子化データと目標データに従って、目標データの調整済み量子化誤差を計算する。調整済み量子化誤差は、第１の誤差しきい値よりも大きい場合がある。つまり、調整済みデータのビット幅が調整目的を満たさない場合がある。調整済の量子化誤差が第１の誤差しきい値よりも大きい場合は、調整後のデータビット幅を調整し続けることができる。つまり、最終的な調整ビット幅と目標データが取得されるまで、目標データに対応するデータビット幅を複数回増やする。の調整済み量子化誤差は、第１の誤差しきい値よりも小さくなっている。
【０１９３】
複数回増やす調整ステップ長さは、固定調整ステップ長さまたは可変調整ステップ長さにすることができる。たとえば、最終データビット幅＝元のデータビット幅＋Ａ＊Ｎビット。ここで、Ｎは各増加の固定調整ステップ長さであり、Ａはデータビット幅が増加した回数である。最終データビット幅＝元データビット幅＋Ｍ１＋Ｍ２＋．．．＋Ｍｍ、ここでＭ１、Ｍ２．．．Ｍｍは、毎回増やす可変調整ステップ長さである。
【０１９４】
この実施形態では、量子化誤差が第１の誤差しきい値よりも大きい場合、目標データに対応するデータビット幅を大きくして、目標データに対応する調整ビット幅を得る。第１の誤差しきい値を設定し、ステップ長さを調整することでデータビット幅を増やすことができるため、調整後のデータビット幅は量子化要件を満たすことができる。１つの調整で調整要件を満たせない場合は、データビット幅を複数回調整できる。第１の誤差しきい値と調整ステップ長さの設定により、さまざまな量子化要件を満たすために量子化要件に応じて量子化パラメータを柔軟に調整できるため、量子化精度を独自のデータ特性に応じて適応的に調整できる。
【０１９５】
図８Ｉは、本開示の一実施形態によるニューラルネットワーク量子化法８００Ｉのフローチャートを示す。図８Ｉに示されるように、ニューラルネットワーク量子化法のステップＳ４０は、以下を含む。
【０１９６】
ステップＳ４４：量子化誤差が第２の誤差しきい値よりも小さい場合、目標データに対応するデータビット幅を減らし、第２の誤差しきい値が第１の誤差しきい値よりも小さい。
【０１９７】
第２の誤差しきい値は、許容可能な量子化誤差とニューラルネットワークの予想される動作効率に従って確定できる。量子化誤差は、第２の誤差しきい値と比較できる。量子化誤差が第２の誤差しきい値よりも小さい場合、量子化誤差は予想を超えていると見なすことができるが、動作効率が低すぎて許容できない。量子化精度を下げてニューラルネットワークの運用効率を向上させ、目標データに対応するデータビット幅を小さくすることで目標データの量子化精度を下げることができる。
【０１９８】
調整ビット幅を取得するために、固定調整ステップ長さによって、目標データに対応するデータビット幅を減らすことができる。固定調整ステップ長さサイズはＮビットにすることができ、Ｎは正の整数である。データビット幅を調整するたびに、Ｎビットを減らすことができる。増加したデータビット幅＝元のデータビット幅−Ｎビット。
【０１９９】
可変調整ステップ長さに応じて、目標データに対応するデータビット幅を縮小して、調整ビット幅を得ることができる。例えば、量子化誤差と誤差しきい値の差が第１しきい値より大きい場合、データビット幅は調整ステップ長さＭ１に従って調整でき、量子化誤差と誤差しきい値の差が第１しきい値より小さい場合、データは以下に従って調整することができる。ステップ長さＭ２は、データビット幅を調整する。第１のしきい値は第２のしきい値よりも大きく、Ｍ１はＭ２よりも大きくなる。可変調整ステップ長さは、要件に応じて確定できる。この開示は、データビット幅の調整ステップ長さ、および調整ステップ長さが可変であるかどうかを制限しない。
【０２００】
調整ビット幅に応じて目標データを計算し、調整された量子化パラメータを取得できる。調整された量子化パラメータで目標データを再量子化した後に得られた量子化データは、調整前の量子化パラメータを使用して得られた量子化データよりも量子化精度が高くなる。
【０２０１】
図８Ｊは、本開示の一実施形態による、ニューラルネットワーク量子化法８００Ｊのフローチャートを示す。図８Ｊに示されるように、ニューラルネットワークの量子化方法はさらに以下を含む。
【０２０２】
ステップＳ４５：調整ビット幅と目標データに従って、目標データの調整済み量子化誤差を計算する。
【０２０３】
ステップＳ４６：調整ビット幅と目標データに従って計算された調整済の量子誤差が第２の誤差しきい値以上になるまで、調整済の量子化誤差と第２の誤差しきい値に従って調整ビット幅を減らし続ける。
【０２０４】
量子化誤差に応じて目標データに対応するデータビット幅を増やす場合は、ビット幅を１回調整して調整ビット幅を取得し、調整ビット幅に応じて調整量子化パラメータを計算し、調整済み量子化パラメータに応じて目標データを量子化して調整済み量子化データを取得する。次に、調整済み量子化データと目標データに従って、目標データの調整済み量子化誤差を計算する。調整済み量子化誤差は、第２の誤差しきい値よりも小さい場合がある。つまり、調整済みデータのビット幅が調整目的を満たさない場合がある。調整済の量子化誤差がまだ第２の誤差しきい値よりも小さい場合は、調整後のデータビット幅を調整し続けることができる。つまり、最終的な調整ビット幅と目標データが取得されるまで、目標データに対応するデータビット幅を複数回減らする。の調整済み量子化誤差は、第２の誤差しきい値よりも大きくなっている。
【０２０５】
複数回短縮される調整ステップ長さは、固定調整ステップ長さまたは可変調整ステップ長さであり得る。たとえば、最終データビット幅＝元のデータビット幅−Ａ＊Ｎビット。ここで、Ｎは各増加の固定調整ステップ長さであり、Ａはデータビット幅が増加した回数である。最終データビット幅＝元のデータビット幅−Ｍ１−Ｍ２−．．．−Ｍｍ、ここでＭ１、Ｍ２．．．Ｍｍは、毎回減少する可変調整ステップ長さである。
【０２０６】
この実施形態では、量子化誤差が第２の誤差しきい値よりも小さい場合、目標データに対応するデータビット幅を縮小して、目標データに対応する調整ビット幅を得る。調整後のデータビット幅が量子化要件を満たすことができるように、第２の誤差しきい値を設定し、ステップ長さを調整することにより、データビット幅を減らすことができる。１つの調整で調整要件を満たせない場合は、データビット幅を複数回調整できる。第２の誤差しきい値と調整ステップ長さの設定により、量子化要件に応じて量子化パラメータを柔軟かつ適応的に調整し、さまざまな量子化要件を満たすことができるため、量子化精度を調整でき、量子化精度とニューラルネットワークの運用効率のバランスが取れる。
【０２０７】
可能な実装方法では、この方法はさらに以下を含む。
【０２０８】
量子化誤差が第１の誤差しきい値より大きい場合、目標データに対応するデータビット幅が増加し、量子化誤差が第２の誤差しきい値よりも小さい場合、目標データに対応するデータビット幅が減少して、目標データに対応する調整ビット幅。
【０２０９】
２つの誤差しきい値を同時に設定することもできる。第１の誤差しきい値は、量子化精度が低すぎることを示すために使用され、データビット幅のビット数が増える可能性がある。第２の誤差しきい値は、量子化精度が高すぎることを示すために使用され、データビット幅を減らす可能性がある。桁。第１の誤差しきい値が第２の誤差しきい値よりも大きい目標データの量子化誤差を２つの誤差しきい値と同時に比較できる。量子化誤差が第１の誤差しきい値よりも大きい場合、データビット幅のビット数が増やす。量子化誤差が第２の誤差しきい値よりも小さい場合誤差しきい値を使用する場合は、データビット幅のビット数を減らしてください。量子化誤差が第１の誤差しきい値と第２の誤差しきい値の間にある場合、データビット幅は変更されないままになる。
【０２１０】
この実施形態では、量子化誤差を第１の誤差しきい値および第２の誤差しきい値と同時に比較することにより、比較結果に応じてデータビット幅を増減することができ、第１の誤差しきい値および第２の誤差しきい値を使用してより柔軟な調整を行うことができる。データビット幅。これにより、データビット幅の調整結果が量子化要件にさらに一致するようになる。
【０２１１】
ニューラルネットワークのトレーニングは、ニューラルネットワークの複数の反復を参照することを明確にする必要がある（ニューラルネットワークの重みはランダムな数にすることができる）。これにより、ニューラルネットワークの重みはプリセット条件を満たすことができる。処理する。ここで、反復演算には、一般に、順方向演算、逆方向演算、および重み更新演算が含まれる。順方向演算とは、ニューラルネットワークの入力データに基づいて順方向演算の結果を得るための順方向推論のプロセスを指する。逆方向演算は、順方向演算の結果とプリセットされた基準値に基づいて損失値を確定し、損失値に応じて重み勾配値および／または入力データ勾配値を確定するプロセスである。重み更新演算とは、重み勾配値に従ってニューラルネットワークの重みを調整するプロセスを指する。具体的には、ニューラルネットワークのトレーニングプロセスは次のとおりである。プロセッサは、ランダム数の重みを持つニューラルネットワークを使用して、入力データに対して順方向演算を実行し、順方向演算の結果を取得できる。次に、プロセッサは、順方向演算の結果とプリセット参照値に従って損失値を確定し、損失値に従って重み勾配値および／または入力データ勾配値を確定する。最後に、プロセッサは、重み勾配値に従ってニューラルネットワークの勾配値を更新し、新しい重みを取得して、反復演算を完了することができる。プロセッサは、ニューラルネットワークの順方向演算の結果がプリセット条件を満たすまで、ループ内で複数の反復を実行する。たとえば、ニューラルネットワークの順方向演算結果がプリセット基準値に収束すると、トレーニングは終了する。または、ニューラルネットワークの順方向演算結果とプリセット基準値によって確定される損失値がプリセット精度以下になると、トレーニングは終了する。
【０２１２】
微調整とは、ニューラルネットワークの精度がプリセット要件を満たすことができるように、ニューラルネットワークで複数の反復演算を実行するプロセスを指する（ニューラルネットワークの重みはすでに収束状態にあり、ランダムな数値ではない）。この微調整プロセスは、基本的に上記のトレーニングプロセスと同じであり、収束状態でニューラルネットワークを再トレーニングするプロセスと見なすことができる。推論とは、重みがプリセット条件を満たすニューラルネットワークを使用して、画像認識などのニューラルネットワークの使用など、認識や分類などの機能を実現するための順方向演算を実行するプロセスを指する。
【０２１３】
本開示の実施形態において、上記のニューラルネットワークのトレーニングまたは微調整プロセスにおいて、異なる量子化パラメータを使用して、ニューラルネットワーク動作の異なる段階におけるニューラルネットワークの動作データを量子化することができ、それにより、反復動作が、量子化予定のデータによって実行される。ニューラルネットワークの運用プロセスにおけるデータストレージスペースを減少し、データアクセスと運用の効率を向上させることができる。図８Ｋに示されるように、本開示の一実施形態による、量子化パラメータの調整方法８００Ｋのフローチャートが示される。上記の方法は、以下を含み得る。
【０２１４】
Ｓ１００で、量子化予定のデータのデータ変動範囲を取得する。
【０２１５】
任意選択で、プロセッサは、量子化予定のデータのデータ変動範囲を直接読み取ることができ、量子化予定のデータのデータ変動範囲は、ユーザによって入力され得る。
【０２１６】
オプションで、プロセッサは、カレント反復で量子化予定のデータおよび履歴反復で量子化予定のデータによって、量子化予定のデータのデータ変動範囲を計算することもできる。ここで、カレント反復は、現在実行されている反復演算を指し、履歴反復は、カレント反復の前に実行される反復演算。たとえば、プロセッサは、量子化予定のデータの要素の最大値とカレント反復の要素の平均値、および量子化予定のデータの要素の最大値と、各履歴反復で量子化予定のデータの要素の平均値を、各反復の要素の値に従って取得できる。要素の最大値と平均値によって、量子化予定のデータの変動範囲が決まる。カレント反復で量子化予定のデータの要素の最大値が、プリセット履歴反復数で量子化予定のデータの要素の最大値に近く、カレント反復で量子化予定のデータの要素の平均値が、プリセット履歴反復数である場合量子化予定のデータの要素の平均値が比較的近い場合、量子化予定のデータのデータ変動範囲が小さいと判断できる。そうでなければ、量子化予定のデータのデータ変動範囲が比較的大きいと判断することができる。別の例として、量子化予定のデータのデータ変動範囲は、量子化予定のデータのスライディング平均値または分散によって表すことができ、これはここでは特に限定されない。
【０２１７】
本開示の実施形態では、量子化予定のデータのデータ変動範囲を使用して、量子化予定のデータの量子化パラメータを調整する必要があるかどうかを確定することができる。たとえば、量子化予定のデータのデータ変動範囲が大きい場合、量子化の精度を確保するために、量子化パラメータを時間内に調整する必要があることを示している可能性がある。量子化予定のデータのデータ変動範囲が小さい場合は、履歴反復の量子化パラメータをカレント検査反復とその後の一定数の反復に使用できるため、量子化パラメータの頻繁な調整を回避し、量子化効率を向上させることができる。
【０２１８】
ここで、各反復は、量子化される少なくとも１つのデータを含み、量子化予定のデータは、浮動点によって表される算術データまたは固定点によって表される算術データであり得る。任意選択で、各反復で量子化予定のデータは、ニューロンデータ、重みデータ、または勾配データのうちの少なくとも１つであり得、勾配データはまた、ニューロン勾配データ、重み勾配データなどを含み得る。
【０２１９】
Ｓ２００で、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔に従ってニューラルネットワーク演算の量子化パラメータを調整し、ここ、目標反復間隔に少なくとも１回の反復が含まれる。量子化パラメータは、ニューラルネットワーク演算で量子化予定のデータに量子化操作を実装するためである。ここで、量子化パラメータはデータ幅を含み得る。したがって、目標反復間隔は、量子化予定のデータのデータ変動範囲によって確定され得、目標反復間隔によってニューラルネットワーク操作におけるデータ幅を調整し、目標反復間隔は、少なくとも１回の反復を含む。
【０２２０】
任意選択で、量子化パラメータは、前述の小数小数点位置および／またはスケーリング係数を含み得、ここで、スケーリング係数は、第１のスケーリング係数および第２のスケーリング係数を含み得る。特定の小数点位置の計算方法とスケーリング係数の計算方法は、上記の式を参照できるが、ここでは繰り返しない。任意選択で、量子化パラメータはオフセットも含み得、オフセットの計算方法は、上記の他の式に従って小数点位置を確定し得る；さらに、プロセッサはまた、上記の他の式に従って小数点位置を確定し得る。スケーリング係数を確定する。本開示のこの実施形態では、プロセッサは、確定された目標反復間隔によって、上記の小数小数点位置、スケーリング係数、またはオフセットのうちの少なくとも１つを更新して、ニューラルネットワーク動作における量子化パラメータを調整することができる。つまり、ニューラルネットワーク運用で量子化予定のデータのデータ変動範囲によって、ニューラルネットワーク運用での量子化パラメータを更新できるため、量子化精度を保証することができる。
【０２２１】
量子化予定のデータのデータ変化曲線は、ニューラルネットワークのトレーニングまたは微調整プロセス中に計算データの変化傾向について統計および分析を実行することによって取得できることは理解できる。図８Ｌに示すように、データ変化曲線８００Ｌによると、ニューラルネットワークのトレーニングまたは微調整の初期段階では、量子化されるさまざまな反復のデータが大幅に変化することがわかる。トレーニングまたは微調整操作が進むにつれて、量子化予定のデータのさまざまな反復がデータの変化は徐々にフラットになる傾向がある。したがって、ニューラルネットワークのトレーニングまたは微調整の初期段階では、量子化パラメータをより頻繁に調整できる。ニューラルネットワークのトレーニングまたは微調整の中間および後期段階では、量子化パラメータを複数の反復またはトレーニングサイクルの間隔で調整できる。本開示の方法は、適切な反復間隔を確定することにより、量子化精度と量子化効率との間のバランスを達成することである。
【０２２２】
具体的には、プロセッサは、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定して、目標反復間隔によってニューラルネットワーク操作における量子化パラメータを調整することができる。オプションで、量子化予定のデータのデータ変動範囲が減少するにつれて、目標反復間隔が増やす場合がある。つまり、量子化予定のデータのデータ変動範囲が大きいほど、目標反復間隔が短くなり、量子化パラメータの調整頻度が高くなる。量子化予定のデータのデータ変動範囲が小さいほど、目標反復間隔が大きくなり、量子化パラメータの調整の頻度が低くなることを示している。もちろん、他の実施形態では、上記の目標反復間隔もハイパーパラメータであり得る。例えば、目標反復間隔は、ユーザによって設定され得る。
【０２２３】
任意選択で、前述の重みデータ、ニューロンデータ、勾配データ、および量子化される他のデータは、異なる反復間隔を有することができる。これに対応して、プロセッサは、量子化される様々なデータに対応するデータ変動振幅を取得し、各タイプの量子化予定のデータのデータ変動振幅に従って、量子化される対応するデータに対応する目標反復間隔を確定することができる。言い換えれば、量子化される様々なデータの量子化プロセスを非同期的に実行することができる。本開示の実施形態では、量子化される異なるタイプのデータ間の差異のために、量子化される異なるデータのデータ変動範囲を使用して、対応する目標反復間隔を確定することができ、対応する目標反復間隔は、対応する目標反復間隔によって確定することができる。これにより、量子化パラメータは、量子化予定のデータの量子化精度を保証し、それによってニューラルネットワークの演算結果の正確さを保証することができる。
【０２２４】
もちろん、他の実施形態では、同じ目標反復間隔を、量子化される異なるタイプのデータについて確定して、目標反復間隔によって量子化される対応するデータに対応する量子化パラメータを調整することができる。例えば、プロセッサは、量子化される様々なデータのデータ変動範囲を取得し、量子化予定のデータの最大データ変動範囲によって目標反復間隔を確定し、目標反復間隔によって量子化される様々なデータの量子化パラメータを確定し得る。さらに、量子化されるさまざまなタイプのデータでも、同じ量子化パラメータを使用できる。
【０２２５】
さらに任意選択で、前述のニューラルネットワークは、少なくとも１つの操作層を含み得、そして量子化されるべきデータは、各操作層に含まれるニューロンデータ、重みデータ、または勾配データのうちの少なくとも１つであり得る。このとき、プロセッサは、現在の算術層に関連して量子化予定のデータを取得し、上記の方法に従って、現在の算術層で量子化される様々なデータのデータ変動範囲および対応する目標反復間隔を確定することができる。
【０２２６】
任意選択で、プロセッサは、各反復演算プロセスで１回量子化予定のデータのデータ変動範囲を確定し、量子化される対応するデータのデータ変動範囲によって目標反復間隔を確定することができる。言い換えると、プロセッサは、各反復で１回目標反復間隔を計算できる。特定の目標反復間隔の計算については、以下の説明を参照してください。さらに、プロセッサは、プリセット条件に従って各反復から検査反復を選択し、各検査反復で量子化予定のデータの変動範囲を確定し、検査反復に対応する目標反復間隔によって量子化パラメータなどを更新および調整することができる。このとき、反復が選択された検査反復でない場合、プロセッサは反復に対応する目標反復間隔を無視する場合がある。
【０２２７】
オプションで、各目標反復間隔は検証反復に対応することができ、検証反復は、目標反復間隔の１番目の反復または目標反復間隔の終了反復であり得る。プロセッサは、各目標反復間隔の検査反復でニューラルネットワークの量子化パラメータを調整して、目標反復間隔によってニューラルネットワーク演算の量子化パラメータを調整することができる。ここで、検証の反復は、現在の量子化パラメータが量子化予定のデータの要件を満たしているかどうかを検証するための時点である可能性がある。調整前の量子化パラメータは、調整後の量子化パラメータと同じでも、調整後の量子化パラメータとは異なる場合もある。オプションで、隣接する検査反復の間隔は、ターゲットの反復の間隔以上にすることができる。
【０２２８】
たとえば、目標反復間隔は、カレント検査反復からの反復数を計算する場合があり、カレント検査反復は、目標反復間隔の開始反復である場合がある。たとえば、カレント検査反復が１００回目の反復である場合、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が３であると判断し、プロセッサは、目標反復間隔に３回の反復が含まれ、それぞれが１００回目の反復であると判断できる。２回目の反復、１０１回目の反復、１０２回目の反復。プロセッサは、１００回目の反復でニューラルネットワーク演算の量子化パラメータを調整できる。ここで、カレント検査の反復は、プロセッサが現在量子化パラメータの更新と調整を実行しているときの対応する反復演算である。
【０２２９】
オプションで、目標反復間隔は、カレント検査反復の次の反復から計算することもでき、カレント検査反復は、カレント検査反復の前の一つ前の反復間隔の終了反復であってもよい。たとえば、カレント検査反復が１００回目の反復である場合、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が３であると判断し、プロセッサは、目標反復間隔に３回の反復（１０１回目反復、第１０２反復、および第１０３反復。）が含まれていると判断できる。プロセッサは、１００回目の反復と１０３回目の反復で、ニューラルネットワーク演算の量子化パラメータを調整できる。この開示は、目標反復間隔の確定方法を特に制限するものではない。
【０２３０】
一実施形態では、小数小数点位置、スケーリング係数、およびオフセットの上記の計算式から、量子化パラメータは、量子化予定のデータに関連することが多いことが分かる。したがって、上記の操作Ｓ１００において、量子化予定のデータのデータ変動範囲はまた、これは、量子化パラメータの変動範囲によって間接的に確定され、量子化予定のデータのデータ変動範囲は、量子化パラメータの変動範囲によって表すことができる。具体的には、図８Ｍに示すように、本開示の一実施形態のパラメータ調整法における目標反復間隔の確定方法８００Ｍのフローチャートが示されている。前述の操作Ｓ１００は、以下を含み得る。
【０２３１】
Ｓ１１０で、小数点位置の変動範囲を取得する。ここで、小数点位置の変動範囲を使用して、量子化予定のデータのデータ変動範囲を表すことができ、小数点位置の変動範囲は、量子化予定のデータのデータ変動範囲と正の相関がある。
【０２３２】
オプションで、小数点位置の変動範囲は、量子化予定のデータの変動範囲を間接的に反映できる。小数点位置の変動範囲は、カレント検査反復の小数点位置および少なくとも１つの履歴反復の小数点位置によって確定され得る。ここで、カレント検査反復の小数点位置および各履歴反復の小数点位置は、上記の式によって確定することができる。
【０２３３】
たとえば、プロセッサは、カレント検査反復の小数点位置と履歴反復の小数点位置の分散を計算し、分散に基づいて小数点位置の変動範囲を確定することもできる。別の例として、プロセッサは、カレント検査反復の小数小数点位置の平均値および履歴反復の小数小数点位置の平均値に従って、小数小数点位置の変動範囲を確定することができる。具体的には、図８Ｎに示すように、図８Ｎは、本開示の一実施形態における小数点位置の変動範囲の確定方法８００Ｎのフローチャートを示す。前述の操作Ｓ１１０は、以下を含み得る。
【０２３４】
Ｓ１１１で、カレント検査反復前の一つ前の検査反復に対応する小数点位置と、一つ前の検査反復前の履歴反復に対応する小数点位置によって、第１の平均値を確定する。ここで、前の検査反復は、量子化パラメータが最後に調整された時間に対応する反復であり、前の検査反復とカレント検査反復との間に少なくとも１つの反復間隔がある。
【０２３５】
オプションで、少なくとも１つの履歴反復が少なくとも１つの反復間隔に属し、各反復間隔が１つの検査反復に対応し、２つの隣接する検査反復が１つの反復間隔を持つ場合がある。前述の操作Ｓ１１１における前の検査反復は、目標反復間隔前の一つ前の反復間隔に対応する検査反復であり得る。
【０２３６】
オプションで、第１の平均値は次の式に従って計算できる。
Ｍ１＝ａ１ｘｓｔ−１＋ａ２ｘｓｔ−２＋ａ３ｘｓｔ−３＋．．．＋ａｍｘｓ１  式（３８）
【０２３７】
ここで、ａ１〜ａｍは各反復の小数小数点位置に対応する計算された重みを指し、ｓｔ−１は前の検査反復に対応する小数小数点位置を指する。ｓｔ−２、ｓｔ−３．．．ｓ１は、最後の検査反復前の履歴反復に対応する小数点位置を指し、Ｍ１は上記の第１の平均値を指する。また、データの分布特性によれば、履歴反復が前回の検査反復から遠いほど、前回の検査反復付近の反復小数小数点位置の分布や変動範囲への影響が小さいため、上記の計算重みはａ１として計算できる。ａ１〜ａｍの順序は順番に減少する。
【０２３８】
さらに、第１の平均値は、各反復間隔に対応する検査反復の小数点位置によって計算できる。たとえば、第１の平均値は次の式に従って計算できる。
Ｍ１＝ａ１ｘｓｔ−１＋ａ２ｘｓｔ−２＋ａ３ｘｓｔ−３＋．．．＋ａｍｘｓ１
【０２３９】
ここで、ａ１〜ａｍは、各検査反復の小数点位置に対応する計算された重みを参照し、ｓｔ−１は、前の検査反復に対応する小数点位置を参照する。ｓｔ−２、ｓｔ−３．．．ｓ１は、最後の検査反復前のプリセット反復間隔数の検査反復に対応する小数点位置を指し、Ｍ１は上記の第１の平均値を指する。
【０２４０】
たとえば、最後の検査反復はニューラルネットワーク演算の１００回目の反復であり、履歴反復は１回目の反復から９９回目の反復までであり、９９回の履歴反復は１１回の反復間隔に分割できる。たとえば、１回目から９回目までは第１反復間隔、１０回目から１８回目は第２反復間隔、．．．、９０回目から９９回目は第１１反復間隔である。次に、プロセッサは１００回目の反復の小数点位置（つまりｓｔ−１）を取得し、１００回目の反復の前の反復間隔で検査反復の小数点位置を取得できる。つまり、ｓ１はニューラルネットワークを参照できる。検査反復の１番目の反復間隔に対応する小数点位置（たとえば、ｓ１はニューラルネットワークの１番目の反復に対応する小数点位置を指してもよい）、．．．、ｓｔ−３はニューラルネットワークの１０番目の反復間隔の検査反復に対応する小数点位置を参照してもよく（たとえば、ｓｔ−３はニューラルネットワークの８１番目の反復に対応する小数点位置を指してもよい）、ｓｔ−２はニューラルネットワークの１１番目の反復を参照できるインターバルテストの反復に対応する小数点位置（たとえば、ｓｔ−２は、ニューラルネットワークの９０番目の反復に対応する小数点位置を指してもよい）。さらに、プロセッサは、上記の式に従って第１の平均値Ｍ１を計算することができる。
【０２４１】
本開示の実施形態では、例示の便宜のために、反復間隔が同じ数の反復を含むと想定される。実際の使用では、反復間隔に含まれる反復回数は異なる場合がある。オプションで、反復間隔に含まれる反復数は、反復が増やすにつれて増やす。つまり、ニューラルネットワークのトレーニングまたは微調整が進むにつれて、反復間隔はますます大きくなる可能性がある。
【０２４２】
さらに、計算をさらに簡素化し、データが占めるストレージスペースを減少するために、上記の第１平均値Ｍ１は、次の式を使用して計算できる。
Ｍ１＝αｘｓｔ−１＋（１−α）ｘＭ０                  式（３９）
【０２４３】
ここ、αは前回の検査反復に対応する小数小数点位置の計算重み、ｓｔ−１は前回の検査反復に対応する小数小数点位置、Ｍ０は前回の検査反復前の検査反復に対応するスライディングを表す。平均値については、Ｍ０の具体的な計算方法は、上記のＭ１の計算方法を参照できるが、ここでは繰り返しない。
【０２４４】
Ｓ１１２で、カレント検査反復に対応する小数点位置と、カレント検査反復前の履歴反復の小数点位置によって、第２の平均値を確定する。ここで、カレント検査反復に対応する小数小数点位置は、カレント検査反復の目標データビット幅および量子化予定のデータによって確定することができる。
【０２４５】
オプションで、第２の平均値Ｍ２は、次の式に従って計算できる。
Ｍ２＝ｂ１ｘｓｔ＋ｂ２ｘｓｔ−１＋ｂ３ｘｓｔ−２＋．．．＋ｂｍｘｓ１  式（４０）
【０２４６】
ここで、ｂ１〜ｂｍは各反復の小数小数点位置に対応する計算された重みを指し、ｓｔはカレント検査反復に対応する小数小数点位置を指する。ｓｔ−１、ｓｔ−２．．．ｓ１これは、カレント検査反復前の履歴反復に対応する小数点位置を指し、Ｍ２は上記の第２の平均値を指する。さらに、データの分布特性によれば、履歴反復がカレント検査反復から離れるほど、カレント検査反復に近い反復小数小数点位置の分布および変動範囲への影響が小さくなるため、上記の計算の重みはｂ１〜ｂｍに基づくことができる。順序が減少する。
【０２４７】
たとえば、カレント検査の反復はニューラルネットワーク演算の１０１回目の反復であり、カレント検査の反復前の履歴の反復は１回目の反復から１００回目の反復を指する。次に、プロセッサは１０１番目の反復の小数点位置（つまりｓｔ）を取得し、１０１番目の反復の前の履歴反復の小数点位置を取得できる。つまり、ｓ１は、ニューラルネットワークの１番目の反復の対応する小数点位置を指してもよく、．．．、ｓｔ−２は、ニューラルネットワークの９９回目の反復に対応する小数点位置を指してもよく、ｓｔ−１は、ニューラルネットワークの１００回目の反復に対応する小数点位置を指してもよい。さらに、プロセッサは、上記の式に従って第２の平均値Ｍ２を計算することができる。
【０２４８】
Ｓ１１２１で、中間スライディング平均値のプリセット数を取得する。中間スライディング平均値のそれぞれは、カレント検査反復の前のプリセット数の検査反復に従って確定され、検査反復はニューラルネットワークの量子化を調整することである。プロセスのパラメータは、対応する反復である。
【０２４９】
Ｓ１１２２で、カレント検査反復の小数点位置とプリセット数の中間スライディング平均値に従って、第２の平均値を確定する。
【０２５０】
たとえば、第２の平均値は、次の式に従って計算できる。
Ｍ２＝ｂ１ｘｓｔ＋ｂ２ｘｓｔ−１＋ｂ３ｘｓｔ−２＋．．．＋ｂｍｘｓ１
【０２５１】
ここで、ｂ１〜ｂｍは各反復の小数小数点位置に対応する計算された重みを指し、ｓｔはカレント検査反復に対応する小数小数点位置を指する。ｓｔ−１、ｓｔ−２．．．ｓ１これは、カレント検査反復の前の検査反復に対応する小数点位置を指し、Ｍ２は上記の第２の平均値を指する。
【０２５２】
たとえば、カレント検査の反復は１００回目の反復であり、履歴の反復は１回目の反復から９９回目の反復までであり、９９回の履歴の反復は１１回の反復間隔に分割できる。たとえば、１回目から９回目までは第１反復間隔、１０回目から１８回目は第２反復間隔、．．．、９０回目から９９回目は第１１反復間隔である。次に、プロセッサは１００回目の反復の小数点位置（つまりｓｔ）を取得し、１００回目の反復の前の反復間隔で検査反復の小数点位置を取得できる。つまり、ｓ１はニューラルネットワークの最初の小数点位置を指してもよい。反復に対応する反復間隔検証小数点位置（たとえば、ｓ１はニューラルネットワークの１番目の反復に対応する小数点位置を指してもよい）、．．．、ｓｔ−２はニューラルネットワークの１０番目の反復間隔の検査反復に対応する小数小数点位置を指してもよく（たとえば、ｓｔ−２はニューラルネットワークの８１回目の反復に対応する小数小数点位置を指してもよい）、ｓｔ−１はニューラルネットワークの１１回目の反復間隔の検査反復を参照できる。対応する小数点位置（たとえば、ｓｔ−１は、ニューラルネットワークの９０回目の反復に対応する小数点位置を指してもよい）。さらに、プロセッサは、上記の式に従って第２の平均値Ｍ２を計算することができる。
【０２５３】
本開示の実施形態では、例示の便宜のために、反復間隔が同じ数の反復を含むと想定される。実際の使用では、反復間隔に含まれる反復回数は異なる場合がある。オプションで、反復間隔に含まれる反復数は、反復が増やすにつれて増やす。つまり、ニューラルネットワークのトレーニングまたは微調整が進むにつれて、反復間隔はますます大きくなる可能性がある。
【０２５４】
さらに、計算を簡素化し、データが占めるストレージスペースを減少するために、プロセッサは、カレント検査反復に対応する小数点位置によって第２の平均値を確定し、第１の平均値、すなわち、第２の平均値は以下のようになり得る。式は次のように計算される。
Ｍ２＝βｘｓｔ＋（１−β）ｘＭ１                      式（４１）
【０２５５】
ここで、βはカレント検査反復に対応する小数点位置の計算された重みを指し、Ｍ１は上記の第１の平均値を指する。
【０２５６】
Ｓ１１３で、第１の平均値と第２の平均値に従って第１の誤差を確定する。第１の誤差は、カレント検査反復と履歴反復の小数点位置の変動範囲を表すためである。
【０２５７】
任意選択で、第１の誤差は、第２の平均値と前述の第１の平均値との間の差の絶対値に等しくてもよい。具体的には、上記の第１の誤差は、次の式に従って計算できる。
ｄｉｆｆｕｐｄａｔｅ１＝｜Ｍ２−Ｍ１｜＝β｜ｓ（ｔ）−Ｍ１｜          式（４２）
【０２５８】
任意選択で、カレント検査反復の上記の小数小数点位置は、カレント検査反復で量子化予定のデータおよびカレント検査反復に対応する目標データビット幅によって確定され得る。特定の小数小数点位置計算方法は、上記の式を参照され得る。ここで、カレント検査反復に対応する目標データビット幅はハイパーパラメータである可能性がある。さらに任意選択で、カレント検査反復に対応する目標データビット幅は、ユーザー定義の入力であり得る。オプションで、ニューラルネットワークのトレーニングまたは微調整のプロセスで量子化予定のデータに対応するデータビット幅は一定である場合がある。つまり、同じニューラルネットワークで量子化される同じタイプのデータは、たとえばニューラルネットワークの場合、同じデータビット幅で量子化される。ネットワークの各反復におけるニューロンデータは、８ビットのデータ幅で量子化される。
【０２５９】
オプションで、ニューラルネットワークトレーニングまたは微調整プロセスで量子化予定のデータに対応するデータビット幅は、データビット幅が量子化予定のデータの量子化要件を満たすことができるように可変である。すなわち、プロセッサは、量子化予定のデータによって、量子化予定のデータに対応するデータビット幅を適応的に調整し、量子化予定のデータに対応する目標データビット幅を取得することができる。具体的には、プロセッサは、最初にカレント検査反復に対応する目標データビット幅を確定し、次にプロセッサは、カレント検査反復に対応する目標データビット幅に対応するカレント検査反復およびカレント検査反復に対応する量子化データを確定し得る。
【０２６０】
本開示の実施形態では、カレント検査反復のデータビット幅が変化すると、それに応じて小数点位置が変化する。ただし、この時点での小数点位置の変化は、量子化予定のデータのデータ変化によるものではなく、上記式（４２）で求めた第１の誤差で算出した目標反復間隔が不正確になり、量子化の精度に影響を与える可能性がある。したがって、カレント検査反復のデータビット幅が変化した場合、それに応じて上記の第２の平均値を調整して、第１の誤差が小数点位置の変動範囲を正確に反映できるようにし、それによって目標反復間隔の精度と信頼性を確保できる。具体的には、図８Ｐに示されるように、本開示の別の実施形態における第２の平均値の確定方法８００Ｐのフローチャートが示される。上記の方法には、次のものも含まれる。
【０２６１】
Ｓ１１６で、目標データビット幅によって、カレント検査反復のデータビット幅調整値を確定する。
【０２６２】
具体的には、プロセッサは、カレント検査反復の目標データビット幅および初期データビット幅によって、カレント検査反復のデータビット幅調整値を確定することができる。ここで、データビット幅調整値＝目標データビット幅−初期データビット幅。もちろん、プロセッサは、カレント検査反復のデータビット幅調整値を直接取得することもできる。
【０２６３】
Ｓ１１７で、カレント検査反復のデータビット幅調整値に従って、上記の第２の平均値を更新する。
【０２６４】
具体的には、データビット幅調整値がプリセットパラメータより大きい場合（たとえば、プリセットパラメータがゼロに等しい場合）、つまり、カレント検査反復のデータビット幅が増やすと、プロセッサはそれに応じて第２の平均値を減らすことができる。データビット幅調整値がプリセットパラメータよりも小さい場合（たとえば、プリセットパラメータがゼロに等しい場合）、つまり、カレント検査反復のデータビット幅を減らすと、プロセッサはそれに応じて第２の平均値を増やすことができる。データビット幅調整値がプリセットパラメータと等しい場合、つまりデータビット幅調整値が０の場合、この時点でカレント反復に対応する量子化データは変更されておらず、更新された第２の平均値は更新前の第２の平均値と等しくなる。更新前の第２の平均値は、上記の式（４１）に従って計算される。オプションで、データビット幅調整値がプリセットパラメータに等しい場合、つまりデータビット幅調整値が０に等しい場合、プロセッサは第２の平均値を更新しない場合がある。つまり、プロセッサは上記の操作Ｓ１１７を実行しない場合がある。
【０２６５】
たとえば、更新前の第２の平均値Ｍ２＝β×ｓｔ＋（１−β）×Ｍ１；現在の検査反復に対応する目標データビット幅ｎ２＝初期データビット幅ｎ１＋Δｎの場合、ここでΔｎはデータビットを表す。幅調整値。このとき、更新された第２の平均値Ｍ２＝β×（ｓｔ−Δｎ）＋（１−β）×（Ｍ１−Δｎ）。カレント検査反復に対応する目標データビット幅ｎ２＝初期データビット幅ｎ１−Δｎ（ここで、Δｎはデータビット幅調整値を表す）の場合、この時点で、更新された第２の平均値Ｍ２＝β×（ｓｔ−Δｎ）＋（１−β）×（Ｍ１＋Δｎ）。ここで、ｓｔは、目標データのビット幅に応じてカレント検査反復によって確定される小数点位置を指する。
【０２６６】
別の例として、更新前の第２の平均値Ｍ２＝β×ｓｔ＋（１−β）×Ｍ１；カレント検査反復に対応する目標データビット幅ｎ２＝初期データビット幅ｎ１＋Δｎの場合、ここでΔｎはデータを表すビット幅調整値。このとき、更新された第２の平均値Ｍ２＝β×ｓｔ＋（１−β）×Ｍ１−Δｎ。別の例として、カレント検査反復に対応する目標データビット幅ｎ２＝初期データビット幅ｎ１−Δｎ（ここで、Δｎはデータビット幅調整値を表す）の場合、この時点で、更新された第２の平均値Ｍ２＝β×ｓｔ＋（１−β）×Ｍ１＋Δｎ、ここでｓｔは、カレント検査反復で目標データビット幅によって確定された小数点位置を指する。
【０２６７】
さらに、前述の操作Ｓ２００は、以下を含み得る。
【０２６８】
目標反復間隔は、小数点位置の変動範囲によって確定され、ここで、目標反復間隔は、上記の小数点位置の変動範囲と負の相関がある。つまり、前述の小数点位置の変動範囲が大きいほど、目標反復間隔は短くなる。上記の小数点位置の変動範囲が小さいほど、目標反復間隔は大きくなる。
【０２６９】
上記のように、上記の第１の誤差は、小数小数点位置の変動の範囲を表すことができ、上記の操作には、以下が含まれ得る。
【０２７０】
プロセッサは、第１の誤差によって目標反復間隔を確定することができ、ここで、目標反復間隔は、第１の誤差と負の相関がある。つまり、第１の誤差が大きいほど、小数点位置の変動範囲が大きくなり、量子化予定のデータのデータ変動範囲が大きくなることを示する。このとき、目標反復間隔は小さくなる。
【０２７１】
具体的には、プロセッサは、次の式に従って目標反復間隔Ｉを計算できる。
Ｉ＝δ／ｄｉｆｆｕｐｄａｔｅ１−γ                式（４３）
【０２７２】
ここで、Ｉは目標反復間隔、ｄｉｆｆｕｐｄａｔｅ１は上記の第１の誤差を表し、δとγはハイパーパラメータにすることができる。
【０２７３】
第１の誤差を使用して小数点位置の変動範囲を測定できることは理解できる。第１の誤差が大きいほど、小数点位置の変動範囲が大きくなる。これは、量子化予定のデータの変動範囲が大きく、目標反復間隔を設定する必要があることを示している。小さいである。つまり、第１の誤差が大きいほど、量子化パラメータの調整が頻繁に行われる。
【０２７４】
この実施形態では、小数小数点位置の変動範囲（第１の誤差）が計算され、小数小数点位置の変動範囲によって目標反復間隔が確定される。量子化パラメータは目標反復間隔によって確定されるため、量子化パラメータに基づく量子化によって得られる量子化データは、目標データの小数小数点位置の変化傾向により一致し、量子化精度を確保しながらニューラルネットワークの運用効率を向上させることができる。
【０２７５】
オプションで、プロセッサは、カレント検査反復での目標反復間隔を確定した後、カレント検査反復での目標反復間隔に対応する量子化パラメータおよびデータビット幅をさらに確定して、目標反復間隔によって量子化パラメータを更新することができる。ここで、量子化パラメータは、小数小数点位置および／またはスケーリング係数を含み得る。さらに、量子化パラメータはまた、オフセットを含み得る。量子化パラメータの具体的な計算方法については、上記を参照してください。図８Ｑに示されるように、本開示の別の実施形態による量子化パラメータの調整方法８００Ｑのフローチャートが示される。上記の方法は、以下をさらに含み得る。
【０２７６】
Ｓ３００で、プロセッサは、目標反復間隔によって、ニューラルネットワーク演算の量子化パラメータを調整する。
【０２７７】
具体的には、プロセッサは、目標反復間隔によって検査反復を確定し、各検査反復で目標反復間隔を更新し得、また、各検査反復で量子化パラメータを更新し得る。たとえば、ニューラルネットワーク演算のデータビット幅は変更されない。このとき、プロセッサは、各検査反復で量子化予定のデータに応じて、小数点位置などの量子化パラメータを直接調整できる。別の例として、ニューラルネットワーク演算のデータビット幅は可変である。このとき、プロセッサは各検査反復でデータビット幅を更新し、更新されたデータビット幅と検査反復で量子化予定のデータによって小数点位置を調整できる。およびその他の量子化パラメータ。
【０２７８】
本開示のこの実施形態では、プロセッサは、各検査反復で量子化パラメータを更新して、現在の量子化パラメータが、量子化予定のデータの量子化要件を確実に満たすようにする。ここで、更新前の目標反復間隔と更新後の目標反復間隔は同じでも異なっていてもかまいません。更新前のデータビット幅と更新後のデータビット幅は同じでも異なっていてもかまいません。つまり、異なる反復間隔のデータビット幅は同じでも異なっていてもかまいません。更新前の量子化パラメータと更新後の量子化パラメータは同じでも異なっていてもよい。つまり、異なる反復間隔の量子化パラメータは同じでも異なっていてもよい。
【０２７９】
任意選択で、前述の操作Ｓ３００において、プロセッサは、ニューラルネットワーク演算における量子化パラメータを調整するために、検証反復において、目標反復間隔における量子化パラメータを確定することができる。
【０２８０】
ある場合には、ニューラルネットワーク演算の各反復に対応するデータビット幅は変化しない。つまり、ニューラルネットワーク演算の各反復に対応するデータビット幅は同じである。この時点で、プロセッサは次のことを確定できる。目標反復間隔内の小数点位置などの量子化パラメータは、目標反復間隔によってニューラルネットワーク演算の量子化パラメータを調整するという目的を達成できる。ここで、目標反復間隔の反復に対応する量子化パラメータは一致している可能性がある。つまり、目標反復間隔の各反復は同じ小数点位置を使用し、確定された小数点位置などの量子化パラメータのみが各検査反復で更新されるため、各反復での量子化パラメータの更新と調整を回避できるため、減少できる。量子化プロセスでの計算量により、量子化操作の効率が向上する。
【０２８１】
オプションで、データビット幅が変更されていない上記の場合、目標反復間隔の反復に対応する小数点位置を一定に保つことができる。具体的には、プロセッサは、カレント検査反復で量子化予定のデータおよびカレント検査反復に対応する目標データビット幅によって、カレント検査反復に対応する小数小数点位置を確定し、カレント検査反復に対応する小数小数点位置を目標反復間隔として使用することができる。対応する小数点位置については、カレント検査反復に対応する小数点位置が、目標反復間隔の反復に使用される。オプションで、カレント検査反復に対応する目標データビット幅をハイパーパラメータにすることができる。たとえば、カレント検査反復に対応する目標データのビット幅は、ユーザーがカスタマイズする。上記の式を参照することにより、カレント検査反復に対応する小数点位置を計算することができる。
【０２８２】
ある場合には、ニューラルネットワーク演算の各反復に対応するデータビット幅が変化する可能性がある。つまり、異なる目標反復間隔に対応するデータビット幅に一致性がない可能性があるが、目標反復間隔の各反復のデータビット幅は残る。絶え間ない。ここで、目標反復間隔の反復に対応するデータビット幅は、ハイパーパラメータであり得る。例えば、目標反復間隔の反復に対応するデータビット幅は、ユーザ定義の入力であり得る。ある場合には、目標反復間隔の反復に対応するデータビット幅もプロセッサによって計算され得る。例えば、プロセッサは、カレント検査反復で量子化予定のデータによって、カレント検査反復に対応する目標データビット幅を確定し得る。およびカレント検査反復に対応する目標データビット幅を、目標反復間隔に対応するデータビット幅として使用する。
【０２８３】
このとき、量子化プロセスでの計算量を単純化するために、目標反復間隔内の対応する小数点位置などの量子化パラメータも変更しないでおくことができる。つまり、目標反復間隔の各反復は同じ小数点位置を使用し、各反復での量子化パラメータの更新と調整を回避するために、確定された小数点位置やデータビット幅などの量子化パラメータのみが各検査反復で更新される。これにより、量子化プロセスでの計算量が減少され、量子化操作の効率が向上する。
【０２８４】
オプションで、目標反復間隔に対応するデータビット幅が変更されない状況を考慮して、目標反復間隔内の反復に対応する小数点位置を一定に保つことができる。具体的には、プロセッサは、カレント検査反復で量子化予定のデータおよびカレント検査反復に対応する目標データビット幅によって、カレント検査反復に対応する小数小数点位置を確定し、カレント検査反復に対応する小数小数点位置を目標反復間隔として使用することができる。対応する小数点位置については、カレント検査反復に対応する小数点位置が、目標反復間隔の反復に使用される。オプションで、カレント検査反復に対応する目標データビット幅をハイパーパラメータにすることができる。たとえば、カレント検査反復に対応する目標データのビット幅は、ユーザーがカスタマイズする。上記の式を参照することにより、カレント検査反復に対応する小数点位置を計算することができる。
【０２８５】
オプションで、目標反復間隔の反復に対応するスケーリング係数は一致している場合がある。プロセッサは、現在の検査反復の量子化予定のデータによって、現在の検査反復に対応するスケーリング係数を確定し、現在の検査反復に対応するスケーリング係数を、目標反復間隔の各反復のスケーリング係数として使用することができる。ここで、目標反復間隔の反復に対応するスケーリング係数は一致している。
【０２８６】
オプションで、目標反復間隔の反復に対応するオフセットは一致している。プロセッサは、カレント検査反復の量子化データに従ってカレント検査反復に対応するオフセットを確定し、カレント検査反復に対応するオフセットを、目標反復間隔における各反復のオフセットとして使用することができる。さらに、プロセッサは、量子化予定のデータのすべての要素の中から最小値と最大値を確定し、小数点位置やスケーリング係数などの量子化パラメータをさらに確定する場合がある。詳細については、上記の説明を参照してください。目標反復間隔の反復に対応するオフセットは一致している。
【０２８７】
たとえば、目標反復間隔は、カレント検査反復から反復の数量を計算できる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の１番目の反復である場合がある。たとえば、カレント検査反復が１００回目の反復である場合、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が３であると判断し、プロセッサは、目標反復間隔に３回の反復が含まれ、それぞれが１００回目の反復であると判断できる。２回目の反復、１０１回目の反復、１０２回目の反復。さらに、プロセッサは、量子化予定のデータに応じて１００回目の反復に対応する小数小数点位置や１００回目の反復に対応する目標データビット幅などの量子化パラメータを確定でき、１００回目の反復に対応する小数小数点位置などの量子化パラメータ対を使用できる。１００回目の反復、１０１回目の反復、および１０２回目の反復が量子化される。このように、プロセッサは、１０１回目の反復や１０２回目の反復で小数点位置などの量子化パラメータを計算する必要がないため、量子化プロセスでの計算量が減り、量子化操作の効率が向上する。
【０２８８】
オプションで、目標反復間隔は、カレント検査反復の次の反復から計算することもできる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の終了反復でもある。たとえば、カレント検査反復は１００回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔の反復間隔が３であると判断する。次に、プロセッサは、目標反復間隔に３つの反復が含まれていると判断する場合がある。これらは、それぞれ１０１回目の反復、１０２回目の反復、および１０３回目の反復である。さらに、プロセッサは、量子化予定のデータに応じて１００回目の反復に対応する小数小数点位置や１００回目の反復に対応する目標データビット幅などの量子化パラメータを確定でき、１００回目の反復に対応する小数小数点位置などの量子化パラメータ対を使用できる。１０１回目の反復、１０２回目の反復、および１０３回目の反復が量子化される。このように、プロセッサは、１０２回目の反復や１０３回目の反復で小数点位置などの量子化パラメータを計算する必要がないため、量子化プロセスでの計算量が減り、量子化操作の効率が向上する。
【０２８９】
本開示の実施形態において、同じ目標反復間隔における各反復に対応するデータビット幅および量子化パラメータは同じである、すなわち、同じ目標反復間隔における各反復に対応するデータビット幅、小数小数点位置、スケーリング係数、およびオフセットはすべてである。ニューラルネットワークのトレーニングまたは微調整プロセス中に、量子化予定のデータの量子化パラメータの頻繁な調整を回避でき、量子化プロセスでの計算量を減らすことができるため、量子化効率が向上する。さらに、データ変更の範囲に応じてトレーニングまたは微調整のさまざまな段階で量子化パラメータを動的に調整することにより、量子化の精度を保証できる。
【０２９０】
別のケースでは、ニューラルネットワーク演算の各反復に対応するデータビット幅は変更される可能性があるが、目標反復間隔の各反復のデータビット幅は変更されない。このとき、目標反復間隔での反復に対応する小数点位置などの量子化パラメータも不整合である可能性がある。プロセッサはまた、カレント検査反復に対応する目標データビット幅によって、目標反復間隔に対応するデータビット幅を確定することができ、ここで、目標反復間隔の反復に対応するデータビット幅は一致している。その後、プロセッサは、データビット幅および目標反復間隔に対応する小数点位置反復間隔によって、ニューラルネットワーク演算プロセスの小数点位置などの量子化パラメータを調整できる。任意選択で、図８Ｒに示されるように、本開示の実施形態による、量子化パラメータの調整方法における量子化パラメータの調整方法８００Ｒのフローチャートが示される。上記の動作Ｓ３００は、以下をさらに含み得る。
【０２９１】
Ｓ３１０で、カレント検査反復の量子化データに従って、目標反復間隔に対応するデータビット幅を確定する。ここで、目標反復間隔における反復に対応するデータビット幅は一致している。言い換えると、ニューラルネットワーク演算中のデータビット幅は、１つおきの目標反復間隔で更新される。オプションで、目標反復間隔に対応するデータビット幅は、カレント検査反復の目標データビット幅である場合がある。カレント検査反復の目標データビット幅については、上記の操作Ｓ１１４およびＳ１１５を参照してください。これらは、ここでは繰り返されない。
【０２９２】
たとえば、目標反復間隔は、カレント検査反復から反復の数量を計算できる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の１番目の反復である場合がある。たとえば、カレント検査の反復は１００回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が６であると判断し、プロセッサは、目標反復間隔にそれぞれ１００回目の反復〜１０５回目の反復である６回の反復が含まれると判断できる。。この時点で、プロセッサは１００回目の反復の目標データビット幅を確定でき、１００回目の反復の目標データビット幅は１０１回目から１０５回目の反復まで使用され、１０１回目から１０５回目の反復の必要はない。目標データのビット幅を計算することにより、計算量を減らし、量子化効率と計算効率を向上させる。その後、１０６回目の反復をカレント検査反復として使用でき、目標反復間隔の確定とデータビット幅の更新という上記の操作が繰り返される。
【０２９３】
オプションで、目標反復間隔は、カレント検査反復の次の反復から計算することもできる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の終了反復でもある。たとえば、カレント検査反復は１００回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔の反復間隔が６であると判断する。次に、プロセッサは、目標反復間隔に６つの反復が含まれていると判断する場合がある。これらは、それぞれ１０１番目の反復から１０６番目の反復である。このとき、プロセッサは１００回目の反復の目標データビット幅を確定でき、１００回目の反復の目標データビット幅は１０１回目から１０６回目の反復まで使用され、１０１回目から１０６回目の反復までのターゲットを計算する必要はない。データビット幅は計算量を減らし、量子化効率と計算効率を向上させる。その後、１０６回目の反復をカレント検査反復として使用でき、目標反復間隔の確定とデータビット幅の更新という上記の操作が繰り返される。
【０２９４】
Ｓ３２０で、プロセッサは、取得した小数点位置の反復間隔と目標反復間隔に対応するデータビット幅に応じて、目標反復間隔における反復に対応する小数点位置を調整し、ニューラルネットワーク演算の小数点位置などの量子化パラメータを調整する。
【０２９５】
ここで、小数点位置反復間隔には少なくとも１つの反復が含まれ、小数点位置反復間隔内の反復小数点位置は一致している。オプションで、小数点位置の反復間隔はハイパーパラメータにすることができる。たとえば、小数点位置の反復間隔はユーザー定義の入力にすることができる。
【０２９６】
オプションで、小数点位置の反復間隔は、目標反復間隔以下である。小数点位置の反復間隔が上記の目標反復間隔と同じである場合、プロセッサは、データビット幅やカレント検査反復での小数点位置などの量子化パラメータを同期的に更新できる。さらに任意選択で、目標反復間隔の反復に対応するスケーリング係数は一致していてもよい。さらに、目標反復間隔の反復に対応するオフセットは一致している。このとき、目標反復間隔の反復に対応するデータビット幅や小数点位置などの量子化パラメータがすべて同じであるため、計算量を減少し、量子化効率と計算効率を向上させることができる。特定の実装プロセスは、基本的に前述の実施形態と同じであり、上記の説明を参照することができるが、ここでは繰り返さない。
【０２９７】
小数点位置の反復間隔が上記の目標反復間隔よりも小さい場合、プロセッサは、目標反復間隔に対応する検査反復でデータビット幅と小数点位置およびその他の量子化パラメータを更新し、小数点位置反復間隔によって確定されるサブ検査反復で更新できる。小数点位置などの量子化パラメータ。データビット幅を変更しない場合は、量子化予定のデータに応じて小数点位置などの量子化パラメータを微調整できるため、同じ目標反復間隔内で小数点位置などの量子化パラメータを調整して、量子化精度をさらに向上させることができる。
【０２９８】
具体的には、プロセッサは、カレント検査反復および小数小数点位置反復間隔によって副検査反復を確定することができ、副検査反復は、小数小数点位置を調整するために使用され、副検査反復は、目標反復間隔における反復であり得る。さらに、プロセッサは、サブ検査反復で量子化予定のデータおよび目標反復間隔に対応するデータビット幅によって、目標反復間隔での反復に対応する小数点位置を調整することができる。小数小数点位置を確定する方法は、上記の式を参照することができる。
【０２９９】
たとえば、カレント検査の反復は１００回目の反復であり、目標反復間隔は６であり、目標反復間隔には１００回目の反復から１０５番目の反復までの反復が含まれる。プロセッサによって取得される小数点位置の反復間隔はＩｓ１＝３であり、小数点位置は、カレント検査の反復から３回の反復で１回調整できる。具体的には、プロセッサは、前述のサブ検査反復として１００回目の反復を使用し、１００回目の反復に対応する小数小数点位置ｓ１を計算することができる。小数小数点位置ｓ１は、１００回目の反復、１０１回目の反復、および１０２回目の反復の間で共有される。ｓ１が量子化される。その後、プロセッサは、小数点位置反復間隔Ｉｓ１に従って、前述のサブ検査反復として１０３番目の反復を使用でき、プロセッサは、１０３番目の反復に対応する量子化データおよび目標反復間隔に対応するデータビット幅ｎに従って１０３番目の反復を確定することもできる。２つの小数点位置の反復間隔に対応する小数点位置ｓ２は、前述の小数点位置ｓ２を１０３回目の反復から１０５回目の反復まで共有することによって量子化できる。本開示の実施形態において、更新前の前述の小数小数点位置ｓ１および更新後の小数小数点位置ｓ２の値は、同じであっても異なっていてもよい。さらに、プロセッサは、次の目標反復間隔、および次の目標反復間隔に対応するデータビット幅および小数小数点位置などの量子化パラメータを、１０６回目の反復で再び量子化予定のデータのデータ変動範囲によって確定することができる。
【０３００】
別の例では、カレント検査反復は１００回目の反復であり、目標反復間隔は６であり、目標反復間隔には、１０１回目の反復から１０６回目の反復までの反復が含まれる。プロセッサによって取得される小数点位置の反復間隔はＩｓ１＝３であり、小数点位置は、カレント検査の反復から３回の反復で１回調整できる。具体的には、プロセッサは、カレント検査反復で量子化予定のデータおよびカレント検査反復に対応する目標データビット幅ｎ１に従って、第１の小数点位置反復間隔に対応する小数小数点位置がｓ１であると確定し得る。１００回目の反復、１０１００回目の反復、１０２回目の反復と１０３回目の反復は、量子化のために前述の小数点位置ｓ１を共有する。その後、プロセッサは、小数点位置反復間隔Ｉｓ１に従って、前述のサブ検査反復として１０４番目の反復を使用でき、プロセッサは、１０４番目の反復に対応する量子化データおよび目標反復間隔に対応するデータビット幅ｎ１に従って、４番目の反復を確定することもできる。上記の小数小数点位置ｓ２を１０４回目の反復から１０６回目の反復まで共有することにより、２つの小数点位置の反復間隔に対応する小数点位置ｓ２を量子化することができる。本開示の実施形態において、更新前の前述の小数点位置ｓ１および更新後の小数点位置ｓ２の値は、同じであっても異なっていてもよい。さらに、プロセッサは、１０６回の反復で再び量子化予定のデータのデータ変動範囲によって、次の目標反復間隔、および次の目標反復間隔に対応するデータビット幅および小数点位置などの量子化パラメータを確定し得る。
【０３０１】
オプションで、小数点位置の反復間隔は１に等しくてもかまいません。つまり、小数点位置は反復ごとに１回更新される。オプションで、小数点位置の反復間隔は同じでも異なっていてもかまいません。たとえば、目標反復間隔に含まれる少なくとも１つの小数点位置反復間隔は、順次増やす場合がある。ここでは、一例のみを使用して、この実施形態の実施方法を説明し、開示を限定するために使用しない。
【０３０２】
オプションで、目標反復間隔の反復に対応するスケーリング係数も一致していない場合がある。さらに任意選択で、スケーリング係数は、前述の小数点位置と同期して更新され得る、すなわち、スケーリング係数に対応する反復間隔は、前述の小数点位置反復間隔に等しくあり得る。つまり、プロセッサが確定された小数点位置を更新するたびに、それに応じて確定されたスケーリング係数を更新する。
【０３０３】
オプションで、目標反復間隔の反復に対応するオフセットも不整合になる場合がある。さらに、オフセットは、前述の小数点位置と同期して更新することができる。つまり、オフセットに対応する反復間隔は、前述の小数点位置の反復間隔に等しくすることができる。つまり、プロセッサが確定された小数点位置を更新するたびに、それに応じて確定されたオフセットを更新する。もちろん、オフセットは前述の位置位置またはデータビット幅と非同期に更新することもできるが、ここでは特に制限されていない。さらに、プロセッサは、量子化予定のデータのすべての要素の中から最小値と最大値を確定し、小数点位置やスケーリング係数などの量子化パラメータをさらに確定する場合がある。詳細については、上記の説明を参照してください。
【０３０４】
別の実施形態では、プロセッサは、小数点位置の変動範囲および量子化予定のデータのデータビット幅によって、量子化予定のデータのデータ変動範囲を包括的に確定し、量子化予定のデータのデータ変動範囲によって、目標反復間隔を確定することができる。目標反復間隔を使用して、確定されたデータビット幅を更新できる。つまり、プロセッサは、目標反復間隔の検証反復ごとに、確定されたデータビット幅を更新できる。小数点位置は固定点データの精度を反映でき、データビット幅は固定点データのデータ表現範囲を反映できるため、小数点位置の変動範囲と量子化目標データのデータビット幅変化を統合することで、量子化予定のデータの精度を考慮できるようになる。データ表現範囲を満たすこともできる。任意選択で、小数点位置の変動範囲は、前述の第１の誤差によって表すことができ、データビット幅の変化は、前述の量子化誤差によって確定することができる。具体的には、図８Ｓに示すように、本開示の別の実施形態によるパラメータ調整法における目標反復間隔の確定方法８００Ｓのフローチャートが示されている。上記の方法は、以下を含み得る。
【０３０５】
Ｓ４００で、第１の誤差を取得する。第１の誤差は小数点位置の変動範囲を表すことができ、小数点位置の変動範囲は量子化予定のデータのデータ変動範囲を表すことができる。具体的には、第１の誤差の計算方法は上記の操作Ｓ１１０を参照できる。ここでは説明を反復ない。
【０３０６】
Ｓ５００で、第２の誤差を取得する。ここで、第２の誤差は、データビット幅の変化を表すためである。
【０３０７】
任意選択で、前述の第２の誤差は、量子化誤差によって確定され得、第２の誤差は、前述の量子化誤差と正の相関がある。具体的には、図８Ｔに示すように、本開示の別の実施形態によるパラメータ調整法における目標反復間隔の確定方法８００Ｔのフローチャートが示され、上記の動作Ｓ５００は、以下を含み得る。
【０３０８】
Ｓ５１０で、カレント検査反復の量子化予定のデータとカレント検査反復の量子化データに従って量子化誤差を確定する。カレント検査反復の量子化データは、初期データビット幅によってカレント検査反復の量子化データを比較する。データは量子化される。具体的な量子化誤差の確定方法については、上記の操作Ｓ１１４の説明を参照してください。ここでは繰り返さないことにする。
【０３０９】
Ｓ５２０で、量子化誤差に従って第２の誤差を確定する。ここで、第２の誤差は量子化誤差と正の相関がある。
【０３１０】
具体的には、第２の誤差は次の式に従って計算できる。
ｄｉｆｆｕｐｄａｔｅ２＝θ＊ｄｉｆｆ２ｂｉｔ              式（４４）
【０３１１】
ここで、ｄｉｆｆｕｐｄａｔｅ２は上記の第２の誤差を表し、ｄｉｆｆｂｉｔは上記の量子化誤差を表し、θはハイパーパラメータにすることができる。
【０３１２】
図８Ｓに戻ると、Ｓ６００において、目標反復間隔は、第２の誤差および第１の誤差によって確定される。
【０３１３】
具体的には、プロセッサは、第１の誤差および第２の誤差によって目標誤差を計算し、目標誤差に従って目標反復間隔を確定することができる。オプションで、第１の誤差と第２の誤差に対して加重平均計算を実行することにより、目標誤差を取得できる。たとえば、ｔａｒｇｅｔ  ｅｒｒｏｒ＝Ｋ＊ｆｉｒｓｔ  ｅｒｒｏｒ＋（１−Ｋ）＊ｓｅｃｏｎｄ  ｅｒｒｏｒ、ここで、Ｋはハイパーパラメータである。その後、プロセッサは、目標誤差に従って目標反復間隔を確定することができ、目標反復間隔は、目標誤差と負の相関がある。つまり、目標誤差が大きいほど、目標反復間隔は短くなる。
【０３１４】
オプションで、第１の誤差と第２の誤差の最大値に従って目標誤差を確定することもでき、第１の誤差または第２の誤差の重みは０である。具体的には、図８Ｔに示されるように、前述の動作Ｓ６００は、以下を含み得る。
【０３１５】
Ｓ６１０で、第１の誤差と第２の誤差うちの最大値を目標誤差とする。
【０３１６】
具体的には、プロセッサは、第１の誤差ｄｉｆｆｕｐｄａｔｅ１と第２の誤差ｄｉｆｆｕｐｄａｔｅ２の大きさを比較し、第１の誤差ｄｉｆｆｕｐｄａｔｅ１が第２の誤差ｄｉｆｆｕｐｄａｔｅ２より大きい場合、目標誤差は第１の誤差ｄｉｆｆｕｐｄａｔｅ１と等しくなる。第１の誤差ｄｉｆｆｕｐｄａｔｅ１が第２の誤差よりも小さい場合、目標誤差は第２の誤差ｄｉｆｆｕｐｄａｔｅ２と等しくなる。第１の誤差ｄｉｆｆｕｐｄａｔｅ１が第２の誤差と等しい場合、目標誤差は第１の誤差ｄｉｆｆｕｐｄａｔｅ１または第２の誤差ｄｉｆｆｕｐｄａｔｅ２である可能性がある。つまり、目標誤差ｄｉｆｆｕｐｄａｔｅは、次の式に従って確定できる。
ｄｉｆｆｕｐｄａｔｅ＝ｍａｘ（ｄｉｆｆｕｐｄａｔｅ１，  ｄｉｆｆｕｐｄａｔｅ２）      式（４５）
【０３１７】
ここで、ｄｉｆｆｕｐｄａｔｅは目標誤差を参照し、ｄｉｆｆｕｐｄａｔｅ１は第１の誤差を参照し、ｄｉｆｆｕｐｄａｔｅ２は第２の誤差を参照する。
【０３１８】
Ｓ６２０で、目標誤差に従って目標反復間隔を確定する。ここで、目標誤差は目標反復間隔と負の相関がある。具体的には、目標反復間隔は次のように確定できる。
【０３１９】
目標反復間隔は、次の式に従って計算できる。
Ｉ＝β／ｄｉｆｆｕｐｄａｔｅ１−γ                    式（４６）
【０３２０】
ここで、Ｉは目標反復間隔を表し、ｄｉｆｆｕｐｄａｔｅは上記の目標誤差を表し、δとγはハイパーパラメータにすることができる。
【０３２１】
任意選択で、前述の実施形態では、データビット幅は、ニューラルネットワーク演算において可変であり、データビット幅の変化傾向は、第２の誤差によって測定することができる。この場合、図８Ｔに示すように、目標反復間隔を確定した後、プロセッサは、動作Ｓ６３０を実行して、目標反復間隔の反復に対応するデータビット幅を確定することができる。ここで、データビット幅は、目標反復間隔の反復に対応する。一致性がある。具体的には、プロセッサは、カレント検査反復で量子化予定のデータによって、目標反復間隔に対応するデータビット幅を確定することができる。言い換えると、ニューラルネットワーク演算中のデータビット幅は、１つおきの目標反復間隔で更新される。オプションで、目標反復間隔に対応するデータビット幅は、カレント検査反復の目標データビット幅である場合がある。カレント検査反復の目標データビット幅については、上記の操作Ｓ１１４およびＳ１１５を参照してください。これらは、ここでは繰り返されない。
【０３２２】
たとえば、目標反復間隔は、カレント検査反復から反復の数量を計算できる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の１番目の反復である場合がある。たとえば、カレント検査の反復は１００回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が６であると判断し、プロセッサは、目標反復間隔にそれぞれ１００回目の反復〜１０５回目の反復である６回の反復が含まれると判断できる。この時点で、プロセッサは１００回目の反復の目標データビット幅を確定でき、１００回目の反復の目標データビット幅は１０１回目から１０５回目の反復まで使用され、１０１回目から１０５回目の反復の必要はない。目標データのビット幅を計算することにより、計算量を減らし、量子化効率と計算効率を向上させる。その後、１０６回目の反復をカレント検査反復として使用でき、目標反復間隔の確定とデータビット幅の更新という上記の操作が繰り返される。
【０３２３】
オプションで、目標反復間隔は、カレント検査反復の次の反復から計算することもできる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の終了反復でもある。たとえば、カレント検査反復は１００回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔の反復間隔が６であると判断する。次に、プロセッサは、目標反復間隔に６つの反復が含まれていると判断する場合がある。これらは、それぞれ１０１番目の反復から１０６番目の反復である。このとき、プロセッサは１００回目の反復の目標データビット幅を確定でき、１００回目の反復の目標データビット幅は１０１回目から１０６回目の反復まで使用され、１０１回目から１０６回目の反復までのターゲットを計算する必要はない。データビット幅は計算量を減らし、量子化効率と計算効率を向上させる。その後、１０６回目の反復をカレント検査反復として使用でき、目標反復間隔の確定とデータビット幅の更新という上記の操作が繰り返される。
【０３２４】
さらに、プロセッサは、検査反復時に目標反復間隔の量子化パラメータを確定して、目標反復間隔によってニューラルネットワーク動作の量子化パラメータを調整することもできる。つまり、ニューラルネットワーク演算の小数点位置などの量子化パラメータをデータビット幅と同期して更新することができる。
【０３２５】
ある場合には、目標反復間隔の反復に対応する量子化パラメータが一致している可能性がある。任意選択で、プロセッサは、カレント検査反復で量子化予定のデータおよびカレント検査反復に対応する目標データビット幅によってカレント検査反復に対応する小数点位置を確定し、カレント検査反復に対応する小数点位置を標的反復として使用することができる。間隔に対応する小数点位置。目標反復間隔の反復に対応する小数点位置は同じである。つまり、目標反復間隔の各反復は、カレント検査反復の小数点位置などの量子化パラメータを使用し、各反復での量子化パラメータの更新と調整を回避することで、量子化プロセスでの計算量を減らし、量子化を改善する。運用効率。
【０３２６】
オプションで、目標反復間隔の反復に対応するスケーリング係数は一致している場合がある。プロセッサは、現在の検査反復の量子化予定のデータによって、現在の検査反復に対応するスケーリング係数を確定し、現在の検査反復に対応するスケーリング係数を、目標反復間隔の各反復のスケーリング係数として使用することができる。ここで、目標反復間隔の反復に対応するスケーリング係数は一致している。
【０３２７】
オプションで、目標反復間隔の反復に対応するオフセットは一致している。プロセッサは、カレント検査反復の量子化データに従ってカレント検査反復に対応するオフセットを確定し、カレント検査反復に対応するオフセットを、目標反復間隔における各反復のオフセットとして使用することができる。さらに、プロセッサは、量子化予定のデータのすべての要素の中から最小値と最大値を確定し、小数点位置やスケーリング係数などの量子化パラメータをさらに確定する場合がある。詳細については、上記の説明を参照してください。目標反復間隔の反復に対応するオフセットは一致している。
【０３２８】
たとえば、目標反復間隔は、カレント検査反復から反復の数量を計算できる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の１番目の反復である場合がある。たとえば、カレント検査反復が１００回目の反復である場合、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が３であると判断し、プロセッサは、目標反復間隔に３回の反復が含まれ、それぞれが１００回目の反復であると判断できる。２回目の反復、１０１回目の反復、１０２回目の反復。さらに、プロセッサは、量子化予定のデータに応じて１００回目の反復に対応する小数点位置や１００回目の反復に対応する目標データビット幅などの量子化パラメータを確定でき、１００回目の反復に対応する小数点位置などの量子化パラメータ対を使用できる。１００回目の反復、１０１回目の反復、および１０２回目の反復が量子化される。このように、プロセッサは、１０１回目の反復や１０２回目の反復で小数点位置などの量子化パラメータを計算する必要がないため、量子化プロセスでの計算量が減り、量子化操作の効率が向上する。
【０３２９】
オプションで、目標反復間隔は、カレント検査反復の次の反復から計算することもできる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の終了反復でもある。たとえば、カレント検査反復は１００回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔の反復間隔が３であると判断する。次に、プロセッサは、目標反復間隔に３つの反復が含まれていると判断する場合がある。これらは、それぞれ１０１回目の反復、１０２回目の反復、および１０３回目の反復である。さらに、プロセッサは、量子化予定のデータに応じて１００回目の反復に対応する小数点位置や１００回目の反復に対応する目標データビット幅などの量子化パラメータを確定でき、１００回目の反復に対応する小数点位置などの量子化パラメータ対を使用できる。１０１回目の反復、１０２回目の反復、および１０３回目の反復が量子化される。このように、プロセッサは、１０２回目の反復や１０３回目の反復で小数点位置などの量子化パラメータを計算する必要がないため、量子化プロセスでの計算量が減り、量子化操作の効率が向上する。
【０３３０】
本開示の実施形態において、同じ目標反復間隔における各反復に対応するデータビット幅および量子化パラメータは同じである、すなわち、同じ目標反復間隔における各反復に対応するデータビット幅、小数点位置、スケーリング係数、およびオフセットはすべてである。ニューラルネットワークのトレーニングまたは微調整プロセス中に、量子化予定のデータの量子化パラメータの頻繁な調整を回避でき、量子化プロセスでの計算量を減らすことができるため、量子化効率が向上する。さらに、データ変更の範囲に応じてトレーニングまたは微調整のさまざまな段階で量子化パラメータを動的に調整することにより、量子化の精度を保証できる。
【０３３１】
別の場合において、プロセッサはまた、ニューラルネットワーク操作における量子化パラメータを調整するために、小数点位置などの量子化パラメータに対応する小数点位置反復間隔によって、目標反復間隔における量子化パラメータを確定し得る。つまり、ニューラルネットワーク演算の小数点位置などの量子化パラメータは、データビット幅と非同期に更新できる。プロセッサは、目標反復間隔の検査反復で、データビット幅や小数点位置などの量子化パラメータを更新できる。また、プロセッサは、小数点位置によって反復することもできる。間隔は、目標反復間隔の反復に対応する小数点位置を個別に更新する。
【０３３２】
具体的には、プロセッサは、カレント検査反復に対応する目標データビット幅によって、目標反復間隔に対応するデータビット幅を確定することもでき、ここで、目標反復間隔の反復に対応するデータビット幅は一致している。その後、プロセッサは、データビット幅および目標反復間隔に対応する小数点位置反復間隔によって、ニューラルネットワーク演算プロセスの小数点位置などの量子化パラメータを調整できる。すなわち、図８Ｔに示すように、目標反復間隔に対応するデータビット幅を確定した後、プロセッサは、動作Ｓ６４０を実行して、取得した小数点位置反復間隔および目標反復間隔に対応するデータビット幅によって目標を調整することもできる。反復間隔で対応する小数点位置を反復して、ニューラルネットワーク演算での小数点位置を調整する。ここで、小数点位置反復間隔には少なくとも１つの反復が含まれ、小数点位置反復間隔内の反復小数点位置は一致している。オプションで、小数点位置の反復間隔はハイパーパラメータにすることができる。たとえば、小数点位置の反復間隔はユーザー定義の入力にすることができる。
【０３３３】
オプションで、小数点位置の反復間隔は、目標反復間隔以下である。小数点位置の反復間隔が上記の目標反復間隔と同じである場合、プロセッサは、データビット幅やカレント検査反復での小数点位置などの量子化パラメータを同期的に更新できる。さらに任意選択で、目標反復間隔の反復に対応するスケーリング係数は一致していてもよい。さらに、目標反復間隔の反復に対応するオフセットは一致している。このとき、目標反復間隔の反復に対応するデータビット幅や小数点位置などの量子化パラメータがすべて同じであるため、計算量を減少し、量子化効率と計算効率を向上させることができる。特定の実装プロセスは、基本的に前述の実施形態と同じであり、上記の説明を参照することができるが、ここでは繰り返さない。
【０３３４】
小数点位置の反復間隔が上記の目標反復間隔よりも小さい場合、プロセッサは、目標反復間隔に対応する検査反復でデータビット幅と小数点位置およびその他の量子化パラメータを更新し、小数点位置反復間隔によって確定されるサブ検査反復で更新できる。小数点位置などの量子化パラメータ。データビット幅を変更しない場合は、量子化予定のデータに応じて小数点位置などの量子化パラメータを微調整できるため、同じ目標反復間隔内で小数点位置などの量子化パラメータを調整して、量子化精度をさらに向上させることができる。
【０３３５】
具体的には、プロセッサは、カレント検査反復および小数点位置反復間隔によって副検査反復を確定することができ、副検査反復は、小数点位置を調整するために使用され、副検査反復は、目標反復間隔における反復であり得る。さらに、プロセッサは、サブ検査反復で量子化予定のデータおよび目標反復間隔に対応するデータビット幅によって、目標反復間隔での反復に対応する小数点位置を調整することができる。小数点位置を確定する方法は、上記の式を参照することができる。
【０３３６】
たとえば、カレント検査の反復は１００回目の反復であり、目標反復間隔は６であり、目標反復間隔には１００回目の反復から１０５番目の反復までの反復が含まれる。プロセッサによって取得される小数点位置の反復間隔はＩｓ１＝３であり、小数点位置は、カレント検査の反復から３回の反復で１回調整できる。具体的には、プロセッサは、前述のサブ検査反復として１００回目の反復を使用し、１００回目の反復に対応する小数点位置ｓ１を計算することができる。小数点位置ｓ１は、１００回目の反復、１０１回目の反復、および１０２回目の反復の間で共有される。ｓ１が量子化される。その後、プロセッサは、小数点位置反復間隔Ｉｓ１に従って、前述のサブ検査反復として１０３番目の反復を使用でき、プロセッサは、１０３番目の反復に対応する量子化データおよび目標反復間隔に対応するデータビット幅ｎに従って１０３番目の反復を確定することもできる。２つの小数点位置の反復間隔に対応する小数点位置ｓ２は、前述の小数点位置ｓ２を１０３回目の反復から１０５回目の反復まで共有することによって量子化できる。本開示の実施形態において、更新前の前述の小数点位置ｓ１および更新後の小数点位置ｓ２の値は、同じであっても異なっていてもよい。さらに、プロセッサは、次の目標反復間隔、および次の目標反復間隔に対応するデータビット幅および小数点位置などの量子化パラメータを、１０６回目の反復で再び量子化予定のデータのデータ変動範囲によって確定することができる。
【０３３７】
別の例では、カレント検査反復は１００回目の反復であり、目標反復間隔は６であり、目標反復間隔には、１０１回目の反復から１０６回目の反復までの反復が含まれる。プロセッサによって取得される小数点位置の反復間隔はＩｓ１＝３であり、小数点位置は、カレント検査の反復から３回の反復で１回調整できる。具体的には、プロセッサは、カレント検査反復で量子化予定のデータおよびカレント検査反復に対応する目標データビット幅ｎ１に従って、第１の小数点位置反復間隔に対応する小数点位置がｓ１であると確定し得る。１００回目の反復、１０２回目の反復と１０３回目の反復は、量子化のために前述の小数点位置ｓ１を共有する。その後、プロセッサは、小数点位置反復間隔Ｉｓ１に従って、前述のサブ検査反復として１０４番目の反復を使用でき、プロセッサは、１０４番目の反復に対応する量子化データおよび目標反復間隔に対応するデータビット幅ｎ１に従って、４番目の反復を確定することもできる。上記の小数点位置ｓ２を１０４回目の反復から１０６回目の反復まで共有することにより、２つの小数点位置の反復間隔に対応する小数点位置ｓ２を量子化することができる。本開示の実施形態において、更新前の前述の小数点位置ｓ１および更新後の小数点位置ｓ２の値は、同じであっても異なっていてもよい。さらに、プロセッサは、次の目標反復間隔、および次の目標反復間隔に対応するデータビット幅および小数点位置などの量子化パラメータを、１０６回目の反復で再び量子化予定のデータのデータ変動範囲によって確定することができる。
【０３３８】
オプションで、小数点位置の反復間隔は１に等しくてもかまいません。つまり、小数点位置は反復ごとに１回更新される。オプションで、小数点位置の反復間隔は同じでも異なっていてもかまいません。たとえば、目標反復間隔に含まれる少なくとも１つの小数点位置反復間隔は、順次増やす場合がある。ここでは、一例のみを使用して、この実施形態の実施方法を説明し、開示を限定するために使用しない。
【０３３９】
オプションで、目標反復間隔の反復に対応するスケーリング係数も一致しいない場合がある。さらに任意選択で、スケーリング係数は、前述の小数点位置と同期して更新することができ、すなわち、スケーリング係数に対応する反復間隔は、前述の小数点位置反復間隔に等しくすることができる。つまり、プロセッサが確定された小数点位置を更新するたびに、それに応じて確定されたスケーリング係数を更新する。
【０３４０】
オプションで、目標反復間隔の反復に対応するオフセットも不整合になる場合がある。さらに、オフセットは、前述の小数点位置と同期して更新することができる。つまり、オフセットに対応する反復間隔は、前述の小数点位置の反復間隔に等しくすることができる。つまり、プロセッサが確定された小数点位置を更新するたびに、それに応じて確定されたオフセットを更新する。もちろん、オフセットは前述の位置位置またはデータビット幅と非同期に更新することもできるが、ここでは特に制限されていない。さらに、プロセッサは、量子化予定のデータのすべての要素の中から最小値と最大値を確定し、小数点位置やスケーリング係数などの量子化パラメータをさらに確定する場合がある。詳細については、上記の説明を参照してください。
【０３４１】
他の任意選択の実施形態では、小数点位置、スケーリング係数、およびオフセットの３つの量子化パラメータも非同期であり得る、すなわち、小数点位置反復間隔、スケーリング係数反復間隔、およびオフセット反復間隔のうちの１つ、または３つすべてが異なる。ここで、小数点位置の反復間隔とスケーリング係数の反復間隔は、両方とも目標反復間隔以下である。オフセット反復間隔は、目標反復間隔よりも小さくすることができる。オフセットは、量子化予定のデータの分布にのみ関連するため、代替の実施形態では、オフセットは、目標反復間隔と完全に非同期にすることもでき、すなわち、オフセット反復間隔は、目標反復間隔よりも大きくすることもできる。
【０３４２】
任意の実施形態において、上記の方法は、ニューラルネットワークのトレーニングまたは微調整プロセスにおいて使用され得、ニューラルネットワークの微調整またはトレーニングプロセスに含まれる操作データの量子化パラメータの調整を実現し、ニューラルネットワークの演算プロセスを改善する。に含まれる算術データの量子化精度と効率。動作データは、ニューロンデータ、重みデータ、または勾配データのうちの少なくとも１つであり得る。図８Ｌに示すように、量子化予定のデータのデータ変化曲線によれば、トレーニングや微調整の初期段階では、各反復で量子化予定のデータの差が比較的大きく、量子化予定のデータのデータ変動範囲が比較的厳しいことがわかる。目標反復間隔の値を小さくすることができ、目標反復間隔の量子化パラメータを時間内に更新して、量子化の精度を確保することができる。トレーニングや微調整の中間段階では、量子化予定のデータのデータ変動範囲が徐々にフラットになる傾向があるが、このとき、目標反復間隔の値を大きくして、量子化パラメータの頻繁な更新を回避し、量子化効率と計算効率を向上させることができる。トレーニングまたは微調整の後の段階では、ニューラルネットワークのトレーニングまたは微調整は安定する傾向がある（つまり、ニューラルネットワークの正の演算結果がプリセット参照値に近づくと、ニューラルネットワークのトレーニングまたは微調整は安定する傾向がある）、このとき、目標反復間隔の値を増やし続けて、量子化効率と計算効率をさらに向上させることができる。上記のデータ変化の傾向に基づいて、さまざまな方法を使用して、ニューラルネットワークのトレーニングまたは微調整のさまざまな段階で目標反復間隔を確定し、量子化の精度を確保することに基づいて量子化効率と計算効率を向上させることができる。
【０３４３】
具体的には、図８Ｕに示すように、本開示の別の実施形態による量子化パラメータの調整方法８００Ｕのフローチャートが示されている。この方法がニューラルネットワークのトレーニングまたは微調整プロセスで使用される場合、この方法には以下も含まれる場合がある。
Ｓ７１０で、プロセッサは、カレント反復が第１のプリセット反復より大きいかどうかを判断する。
【０３４４】
ここで、カレント反復は、プロセッサによって現在実行されている反復演算を指する。オプションで、第１のプリセット反復はハイパーパラメータであり得、第１のプリセット反復は、量子化予定のデータのデータ変動曲線に従って確定され得、そして第１のプリセット反復はまた、ユーザー定義設定であり得る。オプションで、第１のプリセット反復は、１つのトレーニング周期（エポック）に含まれる反復の総数より少なくてもかまいません。１つのトレーニング周期は、データ集合内で量子化されるすべてのデータが１つの順方向演算と１つの逆方向演算を完了することを意味する。
【０３４５】
カレント反復が第１のプリセット反復以下である場合、プロセッサは操作Ｓ７１１を実行して、第１のプリセット反復間隔を目標反復間隔として設定し、第１のプリセット反復間隔によって量子化パラメータを調整することができる。
【０３４６】
オプションで、プロセッサは、ユーザーによって入力された第１のプリセット反復間隔を読み取り、第１のプリセット反復間隔と第１のプリセット反復間隔との間の対応に従って、第１のプリセット反復間隔を確定することができる。オプションで、第１のプリセット反復間隔をハイパーパラメータにすることができ、第１のプリセット反復間隔をユーザーが設定することもできる。このとき、プロセッサは、ユーザーが入力した第１のプリセット反復と第１のプリセット反復間隔を直接読み取り、第１のプリセット反復間隔によってニューラルネットワーク演算の量子化パラメータを更新できる。本開示の実施形態では、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔を確定する必要はない。
【０３４７】
たとえば、ユーザーが入力した第１のプリセット反復が１００回目の反復で、第１のプリセット反復間隔が５の場合、カレント反復が１００回目の反復以下の場合、量子化パラメータは第１のプリセット反復間隔によって更新できる。つまり、プロセッサは、１番目の反復から１００回目の反復までのニューラルネットワークのトレーニングまたは微調整中に、量子化パラメータが５回の反復ごとに更新されることを確定できる。具体的には、プロセッサは、１番目の反復に対応するデータビット幅ｎ１および小数点位置ｓ１などの量子化パラメータを確定し、データビット幅ｎ１および小数点位置ｓ１を使用して、第１の反復から第５の反復までのデータを分析し得る。量子化予定のデータは量子化される。つまり、１番目の反復から５番目の反復まで同じ量子化パラメータを使用できる。その後、プロセッサは、６回目の反復に対応するデータビット幅ｎ２や小数点位置ｓ２などの量子化パラメータを確定し、６回目の反復から１０回目の反復までの待機時間にデータビット幅ｎ２や小数点位置ｓ２などの量子化パラメータを使用できる。量子化後のデータは量子化される。つまり、６番目の反復から１０番目の反復まで同じ量子化パラメータを使用できる。同様に、プロセッサは、１００回目の反復が完了するまで、上記の量子化方法に従うことができる。各反復間隔でのデータビット幅や小数点位置などの量子化パラメータを確定する方法は、上記の説明を参照することができ、ここでは繰り返さない。
【０３４８】
別の例として、ユーザーが入力した第１のプリセット反復が１００回目の反復であり、第１のプリセット反復間隔が１の場合、カレント反復が１００回目の反復以下の場合、量子化パラメータは第１のプリセット反復間隔によって更新できる。つまり、プロセッサは、ニューラルネットワークのトレーニングまたは微調整の１番目の反復から１００回目の反復までの各反復で量子化パラメータが更新されることを確定できる。具体的には、プロセッサは、１番目の反復に対応するデータビット幅ｎ１および小数点位置ｓ１などの量子化パラメータを確定し、データビット幅ｎ１および小数点位置ｓ１を使用して、１番目の反復で量子化予定のデータを量子化することができる。その後、プロセッサは、２回目の反復に対応するデータビット幅ｎ２や小数点位置ｓ２などの量子化パラメータを確定し、データビット幅ｎ２と小数点位置ｓ２を使用して、２回目の反復で量子化予定のデータを量子化して、……。同様に、プロセッサは、データビット幅ｎ１００や１００回目の反復の小数点位置ｓ１００などの量子化パラメータを確定し、データビット幅ｎ１００と小数点位置ｓ１００を使用して、１００回目の反復で量子化予定のデータを量子化できる。各反復間隔でのデータビット幅や小数点位置などの量子化パラメータを確定する方法は、上記の説明を参照することができ、ここでは繰り返さない。
【０３４９】
上記は、データビット幅と量子化パラメータの同期更新の一例にすぎない。他のオプションの実施形態では、各目標反復間隔において、プロセッサは、小数点位置の変動範囲によって、小数点位置の反復間隔を確定することもできる。および小数点位置の反復間隔によって、小数点位置などの量子化パラメータを更新する。
【０３５０】
オプションで、カレント反復が第１のプリセット反復よりも大きい場合、ニューラルネットワークのトレーニングまたは微調整が中期段階にあることを示すことができる。この時点で、履歴反復で量子化予定のデータのデータ変動範囲を取得し、量子化予定のデータのデータを取得できる。変動の範囲によって目標反復間隔が決まり、目標反復間隔は上記の第１のプリセット反復間隔よりも大きくなる可能性があるため、量子化パラメータの更新回数が減り、量子化効率と計算効率が向上する。具体的には、カレント反復が第１のプリセット反復よりも大きい場合、プロセッサは操作Ｓ７１３を実行して、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔によって量子化パラメータを調整することができる。
【０３５１】
上記の例を続けると、ユーザーが入力した第１のプリセット反復は１００回目の反復であり、第１のプリセット反復間隔は１である。カレント反復が１００回目の反復以下の場合、第１のプリセット反復間隔によって量子化を更新できる。パラメータ。つまり、プロセッサは、ニューラルネットワークのトレーニングまたは微調整の１番目の反復から１００回目の反復までの各反復で量子化パラメータが更新されることを確定でき、特定の実装は上記の説明を参照できる。カレント反復が１００回目の反復より大きい場合、プロセッサは、カレント反復で量子化予定のデータと前の履歴反復で量子化予定のデータ、および量子化予定のデータのデータ変動範囲によって、量子化予定のデータのデータ変動範囲を確定できる。目標反復間隔を確定する。具体的には、カレント反復が１００回目の反復より大きい場合、プロセッサは、カレント反復に対応するデータビット幅を適応的に調整し、カレント反復に対応する目標データビット幅を取得し、カレント反復に対応する目標データビット幅を変更できる。目標反復間隔のデータビット幅として、目標反復間隔の反復に対応するデータビット幅は一致している。同時に、プロセッサは、カレント反復に対応する目標データビット幅および量子化予定のデータによってカレント反復に対応する小数点位置を確定し、カレント反復に対応する小数点位置に従って第１の誤差を確定し得る。プロセッサはまた、カレント反復に対応して量子化予定のデータによって量子化誤差を確定し、量子化誤差に従って第２の誤差を確定することができる。その後、プロセッサは、第１の誤差および第２の誤差によって目標反復間隔を確定することができ、目標反復間隔は、前述の第１のプリセット反復間隔よりも大きくてもよい。さらに、プロセッサは、目標反復間隔における小数点位置またはスケーリング係数などの量子化パラメータを確定することができ、特定の確定方法は、上記の説明を参照することができる。
【０３５２】
たとえば、カレント反復が１００回目の反復である場合、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が３であると判断し、プロセッサは、目標反復間隔に３回の反復が含まれ、それぞれが１００回目の反復、１０１回目の反復、および反復１０２回目の反復であると判断できる。反プロセッサはまた、１００回目の反復で量子化予定のデータによって量子化誤差を確定し、量子化誤差に従って１００回目の反復に対応する第２の誤差および目標データビット幅を確定し、目標反復間隔に対応するデータとして目標データビット幅を使用し得る。ビット幅。１００回目の反復、１０１回目の反復、および１０２回目の反復に対応するデータビット幅はすべて、１００回目の反復に対応する目標データビット幅である。プロセッサはまた、１００回目の反復で量子化予定のデータおよび１００回目の反復に対応する目標データビット幅によって、１００回目の反復に対応する小数点位置およびスケーリング係数などの量子化パラメータを確定し得る。その後、１００回目の反復に対応する量子化パラメータを使用して、１００回目の反復、１０１回目の反復、および１０２回目の反復を量子化する。
【０３５３】
さらに、図８Ｖに示されるように、本開示のさらに別の実施形態による、量子化パラメータの調整方法８００Ｖのフローチャートが示され、上記の方法は、以下をさらに含み得る。
【０３５４】
カレント反復が第１のプリセット反復よりも大きい場合、プロセッサはさらに操作Ｓ７１２を実行することができる。すなわち、プロセッサは、カレント反復が第２のプリセット反復よりも大きいかどうかをさらに確定することができる。ここで、第２のプリセット反復は第１のプリセット反復よりも大きく、第２のプリセット反復間隔は第１のプリセット反復間隔よりも大きくなる。オプションで、前述の第２のプリセット反復はハイパーパラメータであり、第２のプリセット反復は少なくとも１つのトレーニング周期の反復の総数より大きくてもよい。オプションで、第２のプリセット反復は、量子化予定のデータのデータ変動曲線に従って確定できる。オプションで、第２のプリセット反復もユーザーがカスタマイズできる。
【０３５５】
カレント反復が第２のプリセット反復以上である場合、プロセッサは操作Ｓ７１４を実行し、第２のプリセット反復間隔を目標反復間隔として使用し、第２のプリセット反復間隔によって第２のプリセット反復間隔を調整することができる。ニューラルネットワークの量子化プロセスのパラメータ。カレント反復が第１のプリセット反復よりも大きく、カレント反復が第２のプリセット反復よりも小さい場合、プロセッサは上記の操作Ｓ７１３を実行し、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、そして目標反復間隔は、量子化パラメータを調整する。
【０３５６】
オプションで、プロセッサは、ユーザーが設定した第２のプリセット反復を読み取り、第２のプリセット反復と第２のプリセット反復間隔（第２のプリセット反復）の間の対応関係に従って、第２のプリセット反復間隔を確定できる。間隔は、最初にプリセット反復間隔よりも大きくなっている。オプションで、ニューラルネットワークの収束度がプリセット条件を満たす場合、カレント反復が第２のプリセット反復以上であると判断される。例えば、カレント反復の順方向演算結果がプリセット基準値に近づくと、ニューラルネットワークの収束度がプリセット条件を満たしていると判断できる。このとき、カレント反復が２回目のプリセット反復以上であると判断できる。または、カレント反復に対応する損失値がプリセットしきい値以下の場合、ニューラルネットワークの収束度がプリセット条件を満たすと判断できる。
【０３５７】
任意選択で、前述の第２のプリセット反復間隔はハイパーパラメータであり得、第２のプリセット反復間隔は、少なくとも１つのトレーニング周期の反復の総数以上であり得る。オプションで、第２のプリセット反復間隔はユーザーがカスタマイズできる。プロセッサは、ユーザーが入力した第２のプリセット反復と第２のプリセット反復間隔を直接読み取り、第２のプリセット反復間隔によってニューラルネットワーク演算の量子化パラメータを更新できる。たとえば、第２のプリセット反復間隔は、１つのトレーニング周期の反復の総数に等しくなる場合がある。つまり、量子化パラメータは、トレーニング周期（エポック）ごとに１回更新される。
【０３５８】
さらに、上記の方法には以下も含まれる。
【０３５９】
カレント反復が第２のプリセット反復以上である場合、プロセッサは、各検査反復で現在のデータビット幅を調整する必要があるかどうかを判断することもできる。現在のデータビット幅を調整する必要がある場合、プロセッサは上記の操作Ｓ７１４から操作Ｓ７１３に切り替えてデータビット幅を再確定し、データビット幅が量子化予定のデータの要件を満たすことができるようにすることができる。
【０３６０】
具体的には、プロセッサは、前述の第２の誤差によってデータビット幅を調整する必要があるかどうかを確定することができる。プロセッサはまた、前述の操作Ｓ７１５を実行して、第２の誤差がプリセット誤差値より大きいかどうかを確定し得、カレント反復が第２のプリセット反復以上であり、第２の誤差がプリセット誤差値より大きい場合、スイッチして操作を実行する。Ｓ７１３：量子化予定のデータのデータ変動範囲によって反復間隔を確定し、反復間隔によってデータビット幅を再確定する。カレント反復が第２のプリセット反復以上であり、第２の誤差がプリセット誤差値以下の場合、操作Ｓ７１４の実行を続行し、第２のプリセット反復間隔を目標反復間隔として使用する。プリセット反復間隔は、ニューラルネットワークの量子化プロセスのパラメータを調整する。ここで、プリセット誤差値は、量子化誤差に対応するプリセットしきい値に従って確定される場合がある．第２の誤差がプリセット誤差値よりも大きい場合は、データビット幅をさらに調整する必要がある可能性がある。プロセッサは、量子化予定のデータに基づいている場合がある。のデータ変動範囲が反復間隔を確定し、反復間隔によってデータビット幅を再確定する。
【０３６１】
たとえば、２番目にプリセット反復間隔は、１つのトレーニング周期の反復の総数である。カレント反復が第２のプリセット反復以上の場合、プロセッサは第２のプリセット反復間隔によって量子化パラメータを更新できる。つまり、トレーニング周期（エポック）ごとに１回量子化パラメータを更新する。このとき、各トレーニング周期の１番目の反復は検査反復と見なされる。各トレーニング周期の１番目の反復で、プロセッサは検査反復で量子化予定のデータによって量子化誤差を確定し、量子化誤差に従って第２の誤差を確定できる。そして、次の式に従って、第２の誤差がプリセット誤差値より大きいかどうかを判別する。
ｄｉｆｆｕｐｄａｔｅ２＝θ＊ｄｉｆｆ２ｂｉｔ＞Ｔ
【０３６２】
ここで、ｄｉｆｆｕｐｄａｔｅ２は第２の誤差を表し、ｄｉｆｆｂｉｔは量子化誤差を表し、θはハイパーパラメータを表し、Ｔはプリセット誤差値を表す。オプションで、プリセット誤差値は、第１のプリセットしきい値をハイパーパラメータで割った値に等しくなる。もちろん、プリセット誤差値もハイパーパラメータである可能性がある。たとえば、プリセット誤差値は次の式に従って計算できる。Ｔ＝ｔｈ／１０、ここでｔｈは第１のプリセットしきい値を表し、ハイパーパラメータの値は１０である。
【０３６３】
第２の誤差ｄｉｆｆｕｐｄａｔｅ２がプリセット誤差値Ｔより大きい場合は、データビット幅がプリセット要件を満たしていない可能性があることを意味する。この時点で、第２のプリセット反復間隔は量子化パラメータの更新に使用できなくなり、プロセッサは量子化予定のデータを追跡する可能性がある。変動範囲によって、データビット幅がプリセット要件を確実に満たすように、目標反復間隔が決まる。つまり、第２の誤差ｄｉｆｆｕｐｄａｔｅ２がプリセット誤差値Ｔより大きい場合、プロセッサは前述の操作Ｓ７１４から前述の操作Ｓ７１３に切り替わる。
【０３６４】
もちろん、他の実施形態では、プロセッサは、前述の量子化誤差に従ってデータビット幅を調整する必要があるかどうかを確定することができる。たとえば、２番目にプリセット反復間隔は、１つのトレーニング周期の反復の総数である。カレント反復が第２のプリセット反復以上の場合、プロセッサは第２のプリセット反復間隔によって量子化パラメータを更新できる。つまり、トレーニング周期（エポック）ごとに１回量子化パラメータを更新する。ここで、各トレーニングサイクルの１番目の反復が検査反復として使用される。各トレーニングサイクルの１番目の反復で、プロセッサは検査反復で量子化予定のデータによって量子化誤差を確定できる。量子化誤差が第１のプリセットしきい値以上の場合、データビット幅がプリセットしきい値を満たさない可能性がある。プロセッサが上記の動作Ｓ７１４から上記の動作Ｓ７１３に切り替わると想定される。
【０３６５】
オプションの実施形態では、小数点位置、スケーリング係数、およびオフセットなどの前述の量子化パラメータを表示装置に表示することができる。このとき、ユーザーはディスプレイ装置を介してニューラルネットワーク演算プロセスの量子化パラメータを学習でき、プロセッサーによって確定された量子化パラメータを適応的に変更することもできる。同様に、前述のデータビット幅と目標反復間隔も表示装置で表示できる。このとき、ユーザーはディスプレイ装置を介してニューラルネットワーク演算プロセスの目標反復間隔やデータビット幅などのパラメータを学習でき、プロセッサーによって確定された目標反復間隔やデータビット幅を適応的に変更することもできる。
【０３６６】
データビット幅を確定するための上記の目標反復間隔および量子化パラメータの目標反復間隔は単なる例であり、網羅的ではないことに留意されたい。当業者は、本開示の技術案の本質を理解している。次に、本開示の技術案に基づいて、他の変形または変換を生成することができる。例えば、データビット幅を確定するための目標反復間隔内の量子化パラメータを確定するための目標反復間隔は、図６、７および８Ａにも適用可能である。示されている技術案。ただし、達成される機能および技術的効果が本開示のものと類似している限り、それらは本開示の保護範囲に含まれるべきである。
【０３６７】
技術案は、量子化パラメータを確定し、量子化誤差に応じてデータビット幅または量子化パラメータを調整し、データビット幅または量子化パラメータを調整するための目標反復間隔を確定して、ニューラルネットワーク演算プロセスの適切な時点を達成するためである。データビット幅または量子化パラメータは、適切な量子化パラメータが適切な反復時点で使用されるように調整され、人工知能プロセッサのチップを実現してニューラルネットワーク動作を実行し、固定点動作速度を達成し、人工知能プロセッサのチップのピーク計算能力を向上させる同時に、操作に必要な浮動小数点操作の精度が満たされる。
【０３６８】
前述の方法の実施形態について、簡単な説明のために、それらはすべて一連の作用の組み合わせとして表されるが、当技術分野の当業者は、本開示が記載された一連の作用によって限定されないことを理解すべきであることに留意されたい。この開示によれば、特定のステップは、他の順序でまたは同時に実行することができるからである。第二に、当技術分野の当業者はまた、本明細書に記載の実施形態が任意の実施形態であり、関連するアクションおよびモジュールが本開示によって必ずしも必要とされないことを認識すべきである。
【０３６９】
さらに、図２、６、７、および８Ａ〜８Ｖのフローチャートのステップは、矢印で示すように順番に表示されているが、これらのステップは、必ずしも矢印で示す順序で実行されるとは限らないことに留意されたい。この記事で特に明記されていない限り、これらのステップの実行は順序に厳密に制限されておらず、これらのステップは他の順序で実行できる。さらに、図２、６、７、および８Ａから８Ｖのステップの少なくとも一部は、複数のサブステップまたは複数のステージを含み得る。これらのサブステップまたはステージは、必ずしも同時に実行されるとは限らないが、同時に完了することができる。異なる時間に実行される場合、これらのサブステップまたはステージの実行順序は、必ずしも連続して実行されるとは限らないが、他のステップまたは他のステップのサブステップまたはステージの少なくとも一部と交互にまたは交互に実行され得る。
【０３７０】
図９に示されるように、本開示のために提案されたニューラルネットワークの量子化パラメータの確定装置のハードウェア構成のブロック図。図９において、ニューラルネットワークの量子化パラメータの確定装置１０は、プロセッサ１１０およびメモリ１２０を含み得る。図９のニューラルネットワークの量子化パラメータ確定装置１０には、本実施形態に関連する構成要素のみが示されている。したがって、当業者にとって、ニューラルネットワークの量子化パラメータ確定装置１０はまた、図１０に示されるものとは異なる共通の構成要素を含み得ることは明らかである。例：固定小数点演算。
【０３７１】
ニューラルネットワークの量子化パラメータ確定装置１０は、例えば、ニューラルネットワークの生成、ニューラルネットワークのトレーニングまたは学習、浮動点ニューラルネットワークの固定点ニューラルネットワークへの量子化、または再トレーニングのための様々な処理機能を有する計算装置に対応し得る。ニューラルネットワークの機能。例えば、ニューラルネットワークの量子化パラメータ確定装置１０は、パーソナルコンピュータ（ＰＣ）、サーバ機器、モバイル機器などの様々なタイプの機器として実装することができる。
【０３７２】
プロセッサ１１０は、ニューラルネットワークの量子化パラメータ確定装置１０のすべての機能を制御する。例えば、プロセッサ１１０は、ニューラルネットワークの量子化パラメータ確定装置１０上のメモリ１２０に格納されたプログラムを実行することによって、ニューラルネットワークの量子化パラメータ確定装置１０のすべての機能を制御する。プロセッサ１１０は、ニューラルネットワークの量子化パラメータを確定するために装置１０に設けられた中央処理ユニット（ＣＰＵ）、グラフィックス処理ユニット（ＧＰＵ）、アプリケーションプロセッサ（ＡＰ）、人工知能プロセッサのチップ（ＩＰＵ）などによって実装され得る。しかしながら、この開示はこれに限定されない。
【０３７３】
メモリ１２０は、ニューラルネットワークの量子化パラメータ確定装置１０で処理された様々なデータを格納するためのハードウェアである。例えば、メモリ１２０は、ニューラルネットワークの量子化パラメータを確定するために、処理されたデータおよび処理されるべきデータを装置１０に格納することができる。メモリ１２０は、プロセッサ１１０が処理した、または処理されるニューラルネットワーク演算プロセスに関与するデータ集合、例えば、トレーニングされていない初期ニューラルネットワークのデータ、トレーニングプロセス中に生成されたニューラルネットワークの中間データ、およびすべてのトレーニングが完了することを格納することができる。ニューラルネットワークにおけるデータ、量子化されたニューラルネットワークにおけるデータなど。さらに、メモリ１２０は、ニューラルネットワークの量子化パラメータ確定装置１０によって駆動されるアプリケーション、ドライバプログラムなどを格納することができる。例えば、メモリ１２０は、プロセッサ１１０によって実行されるニューラルネットワークのトレーニングアルゴリズム、量子化アルゴリズムなどに関連する様々なプログラムを格納することができる。メモリー１２０は、ＤＲＡＭであり得るが、本開示は、それに限定されない。メモリ１２０は、揮発性メモリまたは非揮発性メモリのうちの少なくとも１つを含み得る。不揮発性メモリには、読み取り専用メモリ（ＲＯＭ）、プログラム可能なＲＯＭ（ＰＲＯＭ）、電気的にプログラム可能なＲＯＭ（ＥＰＲＯＭ）、電気的に消去可能なプログラム可能なＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ、位相変化ＲＡＭ（ＰＲＡＭ）、磁気が含まれる。ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ）、強誘電体ＲＡＭ（ＦＲＡＭ）など。揮発性メモリには、動的ＲＡＭ（ＤＲＡＭ）、静的ＲＡＭ（ＳＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、ＰＲＡＭ、ＭＲＡＭ、ＲＲＡＭ、強誘電体ＲＡＭ（ＦｅＲＡＭ）などが含まれる。一実施形態では、メモリ１２０は、ハードディスクドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＳＤ）、高密度フラッシュメモリ（ＣＦ）、セキュアデジタル（ＳＤ）カード、マイクロセキュアデジタル（Ｍｉｃｒｏ−ＳＤ）カード、ミニセキュアデジタル（ミニ−ＳＤ）カード、ｘＤカード、キャッシュ、またはメモリスティックの少なくとも１つ。
【０３７４】
プロセッサ１１０は、所与の初期ニューラルネットワークを反復トレーニング（学習）することによって、トレーニングされたニューラルネットワークを生成することができる。この状態では、ニューラルネットワークの処理精度を確保するという意味で、初期ニューラルネットワークのパラメータは、３２ビット浮動小数点精度のデータ表現形式などの高精度のデータ表現形式である。パラメータには、ニューラルネットワークとの間のさまざまなタイプのデータ入力／出力を含めることができる。たとえば、ニューラルネットワークの入力／出力ニューロン、重み、オフセットなどである。固定小数点演算と比較して、浮動小数点操作は比較的大量の操作と比較的頻繁なメモリアクセスを必要とする。具体的には、ニューラルネットワーク処理に必要な操作のほとんどは、さまざまな畳み込み操作として知られている。したがって、処理性能が比較的低いモバイル装置（スマートフォン、タブレット、ウェアラブル装置など、組み込み装置など）では、ニューラルネットワークの高精度のデータ操作により、モバイル装置のリソースが十分に活用されない。その結果、ニューラルネットワークの動作を許容精度損失範囲内で駆動し、上記機器の動作量を十分に低減するために、ニューラルネットワークの動作に伴う高精度のデータを量子化して低精度定点数に変換することができる。
【０３７５】
ニューラルネットワークが展開されているモバイル装置、組み込み装置などの装置の処理性能を考慮して、ニューラルネットワークの量子化パラメータ確定装置１０は、トレーニングされたニューラルネットワークのパラメータを特定のビット数の固定点量子化に変換し、ニューラルネットワークを実行する。ネットワーク量子化パラメータ確定装置１０は、対応する量子化パラメータをニューラルネットワークを展開する装置に送信するので、人工知能プロセッサのチップがトレーニング、微調整および他の操作操作を実行するとき、それは固定小数点数操作である。ニューラルネットワークを展開する装置は、ニューラルネットワークを使用して音声認識、画像認識などを実行する自律車両、ロボット、スマートフォン、タブレット装置、拡張現実（ＡＲ）装置、モノインターネット（ＩｏＴ）装置などであり得るが、本開示はそうではない。これに限定される。
【０３７６】
プロセッサ１１０は、メモリ１２０からニューラルネットワーク動作プロセスのデータを取得する。データには、ニューロン、重み、オフセット、および勾配の少なくとも１つが含まれる。図２に示す技術案を使用して、対応する量子化パラメータを確定し、量子化パラメータを使用して、ニューラルネットワーク演算プロセスで目標データを量子化する。量子化後のデータに対してニューラルネットワーク演算を実行する。この操作には、トレーニング、微調整、および推論が含まれるが、これらに限定されない。
【０３７７】
プロセッサ１１０は、量子化誤差に従ってデータビット幅ｎを調整し、プロセッサ１１０は、図６、７および８に示される目標反復間隔法のプログラムを実行して、データビット幅の目標反復間隔または量子化パラメータを確定することができる。目標反復間隔。
【０３７８】
要約すると、本明細書の方法は、ニューラルネットワーク量子化パラメータ確定装置を提供する。メモリ１２０およびプロセッサ１１０によって実施される特定の機能は、本明細書の前述の実施形態と比較して説明することができ、前述の実施形態を達成することができる。これの技術的効果はここでは繰り返されない。
【０３７９】
この実施形態では、プロセッサ１１０は、任意の適切な方法で実施することができる。例えば、プロセッサ１１０は、（マイクロ）プロセッサ、論理ゲート、スイッチ、特別な目的によって実行可能なコンピュータ可読プログラムコード（例えば、ソフトウェアまたはファームウェア）を格納するマイクロプロセッサまたはプロセッサおよびコンピュータ可読媒体の形態をとることができる。集積回路（アプリケーション固有の集積回路、ＡＳＩＣ）、プログラム可能なロジックコントローラ、組み込みマイクロコントローラなどの形式。
【０３８０】
図１０に示されるように、それは、本開示で提案されるニューラルネットワーク量子化パラメータ確定装置の人工知能プロセッサのチップへの適用の概略図である。図１０に示すように、ＰＣ、サーバ等のニューラルネットワークの量子化パラメータ確定装置１０において、プロセッサ１１０は、量子化動作を実行して、ニューラルネットワーク動作に関与する浮動小数点データを固定小数点数に量子化し、人工知能処理を行う。チップ上の固定小数点演算ユニットは、量子化によって得られた固定小数点数を使用して、トレーニング、微調整、または推論を実行する。人工知能プロセッサのチップは、ニューラルネットワークを駆動するためである専用ハードウェアである。人工知能プロセッサのチップは比較的低電力または低性能で実装されているため、技術案では低精度の固定小数点数を使用してニューラルネットワーク演算を実装する。高精度のデータと比較して、低精度の固定小数点数を読み取る必要がある。メモリ帯域幅は小さく、人工知能プロセッサのチップのキャッシュをより適切に使用してメモリのボトルネックを回避できる。同時に、人工知能プロセッサのチップ上でＳＩＭＤ命令を実行すると、１クロックサイクルでより多くの計算を実現して、ニューラルネットワーク演算の実行を高速化できる。
【０３８１】
さらに、同じ長さの固定小数点演算と高精度のデータ演算、特に固定小数点演算と浮動小数点演算の比較に直面すると、浮動小数点演算の計算モデルはより複雑になり、浮動小数点演算を形成するためにより多くの論理装置が必要になる。端末。このように、体積に関しては、浮動小数点演算の体積は固定小数点演算の体積よりも大きくなる。さらに、浮動小数点演算ユニットは処理するためにより多くのリソースを消費する必要があり、固定小数点演算と浮動小数点演算の間の電力消費ギャップは通常数桁である。
【０３８２】
要約すると、この技術案は、人工知能プロセッサのチップ上の浮動小数点演算ユニットを固定小数点演算ユニットに置き換えることができるため、人工知能プロセッサのチップの消費電力が低くなる。これは、モバイル装置にとって特に重要である。言い換えれば、この技術案は、浮動小数点計算コードを効率的に実行できない多数の組み込みシステムへの扉を開き、モノのインターネットの世界が広く使用されることを可能にする。
【０３８３】
この技術案において、人工知能プロセッサのチップは、例えば、ニューラルネットワークを駆動するための専用チップである神経処理ユニット（ＮＰＵ）、テンソル処理ユニット（ＴＰＵ）、神経エンジンなどに対応し得るが、本開示は、に限定されない。この。
【０３８４】
この技術案では、人工知能プロセッサのチップは、ニューラルネットワークの量子化パラメータ確定装置１０から独立した別個の装置に実装することができ、ニューラルネットワークの量子化パラメータ確定装置１０は、人工知能プロセッサのチップの機能モジュールの一部として使用することもできる。成し遂げる。しかし、この開示はこれに限定されない。
【０３８５】
この技術案では、汎用プロセッサ（ＣＰＵなど）のオペレーティングシステムがこの技術案に基づいて命令を生成し、生成された命令を人工知能プロセッサのチップ（ＧＰＵなど）に送信し、人工知能プロセッサのチップが命令操作を実行する。ニューラルネットワークの量子化パラメータの確定と量子化プロセスを実現する。別の応用では、汎用プロセッサが技術案に基づいて対応する量子化パラメータを直接確定し、汎用プロセッサが量子化パラメータに従って対応する目標データを直接量子化し、人工知能プロセッサのチップが量子化後のデータを使用して固定小数点演算を実行する。さらに、汎用プロセッサ（ＣＰＵなど）と人工知能プロセッサのチップ（ＧＰＵなど）がパイプライン化されている。汎用プロセッサ（ＣＰＵなど）のオペレーティングシステムは、この技術案に基づいて命令を生成し、同時に目標データをコピーする。人工インテリジェンスプロセッサのチップ（ＧＰＵなど）はニューラルネットワーク演算を実行するため、時間の消費を隠すことができる。しかし、この開示はこれに限定されない。
【０３８６】
この実施形態において、本開示の実施形態はまた、コンピュータプログラムが格納される読み取り可能な記憶媒体を提供し、コンピュータプログラムが実行されるとき、上記のニューラルネットワークの量子化パラメータの確定方法が実現される。
【０３８７】
以上のことから、ニューラルネットワーク運用の過程において、本開示の技術案は、量子化中の量子化パラメータを確定するために使用され、量子化パラメータは、ニューラルネットワーク運用プロセスにおけるデータを量子化し、高精度のデータを低精度データに変換するために人工知能プロセッサによって使用されることが分かる。正確な固定小数点数により、ニューラルネットワーク演算のプロセスに関係するデータストレージのすべてのスペースサイズを減少できる。例：ｆｌｏａｔ３２をｆｉｘ８に変換すると、モデルパラメータを４分の１に減らすことができる。データストレージスペースが小さくなると、ニューラルネットワークの展開に使用されるスペースが小さくなり、人工知能プロセッサのチップ上のオンチップメモリがより多くのデータを格納できるようになり、人工知能プロセッサのチップのデータへのアクセスが減少され、コンピューティングパフォーマンスが向上される。
【０３８８】
当業者はまた、純粋にコンピュータ可読なプログラムコード方式でクライアントおよびサーバーを実現することに加えて、クライアントおよびサーバーがロジックゲート、スイッチ、アプリケーション固有の集積回路、およびプログラム可能なロジックを使用するようにメソッドステップをプログラムすることが完全に可能であることを知っている。コントローラと組み込みマイクロメータは同じ機能を実現できる。したがって、このようなクライアントやサーバーは一種のハードウェアコンポーネントと見なすことができ、さまざまな機能を実装するためにそれらに含まれる装置もハードウェアコンポーネント内の構造と見なすことができる。あるいは、さまざまな機能を実現するための装置は、方法を実現するためのソフトウェアモジュールとハードウェアコンポーネント内の構造の両方と見なすことができる。
【０３８９】
図１１に示されるように、本開示のために提案されたニューラルネットワークの量子化パラメータの確定装置の機能的ブロック図。この方法には次のものが含まれる。
【０３９０】
統計単位ａは、量子化予定のデータをカウントし、各タイプの量子化予定のデータの統計結果を確定するためである。ここで、量子化予定のデータには、ニューラルネットワークのニューロン、重み、勾配、およびオフセットの少なくとも１つが含まれる。
【０３９１】
量子化パラメータ確定ユニットｂは、各タイプの量子化予定のデータの統計結果およびデータビット幅を使用することによって対応する量子化パラメータを確定するためである；ここで、量子化パラメータは、ニューラルネットワーク演算プロセスにおいてデータを量子化するために人工知能プロセッサによって使用される。
【０３９２】
この実施形態では、任意選択で、ニューラルネットワークの量子化パラメータ確定装置は、さらに以下を含む。
【０３９３】
最初の量子化ユニットは、対応する量子化パラメータを使用して、量子化予定のデータを量子化するように構成される。
【０３９４】
この実施形態では、任意選択で、ニューラルネットワークの量子化パラメータ確定装置は、さらに以下を含む。
【０３９５】
第２の量子化ユニットは、対応する量子化パラメータを使用することによって目標データを量子化するように構成される；ここで、目標データの特性および量子化予定のデータの特性は類似性を有する。
【０３９６】
この実施形態では、ニューラルネットワーク演算プロセスは、ニューラルネットワークトレーニング、ニューラルネットワーク推論、およびニューラルネットワーク微調整の少なくとも１つの操作を含む。
【０３９７】
この実施形態では、統計単位によって得られる統計結果は、各タイプの量子化予定のデータの最大値および最小値である。
【０３９８】
この実施形態では、統計単位によって得られる統計結果は、各タイプの量子化予定のデータの最大絶対値である。
【０３９９】
この実施形態では、統計単位は、各タイプの量子化予定のデータの最大値および最小値に従って最大絶対値を確定する。
【０４００】
この実施形態では、量子化パラメータ確定ユニットは、最大値、各タイプの量子化予定のデータの最小値、およびデータビット幅によって、量子化パラメータを確定する。
【０４０１】
この実施形態では、量子化パラメータ確定ユニットは、各タイプの量子化予定のデータの最大絶対値およびデータビット幅によって、量子化パラメータを確定する。
【０４０２】
この実施形態では、量子化パラメータ確定ユニットによって確定される量子化パラメータは、小数点位置パラメータまたは第１のスケーリング係数である。
【０４０３】
この実施形態では、量子化パラメータ確定ユニットは、小数点位置パラメータおよび第２のスケーリング係数に従って第１のスケーリング係数を確定する。ここで、第１のスケーリング係数を確定するときに使用される小数点位置パラメータは、既知の固定値、または小数点位置パラメータと対応する第２のスケーリング係数を全体として乗算した結果は、ニューラルネットワーク演算プロセスでのデータ量子化の第１のスケーリング係数として使用される。
【０４０４】
この実施形態では、量子化パラメータ確定ユニットによって確定される量子化パラメータは、小数点位置パラメータおよび第２のスケーリング係数を含む。
【０４０５】
この実施形態では、量子化パラメータ確定ユニットは、小数点位置パラメータ、統計結果、およびデータビット幅によって、第２のスケーリング係数を確定する。
【０４０６】
この実施形態では、量子化パラメータ確定ユニットによって確定される量子化パラメータは、オフセットをさらに含む。
【０４０７】
この実施形態では、量子化パラメータ確定ユニットは、各タイプの量子化予定のデータの統計結果によってオフセットを確定する。
【０４０８】
この実施形態では、量子化パラメータ確定ユニットによって使用されるデータビット幅は、プリセット値である。
【０４０９】
この実施形態では、量子化パラメータ確定ユニットは、調整モジュールおよび量子化誤差確定モジュールを含む。
【０４１０】
調整モジュールは、対応する量子化誤差に従ってデータビット幅を調整するように構成される。
【０４１１】
量子化誤差確定モジュールは、量子化後のデータおよび量子化前の対応するデータに従って量子化誤差を確定するように構成される。
【０４１２】
この実施形態では、調整モジュールは、特に以下のように構成される。
【０４１３】
量子化誤差はしきい値と比較され、データビット幅は比較結果によって調整され、しきい値は第１のしきい値および第２のしきい値のうちの少なくとも１つを含む。
【０４１４】
この実施形態では、調整モジュールは、第１の調整サブモジュールを含み、第１の調整サブモジュールは、以下のためである。
【０４１５】
量子化誤差が第１のしきい値以上の場合、データビット幅が増やす。
【０４１６】
この実施形態では、調整モジュールは、第２の調整サブモジュールを含み、第２の調整サブモジュールは、以下のためである。
【０４１７】
量子化誤差が第２のしきい値以下の場合、データビット幅は減少する。
【０４１８】
この実施形態では、調整モジュールは、第３の調整サブモジュールを含み、第３の調整サブモジュールは、以下のためである。
【０４１９】
量子化誤差が第１のしきい値と第２のしきい値の間にある場合、データビット幅は変更されない。
【０４２０】
この実施形態では、量子化誤差確定モジュールは、以下を含む。
【０４２１】
データビット幅によって量子化間隔を確定するように構成される量子化間隔確定サブモジュール。
【０４２２】
第１の量子化誤差確定サブモジュールは、量子化間隔、量子化後のデータの数、および量子化前の対応するデータに従って量子化誤差を確定するように構成される。
【０４２３】
この実施形態では、量子化誤差確定モジュールは、以下を含む。
【０４２４】
逆量子化データ確定サブモジュールは、量子化予定のデータを逆量子化して逆量子化データを取得するためである。逆量子化データのデータフォーマットは、量子化前の対応するデータのデータフォーマットと同じである。
【０４２５】
第２の量子化誤差確定サブモジュールは、量子化予定のデータおよび対応する逆量子化データによって量子化誤差を確定するためである。
【０４２６】
この実施形態では、量子化誤差確定モジュールによって使用される量子化前のデータは、量子化予定のデータである。
【０４２７】
この実施形態では、量子化誤差確定モジュールによって使用される量子化前のデータは、目標反復間隔内の重み更新反復プロセスに関与する量子化予定のデータであり、ここで、目標反復間隔は、少なくとも１つの重みを含む。値は更新された反復であり、同じデータビット幅が同じ目標反復間隔内の量子化プロセスで使用される。
【０４２８】
この実施形態では、ニューラルネットワークの量子化パラメータ確定装置は、第１の目標反復間隔確定ユニットをさらに含み、第１の目標反復間隔確定ユニットは、以下を含む。
【０４２９】
第１の変化傾向値確定モジュールは、予測時点での重み更新反復プロセスに関与する量子化予定のデータの小数点位置パラメータの変化傾向値を確定するためである。予測時点は、次のことを確定するためである。データビット幅を調整する必要がある時点。予測時点は、重み更新の反復が完了する時点に対応する。
【０４３０】
第１の目標反復間隔モジュールは、小数点位置パラメータの変化傾向値に従って、対応する目標反復間隔を確定するように構成される。
【０４３１】
この実施形態では、第１の目標反復間隔確定ユニットは、以下を含む。
【０４３２】
第２の変化傾向値確定モジュールは、量子化予定のデータの小数点位置パラメータの変化傾向値と、予測時点での重み更新反復プロセスに含まれるデータビット幅の変化傾向値を確定するためである。判定時点は、データのビット幅を調整する必要があるかどうかを判断する時点であり、予測時点は、重み更新の反復が完了する時点に対応する。
【０４３３】
第２の目標反復間隔モジュールは、小数点位置パラメータの変化傾向値とデータビット幅の変化傾向値に従って、対応する目標反復間隔を確定するように構成される。
【０４３４】
この実施形態では、第１の目標反復間隔確定ユニットは、第１の所定の時点確定ユニットをさらに含む。
【０４３５】
第１の予測時点確定ユニットは、目標反復間隔によって第１の予測時点を確定するように構成される。
【０４３６】
この実施形態では、第１の目標反復間隔確定ユニットは、第２の所定の時点確定ユニットをさらに含み、第２の所定の時点確定ユニットは、データ変動範囲曲線に従って第２の所定の時点を確定するように構成される。時点を判断する。ここで、データ変動範囲曲線は、重み更新反復プロセス中にデータ変動範囲を統計的に計算することによって取得される。
【０４３７】
この実施形態では、第１の変化傾向値確定モジュールおよび第２の変化傾向値確定モジュールは、現在の予測時点に対応する小数点位置パラメータのスライド平均値、および前の予測時点に対応する値に基づく。小数点位置パラメータのスライド平均値は、小数点位置パラメータの変化傾向値を確定する。
【０４３８】
この実施形態では、第１の変化傾向値確定モジュールおよび第２の変化傾向値確定モジュールは、現在の予測時点に対応する小数点位置パラメータおよび前の予測時点に対応する小数点位置パラメータの値に基づく。スライド平均は、小数点位置パラメータの変化傾向値を確定する。
【０４３９】
この実施形態では、第１の変化傾向値確定モジュールおよび第２の変化傾向値確定モジュールは、両方とも以下を含む。
【０４４０】
現在の予測時点に対応する小数点位置パラメータ確定サブモジュールを使用して、最後の予測時点に対応する小数点位置パラメータおよびデータビット幅の調整値に従って、現在の予測時点に対応する小数点位置パラメータを確定する。
【０４４１】
調整結果確定サブモジュールは、データビット幅の調整値に従って、最後の予測された時点に対応する小数点位置パラメータのスライド平均値を調整して、調整結果を取得するように構成される。
【０４４２】
第１のスライディング平均値確定サブモジュールは、現在の予測時点に対応する小数点位置パラメータおよび調整結果によって、現在の予測時点に対応する小数点位置パラメータのスライディング平均値を確定するように構成される。
【０４４３】
この実施形態では、第１の変化傾向値確定モジュールおよび第２の変化傾向値確定モジュールは、両方とも以下を含む。
【０４４４】
中間結果確定サブモジュールは、最後の予測時点に対応する小数点位置パラメータおよび最後の予測時点に対応する小数点位置パラメータのスライディング平均値に従って、現在の予測時点に対応する小数点位置パラメータのスライディング平均値を確定するためである。価値の中間結果；
【０４４５】
第２のスライディング平均値確定サブモジュールは、現在の予測時点に対応する小数点位置パラメータのスライディング平均値とデータビット幅の調整値の中間結果によって、現在の予測時点に対応する小数点位置を確定するためである。パラメータのスライディング平均値。
【０４４６】
この実施形態では、第２の変化傾向値確定モジュールは、対応する量子化誤差に従って、データビット幅の変化傾向値を確定する。
【０４４７】
この実施形態では、第１の目標反復間隔確定ユニットは、さらに以下を含む。
【０４４８】
対応する量子化誤差を確定するように構成される量子化誤差確定モジュール。ここで、量子化誤差に対応する量子化前のデータは、所定の時点に対応する重み更新反復プロセスに関与する量子化予定のデータである。
【０４４９】
データビット幅確定モジュールは、対応する量子化誤差に従って、目標反復間隔内の量子化プロセスで使用されるデータビット幅を確定するためである。
【０４５０】
この実施形態では、データビット幅確定モジュールは、特に以下のように構成される。
【０４５１】
量子化誤差をしきい値と比較し、最後の目標反復間隔で量子化処理に使用したデータビット幅を比較結果に応じて調整し、調整結果を現在の目標反復間隔で量子化処理に使用したデータビット幅として使用する。
【０４５２】
この実施形態では、量子化誤差確定モジュールによって使用される量子化前のデータは、目標反復間隔内の重み更新反復に関与する量子化予定のデータであり、ここで、目標反復間隔は、少なくとも１つの重みを含む。反復が更新され、同じ目標反復間隔内の量子化プロセスで同じ量子化パラメータが使用される。
【０４５３】
この実施形態では、ニューラルネットワークの量子化パラメータ確定装置は、第２の目標反復間隔確定ユニットをさらに含み、第２の目標反復間隔確定ユニットは、以下を含む。
【０４５４】
第３の変化傾向値確定モジュールは、予測時点での重み更新反復プロセスに関係する量子化予定のデータの小数点位置パラメータの変化傾向値を確定するためである。ここで、予測時点は、量子化パラメータを調整する必要がある時点。予測時点は、重み更新の反復が完了する時点に対応する。
【０４５５】
第３の目標反復間隔モジュールは、小数点位置パラメータの変化傾向値に従って、対応する目標反復間隔を確定するように構成される。
【０４５６】
この実施形態では、量子化パラメータ確定ユニットは、統計結果およびデータビット幅によって小数点位置パラメータを確定する。
【０４５７】
一実施形態では、データビット幅の調整装置が提供され、これは、以下を含むことを特徴とする。
【０４５８】
量子化予定のデータに対して量子化処理を実行するためのデータビット幅を取得するように構成される取得モジュール。データビット幅は、量子化予定のデータの量子化処理の後の量子化後のデータのビット幅を示す。
【０４５９】
量子化モジュールは、データビット幅に基づいて１グループの量子化予定のデータに対して量子化処理を実行して、１グループの量子化予定のデータを１グループの量子化後のデータに変換するように構成され、１グループの量子化後のデータは上記のデータビット幅を持つ。
【０４６０】
１グループの量子化予定のデータを１グループの量子化後のデータと比較し、データビット幅に関連する量子化誤差を確定するように構成される確定モジュール。
【０４６１】
調整は、確定された量子化誤差に基づいてデータビット幅を調整する。
【０４６２】
この実施形態では、比較モジュールは以下を含む。
【０４６３】
データビット幅によって量子化間隔を確定するように構成される間隔確定モジュール。
【０４６４】
誤差確定モジュールは、量子化間隔、１グループの量子化後のデータ、および１グループの量子化予定のデータによって量子化誤差を確定するように構成される。
【０４６５】
この実施形態では、誤差確定モジュールは以下を含む。
【０４６６】
量子化モジュールは、量子化間隔によって１グループの量子化後のデータに対して逆量子化を実行して、１グループの逆量子化データを取得するように構成され、１グループの逆量子化データフォーマットは、１グループの量子化予定のデータと同じである。同じデータフォーマットである；および
量子化誤差確定モジュールは、１グループの逆量子化データおよび１グループの量子化予定のデータによって量子化誤差を確定するように構成される。
【０４６７】
この実施形態では、調整モジュールは以下を含む。
【０４６８】
量子化誤差をプリセットしきい値と比較するように構成される比較モジュール。プリセットしきい値には、第１のしきい値と第２のしきい値の少なくとも１つが含まれる。
【０４６９】
ビット幅調整モジュールは、比較結果に応じてデータビット幅を調整するように構成される。
【０４７０】
この実施形態では、ビット幅調整モジュールは以下を含む。
【０４７１】
増加モジュールは、量子化誤差が第１のしきい値以上であるとの確定に応答してデータビット幅を増やすように構成される。
【０４７２】
この実施形態では、追加モジュールは以下を含む。
【０４７３】
ステップ長さ増加モジュールは、調整後のデータビット幅を確定するために、第１のプリセットビット幅のステップ長さによってデータビット幅を増やすように構成される。
【０４７４】
この実施形態では、量子化モジュールは、１グループの量子化予定のデータを別の１グループの量子化後のデータに変換するために、調整後のデータビット幅に基づいて１グループの量子化予定のデータに対して量子化処理を実行するようにさらに構成される。別の１グループの量子化後のデータは、調整後のデータビット幅を持つ。
【０４７５】
確定モジュールはさらに、１グループの量子化予定のデータを別の１グループの量子化予定のデータのと比較し、別の量子化誤差が以下になるまで、調整後のデータビット幅に関連する別の量子化誤差を確定するように構成される。第１のプリセットしきい値。
【０４７６】
この実施形態では、装置は反復呼び出される。
【０４７７】
この実施形態では、調整モジュールは以下を含む。
【０４７８】
減少モジュールは、量子化誤差が第２のしきい値以下であると判断した場合にデータビット幅を縮小するように構成される。
【０４７９】
この実施形態では、減少モジュールは以下を含む。
【０４８０】
ステップ長さ減少モジュールは、調整後のデータビット幅を確定するために、第２のプリセットビット幅のステップ長さによってデータビット幅を減少するためである。
【０４８１】
この実施形態では、量子化モジュールは、１グループの量子化予定のデータを別の１グループの量子化後のデータに変換するために、調整後のデータビット幅に基づいて１グループの量子化予定のデータに対して量子化処理を実行するようにさらに構成される。データ、別の１グループの量子化後のデータは、調整後のデータビット幅を持つ。
【０４８２】
確定モジュールはさらに、別の量子化誤差がより大きくなるまで、量子化予定のデータの１つのセットおよび別の１グループの量子化後のデータに基づいて、調整後のデータビット幅に関連する別の量子化誤差を確定するように構成される。第２のプリセットしきい値。
【０４８３】
この実施形態では、装置は反復呼び出される。
【０４８４】
この実施形態では、調整モジュールは以下を含む。
【０４８５】
維持モジュールは、量子化誤差が第１のしきい値と第２のしきい値との間にあるとの確定に応答してデータビット幅を維持するように構成される。
【０４８６】
この実施形態では、それはさらに以下を含む。
【０４８７】
更新モジュールは、１グループの量子化予定のデータおよび調整後のデータビット幅に基づいて、１グループの量子化予定のデータに対して量子化処理を実行するための量子化パラメータを更新するように構成される。
【０４８８】
量子化モジュールは、更新された量子化パラメータに基づいて１グループの量子化予定のデータに対して量子化処理を実行するようにさらに構成される。
【０４８９】
この実施形態では、範囲モジュールを使用して、量子化予定のデータのデータ変動振幅を取得する。
【０４９０】
間隔モジュールは、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔によってデータビット幅を調整するように構成され、目標反復間隔には少なくとも１回の反復が含まれる。
【０４９１】
この実施形態では、範囲モジュールは以下を含む。
【０４９２】
小数点位置モジュールは、小数点位置の変動範囲を取得するために使用され、小数点位置の変動範囲は、量子化予定のデータのデータ変動範囲を表すために使用され、小数点位置の変動範囲は、量子化予定のデータのデータ変動と同じである。振幅は正の相関がある。
【０４９３】
この実施形態では、小数点位置モジュールは以下を含む。
【０４９４】
第１の平均値モジュールは、カレント検査反復の前の一つ前の検査反復に対応する小数点位置と、一つ前の検査反復の前の履歴反復に対応する小数点位置に従って第１の平均値を確定するためである。検査の反復は、目標反復間隔前の一つ前の反復間隔に対応しているか。
【０４９５】
第２の平均モジュールは、カレント検査反復に対応する小数点位置と、カレント検査反復前の履歴反復の小数点位置によって第２の平均値を確定するためである。ここで、カレント検査反復に対応する小数点位置は、カレント検査反復に基づいている。検査の反復に対応する目標データのビット幅と量子化予定のデータが確定される。
【０４９６】
第１の誤差モジュールは、第１の平均値および第２の平均値に従って第１の誤差を確定するように構成され、第１の誤差は、小数点位置の変動範囲を表すためである。
【０４９７】
この実施形態では、間隔モジュールは以下を含む。
【０４９８】
第１の間隔モジュールは、第１の誤差によって目標反復間隔を確定するように構成されており、目標反復間隔は第１の誤差と負の相関がある。
【０４９９】
この実施形態では、範囲モジュールはさらに以下を含む。
【０５００】
データビット幅の変化傾向を取得するための傾向モジュール。
【０５０１】
データ変動範囲モジュールは、小数点位置の変動範囲とデータビット幅の変化傾向によって、量子化予定のデータのデータ変動範囲を確定するためである。
【０５０２】
この実施形態では、間隔モジュールはさらに以下を含む。
【０５０３】
反復間隔モジュールは、取得した第１の誤差と第２の誤差によって目標反復間隔を確定するためである。第１の誤差は小数点位置の変動範囲を表すために使用され、第２の誤差はデータビット幅を表すためである。変化の傾向。
【０５０４】
この実施形態では、反復間隔モジュールは以下を含む。
【０５０５】
第１の誤差と第２の誤差うちの最大値を目標誤差とするように構成される目標誤差モジュール。
【０５０６】
目標反復間隔モジュールは、目標誤差に従って目標反復間隔を確定するように構成される。ここで、目標誤差は目標反復間隔に負の相関がある。
【０５０７】
この実施形態では、第２の誤差は、量子化誤差によって確定される。
【０５０８】
量子化誤差は、カレント検査反復で量子化予定のデータとカレント検査反復の量子化後のデータによって確定され、第２の誤差は量子化誤差と正の相関がある。
【０５０９】
この実施形態では、装置は、ニューラルネットワークのトレーニングまたは微調整に使用され、装置はさらに以下を含む。
【０５１０】
第１の反復モジュールは、カレント反復が第１のプリセット反復よりも大きい場合に量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔によって量子化パラメータを調整するように構成される。
【０５１１】
この実施形態では、装置はさらに以下を含む。
【０５１２】
第２の反復モジュールは、カレント反復が第１のプリセット反復間隔以下の場合に、第１のプリセット反復間隔を目標反復間隔として使用し、第１のプリセット反復間隔によって調整するように構成される。量子化パラメータ。
【０５１３】
この実施形態では、装置はさらに以下を含む。
【０５１４】
第３の反復モジュールは、カレント反復が第２のプリセット反復以上の場合、第２のプリセット反復間隔を目標反復間隔として使用し、第２のプリセット反復間隔によって第２のプリセット反復間隔を調整するように構成される。量子化パラメータ。
【０５１５】
ここで、第２のプリセット反復は第１のプリセット反復よりも大きく、第２のプリセット反復間隔は第１のプリセット反復間隔よりも大きくなる。
【０５１６】
この実施形態では、装置はさらに以下を含む。
【０５１７】
コンバージェンスモジュールは、ニューラルネットワークのコンバージェンス度がプリセット条件を満たす場合に、現在の検証イテレーションが第２のプリセットイテレーション以上であると判断するように構成される。
【０５１８】
この実施形態では、装置はさらに以下を含む。
【０５１９】
カレント反復が第２のプリセット反復以上であり、第２の誤差がプリセット誤差値より大きい場合、反復間隔は、量子化予定のデータのデータ変動範囲によって確定され、反復間隔によって反復間隔が再確定される。データビット幅。
【０５２０】
一実施形態では、コンピュータプログラムがその上に格納されることを特徴とするコンピュータ可読記憶媒体が提供され、プログラムが実行されると、上記のいずれか１つによる方法が実現される。
【０５２１】
一実施形態では、チップが上記のいずれか１つに従ってデータを処理するための装置を含むことを特徴とする人工知能チップが提供される。
【０５２２】
一実施形態では、電子装置が上記の人工知能チップを含むことを特徴とする電子装置が提供される。
【０５２３】
一実施形態では、ボードカードは、以下を含むことを特徴とするボードカードが提供される：記憶装置、インターフェース装置、制御装置、および上記による人工知能チップ。
【０５２４】
ここで、人工知能チップは、記憶装置、制御装置、およびインターフェイス装置に接続されている。
【０５２５】
記憶装置は、データを格納するためである。
【０５２６】
インターフェイス装置は、人工知能チップと外部装置間のデータ伝送を実装するためである。
制御装置は、人工知能チップの状態を監視するためである。
【０５２７】
一実施形態では、記憶装置は、以下を含む。記憶ユニットの複数のグループ、記憶ユニットの各グループは、バスを介して人工知能チップに接続され、記憶ユニットは、ＤＲＤ  ＳＤＲＡＤである。
【０５２８】
チップには、各記憶ユニットのデータ伝送とデータストレージを制御するためのＤＤＲコントローラが含まれる。
【０５２９】
インターフェイス装置は、標準のＰＣＩＥインターフェイスである。
【０５３０】
一実施形態では、量子化予定の層において各タイプの量子化予定のデータに対応する量子化パラメータを確定することは、以下を含む。
【０５３１】
対応する量子化パラメータは、各タイプの量子化予定のデータと対応するデータビット幅によって計算される。
【０５３２】
一実施形態では、各タイプの量子化予定のデータおよび対応するデータビット幅に応じた対応する量子化パラメータの計算には、以下が含まれる。
【０５３３】
量子化パラメータにオフセットが含まれていない場合、目標データの最大絶対値と目標データに対応するデータビット幅に応じて目標データの小数点位置が求められ、目標データは任意の種類である。量子化予定のデータ。
【０５３４】
一実施形態では、各タイプの量子化予定のデータおよび対応するデータビット幅に応じた対応する量子化パラメータの計算には、以下が含まれる。
【０５３５】
量子化パラメータにオフセットが含まれていない場合は、目標データと目標データに対応するデータビット幅に応じて、目標データの量子化後の最大値を取得する。目標データは、任意の一種の量子化予定のデータである。
【０５３６】
目標データの最大絶対値と目標データの量子化データの最大値に従って、目標データのスケーリング係数が取得される。
【０５３７】
一実施形態では、各タイプの量子化予定のデータおよび対応するデータビット幅に応じた対応する量子化パラメータの計算には、以下が含まれる。
【０５３８】
量子化パラメータにオフセットが含まれる場合、目標データの最大値、目標データの最小値、および目標データに対応するデータビット幅によって、目標データの小数点位置が取得される。目標データは、任意の一種の量子化予定のデータである。
【０５３９】
一実施形態では、各タイプの量子化予定のデータおよび対応するデータビット幅に応じた対応する量子化パラメータの計算には、以下が含まれる。
【０５４０】
量子化パラメータにオフセットが含まれている場合は、目標データと目標データに対応するデータビット幅に応じて、目標データの量子化後の最大値を取得する。目標データは、任意の一種の量子化予定のデータである。
【０５４１】
目標データのスケーリング係数は、目標データの最大値、目標データの最小値、および目標データの量子化後の最大値に従って取得される。
【０５４２】
一実施形態では、各タイプの量子化予定のデータおよび対応するデータビット幅に応じた対応する量子化パラメータの計算には、以下が含まれる。
【０５４３】
目標データの最大値と最小値に応じて、目標データのオフセットが取得され、目標データは任意の一種の量子化予定のデータである。
【０５４４】
一実施形態では、この方法はさらに以下を含む。
【０５４５】
目標データおよび目標データに対応する量子化データに従って、目標データの量子化誤差を確定する。ここで、目標データは、量子化予定の任意の種類のデータである。
【０５４６】
量子化誤差および誤差しきい値に従って目標データに対応するデータビット幅を調整し、目標データに対応する調整ビット幅を取得する。
【０５４７】
目標データに対応するデータビット幅が調整ビット幅に更新され、目標データと調整ビット幅に応じて対応する調整量子化パラメータが計算されるため、ニューラルネットワークは調整量子化パラメータに従って処理を実行する。量子化。
【０５４８】
一実施形態では、量子化誤差および誤差しきい値に従って目標データに対応するデータビット幅を調整して、目標データに対応する調整ビット幅を得るには、以下が含まれる。
【０５４９】
量子化誤差が第１の誤差しきい値より大きい場合、目標データに対応するデータビット幅を増やして、目標データに対応する調整ビット幅を取得する。
【０５５０】
一実施形態では、調整ビット幅および目標データに従って、目標データの調整済の量子化誤差を計算する。
【０５５１】
調整ビット幅と目標データに従って計算された調整済の量子誤差が第１の誤差しきい値以下になるまで、調整済の量子化誤差と第１の誤差しきい値に従って調整ビット幅を増やし続ける。
【０５５２】
一実施形態では、量子化誤差および誤差しきい値に従って目標データに対応するデータビット幅を調整することは、以下を含む。
【０５５３】
量子化誤差が第２の誤差しきい値よりも小さい場合、目標データに対応するデータビット幅が減少し、第２の誤差しきい値が１番目の誤差しきい値よりも小さくなる。
【０５５４】
一実施形態では、この方法はさらに以下を含む。
【０５５５】
調整ビット幅と目標データに従って、目標データの調整済み量子化誤差を計算する。
【０５５６】
調整ビット幅と目標データに従って計算された調整済の量子誤差が第２の誤差しきい値以上になるまで、調整済の量子化誤差と第２の誤差しきい値に従って調整ビット幅を減らし続ける。
【０５５７】
一実施形態では、ニューラルネットワーク操作の微調整段階および／またはトレーニング段階において、この方法はさらに以下を含む。
【０５５８】
カレント反復および履歴反復における目標データのデータ変動範囲を取得する。ここで、履歴反復はカレント反復の前の反復である。
【０５５９】
目標データのデータ変動範囲によって、目標データに対応する目標反復間隔を確定する。これにより、ニューラルネットワークは、目標反復間隔によって目標データの量子化パラメータを更新し、目標反復間隔には少なくとも１つが含まれる。反復になるが、目標データは任意の一種の量子化予定のデータである。
【０５６０】
一実施形態では、この方法はさらに以下を含む。
【０５６１】
カレント反復における目標データのデータビット幅によって、目標反復間隔における目標データの反復に対応するデータビット幅が確定されるため、ニューラルネットワークはターゲット内の目標データに基づいている。反復間隔内の反復に対応するデータビット幅によって、量子化パラメータが決まる。
【０５６２】
一実施形態では、量子化パラメータ確定モジュールは、以下を含む。
【０５６３】
第２の量子化パラメータ確定サブモジュールは、各タイプの量子化予定のデータおよび対応するデータビット幅によって、対応する量子化パラメータを計算するように構成される。
【０５６４】
一実施形態では、第２の量子化パラメータ確定サブモジュールは、以下を含む。
【０５６５】
第１小数点位置計算単位は、量子化パラメータにオフセットが含まれていない場合に、目標データの最大絶対値と目標データに対応するデータビット幅に応じて目標データの小数点位置を取得するためである。目標データは、任意の一種の量子化予定のデータである。
【０５６６】
一実施形態では、第２の量子化パラメータ確定サブモジュールは、以下を含む。
【０５６７】
第１のスケーリング係数計算ユニットは、量子化パラメータがオフセット、目標データを含まない場合に、目標データおよび目標データに対応するデータビット幅によって、目標データの量子化後の最大値を取得するように構成される。任意の一種の量子化予定のデータであり、目標データの最大絶対値と目標データの量子化後の最大値に応じて、目標データのスケーリング係数が取得される。
【０５６８】
一実施形態では、第２の量子化パラメータ確定サブモジュールは、以下を含む。
【０５６９】
第２小数点位置計算ユニットは、量子化パラメータにオフセットが含まれる場合、目標データの最大値、目標データの最小値、および目標データに対応するデータビット幅に応じて取得するように構成される。目標データの小数点位置、目標データは、任意の一種の量子化予定のデータである。
【０５７０】
一実施形態では、第２の量子化パラメータ確定サブモジュールは、以下を含む。
【０５７１】
第２のスケーリング係数計算ユニットは、量子化パラメータがオフセットを含み、目標データがである場合に、目標データおよび目標データに対応するデータビット幅によって、目標データの量子化データの最大値を取得するように構成される。目標データは、任意の一種の量子化予定のデータである。目標データの最大値、目標データの最小値、および目標データの量子化後の最大値に従って、目標データのスケーリング係数が取得される。
【０５７２】
一実施形態では、第２の量子化パラメータ確定サブモジュールは、以下を含む。
【０５７３】
オフセット計算ユニットは、目標データの最大値と最小値に応じて目標データのオフセットを取得するように構成されており、目標データは、任意の一種の量子化予定のデータである。
【０５７４】
一実施形態では、装置はさらに以下を含む。
【０５７５】
目標データおよび目標データに対応する量子化データに従って目標データの量子化誤差を確定するように構成される量子化誤差確定モジュール。ここで、目標データは、量子化予定の任意の種類のデータである。
【０５７６】
量子化誤差および誤差しきい値に従って目標データに対応するデータビット幅を調整して、目標データに対応する調整ビット幅を取得するように構成される調整ビット幅確定モジュール。
【０５７７】
調整量子化パラメータ確定モジュールは、目標データに対応するデータビット幅を調整ビット幅に更新し、目標データと調整ビット幅に従って対応する調整量子化パラメータを計算するように構成される。ネットワークは、調整された量子化パラメータに従って量子化を実行する。
【０５７８】
一実施形態では、調整ビット幅確定モジュールは、以下を含む。
【０５７９】
第１調整ビット幅確定サブモジュールは、量子化誤差が第１誤差しきい値より大きい場合に目標データに対応するデータビット幅を増加させて、目標データに対応する調整ビット幅を取得するように構成される。
【０５８０】
一実施形態では、調整ビット幅確定モジュールは、さらに以下を含む。
【０５８１】
第１の調整済み量子化誤差確定サブモジュールは、調整ビット幅と目標データに従って目標データの調整済み量子化誤差を計算するように構成される。
【０５８２】
第１の調整ビット幅循環確定サブモジュールは、調整ビット幅および目標データに従って調整ビット幅が計算されるまで、調整済の量子化誤差および第１の誤差しきい値に従って調整ビット幅を増加し続けるように構成される。の量子化誤差は、第１の誤差しきい値以下である。
【０５８３】
一実施形態では、調整ビット幅確定モジュールは、以下を含む。
【０５８４】
第２の調整ビット幅確定サブモジュールは、量子化誤差が第２の誤差しきい値未満であり、第２の誤差しきい値が第１の誤差しきい値未満である場合に、目標データに対応するデータビット幅を減少させるように構成される。
【０５８５】
一実施形態では、調整ビット幅確定モジュールは、さらに以下を含む。
【０５８６】
第２の調整済み量子化誤差確定サブモジュールは、調整ビット幅と目標データに従って目標データの調整済み量子化誤差を計算するように構成される。
【０５８７】
第２の調整ビット幅循環確定サブモジュールは、調整ビット幅および目標データに従って調整ビット幅が計算されるまで、調整済の量子化誤差および第２の誤差しきい値に従って調整ビット幅を減少し続けるように構成される。の量子化誤差は、第２の誤差しきい値以上である。
一実施形態では、ニューラルネットワーク動作の微調整段階および／またはトレーニング段階において、装置はさらに以下を含む。
【０５８８】
カレント反復および履歴反復における目標データのデータ変動範囲を取得するように構成されるデータ変動範囲確定モジュール。履歴反復は、カレント反復の前の反復である。
【０５８９】
目標反復間隔確定モジュールは、目標データのデータ変動範囲によって目標データに対応する目標反復間隔を確定するように構成されるため、ニューラルネットワークは目標反復間隔によって目標データの量子化パラメータを更新する。目標反復間隔には少なくとも１つの反復が含まれ、目標データは量子化予定の任意のタイプのデータである。
【０５９０】
一実施形態では、装置はさらに以下を含む。
【０５９１】
第１の目標反復間隔適用モジュールは、カレント反復での目標データのデータビット幅によって、目標反復間隔での目標データの反復に対応するデータビット幅を確定するように構成される。ネットワークは、目標反復間隔内の目標データの反復に対応するデータビット幅によって、量子化パラメータを確定する。
【０５９２】
一実施形態では、ニューラルネットワークの量子化パラメータの調整方法が提供され、この方法は以下を含む。
【０５９３】
量子化予定のデータのデータ変動範囲を取得する。
【０５９４】
量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔に少なくとも１回の反復を含むニューラルネットワーク操作の量子化パラメータと、ニューラルネットワークを調整する。量子化パラメータは、ニューラルネットワーク演算で量子化予定のデータに量子化操作を実装するためである。
【０５９５】
一実施形態では、量子化パラメータは、小数点位置を含み、小数点位置は、量子化予定のデータに対応する量子化データ内の小数点位置であり、この方法は、以下をさらに含む。
【０５９６】
カレント検査反復に対応する目標データビット幅と、カレント検査反復で量子化予定のデータによって、目標反復間隔の反復に対応する小数点位置を確定し、ニューラルネットワーク演算の小数点位置を調整する。
【０５９７】
ここで、目標反復間隔の反復に対応する小数点位置は一致している。
【０５９８】
一実施形態では、量子化パラメータは、小数点位置を含み、小数点位置は、量子化予定のデータに対応する量子化データ内の小数点位置であり、この方法は、以下をさらに含む。
【０５９９】
カレント検査反復に対応する目標データビット幅によって、目標反復間隔に対応するデータビット幅を確定する。ここで、目標反復間隔の反復に対応するデータビット幅は一致している。
【０６００】
取得した小数点位置反復間隔および目標反復間隔に対応するデータビット幅によって、目標反復間隔の反復に対応する小数点位置を調整して、ニューラルネットワーク演算の小数点位置を調整する。
【０６０１】
ここで、小数点位置反復間隔には少なくとも１つの反復が含まれ、小数点位置反復間隔内の反復小数点位置は一致している。
【０６０２】
一実施形態では、小数点位置反復間隔は、目標反復間隔以下である。
【０６０３】
一実施形態では、量子化パラメータは、スケーリング係数をさらに含み、スケーリング係数は、小数点位置と同期して更新される。
【０６０４】
一実施形態では、量子化パラメータはさらにオフセットを含み、オフセットは小数点位置と同期して更新される。
【０６０５】
一実施形態では、この方法はさらに以下を含む。
【０６０６】
カレント検査反復の量子化データおよびカレント検査反復の量子化データに従って量子化誤差を確定する。ここで、カレント検査反復の量子化データは、カレント検査反復の量子化データを量子化することによって得られる。
【０６０７】
量子化誤差に応じて、カレント検査反復に対応する目標データビット幅が確定される。
【０６０８】
一実施形態では、量子化誤差に従ってカレント検査反復に対応する目標データビット幅を確定することは、以下を含む。
【０６０９】
量子化誤差が第１のプリセットしきい値以上の場合は、カレント検査反復に対応するデータビット幅を増やして、カレント検査反復に対応する目標データビット幅を取得する。または、
【０６１０】
量子化誤差が第２のプリセットしきい値以下の場合、カレント検査反復に対応するデータビット幅が縮小され、カレント検査反復に対応する目標データビット幅が取得される。
【０６１１】
一実施形態では、量子化誤差が第１のプリセットしきい値以上である場合、カレント検査反復に対応するデータビット幅を増加させて、カレント検査反復に対応する目標データビット幅を取得することは、以下を含む。
【０６１２】
量子化誤差が第１のプリセットしきい値以上の場合、第１のプリセットビット幅のステップ長さによって第１の中間データビット幅を確定する。
【０６１３】
戻り実行は、量子化誤差が第１のプリセットしきい値より小さくなるまで、カレント検査反復で量子化予定のデータおよびカレント検査反復の量子化データに従って量子化誤差を確定する。ここで、カレント検査反復の量子化データはこれは、第１の中間データのビット幅に従って、カレント検査反復の量子化データを量子化することによって取得される。
【０６１４】
一実施形態では、量子化誤差が第２のプリセットしきい値以下である場合、カレント検査反復に対応するデータビット幅を減らすことは、以下を含む。
【０６１５】
量子化誤差が第２のプリセットしきい値以下の場合、第２のプリセットビット幅のステップ長さによって第２の中間データビット幅を確定する。
【０６１６】
実行に戻り、カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに従って、量子化誤差が第２のプリセットしきい値より大きくなるまで、量子化誤差を確定する。ここで、カレント検査反復の量子化データこれは、第２の中間データのビット幅に従って、カレント検査反復の量子化データを量子化することによって取得される。
【０６１７】
一実施形態では、量子化予定のデータのデータ変動範囲を取得することは、以下を含む。
【０６１８】
小数点位置の変動範囲を取得する。ここで、小数点位置の変動範囲を使用して、量子化予定のデータのデータ変動範囲を表すことができ、小数点位置の変動範囲は、量子化予定のデータのデータ変動範囲と正の相関がある。
【０６１９】
一実施形態では、小数点位置の変動範囲取得することは、以下が含まれる。
【０６２０】
カレント検査反復前の一つ前の検査反復に対応する小数点位置と、一つ前の検査反復前の履歴反復に対応する小数点位置によって第１の平均値を確定する。ここで、前の検査反復は目標反復間隔である。前の反復間隔に対応する検査反復。
【０６２１】
カレント検査反復に対応する小数点位置とカレント検査反復前の履歴反復の小数点位置によって第２の平均値を確定する。ここで、カレント検査反復に対応する小数点位置は、カレント検査反復に対応する目標データに基づいている。量子化するビット幅とデータが確定される。
【０６２２】
第１の誤差は、第１の平均値および第２の平均値に従って確定され、第１の誤差は、小数点位置の変動範囲を表すためである。
【０６２３】
一実施形態では、カレント検査反復に対応する小数点位置およびカレント検査反復前の履歴反復の小数点位置に従って第２の平均値を確定することは、以下を含む。
【０６２４】
中間スライディング平均値のプリセット数を取得する。ここで、中間スライディング平均値のそれぞれは、カレント検査反復の前の検査反復のプリセット数に従って確定される。
【０６２５】
第２の平均値は、カレント検査反復の小数点位置と、プリセット中間スライド平均値の数に従って確定される。
【０６２６】
一実施形態では、カレント検査反復に対応する小数点位置およびカレント検査反復前の履歴反復の小数点位置に従って第２の平均値を確定することは、以下を含む。
【０６２７】
第２の平均値は、カレント検査反復に対応する小数点位置と第１の平均値に従って確定される。
【０６２８】
一実施形態では、この方法はさらに以下を含む。
【０６２９】
第２の平均値は、カレント検査反復の取得データビット幅調整値に従って更新される。カレント検査反復のデータビット幅調整値は、カレント検査反復の目標データビット幅と初期データビットに基づいて確認される。
【０６３０】
一実施形態では、カレント検査反復の取得されたデータビット幅調整値に従って第２の平均値を更新することは、以下を含む。
【０６３１】
カレント検査反復のデータビット幅調整値がプリセットパラメータよりも大きい場合、第２の平均値は、カレント検査反復のデータビット幅調整値に従って減少する。
【０６３２】
カレント検査反復のデータビット幅調整値がプリセットパラメータよりも小さい場合、第２の平均値は、カレント検査反復のデータビット幅調整値に従って増やす。
【０６３３】
一実施形態では、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定することは、以下を含む。
【０６３４】
目標反復間隔は第１の誤差によって確定され、目標反復間隔は第１の誤差と負の相関がある。
【０６３５】
一実施形態では、量子化予定のデータのデータ変動範囲を取得することは、さらに以下を含む。
【０６３６】
データビット幅の変化傾向を取得する。
【０６３７】
小数点位置の変動範囲とデータビット幅の変化傾向によって、量子化予定のデータのデータ変動範囲を確定する。
【０６３８】
一実施形態では、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定することは、さらに以下を含む。
【０６３９】
取得した第１誤差と第２誤差に応じて、目標反復間隔を確定する。ここで、第１誤差は小数点位置の変動範囲を表すために使用され、第２誤差はデータビット幅の変化傾向を表すためである。
【０６４０】
一実施形態では、取得された第２の誤差および第１の誤差によって目標反復間隔を確定することは、以下を含む。
【０６４１】
第１の誤差と第２の誤差の最大値を目標誤差とする。
【０６４２】
目標反復間隔は、目標誤差によって確定される。ここで、目標誤差は、目標反復間隔と負の相関がある。
【０６４３】
一実施形態では、第２の誤差は、量子化誤差によって確定される。
【０６４４】
量子化誤差は、カレント検査反復で量子化予定のデータとカレント検査反復の量子化後のデータによって確定され、第２の誤差は量子化誤差と正の相関がある。
【０６４５】
一実施形態では、この方法は、ニューラルネットワークをトレーニングまたは微調整するために使用され、この方法は、以下をさらに含む。
【０６４６】
カレント反復が第１のプリセット反復よりも大きい場合、目標反復間隔は、量子化予定のデータのデータ変動範囲によって確定され、量子化パラメータは、目標反復間隔によって調整される。
【０６４７】
一実施形態では、この方法はさらに以下を含む。
【０６４８】
カレント反復が第１のプリセット反復以下の場合、第１のプリセット反復間隔が目標反復間隔として採用され、量子化パラメータは第１のプリセット反復間隔によって調整される。
【０６４９】
一実施形態では、この方法はさらに以下を含む。
【０６５０】
カレント反復が第２のプリセット反復以上の場合、第２のプリセット反復間隔を目標反復間隔として使用し、第２のプリセット反復間隔によって量子化パラメータを調整する。
【０６５１】
ここで、第２のプリセット反復は第１のプリセット反復よりも大きく、第２のプリセット反復間隔は第１のプリセット反復間隔よりも大きくなる。
【０６５２】
一実施形態では、この方法はさらに以下を含む。
【０６５３】
ニューラルネットワークの収束度がプリセット条件を満たす場合、カレント検査反復が第２のプリセット反復以上であると判断される。
【０６５４】
一実施形態では、この方法はさらに以下を含む。
【０６５５】
カレント反復が第２のプリセット反復以上であり、第２の誤差がプリセット誤差値より大きい場合、反復間隔は、量子化予定のデータのデータ変動範囲によって確定され、反復間隔によって反復間隔が再確定される。データビット幅。
【０６５６】
一実施形態では、量子化予定のデータは、ニューロンデータ、重みデータ、または勾配データのうちの少なくとも１つである。
【０６５７】
一実施形態では、メモリおよびプロセッサを含み、メモリがコンピュータプログラムを格納し、プロセッサがコンピュータプログラムを実行するときの実装が上記のとおりであることを特徴とするニューラルネットワークの量子化パラメータ調整装置が提供される。メソッドの任意のステップ。
【０６５８】
一実施形態では、コンピュータプログラムは、コンピュータ可読記憶媒体に格納され、コンピュータプログラムが実行されると、上記のいずれかに記載された方法のステップが実行される。
【０６５９】
一実施形態では、ニューラルネットワークの量子化パラメータ調整装置が提供され、その装置は以下を含むことを特徴とする。
【０６６０】
取得モジュールは、量子化予定のデータのデータ変動範囲を取得するためである。
【０６６１】
反復間隔確定モジュールは、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定するように構成され、目標反復間隔によってニューラルネットワーク操作における量子化パラメータを調整し、ここで、目標反復間隔は、少なくとも１回の反復では、ニューラルネットワークの量子化パラメータを使用して、ニューラルネットワーク演算で量子化予定のデータの量子化操作を実装する。
【０６６２】
一実施形態では、量子化パラメータは小数点位置を含み、小数点位置は、量子化予定のデータに対応する量子化データ内の小数点位置であり、装置はさらに以下を含む。
【０６６３】
量子化パラメータ確定モジュールは、カレント検査反復に対応する目標データビット幅およびカレント検査反復で量子化予定のデータによって、目標反復間隔の反復に対応する小数点位置を確定するように構成され、ニューラルネットワーク動作を調整する。
【０６６４】
ここで、目標反復間隔の反復に対応する小数点位置は一致している。
【０６６５】
一実施形態では、量子化パラメータは小数点位置を含み、小数点位置は、量子化予定のデータに対応する量子化データ内の小数点位置であり、装置はさらに以下を含む。
【０６６６】
カレント検査反復に対応する目標データビット幅によって、目標反復間隔に対応するデータビット幅を確定するように構成されるデータビット幅確定モジュール。ここで、目標反復間隔の反復に対応するデータビット幅は一致している。
【０６６７】
量子化パラメータ確定モジュールは、取得した小数点位置反復間隔によって目標反復間隔の反復に対応する小数点位置を調整し、目標反復間隔に対応するデータビット幅を調整してニューラルネットワーク動作の小数点位置を調整するように構成される。
【０６６８】
ここで、小数点位置反復間隔には少なくとも１つの反復が含まれ、小数点位置反復間隔内の反復小数点位置は一致している。
【０６６９】
一実施形態では、小数点位置反復間隔は、目標反復間隔以下である。
【０６７０】
一実施形態では、量子化パラメータは、スケーリング係数をさらに含み、スケーリング係数は、小数点位置と同期して更新される。
【０６７１】
一実施形態では、量子化パラメータはさらにオフセットを含み、オフセットは小数点位置と同期して更新される。
【０６７２】
一実施形態では、データビット幅確定モジュールは、以下を含む。
【０６７３】
量子化誤差確定ユニットは、カレント検査反復の量子化データおよびカレント検査反復の量子化データに従って量子化誤差を確定するように構成され、カレント検査反復の量子化データは、カレント検査反復の量子化データを比較する。データは量子化に取得される。
【０６７４】
データビット幅確定ユニットは、量子化誤差に従って、カレント検査反復に対応する目標データビット幅を確定するように構成される。
【０６７５】
一実施形態では、データビット幅確定ユニットは、量子化誤差に従って、カレント検査反復に対応する目標データビット幅を確定するように構成される。
【０６７６】
量子化誤差が第１のプリセットしきい値以上の場合は、カレント検査反復に対応するデータビット幅を増やして、カレント検査反復に対応する目標データビット幅を取得する。または、
【０６７７】
量子化誤差が第２のプリセットしきい値以下の場合、カレント検査反復に対応するデータビット幅が縮小され、カレント検査反復に対応する目標データビット幅が取得される。
【０６７８】
一実施形態では、データビット幅確定ユニットは、量子化誤差が第１のプリセットしきい値以上である場合、カレント検査反復に対応するデータを取得するために、カレント検査反復に対応するデータビット幅を増やすように構成される。目標データのビット幅は、特に次の目的で使用される。
【０６７９】
量子化誤差が第１のプリセットしきい値以上の場合、第１のプリセットビット幅のステップ長さによって第１の中間データビット幅を確定する。
【０６８０】
戻り実行は、量子化誤差が第１のプリセットしきい値より小さくなるまで、カレント検査反復で量子化予定のデータおよびカレント検査反復の量子化データに従って量子化誤差を確定する。ここで、カレント検査反復の量子化データはこれは、第１の中間データのビット幅に従って、カレント検査反復の量子化データを量子化することによって取得される。
【０６８１】
一実施形態では、データビット幅確定ユニットは、量子化誤差が第２のプリセットしきい値以下である場合、カレント検査反復に対応するデータビット幅を減少させて、対応するカレント検査反復を取得するように構成される。の目標データビット幅が特に次の目的で使用される場合：
量子化誤差が第２のプリセットしきい値以下の場合、第２のプリセットビット幅のステップ長さによって第２の中間データビット幅を確定する。
【０６８２】
実行に戻り、カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに従って、量子化誤差が第２のプリセットしきい値より大きくなるまで、量子化誤差を確定する。ここで、カレント検査反復の量子化データこれは、第２の中間データのビット幅に従って、カレント検査反復の量子化データを量子化することによって取得される。
【０６８３】
一実施形態では、取得モジュールは以下を含む。
【０６８４】
最初の取得モジュールは、小数点位置の変動範囲を取得するためである。小数点位置の変動範囲は、量子化予定のデータのデータ変化の範囲を表すために使用でき、小数点位置の変動範囲は、量子化予定のデータに対応する。データの変化には正の相関関係がある。
【０６８５】
一実施形態では、第１の取得モジュールは、以下を含む。
【０６８６】
第１の平均値確定ユニットは、カレント検査反復前の一つ前の検査反復に対応する小数点位置および前の検査反復前の履歴反復に対応する小数点位置に従って第１の平均値を確定するように構成される。検査反復は、目標反復間隔前の一つ前の反復間隔に対応する検査反復である。
【０６８７】
第２の平均値確定ユニットは、カレント検査反復に対応する小数点位置およびカレント検査反復前の履歴反復の小数点位置に従って第２の平均値を確定するように構成される；ここで、カレント検査反復に対応する小数点位置は、カレント検査反復に対応する目標データビット幅と量子化予定のデータが確定される。
【０６８８】
第１の誤差確定ユニットは、第１の平均値および第２の平均値に従って第１の誤差を確定するように構成され、第１の誤差は、小数点位置の変動範囲を表すためである。
【０６８９】
一実施形態では、第２の平均値確定ユニットは、具体的に以下のように構成される。
【０６９０】
中間スライディング平均値のプリセット数を取得する。ここで、中間スライディング平均値のそれぞれは、カレント検査反復の前の検査反復のプリセット数に従って確定される。
【０６９１】
第２の平均値は、カレント検査反復の小数点位置と、プリセット中間スライド平均値の数に従って確定される。
【０６９２】
一実施形態では、第２の平均値確定ユニットは、カレント検査反復に対応する小数点位置および第１の平均値に従って第２の平均値を確定するように特に構成される。
【０６９３】
一実施形態では、第２の平均値確定ユニットは、カレント検査反復の取得されたデータビット幅調整値に従って第２の平均値を更新するように構成される。
【０６９４】
ここで、カレント検査反復のデータビット幅調整値は、カレント検査反復の目標データビット幅および初期データビット幅によって確定される。
【０６９５】
一実施形態では、第２の平均値確定ユニットは、特に以下のために、カレント検査反復の取得されたデータビット幅調整値に従って第２の平均値を更新するように構成される。
【０６９６】
カレント検査反復のデータビット幅調整値がプリセットパラメータよりも大きい場合、第２の平均値は、カレント検査反復のデータビット幅調整値に従って減少する。
【０６９７】
カレント検査反復のデータビット幅調整値がプリセットパラメータよりも小さい場合、第２の平均値は、カレント検査反復のデータビット幅調整値に従って増やす。
【０６９８】
一実施形態では、反復間隔確定モジュールは、第１の誤差によって目標反復間隔を確定するように構成され、目標反復間隔は、第１の誤差と負の相関がある。
【０６９９】
一実施形態では、取得モジュールはさらに以下を含む。
【０７００】
第２の取得モジュールは、データビット幅の変化傾向を取得するように構成される。小数点位置の変動範囲とデータビット幅の変化傾向によって、量子化予定のデータのデータ変動範囲を確定する。
【０７０１】
一実施形態では、反復間隔確定モジュールは、取得された第１の誤差および第２の誤差によって目標反復間隔を確定するようにさらに構成される；ここで、第１の誤差は、小数点位置の変化の範囲を表すためである。第２の誤差は、データビット幅の変化傾向を特徴づけるためである。
【０７０２】
一実施形態では、ルート反復間隔確定モジュールは、特に以下について、取得された第１の誤差および第２の誤差によって、目標反復間隔を確定するように構成される。
【０７０３】
第１の誤差と第２の誤差の最大値を目標誤差とする。
【０７０４】
目標反復間隔は、目標誤差によって確定される。ここで、目標誤差は、目標反復間隔と負の相関がある。
【０７０５】
一実施形態では、第２の誤差は、量子化誤差によって確定される。
【０７０６】
量子化誤差は、カレント検査反復で量子化予定のデータとカレント検査反復の量子化後のデータによって確定され、第２の誤差は量子化誤差と正の相関がある。
【０７０７】
一実施形態では、装置は、ニューラルネットワークのトレーニングまたは微調整を実施するために使用され、反復間隔確定モジュールは、以下の目的にも使用される。
【０７０８】
カレント反復が第１のプリセット反復よりも大きい場合、目標反復間隔は、量子化予定のデータのデータ変動範囲によって確定され、量子化パラメータは、目標反復間隔によって調整される。
【０７０９】
一実施形態では、反復間隔確定モジュールは、次のようにさらに構成される：カレント反復が第１のプリセット反復以下である場合、第１のプリセット反復間隔を目標反復間隔として使用し、それに従ってそれを設定する。第１のプリセット反復間隔で量子化パラメータを調整する。
【０７１０】
一実施形態では、反復間隔確定モジュールは、以下のようにさらに構成される。
【０７１１】
カレント反復が第２のプリセット反復以上の場合、第２のプリセット反復間隔を目標反復間隔として使用し、第２のプリセット反復間隔によって量子化パラメータを調整する。
【０７１２】
ここで、ニューラルネットワークの収束の程度がプリセット条件を満たす場合、カレント検査反復が第２のプリセット反復以上であると判断される。
【０７１３】
第２のプリセット反復は第１のプリセット反復よりも大きく、第２のプリセット反復間隔は第１のプリセット反復間隔よりも大きくなっている。
【０７１４】
一実施形態では、反復間隔確定モジュールは、カレント反復が第２のプリセット反復以上であり、第２の誤差がプリセット誤差値よりも大きい場合、次に、量子化予定のデータのデータに従って、以下のようにさらに構成される。変動範囲は、反復間隔を確定して、反復間隔によってデータビット幅を再確定する。
【０７１５】
前述の装置の実施形態は例示にすぎず、本開示の装置は他の方法でも実施できることを理解されたい。例えば、上記の実施形態におけるユニット／モジュールの分割は、論理的機能分割にすぎず、実際の実施において他の分割方法があり得る。たとえば、複数のユニット、モジュール、またはコンポーネントを組み合わせたり、別のシステムに統合したり、一部の機能を省略したり、実装しなかったりする場合がある。
【０７１６】
個別のコンポーネントとして説明されているユニットまたはモジュールは、物理的に分離されている場合とされていない場合がある。ユニットまたはモジュールとして記述されるコンポーネントは、物理ユニットである場合と物理ユニットではない場合がある。つまり、１つの装置に配置されている場合と、複数の装置に分散されている場合がある。本開示の実施形態の解決策は、実際の必要性に従ってユニットのいくつかまたはすべてを選択することによって実施することができる。
【０７１７】
さらに、特に明記しない限り、本開示の様々な実施形態における機能ユニット／モジュールは、１つのユニット／モジュールに統合され得るか、または各ユニット／モジュールが物理的に単独で存在し得るか、または２つ以上のユニット／モジュールが存在し得る。モジュールは一緒に統合されている。上記の統合ユニット／モジュールは、ハードウェアまたはソフトウェアプログラムモジュールの形式で実装できる。
【０７１８】
前述の装置の実施形態は例示にすぎず、本開示の装置は他の方法でも実施できることを理解されたい。例えば、上記の実施形態におけるユニット／モジュールの分割は、論理的機能分割にすぎず、実際の実施において他の分割方法があり得る。たとえば、複数のユニット、モジュール、またはコンポーネントを組み合わせたり、別のシステムに統合したり、一部の機能を省略したり、実装しなかったりする場合がある。
【０７１９】
個別のコンポーネントとして説明されているユニットまたはモジュールは、物理的に分離されている場合とされていない場合がある。ユニットまたはモジュールとして記述されるコンポーネントは、物理ユニットである場合と物理ユニットではない場合がある。つまり、１つの装置に配置されている場合と、複数の装置に分散されている場合がある。本開示における実施形態の解決策は、実際の必要性に従ってユニットのいくつかまたはすべてを選択することによって実施することができる。
【０７２０】
さらに、特に明記しない限り、本開示の様々な実施形態における機能ユニット／モジュールは、１つのユニット／モジュールに統合され得るか、または各ユニット／モジュールが物理的に単独で存在し得るか、または２つ以上のユニット／モジュールが存在し得る。モジュールは一緒に統合されている。上記の統合ユニット／モジュールは、ハードウェアまたはソフトウェアプログラムモジュールの形式で実装できる。
【０７２１】
統合ユニット／モジュールがハードウェアの形で実装されている場合、ハードウェアはデジタル回路、アナログ回路などである可能性がある。ハードウェア構造の物理的な実現には、トランジスタ、メモリスタなどが含まれるが、これらに限定されない。特に指定のない限り、人工知能プロセッサは、ＣＰＵ、ＧＰＵ、ＦＰＧＡ、ＤＳＰ、ＡＳＩＣなどの適切なハードウェアプロセッサである。特に指定のない限り、記憶ユニットは、抵抗性ランダムアクセスメモリ（ＲＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）などの適切な磁気ストレージメディアまたは磁気光学ストレージメディアのいずれかである。ＳＲＡＭ（静的ランダムアクセスメモリ）、拡張動的ランダムアクセスメモリ（ＥＤＲＡＭ）、高帯域幅メモリ（ＨＢＭ）、ハイブリッドメモリキューブ（ＨＭＣ）など。待つ。
【０７２２】
統合されたユニット／モジュールがソフトウェアプログラムモジュールの形式で実装され、独立した製品として販売または使用される場合、コンピュータで読み取り可能なメモリに格納できる。この理解に基づいて、本開示の技術案は、本質的に、または既存の技術に寄与する部分、または技術案の全部または一部をソフトウェア製品の形で具体化することができ、コンピュータソフトウェア製品はメモリに格納され、これは、コンピュータ装置（パーソナルコンピュータ、サーバ、またはネットワーク装置などであり得る）に、本開示の様々な実施形態に記載された方法のステップの全部または一部を実行させるためのいくつかの命令を含む。前述のメモリには、Ｕディスク、読み取り専用メモリ（ＲＯＭ、読み取り専用メモリ）、ランダムアクセスメモリ（ＲＡＭ、ランダムアクセスメモリ）、モバイルハードディスク、磁気ディスク、または光ディスク、およびプログラムコードを格納できるその他のメディアが含まれる。
【０７２３】
この技術案において、本開示はまた、上記のニューラルネットワーク量子化パラメータ確定装置を含む人工知能チップを開示する。
【０７２４】
技術案において、本開示はまた、記憶装置、インターフェース装置、制御装置、および前述の人工知能チップを含むボードカードを開示し、ここで、人工知能チップおよび記憶装置、制御装置、およびインターフェイス装置はそれぞれ接続されている。記憶装置はデータの格納に使用される。インターフェイス装置は人工知能チップと外部装置間のデータ伝送を実装するためである。制御装置はスマートチップの状態が監視される。
【０７２５】
図１２は、本開示の実施形態によるボードカードのブロック図を示す。図１２を参照すると、チップ３８９に加えて、ボードカードはまた、他の支持構成要素を含み得る。支持構成要素は、記憶装置３９０、インターフェース装置３９１および制御装置３９２を含むが、これらに限定されない。
【０７２６】
記憶装置３９０は、データを記憶するためのバスを介して人工知能チップに接続されている。記憶装置は、記憶ユニット３９３の複数のグループを含み得る。記憶ユニットと人工知能チップの各グループは、バスを介して接続されている。記憶ユニットの各グループはＤＤＲＳＤＲＡＭ（英語：Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  ＳＤＲＡＭ、ダブルレート同期動的ランダムアクセスメモリ）である可能性があることが理解できる。
【０７２７】
ＤＤＲは、クロック周波数を上げることなく、ＳＤＲＡＭの速度を２倍にすることができる。ＤＤＲを使用すると、クロックパルスの立ち上がりエッジと立ち下がりエッジでデータを読み取ることができる。ＤＤＲの速度は標準のＳＤＲＡＭの２倍である。一実施形態では、貯蔵装置は、貯蔵ユニットの４つのグループを含み得る。記憶ユニットの各グループには、複数のＤＤＲ４粒子（チップ）を含めることができる。一実施形態では、人工知能チップは、４つの７２ビットＤＤＲ４コントローラを含み得る。７２ビットＤＤＲ４コントローラでは、６４ビットがデータ伝送に使用され、８ビットがＥＣＣ検証に使用される。記憶ユニットの各グループでＤＤＲ４−３２００粒子を使用すると、データ伝送の理論上の帯域幅が２５６００ＭＢ／秒に達する可能性があることが理解できる。
【０７２８】
一実施形態では、記憶ユニットの各グループは、並列に配置された複数のダブルレート同期動的ランダムアクセスメモリを含む。ＤＤＲは、１クロックサイクルで２回データを送信できる。各記憶ユニットのデータ伝送とデータストレージを制御するために、ＤＤＲを制御するためのコントローラがチップに提供されている。
【０７２９】
インターフェース装置は、人工知能チップに電気的に接続されている。インターフェイス装置は、人工知能チップと外部装置（サーバーやコンピュータなど）との間のデータ伝送を実装するためである。例えば、一実施形態では、インターフェース装置は、標準のＰＣＩＥインターフェースであり得る。たとえば、処理されるデータは、データ伝送を実現するために、標準のＰＣＩＥインターフェイスを介してサーバーからチップに伝送される。送信にＰＣＩＥ３．０Ｘ１６インターフェイスを使用する場合、理論上の帯域幅は１６０００ＭＢ／ｓに達することが好ましい。別の実施形態において、インターフェース装置はまた、他のインターフェースであり得る。本開示は、インターフェースユニットがスイッチング機能を実現できる限り、上記の他のインターフェースの特定の症状を限定しない。さらに、人工知能チップの計算結果は、インターフェース装置によって外部装置（サーバーなど）に送信される。
【０７３０】
制御装置は人工知能チップに電気的に接続されている。制御装置は、人工知能チップの状態を監視するためである。具体的には、人工知能チップと制御装置は、ＳＰＩインターフェースを介して電気的に接続され得る。制御装置は、シングルチップマイクロコンピュータ（マイクロコントローラユニット、ＭＣＵ）を含み得る。たとえば、人工知能チップは、複数の処理チップ、複数の処理コア、または複数の処理回路を含み得、複数の負荷を駆動することができる。したがって、人工知能チップは、複数の負荷や軽負荷など、さまざまな動作状態になる可能性がある。制御装置は、人工知能チップ内の複数の処理チップ、複数の処理、および／または複数の処理回路の動作状態の調整を実現することができる。
【０７３１】
可能な実施方法において、前述の人工知能チップを含む電子装置が開示される。電子機器には、データ処理装置、ロボット、コンピュータ、プリンター、スキャナー、タブレット、スマート端末、携帯電話、ドライビングレコーダー、ナビゲーター、センサー、カメラ、サーバー、クラウドサーバー、カメラ、カメラ、プロジェクター、時計、ヘッドセットが含まれる、モバイルストレージ、ウェアラブル装置、車両、家電製品、および／または医療機器。
【０７３２】
輸送手段には飛行機、船および／または車両が含まれ、家庭用電化製品にはテレビ、エアコン、電子レンジオーブン、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスストーブ、レンジフードが含まれる。医療機器には核磁気共鳴が含まれる。Ｂ−超音波および／または心電計。
【０７３３】
上記は、次の条項に従ってよりよく理解できる。
【０７３４】
Ａ１、データビット幅を調整する方法。この方法には次のものが含まれる。
【０７３５】
量子化予定のデータに対して量子化処理を実行するためのデータビット幅を取得する。ここで、データビット幅は、量子化予定のデータの量子化処理の後の量子化後のデータのビット幅を示す。
【０７３６】
データビット幅に基づいて、１グループの量子化予定のデータに対して量子化処理を実行して、１グループの量子化予定のデータを１グループの量子化後のデータに変換し、１グループの量子化後のデータはデータビット幅を有する。
【０７３７】
１グループの量子化予定のデータを１グループの量子化後のデータと比較して、データビット幅に関連する量子化誤差を確定する。
【０７３８】
データビット幅は、確定された量子化誤差に基づいて調整される。
【０７３９】
Ａ２、１グループの量子化予定のデータを１グループの量子化後のデータと比較し、データビット幅に関連する量子化誤差を確定する、条項Ａ１に記載の方法は、以下を含む。
【０７４０】
データビット幅に応じて量子化間隔を確定する。
【０７４１】
量子化誤差は、量子化間隔、１グループの量子化後のデータ、および１グループの量子化予定のデータによって確定される。
【０７４２】
Ａ３、量子化間隔、１グループの量子化後のデータ、および１グループの量子化予定のデータによって量子化誤差を確定する、条項Ａ２に記載の方法は、以下を含む。
【０７４３】
量子化間隔によって１グループの量子化後のデータに対して逆量子化を実行して、１グループの逆量子化データを取得する。ここで、１グループの逆量子化データフォーマットは、１グループの量子化予定のデータのデータフォーマットと同じである。と同様。
【０７４４】
１グループの逆量子化データと１グループの量子化予定のデータによって、量子化誤差を確定する。
【０７４５】
Ａ４、確定された量子化誤差に基づいてデータビット幅を調整する、条項Ａ１からＡ３のいずれか１つに記載の方法には、以下が含まれる。
【０７４６】
量子化誤差をプリセットしきい値と比較する。プリセットしきい値には、第１のしきい値と第２のしきい値の少なくとも１つが含まれる。
【０７４７】
データビット幅は、比較結果に応じて調整される。
【０７４８】
Ａ５、比較の結果によってデータビット幅を調整することを特徴とする、条項Ａ４による方法は、以下を含む。
【０７４９】
量子化誤差が第１のしきい値以上であると判断した場合、データビット幅が増やす。
【０７５０】
Ａ６、データビット幅を増やすことを含む、条項Ａ５に記載の方法：
データビット幅は、調整後のデータビット幅を確定するために、第１のプリセットビット幅のステップ長さによって増やす。
【０７５１】
Ａ７、以下をさらに含むことを特徴とする、条項Ａ６による方法。
【０７５２】
調整後のデータビット幅に基づいて、１グループの量子化予定のデータに対して量子化処理を実行し、１グループの量子化予定のデータを別の１グループの量子化後のデータに変換し、別の１グループの量子化後のデータは調整後のデータビット幅；および
１グループの量子化予定のデータを別の１グループの量子化予定のデータと比較し、別の量子化誤差が第１のプリセットしきい値より小さくなるまで、調整後のデータビット幅に関連する別の量子化誤差を確定する。
【０７５３】
Ａ８、メソッドが反復的に実行されることを特徴とする、条項Ａ７に基づくメソッド。
【０７５４】
Ａ９、比較の結果によってデータビット幅を調整することを特徴とする、条項Ａ４による方法は、以下を含む。
【０７５５】
量子化誤差が第２のしきい値以下であると判断した場合、データビット幅を減らす。
【０７５６】
Ａ１０、データビット幅を縮小することを含む、条項Ａ９に記載の方法：
データビット幅は、調整後のデータビット幅を確定するために、第２のプリセットビット幅のステップ長さによって減少する。
【０７５７】
Ａ１１、Ａ１０項に基づく方法であり、以下をさらに含むことを特徴とする。
【０７５８】
調整後のデータビット幅に基づいて、１グループの量子化予定のデータに対して量子化処理を実行し、１グループの量子化予定のデータを別の１グループの量子化後のデータに変換し、別の１グループの量子化後のデータは調整後のデータビット幅；および
１グループの量子化予定のデータと別の１グループの量子化後のデータに基づいて、別の量子化誤差が第２のプリセットしきい値より大きくなるまで、調整後のデータビット幅に関連する別の量子化誤差を確定する。
【０７５９】
Ａ１２、メソッドが反復的に実行されることを特徴とする、条項Ａ１１に基づくメソッド。
【０７６０】
Ａ１３、比較の結果によってデータビット幅を調整することを特徴とする、条項Ａ４による方法は、以下を含む。
【０７６１】
量子化誤差が第１のしきい値と第２のしきい値との間にあると判断したことに応じて、データビット幅が維持される。
【０７６２】
Ａ１４、条項Ａ１からＡ１３のいずれか１つに基づく方法であり、さらに以下を含むことを特徴とする。
【０７６３】
１グループの量子化予定のデータと調整後のデータビット幅に基づいて、１グループの量子化予定のデータに対して量子化処理を実行するための量子化パラメータを更新する。
更新された量子化パラメータに基づいて、１グループの量子化予定のデータに対して量子化処理を実行する。
【０７６４】
Ａ１５、条項Ａ１に基づく方法は、以下をさらに含むことを特徴とする。
【０７６５】
量子化予定のデータのデータ変動範囲を取得する。
【０７６６】
量子化予定のデータのデータ変動範囲によって、目標反復間隔を確定し、目標反復間隔によってデータビット幅を調整し、目標反復間隔には少なくとも１回の反復が含まれる。
【０７６７】
Ａ１６、量子化予定のデータのデータ変動範囲を取得することは、以下を含む、条項Ａ１５に記載の方法。
【０７６８】
小数点位置の変動範囲を取得する。ここで、小数点位置の変動範囲は、量子化予定のデータのデータ変動範囲を表すために使用され、小数点位置の変動範囲は、量子化予定のデータのデータ変動範囲と正の相関がある。
【０７６９】
Ａ１７、取得小数点位置の変化の範囲が以下を含むことを特徴とする、条項Ａ１６による方法。
【０７７０】
カレント検査反復前の一つ前の検査反復に対応する小数点位置と、一つ前の検査反復前の履歴反復に対応する小数点位置によって第１の平均値を確定する。ここで、前の検査反復は目標反復間隔の前である。前の反復間隔に対応する検査反復。
【０７７１】
カレント検査反復に対応する小数点位置とカレント検査反復前の履歴反復の小数点位置によって第２の平均値を確定する。ここで、カレント検査反復に対応する小数点位置は、カレント検査反復に対応する目標データビット幅に基づいている。幅と量子化予定のデータを確定する。
【０７７２】
第１の誤差は、第１の平均値および第２の平均値に従って確定され、第１の誤差は、小数点位置の変動範囲を表すためである。
【０７７３】
Ａ１８、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定する、条項Ａ１５に記載の方法は、以下を含む。
【０７７４】
目標反復間隔は第１の誤差によって確定され、目標反復間隔は第１の誤差と負の相関がある。
【０７７５】
Ａ１９、量子化予定のデータのデータ変動範囲を取得することは、以下をさらに含む、条項Ａ１５に記載の方法。
【０７７６】
データビット幅の変化傾向を取得する。
【０７７７】
小数点位置の変動範囲とデータビット幅の変化傾向によって、量子化予定のデータのデータ変動範囲を確定する。
【０７７８】
Ａ２０、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、さらに以下を含むことを特徴とする、条項Ａ１９に記載の方法。
【０７７９】
目標反復間隔は、取得した第１の誤差と第２の誤差によって確定される。第１の誤差は小数点位置の変動範囲を表すために使用され、第２の誤差はデータビット幅の変化傾向を表すためである。
【０７８０】
Ａ２１、取得された第１の誤差および第２の誤差によって目標反復間隔を確定する、条項Ａ２０に記載の方法は、以下を含む。
【０７８１】
第１の誤差と第２の誤差の最大値を目標誤差とする。
【０７８２】
目標反復間隔は、目標誤差によって確定される。ここで、目標誤差は、目標反復間隔と負の相関がある。
【０７８３】
Ａ２２、第２の誤差が量子化誤差によって確定される、条項Ａ２０またはＡ２１に記載の方法。
【０７８４】
量子化誤差は、カレント検査反復で量子化予定のデータとカレント検査反復の量子化後のデータによって確定され、第２の誤差は量子化誤差と正の相関がある。
【０７８５】
Ａ２３、ニューラルネットワークのトレーニングまたは微調整に使用されることを特徴とする、Ａ１５項からＡ２２項のいずれか１つに記載の方法であり、この方法はさらに以下を含む。
【０７８６】
カレント反復が第１のプリセット反復よりも大きい場合、目標反復間隔は、量子化予定のデータのデータ変動範囲によって確定され、量子化パラメータは、目標反復間隔によって調整される。
【０７８７】
Ａ２４、方法がさらに以下を含むことを特徴とする、条項Ａ２３による方法。
【０７８８】
カレント反復が第１のプリセット反復以下の場合、第１のプリセット反復間隔が目標反復間隔として採用され、量子化パラメータは第１のプリセット反復間隔によって調整される。
【０７８９】
Ａ２５、条項Ａ２３またはＡ２４に記載の方法であって、以下をさらに含む方法。
【０７９０】
カレント反復が第２のプリセット反復以上の場合、第２のプリセット反復間隔を目標反復間隔として使用し、第２のプリセット反復間隔によって量子化パラメータを調整する。
【０７９１】
ここで、第２のプリセット反復は第１のプリセット反復よりも大きく、第２のプリセット反復間隔は第１のプリセット反復間隔よりも大きくなる。
【０７９２】
Ａ２６、方法がさらに以下を含むことを特徴とする、条項Ａ２５による方法。
【０７９３】
ニューラルネットワークの収束度がプリセット条件を満たす場合、カレント検査反復が第２のプリセット反復以上であると判断される。
【０７９４】
Ａ２７、方法がさらに以下を含むことを特徴とする、条項Ａ２５による方法。
【０７９５】
カレント反復が第２のプリセット反復以上であり、第２の誤差がプリセット誤差値より大きい場合、反復間隔は、量子化予定のデータのデータ変動範囲によって確定され、反復間隔によって反復間隔が再確定される。データビット幅。
【０７９６】
Ａ２８、データビット幅の調整装置で、次のものが含まれる。
【０７９７】
量子化予定のデータに対して量子化処理を実行するためのデータビット幅を取得するように構成される取得モジュール。データビット幅は、量子化予定のデータの量子化処理の後の量子化後のデータのビット幅を示す。
【０７９８】
量子化モジュールは、データビット幅に基づいて１グループの量子化予定のデータに対して量子化処理を実行して、１グループの量子化予定のデータを１グループの量子化後のデータに変換するように構成され、１グループの量子化予定のデータはデータを有するビット幅。
【０７９９】
１グループの量子化予定のデータを１グループの量子化後のデータと比較し、データビット幅に関連する量子化誤差を確定するように構成される確定モジュール。
【０８００】
調整は、確定された量子化誤差に基づいてデータビット幅を調整する。
【０８０１】
Ａ２９、比較モジュールが以下を含むことを特徴とする、条項Ａ２８による装置。
【０８０２】
データビット幅によって量子化間隔を確定するように構成される間隔確定モジュール。
【０８０３】
誤差確定モジュールは、量子化間隔、１グループの量子化後のデータ、および１グループの量子化予定のデータによって量子化誤差を確定するように構成される。
【０８０４】
Ａ３０、誤差確定モジュールが以下を含む、条項Ａ２９に記載の装置。
【０８０５】
量子化モジュールは、量子化間隔によって１グループの量子化後のデータに対して逆量子化を実行して、１グループの逆量子化データを取得するように構成され、１グループの逆量子化データフォーマットは、１グループの量子化予定のデータと同じである。同じデータフォーマットである；および
量子化誤差確定モジュールは、１グループの逆量子化データおよび１グループの量子化予定のデータによって量子化誤差を確定するように構成される。
【０８０６】
Ａ３１、調整モジュールが以下を含む、条項Ａ２８からＡ３０のいずれか１つに記載の装置。
【０８０７】
量子化誤差をプリセットしきい値と比較するように構成される比較モジュール。プリセットしきい値には、第１のしきい値と第２のしきい値の少なくとも１つが含まれる。
【０８０８】
ビット幅調整モジュールは、比較結果に応じてデータビット幅を調整するように構成される。
【０８０９】
Ａ３２、ビット幅調整モジュールが以下を含む、条項Ａ３１に記載の装置。
【０８１０】
増加モジュールは、量子化誤差が第１のしきい値以上であるとの確定に応答してデータビット幅を増やすように構成される。
【０８１１】
Ａ３３、追加モジュールが以下を含むことを特徴とする、Ａ３２項に基づく装置。
【０８１２】
ステップ長さ増加モジュールは、調整後のデータビット幅を確定するために、第１のプリセットビット幅のステップ長さによってデータビット幅を増やすように構成される。
【０８１３】
Ａ３４、Ａ３３項に基づく装置で、次の特徴がある。
【０８１４】
量子化モジュールはさらに、調整後のデータビット幅に基づいて１グループの量子化予定のデータに対して量子化処理を実行するように構成され、１グループの量子化予定のデータを別の１グループの量子化後のデータに変換する。１グループの量子化後のデータは、調整後のデータビット幅を持つ。
【０８１５】
確定モジュールはさらに、１グループの量子化予定のデータを別の１グループの量子化予定のデータのと比較し、別の量子化誤差が以下になるまで、調整後のデータビット幅に関連する別の量子化誤差を確定するように構成される。第１のプリセットしきい値。
【０８１６】
Ａ３５、装置が反復呼び出される、条項Ａ３４に記載の装置。
【０８１７】
Ａ３６、調整モジュールが以下を含む、条項Ａ３１に記載の装置。
【０８１８】
減少モジュールは、量子化誤差が第２のしきい値以下であると判断した場合にデータビット幅を縮小するように構成される。
【０８１９】
Ａ３７、減少モジュールが以下を含む、条項Ａ３６に記載の装置。
【０８２０】
ステップ長さ減少モジュールは、調整後のデータビット幅を確定するために、第２のプリセットビット幅のステップ長さによってデータビット幅を減少するためである。
【０８２１】
Ａ３８、Ａ３７項に基づく装置で、次の特徴がある。
【０８２２】
量子化モジュールはさらに、調整後のデータビット幅に基づいて１グループの量子化予定のデータに対して量子化処理を実行するように構成され、１グループの量子化予定のデータを別の１グループの量子化後のデータに変換する。１グループの量子化後のデータは、調整後のデータビット幅を持つ。
【０８２３】
確定モジュールはさらに、別の量子化誤差がより大きくなるまで、量子化予定のデータの１つのセットおよび別の１グループの量子化後のデータに基づいて、調整後のデータビット幅に関連する別の量子化誤差を確定するように構成される。第２のプリセットしきい値。
【０８２４】
Ａ３９、装置が反復呼び出される、条項Ａ３８に記載の装置。
【０８２５】
Ａ４０、調整モジュールが以下を含む、条項Ａ３１に記載の装置。
【０８２６】
維持モジュールは、量子化誤差が第１のしきい値と第２のしきい値との間にあるとの確定に応答してデータビット幅を維持するように構成される。
【０８２７】
Ａ４１、条項Ａ２８からＡ４０のいずれか１つに基づく装置で、さらに以下を備えている。
【０８２８】
１グループの量子化予定のデータおよび調整後のデータビット幅に基づいて、１グループの量子化予定のデータに対して量子化処理を実行するための量子化パラメータを更新するように構成される更新モジュール。
【０８２９】
量子化モジュールは、更新された量子化パラメータに基づいて１グループの量子化予定のデータに対して量子化処理を実行するようにさらに構成される。
【０８３０】
Ａ４２、条項Ａ２８に準拠した装置で、さらに以下を備えていることを特徴とする。
【０８３１】
範囲モジュールは、量子化予定のデータのデータ変動範囲を取得するためである。
【０８３２】
間隔モジュールは、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔によってデータビット幅を調整するように構成され、目標反復間隔には少なくとも１回の反復が含まれる。
【０８３３】
Ａ４３、範囲モジュールが以下を含む、条項Ａ４２に記載の装置。
【０８３４】
小数点位置モジュールは、小数点位置の変動範囲を取得するために使用され、小数点位置の変動範囲は、量子化予定のデータのデータ変動範囲を表すために使用され、小数点位置の変動範囲は、量子化予定のデータのデータ変動と同じである。振幅は正の相関がある。
【０８３５】
Ａ４４、小数点位置モジュールが含む、条項Ａ４３に記載の装置。
【０８３６】
第１の平均値モジュールは、カレント検査反復の前の一つ前の検査反復に対応する小数点位置と、一つ前の検査反復の前の履歴反復に対応する小数点位置に従って第１の平均値を確定するためである。検査の反復は、目標反復間隔前の一つ前の反復間隔に対応しているか。
【０８３７】
第２の平均モジュールは、カレント検査反復に対応する小数点位置と、カレント検査反復前の履歴反復の小数点位置によって第２の平均値を確定するためである。ここで、カレント検査反復に対応する小数点位置は、カレント検査反復に基づいている。検査の反復に対応する目標データのビット幅と量子化予定のデータが確定される。
【０８３８】
第１の誤差モジュールは、第１の平均値および第２の平均値に従って第１の誤差を確定するように構成され、第１の誤差は、小数点位置の変動範囲を表すためである。
【０８３９】
Ａ４５、間隔モジュールが以下を含む、条項Ａ４２に記載の装置。
【０８４０】
第１の間隔モジュールは、第１の誤差によって目標反復間隔を確定するように構成されており、目標反復間隔は第１の誤差と負の相関がある。
【０８４１】
Ａ４６、範囲モジュールがさらに以下を含む、条項Ａ４２に記載の装置。
【０８４２】
データビット幅の変化傾向を取得するための傾向モジュール。
【０８４３】
データ変動範囲モジュールは、小数点位置の変動範囲とデータビット幅の変化傾向によって、量子化予定のデータのデータ変動範囲を確定するためである。
【０８４４】
Ａ４７、間隔モジュールがさらに以下を含む、条項Ａ４６に記載の装置。
【０８４５】
反復間隔モジュールは、取得した第１の誤差と第２の誤差によって目標反復間隔を確定するためである。第１の誤差は小数点位置の変動範囲を表すために使用され、第２の誤差はデータビット幅を表すためである。変化の傾向。
【０８４６】
Ａ４８、反復間隔モジュールが含む、条項Ａ４７に記載の装置。
【０８４７】
第１の誤差と第２の誤差うちの最大値を目標誤差とするように構成される目標誤差モジュール。
【０８４８】
目標反復間隔モジュールは、目標誤差に従って目標反復間隔を確定するように構成される。ここで、目標誤差は目標反復間隔に負の相関がある。
【０８４９】
Ａ４９、第２の誤差が量子化誤差によって確定される、条項Ａ４７またはＡ４８による装置。
【０８５０】
量子化誤差は、カレント検査反復で量子化予定のデータとカレント検査反復の量子化後のデータによって確定され、第２の誤差は量子化誤差と正の相関がある。
【０８５１】
Ａ５０、条項Ａ４２からＡ４９のいずれか１つに記載の装置であって、ニューラルネットワークをトレーニングまたは微調整するために使用され、さらに以下を含む装置。
【０８５２】
第１の反復モジュールは、カレント反復が第１のプリセット反復よりも大きい場合に量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔によって量子化パラメータを調整するように構成される。
【０８５３】
Ａ５１、条項Ａ５０に記載の装置であって、装置がさらに以下を含む、装置。
【０８５４】
第２の反復モジュールは、カレント反復が第１のプリセット反復間隔以下の場合に、第１のプリセット反復間隔を目標反復間隔として使用し、第１のプリセット反復間隔によって調整するように構成される。量子化パラメータ。
【０８５５】
Ａ５２、条項Ａ５０またはＡ５１に記載の装置であって、装置がさらに以下を含む、装置。
【０８５６】
第３の反復モジュールは、カレント反復が第２のプリセット反復以上の場合、第２のプリセット反復間隔を目標反復間隔として使用し、第２のプリセット反復間隔によって第２のプリセット反復間隔を調整するように構成される。
【０８５７】
ここで、第２のプリセット反復は第１のプリセット反復よりも大きく、第２のプリセット反復間隔は第１のプリセット反復間隔よりも大きくなる。
【０８５８】
Ａ５３、装置がさらに以下を含む、条項Ａ５２に記載の装置。
【０８５９】
コンバージェンスモジュールは、ニューラルネットワークのコンバージェンス度がプリセット条件を満たす場合に、現在の検証イテレーションが第２のプリセットイテレーション以上であると判断するように構成される。
【０８６０】
Ａ５４、装置がさらに以下を含むことを特徴とするＡ５２項による装置。
【０８６１】
カレント反復が第２のプリセット反復以上であり、第２の誤差がプリセット誤差値より大きい場合、反復間隔は、量子化予定のデータのデータ変動範囲によって確定され、反復間隔によって反復間隔が再確定される。
【０８６２】
Ａ５５、コンピュータプログラムがその上に格納されることを特徴とするコンピュータ可読記憶媒体。これは、実行されると、条項Ａ１〜Ａ２７のいずれか１つに従って方法を実施する。
【０８６３】
Ａ５６、チップがＡ２８項からＡ５４項のいずれかに従ってデータを処理するための装置を含むことを特徴とする人工知能チップ。
【０８６４】
Ａ５７、第５６条に基づく人工知能チップを含むことを特徴とする電子機器。
【０８６５】
Ａ５８、その特徴を有するボードカードは、以下を含む。ボードカードは、記憶装置、インターフェース装置、制御装置、および第５６項による人工知能チップを含む。
【０８６６】
ここで、人工知能チップは、記憶装置、制御装置、およびインターフェイス装置に接続されている。
【０８６７】
記憶装置は、データを格納するためである。
【０８６８】
インターフェイス装置は、人工知能チップと外部装置間のデータ伝送を実装するためである。
【０８６９】
制御装置は、人工知能チップの状態を監視するためである。
【０８７０】
Ａ５９、Ａ５８項に基づくボードカードは、次の特徴を備えている。
【０８７１】
記憶装置には次のものが含まれる。記憶ユニットの複数のグループ、記憶ユニットの各グループはバスを介して人工知能チップに接続され、記憶ユニットはＤＤＲＳＤＲＡＭである。
【０８７２】
チップには各記憶ユニットのデータ伝送とデータストレージを制御するためのＤＤＲコントローラが含まれる。
【０８７３】
インターフェイス装置は、標準のＰＣＩＥインターフェイスである。
【０８７４】
ニューラルネットワークの量子化の問題を解決するために、次の技術案を提案しました（２０１９１０５０５２３９．７）。具体的には、ニューラルネットワークの量子化方法と装置および関連製品が提供される。
【０８７５】
この開示は、人工知能技術の分野、特にニューラルネットワークの量子化方法および装置、ならびに関連製品に関する。
【０８７６】
人工知能技術の継続的な発展に伴い、その応用分野はますます広範になり、画像認識、音声認識、自然言語処理の分野で広く適用されている。しかし、人工知能アルゴリズムの複雑さが増やすにつれて、処理する必要のあるデータの量とデータの次元は絶えず増加している。計算効率と計算結果の精度のバランスをとる方法は、人工知能の分野で緊急の問題である。
【０８７７】
これを考慮して、本開示は、ニューラルネットワーク量子化技術案を提案する。
【０８７８】
本開示の一態様によれば、ニューラルネットワーク量子化法が提供される。ニューラルネットワークにおいて量子化予定の任意の層について、この方法は以下を含む。
【０８７９】
量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータを確定する。ここで、量子化予定のデータは、ニューロン、重み、オフセット、および勾配のうちの少なくとも１つを含む。
【０８８０】
量子化予定のデータは、対応する量子化パラメータに従って量子化されて量子化後のデータを取得するため、ニューラルネットワークは量子化後のデータに従って操作を実行する。
【０８８１】
本開示の別の態様によれば、ニューラルネットワークの量子化装置が提供され、装置は、ニューラルネットワークにおいて量子化予定の任意の層を量子化するために使用され、装置は、以下を含む。
【０８８２】
量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータを確定するように構成される量子化パラメータ確定モジュール。ここで、量子化予定のデータは、ニューロン、重み、オフセット、および勾配のうちの少なくとも１つを含む。
【０８８３】
量子化モジュールは、対応する量子化パラメータに従って量子化予定のデータを量子化するために使用され、量子化後のデータを取得し、ニューラルネットワークが量子化後のデータに従って操作を実行するようにする。
【０８８４】
本開示の別の態様によれば、人工知能チップが提供され、そのチップは、上記のニューラルネットワークの量子化装置を含む。
【０８８５】
本開示の別の態様によれば、上記のような人工知能チップを含む電子装置が提供される。
【０８８６】
本開示の別の態様によれば、ボードカードが提供され、ボードカードは、記憶装置、インターフェース装置および制御装置、ならびに上記の人工知能チップと、人工知能チップおよび記憶装置とを備える。制御装置とインターフェース装置は別々に接続されている；記憶装置はデータを記憶するためである；インターフェース装置は人工知能チップと外部装置との間のデータ伝送を実現するためである；制御装置、人工知能チップの状態を監視するためである。
【０８８７】
本開示のこの実施形態では、ニューラルネットワークで量子化予定の任意の層について、量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータが確定され、量子化予定のデータはニューロンおよび重みを含む。オフセットと勾配の少なくとも１つ。対応する量子化パラメータに従って量子化予定のデータを量子化し、量子化予定のデータを取得する。これにより、ニューラルネットワークは量子化予定のデータによって操作を実行できる。各層で量子化予定のデータとより一致する量子化パラメータを使用して、量子化する各層を量子化する。これにより、各層の計算結果の精度を確保しながら、各層の計算効率を向上させることができる。ニューラルネットワークの全体的な計算結果の精度を確保することを前提として、ニューラルネットワークの全体的な計算効率を向上させることも可能である。
【０８８８】
添付の図面を参照する例示的な実施形態の以下の詳細な説明によれば、本開示の他の特徴および態様が明らかになるであろう。
【０８８９】
本明細書に含まれ、本明細書とともに本明細書の一部を構成する図面は、本開示の例示的な実施形態、特徴、および態様を示し、本開示の原理を説明するためである。
【０８９０】
図２−１は、本開示の一実施形態によるニューラルネットワークの量子化方法のフローチャートを示している。
【０８９１】
図２−２は、本開示の一実施形態によるニューラルネットワークの量子化方法のフローチャートを示している。
【０８９２】
図２−３は、本開示の一実施形態によるニューラルネットワークの量子化方法のフローチャートを示している。
【０８９３】
図２−４は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
【０８９４】
図２−５は、本開示の一実施形態によるニューラルネットワーク量子化法の量子化パラメータがオフセットを含まない場合の、量子化前後のデータ対応の概略図を示す。
【０８９５】
図２−６は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
【０８９６】
図２−７は、本開示の一実施形態によるニューラルネットワーク量子化法における量子化パラメータがオフセットを含む場合の、量子化前後のデータ対応の概略図を示す。
【０８９７】
図２−８は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
【０８９８】
図２−９は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
【０８９９】
図２−１０は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
【０９００】
図２−１１は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
【０９０１】
図２−１２は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
【０９０２】
図２−１３は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
【０９０３】
図２−１４は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
【０９０４】
図２−１５は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
【０９０５】
図２−１６は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
【０９０６】
図２−１７は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
【０９０７】
図２−１８は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
【０９０８】
図２−１９は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
【０９０９】
図２−２０は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
【０９１０】
図２−２１は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
【０９１１】
図２−２２は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
【０９１２】
図２−２３は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
【０９１３】
図２−２４は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
【０９１４】
図２−２５は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
【０９１５】
図２−２６は、本開示の一実施形態によるニューラルネットワークの量子化装置の概略図を示す。
【０９１６】
図２−２７は、本開示の一実施形態によるニューラルネットワークの量子化装置の概略図を示す。
【０９１７】
図２−２８は、本開示の一実施形態によるニューラルネットワークの量子化装置の概略図を示す。
【０９１８】
図２−２９は、本開示の一実施形態によるニューラルネットワークの量子化装置の概略図を示す。
【０９１９】
図２−３０は、本開示の一実施形態によるニューラルネットワークの量子化装置の概略図を示す。
【０９２０】
図２−３１は、本開示の一実施形態によるボードカードのブロック図を示している。
【０９２１】
ニューラルネットワークの量子化の問題を解決するために、次の技術案を提案しました（２０１９１０５０５２３９．７）。本開示の実施形態における技術案は、本開示の実施形態における添付の図面を参照して明確かつ完全に説明される。明らかに、記載された実施形態は、本開示の実施形態の一部であるが、すべての実施形態ではない。本開示の実施形態に基づいて、創造的な作業なしに当業者によって得られた他のすべての実施形態は、本開示の保護範囲に含まれる。
【０９２２】
本開示の特許請求の範囲、明細書および図面における「第１」、「第２」、「第３」および「第４」という用語は、特定の順序を説明するのではなく、異なる対象を区別するためであることを理解されたい。本開示の明細書および特許請求の範囲で使用される「含む」および「含む」という用語は、記載された特徴、全体、ステップ、操作、要素および／または構成要素の存在を示すが、１つまたは複数の他の特徴、全体を除外しない。ステップ、操作、要素、コンポーネント、および／またはそれらのコレクションの存在または追加。
【０９２３】
この開示明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、開示を限定することを意図するものではないことも理解されたい。本開示および特許請求の範囲で使用されるように、文脈が他の状況を明確に示さない限り、単数形「一」、「１つ」および「当該」は、複数形を含むことを意図している。本開示の明細書および特許請求の範囲で使用される「および／または」という用語は、関連してリストされた１つまたは複数の項目の任意の組み合わせおよびすべての可能な組み合わせを指し、これらの組み合わせを含むことをさらに理解されたい。
【０９２４】
ここでの「例示的」という専用の単語は、「例、実施形態、または例示として役立つ」ことを意味する。本明細書で「例示的」として記載される任意の実施形態は、他の実施形態よりも優れているまたはより優れていると解釈される必要はない。
【０９２５】
さらに、本開示をよりよく説明するために、以下の特定の実施形態において、多数の特定の詳細が与えられる。当業者は、この開示が特定の特定の詳細なしに実施することもできることを理解すべきである。場合によっては、本開示の要点を強調するために、当業者に周知の方法、手段、要素、および回路は詳細に説明されていない。
【０９２６】
ニューラルネットワークで計算されるデータは、通常、浮動小数点データフォーマットまたは高精度の固定点データフォーマットである。ニューラルネットワークを搭載したチップ上でニューラルネットワークを実行する場合、浮動小数点データフォーマットまたは高精度の固定小数点データフォーマットはさまざまに計算される。ニューラルネットワーク演算のデータ、計算負荷、およびメモリアクセスのオーバーヘッドは比較的大きいである。計算効率を向上させるために、ニューラルネットワークで計算されるデータを量子化することができる。量子化後のデータフォーマットは、通常、ビット幅が短く精度が低い固定小数点データフォーマットである。ニューラルネットワーク演算を実行するために低精度の量子化予定のデータを使用すると、計算とメモリアクセスの量を減らすことができる。量子化後のデータフォーマットは、ビット幅が短い固定小数点データフォーマットにすることができる。浮動小数点データフォーマットで計算されるデータは、固定点データフォーマットで計算されるデータに量子化でき、固定点形式でより高い精度で計算されるデータは、固定点形式でより低い精度で計算されるデータに量子化される。
【０９２７】
量子化精度とは、量子化後のデータと事前に量子化後のデータとの間の誤差の大きさを指すことが理解できる。量子化の精度は、ニューラルネットワークの操作結果の精度に影響を与える可能性がある。精度が高いほど、計算結果の精度は高くなるが、計算量が多くなり、メモリアクセスのオーバーヘッドが大きくなる。ビット幅が短い量子化予定のデータと比較して、ビット幅が長い量子化予定のデータは量子化精度が高く、ニューラルネットワーク演算の実行にも使用すると精度が高くなる。ただし、ニューラルネットワーク演算に使用する場合、ビット幅が長い量子化では、データ計算量が多くなり、メモリアクセスのオーバーヘッドが大きくなり、計算効率が低下する。同様に、同じデータを量子化する場合、異なる量子化パラメータを使用して得られた量子化データは、異なる量子化精度を持ち、異なる量子化結果を生成し、計算効率と計算結果の精度にも異なる影響を及ぼする。ニューラルネットワークは、計算効率と計算結果の精度のバランスをとるために量子化され、計算されるデータのデータ特性により一致する量子化後のデータビット幅と量子化パラメータを使用できる。
【０９２８】
ニューラルネットワークで計算されるデータには、重み、ニューロン、オフセット、勾配が含まれる場合がある。ニューラルネットワークで計算されるデータの従来の量子化では、通常、ニューラルネットワーク全体に同じ量子化パラメータが設定される。たとえば、ニューラルネットワークには４つの畳み込み層と２つの完全に接続された層があり、計算されるデータはニューロン（通常は入力ニューロン）である。ニューラルネットワークの量子化用に量子化パラメータＡのセットを設定し、量子化パラメータＡを使用できる。４つの畳み込み層と２つの完全に接続された層のニューロンを量子化する。ニューラルネットワークの各層のニューロンが異なるため、各層で使用されるアルゴリズムも異なる。同じ量子化パラメータを使用して各層を量子化する。量子化パラメータは各層のニューロンの特性に適応できず、ニューラルネットワークの全体的な量子化精度が低く、計算結果の精度が低い。さらに、ニューラルネットワークの量子化パラメータのセットを設定する場合、計算結果の精度を考慮して量子化の精度を向上させると、ビット幅が長い量子化ビット幅のセットを設定すると、ニューラルネットワークの計算効率が低下する。したがって、従来のニューラルネットワーク量子化法では、量子化精度の向上と計算効率の向上の効果的なバランスをとることができない。
【０９２９】
図２−１は、本開示の一実施形態によるニューラルネットワークの量子化方法のフローチャートを示している。ニューラルネットワークの量子化方法は、汎用プロセッサ（中央処理ユニットＣＰＵ、グラフィックス処理ユニットＧＰＵなど）および特殊用途プロセッサ（人工知能プロセッサ、科学計算プロセッサ、デジタル信号プロセッサなど）に適用できる。ニューラルネットワーク量子化法によって適用されるプロセッサのタイプは制限されない。
【０９３０】
図２−１に示すように、ニューラルネットワークで量子化予定の層の場合、ニューラルネットワークの量子化方法には次のものが含まれる。
【０９３１】
ステップＳ１０：量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータを確定する。量子化予定のデータには、ニューロン、重み、オフセット、および勾配の少なくとも１つが含まれる。
【０９３２】
ニューラルネットワークで量子化予定の層は、ニューラルネットワークの任意の層にすることができる。ニューラルネットワークの一部またはすべての層は、要件に応じて量子化する層として確定できる。ニューラルネットワークに量子化される複数の層が含まれる場合、量子化される各層は連続的または非連続的であり得る。ニューラルネットワークに応じて、量子化予定の層のタイプも異なり得る。例えば、量子化予定の層は、畳み込み層、完全に接続された層などであり得る。本開示は、量子化層の数およびタイプを制限しない。
【０９３３】
可能な実装方法では、量子化予定のデータには、ニューロン、重み、オフセット、および勾配の少なくとも１つが含まれる。
【０９３４】
量子化予定の層の操作を実行するためである操作データには、ニューロン、重み、オフセット、および勾配が含まれ得る。量子化予定の層のニューロン、重み、オフセット、および勾配のうちの少なくとも１つは、要件に従って量子化予定のデータとして使用され得る。量子化する層に量子化予定のデータの種類が複数ある場合、本開示の量子化法を、量子化予定のデータの種類ごとに使用して、量子化予定のデータの種類ごとに対応する量子化データを取得し、様々な量子化予定のデータを使用することができる。量子化する必要のない算術データは、量子化する層の算術を実行する。さらに、要件に応じて、量子化予定の層の様々な動作データの全部または一部を、量子化予定のデータとして確定することができ、これは、本開示に限定されない。
【０９３５】
ニューラルネットワーク演算の推論段階は、トレーニングされたニューラルネットワークが設定されたタスクを完了するために順方向演算に供される段階を含み得る。ニューラルネットワークの推論段階では、ニューロン、重み、オフセット、および勾配のうちの少なくとも１つを、量子化予定のデータとして使用することができる。本開示の実施形態の方法に従って量子化を行った後、量子化予定のデータを使用して、量子化する層を完成させる。操作。
【０９３６】
ニューラルネットワーク演算の微調整段階には、トレーニングされたニューラルネットワークでプリセット反復回数の順方向演算と逆方向演算を実行すること、および設定されたタスクの段階に適応するようにパラメータを微調整することが含まれる。ニューラルネットワーク演算の微調整段階において、ニューロン、重み、オフセット、および勾配のうちの少なくとも１つを、本開示の実施形態の方法に従って量子化することができ、次いで、量子化予定のデータを使用して、量子化予定の層の順方向を完成させる。操作または逆操作。
【０９３７】
ニューラルネットワーク演算のトレーニングフェーズには、次のものが含まれる。トレーニングされたニューラルネットワークを取得するための初期化されたニューラルネットワークの反復トレーニング。トレーニングされたニューラルネットワークは特定のタスクを実行できる。ニューラルネットワークのトレーニング段階において、ニューロン、重み、オフセット、および勾配のうちの少なくとも１つを、本開示の実施形態の方法に従って量子化することができ、次いで、量子化後のデータを使用して、量子化予定の層の順方向演算を完了する。または逆の操作。
【０９３８】
量子化予定の層に対応する量子化パラメータは、１つの量子化パラメータまたは複数の量子化パラメータであり得る。
【０９３９】
量子化パラメータは、小数点位置など、量子化予定のデータを量子化するためであるパラメータを含み得る。小数点位置は、量子化後のデータ内の小数点位置を確定するために使用できる。量子化パラメータには、スケーリング係数、オフセットなどを含めることもできる。ニューラルネットワークが量子化される複数の層を含む場合、量子化される各層は、対応する量子化パラメータを有し得、量子化される各層に対応する量子化パラメータは、異なるかまたは同じであり得るが、これは本開示に限定されない。
【０９４０】
量子化予定の層で量子化される異なるデータは、異なる量子化パラメータに対応することができる。例えば、量子化予定の層１のニューロンは、量子化パラメータ１に対応し得、そして量子化予定の層１の重みは、量子化パラメータ２に対応し得る。量子化する層において量子化予定のデータの種類ごとに対応する量子化パラメータを確定する方法は、プリセット量子化パラメータを検索して量子化パラメータを直接確定する方法、対応関係を検索して量子化パラメータを確定する方法、または量子化予定のデータに基づく計算を含み得る。パラメータを量子化する方法。
【０９４１】
量子化する層で量子化予定のデータの種類ごとに対応する量子化パラメータを、ニューラルネットワークで量子化する層に設定することができる。設定された量子化パラメータは、設定されたストレージスペースに格納できる。設定されたストレージスペースは、オンチップまたはオフチップのストレージスペースにすることができる。たとえば、設定された量子化パラメータは、レイヤ識別子によって区別され、設定されたストレージスペースに格納される。量子化する各層を量子化する場合、設定した記憶域に対応する量子化パラメータを抽出した後、量子化を行うことができる。量子化予定のデータの種類ごとに対応する量子化パラメータは、経験値に応じて設定できる。量子化予定のデータの種類ごとに設定した量子化パラメータも要件に応じて更新できる。たとえば、次の層の量子化パラメータを前の層の量子化パラメータに従って更新できる。
【０９４２】
量子化パラメータは、データ特性と量子化パラメータの対応を検索するか、量子化する各層で量子化予定のデータのデータ特性または量子化する層の層特性に応じて層特性と量子化パラメータの対応を検索することで確定できる。たとえば、量子化予定のデータのデータ分布がまばらで密である場合、それぞれ異なる量子化パラメータに対応する可能性がある。量子化予定のデータのデータ分布に対応する量子化パラメータは、対応関係を検索することによって確定することができる。別の例として、量子化予定の層が畳み込み層または完全に接続された層である場合、それは異なる量子化パラメータに対応することができ、量子化予定の層が畳み込み層である場合、畳み込み層に対応する量子化パラメータを検索することができる。
【０９４３】
設定された量子化パラメータ計算方法を用いて、量子化される各層で量子化予定のデータによって、量子化される各層に対応する量子化パラメータを計算することも可能である。たとえば、丸めアルゴリズムを使用して、量子化予定のデータの最大絶対値とプリセットされたデータビット幅によって、量子化パラメータの小数点位置を計算できる。
【０９４４】
ステップＳ２０：対応する量子化パラメータに従って量子化予定のデータを量子化して、量子化後のデータを取得し、それにより、ニューラルネットワークは、量子化後のデータに従って操作を実行する。
【０９４５】
設定された量子化アルゴリズムを使用して、量子化パラメータに従って量子化予定のデータを量子化し、量子化後のデータを取得することができる。たとえば、丸めアルゴリズムを量子化アルゴリズムとして使用でき、量子化後のデータをデータのビット幅と小数点位置によって丸めて量子化して、量子化後のデータを取得できる。それらの中で、丸めアルゴリズムは、切り上げ、切り下げ、ゼロへの丸め、および５への丸めを含み得る。この開示は、量子化アルゴリズムの特定の実装を制限するものではない。
【０９４６】
ニューラルネットワークに量子化する層が複数ある場合、量子化する各層で各タイプの量子化予定のデータは、対応する量子化パラメータを使用して量子化できる。量子化予定のデータに対応する量子化パラメータは、量子化予定のデータの特性により適しているため、量子化される各層の各タイプの量子化予定のデータの量子化精度は、層の計算要件により一致する。この層の計算結果の精度を確保することを前提として、この層の計算効率を向上させ、この層の計算効率と計算結果の精度とのバランスをとることができる。ニューラルネットワーク全体で、量子化する各層の計算結果の精度と計算効率のバランスを実現し、ニューラルネットワークの計算結果の精度と計算効率のバランスも実現する。
【０９４７】
ニューラルネットワークの推論、トレーニング、および微調整の過程で、目標データをオフラインまたはオンラインで量子化できる。ここで、オフライン量子化は、量子化パラメータを使用して、量子化予定のデータに対してオフライン処理を実行することである。オンライン量子化は、量子化パラメータを使用して量子化予定のデータのオンライン処理である。たとえば、ニューラルネットワークが人工知能チップ上で実行されている場合、量子化予定のデータと量子化パラメータを人工知能チップの外部のコンピューティング装置に送信してオフラインで量子化したり、人工知能チップ以外のコンピューティング装置を使用して事前に量子化予定のデータを分析したりできる。そしてオフライン量子化のための量子化パラメータ。ニューラルネットワークを実行する人工知能チップのプロセスでは、人工知能チップは、量子化パラメータを使用して、量子化後のデータのオンライン量子化を実行できる。ニューラルネットワークに量子化する複数の層が含まれている場合、量子化する各層をオンラインとオフラインでそれぞれ量子化できる。この開示は、量子化される各層の量子化プロセスがオンラインであるかオフラインであるかを制限するものではない。
【０９４８】
この実施形態では、ニューラルネットワークで量子化予定の任意の層について、量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータが確定され、量子化予定のデータは、ニューロン、重み、オフセットと勾配の少なくとも１つ。量子化予定のデータは、対応する量子化パラメータに従って量子化され、量子化後のデータを取得する。これにより、ニューラルネットワークは量子化後のデータに従って操作を実行する。各層で量子化予定のデータとより一致する量子化パラメータを使用して、量子化する各層を量子化する。これにより、各層の計算結果の精度を確保しながら、各層の計算効率を向上させることができる。ニューラルネットワークの全体的な計算結果の精度を確保することを前提として、ニューラルネットワークの全体的な計算効率を向上させることも可能である。
【０９４９】
可能な実装方法では、量子化パラメータは、小数点位置、スケーリング係数、およびオフセットのうちの少なくとも１つを含み、小数点位置は、量子化後の小数点位置であり、スケーリング係数は、量子化後のデータである。量子化予定のデータの最大値と最大絶対値の比率、およびオフセットは、量子化予定のデータの中間値である。
【０９５０】
可能な実装では、量子化パラメータは小数点位置を含み得る。次の式（１）を使用して、量子化予定のデータを量子化し、量子化後のデータＩｘを取得できる。
Ｉｘ＝ｒｏｕｎｄ（Ｆｘ／２ｓ）                    式（１）
【０９５１】
ここ、ｓは小数点位置、Ｉｘは量子化予定のデータ、Ｆｘは量子化予定のデータ、ｒｏｕｎｄは丸めによる丸め演算である。式（１）の丸め演算の代わりに、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算を使用できるなど、他の丸め演算も使用できることは理解できる。一定のデータビット幅の場合、小数点位置による量子化により得られた量子化データにおいて、小数点以下の桁数が多いほど、量子化予定のデータの量子化精度が高くなることが理解できる。
【０９５２】
可能な実装では、量子化パラメータはスケーリング係数を含み得る。次の式（２）を使用して、量子化予定のデータを量子化し、量子化後のデータＩｘを取得できる。
Ｉｘ＝ｒｏｕｎｄ（Ｆｘ／ｆ）                      式（２）
【０９５３】
ここで、ｆはスケーリング係数、Ｉｘは量子化後のデータ、Ｆｘは量子化予定のデータ、ｒｏｕｎｄは丸めによって実行される丸め演算である。式（２）の切り上げの代わりに、切り上げ、切り下げ、ゼロへの切り上げなどの他の丸め演算も使用できることは理解できる。データビット幅が一定の場合、さまざまなスケーリング係数を使用して、量子化後のデータの数値範囲を調整できることは理解できる。
可能な実装では、量子化パラメータはオフセットを含み得る。次の式（３）を使用して、量子化予定のデータを量子化し、量子化後のデータＩｘを取得できる。
Ｉｘ＝ｒｏｕｎｄ（Ｆｘ−ｏ）                  式（３）
【０９５４】
ここで、ｏはオフセット、Ｉｘは量子化後のデータ、Ｆｘは量子化予定のデータ、ｒｏｕｎｄは丸めによって実行される丸め演算である。他の丸め演算も使用できることは理解できる。たとえば、式（３）の丸め演算の代わりに、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算が使用される。データビット幅が一定の場合、異なるオフセットを使用して、量子化後のデータの値と量子化前のデータとの間のオフセットを調整できることは理解できる。
【０９５５】
可能な実装では、量子化パラメータは、小数点位置およびスケーリング係数を含み得る。次の式（４）を使用して、量子化予定のデータを量子化し、量子化後のデータＩｘを取得できる。
Ｉｘ＝ｒｏｕｎｄ（Ｆｘ／２ｓｘｆ）                    式（４）
【０９５６】
ここで、ｓは小数点位置、ｆはスケーリング係数、Ｉｘは量子化後のデータ、Ｆｘは量子化予定のデータ、ｒｏｕｎｄは丸めによって実行される丸め演算である。式（４）の丸め演算の代わりに、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算を使用するなど、他の丸め計算方法も使用できることは理解できる。
【０９５７】
可能な実装では、量子化パラメータは、小数点位置およびオフセットを含み得る。次の式（５）を使用して、量子化予定のデータを量子化し、量子化予定のデータＩｘを取得できる。
Ｉｘ＝ｒｏｕｎｄ（（Ｆｘ−ｏ）／２ｓ）                    式（５）
【０９５８】
ここで、ｓは小数点位置、ｏはオフセット、Ｉｘは量子化後のデータ、Ｆｘは量子化予定のデータ、ｒｏｕｎｄは丸めによって実行される丸め演算である。式（５）の丸め演算の代わりに、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算を使用するなど、他の丸め計算方法も使用できることは理解できる。
【０９５９】
可能な実装方法では、量子化パラメータは、小数点位置、スケーリング係数、およびオフセットを含み得る。次の式（６）を使用して、量子化予定のデータを量子化し、量子化後のデータＩｘを取得できる。
Ｉｘ＝ｒｏｕｎｄ（（Ｆｘ−ｏ）／２ｓｘｆ）                  式（６）
【０９６０】
ここで、ｓは小数点位置、ｆはスケーリング係数、ｏはオフセット、Ｉｘは量子化後のデータ、Ｆｘは量子化予定のデータ、ｒｏｕｎｄは丸めによって実行される丸め演算である。式（６）の丸め演算の代わりに、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算を使用するなど、他の丸め計算方法も使用できることは理解できる。
【０９６１】
この実施形態では、量子化パラメータは、小数点位置、スケーリング係数、およびオフセットのうちの少なくとも１つを含む。量子化パラメータのさまざまな組み合わせを使用して、量子化予定のデータを量子化すると、さまざまな精度の量子化結果を生成できる。量子化パラメータは、要件に応じて柔軟に組み合わせて、必要に応じて使用できる。
【０９６２】
図２−２は、本開示の一実施形態によるニューラルネットワークの量子化方法のフローチャートを示している。図２−２に示すように、ニューラルネットワークの量子化方法のステップＳ１０には次のものが含まれる。
【０９６３】
ステップＳ１１：量子化予定のデータと量子化パラメータの間の対応関係を検索することにより、量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータを確定する。
【０９６４】
可能な実装方法では、量子化される各層で各タイプの量子化予定のデータに対応する量子化パラメータは、格納されたプリセット値であり得る。ニューラルネットワークでは、量子化予定のデータと量子化パラメータの対応関係を確立できる。対応関係には、各タイプの量子化予定のデータと量子化する各層の量子化パラメータの対応関係を含めることができ、共有アクセスのために各層に対応関係を格納できる。収納スペース。量子化予定のデータとニューラルネットワークの量子化パラメータとの間に複数の対応を確立することも可能であり、量子化される各層は対応の１つに対応する。各層の対応関係は、この層専用のストレージスペースに格納することも、各層の対応関係を、各層が共有およびアクセスできるストレージスペースに格納することもできる。
【０９６５】
量子化予定のデータと量子化パラメータとの間の対応は、量子化される複数のデータとそれに対応する複数の量子化パラメータとの間の対応を含み得る。例えば、量子化予定のデータと量子化パラメータとの間の対応関係Ａは、量子化される２つのデータ、すなわち、量子化予定の層１のニューロンおよび重み、ならびにニューロンの対応する小数点位置１、スケーリング係数１、およびオフセット１の３つの量子化パラメータを含み得る。重みは、小数点位置２とオフセット２の２つの量子化パラメータに対応する。この開示は、量子化後のデータと量子化パラメータとの間の対応関係の特定のフォーマットを制限するものではない。
【０９６６】
この実施形態では、量子化予定の層において各タイプの量子化予定のデータに対応する量子化パラメータは、量子化予定のデータと量子化パラメータとの間の対応を検索することによって確定することができる。対応する量子化パラメータは、量子化する層ごとに事前設定でき、対応する量子化パラメータは、量子化する層を検索した後に使用するために、対応関係を介して格納できる。この実施形態における量子化パラメータを取得する方法は、単純で便利である。
【０９６７】
図２−３は、本開示の一実施形態によるニューラルネットワークの量子化方法のフローチャートを示している。図２−３に示すように、ニューラルネットワークの量子化方法のステップＳ１０には次のものが含まれる。
【０９６８】
ステップＳ１２：各タイプの量子化予定のデータと対応するデータビット幅によって、対応する量子化パラメータを計算する。
【０９６９】
対応するデータビット幅ｎは、量子化予定のデータごとに事前設定できる。各タイプの量子化予定のデータに対応する量子化パラメータは、データビット幅ｎおよび各タイプの量子化予定のデータによって計算することができる。量子化予定のデータによって計算される量子化パラメータは、量子化予定のデータの特性とより一致している。
【０９７０】
ニューラルネットワークの推論、トレーニング、および微調整の過程で、量子化予定のデータは、ニューロン、重み、およびオフセットの少なくとも１つである可能性がある。トレーニングおよび微調整プロセスの場合、量子化予定のデータに勾配を含めることもできる。ニューラルネットワークの推論、トレーニング、および微調整のプロセスでは、量子化予定のデータおよびオンラインで取得される対応するデータビット幅によって、量子化予定のデータに対応する量子化パラメータを計算できる。
【０９７１】
この実施形態では、対応する量子化パラメータは、各タイプの量子化予定のデータおよび対応するデータビット幅によって計算される。量子化されるオンラインデータに基づいて計算された量子化パラメータは、量子化層となるニューラルネットワークで量子化されるさまざまなデータの量子化要件をより適切に満たすことができる。
【０９７２】
図２−４は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図２−４に示すように、ニューラルネットワークの量子化方法のステップＳ１２には次のものが含まれる。
【０９７３】
ステップＳ１２１：量子化パラメータにオフセットが含まれていない場合、目標データの最大絶対値と目標データに対応するデータビット幅によって目標データの小数点位置が取得され、目標データは任意である量子化予定のデータの一種。
【０９７４】
可能な実装では、量子化パラメータは複数のパラメータを含み得る。量子化パラメータがオフセットを含まない場合、量子化パラメータは、小数点位置およびスケーリング係数のうちの少なくとも１つを含み得る。量子化パラメータにオフセットが含まれていない場合、量子化予定の任意のデータを目標データとして使用できる。目標データは、ニューロン、重み、オフセット、および勾配のいずれかである。
【０９７５】
目標データには、複数の要素で構成されるデータが含まれる場合がある。目標データの各要素で最大値と最小値を求めることができ、最大値の絶対値と最小値の絶対値から目標データの絶対最大値を求めることができる。また、目標データの各要素の絶対値を求め、各要素の絶対値に応じて目標データの最大絶対値を求めることも可能である。
【０９７６】
図２−５は、本開示の一実施形態によるニューラルネットワーク量子化法の量子化パラメータがオフセットを含まない場合の、量子化前後のデータ対応の概略図を示す。図２−５に示すように、Ｚ１は目標データの絶対最大値、目標データに対応するデータビット幅ｎは８、Ａはデータビット幅ｎで目標データを量子化した後に表現できる最大値、Ａは２ｓ（２ｎ−１−１）である。ＡにはＺ１を含める必要があり、Ｚ１はＡ／２より大きいため、式（７）で制限できる。
２ｓ（２ｎ−１−１）＞＝Ｚ１＞２ｓ−１（２ｎ−１−１）      式（７）
【０９７７】
目標データの小数点位置は、目標データの最大絶対値とデータビット幅に基づいて計算できる。たとえば、次の式（８）を使用して、量子化パラメータにオフセットが含まれていない場合に、目標データの小数点位置ｓを計算できる。
ｓ＝ｃｅｉｌ（ｌｎ（Ｚ１／（２ｎ−１−１）））            式（８）
【０９７８】
ここで、ｃｅｉｌは切り上げられ、Ｚ１は目標データの最大絶対値、ｓは小数点位置、ｎは目標データに対応するデータビット幅である。
【０９７９】
この実施形態では、量子化パラメータがオフセットを含まない場合、目標データの最大絶対値および目標データに対応するデータビット幅によって、目標データの小数点位置が取得される。対応する小数点位置は、目標データに基づいて計算される。目標データは、目標データ自体の特性により一致している可能性があるため、目標データの量子化精度が高くなる。
【０９８０】
図２−６は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図２−６に示すように、ニューラルネットワークの量子化方法のステップＳ１２には次のものが含まれる。
【０９８１】
ステップＳ１２２：量子化パラメータにオフセットが含まれていない場合、目標データと目標データに対応するデータビット幅によって、目標データの量子化後のデータの最大値を取得する。当該目標データは任意の一種の量子化予定のデータである
【０９８２】
ステップＳ１２３：目標データの最大絶対値と目標データの量子化データの最大値に従って、目標データのスケーリング係数を取得する。
【０９８３】
目標データの最大絶対値については、前述の実施形態の関連する説明を参照されたい。
【０９８４】
式（９）は、量子化パラメータにオフセットが含まれていない場合に、目標データのスケーリング係数ｆを計算するために使用できる。
ｆ＝ｚ１／Ａ                        式（９）
【０９８５】
ここ、Ａは、量子化パラメータにオフセットが含まれていない場合の量子化後の目標データの最大値であり、式（１０）を使用してＡを計算できる。
Ａ＝（２＾ｃｅｉｌ（ｌｎ（Ｚ１／（２ｎ−１−１））））（２ｎ−１−１）  式（１０）
【０９８６】
この実施形態では、量子化パラメータがオフセットを含まない場合、目標データの最大絶対値および目標データに対応するデータビット幅によって、目標データに対応するスケーリング係数を計算することができる。目標データに対応するスケーリング係数が計算される。これは、目標データ自体の特性とより一致する可能性があるため、目標データの量子化精度が高くなる。
【０９８７】
図２−７は、本開示の一実施形態によるニューラルネットワーク量子化法における量子化パラメータがオフセットを含む場合の、量子化前後のデータ対応の概略図を示す。図２−７に示すように、Ａ１とＡ２は、目標データをｎで量子化した後に表現できる最大値と最小値、Ｚｍｉｎは目標データ内のすべての要素の最小値、Ｚｍａｘは目標データ内のすべての要素の最大値である。Ｚ２＝（Ｚｍａｘ―Ｚｍｉｎ）／２の場合、目標データはオフセットｏに従って変換され、量子化される。
【０９８８】
図２−８は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図２−８に示すように、ニューラルネットワークの量子化方法のステップＳ１２には次のものが含まれる。
【０９８９】
ステップＳ１２４：量子化パラメータがオフセットを含む場合、目標データの最大値、目標データの最小値、および目標データに対応するデータビット幅によって、目標データの小数点位置を取得する。前記目標データは、任意の一種の量子化予定のデータである。
【０９９０】
可能な実装方法では、量子化パラメータがオフセットを含む場合、量子化パラメータは、小数点位置およびスケーリング係数のうちの少なくとも１つをさらに含み得る。図２−７に示すように、量子化パラメータにオフセットが含まれている場合の目標データの小数点位置ｓは、式（１１）に従って計算できる。
ｓ＝ｃｅｉｌ（ｌｎ（Ｚ２／（２ｎ−１−１）））              式（１１）
【０９９１】
ここで、ｃｅｉｌは切り上げられ、ｓは小数点位置、ｎは目標データに対応するデータビット幅である。
【０９９２】
この実施形態では、量子化パラメータがオフセットを含む場合、目標データに対応する最大値、最小値、および目標データに対応するデータビット幅によって、目標データに対応する小数点位置を計算することができる。対応する小数点位置は、目標データに基づいて計算される。目標データは、目標データ自体の特性により一致している可能性があるため、目標データの量子化精度が高くなる。
【０９９３】
図２−９は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図２−９に示すように、ニューラルネットワークの量子化方法のステップＳ１２には次のものが含まれる。
【０９９４】
ステップＳ１２５で、量子化パラメータにオフセットが含まれる場合、目標データおよび目標データに対応するデータビット幅によって、目標データの量子化後の最大値を取得し、目標データは、任意の一種の量子化予定のデータである。
【０９９５】
ステップＳ１２６ｄで、目標データの最大値、目標データの最小値、および目標データの量子化後の最大値に従って、目標データのスケーリング係数を取得する。
【０９９６】
可能な実装方法では、量子化パラメータがオフセットを含む場合、量子化パラメータは、小数点位置およびスケーリング係数のうちの少なくとも１つをさらに含み得る。図２−７に示すように、量子化パラメータにオフセットが含まれている場合の目標データのスケーリング係数ｆは、式（１２）に従って計算できる。
ｆ＝ｚ２／Ａ                        式（１２）
【０９９７】
この実施形態では、量子化パラメータがオフセットを含む場合、目標データに対応するスケーリング係数は、目標データの最大値、最小値、および目標データに対応するデータビット幅によって計算することができる。目標データに対応するスケーリング係数が計算される。これは、目標データ自体の特性とより一致する可能性があるため、目標データの量子化精度が高くなる。
【０９９８】
図２−１０は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図２−１０に示すように、ニューラルネットワークの量子化方法のステップＳ１２には次のものが含まれる。
【０９９９】
ステップＳ１２７：目標データの最大値と最小値に従って目標データのオフセットを取得する。目標データは、任意の一種の量子化予定のデータである。
【１０００】
可能な実装方法では、図２−７に示すように、量子化パラメータにオフセットが含まれている場合の目標データのオフセットｏは、式（１３）を使用して計算できる。
ｏ＝（Ｚｍｉｎ＋Ｚｍａｘ）／２                    式（１３）
【１００１】
この実施形態では、量子化パラメータがオフセットを含む場合、目標データに対応するオフセットは、目標データの最大値、最小値、および目標データに対応するデータビット幅によって計算することができる。目標データに対応するオフセットが計算される。これは、目標データ自体の特性とより一致する可能性があるため、目標データの量子化精度が高くなる。
【１００２】
図２−１１は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図２−１１に示すように、ニューラルネットワークの量子化方法にはさらに次のものが含まれる。
【１００３】
ステップＳ３０：目標データおよび目標データに対応する量子化データに従って、目標データの量子化誤差を確定する。ここで、目標データは、量子化予定の任意の種類のデータである。
【１００４】
目標データの量子化誤差は、目標データに対応する量子化データと目標データとの間の誤差によって確定することができる。標準偏差計算法、二乗平均平方根誤差計算法などの設定誤差計算法を使用して、目標データの量子化誤差を計算できる。
【１００５】
量子化パラメータに従って目標データに対応する量子化データを逆量子化して逆量子化データを取得し、逆量子化データと目標データ間の誤差に従って目標データの量子化誤差を確定することも可能である。
【１００６】
【数１８】
2021530769.tif 000021
【１００７】
【数１９】
2021530769.tif 000022
【１００８】
【数２０】
2021530769.tif 000023
【１００９】
【数２１】
2021530769.tif 000024
【１０１０】
【数２２】
2021530769.tif 000025
【１０１１】
【数２３】
2021530769.tif 000026
【１０１２】
【数２４】
2021530769.tif 000027
【１０１３】
量子化間隔に関連する方法を計算することができ、例えば、目標データと目標データに対応する逆量子化データとの間の誤差は、式（２１）によって計算することができる。
ｄｉｆｆｂｉｔ＝ｌｎ（Ａ＊２−１＊ｐ／Σｉ｜Ｆｘ｜）              式（２１）
【１０１４】
ここ、ｐは目標データの要素数、ｓは目標データの小数点位置である。Ａの値は、量子化パラメータに従って確定できる。量子化パラメータに小数点位置ｓが含まれる場合、Ａ＝２ｓ、量子化パラメータに小数点位置ｓとスケーリング係数ｆが含まれる場合、Ａ＝２ｓｘｆである。
【１０１５】
【数２５】
2021530769.tif 000028
【１０１６】
【数２６】
2021530769.tif 000029
【１０１７】
ステップＳ４０：量子化誤差および誤差しきい値に従って、目標データに対応するデータビット幅を調整して、目標データに対応する調整ビット幅を取得する。
【１０１８】
誤差しきい値は経験値に基づいて確定でき、誤差しきい値は量子化誤差の期待値を示すために使用できる。量子化誤差が誤差しきい値より大きいか小さい場合、ターゲット番号に対応するデータビット幅を調整して、目標データに対応する調整ビット幅を取得することができる。データビット幅をより長いビット幅またはより短いビット幅に調整して、量子化精度を増減させることができる。
【１０１９】
誤差しきい値は、最大許容誤差に応じて確定できる。量子化誤差が誤差しきい値よりも大きい場合は、量子化精度が期待に応えられないことを示し、データビット幅をより長いビット幅に調整する必要がある。量子化精度が高いほど、誤差しきい値を小さくすることもできる。量子化誤差が誤差しきい値よりも小さい場合は、量子化精度が高くなり、ニューラルネットワークの運用効率に影響が出ます。データビット幅を適切に調整して短くすることができる。のビット幅は、量子化精度を適切に低下させ、ニューラルネットワークの運用効率を向上させるためのものである。
【１０２０】
データビット幅は、固定ビット長に応じて調整できる。または、データビット幅は、量子化誤差と誤差しきい値の差に応じて、可変調整ステップ長さによって調整できる。この開示はこれを制限するものではない。
【１０２１】
ステップＳ５０では、目標データに対応するデータビット幅が調整ビット幅に更新され、対応する調整量子化パラメータが目標データおよび調整ビット幅に従って計算されるので、ニューラルネットワークは調整に従って調整することができる。量子化パラメータが量子化される。
【１０２２】
調整ビット幅を確定した後、目標データに対応するデータビット幅を調整ビット幅に更新することができる。たとえば、更新前の目標データのデータビット幅が８ビットで、調整後のビット幅が１２ビットの場合、更新後の目標データに対応するデータビット幅は１２ビットである。目標データに対応する調整済み量子化パラメータは、調整ビット幅と目標データに基づいて計算できる。目標データは、目標データに対応する調整された量子化パラメータに従って再量子化され、より高いまたはより低い量子化精度で量子化後のデータを取得できるため、量子化予定の層は、量子化精度と処理効率のバランスを実現する。
【１０２３】
ニューラルネットワークの推論、トレーニング、微調整の過程で、層間で量子化予定のデータには一定の相関関係があると見なすことができる。たとえば、各層で量子化予定のデータの平均値の差が設定された平均しきい値よりも小さく、各層で量子化予定のデータの最大値の差も設定された差のしきい値よりも小さい場合、量子化予定の層の調整された量子化パラメータは、量子化予定の層の１つ以上の後続の層で量子化予定のデータを量子化するために、１つ以上の後続の層の調整された量子化パラメータとして使用され得る。ニューラルネットワークのトレーニングおよび微調整プロセスでは、量子化予定の層のカレント反復で取得された調整済み量子化パラメータを使用して、後続の反復で量子化予定の層を量子化することもできる。
【１０２４】
可能な実装方法では、この方法はさらに以下を含む。
【１０２５】
量子化予定の層の量子化パラメータは、量子化予定の層の後の１つまたは複数の層で使用される。
【１０２６】
ニューラルネットワークは、調整された量子化パラメータに従って量子化を実行する。これには、量子化予定の層でのみ調整された量子化パラメータを使用して量子化予定のデータを再量子化し、量子化予定の層の操作で再取得された量子化後のデータを使用することが含まれる。また、調整された量子化パラメータを使用して、量子化予定の層で量子化予定のデータを再量子化しないこと、および調整された量子化パラメータを使用して、量子化予定の層の１つまたは複数の後続の層で量子化すること、および／または後続の反復で量子化予定の層でそれを使用することも含まれる。量子化の量子化パラメータを調整する。また、調整された量子化パラメータを使用して、量子化予定の層で再量子化すること、および取得された量子化データを量子化予定の層の操作で使用すること、および調整された量子化パラメータを使用して、量子化予定の層に続く１つまたは複数の層で量子化すること、および／または、後続の反復での量子化のために量子化予定の層で調整された量子化パラメータを使用する。この開示はこれを制限するものではない。
【１０２７】
この実施形態では、目標データの量子化誤差は、目標データおよび目標データに対応する量子化データによって確定され、目標データは、量子化予定の任意の種類のデータであり、量子化誤差および誤差しきい値は、目標データに対応するデータビット幅に調整される。目標データに対応する調整ビット幅を取得する。目標データに対応するデータビット幅を調整ビット幅に更新し、目標データと調整ビット幅に従って対応する調整量子化パラメータを計算し、ニューラルネットワークが調整量子化パラメータに従って量子化を実行するようにする。目標データと量子化データ間の誤差に応じてデータビット幅を調整し、調整済みデータビット幅に応じて調整済み量子化パラメータを計算する。さまざまな誤差しきい値を設定することにより、さまざまな調整済み量子化パラメータを取得して、量子化精度の向上や操作効率の向上など、さまざまな量子化要件を実現できる。目標データおよび目標データの量子化データに従って計算された調整済み量子化パラメータも、目標データ自体のデータ特性とより一致し、目標データ自体のニーズにより一致する量子化結果を達成し、より優れた量子化精度と処理効率を実現できる。残高。
【１０２８】
図２−１２は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図２−１２に示すように、ニューラルネットワークの量子化方法のステップＳ４０には次のものが含まれる。
【１０２９】
ステップＳ４１：量子化誤差が第１の誤差しきい値よりも大きい場合、目標データに対応するデータビット幅を増やして、目標データに対応する調整ビット幅を取得する。
【１０３０】
第１の誤差しきい値は、受け入れることができる最大量子化誤差によって確定することができる。量子化誤差は、第１の誤差しきい値と比較できる。量子化誤差が第１の誤差しきい値よりも大きい場合、量子化誤差はすでに許容できないと見なすことができる。量子化精度を向上させるために、目標データに対応するデータビット幅を増やすことにより、目標データの量子化精度を向上させることができる。
【１０３１】
調整ビット幅を取得するために、固定調整ステップ長さによって、目標データに対応するデータビット幅を増やすことができる。固定調整ステップ長さサイズはＮビットにすることができ、Ｎは正の整数である。データビット幅を調整するたびに、Ｎビットを増やすことができる。各増加後のデータビット幅＝元のデータビット幅＋Ｎビット。
【１０３２】
可変調整ステップ長さに応じて、目標データに対応するデータビット幅を大きくして、調整ビット幅を得ることができる。例えば、量子化誤差と誤差しきい値の差が第１しきい値より大きい場合、データビット幅は調整ステップ長さＭ１に従って調整でき、量子化誤差と誤差しきい値の差が第１しきい値より小さい場合、データは以下に従って調整することができる。ステップ長さＭ２は、データビット幅を調整する。第１のしきい値は第２のしきい値よりも大きく、Ｍ１はＭ２よりも大きくなる。可変調整ステップ長さは、要件に応じて確定できる。この開示は、データビット幅の調整ステップ長さ、および調整ステップ長さが可変であるかどうかを制限しない。
【１０３３】
調整された量子化パラメータは、調整ビット幅に従って目標データを計算することによって取得できる。調整された量子化パラメータを使用して目標データを再量子化することによって得られる量子化データは、調整前に量子化パラメータを使用して得られる量子化データよりも高い量子化精度を持っている。
【１０３４】
図２−１３は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図２−１３に示すように、ニューラルネットワークの量子化方法にはさらに次のものが含まれる。
【１０３５】
ステップＳ４２：調整ビット幅と目標データに従って、目標データの調整済み量子化誤差を計算する。
【１０３６】
ステップＳ４３：調整ビット幅と目標データに従って計算された調整済の量子誤差が第１の誤差しきい値以下になるまで、調整済の量子化誤差と第１の誤差しきい値に従って調整ビット幅を増やし続ける。誤差しきい値。
【１０３７】
量子化誤差に応じて目標データに対応するデータビット幅を増やす場合は、ビット幅を１回調整して調整ビット幅を取得し、調整ビット幅に応じて調整量子化パラメータを計算し、調整済み量子化パラメータに応じて目標データを量子化して調整済み量子化データを取得する。次に、調整済み量子化データと目標データに従って、目標データの調整済み量子化誤差を計算する。調整済み量子化誤差は、第１の誤差しきい値よりも大きい場合がある。つまり、調整済みデータのビット幅が調整目的を満たさない場合がある。調整済の量子化誤差がまだ第１の誤差しきい値よりも大きい場合は、調整後のデータビット幅を調整し続けることができる。つまり、最終的な調整ビット幅と目標データが取得されるまで、目標データに対応するデータビット幅を複数回増やする。の調整済み量子化誤差は、第１の誤差しきい値よりも小さくなっている。
【１０３８】
複数回増やす調整ステップ長さは、固定調整ステップ長さまたは可変調整ステップ長さにすることができる。たとえば、最終データビット幅＝元のデータビット幅＋Ａ＊Ｎビット。ここで、Ｎは各増加の固定調整ステップ長さであり、Ａはデータビット幅が増加した回数である。最終データビット幅＝元データビット幅＋Ｍ１＋Ｍ２＋．．．＋Ｍｍ、ここでＭ１、Ｍ２．．．Ｍｍは、毎回増やす可変調整ステップ長さである。
【１０３９】
この実施形態では、量子化誤差が第１の誤差しきい値よりも大きい場合、目標データに対応するデータビット幅を大きくして、目標データに対応する調整ビット幅を得る。第１の誤差しきい値を設定し、ステップ長さを調整することでデータビット幅を増やすことができるため、調整後のデータビット幅は量子化要件を満たすことができる。１つの調整で調整要件を満たせない場合は、データビット幅を複数回調整できる。第１誤差しきい値と調整ステップ長さの設定により、量子化要件に応じて量子化パラメータを柔軟に調整し、さまざまな量子化要件に対応できるため、独自のデータ特性に応じて量子化精度を適応的に調整できる。
【１０４０】
図２−１４は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図２−１４に示すように、ニューラルネットワークの量子化方法のステップＳ４０には次のものが含まれる。
【１０４１】
ステップＳ４４：量子化誤差が第２の誤差しきい値よりも小さい場合、目標データに対応するデータビット幅を減らし、第２の誤差しきい値が第１の誤差しきい値よりも小さい。
【１０４２】
第２の誤差しきい値は、許容可能な量子化誤差とニューラルネットワークの予想される動作効率に従って確定できる。量子化誤差は、第２の誤差しきい値と比較できる。量子化誤差が第２の誤差しきい値よりも小さい場合、量子化誤差は予想を超えていると見なすことができるが、動作効率が低すぎて許容できない。量子化精度を下げてニューラルネットワークの運用効率を向上させ、目標データに対応するデータビット幅を小さくすることで目標データの量子化精度を下げることができる。
【１０４３】
調整ビット幅を取得するために、固定調整ステップ長さによって、目標データに対応するデータビット幅を減らすことができる。固定調整ステップ長さサイズはＮビットにすることができ、Ｎは正の整数である。データビット幅を調整するたびに、Ｎビットを減らすことができる。増加したデータビット幅＝元のデータビット幅−Ｎビット。
【１０４４】
可変調整ステップ長さに応じて、目標データに対応するデータビット幅を縮小して、調整ビット幅を得ることができる。例えば、量子化誤差と誤差しきい値の差が第１しきい値より大きい場合、データビット幅は調整ステップ長さＭ１に従って調整でき、量子化誤差と誤差しきい値の差が第１しきい値より小さい場合、データは以下に従って調整することができる。ステップ長さＭ２は、データビット幅を調整する。第１のしきい値は第２のしきい値よりも大きく、Ｍ１はＭ２よりも大きくなる。可変調整ステップ長さは、要件に応じて確定できる。この開示は、データビット幅の調整ステップ長さ、および調整ステップ長さが可変であるかどうかを制限しない。
【１０４５】
調整ビット幅に応じて目標データを計算し、調整された量子化パラメータを取得できる。調整された量子化パラメータで目標データを再量子化した後に得られた量子化データは、調整前の量子化パラメータを使用して得られた量子化データよりも量子化精度が高くなる。低。
【１０４６】
図２−１５は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図２−１５に示すように、ニューラルネットワークの量子化方法にはさらに次のものが含まれる。
【１０４７】
ステップＳ４５：調整ビット幅と目標データに従って、目標データの調整済み量子化誤差を計算する。
【１０４８】
ステップＳ４６：調整ビット幅と目標データに従って計算して得た調整済み量子化誤差が第２の誤差しきい値以上になるまで、調整済の量子化誤差と第２の誤差しきい値に従って調整ビット幅を減らし続ける。
【１０４９】
量子化誤差に応じて目標データに対応するデータビット幅を増やす場合は、ビット幅を１回調整して調整ビット幅を取得し、調整ビット幅に応じて調整量子化パラメータを計算し、調整済み量子化パラメータに応じて目標データを量子化して調整済み量子化データを取得する。次に、調整済み量子化データと目標データに従って、目標データの調整済み量子化誤差を計算する。調整済み量子化誤差は、第２の誤差しきい値よりも小さい場合がある。つまり、調整済みデータのビット幅が調整目的を満たさない場合がある。調整済の量子化誤差がまだ第２の誤差しきい値よりも小さい場合は、調整後のデータビット幅を調整し続けることができる。つまり、最終的な調整ビット幅と目標データが取得されるまで、目標データに対応するデータビット幅を複数回減らする。の調整済み量子化誤差は、第２の誤差しきい値よりも大きくなっている。
【１０５０】
複数回短縮される調整ステップ長さは、固定調整ステップ長さまたは可変調整ステップ長さであり得る。たとえば、最終データビット幅＝元のデータビット幅−Ａ＊Ｎビット。ここで、Ｎは各増加の固定調整ステップ長さであり、Ａはデータビット幅が増加した回数である。最終データビット幅＝元のデータビット幅−Ｍ１−Ｍ２−．．．−Ｍｍ、ここでＭ１、Ｍ２．．．Ｍｍは、毎回減少する可変調整ステップ長さである。
【１０５１】
この実施形態では、量子化誤差が第２の誤差しきい値よりも小さい場合、目標データに対応するデータビット幅を縮小して、目標データに対応する調整ビット幅を得る。第２の誤差しきい値を設定し、ステップ長さを調整することでデータビット幅を減らすことができるため、調整後のデータビット幅は量子化要件を満たすことができる。１つの調整で調整要件を満たせない場合は、データビット幅を複数回調整できる。第２の誤差しきい値と調整ステップ長さの設定により、量子化要件に応じて量子化パラメータを柔軟かつ適応的に調整し、さまざまな量子化要件を満たすことができるため、量子化精度を調整でき、量子化精度とニューラルネットワークの運用効率のバランスが取れる。
【１０５２】
可能な実装方法では、この方法はさらに以下を含む。
【１０５３】
量子化誤差が第１の誤差しきい値より大きい場合、目標データに対応するデータビット幅が増加し、量子化誤差が第２の誤差しきい値よりも小さい場合、目標データに対応するデータビット幅が減少して、目標データに対応する調整ビット幅。
【１０５４】
２つの誤差しきい値を同時に設定することもできる。第１の誤差しきい値は、量子化精度が低すぎることを示すために使用され、データビット幅のビット数が増える可能性がある。第２の誤差しきい値は、量子化精度が高すぎることを示すために使用され、データビット幅を減らす可能性がある。桁。第１の誤差しきい値が第２の誤差しきい値よりも大きい目標データの量子化誤差を２つの誤差しきい値と同時に比較できる。量子化誤差が第１の誤差しきい値よりも大きい場合、データビット幅のビット数が増やす。量子化誤差が２番目よりも小さい場合誤差しきい値を使用する場合は、データビット幅のビット数を減らしてください。量子化誤差が第１の誤差しきい値と第２の誤差しきい値の間にある場合、データビット幅は変更されないままになる。
【１０５５】
この実施形態では、量子化誤差を第１の誤差しきい値および第２の誤差しきい値と同時に比較することにより、比較結果に応じてデータビット幅を増減することができ、第１の誤差しきい値および第２の誤差しきい値を使用してより柔軟な調整を行うことができる。データビット幅。これにより、データビット幅の調整結果が量子化要件にさらに一致するようになる。
【１０５６】
図２−１６は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図２−１６に示すように、ニューラルネットワーク演算の微調整フェーズおよび／またはトレーニングフェーズでは、この方法にはさらに次のものが含まれる。
【１０５７】
ステップＳ６０：カレント反復および履歴反復における目標データのデータ変動範囲を取得する。履歴反復は、カレント反復の前の反復である。
【１０５８】
ニューラルネットワーク演算の微調整フェーズおよび／またはトレーニングフェーズには、複数の反復が含まれる。ニューラルネットワークで量子化される各層は、１回の順方向演算と１回の逆方向演算を実行し、量子化された層の重みを更新した後、１回の反復が完了する。複数の反復では、量子化予定の層の目標データおよび／または目標データに対応する量子化データを使用して、異なる反復の目標データおよび／または量子化予定のデータが同じ量子化パラメータを使用できるかどうかを測定できる。量子化。カレント反復および履歴反復における目標データのデータ変動範囲が小さい場合、たとえば、設定された範囲変更しきい値よりも小さい場合、同じ量子化パラメータを、より小さなデータ変動範囲で複数の反復で使用できる。
【１０５９】
目標データに対応する量子化パラメータは、事前に格納された量子化パラメータを抽出することで確定できる。異なる反復で目標データを量子化する場合、各反復で目標データに対応する量子化パラメータを抽出する必要がある。複数の反復の目標データおよび／または目標データに対応する量子化データのデータ変動範囲が小さい場合、データ変動が小さい複数の反復で使用されたものと同じ量子化パラメータを一時的に格納でき、各反復が進行中である。量子化中に、一時的に格納された量子化パラメータを、各反復で量子化パラメータを抽出する代わりに、量子化操作に使用できる。
【１０６０】
量子化パラメータは、目標データとデータビット幅によって計算することもできる。目標データが異なる反復で量子化される場合、量子化パラメータは各反復で個別に計算する必要がある。複数の反復の目標データおよび／または目標データに対応する量子化データのデータ変動が小さい場合、同じ量子化パラメータをデータの変動が小さい複数の反復で使用でき、各反復を直接使用できる。１番目の反復で計算された量子化パラメータは、各反復で計算されない。
【１０６１】
目標データが重みの場合、各反復間の重みは常に更新されることは理解できる。複数の反復の重みのデータ変化が小さい場合、または複数の反復の重みが量子化予定のデータに対応する場合データ変更の範囲は小さく、同じ量子化パラメータを使用して、複数の反復で重みを量子化できる。
【１０６２】
ステップＳ７０：目標データのデータ変動範囲によって目標データに対応する目標反復間隔を確定し、ニューラルネットワークが目標反復間隔によって目標データの量子化パラメータを更新するようにする。目標反復間隔は、少なくとも１回の反復を含め、目標データは任意の一種の量子化予定のデータである。
【１０６３】
目標反復間隔は、目標データのデータ変動範囲によって確定できる。目標反復間隔には、少なくとも１つの反復が含まれる。同じ量子化パラメータを、目標反復間隔内の各反復で使用できる。つまり、目標データは、目標反復間隔内の各反復で更新されない。量子化パラメータ。ニューラルネットワークは、目標反復間隔内の反復を含む、目標反復間隔によって目標データの量子化パラメータを更新し、プリセット量子化パラメータを取得したり、量子化パラメータを計算したりしない。つまり、目標反復間隔内の反復は、量子化パラメータを更新しない。目標反復間隔外の反復では、プリセット量子化パラメータが取得または計算される。つまり、量子化パラメータは、目標反復間隔外の反復で更新される。
【１０６４】
目標データのデータ変動範囲または複数の反復間の目標データの量子化データが小さいほど、確定された目標反復間隔に含まれる反復が多くなることが理解できる。計算されたデータ変動範囲によって、プリセットデータ変動範囲と反復間隔との対応関係を検索し、計算されたデータ変動範囲に対応する目標反復間隔を確定することができる。データ変動範囲と反復間隔の間の対応関係は、要件に応じて事前設定できる。計算されたデータ変動範囲によって設定された計算方法を使用して、目標反復間隔を計算することもできる。本開示は、データ変動範囲の計算方法および目標反復間隔の取得方法を制限するものではない。
【１０６５】
この実施形態では、ニューラルネットワーク動作の微調整段階および／またはトレーニング段階において、カレント反復および履歴反復における目標データのデータ変動範囲が得られ、目標データに対応する標的反復が、目標データのデータ変動範囲によって確定される。間隔。これにより、ニューラルネットワークは目標反復間隔によって目標データの量子化パラメータを更新する。目標反復間隔は、複数反復の目標データまたは目標データに対応する量子化データのデータ変動範囲によって確定することができる。ニューラルネットワークは、目標反復間隔によって量子化パラメータを更新するかどうかを確定できる。目標反復間隔に含まれる複数の反復のデータ変動範囲が小さいため、量子化の精度を確保するために、目標反復間隔内の反復で量子化パラメータが更新されない。ただし、量子化パラメータは、目標反復間隔内の複数の反復に対して更新されないため、量子化パラメータの抽出または計算の数が減り、ニューラルネットワークの計算効率が向上する。
【１０６６】
図２−１７は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図２−１７に示すように、ニューラルネットワークの量子化方法にはさらに次のものが含まれる。
【１０６７】
ステップＳ８０：カレント反復における目標データのデータビット幅によって、目標データの目標反復間隔における反復に対応するデータビット幅を確定し、ニューラルネットワークが目標データの目標反復間隔内の反復に対応するデータビット幅によって、量子化パラメータを決める。
【１０６８】
本開示の前述の実施形態に記載されるように、目標データの量子化パラメータは、目標データに対応するデータビット幅によって事前設定または計算することができる。量子化される異なる層の目標データに対応するデータビット幅、または異なる反復で量子化される同じ層の目標データに対応するデータビット幅は、本開示の上記実施形態の方法に従って適応的に調整することができる。
【１０６９】
目標データのデータビット幅が適応的に調整できず、プリセットデータビット幅である場合、目標反復間隔での目標データの反復に対応するデータビットは、カレント反復での目標データのプリセットデータビット幅によって確定できる。幅。目標反復間隔内の各反復は、独自のプリセット値を使用しない場合がある。
【１０７０】
目標データのデータビット幅を適応的に調整できる場合、目標反復間隔内の目標データの反復に対応するデータビット幅は、カレント反復における目標データに対応するデータビット幅によって確定することができる。データビット幅を適応的に調整できる場合、データビット幅は１回調整することも、複数回調整することもできる。カレント反復での適応調整後の目標データのデータビット幅は、目標反復間隔内の各反復に対応するデータビット幅と見なすことができ、データビット幅は、目標反復間隔内の各反復に対して適応調整されなくなる（更新）。カレント反復における目標データは、適応調整後のデータビット幅、または適応調整前のデータビット幅を使用することができ、これは、本開示において限定されない。
【１０７１】
目標反復間隔以外の反復では、目標データのデータ変動範囲が設定条件を満たさないため、本開示の上記の方法に従ってデータビット幅を適応的に調整して、カレント反復の目標データにより一致するデータビット幅を得ることができる。本開示における目標反復間隔の計算方法を使用して、新しい目標反復間隔を計算および使用することも可能であり、それにより、目標反復間隔外の反復の量子化精度を保証し、ニューラルネットワークの動作効率を改善する。
【１０７２】
目標反復間隔内の各反復のデータビット幅は同じであり、各反復は、同じデータビット幅によって対応する量子化パラメータを計算できる。量子化パラメータは、小数点位置、スケーリング係数、およびオフセットのうちの少なくとも１つを含み得る。量子化パラメータは、目標反復間隔内の各反復で同じデータビット幅によって個別に計算できる。量子化パラメータに小数点位置、スケーリング係数、およびオフセットが含まれる場合、目標反復間隔内の各反復は、同じデータビット幅を使用して、対応する小数点位置、スケーリング係数、およびオフセットを計算できる。
【１０７３】
カレント反復のデータビット幅によって、目標反復間隔内の各反復のデータビット幅を確定する一方で、目標反復間隔内の各反復の対応する量子化パラメータは、カレント反復の量子化パラメータに従って確定することができる。目標反復間隔内の各反復の量子化パラメータは、同じデータビット幅に基づいて再度計算されることはない。これにより、ニューラルネットワークの計算効率をさらに向上させることができる。目標反復間隔内の各反復の対応する量子化パラメータは、カレント反復の量子化パラメータのすべてまたは一部に従って確定できる。カレント反復の部分量子化パラメータに従って、目標反復間隔内の各反復の対応する量子化パラメータを確定する場合、残りの量子化パラメータは、目標反復間隔内の各反復に対して計算する必要がある。
【１０７４】
たとえば、量子化パラメータには、小数点位置、スケーリング係数、およびオフセットが含まれる。目標反復間隔内の各反復のデータビット幅と小数点位置は、カレント反復のデータビット幅と小数点位置によって確定できる。目標反復間隔内の各反復のスケーリング係数とオフセットは、同じデータビット幅に基づいて計算する必要がある。また、カレント反復のデータビット幅、小数点位置、スケーリング係数、およびオフセットに従って、目標反復間隔内の各反復のデータビット幅、小数点位置、スケーリング係数、およびオフセットを確定することもできる。各量子化パラメータを計算する必要はない。
【１０７５】
この実施形態では、カレント反復における目標データに対応するデータビット幅によって、目標反復間隔における目標データの反復に対応するデータビット幅が確定され、その結果、ニューラルネットワークは、目標反復間隔における目標データの反復に対応する。データビット幅が量子化パラメータを確定する。目標反復間隔内の各反復のデータビット幅は、カレント反復のデータビット幅によって確定される。目標反復間隔内の各反復の目標データのデータ変動範囲は設定された条件を満たすため、同じデータビット幅を使用して計算される。量子化パラメータは、目標反復間隔内の各反復の量子化精度を保証できる。目標反復間隔内の各反復は同じデータビット幅を使用する。これにより、ニューラルネットワークの計算効率も向上する。量子化後のニューラルネットワークの計算結果の精度とニューラルネットワークの計算効率のバランスが取れている。
【１０７６】
図２−１８は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図２−１８に示すように、ニューラルネットワークの量子化方法にはさらに次のものが含まれる。
【１０７７】
ステップＳ９０：カレント反復に対応する目標データの小数点位置によって、目標反復間隔での目標データの反復に対応する小数点位置を確定する。
【１０７８】
量子化パラメータでは、スケーリング係数とオフセットに比べて、異なる小数点位置が同じ目標データの量子化結果に大きな影響を与える。目標反復間隔内の反復に対応する小数点位置は、カレント反復の目標データに対応する小数点位置によって確定できる。データビット幅を適応的に調整できない場合は、カレント反復のプリセット小数点位置の目標データを、目標反復間隔の目標データの各反復に対応する小数点位置として設定するか、プリセット小数点位置によってカレント反復の目標データを設定できる。データビット幅から計算された小数点位置は、目標反復間隔内の目標データの各反復に対応する小数点位置として使用される。データビット幅を適応的に調整できる場合、カレント反復における目標データの調整された小数点位置を、目標反復間隔における目標データの各反復に対応する小数点位置として使用できる。
【１０７９】
カレント反復に対応する目標データの小数点位置によって、目標反復間隔内の反復に対応する目標データの小数点位置を確定する一方で、目標データは、カレント反復に対応するスケーリング係数に従って確定することもできる。目標反復間隔内の目標データの反復に対応するスケーリング係数、および／または目標反復間隔内の目標データの反復に対応するオフセットは、カレント反復の目標データに対応するオフセットに従って確定される。シフト。
【１０８０】
カレント反復に対応する目標データの小数点位置によって、目標反復間隔内の反復に対応する目標データの小数点位置を確定する一方で、カレント反復の目標データに対応するデータビット幅も確定することができる。目標反復間隔内の目標データの反復に対応するデータビット幅を確定する。ここで、カレント反復の目標データに対応するデータビット幅は、カレント反復でプリセットされたデータビット幅または適応調整後のデータである可能性がある。ビット幅。
【１０８１】
この実施形態では、カレント反復に対応する目標データの小数点位置に従って、目標反復間隔内の反復に対応する目標データの小数点位置が確定される。目標反復間隔内の各反復の小数点位置は、カレント反復の小数点位置に応じて確定される。目標反復間隔内の各反復の目標データのデータ変動範囲は設定された条件を満たすため、同じ小数点位置を使用して目標反復を確保できる。間隔内の各反復の量子化精度。目標反復間隔内の各反復で同じ小数点位置を使用すると、ニューラルネットワークの計算効率も向上する。量子化後のニューラルネットワークの計算結果の精度とニューラルネットワークの計算効率のバランスが取れている。
【１０８２】
図２−１９は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図２−１９に示すように、ニューラルネットワークの量子化方法のステップＳ６０には次のものが含まれる。
【１０８３】
ステップＳ６１：目標データのカレント反復における小数点位置、および履歴反復間隔によって確定されたカレント反復に対応する履歴反復の小数点位置によって、各反復間隔に対応する目標データの小数点位置のスライディング平均値を計算する。
【１０８４】
ステップＳ６２：目標データのカレント反復における小数点位置の第１のスライディング平均値と、１つ前の反復間隔における対応する反復に対応する小数点位置の第２のスライディング平均値に従って、第１のデータ変動範囲を取得する。
【１０８５】
ステップＳ７０には以下が含まれる。
【１０８６】
ステップＳ７１：第１のデータ変動範囲によって目標データに対応する目標反復間隔を確定し、ニューラルネットワークが目標反復間隔によって目標データの量子化パラメータを更新するようにする。
【１０８７】
可能な実装方法では、履歴反復間隔によって確定されたカレント反復に対応する履歴反復は、目標反復間隔を計算するための履歴反復であり得る。カレント反復と対応する目標反復間隔の間の対応には、次のものが含まれる。
【１０８８】
目標反復間隔はカレント反復からカウントでき、目標反復間隔は、カレント反復に対応する目標反復間隔が終了した後の次の反復で再計算できる。たとえば、カレント反復は１００反復、目標反復間隔は３、目標反復間隔内の反復には、第１００反復、第１０１反復、および第１０２反復が含まれる。第１０３反復は、第１０３反復に対応する目標反復間隔を計算できる。および１０３を新しい計算として使用して、目標反復間隔内で１番目の反復を取得する。このとき、カレント反復が第１０３反復の場合、履歴反復間隔によって確定されたカレント反復に対応する履歴反復は１００反復である。
【１０８９】
目標反復間隔は、カレント反復の次の反復からカウントでき、目標反復間隔は、目標反復間隔内の最後の反復から再計算できる。たとえば、カレント反復は１００反復、目標反復間隔は３、目標反復間隔内の反復には、第１０１反復、第１０２反復、および第１０３反復が含まれる。第１０３反復は、第１０３反復に対応する目標反復間隔を計算できる。および１０４を新しい計算として使用して、目標反復間隔内で１番目の反復を取得する。このとき、カレント反復が第１０３反復の場合、履歴反復間隔によって確定されたカレント反復に対応する履歴反復は１００反復である。
【１０９０】
目標反復間隔は、カレント反復の次の反復からカウントでき、目標反復間隔は、目標反復間隔の終了後の次の反復で再計算できる。たとえば、カレント反復は１００反復、目標反復間隔は３、目標反復間隔内の反復には、第１０１反復、第１０２反復、および第１０３反復が含まれる。第１０４反復に対応する目標反復間隔は、第１０４反復で計算できる。および１０５を新しい計算として使用して、目標反復間隔内の１番目の反復を取得する。このとき、カレント反復が第１０４反復の場合、履歴反復間隔によって確定されたカレント反復に対応する履歴反復は１００反復である。
【１０９１】
カレント反復と目標反復間隔との間の他の対応は、要件に従って確定することができる。例えば、目標反復間隔は、カレント反復後のＮ番目の反復から数えることができ、Ｎは１より大きいが、これは本開示に限定されない。
【１０９２】
計算された目標データは、カレント反復の小数点位置での目標データの第１のスライディング平均値、および前の反復間隔の小数点位置での目標データを含む、各反復間隔の小数点位置のスライディング平均値に対応することは理解できる。位置の第２のスライディング平均値。式（２４）を使用して、カレント反復の対応する小数点位置の第１のスライディング平均値ｍ（ｔ）を計算できる。
ｍ（ｔ）←αｘｓ（ｔ）＋（１−α）ｍ（ｔ−１）            式（２４）
【１０９３】
ここで、ｔはカレント反復、ｔ−１は前の反復間隔によって確定された履歴反復、ｍ（ｔ−１）は、前の反復間隔によって確定された履歴反復の第２のスライディング平均値ｓ（ｔ）はカレント反復の小数点位置であり、αは最初のパラメータである。最初のパラメータはハイパーパラメータである可能性がある。
【１０９４】
この実施形態では、カレント反復における目標データの小数点位置、および履歴反復間隔によって確定されたカレント反復に対応する履歴反復の小数点位置に従って、各反復間隔に対応する目標データの小数点位置のスライディング平均値が計算される。カレント反復の小数点位置での目標データの第１のスライディング平均値、および前の反復間隔の反復に対応する小数点位置の第２のスライディング平均値に従って、第１のデータ変動範囲が取得される。第１のデータ変動範囲によって、目標データに対応する目標反復間隔が確定され、その結果、ニューラルネットワークは、目標反復間隔によって、目標データの量子化パラメータを更新する。第１のデータ変動範囲を使用して小数点位置の変化傾向を測定できるため、目標反復間隔は目標データ小数点位置の変化傾向に従うことができ、計算された目標反復間隔は目標データ小数点位置に基づくことができる。変化傾向は変化する。量子化パラメータは目標反復間隔によって確定されるため、量子化パラメータに基づく量子化によって得られる量子化データは、目標データの小数点位置の変化傾向により一致し、量子化精度を確保しながらニューラルネットワークの運用効率を向上させることができる。
【１０９５】
図２−２０は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図２−２０に示すように、ニューラルネットワークの量子化方法のステップＳ６２には次のものが含まれる。
【１０９６】
ステップＳ６２１：第１のスライディング平均値と第２のスライディング平均値の差を計算する。
【１０９７】
ステップＳ６２２：第１のデータ変動範囲として差の絶対値を確定する。
【１０９８】
第１のデータ変動範囲ｄｉｆｆｕｐｄａｔｅ１は、式（２５）を使用して計算できる。
ｄｉｆｆｕｐｄａｔｅ１＝｜ｍ（ｔ）−ｍ（ｔ−１）｜＝α｜ｓ（ｔ）−ｍ（ｔ−１）    式（２５）
Ｉ＝β／ｄｉｆｆｕｐｄａｔｅ１−γ                    式（２６）
【１０９９】
ここで、βは第２パラメータであり、γは第３パラメータである。第２パラメータと第３パラメータはハイパーパラメータの場合がある。
【１１００】
第１のデータ変動範囲を使用して、小数点位置の変化傾向を測定できることは理解できる。第１のデータ変動範囲が大きいほど、量子化予定のデータの数値範囲の変化が大きくなる。量子化パラメータを更新する場合は、より短い目標反復間隔が必要である。私。
【１１０１】
この実施形態では、第１のスライディング平均値と第２のスライディング平均値との間の差が計算され、差値の絶対値が第１のデータ変動範囲として確定される。スライディング平均値の差に応じて、正確な第１のデータ変動範囲を取得できる。
【１１０２】
図２−２１は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図２−２１に示すように、ニューラルネットワークの量子化方法にはさらに次のものが含まれる。
【１１０３】
ステップＳ６３：カレント反復において目標データと目標データに対応する量子化データに従って、第２のデータ変動範囲を取得する。
【１１０４】
ステップＳ７０には以下が含まれる。
【１１０５】
ステップＳ７２で、目標データの第１のデータ変動範囲と第２のデータ変動範囲によって、目標データに対応する目標反復間隔を確定し、ニューラルネットワークが目標反復間隔によって目標データの量子化パラメータを更新するようにする。
【１１０６】
第２のデータ変動範囲は、カレント反復における目標データと目標データに対応する量子化データに従って取得できる。カレント反復における目標データおよび目標データに対応する逆量子化データによって、第２のデータ変動範囲を取得することも可能である。
【１１０７】
同様に、目標データとカレント反復の目標データに対応する逆量子化データとの間の第２のデータ変動振幅ｄｉｆｆｂｉｔは、式（２３）に従って計算できる。他の誤差計算方法を使用して、目標データと逆量子化データの間の第２のデータ変動範囲ｄｉｆｆｂｉｔを計算することもできる。この開示はこれを制限するものではない。
【１１０８】
ｄｉｆｆｂｉｔ＝ｌｎ（（Σｉ｜Ｚｉ（ｎ）｜−Σｉ｜Ｚｉ｜）／Σｉ｜Ｚｉ｜＋１）式（２３）
【１１０９】
ここで、ｚｉは目標データであり、Ｚｉ（ｎ）は目標データに対応する逆量子化データである。第２のデータ変動範囲を使用して、目標データに対応するデータビット幅の変化傾向を測定できることは理解できる．第２のデータ変動範囲が大きいほど、目標データが対応するデータビット幅を更新する必要があり、必要な間隔が短くなる。第２のデータが更新される場合、第２のデータの変更が大きいほど、必要な目標反復間隔は短くなる。
【１１１０】
この実施形態では、第２のデータ変動範囲は、カレント反復における目標データおよび目標データに対応する量子化後のデータに従って得られる。目標データの第１のデータ変動範囲と第２のデータ変動範囲によって、目標データに対応する目標反復間隔を確定する。これにより、ニューラルネットワークは、目標反復間隔によって目標データの量子化を更新する。パラメータ。第２のデータ変動範囲は、データビット幅の変更要求を測定するために使用でき、１番目のデータ変動範囲と第２のデータ変動範囲によって計算された目標反復間隔は、小数点位置とデータビット幅の変更を同時に追跡でき、ターゲット反復を追跡できる。間隔は、目標データ自体のデータ量子化要件にさらに一致させることもできる。
【１１１１】
図２−２２は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図２−２２に示すように、ニューラルネットワークの量子化方法のステップＳ６３には次のものが含まれる。
【１１１２】
ステップＳ６３１：目標データとカレント反復の目標データに対応する量子化データとの間の誤差を計算する。
【１１１３】
ステップＳ６３２：誤差の２乗を第２のデータ変動範囲として確定する。
【１１１４】
第２のデータ変動範囲ｄｉｆｆｕｐｄａｔｅ２は、式（２７）を使用して計算できる。
ｄｉｆｆｕｐｄａｔｅ２＝δ＊ｄｉｆｆ２ｂｉｔ              式（２７）
【１１１５】
ここで、δは第４パラメータであり、第４パラメータはハイパーパラメータである可能性がある。
【１１１６】
異なるデータビット幅を使用することにより、異なる量子化予定のデータを取得し、異なる第２のデータ変動範囲を生成することにより、異なる量子化パラメータを取得できることは理解できる。第２のデータ変動範囲は、データビット幅の変化傾向を測定するために使用できる．第２のデータ変動範囲が大きいほど、データビット幅をより頻繁に更新するために必要な目標反復間隔は短くなる。つまり、目標反復間隔を小さくする必要がある。
【１１１７】
図２−２３は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図２−２３に示すように、ステップＳ７２には次のものが含まれる。
【１１１８】
ステップＳ７２１：第１のデータ変動範囲と第２のデータ変動範囲うちの最大値に従って、目標データに対応する目標反復間隔を確定する。
【１１１９】
目標反復間隔は、式（２８）に従って計算できる。
Ｉ＝β／ｍａｘ（ｄｉｆｆｕｐｄａｔｅ１，ｄｉｆｆｕｐｄａｔｅ２）−γ    式（２８）
【１１２０】
ここで、βは第２パラメータであり、γは第３パラメータである。第２パラメータと第３パラメータはハイパーパラメータの場合がある。
【１１２１】
第１のデータ変動範囲と第２のデータ変動範囲を使用して得られる目標反復間隔は、データビット幅と小数点位置の変化傾向を同時に測定できることは理解できる。２つのうちの一方の変化傾向が大きい場合、次に、それに応じて目標反復間隔を変更できる。目標反復間隔は、データビット幅と小数点位置の変化を同時に追跡し、対応する調整を行うことができる。目標反復間隔によって更新される量子化パラメータは、目標データの変化傾向により一致する可能性があり、最終的に、量子化パラメータに従って取得される量子化予定のデータは、量子化要件により一致する可能性がある。
【１１２２】
図２−２４は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図２−２４に示すように、ニューラルネットワークの量子化方法のステップＳ６０には次のものが含まれる。
【１１２３】
ステップＳ６４：カレント反復が更新周期外の場合、カレント反復および履歴反復における目標データのデータ変動範囲を取得する。ここで、更新周期には少なくとも１つの反復が含まれる。
【１１２４】
ニューラルネットワーク演算のトレーニングプロセスおよび／または微調整プロセスでは、トレーニングまたは微調整の開始時に、目標データが複数の反復で大きく変化する。トレーニングまたは微調整の開始時に目標反復間隔が複数の反復で計算される場合、計算された目標反復間隔はその有用性を失う可能性がある。プリセット更新周期に従って、更新周期内の各反復について、目標反復間隔は計算されず、目標反復間隔は適用されないため、複数の反復が同じデータビット幅または小数点位置を使用する。
【１１２５】
反復が更新周期を超えて進行する場合、つまりカレント反復が更新周期外の場合、カレント反復および履歴反復における目標データのデータ変動範囲を取得し、目標データのデータ変動範囲によって目標データに対応する目標データを確定する。ニューラルネットワークが目標反復間隔によって目標データの量子化パラメータを更新するように、目標反復間隔。たとえば、プリセット更新周期が１００反復の場合、目標反復間隔は第１反復から第１００反復まで計算されない。反復が第１０１反復に進む場合、つまりカレント反復が第１０１反復の場合、カレント反復は更新サイクルの範囲外である。このとき、第１０１反復および第１反復から第１００反復の目標データのデータ変動範囲を使用して、第１０１反復の目標データに対応する目標反復間隔、および計算された目標反復間隔は、第１０１反復、または第１０１間隔でプリセット反復回数で使用される。
【１１２６】
更新サイクルは、プリセット反復番号からカウントすることができ、例えば、更新サイクルの複数の反復を第１反復からカウントすることができ、または更新サイクルの複数の反復を第Ｎ反復からカウントすることができるが、これは本開示に限定されない。
【１１２７】
この実施形態では、目標反復間隔が計算され、反復が更新周期を超えて進行するときに使用される。ニューラルネットワーク運用のトレーニングプロセスや微調整プロセスの初期段階で目標データが大きく変動するため、目標反復間隔があまり重要ではないという問題を回避できる。目標反復間隔を使用すると、ニューラルネットワークのパフォーマンスをさらに向上させることができる。運用効率。
【１１２８】
図２−２５は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図２−２５に示すように、ニューラルネットワークの量子化方法にはさらに次のものが含まれる。
【１１２９】
ステップＳ１００は、カレント反復がプリセット周期内にあるとき、カレント反復、プリセット周期の次の周期のカレント反復に対応する反復、およびカレント反復に対応する反復間隔によって周期間隔を確定する。
【１１３０】
ステップＳ１１０：カレント反復において目標データに対応するデータビット幅によって、周期間隔内の反復の目標データのデータビット幅を確定する。またはカレント反復において目標データに対応する小数点位置によって、周期間隔内の反復における目標データの小数点位置を確定する。
【１１３１】
ニューラルネットワーク演算のトレーニングプロセスまたは微調整プロセスには、複数のサイクルを含めることができる。各サイクルには、複数の反復を含めることができる。ニューラルネットワークの計算に使用されるデータは、１サイクルに１回完全に計算される。トレーニングプロセスでは、反復が進むにつれて、ニューラルネットワークの重みが変化傾向がある。トレーニングが安定すると、量子化後のデータを待機するニューロン、重み、オフセット、および勾配が安定する傾向がある。目標データが安定した後、目標データのデータビット幅と量子化パラメータも安定する。同様に、微調整プロセスでは、微調整が安定した後、目標データのデータビット幅と量子化パラメータも安定する傾向がある。
【１１３２】
したがって、プリセット周期は、安定したトレーニングまたは安定した微調整の周期に応じて確定できる。トレーニングが安定した周期または微調整が安定した周期の後の周期を、プリセット周期として確定することができる。たとえば、安定したトレーニング周期はＭ番目の周期であり、Ｍ番目の周期の後の周期をプリセット周期として使用できる。プリセット周期では、間隔ごとに目標反復間隔を計算でき、計算した目標反復間隔によってデータビット幅または量子化パラメータを１回調整することで、データビット幅または量子化パラメータの更新時間を短縮し、ニューラルネットワークのパフォーマンスを向上させることができる。運用効率。
【１１３３】
たとえば、プリセット周期はＭ番目の周期の後の周期である。Ｍ＋１番目のサイクルでは、Ｍ番目のサイクルのＰ番目の反復に従って計算された目標反復間隔は、Ｍ＋１番目のサイクルのＱ番目の反復で終了する。Ｍ＋１番目のサイクルのＱｍ＋１番目の反復に従って、対応する目標反復間隔Ｉｍ＋１が計算される。Ｍ＋２番目のサイクルでは、Ｍ＋１番目のサイクルのＱｍ＋１番目の反復に対応する反復は、ＱＭ＋第２の反復である。Ｍ＋１番目のサイクルのＱｍ＋１番目の反復から、Ｍ＋２番目のサイクルのＱｍ＋２＋Ｉｍ＋１番目の反復まで、これは周期的な間隔である。周期間隔内の各反復では、Ｍ＋１周期のＱｍ＋１反復によって確定されるデータビット幅や小数点位置などの量子化パラメータが使用される。
【１１３４】
この実施形態では、周期間隔を設定することができる。ニューラルネットワーク動作のトレーニングまたは微調整が安定した後、データビット幅または小数点位置などの量子化パラメータは、周期間隔に従って周期ごとに更新される。周期間隔は、トレーニングが安定した後、または微調整が安定した後のデータビット幅または小数点位置の更新時間を短縮し、量子化の精度を確保しながら、ニューラルネットワークの運用効率を向上させることができる。
【１１３５】
前述の方法の実施形態について、簡単な説明のために、それらはすべて一連の作用の組み合わせとして表されるが、当技術分野の当業者は、本開示が記載された一連の作用によって限定されないことを理解すべきであることに留意されたい。この開示によれば、特定のステップは、他の順序でまたは同時に実行することができるからである。第二に、当技術分野の当業者はまた、本明細書に記載の実施形態が任意の実施形態であり、関連するアクションおよびモジュールが本開示によって必ずしも必要とされないことを認識すべきである。
【１１３６】
なお、図２−１〜２−６のフローチャートのステップは、矢印のように順番に表示されているが、必ずしも矢印の順序で実行されているとは限らない。この記事で特に明記されていない限り、これらのステップの実行は順序に厳密に制限されておらず、これらのステップは他の順序で実行できる。さらに、図２−１から２−６のステップの少なくとも一部には、複数のサブステップまたは複数のステージを含めることができる。これらのサブステップまたはステージは、必ずしも同時に実行されるとは限らないが、異なる時間に実行できる。これらのサブステップまたはステージの実行順序は、必ずしも順番に実行されるとは限らないが、他のステップまたは他のステップのサブステップまたはステージの少なくとも一部と交互にまたは交互に実行され得る。
【１１３７】
図２−２６は、本開示の一実施形態によるニューラルネットワークの量子化装置の概略図を示す。図２−２６に示すように、本開示は、ニューラルネットワークの量子化装置を提供し、装置は、ニューラルネットワークで量子化予定の任意の層を量子化するために使用され、装置は、以下を含む。
【１１３８】
量子化パラメータ確定モジュール１０は、量子化予定の層において各タイプの量子化予定のデータに対応する量子化パラメータを確定するように構成される。ここで、量子化予定のデータは、ニューロン、重み、オフセット、および勾配のうちの少なくとも１つを含む。
【１１３９】
量子化モジュール２０は、対応する量子化パラメータに従って量子化予定のデータを量子化して量子化予定のデータを取得するように構成され、その結果、ニューラルネットワークは、量子化予定のデータによって動作を実行する。
【１１４０】
可能な実装方法では、量子化パラメータには、小数点位置、スケーリング係数、およびオフセットの少なくとも１つが含まれる。
【１１４１】
小数点位置は、量子化後の小数点位置である。
【１１４２】
スケーリング係数は、量子化後のデータの最大値と量子化予定のデータの最大絶対値の比率である。
【１１４３】
オフセットは、量子化予定のデータの中間値である。
【１１４４】
図２−２７は、本開示の一実施形態によるニューラルネットワークの量子化装置の概略図を示す。図２−２７に示すように、量子化パラメータ確定モジュール１０には次のものが含まれる。
【１１４５】
第１の量子化パラメータ確定サブモジュール１１は、量子化予定のデータと量子化パラメータとの間の対応関係を検索することによって、量子化予定の層において各タイプの量子化予定のデータに対応する量子化パラメータを確定するように構成される。
【１１４６】
可能な実施方法において、量子化パラメータ確定モジュール１０は、以下を含む。
【１１４７】
第２の量子化パラメータ確定サブモジュール１２は、各タイプの量子化予定のデータおよび対応するデータビット幅によって、対応する量子化パラメータを計算するように構成される。
【１１４８】
可能な実施方法において、第２の量子化パラメータ確定サブモジュール１２は、以下を含む。
【１１４９】
第１の小数点位置計算ユニット１２１は、量子化パラメータがオフセットを含まない場合に、目標データの最大絶対値および目標データに対応するデータビット幅によって、目標データの小数点位置を取得するように構成される。目標データは、任意の一種の量子化予定のデータである。
【１１５０】
可能な実施方法において、第２の量子化パラメータ確定サブモジュール１２は、以下を含む。
【１１５１】
第１のスケーリング係数計算ユニット１２２は、量子化パラメータがオフセットを含まない場合の目標データおよび目標データに対応するデータビット幅、およびターゲットに従って、目標データの量子化後の最大値を取得するように構成される。データは、任意の一種の量子化予定のデータである。目標データのスケーリング係数は、目標データの最大絶対値と目標データの量子化データの最大値に従って取得される。
【１１５２】
可能な実施方法において、第２の量子化パラメータ確定サブモジュール１２は、以下を含む。
【１１５３】
第２の小数点位置計算ユニット１２３は、量子化パラメータがオフセットを含む場合、目標データの最大値、目標データの最小値、および目標データに対応するデータビット幅によって、次のように構成される。目標データの小数点位置が取得され、目標データは任意の一種の量子化予定のデータである。
【１１５４】
可能な実施方法において、第２の量子化パラメータ確定サブモジュール１２は、以下を含む。
【１１５５】
第２のスケーリング係数計算ユニット１２４は、量子化パラメータがオフセットを含む場合、目標データおよび目標データに対応するデータビット幅、ならびに目標データに従って、目標データの量子化後の最大値を取得するように構成される。量子化予定のデータは任意である。目標データの最大値、目標データの最小値、および目標データの量子化後の最大値に応じて、目標データのスケーリング係数が取得される。
【１１５６】
可能な実施方法において、第２の量子化パラメータ確定サブモジュール１２は、以下を含む。
【１１５７】
オフセット計算ユニット１２５は、目標データの最大値および最小値に従って目標データのオフセットを取得するように構成され、目標データは、量子化予定の任意の種類のデータである。
【１１５８】
図２−２８は、本開示の一実施形態によるニューラルネットワークの量子化装置の概略図を示す。図２−２８に示すように、可能な実装方法では、装置にはさらに次のものが含まれる。
【１１５９】
量子化誤差確定モジュール３０は、目標データおよび目標データに対応する量子化データに従って目標データの量子化誤差を確定するように構成され、目標データは、量子化予定の任意の種類のデータである。
【１１６０】
調整ビット幅確定モジュール４０は、量子化誤差および誤差しきい値に従って、目標データに対応するデータビット幅を調整して、目標データに対応する調整ビット幅を取得するように構成される。
【１１６１】
調整量子化パラメータ確定モジュール５０は、目標データに対応するデータビット幅を調整ビット幅に更新し、目標データおよび調整ビット幅に従って対応する調整量子化パラメータを計算するように構成される。ニューラルネットワークは、調整された量子化パラメータに従って量子化を実行する。
【１１６２】
可能な実施方法において、調整ビット幅確定モジュール４０は、以下を含む。
【１１６３】
第１の調整ビット幅確定サブモジュール４１は、量子化誤差が第１の誤差しきい値より大きい場合に目標データに対応するデータビット幅を増加させて、目標データに対応する調整ビット幅を取得するように構成される。
【１１６４】
可能な実施方法において、調整ビット幅確定モジュール４０はさらに以下を含む。
【１１６５】
第１の調整量子化誤差確定サブモジュール４２は、調整ビット幅および目標データに従って目標データの調整済の量子化誤差を計算するように構成される。
【１１６６】
第１の調整ビット幅循環確定サブモジュール４３は、調整ビット幅および目標データに従って計算される調整まで、調整済の量子化誤差および第１の誤差しきい値に従って調整ビット幅を増加し続けるように構成される。後続の量子化誤差は、第１の誤差しきい値以下である。
【１１６７】
可能な実施方法において、調整ビット幅確定モジュール４０は、以下を含む。
【１１６８】
第２の調整ビット幅確定サブモジュール４４は、量子化誤差が第２の誤差しきい値未満であり、第２の誤差しきい値が第１の誤差しきい値未満である場合に、目標データに対応するデータビット幅を減少させるように構成される。
【１１６９】
可能な実施方法において、調整ビット幅確定モジュール４０はさらに以下を含む。
【１１７０】
第２の調整量子化誤差確定サブモジュール４５は、調整ビット幅および目標データに従って目標データの調整済の量子化誤差を計算するように構成される。
【１１７１】
第２の調整ビット幅周期的確定サブモジュール４６は、調整が調整ビット幅および目標データに従って計算されるまで、調整済の量子化誤差および第２の誤差しきい値に従って調整ビット幅を減少し続けるように構成される。後続の量子化誤差は、第２の誤差しきい値以上である。
【１１７２】
図２−２９は、本開示の一実施形態によるニューラルネットワークの量子化装置の概略図を示す。図２−２９に示すように、可能な実装方法では、ニューラルネットワーク演算の微調整フェーズおよび／またはトレーニングフェーズで、装置にはさらに次のものが含まれる。
【１１７３】
データ変動範囲確定モジュール６０は、カレント反復および履歴反復における目標データのデータ変動範囲を取得するように構成される。ここで、履歴反復は、カレント反復の前の反復である。
【１１７４】
目標反復間隔確定モジュール７０は、目標データのデータ変動範囲によって目標データに対応する目標反復間隔を確定するように構成され、その結果、ニューラルネットワークは、目標反復間隔によって目標データの量子化パラメータを更新する。目標反復間隔には少なくとも１つの反復が含まれ、目標データは量子化予定の任意のタイプのデータである。
【１１７５】
可能な実装方法では、装置はさらに以下を含む。
【１１７６】
第１の目標反復間隔適用モジュール８０は、カレント反復における目標データのデータビット幅によって、目標反復間隔における目標データの反復に対応するデータビット幅を確定するように構成される。ニューラルネットワークは、目標反復間隔内の目標データの反復に対応するデータビット幅によって量子化パラメータを確定する。
【１１７７】
可能な実装方法では、装置はさらに以下を含む。
【１１７８】
第２の目標反復間隔適用モジュール９０は、カレント反復に対応する目標データの小数点位置に従って、目標反復間隔における目標データの反復に対応する小数点位置を確定するように構成される。
【１１７９】
可能な実施方法において、データ変動範囲確定モジュール６０は、以下を含む。
【１１８０】
スライディング平均値計算サブモジュール６１は、カレント反復における目標データの小数点位置および履歴反復間隔によって確定されたカレント反復に対応する履歴反復の小数点位置に従って、各反復間隔に対応する目標データの小数点位置を計算するためである。のスライディング平均値
【１１８１】
第１のデータ変動範囲確定サブモジュール６２は、カレント反復の小数点位置での目標データの第１のスライド平均値および１つ前の反復間隔の反復に対応する小数点位置の第２のスライド平均値によって、第１のデータ変動範囲を取得するように構成される。
【１１８２】
目標反復間隔確定モジュール７０は、以下を含む。
【１１８３】
第１の目標反復間隔確定サブモジュール７１は、第１のデータ変動範囲によって目標データに対応する目標反復間隔を確定するように構成され、その結果、ニューラルネットワークは、目標反復間隔によって目標データ間隔を更新する。量子化パラメータ。
【１１８４】
可能な実装方法では、サブモジュール６２を確定する第１のデータ変動範囲は、以下を含む。
【１１８５】
第１のデータ変動範囲確定ユニット６２１は、第１のスライディング平均値と第２のスライディング平均値との間の差を計算するように構成される；第１のデータ変動範囲として差の絶対値を確定する。
【１１８６】
可能な実施方法において、データ変動範囲確定モジュール６０はさらに以下を含む。
【１１８７】
第２のデータ変動範囲確定サブモジュール６３は、目標データおよびカレント反復における目標データに対応する量子化データに従って第２のデータ変動範囲を取得するように構成される。
【１１８８】
目標反復間隔確定モジュール７０は、以下を含む。
【１１８９】
第２の目標反復間隔確定サブモジュール７２は、目標データの第１のデータ変動範囲および第２のデータ変動範囲によって目標データに対応する目標反復間隔を確定するように構成されるので、ニューラルネットワークはに基づく。目標反復間隔は、目標データの量子化パラメータを更新する。
【１１９０】
可能な実施方法において、第２のデータ変動範囲確定モジュール６３は、以下を含む。
【１１９１】
第２のデータ変動範囲確定ユニット６３１は、目標データとカレント反復における目標データに対応する量子化データとの間の誤差を計算するように構成され、誤差の二乗を第２のデータ変動範囲として確定する。
【１１９２】
可能な実施方法において、第２の目標反復間隔確定サブモジュール７２は、第１のデータ変動範囲および第２のデータ変動範囲の最大値に従って目標データの対応する値を確定するように構成される。目標反復間隔。
【１１９３】
可能な実施方法において、データ変動範囲確定モジュール６０は、以下を含む。
【１１９４】
第３のデータ変動範囲確定サブモジュール６４は、カレント反復が更新周期外であり、更新周期が少なくとも１回の反復を含む場合に、カレント反復および履歴反復における目標データのデータ変動範囲を取得するように構成される。
【１１９５】
図２−３０は、本開示の一実施形態によるニューラルネットワークの量子化装置の概略図を示す。図２−３０に示すように、可能な実装方法では、装置にはさらに次のものが含まれる。
【１１９６】
周期間隔確定モジュール１００は、カレント反復、プリセットサイクルの次のサイクルにおけるカレント反復に対応する反復、およびカレント反復に対応する反復間隔によって、カレント反復がプリセットサイクル内にあるときを確定するように構成される。定期的な間隔。
【１１９７】
第１の周期間隔適用モジュール１１０は、カレント反復における目標データに対応するデータビット幅によって、周期間隔内の反復における目標データのデータビット幅を確定するように構成される。
【１１９８】
第２の周期間隔適用モジュール１２０は、カレント反復に対応する目標データの小数点位置に従って、周期間隔内の反復における目標データの小数点位置を確定するように構成される。
【１１９９】
可能な実装方法では、装置はさらに以下を含む。
【１２００】
量子化パラメータ継承モジュール１３０は、量子化予定の層の後に１つまたは複数の層で量子化予定の層の量子化パラメータを採用するように構成される。
【１２０１】
前述の装置の実施形態は例示にすぎず、本開示の装置は他の方法でも実施できることを理解されたい。例えば、上記の実施形態におけるユニット／モジュールの分割は、論理的機能分割にすぎず、実際の実施において他の分割方法があり得る。たとえば、複数のユニット、モジュール、またはコンポーネントを組み合わせたり、別のシステムに統合したり、一部の機能を省略したり、実装しなかったりする場合がある。
【１２０２】
個別のコンポーネントとして説明されているユニットまたはモジュールは、物理的に分離されている場合とされていない場合がある。ユニットまたはモジュールとして記述されるコンポーネントは、物理ユニットである場合と物理ユニットではない場合がある。つまり、１つの装置に配置されている場合と、複数の装置に分散されている場合がある。本開示における実施形態の解決策は、実際の必要性に従ってユニットのいくつかまたはすべてを選択することによって実施することができる。
【１２０３】
さらに、特に明記しない限り、本開示の様々な実施形態における機能ユニット／モジュールは、１つのユニット／モジュールに統合され得るか、または各ユニット／モジュールが物理的に単独で存在し得るか、または２つ以上のユニット／モジュールが存在し得る。モジュールは一緒に統合されている。上記の統合ユニット／モジュールは、ハードウェアまたはソフトウェアプログラムモジュールの形式で実装できる。
【１２０４】
統合ユニット／モジュールがハードウェアの形で実装されている場合、ハードウェアはデジタル回路、アナログ回路などである可能性がある。ハードウェア構造の物理的な実現には、トランジスタ、メモリスタなどが含まれるが、これらに限定されない。特に指定のない限り、人工知能プロセッサは、ＣＰＵ、ＧＰＵ、ＦＰＧＡ、ＤＳＰ、ＡＳＩＣなどの適切なハードウェアプロセッサである。特に指定のない限り、記憶ユニットは、ＲＲＡＭ（Ｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  ＡｃｃｅｓｓＭｅｍｏｒｙ）、Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  ＡｃｃｅｓｓＭｅｍｏｒｙ（ＤＲＡＭ）などの適切な磁気ストレージメディアまたは磁気光学ストレージメディアのいずれかである。ＳＲＡＭ（静的ランダムアクセスメモリ）、拡張動的ランダムアクセスメモリ（ＥＤＲＡＭ）、高帯域幅メモリ（ＨＢＭ）、ハイブリッドメモリキューブ（ＨＭＣ）など。待つ。
【１２０５】
統合されたユニット／モジュールがソフトウェアプログラムモジュールの形式で実装され、独立した製品として販売または使用される場合、コンピュータで読み取り可能なメモリに格納できる。この理解に基づいて、本開示の技術案は、本質的に、または既存の技術に寄与する部分、または技術案の全部または一部をソフトウェア製品の形で具体化することができ、コンピュータソフトウェア製品はメモリに格納され、これは、コンピュータ装置（パーソナルコンピュータ、サーバ、またはネットワーク装置などであり得る）に、本開示の様々な実施形態に記載された方法のステップの全部または一部を実行させるためのいくつかの命令を含む。前述のメモリには、Ｕディスク、読み取り専用メモリ（ＲＯＭ、読み取り専用メモリ）、ランダムアクセスメモリ（ＲＡＭ、ランダムアクセスメモリ）、モバイルハードディスク、磁気ディスク、または光ディスク、およびプログラムコードを格納できるその他のメディアが含まれる。
【１２０６】
可能な実施において、本開示はまた、前述のデータ同期装置を含む人工知能チップを開示する。
【１２０７】
可能な実施方法において、本開示はまた、記憶装置、インターフェース装置、制御装置、および前述の人工知能チップを含むボードカードを開示する。ここで、人工知能チップおよび記憶装置は、制御装置とインターフェース装置はそれぞれ接続されており、記憶装置はデータを格納するために使用され、インターフェース装置は人工知能チップと外部装置との間のデータ伝送を実現するために使用され、制御装置は人工知能チップの状態を監視する。
【１２０８】
図２−３１は、本開示の一実施形態によるボードカードの構造ブロック図を示す。図２−３１を参照すると、ボードカードは、上記のチップ３８９に加えて他の支持構成要素を含み得る。支持構成要素は、記憶装置３９０、インターフェース装置３９１および制御装置３９２を含むが、これらに限定されない。
【１２０９】
記憶装置３９０は、データを記憶するためのバスを介して人工知能チップに接続されている。記憶装置は、記憶ユニット３９３の複数のグループを含み得る。記憶ユニットと人工知能チップの各グループは、バスを介して接続されている。記憶ユニットの各グループはＤＤＲＳＤＲＡＭ（英語：Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  ＳＤＲＡＭ、ダブルレート同期動的ランダムアクセスメモリ）である可能性があることが理解できる。
【１２１０】
ＤＤＲは、クロック周波数を上げることなく、ＳＤＲＡＭの速度を２倍にすることができる。ＤＤＲを使用すると、クロックパルスの立ち上がりエッジと立ち下がりエッジでデータを読み取ることができる。ＤＤＲの速度は標準のＳＤＲＡＭの２倍である。一実施形態では、貯蔵装置は、貯蔵ユニットの４つのグループを含み得る。記憶ユニットの各グループには、複数のＤＤＲ４粒子（チップ）を含めることができる。一実施形態では、人工知能チップは、４つの７２ビットＤＤＲ４コントローラを含み得る。７２ビットＤＤＲ４コントローラでは、６４ビットがデータ伝送に使用され、８ビットがＥＣＣ検証に使用される。記憶ユニットの各グループでＤＤＲ４−３２００粒子を使用すると、データ伝送の理論上の帯域幅が２５６００ＭＢ／秒に達する可能性があることが理解できる。
【１２１１】
一実施形態では、記憶ユニットの各グループは、並列に配置された複数のダブルレート同期動的ランダムアクセスメモリを含む。ＤＤＲは、１クロックサイクルで２回データを送信できる。各記憶ユニットのデータ伝送とデータストレージを制御するために、ＤＤＲを制御するためのコントローラがチップに提供されている。
【１２１２】
インターフェース装置は、人工知能チップに電気的に接続されている。インターフェイス装置は、人工知能チップと外部装置（サーバーやコンピュータなど）との間のデータ伝送を実装するためである。例えば、一実施形態では、インターフェース装置は、標準のＰＣＩＥインターフェースであり得る。たとえば、処理されるデータは、データ伝送を実現するために、標準のＰＣＩＥインターフェイスを介してサーバーからチップに伝送される。送信にＰＣＩＥ３．０Ｘ１６インターフェイスを使用する場合、理論上の帯域幅は１６０００ＭＢ／ｓに達することが好ましい。別の実施形態において、インターフェース装置はまた、他のインターフェースであり得る。本開示は、インターフェースユニットがスイッチング機能を実現できる限り、上記の他のインターフェースの特定の症状を限定しない。さらに、人工知能チップの計算結果は、インターフェース装置によって外部装置（サーバーなど）に送信される。
【１２１３】
制御装置は人工知能チップに電気的に接続されている。制御装置は、人工知能チップの状態を監視するためである。具体的には、人工知能チップと制御装置は、ＳＰＩインターフェースを介して電気的に接続され得る。制御装置は、シングルチップマイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｎｔｒｏｌｌｅｒ  Ｕｎｉｔ、ＭＣＵ）を含み得る。たとえば、人工知能チップは、複数の処理チップ、複数の処理コア、または複数の処理回路を含み得、複数の負荷を駆動することができる。したがって、人工知能チップは、複数の負荷や軽負荷など、さまざまな動作状態になる可能性がある。制御装置は、人工知能チップ内の複数の処理チップ、複数の処理、および／または複数の処理回路の動作状態の調整を実現することができる。
【１２１４】
可能な実施方法において、前述の人工知能チップを含む電子装置が開示される。電子機器には、データ処理装置、ロボット、コンピュータ、プリンター、スキャナー、タブレット、スマート端末、携帯電話、ドライビングレコーダー、ナビゲーター、センサー、カメラ、サーバー、クラウドサーバー、カメラ、カメラ、プロジェクター、時計、ヘッドセットが含まれる、モバイルストレージ、ウェアラブル装置、車両、家電製品、および／または医療機器。
【１２１５】
輸送手段には飛行機、船および／または車両が含まれ、家庭用電化製品にはテレビ、エアコン、電子レンジオーブン、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスストーブ、レンジフードが含まれる。医療機器には核磁気共鳴が含まれる。Ｂ−超音波および／または心電計。
【１２１６】
上記は、次の条項に従ってよりよく理解できる。
【１２１７】
Ｂ１、ニューラルネットワークの量子化方法。ニューラルネットワークで量子化予定の層の場合、この方法には次のものが含まれる。
【１２１８】
量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータを確定する。ここで、量子化予定のデータは、ニューロン、重み、オフセット、および勾配のうちの少なくとも１つを含む。
【１２１９】
量子化予定のデータは、対応する量子化パラメータに従って量子化されて量子化後のデータを取得するため、ニューラルネットワークは量子化後のデータに従って操作を実行する。
【１２２０】
Ｂ２、量子化パラメータが、小数点位置、スケーリング係数、およびオフセットのうちの少なくとも１つを含む、Ｂ１項に記載の方法。
【１２２１】
小数点位置は、量子化後の小数点位置である。
【１２２２】
スケーリング係数は、量子化後のデータの最大値と量子化予定のデータの最大絶対値の比率である。
【１２２３】
オフセットは、量子化予定のデータの中間値である。
【１２２４】
Ｂ３、Ｂ１項またはＢ２項に記載の方法で、量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータを確定する方法には、以下が含まれる。
【１２２５】
量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータは、量子化予定のデータと量子化パラメータとの間の対応関係を検索することによって確定される。
【１２２６】
Ｂ４、Ｂ１項またはＢ２項による方法で、量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータを確定する方法には、以下が含まれる。
【１２２７】
対応する量子化パラメータは、各タイプの量子化予定のデータと対応するデータビット幅によって計算される。
【１２２８】
Ｂ５、第Ｂ４項による方法は、各タイプの量子化予定のデータおよび対応するデータビット幅によって、対応する量子化パラメータを計算することを述べた。
【１２２９】
量子化パラメータにオフセットが含まれていない場合、目標データの最大絶対値と目標データに対応するデータビット幅に応じて目標データの小数点位置が求められ、目標データは任意の種類である。量子化予定のデータ。
【１２３０】
Ｂ６、第Ｂ４項による方法は、各タイプの量子化予定のデータおよび対応するデータビット幅によって、対応する量子化パラメータを計算することを述べ、以下を含む。
【１２３１】
量子化パラメータにオフセットが含まれていない場合は、目標データと目標データに対応するデータビット幅に応じて、目標データの量子化後の最大値を取得する。目標データは、任意の一種の量子化予定のデータである。
【１２３２】
目標データの最大絶対値と目標データの量子化データの最大値に従って、目標データのスケーリング係数が取得される。
【１２３３】
Ｂ７、各タイプの量子化予定のデータおよび対応するデータビット幅に応じた対応する量子化パラメータの計算には、以下が含まれる、Ｂ４項に記載の方法。
【１２３４】
量子化パラメータにオフセットが含まれる場合、目標データの最大値、目標データの最小値、および目標データに対応するデータビット幅によって、目標データの小数点位置が取得される。目標データは、任意の一種の量子化予定のデータである。
【１２３５】
Ｂ８、各タイプの量子化予定のデータおよび対応するデータビット幅に応じた対応する量子化パラメータの計算には、以下が含まれる、Ｂ４項に記載の方法。
【１２３６】
量子化パラメータにオフセットが含まれている場合は、目標データと目標データに対応するデータビット幅に応じて、目標データの量子化後の最大値を取得する。目標データは、任意の一種の量子化予定のデータである。
【１２３７】
目標データのスケーリング係数は、目標データの最大値、目標データの最小値、および目標データの量子化後の最大値に従って取得される。
【１２３８】
Ｂ９、各タイプの量子化予定のデータおよび対応するデータビット幅に応じた対応する量子化パラメータの計算には、以下が含まれる、Ｂ４項に記載の方法。
【１２３９】
目標データの最大値と最小値に応じて、目標データのオフセットが取得され、目標データは任意の一種の量子化予定のデータである。
【１２４０】
Ｂ１０、Ｂ１項からＢ９項のいずれか１つに記載の方法で、以下をさらに含む方法。
【１２４１】
目標データおよび目標データに対応する量子化データに従って、目標データの量子化誤差を確定する。ここで、目標データは、量子化予定の任意の種類のデータである。
【１２４２】
量子化誤差および誤差しきい値に従って目標データに対応するデータビット幅を調整し、目標データに対応する調整ビット幅を取得する。
【１２４３】
目標データに対応するデータビット幅が調整ビット幅に更新され、目標データと調整ビット幅に応じて対応する調整量子化パラメータが計算されるため、ニューラルネットワークは調整量子化パラメータに従って処理を実行する。量子化。
【１２４４】
Ｂ１１、目標データに対応する調整ビット幅を得るために、量子化誤差および誤差しきい値に従って目標データに対応するデータビット幅を調整する、条項Ｂ１０に記載の方法は、以下を含む。
【１２４５】
量子化誤差が第１の誤差しきい値より大きい場合、目標データに対応するデータビット幅を増やして、目標データに対応する調整ビット幅を取得する。
【１２４６】
Ｂ１２、Ｂ１１項に基づく方法であり、以下をさらに含む方法。
【１２４７】
調整ビット幅と目標データに従って、目標データの調整済み量子化誤差を計算する。
【１２４８】
調整ビット幅と目標データに従って計算された調整済の量子誤差が第１の誤差しきい値以下になるまで、調整済の量子化誤差と第１の誤差しきい値に従って調整ビット幅を増やし続ける。
【１２４９】
Ｂ１３、量子化誤差および誤差しきい値に従って、目標データに対応するデータビット幅を調整することを含む、Ｂ１０項またはＢ１１項に記載の方法。
【１２５０】
量子化誤差が第２の誤差しきい値よりも小さい場合、目標データに対応するデータビット幅が減少し、第２の誤差しきい値が１番目の誤差しきい値よりも小さくなる。
【１２５１】
Ｂ１４、Ｂ１３項に基づく方法であり、以下をさらに含む方法。
【１２５２】
調整ビット幅と目標データに従って、目標データの調整済み量子化誤差を計算する。
【１２５３】
調整ビット幅と目標データに従って計算された調整済の量子誤差が第２の誤差しきい値以上になるまで、調整済の量子化誤差と第２の誤差しきい値に従って調整ビット幅を減らし続ける。
【１２５４】
Ｂ１５、ニューラルネットワーク演算の微調整段階および／またはトレーニング段階におけるＢ１項からＢ１４項のいずれか１つに記載の方法には、さらに以下が含まれる。
【１２５５】
カレント反復および履歴反復における目標データのデータ変動範囲を取得する。ここで、履歴反復はカレント反復の前の反復である。
【１２５６】
目標データのデータ変動範囲によって、目標データに対応する目標反復間隔を確定する。これにより、ニューラルネットワークは、目標反復間隔によって目標データの量子化パラメータを更新し、目標反復間隔には少なくとも１つが含まれる。反復になるが、目標データは任意の一種の量子化予定のデータである。
【１２５７】
Ｂ１６、Ｂ１５項に基づく方法であり、以下をさらに含む方法。
【１２５８】
カレント反復における目標データのデータビット幅によって、目標反復間隔における目標データの反復に対応するデータビット幅が確定されるため、ニューラルネットワークはターゲット内の目標データに基づいている。反復間隔内の反復に対応するデータビット幅によって、量子化パラメータが決まる。
【１２５９】
Ｂ１７、Ｂ１５項に基づく方法であり、以下をさらに含む方法。
【１２６０】
カレント反復に対応する目標データの小数点位置によって、目標反復間隔内の目標データの反復に対応する小数点位置を確定する。
【１２６１】
Ｂ１８、Ｂ１５項で説明されている方法によると、カレント反復および履歴反復での目標データのデータ変動範囲の取得には次のものが含まれる。
【１２６２】
カレント反復における目標データの小数点位置、および履歴反復間隔によって確定されたカレント反復に対応する履歴反復の小数点位置によって、各反復間隔に対応する目標データの小数点位置のスライディング平均値を計算する。
【１２６３】
カレント反復の小数点位置での目標データの最初のスライド平均値と、前の反復間隔の反復に対応する小数点位置の２番目のスライド平均値に従って、第１のデータ変動範囲を取得する。
【１２６４】
目標データのデータ変動範囲によって目標データに対応する目標反復間隔を確定し、ニューラルネットワークが目標反復間隔によって目標データの量子化パラメータを更新するようにすることには、以下が含まれる。
【１２６５】
ニューラルネットワークが目標反復間隔によって目標データの量子化パラメータを更新するように、第１のデータ変動範囲によって目標データに対応する目標反復間隔を確定する。
【１２６６】
Ｂ１９、Ｂ１８項に基づく方法で、目標データのカレント反復の小数点位置の第１のスライディング平均値と、前の反復間隔での対応する反復の小数点位置の第２のスライディング平均値を使用して、第１のデータ変動範囲を取得するのは、以下を含む：
第１のスライディング平均値と第２のスライディング平均値の差を計算する。
差の絶対値は、第１のデータ変動範囲として確定される。
Ｂ２０、Ｂ１８項に基づく方法で、さらに以下を含む。
カレント反復における目標データおよび目標データに対応する量子化データに従って、第２のデータ変動範囲を取得する。
【１２６７】
目標データのデータ変動範囲によって目標データに対応する目標反復間隔を確定し、ニューラルネットワークが目標反復間隔によって目標データの量子化パラメータを更新するようにすることには、以下が含まれる。
【１２６８】
目標データの第１のデータ変動範囲と第２のデータ変動範囲によって、目標データに対応する目標反復間隔を確定する。これにより、ニューラルネットワークは、目標反復間隔によって目標データの量子化を更新する。パラメータ。
【１２６９】
Ｂ２１、Ｂ２０項に記載されている方法によれば、カレント反復における目標データおよび目標データに対応する量子化データに従って第２のデータ変動範囲を取得するには、次のものが含まれる。
【１２７０】
目標データと、カレント反復における目標データに対応する量子化データとの間の誤差を計算する。
【１２７１】
誤差の２乗は、第２のデータ変動範囲として確定される。
【１２７２】
Ｂ２２、目標データの第１のデータ変動範囲および第２のデータ変動範囲によって目標データに対応する目標反復間隔を確定することは、以下を含む、条項Ｂ２０に記載の方法。
【１２７３】
第１のデータ変動範囲と第２のデータ変動範囲の最大値に従って、目標データに対応する目標反復間隔を確定する。
【１２７４】
Ｂ２３、Ｂ１５項からＢ２２項のいずれか１つに記載の方法で、カレント反復および履歴反復における目標データのデータ変動範囲の取得には次のものが含まれる。
【１２７５】
カレント反復が更新周期外の場合、カレント反復および履歴反復における目標データのデータ変動範囲が取得され、更新周期には少なくとも１つの反復が含まれる。
【１２７６】
Ｂ２４、Ｂ１５項からＢ２３項のいずれかに記載の方法であり、以下をさらに含む方法。
【１２７７】
カレント反復がプリセット周期内にある場合、カレント反復、プリセット周期の次の周期のカレント反復に対応する反復、およびカレント反復に対応する反復間隔によって周期間隔を確定する。
【１２７８】
カレント反復の目標データに対応するデータビット幅によって、周期間隔内の反復の目標データのデータビット幅を確定する。または
カレント反復に対応する目標データの小数点位置によって、周期間隔内の反復における目標データの小数点位置を確定する。
【１２７９】
Ｂ２５、Ｂ１項からＢ２４項のいずれか１つに記載の方法であり、以下をさらに含む方法。
【１２８０】
量子化予定の層の量子化パラメータは、量子化予定の層の後の１つまたは複数の層で使用される。
【１２８１】
Ｂ２６、ニューラルネットワークの量子化装置。ニューラルネットワークで量子化予定の任意の層を量子化するためである装置であり、以下を含む装置。
【１２８２】
量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータを確定するように構成される量子化パラメータ確定モジュール。ここで、量子化予定のデータは、ニューロン、重み、オフセット、および勾配のうちの少なくとも１つを含む。
【１２８３】
量子化モジュールは、対応する量子化パラメータに従って量子化予定のデータを量子化するために使用され、量子化後のデータを取得し、ニューラルネットワークが量子化後のデータに従って操作を実行するようにする。
【１２８４】
Ｂ２７、量子化パラメータが、小数点位置、スケーリング係数、およびオフセットのうちの少なくとも１つを含む、Ｂ２６項に記載の装置。
【１２８５】
小数点位置は、量子化後の小数点位置である。
【１２８６】
スケーリング係数は、量子化後のデータの最大値と量子化予定のデータの最大絶対値の比率である。
【１２８７】
オフセットは、量子化予定のデータの中間値である。
【１２８８】
Ｂ２８、量子化パラメータ確定モジュールが以下を含む、条項Ｂ２５またはＢ２７に記載の装置。
【１２８９】
第１の量子化パラメータ確定サブモジュールは、量子化予定のデータと量子化パラメータとの間の対応関係を検索することによって、量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータを確定するように構成される。
【１２９０】
Ｂ２９、量子化パラメータ確定モジュールが以下を含む、条項Ｂ２６またはＢ２７に記載の装置。
【１２９１】
第２の量子化パラメータ確定サブモジュールは、各タイプの量子化予定のデータおよび対応するデータビット幅によって、対応する量子化パラメータを計算するように構成される。
【１２９２】
Ｂ３０、第２の量子化パラメータ確定サブモジュールが以下を含む、Ｂ２９項に記載の装置。
【１２９３】
第１小数点位置計算単位は、量子化パラメータにオフセットが含まれていない場合に、目標データの最大絶対値と目標データに対応するデータビット幅に応じて目標データの小数点位置を取得するためである。目標データは、任意の一種の量子化予定のデータである。
【１２９４】
Ｂ３１、第２の量子化パラメータ確定サブモジュールが以下を含む、Ｂ２９項に記載の装置。
【１２９５】
第１のスケーリング係数計算ユニットは、量子化パラメータがオフセット、目標データを含まない場合に、目標データおよび目標データに対応するデータビット幅によって、目標データの量子化後の最大値を取得するように構成される。任意の一種の量子化予定のデータであり、目標データの最大絶対値と目標データの量子化後の最大値に応じて、目標データのスケーリング係数が取得される。
【１２９６】
Ｂ３２、第２の量子化パラメータ確定サブモジュールが以下を含む、Ｂ２９項に記載の装置。
【１２９７】
第２小数点位置計算ユニットは、量子化パラメータにオフセットが含まれる場合、目標データの最大値、目標データの最小値、および目標データに対応するデータビット幅に応じて取得するように構成される。目標データの小数点位置、目標データは、任意の一種の量子化予定のデータである。
【１２９８】
Ｂ３３、第２の量子化パラメータ確定サブモジュールが以下を含む、Ｂ２９項に記載の装置。
【１２９９】
第２のスケーリング係数計算ユニットは、量子化パラメータがオフセットを含み、目標データがである場合に、目標データおよび目標データに対応するデータビット幅によって、目標データの量子化データの最大値を取得するように構成される。目標データは、任意の一種の量子化予定のデータである。目標データの最大値、目標データの最小値、および目標データの量子化後の最大値に従って、目標データのスケーリング係数が取得される。
【１３００】
Ｂ３４、第２の量子化パラメータ確定サブモジュールが以下を含む、Ｂ２９項に記載の装置。
【１３０１】
オフセット計算ユニットは、目標データの最大値と最小値に応じて目標データのオフセットを取得するように構成されており、目標データは、任意の一種の量子化予定のデータである。
【１３０２】
Ｂ３５、条項Ｂ２６からＢ３４のいずれか１つに記載の装置であって、さらに以下を含む装置。
【１３０３】
目標データおよび目標データに対応する量子化データに従って目標データの量子化誤差を確定するように構成される量子化誤差確定モジュール。ここで、目標データは、量子化予定の任意の種類のデータである。
【１３０４】
量子化誤差および誤差しきい値に従って目標データに対応するデータビット幅を調整して、目標データに対応する調整ビット幅を取得するように構成される調整ビット幅確定モジュール。
【１３０５】
調整量子化パラメータ確定モジュールは、目標データに対応するデータビット幅を調整ビット幅に更新し、目標データと調整ビット幅に従って対応する調整量子化パラメータを計算するように構成される。ネットワークは、調整された量子化パラメータに従って量子化を実行する。
【１３０６】
Ｂ３６、調整ビット幅確定モジュールが以下を含む、Ｂ３５項に記載の装置。
【１３０７】
第１調整ビット幅確定サブモジュールは、量子化誤差が第１誤差しきい値より大きい場合に目標データに対応するデータビット幅を増加させて、目標データに対応する調整ビット幅を取得するように構成される。
【１３０８】
Ｂ３７、調整ビット幅確定モジュールがさらに以下を含む、Ｂ３６項に記載の装置。
【１３０９】
第１の調整済み量子化誤差確定サブモジュールは、調整ビット幅と目標データに従って目標データの調整済み量子化誤差を計算するように構成される。
【１３１０】
第１の調整ビット幅循環確定サブモジュールは、調整ビット幅および目標データに従って調整ビット幅が計算されるまで、調整済の量子化誤差および第１の誤差しきい値に従って調整ビット幅を増加し続けるように構成される。の量子化誤差は、第１の誤差しきい値以下である。
【１３１１】
Ｂ３８、調整ビット幅確定モジュールが以下を含む、Ｂ３５項またはＢ３６項に記載の装置。
【１３１２】
第２の調整ビット幅確定サブモジュールは、量子化誤差が第２の誤差しきい値未満であり、第２の誤差しきい値が第１の誤差しきい値未満である場合に、目標データに対応するデータビット幅を減少させるように構成される。
【１３１３】
Ｂ３９、調整ビット幅確定モジュールがさらに以下を含む、条項Ｂ３８に記載の装置。
【１３１４】
第２の調整済み量子化誤差確定サブモジュールは、調整ビット幅と目標データに従って目標データの調整済み量子化誤差を計算するように構成される。
【１３１５】
第２の調整ビット幅循環確定サブモジュールは、調整ビット幅および目標データに従って調整ビット幅が計算されるまで、調整済の量子化誤差および第２の誤差しきい値に従って調整ビット幅を減少し続けるように構成される。の量子化誤差は、第２の誤差しきい値以上である。
【１３１６】
Ｂ４０、ニューラルネットワーク演算の微調整段階および／またはトレーニング段階において、Ｂ２６項からＢ３９項のいずれか１つに記載の装置は、さらに以下を含む。
【１３１７】
カレント反復および履歴反復における目標データのデータ変動範囲を取得するように構成されるデータ変動範囲確定モジュール。履歴反復は、カレント反復の前の反復である。
【１３１８】
目標反復間隔確定モジュールは、目標データのデータ変動範囲によって目標データに対応する目標反復間隔を確定するように構成され、その結果、ニューラルネットワークは、目標反復間隔によって目標データの量子化パラメータを更新する。目標反復間隔には少なくとも１つの反復が含まれ、目標データは量子化予定の任意のタイプのデータである。
【１３１９】
Ｂ４１、条項Ｂ４０による装置であって、さらに以下を含む装置。
【１３２０】
第１の目標反復間隔適用モジュールは、カレント反復での目標データのデータビット幅によって、目標反復間隔での目標データの反復に対応するデータビット幅を確定するように構成される。ネットワークは、目標反復間隔内の目標データの反復に対応するデータビット幅によって、量子化パラメータを確定する。
【１３２１】
Ｂ４２、条項Ｂ４０による装置であって、さらに以下を含む装置。
【１３２２】
第２の目標反復間隔適用モジュールは、カレント反復に対応する目標データの小数点位置によって、目標反復間隔内の目標データの反復に対応する小数点位置を確定するように構成される。
【１３２３】
Ｂ４３、データ変動範囲確定モジュールが以下を含む、Ｂ４０項に記載の装置。
【１３２４】
スライディング平均値計算サブモジュールは、カレント反復における目標データの小数点位置と、履歴反復間隔によって確定されたカレント反復に対応する履歴反復の小数点位置によって、各反復間隔に対応する目標データの小数点位置を計算するためである。
【１３２５】
第１のデータ変動範囲確定サブモジュールは、カレント反復の小数点位置での目標データの最初のスライド平均値と、前の反復間隔の反復に対応する小数点位置の２番目のスライド平均値を取得するためである。
【１３２６】
目標反復間隔確定モジュールには、次のものが含まれる。
【１３２７】
第１の目標反復間隔確定サブモジュールは、第１のデータ変動範囲によって目標データに対応する目標反復間隔を確定するように構成され、その結果、ニューラルネットワークは、目標反復間隔によって目標データの量子化を更新する。
【１３２８】
Ｂ４４、第１のデータ変動範囲確定サブモジュールが以下を含む、Ｂ４３項に記載の装置。
【１３２９】
第１のデータ変動範囲確定ユニットは、第１のスライディング平均値と第２のスライディング平均値との間の差を計算するように構成され、第１のデータ変動範囲として差の絶対値を確定する。
【１３３０】
Ｂ４５、データ変動範囲確定モジュールが以下を含む、条項Ｂ４３に記載の装置。
【１３３１】
第２のデータ変動範囲確定サブモジュールは、目標データおよびカレント反復における目標データに対応する量子化データに従って第２のデータ変動範囲を取得するように構成される。
【１３３２】
目標反復間隔確定モジュールには、次のものが含まれる。
【１３３３】
第２の目標反復間隔確定サブモジュールは、目標データの第１のデータ変動範囲と第２のデータ変動範囲によって、目標データに対応する目標反復間隔を確定するためである。目標反復間隔は、目標データの量子化パラメータを更新する。
【１３３４】
Ｂ４６、Ｂ４５項で説明されている装置によると、サブモジュールを確定する第２のデータ変動範囲には次のものが含まれる。
【１３３５】
第２のデータ変動範囲確定ユニットは、目標データとカレント反復における目標データに対応する量子化データとの間の誤差を計算するように構成され、誤差の二乗を第２のデータ変動範囲として確定する。
【１３３６】
Ｂ４７、第２の目標反復間隔確定サブモジュールが、第１のデータ変動範囲および第２のデータ変動範囲の最大値に従って目標データの対応する値を確定するように構成される、条項Ｂ４５に記載の装置。
【１３３７】
Ｂ４８、データ変動範囲確定モジュールが含む、条項Ｂ４０からＢ４７のいずれか１つに記載の装置。
【１３３８】
３番目のデータ変動範囲確定サブモジュールは、カレント反復と、カレント反復が更新周期外であり、更新周期に少なくとも１つの反復が含まれる場合の履歴反復における、目標データのデータ変動範囲を取得するためである。
【１３３９】
Ｂ４９、条項Ｂ４０からＢ４８のいずれか１つに記載の装置であって、さらに以下を含む装置。
【１３４０】
周期間隔確定モジュールは、カレント反復、プリセット周期の次の周期のカレント反復に対応する反復、およびカレント反復がプリセット周期内にある場合のカレント反復に対応する反復間隔によって周期を確定するためである。
【１３４１】
第１の周期間隔適用モジュールは、カレント反復の目標データに対応するデータビット幅によって、周期間隔内の反復の目標データのデータビット幅を確定するように構成される。
【１３４２】
第２の周期間隔適用モジュールは、カレント反復の目標データに対応する小数点位置によって、周期間隔内の反復の目標データの小数点位置を確定するように構成される。
【１３４３】
Ｂ５０、Ｂ２６項からＢ４９項のいずれか１つに記載の装置であり、さらに以下を含む装置。
【１３４４】
量子化パラメータ継承モジュールは、量子化予定の層の後に１つまたは複数の層で量子化予定の層の量子化パラメータを採用するように構成される。
【１３４５】
Ｂ５１、人工知能チップ。Ｂ２６〜Ｂ５０項のいずれか１つに記載のニューラルネットワークの量子化装置を含むチップ。
【１３４６】
Ｂ５２、Ｂ５１項に記載されている人工知能チップを含む電子機器。
【１３４７】
Ｂ５３、ボードカード。ボードカードは、記憶装置、インターフェース装置、制御装置、およびＢ５１項に記載されている人工知能チップを含む。
【１３４８】
ここで、人工知能チップは、それぞれ、記憶装置、制御装置、およびインターフェース装置に接続されている。
【１３４９】
記憶装置は、データを格納するためである。
【１３５０】
インターフェイス装置は、人工知能チップと外部装置間のデータ伝送を実装するためである。
【１３５１】
制御装置は、人工知能チップの状態を監視するためである。
【１３５２】
記憶装置が以下を含む、請求項Ｂ５３に記載のボードカード。複数の記憶ユニットのグループ、記憶ユニットの各グループは、バスを介して人工知能チップに接続され、記憶ユニットは、以下である。
【１３５３】
チップには次のものが含まれる。各記憶ユニットのデータ伝送とデータストレージを制御するためのＤＤＲコントローラ。
【１３５４】
インターフェイス装置は、標準のＰＣＩＥインターフェイスである。
【１３５５】
本開示の実施形態は上に記載されており、上記の説明は例示的であり、網羅的ではなく、開示された実施形態に限定されない。図示された実施形態の範囲および精神から逸脱することなく、多くの修正および変更は、当技術分野の通常の技術者にとって明らかである。本明細書で使用される用語の選択は、各実施形態の市場における技術の原理、実際の適用、または改善を最もよく説明すること、または他の通常の当業者が本明細書に開示される様々な実施形態を理解できるようにすることを意図する。
【１３５６】
ニューラルネットワークの量子化の問題を解決するために提案されたソリューション（２０１９１０５０５２３９．７）は上記のとおりである。
【１３５７】
量子化パラメータ調整の問題を解決するために、以下の技術案（２０１９１０５２８５３７．８）を提案しました。具体的には、量子化パラメータの調整方法、装置および関連製品が提案されている。
【１３５８】
本開示は、コンピュータ技術の分野、特に、ニューラルネットワークの量子化パラメータの調整方法、装置、および関連製品に関する。
【１３５９】
人工知能技術の継続的な発展に伴い、その応用分野はますます広範になり、画像認識、音声認識、自然言語処理の分野で広く適用されている。ただし、人工知能アルゴリズムの複雑さが増やすにつれて、処理されるデータのデータ量とデータ次元は絶えず増加している。データ量の増加は、コンピューティング装置のデータ処理効率、記憶装置のストレージ容量、およびメモリアクセスに影響を与える。効率などは、より大きな課題を提示する。
【１３６０】
上記の技術的問題を解決するために、従来の技術は、固定ビット幅を使用してニューラルネットワークの動作データを量子化する、すなわち、浮動小数点動作データを固定点動作データに変換して、ニューラルネットワークの動作データの圧縮を実現する。ただし、ニューラルネットワークの操作データによって大きな違いが生じる場合がある。従来の量子化手法では、ニューラルネットワーク全体で同じ量子化パラメータ（小数点位置など）を使用して量子化するため、精度が低下し、データ操作結果に影響を与えることがよくある。
【１３６１】
これを考慮して、本開示は、ニューラルネットワークの量子化精度を改善し、計算結果の正確性および信頼性を保証することができる、ニューラルネットワーク量子化パラメータの調整方法、装置および関連製品を提案する。
【１３６２】
本開示は、ニューラルネットワークの量子化パラメータの調整方法を提供し、その方法は以下を含む。
【１３６３】
量子化予定のデータのデータ変動範囲を取得する。
【１３６４】
量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔に少なくとも１回の反復を含むニューラルネットワーク操作の量子化パラメータと、ニューラルネットワークを調整する。量子化パラメータは、ニューラルネットワーク演算で量子化予定のデータに量子化操作を実装するためである。
【１３６５】
本開示はまた、メモリおよびプロセッサを含むニューラルネットワークの量子化パラメータ調整装置を提供し、メモリはコンピュータプログラムを格納し、プロセッサがコンピュータプログラムを実行するとき、それは上記の方法のいずれかを実施する。ステップ。具体的には、プロセッサが上記のコンピュータプログラムを実行すると、次の操作が実行される。
【１３６６】
量子化予定のデータのデータ変動範囲を取得する。
【１３６７】
量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔に少なくとも１回の反復を含むニューラルネットワーク操作の量子化パラメータと、ニューラルネットワークを調整する。量子化パラメータは、ニューラルネットワーク演算で量子化予定のデータに量子化操作を実装するためである。
【１３６８】
本開示はまた、コンピュータプログラムが格納されるコンピュータ可読記憶媒体を提供し、コンピュータプログラムが実行されるとき、それは、上記の方法のいずれか１つのステップを実現する。具体的には、上記のコンピュータプログラムを実行すると、以下の操作が実行される。
【１３６９】
量子化予定のデータのデータ変動範囲を取得する。
【１３７０】
量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔に少なくとも１回の反復を含むニューラルネットワーク操作の量子化パラメータと、ニューラルネットワークを調整する。量子化パラメータは、ニューラルネットワーク演算で量子化予定のデータに量子化操作を実装するためである。
【１３７１】
本開示はまた、ニューラルネットワークの量子化パラメータ調整装置を提供し、その装置は以下を含む。
【１３７２】
取得モジュールは、量子化予定のデータのデータ変動範囲を取得するためである。
【１３７３】
反復間隔確定モジュールは、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定するように構成され、目標反復間隔によってニューラルネットワーク操作における量子化パラメータを調整し、ここで、目標反復間隔は、少なくとも１回の反復では、ニューラルネットワークの量子化パラメータを使用して、ニューラルネットワーク演算で量子化予定のデータの量子化操作を実装する。
【１３７４】
本開示に開示されるニューラルネットワークの量子化パラメータの調整方法、装置および関連製品は、量子化予定のデータのデータ変動範囲を取得し、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定するので、目標反復間隔は、目標反復間隔によって調整され得る。ニューラルネットワークの量子化パラメータ。これにより、さまざまな動作段階でのニューラルネットワークの量子化パラメータを、量子化予定のデータのデータ分布特性に従って確定できる。同じニューラルネットワークの様々な計算データに対して同じ量子化パラメータを使用する従来の技術と比較して、本開示の方法および装置は、ニューラルネットワーク量子化プロセスの精度を改善し、それによって計算結果の精度および精度を保証することができる。信頼性。さらに、目標反復間隔を確定することにより、量子化効率を向上させることができる。
【１３７５】
本開示に含まれる図面は本明細書に含まれ、本明細書とともに本明細書の一部を構成する図面は、本開示の例示的な実施形態、特徴、および態様を示し、本開示の原理を説明するためである。
【１３７６】
本開示の一実施形態による、量子化パラメータの調整方法の適用環境の概略図を示す。
【１３７７】
図３−２は、本開示の一実施形態による、量子化予定のデータと量子化後のデータとの間の対応の概略図を示す。
【１３７８】
図３−３は、本開示の実施形態に従って量子化予定のデータの変換の概略図を示す。
【１３７９】
図３−４は、本開示の一実施形態による、量子化パラメータの調整方法のフローチャート。
【１３８０】
図３ー５は、本開示の一実施形態の計算プロセスにおいて量子化予定のデータの変化傾向図を示す。
【１３８１】
図３−６は、本開示の一実施形態のパラメータ調整法における目標反復間隔の確定方法のフローチャート。
【１３８２】
図３−７は、本開示の一実施形態における小数点位置の変動範囲の確定方法のフローチャート。
【１３８３】
図３−８は、本開示の一実施形態における第２の平均値の確定方法のフローチャート。
【１３８４】
図３−９は、本開示の一実施形態におけるデータビット幅の調整方法のフローチャート。
【１３８５】
図３−１０は、本開示の別の実施形態におけるデータビット幅の調整方法のフローチャート。
【１３８６】
図３−１１は、本開示の別の実施形態におけるデータビット幅の調整方法のフローチャート。
【１３８７】
図３−１２は、本開示のさらに別の実施形態におけるデータビット幅の調整方法のフローチャート。
【１３８８】
図３−１３は、本開示の別の実施形態における第２の平均値の確定方法のフローチャート。
【１３８９】
図３−１４は、本開示の別の実施形態による、量子化パラメータの調整方法のフローチャート。
【１３９０】
図３−１５は、本開示の一実施形態の量子化パラメータの調整方法における量子化パラメータの調整のフローチャートを示す。
【１３９１】
図３−１６は、本開示の別の実施形態のパラメータ調整方法における目標反復間隔の確定方法のフローチャート。
【１３９２】
図３−１７は、本開示の別の実施形態による、パラメータ調整方法における目標反復間隔の確定方法のフローチャート。
【１３９３】
図３−１８は、本開示の別の実施形態による、量子化パラメータの調整方法のフローチャート。
【１３９４】
図３−１９は、本開示の別の実施形態による、量子化パラメータの調整方法のフローチャート。
【１３９５】
図３−２０は、本開示の一実施形態による、量子化パラメータ調整装置の構造ブロック図を示す。
【１３９６】
図３−２１は、本開示の一実施形態による、量子化パラメータ調整装置の構造ブロック図を示す。
【１３９７】
図３−２２は、本開示の一実施形態による、量子化パラメータ調整装置の構造ブロック図を示す。
【１３９８】
図３−２３は、本開示の一実施形態による、量子化パラメータ調整装置の構造ブロック図を示す。
【１３９９】
図３−２４は、本開示の一実施形態による、量子化パラメータ調整装置の構造ブロック図を示す。
【１４００】
図３ー２５は、本開示の一実施形態によるボードカードの構造ブロック図を示している。
【１４０１】
量子化パラメータ調整の問題を解決するために、以下の技術案（２０１９１０５２８５３７．８）を提案しました。本開示の実施形態における技術案は、本開示の実施形態における添付の図面を参照して明確かつ完全に説明される。明らかに、記載された実施形態は、本開示の実施形態の一部であるが、すべての実施形態ではない。本開示の実施形態に基づいて、創造的な作業なしに当業者によって得られた他のすべての実施形態は、本開示の保護範囲に含まれる。
【１４０２】
本開示の特許請求の範囲、説明および図面における「第１の」および「第２の」という用語は、特定の順序を説明するのではなく、異なる対象を区別するためであることを理解されたい。本開示の明細書および特許請求の範囲で使用される「含む」および「含む」という用語は、記載された特徴、全体、ステップ、操作、要素および／または構成要素の存在を示すが、１つまたは複数の他の特徴、全体を除外しない。ステップ、操作、要素、コンポーネント、および／またはそれらのコレクションの存在または追加。
【１４０３】
この開示明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、開示を限定することを意図するものではないことも理解されたい。本開示および特許請求の範囲で使用されるように、文脈が他の状況を明確に示さない限り、単数形「一」、「１つ」および「当該」は、複数形を含むことを意図している。本開示の明細書および特許請求の範囲で使用される「および／または」という用語は、関連してリストされた１つまたは複数の項目の任意の組み合わせおよびすべての可能な組み合わせを指し、これらの組み合わせを含むことをさらに理解されたい。
【１４０４】
人工知能アルゴリズムの複雑さが増やすにつれて、処理されるデータのデータ量とデータ次元も増やす。従来のニューラルネットワークアルゴリズムは通常、浮動小数点データフォーマットを使用してニューラルネットワーク演算を実行する。データの量は、コンピューティング装置のデータ処理効率、ストレージ容量、および記憶装置のメモリアクセス効率に大きな課題をもたらする。上記の問題を解決するために、ニューラルネットワークの計算プロセスに関連する計算データを量子化することができる。つまり、浮動小数点で表される計算データを固定点で表される計算データに変換することで、記憶装置のストレージ容量とメモリアクセス効率を低下させ、計算装置を改善する。計算効率。ただし、従来の量子化方法では、同じデータビット幅と量子化パラメータ（小数点位置など）を使用して、ニューラルネットワークのトレーニングプロセス全体でニューラルネットワークのさまざまな操作データを量子化する。操作データが異なるため、または、トレーニングプロセスの各段階での操作データが異なるため、上記の量子化方法を量子化に使用すると、精度が不十分になり、操作結果に影響を与えることがよくある。
【１４０５】
これに基づいて、本開示は、メモリ１１０およびプロセッサ１２０を含む量子化パラメータ調整装置に適用することができるニューラルネットワーク量子化パラメータの調整方法を提供する。図３−１は、量子化パラメータ調整装置１００の構造ブロック図であり、量子化パラメータ調整装置１００のプロセッサ１２０は、汎用プロセッサであり得、量子化パラメータ調整装置１００のプロセッサ１２０はまた、人工知能プロセッサであり得る。量子化パラメータ調整装置１００のプロセッサはまた、ここで特に限定されない、汎用プロセッサおよび人工知能プロセッサを含み得る。記憶１１０は、ニューラルネットワーク演算プロセスにおいて操作データを格納するために使用され得、操作データは、ニューロンデータ、重みデータ、または勾配データのうちの１つ以上であり得る。メモリ１１０はまた、コンピュータプログラムを格納するために使用され得る。コンピュータプログラムが前述のプロセッサ１２０によって実行されるとき、本開示の実施形態における量子化パラメータの調整方法を実施することができる。この方法は、ニューラルネットワークのトレーニングまたは微調整プロセスに適用でき、ニューラルネットワークのトレーニングまたは微調整プロセスのさまざまな段階でコンピューティングデータの分布特性に従ってコンピューティングデータの量子化パラメータを動的に調整し、それによってニューラルネットワークの量子化プロセスを改善することができる。精度。これにより、計算結果の精度と信頼性が保証される。
【１４０６】
特に指定のない限り、人工知能プロセッサは、ＣＰＵ、ＧＰＵ、ＦＰＧＡ、ＤＳＰ、ＡＳＩＣなどの適切なハードウェアプロセッサである。特に指定のない限り、メモリは、ＲＲＡＭ（抵抗ランダムアクセスメモリ）、動的ランダムアクセスメモリ（ＤＲＡＭ）、静的など、任意の適切な磁気記憶媒体または磁気光学記憶媒体であり得る。ＳＲＡＭ（静的ランダムアクセスメモリ）、拡張動的ランダムアクセスメモリ（ＥＤＲＡＭ）、高帯域幅メモリ（ＨＢＭ）、またはハイブリッドメモリキューブ（ＨＭＣ）など。
【１４０７】
本開示の内容をよりよく理解するために、以下は、最初に、本開示の実施形態における量子化プロセスおよび量子化プロセスに含まれる量子化パラメータを紹介する。
【１４０８】
本開示の実施形態において、量子化は、第１のデータフォーマットの動作データを第２のデータフォーマットの動作データに変換することを指す。ここで、第１のデータフォーマットの算術データは浮動小数点算術データであり得るし、第２のデータフォーマットの算術データは固定点算術データであり得る。浮動小数点で表される計算データは、通常、大きな記憶域を占めるため、浮動小数点で表される計算データを固定点で表される計算データに変換することにより、記憶域を節約し、計算データの記憶効率と計算効率を向上させることができる。
【１４０９】
任意選択で、量子化プロセスの量子化パラメータは、小数点位置および／またはスケーリング係数を含み得、ここで、小数点位置は、量子化された操作データにおける小数点位置を指す。スケーリング係数は、量子化後のデータの最大値と量子化予定のデータの最大絶対値との間の比率を指する。さらに、量子化パラメータは、オフセットを含み得る。オフセットは、量子化される非対称データ用であり、量子化予定のデータ内の複数の要素の中間値を指す。具体的には、オフセットは、量子化予定のデータであり得る。データ内の複数の要素の中間値。量子化予定のデータが対称的な量子化予定のデータである場合、量子化パラメータにオフセットを含めない場合がある。この場合、量子化予定のデータに応じて、小数点位置やスケーリング係数などの量子化パラメータを確定できる。
【１４１０】
図３−２に示すように、量子化予定のデータは原点に対して対称なデータであり、量子化予定のデータの要素の最大絶対値をＺ１とすると、量子化予定のデータに対応するデータビット幅はｎ、Ａは使用するデータビットである。幅ｎは、量子化予定のデータを量子化した後に量子化予定のデータで表すことができる最大値である。Ａは２ｓ（２ｎ−１−１）であり、ＡにはＺ１を含める必要があり、Ｚ１はＡ／２より大きくなければならない。式（１）には次のような制約がある。
２ｓ（２ｎ−１−１）＞＝Ｚ１＞２ｓ−１（２ｎ−１−１）        式（１）
【１４１１】
プロセッサは、量子化予定のデータの最大絶対値Ｚ１とデータビット幅ｎに従って、小数点位置ｓを計算できる。たとえば、次の式（２）を使用して、量子化予定のデータに対応する小数点位置を計算できる。
ｓ＝ｃｅｉｌ（ｌｎ（Ｚ１／（２ｎ−１−１）））              式（２）
【１４１２】
ここで、ｃｅｉｌは切り上げられ、Ｚ１は量子化予定のデータの最大絶対値、ｓは小数点位置、ｎはデータビット幅である。
【１４１３】
このとき、小数点位置ｓを使用して量子化予定のデータを量子化すると、量子化予定のデータの浮動小数点表現Ｆｘは次のように表すことができる。Ｆｘ≒Ｉｘ×２ｓここで、Ｉｘは量子化されたｎビットのバイナリ表現の値を指する。ｓは小数点位置を示する。ここで、量子化予定のデータに対応する量子化後のデータは次のとおりである。
Ｉｘ＝ｒｏｕｎｄ（Ｆｘ／２ｓ）                          式（３）
【１４１４】
ここ、ｓは小数点位置、Ｉｘは量子化予定のデータ、Ｆｘは量子化予定のデータ、ｒｏｕｎｄは丸めによる丸め演算である。小数点位置他の丸め演算も使用できることは理解できる。たとえば、式（３）の丸め演算の代わりに、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算が使用される。小数点位置一定のデータビット幅の場合、小数点位置による量子化により得られた量子化データにおいて、小数点以下の桁数が多いほど、量子化予定のデータの量子化精度が高くなることが理解できる。
【１４１５】
さらに、量子化予定のデータに対応する中間表現データＦｘ１は、以下のようになり得る。
Ｆｘ１＝ｒｏｕｎｄ（Ｆｘ／２ｓ）ｘ２ｓ                  式（４）
【１４１６】
ここ、ｓは上記式（２）で求めた小数点位置、Ｆｘは量子化予定のデータ、ｒｏｕｎｄは丸めによる丸め演算である。Ｆｘ１は、前述の量子化予定のデータＩｘを逆量子化することによって得られたデータであり、中間表現データＦｘ１のデータ表現形式は、量子化される前述のデータＦｘのデータ表現形式と一致し、中間表現データＦｘ１は、量子化誤差の計算に使用できる。詳細については、以下を参照してください。ここで、逆量子化は、量子化の逆プロセスを指する。
オプションで、スケーリング係数に第１のスケーリング係数を含めることができ、第１のスケーリング係数は次のように計算できる。
ｆ１＝Ｚ１／Ａ＝Ｚ１／２ｓ（２ｎ−１−１）                式（５）
【１４１７】
ここで、Ｚ１は量子化予定のデータの最大絶対値、Ａはデータビット幅ｎで量子化予定のデータの量子化予定のデータで表すことができる最大値、Ａは２ｓ（２ｎ−１−１）である。
【１４１８】
このとき、プロセッサは、小数点位置と第１のスケーリング係数を組み合わせて、量子化後のデータを取得することにより、量子化予定のデータＦｘを量子化することができる。
Ｉｘ＝ｒｏｕｎｄ（Ｆｘ／（２ｓｘｆ１））                  式（６）
【１４１９】
ここ、ｓは上記式（２）で求めた小数点位置、ｆ１は第１のスケーリング係数、Ｉｘは量子化予定のデータ、Ｆｘは量子化予定のデータ、ｒｏｕｎｄは丸めによる丸め演算である。式（６）の丸め演算の代わりに、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算を使用するなど、他の丸め計算方法も使用できることは理解できる。
【１４２０】
さらに、量子化予定のデータに対応する中間表現データＦｘ１は、以下のようになり得る。
Ｆｘ１＝ｒｏｕｎｄ（Ｆｘ／（２ｓｘｆ１））ｘ２ｓｘｆ１              式（７）
【１４２１】
ここ、ｓは上記式（２）で求めた小数点位置、ｆ１はスケーリング係数、Ｆｘは量子化予定のデータ、ｒｏｕｎｄは丸めによる丸め演算である。Ｆｘ１は、前述の量子化予定のデータＩｘを逆量子化することによって得られたデータであり、中間表現データＦｘ１のデータ表現形式は、量子化される前述のデータＦｘのデータ表現形式と一致し、中間表現データＦｘ１は、量子化誤差の計算に使用できる。詳細については、以下を参照してください。ここで、逆量子化は、量子化の逆プロセスを指する。
【１４２２】
オプションで、スケーリング係数に２番目のスケーリング係数を含めることもできる。２番目のスケーリング係数は次のように計算できる。
ｆ２＝Ｚ１／（２ｎ−１−１）                            式（８）
【１４２３】
プロセッサは、第２のスケーリング係数を個別に使用して、量子化予定のデータＦｘを量子化し、量子化後のデータを取得できる。
Ｉｘ＝ｒｏｕｎｄ（Ｆｘ／ｆ２）                        式（９）
【１４２４】
ここ、ｆ２は第２のスケーリング係数、Ｉｘは量子化後のデータ、Ｆｘは量子化予定のデータ、ｒｏｕｎｄは丸めによって実行される丸め演算である。式（９）の切り上げの代わりに、切り上げ、切り下げ、ゼロへの切り上げなどの他の丸め演算も使用できることは理解できる。データビット幅が一定の場合、さまざまなスケーリング係数を使用して、量子化後のデータの数値範囲を調整できることは理解できる。
【１４２５】
さらに、量子化予定のデータに対応する中間表現データＦｘ１は、以下のようになり得る。
Ｆｘ１＝ｒｏｕｎｄ（Ｆｘ／ｆ２）ｘｆ２                    式（１０）
【１４２６】
ここで、ｆ２は第２のスケーリング係数、Ｆｘは量子化予定のデータ、ｒｏｕｎｄは丸めによって実行される丸め演算である。Ｆｘ１は、前述の量子化予定のデータＩｘを逆量子化することによって得られたデータであり、中間表現データＦｘ１のデータ表現形式は、量子化される前述のデータＦｘのデータ表現形式と一致し、中間表現データＦｘ１は、量子化誤差の計算に使用できる。詳細については、以下を参照してください。ここで、逆量子化は、量子化の逆プロセスを指する。
【１４２７】
さらに、上記の第２のスケーリング係数は、小数点位置および第１のスケーリング係数ｆ１に従って確定することができる。つまり、第２のスケーリング係数は次の式に従って計算できる。
ｆ２＝２ｓｆ１                            式（１１）
【１４２８】
ここで、ｓは上記の式（２）に従って確定された小数点位置であり、ｆ１は上記の式（５）に従って計算された第１のスケーリング係数である。
【１４２９】
任意選択で、本開示の実施形態の量子化方法は、対称データの量子化を実現できるだけでなく、非対称データの量子化も実現することができる。このとき、プロセッサは非対称データを対称データに変換して、データの「オーバーフロー」を回避できる。具体的には、量子化パラメータはオフセットも含み得、オフセットは、量子化予定のデータの中間点値であり得る。オフセットは、原点に対する量子化予定のデータの中間点値のオフセットを示すために使用され得る。図３−３に示すように、プロセッサは、量子化予定のデータのデータ分布に関する統計を実行して、量子化予定のデータのすべての要素の最小値Ｚｍｉｎと、量子化予定のデータのすべての要素の最大値Ｚｍａｘを取得できる。上記のオフセットは、最小値Ｚｍｉｎと最大値Ｚｍａｘに基づいて計算できる。具体的なオフセットの計算方法は次のとおりである。
ｏ＝（Ｚｍａｘ＋Ｚｍｉｎ）／２                  式（１２）
【１４３０】
ここで、ｏはオフセットを表し、Ｚｍｉｎは量子化予定のデータのすべての要素の最小値を表し、Ｚｍａｘは量子化予定のデータのすべての要素の最大値を表す。
【１４３１】
さらに、プロセッサは、量子化予定のデータのすべての要素の最小値Ｚｍｉｎおよび最大値Ｚｍａｘに従って、量子化予定のデータの最大絶対値Ｚ２を確定することができる。
Ｚ２＝（Ｚｍａｘ−Ｚｍｉｎ）／２                式（１３）
【１４３２】
このようにして、プロセッサは、図３−３に示すように、オフセットｏに従って量子化予定のデータを変換し、量子化される非対称データを量子化される対称データに変換できる。プロセッサはさらに、量子化予定のデータの最大絶対値Ｚ２に従って小数点位置ｓを確定できる。ここで、小数点位置は次の式に従って計算できる。
ｓ＝ｃｅｉｌ（ｌｎ（Ｚ２／（２ｎ−１−１）））            式（１４）
【１４３３】
ここで、ｃｅｉｌは切り上げられ、ｓは小数点位置、ｎはデータビット幅である。
【１４３４】
その後、プロセッサは、オフセットと対応する小数点位置によって量子化予定のデータを量子化して、量子化予定のデータを取得できる。
Ｉｘ＝ｒｏｕｎｄ（（Ｆｘ−ｏ）／２ｓ）                  式（１５）
【１４３５】
ここ、ｓは上記式（１４）で求めた小数点位置、ｏはオフセット、Ｉｘは量子化予定のデータ、Ｆｘは量子化予定のデータ、ｒｏｕｎｄは丸めによる丸め演算である。式（１５）の丸め演算の代わりに、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算を使用するなど、他の丸め計算方法も使用できることは理解できる。
【１４３６】
さらに、量子化予定のデータに対応する中間表現データＦｘ１は、以下のようになり得る。
Ｆｘ１＝ｒｏｕｎｄ（（Ｆｘ−ｏ）／２ｓ）ｘ２ｓ＋ｏ              式（１６）
【１４３７】
ここ、ｓは上記式（１４）で求めた小数点位置、ｏはオフセット、Ｆｘは量子化予定のデータ、ｒｏｕｎｄは丸めによる丸め演算である。Ｆｘ１は、前述の量子化予定のデータＩｘを逆量子化して得られたデータであり、中間表現データＦｘ１のデータ表現形式は、前述の量子化予定のデータのデータ表現形式Ｆｘと一致し、中間表現データＦｘは、量子化誤差の計算に使用できる。詳細については、以下を参照してください。ここで、逆量子化は、量子化の逆プロセスを指する。
【１４３８】
さらに任意選択で、プロセッサは、量子化予定のデータの最大絶対値Ｚ２に従って、小数点位置ｓおよび第１のスケーリング係数ｆ１をさらに確定することができる。小数点位置ｓの特定の計算方法については、上記の式（１４）を参照されたい。第１のスケーリング係数ｆ１は、次の式に従って計算できる。
ｆ１＝Ｚ２／Ａ＝Ｚ２／（２ｓ（２ｎ−１−１））                  式（１７）
【１４３９】
プロセッサは、オフセットおよびそれに対応する第１のスケーリング係数ｆ１および小数点位置ｓに従って、量子化予定のデータを量子化して、量子化後のデータを取得することができる。
Ｉｘ＝ｒｏｕｎｄ（（Ｆｘ−ｏ）／（２ｓｘｆ１））              式（１８）
【１４４０】
ここで、ｆ１は第１のスケーリング係数、ｓは上記の式（１４）に従って確定された小数点位置、ｏはオフセット、Ｉｘは量子化後のデータ、Ｆｘは量子化予定のデータ、ｒｏｕｎｄは丸めによって実行される丸め演算である。式（１８）の丸め演算の代わりに、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算を使用できるなど、他の丸め演算も使用できることは理解できる。
【１４４１】
さらに、量子化予定のデータに対応する中間表現データＦｘ１は、以下のようになり得る。
Ｆｘ１＝ｒｏｕｎｄ（（Ｆｘ−ｏ）／（２ｓｘｆ１））ｘ２ｓｘｆ１＋ｏ      式（１９）
【１４４２】
ここ、ｆ１は第１のスケーリング係数、ｓは上記の式（１４）に従って確定された小数点位置、ｏはオフセット、Ｆｘは量子化予定のデータ、ｒｏｕｎｄは丸めによって実行される丸め演算である。Ｆｘ１は、前述の量子化予定のデータＩｘを逆量子化して得られたデータであり、中間表現データＦｘ１のデータ表現形式は、前述の量子化予定のデータのデータ表現形式Ｆｘと一致し、中間表現データＦｘ１は、量子化誤差の計算に使用できる。詳細については、以下を参照してください。ここで、逆量子化は、量子化の逆プロセスを指する。
【１４４３】
オプションで、スケーリング係数に２番目のスケーリング係数を含めることもできる。２番目のスケーリング係数は次のように計算できる。
ｆ２＝Ｚ２／（２ｎ−１−１）                      式（２０）
【１４４４】
プロセッサは、第２のスケーリング係数を個別に使用して、量子化予定のデータＦｘを量子化し、量子化後のデータを取得できる。
Ｉｘ＝ｒｏｕｎｄ（Ｆｘ／ｆ２）                式（２１）
【１４４５】
ここ、ｆ２は第２のスケーリング係数、Ｉｘは量子化後のデータ、Ｆｘは量子化予定のデータ、ｒｏｕｎｄは丸めによって実行される丸め演算である。式（２１）の丸め演算の代わりに、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算を使用するなど、他の丸め演算も使用できることは理解できる。データビット幅が一定の場合、さまざまなスケーリング係数を使用して、量子化後のデータの数値範囲を調整できることは理解できる。
【１４４６】
さらに、量子化予定のデータに対応する中間表現データＦｘ１は、以下のようになり得る。
Ｆｘ１＝ｒｏｕｎｄ（Ｆｘ／ｆ２）ｘｆ２                  式（２２）
【１４４７】
ここで、ｆ２は第２のスケーリング係数、Ｆｘは量子化予定のデータ、ｒｏｕｎｄは丸めによって実行される丸め演算である。Ｆｘ１は、前述の量子化予定のデータＩｘを逆量子化して得られたデータであり、中間表現データＦｘ１のデータ表現形式は、前述の量子化予定のデータのデータ表現形式Ｆｘと一致し、中間表現データＦｘ１は、量子化誤差の計算に使用できる。詳細については、以下を参照してください。ここで、逆量子化は、量子化の逆プロセスを指する。
【１４４８】
また、上記の第２のスケーリング係数は、小数点位置および第１のスケーリング係数ｆ１に応じて確定することができる。つまり、第２のスケーリング係数は次の式に従って計算できる。
ｆ２＝２ｓｘｆ１                          式（２３）
【１４４９】
ここで、ｓは上記の式（１４）に従って確定された小数点位置であり、ｆ１は上記の式（１７）に従って計算された第１のスケーリング係数である。
【１４５０】
オプションで、プロセッサは、オフセットｏに従って量子化予定のデータを量子化することもできる。この時点で、小数点位置ｓおよび／またはスケーリング係数はプリセット値である場合がある。このとき、プロセッサはオフセットに従って量子化予定のデータを量子化し、量子化予定のデータを取得する。
Ｉｘ＝ｒｏｕｎｄ（Ｆｘ−ｏ）                      式（２４）
【１４５１】
ここで、ｏはオフセット、Ｉｘは量子化後のデータ、Ｆｘは量子化予定のデータ、ｒｏｕｎｄは丸めによって実行される丸め演算である。式（２４）の丸め演算の代わりに、切り上げ、切り捨て、ゼロへの丸めなどの丸め演算を使用するなど、他の丸め演算も使用できることは理解できる。データビット幅が一定の場合、異なるオフセットを使用して、量子化後のデータの値と量子化前のデータとの間のオフセットを調整できることは理解できる。
【１４５２】
さらに、量子化予定のデータに対応する中間表現データＦｘ１は、以下のようになり得る。
Ｆｘ１＝ｒｏｕｎｄ（Ｆｘ−ｏ）＋ｏ                  式（２５）
【１４５３】
ここで、ｏはオフセット、Ｆｘは量子化予定のデータ、ｒｏｕｎｄは丸めによって実行される丸め演算である。Ｆｘ１は、前述の量子化予定のデータＩｘを逆量子化して得られたデータであり、中間表現データＦｘ１のデータ表現形式は、前述の量子化予定のデータのデータ表現形式Ｆｘと一致し、中間表現データＦｘ１は、量子化誤差の計算に使用できる。詳細については、以下を参照してください。ここで、逆量子化は、量子化の逆プロセスを指する。
【１４５４】
本開示の量子化操作は、上記の浮動小数点データの量子化に使用できるだけでなく、固定点データの量子化を実現するためにも使用することができる。任意選択で、第１のデータフォーマットの算術データも固定点算術データであり得、第２のデータフォーマットの算術データは固定点算術データであり得、第２のデータフォーマットの算術データは以下のデータ表現範囲を有する。第１のデータフォーマットのデータは範囲を表し、第２のデータフォーマットの小数点以下の数は第１のデータフォーマットのそれよりも大きくなる。つまり、第２のデータフォーマットの操作データは第１のデータフォーマットの操作データよりも精度が高くなる。たとえば、第１のデータフォーマットの算術データは１６ビットを占める固定小数点データであり、第２のデータフォーマットは８ビットを占める固定小数点データである場合がある。本開示の実施形態において、量子化処理は、固定点計算データを使用することによって実行することができ、それにより、計算データによって占有される記憶空間をさらに減少し、計算データの記憶効率および計算効率を改善する。
【１４５５】
本開示の一実施形態の量子化パラメータの調整方法は、ニューラルネットワークのトレーニングまたは微調整プロセス中に計算されたデータの量子化パラメータを動的に調整して、ニューラルネットワークのトレーニングまたは微調整プロセス中に改善するように、ニューラルネットワークのトレーニングまたは微調整プロセスに適用することができる。ニューラルネットワークの量子化精度。ここで、ニューラルネットワークは、ここで特に限定されない、深部ニューラルネットワークまたは畳み込みニューラルネットワークなどであり得る。
【１４５６】
ニューラルネットワークのトレーニング（Ｔｒａｉｎｉｎｇ）は、ニューラルネットワーク（当該ニューラルネットワークの重みはランダムな数にしてもよい）に対して複数回の反復（ｉｔｅｒａｔｉｏｎ）行い、ニューラルネットワークの重みがプリセット条件を満たすようにすることを指す。ここ、１回の反復演算には、一般に、１回の順方向演算、１回の逆方向演算、および１回の重み更新演算が含まれる。順方向演算とは、ニューラルネットワークの入力データに基づいて順方向演算の結果を得るための順方向推論のプロセスを指する。逆方向演算は、順方向演算の結果とプリセットされた基準値に基づいて損失値を確定し、損失値に応じて重み勾配値および／または入力データ勾配値を確定するプロセスである。重み更新演算とは、重みの勾配に応じてニューラルネットワークの重みを調整するプロセスを指する。具体的には、ニューラルネットワークのトレーニングプロセスは次のとおりである。プロセッサは、ランダム数の重みを持つニューラルネットワークを使用して、入力データに対して順方向演算を実行し、順方向演算の結果を取得できる。次に、プロセッサは、順方向演算の結果とプリセット参照値に従って損失値を確定し、損失値に従って重み勾配値および／または入力データ勾配値を確定する。最後に、プロセッサは、重み勾配値に従ってニューラルネットワークの勾配値を更新し、新しい重みを取得して、反復演算を完了することができる。プロセッサは、ニューラルネットワークの順方向演算の結果がプリセット条件を満たすまで、ループ内で複数の反復を実行する。たとえば、ニューラルネットワークの順方向演算結果がプリセット基準値に収束すると、トレーニングは終了する。または、ニューラルネットワークの順方向演算結果とプリセット基準値によって確定される損失値がプリセット精度以下になると、トレーニングは終了する。
【１４５７】
微調整とは、ニューラルネットワークの精度がプリセット要件を満たすことができるように、ニューラルネットワークで複数の反復演算を実行するプロセスを指する（ニューラルネットワークの重みはすでに収束状態にあり、ランダムな数値ではない）。この微調整プロセスは、基本的に上記のトレーニングプロセスと同じであり、収束状態でニューラルネットワークを再トレーニングするプロセスと見なすことができる。推論とは、重みがプリセット条件を満たすニューラルネットワークを使用して、画像認識などのニューラルネットワークの使用など、認識や分類などの機能を実現するための順方向演算を実行するプロセスを指する。
【１４５８】
本開示の実施形態では、上記のニューラルネットワークのトレーニングまたは微調整プロセスにおいて、異なる量子化パラメータを、ニューラルネットワーク動作の異なる段階で使用して、ニューラルネットワークの動作データを量子化することができ、反復動作は、量子化後のデータに従って実行される。ニューラルネットワークの運用プロセスにおけるデータストレージスペースを減少し、データアクセスと運用の効率を向上させることができる。図３−４に示すように、上記の方法には次のものが含まれる。
【１４５９】
Ｓ１００で、量子化予定のデータのデータ変動範囲を取得する。
【１４６０】
任意選択で、プロセッサは、量子化予定のデータのデータ変動範囲を直接読み取ることができ、量子化予定のデータのデータ変動範囲は、ユーザによって入力され得る。
【１４６１】
オプションで、プロセッサは、カレント反復で量子化予定のデータおよび履歴反復で量子化予定のデータによって、量子化予定のデータのデータ変動範囲を計算することもできる。ここで、カレント反復は、現在実行されている反復演算を指し、履歴反復は、カレント反復の前に実行される反復演算。たとえば、プロセッサは、量子化予定のデータの要素の最大値とカレント反復の要素の平均値、および量子化予定のデータの要素の最大値と、各履歴反復で量子化予定のデータの要素の平均値を、各反復の要素の値に従って取得できる。要素の最大値と平均値によって、量子化予定のデータの変動範囲が決まる。カレント反復で量子化予定のデータの要素の最大値が、プリセット履歴反復数で量子化予定のデータの要素の最大値に近く、カレント反復で量子化予定のデータの要素の平均値が、プリセット履歴反復数である場合量子化予定のデータの要素の平均値が比較的近い場合、量子化予定のデータのデータ変動範囲が小さいと判断できる。そうでなければ、量子化予定のデータのデータ変動範囲が比較的大きいと判断することができる。別の例として、量子化予定のデータのデータ変動範囲は、量子化予定のデータのスライディング平均値または分散によって表すことができ、これはここでは特に限定されない。
【１４６２】
本開示の実施形態では、量子化予定のデータのデータ変動範囲を使用して、量子化予定のデータの量子化パラメータを調整する必要があるかどうかを確定することができる。たとえば、量子化予定のデータのデータ変動範囲が大きい場合、量子化の精度を確保するために、量子化パラメータを時間内に調整する必要があることを示している可能性がある。量子化予定のデータのデータ変動範囲が小さい場合は、履歴反復の量子化パラメータをカレント検査反復とその後の一定数の反復に使用できるため、量子化パラメータの頻繁な調整を回避し、量子化効率を向上させることができる。
【１４６３】
ここで、各反復は、量子化される少なくとも１つのデータを含み、量子化予定のデータは、浮動点または固定点によって表される算術データであり得る。任意選択で、各反復で量子化予定のデータは、ニューロンデータ、重みデータ、または勾配データのうちの少なくとも１つであり得、勾配データはまた、ニューロン勾配データ、重み勾配データなどを含み得る。
【１４６４】
Ｓ２００、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔に少なくとも１回の反復を含むニューラルネットワーク操作の量子化パラメータと、ニューラルネットワークを調整する。量子化パラメータは、ニューラルネットワーク演算で量子化予定のデータに量子化操作を実装するためである。
【１４６５】
任意選択で、量子化パラメータは、上記の小数点位置および／またはスケーリング係数を含み得、ここで、スケーリング係数は、第１のスケーリング係数および第２のスケーリング係数を含み得る。特定の小数点位置の計算方法は上記の式（２）を参照でき、スケーリング係数の計算方法は上記の式（５）または（８）を参照できるが、ここでは繰り返しない。オプションで、量子化パラメータにオフセットを含めることもできる。オフセットの計算方法については、上記の式（１２）を参照してください。さらに、プロセッサは、上記の式（１４）に従って、式（１４）に従って小数点位置を確定することもできる。式（１７）または（２０）はスケーリング係数を確定する。本開示のこの実施形態では、プロセッサは、確定された目標反復間隔によって、上記の小数点位置、スケーリング係数、またはオフセットの少なくとも１つを更新して、ニューラルネットワーク動作における量子化パラメータを調整することができる。つまり、ニューラルネットワーク運用の量子化パラメータは、ニューラルネットワーク運用で量子化予定のデータのデータ変動範囲によって更新できるため、量子化精度を保証することができる。
【１４６６】
量子化予定のデータのデータ変化曲線は、ニューラルネットワークのトレーニングまたは微調整プロセス中に計算データの変化傾向について統計および分析を実行することによって取得できることは理解できる。図３−５に示すように、データ変化曲線によれば、ニューラルネットワークのトレーニングまたは微調整の初期段階では、さまざまな反復で量子化予定のデータのデータが大幅に変化することがわかる。トレーニングまたは微調整操作が進むにつれて、量子化予定のデータのデータ変化は徐々にフラットになる傾向がある。したがって、ニューラルネットワークのトレーニングまたは微調整の初期段階では、量子化パラメータをより頻繁に調整できる。ニューラルネットワークのトレーニングまたは微調整の中間および後期段階では、量子化パラメータを複数の反復またはトレーニングサイクルの間隔で調整できる。本開示の方法は、適切な反復間隔を確定することにより、量子化精度と量子化効率との間のバランスを達成することである。
【１４６７】
具体的には、プロセッサは、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定して、目標反復間隔によってニューラルネットワーク操作における量子化パラメータを調整することができる。オプションで、量子化予定のデータのデータ変動範囲が減少するにつれて、目標反復間隔が増やす場合がある。つまり、量子化予定のデータのデータ変動範囲が大きいほど、目標反復間隔が短くなり、量子化パラメータの調整頻度が高くなる。量子化予定のデータのデータ変動範囲が小さいほど、目標反復間隔が大きくなり、量子化パラメータの調整の頻度が低くなることを示している。もちろん、他の実施形態では、上記の目標反復間隔もハイパーパラメータであり得る。例えば、目標反復間隔は、ユーザによって設定され得る。
【１４６８】
任意選択で、前述の重みデータ、ニューロンデータ、勾配データ、および量子化される他のデータは、異なる反復間隔を有することができる。これに対応して、プロセッサは、量子化される様々なデータに対応するデータ変動振幅を取得し、各タイプの量子化予定のデータのデータ変動振幅に従って、量子化される対応するデータに対応する目標反復間隔を確定することができる。言い換えれば、量子化される様々なデータの量子化プロセスを非同期的に実行することができる。本開示の実施形態では、量子化される異なるタイプのデータ間の差異のために、量子化される異なるデータのデータ変動範囲を使用して、対応する目標反復間隔を確定することができ、対応する目標反復間隔は、対応する目標反復間隔によって確定することができる。これにより、量子化パラメータは、量子化予定のデータの量子化精度を保証し、それによってニューラルネットワークの演算結果の正確さを保証することができる。
【１４６９】
もちろん、他の実施形態では、同じ目標反復間隔を、量子化される異なるタイプのデータについて確定して、目標反復間隔によって量子化される対応するデータに対応する量子化パラメータを調整することができる。例えば、プロセッサは、量子化される様々なデータのデータ変動範囲を取得し、量子化予定のデータの最大データ変動範囲によって目標反復間隔を確定し、目標反復間隔によって量子化される様々なデータの量子化パラメータを確定し得る。さらに、量子化されるさまざまなタイプのデータでも、同じ量子化パラメータを使用できる。
【１４７０】
さらに任意選択で、前述のニューラルネットワークは、少なくとも１つの操作層を含み得、そして量子化されるべきデータは、各操作層に含まれるニューロンデータ、重みデータ、または勾配データのうちの少なくとも１つであり得る。このとき、プロセッサは、現在の算術層に関連して量子化予定のデータを取得し、上記の方法に従って、現在の算術層で量子化される様々なデータのデータ変動範囲および対応する目標反復間隔を確定することができる。
【１４７１】
任意選択で、プロセッサは、各反復演算プロセスで１回量子化予定のデータのデータ変動範囲を確定し、量子化される対応するデータのデータ変動範囲によって目標反復間隔を確定することができる。言い換えると、プロセッサは、各反復で１回目標反復間隔を計算できる。特定の目標反復間隔の計算については、以下の説明を参照してください。さらに、プロセッサは、プリセット条件に従って各反復から検査反復を選択し、各検査反復で量子化予定のデータの変動範囲を確定し、検査反復に対応する目標反復間隔によって量子化パラメータなどを更新および調整することができる。このとき、反復が選択された検査反復でない場合、プロセッサは反復に対応する目標反復間隔を無視する場合がある。
【１４７２】
オプションで、各目標反復間隔は検証反復に対応することができ、検証反復は、目標反復間隔の１番目の反復または目標反復間隔の終了反復であり得る。プロセッサは、各目標反復間隔の検査反復でニューラルネットワークの量子化パラメータを調整して、目標反復間隔によってニューラルネットワーク演算の量子化パラメータを調整することができる。ここで、検証の反復は、現在の量子化パラメータが量子化予定のデータの要件を満たしているかどうかを検証するための時点である可能性がある。調整前の量子化パラメータは、調整後の量子化パラメータと同じでも、調整後の量子化パラメータとは異なる場合もある。オプションで、隣接する検査反復の間隔は、ターゲットの反復の間隔以上にすることができる。
【１４７３】
たとえば、目標反復間隔は、カレント検査反復からの反復数を計算する場合があり、カレント検査反復は、目標反復間隔の開始反復である場合がある。たとえば、カレント検査反復が１００回目の反復である場合、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が３であると判断し、プロセッサは、目標反復間隔に３回の反復が含まれ、それぞれが１００回目の反復であると判断できる。２回目の反復、１０１回目の反復、１０２回目の反復。プロセッサは、１００回目の反復でニューラルネットワーク演算の量子化パラメータを調整できる。ここで、カレント検査の反復は、プロセッサが現在量子化パラメータの更新と調整を実行しているときの対応する反復演算である。
【１４７４】
オプションで、目標反復間隔は、カレント検査反復の次の反復から計算することもでき、カレント検査反復は、カレント検査反復の前の一つ前の反復間隔の終了反復であってもよい。たとえば、カレント検査反復が１００回目の反復である場合、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が３であると判断し、プロセッサは、目標反復間隔に３回の反復（１０１回目反復、第１０２反復、および第１０３反復）が含まれていると判断できる。プロセッサは、１００回目の反復と１０３回目の反復で、ニューラルネットワーク演算の量子化パラメータを調整できる。この開示は、目標反復間隔の確定方法を特に制限するものではない。
【１４７５】
一実施形態では、小数点位置、スケーリング係数、およびオフセットの上記の計算式から、量子化パラメータは、量子化予定のデータに関連することが多いことが分かる。したがって、上記の操作Ｓ１００において、量子化予定のデータのデータ変動範囲はまた、これは、量子化パラメータの変動範囲によって間接的に確定され、量子化予定のデータのデータ変動範囲は、量子化パラメータの変動範囲によって表すことができる。具体的には、図３ー６に示されるように、前述の操作Ｓ１００は、以下を含み得る。
【１４７６】
Ｓ１１０、小数点位置の変動範囲を取得する。ここで、小数点位置の変動範囲を使用して、量子化予定のデータのデータ変動範囲を表すことができ、小数点位置の変動範囲は、量子化予定のデータのデータ変動範囲に対して正である。関連。
【１４７７】
オプションで、小数点位置の変動範囲は、量子化予定のデータの変動範囲を間接的に反映できる。小数点位置の変動範囲は、カレント検査反復の小数点位置および少なくとも１つの履歴反復の小数点位置によって確定され得る。ここで、現在の検査反復の小数点位置と各履歴反復の小数点位置は、式（２）に従って確定できる。もちろん、現在の検査反復の小数点位置と各履歴反復の小数点位置は、式（１４）に従って確定することもできる。
【１４７８】
たとえば、プロセッサは、カレント検査反復の小数点位置と履歴反復の小数点位置の分散を計算し、分散に基づいて小数点位置の変動範囲を確定することもできる。別の例として、プロセッサは、カレント検査反復の小数点位置の平均値および履歴反復の小数点位置の平均値に従って、小数点位置の変動範囲を確定することができる。具体的には、図３ー７に示されるように、前述の操作Ｓ１１０は、以下を含み得る。
【１４７９】
Ｓ１１１、カレント検査反復前の一つ前の検査反復に対応する小数点位置と、一つ前の検査反復前の履歴反復に対応する小数点位置によって、第１の平均値を確定する。ここで、前の検査反復は、量子化パラメータが最後に調整された時間に対応する反復であり、前の検査反復とカレント検査反復との間に少なくとも１つの反復間隔がある。
【１４８０】
オプションで、少なくとも１つの履歴反復が少なくとも１つの反復間隔に属し、各反復間隔が１つの検査反復に対応し、２つの隣接する検査反復が１つの反復間隔を持つ場合がある。前述の操作Ｓ１１１における前の検査反復は、目標反復間隔前の一つ前の反復間隔に対応する検査反復であり得る。
【１４８１】
オプションで、第１の平均値は次の式に従って計算できる。
Ｍ１＝ａ１ｘｓｔ−１＋ａ２ｘｓｔ−２＋ａ３ｘｓｔ−３＋．．．＋ａｍｘｓ１    式（２６）
【１４８２】
ここで、ａ１〜ａｍは各反復の小数点位置に対応する計算された重みを指し、ｓｔ−１は前の検査反復に対応する小数点位置を指する。ｓｔ−２、ｓｔ−３．．．Ｓ１は、最後の検査反復前の履歴反復に対応する小数点位置を指し、Ｍ１は上記の第１の平均値を指する。また、データの分布特性によれば、履歴反復が前回の検査反復から遠いほど、前回の検査反復付近の反復小数点位置の分布や変動範囲への影響が小さいため、上記の計算重みはａ１として計算できる。ａ１〜ａｍの順序は順番に減少する。
【１４８３】
たとえば、最後の検査反復はニューラルネットワーク演算の１００回目の反復であり、履歴反復は１回目の反復から９９回目の反復までであり、プロセッサは１００回目の反復の小数点位置を取得できる（つまり、ｓｔ−１）１００回目の反復前の履歴反復の小数点位置を取得する。つまり、ｓ１はニューラルネットワークの１番目の反復に対応する小数点位置を指してもよい．．．、ｓｔ−３はニューラルネットワークを参照できるｓｔ−２の９８回目の反復に対応する小数点位置は、ニューラルネットワークの９９回目の反復に対応する小数点位置を指してもよい。さらに、プロセッサは、上記の式に従って第１の平均値を計算することができる。
さらに、第１の平均値は、各反復間隔に対応する検査反復の小数点位置によって計算できる。たとえば、第１の平均値は次の式に従って計算できる。
Ｍ１＝ａ１ｘｓｔ−１＋ａ２ｘｓｔ−２＋ａ３ｘｓｔ−３＋．．．＋ａｍｘｓ１
【１４８４】
ここで、ａ１〜ａｍは、各検査反復の小数点位置に対応する計算された重みを参照し、ｓｔ−１は、前の検査反復に対応する小数点位置を指す。ｓｔ−２、ｓｔ−３．．．ｓ１は、最後の検査反復前のプリセット反復間隔数の検査反復に対応する小数点位置を指し、Ｍ１は上記の第１の平均値を指する。
【１４８５】
たとえば、最後の検査反復はニューラルネットワーク演算の１００回目の反復であり、履歴反復は１回目の反復から９９回目の反復までであり、９９回の履歴反復は１１回の反復間隔に分割できる。たとえば、１回目から９回目までは第１反復間隔、１０回目から１８回目は第２反復間隔、．．．、９０回目から９９回目は第１１反復間隔である。次に、プロセッサは１００回目の反復の小数点位置（つまりｓｔ−１）を取得し、１００回目の反復の前の反復間隔で検査反復の小数点位置を取得できる。つまり、ｓ１はニューラルネットワークを参照できる。検査反復の１番目の反復間隔に対応する小数点位置（たとえば、ｓ１はニューラルネットワークの１番目の反復に対応する小数点位置を指してもよい）、．．．、ｓｔ−３はニューラルネットワークの１０番目の反復間隔の検査反復に対応する小数点位置を指してもよい（たとえば、ｓｔ−３はニューラルネットワークの８１番目の反復に対応する小数点位置を指してもよい）、ｓｔ−２はニューラルネットワークの１１番目の反復を参照できるインターバルテストの反復に対応する小数点位置（たとえば、ｓｔ−２は、ニューラルネットワークの９０番目の反復に対応する小数点位置を指してもよい）。さらに、プロセッサは、上記の式に従って第１の平均値Ｍ１を計算することができる。
【１４８６】
本開示の実施形態では、例示の便宜のために、反復間隔が同じ数の反復を含むと想定される。実際の使用では、反復間隔に含まれる反復回数は異なる場合がある。オプションで、反復間隔に含まれる反復数は、反復が増やすにつれて増やす。つまり、ニューラルネットワークのトレーニングまたは微調整が進むにつれて、反復間隔はますます大きくなる可能性がある。
【１４８７】
さらに、計算をさらに簡素化し、データが占めるストレージスペースを減少するために、上記の第１平均値Ｍ１は、次の式を使用して計算できる。
Ｍ１＝αｘｓｔ−１＋（１−α）ｘＭ０                  式（２７）
【１４８８】
ここ、αは前回の検査反復に対応する小数点位置の計算重み、ｓ（ｔ−１）は前回の検査反復に対応する小数点位置、Ｍ０は前回の検査反復前の検査反復に対応するスライディングを表す。平均値については、Ｍ０の具体的な計算方法は、上記のＭ１の計算方法を参照できるが、ここでは繰り返しない。
【１４８９】
Ｓ１１２：カレント検査反復に対応する小数点位置と、カレント検査反復前の履歴反復の小数点位置によって、第２の平均値を確定する。ここで、カレント検査反復に対応する小数点位置は、カレント検査反復の目標データビット幅および量子化予定のデータによって確定することができる。
【１４９０】
オプションで、第２の平均値Ｍ２は、次の式に従って計算できる。
Ｍ２＝ｂ１ｘｓｔ＋ｂ２ｘｓｔ−１＋ｂ３ｘｓｔ−２＋．．．＋ｂｍｘｓ１  式（２８）
【１４９１】
ここで、ｂ１〜ｂｍは各反復の小数点位置に対応する計算された重みを指し、ｓｔはカレント検査反復に対応する小数点位置を指する。ｓｔ−１、ｓｔ−２．．．ｓ１これは、カレント検査反復前の履歴反復に対応する小数点位置を指し、Ｍ２は上記の第２の平均値を指する。さらに、データの分布特性によれば、履歴反復がカレント検査反復から離れるほど、カレント検査反復に近い反復小数点位置の分布および変動範囲への影響が小さくなるため、上記の計算の重みはｂ１〜ｂｍに基づくことができる。順序が減少する。
【１４９２】
たとえば、カレント検査の反復はニューラルネットワーク演算の１０１回目の反復であり、カレント検査の反復前の履歴の反復は１回目の反復から１００回目の反復を指する。次に、プロセッサは１０１番目の反復の小数点位置（つまりｓｔ）を取得し、１０１番目の反復の前の履歴反復の小数点位置を取得できる。つまり、ｓ１は、ニューラルネットワークの１番目の反復の対応する小数点位置を指してもよく、．．．、ｓｔ−２は、ニューラルネットワークの９９回目の反復に対応する小数点位置を指してもよく、ｓｔ−１は、ニューラルネットワークの１００回目の反復に対応する小数点位置を指してもよい。さらに、プロセッサは、上記の式に従って第２の平均値Ｍ２を計算することができる。
【１４９３】
任意選択で、第２の平均値は、各反復間隔に対応する検査反復の小数点位置に従って計算され得る。具体的には、図３−８に示すように、前述の動作Ｓ１１２は、以下の動作を含み得る。
【１４９４】
Ｓ１１２１、中間スライディング平均値のプリセット数を取得する。中間スライディング平均値のそれぞれは、カレント検査反復の前の検査反復のプリセット数に従って確定され、検査反復はニューラルネットワークの量子化を調整することである。プロセスのパラメータは、対応する反復である。
【１４９５】
Ｓ１１２２、カレント検査反復の小数点位置と中間スライディング平均値のプリセット数に従って、第２の平均値を確定する。
【１４９６】
たとえば、第２の平均値は、次の式に従って計算できる。
Ｍ２＝ｂ１ｘｓｔ＋ｂ２ｘｓｔ−１＋ｂ３ｘｓｔ−２＋．．．＋ｂｍｘｓ１
【１４９７】
ここで、ｂ１〜ｂｍは各反復の小数点位置に対応する計算された重みを指し、ｓｔはカレント検査反復に対応する小数点位置を指する。ｓｔ−１、ｓｔ−２．．．ｓ１これは、カレント検査反復の前の検査反復に対応する小数点位置を指し、Ｍ２は上記の第２の平均値を指する。
【１４９８】
たとえば、カレント検査の反復は１００回目の反復であり、履歴の反復は１回目の反復から９９回目の反復までであり、９９回の履歴の反復は１１回の反復間隔に分割できる。たとえば、１回目から９回目までは第１反復間隔、１０回目から１８回目は第２反復間隔、．．．、９０回目から９９回目は第１１反復間隔である。次に、プロセッサは１００回目の反復の小数点位置（つまりｓｔ）を取得し、１００回目の反復の前の反復間隔で検査反復の小数点位置を取得できる。つまり、ｓ１はニューラルネットワークの最初の小数点位置を指してもよい。反復に対応する反復間隔検証小数点位置（たとえば、ｓ１はニューラルネットワークの１番目の反復に対応する小数点位置を指してもよい）、．．．、ｓｔ−２はニューラルネットワークの１０番目の反復間隔の検査反復に対応する小数点位置を指してもよく（たとえば、ｓｔ−２はニューラルネットワークの８１回目の反復に対応する小数点位置を指してもよい）、ｓｔ−１はニューラルネットワークの１１回目の反復間隔の検査反復を参照できる。対応する小数点位置（たとえば、ｓｔ−１は、ニューラルネットワークの９０回目の反復に対応する小数点位置を指してもよい）。さらに、プロセッサは、上記の式に従って第２の平均値Ｍ２を計算することができる。
【１４９９】
本開示の実施形態では、例示の便宜のために、反復間隔が同じ数の反復を含むと想定される。実際の使用では、反復間隔に含まれる反復回数は異なる場合がある。オプションで、反復間隔に含まれる反復数は、反復が増やすにつれて増やす。つまり、ニューラルネットワークのトレーニングまたは微調整が進むにつれて、反復間隔はますます大きくなる可能性がある。
【１５００】
さらに、計算を簡素化し、データが占めるストレージスペースを減少するために、プロセッサは、カレント検査反復に対応する小数点位置によって第２の平均値を確定し、第１の平均値、すなわち、第２の平均値は以下のようになり得る。式は次のように計算される。
Ｍ２＝βｘｓｔ＋（１−β）ｘＭ１                  式（２９）
【１５０１】
ここで、βはカレント検査反復に対応する小数点位置の計算重みを指し、Ｍ１は上記の第１の平均値を指する。
【１５０２】
Ｓ１１３、第１の平均値と第２の平均値に従って第１の誤差を確定する。第１の誤差は、カレント検査反復と履歴反復の小数点位置の変動範囲を表すためである。
【１５０３】
任意選択で、第１の誤差は、第２の平均値と前述の第１の平均値との間の差の絶対値に等しくてもよい。具体的には、上記の第１の誤差は、次の式に従って計算できる。
ｄｉｆｆｕｐｄａｔｅ１＝｜Ｍ２−Ｍ１｜＝β｜ｓ（ｔ）−Ｍ１｜      式（３０）
【１５０４】
オプションで、上記のカレント検査反復の小数点位置は、カレント検査反復で量子化予定のデータと、カレント検査反復に対応する目標データビット幅に基づいて確定できる。特定の小数点位置の計算方法については、上記の式（２）または式（１４）を参照してください。ここで、カレント検査反復に対応する目標データビット幅はハイパーパラメータである可能性がある。さらに任意選択で、カレント検査反復に対応する目標データビット幅は、ユーザー定義の入力であり得る。オプションで、ニューラルネットワークのトレーニングまたは微調整のプロセスで量子化予定のデータに対応するデータビット幅は一定である場合がある。つまり、同じニューラルネットワークで量子化される同じタイプのデータは、たとえばニューラルネットワークの場合、同じデータビット幅で量子化される。ネットワークの各反復におけるニューロンデータは、８ビットのデータ幅で量子化される。
【１５０５】
オプションで、ニューラルネットワークトレーニングまたは微調整プロセスで量子化予定のデータに対応するデータビット幅は、データビット幅が量子化予定のデータの量子化要件を満たすことができるように可変である。すなわち、プロセッサは、量子化予定のデータによって、量子化予定のデータに対応するデータビット幅を適応的に調整し、量子化予定のデータに対応する目標データビット幅を取得することができる。具体的には、プロセッサは、最初にカレント検査反復に対応する目標データビット幅を確定し、次にプロセッサは、カレント検査反復に対応する目標データビット幅に対応するカレント検査反復およびカレント検査反復に対応する量子化データを確定し得る。
【１５０６】
具体的には、図３−９に示されるように、前述の操作Ｓ１１０は、以下を含み得る。
【１５０７】
Ｓ１１４で、カレント検査反復の量子化データおよびカレント検査反復の量子化データに従って量子化誤差を確定し、カレント検査反復の量子化データは、カレント検査反復の量子化データを量子化することによって実行される。入手する。
【１５０８】
任意選択で、前述のプロセッサは、初期データビット幅を使用して、量子化予定のデータを量子化して、前述の量子化後のデータを取得することができる。カレント検査反復の初期データビット幅はハイパーパラメータであり得、カレント検査反復の初期データビット幅はまた、カレント検査反復の前の一つ前の検査反復の量子化データに基づいて確定され得る。
【１５０９】
具体的には、プロセッサは、カレント検査反復で量子化予定のデータおよびカレント検査反復で量子化予定のデータによって、中間表現データを確定することができる。オプションで、中間表現データは、量子化予定のデータの前述の表現形式と一致する。たとえば、プロセッサは、上記の量子化後のデータを逆量子化して、量子化予定のデータの表現形式と一致する中間表現データを取得することができる。ここで、逆量子化は、量子化の逆プロセスを指す。たとえば、量子化予定のデータは上記の式（３）を使用して取得でき、プロセッサは上記の式（４）に従って量子化予定のデータを逆量子化して対応する中間表現データを取得し、量子化予定のデータと中間表現データに従って量子化誤差を確定することもできる。
【１５１０】
さらに、プロセッサは、量子化予定のデータおよび対応する中間表現データに従って、量子化誤差を計算することができる。カレント検査反復で量子化予定のデータがＦｘ＝［Ｚ１，Ｚ２．．．，Ｚｍ］であるとすると、量子化予定のデータに対応する中間表現データはＦｘ１＝［Ｚ１（ｎ），Ｚ２（ｎ）．．．，Ｚｍ（ｎ）］。プロセッサは、量子化予定のデータＦｘおよびそれに対応する中間表現データＦｘ１に従って誤差項を確定し、誤差項に従って量子化誤差を確定することができる。
【１５１１】
任意選択で、プロセッサは、中間表現データＦｘ１の要素の合計および量子化予定のデータＦｘの要素の合計に従って、前述の誤差項を確定することができる。誤差項は、中間表現データＦｘ１の要素の合計および量子化後のデータＦｘの各要素の合計の差。その後、プロセッサは誤差項に従って量子化誤差を確定できる。特定の量子化誤差は、次の式に従って確定できる。
ｄｉｆｆｂｉｔ＝ｌｎ（（Σｉ｜Ｚｉ（ｎ）｜−Σｉ｜Ｚｉ｜）／Σｉ｜Ｚｉ｜＋１）    式（３１）
【１５１２】
ここで、ｚｉは量子化予定のデータの要素であり、Ｚｉ（ｎ）はデータＦｘ１を表す中央の要素である。
【１５１３】
オプションで、プロセッサは、量子化予定のデータの各要素と中間表現データＦｘ１の対応する要素との間の差をそれぞれ計算して、ｍ個の差の値を取得し、ｍ個の差の値の合計を誤差項として使用することができる。その後、プロセッサは誤差項に従って量子化誤差を確定できる。特定の量子化誤差は、次の式に従って確定できる。
ｄｉｆｆｂｉｔ＝ｌｎ（Σｉ｜Ｚｉ（ｎ）−Ｚｉ｜／Σｉ｜Ｚｉ｜＋１）    式（３２）
【１５１４】
ここで、ｚｉは量子化予定のデータの要素であり、Ｚｉ（ｎ）はデータＦｘ１を表す中央の要素である。
【１５１５】
オプションで、量子化予定のデータの各要素と中間表現データＦｘ１の対応する要素との差は、ほぼ２（ｓ−１）に等しい場合がある。したがって、量子化誤差は、次の式に従って確定することもできる。
ｄｉｆｆｂｉｔ＝ｌｎ（２ｓ−１＊ｍ／Σｉ｜Ｚｉ｜）            式（３３）
【１５１６】
ここ、ｍは目標データに対応する中間表現データＦｘ１の数、ｓは小数点位置、ｚｉは量子化予定のデータの要素である。
【１５１７】
オプションで、中間表現データは、前述の量子化予定のデータのデータ表現形式と一致させることもでき、量子化誤差は、中間表現データおよび量子化予定のデータに基づいて確定される。たとえば、量子化予定のデータは次のように表すことができる。Ｆｘ≒Ｉｘ×２ｓ、次に中間表現データＩｘ１≒Ｆｘ／２ｓを確定でき、中間表現データＩｘ１は前述の量子化予定のデータと同じデータ表現形式を持つことができる。このとき、プロセッサは、上記の式（３）で計算された中間表現データＩｘ１およびＩｘ＝ｒｏｕｎｄ（Ｆｘ／２ｓ）に従って、量子化誤差を確定できる。特定の量子化誤差の確定方法は、上記の式（３１）から式（３３）を参照することができる。
【１５１８】
Ｓ１１５、量子化誤差に従って、カレント検査反復に対応する目標データビット幅を確定する。
【１５１９】
具体的には、プロセッサは、量子化誤差に従ってカレント検査反復に対応するデータビット幅を適応的に調整し、カレント検査反復によって調整された目標データビット幅を確定することができる。量子化誤差がプリセット条件を満たす場合、カレント検査反復に対応するデータビット幅を変更しないでおくことができる。つまり、カレント検査反復の目標データビット幅を初期データビット幅と等しくすることができる。量子化誤差がプリセット条件を満たさない場合、プロセッサは、カレント検査反復で量子化予定のデータに対応するデータビット幅を調整して、カレント検査反復に対応する目標データビット幅を取得できる。プロセッサが目標データのビット幅を使用して、カレント検査反復で量子化予定のデータを量子化する場合、量子化誤差は前述のプリセット条件を満たす。オプションで、前述のプリセット条件は、ユーザーが設定したプリセットしきい値にすることができる。
【１５２０】
任意選択で、図３−１０に示されるように、前述の操作Ｓ１１５は、以下を含み得る。
【１５２１】
Ｓ１１５０で、プロセッサは、前述の量子化誤差が第１のプリセットしきい値以上であるかどうかを判断できる。
【１５２２】
量子化誤差が第１のプリセットしきい値以上である場合、動作Ｓ１１５１を実行して、カレント検査反復に対応するデータビット幅を増加させて、カレント検査反復の目標データビット幅を取得することができる。量子化誤差が第１のプリセットしきい値よりも小さい場合、カレント検査反復のデータビット幅を変更せずに維持できる。
【１５２３】
さらに任意選択で、プロセッサは、１回の調整後に前述の目標データビット幅を取得することができる。たとえば、カレント検査反復の初期データビット幅はｎ１であり、プロセッサは１回の調整後に目標データビット幅ｎ２＝ｎ１＋ｔを確定できる。ここで、ｔはデータビット幅の調整値である。ここで、目標データビット幅ｎ２を使用して、カレント検査反復で量子化予定のデータを量子化する場合、取得される量子化誤差は、第１のプリセットしきい値よりも小さい可能性がある。
【１５２４】
さらに任意選択で、プロセッサは、量子化誤差が第１のプリセットしきい値未満になるまで複数の調整を通じて目標データビット幅を取得し、量子化誤差が第１のプリセットしきい値未満の場合のデータビット幅を目標データビット幅として使用することができる。具体的には、量子化誤差が第１のプリセットしきい値以上の場合、第１の中間データビット幅は第１のプリセットビット幅のステップ長さに従って確定され、プロセッサは第１の中間データビット幅によって現在のチェックをチェックできる。量子化する反復データを量子化して量子化予定のデータを取得し、カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに応じて、量子化誤差が第１のプリセットしきい値を下回るまで量子化誤差を確定する。プロセッサは、量子化誤差が第１のプリセットしきい値よりも小さい場合に対応するデータビット幅を目標データビット幅として使用することができる。
【１５２５】
たとえば、カレント検査反復の初期データビット幅はｎ１であり、プロセッサは初期データビット幅ｎ１を使用して、カレント検査反復の量子化データＡを量子化して、量子化後のデータＢ１を取得し、次に、量子化予定のデータＡおよび量子化後のデータに従ってＢ１は、量子化誤差Ｃ１を取得するために計算される。量子化誤差Ｃ１が第１のプリセットしきい値以上の場合、プロセッサは第１の中間データビット幅ｎ２＝ｎ１＋ｔ１を確定する。ここで、ｔ１は第１のプリセットビット幅のステップ長さである。その後、プロセッサは、第１の中間データビット幅ｎ２に従ってカレント検査反復で量子化予定のデータを量子化して、カレント検査反復の量子化データＢ２を取得し、量子化予定のデータＡおよび量子化後のデータＢ２に従って量子化誤差Ｃ２を計算できる。量子化誤差Ｃ２が第１のプリセットしきい値以上の場合、プロセッサは第１の中間データビット幅ｎ２＝ｎ１＋ｔ１＋ｔ１を確定し、新しい第１の中間データビット幅によってカレント検査反復の量子化を実行する。データＡが量子化され、対応する量子化誤差が、量子化誤差が第１のプリセットしきい値より小さくなるまで計算される。量子化誤差Ｃ１が第１のプリセットしきい値よりも小さい場合、初期データビット幅ｎ１を変更しないでおくことができる。
【１５２６】
さらに、前述の第１のプリセットビット幅のステップ長さは一定値であり得る。例えば、量子化誤差が第１のプリセットしきい値よりも大きいときはいつでも、プロセッサはカレント検査反復に対応するデータビット幅を同じ値だけ増やすことができる。ビット幅の値。オプションで、前述の第１のプリセットビット幅のステップ長さも可変値であり得る。例えば、量子化誤差が第１のプリセットしきい値より大きい場合、プロセッサは、量子化誤差と第１のプリセットしきい値との間の差を計算し得る。差が小さいほど、第１のプリセットビット幅のステップ長さの値は小さくなる。
【１５２７】
任意選択で、図３−１１に示されるように、前述の操作Ｓ１１５はさらに以下を含み得る。
【１５２８】
Ｓ１１５２で、プロセッサは、前述の量子化誤差が第２のプリセットしきい値以下であるかどうかを判断できる。
【１５２９】
量子化誤差が第２のプリセットしきい値以下である場合、操作Ｓ１１５３を実行して、カレント検査反復に対応するデータビット幅を減らして、カレント検査反復の目標データビット幅を取得することができる。量子化誤差が第２のプリセットしきい値よりも大きい場合、カレント検査反復のデータビット幅を変更せずに維持できる。
【１５３０】
さらに任意選択で、プロセッサは、１回の調整後に前述の目標データビット幅を取得することができる。たとえば、カレント検査反復の初期データビット幅はｎ１であり、プロセッサは１回の調整後に目標データビット幅ｎ２＝ｎ１−ｔを確定できる。ここで、ｔはデータビット幅の調整値である。ここで、目標データビット幅ｎ２を使用して、カレント検査反復で量子化予定のデータを量子化する場合、取得される量子化誤差は、第２のプリセットしきい値よりも大きくなる可能性がある。
【１５３１】
さらに任意選択で、プロセッサは、量子化誤差が第２のプリセットしきい値より大きくなるまで複数の調整を通じて目標データビット幅を取得し、量子化誤差が第２のプリセットしきい値よりも大きい場合のデータビット幅を目標データビット幅として使用することができる。具体的には、量子化誤差が第１のプリセットしきい値以下の場合、第２の中間データビット幅は第２のプリセットビット幅のステップ長さによって確定され、プロセッサは第２の中間データビット幅によって現在のチェックをチェックできる。量子化する反復データを量子化して量子化予定のデータを取得し、カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに従って、量子化誤差が第２のプリセットしきい値より大きくなるまで量子化誤差を確定する。プロセッサは、量子化誤差が第２のプリセットしきい値よりも大きい場合、対応するデータビット幅を目標データビット幅として使用できる。
【１５３２】
たとえば、カレント検査反復の初期データビット幅はｎ１であり、プロセッサは初期データビット幅ｎ１を使用して、カレント検査反復の量子化データＡを量子化して、量子化後のデータＢ１を取得し、次に、量子化予定のデータＡおよび量子化後のデータに従ってＢ１は、量子化誤差Ｃ１を取得するために計算される。量子化誤差Ｃ１が第２のプリセットしきい値以下の場合、プロセッサは第２の中間データビット幅ｎ２＝ｎ１−ｔ２を確定する。ここで、ｔ２は第２のプリセットビット幅のステップ長さである。その後、プロセッサは、第２の中間データビット幅ｎ２に従ってカレント検査反復で量子化予定のデータを量子化して、カレント検査反復の量子化データＢ２を取得し、量子化予定のデータＡおよび量子化予定のデータＢ２に従って量子化誤差Ｃ２を計算することができる。量子化誤差Ｃ２が第２のプリセットしきい値以下の場合、プロセッサは第２の中間データビット幅ｎ２＝ｎ１−ｔ２−ｔ２を確定し、新しい第２の中間データビット幅によってカレント検査反復の量子化を実行する。データＡが量子化され、対応する量子化誤差が、量子化誤差が第２のプリセットしきい値より大きくなるまで計算される。量子化誤差Ｃ１が第２のプリセットしきい値よりも大きい場合、初期データビット幅ｎ１を変更しないでおくことができる。
【１５３３】
さらに、前述の第２のプリセットビット幅のステップ長さは一定値であり得る。例えば、量子化誤差が第２のプリセットしきい値よりも小さいときはいつでも、プロセッサは、カレント検査反復に対応するデータビット幅を同じ値だけ減らすことができる。ビット幅の値。オプションで、前述の第２のプリセットビット幅のステップ長さも可変値にすることができる。たとえば、量子化誤差が第２のプリセットしきい値より大きい場合、プロセッサは量子化誤差と第２のプリセットしきい値の差を計算できる。差が小さいほど、第２のプリセットビット幅のステップ長さの値は小さくなる。
【１５３４】
オプションで、図３−１２に示すように、量子化誤差が第１のプリセットしきい値より小さく、量子化誤差が第２のプリセットしきい値より大きいとプロセッサが判断した場合、カレント検査反復のデータビット幅を変更しないでおくことができる。第１のプリセットしきい値が第２のプリセットしきい値よりも大きい。つまり、カレント検査反復の目標データビット幅は、初期データビット幅と等しくすることができる。ここで、図３ー１２は、例として、本開示の実施形態のデータビット幅を確定する方法を示すだけであり、図３ー１２の各操作のシーケンスは、ここで特に限定されないが、適応的に調整することができる。
【１５３５】
本開示の実施形態では、カレント検査反復のデータビット幅が変化すると、それに応じて小数点位置が変化する。ただし、この時点での小数点位置の変化は、量子化予定のデータのデータ変化によるものではなく、上記式（３０）による第１の誤差計算で得られる目標反復間隔が不正確であり、量子化の精度に影響を与える可能性がある。したがって、カレント検査反復のデータビット幅が変化した場合、それに応じて上記の第２の平均値を調整して、第１の誤差が小数点位置の変動範囲を正確に反映できるようにし、それによって目標反復間隔の精度と信頼性を確保できる。具体的には、図３−１３に示すように、上記の方法にはさらに次のものが含まれる。
【１５３６】
Ｓ１１６、目標データビット幅によって、カレント検査反復のデータビット幅調整値を確定する。
【１５３７】
具体的には、プロセッサは、カレント検査反復の目標データビット幅および初期データビット幅によって、カレント検査反復のデータビット幅調整値を確定することができる。ここで、データビット幅調整値＝目標データビット幅−初期データビット幅。もちろん、プロセッサは、カレント検査反復のデータビット幅調整値を直接取得することもできる。
【１５３８】
Ｓ１１７、カレント検査反復のデータビット幅調整値に従って、上記の第２の平均値を更新する。
【１５３９】
具体的には、データビット幅調整値がプリセットパラメータより大きい場合（たとえば、プリセットパラメータがゼロに等しい場合）、つまり、カレント検査反復のデータビット幅が増やすと、プロセッサはそれに応じて第２の平均値を減らすことができる。データビット幅調整値がプリセットパラメータよりも小さい場合（たとえば、プリセットパラメータがゼロに等しい場合）、つまり、カレント検査反復のデータビット幅を減らすと、プロセッサはそれに応じて第２の平均値を増やすことができる。データビット幅調整値がプリセットパラメータと等しい場合、つまりデータビット幅調整値が０の場合、この時点でカレント反復に対応する量子化データは変更されておらず、更新された第２の平均値は更新前の第２の平均値と等しくなる。更新前の第２の平均値は、上記の式（２９）に従って計算される。オプションで、データビット幅調整値がプリセットパラメータに等しい場合、つまりデータビット幅調整値が０に等しい場合、プロセッサは第２の平均値を更新しない場合がある。つまり、プロセッサは上記の操作Ｓ１１７を実行しない場合がある。
【１５４０】
たとえば、更新前の第２の平均値Ｍ２＝β×ｓｔ＋（１−β）×Ｍ１；現在の検査反復に対応する目標データビット幅ｎ２＝初期データビット幅ｎ１＋Δｎの場合、ここでΔｎはデータビットを表す。幅調整値。このとき、更新された第２の平均値Ｍ２＝β×（ｓｔ−Δｎ）＋（１−β）×（Ｍ１−Δｎ）。カレント検査反復に対応する目標データビット幅ｎ２＝初期データビット幅ｎ１−Δｎ（ここで、Δｎはデータビット幅調整値を表す）の場合、この時点で、更新された第２の平均値Ｍ２＝β×（ｓｔ−Δｎ）＋（１−β）×（Ｍ１＋Δｎ）。ここで、ｓｔは、目標データのビット幅に応じてカレント検査反復によって確定される小数点位置を指する。
【１５４１】
別の例として、更新前の第２の平均値Ｍ２＝β×ｓｔ＋（１−β）×Ｍ１；カレント検査反復に対応する目標データビット幅ｎ２＝初期データビット幅ｎ１＋Δｎの場合、ここでΔｎはデータを表すビット幅調整値。このとき、更新された第２の平均値Ｍ２＝β×ｓｔ＋（１−β）×Ｍ１−Δｎ。別の例として、カレント検査反復に対応する目標データビット幅ｎ２＝初期データビット幅ｎ１−Δｎ（ここで、Δｎはデータビット幅調整値を表す）の場合、この時点で、更新された第２の平均値Ｍ２＝β×ｓｔ＋（１−β）×Ｍ１＋Δｎ、ここでｓｔは、カレント検査反復で目標データビット幅によって確定された小数点位置を指する。
【１５４２】
さらに、図３−６に示されるように、前述の操作Ｓ２００は、以下を含み得る。
【１５４３】
Ｓ２１０で、小数点位置の変動範囲によって、目標反復間隔を確定する。ここで、目標反復間隔は、前述の小数点位置の変動範囲と負の相関がある。つまり、前述の小数点位置の変動範囲が大きいほど、目標反復間隔は短くなる。上記の小数点位置の変動範囲が小さいほど、目標反復間隔は大きくなる。
【１５４４】
上記のように、上記の第１の誤差は、小数点位置の変化の大きさを表すことができる。したがって、図３ー７に示すように、上記の動作Ｓ２１０は、以下を含み得る。
【１５４５】
Ｓ２１１で、プロセッサは、第１の誤差によって目標反復間隔を確定する場合がある。ここで、目標反復間隔は、第１の誤差と負の相関がある。つまり、第１の誤差が大きいほど、小数点位置の変動範囲が大きくなり、量子化予定のデータのデータ変動範囲が大きくなることを示する。このとき、目標反復間隔は小さくなる。
【１５４６】
具体的には、プロセッサは、次の式に従って目標反復間隔Ｉを計算できる。
I=δ/ｄｉｆｆｕｐｄａｔｅ１-γ                        式（３１）
【１５４７】
ここで、Ｉは目標反復間隔、ｄｉｆｆｕｐｄａｔｅ１は上記の第１の誤差を表し、δとγはハイパーパラメータにすることができる。
【１５４８】
第１の誤差を使用して小数点位置の変動範囲を測定できることは理解できる。第１の誤差が大きいほど、小数点位置の変動範囲が大きくなる。これは、量子化予定のデータの変動範囲が大きく、目標反復間隔を設定する必要があることを示している。小さいである。つまり、第１の誤差が大きいほど、量子化パラメータの調整が頻繁に行われる。
【１５４９】
この実施形態では、小数点位置の変動範囲（第１の誤差）が計算され、小数点位置の変動範囲によって目標反復間隔が確定される。量子化パラメータは目標反復間隔によって確定されるため、量子化パラメータに基づく量子化によって得られる量子化データは、目標データの小数点位置の変化傾向により一致し、量子化精度を確保しながらニューラルネットワークの運用効率を向上させることができる。
【１５５０】
オプションで、プロセッサは、カレント検査反復での目標反復間隔を確定した後、カレント検査反復での目標反復間隔に対応する量子化パラメータおよびデータビット幅をさらに確定して、目標反復間隔によって量子化パラメータを更新することができる。ここで、量子化パラメータは、小数点位置および／またはスケーリング係数を含み得る。さらに、量子化パラメータはまた、オフセットを含み得る。量子化パラメータの具体的な計算方法については、上記を参照してください。図３−１４に示すように、上記の方法には次のものも含まれる。
【１５５１】
Ｓ３００で、プロセッサは、目標反復間隔によって、ニューラルネットワーク演算の量子化パラメータを調整する。
【１５５２】
具体的には、プロセッサは、目標反復間隔によって検査反復を確定し、各検査反復で目標反復間隔を更新し得、また、各検査反復で量子化パラメータを更新し得る。たとえば、ニューラルネットワーク演算のデータビット幅は変更されない。このとき、プロセッサは、各検査反復で量子化予定のデータに応じて、小数点位置などの量子化パラメータを直接調整できる。別の例として、ニューラルネットワーク演算のデータビット幅は可変である。このとき、プロセッサは各検査反復でデータビット幅を更新し、更新されたデータビット幅と検査反復で量子化予定のデータによって小数点位置を調整できる。およびその他の量子化パラメータ。
【１５５３】
本開示のこの実施形態では、プロセッサは、各検査反復で量子化パラメータを更新して、現在の量子化パラメータが、量子化予定のデータの量子化要件を確実に満たすようにする。ここで、更新前の目標反復間隔と更新後の目標反復間隔は同じでも異なっていてもかまいません。更新前のデータビット幅と更新後のデータビット幅は同じでも異なっていてもかまいません。つまり、異なる反復間隔のデータビット幅は同じでも異なっていてもかまいません。更新前の量子化パラメータと更新後の量子化パラメータは同じでも異なっていてもよい。つまり、異なる反復間隔の量子化パラメータは同じでも異なっていてもよい。
【１５５４】
任意選択で、前述の操作Ｓ３００において、プロセッサは、ニューラルネットワーク演算における量子化パラメータを調整するために、検証反復において、目標反復間隔における量子化パラメータを確定することができる。
【１５５５】
ある場合には、ニューラルネットワーク演算の各反復に対応するデータビット幅は変化しない。つまり、ニューラルネットワーク演算の各反復に対応するデータビット幅は同じである。この時点で、プロセッサは次のことを確定できる。目標反復間隔内の小数点位置などの量子化パラメータは、目標反復間隔によってニューラルネットワーク演算の量子化パラメータを調整するという目的を達成できる。ここで、目標反復間隔の反復に対応する量子化パラメータは一致している可能性がある。つまり、目標反復間隔の各反復は同じ小数点位置を使用し、確定された小数点位置などの量子化パラメータのみが各検査反復で更新されるため、各反復での量子化パラメータの更新と調整を回避できるため、減少できる。量子化プロセスでの計算量により、量子化操作の効率が向上する。
【１５５６】
オプションで、データビット幅が変更されていない上記の場合、目標反復間隔の反復に対応する小数点位置を一定に保つことができる。具体的には、プロセッサは、カレント検査反復で量子化予定のデータおよびカレント検査反復に対応する目標データビット幅によって、カレント検査反復に対応する小数点位置を確定し、カレント検査反復に対応する小数点位置を目標反復間隔として使用することができる。対応する小数点位置については、カレント検査反復に対応する小数点位置が、目標反復間隔の反復に使用される。オプションで、カレント検査反復に対応する目標データビット幅をハイパーパラメータにすることができる。たとえば、カレント検査反復に対応する目標データのビット幅は、ユーザーがカスタマイズする。カレント検査反復に対応する小数点位置は、上記の式（２）または式（１４）を参照して計算できる。
【１５５７】
ある場合には、ニューラルネットワーク演算の各反復に対応するデータビット幅が変化する可能性がある。つまり、異なる目標反復間隔に対応するデータビット幅に一致性がない可能性があるが、目標反復間隔の各反復のデータビット幅は残る。絶え間ない。ここで、目標反復間隔の反復に対応するデータビット幅は、ハイパーパラメータであり得る。例えば、目標反復間隔の反復に対応するデータビット幅は、ユーザ定義の入力であり得る。ある場合には、目標反復間隔の反復に対応するデータビット幅もプロセッサによって計算され得る。例えば、プロセッサは、カレント検査反復で量子化予定のデータによって、カレント検査反復に対応する目標データビット幅を確定し得る。およびカレント検査反復に対応する目標データビット幅を、目標反復間隔に対応するデータビット幅として使用する。
【１５５８】
このとき、量子化プロセスでの計算量を単純化するために、目標反復間隔内の対応する小数点位置などの量子化パラメータも変更しないでおくことができる。つまり、目標反復間隔の各反復は同じ小数点位置を使用し、各反復での量子化パラメータの更新と調整を回避するために、確定された小数点位置やデータビット幅などの量子化パラメータのみが各検査反復で更新される。これにより、量子化プロセスでの計算量が減少され、量子化操作の効率が向上する。
【１５５９】
オプションで、目標反復間隔に対応するデータビット幅が変更されない状況を考慮して、目標反復間隔内の反復に対応する小数点位置を一定に保つことができる。具体的には、プロセッサは、カレント検査反復で量子化予定のデータおよびカレント検査反復に対応する目標データビット幅によって、カレント検査反復に対応する小数点位置を確定し、カレント検査反復に対応する小数点位置を目標反復間隔として使用することができる。対応する小数点位置については、カレント検査反復に対応する小数点位置が、目標反復間隔の反復に使用される。オプションで、カレント検査反復に対応する目標データビット幅をハイパーパラメータにすることができる。たとえば、カレント検査反復に対応する目標データのビット幅は、ユーザーがカスタマイズする。カレント検査反復に対応する小数点位置は、上記の式（２）または式（１４）を参照して計算できる。
【１５６０】
オプションで、目標反復間隔の反復に対応するスケーリング係数は一致している場合がある。プロセッサは、現在の検査反復の量子化予定のデータによって、現在の検査反復に対応するスケーリング係数を確定し、現在の検査反復に対応するスケーリング係数を、目標反復間隔の各反復のスケーリング係数として使用することができる。ここで、目標反復間隔の反復に対応するスケーリング係数は一致している。
【１５６１】
オプションで、目標反復間隔の反復に対応するオフセットは一致している。プロセッサは、カレント検査反復の量子化データに従ってカレント検査反復に対応するオフセットを確定し、カレント検査反復に対応するオフセットを、目標反復間隔における各反復のオフセットとして使用することができる。さらに、プロセッサは、量子化予定のデータのすべての要素の中から最小値と最大値を確定し、小数点位置やスケーリング係数などの量子化パラメータをさらに確定する場合がある。詳細については、上記の説明を参照してください。目標反復間隔の反復に対応するオフセットは一致している。
【１５６２】
たとえば、目標反復間隔は、カレント検査反復から反復の数量を計算できる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の１番目の反復である場合がある。たとえば、カレント検査反復が１００回目の反復である場合、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が３であると判断し、プロセッサは、目標反復間隔に３回の反復が含まれ、それぞれが１００回目の反復、１０１回目の反復、１０２回目の反復であると判断できる。さらに、プロセッサは、量子化予定のデータに応じて１００回目の反復に対応する小数点位置や１００回目の反復に対応する目標データビット幅などの量子化パラメータを確定でき、１００回目の反復に対応する小数点位置などの量子化パラメータ対を使用できる。１００回目の反復、１０１回目の反復、および１０２回目の反復が量子化される。このように、プロセッサは、１０１回目の反復や１０２回目の反復で小数点位置などの量子化パラメータを計算する必要がないため、量子化プロセスでの計算量が減り、量子化操作の効率が向上する。
【１５６３】
オプションで、目標反復間隔は、カレント検査反復の次の反復から計算することもできる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の終了反復でもある。たとえば、カレント検査反復は１００回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔の反復間隔が３であると判断する。次に、プロセッサは、目標反復間隔に３つの反復が含まれていると判断する場合がある。これらは、それぞれ１０１回目の反復、１０２回目の反復、および１０３回目の反復である。さらに、プロセッサは、量子化予定のデータに応じて１００回目の反復に対応する小数点位置や１００回目の反復に対応する目標データビット幅などの量子化パラメータを確定でき、１００回目の反復に対応する小数点位置などの量子化パラメータ対を使用できる。１０１回目の反復、１０２回目の反復、および１０３回目の反復が量子化される。このように、プロセッサは、１０２回目の反復や１０３回目の反復で小数点位置などの量子化パラメータを計算する必要がないため、量子化プロセスでの計算量が減り、量子化操作の効率が向上する。
【１５６４】
本開示の実施形態において、同じ目標反復間隔における各反復に対応するデータビット幅および量子化パラメータは同じである、すなわち、同じ目標反復間隔における各反復に対応するデータビット幅、小数点位置、スケーリング係数、およびオフセットはすべてである。ニューラルネットワークのトレーニングまたは微調整プロセス中に、量子化予定のデータの量子化パラメータの頻繁な調整を回避でき、量子化プロセスでの計算量を減らすことができるため、量子化効率が向上する。さらに、データ変更の範囲に応じてトレーニングまたは微調整のさまざまな段階で量子化パラメータを動的に調整することにより、量子化の精度を保証できる。
【１５６５】
別のケースでは、ニューラルネットワーク演算の各反復に対応するデータビット幅は変更される可能性があるが、目標反復間隔の各反復のデータビット幅は変更されない。このとき、目標反復間隔での反復に対応する小数点位置などの量子化パラメータも不整合である可能性がある。プロセッサはまた、カレント検査反復に対応する目標データビット幅によって、目標反復間隔に対応するデータビット幅を確定することができ、ここで、目標反復間隔の反復に対応するデータビット幅は一致している。その後、プロセッサは、データビット幅および目標反復間隔に対応する小数点位置反復間隔によって、ニューラルネットワーク演算プロセスの小数点位置などの量子化パラメータを調整できる。任意選択で、図３−１５に示されるように、前述の操作Ｓ３００はさらに以下を含み得る。
【１５６６】
Ｓ３１０、カレント検査反復の量子化データに従って、目標反復間隔に対応するデータビット幅を確定する。ここで、目標反復間隔の反復に対応するデータビット幅は一致している。言い換えると、ニューラルネットワーク演算中のデータビット幅は、１つおきの目標反復間隔で更新される。オプションで、目標反復間隔に対応するデータビット幅は、カレント検査反復の目標データビット幅である場合がある。カレント検査反復の目標データビット幅については、上記の操作Ｓ１１４およびＳ１１５を参照してください。これらは、ここでは繰り返されない。
【１５６７】
たとえば、目標反復間隔は、カレント検査反復から反復の数量を計算できる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の１番目の反復である場合がある。たとえば、カレント検査の反復は１００回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が６であると判断し、プロセッサは、目標反復間隔にそれぞれ１００回目の反復〜１０５回目の反復である６回の反復が含まれると判断できる。この時点で、プロセッサは１００回目の反復の目標データビット幅を確定でき、１００回目の反復の目標データビット幅は１０１回目から１０５回目の反復まで使用され、１０１回目から１０５回目の反復の必要はない。目標データのビット幅を計算することにより、計算量を減らし、量子化効率と計算効率を向上させる。その後、１０６回目の反復をカレント検査反復として使用でき、目標反復間隔の確定とデータビット幅の更新という上記の操作が繰り返される。
【１５６８】
オプションで、目標反復間隔は、カレント検査反復の次の反復から計算することもできる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の終了反復でもある。たとえば、カレント検査反復は１００回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔の反復間隔が６であると判断する。次に、プロセッサは、目標反復間隔に６つの反復が含まれていると判断する場合がある。これらは、それぞれ１０１番目の反復から１０６番目の反復である。このとき、プロセッサは１００回目の反復の目標データビット幅を確定でき、１００回目の反復の目標データビット幅は１０１回目から１０６回目の反復まで使用され、１０１回目から１０６回目の反復までのターゲットを計算する必要はない。データビット幅は計算量を減らし、量子化効率と計算効率を向上させる。その後、１０６回目の反復をカレント検査反復として使用でき、目標反復間隔の確定とデータビット幅の更新という上記の操作が繰り返される。
【１５６９】
Ｓ３２０、プロセッサは、取得した小数点位置の反復間隔と目標反復間隔に対応するデータビット幅に応じて、目標反復間隔の反復に対応する小数点位置を調整し、ニューラルネットワーク演算の小数点位置などの量子化パラメータを調整する。
【１５７０】
ここで、小数点位置反復間隔には少なくとも１つの反復が含まれ、小数点位置反復間隔内の反復小数点位置は一致している。オプションで、小数点位置の反復間隔はハイパーパラメータにすることができる。たとえば、小数点位置の反復間隔はユーザー定義の入力にすることができる。
【１５７１】
オプションで、小数点位置の反復間隔は、目標反復間隔以下である。小数点位置の反復間隔が上記の目標反復間隔と同じである場合、プロセッサは、データビット幅やカレント検査反復での小数点位置などの量子化パラメータを同期的に更新できる。さらに任意選択で、目標反復間隔の反復に対応するスケーリング係数は一致していてもよい。さらに、目標反復間隔の反復に対応するオフセットは一致している。このとき、目標反復間隔の反復に対応するデータビット幅や小数点位置などの量子化パラメータがすべて同じであるため、計算量を減少し、量子化効率と計算効率を向上させることができる。特定の実装プロセスは、基本的に前述の実施形態と同じであり、上記の説明を参照することができるが、ここでは繰り返さない。
【１５７２】
小数点位置の反復間隔が上記の目標反復間隔よりも小さい場合、プロセッサは、目標反復間隔に対応する検査反復でデータビット幅と小数点位置およびその他の量子化パラメータを更新し、小数点位置反復間隔によって確定されるサブ検査反復で更新できる。小数点位置などの量子化パラメータ。データビット幅を変更しない場合は、量子化予定のデータに応じて小数点位置などの量子化パラメータを微調整できるため、同じ目標反復間隔内で小数点位置などの量子化パラメータを調整して、量子化精度をさらに向上させることができる。
【１５７３】
具体的には、プロセッサは、カレント検査反復および小数点位置反復間隔によって副検査反復を確定することができ、副検査反復は、小数点位置を調整するために使用され、副検査反復は、目標反復間隔における反復であり得る。さらに、プロセッサは、サブ検査反復で量子化予定のデータおよび目標反復間隔に対応するデータビット幅によって、目標反復間隔での反復に対応する小数点位置を調整することができ、小数点位置確定方法は、上記の式（２）を参照することができる。または式（１４）。ここでは繰り返さない。
【１５７４】
たとえば、カレント検査の反復は１００回目の反復であり、目標反復間隔は６であり、目標反復間隔には１００回目の反復から１０５番目の反復までの反復が含まれる。プロセッサによって取得される小数点位置の反復間隔はＩｓ１＝３であり、小数点位置は、カレント検査の反復から３回の反復で１回調整できる。具体的には、プロセッサは、１００回目の反復を前述のサブ検査反復として使用し、１００回目の反復に対応する小数点位置ｓ１を計算することができる。小数点位置ｓ１は、１００回目の反復、１０１回目の反復、および１０２回目の反復の間で共有されて、量子化が実行される。その後、プロセッサは、小数点位置反復間隔Ｉｓ１に従って、前述のサブ検査反復として１０３番目の反復を使用でき、プロセッサは、１０３番目の反復に対応する量子化データおよび目標反復間隔に対応するデータビット幅ｎに従って１０３番目の反復を確定することもできる。２つの小数点位置の反復間隔に対応する小数点位置ｓ２は、前述の小数点位置ｓ２を１０３回目の反復から１０５回目の反復まで共有することによって量子化できる。本開示の実施形態において、更新前の前述の小数点位置ｓ１および更新後の小数点位置ｓ２の値は、同じであっても異なっていてもよい。さらに、プロセッサは、次の目標反復間隔、および次の目標反復間隔に対応するデータビット幅および小数点位置などの量子化パラメータを、１０６回目の反復で再び量子化予定のデータのデータ変動範囲によって確定することができる。
【１５７５】
別の例では、カレント検査反復は１００回目の反復であり、目標反復間隔は６であり、目標反復間隔には、１０１回目の反復から１０６回目の反復までの反復が含まれる。プロセッサによって取得される小数点位置の反復間隔はＩｓ１＝３であり、小数点位置は、カレント検査の反復から３回の反復で１回調整できる。具体的には、プロセッサは、カレント検査反復で量子化予定のデータおよびカレント検査反復に対応する目標データビット幅ｎ１に従って、第１の小数点位置反復間隔に対応する小数点位置がｓ１であると確定し得る。小数点位置ｓ１は、１０１回目の反復、１０２回目の反復、および１０３回目の反復の間で共有されて、量子化が実行される。その後、プロセッサは、小数点位置反復間隔Ｉｓ１に従って、前述のサブ検査反復として１０４番目の反復を使用でき、プロセッサは、１０４番目の反復に対応する量子化データおよび目標反復間隔に対応するデータビット幅ｎ１に従って、４番目の反復を確定することもできる。上記の小数点位置ｓ２を１０４回目の反復から１０６回目の反復まで共有することにより、２つの小数点位置の反復間隔に対応する小数点位置ｓ２を量子化することができる。本開示の実施形態において、更新前の前述の小数点位置ｓ１および更新後の小数点位置ｓ２の値は、同じであっても異なっていてもよい。さらに、プロセッサは、１０６回の反復で再び量子化予定のデータのデータ変動範囲によって、次の目標反復間隔、および次の目標反復間隔に対応するデータビット幅および小数点位置などの量子化パラメータを確定し得る。
【１５７６】
オプションで、小数点位置の反復間隔は１に等しくてもかまいません。つまり、小数点位置は反復ごとに１回更新される。オプションで、小数点位置の反復間隔は同じでも異なっていてもかまいません。たとえば、目標反復間隔に含まれる少なくとも１つの小数点位置反復間隔は、順次増やす場合がある。ここでは、一例のみを使用して、この実施形態の実施方法を説明し、開示を限定するために使用しない。
【１５７７】
オプションで、目標反復間隔の反復に対応するスケーリング係数も一致していない場合がある。さらに任意選択で、スケーリング係数は、前述の小数点位置と同期して更新され得る、すなわち、スケーリング係数に対応する反復間隔は、前述の小数点位置反復間隔に等しくあり得る。つまり、プロセッサが確定された小数点位置を更新するたびに、それに応じて確定されたスケーリング係数を更新する。
【１５７８】
オプションで、目標反復間隔の反復に対応するオフセットも不整合になる場合がある。さらに、オフセットは、前述の小数点位置と同期して更新することができる。つまり、オフセットに対応する反復間隔は、前述の小数点位置の反復間隔に等しくすることができる。つまり、プロセッサが確定された小数点位置を更新するたびに、それに応じて確定されたオフセットを更新する。もちろん、オフセットは前述の位置位置またはデータビット幅と非同期に更新することもできるが、ここでは特に制限されていない。さらに、プロセッサは、量子化予定のデータのすべての要素の中から最小値と最大値を確定し、小数点位置やスケーリング係数などの量子化パラメータをさらに確定する場合がある。詳細については、上記の説明を参照してください。
【１５７９】
別の実施形態では、プロセッサは、小数点位置の変動範囲および量子化予定のデータのデータビット幅によって、量子化予定のデータのデータ変動範囲を包括的に確定し、量子化予定のデータのデータ変動範囲によって、目標反復間隔を確定することができる。目標反復間隔を使用して、確定されたデータビット幅を更新できる。つまり、プロセッサは、目標反復間隔の検証反復ごとに、確定されたデータビット幅を更新できる。小数点位置は固定点データの精度を反映でき、データビット幅は固定点データのデータ表現範囲を反映できるため、小数点位置の変動範囲と量子化目標データのデータビット幅変化を統合することで、量子化予定のデータの精度を考慮できるようになる。データ表現範囲を満たすこともできる。任意選択で、小数点位置の変動範囲は、前述の第１の誤差によって表すことができ、データビット幅の変化は、前述の量子化誤差によって確定することができる。具体的には、図３−１６に示すように、上記の方法には次のものが含まれる。
【１５８０】
Ｓ４００、第１の誤差を取得する。第１の誤差は小数点位置の変動範囲を表すことができ、小数点位置の変動範囲は量子化予定のデータのデータ変動範囲を表すことができる。具体的には、第１の誤差の計算方法は上記の操作Ｓ１１０を参照できる。ここでは説明を反復ない。
【１５８１】
Ｓ５００、第２の誤差を取得する。ここで、第２の誤差は、データビット幅の変化を表すためである。
【１５８２】
任意選択で、前述の第２の誤差は、量子化誤差によって確定され得、第２の誤差は、前述の量子化誤差と正の相関がある。具体的には、図３−１６に示されるように、前述の操作Ｓ５００は、以下を含み得る。
【１５８３】
Ｓ５１０で、カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに従って量子化誤差を確定する。カレント検査反復の量子化データは、初期データビット幅によってカレント検査反復の量子化データを比較する。データは量子化される。具体的な量子化誤差の確定方法については、上記の操作Ｓ１１４の説明を参照してください。ここでは繰り返さないことにする。
【１５８４】
Ｓ５２０、量子化誤差に従って第２の誤差を確定する。ここで、第２の誤差は量子化誤差と正の相関がある。
ｄｉｆｆｕｐｄａｔｅ２＝θ＊ｄｉｆｆ２ｂｉｔ              式（４４）
【１５８５】
ここで、ｄｉｆｆｕｐｄａｔｅ２は上記の第２の誤差を表し、ｄｉｆｆｂｉｔは上記の量子化誤差を表し、θはハイパーパラメータにすることができる。
【１５８６】
Ｓ６００で、第２の誤差と第１の誤差によって、目標反復間隔を確定する。
【１５８７】
具体的には、プロセッサは、第１の誤差および第２の誤差によって目標誤差を計算し、目標誤差に従って目標反復間隔を確定することができる。オプションで、第１の誤差と第２の誤差に対して加重平均計算を実行することにより、目標誤差を取得できる。たとえば、ｔａｒｇｅｔ  ｅｒｒｏｒ＝Ｋ＊ｆｉｒｓｔ  ｅｒｒｏｒ＋（１−Ｋ）＊ｓｅｃｏｎｄ  ｅｒｒｏｒ、ここで、Ｋはハイパーパラメータである。その後、プロセッサは、目標誤差に従って目標反復間隔を確定することができ、目標反復間隔は、目標誤差と負の相関がある。つまり、目標誤差が大きいほど、目標反復間隔は短くなる。
【１５８８】
オプションで、第１の誤差と第２の誤差の最大値に従って目標誤差を確定することもでき、第１の誤差または第２の誤差の重みは０である。具体的には、図３−１７に示されるように、前述の操作Ｓ６００は、以下を含み得る。
【１５８９】
Ｓ６１０、第１の誤差と第２の誤差うちの最大値を目標誤差とする。
【１５９０】
具体的には、プロセッサは、第１の誤差ｄｉｆｆｕｐｄａｔｅ１と第２の誤差ｄｉｆｆｕｐｄａｔｅ２の大きさを比較し、第１の誤差ｄｉｆｆｕｐｄａｔｅ１が第２の誤差ｄｉｆｆｕｐｄａｔｅ２より大きい場合、目標誤差は第１の誤差ｄｉｆｆｕｐｄａｔｅ１と等しくなる。第１の誤差ｄｉｆｆｕｐｄａｔｅ１が第２の誤差よりも小さい場合、目標誤差は第２の誤差ｄｉｆｆｕｐｄａｔｅ２と等しくなる。第１の誤差ｄｉｆｆｕｐｄａｔｅ１が第２の誤差と等しい場合、目標誤差は第１の誤差ｄｉｆｆｕｐｄａｔｅ１または第２の誤差ｄｉｆｆｕｐｄａｔｅ２である可能性がある。つまり、目標誤差ｄｉｆｆｕｐｄａｔｅは、次の式に従って確定できる。
ｄｉｆｆｕｐｄａｔｅ＝ｍａｘ（ｄｉｆｆｕｐｄａｔｅ１，ｄｉｆｆｕｐｄａｔｅ２）    式（４５）
【１５９１】
ここで、ｄｉｆｆｕｐｄａｔｅは目標誤差を参照し、ｄｉｆｆｕｐｄａｔｅ１は第１の誤差を参照し、ｄｉｆｆｕｐｄａｔｅ２は第２の誤差を指す。
【１５９２】
Ｓ６２０、目標誤差に従って目標反復間隔を確定する。ここで、目標誤差は目標反復間隔と負の相関がある。具体的には、目標反復間隔は次のように確定できる。
【１５９３】
目標反復間隔は、次の式に従って計算できる。
Ｉ＝β／ｄｉｆｆｕｐｄａｔｅ−γ                      式（４６）
【１５９４】
ここで、Ｉは目標反復間隔を表し、ｄｉｆｆｕｐｄａｔｅは上記の目標誤差を表し、δとγはハイパーパラメータにすることができる。
【１５９５】
任意選択で、前述の実施形態では、データビット幅は、ニューラルネットワーク演算において可変であり、データビット幅の変化傾向は、第２の誤差によって測定することができる。この場合、図３−１７に示すように、目標反復間隔を確定した後、プロセッサは操作Ｓ６３０を実行して、目標反復間隔の反復に対応するデータビット幅を確定できる。ここで、データは目標反復間隔の反復に対応する。ビット幅は同じである。具体的には、プロセッサは、カレント検査反復で量子化予定のデータによって、目標反復間隔に対応するデータビット幅を確定することができる。言い換えると、ニューラルネットワーク演算中のデータビット幅は、１つおきの目標反復間隔で更新される。オプションで、目標反復間隔に対応するデータビット幅は、カレント検査反復の目標データビット幅である場合がある。カレント検査反復の目標データビット幅については、上記の操作Ｓ１１４およびＳ１１５を参照してください。これらは、ここでは繰り返されない。
【１５９６】
たとえば、目標反復間隔は、カレント検査反復から反復の数量を計算できる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の１番目の反復である場合がある。たとえば、カレント検査の反復は１００回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が６であると判断し、プロセッサは、目標反復間隔にそれぞれ１００回目の反復〜１０５回目の反復である６回の反復が含まれると判断できる。。この時点で、プロセッサは１００回目の反復の目標データビット幅を確定でき、１００回目の反復の目標データビット幅は１０１回目から１０５回目の反復まで使用され、１０１回目から１０５回目の反復の必要はない。目標データのビット幅を計算することにより、計算量を減らし、量子化効率と計算効率を向上させる。その後、１０６回目の反復をカレント検査反復として使用でき、目標反復間隔の確定とデータビット幅の更新という上記の操作が繰り返される。
【１５９７】
オプションで、目標反復間隔は、カレント検査反復の次の反復から計算することもできる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の終了反復でもある。たとえば、カレント検査反復は１００回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔の反復間隔が６であると判断する。次に、プロセッサは、目標反復間隔に６つの反復が含まれていると判断する場合がある。これらは、それぞれ１０１番目の反復から１０６番目の反復である。このとき、プロセッサは１００回目の反復の目標データビット幅を確定でき、１００回目の反復の目標データビット幅は１０１回目から１０６回目の反復まで使用され、１０１回目から１０６回目の反復までのターゲットを計算する必要はない。データビット幅は計算量を減らし、量子化効率と計算効率を向上させる。その後、１０６回目の反復をカレント検査反復として使用でき、目標反復間隔の確定とデータビット幅の更新という上記の操作が繰り返される。
【１５９８】
さらに、プロセッサは、検査反復時に目標反復間隔の量子化パラメータを確定して、目標反復間隔によってニューラルネットワーク動作の量子化パラメータを調整することもできる。つまり、ニューラルネットワーク演算の小数点位置などの量子化パラメータをデータビット幅と同期して更新することができる。
【１５９９】
ある場合には、目標反復間隔の反復に対応する量子化パラメータが一致している可能性がある。任意選択で、プロセッサは、カレント検査反復で量子化予定のデータおよびカレント検査反復に対応する目標データビット幅によってカレント検査反復に対応する小数点位置を確定し、カレント検査反復に対応する小数点位置を標的反復として使用することができる。間隔に対応する小数点位置。目標反復間隔の反復に対応する小数点位置は同じである。つまり、目標反復間隔の各反復は、カレント検査反復の小数点位置などの量子化パラメータを使用し、各反復での量子化パラメータの更新と調整を回避することで、量子化プロセスでの計算量を減らし、量子化を改善する。運用効率。
【１６００】
オプションで、目標反復間隔の反復に対応するスケーリング係数は一致している場合がある。プロセッサは、現在の検査反復の量子化予定のデータによって、現在の検査反復に対応するスケーリング係数を確定し、現在の検査反復に対応するスケーリング係数を、目標反復間隔の各反復のスケーリング係数として使用することができる。ここで、目標反復間隔の反復に対応するスケーリング係数は一致している。
【１６０１】
オプションで、目標反復間隔の反復に対応するオフセットは一致している。プロセッサは、カレント検査反復の量子化データに従ってカレント検査反復に対応するオフセットを確定し、カレント検査反復に対応するオフセットを、目標反復間隔における各反復のオフセットとして使用することができる。さらに、プロセッサは、量子化予定のデータのすべての要素の中から最小値と最大値を確定し、小数点位置やスケーリング係数などの量子化パラメータをさらに確定する場合がある。詳細については、上記の説明を参照してください。目標反復間隔の反復に対応するオフセットは一致している。
【１６０２】
たとえば、目標反復間隔は、カレント検査反復から反復の数量を計算できる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の１番目の反復である場合がある。たとえば、カレント検査反復が１００回目の反復である場合、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が３であると判断し、プロセッサは、目標反復間隔に３回の反復が含まれ、それぞれが１００回目の反復、１０１回目の反復、１０２回目の反復であると判断できる。さらに、プロセッサは、１００回目の反復に対応する量子化予定のデータや目標データビット幅によって、１００回目の反復に対応する小数点位置などの量子化パラメータを確定でき、当該１００回目の反復に対応する小数点位置などの量子化パラメータを使用して、１００回目の反復、１０１回目の反復、および１０２回目の反復を量子する。このように、プロセッサは、１０１回目の反復や１０２回目の反復で小数点位置などの量子化パラメータを計算する必要がないため、量子化プロセスでの計算量が減り、量子化操作の効率が向上する。
【１６０３】
オプションで、目標反復間隔は、カレント検査反復の次の反復から計算することもできる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の終了反復でもある。たとえば、カレント検査反復は１００回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔の反復間隔が３であると判断する。次に、プロセッサは、目標反復間隔に３つの反復が含まれていると判断する場合がある。これらは、それぞれ１０１回目の反復、１０２回目の反復、および１０３回目の反復である。さらに、プロセッサは、１００回目の反復に対応する量子化予定のデータや目標データビット幅によって、１００回目の反復に対応する小数点位置などの量子化パラメータを確定でき、当該１００回目の反復に対応する小数点位置などの量子化パラメータを使用して、１００回目の反復、１０１回目の反復、および１０２回目の反復を量子する。このように、プロセッサは、１０２回目の反復や１０３回目の反復で小数点位置などの量子化パラメータを計算する必要がないため、量子化プロセスでの計算量が減り、量子化操作の効率が向上する。
【１６０４】
本開示の実施形態において、同じ目標反復間隔における各反復に対応するデータビット幅および量子化パラメータは同じである、すなわち、同じ目標反復間隔における各反復に対応するデータビット幅、小数点位置、スケーリング係数、およびオフセットはすべてである。ニューラルネットワークのトレーニングまたは微調整プロセス中に、量子化予定のデータの量子化パラメータの頻繁な調整を回避でき、量子化プロセスでの計算量を減らすことができるため、量子化効率が向上する。さらに、データ変更の範囲に応じてトレーニングまたは微調整のさまざまな段階で量子化パラメータを動的に調整することにより、量子化の精度を保証できる。
【１６０５】
別の場合において、プロセッサはまた、ニューラルネットワーク操作における量子化パラメータを調整するために、小数点位置などの量子化パラメータに対応する小数点位置反復間隔によって、目標反復間隔における量子化パラメータを確定し得る。つまり、ニューラルネットワーク演算の小数点位置などの量子化パラメータは、データビット幅と非同期に更新できる。プロセッサは、目標反復間隔の検査反復で、データビット幅や小数点位置などの量子化パラメータを更新できる。また、プロセッサは、小数点位置によって反復することもできる。間隔は、目標反復間隔の反復に対応する小数点位置を個別に更新する。
【１６０６】
具体的には、プロセッサは、カレント検査反復に対応する目標データビット幅によって、目標反復間隔に対応するデータビット幅を確定することもでき、ここで、目標反復間隔の反復に対応するデータビット幅は一致している。その後、プロセッサは、データビット幅および目標反復間隔に対応する小数点位置反復間隔によって、ニューラルネットワーク演算プロセスの小数点位置などの量子化パラメータを調整できる。すなわち、図３−１７に示すように、目標反復間隔に対応するデータビット幅を確定した後、プロセッサは、動作Ｓ６４０を実行して、取得された小数点位置反復間隔および目標反復間隔に対応するデータビット幅を調整することもできる。目標反復間隔で対応する小数点位置を反復して、ニューラルネットワーク演算で小数点位置を調整する。ここで、小数点位置反復間隔には少なくとも１つの反復が含まれ、小数点位置反復間隔内の反復小数点位置は一致している。オプションで、小数点位置の反復間隔はハイパーパラメータにすることができる。たとえば、小数点位置の反復間隔はユーザー定義の入力にすることができる。
【１６０７】
オプションで、小数点位置の反復間隔は、目標反復間隔以下である。小数点位置の反復間隔が上記の目標反復間隔と同じである場合、プロセッサは、データビット幅やカレント検査反復での小数点位置などの量子化パラメータを同期的に更新できる。さらに任意選択で、目標反復間隔の反復に対応するスケーリング係数は一致していてもよい。さらに、目標反復間隔の反復に対応するオフセットは一致している。このとき、目標反復間隔の反復に対応するデータビット幅や小数点位置などの量子化パラメータがすべて同じであるため、計算量を減少し、量子化効率と計算効率を向上させることができる。特定の実装プロセスは、基本的に前述の実施形態と同じであり、上記の説明を参照することができるが、ここでは繰り返さない。
【１６０８】
小数点位置の反復間隔が上記の目標反復間隔よりも小さい場合、プロセッサは、目標反復間隔に対応する検査反復でデータビット幅と小数点位置およびその他の量子化パラメータを更新し、小数点位置反復間隔によって確定されるサブ検査反復で更新できる。小数点位置などの量子化パラメータ。データビット幅を変更しない場合は、量子化予定のデータに応じて小数点位置などの量子化パラメータを微調整できるため、同じ目標反復間隔内で小数点位置などの量子化パラメータを調整して、量子化精度をさらに向上させることができる。
【１６０９】
具体的には、プロセッサは、カレント検査反復および小数点位置反復間隔によって副検査反復を確定することができ、副検査反復は、小数点位置を調整するために使用され、副検査反復は、目標反復間隔における反復であり得る。さらに、プロセッサは、サブ検査反復で量子化予定のデータおよび目標反復間隔に対応するデータビット幅によって、目標反復間隔での反復に対応する小数点位置を調整することができ、小数点位置確定方法は、上記の式（２）を参照することができる。または式（１４）。ここでは繰り返さない。
【１６１０】
たとえば、カレント検査の反復は１００回目の反復であり、目標反復間隔は６であり、目標反復間隔には１００回目の反復から１０５番目の反復までの反復が含まれる。プロセッサによって取得される小数点位置の反復間隔はＩｓ１＝３であり、小数点位置は、カレント検査の反復から３回の反復で１回調整できる。具体的には、プロセッサは、前述のサブ検査反復として１００回目の反復を使用し、１００回目の反復に対応する小数点位置ｓ１を計算することができる。小数点位置ｓ１は、１００回目の反復、１０１回目の反復、および１０２回目の反復の間で共有されて、量子化が実行される。その後、プロセッサは、小数点位置反復間隔Ｉｓ１に従って、前述のサブ検査反復として１０３番目の反復を使用でき、プロセッサは、１０３番目の反復に対応する量子化データおよび目標反復間隔に対応するデータビット幅ｎに従って１０３番目の反復を確定することもできる。２つの小数点位置の反復間隔に対応する小数点位置ｓ２は、前述の小数点位置ｓ２を１０３回目の反復から１０５回目の反復まで共有することによって量子化できる。本開示の実施形態において、更新前の前述の小数点位置ｓ１および更新後の小数点位置ｓ２の値は、同じであっても異なっていてもよい。さらに、プロセッサは、次の目標反復間隔、および次の目標反復間隔に対応するデータビット幅および小数点位置などの量子化パラメータを、１０６回目の反復で再び量子化予定のデータのデータ変動範囲によって確定することができる。
【１６１１】
別の例では、カレント検査反復は１００回目の反復であり、目標反復間隔は６であり、目標反復間隔には、１０１回目の反復から１０６回目の反復までの反復が含まれる。プロセッサによって取得される小数点位置の反復間隔はＩｓ１＝３であり、小数点位置は、カレント検査の反復から３回の反復で１回調整できる。具体的には、プロセッサは、カレント検査反復で量子化予定のデータおよびカレント検査反復に対応する目標データビット幅ｎ１に従って、第１の小数点位置反復間隔に対応する小数点位置がｓ１であると確定し得る。１００回目の反復、１０２回目の反復と１０３回目の反復は、量子化のために前述の小数点位置ｓ１を共有する。その後、プロセッサは、小数点位置反復間隔Ｉｓ１に従って、前述のサブ検査反復として１０４番目の反復を使用でき、プロセッサは、１０４番目の反復に対応する量子化データおよび目標反復間隔に対応するデータビット幅ｎ１に従って、４番目の反復を確定することもできる。上記の小数点位置ｓ２を１０４回目の反復から１０６回目の反復まで共有することにより、２つの小数点位置の反復間隔に対応する小数点位置ｓ２を量子化することができる。本開示の実施形態において、更新前の前述の小数点位置ｓ１および更新後の小数点位置ｓ２の値は、同じであっても異なっていてもよい。さらに、プロセッサは、次の目標反復間隔、および次の目標反復間隔に対応するデータビット幅および小数点位置などの量子化パラメータを、１０６回目の反復で再び量子化予定のデータのデータ変動範囲によって確定することができる。
【１６１２】
オプションで、小数点位置の反復間隔は１に等しくてもかまいません。つまり、小数点位置は反復ごとに１回更新される。オプションで、小数点位置の反復間隔は同じでも異なっていてもかまいません。たとえば、目標反復間隔に含まれる少なくとも１つの小数点位置反復間隔は、順次増やす場合がある。ここでは、一例のみを使用して、この実施形態の実施方法を説明し、開示を限定するために使用しない。
【１６１３】
オプションで、目標反復間隔の反復に対応するスケーリング係数も一致していない場合がある。さらに任意選択で、スケーリング係数は、前述の小数点位置と同期して更新することができ、すなわち、スケーリング係数に対応する反復間隔は、前述の小数点位置反復間隔に等しくすることができる。つまり、プロセッサが確定された小数点位置を更新するたびに、それに応じて確定されたスケーリング係数を更新する。
【１６１４】
オプションで、目標反復間隔の反復に対応するオフセットも不整合になる場合がある。さらに、オフセットは、前述の小数点位置と同期して更新することができる。つまり、オフセットに対応する反復間隔は、前述の小数点位置の反復間隔に等しくすることができる。つまり、プロセッサが確定された小数点位置を更新するたびに、それに応じて確定されたオフセットを更新する。もちろん、オフセットは前述の位置位置またはデータビット幅と非同期に更新することもできるが、ここでは特に制限されていない。さらに、プロセッサは、量子化予定のデータのすべての要素の中から最小値と最大値を確定し、小数点位置やスケーリング係数などの量子化パラメータをさらに確定する場合がある。詳細については、上記の説明を参照してください。
【１６１５】
他の任意選択の実施形態では、小数点位置、スケーリング係数、およびオフセットの３つの量子化パラメータも非同期であり得る、すなわち、小数点位置反復間隔、スケーリング係数反復間隔、およびオフセット反復間隔のうちの１つ、または３つすべてが異なる。ここで、小数点位置の反復間隔とスケーリング係数の反復間隔は、両方とも目標反復間隔以下である。オフセット反復間隔は、目標反復間隔よりも小さくすることができる。オフセットは、量子化予定のデータの分布にのみ関連するため、代替の実施形態では、オフセットは、目標反復間隔と完全に非同期にすることもでき、すなわち、オフセット反復間隔は、目標反復間隔よりも大きくすることもできる。
【１６１６】
任意の実施形態において、上記の方法は、ニューラルネットワークのトレーニングまたは微調整プロセスにおいて使用され得、ニューラルネットワークの微調整またはトレーニングプロセスに含まれる操作データの量子化パラメータの調整を実現し、ニューラルネットワークの演算プロセスを改善する。に含まれる算術データの量子化精度と効率。動作データは、ニューロンデータ、重みデータ、または勾配データのうちの少なくとも１つであり得る。図３−５に示すように、量子化予定のデータのデータ変化曲線によれば、トレーニングや微調整の初期段階では、各反復で量子化予定のデータの差が比較的大きく、量子化予定のデータのデータ変動範囲が比較的鋭い。このとき、目標反復間隔の値を小さくすることができ、目標反復間隔の量子化パラメータを時間内に更新して、量子化の精度を確保することができる。トレーニングや微調整の中間段階では、量子化予定のデータのデータ変動範囲が徐々にフラットになる傾向があるが、このとき、目標反復間隔の値を大きくして、量子化パラメータの頻繁な更新を回避し、量子化効率と計算効率を向上させることができる。トレーニングまたは微調整の後の段階では、ニューラルネットワークのトレーニングまたは微調整は安定する傾向がある（つまり、ニューラルネットワークの正の演算結果がプリセット参照値に近づくと、ニューラルネットワークのトレーニングまたは微調整は安定する傾向がある）、このとき、目標反復間隔の値を増やし続けて、量子化効率と計算効率をさらに向上させることができる。上記のデータ変化の傾向に基づいて、さまざまな方法を使用して、ニューラルネットワークのトレーニングまたは微調整のさまざまな段階で目標反復間隔を確定し、量子化の精度を確保することに基づいて量子化効率と計算効率を向上させることができる。
【１６１７】
具体的には、図３−１８に示すように、この方法をニューラルネットワークのトレーニングまたは微調整プロセスで使用する場合、この方法には次のものも含まれる。
【１６１８】
Ｓ７１０、プロセッサは、カレント反復が第１のプリセット反復より大きいかどうかを判断する。
【１６１９】
ここで、カレント反復は、プロセッサによって現在実行されている反復演算を指する。オプションで、第１のプリセット反復はハイパーパラメータであり得、第１のプリセット反復は、量子化予定のデータのデータ変動曲線に従って確定され得、そして第１のプリセット反復はまた、ユーザー定義設定であり得る。オプションで、第１のプリセット反復は、１つのトレーニング周期（エポック）に含まれる反復の総数より少なくてもかまいません。１つのトレーニング周期は、データ集合内で量子化されるすべてのデータが１つの順方向演算と１つの逆方向演算を完了することを意味する。
【１６２０】
カレント反復が第１のプリセット反復以下である場合、プロセッサは操作Ｓ７１１を実行して、第１のプリセット反復間隔を目標反復間隔として設定し、第１のプリセット反復間隔によって調整することができる。量子化パラメータ。
【１６２１】
オプションで、プロセッサは、ユーザーによって入力された第１のプリセット反復間隔を読み取り、第１のプリセット反復間隔と第１のプリセット反復間隔との間の対応に従って、第１のプリセット反復間隔を確定することができる。オプションで、第１のプリセット反復間隔をハイパーパラメータにすることができ、第１のプリセット反復間隔をユーザーが設定することもできる。このとき、プロセッサは、ユーザーが入力した第１のプリセット反復と第１のプリセット反復間隔を直接読み取り、第１のプリセット反復間隔によってニューラルネットワーク演算の量子化パラメータを更新できる。本開示の実施形態では、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔を確定する必要はない。
【１６２２】
たとえば、ユーザーが入力した第１のプリセット反復が１００回目の反復で、第１のプリセット反復間隔が５の場合、カレント反復が１００回目の反復以下の場合、量子化パラメータは第１のプリセット反復間隔によって更新できる。つまり、プロセッサは、１番目の反復から１００回目の反復までのニューラルネットワークのトレーニングまたは微調整中に、量子化パラメータが５回の反復ごとに更新されることを確定できる。具体的には、プロセッサは、１番目の反復に対応するデータビット幅ｎ１および小数点位置ｓ１などの量子化パラメータを確定し、データビット幅ｎ１および小数点位置ｓ１を使用して、第１の反復から第５の反復までのデータを分析し得る。量子化予定のデータは量子化される。つまり、１番目の反復から５番目の反復まで同じ量子化パラメータを使用できる。その後、プロセッサは、６回目の反復に対応するデータビット幅ｎ２や小数点位置ｓ２などの量子化パラメータを確定し、６回目の反復から１０回目の反復までの待機時間にデータビット幅ｎ２や小数点位置ｓ２などの量子化パラメータを使用できる。量子化後のデータは量子化される。つまり、６番目の反復から１０番目の反復まで同じ量子化パラメータを使用できる。同様に、プロセッサは、１００回目の反復が完了するまで、上記の量子化方法に従うことができる。各反復間隔でのデータビット幅や小数点位置などの量子化パラメータを確定する方法は、上記の説明を参照することができ、ここでは繰り返さない。
【１６２３】
別の例として、ユーザーが入力した第１のプリセット反復が１００回目の反復であり、第１のプリセット反復間隔が１の場合、カレント反復が１００回目の反復以下の場合、量子化パラメータは第１のプリセット反復間隔によって更新できる。つまり、プロセッサは、ニューラルネットワークのトレーニングまたは微調整の１番目の反復から１００回目の反復までの各反復で量子化パラメータが更新されることを確定できる。具体的には、プロセッサは、１番目の反復に対応するデータビット幅ｎ１および小数点位置ｓ１などの量子化パラメータを確定し、データビット幅ｎ１および小数点位置ｓ１を使用して、１番目の反復で量子化予定のデータを量子化することができる。その後、プロセッサは、２回目の反復に対応するデータビット幅ｎ２や小数点位置ｓ２などの量子化パラメータを確定し、データビット幅ｎ２と小数点位置ｓ２を使用して、２回目の反復で量子化予定のデータを量子化する、……。同様に、プロセッサは、データビット幅ｎ１００や１００回目の反復の小数点位置ｓ１００などの量子化パラメータを確定し、データビット幅ｎ１００と小数点位置ｓ１００を使用して、１００回目の反復で量子化予定のデータを量子化できる。各反復間隔でのデータビット幅や小数点位置などの量子化パラメータを確定する方法は、上記の説明を参照することができ、ここでは繰り返さない。
【１６２４】
上記は、データビット幅と量子化パラメータの同期更新の一例にすぎない。他のオプションの実施形態では、各目標反復間隔において、プロセッサは、小数点位置の変動範囲によって、小数点位置の反復間隔を確定することもできる。および小数点位置の反復間隔によって、小数点位置などの量子化パラメータを更新する。
【１６２５】
オプションで、カレント反復が第１のプリセット反復よりも大きい場合、ニューラルネットワークのトレーニングまたは微調整が中期段階にあることを示すことができる。この時点で、履歴反復で量子化予定のデータのデータ変動範囲を取得し、量子化予定のデータのデータを取得できる。変動の範囲によって目標反復間隔が決まり、目標反復間隔は上記の第１のプリセット反復間隔よりも大きくなる可能性があるため、量子化パラメータの更新回数が減り、量子化効率と計算効率が向上する。具体的には、カレント反復が第１のプリセット反復よりも大きい場合、プロセッサは操作Ｓ７１３を実行して、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔によって量子化パラメータを調整することができる。
【１６２６】
上記の例を続けると、ユーザーが入力した第１のプリセット反復は１００回目の反復であり、第１のプリセット反復間隔は１である。カレント反復が１００回目の反復以下の場合、第１のプリセット反復間隔によって量子化を更新できる。パラメータ。つまり、プロセッサは、ニューラルネットワークのトレーニングまたは微調整の１番目の反復から１００回目の反復までの各反復で量子化パラメータが更新されることを確定でき、特定の実装は上記の説明を参照できる。カレント反復が１００回目の反復より大きい場合、プロセッサは、カレント反復で量子化予定のデータと前の履歴反復で量子化予定のデータ、および量子化予定のデータのデータ変動範囲によって、量子化予定のデータのデータ変動範囲を確定できる。目標反復間隔を確定する。具体的には、カレント反復が１００回目の反復より大きい場合、プロセッサは、カレント反復に対応するデータビット幅を適応的に調整し、カレント反復に対応する目標データビット幅を取得し、カレント反復に対応する目標データビット幅を変更できる。目標反復間隔のデータビット幅として、目標反復間隔の反復に対応するデータビット幅は一致している。同時に、プロセッサは、カレント反復に対応する目標データビット幅および量子化予定のデータによってカレント反復に対応する小数点位置を確定し、カレント反復に対応する小数点位置に従って第１の誤差を確定し得る。プロセッサはまた、カレント反復に対応して量子化予定のデータによって量子化誤差を確定し、量子化誤差に従って第２の誤差を確定することができる。その後、プロセッサは、第１の誤差および第２の誤差によって目標反復間隔を確定することができ、目標反復間隔は、前述の第１のプリセット反復間隔よりも大きくてもよい。さらに、プロセッサは、目標反復間隔における小数点位置またはスケーリング係数などの量子化パラメータを確定することができ、特定の確定方法は、上記の説明を参照することができる。
【１６２７】
たとえば、カレント反復が１００回目の反復である場合、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が３であると判断し、プロセッサは、目標反復間隔に３回の反復が含まれ、それぞれが１００回目の反復、１０１回目の反復、および１０２回目の反復であると判断できる。プロセッサはまた、１００回目の反復で量子化予定のデータによって量子化誤差を確定し、量子化誤差に従って１００回目の反復に対応する第２の誤差および目標データビット幅を確定し、目標反復間隔に対応するデータとして目標データビット幅を使用し得る。ビット幅。１００回目の反復、１０１回目の反復、および１０２回目の反復に対応するデータビット幅はすべて、１００回目の反復に対応する目標データビット幅である。プロセッサはまた、１００回目の反復で量子化予定のデータおよび１００回目の反復に対応する目標データビット幅によって、１００回目の反復に対応する小数点位置およびスケーリング係数などの量子化パラメータを確定し得る。その後、１００回目の反復に対応する量子化パラメータを使用して、１００回目の反復、１０１回目の反復、および１０２回目の反復を量子化する。
【１６２８】
さらに、図３−１９に示すように、上記の方法には次のものも含まれる。
【１６２９】
カレント反復が第１のプリセット反復よりも大きい場合、プロセッサはさらに操作Ｓ７１２を実行することができる。すなわち、プロセッサは、カレント反復が第２のプリセット反復よりも大きいかどうかをさらに確定することができる。ここで、第２のプリセット反復は第１のプリセット反復よりも大きく、第２のプリセット反復間隔は第１のプリセット反復間隔よりも大きくなる。オプションで、前述の第２のプリセット反復はハイパーパラメータであり、第２のプリセット反復は少なくとも１つのトレーニング周期の反復の総数より大きくてもよい。オプションで、第２のプリセット反復は、量子化予定のデータのデータ変動曲線に従って確定できる。オプションで、第２のプリセット反復もユーザーがカスタマイズできる。
【１６３０】
カレント反復が第２のプリセット反復以上である場合、プロセッサは操作Ｓ７１４を実行し、第２のプリセット反復間隔を目標反復間隔として使用し、第２のプリセット反復間隔によって第２のプリセット反復間隔を調整することができる。ニューラルネットワークの量子化プロセスのパラメータ。カレント反復が第１のプリセット反復よりも大きく、カレント反復が第２のプリセット反復よりも小さい場合、プロセッサは上記の操作Ｓ７１３を実行し、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、そして目標反復間隔は、量子化パラメータを調整する。
【１６３１】
オプションで、プロセッサは、ユーザーが設定した第２のプリセット反復を読み取り、第２のプリセット反復と第２のプリセット反復間隔（第２のプリセット反復）の間の対応関係に従って、第２のプリセット反復間隔を確定できる。間隔は、最初にプリセット反復間隔よりも大きくなっている。オプションで、ニューラルネットワークの収束度がプリセット条件を満たす場合、カレント反復が第２のプリセット反復以上であると判断される。例えば、カレント反復の順方向演算結果がプリセット基準値に近づくと、ニューラルネットワークの収束度がプリセット条件を満たしていると判断できる。このとき、カレント反復が２回目のプリセット反復以上であると判断できる。または、カレント反復に対応する損失値がプリセットしきい値以下の場合、ニューラルネットワークの収束度がプリセット条件を満たすと判断できる。
【１６３２】
任意選択で、前述の第２のプリセット反復間隔はハイパーパラメータであり得、第２のプリセット反復間隔は、少なくとも１つのトレーニング周期の反復の総数以上であり得る。オプションで、第２のプリセット反復間隔はユーザーがカスタマイズできる。プロセッサは、ユーザーが入力した第２のプリセット反復と第２のプリセット反復間隔を直接読み取り、第２のプリセット反復間隔によってニューラルネットワーク演算の量子化パラメータを更新できる。たとえば、第２のプリセット反復間隔は、１つのトレーニング周期の反復の総数に等しくなる場合がある。つまり、量子化パラメータは、トレーニング周期（エポック）ごとに１回更新される。
【１６３３】
さらに、上記の方法には以下も含まれる。
【１６３４】
カレント反復が第２のプリセット反復以上である場合、プロセッサは、各検査反復で現在のデータビット幅を調整する必要があるかどうかを判断することもできる。現在のデータビット幅を調整する必要がある場合、プロセッサは上記の操作Ｓ７１４から操作Ｓ７１３に切り替えてデータビット幅を再確定し、データビット幅が量子化予定のデータの要件を満たすことができるようにすることができる。
【１６３５】
具体的には、プロセッサは、前述の第２の誤差によってデータビット幅を調整する必要があるかどうかを確定することができる。プロセッサはまた、前述の操作Ｓ７１５を実行して、第２の誤差がプリセット誤差値より大きいかどうかを確定し得、カレント反復が第２のプリセット反復以上であり、第２の誤差がプリセット誤差値より大きい場合、スイッチして操作を実行する。Ｓ７１３：量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、反復間隔によってデータビット幅を再確定する。カレント反復が第２のプリセット反復以上であり、第２の誤差がプリセット誤差値以下の場合、操作Ｓ７１４の実行を続行し、第２のプリセット反復間隔を目標反復間隔として使用し、プリセット反復間隔によって、ニューラルネットワークの量子化プロセスのパラメータを調整する。ここで、プリセット誤差値は、量子化誤差に対応するプリセットしきい値に従って確定される場合がある．第２の誤差がプリセット誤差値よりも大きい場合は、データビット幅をさらに調整する必要がある可能性がある。プロセッサは、量子化予定のデータに基づいている場合がある。のデータ変動範囲が反復間隔を確定し、反復間隔によってデータビット幅を再確定する。
【１６３６】
たとえば、２番目にプリセット反復間隔は、１つのトレーニング周期の反復の総数である。カレント反復が第２のプリセット反復以上の場合、プロセッサは第２のプリセット反復間隔によって量子化パラメータを更新できる。つまり、トレーニング周期（エポック）ごとに１回量子化パラメータを更新する。このとき、各トレーニング周期の１番目の反復は検査反復と見なされる。各トレーニング周期の１番目の反復で、プロセッサは検査反復で量子化予定のデータによって量子化誤差を確定し、量子化誤差に従って第２の誤差を確定できる。そして、次の式に従って、第２の誤差がプリセット誤差値より大きいかどうかを判別する。
【数２７】
2021530769.tif 000030
【１６３７】
ここで、ｄｉｆｆｕｐｄａｔｅ２は第２の誤差を表し、ｄｉｆｆｂｉｔは量子化誤差を表し、θはハイパーパラメータを表し、Ｔはプリセット誤差値を表す。オプションで、プリセット誤差値は、第１のプリセットしきい値をハイパーパラメータで割った値に等しくなる。もちろん、プリセット誤差値もハイパーパラメータである可能性がある。たとえば、プリセット誤差値は次の式に従って計算できる。Ｔ＝ｔｈ／１０、ここでｔｈは第１のプリセットしきい値を表し、ハイパーパラメータの値は１０である。
【１６３８】
第２の誤差ｄｉｆｆｕｐｄａｔｅ２がプリセット誤差値Ｔより大きい場合は、データビット幅がプリセット要件を満たしていない可能性があることを意味する。この時点で、第２のプリセット反復間隔は量子化パラメータの更新に使用できなくなり、プロセッサは量子化予定のデータを追跡する可能性がある。変動範囲によって、データビット幅がプリセット要件を確実に満たすように、目標反復間隔が決まる。つまり、第２の誤差ｄｉｆｆｕｐｄａｔｅ２がプリセット誤差値Ｔより大きい場合、プロセッサは前述の操作Ｓ７１４から前述の操作Ｓ７１３に切り替わる。
【１６３９】
もちろん、他の実施形態では、プロセッサは、前述の量子化誤差に従ってデータビット幅を調整する必要があるかどうかを確定することができる。たとえば、２番目にプリセット反復間隔は、１つのトレーニング周期の反復の総数である。カレント反復が第２のプリセット反復以上の場合、プロセッサは第２のプリセット反復間隔によって量子化パラメータを更新できる。つまり、トレーニング周期（エポック）ごとに１回量子化パラメータを更新する。ここで、各トレーニングサイクルの１番目の反復が検査反復として使用される。各トレーニングサイクルの１番目の反復で、プロセッサは検査反復で量子化予定のデータによって量子化誤差を確定できる。量子化誤差が第１のプリセットしきい値以上の場合、データビット幅がプリセットしきい値を満たさない可能性がある。プロセッサが上記の動作Ｓ７１４から上記の動作Ｓ７１３に切り替わると想定される。
【１６４０】
オプションの実施形態では、小数点位置、スケーリング係数、およびオフセットなどの前述の量子化パラメータを表示装置に表示することができる。このとき、ユーザーはディスプレイ装置を介してニューラルネットワーク演算プロセスの量子化パラメータを学習でき、プロセッサーによって確定された量子化パラメータを適応的に変更することもできる。同様に、前述のデータビット幅と目標反復間隔も表示装置で表示できる。このとき、ユーザーはディスプレイ装置を介してニューラルネットワーク演算プロセスの目標反復間隔やデータビット幅などのパラメータを学習でき、プロセッサーによって確定された目標反復間隔やデータビット幅を適応的に変更することもできる。
【１６４１】
前述の方法の実施形態について、簡単な説明のために、それらはすべて一連の作用の組み合わせとして表されるが、当技術分野の当業者は、本開示が記載された一連の作用によって限定されないことを理解すべきであることに留意されたい。この開示によれば、特定のステップは、他の順序でまたは同時に実行することができるからである。第二に、当技術分野の当業者はまた、本明細書に記載の実施形態が任意の実施形態であり、関連するアクションおよびモジュールが本開示によって必ずしも必要とされないことを認識すべきである。
【１６４２】
本開示の一実施形態はまた、ニューラルネットワークの量子化パラメータ調整装置２００を提供する。量子化パラメータ調整装置２００は、プロセッサに設置され得る。例えば、量子化パラメータ調整装置２００は、汎用プロセッサに配置することができ、別の例では、量子化パラメータ調整装置を、人工知能プロセッサに配置することもできる。図３−２０に示すように、装置２００には次のものが含まれる。
【１６４３】
取得モジュール２１０は、量子化予定のデータのデータ変動範囲を取得するためである。
【１６４４】
反復間隔確定モジュール２２０は、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定するように構成され、目標反復間隔によってニューラルネットワーク動作における量子化パラメータを調整する。少なくとも１回の反復では、ニューラルネットワークの量子化パラメータを使用して、ニューラルネットワーク演算で量子化予定のデータに量子化操作を実装する。
【１６４５】
オプションで、量子化パラメータにはドット位置が含まれ、ドット位置は、量子化予定のデータに対応する量子化データ内の小数点位置である。図３−２１に示すように、装置にはさらに次のものが含まれる。
【１６４６】
量子化パラメータ確定モジュール２３０は、ニューラルネットワーク動作を調整するために、カレント検査反復に対応する目標データビット幅およびカレント検査反復で量子化予定のデータによって、目標反復間隔における反復に対応する小数点位置を確定するように構成される。  
【１６４７】
小数点位置；
ここで、目標反復間隔の反復に対応する小数点位置は一致している。
【１６４８】
任意選択で、量子化パラメータは、量子化予定のデータに対応する量子化データ内の小数点位置である小数点位置を含む；図３−２３または図３−２４に示されるように、装置はさらに以下を含む。
【１６４９】
データビット幅確定モジュール２４０は、カレント検査反復に対応する目標データビット幅によって、目標反復間隔に対応するデータビット幅を確定するように構成される。ここで、目標反復間隔の反復に対応するデータビット幅は一致している。
【１６５０】
量子化パラメータ確定モジュール２３０は、取得された小数点位置反復間隔および目標反復間隔に対応するデータビット幅によって、目標反復間隔における反復に対応する小数点位置を調整して、ニューラルネットワーク動作における点を調整するように構成される。ポジション；
ここで、小数点位置反復間隔には少なくとも１つの反復が含まれ、小数点位置反復間隔内の反復小数点位置は一致している。
【１６５１】
オプションで、小数点位置の反復間隔は、目標反復間隔以下である。
【１６５２】
オプションで、量子化パラメータにはさらにスケーリング係数が含まれ、スケーリング係数は小数点位置と同期して更新される。
【１６５３】
オプションで、量子化パラメータにはさらにオフセットが含まれ、オフセットは小数点位置と同期して更新される。
任意選択で、図３ー２４に示されるように、データビット幅確定モジュール２４０は、以下を含む。
【１６５４】
量子化誤差確定ユニット２４１は、カレント検査反復の量子化データおよびカレント検査反復の量子化データに従って量子化誤差を確定するように構成される。ここで、カレント検査反復の量子化データは、カレント検査反復に対するものである。量子化予定のデータは、量子化によって取得される。
【１６５５】
データビット幅確定ユニット２４２は、量子化誤差に従って、カレント検査反復に対応する目標データビット幅を確定するように構成される。
【１６５６】
オプションとして、データビット幅確定ユニット２４２は、量子化誤差に従って、カレント検査反復に対応する目標データビット幅を確定するように構成される。
【１６５７】
量子化誤差が第１のプリセットしきい値以上の場合は、カレント検査反復に対応するデータビット幅を増やして、カレント検査反復に対応する目標データビット幅を取得する。または、
量子化誤差が第２のプリセットしきい値以下の場合、カレント検査反復に対応するデータビット幅が縮小され、カレント検査反復に対応する目標データビット幅が取得される。
【１６５８】
任意選択で、データビット幅確定ユニット２４２は、量子化誤差が第１のプリセットしきい値以上である場合、カレント検査反復に対応するデータビット幅を増加させて、カレント検査反復に対応するデータを取得するように構成される。目標データのビット幅は、特に次の目的で使用される。
【１６５９】
量子化誤差が第１のプリセットしきい値以上の場合、第１のプリセットビット幅のステップ長さによって第１の中間データビット幅を確定する。
【１６６０】
戻って、カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに従って、量子化誤差が第１のプリセットしきい値より小さくなるまで、量子化誤差を確定する。ここで、カレント検査反復の量子化データは第１の中間データのビット幅に応じて、カレント検査反復で量子化予定のデータが量子化され、取得される。
【１６６１】
任意選択で、データビット幅確定ユニット２４２は、量子化誤差が第２のプリセットしきい値以下である場合、カレント検査反復に対応するデータビット幅を減少させて、対応するカレント検査反復を取得するように構成される。の目標データビット幅が特に次の目的で使用される場合：
量子化誤差が第２のプリセットしきい値以下の場合、第２のプリセットビット幅のステップ長さによって第２の中間データビット幅を確定する。
【１６６２】
カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに基づいて、量子化誤差が第２のプリセットしきい値より大きくなるまで、量子化誤差を確定するために戻る。ここで、カレント検査反復の量子化データは第２の中間データのビット幅に応じて、カレント検査反復で量子化予定のデータは、量子化によって取得される。
【１６６３】
オプションで、取得モジュール２１０は、以下を含む。
【１６６４】
第１の取得モジュール２１１は、小数点位置の変動範囲を取得するように構成され、小数点位置の変動範囲を使用して、量子化予定のデータのデータ変動範囲を表すことができ、小数点位置の変動範囲は、小数点位置の変動範囲と同じである。データの変化の大きさは正の相関がある。
【１６６５】
任意選択で、図３−２３または図３−２４に示されるように、第１の取得モジュール２１１は、以下を含む。
【１６６６】
第１の平均値確定ユニット２１１０は、カレント検査反復前の一つ前の検査反復に対応する小数点位置および前の検査反復前の履歴反復に対応する小数点位置に従って第１の平均値を確定するように構成される。一つ前の検査反復は、目標反復間隔前の一つ前の反復間隔に対応する検査反復である。
【１６６７】
第２の平均値確定ユニット２１１１は、カレント検査反復に対応する小数点位置およびカレント検査反復前の履歴反復の小数点位置に従って第２の平均値を確定するように構成される；ここで、カレント検査反復に対応する小数点位置は、に基づく。カレント検査反復に対応する目標データビット幅と量子化予定のデータが確定される。
【１６６８】
第１の誤差確定ユニット２１１２は、第１の平均値および第２の平均値に従って第１の誤差を確定するように構成され、第１の誤差は、小数点位置の変動範囲を表すためである。
【１６６９】
オプションとして、第２の平均値確定ユニット２１１１は、特に以下のように構成される。
【１６７０】
中間スライディング平均値のプリセット数を取得する。ここで、中間スライディング平均値のそれぞれは、カレント検査反復の前の検査反復のプリセット数に従って確定される。
【１６７１】
第２の平均値は、カレント検査反復の小数点位置と、プリセット中間スライド平均値の数に従って確定される。
【１６７２】
任意選択で、第２の平均値確定ユニット２１１１は、カレント検査反復に対応する小数点位置および第１の平均値に従って第２の平均値を確定するように特別に構成される。
【１６７３】
任意選択で、第２の平均値確定ユニット２１１１は、カレント検査反復の取得されたデータビット幅調整値に従って第２の平均値を更新するようにさらに構成される。
【１６７４】
ここで、カレント検査反復のデータビット幅調整値は、カレント検査反復の目標データビット幅および初期データビット幅によって確定される。
【１６７５】
任意選択で、第２の平均値確定ユニット２１１１は、カレント検査反復の取得されたデータビット幅調整値に従って、特に以下に第２の平均値を更新するように構成される。
【１６７６】
カレント検査反復のデータビット幅調整値がプリセットパラメータよりも大きい場合、第２の平均値は、カレント検査反復のデータビット幅調整値に従って減少する。
【１６７７】
カレント検査反復のデータビット幅調整値がプリセットパラメータよりも小さい場合、第２の平均値は、カレント検査反復のデータビット幅調整値に従って増やす。
【１６７８】
任意選択で、反復間隔確定モジュール２２０は、第１の誤差によって目標反復間隔を確定するように構成され、目標反復間隔は、第１の誤差と負の相関がある。
【１６７９】
オプションとして、取得モジュール２１０はさらに以下を含む。
【１６８０】
第２の取得モジュール２１２は、データビット幅の変化傾向を取得するように構成される；小数点位置の変動範囲およびデータビット幅の変化傾向によって、量子化予定のデータのデータ変動範囲を確定する。
【１６８１】
任意選択で、反復間隔確定モジュール２２０は、取得された第１の誤差および第２の誤差によって目標反復間隔を確定するように構成される；ここで、第１の誤差は、小数点位置の変化の範囲を表すために使用され、第２の誤差は、データビット幅の変化傾向を特徴づけるためである。
【１６８２】
オプションとして、ルート反復間隔確定モジュール２２０は、特に以下について、取得された第１の誤差および第２の誤差によって目標反復間隔を確定するように構成される。
【１６８３】
第１の誤差と第２の誤差の最大値を目標誤差とする。
【１６８４】
目標反復間隔は、目標誤差によって確定される。ここで、目標誤差は、目標反復間隔と負の相関がある。
【１６８５】
任意選択で、第２の誤差は、量子化誤差によって確定される；ここで、量子化誤差は、カレント検査反復で量子化予定のデータおよびカレント検査反復の量子化データによって確定され、第２の誤差は、量子化誤差とは異なる。誤差は正の相関がある。
【１６８６】
オプションで、装置は、ニューラルネットワークのトレーニングまたは微調整を実装するためである。反復間隔確定モジュール２２０は、以下の目的にも使用される。
【１６８７】
カレント反復が第１のプリセット反復よりも大きい場合、目標反復間隔は、量子化予定のデータのデータ変動範囲によって確定され、量子化パラメータは、目標反復間隔によって調整される。
【１６８８】
オプションで、反復間隔確定モジュール２２０は、以下のようにさらに構成される：カレント反復が第１のプリセット反復以下である場合、第１のプリセット反復間隔を目標反復間隔として使用し、に従って計算を実行する。第１のプリセット反復間隔で量子化パラメータを調整する。
【１６８９】
オプションで、反復間隔確定モジュール２２０はさらに以下のように構成される。
【１６９０】
カレント反復が第２のプリセット反復以上の場合、第２のプリセット反復間隔を目標反復間隔として使用し、第２のプリセット反復間隔によって量子化パラメータを調整する。
【１６９１】
ここで、ニューラルネットワークの収束の程度がプリセット条件を満たす場合、カレント検査反復が第２のプリセット反復以上であると判断される。
【１６９２】
第２のプリセット反復は第１のプリセット反復よりも大きく、第２のプリセット反復間隔は第１のプリセット反復間隔よりも大きくなっている。
【１６９３】
オプションで、反復間隔確定モジュール２２０は、以下のようにさらに構成される：カレント反復が第２のプリセット反復以上であり、第２の誤差がプリセット誤差値より大きい場合、量子化予定のデータのデータに従って変化する。振幅は反復間隔を確定し、反復間隔によってデータビット幅を再確定する。
【１６９４】
本開示の実施形態の各モジュールまたはユニットの動作原理は、基本的に、前述の方法における各操作の実施プロセスと同じであることは明らかである。詳細については、ここでは繰り返さない上記の説明を参照されたい。前述の装置の実施形態は例示にすぎず、本開示の装置は他の方法でも実施できることを理解されたい。例えば、上記の実施形態におけるユニット／モジュールの分割は、論理的機能分割にすぎず、実際の実施において他の分割方法があり得る。たとえば、複数のユニット、モジュール、またはコンポーネントを組み合わせたり、別のシステムに統合したり、一部の機能を省略したり、実装しなかったりする場合がある。上記の統合ユニット／モジュールは、ハードウェアまたはソフトウェアプログラムモジュールの形式で実装できる。統合ユニット／モジュールがハードウェアの形で実装されている場合、ハードウェアはデジタル回路、アナログ回路などである可能性がある。ハードウェア構造の物理的な実現には、トランジスタ、メモリスタなどが含まれるが、これらに限定されない。
【１６９５】
統合されたユニット／モジュールがソフトウェアプログラムモジュールの形式で実装され、独立した製品として販売または使用される場合、コンピュータで読み取り可能なメモリに格納できる。この理解に基づいて、本開示の技術案は、本質的に、または既存の技術に寄与する部分、または技術案の全部または一部をソフトウェア製品の形で具体化することができ、コンピュータソフトウェア製品はメモリに格納され、これは、コンピュータ装置（パーソナルコンピュータ、サーバ、またはネットワーク装置などであり得る）に、本開示の様々な実施形態に記載された方法のステップの全部または一部を実行させるためのいくつかの命令を含む。前述のメモリには、Ｕディスク、読み取り専用メモリ（ＲＯＭ、読み取り専用メモリ）、ランダムアクセスメモリ（ＲＡＭ、ランダムアクセスメモリ）、モバイルハードディスク、磁気ディスク、または光ディスク、およびプログラムコードを格納できるその他のメディアが含まれる。
【１６９６】
一実施形態では、本開示はまた、コンピュータプログラムが格納されるコンピュータ可読記憶媒体を提供する。コンピュータプログラムがプロセッサまたは装置によって実行される場合、上記の実施形態のいずれかと同様の方法が実施される。具体的には、コンピュータプログラムがプロセッサまたは装置によって実行される場合、次のメソッドが実装される。
量子化予定のデータのデータ変動範囲を取得する。
【１６９７】
量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔に少なくとも１回の反復を含むニューラルネットワーク操作の量子化パラメータと、ニューラルネットワークを調整する。量子化パラメータは、ニューラルネットワーク演算で量子化予定のデータに量子化操作を実装するためである。
【１６９８】
本開示の実施形態における各操作の実施は、基本的に、前述の方法における各操作の実施プロセスと同じであることは明らかである。詳細については、上記の説明を参照し、ここでは繰り返さない。
【１６９９】
上記の実施形態では、各実施形態の説明は、それ自体の強調を有する。一実施形態で詳細に説明されていない部分については、他の実施形態の関連する説明を参照することができる。上記の実施形態の技術的特徴は任意に組み合わせることができる。説明を簡潔にするために、上記の実施形態における技術的特徴のすべての可能な組み合わせは記載されていないが、これらの技術的特徴の組み合わせに矛盾がない限り、それらはすべきである。この明細書で説明されている範囲と見なされる。
【１７００】
可能な実施方法において、前述の量子化パラメータ調整装置を含む人工知能チップも開示される。
【１７０１】
可能な実施方法において、記憶装置、インターフェース装置、制御装置、および上記の人工知能チップを含むボードカードも開示され、ここで、人工知能チップと記憶装置および制御装置は、そして、インターフェース装置はそれぞれ接続されている；記憶装置はデータを格納するためである；インターフェース装置は人工知能チップと外部装置の間のデータ伝送を実現するためである；制御装置は人工知能チップの状態を監視する。
【１７０２】
図３−２５は、本開示の一実施形態によるボードカードのブロック図を示す。図３−２５を参照すると、ボードカードは、上記のチップ３８９に加えて他の支持構成要素を含み得る。支持構成要素は、記憶装置３９０、インターフェース装置３９１および制御装置３９２を含むが、これらに限定されない。
【１７０３】
記憶装置３９０は、データを記憶するためのバスを介して人工知能チップに接続されている。記憶装置は、記憶ユニット３９３の複数のグループを含み得る。記憶ユニットと人工知能チップの各グループは、バスを介して接続されている。記憶ユニットの各グループはＤＤＲＳＤＲＡＭ（英語：Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  ＳＤＲＡＭ、ダブルレート同期動的ランダムアクセスメモリ）である可能性があることが理解できる。
【１７０４】
ＤＤＲは、クロック周波数を上げることなく、ＳＤＲＡＭの速度を２倍にすることができる。ＤＤＲを使用すると、クロックパルスの立ち上がりエッジと立ち下がりエッジでデータを読み取ることができる。ＤＤＲの速度は標準のＳＤＲＡＭの２倍である。一実施形態では、貯蔵装置は、貯蔵ユニットの４つのグループを含み得る。記憶ユニットの各グループには、複数のＤＤＲ４粒子（チップ）を含めることができる。一実施形態では、人工知能チップは、４つの７２ビットＤＤＲ４コントローラを含み得る。７２ビットＤＤＲ４コントローラでは、６４ビットがデータ伝送に使用され、８ビットがＥＣＣ検証に使用される。記憶ユニットの各グループでＤＤＲ４−３２００粒子を使用すると、データ伝送の理論上の帯域幅が２５６００ＭＢ／秒に達する可能性があることが理解できる。
【１７０５】
一実施形態では、記憶ユニットの各グループは、並列に配置された複数のダブルレート同期動的ランダムアクセスメモリを含む。ＤＤＲは、１クロックサイクルで２回データを送信できる。各記憶ユニットのデータ伝送とデータストレージを制御するために、ＤＤＲを制御するためのコントローラがチップに提供されている。
【１７０６】
インターフェース装置は、人工知能チップに電気的に接続されている。インターフェイス装置は、人工知能チップと外部装置（サーバーやコンピュータなど）との間のデータ伝送を実装するためである。例えば、一実施形態では、インターフェース装置は、標準のＰＣＩＥインターフェースであり得る。たとえば、処理されるデータは、データ伝送を実現するために、標準のＰＣＩＥインターフェイスを介してサーバーからチップに伝送される。送信にＰＣＩＥ３．０Ｘ１６インターフェイスを使用する場合、理論上の帯域幅は１６０００ＭＢ／ｓに達することが好ましい。別の実施形態において、インターフェース装置はまた、他のインターフェースであり得る。本開示は、インターフェースユニットがスイッチング機能を実現できる限り、上記の他のインターフェースの特定の症状を限定しない。さらに、人工知能チップの計算結果は、インターフェース装置によって外部装置（サーバーなど）に送信される。
【１７０７】
制御装置は人工知能チップに電気的に接続されている。制御装置は、人工知能チップの状態を監視するためである。具体的には、人工知能チップと制御装置は、ＳＰＩインターフェースを介して電気的に接続され得る。制御装置は、シングルチップマイクロコンピュータ（マイクロコントローラユニット、ＭＣＵ）を含み得る。たとえば、人工知能チップは、複数の処理チップ、複数の処理コア、または複数の処理回路を含み得、複数の負荷を駆動することができる。したがって、人工知能チップは、複数の負荷や軽負荷など、さまざまな動作状態になる可能性がある。制御装置は、人工知能チップ内の複数の処理チップ、複数の処理および／または複数の処理回路の動作状態の調整および制御を実現することができる。
【１７０８】
可能な実施方法において、前述の人工知能チップを含む電子装置が開示される。電子機器には、データ処理装置、ロボット、コンピュータ、プリンター、スキャナー、タブレット、スマート端末、携帯電話、ドライビングレコーダー、ナビゲーター、センサー、カメラ、サーバー、クラウドサーバー、カメラ、カメラ、プロジェクター、時計、ヘッドセットが含まれる、モバイルストレージ、ウェアラブル装置、車両、家電製品、および／または医療機器。
【１７０９】
輸送手段には飛行機、船および／または車両が含まれ、家庭用電化製品にはテレビ、エアコン、電子レンジオーブン、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスストーブ、レンジフードが含まれる。医療機器には核磁気共鳴、Ｂ−超音波および／または心電計が含まれる。
【１７１０】
この開示の内容は、以下の用語に従ってよりよく理解することができる。
【１７１１】
Ｃ１、ニューラルネットワークの量子化パラメータの調整方法。この方法は以下を含む。
【１７１２】
量子化予定のデータのデータ変動範囲を取得する。
【１７１３】
量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔に少なくとも１回の反復を含むニューラルネットワーク操作の量子化パラメータと、ニューラルネットワークを調整する。量子化パラメータは、ニューラルネットワーク演算で量子化予定のデータに量子化操作を実装するためである。
【１７１４】
Ｃ２、量子化パラメータが小数点位置を含み、小数点位置が、量子化予定のデータに対応する量子化データ内の小数点位置である、条項Ｃ１に記載の方法；この方法は、以下をさらに含む。
【１７１５】
カレント検査反復に対応する目標データビット幅と、カレント検査反復で量子化予定のデータによって、目標反復間隔の反復に対応する小数点位置を確定し、ニューラルネットワーク演算の小数点位置を調整する。
【１７１６】
ここで、目標反復間隔の反復に対応する小数点位置は一致している。
【１７１７】
Ｃ３、量子化パラメータが小数点位置を含み、小数点位置が、量子化予定のデータに対応する量子化データ内の小数点位置である、条項Ｃ１に記載の方法；この方法は、以下をさらに含む。
【１７１８】
カレント検査反復に対応する目標データビット幅によって、目標反復間隔に対応するデータビット幅を確定する。ここで、目標反復間隔の反復に対応するデータビット幅は一致している。
【１７１９】
取得した小数点位置反復間隔および目標反復間隔に対応するデータビット幅によって、目標反復間隔の反復に対応する小数点位置を調整して、ニューラルネットワーク演算の小数点位置を調整する。
【１７２０】
ここで、小数点位置反復間隔には少なくとも１つの反復が含まれ、小数点位置反復間隔内の反復小数点位置は一致している。
【１７２１】
Ｃ４、小数点位置の反復間隔が目標反復間隔以下である、Ｃ２項またはＣ３項に記載の方法。
【１７２２】
Ｃ５、量子化パラメータがさらにスケーリング係数を含み、スケーリング係数が小数点位置と同期して更新される、条項Ｃ１〜Ｃ４のいずれか１つに記載の方法。
【１７２３】
Ｃ６、量子化パラメータがさらにオフセットを含み、オフセットが小数点位置と同期して更新される、条項Ｃ１〜Ｃ５のいずれか１つに記載の方法。
【１７２４】
Ｃ７、条項Ｃ１〜Ｃ６のいずれか１つに記載の方法であって、以下をさらに含む方法。
【１７２５】
カレント検査反復の量子化データおよびカレント検査反復の量子化データに従って量子化誤差を確定する。ここで、カレント検査反復の量子化データは、カレント検査反復の量子化データを量子化することによって得られる。
【１７２６】
量子化誤差に応じて、カレント検査反復に対応する目標データビット幅が確定される。
【１７２７】
Ｃ８、量子化誤差に従ってカレント検査反復に対応する目標データビット幅を確定することは、以下を含む、条項Ｃ１〜Ｃ７に記載の方法。
【１７２８】
量子化誤差が第１のプリセットしきい値以上の場合は、カレント検査反復に対応するデータビット幅を増やして、カレント検査反復に対応する目標データビット幅を取得する。または、
量子化誤差が第２のプリセットしきい値以下の場合、カレント検査反復に対応するデータビット幅が縮小され、カレント検査反復に対応する目標データビット幅が取得される。
【１７２９】
Ｃ９、Ｃ８項の方法によれば、量子化誤差が第１のプリセットしきい値以上の場合、カレント検査反復に対応するデータビット幅を増やして、カレント検査反復に対応する目標データビット幅を取得する。
【１７３０】
量子化誤差が第１のプリセットしきい値以上の場合、第１のプリセットビット幅のステップ長さによって第１の中間データビット幅を確定する。
【１７３１】
戻って、カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに従って、量子化誤差が第１のプリセットしきい値より小さくなるまで、量子化誤差を確定する。ここで、カレント検査反復の量子化データは第１の中間データのビット幅に応じて、カレント検査反復で量子化予定のデータが量子化され、取得される。
【１７３２】
Ｃ１０、量子化誤差が第２のプリセットしきい値以下である場合、カレント検査反復に対応するデータビット幅を減少させることを含む、条項Ｃ８による方法。
【１７３３】
量子化誤差が第２のプリセットしきい値以下の場合、第２のプリセットビット幅のステップ長さによって第２の中間データビット幅を確定する。
【１７３４】
カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに基づいて、量子化誤差が第２のプリセットしきい値より大きくなるまで、量子化誤差を確定するために戻る。ここで、カレント検査反復の量子化データは第２の中間データのビット幅に応じて、カレント検査反復で量子化予定のデータは、量子化によって取得される。
【１７３５】
Ｃ１１、量子化予定のデータのデータ変動範囲を取得することは、以下を含む、条項Ｃ１〜Ｃ１０のいずれか１つに記載の方法。
【１７３６】
小数点位置の変動範囲を取得する。ここで、小数点位置の変動範囲を使用して、量子化予定のデータのデータ変動範囲を表すことができ、小数点位置の変動範囲は、量子化予定のデータのデータ変動範囲と正の相関がある。
【１７３７】
Ｃ１２、Ｃ１〜Ｃ１１項に記載されている方法によると、取得小数点位置変動範囲には次のものが含まれる。
【１７３８】
カレント検査反復前の一つ前の検査反復に対応する小数点位置と、一つ前の検査反復前の履歴反復に対応する小数点位置によって第１の平均値を確定する。ここで、前の検査反復は目標反復間隔である。前の反復間隔に対応する検査反復。
【１７３９】
カレント検査反復に対応する小数点位置とカレント検査反復前の履歴反復の小数点位置によって第２の平均値を確定する。ここで、カレント検査反復に対応する小数点位置は、カレント検査反復に対応する目標データに基づいている。量子化するビット幅とデータが確定される。
【１７４０】
第１の誤差は、第１の平均値および第２の平均値に従って確定され、第１の誤差は、小数点位置の変動範囲を表すためである。
【１７４１】
Ｃ１３、カレント検査反復に対応する小数点位置およびカレント検査反復前の履歴反復の小数点位置に従って第２の平均値を確定することは、以下を含む、条項Ｃ１２による方法。
【１７４２】
中間スライディング平均値のプリセット数を取得する。ここで、中間スライディング平均値のそれぞれは、カレント検査反復の前の検査反復のプリセット数に従って確定される。
【１７４３】
第２の平均値は、カレント検査反復の小数点位置と、プリセット中間スライド平均値の数に従って確定される。
【１７４４】
Ｃ１４、カレント検査反復に対応する小数点位置およびカレント検査反復前の履歴反復の小数点位置に従って第２の平均値を確定する、条項Ｃ１２に記載の方法には、以下が含まれる。
【１７４５】
第２の平均値は、カレント検査反復に対応する小数点位置と第１の平均値に従って確定される。
【１７４６】
Ｃ１５、条項Ｃ１２による方法であって、以下をさらに含む方法。
【１７４７】
第２の平均値は、カレント検査反復の取得データビット幅調整値に従って更新される。カレント検査反復のデータビット幅調整値は、カレント検査反復の目標データビット幅と初期データビットに基づいて確認される。
【１７４８】
Ｃ１６、カレント検査反復の取得されたデータビット幅調整値に従って第２の平均値を更新する、条項Ｃ１５に記載の方法は、以下を含む。
【１７４９】
カレント検査反復のデータビット幅調整値がプリセットパラメータよりも大きい場合、第２の平均値は、カレント検査反復のデータビット幅調整値に従って減少する。
【１７５０】
カレント検査反復のデータビット幅調整値がプリセットパラメータよりも小さい場合、第２の平均値は、カレント検査反復のデータビット幅調整値に従って増やす。
【１７５１】
Ｃ１７、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定することは、以下を含む、条項Ｃ１２に記載の方法。
【１７５２】
目標反復間隔は第１の誤差によって確定され、目標反復間隔は第１の誤差と負の相関がある。
【１７５３】
Ｃ１８、量子化予定のデータのデータ変動範囲を取得する、条項Ｃ１１〜Ｃ１７のいずれか１つによる方法は、さらに以下を含む。
【１７５４】
データビット幅の変化傾向を取得する。
【１７５５】
小数点位置の変動範囲とデータビット幅の変化傾向によって、量子化予定のデータのデータ変動範囲を確定する。
【１７５６】
Ｃ１９、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定する、条項Ｃ１８による方法は、さらに以下を含む。
【１７５７】
取得した第１誤差と第２誤差に応じて、目標反復間隔を確定する。ここで、第１誤差は小数点位置の変動範囲を表すために使用され、第２誤差はデータビット幅の変化傾向を表すためである。
【１７５８】
Ｃ２０、取得された第２の誤差および第１の誤差によって目標反復間隔を確定することは、以下を含む、条項Ｃ１９に記載の方法。
【１７５９】
第１の誤差と第２の誤差の最大値を目標誤差とする。
【１７６０】
目標反復間隔は、目標誤差によって確定される。ここで、目標誤差は、目標反復間隔と負の相関がある。
【１７６１】
Ｃ２１、第２の誤差が量子化誤差によって確定される、条項Ｃ１９またはＣ２０に記載の方法。
【１７６２】
量子化誤差は、カレント検査反復で量子化予定のデータとカレント検査反復の量子化後のデータによって確定され、第２の誤差は量子化誤差と正の相関がある。
【１７６３】
Ｃ２２、ニューラルネットワークのトレーニングまたは微調整に使用される、Ｃ１〜Ｃ２１項のいずれか１つに基づく方法。この方法には、以下が含まれる。
【１７６４】
カレント反復が第１のプリセット反復よりも大きい場合、目標反復間隔は、量子化予定のデータのデータ変動範囲によって確定され、量子化パラメータは、目標反復間隔によって調整される。
【１７６５】
Ｃ２３、Ｃ２２項に基づく方法であり、以下をさらに含む方法。
【１７６６】
カレント反復が第１のプリセット反復以下の場合、第１のプリセット反復間隔が目標反復間隔として採用され、量子化パラメータは第１のプリセット反復間隔によって調整される。
【１７６７】
Ｃ２４、条項Ｃ２２またはＣ２３に基づく方法であり、以下をさらに含む方法。
【１７６８】
カレント反復が第２のプリセット反復以上の場合、第２のプリセット反復間隔を目標反復間隔として使用し、第２のプリセット反復間隔によって量子化パラメータを調整する。
【１７６９】
ここで、第２のプリセット反復は第１のプリセット反復よりも大きく、第２のプリセット反復間隔は第１のプリセット反復間隔よりも大きくなる。
【１７７０】
Ｃ２５、Ｃ２４項に基づく方法で、さらに以下を含む。
【１７７１】
ニューラルネットワークの収束度がプリセット条件を満たす場合、カレント検査反復が第２のプリセット反復以上であると判断される。
【１７７２】
Ｃ２６、Ｃ２４項に基づく方法で、さらに以下を含む。
【１７７３】
カレント反復が第２のプリセット反復以上であり、第２の誤差がプリセット誤差値より大きい場合、反復間隔は、量子化予定のデータのデータ変動範囲によって確定され、反復間隔によって反復間隔が再確定される。データビット幅。
【１７７４】
Ｃ２７、量子化予定のデータが、ニューロンデータ、重みデータ、または勾配データのうちの少なくとも１つである、条項Ｃ１〜Ｃ２６のいずれか１つに記載の方法。
【１７７５】
Ｃ２８、メモリとプロセッサを備えたニューラルネットワークの量子化パラメータ調整装置。メモリはコンピュータプログラムを格納し、プロセッサがコンピュータプログラムを実行すると、Ｃ１〜Ｃ２７項のいずれかに記載の方法が実行される。のステップ。
【１７７６】
Ｃ２９、コンピュータプログラムが格納され、コンピュータプログラムが実行されると、Ｃ１〜Ｃ２７項のいずれかに記載されている方法のステップを実装するコンピュータ可読記憶媒体。
【１７７７】
Ｃ３０、ニューラルネットワークの量子化パラメータ調整装置。
【１７７８】
取得モジュールは、量子化予定のデータのデータ変動範囲を取得するためである。
【１７７９】
反復間隔確定モジュールは、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定するように構成され、目標反復間隔によってニューラルネットワーク操作における量子化パラメータを調整し、ここで、目標反復間隔は、少なくとも１回の反復では、ニューラルネットワークの量子化パラメータを使用して、ニューラルネットワーク演算で量子化予定のデータの量子化操作を実装する。
【１７８０】
Ｃ３１、量子化パラメータが小数点位置を含み、小数点位置が、量子化予定のデータに対応する量子化データ内の小数点位置である、条項Ｃ３０に記載の装置；装置はさらに以下を含む。
【１７８１】
量子化パラメータ確定モジュールは、カレント検査反復に対応する目標データビット幅およびカレント検査反復で量子化予定のデータによって、目標反復間隔の反復に対応する小数点位置を確定するように構成され、ニューラルネットワーク動作を調整する。
【１７８２】
ここで、目標反復間隔の反復に対応する小数点位置は一致している。
【１７８３】
Ｃ３２、量子化パラメータが小数点位置を含み、小数点位置が、量子化予定のデータに対応する量子化データ内の小数点位置である、条項Ｃ３０に記載の装置；装置は、さらに以下を含む。
【１７８４】
カレント検査反復に対応する目標データビット幅によって、目標反復間隔に対応するデータビット幅を確定するように構成されるデータビット幅確定モジュール。ここで、目標反復間隔の反復に対応するデータビット幅は一致している。
【１７８５】
量子化パラメータ確定モジュールは、取得した小数点位置反復間隔によって目標反復間隔の反復に対応する小数点位置を調整し、目標反復間隔に対応するデータビット幅を調整してニューラルネットワーク動作の小数点位置を調整するように構成される。
【１７８６】
ここで、小数点位置反復間隔には少なくとも１つの反復が含まれ、小数点位置反復間隔内の反復小数点位置は一致している。
【１７８７】
Ｃ３３、小数点位置の反復間隔が目標反復間隔以下である、Ｃ３２項に記載の装置。
【１７８８】
Ｃ３４、Ｃ３１からＣ３３のいずれか１つに記載の装置で、量子化パラメータにはさらにスケーリング係数が含まれ、スケーリング係数は小数点位置と同期して更新される。
【１７８９】
Ｃ３５、Ｃ３１からＣ３３のいずれか１つに記載の装置。ここで、量子化パラメータにはさらにオフセットが含まれ、オフセットは小数点位置と同期して更新される。
【１７９０】
Ｃ３６、データビット幅確定モジュールが以下を含む、Ｃ３１項からＣ３３項のいずれか１つに記載の装置。
【１７９１】
量子化誤差確定ユニットは、カレント検査反復の量子化データおよびカレント検査反復の量子化データに従って量子化誤差を確定するように構成され、カレント検査反復の量子化データは、カレント検査反復の量子化データを比較する。データは量子化に取得される。
【１７９２】
データビット幅確定ユニットは、量子化誤差に従って、カレント検査反復に対応する目標データビット幅を確定するように構成される。
【１７９３】
Ｃ３７、データビット幅確定ユニットが、量子化誤差に従ってカレント検査反復に対応する目標データビット幅を確定するように構成される、条項Ｃ３６に記載の装置。
【１７９４】
量子化誤差が第１のプリセットしきい値以上の場合は、カレント検査反復に対応するデータビット幅を増やして、カレント検査反復に対応する目標データビット幅を取得する。または、
【１７９５】
量子化誤差が第２のプリセットしきい値以下の場合、カレント検査反復に対応するデータビット幅が縮小され、カレント検査反復に対応する目標データビット幅が取得される。
【１７９６】
Ｃ３８、データビット幅確定ユニットが、量子化誤差が第１のプリセットしきい値以上である場合、カレント検査反復に対応するデータビット幅を増加させて得られるように構成される、条項Ｃ３７に記載の装置。カレント検査反復に対応する目標データのビット幅を記述する場合、特に次の目的で使用される。
【１７９７】
量子化誤差が第１のプリセットしきい値以上の場合、第１のプリセットビット幅のステップ長さによって第１の中間データビット幅を確定する。
【１７９８】
戻って、カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに従って、量子化誤差が第１のプリセットしきい値より小さくなるまで、量子化誤差を確定する。ここで、カレント検査反復の量子化データは第１の中間データのビット幅に応じて、カレント検査反復で量子化予定のデータが量子化され、取得される。
【１７９９】
Ｃ３９、データビット幅確定ユニットは、量子化誤差が取得するための第２のプリセットしきい値以下である場合、カレント検査反復に対応するデータビット幅を減少させるように構成される、条項Ｃ３７に記載の装置。カレント検査反復に対応する目標データビット幅が特に次の目的で使用される場合：
量子化誤差が第２のプリセットしきい値以下の場合、第２のプリセットビット幅のステップ長さによって第２の中間データビット幅を確定する。
【１８００】
カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに基づいて、量子化誤差が第２のプリセットしきい値より大きくなるまで、量子化誤差を確定するために戻る。ここで、カレント検査反復の量子化データは第２の中間データのビット幅に応じて、カレント検査反復で量子化予定のデータは、量子化によって取得される。
【１８０１】
Ｃ４０、取得モジュールが以下を含むＣ３０−Ｃ３９項のいずれか１つに記載の装置。
【１８０２】
最初の取得モジュールは、小数点位置の変動範囲を取得するためである。小数点位置の変動範囲は、量子化予定のデータのデータ変化の範囲を表すために使用でき、小数点位置の変動範囲は、量子化予定のデータに対応する。データの変化には正の相関関係がある。
【１８０３】
Ｃ４１、第１の取得モジュールが以下を含む、Ｃ４０項に記載の方法。
【１８０４】
第１の平均値確定ユニットは、カレント検査反復前の一つ前の検査反復に対応する小数点位置および前の検査反復前の履歴反復に対応する小数点位置に従って第１の平均値を確定するように構成される。検査反復は、目標反復間隔前の一つ前の反復間隔に対応する検査反復である。
【１８０５】
第２の平均値確定ユニットは、カレント検査反復に対応する小数点位置およびカレント検査反復前の履歴反復の小数点位置に従って第２の平均値を確定するように構成される；ここで、カレント検査反復に対応する小数点位置は、カレント検査反復に対応する目標データビット幅と量子化予定のデータが確定される。
【１８０６】
第１の誤差確定ユニットは、第１の平均値および第２の平均値に従って第１の誤差を確定するように構成され、第１の誤差は、小数点位置の変動範囲を表すためである。
【１８０７】
Ｃ４２、第２の平均値確定ユニットが特に以下のように構成される、条項Ｃ４１に記載の装置。
【１８０８】
中間スライディング平均値のプリセット数を取得する。ここで、中間スライディング平均値のそれぞれは、カレント検査反復の前の検査反復のプリセット数に従って確定される。
【１８０９】
第２の平均値は、カレント検査反復の小数点位置と、プリセット中間スライド平均値の数に従って確定される。
【１８１０】
Ｃ４３、第２の平均値確定ユニットは、カレント検査反復および第１の平均値に対応する小数点位置に従って第２の平均値を確定するように特に構成される、条項Ｃ４１に記載の装置。
【１８１１】
Ｃ４４、第２の平均値確定ユニットは、カレント検査反復の取得されたデータビット幅調整値に従って第２の平均値を更新するようにさらに構成される、条項Ｃ４１に記載の装置。
【１８１２】
ここで、カレント検査反復のデータビット幅調整値は、カレント検査反復の目標データビット幅および初期データビット幅によって確定される。
【１８１３】
Ｃ４５、第２の平均値確定ユニットが、カレント検査反復の取得されたデータビット幅調整値に従って第２の平均値を更新するようにさらに構成される、条項Ｃ４４に記載の装置。
【１８１４】
カレント検査反復のデータビット幅調整値がプリセットパラメータよりも大きい場合、第２の平均値は、カレント検査反復のデータビット幅調整値に従って減少する。
【１８１５】
カレント検査反復のデータビット幅調整値がプリセットパラメータよりも小さい場合、第２の平均値は、カレント検査反復のデータビット幅調整値に従って増やす。
【１８１６】
Ｃ４６、反復間隔確定モジュールが、第１の誤差によって目標反復間隔を確定するように構成され、目標反復間隔が第１の誤差と負に相関する、条項Ｃ４１に記載の装置。
【１８１７】
Ｃ４７、取得モジュールがさらに以下を含む、Ｃ４０項に記載の装置。
【１８１８】
第２の取得モジュールは、データビット幅の変化傾向を取得するように構成される。小数点位置の変動範囲とデータビット幅の変化傾向によって、量子化予定のデータのデータ変動範囲を確定する。
【１８１９】
Ｃ４８、反復間隔確定モジュールが、取得された第１の誤差および第２の誤差によって目標反復間隔を確定するようにさらに構成される、条項Ｃ４７に記載の装置。ここで、第１の誤差は、点を表すためである。位置変動範囲、および第２の誤差は、データビット幅の変化傾向を表すためである。
【１８２０】
Ｃ４９、ルート反復間隔確定モジュールが、取得された第１の誤差および第２の誤差によって、特に以下について、目標反復間隔を確定するように構成される、条項Ｃ４８に記載の装置。
【１８２１】
第１の誤差と第２の誤差の最大値を目標誤差とする。
【１８２２】
目標反復間隔は、目標誤差によって確定される。ここで、目標誤差は、目標反復間隔と負の相関がある。
【１８２３】
Ｃ５０、第２の誤差が量子化誤差によって確定される、条項Ｃ４８またはＣ４９に記載の装置。
【１８２４】
量子化誤差は、カレント検査反復で量子化予定のデータとカレント検査反復の量子化後のデータによって確定され、第２の誤差は量子化誤差と正の相関がある。
【１８２５】
Ｃ５１、条項Ｃ３０からＣ５０のいずれかによる装置。装置は、ニューラルネットワークのトレーニングまたは微調整を実装するためである。反復間隔確定モジュールは、さらに次の目的で使用される。
【１８２６】
カレント反復が第１のプリセット反復よりも大きい場合、目標反復間隔は、量子化予定のデータのデータ変動範囲によって確定され、量子化パラメータは、目標反復間隔によって調整される。
【１８２７】
Ｃ５２、反復間隔確定モジュールは、次のようにさらに構成される、条項Ｃ５１に記載の装置。カレント反復が第１のプリセット反復以下の場合、第１のプリセット反復間隔を反復間隔をターゲットにし、最初にプリセット反復間隔によって量子化パラメータを調整する。
【１８２８】
Ｃ５３、反復間隔確定モジュールがさらに以下のように構成される、条項Ｃ５１またはＣ５２に記載の装置。
【１８２９】
カレント反復が第２のプリセット反復以上の場合、第２のプリセット反復間隔を目標反復間隔として使用し、第２のプリセット反復間隔によって量子化パラメータを調整する。
【１８３０】
ここで、ニューラルネットワークの収束の程度がプリセット条件を満たす場合、カレント検査反復が第２のプリセット反復以上であると判断される。
【１８３１】
第２のプリセット反復は第１のプリセット反復よりも大きく、第２のプリセット反復間隔は第１のプリセット反復間隔よりも大きくなっている。
【１８３２】
Ｃ５４、反復間隔確定モジュールは、次のようにさらに構成される、Ｃ５３項に記載の装置。カレント反復が第２のプリセット反復以上であり、第２の誤差がプリセット誤差値より大きい場合。量子化予定のデータのデータ変動範囲が反復間隔を確定し、反復間隔によってデータビット幅を再確定する。
【１８３３】
本開示の実施形態は上に記載されており、上記の説明は例示的であり、網羅的ではなく、開示された実施形態に限定されない。図示された実施形態の範囲および精神から逸脱することなく、多くの修正および変更は、当技術分野の通常の技術者にとって明らかである。本明細書で使用される用語の選択は、各実施形態の市場における技術の原理、実際の適用、または改善を最もよく説明すること、または他の通常の当業者が本明細書に開示される様々な実施形態を理解できるようにすることを意図する。
【１８３４】
量子化パラメータ調整の問題を解決するために提案された解決策（２０１９１０５２８５３７．８）は上記のとおりである。
【図１】
2021530769.tif 000031
【図２】
2021530769.tif 000032
【図２−１】
2021530769.tif 000033
【図２−２】
2021530769.tif 000034
【図２−３】
2021530769.tif 000035
【図２−４】
2021530769.tif 000036
【図２−５】
2021530769.tif 000037
【図２−６】
2021530769.tif 000038
【図２−７】
2021530769.tif 000039
【図２−８】
2021530769.tif 000040
【図２−９】
2021530769.tif 000041
【図２−１０】
2021530769.tif 000042
【図２−１１】
2021530769.tif 000043
【図２−１２】
2021530769.tif 000044
【図２−１３】
2021530769.tif 000045
【図２−１４】
2021530769.tif 000046
【図２−１５】
2021530769.tif 000047
【図２−１６】
2021530769.tif 000048
【図２−１７】
2021530769.tif 000049
【図２−１８】
2021530769.tif 000050
【図２−１９】
2021530769.tif 000051
【図２−２０】
2021530769.tif 000052
【図２−２１】
2021530769.tif 000053
【図２−２２】
2021530769.tif 000054
【図２−２３】
2021530769.tif 000055
【図２−２４】
2021530769.tif 000056
【図２−２５】
2021530769.tif 000057
【図２−２６】
2021530769.tif 000058
【図２−２７】
2021530769.tif 000059
【図２−２８】
2021530769.tif 000060
【図２−２９】
2021530769.tif 000061
【図２−３０】
2021530769.tif 000062
【図２−３１】
2021530769.tif 000063
【図３】
2021530769.tif 000064
【図３−１】
2021530769.tif 000065
【図３−２】
2021530769.tif 000066
【図３−３】
2021530769.tif 000067
【図３−４】
2021530769.tif 000068
【図３−５】
2021530769.tif 000069
【図３−６】
2021530769.tif 000070
【図３−７】
2021530769.tif 000071
【図３−８】
2021530769.tif 000072
【図３−９】
2021530769.tif 000073
【図３−１０】
2021530769.tif 000074
【図３−１１】
2021530769.tif 000075
【図３−１２】
2021530769.tif 000076
【図３−１３】
2021530769.tif 000077
【図３−１４】
2021530769.tif 000078
【図３−１５】
2021530769.tif 000079
【図３−１６】
2021530769.tif 000080
【図３−１７】
2021530769.tif 000081
【図３−１８】
2021530769.tif 000082
【図３−１９】
2021530769.tif 000083
【図３−２０】
2021530769.tif 000084
【図３−２１】
2021530769.tif 000085
【図３−２２】
2021530769.tif 000086
【図３−２３】
2021530769.tif 000087
【図３−２４】
2021530769.tif 000088
【図３−２５】
2021530769.tif 000089
【図４】
2021530769.tif 000090
【図５Ａ】
2021530769.tif 000091
【図５Ｂ】
2021530769.tif 000092
【図６】
2021530769.tif 000093
【図７】
2021530769.tif 000094
【図８Ａ】
2021530769.tif 000095
【図８Ｂ】
2021530769.tif 000096
【図８Ｃ】
2021530769.tif 000097
【図８Ｄ】
2021530769.tif 000098
【図８Ｅ】
2021530769.tif 000099
【図８Ｆ】
2021530769.tif 000100
【図８Ｇ】
2021530769.tif 000101
【図８Ｈ】
2021530769.tif 000102
【図８Ｉ】
2021530769.tif 000103
【図８Ｊ】
2021530769.tif 000104
【図８Ｋ】
2021530769.tif 000105
【図８Ｌ】
2021530769.tif 000106
【図８Ｍ】
2021530769.tif 000107
【図８Ｎ】
2021530769.tif 000108
【図８Ｏ】
2021530769.tif 000109
【図８Ｐ】
2021530769.tif 000110
【図８Ｑ】
2021530769.tif 000111
【図８Ｒ】
2021530769.tif 000112
【図８Ｓ】
2021530769.tif 000113
【図８Ｔ】
2021530769.tif 000114
【図８Ｕ】
2021530769.tif 000115
【図８Ｖ】
2021530769.tif 000116
【図９】
2021530769.tif 000117
【図１０】
2021530769.tif 000118
【図１１】
2021530769.tif 000119
【図１２】
2021530769.tif 000120
【手続補正書】
【提出日】令和2年12月28日(2020.12.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
量子化予定のデータが量子化処理の後の量子化後のデータのビット幅を示す、前記量子化予定のデータに対して前記量子化処理を実行するためのデータビット幅を取得することと、
前記データビット幅に基づいて、１グループの量子化予定のデータに対して量子化処理を実行し、前記１グループの量子化予定のデータを、前記データビット幅を持つ１グループの量子化後のデータに変換することと、
前記１グループの量子化予定のデータを前記１グループの量子化後のデータと比較し、前記データビット幅に関連する量子化誤差を確定することと、
確定された前記量子化誤差に基づいて、前記データビット幅を調整することとを含む、ことを特徴とするデータビット幅の調整方法。
【請求項２】
前記１グループの量子化予定のデータを前記１グループの量子化後のデータと比較し、前記データビット幅に関連する量子化誤差を確定することは、
前記データビット幅によって量子化間隔を確定することと、
前記量子化間隔、前記１グループの量子化後のデータ、および前記１グループの量子化予定のデータによって前記量子化誤差を確定することとを含む、ことを特徴とする請求項１に記載のデータビット幅の調整方法。
【請求項３】
前記量子化間隔、前記１グループの量子化後のデータ、および前記１グループの量子化予定のデータによって量子化誤差を確定することは、
前記量子化間隔によって、前記１グループの量子化後のデータに対して逆量子化を実行して、データフォーマットが前記１グループの量子化予定のデータのデータフォーマットと同じである１グループの逆量子化データを取得することと、
前記１グループの逆量子化データと前記１グループの量子化予定のデータによって、量子化誤差を確定することとを含む、ことを特徴とする請求項２に記載のデータビット幅の調整方法。
【請求項４】
確定された前記量子化誤差に基づいて、前記データビット幅を調整することとは、
前記量子化誤差を、第１のしきい値と第２のしきい値との少なくとも１つを含むプリセットしきい値と比較することを含む、ことを特徴とする請求項１ないし３のいずれか１項に記載のデータビット幅の調整方法。
【請求項５】
前記比較の結果によって前記データビット幅を調整することは、
前記量子化誤差が第１のしきい値以上であると判断したことに応じて、前記データビット幅を増やすことを含み、
前記データビット幅を増やすことは、
第１のプリセットビット幅のステップ長さによって前記データビット幅を増やし、調整後のデータビット幅を確定することを含み、
前記方法は、
前記調整後のデータビット幅に基づいて、前記１グループの量子化予定のデータに対して量子化処理を実行し、前記１グループの量子化予定のデータを、前記調整後のデータビット幅を持つ別の１グループの量子化後のデータに変換することと、
前記１グループの量子化予定のデータを前記別の１グループの量子化予定のデータと比較し、別の量子化誤差が前記第１のプリセットしきい値より小さくなるまで、前記調整後のデータビット幅に関連する前記別の量子化誤差を確定することをさらに含む、
前記方法は反復的に実行されることを特徴とする請求項４に記載のデータビット幅の調整方法。
【請求項６】
前記比較の結果によって前記データビット幅を調整することは、
前記量子化誤差が前記第２のしきい値以下であると判断したことに応じて、前記データビット幅を減らすことを含み、
前記データビット幅を減らすことは、
第２のプリセットビット幅のステップ長さによって前記データビット幅を減らし、調整後のデータビット幅を確定することを含み、
前記方法は、
前記調整後のデータビット幅に基づいて、前記１グループの量子化予定のデータに対して量子化処理を実行し、前記１グループの量子化予定のデータを、前記調整後のデータビット幅を持つ別の１グループの量子化後のデータに変換することと、
前記１グループの量子化予定のデータと前記別の１グループの量子化後のデータに基づいて、別の量子化誤差が第２のプリセットしきい値より大きくなるまで、前記調整後のデータビット幅に関連する前記別の量子化誤差を確定することをさらに含み、
前記方法は反復的に実行されることを特徴とする請求項４に記載のデータビット幅の調整方法。
【請求項７】
前記比較の結果によって前記データビット幅を調整することは、
前記量子化誤差が前記第１のしきい値と第２のしきい値との間にあると判断したことに応じて、前記データビット幅を維持することを含む、ことを特徴とする請求項４に記載のデータビット幅の調整方法。
【請求項８】
量子化予定のデータが量子化処理の後の量子化後のデータのビット幅を示す、前記量子化予定のデータに対して前記量子化処理を実行するためのデータビット幅を取得するように構成される取得モジュールと、
前記データビット幅に基づいて、１グループの量子化予定のデータに対して量子化処理を実行し、前記１グループの量子化予定のデータを、前記データビット幅を持つ１グループの量子化後のデータに変換するように構成される量子化モジュールと、
前記１グループの量子化予定のデータを前記１グループの量子化後のデータと比較し、前記データビット幅に関連する量子化誤差を確定するように構成される確定モジュールと、
確定された前記量子化誤差に基づいて、前記データビット幅を調整するように構成されるとを備える、ことを特徴とするデータビット幅の調整装置。
【請求項９】
前記比較モジュールは、
前記データビット幅によって量子化間隔を確定するように構成される間隔確定モジュールと、
前記量子化間隔、前記１グループの量子化後のデータ、および前記１グループの量子化予定のデータによって前記量子化誤差を確定するように構成される誤差確定モジュールとを備える、ことを特徴とする請求項８に記載のデータビット幅の調整装置。
【請求項１０】
前記誤差確定モジュールは、
前記量子化間隔によって前記１グループの量子化後のデータに対して逆量子化を実行し、データフォーマットが前記１グループの量子化予定のデータのデータフォーマットと同じである１グループの逆量子化データを取得するように構成される逆量子化モジュールと、
前記１グループの逆量子化データおよび前記１グループの量子化予定のデータによって量子化誤差を確定するように構成される量子化誤差確定モジュールとを備える、ことを特徴とする請求項９に記載のデータビット幅の調整装置。
【請求項１１】
前記調整モジュールは、
前記量子化誤差を、第１のしきい値および第２のしきい値の少なくとも１つを含むプリセットしきい値と比較するように構成される比較モジュールと、
前記比較の結果によって前記データビット幅を調整するように構成されるビット幅調整モジュールとを備える、ことを特徴とする請求項８ないし１０のいずれか１項に記載のデータビット幅の調整装置。
【請求項１２】
前記ビット幅調整モジュールは、
前記量子化誤差が第１のしきい値以上であると判断したことに応じて前記データビット幅を増やすように構成される増加モジュールを備え、
前記増加モジュールは、
第１のプリセットビット幅のステップ長さによって前記データビット幅を増やし、調整後のデータビット幅を確定するように構成されるステップ長さ増加モジュールを備え、
前記量子化モジュールはさらに、前記調整後のデータビット幅に基づいて前記１グループの量子化予定のデータに対して量子化処理を実行し、前記１グループの量子化予定のデータを、前記調整後のデータビット幅を持つ別の１グループの量子化後のデータに変換するように構成され、
前記確定モジュールはさらに、前記１グループの量子化予定のデータを前記別の１グループの量子化予定のデータと比較し、別の量子化誤差が前記第１のプリセットしきい値以下になるまで、前記調整後のデータビット幅に関連する前記別の量子化誤差を確定するように構成され、
前記装置が反復的にコールされるように構成される、ことを特徴とする請求項１１に記載のデータビット幅の調整装置。
【請求項１３】
前記調整モジュールは、
前記量子化誤差が第２のしきい値以下であると判断したことに応じて、前記データビット幅を減少するように構成される減少モジュールを備え、
前記減少モジュールは、
第２のプリセットビット幅のステップ長さによって前記データビット幅を減少し、調整後のデータビット幅を確定するように構成されるステップ長さ減少モジュールを備え、
前記量子化モジュールはさらに、前記調整後のデータビット幅に基づいて、前記１グループの量子化予定のデータに対して量子化処理を実行し、前記１グループの量子化予定のデータを、前記調整後のデータビット幅を持つ別の１グループの量子化後のデータに変換するように構成され、
前記確定モジュールはさらに、前記１グループの量子化予定のデータと前記別の１グループの量子化後のデータに基づいて、別の量子化誤差が前記第２のプリセットしきい値より大きくなるまで、前記調整後のデータビット幅に関連する前記別の量子化誤差を確定するように構成され、
前記装置が反復的にコールされるように構成される、ことを特徴とする請求項１１に記載のデータビット幅の調整装置。
【請求項１４】
前記調整モジュールは、
前記量子化誤差が前記第１のしきい値と前記第２のしきい値との間にあると判断したことに応じて、前記データビット幅を維持するように構成される維持モジュール備える、ことを特徴とする請求項１１に記載のデータビット幅の調整装置。
【請求項１５】
コンピュータプログラムが格納され、前記プログラムが実行されると、請求項１〜７のいずれか１項に記載の方法が実現される、ことを特徴とするコンピュータ可読記憶媒体。
【請求項１６】
チップが、請求項８ないし１４のいずれか１項に記載のデータを処理するための装置を含む、ことを特徴とする人工知能チップ。
【請求項１７】
請求項１６に記載の人工知能チップを備える、ことを特徴とする電子装置。
【請求項１８】
ボードカードが、記憶装置、インターフェース装置、制御装置、および請求項１６に記載の人工知能チップを備え、
前記人工知能チップは、前記記憶装置、前記制御装置、および前記インターフェイス装置に接続され、
前記記憶装置は、データを格納するためであり、
前記インターフェイス装置は、前記人工知能チップと外部装置との間のデータ伝送を実現するためであり、
前記制御装置は、前記人工知能チップの状態を監視するためである、ことを特徴とするボードカード。
【国際調査報告】
2021530769.tif 000121
2021530769.tif 000122
2021530769.tif 000123
2021530769.tif 000124