本発明の技術案が当業者によってより良好に理解されるように、以下では、本発明の実施例における図面を組み合わせて本発明の実施例における技術案を明瞭で完全に記述する。明らかに、記述される実施例は、単に本発明の一部の実施例であり、全部の実施例ではない。本発明における実施例に基づいて当業者が進歩性に値する労働を掛けずに得た全ての他の実施例は、何れも本発明の保護範囲に含まれる。
本発明の明細書、特許請求の範囲及び上記図面における用語「第1」、「第2」等は、異なる対象を区分するためのものであり、特定の順番を記述するためのものではない。また、用語「含む」及び「備える」及びそれらの変型は、非排他的な含有をカバーすることを意図する。例えば、一連のステップ若しくは手段を含む手順、方法、システム、製品又は機器は、挙げられたステップ又は手段に限定されず、挙げられていないステップ又は手段を更に含むことが好ましく、これらの手順、方法、製品又は機器に固有の他のステップ又は手段を更に含むことがより好ましい。
本文における用語「及び/又は」は、単に関連対象の関連関係を記述するものであり、3種の関係が存在可能であることを示す。例えば、A及び/又はBは、Aが単独に存在することと、A及びBが同時に存在することと、Bが単独に存在することという3種の場合を表せる。また、本文における用語「少なくとも1種」は、複数種のうちの何れか1種又は複数種のうちの少なくとも2種の任意の組み合わせを示す。例えば、A、B、Cのうちの少なくとも1種を含むことは、A、B及びCによって構成された集合から、何れか1つ又は複数の要素を選択することを示してもよい。
本文で言及された「実施例」は、実施例を組み合わせて記述された特定の特徴、構造又は特性が本発明の少なくとも1つの実施例に含まれ得ることを意味する。明細書における各位置に当該用語が現れるのは、必ずしも同じ実施例を指すとは限らず、他の実施例に対して排他的な独立又候補の実施例でもない。当業者が明示的に且つ暗示的に理解できるように、本文で記述される実施例は、他の実施例と組み合わせられ得る。
本発明の実施例の実行主体は、データ処理装置である。データ処理装置は、チップ、携帯電話、コンピュータ、サーバ、タブレットPCのうちの何れか1種であってもよい。
以下では、本発明の実施例における図面を参照しながら本発明の実施例を説明する。
図1を参照すると、図1は、本発明の実施例に係るデータ処理方法の模式的なフローチャートである。
101では、第1処理すべきデータと入力チャンネル数とを取得する。
本発明の実施例において、第1処理すべきデータは、画像、音声データ又は語句であってもよい。第1処理すべきデータのチャンネル数は、1以上である。例えば、第1処理すべきデータが1枚の画像である場合に、第1処理すべきデータのチャンネル数は、3となってもよい。更に例えば、第1処理すべきデータが2つの音声データであり、且つ各音声データのチャンネル数が2である場合に、第1処理すべきデータのチャンネル数は、2となる。
本発明の実施例において、入力チャンネル数は、チップの入力チャンネル数であってもよい。ただし、当該チップは、畳み込みニューラルネットワークを実現するために用いられてもよい。例えば、上記チップは、FPGAであってもよい。更に例えば、上記チップは、ASICであってもよい。より更に例えば、上記チップは、GPUであってもよい。
本発明の実施例において、第1処理すべきデータのチャンネル数は、入力チャンネル数よりも大きい。
102では、上記入力チャンネル数に基づいて、上記第1処理すべきデータを処理することにより、第2処理すべきデータを取得する。
チップの入力チャンネル数が固定であるが、畳み込みニューラルネットワークにおける異なる畳み込み層に入力されたデータのチャンネル数が異なる可能性がある。従来の方法では、異なるチップが異なる畳み込み層の処理を実施する必要がある。例えば、畳み込みニューラルネットワークAは、畳み込み層aと畳み込み層bを含む。畳み込み層aに入力されたデータのチャンネル数は、3であり、畳み込み層bに入力されたデータのチャンネル数は、4である。チップAの入力チャンネル数が3であると仮定すれば、畳み込み層aに入力されたデータの処理をチップAを介して完了可能であるが、畳み込み層bに入力されたデータのチャンネル数がチップAの入力チャンネル数よりも大きいため、畳み込み層bに入力されたデータの処理をチップAを介して完了できない。入力チャンネル数のより大きな1つのチップで、畳み込み層bに入力されたデータの処理を完了する必要がある。例えば、入力チャンネル数が4のチップBで、畳み込み層bに入力されたデータの処理を完了することができる。
本発明の実施例において、チップを介して各層ごとに順に畳み込みニューラルネットワークにおける畳み込み層の処理を実施する過程において、チップの入力チャンネル数と、畳み込み層に入力されたデータ(本実施例において、畳み込み層に入力されたデータが上記第1処理すべきデータそのものである)のチャンネル数とに基づいて、第1処理すべきデータを処理する必要があるか否かを判断してもよい。第1処理すべきデータを処理する必要があるときに、第1処理すべきデータを処理することにより、処理して得られたデータのチャンネル数をチップの入力チャンネル数以下にする。こうして、1つのチップを介して異なる畳み込み層の処理を完了することは、実現される。
例えば、チップの入力チャンネル数は、2である。第1処理すべきデータは、1枚の画像を含み、画像のチャンネル数は、3である。第1処理すべきデータのチャンネル数がチップの入力チャンネル数よりも大きいため、チップの一度の処理バッチ内で第1処理すべきデータのうちの全てのデータをチップに入力することが不可能であり、更にチップを介して第1処理すべきデータに対する処理を完了することが不可能である。その際、第1処理すべきデータを処理して、処理で得られたデータのチャンネル数をチップの入力チャンネル数以下にする必要がある。こうして、少なくとも2つの処理バッチによって第1処理すべきデータのうちの全てのデータを処理完了する。
ある実現可能な方式において、第1処理すべきデータからn(nは、チップの入力チャンネル数以下である)個のチャンネルのデータを分割することにより、チップの1つの処理バッチ内における入力データ(即ち、上記第2処理すべきデータ)を取得可能である。このような分割方式で第1処理すべきデータを処理し、少なくとも2つの処理バッチによって第1処理すべきデータのうちの全てのデータに対する処理を完了可能である。例えば、第1処理すべきデータは、2枚の画像を含み、各画像のチャンネル数は、何れも3である。チップの入力チャンネル数は、4である。第1処理すべきデータのチャンネル数(即ち、3+3=6)がチップの入力チャンネル数よりも大きいため、第1処理すべきデータを分割する必要がある。第1処理すべきデータは、チャンネル数が4である第2処理すべきデータaと、チャンネル数が2である第2処理すべきデータbとに分割されてもよい。チップは、1つの処理バッチによって第2処理すべきデータaを処理し、もう1つの処理バッチによって第2処理すべきデータbを処理することにより、第1処理すべきデータに対する処理を完了する。本発明では、第2処理すべきデータaに対する処理と第2処理すべきデータbに対する処理との前後順について限定しない。
別の実現可能な方式において、第1処理すべきデータのチャンネル数は、2以上である。第1処理すべきデータのうちの少なくとも2つのチャンネルのデータを繋ぎ合わせることにより、第1処理すべきデータのチャンネル数をチップの入力チャンネル数以下にして、繋ぎ合わせられた第1処理すべきデータを取得する。チップは、1つの処理バッチによって繋ぎ合わせ後の第1処理すべきデータに対する処理を完了可能であり、即ち、第1処理すべきデータに対する処理を完了する。例えば、第1処理すべきデータは、4つのチャンネルのデータを含み、4つのチャンネルのデータは、それぞれ第1チャンネルデータ、第2チャンネルデータ、第3チャンネルデータ、第4チャンネルデータである。チップの入力チャンネル数は、3である。第1チャンネルデータと第2チャンネルデータとを繋ぎ合わせることにより、第5チャンネルデータを取得する。第3チャンネルデータ、第4チャンネルデータ及び第5チャンネルデータを繋ぎ合わせ後の第1処理すべきデータとする。こうして、繋ぎ合わせ後の第1処理すべきデータのチャンネル数は、3となる。チップは、1つの処理バッチによって繋ぎ合わせ後の第1処理すべきデータに対する処理を完了可能であり、即ち、第1処理すべきデータに対する処理を完了する。
本ステップでは、入力チャンネル数に基づいて第1処理すべきデータを処理することにより、第2処理すべきデータを取得するため、チップを介してチャンネル数が任意値である入力データの処理を完了可能であり、即ち、任意畳み込み層の入力データに対する畳み込み処理を実現可能であり、本発明に係る技術案の汎用性を向上させる。
103では、処理パラメータを取得し、上記処理パラメータを用いて上記第2処理すべきデータを処理することにより、第1データを取得する。
本発明の実施例において、処理パラメータは、畳み込みカーネルのパラメータを含み、畳み込みカーネルのパラメータは、畳み込みカーネルの重みと、畳み込みカーネルのオフセットとを含む。
ある実現可能な方式において、チップは、図2に示す構造を有する。当該構造では、キャッシュが入力データ(即ち、チップの各処理バッチ内における処理必要なデータ)、チップの各処理バッチ内における使用必要な畳み込みカーネルのパラメータ及び出力データ(即ち、チップが各処理バッチ内に処理して得るデータ)を記憶する。当該構造における畳み込み処理ユニットは、畳み込みカーネルの重みに基づいて入力データに対して畳み込み及び積算を行い、畳み込み処理後のデータを取得する。畳み込みカーネルのオフセットと畳み込み処理後のデータとに基づくと、出力データは、取得可能である。
好ましくは、図2に示す構造は、前処理ユニット及び/又は後処理ユニットを含んでもよい。上記前処理ユニットは、データに対して数学的変換を実施し、例えば、時間領域データを周波数領域データに変換してもよい。上記後処理ユニットは、データに対して前処理ユニットによって実行されたものと逆である数学的逆変換を実施し、例えば、周波数領域データを時間領域データに変換してもよい。後処理ユニットは、更に、プーリング処理、差分処理、softmax関数の実現、データトリミング、データの解像度の調整等の操作を実施してもよい。例えば、図2に示す構造における入力データが時間領域データであり、前処理ユニットによる入力データの処理により、入力データを周波数領域データに変換してもよい。更に例えば、畳み込み処理ユニットから出力されたデータが100*100のサイズの画像である場合に、後処理ユニットを介して画像をトリミングして50*50のサイズの画像を取得してもよい。より更に例えば、畳み込み処理ユニットから出力されたデータが画像であり、後処理ユニットを介して画像の解像度を高くしてもよい。
チップは、畳み込みカーネルのパラメータを用いて第2処理すべきデータに対して畳み込み処理を行うと、第1データを取得可能である。
チップの入力チャンネルに基づいて入力データを処理することにより、チップがチャンネル数の異なる入力データを処理可能である。本実施例に係る技術案をチップに用いると、チップは、非常に良い汎用性を有することができる。
次の説明の前に、まず、「チップのデータ処理量閾値」という概念を定義する。本発明の実施例において、チップのデータ処理量閾値は、チップが1つの処理バッチ内で処理できる単一のチャンネルのデータ量の最大値を指す。例えば、チップのデータ処理量閾値は、8キロバイトであり、当該チップが1つの処理バッチ内で処理できる単一チャンネルのデータ量が最大で8キロバイトであることを示す。
チップのハードウェアリソースに限度があるため、チップの1つの処理バッチ内における処理能力は、制限されている。第2処理すべきデータのデータ量が大きい。第2処理すべきデータのデータ量がチップのデータ処理量閾値よりも大きい場合に、チップは、1つの処理バッチ内で第2処理すべきデータを処理完了することができず、少なくとも2つの処理バッチでないと、第2処理すべきデータに対する処理を完了できない。第2処理すべきデータのデータ量が一般的に大きく、チップのキャッシュの記憶空間が一般的に小さいため、第2処理すべきデータは、外部ストレージ(例えば、チップのメモリ)に記憶される。チップは、第2処理すべきデータを処理する前に、外部ストレージから第2処理すべきデータを読み取り、第2処理すべきデータをキャッシュに記憶する必要がある。説明すべきことは、チップハードウェア特性の影響を受け、チップは、常に、キャッシュにおけるデータを全部処理完了してから、メモリにおけるデータを処理する。したがって、チップは、第2処理すべきデータを処理する過程において、第2処理すべきデータ以外のデータを外部ストレージから読み取らない。チップは、キャッシュに記憶された第2処理すべきデータを処理完了した後こそ、外部ストレージからデータを読み取る操作を初めて実行する。こうすると、チップの読み取り効率が大きく低減され、更にチップの処理効率が低下してしまう。
例えば、第1処理すべきデータを処理することにより、第2処理すべきデータA及び第2処理すべきデータBを取得する。チップは、第1処理すべきデータに対して畳み込み処理を行う過程において、まず、外部ストレージから第2処理すべきデータAを読み取り、第2処理すべきデータAをキャッシュに記憶する。次に、チップは、キャッシュに記憶された第2処理すべきデータAから、データ量がチップのデータ処理閾値以下であるデータブロックを、第1個の処理バッチ内で処理されるデータとして選定する。第1個の処理バッチ内で処理されるデータに対して処理を行う過程において、チップのキャッシュは、外部ストレージから第2処理すべきデータBを読み取らない。チップが第2処理すべきデータAのうちの全てのデータを処理完了した後、チップのキャッシュは、外部ストレージから第2処理すべきデータBを読み取る。明らかに、チップハードウェア特性の影響を受け、チップは、常に、キャッシュにおけるデータを全部で処理完了した後、メモリにおけるデータを処理する。チップが第2処理すべきデータAを処理する過程において、チップのキャッシュの読み取りリソースがアイドル状態であるため、チップの読み取り効率は、大きく低減されてしまう。例えば、データ処理量閾値が10であり、チップキャッシュに格納されたデータ量が15であり、1つの処理バッチ内においてチップが10単位のデータを並行処理可能であるが、キャッシュに5単位のデータがまだ処理されていないため、チップは、外部からデータを読み取らない。更に例えば、データの処理量閾値が10であり、チップキャッシュに格納されたデータ量が10であり、1つの処理バッチ内においてチップが10単位のデータを並行処理可能であり、キャッシュにデータがないため、チップは、外部からデータを読み取ってデータ処理を行う。
チップの読み取り効率が向上するように、本発明の実施例は、第1処理すべきデータを処理する別の技術案を更に提供する。図3を参照すると、図3は、本発明の実施例に係る別のデータ処理方法の模式的なフローチャートである。
301では、上記入力チャンネル数に応じて、上記第1処理すべきデータを少なくとも2部のデータに分ける。
上述した通り、入力チャンネル数が固定であるため、第1処理すべきデータを少なくとも2部のデータに分けてもよく、各部のデータに対応するチャンネル数が入力チャンネル数以下である。例えば(例1)、第1処理すべきデータのチャンネル数が6であり、入力チャンネル数が4である。第1処理すべきデータをデータAとデータBに分けてもよい。ただし、データAのチャンネル数が4であり、データBのチャンネル数が2である。更に、第1処理すべきデータをデータCとデータDに分けてもよい。ただし、データCのチャンネル数とデータDのチャンネル数とが何れも3である。好ましくは、第1処理すべきデータからチャンネル数が入力チャンネル数に等しいデータを優先的に分割する。こうして、チップの読み取りリソースが十分に利用され、チップの読み取り効率が向上する。例えば、例1では、第1処理すべきデータをデータAとデータBに分ける。
第1処理すべきデータを分ける際に、本実施では、チップのデータ処理量閾値も考慮することにより、チップの処理リソースを十分に利用し、チップの読み取り効率を向上させる。
チップの処理リソースが十分に利用されるように、各処理バッチ内の入力データのデータ量をできるだけチップのデータ処理量閾値に近接する必要がある。チップのデータ処理量閾値が既知であるため、チップのデータ処理量閾値に基づいて、第1処理すべきデータから分割された各部のデータのデータ量を特定してもよい。こうして、分割して得られた各部のデータのうちの単一チャンネルのデータ量は、データ処理量閾値以下である。
ある実現可能な方式では、第1処理すべきデータのうちの各チャンネルのデータが何れも二次元マトリックスであり、且つ当該マトリックスにおける各データのデータ量が何れも等しい(例えば、画像における各画素のデータ量が何れも等しい)。データ処理量閾値に基づくと、第1処理すべきデータのうちの少なくとも1つのチャンネルのデータから、最適数の個数のデータを含むデータセット(以下では、最適データセットと呼称)を第3処理すべきデータとして選定してもよい。入力チャンネル数に応じて、第3処理すべきデータを少なくとも2部のデータに分ける。少なくとも2部のデータを第2処理すべきデータとして特定する。上記最適数は、下の例を参照可能である。最適数をhとすると、h個のデータのデータ量は、チップのデータ処理量閾値以下であり、且つh+1個のデータのデータ量は、チップのデータ処理量閾値よりも大きくなる。上記hは、正整数である。
例えば、第1処理すべきデータは、3つのチャンネルのデータ、即ち、第1チャンネルデータ、第2チャンネルデータ及び第3チャンネルデータを含む。入力チャンネル数は、2である。第1チャンネルデータから最適データセットを選定すると、第4チャンネルデータは得られる。第2チャンネルデータから最適データセットを選定すると、第5チャンネルデータは得られる。第3チャンネルデータから最適データセットを選定すると、第6チャンネルデータは得られる。第4チャンネルデータ、第5チャンネルデータ及び第6チャンネルデータを第3処理すべきデータとする。第3処理すべきデータをデータAとデータBに分ける。ただし、データAは、第4チャンネルデータ及び第5チャンネルデータを含み、データBは、第6チャンネルデータを含む。
別の実現可能な方式では、第1処理すべきデータのうちの各チャンネルのデータが何れも二次元マトリックスであり、且つ当該マトリックスにおける各データのデータ量が何れも等しい(例えば、画像における各画素のデータ量が何れも等しい)。入力チャンネル数に基づいて、第1処理すべきデータを少なくとも2つの第4処理すべきデータに分ける。ただし、各第4処理すべきデータのチャンネル数は、入力チャンネル数以下である。データ処理量閾値に基づいて、少なくとも2つの第4処理すべきデータのうちの少なくとも1つのチャンネルのデータから、最適数の個数のデータを含むデータセット(以下では、最適データセットと呼称)を選定し、少なくとも2部のデータを取得する。少なくとも2部のデータを第2処理すべきデータとして特定する。
例えば、第1処理すべきデータは、3つのチャンネルのデータ、即ち、第1チャンネルデータ、第2チャンネルデータ及び第3チャンネルデータを含む。入力チャンネル数は、2である。入力チャンネル数に基づいて、第1処理すべきデータを第4処理すべきデータA及び第4処理すべきデータBに分ける。ただし、第4処理すべきデータAは、第1チャンネルデータ及び第2チャンネルデータを含み、第4処理すべきデータBは、第3チャンネルデータを含む。第1チャンネルデータから最適データセットを選定して第4チャンネルデータを取得する。第2チャンネルデータから最適データセットを選定して第5チャンネルデータを取得する。第3チャンネルデータから最適データセットを選定して第6チャンネルデータを取得する。第4チャンネルデータ及び第5チャンネルデータを1部のデータとし、第6チャンネルデータをもう1部のデータとする。
第1処理すべきデータの単一チャンネルのデータから最適データセットを選定する1種の方式において、単一チャンネルのデータから選定された最適データセットがk列のデータを含むと特定し、更にチップのデータ処理量閾値及びk個のデータのデータ量に基づいて、最適データセットの高さを特定してもよい。ただし、kは、正整数である。例えば、k=6であり、チップのデータ処理量閾値が8キロバイトであり、第1処理すべきデータのうちの単一チャンネルのデータから選定された6*4(即ち、6行4列)のサイズのデータセットのデータ量が7.4キロバイトであり、且つ第1処理すべきデータから選定された7*4(即ち、7行4列)のサイズのデータセットのデータ量が8.2キロバイトである場合に、第1処理すべきデータのうちの単一チャンネルのデータから6*4のサイズのデータセットを単一チャンネルのデータの最適データセットとして選定すると特定する。
第1処理すべきデータの単一チャンネルのデータから最適データセットを選定する別の方式では、単一チャンネルのデータから選定された最適データセットがt行のデータを含むと特定可能であり、更にチップのデータ処理量閾値とt個のデータのデータ量とに基づいて、最適データセットの幅を特定してもよい。ただし、tは、正整数である。例えば、t=5であり、チップの処理能力が8キロバイトであり、第1処理すべきデータのうちの単一チャンネルのデータから選定された5*4(即ち、5行4列)のサイズのデータセットのデータ量が7.4キロバイトであり、且つ第1処理すべきデータから選定された5*5(即ち、5行5列)のサイズのデータセットのデータ量が8.2キロバイトである場合に、第1処理すべきデータのうちの単一チャンネルのデータから5*4のサイズのデータセットを単一チャンネルのデータの最適データセットとして選定すると特定する。
本実施例に係る技術案に基づいて第1処理すべきデータを分割して得られた第2処理すべきデータのうちの各チャンネルのデータ量が何れもデータ処理量閾値よりも小さいため、チップは、1つの処理バッチによって第2処理すべきデータを処理完了可能である。これにより、チップは、第2処理すべきデータを処理する過程において、依然として外部ストレージからデータを読み取ることができ、チップの読み取り効率を向上させる。
例えば、第1処理すべきデータは、2つのチャンネルのデータを含み、本実施例に係る技術案に基づいて第1処理すべきデータのうちの第1個のチャンネルのデータを分割すると、第2処理すべきデータAと第2処理すべきデータBは、取得可能であり、本実施例に係る技術案に基づいて第1処理すべきデータのうちの第2個のチャンネルのデータを分割すると、第2処理すべきデータCと第2処理すべきデータDは、取得可能である。チップの入力チャンネル数が1であり、チップが処理リソースを呼び出して第2処理すべきデータAを処理すると仮定すれば、チップは、第2処理すべきデータAを処理すると同時に、チップのキャッシュは、外部ストレージ内から第2処理すべきデータBを読み取る。チップは、第2処理すべきデータAを処理完了した後、キャッシュに記憶された第2処理すべきデータBを処理する。チップが第2処理すべきデータBを処理すると同時に、チップのキャッシュは、外部ストレージ内から第2処理すべきデータCを読み取る。同様な理由により、チップが第2処理すべきデータCを処理すると同時に、チップのキャッシュは、外部ストレージ内から第2処理すべきデータDを読み取る。
302では、上記少なくとも2部のデータを上記第2処理すべきデータとして特定する。
本実施では、チップのデータ処理量閾値と入力チャンネル数とに基づいて、第1処理すべきデータを分割して第2処理すべきデータを取得する。第2処理すべきデータのチャンネル数を入力チャンネル数以下にするとともに、第2処理すべきデータのデータ量をできるだけチップのデータ処理量閾値に近接することができ、更にチップの処理リソースを十分に利用し、チップの処理効率を向上させる。また、チップが第2処理すべきデータを処理するときにアイドル状態であるハードウェアリソースも減少可能であり、更にチップが第2処理すべきデータを処理する過程における読み取り効率は向上する。
第1処理すべきデータのうちの各チャンネルのデータ量がチップのデータ処理量閾値よりも大きい場合に、上記実施例に係る技術案を用いて第1処理すべきデータのうちの各チャンネルのデータを分割して、チップの各チャンネルの入力データを取得すると、チップの処理効率及び読み取り効率は、向上可能である。しかし、畳み込みニューラルネットワークを用いて実際の応用を行う過程に、第1処理すべきデータのうちの各チャンネルのデータ量がチップのデータ処理量閾値よりも小さい可能性があり、その際、上記実施例に係る技術案によってチップの処理リソースを十分に利用可能である入力データを取得することができない。そこで、本発明の実施例は、1種の選択可能な実施形態として、第1処理すべきデータを処理する更に別の方法を提供する。ステップ102の具体的な実施形態は、下記のようになってもよい。
11では、上記第1処理すべきデータのうち、第1チャンネルのデータと第2チャンネルのデータとを繋ぎ合わせることにより、上記第2処理すべきデータを取得する。
本ステップでは、第1処理すべきデータは、少なくとも2つのチャンネルのデータを含む。
第1処理すべきデータのうちの各チャンネルのデータ量がチップのデータ処理量閾値よりも小さいため、直接第1処理すべきデータのうちの1つのチャンネルデータをチップの単一チャンネルの入力データとすれば、チップの処理リソースは、十分に利用できなくなり、チップの処理効率は、低くなる。そこで、本実施例では、少なくとも2つのチャンネルのデータを繋ぎ合わせることにより、チップの処理リソースを十分に利用可能である入力データを取得する。
第1処理すべきデータのうちの第1チャンネルデータと第2チャンネルデータとを繋ぎ合わせることを例とすると、第1チャンネルデータと第2チャンネルデータとに対して横方向繋ぎ合わせを行うことにより、第5処理すべきデータを取得する。ただし、第5処理すべきデータのデータ量は、チップのデータ処理量閾値以上である。第5処理すべきデータは、第2処理すべきデータのうちの1つのチャンネルのデータとされる。
例えば、第1チャンネルデータのデータ量と第2チャンネルデータのデータ量とが何れも5キロバイトであり、チップのデータ処理量閾値が8キロバイトである。図4に示すように、第1チャンネルデータと第2チャンネルデータとに対して横方向繋ぎ合わせを行うことにより、データ量が10キロバイトである繋ぎ合わせ後のデータを第2処理すべきデータのうちの1つのチャンネルのデータとして取得可能である。ただし、繋ぎ合わせ後のデータの幅(即ち、列数)は、第1チャンネルデータの幅(即ち、列数)と第2チャンネルデータの幅(即ち、列数)との和であり、繋ぎ合わせ後のデータの高さ(即ち、行数)は、第1チャンネルデータの高さ(即ち、行数)と第2チャンネルデータの高さ(即ち、行数)との和である。
理解すべきことは、上記例示において、第1チャンネルデータと第2チャンネルデータとを繋ぎ合わせの対象として繋ぎ合わせて第2処理すべきデータのうちの1つのチャンネルのデータを取得する。実際の応用では、3つ又は3つ以上のチャンネルデータを繋ぎ合わせて第2処理すべきデータのうちの1つのチャンネルのデータを取得してもよい。本発明では、繋ぎ合わせ処理が行われるチャンネルデータの数について限定しない。
好ましくは、上述した通り、データに対して畳み込み処理を行うときにデータに隣接するデータの情報を利用する必要がある。例えば、図4に示す第2処理すべきデータのうちの第1チャンネルにおけるデータeに対して畳み込み処理を行うときに、データaの情報、データbの情報、データcの情報、データdの情報、データfの情報、データgの情報、データhの情報、データiの情報を利用する必要がある。したがって、後の第2処理すべきデータに対する畳み込み処理が便利になるように、第1チャンネルデータと第2チャンネルデータとを繋ぎ合わせるときに、第1チャンネルデータと第2チャンネルデータとの間で補間を行うことで、第1チャンネルデータと第2チャンネルデータとを区別付けさせてもよい。図5に示すように、第1チャンネルデータと第2チャンネルデータの間に0で補間を行い、第2処理すべきデータのうちの1つのチャンネルのデータを取得する。
理解すべきことは、図4と図5に示す第1チャンネルデータと第2チャンネルデータのサイズ(3*3)が単に本発明の実施例に係る1つの例示であり、本発明に対する限定を構成しない。実際の応用では、任意サイズのデータに対して繋ぎ合わせを行ってもよい。
上述したのは、何れも、第1処理すべきデータのうちの少なくとも2つのチャンネルのデータを繋ぎ合わせて第2処理すべきデータのうちの1つのチャンネルのデータを取得することである。実際の処理では、第1処理すべきデータのうちの少なくとも2つのチャンネルのデータに対して繋ぎ合わせを行うことにより、第2処理すべきデータのうちの少なくとも2つのチャンネルのデータを取得してもよい。例えば、第1処理すべきデータは、4つのチャンネルのデータ、即ち、第1チャンネルデータ、第2チャンネルデータ、第3チャンネルデータ、第4チャンネルデータを含む。入力チャンネル数は、2である。第1チャンネルデータと第2チャンネルデータとを繋ぎ合わせて第5チャンネルデータを取得する。第3チャンネルデータと第4チャンネルデータとを繋ぎ合わせて第6チャンネルデータを取得する。第5チャンネルデータを第2処理すべきデータのうちの1つのチャンネルデータのデータとし、第6チャンネルデータを第2処理すべきデータのうちのもう1つのチャンネルデータのデータとし、即ち、第2処理すべきデータは、2つのチャンネルのデータを含む。
本実施例では、少なくとも2つのチャンネルのデータを繋ぎ合わせて第2処理すべきデータのうちの少なくとも1つのチャンネルのデータを取得することにより、チップの処理効率を向上させることができる。
繋ぎ合わせて得られた第5処理すべきデータのデータ量がチップのデータ処理量閾値よりも大きい場合に、第5処理すべきデータを分けることにより、第5処理すべきデータから最適データセットを選択し、分けられたデータのデータ量をチップのデータ処理量閾値以下にしてもよい。これにより、チップの処理リソースが十分に利用可能であり、チップの処理効率が向上する。
理解すべきことは、少なくとも2つのチャンネルのデータに対して繋ぎ合わせを行う方式は、第1処理すべきデータのうちの各チャンネルのデータ量がチップのデータ処理量閾値よりも小さい場合に適用可能であるだけでなく、第1処理すべきデータのうちの各チャンネルのデータ量がチップのデータ処理量閾値よりも大きい場合にも、少なくとも2つのチャンネルのデータを繋ぎ合わせることにより、第2処理すべきデータのうちの1つのチャンネルのデータを取得し、チップの処理効率を向上させる。
例えば、チップのデータ処理量閾値が9キロバイトであり、第1処理すべきデータのうちの各チャンネルのデータのサイズが5*4(即ち、4行4列)であり、第1処理すべきデータのうちの各チャンネルのデータ量が10キロバイトであると仮定する。第1処理すべきデータのうちの各チャンネルのデータにおいて、4*4(即ち、4行4列)のサイズのデータブロックのデータ量は、8キロバイトである。第1処理すべきデータのうちの各チャンネルのデータにおいて、3*4(即ち、3行4列)のサイズのデータブロックのデータ量は、6キロバイトである。第1処理すべきデータのうちの少なくとも2つのチャンネルのデータに対して繋ぎ合わせを行わず、直接第1処理すべきデータのうちの各チャンネルのデータを分割すると、4*4のサイズと1*4のサイズとの2つの第2処理すべきデータは、得られる。ただし、1*4のサイズの第2処理すべきデータのデータ量は、2キロバイトである。第1処理すべきデータのうちの2つのチャンネルのデータを繋ぎ合わせると、5*8(即ち、5行8列)のサイズの第5処理すべきデータは、取得可能である。第5処理すべきデータから最適データセットを選定すると、サイズが何れも2*8(即ち、2行8列)である2つの第2処理すべきデータと、サイズが1*8(即ち、1行8列)である1つの第2処理すべきデータとは、取得可能である。ただし、サイズが2*8である第2処理すべきデータのデータ量は、8キロバイトであり、サイズが1*8である第2処理すべきデータのデータ量は、4キロバイトである。チップが4*4のサイズの第2処理すべきデータを処理する時の処理効率と、チップが1*8のサイズの第2処理すべきデータを処理する時の処理効率とは、同じである。しかし、チップが1*8のサイズの第2処理すべきデータを処理する時の処理効率は、1*4のサイズの第2処理すべきデータを処理する時の処理効率よりも高い。
畳み込みニューラルネットワークにおける畳み込み層は、通常、直列接続の形態で接続される。図6に示す畳み込みニューラルネットワーク、第1層の畳み込み層から出力されたデータは、第2層の畳み込み層の入力データであり、第2層の畳み込み層から出力されたデータは、第3層の畳み込み層の入力データである。異なる畳み込み層の入力データのチャンネル数が異なる可能性があるため、畳み込み層の処理を経て畳み込み層に入力されたデータのチャンネル数も変更されることを意味する。例えば、図6に示す畳み込みニューラルネットワークにおいて、第1層の畳み込み層の入力データのチャンネル数が3であり、第2層の畳み込み層の入力データのチャンネル数が4であり、第3層の畳み込み層の入力データのチャンネル数が5であると仮定する。第1層の畳み込み層に入力されたデータのチャンネル数は、3から4に変更され、第2層の畳み込み層に入力されたデータのチャンネル数は、4から5に変更される。
チップの入力チャンネル数と同様に、チップの出力チャンネル数も固定である。したがって、通常、1つの処理バッチ内で1つの畳み込み層の出力データのうちの全てのデータを外部ストレージに書き込むことができない。
例えば(例2)、チップの出力チャンネル数が2であり、図6に示す畳み込みニューラルネットワークの第2層の畳み込み層の入力データのチャンネル数が4であると仮定する。チップは、第1層の畳み込み層の入力データに対して2回の畳み込み処理を行う必要がある。即ち、チップは、2つの処理バッチを実行してからこそ、第1層の畳み込み層の処理を完了可能である。
チップが少なくとも2つの処理バッチを用いないと1層の畳み込み層の処理を完了できないときは、チップが1層の畳み込み層の処理を完了したときに、少なくとも2回のデータを読み取る操作と、少なくとも2回のデータを書き込む操作とを実行する必要があることを意味する。これは、チップへ大きな消費電力を招来し、チップの遅延を大きくし、チップの処理効率を低減する。次に、例2に引き続き、例(例3)を挙げると、第1層の畳み込み層の入力データがデータAであると仮定する。第1層の畳み込み層の処理における第1個の処理バッチを実行するときに、チップは、外部ストレージに記憶されたデータAと第1グループの重みをキャッシュに読み取り、第1グループの重みを用いてデータAに対して畳み込み処理を行い、チャンネル数が2であるデータBを取得し、データBを外部ストレージに書き込む。第1層の畳み込み層の処理における第2個の処理バッチを実行するときに、チップは、外部ストレージに記憶されたデータAと第2グループの重みをキャッシュに読み取り、第2グループの重みを用いてデータAに対して畳み込み処理を行い、チャンネル数が2であるデータCを取得し、データCを外部ストレージに書き込む。チップがデータAに対する畳み込み処理を完成する過程に、チップは、合計で、2回のデータを読み取る操作と2回のデータを書き込む操作を実行する。
チップの消費電力及び遅延を低減し、且つチップの処理効率を向上させるために、本発明の実施例は、最適化方案を更に提供する。図7を参照すると、図7は、本発明の実施例に係る更に別のデータ処理方法の模式的なフローチャートである。
701では、目標出力チャンネル数、上記チップの出力チャンネル数、処理バッチ数及び上記チップの参照値を取得する。
本実施例において、チップは、メモリを含み、上記第2処理すべきデータ及び上記畳み込みカーネルのパラメータは、当該メモリに記憶される。
上記目標出力チャンネル数は、現在畳み込み層(例えば、例3における第1層の畳み込み層)の次層の畳み込み層の入力データのチャンネル数である。
本発明の実施例において、上記処理バッチ数とは、チップが現在畳み込み層の第2処理すべきデータに対する処理を完成するのに実行必要な処理バッチの回数を指す。例えば、チップが2つの処理バッチでこそ第2処理すべきデータに対する処理を完成できる場合に、処理バッチ数は、2となる。
上記チップの参照値を解釈する前に、先にチップの時分割多重化周期を定義する。チップの時分割多重化周期は、少なくとも1つの処理バッチを含んでもよい。チップは、1つの処理バッチによって1つの処理結果を取得可能である。チップは、1つの時分割多重化周期内に少なくとも1つの処理結果を取得可能である。1つの時分割多重化周期内に、チップは、得られた処理結果をキャッシュに記憶し、当該時分割多重化周期内における全ての処理バッチが実行完了されるまで、当該時分割多重化周期内で得られた全ての処理結果をメモリに書き込む。例えば、チップの時分割多重化周期は、2つの処理バッチを含む。チップは、第1個の処理バッチによって処理結果Aを取得した後、処理結果Aをメモリに書き込む操作を実行せずに、処理結果Aをキャッシュに記憶する。チップは、第2個の処理バッチによって処理結果Bを取得した後、処理結果Aを処理結果Bとともにメモリに書き込む。
本発明の実施例において、チップの参照値は、チップの1つの時分割多重化周期に含まれる処理バッチの数の最大値である。例えば、チップの入力チャンネル数は、2であり、チップの出力チャンネル数は、2である。チップの参照値が4であることは、チップの1つの時分割多重化周期が最大で4つの処理バッチを含むことを意味する。図8に示すように、チップの時分割多重化周期は、1つの処理バッチ(当該処理バッチにより、y[0]とy[1]の2つのチャンネルの出力データは、取得可能である)を含んでもよく、更に、チップの時分割多重化周期は、2つの処理バッチ(この2つの処理バッチにより、y[0]、y[1]、y[2]とy[3]の4つのチャンネルの出力データは、取得可能である)を含んでもよく、更に、チップの時分割多重化周期は、3つの処理バッチ(この3つの処理バッチにより、y[0]、y[1]、y[2]、y[3]、y[4]とy[5]の6つのチャンネルの出力データは、取得可能である)を含んでもよく、更に、チップの時分割多重化周期は、4つの処理バッチ(この4つの処理バッチにより、y[0]、y[1]、y[2]、y[3]、y[4]、y[5]、y[6]とy[7]の8つのチャンネルの出力データは、取得可能である)を含んでもよい。
702では、上記出力チャンネル数が上記目標出力チャンネル数よりも小さい場合に、上記第2処理すべきデータ及び上記畳み込みカーネルのパラメータを取得する。
本実施例では、チップの出力チャンネル数が目標出力チャンネルデータよりも小さい場合に、メモリに記憶された第2処理すべきデータ及び畳み込みカーネルのパラメータをキャッシュに読み取る。こうして、現在畳み込み層(例えば、例3における第1層の畳み込み層)の処理を完了する前に、メモリからデータを読み取る必要がなくなる。例えば、本実施例に係る技術案をチップに用いる場合に、第2処理すべきデータ及び畳み込みカーネルのパラメータは、チップのメモリに記憶されている。チップは、本ステップを実行する過程に、メモリに記憶された第2処理すべきデータ及び畳み込みカーネルのパラメータをチップのキャッシュに読み取る。こうして、現在畳み込み層の処理を完了する前に、チップがメモリからデータを読み取る必要はなくなる。
上記畳み込みカーネルのパラメータは、現在畳み込み層が第2処理すべきデータに対して畳み込み処理を実行するのに必要な全ての重みを含む。具体的に、上記畳み込みカーネルパラメータは、少なくとも1グループの重み(以下では、zグループの重みと呼称)を含み、zは、上記処理バッチ数である。
ある実現可能な方式において、目標出力チャンネル数とチップの出力チャンネル数との商に対して切り上げることにより、処理バッチ数を取得可能である。例えば、目標出力チャンネル数が9であり、チップの出力チャンネル数が4である場合に、目標出力チャンネル数とチップの出力チャンネル数との商は、9/4となり、9/4に対して切り上げて3を取得し、即ち、処理バッチ数は、3となる。
703では、上記処理バッチ数が上記参照値以下である場合に、上記チップを介して、上記少なくとも1グループの重みのうちの1グループの重みを用いて上記第2処理すべきデータに対して畳み込み処理を行って1グループの第2データを取得し、上記1グループの第2データを上記チップのキャッシュに記憶する。
処理バッチ数が参照値以下である場合は、チップが1つの時分割多重化周期によって現在畳み込み層の第2処理すべきデータに対する処理を完了可能であることを意味する。
チップは、zグループの重みのうちの1グループの重みを用いて第2処理すべきデータに対して畳み込み処理を行うと、1つの処理バッチを完了可能であり、1グループの第2データを取得する。チップは、1グループの第2データを取得した後、当該グループの第2データをメモリに書き込む操作を実行せずに、当該グループの第2データをキャッシュに記憶する。
704では、上記少なくとも1グループの重みのうちの各グループの重みをそれぞれ用いて上記第2処理すべきデータに対して畳み込み処理を行って少なくとも1グループの第2データを取得した場合に、上記キャッシュに記憶された上記少なくとも1グループの第2データを上記第1データとして上記チップのメモリに書き込む。
ステップ702に示すように、zグループの重みのうちの1グループの重みを用いて第2処理すべきデータに対して畳み込み処理を行うと、1グループの第2データを取得可能である。zグループの重みのうちの各グループの重みをそれぞれ用いて第2処理すべきデータに対して畳み込み処理を行うことにより、現在畳み込み層の第2処理すべきデータに対する畳み込み処理を完了可能であり、zグループの第2データを取得する。
例えば(例4)、畳み込みカーネルのパラメータは、2グループの重み、即ち、重みAと重みBを含む。重みAを用いて第2処理すべきデータに対して畳み込み処理を行うと、第2データAを取得可能であり、重みBを用いて第2処理すべきデータに対して畳み込み処理を行うと、第2データBを取得可能である。
チップは、zグループの第2データを取得した後、キャッシュに記憶されたzグループの第2データを第1データとしてメモリに書き込む。
例4に引き続いて例を挙げると、チップは、重みAを用いて第2処理すべきデータに対して畳み込み処理を行って第2データAを取得した後、第2データAをキャッシュに記憶する。チップは、次に重みBを用いて第2処理すべきデータに対して畳み込み処理を行って第2データBを取得し、第2データBをキャッシュに記憶する。その際、第2データA及び第2データBは、現在畳み込み層が第2処理すべきデータに対して畳み込み処理を行って得た第1データそのものである。チップは、第2データBをキャッシュに記憶した後、キャッシュに記憶された第2データA及び第2データBをメモリに書き込む。
例4から分かるように、チップは、重みA及び重みBを用いて第2処理すべきデータに対して畳み込み処理を行う過程に、1回のデータを読み取る操作及び1回のデータを書き込む操作のみを実行した。これにより、チップの消費電力が低減され、チップの処理効率が向上する。
705では、上記処理バッチ数が上記参照値よりも大きい場合に、上記少なくとも1グループの重みから、少なくとも1グループの重みを時分割多重化重みセットとして選定する。
処理バッチ数が参照値よりも大きい場合は、チップが少なくとも2つの時分割多重化周期によって現在畳み込み層の第2処理すべきデータに対する処理を完了する必要があることを意味する。チップのリソースが十分に利用されるように、zグループの重みから少なくとも1グループの(以下では、xグループと呼称)重みを時分割多重化重みセットとして選定する。こうして、後で時分割多重化重みセットを用いて第2処理すべきデータに対して畳み込み処理を行うことは、便利になる。ただし、xは、参照値に等しい。例えば、チップの参照値が4であり、z=9を満たすと、9グループの重みから4グループの重みを時分割多重化重みセットとして選定する。
706では、上記時分割多重化重みセットにおける1グループの重みを用いて上記第2処理すべきデータに対して畳み込み処理を行い、1グループの第3データを取得し、上記1グループの第3データを上記チップのキャッシュに記憶する。
データ処理装置は、時分割多重化重みセットにおける1グループの重みを用いて第2処理すべきデータに対して畳み込み処理を行い、1つの処理バッチを完了可能であり、1グループの第3データを取得する。データ処理装置は、1グループの第3データを取得した後、当該グループの第3データをメモリに書き込む操作を実行せずに、当該グループの第3データをチップのキャッシュに記憶する。好ましくは、本ステップにおけるデータ処理装置は、チップである。
707では、上記時分割多重化重みセットにおける各グループの重みをそれぞれ用いて上記第2処理すべきデータに対して畳み込み処理を行い、少なくとも1グループの第3データを取得した場合に、上記キャッシュに記憶された上記少なくとも1グループの第3データを上記メモリに書き込む。
ステップ706に示すように、時分割多重化重みセットにおける1グループの重みを用いて第2処理すべきデータに対して畳み込み処理を行うと、1グループの第3データを取得可能である。時分割多重化重みセットにおける各グループの重みをそれぞれ用いて第2処理すべきデータに対して畳み込み処理を行うことにより、xグループの第3データを取得可能である。チップは、xグループの第3データを取得した後、キャッシュに記憶されたxグループの第3データをメモリに書き込む。
チップは、1つの時分割多重化周期の処理によってxグループの第3データ(即ち、x個のチャンネルの出力データ)を取得した後、第2処理すべきデータに対して畳み込み処理を行うことで残りのz-x個のチャンネルの出力データを取得する必要がある。
z-xがx以下である場合に、ステップ703からステップ704に供される技術案に基づいて、z個のチャンネルの出力データが得られるまで、zグループの重みのうち、時分割多重化重みセット以外の重みを用いて第2処理すべきデータに対して畳み込み処理を行い、現在畳み込み層の第2処理すべきデータに対する畳み込み処理を完了する。z-xがxよりも大きい場合に、ステップ705からステップ707に供される技術案に基づいて、z個のチャンネルの出力データが得られるまで、zグループの重みのうち、時分割多重化重みセット以外の重みを用いて第2処理すべきデータに対して畳み込み処理を行い、現在畳み込み層の第2処理すべきデータに対する畳み込み処理を完了する。
例えば、目標出力チャンネル数は、16であり、チップの出力チャンネル数は、2であり、チップの参照値は、4であり、z=8である。チップの第1個の時分割多重化周期の処理により、8グループの第3データ(第3データA、第3データB、第3データC、第3データD、第3データE、第3データF、第3データG及び第3データHを含む)を目標出力データのうちの前8個のチャンネルのデータとして取得可能である。第2個の時分割多重化周期の処理により、更に、8グループの第3データ(第3データI、第3データJ、第3データK、第3データL、第3データM、第3データN、第3データO、第3データPを含む)を目標出力データのうちの後8個のチャンネルのデータとして取得可能である。第1個の時分割多重化周期内に、チップは、8グループの重みから4グループの重みを第1個の時分割多重化周期の時分割多重化重みセットとして選定する。第1個の時分割多重化周期の時分割多重化重みセットを用いて第4個の処理バッチを完了して第3データA、第3データB、第3データC、第3データD、第3データE、第3データF、第3データG及び第3データHという8つのグループの第3データを取得した後、キャッシュに記憶された第3データA、第3データB、第3データC、第3データD、第3データE、第3データF、第3データG及び第3データHを一度でメモリに書き込む。第2個の時分割多重化周期内に、チップは、8グループの重みのうち、第1個の時分割多重化重みセット以外の4グループの重みを、第2個の時分割多重化周期の時分割多重化重みセットとする。第2個の時分割多重化周期の時分割多重化重みセットを用いて第4個の処理バッチを完了して第3データI、第3データJ、第3データK、第3データL、第3データM、第3データN、第3データO、第3データPという8グループの第3データを取得した後、キャッシュに記憶された第3データI、第3データJ、第3データK、第3データL、第3データM、第3データN、第3データO、第3データPを一度でメモリに書き込む。これまでに、チップは、2つの時分割多重化周期の処理によって、16個のチャンネル(即ち、第3データA、第3データB、第3データC、第3データD、第3データE、第3データF、第3データG、第3データH、第3データI、第3データJ、第3データK、第3データL、第3データM、第3データN、第3データO及び第3データP)の目標出力データを取得した。
上記例示において、本実施例に係る技術案で処理しないと、各処理バッチの後で2グループの第3データをメモリに書き込む操作を1回行う必要がある。例えば、第1個の時分割多重化周期内の第1個の処理バッチの処理を経て第3データA及び第3データBを取得した後、第3データA及び第3データBをメモリに書き込む。第1個の時分割多重化周期内の第2個の処理バッチの処理を経て第3データC及び第3データDを取得した後、第3データC及び第3データDをメモリに書き込む。こうして、チップは、メモリへデータを書き込む操作を8回実行する必要がある。上記例示では、本実施例に係る技術案で処理した後、チップは、メモリへデータを書き込む操作を2回のみ実行すればよい。明らかに、本実施例に係る技術案によると、チップがメモリへデータを書き込む操作の回数は、減少可能であり、チップの消費電力は、低減され、チップの処理効率は、向上する。
好ましくは、本実施例において、第1処理すべきデータは、第1処理すべきデータセットを含み、第2処理すべきデータは、第2処理すべきデータセットを含み、第2処理すべきデータセットには、第1処理すべきデータセットにおける各処理すべきデータに対応するデータが存在する。例えば、第1処理すべきデータセットは、第1処理すべきデータA及び第1処理すべきデータBを含む。入力チャンネル数に基づいて第1処理すべきデータAを処理し、第2処理すべきデータa及び第2処理すべきデータbを取得する。入力チャンネル数に基づいて第1処理すべきデータBを処理し、第2処理すべきデータc及び第2処理すべきデータdを取得する。第2処理すべきデータa、第2処理すべきデータb、第2処理すべきデータc及び第2処理すべきデータdを第2処理すべきデータセットとする。第2処理すべきデータセットにおける第2処理すべきデータa及び第2処理すべきデータbは、第1処理すべきデータAに対応するデータであり、第2処理すべきデータセットにおける第2処理すべきデータc及び第2処理すべきデータdは、第1処理すべきデータBに対応するデータである。
第1処理すべきデータセットが少なくとも2つのデータを含む場合に、少なくとも2つのデータを処理することにより、第2処理すべきデータセットを取得可能である。第2処理すべきデータセットにおける全てのデータが処理完了されるまで、第2処理すべきデータセットにおける各データに対して畳み込み処理をそれぞれ行い、第1処理すべきデータセットの処理結果を取得可能である。例えば、第1処理すべきデータセットは、画像A及び画像Bを含む。画像Aと画像Bとのチャンネル数は、何れも3である、ただし、画像Aは、第1チャンネルデータ、第2チャンネルデータ、第3チャンネルデータを含み、画像Bは、第4チャンネルデータ、第5チャンネルデータ、第6チャンネルデータを含む。入力チャンネル数は、2である。第1チャンネルデータから最適データセットを選定して第7チャンネルデータを取得する。第2チャンネルデータから最適データセットを選定して第8チャンネルデータを取得する。第3チャンネルデータから最適データセットを選定して第9チャンネルデータを取得する。第4チャンネルデータから最適データセットを選定して第10チャンネルデータを選定する。第5チャンネルデータから最適データセットを選定して第11チャンネルデータを取得する。第6チャンネルデータから最適データセットを選定して第12チャンネルデータを取得する。第7チャンネルデータ及び第8チャンネルデータを第2処理すべきデータaとする。第9チャンネルデータ及び第10チャンネルデータを第2処理すべきデータbとする。第11チャンネルデータ及び第12チャンネルデータを第2処理すべきデータcとする。チップは、第1個の処理バッチにおいて第2処理すべきデータaを処理して処理結果1を取得可能である。チップは、第2個の処理バッチにおいて第2処理すべきデータbを処理して処理結果2を取得可能である。チップは、第3つの処理バッチにおいて第2処理すべきデータcを処理して処理結果3を取得可能である。処理結果1、処理結果2及び処理結果3は、第1処理すべきデータセットにおける各チャンネルの最適データセットに対して畳み込み処理を行って得られた結果である。同様な理由にて、チップは、第1処理すべきデータセットにおける、最適データセット以外のデータを処理して処理結果4を取得可能である。処理結果1、処理結果2、処理結果3及び処理結果4は、第1処理すべきデータセットを処理して得られた処理結果である。
チップの出力チャンネル数が目標出力チャンネル数よりも小さい場合に、本実施例では、1つの時分割多重化周期の処理が完了されるまで、各処理バッチで得られた結果をキャッシュに記憶し、キャッシュに記憶されたデータを一括してメモリに書き込むため、チップが第2処理すべきデータに対して畳み込み処理を完了するのに実行必要なデータ書き込みの回数は、減少可能であり、チップの消費電力は、低減され、チップの処理効率は、向上する。
チップは、第2処理すべきデータを取得した後、処理リソース(例えば、畳み込み処理ユニットの計算リソース)を呼び出して第2処理すべきデータに対して畳み込み処理を行う。当該処理手順は、以下の2種の方式のうちの何れか1種で実施され得る。
1.上記畳み込みカーネルのパラメータを用いて上記第2処理すべきデータに対して畳み込み処理を行うことにより、上記第2処理すべきデータのうちの全てのデータを上記チップの出力チャンネルのうちの1つのチャンネルにマッピングし、第1データのうちの1つのチャンネルのデータ(以下では、第4データと呼称)を取得する。チップは、第2処理すべきデータのうちの全てのデータをチップの各出力チャンネルにそれぞれマッピングするまで処理し続ける。
例えば(例5)、チップは、2つの入力チャンネルを含む。第2処理すべきデータが2つのチャンネルのデータをそれぞれチップの2つの入力チャンネルの入力データとして含むと仮定する。図9aに示すように、第1個の処理バッチ内に、チップは、畳み込みカーネルのパラメータにおける重みを用いて入力チャンネル1の入力データと入力チャンネル2の入力データとに対して畳み込み処理を行うことにより、入力チャンネル1の入力データと入力チャンネル2の入力データとを何れも出力チャンネル1にマッピングし、出力チャンネル1の出力データを取得してもよい。図9bに示すように、第2個の処理バッチ内に、チップは、畳み込みカーネルのパラメータにおける重みを用いて入力チャンネル1の入力データと入力チャンネル2の入力データとに対して畳み込み処理を行うことにより、入力チャンネル1の入力データと入力チャンネル2の入力データとを何れも出力チャンネル2にマッピングし、出力チャンネル2の出力データを取得してもよい。出力チャンネル1の出力データ及び出力チャンネル2の出力データは、第1データそのものである。つまり、第1データは、2つのチャンネルのデータを含む。ただし、一方のチャンネルのデータは、出力チャンネル1の出力データであり、他方のチャンネルのデータは、出力チャンネル2の出力データである。
2.上記畳み込みカーネルのパラメータを用いて上記第2処理すべきデータに対して畳み込み処理を行うことにより、上記第2処理すべきデータのうちの1つのチャンネルのデータを上記チップの各出力チャンネルにそれぞれマッピングし、第5データを取得し、第5データが第1データに属する。第2処理すべきデータのうちの各チャンネルのデータをチップの各チャンネルにそれぞれマッピングして少なくとも1つの第6データを取得するまで、処理し続ける。第5データと少なくとも1つの第6データとを加算すると、第1データは、取得可能である。
例えば(例6)、チップは、2つの入力チャンネルを含む。第2処理すべきデータが2つのチャンネルのデータをそれぞれチップの2つの入力チャンネルの入力データとして含むと仮定する。図10aに示すように、第1個の処理バッチ内に、チップは、畳み込みカーネルのパラメータにおける重みを用いて入力チャンネル1の入力データに対して畳み込み処理を行うことにより、入力チャンネル1の入力データを出力チャンネル1及び出力チャンネル2にそれぞれマッピングし、第5データを取得してもよい。ただし、第5データは、出力チャンネル1の出力データに属する第7データと、出力チャンネル2の出力データに属する第8データとを含む。図10bに示すように、第2個の処理バッチ内に、チップは、畳み込みカーネルのパラメータにおける重みを用いて入力チャンネル2の入力データと入力チャンネル2の入力データとに対して畳み込み処理を行うことにより、入力チャンネル1の入力データ及び入力チャンネル2の入力データをそれぞれ出力チャンネル1及び出力チャンネル2にマッピングし、第6データを取得してもよい。ただし、第6データは、出力チャンネル1の出力データに属する第9データと、出力チャンネル2の出力データに属する第10データとを含む。第5データにおける第7データと、第6データにおける第9データとを加算すると、出力チャンネル1の出力データは、取得可能である。第5データにおける第8データと第6データにおける第10データとを加算すると、出力チャンネル2の出力データは、取得可能である。出力チャンネル1の出力データ及び出力チャンネル2の出力データは、第1データそのものである。つまり、第1データは、2つのチャンネルのデータを含む。ただし、一方のチャンネルのデータは、出力チャンネル1の出力データであり、他方のチャンネルのデータは、出力チャンネル2の出力データである。
上記第1種の実現方式において、チップは、第2処理すべきデータに対して1回の読み取り操作を行い、畳み込みカーネルのパラメータにおける重みに対して少なくとも1回の読み取り操作を行う必要がある。例えば、例5において、第1個の処理バッチで使用された重みは、入力チャンネルのデータを出力チャンネル1にマッピングした重みであり、第2個の処理バッチで使用された重みは、入力チャンネルのデータを出力チャンネル2にマッピングした重みである。即ち、2つの処理バッチで使用された重みは、異なる。一方で、2つの処理バッチにおける入力データは、何れも第2処理すべきデータである。
上記第2種の実現方式において、チップは、第2処理すべきデータに対して少なくとも1回の読み取り操作を行い、畳み込みカーネルのパラメータにおける重みに対して1回の読み取り操作を行う必要がある。例えば、例6において、2つの処理バッチで使用された重みは、何れも、入力チャンネルのデータを出力チャンネル1にマッピングした重みと、入力チャンネルのデータを出力チャンネル2にマッピングした重みとを含む。一方で、第1個の処理バッチにおける入力データは、入力チャンネル1の入力データ(即ち、第2処理すべきデータのうちの1つのチャンネルのデータ)であり、第2個の処理バッチにおける入力データは、入力チャンネル2の入力データ(即ち、第2処理すべきデータにおけるもう1つのチャンネルのデータ)である。
第2処理すべきデータのうちの1つのチャンネルのデータ量が畳み込みカーネルのパラメータにおける重みのデータ量よりも大きいため、第1種の実現方式におけるチップの読み取り効率は、第2種の実現方式の読み取り効率よりも高くなる。しかし、第1種の実現方式におけるチップのキャッシュの記憶空間は、第2種の実現方式におけるチップのキャッシュの記憶空間よりも大きい。即ち、第1種の実現方式におけるチップのコストは、第2種の実現方式におけるチップよりも高い。
第1処理すべきデータのデータ量が大きいが、チップのキャッシュの記憶空間が小さいため、チップは、通常、外付けメモリを必要とする。当該メモリは、第1処理すべきデータ及び畳み込みカーネルのパラメータを記憶する。
ある実現可能な方式において、図11に示すように、メモリは、グローバルメモリを含み、当該グローバルメモリは、チップによってアクセスされ得るとともに、チップ以外のハードウェアによってアクセスされ得る。例えば、チップは、端末(例えば、コンピュータ、サーバ)に属し、当該グローバルメモリは、チップによってアクセスされ得るとともに、端末のCPUによってアクセスされ得る。その際、第1処理すべきデータと畳み込みカーネルのパラメータは、グローバルメモリに記憶される。
別の実現可能な方式において、図12に示すように、メモリは、ローカルメモリを含み、当該ローカルメモリは、チップでしかアクセスされ得ない。例えば、チップは、端末(例えば、コンピュータ、サーバ)に属し、当該ローカルメモリは、チップのみによってアクセスされ得、チップ以外のハードウェア(例えば、端末のCPU)は、当該ローカルメモリへアクセスできない。その際、第1処理すべきデータと畳み込みカーネルのパラメータは、グローバルメモリに記憶される。
更に別の実現可能な方式において、図13に示すように、メモリは、グローバルメモリとローカルメモリを含み、当該グローバルメモリは、チップによってアクセスされ得るとともに、チップ以外のハードウェアによってアクセスされ得、当該ローカルメモリは、チップによってアクセスされ得るが、チップ以外のハードウェアによってアクセスされ得ない。
その際、以下の4種の記憶方式のうちの何れか1種により、第1処理すべきデータと畳み込みカーネルのパラメータを記憶してもよい。
1.第2処理すべきデータと畳み込みカーネルのパラメータは、何れもグローバルメモリに記憶可能である。
2.第2処理すべきデータと畳み込みカーネルのパラメータは、同様に何れもローカルメモリに記憶可能である。
3.第2処理すべきデータがグローバルメモリに記憶されるが、畳み込みカーネルのパラメータは、ローカルメモリに記憶される。
4.第2処理すべきデータがローカルメモリに記憶されるが、畳み込みカーネルのパラメータは、グローバルメモリに記憶される。
上記3種の実現可能な方式において、グローバルメモリがチップによってアクセスされ得るだけでなく、加速用以外のハードウェアによってアクセスされ得るが、ローカルメモリがチップのみによってアクセスされ得るため、チップがローカルメモリへアクセスする速度は、グローバルメモリへアクセスする速度よりも速い。しかし、ローカルメモリを追加すると、チップを含める端末(例えば、コンピュータ、サーバ)のコストは、増加してしまう。実際の使用において、ユーザは、コスト及び自身の需要(例えば、チップの処理速度)に応じて適切な記憶方式を選定可能であり、本発明ではこれについて限定しない。
好ましくは、本発明の実施例に係る技術案を実施する前に、CPUが畳み込みニューラルネットワークに対してコンパイルを行うことにより、プリ―セットデータを取得してもよい。プリ―セットデータには、畳み込みニューラルネットワークにおける各層の畳み込み層の入力データのチャンネル数(即ち、第1処理すべきデータの入力チャンネル数)と、畳み込みニューラルネットワークにおける各層の畳み込み層の入力データのうちの各データのデータ量と、チップのデータ処理量閾値と、チップの入力チャンネル数と、チップの出力チャンネル数と、チップの参照値と、目標出力チャンネルデータと、処理バッチ数とのうちの少なくとも1種の情報が付加されている。また、第1処理すべきデータを処理して第2処理すべきデータ(例えば、ステップ102の実現方式、ステップ301~ステップ302の実現方式)を取得することは、チップが第2処理すべきデータを処理する前に完了させ得る。プリ―セットデータには、第2処理すべきデータの記憶アドレス情報が更に付加されてもよい。こうして、チップは、第2処理すべきデータを処理するときに、第2処理すべきデータの記憶アドレス情報に基づいて第2処理すべきデータを特定してもよい。プリ―セットデータには、処理パラメータの記憶アドレス情報が更に付加されてもよい。好ましくは、第2処理すべきデータの記憶アドレス情報、及び処理パラメータの記憶アドレス情報は、何れも線形表の形式でグローバルメモリ又はローカルメモリに記憶されてもよい。ただし、線形表は、チェーン表を含む。第2処理すべきデータの記憶アドレス情報と処理パラメータの記憶アドレス情報とが何れもチェーン表の形式でグローバルメモリ又はローカルメモリに記憶された場合に、チェーン表のノードのアドレスに基づいてグローバルメモリ又はローカルメモリから第2処理すべきデータを読み取ってもよいし、チェーン表のノードのアドレスに基づいてグローバルメモリ又はローカルメモリ)から畳み込みカーネルのパラメータを読み取ってもよい。これにより、グローバルメモリの割当は、より良くて柔軟になり、ローカルメモリの割当もより良くて柔軟になる。
本発明の実施例に係る技術案に基づき、本発明の実施例は、幾つかの可能な応用場面を更に提供する。
場面1では、ディープラーニング技術の発展につれ、深層畳み込みニューラルネットワークの機能がますます強くなり、その応用分野も多くなっており、その中、自動運転が含まれている。
自動運転分野において、車両に配備された人工知能(artificial intelligence、AI)チップは、車両のカメラヘッドで収集された道路状況画像を処理することにより、車両の速度、操舵角等の制御情報を取得してもよい。更に、車両の速度、操舵角に基づいて車両の運動を制御可能であり、自動運転を図る。
例えば、車両aの車載AIチップは、深層畳み込みニューラルネットワークを用いて道路状況画像に対して畳み込み処理を行うことにより、道路状況画像の意味情報を抽出してもよい。更に、道路状況画像の意味情報及び制御マッピング関係(当該制御マッピング関係は、道路状況画像の意味情報と車両の速度及び/又は操舵角との間のマッピング関係である。当該制御マッピング関係は、深層畳み込みニューラルネットワークがトレーニング過程に学習したマッピング関係である)に基づいて、車両aの速度及び/又は操舵角(理解すべきことは、制御マッピング関係が道路状況画像の意味情報と車両の速度との間のマッピング関係を含む場合に、車両aの速度を取得可能であり、制御マッピング関係が道路状況画像の意味情報と車両の操舵角との間のマッピング関係を含む場合に、車両aの操舵角を取得可能である)を取得してもよい。
異なる車両に配備されたAIチップが異なる可能性があるが、本発明の実施例に係る技術案が非常に高い汎用性を有するため、本発明の実施例に係る技術案を用いると、任意の車載AIチップが深層畳み込みニューラルネットワークを用いて道路状況画像を処理する処理速度は、向上可能である。例えば、車載AIチップが道路状況画像を読み取る過程において、車載AIチップの入力チャンネル数と車載AIチップのデータ処理量閾値とに基づいて道路状況画像を分割し、深層畳み込みニューラルネットワークを用いて、分割された画像に対して畳み込み処理を行ってもよい。
場面2では、政府、企業、個人の安全管理意識の強化及びスマートハードウェア機器の普及とともに、人顔認識機能を有するますます多くの入退室機器は、実際の応用に投入されてきている。入退室機器は、カメラヘッドを介して来訪者の人顔画像を認識すべき画像として収集する。入退室機器のAIチップは、深層畳み込みニューラルネットワークを用いて認識すべき画像に対して人顔特徴抽出処理を行い、認識すべき画像の人顔特徴データを取得し、更に人顔特徴データに基づいて来訪者の身分を特定してもよい。
AIチップが深層畳み込みニューラルネットワークを用いて認識すべき画像に対して人顔特徴抽出処理を行う速度が更に高められるように、AIチップは、本発明の実施例に係る技術案に基づいて深層畳み込みニューラルネットワークを用いて認識すべき画像に対して人顔特徴抽出処理を行ってもよい。
例えば、入退室機器が収集された認識すべき画像を外部ストレージに記憶すると仮定する。AIチップは、外部ストレージから認識すべき画像を読み取る過程に、AIチップの入力チャンネル数とAIチップのデータ処理量閾値とに基づいて認識すべき画像を分割し、深層畳み込みニューラルネットワークを用いて、分割された画像に対して畳み込み処理を行い、認識すべき画像の人顔特徴データを取得してもよい。更に、AIチップは、本発明の実施例に係る技術案に基づいて認識すべき画像の人顔特徴データを外部ストレージに記憶してもよい。当業者であれば理解できるように、具体的な実施形態の上記方法において、各ステップの記載順は、厳格的な実行順を意味しておらず、実施過程について如何なる限定も構成しておらず、各ステップの具体的な実行順は、その機能及び可能な内在論理に基づいて特定されるべきである。
本発明の実施例の方法が上記のように詳細に説明されたが、以下では、本発明の実施例の装置を提供する。
図14を参照すると、図14は、本発明の実施例に係るデータ処理装置1の構造模式図である。当該装置1は、チップ11を含む。当該チップ11は、取得ユニット111、第1処理ユニット112、第2処理ユニット113、メモリ114、読み取りユニット115及び書き込みユニット116を備える。
取得ユニット111は、第1処理すべきデータと入力チャンネル数とを取得する。前記第1処理すべきデータのチャンネル数は、前記入力チャンネル数よりも大きい。
第1処理ユニット112は、前記入力チャンネル数に基づいて前記第1処理すべきデータを処理することにより、第2処理すべきデータを取得する。ただし、前記第2処理すべきデータに対応するチャンネル数は、前記入力チャンネル数以下である。
前記取得ユニット111は、更に、処理パラメータを取得する。
第2処理ユニット113は、前記処理パラメータを用いて前記第2処理すべきデータを処理することにより、第1データを取得する。
ある実現可能な方式において、前記処理パラメータは、畳み込みカーネルのパラメータを含み、前記装置は、チップを含み、前記入力チャンネル数は、前記チップの入力チャンネル数である。
ある実現可能な方式において、前記第2処理ユニット113は、
前記チップ11を介して、前記畳み込みカーネルのパラメータを用いて前記第2処理すべきデータに対して畳み込み処理を行うことにより、前記第1データを取得する。
ある実現可能な方式において、前記第1処理ユニット112は、
前記入力チャンネル数に応じて、前記第1処理すべきデータを少なくとも2部のデータに分け、前記少なくとも2部のデータを前記第2処理すべきデータとして特定する。各部のデータに対応するチャンネル数は、前記入力チャンネル数以下であり、且つ前記各部のデータのうちの単一チャンネルのデータ量は、データ処理量閾値以下である。
ある実現可能な方式において、前記第1処理すべきデータは、少なくとも2つのチャンネルのデータを含む。
ある実現可能な方式において、前記少なくとも2つのチャンネルのデータは、第1チャンネルのデータと第2チャンネルのデータとを含み、第1処理ユニット112は、
前記第1処理すべきデータのうち、第1チャンネルのデータと第2チャンネルのデータとを繋ぎ合わせることにより、前記第2処理すべきデータを取得する。前記第2処理すべきデータに対応するチャンネル数は、前記入力チャンネル数以下であり、且つ前記第2処理すべきデータのうちの単一チャンネルのデータ量は、データ処理量閾値以下である。
ある実現可能な方式において、前記第1処理すべきデータは、第1処理すべきデータセットを含み、前記第2処理すべきデータは、第2処理すべきデータセットを含み、前記第2処理すべきデータセットには、前記第1処理すべきデータセットにおける各処理すべきデータに対応するデータが存在する。
ある実現可能な方式において、前記取得ユニット111は、目標出力チャンネル数と、前記チップの出力チャンネル数と、処理バッチ数と、前記チップの参照値とを取得する。
前記第2処理ユニット113は、
前記出力チャンネル数が前記目標出力チャンネル数よりも小さい場合に、前記第2処理すべきデータと前記畳み込みカーネルのパラメータ(前記畳み込みカーネルのパラメータは、少なくとも1グループの重みを含む)とを取得し、
前記処理バッチ数が前記参照値以下である場合に、前記チップを介して、前記少なくとも1グループの重みのうちの1グループの重みを用いて前記第2処理すべきデータに対して畳み込み処理を行って1グループの第2データを取得し、前記1グループの第2データを前記チップのキャッシュに記憶し、
前記少なくとも1グループの重みのうちの各グループの重みをそれぞれ用いて前記第2処理すべきデータに対して畳み込み処理を行って少なくとも1グループの第2データを取得した場合に、前記キャッシュに記憶された前記少なくとも1グループの第2データを前記第1データとして前記チップのメモリに書き込む。
ある実現可能な方式において、前記第2処理ユニット113は、更に、
前記処理バッチ数が前記参照値よりも大きい場合に、前記少なくとも1グループの重みから少なくとも1グループの重みを時分割多重化重みセットとして選定し、
前記時分割多重化重みセットにおける1グループの重みを用いて前記第2処理すべきデータセットに対して畳み込み処理を行い、1グループの第3データを取得し、前記1グループの第3データを前記チップのキャッシュに記憶する。前記時分割多重化重みセットにおける重みのグループ数は、前記参照値に等しい。
ある実現可能な方式において、前記第2処理ユニット113は、更に、
前記時分割多重化重みセットにおける各グループの重みをそれぞれ用いて前記第2処理すべきデータセットに対して畳み込み処理を行い、少なくとも1グループの第3データを取得した場合に、前記キャッシュに記憶された前記少なくとも1グループの第3データを前記メモリに書き込む。
別の実現可能な方式において、前記メモリ114は、グローバルメモリ1141を含み、前記グローバルメモリ1141が前記チップ11によってアクセスされ得るとともに、前記グローバルメモリ1141が前記チップ11以外のハードウェアによってアクセスされ得る。
前記第2処理すべきデータと前記畳み込みカーネルのパラメータとを前記メモリ114に記憶することは、
前記第2処理すべきデータと前記畳み込みカーネルのパラメータとを前記グローバルメモリ1141に記憶することを含む。
更に別の実現可能な方式において、前記メモリ114は、ローカルメモリ1142を含み、前記ローカルメモリ1142が前記チップ11によってアクセスされ得るが、前記チップ11以外のハードウェアによってアクセスされ得ない。
前記第2処理すべきデータと前記畳み込みカーネルのパラメータとを前記メモリ114に記憶することは、
前記第2処理すべきデータと前記畳み込みカーネルのパラメータとを前記ローカルメモリ1142に記憶することを含む。
より更に別の実現可能な方式において、前記メモリ114は、グローバルメモリ1141及びローカルメモリ1142を含み、前記グローバルメモリ1141は、前記チップ114によってアクセスされ得るとともに、前記チップ114以外のハードウェアによってアクセスされ得、前記ローカルメモリ1142は、前記チップ114によってアクセスされ得るが、前記チップ114以外のハードウェアによってアクセスされ得ない。
前記第2処理すべきデータと前記畳み込みカーネルのパラメータとを前記メモリ114に記憶することは、
前記第2処理すべきデータと前記畳み込みカーネルのパラメータとを前記グローバルメモリ1141に記憶すること、又は、
前記第2処理すべきデータと前記畳み込みカーネルのパラメータとを前記ローカルメモリ1141に記憶すること、又は、
前記第2処理すべきデータを前記グローバルメモリ1141に記憶し、前記畳み込みカーネルのパラメータを前記ローカルメモリ1142に記憶すること、又は、
前記第2処理すべきデータをローカルメモリ1142に記憶し、前記畳み込みカーネルのパラメータを前記グローバルメモリ1141に記憶することを含む。
もう1つの実現可能な方式において、前記第2処理ユニット113は、
前記畳み込みカーネルのパラメータを用いて前記第2処理すべきデータに対して畳み込み処理を行って、前記第2処理すべきデータのうちの全てのデータを前記チップの出力チャンネルのうちの1つのチャンネルにマッピングし、第4データ(前記第4データは、前記第1データのうちの1つのチャンネルのデータである)を取得し、又は、
前記畳み込みカーネルのパラメータを用いて前記第2処理すべきデータに対して畳み込み処理を行って、前記第2処理すべきデータのうちの1つのチャンネルのデータを前記チップにおける各出力チャンネルにそれぞれマッピングし、第5データ(前記第5データは、前記第1データに属する)を取得する。
データ処理装置の入力チャンネルに基づいて入力データを処理することにより、データ処理装置がチャンネル数の異なる入力データを処理可能であるため、本実施例に係るデータ処理装置は、非常に良い汎用性を有する。
幾つかの実施例において、本発明の実施例に係る装置が有する機能又は含むモジュールは、上記方法実施例に記述された方法を実行するためのものであってもよく、その具体的な実施が上記方法実施例の記述を参照すればよく、簡潔のために、ここで繰り返し説明しない。
当業者であれば意識できるように、本文に開示された実施例を組み合わせて記述された各例示のユニット及びアルゴリズムステップが、電子ハードウェア、又は、コンピュータソフトウェアと電子ハードウェアとの組み合わせで実現されてもよい。これらの機能がハードウェア方式それともソフトウェア方式で実行されるかは、技術案の特定の応用及び設計制限条件に依存する。専門技術者が各特定の応用ごとに異なる方法を用いて記述された機能を実施可能であるが、このような実施が本発明の範囲を超えたとは思われるべきではない。
当業者であれば良く分かるように、記述の利便性及び簡潔性のために、上述したシステム、装置及びユニットの具体的な稼働過程は、上記方法実施例における対応過程を参照すればよく、ここで繰り返し説明しない。当業者であれば更に良く分かるように、本発明の各実施例の記述に偏りがあり、記述の利便性及び簡潔性のために、同じ又は類似する部分が異なる実施例において繰り返し説明されていない。したがって、ある実施例に記述されていない又は詳細に記述されていない部分は、他の実施例の記載を参照すればよい。
本発明に係る幾つかの実施例において、開示されたシステム、装置及び方法が他の方式にて実現され得ることは、理解されるべきである。例えば、上述した装置実施例が単に模式的なものであり、例えば、前記ユニットの区分が、単に1種の論理機能区分であり、実際に実施するときに別の区分方式もあり得る。例えば、複数のユニット或いはユニットは、組み合わせられてもよく、または、別のシステムに統合されてもよく、または、幾つかの特徴が略され、若しくは実行しないようにしてもよい。また、示され或いは議論された各構成部分同士間は、結合が直接結合であってもよく、通信接続が幾つかのインターフェース、装置或いはユニットを介する間接結合若しくは通信接続であってもよく、電気的なもの、機械的なもの或いは他の形態であってもよい。
上記分離部品として説明されるユニットが物理的に分離されるものであってもよくでなくてもよい。また、ユニットとして表示される部品は、物理ユニットであってもでなくてもよい。更に、それらのユニットは、1箇所に位置してもよく、複数のネットワークセルに分散してもよい。実際の需要に応じてその中の一部または全部のモジュールを選択して本実施例の目的を果たすことが可能である。
また、本発明の各実施例における各機能ユニットは、全部で1つの処理ユニットに集積されてもよく、各ユニットがそれぞれ単独で物理的に存在してもよく、2つ或いは2つ以上のユニットが1つのユニットに集積されてもよい。
上記実施例において、全部又は部分的にソフトウェア、ハードウェア、ファームウェア又はそれらの任意の組み合わせで実施されてもよい。ソフトウェアで実施されるときに、全部又は部分的にコンピュータプログラム製品の形式で実施されてもよい。前記コンピュータプログラム製品は、1つ又は複数のコンピュータ指令を含む。コンピュータに前記コンピュータプログラム指令をロードして実行するときに、全部又は部分的に本発明の実施例に記載のフロー又は機能を生成する。前記コンピュータは、汎用コンピュータ、専用コンピュータ、コンピュータネットワーク、又は他のプログラマブル装置であってもよい。前記コンピュータ指令は、コンピュータ可読記憶媒体に記憶されてもよく、又は前記コンピュータ可読記憶媒体を介して伝送されてもよい。前記コンピュータ指令は、1つのウェブサイト、コンピュータ、サーバ又はデータセンターから、有線(例えば、同軸ケーブル、光ファイバー、デジタル加入者線(digital subscriber line、DSL))又は無線(例えば赤外、無線、マイクロ波等)方式によって別のウェブサイト、コンピュータ、サーバ又はデータセンターへ伝送されてもよい。前記コンピュータ可読記憶媒体は、コンピュータがアクセスできる如何なる利用可能媒体、又は、1つ又は複数の利用可能媒体を含んで統合されたサーバ、データセンター等のデータ記憶機器であってもよい。前記利用可能媒体は、磁気媒体、(例えば、フロッピーディスク、ハードディスク、磁気テープ)、光媒体(例えば、デジタルバーサタイルディスク(digital versatile disc、DVD))、又は半導体媒体(例えば、ソリッドステートディスク(solid state disk 、SSD))等であってもよい。
当業者であれば、上記実施例の方法における全部又は一部のフローを理解して実施可能であり、当該フローは、コンピュータプログラムが関連するハードウェアを指示して実施され得、当該プログラムは、コンピュータ読み取り可能な記憶媒体に記憶可能であり、当該プログラムが実行されたときに、上記各方法実施例のフローも含めて実施され得る。上記記憶媒体は、読み出し専用メモリ(read-only memory、ROM)やランダムアクセスメモリ(random access memory、RAM)、磁気ディスク又は光ディスク等の、プログラムコードを記憶可能な各種の媒体を含む。