以下、本開示の実施例中の図面を参照しながら本開示の実施例中の技術案に対して明確かつ完全に説明する。明らかに、説明された実施例は、本開示の実施例の一部に過ぎず、全部ではない。本開示の実施例に基づいて、当業者が創造性の労働をせずに得られた他の全ての実施例は、何れも本開示の保護請求する範囲に属する。
本開示の特許請求の範囲、明細書、および、図面中の「第一」、「第二」、「第三」、および、「第四」などの用語が、異なる対象物を区別するために利用されており、特定の順を説明するために利用されていないことが理解されるべく。本開示の明細書と特許請求の範囲内の「備える(「包括」は中に含める、入れるの意味である)」と「包含(「包含」はその中に含まれるという意味である)」という用語は、説明される特徴、全体、ステップ、動作、要素および/または構成要素の存在を指すが、一つ以上の他の特徴、整体、ステップ、動作、要素、構成要素および/またはそれらの組合せの存在または追加を排除するものではない。
本開示の説明書に用いられる用語が特定の実施例を説明する目的のためだけのものであり、本開示を限定することを意図しないことは更に理解されるべく。本開示の明細書と特許請求の範囲に用いられるように、単数形「一」、「一つ」、および、「この」が、文脈が明らかに他のことを示しない限り、複数形を備えることを意図する。本開示の説明書と特許請求の範囲内の「および/または」という用語は、関連して列挙される項目の一つ以上の任意の組合せ及び全ての可能な組合せを指し、これらの組合せを含むことも更に理解されるべく。
本開示の明細書と特許請求の範囲に用いられるように、「若し」という用語が、文脈に応じて、「…場合」または「…すると」または「決定に応答」または「検出に応答」に説明される。同様に、「決定される場合」または「検出される場合(説明される条件またはイベント)」という連語が、文脈に応じて、「決定されると」または「決定に応答」または「検出されると(説明される条件またはイベント)」または「検出に応答(説明される条件またはイベント)」に説明される。
一般的に言えば、データを量子化するとき、選択された値の範囲が広い場合、量子化後のデータの精度は低くなり、値の範囲が小さ過ぎる場合、多過ぎるデータが切り捨てられ、両側に分布されているデータに関する情報は失われ、そのうち値の範囲がデータを量子化するための最小の切捨て閾値と最大の切捨て閾値との間の数値の範囲を指す。よって、データを量子化する損失が最小限になるか、または小さくなるように、データを量子化するための適切な一対の切捨て閾値を見出す必要がある。従来、KLダイバージェンス(Kullback-Leibler divergence)の方法で最良の切捨て閾値を決定し、そのうちKLダイバージェンスが量子化前と量子化後とのデータの間の相関度を決定することはできる。KLダイバージェンスは、相対エントロピー(relative entropy)、情報ダイバージェンス(information divergence)、情報ゲイン(information gain)とも呼ばれ、2つの確率がPとQとの間に分布する差別の尺度である。量子化前の32ビットの浮動小数点数の分布をPにし、量子化後の8ビットの整数の分布をQにすると、PとQとの間のKLダイバージェンスが小さければ小さいほど、量子化前後の分布はより近くなり、量子化もより有効になることを示す。然しながら、本願発明者は、従来のKL法で得られた切捨て閾値が実現した量子化効果が良好ではなく、通常、大きな精度損失を齎すことを発見した。
このために、本開示の実施例は、対称的に量子化するための切捨て閾値を決定する新規案を提案し、従来の技術(例えばKL法)よりも量子化精度の損失を少なくすることができる。本開示の実施例によれば、機械学習モデルに用いられる1グループの量子化待ちデータを取得した後、複数対の切捨て閾値を使用して1グループの量子化待ちデータをそれぞれ量子化することにより、複数グループの量子化後のデータを決定し、ここで、複数対の切捨て閾値の各々は、対称される切捨て正の値と切捨て負の値とを含む。次いで、量子化後のデータの絶対値の平均値と1グループの量子化待ちデータの絶対値の平均値との間の差異を評価指標として、複数対の切捨て閾値から適切な1対の切捨て閾値を選択する。この方式よって、より最適な切捨て閾値を見付けることができる。
以下は、図1-1~図1-10を参照しながら本開示の基本原理と若干の例示的な実施例を説明する。これらの例示的な実施例は、当業者に本開示の実施例をよりよく理解させてから実施できるようにするためだけに与えられ、決して如何なる方式で本開示の範囲を限定するものではないことが理解されるべく。
図1-1は、本開示の実施例に係るデータを処理する方法のための処理システム1-100を示す模式図である。図1-1に示すように、処理システム1-100は、複数のプロセッサ1-101-1、1-101-2、1-101-3(総称してプロセッサ1-101という)とメモリ1-102を備え、そのうちプロセッサ1-101は、コマンドシーケンスを実行し、メモリ1-102は、データを記憶する。ランダムメモリ(RAM、Random Access Memory)とレジスターステックを更に備える。処理システム1-100中の複数のプロセッサ1-101は、メモリ空間の一部を共有してもよく、例えばRAMメモリ空間とレジスタースタックの一部を共有し、または、それぞれのメモリ空間を同時に有してもよい。
本開示の実施例に係る各々の方法は、複数のプロセッサ(マルチコア)を備える処理システム1-100(例えば、人工知能チップ)の任意の1つのプロセッサに適用され得ることが理解されるべく。このプロセッサは、例えばCPU(Central Processing Unit、セントラルプロセッサ)のような汎用プロセッサであってもよく、人工知能演算を実行するための人工知能プロセッサ(IPU)であってもよいし、そのうち人工知能演算は機械学習演算、脳のような演算などを含むこともできる。ここで、機械学習演算は、ニューラルネットワーク演算、k-means演算、ベクトルマシンサポート演算などが含まれる。この人工知能プロセッサは、例えばGPU(Graphics Processing Unit、パターン処理ユニット)、NPU(Neural-Network Processing Unit、ニューラルネットワーク処理ユニット)、DSP(Digital Signal Process、ジタル信号処理ユニット)、フィールドプログラマブルゲートアレイ(Field-Programmable Gate Array、FPGA)チップのうちの1つまたは組合せを含んでもよい。本開示は、プロセッサの具体的なタイプを限定しない。また、処理システム1-100中の複数のプロセッサのタイプは、同一であってもよいし、異なってもよい。本開示はこれを限定しない。
1つの可能な実施例において、本開示に言及されるプロセッサは、複数の処理ユニットを備えることができ、各処理ユニットは、割り当てられた各々のタスク、例えばコンボルーション演算タスク、プール化タスク又はフル接続タスクなどを独立して実行することもできる。本開示は、処理ユニットおよび処理ユニットによって実行されるタスクを限定しない。
図1-2は、本開示の実施例に係るニューラルネットワーク1-200の例示的なアーキテクチャを示す模式図である。ニューラルネットワーク(neural network、NN)は、生物系ニューラルネットワークの構造と機能を模倣する数学モデルであり、多くのニューロンに接続されて演算する。よって、ニューラルネットワークは、演算モデルであり、多くのバイト(または「ニューロン」と呼ばれる)に互いに接続されて構成される。各バイトは、活性化関数(activation function)と呼ばれる特定の出力関数を表す。各2つのニューロン間の接続は、何れもこの接続信号による1つの重み値を表し、重み値と呼ばれ、ニューラルネットワークの記憶に相当する。ニューラルネットワークの出力は、ニューロン間の接続式、および、重み値と活性化関数によって、異なる。ニューラルネットワークにおいて、ニューロンは、ニューラルネットワークの基本単位である。ニューロンは、所定の数の入力と1つのバイアスを取得し、信号(値)が達したときに1つの重み値を乗算する。接続とは、1つのニューロンを他の層又は同一の層の別のニューロンに接続することであり、それと関係がある重み値が伴う。また、バイアスとは、ニューロンの余分の入力であり、常に1であり、自己の接続用重み値を有する。これは、全ての入力が空(全て0)であっても、ニューロンも活性化されることを保証することができる。
なお、ニューラルネットワーク中のニューロンに非線形関数を適用しない場合、ニューラルネットワークはただ線形関数であり、すると、シングルニューロンに比べて強度が強いわけではない。1つのニューラルネットワークの出力結果を0から1の間にあるようにすると、例えば猫/犬の鑑別する例において、0に近い出力を猫、1に近い出力を犬と見なすことができる。この目的を達成するために、例えばシグモイド(sigmoid)活性化関数などの活性化関数がニューラルネットワークに導入される。この活性化関数に関しては、その戻り値が0から1までの数字であることが分かればよい。よって、活性化関数は、ニューラルネットワークに非線形性を導入するために利用され、ニューラルネットワーク演算結果をより狭い範囲に縮小する。実際には、どのように活性化関数を表するかが重要ではなく、幾つかの重み値によって1つの非線形関数をパラメーター化することが重要であり、これらの重み値を変えることでこの非線形関数を変えることができる。
図1-2は、ニューラルネットワーク1-200のアーキテクチャを示す模式図である。図1-2に示すニューラルネットワークにおいて、入力層1-210、インプリケーション層1-220、および、出力層1-230という3つの層が含まれ、そのうち図1-2に示すインプリケーション層1-220は3つの層であり、勿論、より多いでもよいし、より少ないでも良い。ここで、入力層1-210のニューロンは、入力ニューロンと呼ばれる。入力層をニューラルネットワーク中の第1層とする場合、信号(値)を入力して次の層に伝送する必要がある。それは、入力信号(値)に対して如何なる操作も行わず、関連する重み値及びバイアスを有しない。図1-2に示すニューラルネットワークにおいて、4つの入力信号(値)を受信することができる。
インプリケーション層1-220は、入力データに異なる変換を適用するためのニューロン(バイト)に利用される。1つのインプリケーション層は、垂直に並んでいるニューロンの集合(Representation)である。図1-2に示すニューラルネットワークにおいて、3つの層が含まれ、詳細は、第1インプリケーション層は4つのニューロン(バイト)があり、第2層は6個のニューロンがあり、第3の層は3個のニューロンがある。最後に、インプリケーション層は、出力層に値を伝送する。図1-2に示すニューラルネットワーク1-200は、3つのインプリケーション層中の各ニューロン間を完全に接続し、3つのインプリケーション層中の各ニューロンが何れも次の層の各ニューロンに接続される。なお、各ニューラルネットワークのインプリケーション層は完全に接続されているわけではない。
出力層1-230のニューロンは、出力ニューロンと呼ばれる。出力層は、最後の1つのインプリケーション層からの出力を受信する。出力層1-230によって、所望の値と所望の範囲を決定することができる。図1-2に示すニューラルネットワークにおいて、出力層は3つのニューロン、即ち3つの出力信号(値)がある。
実際の適用において、ニューラルネットワークの作用は、多くのサンプルデータ(入力と出力を備える)を予め与えることでトレーニングするものである。トレーニングが完了した後に、将来の実環境の入力に対して正確な出力を求めるためにニューラルネットワークを利用する。
ニューラルネットワークのトレーニングを論じる前に、損失関数を定義する必要がある。損失関数とは、ニューラルネットワークが特定のタスクでどれだけうまく機能するかを示す関数である。実行時の最も直接的な方法は、トレーニングプロセス中で各サンプルデータに対してニューラルネットワークに沿って伝送してから1つの数値を求めてから、この数値と実際の数値を比べて差を演算して2乗する。このように演算し得たものが、予測値と実際の数値との間の距離である。ニューラルネットワークのトレーニングは、この距離または損失関数の値を小さくすることが望ましいことである。
ニューラルネットワークのトレーニングを始めるとき、重み値がランダムに初期化される必要がある。初期化されたニューラルネットワークが、良好な結果を提供しないことは明らかである。トレーニングプロセスにおいて、悪いニューラルネットワークから始めることを想定しており、トレーニングにより高精度ある1つのネットワークが得られる。同時に、トレーニングを終了するとき、損失関数の関数値が非常に小さくすることがさらに望ましい。
ニューラルネットワークのトレーニングプロセスは、2段階に分けられ、そのうち第1段階は、信号の順方向処理であり、入力層1-210からインプリケーション層1-220を経て、最後に出力層1-230までに到達する。第2段階は、勾配の逆伝送であり、勾配に応じてニューラルネットワーク中の各層の重み値とバイアスを順に調節し、出力層1-230からインプリケーション層1-220まで、最後に入力層1-210に到達する。
順方向処理において、ニューラルネットワークの入力層1-210に入力値が入力され、ニューラルネットワークの出力層1-230から予測値と呼ばれる出力が得られる。入力値がニューラルネットワークの入力層1-210に提供される場合、如何なる操作も行なわない。インプリケーション層において、第2インプリケーション層が第1インプリケーション層から予測中間結果値を取得して演算や活性化という操作を行なってから、得られた予測中間結果値を次のインプリケーション層に伝送する。後続の層において、同じ操作を実行し、最後にニューラルネットワークの出力層1-230において、出力値を得る。
順方向処理の後、予測値と呼ばれる出力値が得られる。誤差を演算するために、損失関数を使用して予測値と実際の出力値を比べてから対応する誤差値を得る。逆伝送は、微分学のチェーン法を使用しており、チェーン法において、先ずニューラルネットワークの最終層の重み値に対応する誤差値の導関数を演算する。これらの導関数は、勾配と呼ばれ、次いで、これらの勾配を利用することでニューラルネットワーク中の最後からの2番目の層の勾配が演算される。この処理は、ニューラルネットワーク中の各重み値の勾配が求められるまでに繰り返される。最後に、誤差値を低減する目的を達成するように、重み値から対応する勾配を減算することで、重み値を1回更新する。
また、ニューラルネットワークの場合、微調整とは、トレーニングされたニューラルネットワークをロードすることであり、微調整プロセスは、トレーニングプロセスと同様に2段階に分けられており、そのうち第1段階は、信号の順方向処理であり、第2段階は、勾配の逆伝送であり、トレーニングされたニューラルネットワークの重み値を更新する。トレーニングと微調整との違いは、トレーニングは、初期化されたニューラルネットワークをランダムに処理し、ニューラルネットワークを最初からトレーニングする一方、微調整は、最初からトレーニングしない。
ニューラルネットワークに対してトレーニングするか或いは微調整するプロセスにおいて、ニューラルネットワークが信号の正方向処理および誤差に対応する逆伝搬プロセスを1回経る毎に、ニューラルネットワーク中の重み値が勾配を使用して1回更新され、このとき、1回の反復(iteration)と呼ばれる。期待通りの精度あるニューラルネットワークを取得するために、トレーニングプロセスにおいて、膨大なサンプルデータセットが必要となる。この場合、サンプルデータセットをコンピュータに一度に入力することはできない。よって、この課題を解決するために、サンプルデータセットを複数のブロックに分割し、各ブロックをコンピュータに伝送し、各ブロックのデータセットに対して順方向処理を行った後に、ニューラルネットワークの重み値を対応して更新する必要がある。完全な一つのサンプルデータセットがニューラルネットワークの1回の順方向処理を通じて、1回の重み値の更新を対応して返す場合、このプロセスは1周期(epoch)と呼ばれる。実際には、ニューラルネットワークにおいて、完全な一つのデータセットを1回伝送するだけでは不十分であり、同じニューラルネットワークにおいて完全な一つのデータセットを数回で伝送する必要がある。つまり、最後に期待通りの精度あるニューラルネットワークを取得するのは、複数の周期が必要である。
ニューラルネットワークに対してトレーニングするか或いは微調整するプロセスにおいて、一般的に、望ましくは、速度が速ければ速いほど良い、正確さが高ければ高いほど良い。ニューラルネットワークのデータは、例えば浮動小数点数などが高精度データフォーマットで表されているため、トレーニング又は微調整のプロセスにおいて、関連するデータは何れも高精度データフォーマットであり、次いで、トレーニング後のニューラルネットワークを量子化する。量子化の対象物がニューラルネットワーク全体の重み値であり、量子化後の重み値が何れも8ビットの固定小数点数である場合を例示とすると、1つのニューラルネットワークには常に何百万個の接続があるため、殆どの空間は何れもニューロン接続の重み値によって占められる。ましてこれらの重み値が何れも異なる浮動小数点数である。各層の重み値は、例えば(-3.0,3.0)などのように、何れもある決定区間の正規分布になる傾向がある。ニューラルネットワーク中の各層の重み値に対応する最大値と最小値を保存し、各浮動小数点数値を8ビットの固定小数点数で表す。ここで、最大値、最小値の範囲内で256個の量子化の間隔を空間的に線形に分割し、それぞれを8ビットの固定小数点数で表す。例えば、(-3.0,3.0)区間において、バイト0は-3.0を表し、バイト255は3.0を表す。これによって類推すれば、バイト128は0を表す。
高精度データフォーマットで表されるデータについて、浮動小数点数を例示とし、コンピューター体系構造から分かるように、浮動小数点数の演算表示法、固定小数点数の演算表示法に応じて、同じ長さの固定小数点演算と浮動小数点演算について、浮動小数点演算の演算モードはより複雑になり、より多くの論理装置から浮動小数点演算器を構成することを必要とする。このように体積から、浮動小数点演算器の体積は固定小数点演算器の体積よりも大きい。固定小数点演算と浮動小数点演算との間の消費電力の差異が通常のオーダーであるように、浮動小数点演算器は、より多くのリソースを消費することを必要とする。つまり、固定小数点演算器に比べて、浮動小数点演算器の占めるチップ面積および消費電力は、いずれも数倍大きい。
図1-3は、本開示の実施例に係るデータを量子化するためのプロセス
1-300を示す模式図である。図1-3に示すように、入力データ1-310は、量子化されていない浮動小数点数、例えば32ビットの浮動小数点数であり、入力データ1-310をニューラルネットワークモデル1-340に直接入力して処理すると、演算リソースが多くかかり、処理速度が遅くなる。よって、ブロック1-320において、量子化後のデータ1-330(例示えば8ビットの整数)を取得するように、入力データを量子化することができる。量子化後のデータ1-330がニューラルネットワークモデル1-340に入力して処理される場合、8ビットの整数演算が速いため、ニューラルネットワークモデル1-340は、入力データに対する処理をより速く完了し、対応する出力結果1-350を生成する。
量子化されていない入力データ1-310から量子化後のデータ1-330までの量子化プロセスにおいて、ある程度で幾つかの精度損失が発生し、精度損失の程度は、出力結果1-350の正確さに直接影響を与える。よって、入力データ1-330に対して量子化処理するプロセスにおいて、量子化処理の精度損失を最小限にするか、あるいは、できるだけ小さくする必要がある。
図1~4Aは、本開示の実施例に係るデータを対称的に量子化するための1-400を示す。図1~4A示すように、最も簡単な対称的に量子化する方法は、量子化待ちデータの中のすべての値の中の絶対値最大値、即ち|max|を直接選択し、次いで、-|max|から|max|までの範囲内で量子化することにより、量子化後のデータを生成する。然しながら、当該方法は、如何なる切捨てを行わなく、量子化後のデータ精度が低くなる。
図1-4Bは、本開示の実施例に係る切捨て閾値に基づいてデータを対称的に量子化する1-450を示す。図1~4A中の直接に量子化する方法とは異なり、図1-4Bにおいて、切捨て閾値Tが選択され、-|T|から|T|までの範囲外のデータが、-|T|または|T|に設定される。例えば、図1-4Bの例において、円1-460中の量子化待ち3つの値が、切捨て範囲外にあるため、-|T|の値として量子化され、データポイント1-470に量子化される。この方式によって、切捨て閾値を使用して量子化待ちデータの値の範囲を縮小することにより、量子化後のデータ精度を向上させることができる。然しながら、どのように量子化の精度損失が最小となる切捨て閾値を取得するかは、解決すべき課題である。
図1-5は、本開示の実施例に係るデータを処理するための方法1-500を示すフローチャートである。方法1-500は、図1-1を参照しながら説明する1つ以上のプロセッサ1-101によって実行されてもよいことが理解されるべく。
ブロック1-502において、機械学習モデルに用いられる1グループの量子化待ちデータが取得される。例えば、上記の図1-3を参照すると、量子化待ち入力データ1-310を取得することができ、入力データを量子化することにより、ニューラルネットワークモデル1-340の処理速度を向上させることができる。また、ニューラルネットワークモデル自身の一部のパラメータ(例示えば重み値など)を量子化することもでき、ネットワークパラメータを量子化することにより、ニューラルネットワークモデルのサイズを小さくすることができる。幾つかの実施例において、量子化待ちデータは、32ビットの浮動小数点数であり得る。オプションとして、量子化待ちデータは、さらに、他のビットの浮動小数点数又は他のデータ型であってもよい。
ブロック1-504において、複数対の切捨て閾値を使用して1グループの量子化待ちデータをそれぞれ量子化することにより、複数グループの量子化後のデータを決定し、ここで、切捨て閾値の複数対の各々は、対称される切捨て正の値と切捨て負の値とを含む。対称的に量子化する案において、切捨て閾値は、対称される1対の正負値、即ち切捨て正の値と切捨て負の値であり、この2つの値の数値自身が同じであるが記号が反対である。
本開示の実施例によれば、複数対の切捨て閾値を選択し、量子化待ちデータをそれぞれ量子化することができる。幾つかの実施例において、幾つかの切捨て閾値は、固定間隔をあけて、例えば量子化待ちデータの中の絶対値最大値に応じて所定の距離をあけて一つの切捨て閾値が選択されてもよい。幾つかの実施例において、幾つかの特定の位置における切捨て閾値、例えば、絶対値最大値の幾つかの所定の割合の値のみを選択することもできる。
幾つかの実施例において、対応する1つ以上の量子化パラメータを、各対の切捨て閾値に応じて演算することができ、次いで、量子化待ちデータを、演算された量子化パラメータを使用して量子化することができる。オプションとして、量子化待ちデータを、切捨て閾値に応じて各式またはモデルによって直接量子化することができ、各量子化パラメータを単独的に演算する必要はない。
ブロック1-506において、1グループの量子化待ちデータの量子化に用いるように、複数グループの量子化後のデータの中の各グループの量子化後のデータの絶対値の平均値と1グループの量子化待ちデータの絶対値の平均値との間の差異に基づいて、複数対の切捨て閾値から1対の切捨て閾値を選択することができる。本願発明者は、研究と多くの実験により、量子化前後のデータの絶対値の平均値の差異が量子化前後の精度損失を反映することができ、ここで、絶対値の平均値の差異が小さければ小さいほど、量子化操作の精度損失は小さくなる。よって、本開示の実施例は、量子化前後のデータの絶対値の平均値の差異を最適な切捨て閾値を選択する指標とし、従来のKL法よりも精度損失が小さくなることを実現することができる。
幾つかの実施例において、量子化後のデータの絶対値の平均値と量子化待ちデータの絶対値の平均値との間の差異は、2つの絶対値の平均値の間の差分値であってもよい。オプションとして、量子化後のデータの絶対値の平均値と量子化待ちデータの絶対値の平均値との間の差異は、2つの絶対値の平均値の間の差分値を量子化待ちデータの絶対値の平均値で除算してから絶対値を求めることもできる。
幾つかの実施例において、最良の1対の切捨て閾値を選択した後、選択された1対の切捨て閾値を使用して1グループの量子化待ちデータを量子化して量子化後のデータを得ることは、1グループの量子化待ちデータの中の切捨て正の値よりも大きい数値を正の値に切り捨て、1グループの量子化待ちデータの中の切捨て負の値よりも小さい数値を負の値に切り捨てることと、その後、得られた量子化後のデータをニューラルネットワークモデルに入力して処理に用いることを含んでもよい。
図1-6は、本開示の実施例に係る対称的に量子化するための切捨て閾値を検索するための方法1-600を示すフローチャートであり、方法1-600は、量子化待ちデータに基づいて最良の1対の切捨て閾値を決定してデータの量子化に用いる。
ブロック1-602において、量子化待ちデータの絶対値の平均値および量子化待ちデータの絶対値最大値が決定し、ここで、絶対値の平均値は、量子化待ちデータの中のすべてのデータの絶対値の和を要素数で除算して得る値であり、また、最小平均値の差異を初期化し、例えば浮動小数点数中の最大値を初期設定し、循環検索する検索順序iを初期化する(例えば0に初期化する)。幾つかの実施例において、検索順序iを合計検索回数の半分に初期化されることもでき、即ち中間から検索し始まることで、検索効率を向上させることができる。本開示の実施例によれば、1ラウンド以上の閾値検索プロセスを設定してもよく、各ラウンドの閾値検索が同じまたは異なる合計検索回数を有してもよい。幾つかの実施例において、各ラウンドの合計検索回数を10-32回の間に設定することができる。一般的に言えば、合計検索回数が多ければ多いほど、かかる検索時間が長くなり、検索される切捨て閾値もより正確になる。然しながら、合計検索回数がある値に達すると、検索効果が本質上向上しなくなる可能性がある。
次いで、第1ラウンドの粗粒度の切捨て閾値の検索プロセスを始める。例えば、図1-7Aは、本開示の実施例に係る対称的に量子化するための切捨て閾値を粗粒度で検索するための例示を示す1-700である。図1-7Aに示すように、量子化待ちデータの中から10個の候補の切捨て閾値(図1-7Aにおいて破線でマールする)を決定し、これらの10個の候補の切捨て閾値(図1-7Aにおいて、切捨て正の値のみを示し、対応する切捨て負の値は示していない)を順に使用して量子化プロセスを実行し、量子化前後のデータの絶対値の平均値の差異に基づいて最良の1対の切捨て閾値を決定することができる。
ブロック1-604において、検索順序iが合計検索回数よりも小さいか否かを判定し、即ち各対の切捨て閾値を順に選択して量子化するとき、すべての対の切捨て閾値の演算が既に完了したか否かを判定する。検索順序iが合計検索回数未満である場合、ブロック1-606において、現在の検索順序序iに基づいて、1対の切捨て閾値を決定し、当該1対の切捨て閾値は、それぞれ、絶対値最大値/合計検索回数*(i+1)、および、絶対値最大値/合計検索回数*(i+1)である。ブロック1-608において、当該1対の切捨て閾値を使用して量子化待ちデータを量子化して、対応する量子化後のデータQuant_data_iを得る。次いで、ブロック1-610において、量子化後のデータの絶対値の平均値Quant_data_mean_iと量子化待ちデータの絶対値の平均値data_meanとの間の差異Distance_i=abs(Quant_data_mean_i-Data_mean)/Data_meanを演算する。
ブロック1-612において、演算された差異Distance_iが現在の最小の差異よりも小さいか否かを判定する。Yesであれば、ブロック1-614において、演算された差異Distance_iを現在の最小の差異に設定し、差異が最小である場合の切捨て閾値を記録し、次いで、ブロック1-616において、検索順序iをインクリメントする(即ちi++する)。NOであれば、ブロック1-616において、検索順序序iを直ちにインクリメントし、即ち次の対の切捨て閾値の差異を継続して決定する。次いで、検索順序iの値が合計検索回数に達するまでにブロック1-604乃至1-616を循環し、ブロック1-618において、第1ラウンドの切捨て閾値の検索プロセスを退出する。図1-7Aに示すように、第1ラウンドの検索によって破線1-770での切捨て閾値に対応する差異が最小と判定される。このことから分かるように、切捨て閾値の検索プロセスは、複数対の切捨て閾値を使用して量子化待ちデータを量子化し、複数グループの量子化後のデータの中の、量子化待ちデータが絶対値の平均値の差異が最も小さい1グループの量子化後のデータを決定し、次いで、このグループの量子化後のデータに対応する1対の切捨て閾値を、複数対の切捨て閾値から選択する。
オプションとして、第2ラウンドの細粒度の切捨て閾値の検索プロセスを実行することができる。第2ラウンドの検索プロセスは、方法1-600を参照することもできるが、第2ラウンドの検索は第1ラウンドの最良の切捨て閾値1-770の周囲の所定の範囲内(例えば選択された切捨て閾値1-770の前の1つの切捨て閾値と後の1つの切捨て閾値との間)で行なわれ、第1ラウンドの検索結果に対して微細化する。例えば第2ラウンドの検索を行なうとき、各対の切捨て閾値の間の間隔は、(絶対値最大値* 2)/(第1ラウンドの合計検索回数*第2ラウンドの合計検索回数)であってもよい。図1~7Bは、本開示の実施例に係る対称的に量子化するための切捨て閾値を細粒度で検索するための1~750を示す。図1-7Bに示すように、第2ラウンドの検索を経て、細粒度の最良の切捨て閾値が1-772と1-778に決定される。2ラウンドの検索によって、より正確な切捨て閾値が得られ、更に量子化に起因する精度損失を低減することができる。
図1-8は、本開示の実施例に係る最良の切捨て閾値を反復して検索するための方法1-800を示すフローチャートである。
ブロック1-806において、最小の差異diff_minが予め設定された所定の閾値よりも小さいか否かを判定する。NOであれば、ブロック1-808において、選択された1対の切捨て閾値(最小の差異diff_minに対応する値を新たな絶対値の最大値に設定する)に基づいて、3対の切捨て閾値を新たに決定し、最小の差異diff_minが所定の閾値より小さくなるまでに上記プロセスを繰り返し、ブロック1-810において、切捨て閾値の反復プロセスを退出する。幾つかの実施例において、最小の差異diff_minが所定の閾値未満であるという反復停止条件に加えて、例えば最大の反復回数が所定の最小の間隔に達するまでに、他の反復停止条件を設定してもよい。また、図1-8の方法1-800において、最良の1対の切捨て閾値を反復して選択することを示したが、反復を実行せずに1回だけ実行し、次いで最小の差異diff_minに対応する一対の切捨て閾値をそのまま最終的な切捨て閾値としてもよい。
幾つかの実施例において、以下の式(1)~(3)によって各対の切捨て閾値を使用してデータを量子化するときの量子化パラメータを決定し得る。
ここで、pは量子化待ちデータの中の絶対値最大値、nは量子化後の二進法桁、Sおよびfは量子化パラメータ、ceilは切上げを表す。
1対の切捨て閾値を選択した後、量子化待ちデータの量子化パラメータとして、この対の切捨て閾値に対応するSとfを直接取得する。
なお、前述した方法の実施例のそれぞれについて、説明を簡単にするために、それらを一連の動作の組合せとして表したが、当業者であれば、本開示に従って、ある幾つかのステップが他の序をとることができ、または同時に行われることができるため、本開示は記載された動作の序によって限定されないことを理解するであろう。次に、当業者であれば、明細書に記載される実施例が何れも選択可能な実施例に属し、関連する動作及びモジュールが本開示に必ずしも必要になるものではないことを理解するであろう。
なお、フローチャートの中の各ステップが矢印の指示に従って順に表示されているが、これらのステップが矢印の指示の順に順次実行されることは必須ではない。これらのステップの実行は、本明細書に明示的に記載されていない限り、厳密な順序の制限はなく、他の順序で実行されてもよい。フローチャートの中の少なくとも一部のステップは、複数のサブステップまたは複数の段階を含んでもよく、これらのサブステップまたは段階は、必ずしも同じ時点で実行完了する必要がなく、異なる時点で実行してもよく、これらのサブステップまたは段階の実行順序も、必ずしも順次行なう必要はなく、他のステップまたは他のステップのサブステップまたは段階の少なくとも一部と順番にまたは交互に実行してもよい。
図1-9は、本開示の実施例に係るデータを処理するための装置1-900を示すブロック図である。図1-9に示すように、装置1-900は、量子化待ちデータ取得ユニット1-910、量子化後のデータ決定ユニット1-920、および、切捨て閾値選択ユニット1-930を備える。量子化待ちデータ取得ユニット1-910は、機械学習モデルに用いられる1グループの量子化待ちデータを取得する。量子化後のデータ決定ユニット1-920は、複数対の切捨て閾値を使用して1グループの量子化待ちデータをそれぞれ量子化することにより、量子化後の複数グループのデータを決定し、ここで、複数対の切捨て閾値の各々は、対称される切捨て正の値と切捨て負の値とを含む。切捨て閾値選択ユニット1-930は、量子化後の複数グループのデータの中の各グループの量子化後のデータの絶対値の平均値と1グループの量子化待ちデータの絶対値の平均値との間の差異に基づいて、複数対の切捨て閾値から1対の切捨て閾値を選択して、1グループの量子化待ちデータの量子化に用いる。
また、装置1-900中の量子化待ちデータ取得ユニット1-910、量子化後のデータ決定ユニット1-920、および、切捨て閾値選択ユニット1-930は、さらに本開示の各々の実施例に係るステップおよび/または動作を実行するように構成されてもよい。
上記の装置の実施例は、ただ例示的なものであり、本開示の装置は更に他の方式で実現されてもよいことが理解されるべく。例えば上記の実施例で説明したユニット/モジュールの分割は、一つの論理的機能の分割のみであったが、実際に実現する場合には別の分割方式があってもよい。例えば複数のユニット、モジュール、またはサブアセンブリーは、組み合わせてもよいし、別のシステムに統合されてもよく、または幾つかの特徴は、省略されてもよいし、または実行されなくてもよい。
また、特に説明しない限り、本開示の各実施例中の各機能ユニット/モジュールは、1つのユニット/モジュールに統合されてもよいし、各ユニット/モジュールが物理的にそれぞれ存在してもよいし、2つ以上のユニット/モジュールが統合されてもよい。統合された上記のユニット/モジュールは、ハードウェアの形態で実現されてもよいし、ソフトウェアプログラムモジュールの形態で実現されてもよい。
統合された前記ユニット/モジュールがハードウェアの形態で実現される場合、このハードウェアは、デジタル回路、アナログ回路などであり得る。ハードウェア構造の物理的な実現は、トランジスタ、メモリスタなどを備えるが、これらに限定されない。前記人工知能プロセッサは、特に説明しない限り、例えばCPU、GPU、FPGA、DSP、および、ASICなどの任意の適切なハードウェアプロセッサであってもよい。前記記憶ユニットは、特に説明しない限り、例えば抵抗ランダムアクセスメモリRRAM (Resistive Random Access Memory)、ダイナミックランダムアクセスメモリDRAM (Dynamic Random Access Memory)、スタティックランダムアクセスメモリSRAM (Static Random-Access Memory)、強化ダイナミックランダムアクセスメモリEDRAM(Enhanced Dynamic Random Access Memory)、高帯域幅メモリHBM (High-Bandwidth Memory)、ハイブリッドメモリ立方体HMC (Hybrid Memory Cube)などの、任意の適切な磁気または光磁気記憶媒体であり得る。
統合された前記ユニット/モジュールがソフトウェアプログラムモジュールの形態で実現され、独立した製品として販売または使用される場合、1つのコンピュータ可読メモリに記憶され得る。このような理解に基づいて、本開示の技術案は、本質的に、または、従来の技術に貢献した部分、または、この技術案の全部または一部をソフトウェア製品の形態で具体化することができ、このソフトウェア製品は1つのメモリに記憶され、本開示の各々の実施例で説明される方法の全部または一部のステップを、1台の演算装置(パーソナルコンピュータ、サーバ、またはネットワーク装置などであってもよい)に実行させるための命令を含む。前記メモリは、U-ディスク、読取専用メモリ(Read-Only Memory、ROM)、ランダムアクセスメモリ(Random Access Memory、RAM)、移動ハードディスク、磁気ディスク、または光ディスクなどの様々なプログラムコードを記憶可能な媒体を含む。
1つの実施例において、コンピュータプログラムが記憶されているコンピュータ可読記憶媒体が開示され、コンピュータプログラムが実行されると、本開示の各々の実施例に係る方法は実行される。
1つの実施例において、データを処理するためのユニットを備える人工知能チップが更に開示される。
1つの実施例において、記憶装置と、インタフェース装置と、制御装置と、人工知能チップと、を備えるボードカードが開示される。ここで、前記人工知能チップは、前記記憶装置、前記制御装置、および、前記インタフェース装置にそれぞれ接続され、前記記憶装置は、データを記憶し、前記インタフェース装置は、前記人工知能チップと外部装置との間のデータ伝送を実現し、前記制御ユニットは、人工知能チップの状態を監視制御する。
図1-10は、本開示の実施例に係るボードカード1-1000を示す構造ブロック図である。図1-10の示すように、前記ボードカード1-1000は、前記チップ1-1030-1と1-1030-2(総称してチップ1-1030という)に加えて、他の組合せコンポネントを更に備え、この組合せコンポネントは、記憶装置1-1010、インタフェース装置1-1040、および、コントロール装置1-1020を備えるが、これらに限定されない。インタフェース装置1040は、外部装置1-1060に接続され得る。記憶装置1010は、データを記憶するためのものであり、バス1-1050を介して人工知能チップ1-1030に接続される。記憶装置1-1010は、複数グループの記憶ユニット1-1010と1-1010-2を備え得る。各グループの前記記憶ユニットは、バス1-1050を介して前記人工知能チップ1-1050に接続される。各グループの記憶ユニットは、DDR SDRAM(英語:Double Data Rate SDRAM ダブルレート同期ダイナミックランダムアクセスメモリ)とすることができることは理解される。
DDRは、クロック周波数を上げることなく、SDRAMの速度を2倍に上げることができる。DDRは、クロックパルスの立ち上がりと立ち下がりでデータを読み出すことができる。DDRの速度は、基準SDRAMの2倍である。1つの実施例において、前記記憶装置は、4グループの前記記憶ユニットを含んでもよい。各グループの前記記憶ユニットは、複数のDDR4粒子(チップ)を備え得る。1つの実施例において、前記人工知能チップの内部は、データを伝送するための64ビットとECC検証を行なう8ビットとを備える4つの計72ビットのDDR4コントローラを含んでもよい。DDR4-3200粒子を各グループの前記記憶ユニットに採用されるとき、データ伝送の理論帯域を25600MB/sに達することが理解される。
1つの実施例において、各グループの前記記憶ユニットは、並列に配置されている複数のダブルレート同期ダイナミックランダムアクセスメモリを備える。DDRは、1クロックサイクル内で2回のデータ伝送が可能である。前記チップには、前記各記憶ユニットのデータ伝送とデータ記憶の制御を行なうためのDDRを制御するコントローラが設けられている。
前記インタフェース装置は、前記人工知能チップと電気的に接続されている。前記インタフェース装置は、前記人工知能チップと外部装置(例示えば、サーバ又はコンピュータ)との間のデータ伝送を可能にする。例示えば、1つの実施例において、前記インタフェース装置は、基準PCIEインタフェースであってもよい。例えば、基準PCIEインタフェースを介して、処理待ちデータをサーバから前記チップまでに伝送されることにより、データの伝送が実現される。好ましくは、PCIE3.0X16インタフェースを使用して伝送される場合、理論帯域幅が16000MB/sに達することができる。他の実施例において、前記インタフェース装置は、他のインタフェースであってもよく、本開示は、前記他のインタフェースの具体的な表現を限定せず、前記インタフェースユニットが、スイッチャー機能を実現できればよい。また、前記人工知能チップの演算結果は、依然として前記インタフェース装置によって外部装置(例えば、サーバ)に送り返される。
前記制御装置は、前記人工知能チップと電気的に接続されている。前記制御装置は、前記人工知能チップの状態を監視制御する。具体的には、前記人工知能チップは、前記制御装置と、SPIインタフェースを介して電気的に接続され得る。前記制御装置は、マイクロコントローラーユニット(Micro Controller Unit、MCU)を含んでもよい。前記人工知能チップは、複数の処理チップ、複数の処理コア、または複数の処理回路を含んでもよく、複数の負荷を動かしても良い。したがって、前記人工知能チップは、重負荷及び軽負荷などの異なる動作状態にあってもよい。前記制御装置によって、前記人工知能チップ中の複数の処理チップ、複数の処理回路、および、/または複数の処理回路の動作状態の調整制御が可能になる。
1つの可能な実施態様において、上記の人工知能チップを備える電子デバイスが開示される。電子デバイスは、データ処理装置、ロボット、コンピュータ、プリンタ、スキャナ、タブレット、スマートフォン、携帯電話、ドライブレコーダ、ナビゲーションメータ、センサー、カメラヘッド、サーバ、クラウドサーバ、カメラ、ビデオカメラ、プロジェクタ、腕時計、イヤホン、モバイルストレージ、ウェアラブルデバイス、交通機関、家庭用電気器具、および、/または医療装置を備える。
前記交通機関は、航空機、船舶、および、/または車両を備え、前記家庭用電気器具は、テレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガス焜炉、油煙器を備え、医療装置は、核磁気共振器、超音波スキャナー、および、/または心電計を備える。
上記の実施例において、各実施例に対する説明はそれぞれ重点を置き、ある実施例には詳細な説明がない場合、他の実施例の中の関連説明を参照することができる。上記の実施例の各技術特徴は、任意に組み合わせることができ、記載を簡潔にするために、上記の実施例の中の各技術特徴の全ての可能な組合せを記載していないが、これらの技術特徴の組合せに矛盾が生じない限り、本明細書に記載の範囲であると見なされるべく。
以下の条項によって前述された内容をより良く理解され得る。
A1.データを処理するための方法であって、
機械学習モデルに用いられる1グループの量子化待ちデータを取得するステップと、
複数対の切捨て閾値を使用して前記1グループの量子化待ちデータをそれぞれ量子化することにより、複数グループの量子化後のデータを決定するステップであって、前記複数対の切捨て閾値の各々は、対称される切捨て正の値と切捨て負の値とを含むステップと、
前記複数グループの量子化後のデータの各グループの量子化後のデータの絶対値の平均値と前記1グループの量子化待ちデータの絶対値の平均値との間の差異に基づいて、前記複数対の切捨て閾値から1対の切捨て閾値を選択して、前記1グループの量子化待ちデータの量子化に用いるステップと、を含むことを特徴とする方法。
A2.条項1に記載の方法であって、複数グループの量子化後のデータを決定するステップは、
前記1グループの量子化待ちデータの中の全てのデータの絶対値最大値を決定するステップと、
前記絶対値最大値に基づいて前記複数対の切捨て閾値を決定するステップと、を含むことを特徴とする方法。
A3.条項A2に記載の方法であって、複数グループの量子化後のデータを決定するステップは、
前記絶対値最大値、所定の合計検索回数、および、現在の検索順序に基づいて、第1切捨て正の値を決定するステップと、
第1対の切捨て閾値を使用して前記1グループの量子化待ちデータを量子化することにより、第1グループの量子化後のデータを決定するステップであって、前記第1対の切捨て閾値は、前記第1切捨て正の値と前記第1切捨て正の値とは反対である第1切捨て負の値とを含むステップと、
前記第1グループの量子化後のデータの絶対値の平均値と前記1グループの量子化待ちデータの絶対値の平均値との間の第1差異を決定するステップと、をさらに含むことを特徴とする方法。
A4.条項A3に記載の方法であって、複数グループの量子化後のデータを決定するステップは、
前記現在の検索順序をインクリメントするステップと、
前記絶対値最大値、前記所定の合計検索回数、および、前記現在の検索順序に基づいて、第2切捨て正の値を決定するステップと、
第2対の切捨て閾値を使用して前記1グループの量子化待ちデータを量子
化することにより、第2グループの量子化後のデータを決定するステップであって、前記第2対の切捨て閾値は、前記第2切捨て正の値と前記第2切捨て正の値とは反対である第2切捨て負の値とを含むステップと、
前記第2グループの量子化後のデータの絶対値の平均値と前記1グループの量子化待ちデータの絶対値の平均値との間の第2差異を決定するステップと、をさらに含むことを特徴とする方法。
A5.条項A1乃至A4の中の何れか1項に記載の方法であって、前記複数対の切捨て閾値から1対の切捨て閾値を選択するステップは、
前記複数グループの量子化後のデータの中の、前記1グループの量子化待ちデータの絶対値の平均値の差異が最小である1グループの量子化後のデータを決定するステップと、
前記複数対の切捨て閾値から前記1グループの量子化後のデータに対応する1対の切捨て閾値を選択するステップと、を含むことを特徴とする方法。
A6.条項A5に記載の方法であって、
前記選択された1対の切捨て閾値と関係がある切捨て検索範囲を決定するステップと、
前記切捨て検索範囲内にある複数対の新たな切捨て閾値を決定するステップと、
前記複数対の新たな切捨て閾値を使用して前記1グループの量子化待ちデータをそれぞれ量子化することにより、新たな複数グループの量子化後のデータを決定するステップと、
前記新たな複数グループの量子化後のデータの中の各グループの量子化後のデータの絶対値の平均値と前記1グループの量子化待ちデータの絶対値の平均値との差異に基づいて、前記新たな複対の切捨て閾値から1対の新たな切捨て閾値を選択するステップと、をさらに含むことを特徴とする方法。
A7.条項A1に記載の方法であって、複数グループの量子化後のデータを決定するステップは、
前記1グループの量子化待ちデータの中の全てのデータの絶対値最大値を決定するステップと、
前記絶対値最大値に基づいて、3対の切捨て閾値を決定するステップであって、前記3対の切捨て閾値のうち第1対の切捨て閾値は、前記絶対値最大値の半分およびその反対数を含み、前記3対の切捨て閾値のうち第2対の切捨て閾値は、前記絶対値最大値の4分の3およびその反対数を含み、前記3対の切捨て閾値のうちの第3対の切捨て閾値は、前記絶対値最大値およびその反対数を含むステップと、
3対の切捨て閾値を使用して前記1グループの量子化待ちデータをそれぞれ量子化することにより、3グループの量子化後のデータを決定するステップと、を含むことを特徴とする方法。
A8.条項A7に記載の方法であって、前記複数対の切捨て閾値から一対の切捨て閾値を選択するステップは、
停止条件を満たすまでに以下の動作を反復して実行するステップを、含み、
前記動作は、
前記3対の切捨て閾値から1対の切捨て閾値を選択する動作と、
選択された1対の切捨て閾値に対応する差異が所定の閾値よりも小さいか否かを判定する動作と、
前記差異が所定の閾値よりも小さいことに応答して、反復して実行する動作を停止する動作と、
前記差異が所定の閾値よりも大きいことに応答して、選択された1対の切捨て閾値に基づいて、3対の切捨て閾値を新たに決定する動作と、を含むことを特徴とする方法。
A9.条項A1乃至A8の中の何れか1項に記載の方法であって、
前記1グループの量子化待ちデータがニューラルネットワークモデル中の1グループの浮動小数点数であり、前記方法は、
選択された1対の切捨て閾値を使用して前記1グループの量子化待ちデータを量子化することによって、量子化後のデータが得るステップであって、前記1グループの量子化待ちデータを量子化することは、前記1グループの量子化待ちデータの中の切捨て正の値よりも大きい値を前記切捨て正の値に設定し、前記1グループの量子化待ちデータの中の切捨て負の値よりも小さい値を前記切捨て負の値に設定することを含むステップと、
得られた量子化後のデータを前記ニューラルネットワークモデルに入力することによって、処理に用いるステップと、をさらに含むことを特徴とする方法。
A10.データを処理するための装置であって、
機械学習モデルに用いられる1グループの量子化待ちデータを取得するための量子化待ちデータ取得ユニットと、
複数対の切捨て閾値を使用して前記1グループの量子化待ちデータをそれぞれ量子化することにより、複数グループの量子化後のデータを決定するための量子化後のデータ決定ユニットであって、前記複数対の切捨て閾値の各々は、対称される切捨て正の値と切捨て負の値とを含む量子化後のデータ決定ユニットと、
前記複数グループの量子化後のデータの各グループの量子化後のデータの絶対値の平均値と前記1グループの量子化待ちデータの絶対値の平均値との間の差異に基づいて、前記複数対の切捨て閾値から1対の切捨て閾値を選択して、前記1グループの量子化待ちデータの量子化に用いるための切捨て閾値選択ユニットと、を備えることを特徴とする装置。
A11.条項10に記載の装置であって、前記量子化後のデータ決定ユニットは、
前記1グループの量子化待ちデータの中の全てのデータの絶対値最大値を決定するための絶対値最大値決定ユニットと、
前記絶対値最大値に基づいて前記複数対の切捨て閾値を決定するための複数対の切捨て閾値決定ユニットと、を備えることを特徴とする装置。
A12.条項A11に記載の装置であって、前記量子化後のデータ決定ユニットは、
前記絶対値最大値、所定の合計検索回数、および、現在の検索順序に基づいて、第1切捨て正の値を決定するための第1切捨て正の値決定ユニットと、
第1対の切捨て閾値を使用して前記1グループの量子化待ちデータを量子化することにより、第1グループの量子化後のデータを決定するための第1グループの量子化後のデータ決定ユニットであって、前記第1対の切捨て閾値は、前記第1切捨て正の値と前記第1切捨て正の値とは反対である第1切捨て負の値とを含む第1グループの量子化後のデータ決定ユニットと、
前記第1グループの量子化後のデータの絶対値の平均値と前記1グループの量子化待ちデータの絶対値の平均値との間の第1差異を決定するための第1差異決定ユニットと、をさらに備えることを特徴とする装置。
A13.条項A12に記載の装置であって、前記量子化後のデータ決定ユニットは、
前記現在の検索順序をインクリメントするためのインクリメントユニットと、
前記絶対値最大値、前記所定の合計検索回数、および、前記現在の検索順序に基づいて、第2切捨て正の値を決定するための第2切捨て正の値決定ユニットと、
第2対の切捨て閾値を使用して前記1グループの量子化待ちデータを量子化することにより、第2グループの量子化後のデータを決定するための第2グループの量子化後のデータ決定ユニットであって、前記第2対の切捨て閾値は、前記第2切捨て正の値と前記第2切捨て正の値とは反対である第2切捨て負の値とを含むステップと、
前記第2グループの量子化後のデータの絶対値の平均値と前記1グループの量子化待ちデータの絶対値の平均値との間の第2差異を決定するための第2差異決定ユニットと、をさらに備えることを特徴とする装置。
A14.条項A10乃至A13の中の何れか1項に記載の装置であって、前記切捨て閾値選択ユニットは、
前記複数グループの量子化後のデータの中の、前記1グループの量子化待ちデータの絶対値の平均値の差異が最小である1グループの量子化後のデータを決定するための最小差異決定ユニットと、
前記複数対の切捨て閾値から前記1グループの量子化後のデータに対応する1対の切捨て閾値を選択するための第2切捨て閾値選択ユニットと、を備えることを特徴とする装置。
A15.条項A14に記載の装置であって、
前記選択された1対の切捨て閾値と関係がある切捨て検索範囲を決定するための切捨て検索範囲決定ユニットと、
前記切捨て検索範囲内にある複数対の新たな切捨て閾値を決定するための複数対の新たな切捨て閾値決定ユニットと、
前記複数対の新たな切捨て閾値を使用して前記1グループの量子化待ちデータをそれぞれ量子化することにより、新たな複数グループの量子化後のデータを決定するための第2量子化後のデータ決定ユニットと、
前記新たな複数グループの量子化後のデータの中の各グループの量子化後のデータの絶対値の平均値と前記1グループの量子化待ちデータの絶対値の平均値との差異に基づいて、前記新たな複対の切捨て閾値から1対の新たな切捨て閾値を選択するための第3の切捨て閾値選択ユニットと、をさらに備えることを特徴とする装置。
A16.条項A10に記載の装置であって、前記量子化後のデータ決定ユニットは、
前記1グループの量子化待ちデータの中の全てのデータの絶対値最大値を決定するための絶対値最大値決定ユニットと、
前記絶対値最大値に基づいて、3対の切捨て閾値を決定するための3対の切捨て閾値決定ユニットであって、前記3対の切捨て閾値のうち第1対の切捨て閾値は、前記絶対値最大値の半分およびその反対数を含み、前記3対の切捨て閾値のうち第2対の切捨て閾値は、前記絶対値最大値の4分の3およびその反対数を含み、前記3対の切捨て閾値のうちの第3対の切捨て閾値は、前記絶対値最大値およびその反対数を含む3対の切捨て閾値決定ユニットと、
3対の切捨て閾値を使用して前記1グループの量子化待ちデータをそれぞれ量子化することにより、3グループの量子化後のデータを決定するための3グループの量子化後のデータ決定ユニットと、を備えることを特徴とする装置。
A17.条項A16に記載の装置であって、前記切捨て閾値選択ユニットは、
停止条件を満たすまで以下の動作を反復して実行するための反復ユニットを備え、
前記動作は、
前記3対の切捨て閾値から1対の切捨て閾値を選択する動作と、
選択された1対の切捨て閾値に対応する差異が所定の閾値よりも小さいか否かを判定する動作と、
前記差異が所定の閾値よりも小さいことに応答して、反復して実行する動作を停止する動作と、
前記差異が所定の閾値よりも大きいことに応答して、選択された1対の切捨て閾値に基づいて、3対の切捨て閾値を新たに決定する動作と、を含むことを特徴とする装置。
A18.条項A10乃至A17の中の何れか1項に記載の装置であって、前記1グループの量子化待ちデータがニューラルネットワークモデル中の1グループの浮動小数点数であり、前記方法は、
選択された1対の切捨て閾値を使用して前記1グループの量子化待ちデータを量子化することによって、量子化後のデータが得るためのデータ量子化ユニットであって、前記1グループの量子化待ちデータを量子化することは、前記1グループの量子化待ちデータの中の切捨て正の値よりも大きい値を前記切捨て正の値に設定し、前記1グループの量子化待ちデータの中の切捨て負の値よりも小さい値を前記切捨て負の値に設定することを含むデータ量子化ユニットと、
得られた量子化後のデータを前記ニューラルネットワークモデルに入力することによって、処理に用いるためのデータ入力ユニットと、を備えることを特徴とする装置。
A19.コンピュータ可読記憶媒体であって、
前記コンピュータ可読記憶媒体には、コンピュータプログラムが記憶されており、前記コンピュータプログラムが実行されると、条項A1乃至A9の何れか1項に記載の方法を実現することを特徴するコンピュータ可読記憶媒体。
A20.人工知能チップであって、
前記人工知能チップは、条項A10乃至A18の何れか1項に記載のデータを処理するためのユニットを備えることを特徴とする人工知能チップ。
A21.電子デバイスであって、
前記電子デバイスは、条項A20に記載の人工知能チップを備えることを特徴とする電子デバイス。
A22.ボードカードであって、
記憶装置と、インタフェース装置と、制御装置と、条項20に記載の人工知能チップと、を備え、
ここで、前記人工知能チップは、前記記憶装置、前記制御装置、および、前記インタフェース装置に接続され、
前記記憶装置は、データを記憶し、
前記インタフェース装置は、人工知能チップと外部装置との間のデータ伝送を実現し、
前記制御ユニットは人工知能チップの状態を監視制御することを特徴とするボードカード。
A23.条項A22に記載のボードカードであって、
前記記憶装置は、バスによって各グループの記憶ユニットと前記人工知能チップとが接続される複数グループの記憶ユニットを備え、前記記憶ユニットは、DDR SDRAMであり、
前記チップは、前記各記憶ユニットに対するデータの伝送とデータ記憶に用いられるDDRコントローラーを備え、
前記インタフェース装置は、標準のPCIEインタフェースであることを特徴とするボードカード。
上記の内容は、本開示の実施例に対して詳細に説明した。本明細書において、本開示の原理及び実施例について、具体的な例を適用して説明した。上記の実施例の説明が本開示の方法及びその中心思想に対する理解を助けるためだけである。同時に、当業者が本発明の思想に基づいて行なった本開示の具体的な実施例および応用範囲での変形または変更は、本発明の保護請求する範囲に属する。上記の内容を纏めて、本明細書の内容は、本開示を限定するものと理解されるべく。
本開示の実施例は、概してコンピュータ技術の分野に関し、より具体的には、データを処理するための方法、装置、及び関連製品に関する。
人工知能技術の継続的な発展に伴い、その応用分野が益々広がり、画像認識、音声認識、および、自然言語処理などの分野で何れも良く適用されている。然しながら、人工知能アルゴリズムの複雑さと正確さが向上するにつれて、機械学習モデルは益々大きくなり、処理すべきデータ量も益々大きくなっている。大量のデータ処理を行なう場合、演算量や時間のオーバーヘッドが大きくなり、処理効率が低下する。
上記の課題を解決するために以下の技術案を提案する。
以下は、本開示の実施例中の図面を参照しながら本開示の実施例中の技術案に対して明確かつ完全に説明する。明らかに、説明された実施例は、本開示の実施例の一部であるが、全部ではない。本開示の実施例に基づいて、当業者が創造性の労働をせずに得られた他の全ての実施例は、何れも本開示の保護請求する範囲に属する。
本開示の特許請求の範囲、明細書、および、図面中の「第一」、「第二」、「第三」、および、「第四」などの用語が、異なる対象物を区別するために利用されており、特定の順を説明するために利用されていないことが理解されるべく。本開示の明細書と特許請求の範囲内の「備える(「包括」は中に含める、入れるの意味である)」と「包含(「包含」はその中に含まれるという意味である)」という用語は、説明される特徴、全体、ステップ、動作、要素および/または構成要素の存在を指すが、一つ以上の他の特徴、整体、ステップ、動作、要素、構成要素および/またはそれらの組合せの存在または追加を排除するものではない。
本開示の説明書に用いられる用語が特定の実施例を説明する目的のためだけのものであり、本開示を限定することを意図しないことが理解されるべく。本開示の明細書と特許請求の範囲に用いられるように、単数形「一」、「一つ」、および、「この」が、文脈が明らかに他のことを示しない限り、複数形を備えることを意図する。本開示の説明書と特許請求の範囲内の「および/または」という用語は、関連して列挙される項目の一つ以上の任意の組合せ及び全ての可能な組合せを指し、これらの組合せを備えることも更に理解されるべく。
本開示の明細書と特許請求の範囲に用いられるように、「若し」という用語が、文脈に応じて、「…場合」または「…すると」または「決定に応答」または「検出に応答」に説明される。同様に、「決定される場合」または「検出される場合(説明される条件またはイベント)」という連語が、文脈に応じて、「決定されると」または「決定に応答」または「検出されると(説明される条件またはイベント)」または「検出に応答(説明される条件またはイベント)」に説明される。
一般的に言えば、データを量子化するとき、選択された値の範囲が広い場合、量子化後のデータの精度は低くなり、値の範囲が小さ過ぎる場合、多過ぎるデータが切り捨てられ、両側に分布されているデータに関する情報は失われ、そのうち値の範囲がデータを量子化するための切捨て上限と切捨て下限との間の数値範囲を指す。よって、データを量子化する損失が最小限になるか、または小さくなるように、データを量子化するための適切な一対の切捨て閾値を見出す必要がある。従来、KLダイバージェンス(Kullback-Leibler divergence)の方法で最良の切捨て閾値を決定し、そのうちKLダイバージェンスが量子化前と量子化後とのデータの間の相関度を決定することはできる。KLダイバージェンスが相対エントロピー(relative entropy)、情報ダイバージェンス(information divergence)、情報ゲイン(information gain)とも呼ばれ、2つの確率がPとQとの間に分布する差異の尺度である。量子化前の32ビットの浮動小数点数の分布をPにし、量子化後の8ビットの整数の分布をQにすると、PとQとの間のKLダイバージェンスが小さければ小さいほど、量子化前後の分布はより近くなり、量子化もより有効になることを示す。然しながら、本願発明者は、従来のKL法で得られた切捨て閾値を使用して実現した量子化効果が良好ではなく、通常、大きな精度損失を齎すことを見出した。
このために、本開示の実施例は、非対称的に量子化するための切捨て閾値を決定する新規案を提案し、従来の技術(例えばKL法)よりも量子化精度の損失を少なくすることができる。本開示の実施例によれば、機械学習モデルに用いられる1グループの量子化待ちデータを取得した後、複数対の切捨て閾値を使用して1グループの量子化待ちデータをそれぞれ量子化することにより、複数グループの量子化後のデータを決定し、ここで、複数対の切捨て閾値の各々は、切捨て上限と切捨て下限とを含み、複数対の切捨て閾値の少なくとも1対の切捨て閾値の切捨て上限と切捨て下限とが異なる絶対値を有し、即ち非対称される1対の切捨て閾値である。次いで、各グループの量子化後のデータの絶対値の平均値と1グループの量子化待ちデータの絶対値の平均値との間の差異を評価指標とし、複数対の切捨て閾値から適切な1対の切捨て閾値を選択する。この方式よって、より最適に量子化する1対の切捨て閾値を見出すことができる。また、対称量子化と比べて、非対称量子化は量子化の精度損失をさらに低減することができる。
以下は、図2-1~図2-10を参照しながら本開示の基本原理と若干の例示的な実施例を説明する。これらの例示的な実施例は、当業者に本開示の実施例をよりよく理解させてから実施できるようにするためだけに与えられ、決して如何なる方式で本開示の範囲を限定するものではないことが理解されるべく。
図2-1は、本開示の実施例に係るデータを処理する方法のための処理システム2-100を示す模式図である。図2-1に示すように、処理システム2-100は、複数のプロセッ2-101-1、2-101-2、2-101-3(総称してプロセッサ2-101という)とメモリ2-102とを備え、そのうちプロセッサ2-101は、コマンドシーケンスを実行し、メモリ2-102は、データを記憶し、更にランダムメモリ(RAM、Random Access Memory)とレジスターステックも備える。処理システム2-100中の複数のプロセッサ2-101はメモリ空間の一部を共有してもよいし、例えばRAMメモリ空間とレジスタースタックの一部を共有し、それぞれのメモリ空間を同時に有してもよい。
本開示の実施例に係る各々の方法は、複数のプロセッサ(マルチコア)を備える処理システム2-100(例示えば、人工知能チップ)の任意の1つのプロセッサに適用され得ることが理解されるべく。このプロセッサは、例えばCPU(Central Processing Unit、セントラルプロセッサ)のような汎用プロセッサであってもよいし、人工知能演算を実行するための人工知能プロセッサ(IPU)であってもよく、そのうち人工知能演算は、機械学習演算、脳のような演算などを含むこともできる。ここで、機械学習演算は、ニューラルネットワーク演算、k-means演算、ベクトルマシンサポート演算などが含まれる。この人工知能プロセッサは、例えばGPU(Graphics Processing Unit、パターン処理ユニット)、NPU(Neural-Network Processing Unit、ニューラルネットワーク処理ユニット)、DSP(Digital Signal Process、ジタル信号処理ユニット)、フィールドプログラマブルゲートアレイ(Field-Programmable Gate Array、FPGA)チップのうちの1つまたは組合せを含んでもよい。本開示は、プロセッサの具体的なタイプを限定しない。また、処理システム1-100中の複数のプロセッサのタイプは、同一であってもよいし、異なってもよい。本開示はこれを限定しない。
1つの可能な実施例において、本開示に言及されるプロセッサは、複数の処理ユニットを備えることができ、各処理ユニットは、割り当てられた各々のタスク、例えばコンボルーション演算タスク、プール化タスク又はフル接続タスクなどを独立して実行することもできる。本開示は、処理ユニットおよび処理ユニットによって実行されるタスクを限定しない。
図2-2は、本開示の実施例に係るニューラルネットワーク2-200の例示的なアーキテクチャを示す模式図である。ニューラルネットワーク(neural network、NN)は、生物系ニューラルネットワークの構成と機能を模倣する数学モデルであり、多くのニューロンに接続されて演算する。よって、ニューラルネットワークは、演算モデルであり、多くのバイト(または「ニューロン」と呼ばれる)に互いに接続構成される。各バイトは、活性化関数(activation function)と呼ばれる特定の出力関数を表す。2つのニューロン間の接続は、何れもこの接続信号による1つの重み値を表し、重み値と呼ばれ、ニューラルネットワークの記憶内容に該当する。ニューラルネットワークの出力は、ニューロン間の接続式、および、重み値と活性化関数によって、異なる。ニューラルネットワークにおいて、ニューロンは、ニューラルネットワークの基本単位である。ニューロンは、所定の数の入力と1つのバイアスを取得し、信号(値)が達したときに1つの重み値を乗算する。接続とは、1つのニューロンを他の層又は同一の層の別のニューロンに接続することであり、それと関係がある重み値が伴う。また、バイアスとは、ニューロンの余分の入力であり、常に1であり、自己の接続用重み値を有する。これは、全ての入力が空(全て0)であっても、ニューロンも活性化されることを保証することができる。
なお、ニューラルネットワーク中のニューロンに非線形関数を適用しない場合、ニューラルネットワークはただ線形関数であり、すると、シングルニューロンに比べて強度が強いわけではない。1つのニューラルネットワークの出力結果を0から1の間にあるようにすると、例えば猫/犬の鑑別する例において、0に近い出力を猫、1に近い出力を犬と見なすことができる。この目的を達成するために、例えばシグモイド(sigmoid)活性化関数などの活性化関数がニューラルネットワークに導入される。この活性化関数に関しては、その戻り値が0から1までの数字であることが分かればよい。よって、活性化関数は、ニューラルネットワークに非線形性を導入するために利用され、ニューラルネットワーク演算結果をより狭い範囲に縮小する。実際には、どのように活性化関数を表するかが重要ではなく、幾つかの重み値によって1つの非線形関数をパラメーター化することが重要であり、これらの重み値を変えることにより、この非線形関数を変えることができる。
図2-2に示されるように、当該図面は、ニューラルネットワーク2-200のアーキテクチャを示す模式図である。図2-2に示すニューラルネットワークにおいて、入力層2-210、インプリケーション層2-220、および、出力層2-230という3つの層が含まれ、そのうち図2-2に示すインプリケーション層2-220は3つの層であり、勿論、より多いでもよいし、より少ないでも良い。ここで、入力層2-210のニューロンは、入力ニューロンと呼ばれる。入力層をニューラルネットワーク中の第1層とする場合、信号(値)を入力して次の層に伝送する必要がある。それは、入力信号(値)に対して如何なる操作も行わず、関連する重み値及びバイアスを有しない。図2-2に示すニューラルネットワークにおいて、4つの入力信号(値)を受信することができる。
インプリケーション層2-220は、入力データに異なる変換を適用するためのニューロン(バイト)に利用される。1つのインプリケーション層は、垂直に並んでいるニューロンの集合(Representation)である。図2-2に示すニューラルネットワークにおいて、3つの層が含まれ、詳細は、第1インプリケーション層は4つのニューロン(バイト)を有し、第2層は6個のニューロンを有し、第3の層は3個のニューロンを有する。最後に、インプリケーション層は、出力層230に値を伝送する。図2-2に示すニューラルネットワーク2-200は、3つのインプリケーション層中の各ニューロン間を完全に接続し、3つのインプリケーション層中の各ニューロンが何れも次の層の各ニューロンに接続される。なお、各ニューラルネットワークのインプリケーション層は完全に接続されているわけではない。
出力層2-230のニューロンは、出力ニューロンと呼ばれる。出力層は、最後の1つのインプリケーション層からの出力を受信する。出力層2-230によって、所望の値と所望の範囲を決定することができる。図2-2に示すニューラルネットワークにおいて、出力層に3つのニューロン、即ち3つの出力信号(値)を有する。
実際の適用において、ニューラルネットワークの作用は、多くのサンプルデータ(入力と出力を含む)を予め与えることでトレーニングするものである。トレーニングが完了した後に、将来の実環境の入力に対して正確な出力を求めるためにニューラルネットワークを利用する。
ニューラルネットワークのトレーニングを論じる前に、損失関数を定義する必要がある。損失関数とは、ニューラルネットワークが特定のタスクでどれだけうまく機能するかを示す関数である。実行時の最も直接的な方法は、トレーニングプロセス中で各サンプルデータに対してニューラルネットワークに沿って伝送してから1つの数値を求め、次いで、この数値と実際の数値を比べて差異を演算して2乗する。このように演算し得たものが、予測値と真の値との間の距離である。ニューラルネットワークのトレーニングは、この距離または損失関数の値を減らすことである。
ニューラルネットワークのトレーニングを始めるとき、重み値がランダムに初期化される。初期化されたニューラルネットワークが、良好な結果を提供しないことは明らかである。トレーニングプロセスにおいて、悪いニューラルネットワークから始めることを想定しており、トレーニングにより1つの高精度あるのネットワークが得られる。同時に、トレーニングを終了するとき、損失関数の関数値が特に小さくなることが望ましい。
ニューラルネットワークのトレーニングプロセスは2段階に分けられ、そのうち第1段階は、信号の順方向処理であり、入力層2-210からインプリケーション層2-220を経て、最後に出力層2-230までに到達する。第2段階は、勾配の逆伝送であり、勾配に応じてニューラルネットワーク中の各層の重み値とバイアスを順に調節し、出力層2-230からインプリケーション層1-220まで、最後に入力層2-210に到達する。
順方向処理において、ニューラルネットワークの入力層2-210に入力値が入力され、ニューラルネットワークの出力層2-230から予測値と呼ばれる出力が得られる。入力値がニューラルネットワークの入力層2-210に提供される場合、如何なる操作も行なわない。インプリケーション層において、第2インプリケーション層が第1インプリケーション層から予測中間結果値を取得して演算や活性化という操作を行なってから得た予測中間結果値を次のインプリケーション層に伝送する。後続の層において同じ操作を実行し、最後にニューラルネットワークの出力層2-230において出力値を得る。
順方向処理の後、予測値と呼ばれる出力値が得られる。誤差を演算するために、損失関数を使用して予測値と実際の出力値を比べてから対応の誤差値を得る。逆伝送は、微分学のチェーン法を使用しており、チェーン法において、先ずニューラルネットワークの最終層の重み値に対応する誤差値の導関数を演算する。これらの導関数は、勾配と呼ばれ、次いで、これらの勾配を利用することでニューラルネットワーク中の最後からの2番目の層の勾配が演算される。この処理は、ニューラルネットワーク中の各重み値の勾配が求められるまで繰り返される。最後に、誤差値を低減する目的を達成するように、重み値から対応する勾配を減算することで、重み値を1回更新する。
また、ニューラルネットワークの場合、微調整とは、トレーニングされたニューラルネットワークをロードすることであり、微調整プロセスは、トレーニングプロセスと同様に2段階に分けられており、そのうち第1段階は、信号の順方向処理であり、第2段階は、勾配の逆伝送であり、トレーニングされたニューラルネットワークの重み値を更新する。トレーニングと微調整との違いは、トレーニングは、初期化されたニューラルネットワークをランダムに処理し、最初からトレーニングする一方、微調整は、最初からトレーニングしない。
ニューラルネットワークに対してトレーニングするか或いは微調整するプロセスにおいて、ニューラルネットワークが信号の正方向処理および誤差に対応する逆伝送プロセスを1回経る毎に、ニューラルネットワーク中の重み値は勾配を使用して1回更新され、このとき、1回の反復(iteration )と呼ばれる。期待通りの精度あるニューラルネットワークを取得するために、トレーニングプロセスにおいて、膨大なサンプルデータセットが必要となる。この場合、サンプルデータセットをコンピュータに一度に入力することはできない。よって、この課題を解決するために、サンプルデータセットを複数のブロックに分割し、各ブロックをコンピュータに伝送し、各ブロックのデータセットに対して順方向処理を行った後に、ニューラルネットワークの重み値を応じて更新する必要がある。完全なサンプルデータセットがニューラルネットワークの1回の順方向処理を通じて、1回の重み値更新を対応して返す場合、このプロセスが1周期(epoch)と呼ばれる。実際には、ニューラルネットワークにおいて、完全な一つのデータセットを1回伝送するだけでは不十分であり、同じニューラルネットワークにおいて完全なデータセットを数回で伝送する必要がある。つまり、期待通りの精度あるニューラルネットワークを取得するには、複数の周期が必要である。
ニューラルネットワークに対してトレーニングするか或いは微調整するプロセスにおいて、一般的に、望ましくは、速度が速ければ速いほど良い、正確さが高ければ高いほど良い。ニューラルネットワークのデータは、例えば浮動小数点数などの高精度データフォーマットで表されているため、トレーニング又は微調整のプロセスにおいて、関連するデータは何れも高精度データフォーマットであり、次いで、トレーニング後のニューラルネットワークを量子化する。量子化の対象物がニューラルネットワーク全体の重み値であり、量子化後の重み値が何れも8ビットの固定小数点数である場合を例示とすると、1つのニューラルネットワークには常に何百万個の接続があるため、殆どの空間は何れもニューロン接続の重み値によって占められる。それにまして、これらの重み値が何れも異なる浮動小数点数である。各層の重み値は、例えば(-3.0,3.0)などのように、何れもある決定区間の正規分布になる傾向がある。ニューラルネットワーク中の各層の重み値に対応する最大値と最小値を保存し、各浮動小数点数値を8ビットの固定小数点数で表す。ここで、最大値、最小値の範囲内で256個の量子化の間隔を空間的に線形に分割し、それぞれを8ビットの固定小数点数で表す。例えば、(-3.0,3.0)区間において、バイト0は-3.0を表し、バイト255は3.0を表す。これによって類推すれば、バイト128は0を表す。
高精度データフォーマットで表されるデータについて、浮動小数点数を例示とし、コンピューター体系構造から分かるように、浮動小数点数の演算表示法、固定小数点数の演算表示法に応じて、同じ長さの固定小数点演算と浮動小数点演算について、浮動小数点演算の演算モードがより複雑になり、より多くの論理デバイスから浮動小数点演算器を構成することを必要とする。このように体積から言えば、浮動小数点演算器の体積は固定小数点演算器の体積よりも大きい。固定小数点演算と浮動小数点演算との間の消費電力の差異が通常のオーダーであるように、浮動小数点演算器は、より多くのリソースを消費することを必要とする。つまり、固定小数点演算器に比べて、浮動小数点演算器の占めるチップ面積および消費電力は、いずれも数倍大きい。
図2-3は、本開示の実施例に係るデータを量子化するためのプロセス2-300を示す模式図である。図1-3を参照すると、入力データ2-310は、量子化待ち浮動小数点数、例えば32ビットの浮動小数点数であり、入力データ2-310をニューラルネットワークモデル2-340に直接入力して処理すると、演算リソースが多くかかり、処理速度が遅くなる。よって、ブロック2-320において、入力データを量子化することによって、量子化後のデータ2-330(例えば8ビットの整数)を取得することができる。量子化後のデータ2-330がニューラルネットワークモデル2-340に入力して処理される場合、8ビットの整数演算が速いため、ニューラルネットワークモデル2-340は、入力データに対する処理をより速く完了し、対応する出力結果2-350を生成する。
量子化待ち入力データ2-310から量子化後のデータ2-330までの量子化プロセスにおいて、ある程度で精度損失が発生し、精度損失の程度は、出力結果2-350の正確さに直接影響を与える。よって、入力データ1-330に対して量子化処理するプロセスにおいて、量子化処理の精度損失を最小限にするか、あるいは、できるだけ小さくする必要がある。
図2~4Aは、本開示の実施例に係るデータを対称的に量子化するための2-400を示す。図2-4A示すように、最も簡単な対称的に量子化する方法は、量子化待ちデータの中の所有データの絶対値最大値、即ち|max|を直接選択し、次いで、-|max|から|max|までの範囲内で量子化することにより、量子化後のデータを生成する。然しながら、この方法において、如何なる切捨てを行わないため、量子化後のデータの精度が低くなる。同時に、対称量子化方法は特定の無駄を引き起こし、例えば量子化後の最大値127の周囲にはデータポイントがない。
図2-4Bは、本開示の実施例に係る切捨て閾値に基づいてデータを対称的に量子化する2-450を示す。図1~4Aの直接に量子化する方法とは異なり、図2-4Bにおいては、切捨て閾値Tを選択し、-|T|から|T|までの範囲外のデータを、-|T|または|T|に設定する。例えば、図2-4Bの例において、円2-460中の量子化待ち3つの値が、切捨て範囲外にあるため、-|T|の値として量子化処理を実行して、データポイント2-470に量子化する。この方式によって、切捨て閾値を使用して量子化待ちデータの値の範囲を縮小することで、量子化後のデータの精度を向上させることができる。
図2-4Cは、本開示の実施例に係るデータを非対称的に量子化するための2-480を示す。図2-4Cに示すように、非対称量子化法であって、量子化待ちデータの中の全てのデータの最大値maxと最小値minを直接選択してからminからmaxまでの範囲内で量子化をすることにより、量子化後のデータを生成する。然しながら、この方法において、如何なる切捨てが行われなく、量子化後のデータの精度が低くなる。
図2-4Dは、本開示の実施例に係る切捨て閾値に基づいてデータを非対称的に量子化するための2-490を示す。図2-4Cの直接量子化法と異なり、図2-4Dにおいては、切捨て上限Tと切捨て下限minを選択し、次いで、minからTまでの範囲外のデータがminまたはTに設定する。例えば図2-4Dの例において、円2-492中の量子化待ち2つの値が切捨て範囲外にあるため、値Tとして量子化され、データポイント2-495に量子化する。この方式によって、非対称される切捨て上限と切捨て下限を利用して量子化待ちデータの値の範囲を縮小することにより、量子化後のデータの精度を向上させることができる。然しながら、どのように量子化精度の損失が最小である1対の非対称される切捨て閾値を取得するかは、解決されるべき課題である。
図2-5は、本開示の実施例に係るデータを処理するための方法2-500を示すフローチャートである。方法2-500は、図2-1を参照しながら説明する1つ以上のプロセッサ2-101によって実行されてもよいことが理解されるべく。
ブロック2-502において、機械学習モデルに用いられる1グループの量子化待ちデータを取得する。例えば上記の図2-3を参照すると、量子化待ち入力データ2-310を取得することができ、入力データを量子化することにより、ニューラルネットワークモデル2-340の処理速度を向上させることができる。また、ニューラルネットワークモデル自身の一部のパラメータ(例えば重み値など)を量子化することもでき、ネットワークパラメータを量子化することにより、ニューラルネットワークモデルのサイズを小さくすることができる。幾つかの実施例において、量子化待ちデータは、32ビットの浮動小数点数であり得る。オプションとして、量子化待ちデータも、他のビット数の浮動小数点数または他のデータ型であってもよい。
ブロック2-504において、複数対の切捨て閾値を使用して1グループの量子化待ちデータをそれぞれ量子化することにより、複数グループの量子化後のデータを決定し、ここで、複数対の切捨て閾値の各々は、切捨て上限と切捨て下限とを含み、複数対の切捨て閾値の中の少なくとも1対の切捨て閾値の切捨て上限と切捨て下限は、異なる絶対値を有する。つまり、複数対の切捨て閾値は、少なくとも1対の非対称する切捨て閾値を含む。非対称的に量子化する案において、各対の切捨て閾値は、1つの切捨て上限と1つの切捨て下限を含み、通常、各対の切捨て上限と切捨て下限が非対称であり、即ちそれらの絶対値が異なる。然しながら、ある幾つかの場合、決定された複数対の切捨て閾値は、1対以上が対称するものであり得るが、少なくとも1対が非対称である。ある幾つかの実施例において、切捨て下限は、量子化待ちデータの最小値ではなく、別の値であってもよい。
本開示の実施例によれば、複数対の切捨て閾値を選択し、量子化待ちデータがそれぞれ量子化してもよい。幾つかの実施例において、固定間隔をあけて幾つかの切捨て閾値を選択してもよく、例えば、量子化待ちデータの最大値と最小値との間の値に応じて所定の距離をあけて一つの切捨て上限が選択してもよく、切捨て下限は常に量子化待ちデータの最小値であってもよい。幾つかの実施例において、幾つかの特定の位置での切捨て閾値、例えば最大値の幾つかの所定の割合の値のみを選択することもできる。
幾つかの実施例において、対応する1つ以上の量子化パラメータを、各対の切捨て閾値に応じて演算することができ、次いで、量子化待ちデータを、演算された量子化パラメータを使用して量子化することができる。オプションとして、量子化待ちデータを、1対の切捨て閾値に応じて各式またはモデルによって直接量子化することができ、各量子化パラメータを単独的に演算する必要はない。
ブロック2-506において、複数グループの量子化後のデータの各グループの量子化後のデータの絶対値の平均値と1グループの量子化待ちデータの絶対値の平均値との間の差異に基づいて、複数対の切捨て閾値から1対の切捨て閾値を選択して、1グループの量子化待ちデータの量子化に用いる。本願発明者は、研究と多くの実験により、量子化前後のデータの絶対値の平均値の差異が量子化前後の精度損失を反映することができ、そのうち絶対値の平均値の差異が小さければ小さいほど、量子化操作の精度損失は小さくなる。よって、本開示の実施例は、量子化前後のデータの絶対値の平均値の差異を使用して最適な切捨て閾値を選択する指標とし、従来のKL法より小さな精度損失を実現することができる。
幾つかの実施例において、量子化後のデータの絶対値の平均値と量子化待ちデータの絶対値の平均値との間の差異は、2つの絶対値の平均値の間の差異であってもよい。オプションとして、量子化後のデータの絶対値の平均値と量子化待ちデータの絶対値の平均値との間の差異は、2つの絶対値の平均値の間の差異を使用して量子化待ちデータの絶対値の平均値で除算してから絶対値と求めることもできる。
幾つかの実施例において、最良の1対の切捨て閾値を選択した後、選択された1対の切捨て閾値を使用して1グループの量子化待ちデータを量子化して、量子化後のデータを得ることは、1グループの量子化待ちデータの中の選択された切捨て上限よりも大きい数値を切捨て上限に切り捨て、1グループの量子化待ちデータの中の選択された切捨て下限よりも小さい数値を切捨てることと、その後、ニューラルネットワークモデルに得られた量子化後のデータを入力して処理に用いることを含んでもよい。
図2-6は、本開示の実施例に係る非対称的に量子化するための切捨て閾値を検索する方法2-600を示すフローチャートである。この方法2-600は、量子化待ちデータに基づいて最良の1対の非対称される切捨て閾値を決定して、データの量子化に用いる。
ブロック2-602において、量子化待ちデータの絶対値の平均値Data_mean、および、量子化待ちデータの最大値Data_maxや最小値Data_minを決定し、そのうち絶対値の平均値は量子化待ちデータの中の全てのデータの絶対値の和を要素数で除算して得る値であり、また、最小の平均値の差異を初期化する必要があり、例えば浮動小数点数の最大値を初期設定し、循環検索した検索順序i(例えば0に初期化)を初期化する。幾つかの実施例において、検索順序iが合計検索回数の半分に初期化されることもでき、即ち中間部から検索し始めて、検索率を向上させる。本開示の実施例によれば、1ラウンド以上の閾値検索プロセスを設定してもよく、各ラウンドの閾値検索が同じまたは異なる合計検索回数を有してもよい。幾つかの実施例において、各ラウンドの合計検索回数を10から32までの間に設定することができる。一般的に言えば、合計検索回数が多ければ多いほど、かかる検索時間が長くなり、検索した切捨て閾値もより正確になる。然しながら、合計検索回数がある制限値に達すると、検索効果が本質上向上しなくなる可能性がある。
次いで、第1ラウンドの粗粒度の切捨て閾値の検索プロセスを始める。例えば図2-7Aは、本開示の実施例に係る非対称的に量子化するための切捨て閾値を粗粒度で検索する例示を示す2-700である。図2-7Aに示すように、量子化待ちデータにおいて、10個の候補の切捨て閾値(図2-7Aの中の破線で標識する)を決定し、この10個の切捨て閾値(図2-7Aにおいて、10個の切捨て上限のみを示し、切捨て下限が常に量子化待ちデータの最小値である)を順に量子化プロセスを実行し、量子化前後のデータの絶対値の平均値の差異に基づいて最良の1対の切捨て閾値を決定することができる。本願発明者は、ニューラルネットワークモデルにおいて、通常、入力されたデータが小さな値に集中され、大きな値では分散されているため、切捨て下限を量子化待ちデータの中の最小値に直接設定すると、多くの精度損失をもたらせず、同時に切捨て下限を選択する複雑な過程を回避することができる。
ブロック2-604において、検索順序iが所定の合計検索回数search_gridよりも小さいか否かを判定し、即ち各対の切捨て閾値を順に選択して量子化するとき、切捨て閾値に対する全ての演算が既に完了したか否かを判定する。ブロック2-606において、検索順序iが合計検索回数未満である場合、現在の検索順序序iに基づいて、1対の切捨て閾値を決定する。この対の切捨て閾値の切捨て上限は、例えばData_max-i*(Data_max-Data_min)/search_gridであり、切捨て下限は、量子化待ちデータの最小値である。オプションとして、検索順序iの切捨て上限もData_max *(i+1)/search_gridに選択されてもよい。
ブロック2-608において、この対の切捨て閾値を使用して量子化待ちデータを量子化して、対応する量子化後のデータQuant_data_iを得、その後、ブロック2-610において、量子化後のデータの絶対値の平均値Quant_data_mean_iと量子化待ちデータの絶対値の平均値Data_meanとの差異Distance_i=abs(Quant_data_mean_i-Data_mean)/Data_meanを算出する。
ブロック2-612において、演算された差異Distance_iが現在の最小の差異よりも小さいか否かを判定する。Yesであれば、ブロック2-614において、演算された差異Distance_iを現在の最小の差異に設定するとともに、差異が最小である場合の切捨て閾値を記録し、次いで、ブロック2-616において、検索順序i をインクリメントする。若しブロック2-612において、Noであれば、ブロック2-616において、検索順序序i(即ちi++)を直ちにインクリメントし、即ち次の対の切捨て閾値の差異を継続して決定する。次いで、検索順序iの値が合計検索回数に達するまでにブロック2-604乃至2-616を継続的に循環し、ブロック2-618において、第1ラウンドの切捨て閾値の検索プロセスから退出する。図2-7Aに示すように、第1ラウンドの検索によって破線2-770での切捨て上限に対応する差異が最小と判定される。このことから分かるように、切捨て閾値の検索プロセスは、複数対の切捨て閾値を使用して量子化待ちデータを量子化し、複数グループの量子化後のデータの中の、量子化待ちデータが絶対値の平均値の差異が最も小さい1グループの量子化後のデータを決定してから、このグループの量子化後のデータに対応する1対の切捨て閾値を、複数対の切捨て閾値から選択する。
第2ラウンドの細粒度の切捨て閾値の検索プロセスを実行することができる。第2ラウンドの検索プロセスも方法2-600を参照することもできるが、第2ラウンドの検索が第1ラウンドの最良の切捨て上限2-770の周囲の所定の範囲内(例えば選択された切捨て上限2-770の前の1つの切捨て上限と後の1つの切捨て上限との間)で行なわれ、第1ラウンドの検索結果に対して微細化する。例えば第2ラウンドの検索を行なうとき、各々の切捨て上限の間の間隔は、((Data_max-Data_min)*2)/(search_grid1*search_grid2)であってもよい、ここでsearch_grid1は第1ラウンドの合計検索回数を表し、search_grid2は第2ラウンドの合計検索回数を表す。図2-7Bは、本開示の実施例に係る非対称的に量子化するための切捨て閾値を細粒度で検索する2-750を示す。図2-7Bに示すように、第2ラウンドの検索によって、細粒度の最良の切捨て上限が2-772であり、切捨て下限が量子化待ちデータの最小値2-778に選択される。2ラウンドの検索によって、より正確かつ細かい切捨て閾値が得られ、更にデータ量子化に起因する精度損失を低減することができる。
ブロック2-806において、最小の差異diff_minが予め設定された所定の閾値よりも小さいか否かを判定する。NOであれば、ブロック2-808において、選択された1対の切捨て閾値に基づいて(最小の差異diff_minに対応する値を新たな最大値に設定する)、3対の切捨て閾値が新たに決定され、最小の差異diff_minが所定の閾値より小さくなるまでに上記プロセスが繰り返され、ブロック2-810において、切捨て閾値の反復プロセスから退出する。幾つかの実施例において、最小の差異diff_minが所定の閾値未満であるという反復停止条件に加えて、例えば最大の反復回数が所定の最小の間隔に達するまでに、他の反復停止条件が設定されてもよい。また、図2-8の方法2-800において、最良の1対の切捨て閾値を反復して選択することを示したが、反復を実行せずに1回だけ実行してから、最小の差異diff_minに対応する一対の切捨て閾値を直ちに最終的な切捨て閾値としてもよい、よって、量子化パラメーターを決定することにより、データーに対する量子化を完了する。
ここで、nは量子化後の二進法桁、o、Sおよびfは量子化パラメータ、ceilは切上げを表す。
なお、前述した方法の実施例のそれぞれについて、説明を簡単にするために、それらを一連の動作の組合せとして表現したが、当業者であれば、本開示に従って、あるステップが他の序をとることができ、または同時に行われることができるため、本開示は記載された動作の順によって限定されないことを理解するであろう。次に、当業者は、明細書に記載される実施例が何れも選択可能な実施例に属し、関連する動作及びモジュールが本開示に必要なものではないことを理解するであろう。
なお、フローチャートにおける各ステップが矢印の指示に従って順に表示されているが、これらのステップが矢印の指示の順に順次実行されることは必須ではない。これらのステップの実行は、本明細書に明示的に記載されていない限り、厳密な順序の制限はなく、他の順序で実行されてもよい。フローチャートの少なくとも一部のステップは、複数のサブステップまたは複数の段階を含んでもよく、これらのサブステップまたは段階は、必ずしも同じ時点で実行完了する必要はなく、異なる時点で実行してもよく、これらのサブステップまたは段階の実行順序も、必ずしも順次行なう必要はなく、他のステップまたは他のステップのサブステップまたは段階の少なくとも一部と順番にまたは交替に実行してもよい。
図2-9は、本開示の実施例に係るデータを処理するための装置2-900を示すブロック図である。図2-9に示すように、装置2-900は、量子化待ちデータ取得ユニット2-910、量子化後のデータ決定ユニット2-920、および、切捨て閾値選択ユニット2-930を備える。量子化待ちデータ取得ユニット2-910は、機械学習モデルに用いられる1グループの量子化待ちデータを取得する。量子化後のデータ決定ユニット2-920は、複数対の切捨て閾値を使用して1グループの量子化待ちデータをそれぞれ量子化することにより、複数グループの量子化後のデータを決定し、ここで、複数対の切捨て閾値の各々は、切捨て上限と切捨て下限とを含み、複数対の切捨て閾値の少なくとも1対の切捨て閾値の中の切捨て上限と切捨て下限とが異なる絶対値を有する。切捨て閾値選択ユニット2-930は、1グループの量子化待ちデータの量子化に用いるように、複数グループの量子化後のデータの各グループの量子化後のデータの絶対値の平均値と1グループの量子化待ちデータの絶対値の平均値との間の差異に基づいて、複数対の切捨て閾値から1対の切捨て閾値を選択する。
また、装置2-900中の量子化待ちデータ取得ユニット2-910、量子化後のデータ決定手2-920、および、切捨て閾値選択ユニット2-930は、本開示の各々の実施例に係るステップおよび/または動作を実行するように構成されてもよい。
上記の装置の実施例は、ただ例示的なものであり、本開示の装置は更に他の式で実現されてもよいことが理解されるべく。例えば、上記の実施例で説明したユニット/モジュールの分割は、一つの論理的機能の分割のみであったが、実際に実現する場合には別の分割方式があってもよい。例えば複数ユニット、モジュール、またはサブアセンブリーは、組み合わせてもよいし、別のシステムに統合されてもよく、または幾つかの特徴は、省略されてもよいし、または実行されなくてもよい。
また、特に説明しない限り、本開示の各実施例中の各機能ユニット/モジュールは、1つのユニット/モジュールに統合されてもよいし、各ユニット/モジュールが物理的にそれぞれ存在してもよいし、2つ以上のユニット/モジュールが統合されてもよい。上記統合されたユニット/モジュールは、ハードウェアの形態で実現されてもよいし、ソフトウェアプログラムモジュールの形態で実現されてもよい。
前記統合されたユニット/モジュールがハードウェアの形態で実現される場合、このハードウェアは、デジタル回路、アナログ回路などであり得る。ハードウェア構造の物理的な実現は、トランジスタ、メモリスタなどを備えるが、これらに限定されない。前記人工知能プロセッサは、特に説明しない限り、例えばCPU、GPU、FPGA、DSP、および、ASICなどの任意の適切なハードウェアプロセッサであってもよい。前記記憶ユニットは、特に説明しない限り、例えば抵抗ランダムアクセスメモリRRAM(Resistive Random Access Memory)、ダイナミックランダムアクセスメモリDRAM(Dynamic Random Access Memory)、スタティックランダムアクセスメモリSRAM (Static
Random-Access Memory)、強化ダイナミックランダムアクセスメモリEDRAM(Enhanced Dynamic Random Access Memory)、高帯域幅メモリHBM (High-Bandwidth Memory)、ハイブリッドメモリ立方体HMC(Hybrid Memory Cube)などの、任意の適切な磁気または光磁気記憶媒体であり得る。
前記統合されたユニット/モジュールがソフトウェアプログラムモジュールの形態で実現され、独立した製品として販売または使用される場合、1つのコンピュータ可読メモリに記憶され得る。このような理解に基づいて、本開示の技術案は、本質的に、または、従来の技術に貢献した部分、または、この技術案の全部または部分をソフトウェア製品の形態で具体化することができ、このコンピューターソフトウェア製品は1つのメモリに記憶され、本開示の各実施例で説明される方法の全部または部分のステップを、1台の演算装置(パーソナルコンピュータ、サーバ、またはネットワーク装置などであってもよい)に実行させるための命令を含む。前記メモリは、Uディスク、読取専用メモリ(Read-Only Memory、ROM)、ランダムアクセスメモリ(Random Access MemoryRAM)、移動ハードディスク、磁気ディスク、または光ディスクなどの各々のプログラムコードを記憶可能な媒体を含む。
1つの実施例において、コンピュータプログラムが記憶されているコンピュータ可読記憶媒体が開示され、コンピュータプログラムが実行されると、本開示の各実施例に係る方法は実施される。
1つの実施例において、データを処理するためのユニットを備える人工知能チップが更に開示される。
1つの実施例において、記憶装置と、インタフェース装置と、制御装置と、人工知能チップと、を備えるボードカードが開示される。ここで、前記人工知能チップは、前記記憶装置、前記制御装置、および、前記インタフェース装置にそれぞれ接続され、前記記憶装置は、データを記憶し、前記インタフェース装置は、前記人工知能チップと外部装置との間のデータ伝送を実現し、前記制御ユニットは、人工知能チップの状態を監視制御する。
図2-10は、本開示の実施例に係るボードカード2-1000を示す構造ブロック図である。図2-10に示すように、前記ボードカード2-1000は、前記チップ2-1030-1と2-1030-2(総称してチップ2-1030という)に加えて、他の組合せコンポネントを更に備え、この組合せコンポネントは、記憶装置2-1010、インタフェース装置2-1040、および、コントロール装置2-1020を備えるが、これらに限られない。インタフェース装置2-1040は、外部装置2-1060に接続され得る。記憶装置2010は、データを記憶するためのものであり、バス2-1050を介して人工知能チップ2-1030に接続される。記憶装置2-1010は、複数グループの記憶ユニット2-1010-1と2-1010-2を備え得る。各グループの前記記憶ユニットは、バス2-1050を介して前記人工知能チップ2-1050に接続される。各グループの前記記憶ユニットは、DDR SDRAM(英語:Double Data Rate SDRAM ダブルレート同期ダイナミックランダムアクセスメモリ)とすることができることが理解されるであろう。
DDRは、クロック周波数を上げることなく、SDRAMの速度を2倍に上げることができる。DDRは、クロックパルスの立ち上がりと立ち下がりでデータを読み出すことができる。DDRの速度は、基準SDRAMの2倍である。1つの実施例において、前記記憶装置は、4グループの前記記憶ユニットを含んでもよい。各1グループの前記記憶ユニットは、複数のDDR4粒子(チップ)を備え得る。1つの実施例において、前記人工知能チップの内部は、データを伝送するための64ビットとECC検証を行なう8ビットとを備える4つの計72ビットのDDR4コントローラを含んでもよい。DDR4-3200粒子を各1グループの前記記憶ユニットに採用されることで、データ伝送の理論帯域を25600MB/sに達することが理解される。
1つの実施例において、各1グループの前記記憶ユニットは、並列に配置されている複数のダブルレート同期ダイナミックランダムアクセスメモリを備える。DDRは、1クロックサイクル内で2回のデータ伝送が可能である。前記チップには、各々の前記メモリセルのデータ伝送とデータ記憶の制御を行なうためのDDRを制御するコントローラが設けられている。
前記インタフェース装置は、前記人工知能チップと電気的に接続されている。前記インタフェース装置は、前記人工知能チップと外部装置(例えばサーバ又はコンピュータ)との間のデータ伝送を可能にする。例えば1つの実施例において、前記インタフェース装置は、基準PCIEインタフェースであってもよい。例えば、基準PCIEインタフェースを介して、処理待ちデータをサーバから前記チップまでに伝送されることにより、データの伝送が実現される。好ましくは、理論帯域幅は、PCIE3.0X16インタフェースを使用して伝送される場合、16000MB/sに達することができる。他の実施例において、前記インタフェース装置は、他のインタフェースであってもよく、本開示は、前記他のインタフェースの具体的な表現式を限定せず、前記インタフェースユニットが、スイッチャー機能を実現できればよい。また、前記人工知能チップの演算結果は、依然として前記インタフェース装置によって外部装置(例示えば、サーバ)に送り返される。
前記制御装置は、前記人工知能チップと電気的に接続されている。前記制御装置は、前記人工知能チップの状態を監視制御する。具体的には、前記人工知能チップおよび前記制御装置は、SPIインタフェースを介して電気的に接続され得る。前記制御装置は、マイクロコントローラーユニット(Micro Controller Unit、MCU)を含んでもよい。前記人工知能チップは、複数の処理チップ、複数の処理コア、または複数の処理回路を含んでもよく、複数の負荷を動かしても良い。したがって、前記人工知能チップは、重負荷及び軽負荷などの異なる動作状態にあってもよい。前記制御装置によって、前記人工知能チップ中の複数の処理チップ、複数の処理、および、/または複数の処理回路の動作状態の調整制御が可能になる。
1つの可能な実施態様において、上記の人工知能チップを備える電子デバイスが開示される。電子デバイスは、データ処理装置、ロボット、コンピュータ、プリンタ、スキャナ、タブレット、スマートフォン、携帯電話、ドライブレコーダ、ナビゲーションメータ、センサ、カメラヘッド、サーバ、クラウドサーバ、カメラ、ビデオカメラ、プロジェクタ、腕時計、イヤホン、モバイルストレージ、ウェアラブルデバイス、交通機関、家庭用電気器具、および、/または医療装置を備える。
前記交通機関は、航空機、船舶、および、/または車両を備え、前記家庭用電気器具は、テレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガス焜炉、油煙器を備え、前記医療装置は、核磁気共振器、超音波スキャナー、および、/または心電計を備える。
上記の実施例において、各実施例に対する説明はそれぞれ重点があり、ある実施例には詳細な説明がない場合、他の実施例の中の関連説明を参照することができる。上記の実施例の各技術特徴は、任意に組み合わせることができ、記載を簡潔にするために、上記の実施例の中の各技術特徴の全ての可能な組合せを記載していないが、これらの技術特徴の組合せに矛盾が生じない限り、本明細書に記載の範囲と見なされるべく。
以下の条項によって前述された内容をより良く理解され得る。
A1.データを処理するための方法であって、
機械学習モデルに用いられる1グループの量子化待ちデータを取得するステップと、
複数対の切捨て閾値を使用して前記1グループの量子化待ちデータをそれぞれ量子化することにより、複数グループの量子化後のデータを決定するステップであって、前記複数対の切捨て閾値の各々は、切捨て上限と切捨て下限とを含み、前記複数対の切捨て閾値の中の少なくとも1対の切捨て閾値の切捨て上限と切捨て下限は、異なる絶対値を有するステップと、
前記複数グループの量子化後のデータの各グループの量子化後のデータの絶対値の平均値と前記1グループの量子化待ちデータの絶対値の平均値との間の差異に基づいて、前記複数対の切捨て閾値から1対の切捨て閾値を選択して、前記1グループの量子化待ちデータの量子化に用いるステップと、を含むことを特徴とする方法。
A2.条項1に記載の方法であって、複数グループの量子化後のデータを決定するステップは、
前記1グループの量子化待ちデータの中の全てのデータの最大値と最小値とを決定するステップと、
前記最大値と前記最小値とに基づいて、前記複数対の切捨て閾値を決定するステップと、を含むことを特徴とする方法。
A3.条項A2に記載の方法であって、複数グループの量子化後のデータを決定するステップは、
前記最大値、所定の合計検索回数、および、現在の検索順序に基づいて、第1切捨て上限を決定するステップと、
第1対の切捨て閾値を使用して前記1グループの量子化待ちデータを量子化することにより、第1グループの量子化後のデータを決定するステップであって、前記第1対の切捨て閾値は、前記第1切捨て上限と、前記最小値と同一な第1切捨て下限と、を含むステップと、
前記第1グループの量子化後のデータの絶対値の平均値と前記1グループの量子化待ちデータの絶対値の平均値との間の第1差異を決定するステップと、をさらに含むことを特徴とする方法。
A4.条項A3に記載の方法であって、複数グループの量子化後のデータを決定するステップは、
前記現在の検索順序をインクリメントするステップと、
前記最大値、前記所定の合計検索回数、および、前記現在の検索順序に基づいて、第2切捨て上限を決定するステップと、
第2対の切捨て閾値を使用して前記1グループの量子化待ちデータを量子化することにより、第2グループの量子化後のデータを決定するステップであって、前記第2対の切捨て閾値は、前記第2切捨て上限と、前記最小値と同一な第2切捨て下限と、を含むステップと、
前記第2グループの量子化後のデータの絶対値の平均値と前記1グループの量子化待ちデータの絶対値の平均値との間の第2差異を決定するステップと、をさらに含むことを特徴とする方法。
A5.条項A1乃至A4の中の何れか1項に記載の方法であって、前記複数対の切捨て閾値から一対の切捨て閾値を選択するステップは、
前記複数グループの量子化後のデータの中の、前記1グループの量子化待ちデータの絶対値の平均値の差異が最小である1グループの量子化後のデータを決定するステップと、
前記複数対の切捨て閾値から前記1グループの量子化後のデータに対応する1対の切捨て閾値を選択するステップと、を含むことを特徴とする方法。
A6.条項A5に記載の方法であって、
前記選択された1対の切捨て閾値と関係がある切捨て検索範囲を決定するステップと、
前記切捨て検索範囲内にある新たな複数対の切捨て閾値を決定するステップと、
前記新たな複数対の切捨て閾値を使用して前記1グループの量子化待ちデータをそれぞれ量子化することにより、新たな複数グループの量子化後のデータを決定するステップと、
前記新たな複数グループの量子化後のデータの中の各グループの量子化後のデータの絶対値の平均値と前記1グループの量子化待ちデータの絶対値の平均値との差異に基づいて、前記新たな複数対の切捨て閾値から新たな1対の切捨て閾値を選択するステップと、をさらに含むことを特徴とする方法。
A7.条項A1に記載の方法であって、複数グループの量子化後のデータを決定するステップは、
前記1グループの量子化待ちデータの中の全てのデータの最大値と最小値とを決定するステップと、
前記最大値と前記最小値とに基づいて、3対の切捨て閾値を決定するステップであって、前記3対の切捨て閾値のうち第1対の切捨て閾値は、前記最大値の半分および前記最小値を含み、前記3対の切捨て閾値のうち第2対の切捨て閾値は、前記最大値の4分の3および最小値を含み、前記3対の切捨て閾値のうちの第3対の切捨て閾値は、前記最大値および前記最小値を含むステップと、
3対の切捨て閾値を使用して前記1グループの量子化待ちデータをそれぞれ量子化することにより、3グループの量子化後のデータを決定するステップと、を含むことを特徴とする方法。
A8.条項A7に記載の方法であって、前記複数対の切捨て閾値から1対の切捨て閾値を選択するステップは、
停止条件を満たすまでに以下の動作を反復して実行するステップを、含み、
前記動作は、
前記3対の切捨て閾値の中から1対の切捨て閾値を選択する動作と、
選択された1対の切捨て閾値に対応する差異が所定の閾値よりも小さいか否かを判定する動作と、
前記差異が所定の閾値よりも小さいことに応答して、反復して実行する動作を停止する動作と、
前記差異が所定の閾値よりも大きいことに応答して、選択された1対の切捨て閾値に基づいて、3対の切捨て閾値を新たに決定する動作と、を含むことを特徴とする方法。
A9.条項A1乃至A8の中の何れか1項に記載の方法であって、前記1グループの量子化待ちデータがニューラルネットワークモデル中の1グループの浮動小数点数であり、前記方法は、
選択された1対の切捨て閾値を使用して前記1グループの量子化待ちデータを量子化することによって、量子化後のデータが得るステップであって、前記1グループの量子化待ちデータを量子化することは、前記1グループの量子化待ちデータの中の選択された切捨て上限よりも大きい数値を前記切捨て上限に設定し、前記1グループの量子化待ちデータの中の選択された切捨て下限よりも小さい数値を前記切捨て下限に設定するステップと、
得られた量子化後のデータを前記ニューラルネットワークモデルに入力することによって、処理に用いるステップと、をさらに含むことを特徴とする方法。
A10.データを処理するための装置であって、
機械学習モデルに用いられる1グループの量子化待ちデータを取得するための量子化待ちデータ取得ユニットと、
複数対の切捨て閾値を使用して前記1グループの量子化待ちデータをそれぞれ量子化することにより、複数グループの量子化後のデータを決定するための量子化後のデータ決定ユニットであって、前記複数対の切捨て閾値の各々は、切捨て上限と切捨て下限とを含み、前記複数対の切捨て閾値の中の少なくとも1対の切捨て閾値の切捨て上限と切捨て下限は、異なる絶対値を有する量子化後のデータ決定ユニットと、
前記複数グループの量子化後のデータの各グループの量子化後のデータの絶対値の平均値と前記1グループの量子化待ちデータの絶対値の平均値との間の差異に基づいて、前記複数対の切捨て閾値から1対の切捨て閾値を選択して、前記1グループの量子化待ちデータの量子化に用いるための切捨て閾値選択ユニットと、を備えることを特徴とする装置。
A11.条項10に記載の装置であって、前記量子化後のデータ決定ユニットは、
前記1グループの量子化待ちデータの中の全てのデータの最大値と最小値とを決定するための最大値と最小値決定ユニットと、
前記最大値と前記最小値とに基づいて、前記複数対の切捨て閾値を決定するための複数対の切捨て閾値決定ユニットと、を備えることを特徴とする方法。
A12.条項A11に記載の装置であって、前記量子化後のデータ決定ユニットは、
前記最大値、所定の合計検索回数、および、現在の検索順序に基づいて、第1切捨て上限を決定するための第1切捨て上限決定ユニットと、
第1対の切捨て閾値を使用して前記1グループの量子化待ちデータを量子化することにより、第1グループの量子化後のデータを決定するための第1グループの量子化後のデータ決定ユニットであって、前記第1対の切捨て閾値は、前記第1切捨て上限と、前記最小値と同一な第1切捨て下限と、を含むの第1グループの量子化後のデータ決定ユニットと、
前記第1グループの量子化後のデータの絶対値の平均値と前記1グループの量子化待ちデータの絶対値の平均値との間の第1差異を決定するための第1差異決定ユニットと、をさらに備えることを特徴とする装置。
A13.条項A12に記載の装置であって、前記量子化後のデータ決定ユニットは、
前記現在の検索順序をインクリメントするためのインクリメントユニットと、
前記最大値、前記所定の合計検索回数、および、前記現在の検索順序に基づいて、第2切捨て上限を決定するための第2切捨て上限決定ユニットと、
第2対の切捨て閾値を使用して前記1グループの量子化待ちデータを量子化することにより、第2グループの量子化後のデータを決定するための第2グループの量子化後のデータ決定ユニットであって、前記第2対の切捨て閾値は、前記第2切捨て上限と、前記最小値と同一な第2切捨て下限と、を含む第2グループの量子化後のデータ決定ユニットと、
前記第2グループの量子化後のデータの絶対値の平均値と前記1グループの量子化待ちデータの絶対値の平均値との間の第2差異を決定するための第2差異決定ユニットとをさらに備えることを特徴とする装置。
A14.条項A10乃至A13の中の何れか1項に記載の装置であって、前記切捨て閾値選択ユニットは、
前記複数グループの量子化後のデータの中の、前記1グループの量子化待ちデータの絶対値の平均値の差異が最小である1グループの量子化後のデータを決定するための最小差異決定ユニットと、
前記複数対の切捨て閾値から前記1グループの量子化後のデータに対応する1対の切捨て閾値を選択するための第2切捨て閾値選択ユニットと、を備えることを特徴とする装置。
A15.条項A14に記載の装置であって、
前記選択された一対の切捨て閾値と関係がある切捨て検索範囲を決定する切捨て検索範囲決定ユニットと、
前記切捨て検索範囲内の新たな複数対の切捨て閾値を決定するための新たな複数対の切捨て閾値決定ユニットと、
前記新たな複数対の切捨て閾値を使用して前記1グループの量子化待ちデータをそれぞれ量子化することにより、新たな複数グループの量子化後のデータを決定するための第2量子化後のデータ決定ユニットと、
前記新たな複数グループの量子化後のデータの中の各グループの量子化後のデータの絶対値の平均値と前記1グループの量子化待ちグループのデータの絶対値の平均値との差異に基づいて、前記新たな複数対の切捨て閾値から新たな1対の切捨て閾値を選択するための第3の切捨て閾値選択ユニットと、をさらに備えることを特徴とする装置。
A16.条項A10に記載の装置であって、前記量子化後のデータ決定ユニットは、
前記1グループの量子化待ちデータの中の全てのデータの最大値と最小値とを決定する最大値と最小値決定ユニットと、
前記最大値と最小値とに基づいて、3対の切捨て閾値を決定するための3対の切捨て閾値決定ユニットであって、前記3対の切捨て閾値のうち第1対は、前記最大値の半分および前記最小値を含み、前記3対の切捨て閾値のうち第2対は、前記最大値の4分の3および前記最小値を含み、前記3対の切捨て閾値のうちの第3対は、前記最大値および前記最小値を含む3対の切捨て閾値決定ユニットと、
3対の切捨て閾値を使用して前記1グループの量子化待ちデータをそれぞれ量子化することにより、3グループの量子化後のデータを決定するための3グループの量子化後のデータ決定ユニットと、を備えることを特徴とする装置。
A17.条項A16に記載の装置であって、前記切捨て閾値選択ユニットは、
停止条件を満たすまでに以下の動作を反復して実行するための反復ユニットを備え、
前記動作は、
前記3対の切捨て閾値から1対の切捨て閾値を選択する操作と、
選択された1対の切捨て閾値に対応する差異が所定の閾値よりも小さいか否かを判定する動作と、
前記差異が所定の閾値よりも小さいことに応答して、反復して実行する動作を停止する動作と、含むことを特徴とする装置。
A18.条項A10乃至A17の中の何れか1項に記載の装置であって、前記1グループの量子化待ちデータがニューラルネットワークモデル中の1グループの浮動小数点数であり、前記装置は、
選択された1対の切捨て閾値を使用して前記1グループの量子化待ちデータを量子化することによって、量子化後のデータが得るためのデータ量子化ユニットであって、前記1グループの量子化待ちデータを量子化することは、前記1グループの量子化待ちデータの中の選択された切捨て上限よりも大きい数値を前記切捨て上限に設定し、前記1グループの量子化待ちデータの中の選択された切捨て下限よりも小さい数値を前記切捨て下限に設定するデータ量子化ユニットと、
処理されるように、得られた量子化後のデータを前記ニューラルネットワークモデルに入力するためのデータ入力ユニットと、を備えることを特徴とする装置。
A19.コンピュータ可読記憶媒体であって、
前記コンピュータ可読記憶媒体には、コンピュータプログラムが記憶されており、前記コンピュータプログラムが実行されると、条項A1乃至A9の何れか1項に記載の方法を実現することを特徴するコンピュータ可読記憶媒体。
A20.人工知能チップであって、
前記人工知能チップは、条項A10乃至A18の何れか1項に記載のデータを処理するためのユニットを備えることを特徴とする人工知能チップ。
A21.電子デバイスであって、
前記電子デバイスは、条項A20に記載の人工知能チップを備えることを特徴とする電子デバイス。
A22.ボードカードであって、
記憶装置と、インタフェース装置と、制御装置と、条項20に記載の人工知能チップと、を備え、
ここで、前記人工知能チップは、前記記憶装置、前記制御装置、および、前記インタフェース装置に接続され、
前記記憶装置は、データを記憶し、
前記インタフェース装置は、人工知能チップと外部装置との間のデータ伝送を実現し、
前記制御ユニットは人工知能チップの状態を監視制御することを特徴とするボードカード。
A23.条項A22に記載のボードカードであって、
前記記憶装置は、バスによって各グループの記憶ユニットと前記人工知能チップとが接続される複数グループの記憶ユニットを備え、前記記憶ユニットは、DDR SDRAMであり、
前記チップは、前記各記憶ユニットに対するデータの伝送とデータ記憶に用いられるDDRコントローラーを備え、
前記インタフェース装置は、標準のPCIEインタフェースであることを特徴とするボードカード。
上記の内容は、本開示の実施例に対して詳細に説明した。本明細書において、本開示の原理及び実施例について、具体的な例を適用して説明した。上記の実施例の説明が本開示の方法及びその中心思想に対する理解を助けるだけためである。同時に、当業者が本発明の思想に基づいて行なった本開示の具体的な実施例および応用範囲での変形または変更は、本発明の保護請求する範囲に属する。上記の内容を纏めて、本明細書の内容は、本開示を限定するものと理解されるべきではない。
本開示の実施例は、コンピュータ技術の分野に関し、より具体的には、データを処理するための方法、装置、および、関連する製品に関する。
コンピュータ技術の発展に伴い、各種の複雑なタスクを処理するためにディープ学習アルゴリズムがますます用いられている。データを処理するためにディープ学習アルゴリズムを使用して、検索技術、データマイニング、機械学習、機械翻訳、自然言語処理、マルチメディア学習、音声、推奨および個人化技術、ならびに他の関連分野において優れた効果を得た。
ネットワーク層の数が多いければ多いほど、演算の複雑さがますます高くなり、デバイスの演算能力を向上させることは、ディープ学習の発展にとって重要である。よって、人々は各々の方式によりデバイスの演算能力を向上させることが行われている。然しながら、機械学習過程でデバイスの演算能力を向上させるには、解決すべき課題が多い。
少なくとも上記課題を解決するために、以下の技術案を提案する。
以下は、本開示の実施例中の図面を参照しながら本開示の実施例中の技術案に対して明確かつ完全に説明する。明らかに、説明される実施例は、本開示の実施例の一部であるが、全部ではない。本開示の実施例に基づいて、創造性の労働をせずに当業者によって得られる他の全ての実施例は、何れも本開示の保護請求する範囲に属する。
本開示の特許請求の範囲、明細書、および、図面中の「第一」、「第二」、「第三」、および、「第四」などの用語が、異なる対象物を区別するために利用されており、特定の順を説明するために利用されていないことが理解されるべく。本開示の明細書と特許請求の範囲内の「備える(「包括」は中に含める、入れるの意味である)」と「包含(「包含」はその中に含まれるという意味である)」という用語は、説明される特徴、全体、ステップ、動作、要素および/または構成要素の存在を指すが、一つ以上の他の特徴、整体、ステップ、動作、要素、構成要素および/またはそれらの組合せの存在または追加を排除するものではない。
本開示の説明書に用いられる用語が特定の実施例を説明する目的のためだけのものであり、本開示を限定することを意図しないことが理解されるべく。本開示の明細書と特許請求の範囲に用いられるように、単数形「一」、「一つ」、および、「この」が、文脈が明らかに他のことを示しない限り、複数形を備えることを意図する。本開示の説明書と特許請求の範囲内の「および/または」という用語は、関連して列挙される項目のうちの一つ以上の任意の組合せ及び全ての可能な組合せを指し、これらの組合せを備えることも更に理解されるべく。
本開示の明細書と特許請求の範囲に用いられるように、「若し」という用語が、文脈に応じて、「…場合」または「…すると」または「決定に応答」または「検出に応答」に説明される。同様に、「決定される場合」または「検出される場合(説明される条件またはイベント)」という連語が、文脈に応じて、「決定されると」または「決定に応答」または「検出されると(説明される条件またはイベント)」または「検出に応答(説明される条件またはイベント)」に説明される。
ニューラルネットワークアルゴリズムの発展に伴い、ニューラルネットワーク中のネットワーク層の数はますます多くなっている。この発展の傾向は、演算の複雑さをますます高くさせる。また、ニューラルネットワークの発展傾向により、演算装置の演算能力は、より大きな発展を必要とする。幾つかの場合、演算リソースの制限のため、限られた演算リソースをうまく利用してニューラルネットワークアルゴリズムを処理することができなくなった。
一般的に、演算装置で扱われるデータが32ビットの浮動小数点型のデータである。このような浮動小数点型のデータを取り扱う量が非常に膨大である場合、演算装置は、これらのデータを格納するための大きな記憶容量と、高い演算能力とを備える必要がある。また、伝送時のデータ伝送量が多過ぎる場合、機械学習モデルの処理の効率にも影響を与える。
少なくとも1つの問題に対処するために、本開示は、データを処理するための方法を提案する。ニューラルネットワークと関係がある処理データを所定の数の区間に分布させてから、データの平均値に基づいて最適な切捨て閾値を選択する。このデータは、切捨て閾値を使用してデータを切り捨てて高精度フォーマットから低精度フォーマットまでに量子化される。例えば32ビットの浮動小数点型データを8ビットの整数データに変換する。本開示の方法により、データ処理量を低減しつつ、データ処理の正確さを可能な限り高く保証する。それ以外、当該方法は、データ伝送量を大幅に低減することを助け、それによって、複数の演算装置のデータ交換を大幅に加速する。
図3-1は、本開示の実施例に係るデバイスおよび/または方法が実行され得る例の環境3-100を示す模式図である。
例の環境3-100には機械学習モデルと関係がある複数のデータ3-102を備える。複数のデータ3-102の各々は、何れも同じ高精度フォーマットを有する。データ3-102の精度フォーマットの高さは、変換後の複数のデータ3-104の精度に対してのみなされている。図3-1において、複数のデータ3-102が、例えば32ビットの浮動小数点型のデータであることが示されている。図3-1の中の複数のデータ3-102のデータビット数が32ビットであり、例示的なためであり、開示の制限ではない。データ3-102は、例えば64ビットの倍精細度データ、または必要に応じて設定される任意の適切な精度のデータなどの任意の適切な相対高い精度フォーマットのデータであり得る。
幾つかの実施例において、機械学習モデルはニューラルネットワークモデルである。ニューラルネットワークモデルには、コンボリユーションニューラルネットワークモデル、再帰的ニューラルネットワークモデルなどを備えるが、これらに限定されない。
幾つかの実施例において、機械学習モデルと関係がある複数のデータ3-102は、機械学習モデルの重み値、入力ニューロンデータ、出力ニューロンデータ、および、/またはバイアス値などとすることができる。上述した例は、本開示を説明するだけためのものであり、本開示を具体的に限定するものではない。機械学習モデルと関係がある複数のデータ3-102は、機械学習モデルに用いられ、または処理待ち任意の関連データとすることができる。
機械学習モデルと関係がある複数のデータ3-102は、演算装置の処理を経て、低精度フォーマットの複数のデータ3-104に変換される。図3-1に示すように、複数のデータ3-102を、32ビットの高精度フォーマットの浮動小数点型データから複数の低精度フォーマットの8ビットの整数データ3-104までに変換する。複数のデータ3-104の各々は、8ビットで表される。よって、複数のデータ3-104は、-128-127の間の範囲を表し得る。なお、複数のデータ3-104の低精度フォーマットは、変換前のデータ3-102の精度フォーマットに対するのみのものである。図3-1に示される複数のデータ3-104の各々が、8ビットを使用して表されるのは、単なる例示であり、本開示を具体的に限定するものではない。よって、複数のデータ3-104の精度形式は、複数のデータ3-102の精度形式より低い任意の適切なデータ型であり得る。
高精度フォーマットのデータを低精度フォーマットに変換するための演算装置は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、モバイルデバイス(例えば携帯電話、携帯情報端末(PDA、メディアプレーヤーなど)、マルチプロセッサシステム、家庭用電気製品、小型コンピュータ、大型コンピュータ、上記のシステムまたはデバイスのいずれか1つを備える分布式コンピューティング環境などを備えるが、これらに限定されない。
演算装置は、複数のデータ3-102を複数のデータ3-104に変換する過程で、先ず、複数のデータ3-102の中のデータの絶対値最大値を決定してから、0から最大値までの範囲全体を所定の数Nの1グループの区間に分割する。この1グループの区間に、複数のデータ3-102が、それらの絶対値の大きさに従って分布される。この所定の数Nは、任意の適切な数値であってもよい。好ましくは、この所定の数Nは、低精度フォーマットのデータの最大値よりも大きい。例えば8ビットで1つの整数を表すとき、8ビットで表される最大値は127である。よって、所定の数Nは、127よりも大きい値、例えば256、528、1024、2048であってもよい。
演算装置は、区間変換を行なう前の複数のデータの第1平均値を決定する。演算装置は、さらに、1グループの区間の中の前のj個の区間を1つのマッピング単位として形成し、そのうちjは0よりも大きい正の整数であり、jがNよりも小さい値であるMからNまでに変化する場合、N-M+1個のマッピング単位を形成することができる。好ましくは、M=低精度フォーマットのデータが示す最大値+1である。前記データ3-102の例において、例えばM=127+1=128である。
演算装置は、N-M+1個のマッピング単位を、低精度フォーマットのデータのビット数に基づいて分割された第2の数の第2グループの区間に、それぞれマッピングすることによって、マッピング単位に従ってマッピングされたデータの第2平均値の決定に用いることができる。演算装置は、各マッピング単位に対して、第2区間にマッピングされたデータの第2平均値が得ることができる。演算装置は、各マッピング単位に対して、第1平均値と第2平均値との間の差分値を決定することができる。1例において、差分値が最小であるマッピング単位、即ちjの大きさが決定される。jの値に応じて切捨て閾値を決定することができる。次いで、データに対して切捨て処理を行ない、即ち複数のデータの中の切捨て閾値よりも大きなデータを切捨て閾値に書き直す。次いで、切捨て閾値を使用してスケーリング値を決定する。切捨て処理を経た複数のデータに対して、このスケーリング値を使用して縮小拡大処理を実行し、データを、第2データフォーマットを有する複数のデータ3-104に変換する。
複数のデータ3-102を複数のデータ3-104に変換した後、複数のデータ3-104を機械学習モデルに提供して、機械学習モデル処理3-106に用いてもよい。
上記の図3-1は、本開示の実施例に係るデバイスおよび/または方法が実行され得る例の環境3-100を示す模式図である。以下は、図3-2を参照しながら本開示の実施例に係るデータを処理するためのプロセス3-200を説明し、ここで、図3-2は、本開示の実施例に係るデータを処理するためのプロセス3-200を示すフローチャートである。
図3-2に示すように、ブロック3-202において、演算装置は、第1データフォーマットで表される機械学習モデルに用いられる複数のデータを得る。図3-1に示すように、演算装置が得た複数のデータ3-102の中の各データは、何れも32ビットの浮動小数点型フォーマットである。図3-1の複数のデータ3-102の各データが32ビットの浮動小数点型フォーマットは、単なる例示であり、本開示を具体的に限定するものではない。
幾つかの実施例において、機械学習モデルに用いられる複数のデータは、機械学習モデルの重み値、入力ニューロンデータ、出力ニューロンデータ、および、/またはバイアス値などである。上記の例は、本開示を説明するだけためのものであり、本開示を具体的に限定するものではない。機械学習モデルに用いられる複数のデータは、機械学習モデルに用いられる任意の関連するデータであってよい。
ブロック3-204において、演算装置は、複数のデータの値に基づいて、複数のデータを第1グループの区間に分布し、第1グループの区間の数は予め定められているものである。データを量子化するために、一般的に、データを予め定められた所定の数の区間に分布する。幾つかの実施例において、データ区間の数Nは、任意の適切な数に設定されてもよい。例えば、256、1024、2048であってもよい。代替的または追加的に、データ区間の数Nは、変換後のデータタイプによって表される最大の整数よりも大きいものを選択してもよい。例えば変換対象データが8ビットの整数である場合、この8ビットの整数が表す最大の整数が127であるため、127よりも大きい数を区間の数として選択することができる。例えば、データ区間の数Nは、256、512、1024、2048であり得る。
分割待ち区間の数Nを決定した後、複数のデータのうち絶対値が最大のデータを決定してから0と当該絶対値最大値との間のデータ区間全体を、N個の区間を備える第1グループの区間に分割する。
ブロック3-206において、演算装置は、複数のデータの第1平均値を決定する。定数変換の精度を一定にするために、本開示は、変換前のデータの平均値と変換後のデータの平均値との間の差によって、定数変換の精度を改善する。よって、変換前の複数のデータの平均値を算出する必要がある。
幾つかの実施例において、演算装置は、受信した複数のデータの平均値を演算するとき、先ず複数のデータの絶対値と複数のデータの数を決定する。次いで、演算装置は、複数のデータの中のデータの絶対値数と数とに基づいて平均値を決定する。例えば全てのデータの絶対値の和を求めてから絶対値の数を除算することによって、処理待ちデータの第1平均値を決定する。
幾つかの実施例において、演算装置は、受信した複数のデータの第1平均値を演算するとき、第1グループの区間の各区間の中間値と各区間に有するデータの数とを決定する。演算が便利なように、各区間の中間値を当該区間中のデータの平均値とする。次いで、演算装置は、各区間の中間値と当該区間中のデータの数に基づいて平均値を決定する。より具体的には、演算装置は、各区間の中間値に各区間中のデータの数を乗算してから和を求めてから、データの数の合計で除算して、データの第1平均値を決定する。
幾つかの実施例において、複数のデータの第1平均値を決定するとき、第1平均値は、対応するマッピング単位に関連付けられている。演算装置は、先ずマッピング単位の各区間中のデータの数と各区間の中間値とを決定し、ここで1マッピング単位は、第1グループの区間の中の第1区間からの前のj個の区間に対応し、j個の区間中の最後の1区間を終了区間とする。次いで、第1グループの区間の、終了区間の後に位置する区間中のデータを終了区間内に入れる。即ちマッピング単位の終了区間中のデータの数は、第1グループの区間中の、終了区間に対応する区間およびこの区間の後のすべての区間中のデータの数の和である。次いで、演算装置は、各区間中のデータの数と各区間の中間値とに基づいて第1平均値を決定する。
ブロック3-208において、演算装置は、第1グループの区間に分布されているデータを複数の異なるマッピング単位に従って第2グループの区間にマッピングすることによって、マッピング単位に従ってマッピングされたデータの第2平均値の決定に用い、ここで、マッピング単位は、第1グループの区間の第1区間から始まる所定の数の連続区間を含み、マッピング単位の終了区間には複数のデータの中の終了区間よりも大きいデータまたは終了区間に位置するデータが分布され、第2グループの区間の中の区間の数は、精度が第1データフォーマットよりも低い第2データフォーマットに関連する。
複数のデータを第1グループの区間に分割した後、第1グループの区間から前のj個の区間を選択してマッピング単位とし、jの値はN未満の値であるMから第1グループの区間の中の区間の合計数Nまでの値をとる。よって、N-M+1個のマッピング単位が存在する。好ましくは、Mの値は、低精度フォーマットのデータが示す最大値よりも大きい。1例において、低精度フォーマットのデータが8ビットであるとき、当該データが表す最大値は127であり、Mの値は128をとる。
次いで、演算装置は、N-M+1個のマッピング単位を、低精度フォーマットのデータが表現可能な第2の数の第2グループの区間にそれぞれマッピングする。1例において、図3-1の複数のデータ3-104のフォーマットが8ビットの整数である場合、各マッピング単位の区間を、第2グループの区間の128個の区間にマッピングする。よって、マッピング単位のj/128個の区間を、第2グループの区間の1区間にマッピングする。
次いで、演算装置は、各マッピング単位に対して、何れも第2区間にマッピング後の第2平均値を得ることができる。各マッピング単位に対して、マッピング後の平均値は、第2グループの区間の中の区間の中間値と区間に位置する数とによって決定される。例えば第2平均値は、第2区間中の各区間の中間値と各区間中のデータの数を乗算してからデータの数の合計で除算することで得ることができる。
ブロック3-210において、演算装置は、処理された複数のデータが第2データフォーマットで表されるように、第1平均値と複数の第2平均値とに基づいて複数のデータに対する処理を実行する。複数のデータに対する処理の実行過程は、図3-3を参照して詳細に説明する。
上記の方法によって、高精度フォーマットのデータを低精度フォーマットのデータに変換して処理することができる。データを表すためのビット数が少なくなるため、データを処理するための演算リソースを削減することができるとともに、複数のマッピング単位から変換前のデータの平均値との差別が最小であるマッピング単位を選択するため、処理結果の正確さをできるだけ保証することができる。
上記の図3-2は、本開示の実施例に係るデータを処理するためのプロセス3-200を示すフローチャートである。下記は、図3-3を参照しながら図3-2の中のブロック3-210でのデータを処理するためのプロセスを説明し、そのうち図3-3は、本開示の実施例に係るデータを処理するためのプロセス3-300を示すフローチャートである。
ブロック3-302において、演算装置は、第1平均値と複数の第2平均値とに基づいて複数のマッピング単位と関係がある複数の差分値を決定する。演算装置は、受信した複数のデータの第1平均値と各マッピング単位に対応する第2平均値とを取得した後、第1平均値と各第2平均値との差分値を決定する。よって、演算装置は、複数のマッピングに対応する複数の差分値を取得し得る。
1例において、0と複数のデータの絶対値最大値との間の区間全体を2048個の区間に分割する。複数のデータを第1精度フォーマットから8ビット整数データに変化させるとき、jが128から2047に変化されて、2048区間の中から前のj+1個の区間を選んでマッピング単位とする。上述されるように、1マッピング単位に対応する各々のj値に対して、マッピング単位の後に位置する区間中のすべてのデータをマッピング単位のj+1個の区間中の最後の1区間に入れることにより、複数のデータの第1平均値mean1を得る。次いで、j+1個の区間を128個の第2区間にマッピングしてから128個の第2区間の各区間の中間値と、第2区間に位置する各区間中のデータの数とを決定する。次いで、j+1個の区間中の各区間の中間値と、その区間のデータの数との積を加算してからデータの数の合計で除算することにより、第2平均値mean2を決定する。各マッピング単位に対して、区間切捨て処理後の平均値の差分値がmean1-mean2である。
ブロック3-304において、複数の差分値に基づいて、複数のデータに用いられる切捨て閾値が決定される。演算装置は、複数の差分値に基づいて、複数の差分値の中の最小の差分値に対応するマッピング単位を決定する。1例において、演算装置は、複数の差分値を取得した後、複数の差分値の各差分値を、それらに対応する第1平均値で除算することにより、複数の差分値分率を取得する。差分値率が最小となるマッピング単位を選定されたマッピング単位とする。1例において、演算装置は、複数の差分値を取得した後、複数の差分値の中の最小の差分値に対応するマッピング単位を選択されたマッピング単位とする。
複数の差分値に基づいて、マッピング単位を決定した後、jの値を決定する。次いで、jの値によって切捨て閾値を決定する。1例において、切捨て閾値thresholdは、下記の式(1)に決定され得る。
ここで、best_jは、決定された最小の差分値または差分値率に対応するマッピング単位の区間の数を表し、Nは、分割された第1グループの区間の数を表し、absmaxは、複数のデータの中で絶対値最大値を表す。
ブロック3-306において、演算装置は、切捨て閾値に基づいて、取得された複数のデータを切り捨てる。演算装置は、切捨て閾値を取得した後、複数のデータの中の切捨て閾値よりも大きい値を切捨て閾値に調整する。
ブロック3-308において、演算装置は、切捨て閾値に基づいて、マッピング単位と関係があるスケーリング値を決定する。1例において、演算装置は、閾値の差分値に対応するマッピング単位を選択した後、このマッピング単位に対応する区間の数に基づいて、受信した複数のデータに対する切捨て閾値を決定する。次いで、切捨て閾値thresholdを使用して、下記の式(2)により、スケーリング値scaleを決定する。
ここで、nは、第2データフォーマットのデータのビット数を表す。
1例において、変換データが8ビットの整数であるとき、scale=threshold/127である。上記の例は、本開示を説明するだけためのものであり、本開示を具体的に限定するものではない。
オプションとして、ブロック3-310において、演算装置は、スケーリング値に基づいて、切り捨てられた複数のデータをスケーリングして第2データフォーマットの複数のデータを得る。幾つかの実施例において、複数のデータに対するスケーリング処理は、他の演算装置で実行されてもよい。
上記の方法でデータを第1データフォーマットから第2データフォーマットに変換するとき、データフォーマット変換前後のデータ間の誤差を最小にするための最適な切捨て閾値を求めることができる。
1実施例において、機械学習モデルに用いられる、例えば32ビットの浮動小数点数フォーマットの第1データフォーマットで表す複数のデータを取得する。データのデータ量を減らすために、複数のデータを第2データフォーマットで表し、例えば8ビットの整数データで表す。この複数のデータ中から絶対値最大値absmaxを見付ける。次いで、0から絶対値最大値までの間の区間を2048個の区間に分割する。変換する前に、まず、この複数のデータを絶対値に応じて2048個のデータ区間に分布する。
次いで、2048個の区間中の各区間に分布されている複数のデータのデータの数を統計する。例えば、bin[i]は、複数のデータの中の絶対値がi/2048 absmax~(i+1)/2048 absmaxの間に位置するデータの数すなわち第i+1個の区間に位置するデータの数を表し、ここで、bin[0]は、複数のデータの中の絶対値が第1個の区間0~1/2048absmaxの間に位置するデータの数を表す。
このとき、複数のデータの第1平均値が決定してもよい。1例において、複数のデータの第1平均値mean1は、複数のデータの絶対値の和を複数のデータの数で除算することによって決定される。1例において、複数のデータの第1平均値mean1は、各区間の中間値を各区間中のデータの数で乗算してから、全ての区間の乗算値を加算し、データの数で除算することにより決定される。幾つかの例において、第1平均値mean1は、各マッピング単位が決定されるときに決定され得る。
jをマッピング単位に対応する区間の数に設定し、第2データフォーマットが8ビットの整数である場合、jは128から2047に変化し、128~2047の中の、1マッピング単位に対応する各値を取る。
このとき、データ区間に対して切捨て処理を実行した後、区間切捨て後のデータの平均値を第1平均値としてもよい。区間が切り捨てられた後、各区間の中間値に区間中のデータの数を乗算してから各区間の積を加算し、データの数の合計で除算することにより、各マッピング単位に対する第1平均値mean1を決定する。
各j値に対して、即ち各マッピング単位に対応して、bin_before
[0]、bin_before[1]、…、bin_before[j-1]を、bin_next[0]、bin_next[1]、…、bin_next[127]に圧縮される。即ち第j/128のbin_beforeを1bin_nextに対応させる。次いで、調整後の複数区間の平均値即ち各区間の中間値に各区間のデータの数を乗算し、すべての区間の積の和をデータの数の合計で除算することにより、このマッピング単位に対応する第2区間の平均値mean2を取得する。次いで、第1平均値と第2平均値との差mean1-mean2を決定することができる。
第1平均値mean1と第2平均値mean2との差分値率は、下記の式(3)により算出される:
diff_mean = abs(mean1-mean2)/mean1 (3),
ここで、abs(mean1-mean2)は、(mean1-mean2)の絶対値を表す。
jを128から2047までに変化させ、各j値が対応するdiff_meanを有し、全てのj値の中から最小のdiff_meanに対応するj値を選択する。jの値を決定した後、切捨て閾値は、上記式(1)により決定され得る。次いで、複数のデータに対して切捨て処理を行なう。切捨て処理が終了すると、上記の式(2)により、複数のデータの量子化が終了される。
なお、前述した方法の実施例のそれぞれについて、簡単に説明するために、それを一連の動作の組合せとして表したが、当業者は、本開示に従って、あるステップが他の順序を取ることができ、または同時に行われることができるため、本開示が記載される動作順に限定されないことが理解されるべく。次に、当業者は、明細書に記載される実施例が何れも選択可能な実施例に属し、関連する動作及びモジュールが本開示に必ずしも必要ではないことが理解されるべく。
なお、フローチャート中の各ステップが矢印の指示に従って順番に表示されるが、これらのステップが矢印の指示の順に順次実行されることは必須ではない。これらのステップの実行は、本明細書に明示的に記載されていない限り、厳密な順序の制限はなく、他の順序で実行されてもよい。フローチャートの少なくとも一部のステップは、複数のサブステップまたは複数の段階を含んでもよく、これらのサブステップまたは段階は、必ずしも同じ時点で実行完了する必要はなく、異なる時点で実行してもよく、これらのサブステップまたは段階の実行順序も、必ずしも順次行なう必要はなく、他のステップまたは他のステップのサブステップまたは段階の少なくとも一部と順番または交替で実行してもよい。
図3-4は、データを処理する装置3-400を示し、当該装置3-400は、機械学習モデルに用いられる複数のデータを取得するための取得モジュール3-402であって、前記データは第1データフォーマットで表される取得モジュール3-402と、前記複数のデータの値に基づいて、前記複数のデータを第1グループの区間に分布するための分布モジュール3-404であって、前記第1グループの区間の数が予め決定されるものである分布モジュール3-404と、前記複数のデータの第1平均値を決定する第1平均値決定モジュール3-406と、複数の異なるマッピング単位に従って、前記第1グループの区間に分布されているデータを第2グループの区間にマッピングすることによって、該当するマッピング単位に従ってマッピングされたデータの第2平均値の決定に用いるための第1マッピングモジュール3-408であって、前記マッピング単位は、前記第1グループの区間の第1の区間から始まる所定の数の連続区間を含み、前記マッピング単位の終了区間には、前記複数のデータの中の終了区間に位置するデータまたは終了区間よりも大きいデータが分布され、第2グループの区間の中の区間の数は第2データフォーマットと関係が有り、第2データフォーマットの精度は前記第1データフォーマットよりも低い第1マッピングモジュール3-408と、前記第1平均値と前記複数の第2平均値とに基づいて、前記複数のデータに対する処理を実行することによって、処理された前記複数のデータを前記第2データフォーマットで表すための実行モジュール3-410と、を備える。
幾つかの実施例において、第1マッピングモジュール3-408は、複数のデータの中の前記マッピング単位の終了区間よりも大きいデータを、前記マッピング単位の終了区間に再分布するための再分布モジュールと、前記複数のマッピング単位をそれぞれ第2区間にマッピングすることによって、該当するマッピング単位に従ってマッピングされたデータの第2平均値の決定に用いるための第2マッピングモジュールと、を備える。
幾つかの実施例において、前記実行モジュール3-410は、前記第1平均値と複数の第2平均値とに基づいて、複数の前記マッピング単位と関係がある複数の差分値を決定するための差分値決定モジュールと、前記複数の差分値に基づいて、前記複数のデータに用いられる切捨て閾値を決定するための切捨て閾値決定モジュールと、前記切捨て閾値に基づいて、取得された複数のデータを切り捨てる切捨てモジュールと、前記切捨て閾値に基づいて、前記マッピング単位と関係があるスケーリング値を決定するためのスケーリング値決定モジュールと、を備える。
幾つかの実施例において、前記実行モジュール3-410は、前記スケーリング値に基づいて、切り捨てられた前記複数のデータをスケーリングするスケーリングモジュールをさらに備える。
幾つかの実施例において、この装置は、前記データの絶対値最大値に基づいて、前記複数のデータと関係がある第1グループの区間を決定するための区間決定モジュートをさらに備える。
幾つかの実施例において、前記第1の平均値決定モジュール3-406は、前記複数のデータの中のデータの絶対値と前記複数のデータの数とを決定するための絶対値と数の決定モジュールと、前記複数のデータの中のデータの絶対値と前記数とに基づいて前記平均値を決定するための第2平均値決定モジュールと、を備える。
幾つかの実施例において、前記第1の平均値決定モジュール3-406は、前記第1グループの区間の中の各区間の中間値と各区間に有するデータの数とを決定するための第1中間値とデータの数決定モジュールと、前記中間値と前記データの数とに基づいて前記平均値を決定するための第3平均値決定モジュールと、を備える。
幾つかの実施例において、前記第1の平均値決定モジュール3-406は、前記マッピング単位の各区間に位置するデータの数と各区間の中間値とを決定するための第2中間値とデータの数決定モジュールと、前記データの数と前記中間値とに基づいて前記第1平均値を決定するための第4平均値決定モジュールと、を備える。
幾つかの実施例において、第2グループの区間の中の区間の数は、前記第2フォーマットと関係があるビット数に基づいて決定される。
上記の装置の実施例は、ただ例示的なものであり、本開示の装置は更に他の式で実現されてもよいことが理解されるべく。例えば上記の実施例で説明されたユニット/モジュールの分割は、一つの論理的機能の分割のみであったが、実際に実現する場合には別の分割方式があってもよい。例えば複数のユニット、モジュール、またはサブアセンブリーを組み合わせてもよく、または別のシステムに統合されてもよいし、または幾つかの特徴を省略すてもよいし、または実施しなくてもよい。
また、特に説明しない限り、本開示の各実施例中の各機能ユニット/モジュールは、1つのユニット/モジュールに統合されてもよいし、各ユニット/モジュールが物理的にそれぞれ存在してもよいし、2つ以上のユニット/モジュールが統合されてもよい。上記の統合されたユニット/モジュールは、ハードウェアの形態で実現されてもよく、ソフトウェアモジュールの形態で実現されてもよい。
統合された前記ユニット/モジュールがハードウェアの形態で実現される場合、このハードウェアは、デジタル回路、アナログ回路などであり得る。ハードウェア構造の物理的な実現は、トランジスタ、メモリスタなどを備えるが、これらに限定されない。前記人工知能プロセッサは、特に説明しない限り、例えばCPU、GPU、FPGA、DSP、および、ASICなどの任意の適切なハードウェアプロセッサであってもよい。前記記憶ユニットは、特に説明しない限り、例えば抵抗ランダムアクセスメモリRRAM (Resistive Random Access Memory)、ダイナミックランダムアクセスメモリDRAM(Dynamic Random Access Memory)、スタティックランダムアクセスメモリSRAM(Static Random-Access Memory)、強化ダイナミックランダムアクセスメモリEDRAM(Enhanced Dynamic Random Access Memory)、高帯域幅メモリHBM (High-Bandwidth Memory)、ハイブリッドメモリ立方体HMC (Hybrid Memory Cube)などの任意の適切な磁気または光磁気記憶媒体であり得る。
統合された前記ユニット/モジュールがソフトウェアモジュールの形態で実現され、独立した製品として販売または使用される場合、1コンピュータ可読メモリに記憶され得る。このような理解に基づいて、本開示の技術案は、本質的に、または、従来の技術に貢献した部分、または、この技術案の全部または部分をソフトウェア製品の形態で具体化することができ、このソフトウェア製品は1メモリに記憶され、本開示の各の実施例で説明される方法の全部または部分のステップを、1台の演算装置(パーソナルコンピュータ、サーバ、またはネットワークデバイスなどであってもよい)に実行させるための命令を備える。前記メモリは、U-ディスク、読取専用メモリ(Read-Only Memory、ROM)、ランダムアクセスメモリ(Random Access Memory、RAM)、移動ハードディスク、磁気ディスク、または光ディスクなどの各々のプログラムコードを記憶可能な媒体を備える。
1つの実施例において、前記データ処理ユニットを備える人工知能チップが更に開示される。
1つの実施例において、記憶装置と、インタフェース装置と、制御装置と、前記人工知能チップと、を備えるボードカードが開示される。ここで、前記人工知能チップは、前記記憶装置、前記制御装置、および、前記インタフェース装置にそれぞれ接続され、前記記憶装置は、データを記憶し、前記インタフェース装置は、前記人工知能チップと外部装置との間のデータ伝送を実現し、前記制御ユニットは、人工知能チップの状態を監視制御する。
図3-5は、本開示の実施例に係るボードカード3-500を示す構造ブロック図である。図3-5に示すように、前記ボードカードは、前記チップ3-506-1-3-506-N(ここで、Nは正の整数であり、説明が便利なように、総称してチップ3-506という)に加えて、他の組合せコンポーネントを含む。この組合せコンポーネントは、記憶装置3-502、インタフェース装置3-5-7、および、コントロール装置3-504を備えるが、これらに限られない。
前記記憶装置3-502は、データを記憶するためのものであり、バス3-505を介して前記人工知能チップに接続される。前記記憶装置は、複数グループの記憶ユニット3-503-1、…3-503-Nを備え得る。ここで、Nは正の整数であり、説明が便利なように、総称してチップ3-503という。各グループの前記記憶ユニット3-503は、バス3-505を介して前記人工知能チップ3-506に接続される。各グループの記憶ユニット3-503は、DDR SDRAM(英語:Double Data Rate SDRAM ダブルレート同期ダイナミックランダムアクセスメモリ)とすることができることが理解されるであろう。
DDRは、クロック周波数を上げることなく、SDRAMの速度を2倍に上げることができる。DDRは、クロックパルスの立ち上がりと立ち下がりでデータを読み出すことができる。DDRの速度は、基準SDRAMの2倍である。1実施例において、前記記憶装置は、4グループの前記記憶ユニットを含んでもよい。各グループの前記記憶ユニットは、複数のDDR4粒子(チップ)を備え得る。1実施例において、前記人工知能チップの内部は、データを伝送するための64ビットとECC検証を行なう8ビットとを備える4つの計72ビットのDDR4コントローラを含んでもよい。DDR4-3200粒子を各グループの前記記憶ユニットに採用されることで、データ伝送の理論帯域を25600MB/sに達することが理解される。
1実施例において、各グループの前記記憶ユニットは、並列に配置されている複数のダブルレート同期ダイナミックランダムアクセスメモリを備える。DDRは、1クロックサイクル内に2回のデータ伝送が可能である。前記チップには、前記各記憶ユニットのデータ伝送とデータ記憶の制御を行なうためのDDRを制御するコントローラが設けられている。
前記インタフェース装置3-507は、前記人工知能チップ3-506と電気的に接続されている。前記インタフェース装置3-507は、前記人工知能チップと外部装置3-501(例えばサーバ又はコンピュータ)との間のデータ伝送を可能にする。例えば、1実施例において、前記インタフェース装置3-507は、基準PCIEインタフェースであってもよい。例えば、基準PCIEインタフェースを介して、処理待ちデータをサーバから前記チップまでに伝送されることで、データ伝送が実現される。好ましくは、理論帯域幅は、PCIE3.0X16インタフェースを使用して伝送される場合、16000MB/sに達することができる。他の実施例において、前記インタフェース装置3-507は、他のインタフェースであってもよく、本開示は、前記他のインタフェースの具体的な表現式を限定せず、前記インタフェースユニットが、スイッチャー機能を実現できればよい。また、前記人工知能チップ3-506の演算結果は、依然として前記インタフェース装置3-507によって外部装置3-501(例示えば、サーバ)までに送り返される。
前記制御装置3-504は、前記人工知能チップ3-506と電気的に接続されている。前記制御装置3-504は、前記人工知能チップ3-506の状態を監視制御するためである。具体的には、前記人工知能チップ3-506および前記制御装置3-504は、SPIインタフェースを介して電気的に接続され得る。前記制御装置は、マイクロコントローラーユニット(Micro Controller Unit、MCU)を含んでもよい。例えば前記人工知能チップ3-506は、複数の処理チップ、複数の処理コア、または複数の処理回路を含んでもよく、複数の負荷を動かしても良い。よって、前記人工知能チップ3-506は、重負荷及び軽負荷などの異なる動作状態にあってもよい。前記制御装置によって、前記人工知能チップ中の複数の処理チップ、複数の処理、および、/または複数の処理回路の動作状態の調整制御が可能になる。
1可能な実施態様において、上記の人工知能チップを備える電子デバイスが開示される。電子デバイスは、データ処理装置、ロボット、コンピュータ、プリンタ、スキャナ、タブレット、スマートフォン、携帯電話、ドライブレコーダ、ナビゲーションメータ、センサ、カメラヘッド、サーバ、クラウドサーバ、カメラ、ビデオカメラ、プロジェクタ、腕時計、イヤホン、モバイルストレージ、ウェアラブルデバイス、交通機関、家庭用電気器具、および、/または医療装置を備える。
前記交通機関は、航空機、船舶、及び/又は車両を備え、前記家庭用電気器具は、テレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガス焜炉、油煙器を備え、前記医療装置は、核磁気共振器、超音波スキャナー、および、/または心電計を備える。
上記の実施例において、各実施例に対する説明はそれぞれ重点があり、ある実施例には詳細な説明がない場合、他の実施例の中の関連説明を参照することができる。上記の実施例の各技術特徴は、任意に組み合わせることができ、記載を簡潔にするために、上記の実施例の中の各技術特徴の全ての可能な組合せを記載していないが、これらの技術特徴の組合せに矛盾が生じない限り、本明細書に記載の範囲と見なされるべく。
以下の条項によって前述した内容がより良く理解され得る。
条項A1.データを処理するための方法であって、
機械学習モデルに用いられる複数のデータを取得するステップであって、前記データは第1データフォーマットで表されるステップと、
前記複数のデータの値に基づいて、前記複数のデータを第1グループの区間に分布するステップであって、前記第1グループの区間の数は予め決められたものであるステップと、
前記複数のデータの第1平均値を決定するステップと、
複数の異なるマッピング単位に従って、前記第1グループの区間に分布されているデータを第2グループの区間にマッピングすることによって、該当するマッピング単位に従ってマッピングされたデータの第2平均値の決定に用いるステップであって、前記マッピング単位は、前記第1グループの区間の第1の区間から始まる所定の数の連続区間を含み、前記マッピング単位の終了区間には、前記複数のデータの中の終了区間に位置するデータまたは終了区間よりも大きいデータが分布され、第2グループの区間の中の区間の数は第2データフォーマットと関係が有り、第2データフォーマットの精度は前記第1データフォーマットよりも低いステップと、
前記第1平均値と前記複数の第2平均値とに基づいて、前記複数のデータに対する処理を実行することによって、処理された前記複数のデータを前記第2データフォーマットで表すステップと、を含む。
条項A2.条項A1に記載の方法であって、
複数の異なるマッピング単位に従って、前記第1グループの区間に分布されているデータを、第2グループの区間にマッピングするステップは、
複数のデータの中の前記マッピング単位の終了区間よりも大きいデータを、前記マッピング単位の終了区間に再分布するステップと、
前記複数のマッピング単位をそれぞれ第2区間にマッピングすることによって、該当するマッピング単位に従ってマッピングされたデータの第2平均値の決定に用いるステップと、を含む
条項A3.条項A1に記載の方法であって、
前記複数のデータに対する処理を実行するステップは、
前記第1平均値と複数の第2平均値とに基づいて、前記複数のマッピング単位と関係がある複数の差分値を決定するステップと、
前記複数の差分値に基づいて、前記複数のデータに用いられる切捨て閾値を決定するステップと、
前記切捨て閾値に基づいて、取得された複数の前記データを切り捨てるステップと、
前記切捨て閾値に基づいて、前記マッピング単位と関係があるスケーリング値を決定するステップと、を含む。
条項A4.条項A1に記載の方法であって、
前記複数のデータに対する処理を実行するステップは、
前記スケーリング値に基づいて、切り捨てられた前記複数のデータをスケーリングするステップをさらに含む。
条項A5.条項A1に記載の方法であって、
前記データの絶対値最大値に基づいて、前記複数のデータと関係がある第1グループの区間を決定するステップをさらに含む。
条項A6.条項A1に記載の方法であって、
前記複数のデータの第1平均値を決定するステップは、
前記複数のデータの中のデータの絶対値と前記複数のデータの数とを決定するステップと、
前記複数のデータの中のデータの絶対値と前記数とに基づいて前記平均値を決定するステップと、を含む。
条項A7.条項A1に記載の方法であって、
前記複数のデータの第1平均値を決定するステップは、
前記第1グループの区間の中の各区間の中間値と各区間に有するデータの数とを決定するステップと、
前記中間値と前記データの数とに基づいて前記平均値を決定するステップと、を含む。
条項A8.条項A1に記載の方法であって、
前記複数のデータの第1平均値を決定するステップは、
前記マッピング単位の各区間に位置するデータの数と各区間の中間値とを決定するステップと、
前記データの数と前記中間値とに基づいて前記第1平均値を決定するステップと、を含む。
条項A9.条項A1に記載の方法であって、
第2グループの区間の中の区間の数は、前記第2フォーマットと関係があるビット数に基づいて決定される。
条項A10.データを処理するための装置であって、
機械学習モデルに用いられる複数のデータを取得するための取得モジュールであって、前記データは第1データフォーマットで表される取得モジュールと、
前記複数のデータの値に基づいて、前記複数のデータを第1グループの区間に分布するための分布モジュールであって、前記第1グループの区間の数が予め決定されたものである分布モジュールと、
前記複数のデータの第1平均値を決定するための第1平均値決定モジュールと、
複数の異なるマッピング単位に従って、前記第1グループの区間に分布されているデータを第2グループの区間にマッピングすることによって、該当するマッピング単位に従ってマッピングされたデータの第2平均値の決定に用いるための第1マッピングモジュールであって、前記マッピング単位は、前記第1グループの区間の第1の区間から始まる所定の数の連続区間を含み、前記マッピング単位の終了区間には、前記複数のデータの中の終了区間に位置するデータまたは終了区間よりも大きいデータが分布され、、第2グループの区間の中の区間の数は第2データフォーマットと関係が有り、第2データフォーマットの精度は前記第1データフォーマットよりも低い第1マッピングモジュールと、
前記第1平均値と前記複数の第2平均値とに基づいて、前記複数のデータに対する処理を実行することによって、処理された前記複数のデータを前記第2データフォーマットで表すための実行モジュールと、を備える。
条項A11.条項A10に記載の装置であって、
前記第1マッピングモジュールは、
複数のデータの中の前記マッピング単位の終了区間よりも大きいデータを、前記マッピング単位の終了区間に再分布するための再分布モジュールと、
前記複数のマッピング単位をそれぞれ第2区間にマッピングすることによって、該当するマッピング単位に従ってマッピングされたデータの第2平均値の決定に用いるための第2マッピングモジュールと、を備える。
条項A12.条項A10に記載の装置であって、
前記実行モジュールは、
前記第1平均値と複数の第2平均値とに基づいて、前記複数のマッピング単位と関係がある複数の差分値を決定する差分値決定モジュールと、
前記複数の差分値に基づいて、前記複数のデータに用いられる切捨て閾値を決定するための切捨て閾値決定モジュールと、
前記切捨て閾値に基づいて、取得された複数のデータを切り捨てるための切捨てモジュールと、
前記切捨て閾値に基づいて、前記マッピング単位と関係があるスケーリング値を決定するためのスケーリング値決定モジュールと、を備える。
条項A13.条項A12に記載の装置であって、
前記実行モジュールは、
前記スケーリング値に基づいて、切り捨てられた前記複数のデータをスケーリングするためのスケーリングモジュールをさらに備える。
条項A14.条項A10に記載の装置であって、
前記データの絶対値最大値に基づいて、前記複数のデータと関係がある第1グループの区間を決定するための区間決定モジュートをさらに備える。
条項A15.条項A10に記載の装置であって、
前記第1平均値決定モジュールは、
前記複数のデータの中のデータの絶対値と前記複数のデータの数とを決定するための絶対値と数の決定モジュールと、
前記複数のデータの中のデータの絶対値と前記数とに基づいて前記平均値を決定するための第2平均値決定モジュールと、を備える。
条項A16.条項A10に記載の装置であって、
前記第1平均値決定モジュールは、
前記第1グループの区間の中の各区間の中間値と各区間に有するデータの数とを決定するための第1中間値とデータの数決定モジュールと、
前記中間値と前記データの数とに基づいて、前記平均値を決定するための第3平均値決定モジュールと、を備える。
条項A17.条項A10に記載の装置であって、
前記第1平均値決定モジュールは、
前記マッピング単位の各区間に位置するデータの数と各区間の中間値とを決定するための第2中間値とデータの数決定モジュールと、
前記データの数と前記中間値とに基づいて前記第1平均値を決定するための第4平均値決定モジュールと、を備える。
条項A18.条項A10に記載の装置であって、
第2グループの区間の中の区間の数は、前記第2フォーマットと関係があるビット数に基づいて決定される。
条項A19.人工知能チップであって、
プロセッサと、コンピュータプログラムコマンドを記憶するメモリと、を備え、
前記プロセッサが前記メモリ中の前記コンピュータプログラムコマンドを実行することによって、前記人工知能チップを制御して、条項A1乃至A9の何れか1項に記載の方法を実行する
ことを特徴とする人工知能チップ。
条項A20.電子デバイスであって、
前記電子デバイスは、条項A19に記載の人工知能チップを備える。
条項A21.ボードカードであって、
記憶装置と、インタフェース装置と、制御装置と、条項19に記載の人工知能チップと、を備え、
前記人工知能チップは、前記記憶装置、前記制御装置、および、前記インタフェース装置に、それぞれ接続され、
前記記憶装置は、データを記憶し、
前記インタフェース装置は、人工知能チップと外部装置との間のデータ伝送を実現し、
前記制御ユニットは人工知能チップの状態を監視制御する。
条項A22.条項A21に記載のボードカードであって、
前記記憶装置は、複数グループの記憶ユニットを備え、
複数グループの記憶ユニットの中の各グループの記憶ユニットは、バスを介して前記人工知能チップとに接続され、
前記記憶ユニットは、DDR SDRAMであり、
前記チップは、前記各記憶ユニットに対するデータの伝送とデータ記憶に用いられるDDRコントローラーを備え、
前記インタフェース装置は、標準のPCIEインタフェースである。
上記のように、本開示の実施例について詳細に説明した。本明細書において、本開示の原理及び実施例について、具体的な例を適用して説明した。上記の実施例の説明は、本開示の方法及びその中心思想の理解を助けるためのものに過ぎない。また、当業者が本発明の思想に基づいて本開示の具体的な実施例および応用範囲上で行った変形または変更は、いずれも本発明の範囲に属する。上記のように、本明細書の記載は、本開示を限定するものではないと解されるべく。