(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-22
(45)【発行日】2024-07-30
(54)【発明の名称】コンパイラで生成された量子化モデルを修正して正確度を修復する方法、コンピュータプログラム、およびコンピュータ装置
(51)【国際特許分類】
G06N 3/04 20230101AFI20240723BHJP
【FI】
G06N3/04
(21)【出願番号】P 2023530746
(86)(22)【出願日】2021-12-09
(86)【国際出願番号】 KR2021018653
(87)【国際公開番号】W WO2023101079
(87)【国際公開日】2023-06-08
【審査請求日】2023-05-18
(31)【優先権主張番号】10-2021-0171945
(32)【優先日】2021-12-03
(33)【優先権主張国・地域又は機関】KR
【早期審査対象出願】
(73)【特許権者】
【識別番号】523165640
【氏名又は名称】ノタ、インコーポレイテッド
(74)【代理人】
【識別番号】110000408
【氏名又は名称】弁理士法人高橋・林アンドパートナーズ
(72)【発明者】
【氏名】リム ジウン
(72)【発明者】
【氏名】チョン ソヒョン
(72)【発明者】
【氏名】パク ジュンギュ
【審査官】児玉 崇晶
(56)【参考文献】
【文献】特開2020-009048(JP,A)
【文献】特開2021-043906(JP,A)
【文献】特開2020-177535(JP,A)
【文献】Markus Nagel, Marios Fournarakis, Rana Ali Amjad, Yelysei Bondarenko, Mart van Baalen, Tijmen Blankevoort,A White Paper on Neural Network Quantization,arXiv[online],2021年06月15日,[検索日2023.12.27] Retrieved from the Internet: <URL: https://doi.org/10.48550/arXiv.2106.08295>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/0495
(57)【特許請求の範囲】
【請求項1】
少なくとも1つのプロセッサを含むコンピュータ装置によって実行される
、量子化されたモデルの正確度復元方法であって、
前記少なくとも1つのプロセッサにより、
ディープラーニングコンパイラによって生成された前記量子化されたモデルのファイルの入力を受ける段階、
前記少なくとも1つのプロセッサにより、前記
量子化されたモデルのファイルをパーシング(parsing)して、前記ファイルが含んでいる前記量子化されたモデルの加重値
、および活性
化のうちの少なくとも1つと
前記加重値および活性化のうちの少なくとも1つと関連する量子化パラメータを抽出する段階、
前記少なくとも1つのプロセッサにより、前記加重
値および前記活性化のうちの少なくとも1つ
を修正対象
として選定する段階、
前記少なくとも1つのプロセッサにより、
前記修正対象の量子化パラメータ再計算の過程において、学習データまたは有効データの使用の有無を考慮した上で、前記修正対象の量子化パラメータ再計算の過程を一度だけ実行する第1方式および前記修正対象の量子化パラメータ再計算の過程を複数回にわたり反復実行する第2方式のうちの1つの方式を選択し、選定された前記修正対象の量子化パラメータと関連するクリッピング範囲を調節
して選択された前記方式によって選定された
前記修正対象の量子化パラメータを再計算する段階、および
前記少なくとも1つのプロセッサにより、前記
量子化されたモデルで選定された前記修正対象に対応する量子化パラメータを前記
再計算された量子化
パラメータに変更して最終量子化モデルを生成する段階
を含む、正確度復元方法。
【請求項2】
前記第1方式は、学習データまたは有効データなく、前記量子化パラメータ再計算の過程を一度だけ実行する方式であることを特徴とする、請求項1に記載の正確度復元方法。
【請求項3】
前記第1方式は、前記量子化パラメータと関連するクリッピング範囲の最大値および最小値に基づいて、前記量子化パラメータ再計算の過程を一度だけ実行する、請求項2に記載の正確度復元方法。
【請求項4】
前記第2方式は、前記
学習データまたは
有効データの一部を使用して前記
量子化パラメータ再計算の過程を複数回にわたり反復実行する方式であることを特徴とする、請求項1に記載の正確度復元方法。
【請求項5】
前記第2方式は、複数回にわたり反復実行される前記量子化パラメータ再計算の過程において得られる複数の候補量子化パラメータのうちから前記再計算された量子化パラメータを決定する、請求項4に記載の正確度復元方法。
【請求項6】
前記
選定する段階は、
前記
量子化されたモデルのチャネルまたはレイヤごとに、前記加重値および前記活性化のうちの少なくとも1つを前記修正対象として選定することを特徴とする、請求項1に記載の正確度復元方法。
【請求項7】
選定された前記修正対象の量子化パラメータと関連するクリッピング範囲を調節する場合、
前記クリッピング範囲に対する最小値および最大値のうちの少なくとも1つを増加または減少させて前記クリッピング範囲を調節する、請求項1に記載の正確度復元方法。
【請求項8】
選定された前記修正対象の量子化パラメータを再計算する
前記段階は、
前記
調節されたクリッピング範囲によって、前記修正対象の量子化パラメータとしての
スケールファクタとゼロポイントを再計算する段階を含むことを特徴とする、請求項
1に記載の正確度復元方法。
【請求項9】
前記第1方式が選択された場合、前記最終量子化モデルは、
前記最大値および最小値に基づいていくつかの前記第1方式を実行した結果モデルを含む、請求項3に記載の正確度復元方法。
【請求項10】
コンピュータ装置と結合して請求項1~
9のうちのいずれか一項に記載の方法をコンピュータ装置に実行させるためにコンピュータ読み取り可能な記録媒体に記録される、コンピュータプログラム。
【請求項11】
コンピュータ装置で読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサ
を含み、
前記少なくとも1つのプロセッサにより、
ディープラーニングコンパイラによって生成された量子化されたモデルのファイルの入力を受け、
前記
量子化されたモデルのファイルをパーシング(parsing)して、前記ファイルが含んでいる前記量子化されたモデルの加重
値および活性
化のうちの少なくとも1つと
前記加重値および活性化のうちの少なくとも1つと関連する量子化パラメータを抽出し、
前記加重値および前記活性化のうちの少なくとも1つを修正対象として選定し、
前記修正対象の量子化パラメータ再計算の過程において、学習データまたは有効データの使用の有無を考慮した上で、前記修正対象の量子化パラメータ再計算の過程を一度だけ実行する第1方式および前記修正対象の量子化パラメータ再計算の過程を複数回にわたり反復実行する第2方式のうちの1つの方式を選択し、選択された前記修正対象の量子化パラメータと関連するクリッピング範囲を調節し
て選択された前記方式によっ
て選定された
前記修正対象の量子化パラメータを再計算し、
前記
量子化されたモデルで選定された前記修正対象に対応する量子化パラメータを前記
再計算された量子化
パラメータに変更して最終量子化モデルを生成すること
を特徴とする、コンピュータ装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、コンパイラで生成された量子化モデルを修正して正確度を修復する方法およびシステムに関する。
【背景技術】
【0002】
イメージプロセッシングや自然言語処理などのタスクを効率よく実行するための方法としてディープラーニングを利用しようとする試みが活発になされている。しかし、ディープラーニングの実行には大量の計算とメモリ資源が必要となるため、資源に制限のある組み込み機器はもちろん、高性能のサーバにおいてもディープラーニングの実行が大きな負担となっている。
【0003】
したがって、モデルを効果的に実行するために、プルーニング(pruning)、フィルタ分解(filter decomposition)、量子化などの多様な軽量化方案が使用されているが、このうちの量子化技法は、デフォルト(default)方式である32ビット浮動小数点(32-bitf loating point)方式で表現される数字をより少ないビットを使用して表現するディープラーニング軽量化技法を意味する。
【0004】
ディープラーニングは、TensorFlowやPyTorchのようなディープラーニングコンパイラによって生成する。ディープラーニングコンパイラ内には量子化を行う過程が予め実現されており、ユーザが量子化を実行できるように関数を提供している。量子化を実現する過程は、ディープラーニングコンパイラの多くの部分と関連性があるため、ユーザが量子化を直接に実現することは極めて難しい。したがって、ユーザは、一般的には、TensorFlow LiteやTensorRTのようなディープラーニングコンパイラが提供する量子化関数を使用する。ディープラーニングコンパイラでは、数式を利用して量子化パラメータ(scaleやzero pointなど)を計算した後、モデルの加重値(weight)、バイアス(bias)、および活性化(activation)とともに格納する方式により、量子化されたモデルを生成する。
【0005】
量子化されたモデルは、32ビットの浮動小数点モデルに比べて少ないビットを使用するため量子化損失が発生するようになり、この損失によってディープラーニングの正確度が低下するという現象が発生する。問題は、ディープラーニングコンパイラは極めて複雑なシステムであるため、ユーザがコンパイラの量子化過程を直接に修正することは容易でないことにある。
【発明の概要】
【発明が解決しようとする課題】
【0006】
ディープラーニングコンパイラの内部コードを修正しなくても、コンパイラで生成した量子化されたモデルとモデル内部に存在する量子化パラメータを利用して正確度の低下を回復することができる、正確度復元方法およびシステムを提供する。
【課題を解決するための手段】
【0007】
少なくとも1つのプロセッサを含むコンピュータ装置によって実行される正確度復元方法であって、前記少なくとも1つのプロセッサにより、量子化モデルの入力を受ける段階、前記少なくとも1つのプロセッサにより、前記入力された量子化モデルを分析して、加重値、バイアス(bias)、および活性化(activation)のうちの少なくとも1つと量子化パラメータを抽出する段階、前記少なくとも1つのプロセッサにより、前記加重値、前記バイアス、および前記活性化のうちの少なくとも1つと前記量子化パラメータに基づいて修正対象を選定する段階、前記少なくとも1つのプロセッサにより、クリッピング範囲を調節し、前記調節されたクリッピング範囲によって前記選定された修正対象の量子化パラメータを再計算する段階、および前記少なくとも1つのプロセッサにより、前記再計算された量子化パラメータを前記入力された量子化モデルに反映して最終量子化モデルを生成する段階を含む、正確度復元方法を提供する。
【0008】
一側によると、前記修正対象を選定する段階は、前記入力された量子化モデルの前記加重値、前記バイアス、および前記活性化のうちの少なくとも1つを修正対象として選定することを特徴としてよい。
【0009】
他の側面によると、前記修正対象を選定する段階は、前記加重値、前記バイアス、および前記活性化のうちの少なくとも1つのチャネルまたはレイヤごとに修正対象を選定することを特徴としてよい。
【0010】
また他の側面によると、前記量子化パラメータを再計算する段階は、前記選定された修正対象に対する最小値および最大値のうちの少なくとも1つを増加または減少させて前記クリッピング範囲を調節することを特徴としてよい。
【0011】
また他の側面によると、前記量子化パラメータを再計算する段階は、前記調節されたクリッピング範囲によって、前記修正対象の量子化パラメータとしてのスケールファクタとゼロポイントを再計算することを特徴としてよい。
【0012】
また他の側面によると、前記正確度復元方法は、前記少なくとも1つのプロセッサにより、前記修正対象を選定する段階、および前記量子化パラメータを再計算する段階を複数回にわたり反復実行する段階をさらに含んでよい。
【0013】
さらに他の側面によると、前記反復実行する段階は、前記複数回にわたる反復実行によって得られる量子化パラメータとしての複数の候補のうちから少なくとも1つの候補を選定することを特徴としてよい。
【0014】
コンピュータ装置と結合して前記方法をコンピュータ装置に実行させるためにコンピュータ読み取り可能な記録媒体に記録される、コンピュータプログラムを提供する。
【0015】
前記方法をコンピュータ装置に実行させるためのプログラムが記録されている、コンピュータ読み取り可能な記録媒体を提供する。
【0016】
コンピュータ装置で読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサを含み、前記少なくとも1つのプロセッサにより、量子化モデルの入力を受け、前記入力された量子化モデルを分析して、加重値、バイアス、および活性化のうちの少なくとも1つとおよび量子化パラメータを抽出し、前記加重値、前記バイアス、および前記活性化のうちの少なくとも1つと前記量子化パラメータに基づいて修正対象を選定し、クリッピング範囲を調節し、前記調節されたクリッピング範囲によって前記選定された修正対象の量子化パラメータを再計算し、前記再計算された量子化パラメータを前記入力された量子化モデルに反映して最終量子化モデルを生成することを特徴とする、コンピュータ装置を提供する。
【発明の効果】
【0017】
ディープラーニングコンパイラの内部コードを修正しなくても、コンパイラで生成した量子化されたモデルとモデル内部に存在する量子化パラメータを利用して正確度の低下を回復することができる。
【図面の簡単な説明】
【0018】
【
図1】本発明の一実施形態における、軽量化過程の例を示した図である。
【
図2】本発明の一実施形態における、量子化方法の例を示したフローチャートである。
【
図3】本発明の一実施形態における、コンピュータ装置の例を示したブロック図である。
【発明を実施するための形態】
【0019】
以下、実施形態について、添付の図面を参照しながら詳しく説明する。
【0020】
ディープラーニングコンパイラは、ディープラーニング全般の内容をすべて処理する。すなわち、学習(training)と推論(inference)の両方を処理し、多様な軽量化方案も実現されている。特に、量子化部分は、ターゲットデバイスでの実行を考慮しながら実現されなければならないため、ランタイム(runtime)で実行するためのコードとの関連も多い。これにより、ディープラーニングコンパイラ内でユーザが思いどおりに量子化方式を修正するためには、関連する実現をすべて理解しなければならないため、実質的に量子化関数の修正は容易でない。
【0021】
また、PyTorch、TensorFlow、TensorFlow Lite、TensorRTのような多様なコンパイラが存在するが、コンパイラはそれぞれ実現方式が多様であるため、ユーザがこのすべての環境に対して作業することは不可能である。
【0022】
この反面、コンパイラで生成した量子化されたモデルは、コンパイラごとにフォーマットが異なることはあるが、量子化パラメータを有していると点は共通する。すなわち、量子化されたモデルは、絶対的にスケールファクタ(scale factor)やゼロポイント(zero point)などのような量子化パラメータを有するため、結果モデルから量子化された情報を抽出することは、この値を得る方式によって実行可能である。この量子化情報をユーザが所望する値に直接修正すれば、コンパイラの量子化関数を修正することと同じ効果をもつ。これにより、このように量子化されたモデルを直接変更する方式は、コンパイラの内部構造と内部方式を知らなくても良いという長所がある。
【0023】
しかし、量子化情報をユーザが所望する値に直接修正することも容易ではない。量子化によるエラーによる分析をユーザが直接実行することは困難である上に、データやディープラーニングなどの状況によって傾向が変わる場合もあるためである。これにより、本特許では、ユーザが量子化パラメータを直接調節しなくても正確度を高めることができる方法を提案した。
【0024】
一般的に、ディープラーニングの正確度を改善するためには、学習データを利用した学習または再学習の過程が必要となる。しかし、学習を行うためには、学習のための時間とコンピュータ資源が必要となり、再学習の際に正確度の向上が常に保障されるものでない。さらに、保安問題により、データの取得が困難な状況も多い。本特許で提案する補正(calibration)方法は、データを使用せず、学習による時間と費用はかけずに量子化されたディープラーニングの正確度損失を緩和することができる。
【0025】
ディープラーニングは、基本的に32ビットの浮動小数点数を使用する。しかし、量子化技法を使用して32ビットよりも小さいビットの数字形式を使用することもでき、この過程によって正確度上の損失が生じることはあるが、モデルの大きさを減らしてメモリを効率的に使用できるようにする上に、実行速度を高めることができる。
【0026】
量子化は、均一(uniform)量子化方式と非均一(non-uniform)量子化方式に大別することができる。均一量子化方式は、量子化区間を均等に分ける方式であり、以下の数式(1)~数式(3)によって実行されてよい。
【0027】
【数1】
・・・(1)
【数2】
・・・(2)
【数3】
・・・(3)
【0028】
均一量子化方式では、数式(1)を利用して、入力r値に対して[a、b]の範囲でクリッピング(clipping)を実行することができる。また、均一量子化方式では、数式(2)を利用して、スケールファクタ(s)とゼロポイント(z)を求めることができる。これは、kビットを使用すると仮定するときn=2kであり、[a、b]の範囲をkビットで表現できるように量子化された区間で割ることと同じである。また、均一量子化方式では、数式(3)を利用して、入力値に対する量子化された値(quantized value)を計算することができる。このような数式(1)~数式(3)は、均一量子化方式でスケールファクタとゼロポイントを量子化パラメータとして使用する方式の数式の例であり、表現方法によっては量子化パラメータの種類が異なることがある。
【0029】
また、均一量子化方式の他にも、[a、b]区間を不均等に分ける非均一量子化方式も存在するが、この場合は、スケールファクタとゼロポイント以外のパラメータで構成される。
【0030】
量子化過程は、モデルの加重値(weight)、バイアス(bias)、活性化(activation)値に対して個別に適用されてよい。言い換えれば、加重値、バイアス、活性化はすべてそれぞれ互いに異なる量子化パラメータを有するようになる。また、量子化パラメータを共有する単位(量子化粒度(quantization granularity))は実現によって異なるようになり、TensorFlow Liteの場合、加重値とバイアスはチャネル単位で、活性化はレイヤ単位で量子化パラメータを共有する。
【0031】
例えば、量子化を実行したときに発生するエラーは、大きく、クリッピングエラー(clipping error)と量子化エラー(quantization error)の2つで構成されている。クリッピング範囲(clipping range)によるこの2つのエラーの総合が、最終量子化損失となる。クリッピングエラーは、量子化過程において最大値よりも小さい値でクリッピングを行うか、または最小値よりも大きい値でクリッピングを行う過程で発生するエラーである。また、量子化過程では、最小値と最大値の間の値をkビットで表現可能な区間にマッピングさせるが、このときに発生するエラーが量子化エラーである。これにより、最小値と最大値の間の区間、すなわちクリッピング範囲を減少させるようになれば、クリッピングエラーは増加するが量子化エラーは減少するようになり、このとき2つのエラーの総合を減少させる方向にクリッピング範囲を変更すれば、結果的に正確度が増加する効果を得ることができるようになる。
【0032】
コンパイラで生成する量子化されたモデルファイルには、モデルの加重値とバイアス値が格納されてよい。また、量子化されたモデルファイルには、スケールファクタとゼロポイントが量子化粒度によって格納されてよい。このとき、ゼロポイントは、量子化された値と同じタイプを有してよい。例えば、「int8」に量子化されたモデルであれば、ゼロポイントも「int8」タイプを有してよい。スケールファクタは、正の実数形態である。
【0033】
図1は、本発明の一実施形態における、軽量化過程の例を示した図である。
【0034】
量子化モデル110とは、ディープラーニングコンパイラで量子化を完了したモデルを意味してよい。TensolFlowを例に挙げれば、量子化されたモデルファイルは「tfilte」の拡張子を有しており、「int8」や「fp16」などの多様なデータタイプに量子化されたモデルが量子化モデル110に活用されてよい。
【0035】
モデル分析過程120は、入力モデル(量子化モデル110)をパーシング(parsing)してモデルの加重値と量子化パラメータを求める過程の例であってよい。このとき、量子化パラメータは、量子化粒度(一例として、チャネルまたはレイヤ)ごとに存在してよい。求められた量子化パラメータを利用すれば、数式(1)~数式(3)で使用した内部値を計算することができる。
【0036】
対象選定過程130は、量子化パラメータを修正するための対象を選定する過程の例であってよい。対象は、加重値、バイアス、活性化すべて可能である。言い換えれば、加重値、バイアス、および活性化のうちの少なくとも1つが対象として選定されてよい。また、対象の単位は、入力モデルで有している量子化粒度によってよい。言い換えれば、入力モデルにおいて、加重値とバイアスはチャネルごとに、活性化はレイヤごとに量子化パラメータが存在するのであれば、量子化パラメータを修正するための対象は、加重値、バイアス、活性化すべてがチャネルあるいはレイヤごとに選定されてよい。
【0037】
量子化パラメータアップデート過程140は、最小値(a)を増加あるいは減少させる第1方式、最大値(b)を増加あるいは減少させる第2方式、または第1方式と第2方式を同時に実行する第3方式を実行する過程の例であってよい。最小値および/または最大値を変更すれば、次のような効果が発生する。先ず、最大値と最小値の差(b-a)をクリッピング範囲であるとするとき、量子化パラメータアップデート過程140を通じてクリッピング範囲が以前よりも大きくなれば、量子化エラーは増加するがクリッピングエラーは減少するようになる。これとは逆に、クリッピング範囲が以前よりも小さくなれば、クリッピングエラーは増加するが量子化エラーは減少するようになる。最小値(a)と最大値(b)を同じ大きさだけ変化(増加または減少)させれば、クリッピング範囲は以前と同じであるため、量子化エラーは同じであるがクリッピングエラーは変化するようになる。
【0038】
このとき、クリッピング範囲の変更によって発生する正確度の変化は、データやディープラーニングネットワークの種類などの状況によって極めて異なるように現れる。したがって、予め定めた値で量子化パラメータを一度だけアップデートする方式(ゼロショット(zero-shot)方式)と、アップデート過程を何度か繰り返してより優れた正確度を得るためのパラメータを探索する方式(サーチ(search)方式)が活用されてよい。ゼロショット方式とサーチ方式については、以下でさらに詳しく説明する。
【0039】
このとき、量子化パラメータアップデート過程140では、新たに設定された最小値および/または最大値による量子化パラメータ値を新たに計算してよい。一例として、新たに設定されるクリッピング範囲を使用するために、上述した数式(2)によってスケールファクタとゼロポイントを新たに計算した後、モデルファイルに反映して格納してよい。
【0040】
矢印150は、対象選定過程130および量子化パラメータアップデート過程140の反復が可能であることを意味してよい。言い換えれば、ゼロショット方式により、対象選定過程130および量子化パラメータアップデート過程140を一度だけ実行して量子化モデル110をアップデートしてもよいし、サーチ方式により、対象選定過程130および量子化パラメータアップデート過程140を複数回にわたり反復実行して量子化モデル110をアップデートしてもよい。
【0041】
ゼロショット方式は、量子化パラメータアップデートを一度だけ一時的に実行する方式である。このようなゼロショット方式は、従来の入力モデルの最大/最小値に基づいて多様なアップデート方式を実行した結果モデルを提案する方式である。学習データ(training data)または有効データ(validation data)を使用しないという長所があり、この方式を実行するにあたって必要となる時間も極めて短いという長所がある。
【0042】
サーチ方式は、学習データまたは有効データの一部を活用し、より優れたモデル正確度を得るために量子化パラメータアップデートを反復(すなわち、対象選定過程130および量子化パラメータアップデート過程140を反復)する方式である。量子化パラメータアップデートを繰り返しながら複数の量子化パラメータ候補が生成されてよい。このようなサーチ方式で多数の候補(複数の量子化パラメータ候補)のうちからより優れた方式を探索する方法論としては、ベイジアン最適化(Bayesian optimization)、進化アルゴリズム(evolutionary algorithm)、勾配基盤最適化方法(gradient-based optimization method)、強化学習基盤方法(reinforcement learning based method)などが多様に使用されてよく、一般論的なHPO(Hyper Parameter Optimization)、NAS(Neural Architecture Search)などの技法適用が可能である。
【0043】
最終量子化モデル160は、量子化モデル110と同じ形式を有してよく、量子化モデル110で内部の量子化パラメータが変わったモデルであってよい。
【0044】
図2は、本発明の一実施形態における、量子化方法の例を示したフローチャートである。本実施形態に係る量子化方法に含まれる段階210~260は、少なくとも1つのコンピュータ装置によって実行されてよい。
【0045】
段階210で、コンピュータ装置は、量子化モデルの入力を受けてよい。一例として、コンピュータ装置は、ディープラーニングコンパイラによって生成された量子化モデルのファイルの入力を受けてよい。
【0046】
段階220で、コンピュータ装置は、入力された量子化モデルを分析して、加重値、バイアス、および活性化のうちの少なくとも1つと量子化パラメータを抽出してよい。一例として、コンピュータ装置は、入力された量子化モデルのファイルをパーシングして、当該ファイルが含んでいる量子化モデルの加重値、バイアス、および活性化のうちの少なくとも1つと量子化パラメータを抽出してよい。
【0047】
段階230で、コンピュータ装置は、加重値、バイアス、および活性化のうちの少なくとも1つと量子化パラメータに基づいて修正対象を選定してよい。一例として、コンピュータ装置は、入力された量子化モデルの加重値、バイアス、および活性化のうちの少なくとも1つを修正対象として選定してよい。上述したように、コンピュータ装置は、加重値、バイアス、活性化それぞれのチャネルまたはレイヤごとに修正対象を選定してよい。
【0048】
段階240で、コンピュータ装置は、クリッピング範囲を調節し、調節されたクリッピング範囲によって選定された修正対象の量子化パラメータを再計算してよい。一例として、コンピュータ装置は、選定された修正対象に対する最小値および最大値のうちの少なくとも1つを増加または減少させてクリッピング範囲を調節してよい。上述したように、修正対象に対する最大値と最小値の差(b-a)をクリッピング範囲とするとき、クリッピング範囲が以前よりも大きくなれば、量子化エラーは増加するがクリッピングエラーは減少する。これとは逆に、クリッピング範囲が以前よりも小さくなれば、クリッピングエラーは増加するが量子化エラーは減少する。最小値(a)と最大値(b)を同じ大きさだけ変化(増加または減少)させれば、クリッピング範囲は以前と同じであるため、量子化エラーは同じであるがクリッピングエラーは変化する。このとき、コンピュータ装置は、調節されたクリッピング範囲によって修正対象の量子化パラメータとしてのスケールファクタとゼロポイントを再計算してよい。言い換えれば、コンピュータ装置は、クリッピング範囲の調節によるエラーの変化(量子化エラーおよび/またはクリッピングエラーの増加および/または減少)によって量子化モデルの正確度を調節してよい。
【0049】
上述したように、このような量子化パラメータの再計算は、1回だけなされてもよいし、複数回にわたって実行されて量子化モデルの正確度を修復するための最適の候補を得てもよい。段階250は、量子化パラメータの再計算が複数回にわたって実行される実施形態に係る正確度復元方法に含まれてよく、量子化パラメータの再計算が1回だけ実行される実施形態に係る正確度復元方法では省略されてよい。
【0050】
段階250で、コンピュータ装置は、段階230および段階240を複数回にわたって反復実行してよい。このとき、コンピュータ装置は、段階250で複数回の反復実行によって得られる量子化パラメータとしての複数の候補のうちから少なくとも1つの候補を選定してよい。この場合、複数の候補のうちで正確度に基づいて最適の候補が選定されてよい。
【0051】
段階260で、コンピュータ装置は、再計算された量子化パラメータを入力された量子化モデルに反映して最終量子化モデルを生成してよい。段階250が実行される場合には、最適候補として選定された再計算された量子化パラメータが入力された量子化モデルに反映されてよく、段階250が実行されない場合には、段階240で再計算された量子化パラメータが入力された量子化モデルに反映されてよい。
【0052】
このように、コンピュータ装置は、ディープラーニングコンパイラの内部コードを修正しなくても、コンパイラで生成した量子化されたモデルとモデル内部に存在する量子化パラメータを利用して正確度の低下を回復することができる。
【0053】
図3は、本発明の一実施形態における、コンピュータ装置の例を示したブロック図である。コンピュータ装置(Computer device)300は、
図2を参照しながら説明したコンピュータ装置に対応してよく、
図3に示すように、メモリ(Memory)310、プロセッサ(Processor)320、通信インタフェース(Communication interface)330、および入力/出力インタフェース(I/O interface)340を含んでよい。メモリ310は、コンピュータ読み取り可能な記録媒体であって、RAM(random access memory)、ROM(read only memory)、およびディスクドライブのような永続的大容量記録装置を含んでよい。ここで、ROMやディスクドライブのような永続的大容量記録装置は、メモリ310とは区分される別の永続的記録装置としてコンピュータ装置300に含まれてもよい。また、メモリ310には、オペレーティングシステムと、少なくとも1つのプログラムコードが記録されてよい。このようなソフトウェア構成要素は、メモリ310とは別のコンピュータ読み取り可能な記録媒体からメモリ310にロードされてよい。このような別のコンピュータ読み取り可能な記録媒体は、フロッピードライブ、ディスク、テープ、DVD/CD-ROMドライブ、メモリカードなどのコンピュータ読み取り可能な記録媒体を含んでよい。他の実施形態において、ソフトウェア構成要素は、コンピュータ読み取り可能な記録媒体ではない通信インタフェース330を通じてメモリ310にロードされてもよい。例えば、ソフトウェア構成要素は、ネットワーク(Network)360を介して受信されるファイルによってインストールされるコンピュータプログラムに基づいてコンピュータ装置300のメモリ310にロードされてよい。
【0054】
プロセッサ320は、基本的な算術、ロジック、および入出力演算を実行することにより、コンピュータプログラムの命令を処理するように構成されてよい。命令は、メモリ310または通信インタフェース330によって、プロセッサ320に提供されてよい。例えば、プロセッサ320は、メモリ310のような記録装置に記録されたプログラムコードにしたがって受信される命令を実行するように構成されてよい。
【0055】
通信インタフェース330は、ネットワーク360を介してコンピュータ装置300が他の装置と互いに通信するための機能を提供してよい。一例として、コンピュータ装置300のプロセッサ320がメモリ310のような記録装置に記録されたプログラムコードにしたがって生成した要求や命令、データ、ファイルなどが、通信インタフェース330の制御にしたがってネットワーク360を介して他の装置に伝達されてよい。これとは逆に、他の装置からの信号や命令、データ、ファイルなどが、ネットワーク360を経てコンピュータ装置300の通信インタフェース330を通じてコンピュータ装置300に受信されてよい。通信インタフェース330を通じて受信された信号や命令、データなどは、プロセッサ320やメモリ310に伝達されてよく、ファイルなどは、コンピュータ装置300がさらに含むことのできる記録媒体(上述した永続的記録装置)に記録されてよい。
【0056】
入力/出力インタフェース340は、入力/出力装置(I/O device)350とのインタフェースのための手段であってよい。例えば、入力装置は、マイク、キーボード、またはマウスなどの装置を、出力装置は、ディスプレイ、スピーカのような装置を含んでよい。他の例として、入力/出力インタフェース340は、タッチスクリーンのように入力と出力のための機能が1つに統合された装置とのインタフェースのための手段であってもよい。入力/出力装置350は、コンピュータ装置300と1つの装置で構成されてもよい。
【0057】
また、他の実施形態において、コンピュータ装置300は、
図3の構成要素よりも少ないか多くの構成要素を含んでもよい。しかし、大部分の従来技術的構成要素を明確に図に示す必要はない。例えば、コンピュータ装置300は、上述した入力/出力装置350のうちの少なくとも一部を含むように実現されてもよいし、トランシーバ、データベースなどのような他の構成要素をさらに含んでもよい。
【0058】
このように、本発明の実施形態によると、ディープラーニングコンパイラの内部コードを修正しなくても、コンパイラで生成した量子化されたモデルとモデル内部に存在する量子化パラメータを利用して正確度の低下を回復することができる。
【0059】
上述した装置は、ハードウェア構成要素、またはハードウェア構成要素とソフトウェア構成要素との組み合わせによって実現されてよい。例えば、実施形態で説明された装置および構成要素は、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ、マイクロコンピュータ、FPGA(field programmable gate array)、PLU(programmable logic unit)、マイクロプロセッサ、または命令を実行して応答することができる様々な装置のように、1つ以上の汎用コンピュータまたは特殊目的コンピュータを利用して実現されてよい。処理装置は、オペレーティングシステム(OS)およびOS上で実行される1つ以上のソフトウェアアプリケーションを実行してよい。また、処理装置は、ソフトウェアの実行に応答し、データにアクセスし、データを記録、操作、処理、および生成してもよい。理解の便宜のために、1つの処理装置が使用されるとして説明される場合もあるが、当業者であれば、処理装置が複数個の処理要素および/または複数種類の処理要素を含んでもよいことが理解できるであろう。例えば、処理装置は、複数個のプロセッサまたは1つのプロセッサおよび1つのコントローラを含んでよい。また、並列プロセッサのような、他の処理構成も可能である。
【0060】
ソフトウェアは、コンピュータプログラム、コード、命令、またはこれらのうちの1つ以上の組み合わせを含んでもよく、思うままに動作するように処理装置を構成したり、独立的または集合的に処理装置に命令したりしてよい。ソフトウェアおよび/またはデータは、処理装置に基づいて解釈されたり、処理装置に命令またはデータを提供したりするために、いかなる種類の機械、コンポーネント、物理装置、コンピュータ記録媒体または装置に具現化されてよい。ソフトウェアは、ネットワークによって接続されたコンピュータシステム上に分散され、分散された状態で記録されても実行されてもよい。ソフトウェアおよびデータは、1つ以上のコンピュータ読み取り可能な記録媒体に記録されてよい。
【0061】
実施形態に係る方法は、多様なコンピュータ手段によって実行可能なプログラム命令の形態で実現されてコンピュータ読み取り可能な媒体に記録されてよい。前記コンピュータで読み取り可能な媒体は、プログラム命令、データファイル、データ構造などを単独でまたは組み合わせて含んでよい。ここで、媒体は、コンピュータ実行可能なプログラムを継続して記録するものであっても、実行またはダウンロードのために一時記録するものであってもよい。また、媒体は、単一または複数のハードウェアが結合した形態の多様な記録手段または格納手段であってよく、あるコンピュータシステムに直接接続する媒体に限定されることはなく、ネットワーク上に分散して存在するものであってもよい。媒体の例としては、ハードディスク、フロッピー(登録商標)ディスク、および磁気テープのような磁気媒体、CD-ROMおよびDVDのような光媒体、フロプティカルディスク(floptical disk)のような光磁気媒体、およびROM、RAM、フラッシュメモリなどを含み、プログラム命令が記録されるように構成されたものであってよい。また、媒体の他の例として、アプリケーションを配布するアプリケーションストアやその他の多様なソフトウェアを供給または配布するサイト、サーバなどで管理する記録媒体または格納媒体を挙げることができる。プログラム命令の例としては、コンパイラによって生成されるもののような機械語コードだけでなく、インタプリタなどを使用してコンピュータによって実行される高級言語コードを含む。
【0062】
以上のように、実施形態を、限定された実施形態および図面に基づいて説明したが、当業者であれば、上述した記載から多様な修正および変形が可能であろう。例えば、説明された技術が、説明された方法とは異なる順序で実行されたり、かつ/あるいは、説明されたシステム、構造、装置、回路などの構成要素が、説明された方法とは異なる形態で結合されたりまたは組み合わされたり、他の構成要素または均等物によって対置されたり置換されたとしても、適切な結果を達成することができる。
【0063】
したがって、異なる実施形態であっても、特許請求の範囲と均等なものであれば、添付の特許請求の範囲に属する。