JP6714297B2 - Processing device and inference processing method - Google Patents
Processing device and inference processing method Download PDFInfo
- Publication number
- JP6714297B2 JP6714297B2 JP2017174491A JP2017174491A JP6714297B2 JP 6714297 B2 JP6714297 B2 JP 6714297B2 JP 2017174491 A JP2017174491 A JP 2017174491A JP 2017174491 A JP2017174491 A JP 2017174491A JP 6714297 B2 JP6714297 B2 JP 6714297B2
- Authority
- JP
- Japan
- Prior art keywords
- processing
- coefficient
- data
- partial
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
本発明は、例えば、画像認識等の推論処理を実行する処理装置等に関する。 The present invention relates to, for example, a processing device that executes inference processing such as image recognition.
従来、画像認識等の推論処理を行うために、畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)を実装した計算機が用いられている。計算機においてCNNを実装する場合においては、ディープラーニング等によって予め得られたCNNで使用する係数を含む学習済みデータを計算機のメインメモリに無歪(非圧縮)の状態で格納させるか、或いは、単純なベクトル量子化された状態で格納させている。 Conventionally, in order to perform inference processing such as image recognition, a computer equipped with a convolutional neural network (CNN: Convolutional Neural Network) has been used. When implementing CNN in a computer, the learned data including the coefficient used in CNN obtained in advance by deep learning etc. is stored in the main memory of the computer in an undistorted (uncompressed) state, or simply The vector is quantized and stored.
例えば、学習済みデータは、ネットワークを介して計算機に対して提供される場合がある。学習済みデータは、例えば、無歪の状態であれば、200MB等のように比較的データサイズが大きいので、ネットワークを介して送信すると、ネットワークに負荷がかかると共に、送信コストが高くなるという問題がある。 For example, the learned data may be provided to the computer via the network. The learned data has a relatively large data size, such as 200 MB, in the undistorted state. Therefore, when the data is transmitted via the network, the network is burdened and the transmission cost increases. is there.
これに対して、例えば、学習済みデータを圧縮して送信する技術が提案されている(例えば、非特許文献1参照)。 On the other hand, for example, a technique of compressing and transmitting learned data has been proposed (for example, see Non-Patent Document 1).
なお、ノイマン型の計算機と異なるニューロコンピュータにおいて、メモリ空間を有効活用する技術として、従来のニューロコンピュータに、主メモリユニット、圧縮ユニット、展開ユニットを付加し、16ビットの重み値入力データを4段階に分類し、出現頻度の高い順に低位ビットに割当てることにより、データ圧縮を行う技術が知られている(例えば、特許文献1参照)。 As a technique for effectively utilizing the memory space in a neuro computer different from the Neumann computer, a main memory unit, a compression unit, and a decompression unit are added to a conventional neuro computer, and 16-bit weight value input data is divided into four stages. There is known a technique of performing data compression by classifying the data into a plurality of bits and assigning them to the lower bits in descending order of appearance frequency (for example, refer to Patent Document 1).
例えば、非特許文献1による技術によると、ネットワークにおける学習済みデータの転送を比較的高速に行うことができるようになる。しかしながら、計算機において推論処理を行う場合においては、推論処理に使用する学習済みデータの全てを無歪の状態としてメモリ上に展開させることとなるので、多くのメモリが消費されてしまう。 For example, according to the technique of Non-Patent Document 1, it becomes possible to transfer learned data in a network at a relatively high speed. However, when performing inference processing in a computer, all of the learned data used for inference processing is expanded in the memory as a distortion-free state, and a large amount of memory is consumed.
本発明は、上記事情に鑑みなされたものであり、その目的は、推論処理に必要なメモリの容量を低減させることのできる技術を提供することにある。 The present invention has been made in view of the above circumstances, and an object thereof is to provide a technique capable of reducing the memory capacity required for inference processing.
上記目的を達成するため、第1の観点に係る処理装置は、処理対象データに対して、推論処理を実行する処理装置であって、推論処理を構成する複数の処理レイヤーにおけるそれぞれの部分処理を実行する複数の部分処理部と、推論処理を構成する複数の処理レイヤーにおける部分処理に使用される処理係数に対応する処理係数情報が処理レイヤーの実行順に従って並べられたストリームデータを取得するストリームデータ取得部と、ストリームデータから処理係数情報を取出し、処理係数情報に対応する処理係数を使用する部分処理部に対して、処理係数情報に対応する処理係数を供給する処理係数供給部と、を備える。 In order to achieve the above object, a processing device according to a first aspect is a processing device that executes inference processing on processing target data, and performs partial processing in each of a plurality of processing layers that configure inference processing. Stream data that obtains stream data in which processing coefficient information corresponding to processing coefficients used for partial processing in a plurality of processing layers that configure the inference processing and the plurality of partial processing units to be executed are arranged in the order of execution of the processing layers An acquisition unit and a processing coefficient supply unit that extracts processing coefficient information from the stream data and supplies the processing coefficient corresponding to the processing coefficient information to the partial processing unit that uses the processing coefficient corresponding to the processing coefficient information. ..
上記処理装置において、ストリームデータにおける少なくとも一部の処理係数情報は、処理係数が圧縮された圧縮処理係数であり、処理係数供給部は、圧縮処理係数を伸長し、伸長された処理係数を部分処理部に供給するようにしてもよい。 In the above processing device, at least a part of the processing coefficient information in the stream data is a compression processing coefficient obtained by compressing the processing coefficient, and the processing coefficient supply unit expands the compression processing coefficient and partially processes the expanded processing coefficient. It may be supplied to the department.
また、上記処理装置において、ストリームデータは、複数の処理レイヤーにおけるそれぞれの部分処理を特定する部分処理特定情報を含み、ストリームデータの部分処理特定情報に基づいて、部分処理を実行する部分処理部を構築する部分処理部構築部をさらに有するようにしてもよい。 Further, in the above processing device, the stream data includes partial processing specifying information for specifying each partial processing in the plurality of processing layers, and a partial processing unit for executing the partial processing is executed based on the partial processing specifying information of the stream data. You may make it further have a partial process part construction part to build.
また、上記処理装置において、ストリームデータは、圧縮処理係数における処理係数の圧縮方法を示す圧縮情報を含み、処理係数供給部は、圧縮情報に基づいて、圧縮処理係数を伸長するようにしてもよい。 Further, in the above processing device, the stream data may include compression information indicating a compression method of the processing coefficient in the compression processing coefficient, and the processing coefficient supply unit may expand the compression processing coefficient based on the compression information. ..
また、上記処理装置において、処理係数は、2次元平面の各領域に対応する値を含むフィルタデータを含み、フィルタデータを圧縮させた圧縮処理係数は、フィルタデータを予測符号化した圧縮フィルタデータであり、圧縮情報には、フィルタデータを予測符号化した際に使用した予測方向を示す予測方向情報を含み、処理係数供給部は、予測方向情報が示す予測方向に基づいて、圧縮フィルタデータを伸長するようにしてもよい。 Further, in the above processing device, the processing coefficient includes filter data including a value corresponding to each area of the two-dimensional plane, and the compression processing coefficient obtained by compressing the filter data is compression filter data obtained by predictively encoding the filter data. Yes, the compression information includes prediction direction information indicating the prediction direction used when predictively encoding the filter data, and the processing coefficient supply unit expands the compression filter data based on the prediction direction indicated by the prediction direction information. You may do so.
また、上記処理装置において、複数の部分処理部は、畳み込み処理を実行する畳込処理部を含み、処理係数は、畳み込み処理に使用する複数のフィルタのデータであってもよい。 Further, in the above processing device, the plurality of partial processing units may include a convolution processing unit that performs a convolution process, and the processing coefficient may be data of a plurality of filters used in the convolution process.
また、上記処理装置において、画像処理の実行に適した画像処理プロセッサを備え、畳込処理部は、画像処理プロセッサを用いて構成されていてもよい。 Further, the above processing device may include an image processing processor suitable for executing image processing, and the convolution processing unit may be configured using the image processing processor.
また、上記処理装置において、複数の部分処理部は、直前の処理レイヤーの部分処理部の処理結果のすべてを入力として処理を行う全結合処理部を含み、処理係数は、全結合処理部に入力される処理結果のそれぞれに対する重み付けの係数であってもよい。 Further, in the above processing device, the plurality of partial processing units include a total combination processing unit that performs processing by using all the processing results of the partial processing units of the immediately preceding processing layer as input, and the processing coefficient is input to the total combination processing unit. It may be a weighting coefficient for each of the processed results.
また、上記処理装置において、ストリームデータは、通信ネットワークを介して外部装置から受信されてもよい。 Further, in the above processing device, the stream data may be received from an external device via a communication network.
また、上記目的を達成するため、第2の観点に係る処理装置は、処理対象データに対して、推論処理を実行する処理装置であって、推論処理を構成する複数の処理レイヤーにおけるそれぞれの部分処理を実行する複数の部分処理部と、少なくとも1以上の部分処理部において使用される処理係数を圧縮した圧縮処理係数を記憶するメモリ部と、推論処理における第1部分処理を実行する際に、第1部分処理を実行する第1部分処理部が使用する処理係数に対応する圧縮処理係数をメモリ部から読み出す読出制御部と、読み出された圧縮処理係数を伸長し、伸長した処理係数を第1部分処理部に渡す伸長処理部と、を備える。 Further, in order to achieve the above object, the processing device according to the second aspect is a processing device that executes inference processing on data to be processed, and is a part of each of a plurality of processing layers forming the inference processing. A plurality of partial processing units that execute processing, a memory unit that stores compression processing coefficients obtained by compressing processing coefficients used in at least one or more partial processing units, and a first partial processing in the inference processing, A read control unit that reads out a compression processing coefficient corresponding to a processing coefficient used by the first partial processing unit that executes the first partial processing from the memory unit, expands the read compression processing coefficient, and expands the expanded processing coefficient. A decompression processing unit that is passed to the one-part processing unit.
また、上記目的を達成するため、第3の観点に係る推論処理方法は、処理対象データに対して、推論処理を実行する処理装置による推論処理方法であって、処理装置には、推論処理を構成する複数の処理レイヤーにおけるそれぞれの部分処理を実行する複数の部分処理部が構築され、推論処理を構成する複数の処理レイヤーにおける部分処理に使用される処理係数に対応する処理係数情報を前記処理レイヤーの実行順に従って並べたストリームデータを取得し、ストリームデータの先頭から順に処理係数情報を取出し、処理係数情報に対応する処理係数を使用する部分処理部に対して、処理係数情報に基づく処理係数を供給する。 Further, in order to achieve the above object, the inference processing method according to the third aspect is an inference processing method by a processing device that executes inference processing on data to be processed, and the processing device is provided with an inference processing. A plurality of partial processing units that execute respective partial processes in the plurality of constituent processing layers are constructed, and the processing coefficient information corresponding to the processing coefficients used in the partial processing in the plurality of processing layers that constitute the inference processing is provided as the processing. Acquires stream data arranged according to the execution order of layers, extracts processing coefficient information in order from the beginning of the stream data, and outputs processing coefficient based on the processing coefficient information to the partial processing unit that uses the processing coefficient corresponding to the processing coefficient information. To supply.
また、上記目的を達成するため、第4の観点に係る推論処理方法は、処理対象データに対して、推論処理を実行する処理装置による推論処理方法であって、処理装置は、推論処理を構成する複数の処理レイヤーにおけるそれぞれの部分処理を実行する複数の部分処理部と、少なくとも1以上の部分処理部において使用される処理係数を圧縮した圧縮処理係数を記憶するメモリ部とを有しており、推論処理における第1部分処理を実行する際に、第1部分処理を実行する第1部分処理部が使用する処理係数に対応する圧縮処理係数をメモリ部から読み出し、読み出された圧縮処理係数を伸長し、伸長した処理係数を第1部分処理部に渡す。 In order to achieve the above object, the inference processing method according to the fourth aspect is an inference processing method by a processing device that executes inference processing on data to be processed, and the processing device configures the inference processing. A plurality of partial processing units that execute respective partial processes in a plurality of processing layers, and a memory unit that stores compression processing coefficients obtained by compressing processing coefficients used in at least one or more partial processing units. When executing the first partial processing in the inference processing, the compression processing coefficient corresponding to the processing coefficient used by the first partial processing unit that executes the first partial processing is read from the memory unit, and the read compression processing coefficient is read. Is extended, and the extended processing coefficient is passed to the first partial processing unit.
本発明によれば、推論処理に必要なメモリの容量を低減できる。 According to the present invention, it is possible to reduce the memory capacity required for inference processing.
いくつか実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。 Some embodiments will be described with reference to the drawings. It should be noted that the embodiments described below do not limit the invention according to the claims, and all of the elements and combinations described in the embodiments are essential to the solution means of the invention. Not necessarily.
まず、第1実施形態に係る処理装置について説明する。 First, the processing apparatus according to the first embodiment will be described.
図1は、第1実施形態に係る処理装置の機能構成図である。 FIG. 1 is a functional configuration diagram of a processing device according to the first embodiment.
処理装置100は、処理制御部10と、1以上の処理部(部分処理部の一例)11(11−1〜11−n)と、1以上のデコーダ12(12−1,12−3,12−n−1等)とを備える。ここで、処理制御部10は、ストリームデータ取得部、部分処理部構築部に対応する。処理制御部10及びデコーダ12は、処理係数供給部に対応する。 The processing device 100 includes a processing control unit 10, one or more processing units (an example of partial processing units) 11 (11-1 to 11-n), and one or more decoders 12 (12-1, 12-3, 12). -N-1 etc.). Here, the processing control unit 10 corresponds to the stream data acquisition unit and the partial processing unit construction unit. The processing control unit 10 and the decoder 12 correspond to the processing coefficient supply unit.
処理装置100には、推論処理を実行する畳み込みニューラルネットワーク(CNN)が実装されている。CNNは、複数の処理レイヤー(レイヤー)により構成されている。図1の例では、CNNは、レイヤー1〜レイヤーNにより構成されている。各レイヤーにおける処理(部分処理)は、各処理部11によって実行される。CNNは、例えば、処理対象とする画像データが何を表しているか(例えば、人、犬、猫等の何が含まれているか)を推論する推論処理を実行して推論結果を出力する。CNNにおけるレイヤー数や、各レイヤーで実行する部分処理の種類は、任意に設定することができる。本実施形態では、レイヤー数や、各レイヤーで実行する部分処理については、後述するストリームデータ50の内容に応じて変えることができる。 A convolutional neural network (CNN) that executes inference processing is installed in the processing device 100. The CNN is composed of a plurality of processing layers. In the example of FIG. 1, the CNN includes layers 1 to N. The processing (partial processing) in each layer is executed by each processing unit 11. The CNN executes, for example, an inference process that infers what the image data to be processed represents (for example, what is included in a person, a dog, a cat, etc.) and outputs the inference result. The number of layers in the CNN and the type of partial processing executed in each layer can be set arbitrarily. In the present embodiment, the number of layers and the partial processing executed in each layer can be changed according to the contents of stream data 50 described later.
図1に示すCNNを構成するレイヤーにおける部分処理の種類は、一例であるが、図1に示す例では、処理部11としては、レイヤー1の部分処理を実行する畳込処理部11−1、レイヤー2の部分処理を実行するRelu処理部11−2、レイヤー3の部分処理を実行する畳込処理部11−3、レイヤーN−1の部分処理を実行する全結合処理部11−n−1、レイヤーNの部分処理を実行するSoftMax処理部11−n等がある。 The type of partial processing in the layers forming the CNN illustrated in FIG. 1 is an example, but in the example illustrated in FIG. 1, the processing unit 11 includes a convolution processing unit 11-1 that executes partial processing of Layer 1, The Relu processing unit 11-2 that executes the partial processing of the layer 2, the convolution processing unit 11-3 that executes the partial processing of the layer 3, and the total combination processing unit 11-n-1 that executes the partial processing of the layer N-1. , The SoftMax processing unit 11-n for executing the partial processing of the layer N.
畳込処理部11−1,11−3は、入力された画像データに対して、複数のフィルタデータ(処理係数の一例)のそれぞれを用いて畳込処理を行う。Relu処理部11−2は、直前のレイヤーで生成された各画像に対して、Relu(Rectified Linear Unit Rectifier:正規化線形関数)を適用する処理(Relu処理という)を実行する。全結合処理部11−n−1は、直前のレイヤーによる複数の結果の全てを入力として複数の重み係数(処理係数の一例)を用いて結合する処理を実行する。 The convolution processing units 11-1 and 11-3 perform convolution processing on the input image data using each of a plurality of filter data (an example of processing coefficients). The Relu processing unit 11-2 executes a process (referred to as a Relu process) of applying Relu (Rectified Linear Unit Rectifier) to each image generated in the immediately previous layer. The all-combining processing unit 11-n-1 executes a process of combining all the plurality of results from the immediately preceding layer as inputs and using a plurality of weighting coefficients (an example of processing coefficients).
デコーダ12は、処理制御部10から渡された圧縮データ(圧縮処理係数:圧縮フィルタデータ、圧縮重みデータ)を伸長し、伸長によって得られたデータ(処理係数)を処理部11に渡す。 The decoder 12 expands the compressed data (compression processing coefficient: compression filter data, compression weight data) passed from the processing control unit 10, and passes the data (processing coefficient) obtained by the expansion to the processing unit 11.
処理制御部10は、ストリームデータ50を取得し、ストリームデータ50に従って、CNNにおける処理部11の構築や、ストリームデータ50中の圧縮データをデコーダ12に伸長させる制御等を行う。ストリームデータ50は、例えば、後述するメインメモリ102(図5参照)や補助記憶装置106(図5参照)から取り出してもよく、通信I/F105及びネットワークを介して外部装置から受信してもよい。ネットワークを介して外部装置から受信するようにする場合には、ストリームデータ50の全ての受信が完了する前から、前の方のレイヤーから処理部11を構築して、CNNにおける推論処理を開始することができ、必要なデータの全てを受信した後に推論処理を開始する場合に比して、早期に推論処理を完了させることができる。 The processing control unit 10 acquires the stream data 50, and according to the stream data 50, constructs the processing unit 11 in the CNN, and controls the decoder 12 to expand the compressed data in the stream data 50. The stream data 50 may be extracted from, for example, a main memory 102 (see FIG. 5) or an auxiliary storage device 106 (see FIG. 5) described later, or may be received from an external device via the communication I/F 105 and a network. .. When receiving from the external device via the network, the processing unit 11 is constructed from the previous layer before the reception of all the stream data 50 is completed, and the inference processing in the CNN is started. It is possible to complete the inference process earlier than when the inference process is started after receiving all the necessary data.
ここで、処理制御部10の動作を詳細に説明する前に、ストリームデータ50のフォーマットについて詳細に説明する。 Before describing the operation of the processing control unit 10 in detail, the format of the stream data 50 will be described in detail.
図2は、第1実施形態に係るストリームデータのフォーマットを説明する図である。図3は、第1実施形態に係るストリームヘッダ部と、レイヤーヘッダ部のフォーマットを説明する図である。図4は、第1実施形態に係るレイヤー固有情報部のフォーマットを説明する図である。 FIG. 2 is a diagram illustrating the format of stream data according to the first embodiment. FIG. 3 is a diagram for explaining the formats of the stream header part and the layer header part according to the first embodiment. FIG. 4 is a diagram for explaining the format of the layer unique information section according to the first embodiment.
ストリームデータ50は、ストリームヘッダ部51と、CNNを構成する各レイヤーに対応する1以上のレイヤー部52とを含む。各レイヤー部52は、CNNにおけるレイヤーの実行順に従った順番で並んでいる。レイヤー部52は、レイヤーヘッダ部61と、レイヤー固有情報部62と、1以上のチャンネル部63とを含む。なお、レイヤー部52に対応するCNNのレイヤーの種別によっては、レイヤー固有情報部62や、チャンネル部63が存在しない場合がある。チャンネル部63は、1以上のチャンネルデータ71を含む。 The stream data 50 includes a stream header part 51 and one or more layer parts 52 corresponding to the respective layers forming the CNN. The layer units 52 are arranged in the order according to the execution order of the layers in the CNN. The layer section 52 includes a layer header section 61, a layer unique information section 62, and one or more channel sections 63. Depending on the type of the CNN layer corresponding to the layer section 52, the layer unique information section 62 and the channel section 63 may not exist. The channel section 63 includes one or more channel data 71.
ストリームヘッダ部51は、図3(a)に示すように、識別子、バージョン、ヘッダサイズ、ストリームサイズ、レイヤー数、出力ベクトルサイズ、CNN入力画像縦幅、CNN入力画像横幅、CNN入力画像フォーマット、CNNチャンネル数、フラグ等のフィールドを含む。 As shown in FIG. 3A, the stream header section 51 includes an identifier, a version, a header size, a stream size, a layer number, an output vector size, a CNN input image vertical width, a CNN input image horizontal width, a CNN input image format, and a CNN. It includes fields such as the number of channels and flags.
識別子フィールドには、ストリームデータ50を識別する識別子が格納される。バージョンフィールドには、ストリームデータ50が対応しているバージョンが格納される。ヘッダサイズフィールドには、ストリームヘッダ部51のサイズ(例えば、8バイト単位)が格納される。ストリームサイズフィールドには、ストリームデータ50のサイズ(例えば、8バイト単位)が格納される。レイヤー数フィールドには、ストリームデータ50に対応するCNNのレイヤー数が格納される。出力ベクトルサイズフィールドには、CNNの結果として出力されるベクトルのサイズが格納される。CNN入力画像縦幅フィールドには、CNNに入力される画像データの縦幅(縦の画素数)が格納される。CNN入力画像横幅フィールドには、CNNに入力される画像データの横幅(横の画素数)が格納される。CNN入力画像フォーマットフィールドには、CNNに入力される画像データのフォーマット(画像フォーマット)を示す情報が格納される。画像フォーマットを示す情報としては、例えば、8ビット整数型を示す“FIXED8”や、半精度浮動小数点型(FP16)等がある。CNN入力チャンネル数フィールドには、CNNにおける入力チャンネル数(例えば、1つの処理対象として入力される画像データ数等)が格納される。フラグフィールドには、各種情報が含まれる。 An identifier for identifying the stream data 50 is stored in the identifier field. The version field stores the version to which the stream data 50 corresponds. The size of the stream header section 51 (for example, in units of 8 bytes) is stored in the header size field. The size of the stream data 50 (for example, in units of 8 bytes) is stored in the stream size field. The number of layers of the CNN corresponding to the stream data 50 is stored in the number of layers field. The output vector size field stores the size of the vector output as a result of CNN. The CNN input image vertical width field stores the vertical width (the number of vertical pixels) of the image data input to the CNN. The CNN input image width field stores the width (number of horizontal pixels) of the image data input to the CNN. The CNN input image format field stores information indicating the format (image format) of image data input to the CNN. The information indicating the image format includes, for example, "FIXED8" indicating an 8-bit integer type, half-precision floating point type (FP16), and the like. The number of input channels in the CNN (for example, the number of image data input as one processing target) is stored in the CNN input channel number field. Various information is contained in the flag field.
レイヤーヘッダ部61は、図3(b)に示すように、識別子、ヘッダサイズ、レイヤーサイズ、レイヤー種別等のフィールドを含む。識別子フィールドには、レイヤーを識別する識別子が格納される。ヘッダサイズフィールドには、レイヤーヘッダ部61のサイズ(例えば、8バイト単位)が格納される。レイヤーサイズフィールドには、レイヤー部52のサイズ(例えば、8バイト単位)が格納される。レイヤー種別フィールドには、CNNを構成するレイヤーの種別を示す情報(レイヤ種別情報)が格納される。レイヤー種別情報としては、例えば、Convolution(畳込)処理を行うConvolutionレイヤーを示す“1”、Pooling(プーリング)処理を行うpoolingレイヤーを示す“2”、Relu処理を行うReluレイヤーを示す“3”、FullConnection(全結合)処理を行うFullConnectionレイヤーを示す“4”、SoftMax処理を行うSoftMaxレイヤーを示す“5”がある。 As shown in FIG. 3B, the layer header section 61 includes fields such as an identifier, a header size, a layer size, and a layer type. An identifier for identifying a layer is stored in the identifier field. The header size field stores the size of the layer header portion 61 (for example, in units of 8 bytes). The layer size field stores the size of the layer unit 52 (for example, in units of 8 bytes). In the layer type field, information (layer type information) indicating the type of layers forming the CNN is stored. As the layer type information, for example, “1” indicating a Convolution layer for performing a Convolution process, “2” indicating a Pooling layer for performing a Pooling process, and “3” indicating a Relu layer for performing a Relu process. , "4" indicating a FullConnection layer for performing a FullConnection process, and "5" indicating a SoftMax layer for performing a SoftMax process.
レイヤー固有情報部62は、例えば、対応するレイヤーヘッド部61のレイヤー種別フィールドのレイヤー種別が、Convolutionレイヤー、Poolingレイヤー、FullConnectionレイヤーである場合に存在し、レイヤー種別が、Reluレイヤー、SoftMaxレイヤーである場合には、存在しない。 The layer unique information part 62 exists, for example, when the layer type of the layer type field of the corresponding layer head part 61 is a Convolution layer, a Pooling layer, and a FullConnection layer, and the layer types are Relu layer and SoftMax layer. In some cases, it doesn't exist.
レイヤー種別が、Convolutionレイヤーである場合のレイヤー固有情報部62は、図4(a)に示すように、入力チャンネル数、出力チャンネル数、ストライド、カーネルサイズ、パディング、重み圧縮方式のフィールドを含む。 When the layer type is the Convolution layer, the layer unique information section 62 includes fields for the number of input channels, the number of output channels, stride, kernel size, padding, and weight compression method, as shown in FIG. 4A.
入力チャンネル数フィールドには、このレイヤーに入力されるチャンネルの数が格納される。出力チャンネル数フィールドには、このレイヤーから出力されるチャンネルの数が格納される。ストライドフィールドには、畳込処理において畳み込みフィルタを移動させる量(ストライド)が格納される。カーネルサイズフィールドには、畳込処理において使用する畳み込みフィルタのカーネルサイズが格納される。パディングフィールドには、入力されるデータの回りに追加するパディングの量が格納される。重み圧縮方式フィールドには、このレイヤーに使用されるフィルタのデータ(フィルタデータ)に対する圧縮方法を示す情報(圧縮情報)が格納される。本実施形態では、圧縮情報として、無圧縮の場合には“0”とし、Pruning符号化の場合には、“1”とし、Weight Sharing符号化の場合には、“2”とし、予測符号化の場合には、“3”としている。 The number of channels input to this layer is stored in the input channel number field. The number of output channels field stores the number of channels output from this layer. The stride field stores the amount (stride) of moving the convolution filter in the convolution process. The kernel size field stores the kernel size of the convolution filter used in the convolution process. The padding field stores the amount of padding added around the input data. The weight compression method field stores information (compression information) indicating the compression method for the filter data (filter data) used for this layer. In the present embodiment, the compression information is “0” in the case of no compression, “1” in the case of Pruning encoding, and “2” in the case of Weight Sharing encoding, and the prediction encoding. In the case of, it is set to "3".
レイヤー種別が、Poolingレイヤーである場合のレイヤー固有情報部62は、図4(b)に示すように、入力チャンネル数、出力チャンネル数、ストライド、カーネルサイズのフィールドを含む。 When the layer type is the Pooling layer, the layer unique information section 62 includes fields for the number of input channels, the number of output channels, stride, and kernel size, as shown in FIG. 4B.
入力チャンネル数フィールドには、このレイヤーに入力されるチャンネルの数が格納される。出力チャンネル数フィールドには、このレイヤーから出力されるチャンネルの数が格納される。ストライドフィールドには、プーリング処理において処理範囲を移動させる量(ストライド)が格納される。カーネルサイズフィールドには、プーリング処理を行うカーネルサイズが格納される。 The number of channels input to this layer is stored in the input channel number field. The number of output channels field stores the number of channels output from this layer. The stride field stores an amount (stride) for moving the processing range in the pooling processing. The kernel size field stores the kernel size for pooling processing.
レイヤー種別が、全結合レイヤーである場合のレイヤー固有情報部62は、図4(c)に示すように、入力チャンネル数、出力チャンネル数、重み圧縮方式のフィールドを含む。 When the layer type is the total combined layer, the layer unique information section 62 includes fields for the number of input channels, the number of output channels, and the weight compression method, as shown in FIG.
入力チャンネル数フィールドには、このレイヤーに入力されるチャンネルの数が格納される。出力チャンネル数フィールドには、このレイヤーから出力されるチャンネルの数が格納される。重み圧縮方式フィールドには、この全結合レイヤーに使用される、各入力チャンネルのデータに対する重みに対する圧縮方法を示す情報(圧縮情報)が格納される。本実施形態では、圧縮情報として、無圧縮の場合には“0”とし、Pruning符号化の場合には、“1”とし、Weight Sharing符号化の場合には、“2”とし、予測符号化の場合には、“3”としている。 The number of channels input to this layer is stored in the input channel number field. The number of output channels field stores the number of channels output from this layer. The weight compression method field stores information (compression information) indicating the compression method for the weight of the data of each input channel, which is used for all the combined layers. In the present embodiment, the compression information is “0” in the case of no compression, “1” in the case of Pruning encoding, and “2” in the case of Weight Sharing encoding, and the prediction encoding. In the case of, it is set to "3".
チャンネル部63は、例えば、対応するレイヤーヘッド部61のレイヤー種別フィールドのレイヤー種別が、Convolutionレイヤー、FullConnectionレイヤーである場合に存在する。 The channel part 63 exists when the layer type of the layer type field of the corresponding layer head part 61 is, for example, a Convolution layer or a Full Connection layer.
チャンネル部63のチャンネルデータ71には、チャンネル部63に対応するレイヤー固有情報部62の重み圧縮方式フィールドに格納された圧縮情報に対応する圧縮方法により圧縮されたデータ(処理係数情報、圧縮処理係数:例えば、畳込レイヤーの場合には、フィルタデータ(処理係数)の圧縮データ、全結合レイヤーの場合には、各入力チャンネルに対する重み(処理係数)の圧縮データ)が格納される。フィルタデータは、例えば、予測符号化によって圧縮されていてもよい。フィルタデータの予測符号化は、例えば、基準とするフィルタデータ(例えば、直前のフィルタデータ)と、所定の位置(例えば、上端又は左端)の画素を基準とした予測方向に基づいて予測した予測フィルタデータとの差分値を所定の符号化(例えば、Pruning符号化及びWeight Sharing符号化等)により符号化することにより、データを圧縮させる方法である。なお、このようにデータが予測符号化により圧縮されている場合には、各チャンネルデータ71の先頭には、そのチャンネルデータ71を予測符号化する際に使用した予測方向を示す情報(予測方向情報)が格納される。 In the channel data 71 of the channel part 63, data compressed by the compression method corresponding to the compression information stored in the weight compression method field of the layer specific information part 62 corresponding to the channel part 63 (processing coefficient information, compression processing coefficient). : For example, in the case of the convolutional layer, the compressed data of the filter data (processing coefficient), and in the case of the fully connected layer, the compression data of the weight (processing coefficient) for each input channel is stored. The filter data may be compressed by predictive coding, for example. The predictive encoding of the filter data is performed by, for example, a predictive filter that is predicted based on a reference filter data (for example, immediately preceding filter data) and a prediction direction based on a pixel at a predetermined position (for example, an upper end or a left end). This is a method of compressing data by encoding a difference value with data by predetermined encoding (for example, Pruning encoding and Weight Sharing encoding). When the data is compressed by predictive coding as described above, information indicating the prediction direction used when predictively coding the channel data 71 is provided at the beginning of each channel data 71 (prediction direction information). ) Is stored.
図1に戻り、処理制御部10の処理動作について説明する。 Returning to FIG. 1, the processing operation of the processing control unit 10 will be described.
処理制御部10は、ストリームデータ50を先頭から順に読み込み、レイヤー部52を読んだ場合には、レイヤー部52のレイヤーヘッダ部61のレイヤー種別フィールドに格納されているレイヤー種別に対応する処理部11を構築する。例えば、レイヤー種別が、Convolutionに対応する場合には、畳込処理部を構築し、Poolingに対応する場合には、Pooling処理部を構築し、Reluに対応する場合には、Relu処理部を構築し、全結合に対応する場合には、全結合処理部を構築し、SoftMaxに対応する場合には、SoftMax処理部を構築する。また、処理制御部10は、レイヤーヘッダ部61の次に、レイヤー固有情報部62が存在すれば、そのレイヤー固有情報部62の各フィールドの内容に従って、構築する処理部11の設定を行う。 The processing control unit 10 reads the stream data 50 in order from the beginning, and when reading the layer unit 52, the processing unit 11 corresponding to the layer type stored in the layer type field of the layer header unit 61 of the layer unit 52. To build. For example, when the layer type corresponds to Convolution, a convolution processing unit is constructed, when it corresponds to Pooling, a Pooling processing unit is constructed, and when it corresponds to Relu, a Relu processing unit is constructed. Then, in the case of being compatible with all combinations, the all-combining processing unit is constructed, and in the case of being compatible with SoftMax, the SoftMax processing unit is constructed. Further, if the layer unique information section 62 exists next to the layer header section 61, the processing control section 10 sets the processing section 11 to be constructed according to the contents of each field of the layer unique information section 62.
また、処理制御部10は、レイヤー部52のレイヤー固有情報部62に重み圧縮方式フィールドがある場合(すなわち、レイヤーが畳込レイヤー、又は全結合レイヤーである場合)には、重み圧縮方式フィールドの圧縮情報に従って、チャンネル部63のチャンネルデータ71に対する伸長処理を実行させ、そのレイヤーの処理を実行する処理部11に対して伸長処理後のデータを渡すように動作させるようにデコーダ12を生成(又は設定)して、制御する。これにより、処理制御部10は、処理部11に対して必要なデータを渡すことができる。ここで、チャンネルデータ71の先頭に、予測符号化の予測方向情報が含まれている場合には、デコーダ12は、その予測方向情報に基づいて、予測符号化されているデータを伸長する。 Further, when the layer unique information section 62 of the layer section 52 has a weight compression method field (that is, when the layer is a convolutional layer or a fully combined layer), the processing control section 10 changes the weight compression method field. In accordance with the compression information, the decoder 12 is generated (or the decoder 12 is operated so as to execute the decompression process for the channel data 71 of the channel unit 63 and pass the data after the decompression process to the processing unit 11 that executes the process of the layer. Control). Thereby, the processing control unit 10 can pass necessary data to the processing unit 11. Here, when the prediction direction information of the predictive coding is included at the beginning of the channel data 71, the decoder 12 expands the predictively coded data based on the predictive direction information.
次に、処理装置100のハードウェア構成について詳細に説明する。 Next, the hardware configuration of the processing device 100 will be described in detail.
図5は、第1実施形態に係る処理装置のハードウェア構成図である。 FIG. 5 is a hardware configuration diagram of the processing device according to the first embodiment.
処理装置100は、例えば、CPU(Central Processin Unit)101と、メインメモリ102と、GPU(Graphics Processing Unit)103と、リーダライタ104と、通信インターフェース(通信I/F)105と、補助記憶装置106と、入出力インターフェース(入出力I/F)107と、表示装置108と、入力装置109とを備えるコンピュータにより構成される。CPU101、メインメモリ102、GPU103、リーダライタ104、通信I/F105、補助記憶装置106、入出力I/F107、及び表示装置108は、バス110を介して接続されている。 The processing device 100 includes, for example, a CPU (Central Processing Unit) 101, a main memory 102, a GPU (Graphics Processing Unit) 103, a reader/writer 104, a communication interface (communication I/F) 105, and an auxiliary storage device 106. And a input/output interface (input/output I/F) 107, a display device 108, and an input device 109. The CPU 101, main memory 102, GPU 103, reader/writer 104, communication I/F 105, auxiliary storage device 106, input/output I/F 107, and display device 108 are connected via a bus 110.
CPU101は、処理装置100の全体を統括制御する。CPU101は、補助記憶装置106に格納されてプログラムをメインメモリ102に読み出して実行することにより各種処理を実行する。本実施形態では、CPU101は、補助記憶装置106に格納された処理プログラムを実行することにより、例えば、処理制御部10、Relu処理部11−2、SoftMax処理部11n、及びデコーダ12を構成する。 The CPU 101 centrally controls the entire processing device 100. The CPU 101 executes various processes by reading the program stored in the auxiliary storage device 106 into the main memory 102 and executing the program. In the present embodiment, the CPU 101 configures, for example, the processing control unit 10, the Relu processing unit 11-2, the SoftMax processing unit 11n, and the decoder 12 by executing the processing program stored in the auxiliary storage device 106.
メインメモリ102は、例えば、RAM、ROM等であり、CPU101に実行されるプログラム(処理プログラム等)や、各種情報を記憶する。補助記憶装置106は、例えば、HDD(Hard DISK Drive)、SSD(Solid State Drive)等の非一時的記憶デバイス(不揮発性記憶デバイス)であり、CPU101で実行されるプログラムや、各種情報を記憶する。各種情報としては、例えば、図2に示すようなストリームデータや、例えば、画像データ等の処理対象データがある。処理対象データが画像データである場合には、例えば、処理装置100の図示しないカメラにより撮像された画像データであってもよい。 The main memory 102 is, for example, a RAM, a ROM, or the like, and stores programs (processing programs and the like) executed by the CPU 101 and various types of information. The auxiliary storage device 106 is, for example, a non-temporary storage device (nonvolatile storage device) such as an HDD (Hard Disk Drive) and an SSD (Solid State Drive), and stores programs executed by the CPU 101 and various information. .. The various information includes, for example, stream data as shown in FIG. 2 and processing target data such as image data. When the processing target data is image data, it may be image data captured by a camera (not shown) of the processing device 100, for example.
GPU103は、例えば、画像処理等の特定の処理の実行に適しているプロセッサであり、例えば、並列的に行われる処理の実行に適している。本実施形態では、GPU103は、CPU101の指示に従って所定の処理を実行する。本実施形態では、GPU103は、例えば、畳込処理部11-1、全結合処理部11−n−1等を構成する。 The GPU 103 is, for example, a processor suitable for executing a specific process such as image processing, and is suitable for executing processes performed in parallel, for example. In this embodiment, the GPU 103 executes a predetermined process according to an instruction from the CPU 101. In the present embodiment, the GPU 103 constitutes, for example, the convolution processing unit 11-1, the total combination processing unit 11-n-1 and the like.
リーダライタ104は、記録媒体111を着脱可能であり、記録媒体111からのデータの読み出し、及び記録媒体111へのデータの書き込みを行う。記録媒体111としては、例えば、SDメモリーカード、FD(フロッピーディスク:登録商標)、CD、DVD、BD(登録商標)、フラッシュメモリ等の非一時的記録媒体(不揮発性記録媒体)がある。本実施形態においては、記録媒体111に、処理プログラムを格納しておき、リードライタ104により、これを読み出して、利用するようにしてもよい。また、記録媒体111に、ストリームデータを格納しておき、リードライタ104により、これを読み出して利用するようにしてもよい。また、記録媒体111に、処理対象データを格納しておき、リードライタ104により、これを読み出して利用するようにしてもよい。 The reader/writer 104 can attach and detach the recording medium 111, and reads data from the recording medium 111 and writes data to the recording medium 111. Examples of the recording medium 111 include a non-transitory recording medium (nonvolatile recording medium) such as an SD memory card, an FD (floppy disk: registered trademark), a CD, a DVD, a BD (registered trademark), and a flash memory. In the present embodiment, the processing program may be stored in the recording medium 111 and read by the reader/writer 104 to be used. Alternatively, the stream data may be stored in the recording medium 111, and the read/write unit 104 may read the stream data for use. Alternatively, the data to be processed may be stored in the recording medium 111, and the reader/writer 104 may read and use the data.
通信I/F105は、ネットワーク(通信ネットワーク)に接続されており、ネットワークに接続された他の装置(外部装置)との間でのデータの送受信を行う。例えば、ストリームデータ、処理対象データ等を通信I/F105を介してネットワークに接続された他の装置から受信するようにしてもよい。 The communication I/F 105 is connected to a network (communication network) and transmits/receives data to/from another device (external device) connected to the network. For example, the stream data, the processing target data, and the like may be received from another device connected to the network via the communication I/F 105.
入出力I/F107は、例えば、マウス、キーボード等の入力装置109と接続されており、入力装置109からのユーザによる操作入力を受け付ける。 The input/output I/F 107 is connected to an input device 109 such as a mouse and a keyboard, and receives an operation input by the user from the input device 109.
表示装置108は、例えば、液晶ディスプレイ等のディスプレイ装置であり、各種情報を表示出力する。 The display device 108 is, for example, a display device such as a liquid crystal display, and displays and outputs various information.
次に、図1に示す処理装置100における処理動作について説明する。 Next, the processing operation of the processing apparatus 100 shown in FIG. 1 will be described.
処理装置100の処理制御部10は、推論処理を実行するために利用する所定のストリームデータ50の取得を開始する。処理制御部10は、取得したストリームデータ50のCNNのレイヤー1の畳込処理部11−1に対応するレイヤー部52を受信すると、畳込処理部11−1を生成し、デコーダ12-1を生成する。次いで、処理制御部10は、このレイヤー部52の各チャンネルデータ71に含まれる圧縮フィルタデータをデコーダ12−1に逐次供給する。処理制御部10が圧縮フィルタデータをデコーダ12−1に供給するタイミングとしては、例えば、畳込処理部11−1からのフィルタデータの要求に応じたタイミングとしてもよい。 The processing control unit 10 of the processing device 100 starts acquisition of predetermined stream data 50 used to execute the inference processing. When the processing control unit 10 receives the layer unit 52 corresponding to the convolution processing unit 11-1 of the layer 1 of the CNN of the acquired stream data 50, the processing control unit 10 generates the convolution processing unit 11-1 and outputs the decoder 12-1. To generate. Next, the processing control unit 10 sequentially supplies the compression filter data included in each channel data 71 of the layer unit 52 to the decoder 12-1. The timing at which the processing control unit 10 supplies the compressed filter data to the decoder 12-1 may be, for example, the timing according to the request for the filter data from the convolution processing unit 11-1.
一方、処理制御部10は、処理対象データである画像データをレイヤー1の畳込処理部11−1に入力する。畳込処理部11−1は、入力された画像データに対して、デコーダ12−1から供給される各フィルタデータを用いて畳込処理を実行し、各フィルタデータを用いた全ての実行結果を後段のレイヤー2の処理部11(図1の例では、Relu処理部11−2)に渡すように出力する。ここで、レイヤー2の処理部11に対して実行結果を直接渡すことが可能である場合には、直接渡してもよく、また、直接渡すことが不可能な場合には、レイヤー2の処理部11が読み込み可能な所定のバッファに一時的に格納してもよい。 On the other hand, the processing control unit 10 inputs the image data, which is the processing target data, to the convolution processing unit 11-1 of Layer 1. The convolution processing unit 11-1 performs convolution processing on the input image data using each filter data supplied from the decoder 12-1, and obtains all execution results using each filter data. The data is output so as to be passed to the processing unit 11 (Relu processing unit 11-2 in the example of FIG. 1) of the layer 2 in the subsequent stage. Here, when the execution result can be directly passed to the processing unit 11 of the layer 2, it may be directly passed, and when it cannot be directly passed, the processing unit of the layer 2 may be passed. 11 may be temporarily stored in a predetermined readable buffer.
また、処理制御部10は、ストリームデータ50のCNNのレイヤー2のRelu処理部11−2に対応するレイヤー部52を受信すると、CNNのレイヤー2のRelu処理部11−2を生成する。Relu処理部11−2は、畳込処理部11−1による各処理結果の画像のそれぞれを入力として、Relu処理を実行し、後段のレイヤー3に渡すように出力する。 When the processing control unit 10 receives the layer unit 52 corresponding to the Relu processing unit 11-2 of the CNN layer 2 of the stream data 50, the processing control unit 10 generates the Relu processing unit 11-2 of the CNN layer 2. The Relu processing unit 11-2 receives each of the images of the respective processing results by the convolution processing unit 11-1 as input, executes Relu processing, and outputs so as to pass it to the layer 3 in the subsequent stage.
同様にして、処理制御部10は、ストリームデータ50の次のレイヤーに対応するレイヤー部52を受信すると、レイヤー毎に処理部11(畳込処理部11−3、全結合処理部11−n−1、SoftMax処理部11n等)を生成し、必要な場合には、その処理部11に対してデータを伸長して供給するデコーダ12(12−3,12−n−1等)を生成する。このような一連の処理が実行されることにより、CNNの最終のレイヤーからは推論処理の結果(推論結果)が出力される。なお、推論結果は、メインメモリ102等に出力するようにしてもよい。処理装置100は、この推論結果を表示装置108に表示したり、この推論結果に基づいて処理を実行したりしてもよい。 Similarly, when the processing control unit 10 receives the layer unit 52 corresponding to the next layer of the stream data 50, the processing unit 11 (convolution processing unit 11-3, total combination processing unit 11-n-) for each layer. 1, SoftMax processing unit 11n, etc.) and, when necessary, a decoder 12 (12-3, 12-n-1 etc.) for expanding and supplying data to the processing unit 11 is generated. By executing such a series of processes, the result of the inference process (inference result) is output from the final layer of the CNN. The inference result may be output to the main memory 102 or the like. The processing device 100 may display the inference result on the display device 108 or execute the process based on the inference result.
上記した第1実施形態に係る処理装置100によると、ストリームデータ50に従って、CNNの各レイヤーを適切に構築でき、レイヤーの処理を実行する部分処理部で必要なデータをストリームデータ50から取得して供給することができる。このため、メインメモリ102に予めCNNの全てのレイヤーの処理部で使用する全ての係数を記憶させておいたり、CNNの全体のレイヤー構成の情報についてメインメモリ102に格納させておいたりする必要がなくなる。これにより、メインメモリ102に必要な容量を低減することができる。また、ストリームデータ50に従って、CNNの各レイヤーを適切に構築できるので、ストリームデータ50の内容を変えることにより、所望する推論処理を実行するCNNを容易に構築することができる。また、ストリームデータ50中のチャネルデータについては、圧縮データとすることができるので、ストリームデータ50のデータ量を低減することができ、ストリームデータ50の読出しや、送信等に係る処理時間を低減することができる。 According to the processing device 100 according to the first embodiment described above, each layer of the CNN can be appropriately constructed according to the stream data 50, and the necessary data can be acquired from the stream data 50 by the partial processing unit that executes the processing of the layer. Can be supplied. Therefore, it is necessary to previously store all the coefficients used in the processing units of all the layers of the CNN in the main memory 102, or store the information of the entire CNN layer configuration in the main memory 102. Disappear. As a result, the capacity required for the main memory 102 can be reduced. Further, since each layer of the CNN can be appropriately constructed according to the stream data 50, by changing the content of the stream data 50, it is possible to easily construct the CNN that executes a desired inference process. Further, since the channel data in the stream data 50 can be compressed data, the data amount of the stream data 50 can be reduced, and the processing time for reading the stream data 50, transmission, etc. can be reduced. be able to.
次に、第2実施形態に係る処理装置について説明する。なお、第2実施形態においては、第1実施形態に係る処理装置と同様な部分には、同一の符号を付す。 Next, a processing device according to the second embodiment will be described. In the second embodiment, the same parts as those in the processing device according to the first embodiment are designated by the same reference numerals.
図6は、第2実施形態に係る処理装置の機能構成図である。 FIG. 6 is a functional configuration diagram of the processing device according to the second embodiment.
第2実施形態に係る処理装置100Aは、1以上の処理部(部分処理部)11(11−1〜11−n)と、1以上のデコーダ13(13−1,13−3,13−n−1等)と、FIFO(First IN, First Out)14と、構築部15と、メモリ部16とを備える。本実施形態におけるストリームデータは、第1実施形態におけるストリームデータ50の内のCNNの構成に関するデータを除いたデータ、例えば、処理部11に設定するデータ(処理係数情報)が含まれたチャンネル部63のみを含むデータとなっている。ここで、処理装置100Aは、図5に示すハードウェアで構成してもよく、例えば、構築部15、Relu処理部11−2、全結合処理部11−n−1、SoftMax処理部11n、及びデコーダ13は、CPU101によって構成してもよい。また、FIFO14は、CPU101及びメインメモリ102で構成してもよい。また、メモリ部16は、メインメモリ102で構成してもよい。また、畳込処理部11−1,11−3等は、GPU103で構成してもよい。 The processing device 100A according to the second embodiment includes one or more processing units (partial processing units) 11 (11-1 to 11-n) and one or more decoders 13 (13-1, 13-3, 13-n). −1 etc.), a FIFO (First IN, First Out) 14, a construction unit 15, and a memory unit 16. The stream data according to the present embodiment is data excluding data regarding the CNN configuration in the stream data 50 according to the first embodiment, for example, the channel unit 63 including data (processing coefficient information) set in the processing unit 11. It is data including only. Here, the processing device 100A may be configured by the hardware illustrated in FIG. 5, and for example, the construction unit 15, the Relu processing unit 11-2, the total combination processing unit 11-n-1, the SoftMax processing unit 11n, and the The decoder 13 may be configured by the CPU 101. Further, the FIFO 14 may be composed of the CPU 101 and the main memory 102. The memory unit 16 may be composed of the main memory 102. The convolution processing units 11-1, 11-3 and the like may be configured by the GPU 103.
メモリ部16は、CNNの各レイヤーの構造を示す情報(ニューラルネットワーク構造情報)16aを記憶する。ニューラルネットワーク構造情報16aは、CNNにおいて、各レイヤーがどのような処理部、デコーダ、FIFO等で構成され、どのような接続関係にあるかを特定可能な情報である。 The memory unit 16 stores information (neural network structure information) 16a indicating the structure of each layer of CNN. The neural network structure information 16a is information that can identify what processing units, decoders, FIFOs, etc., each layer has in the CNN, and what kind of connection they have.
構築部15は、メモリ部16のニューラルネットワーク構造情報16aに基づいて、CNNを構成する各処理部11、各デコーダ13、及び各FIFO14を作成し、それらの間での接続関係を設定する。 The construction unit 15 creates each processing unit 11, each decoder 13, and each FIFO 14 that configure the CNN based on the neural network structure information 16a of the memory unit 16 and sets the connection relationship among them.
デコーダ13は、ストリームデータ中のチャンネル部63のデータを使用する各処理部11に対応して配置され、上流側からストリームデータを取得し、その中から自身に対応する処理部11で使用するデータを含むチャンネル部63のデータを抽出し、そのデータを伸長して対応する処理部11に供給する。また、デコーダ13は、ストリームデータ中の自身に対応する処理部11のデータを格納しているチャンネル部63以降のデータについては、下流側に接続されたFIFO14にそのまま渡す。 The decoder 13 is arranged corresponding to each processing unit 11 that uses the data of the channel unit 63 in the stream data, acquires the stream data from the upstream side, and uses the data used by the processing unit 11 corresponding to itself. The data of the channel section 63 including the data is extracted, and the data is decompressed and supplied to the corresponding processing section 11. Further, the decoder 13 passes the data of the channel unit 63 and the subsequent data storing the data of the processing unit 11 corresponding to itself in the stream data to the FIFO 14 connected to the downstream side as it is.
FIFO14は、上流側のデコーダ13から入力されるストリームデータのデータを格納し、最初に入力されたデータから下流側のデコーダ13に渡す。 The FIFO 14 stores the data of the stream data input from the decoder 13 on the upstream side, and transfers the data input first to the decoder 13 on the downstream side.
上記した第2実施形態に係る処理装置100Aによると、処理部11で使用する処理係数情報をストリームデータとして送信することにより、各処理部11における部分処理を実行させることができる。このため、メインメモリ102にCNNの全てのレイヤーの処理部11で使用する全ての処理係数を予め記憶させておく必要がなくなる。これにより、必要なメインメモリ102の容量を抑制できる。また、ストリームデータ中のチャネル部63に格納させる処理係数情報について、圧縮させたデータとしているので、ストリームデータのデータ量を低減することができ、ストリームデータの読出しや、送信等に係る処理時間を低減することができる。 According to the processing device 100A according to the second embodiment described above, by transmitting the processing coefficient information used by the processing unit 11 as stream data, the partial processing in each processing unit 11 can be executed. Therefore, it is not necessary to store in the main memory 102 all the processing coefficients used by the processing units 11 of all the layers of the CNN in advance. Thereby, the required capacity of the main memory 102 can be suppressed. In addition, since the processing coefficient information stored in the channel unit 63 in the stream data is compressed data, the data amount of the stream data can be reduced, and the processing time for reading and transmitting the stream data can be reduced. It can be reduced.
次に、第3実施形態に係る処理装置について説明する。なお、第3実施形態においては、第1実施形態、第2実施形態に係る処理装置と同様な部分には、同一の符号を付す。 Next, a processing device according to the third embodiment will be described. In the third embodiment, the same parts as those in the processing devices according to the first and second embodiments are designated by the same reference numerals.
図7は、第3実施形態に係る処理装置の機能構成図である。 FIG. 7 is a functional configuration diagram of the processing device according to the third embodiment.
第3実施形態に係る処理装置100Bは、1以上の処理部(部分処理部)11(11−1〜11−n)と、1以上のデコーダ(伸長処理部)12(12−1,12−3,12−n−1等)と、読出制御部17と、メモリ部16とを備える。ここで、処理装置100Bは、図5に示すハードウェアで構成してもよく、例えば、読出制御部17、Relu処理部11−2、全結合処理部11−n−1、SoftMax処理部11n、及びデコーダ12は、CPU101によって構成してもよい。また、畳込処理部11−1,11−3等は、GPU103によって構成してもよい。また、メモリ部16は、メインメモリ102で構成してもよい。 The processing device 100B according to the third embodiment includes one or more processing units (partial processing units) 11 (11-1 to 11-n) and one or more decoders (decompression processing units) 12 (12-1, 12-). 3, 12-n-1), the read control unit 17, and the memory unit 16. Here, the processing device 100B may be configured by the hardware shown in FIG. 5, and for example, the read control unit 17, the Relu processing unit 11-2, the all-combining processing unit 11-n-1, the SoftMax processing unit 11n, The decoder 12 and the decoder 12 may be configured by the CPU 101. The convolution processing units 11-1, 11-3 and the like may be configured by the GPU 103. The memory unit 16 may be composed of the main memory 102.
メモリ部16は、ニューラルネットワーク構造情報16aと、圧縮係数情報の一例としての圧縮フィルタデータ16bと、圧縮係数情報の一例としての圧縮重みデータ16cとを記憶する。圧縮フィルタデータ16bは、CNNのすべての畳込処理部11−1、11−3等で使用されるフィルタデータを圧縮したデータであり、圧縮重みデータ16cは、全結合処理部11−n−1で使用される複数の重みを圧縮したデータである。 The memory unit 16 stores neural network structure information 16a, compression filter data 16b as an example of compression coefficient information, and compression weight data 16c as an example of compression coefficient information. The compression filter data 16b is data obtained by compressing the filter data used by all the convolution processing units 11-1 and 11-3 of the CNN, and the compression weight data 16c is the total combination processing unit 11-n-1. This is data obtained by compressing a plurality of weights used in.
読出制御部17は、CNNの処理部11からの処理の実行に必要な処理係数の要求を受けて、この処理部11で使用する要求を受けた処理係数を圧縮させてある圧縮係数データ(圧縮フィルタデータ16b又は圧縮重みデータ16cの一部)をメモリ部16から取得し、処理部11に接続されているデコーダ12に対して圧縮係数データを送信する。なお、処理部11による処理の実行に必要な処理係数の要求は、例えば、処理部11が処理を実行する直前に行われるようにしてもよく、また、比較的近いレイヤーの処理が実行されている場合に行われるようにしてもよい。 The read control unit 17 receives a request from the CNN processing unit 11 for a processing coefficient required to execute a process, and compresses the requested processing coefficient to be used by the processing unit 11 (compressed coefficient data (compression). The filter data 16b or a part of the compression weight data 16c) is acquired from the memory unit 16 and the compression coefficient data is transmitted to the decoder 12 connected to the processing unit 11. The processing unit 11 may request the processing coefficient necessary for executing the processing, for example, immediately before the processing unit 11 executes the processing, or the processing of a relatively close layer is executed. It may be performed when there is.
上記した第3実施形態に係る処理装置100Bによると、メインメモリ102において、処理部11で使用する係数データを圧縮して記憶させているので、メインメモリ102に必要とされる容量を抑制できる。また、比較的処理が近いレイヤーの処理部11が処理係数を要求するようにしているので、処理係数を要求する処理部11の数を抑えることができ、CPU101への負荷や、メインメモリ102の使用容量を比較的低減できる。 According to the processing device 100B of the third embodiment described above, since the coefficient data used by the processing unit 11 is compressed and stored in the main memory 102, it is possible to suppress the capacity required in the main memory 102. Further, since the processing units 11 of the layers that are relatively close to each other request the processing coefficients, the number of the processing units 11 requesting the processing coefficients can be suppressed, and the load on the CPU 101 and the main memory 102. The used capacity can be relatively reduced.
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。 It should be noted that the present invention is not limited to the above-described embodiment, and can be appropriately modified and carried out without departing from the spirit of the present invention.
例えば、上記各実施形態においては、画像認識を行うCNNが構成される処理装置に対して本発明を適用した例を示していたが、本発明は、画像認識以外の推論処理を実行するニューラルネットワークが構成される処理装置に対しても適用することができる。 For example, in each of the above-described embodiments, an example in which the present invention is applied to a processing device including a CNN that performs image recognition has been described. However, the present invention is a neural network that executes inference processing other than image recognition. The present invention can also be applied to a processing device configured with.
また、上記第1及び第2実施形態においては、ストリームデータ50において、処理部11に利用されるフィルタデータ等の処理係数を圧縮させて含ませるようにしていたが、本発明はこれに限られず、これら処理係数の少なくとも一部を圧縮させずにストリームデータ50に含ませるようにしてもよい。このようにしても、メインメモリ102に、ストリームデータ50の全体を記憶させておく必要が無いので、メインメモリ102に要求される容量を抑えることができ、メインメモリ102における他の処理に利用可能な容量を適切に増加させることができる。 Further, in the first and second embodiments, the stream data 50 is configured to include processing coefficients such as filter data used by the processing unit 11 after being compressed, but the present invention is not limited to this. Alternatively, at least a part of these processing coefficients may be included in the stream data 50 without being compressed. Even in this case, since it is not necessary to store the entire stream data 50 in the main memory 102, the capacity required for the main memory 102 can be suppressed and it can be used for other processing in the main memory 102. The capacity can be increased appropriately.
また、上記第2実施形態においては、デコーダ13とデコーダ13との間に、FIFO14を備えるようにしていたが、本発明はこれに限られず、デコーダ13内にFIFO14の機能を備えるようにしてもよい。 Further, in the second embodiment, the FIFO 14 is provided between the decoder 13 and the decoder 13, but the present invention is not limited to this, and the decoder 14 may be provided with the function of the FIFO 14. Good.
また、上記各実施形態において、CPU101又はGPU103がプログラムを実行することにより構成していた機能部の少なくとも一部を、別のプロセッサや、特定の処理を実行するハードウェア回路で構成するようにしてもよい。例えば、GPU103により構成していた処理部11(例えば、畳込処理部11−1,11−3等)を、CPU101により構成するようにしてもよく、別のハードウェア回路で構成してもよい。また、CPU101により構成していたデコーダ13を別のハードウェア回路で構成するようにしてもよい。 Further, in each of the above-described embodiments, at least a part of the functional unit configured by the CPU 101 or the GPU 103 executing a program is configured by another processor or a hardware circuit that executes a specific process. Good. For example, the processing unit 11 (for example, the convolution processing units 11-1, 11-3, etc.) configured by the GPU 103 may be configured by the CPU 101, or may be configured by another hardware circuit. .. Further, the decoder 13 configured by the CPU 101 may be configured by another hardware circuit.
10…処理制御部、11…処理部、12,13…デコーダ、14…FIFO、15…構築部、16…メモリ部、17…読出制御部、50…ストリームデータ、100,100A,100B…処理装置、101…CPU、102…メインメモリ、103…GPU 10... Processing control unit, 11... Processing unit, 12, 13... Decoder, 14... FIFO, 15... Construction unit, 16... Memory unit, 17... Read control unit, 50... Stream data, 100, 100A, 100B... Processing device , 101... CPU, 102... Main memory, 103... GPU
Claims (7)
前記推論処理を構成する複数の処理レイヤーにおけるそれぞれの部分処理を実行する複数の部分処理部と、
前記推論処理を構成する複数の処理レイヤーにおける部分処理に使用される処理係数に対応する処理係数情報が前記処理レイヤーの実行順に従って並べられたストリームデータを取得するストリームデータ取得部と、
前記ストリームデータから前記処理係数情報を取出し、前記処理係数情報に対応する処理係数を使用する部分処理部に対して、前記処理係数情報に対応する処理係数を供給する処理係数供給部と、
を備える処理装置。 A processing device that performs inference processing on data to be processed,
A plurality of partial processing units that execute respective partial processing in a plurality of processing layers that form the inference processing;
A stream data acquisition unit that acquires stream data in which processing coefficient information corresponding to processing coefficients used in partial processing in a plurality of processing layers that form the inference processing is arranged in accordance with an execution order of the processing layer,
A processing coefficient supply unit that extracts the processing coefficient information from the stream data and supplies a processing coefficient corresponding to the processing coefficient information to a partial processing unit that uses the processing coefficient corresponding to the processing coefficient information;
A processing device comprising.
前記処理係数供給部は、前記圧縮処理係数を伸長し、伸長された処理係数を前記部分処理部に供給する
請求項1に記載の処理装置。 At least a part of the processing coefficient information in the stream data is a compression processing coefficient obtained by compressing the processing coefficient,
The processing device according to claim 1, wherein the processing coefficient supply unit expands the compression processing coefficient and supplies the expanded processing coefficient to the partial processing unit.
前記ストリームデータの前記部分処理特定情報に基づいて、前記部分処理を実行する部分処理部を構築する部分処理部構築部をさらに有する
請求項1又は請求項2に記載の処理装置。 The stream data includes partial processing specifying information for specifying each partial processing in the plurality of processing layers,
The processing device according to claim 1, further comprising a partial processing unit construction unit that constructs a partial processing unit that executes the partial processing based on the partial processing specifying information of the stream data.
前記処理係数供給部は、前記圧縮情報に基づいて、前記圧縮処理係数を伸長する
請求項2に記載の処理装置。 The stream data includes compression information indicating a compression method of the processing coefficient in the compression processing coefficient,
The processing device according to claim 2, wherein the processing coefficient supply unit expands the compression processing coefficient based on the compression information.
前記圧縮情報には、前記フィルタデータを予測符号化した際に使用した予測方向を示す予測方向情報を含み、
前記処理係数供給部は、前記予測方向情報が示す予測方向に基づいて、前記圧縮フィルタデータを伸長する
請求項4に記載の処理装置。 The processing coefficient includes filter data including values corresponding to respective regions of a two-dimensional plane, and the compression processing coefficient obtained by compressing the filter data is compression filter data obtained by predictively encoding the filter data,
The compression information includes prediction direction information indicating a prediction direction used when predictively encoding the filter data,
The processing device according to claim 4, wherein the processing coefficient supply unit expands the compression filter data based on a prediction direction indicated by the prediction direction information.
請求項1から請求項5のいずれか一項に記載の処理装置。 The processing device according to any one of claims 1 to 5, wherein the stream data is received from an external device via a communication network.
前記処理装置には、前記推論処理を構成する複数の処理レイヤーにおけるそれぞれの部分処理を実行する複数の部分処理部が構築され、 In the processing device, a plurality of partial processing units that execute respective partial processing in a plurality of processing layers that constitute the inference processing are constructed,
前記推論処理を構成する複数の処理レイヤーにおける部分処理に使用される処理係数に対応する処理係数情報を前記処理レイヤーの実行順に従って並べたストリームデータを取得し、 Obtaining stream data in which processing coefficient information corresponding to processing coefficients used in partial processing in a plurality of processing layers that form the inference processing is arranged in accordance with the execution order of the processing layers,
前記ストリームデータの先頭から順に前記処理係数情報を取出し、前記処理係数情報に対応する処理係数を使用する前記部分処理部に対して、前記処理係数情報に基づく処理係数を供給する The processing coefficient information is taken out in order from the beginning of the stream data, and the processing coefficient based on the processing coefficient information is supplied to the partial processing unit that uses the processing coefficient corresponding to the processing coefficient information.
推論処理方法。Inference processing method.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017174491A JP6714297B2 (en) | 2017-09-12 | 2017-09-12 | Processing device and inference processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017174491A JP6714297B2 (en) | 2017-09-12 | 2017-09-12 | Processing device and inference processing method |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020074381A Division JP2020123384A (en) | 2020-04-17 | 2020-04-17 | Processing device and inference processing method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019049916A JP2019049916A (en) | 2019-03-28 |
JP6714297B2 true JP6714297B2 (en) | 2020-06-24 |
Family
ID=65906322
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017174491A Active JP6714297B2 (en) | 2017-09-12 | 2017-09-12 | Processing device and inference processing method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6714297B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7287492B2 (en) * | 2019-11-13 | 2023-06-06 | 日本電信電話株式会社 | Distributed deep learning system and data transfer method |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5542054A (en) * | 1993-12-22 | 1996-07-30 | Batten, Jr.; George W. | Artificial neurons using delta-sigma modulation |
JP2008117226A (en) * | 2006-11-06 | 2008-05-22 | Funai Electric Co Ltd | Image data compression decompressor |
JP2012018450A (en) * | 2010-07-06 | 2012-01-26 | Keio Gijuku | Neural network system, construction method of neural network system and control program of neural network system |
JP6869676B2 (en) * | 2016-09-27 | 2021-05-12 | キヤノン株式会社 | Information processing equipment, information processing methods and programs |
-
2017
- 2017-09-12 JP JP2017174491A patent/JP6714297B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2019049916A (en) | 2019-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10839564B2 (en) | Leveraging JPEG discrete cosine transform coefficients in neural networks | |
US20200304804A1 (en) | Video compression using deep generative models | |
CN114731455B (en) | Apparatus and method using AI metadata related to image quality | |
KR20210101233A (en) | Method and apparatus for providing a rendering engine model comprising a description of a neural network embedded in a media item | |
JP6978542B2 (en) | Electronic device and its control method | |
KR102269034B1 (en) | Apparatus and method of using AI metadata related to image quality | |
US20110103465A1 (en) | Encoding method of screen frame and electronic device applying the same | |
KR102382383B1 (en) | Method and system for improving image compression efficiency based on deep learning | |
US11483585B2 (en) | Electronic apparatus and controlling method thereof | |
JP5903597B2 (en) | Image compression apparatus, image expansion apparatus, and image processing apparatus | |
US20170353732A1 (en) | Information processing apparatus, method of controlling the same, and storage medium | |
CN106688015B (en) | Processing parameters for operations on blocks when decoding images | |
JP6714297B2 (en) | Processing device and inference processing method | |
WO2022100140A1 (en) | Compression encoding method and apparatus, and decompression method and apparatus | |
JP2020123384A (en) | Processing device and inference processing method | |
US20210335018A1 (en) | Data generating device, training device, and data generating method | |
US8280177B2 (en) | Encoding device using parallelized encoding, decoding device using parallelized decoding, and image forming device, method, and program storage medium including the same | |
JP2016012797A (en) | Plotting system, information processor, terminal equipment, plotting control program, plotting program, and plotting control method | |
KR20210154684A (en) | Image processing apparatus and operating method for the same | |
Popa et al. | Hardware acceleration of background modeling in the compressed domain | |
CN105827896A (en) | Data processing systems | |
KR20210062485A (en) | Electronic apparatus and control method thereof | |
KR20140099986A (en) | Colorization-based color image coding method by meanshift segmentation algorithm | |
JP6377222B2 (en) | Information processing apparatus, control method, program, and recording medium | |
KR20240100084A (en) | Method, electronic device for performing inference by dividing a plurality of neural network model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190402 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200303 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20200228 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200417 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20200526 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200529 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6714297 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |